summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkWidgetSettingsDialog.vue
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2026-01-13 15:02:50 +0900
committerGitHub <noreply@github.com>2026-01-13 15:02:50 +0900
commitf3aa5081ed994af857a97798528e1788d7762d36 (patch)
tree954f29b7743842dc62c76466c200c0dfce885d89 /packages/frontend/src/components/MkWidgetSettingsDialog.vue
parentfix(frontend): add "px" suffix to borderWidth of Ui:C:container (#17088) (diff)
downloadmisskey-f3aa5081ed994af857a97798528e1788d7762d36.tar.gz
misskey-f3aa5081ed994af857a97798528e1788d7762d36.tar.bz2
misskey-f3aa5081ed994af857a97798528e1788d7762d36.zip
fix(frontend): MkFormで入力に不備がある場合は完了ボタンを押して続行できないように (#17096)
* fix(frontend): MkFormで入力に不備がある場合は完了ボタンを押して続行できないように * fix lint
Diffstat (limited to 'packages/frontend/src/components/MkWidgetSettingsDialog.vue')
-rw-r--r--packages/frontend/src/components/MkWidgetSettingsDialog.vue12
1 files changed, 10 insertions, 2 deletions
diff --git a/packages/frontend/src/components/MkWidgetSettingsDialog.vue b/packages/frontend/src/components/MkWidgetSettingsDialog.vue
index 63f294770c..41fec2a9e0 100644
--- a/packages/frontend/src/components/MkWidgetSettingsDialog.vue
+++ b/packages/frontend/src/components/MkWidgetSettingsDialog.vue
@@ -10,6 +10,7 @@ SPDX-License-Identifier: AGPL-3.0-only
:height="600"
:scroll="false"
:withOkButton="true"
+ :okButtonDisabled="!canSave"
@close="cancel()"
@ok="save()"
@closed="emit('closed')"
@@ -38,7 +39,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #controls>
<div class="_spacer">
- <MkForm v-model="settings" :form="form"/>
+ <MkForm v-model="settings" :form="form" @canSaveStateChange="onCanSaveStateChanged"/>
</div>
</template>
</MkPreviewWithControls>
@@ -46,7 +47,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script setup lang="ts">
-import { reactive, useTemplateRef, ref, computed, watch, onBeforeUnmount, onMounted } from 'vue';
+import { useTemplateRef, ref, computed, onBeforeUnmount, onMounted } from 'vue';
import MkPreviewWithControls from './MkPreviewWithControls.vue';
import type { Form } from '@/utility/form.js';
import { deepClone } from '@/utility/clone.js';
@@ -70,7 +71,14 @@ const dialog = useTemplateRef('dialog');
const settings = ref<Record<string, any>>(deepClone(props.currentSettings));
+const canSave = ref(true);
+
+function onCanSaveStateChanged(newCanSave: boolean) {
+ canSave.value = newCanSave;
+}
+
function save() {
+ if (!canSave.value) return;
emit('saved', deepClone(settings.value));
dialog.value?.close();
}