From fbe1d88d27bcaf53ea606706c2526fa5436e7e78 Mon Sep 17 00:00:00 2001 From: roymondchen Date: Thu, 21 Dec 2023 16:30:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(editor,form):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E9=85=8D=E7=BD=AE=E8=A1=A8=E5=8D=95error?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit re #557 --- packages/editor/src/Editor.vue | 4 ++++ packages/editor/src/layouts/PropsPanel.vue | 12 +++++++----- packages/form/src/Form.vue | 5 ++++- playground/src/pages/Editor.vue | 7 +++++++ 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/packages/editor/src/Editor.vue b/packages/editor/src/Editor.vue index 95d5b96f..3782d394 100644 --- a/packages/editor/src/Editor.vue +++ b/packages/editor/src/Editor.vue @@ -70,6 +70,8 @@ @@ -17,7 +18,6 @@ diff --git a/packages/form/src/Form.vue b/packages/form/src/Form.vue index 4a721c45..27056ee6 100644 --- a/packages/form/src/Form.vue +++ b/packages/form/src/Form.vue @@ -79,7 +79,7 @@ const props = withDefaults( }, ); -const emit = defineEmits(['change', 'field-input', 'field-change']); +const emit = defineEmits(['change', 'error', 'field-input', 'field-change']); const tMagicForm = ref>(); const initialized = ref(false); @@ -182,6 +182,8 @@ defineExpose({ await tMagicForm.value?.validate(); return native ? values.value : cloneDeep(toRaw(values.value)); } catch (invalidFields: any) { + emit('error', invalidFields); + const error: string[] = []; Object.entries(invalidFields).forEach(([, ValidateError]) => { @@ -191,6 +193,7 @@ defineExpose({ if (!field && message) error.push(`${message}`); }); }); + throw new Error(error.join('
')); } }, diff --git a/playground/src/pages/Editor.vue b/playground/src/pages/Editor.vue index 3633a5e2..4b03e6fa 100644 --- a/playground/src/pages/Editor.vue +++ b/playground/src/pages/Editor.vue @@ -17,6 +17,7 @@ :moveable-options="moveableOptions" :auto-scroll-into-view="true" :stage-rect="stageRect" + @props-submit-error="propsSubmitErrorHandler" >