diff --git a/CHANGELOG.rst b/CHANGELOG.rst index cb1eb4f1926573367ae3bc543895b05b63859d79..e84fcd3a8eaab2cfb5f956536fee97ebe837e1f1 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -27,6 +27,7 @@ Fixed * Recurring events without until value weren't shown. * It wasn't possible to change icons of OAuth applications in the frontend. * First fetching of calendar feeds logged an error to console. +* [Dev] Dialog-Object-Form's internal dialog-mode-handling did not implement opening via activator slot. `4.0`_ - 2025-03-29 ------------------- diff --git a/aleksis/core/frontend/components/generic/dialogs/DialogObjectForm.vue b/aleksis/core/frontend/components/generic/dialogs/DialogObjectForm.vue index fc803b0eaeec014599e978ae1f5beb606efd375e..4ed7c31f9cd7b4cd13f9871cfa811d0a8191fc4d 100644 --- a/aleksis/core/frontend/components/generic/dialogs/DialogObjectForm.vue +++ b/aleksis/core/frontend/components/generic/dialogs/DialogObjectForm.vue @@ -1,6 +1,6 @@ <template> <mobile-fullscreen-dialog - v-model="dialog" + v-model="dialogMode" max-width="555px" :close-button="false" > @@ -26,7 +26,7 @@ :valid.sync="valid" @loading="handleLoading" @save="handleSave" - @cancel="dialog = false" + @cancel="dialogMode = false" > <template v-for="(_, slot) of $scopedSlots" #[slot]="scope" ><slot :name="slot" v-bind="scope" @@ -35,7 +35,7 @@ </template> <template #actions> - <cancel-button @click="dialog = false" :disabled="loading" /> + <cancel-button @click="dialogMode = false" :disabled="loading" /> <save-button @click="$refs.form.submit()" :loading="loading" @@ -67,22 +67,9 @@ export default { }, mixins: [openableDialogMixin, objectFormPropsMixin, loadingMixin], emits: ["cancel", "save"], - computed: { - dialog: { - get() { - return this.value; - }, - set(newValue) { - this.$emit("input", newValue); - }, - }, - }, methods: { - close() { - this.dialog = false; - }, handleSave(items) { - this.dialog = false; + this.dialogMode = false; this.$emit("save", items); }, }, diff --git a/aleksis/core/frontend/mixins/objectFormMixin.js b/aleksis/core/frontend/mixins/objectFormMixin.js index ffc62d476dd1f19db08539989d75fa952c44c587..6797590d23f678da63fe456528c7ccce85443e5b 100644 --- a/aleksis/core/frontend/mixins/objectFormMixin.js +++ b/aleksis/core/frontend/mixins/objectFormMixin.js @@ -47,7 +47,6 @@ export default { this.$emit("cancel"); }, handleSuccess() { - this.dialog = false; let snackbarTextKey = this.isCreate ? this.createSuccessMessageI18nKey : this.editSuccessMessageI18nKey; diff --git a/aleksis/core/frontend/mixins/openableDialogMixin.js b/aleksis/core/frontend/mixins/openableDialogMixin.js index d96f62f58e3d91a9ad8ecea714adb655f3b8e4d7..901e7f8142b9ad8be312cbd49e9d72ed85e603e8 100644 --- a/aleksis/core/frontend/mixins/openableDialogMixin.js +++ b/aleksis/core/frontend/mixins/openableDialogMixin.js @@ -1,7 +1,7 @@ export default { props: { /** - * Dialog state (open or closed) + * Dialog-mode (open or closed) * @model * @values true,false */ @@ -11,4 +11,25 @@ export default { }, }, emits: ["input"], + data() { + return { + internalDialogMode: this.value, + }; + }, + computed: { + dialogMode: { + get() { + return this.internalDialogMode; + }, + set(newValue) { + this.internalDialogMode = newValue; + this.$emit("input", newValue); + }, + }, + }, + mounted() { + this.$watch("value", (newVal) => { + this.dialogMode = newVal; + }); + }, };