Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in> Co-authored-by: Tomi Turtiainen <10324676+tomi@users.noreply.github.com>
37 lines
788 B
Vue
37 lines
788 B
Vue
<template>
|
|
<div v-if="uiStore.isModalOpen(name) || keepAlive">
|
|
<slot
|
|
:modal-name="name"
|
|
:active="uiStore.isModalActive(name)"
|
|
:open="uiStore.isModalOpen(name)"
|
|
:active-id="uiStore.getModalActiveId(name)"
|
|
:mode="uiStore.getModalMode(name)"
|
|
:data="uiStore.getModalData(name)"
|
|
></slot>
|
|
</div>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import type { PropType } from 'vue';
|
|
import { defineComponent } from 'vue';
|
|
import { useUIStore } from '@/stores/ui.store';
|
|
import { mapStores } from 'pinia';
|
|
import type { ModalKey } from '@/Interface';
|
|
|
|
export default defineComponent({
|
|
name: 'ModalRoot',
|
|
props: {
|
|
name: {
|
|
type: String as PropType<ModalKey>,
|
|
required: true,
|
|
},
|
|
keepAlive: {
|
|
type: Boolean,
|
|
},
|
|
},
|
|
computed: {
|
|
...mapStores(useUIStore),
|
|
},
|
|
});
|
|
</script>
|