ModalManager.vue 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. importArtist: "ImportArtist.vue",
  26. confirm: "Confirm.vue",
  27. editSong: "EditSong/index.vue",
  28. viewMedia: "ViewMedia.vue",
  29. bulkEditPlaylist: "BulkEditPlaylist.vue",
  30. convertSpotifySongs: "ConvertSpotifySongs.vue",
  31. replaceSpotifySongs: "ReplaceSpotifySongs.vue"
  32. })
  33. );
  34. </script>
  35. <template>
  36. <div>
  37. <div v-for="activeModalUuid in activeModals" :key="activeModalUuid">
  38. <component
  39. :is="modalComponents[modals[activeModalUuid].modal]"
  40. :modal-uuid="activeModalUuid"
  41. v-bind="modals[activeModalUuid].props"
  42. />
  43. </div>
  44. </div>
  45. </template>