SubList.vue 1.4 KB

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