ModalManager.vue 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. bulkEditPlaylist: "BulkEditPlaylist.vue"
  29. })
  30. );
  31. </script>
  32. <template>
  33. <div>
  34. <div v-for="activeModalUuid in activeModals" :key="activeModalUuid">
  35. <component
  36. :is="modalComponents[modals[activeModalUuid].modal]"
  37. :modal-uuid="activeModalUuid"
  38. v-bind="modals[activeModalUuid].props"
  39. />
  40. </div>
  41. </div>
  42. </template>