feat: part 2/3 modal

UI.notification-modules-changes
Saeid 4 years ago
parent 308ce00b31
commit f07abce489

@ -1,24 +1,30 @@
<template> <template>
<v-dialog v-model="modal" :max-width="maxWidth" :width="width" :transition="transition"> <v-dialog v-model="modal" :max-width="maxWidth" :width="width" :transition="transition">
<slot :modal="modal" :data="data" v-if="modal" ></slot> <slot :modal="modal" :data="data" v-if="modal"></slot>
</v-dialog> </v-dialog>
</template> </template>
<script> <script>
import {mapGetters} from "vuex"; import {mapGetters} from "vuex";
export default { export default {
props: { props: {
width:{default: null}, width: {default: null},
maxWidth:{default: null}, maxWidth: {default: null},
name:{default: null}, name: {default: null},
transition:{default: 'slide-x-transition'}, transition: {default: 'slide-x-transition'},
}, },
data: () => ({
isOpenModal: false,
}),
computed: { computed: {
...mapGetters("modal", ["isModal", "getModal"]), ...mapGetters("modal", ["isModal", "getModal"]),
modal: { modal: {
get() { get() {
return this.isModal(this.modalName); const isOpen = this.isModal(this.modalName);
this.emitModal(isOpen);
return isOpen;
}, },
set(value) { set(value) {
if (!value) { if (!value) {
@ -33,6 +39,20 @@
return this.getModal(this.modalName); return this.getModal(this.modalName);
} }
}, },
methods: {
emitModal(isOpen) {
if (this.isOpenModal && !isOpen) {
this.isOpenModal = false;
this.$emit('close');
} else if (!this.isOpenModal && isOpen) {
this.isOpenModal = true;
this.$emit('open', this.data);
this.$parent.modalData = this.data;
}
}
},
beforeDestroy() {
this.emitModal(false);
}
} }
</script> </script>

@ -21,11 +21,18 @@ const global = {
...mapActions("modal", [ ...mapActions("modal", [
"$_dialog", "$_dialog",
"$_helper", "$_helper",
"$_openModal", "openModal",
"$_closeModal" "$_closeModal"
]), ]),
$_openModal(name, data) {
if (typeof name == 'object') {
this.openModal(name)
} else {
this.openModal({...data, ...{name}})
}
},
$_can, $_can,
$_name, $_name,
$_color, $_color,

@ -2,7 +2,7 @@ import $_can from "@Global/policy/can";
export default { export default {
$_openModal({ state, rootState }, data) { // data: {name, rel, model, form_data, data, modal_pop_data, type} openModal({ state, rootState }, data) { // data: {name, rel, model, form_data, data, modal_pop_data, type}
let can = true; let can = true;
if (data.can) { if (data.can) {
can = $_can(data.can); can = $_can(data.can);
@ -57,7 +57,7 @@ export default {
$_dialog:({commit, dispatch}, properties) => { $_dialog:({commit, dispatch}, properties) => {
properties['name'] = 'modal_dialog'; properties['name'] = 'modal_dialog';
dispatch('$_openModal', properties); dispatch('openModal', properties);
commit('SET_DIALOG_TYPE', properties.type); commit('SET_DIALOG_TYPE', properties.type);
commit('SET_DIALOG_PROPERTIES', properties); commit('SET_DIALOG_PROPERTIES', properties);
@ -67,6 +67,6 @@ export default {
let data = {}; let data = {};
data['name'] = 'modal_helper'; data['name'] = 'modal_helper';
data['slug'] = slug; data['slug'] = slug;
dispatch('$_openModal', data); dispatch('openModal', data);
}, },
}; };

Loading…
Cancel
Save