ModalManager.vue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <script setup lang="ts">
  2. import { shallowRef } from "vue";
  3. import { storeToRefs } from "pinia";
  4. import { useModalsStore, useModalComponents } from "@/stores/modals";
  5. const modalsStore = useModalsStore();
  6. const { modals, activeModals } = storeToRefs(modalsStore);
  7. const modalComponents = shallowRef(
  8. useModalComponents("components/modals", {
  9. editUser: "EditUser.vue",
  10. login: "Login.vue",
  11. register: "Register.vue",
  12. whatIsNew: "WhatIsNew.vue",
  13. createStation: "CreateStation.vue",
  14. editNews: "EditNews.vue",
  15. manageStation: "ManageStation/index.vue",
  16. editPlaylist: "EditPlaylist/index.vue",
  17. createPlaylist: "CreatePlaylist.vue",
  18. report: "Report.vue",
  19. viewReport: "ViewReport.vue",
  20. bulkActions: "BulkActions.vue",
  21. viewApiRequest: "ViewApiRequest.vue",
  22. viewPunishment: "ViewPunishment.vue",
  23. removeAccount: "RemoveAccount.vue",
  24. importAlbum: "ImportAlbum.vue",
  25. confirm: "Confirm.vue",
  26. editSong: "EditSong/index.vue",
  27. viewYoutubeVideo: "ViewYoutubeVideo.vue"
  28. })
  29. );
  30. </script>
  31. <template>
  32. <div>
  33. <div v-for="activeModalUuid in activeModals" :key="activeModalUuid">
  34. <component
  35. :is="modalComponents[modals[activeModalUuid].modal]"
  36. :modal-uuid="activeModalUuid"
  37. v-bind="modals[activeModalUuid].props"
  38. />
  39. </div>
  40. </div>
  41. </template>