From f3632ddee511f0fccb24d4fc37403421e84ffdae Mon Sep 17 00:00:00 2001 From: kyyy <60952577+rdjanuar@users.noreply.github.com> Date: Sun, 24 Nov 2024 01:29:54 +0700 Subject: [PATCH] fix(Form)!: resolve async validation in yup & issue directly mutate state (#2701) --- src/runtime/components/forms/Form.vue | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/runtime/components/forms/Form.vue b/src/runtime/components/forms/Form.vue index f02b6309..2eb4c964 100644 --- a/src/runtime/components/forms/Form.vue +++ b/src/runtime/components/forms/Form.vue @@ -60,6 +60,8 @@ export default defineComponent({ const formId = useId() const bus = useEventBus(`form-${formId}`) + const parsedValue = ref(null) + onMounted(() => { bus.on(async (event) => { if (event.type !== 'submit' && props.validateOn?.includes(event.type)) { @@ -87,7 +89,7 @@ export default defineComponent({ if (errors) { errs = errs.concat(errors) } else { - Object.assign(props.state, result) + parsedValue.value = result } } @@ -130,7 +132,7 @@ export default defineComponent({ if (props.validateOn?.includes('submit')) { await validate() } - event.data = props.state + event.data = props.schema ? parsedValue.value : props.state emit('submit', event) } catch (error) { if (!(error instanceof FormException)) { @@ -321,7 +323,7 @@ async function validateYupSchema( schema: YupObjectSchema ): Promise> { try { - const result = schema.validateSync(state, { abortEarly: false }) + const result = await schema.validate(state, { abortEarly: false }) return { errors: null, result