SubList.vue 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <template>
  2. <main>
  3. <v-skeleton-loader
  4. v-if="$fetchState.pending"
  5. type="text"
  6. />
  7. <div v-else>
  8. <slot name="list.item" v-bind="{items}" />
  9. </div>
  10. <slot />
  11. </main>
  12. </template>
  13. <script lang="ts">
  14. import { defineComponent, ref, computed, useContext, useFetch, toRefs, onUnmounted, ToRefs, ComputedRef } from '@nuxtjs/composition-api'
  15. import { Query } from '@vuex-orm/core'
  16. import { Collection } from '@vuex-orm/core/dist/src/data/Data'
  17. import { queryHelper } from '~/services/store/query'
  18. import { QUERY_TYPE } from '~/types/enums'
  19. export default defineComponent({
  20. props: {
  21. rootModel: {
  22. type: Function,
  23. required: true
  24. },
  25. rootId: {
  26. type: Number,
  27. required: true
  28. },
  29. model: {
  30. type: Function,
  31. required: true
  32. },
  33. query: {
  34. type: Object as () => Query,
  35. required: true
  36. }
  37. },
  38. setup (props) {
  39. const { rootModel, rootId, model, query }:ToRefs = toRefs(props)
  40. const { $dataProvider } = useContext()
  41. useFetch(async () => {
  42. await $dataProvider.invoke({
  43. type: QUERY_TYPE.MODEL,
  44. model: model.value,
  45. root_model: rootModel.value,
  46. root_id: rootId.value
  47. })
  48. })
  49. const items:ComputedRef<Collection> = computed(() => queryHelper.getCollection(query.value))
  50. // onUnmounted( useRepositoryHelper.cleanRepository(repository.value) )
  51. return {
  52. items
  53. }
  54. }
  55. })
  56. </script>