SubList.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <template>
  2. <main>
  3. <v-skeleton-loader
  4. type="text"
  5. v-if="loading"
  6. ></v-skeleton-loader>
  7. <div v-else>
  8. <slot name="list.item" v-bind="{entries}"></slot>
  9. </div>
  10. <slot>
  11. </slot>
  12. </main>
  13. </template>
  14. <script lang="ts">
  15. import {defineComponent, ref, useContext, useFetch, computed, toRefs, onUnmounted} from '@nuxtjs/composition-api'
  16. import {Query} from "@vuex-orm/core";
  17. import {AnyJson} from "~/types/interfaces";
  18. import {useQueryHelper} from "~/use/store/useQuery";
  19. import {QUERY_TYPE} from "~/types/enums";
  20. import {Organization} from "~/models/Organization/Organization";
  21. export default defineComponent({
  22. props: {
  23. rootModel:{
  24. type: Function,
  25. required: true
  26. },
  27. rootId:{
  28. type: Number,
  29. required: true
  30. },
  31. model:{
  32. type: Function,
  33. required: true
  34. },
  35. query:{
  36. type: Object as () => Query,
  37. required: true
  38. }
  39. },
  40. setup(props) {
  41. const {rootModel, rootId, model, query} = toRefs(props);
  42. const entries = ref([] as Array<AnyJson>)
  43. const loading = ref(true)
  44. const {$dataProvider} = useContext()
  45. const {fetch, fetchState} = useFetch(async ()=>{
  46. await $dataProvider.invoke({
  47. type: QUERY_TYPE.MODEL,
  48. model: model.value,
  49. root_model: rootModel.value,
  50. root_id: rootId.value
  51. })
  52. entries.value = useQueryHelper.getEntries(query.value);
  53. loading.value = false
  54. })
  55. // onUnmounted( useRepositoryHelper.cleanRepository(repository.value) )
  56. return {
  57. entries,
  58. loading
  59. }
  60. }
  61. })
  62. </script>