From a8abb03d1785791ab40e57ab49c87640914532c9 Mon Sep 17 00:00:00 2001 From: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sun, 6 Jul 2025 19:36:11 +0900 Subject: refactor(frontend): Formまわりの型強化 (#16260) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor(frontend): Formまわりの型強化 * fix * avoid non-null assertion and add null check for safety * refactor * avoid non-null assertion and add null check for safety * Update clip.vue --------- Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> --- packages/frontend/src/widgets/widget.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'packages/frontend/src/widgets/widget.ts') diff --git a/packages/frontend/src/widgets/widget.ts b/packages/frontend/src/widgets/widget.ts index de4c369cbb..c5ca7ac26c 100644 --- a/packages/frontend/src/widgets/widget.ts +++ b/packages/frontend/src/widgets/widget.ts @@ -4,8 +4,9 @@ */ import { reactive, watch } from 'vue'; +import type { Reactive } from 'vue'; import { throttle } from 'throttle-debounce'; -import type { Form, GetFormResultType } from '@/utility/form.js'; +import type { FormWithDefault, GetFormResultType } from '@/utility/form.js'; import * as os from '@/os.js'; import { deepClone } from '@/utility/clone.js'; @@ -28,17 +29,17 @@ export type WidgetComponentExpose = { configure: () => void; }; -export const useWidgetPropsManager = >( +export const useWidgetPropsManager = ( name: string, propsDef: F, props: Readonly>>, emit: WidgetComponentEmits>, ): { - widgetProps: GetFormResultType; + widgetProps: Reactive>; save: () => void; configure: () => void; } => { - const widgetProps = reactive(props.widget ? deepClone(props.widget.data) : {}); + const widgetProps = reactive>((props.widget ? deepClone(props.widget.data) : {}) as GetFormResultType); const mergeProps = () => { for (const prop of Object.keys(propsDef)) { @@ -47,12 +48,13 @@ export const useWidgetPropsManager = { mergeProps(); }, { deep: true, immediate: true }); const save = throttle(3000, () => { - emit('updateProps', widgetProps); + emit('updateProps', widgetProps as GetFormResultType); }); const configure = async () => { -- cgit v1.2.3-freya