SubList.vue 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 {
  16. defineComponent, computed, useContext, useFetch, toRefs, ToRefs, ComputedRef
  17. } from '@nuxtjs/composition-api'
  18. import { Query } from '@vuex-orm/core'
  19. import { Collection } from '@vuex-orm/core/dist/src/data/Data'
  20. import { queryHelper } from '~/services/store/query'
  21. import { QUERY_TYPE } from '~/types/enums'
  22. export default defineComponent({
  23. props: {
  24. rootModel: {
  25. type: Function,
  26. required: true
  27. },
  28. rootId: {
  29. type: Number,
  30. required: true
  31. },
  32. model: {
  33. type: Function,
  34. required: true
  35. },
  36. query: {
  37. type: Object as () => Query,
  38. required: true
  39. }
  40. },
  41. setup (props) {
  42. const { rootModel, rootId, model, query }: ToRefs = toRefs(props)
  43. const { $dataProvider } = useContext()
  44. useFetch(async () => {
  45. await $dataProvider.invoke({
  46. type: QUERY_TYPE.MODEL,
  47. model: model.value,
  48. rootModel: rootModel.value,
  49. rootId: rootId.value
  50. })
  51. })
  52. const items: ComputedRef<Collection> = computed(() => queryHelper.getCollection(query.value))
  53. // onUnmounted( useRepositoryHelper.cleanRepository(repository.value) )
  54. return {
  55. items
  56. }
  57. }
  58. })
  59. </script>