From 6a2712c49937130a474c88e3ea2bc142df735bd7 Mon Sep 17 00:00:00 2001 From: Ivan <8611739+IRBorisov@users.noreply.github.com> Date: Tue, 11 Nov 2025 00:06:50 +0300 Subject: [PATCH] B: Fix form messages priority --- .../oss/dialogs/dlg-create-block/dlg-create-block.tsx | 6 +++--- .../src/features/oss/dialogs/dlg-create-schema.tsx | 6 +++--- .../dlg-create-synthesis/dlg-create-synthesis.tsx | 6 +++--- .../dialogs/dlg-edit-operation/dlg-edit-operation.tsx | 2 +- .../src/features/oss/dialogs/dlg-import-schema.tsx | 6 +++--- .../features/rsform/components/pick-substitutions.tsx | 9 +++++++-- .../rsform/dialogs/dlg-create-cst/dlg-create-cst.tsx | 6 +++--- .../rsform/dialogs/dlg-cst-template/dlg-cst-template.tsx | 4 ++-- 8 files changed, 25 insertions(+), 20 deletions(-) diff --git a/rsconcept/frontend/src/features/oss/dialogs/dlg-create-block/dlg-create-block.tsx b/rsconcept/frontend/src/features/oss/dialogs/dlg-create-block/dlg-create-block.tsx index f9f21f12..43951a8f 100644 --- a/rsconcept/frontend/src/features/oss/dialogs/dlg-create-block/dlg-create-block.tsx +++ b/rsconcept/frontend/src/features/oss/dialogs/dlg-create-block/dlg-create-block.tsx @@ -79,12 +79,12 @@ export function DlgCreateBlock() { const children_operations = useWatch({ control: methods.control, name: 'children_operations' }); const [activeTab, setActiveTab] = useState(TabID.CARD); const { canSubmit, hint } = (() => { - if (!methods.formState.isValid) { - return { canSubmit: false, hint: hintMsg.formInvalid }; - } else if (!title) { + if (!title) { return { canSubmit: false, hint: hintMsg.titleEmpty }; } else if (manager.oss.blocks.some(block => block.title === title)) { return { canSubmit: false, hint: hintMsg.blockTitleTaken }; + } else if (!methods.formState.isValid) { + return { canSubmit: false, hint: hintMsg.formInvalid }; } else { return { canSubmit: true, hint: '' }; } diff --git a/rsconcept/frontend/src/features/oss/dialogs/dlg-create-schema.tsx b/rsconcept/frontend/src/features/oss/dialogs/dlg-create-schema.tsx index 628d9269..e1625f1f 100644 --- a/rsconcept/frontend/src/features/oss/dialogs/dlg-create-schema.tsx +++ b/rsconcept/frontend/src/features/oss/dialogs/dlg-create-schema.tsx @@ -66,12 +66,12 @@ export function DlgCreateSchema() { }); const alias = useWatch({ control: control, name: 'item_data.alias' }); const { canSubmit, hint } = (() => { - if (!isValid) { - return { canSubmit: false, hint: hintMsg.formInvalid }; - } else if (!alias) { + if (!alias) { return { canSubmit: false, hint: hintMsg.aliasEmpty }; } else if (manager.oss.operations.some(operation => operation.alias === alias)) { return { canSubmit: false, hint: hintMsg.schemaAliasTaken }; + } else if (!isValid) { + return { canSubmit: false, hint: hintMsg.formInvalid }; } else { return { canSubmit: true, hint: '' }; } diff --git a/rsconcept/frontend/src/features/oss/dialogs/dlg-create-synthesis/dlg-create-synthesis.tsx b/rsconcept/frontend/src/features/oss/dialogs/dlg-create-synthesis/dlg-create-synthesis.tsx index 00fcdc4b..1456a003 100644 --- a/rsconcept/frontend/src/features/oss/dialogs/dlg-create-synthesis/dlg-create-synthesis.tsx +++ b/rsconcept/frontend/src/features/oss/dialogs/dlg-create-synthesis/dlg-create-synthesis.tsx @@ -75,12 +75,12 @@ export function DlgCreateSynthesis() { const alias = useWatch({ control: methods.control, name: 'item_data.alias' }); const [activeTab, setActiveTab] = useState(TabID.ARGUMENTS); const { canSubmit, hint } = (() => { - if (!methods.formState.isValid) { - return { canSubmit: false, hint: hintMsg.formInvalid }; - } else if (!alias) { + if (!alias) { return { canSubmit: false, hint: hintMsg.aliasEmpty }; } else if (manager.oss.operations.some(operation => operation.alias === alias)) { return { canSubmit: false, hint: hintMsg.schemaAliasTaken }; + } else if (!methods.formState.isValid) { + return { canSubmit: false, hint: hintMsg.formInvalid }; } else { return { canSubmit: true, hint: '' }; } diff --git a/rsconcept/frontend/src/features/oss/dialogs/dlg-edit-operation/dlg-edit-operation.tsx b/rsconcept/frontend/src/features/oss/dialogs/dlg-edit-operation/dlg-edit-operation.tsx index 5d606210..32262c3c 100644 --- a/rsconcept/frontend/src/features/oss/dialogs/dlg-edit-operation/dlg-edit-operation.tsx +++ b/rsconcept/frontend/src/features/oss/dialogs/dlg-edit-operation/dlg-edit-operation.tsx @@ -80,7 +80,7 @@ export function DlgEditOperation() { header='Редактирование операции' submitText='Сохранить' canSubmit={canSubmit} - validationHint={hintMsg.formInvalid} + validationHint={canSubmit ? '' : hintMsg.formInvalid} onSubmit={event => void methods.handleSubmit(onSubmit)(event)} className='w-160 px-6 h-128' helpTopic={HelpTopic.UI_SUBSTITUTIONS} diff --git a/rsconcept/frontend/src/features/oss/dialogs/dlg-import-schema.tsx b/rsconcept/frontend/src/features/oss/dialogs/dlg-import-schema.tsx index 096c9272..d6eb6c1f 100644 --- a/rsconcept/frontend/src/features/oss/dialogs/dlg-import-schema.tsx +++ b/rsconcept/frontend/src/features/oss/dialogs/dlg-import-schema.tsx @@ -75,12 +75,12 @@ export function DlgImportSchema() { const alias = useWatch({ control: control, name: 'item_data.alias' }); const clone_source = useWatch({ control: control, name: 'clone_source' }); const { canSubmit, hint } = (() => { - if (!isValid) { - return { canSubmit: false, hint: hintMsg.formInvalid }; - } else if (!alias) { + if (!alias) { return { canSubmit: false, hint: hintMsg.aliasEmpty }; } else if (manager.oss.operations.some(operation => operation.alias === alias)) { return { canSubmit: false, hint: hintMsg.schemaAliasTaken }; + } else if (!isValid) { + return { canSubmit: false, hint: hintMsg.formInvalid }; } else { return { canSubmit: true, hint: '' }; } diff --git a/rsconcept/frontend/src/features/rsform/components/pick-substitutions.tsx b/rsconcept/frontend/src/features/rsform/components/pick-substitutions.tsx index 3f318575..f7c5ffff 100644 --- a/rsconcept/frontend/src/features/rsform/components/pick-substitutions.tsx +++ b/rsconcept/frontend/src/features/rsform/components/pick-substitutions.tsx @@ -86,7 +86,12 @@ export function PickSubstitutions({ const [ignores, setIgnores] = useState([]); const filteredSuggestions = suggestions?.filter( - item => !ignores.find(ignore => ignore.original === item.original && ignore.substitution === item.substitution) + item => + !ignores.find( + ignore => + (ignore.original === item.original && ignore.substitution === item.substitution) || + (ignore.original === item.substitution && ignore.substitution === item.original) + ) ) ?? []; const substitutionData: IMultiSubstitution[] = [ @@ -201,7 +206,7 @@ export function PickSubstitutions({ size: 0, cell: props => props.row.original.is_suggestion ? ( -
+
} diff --git a/rsconcept/frontend/src/features/rsform/dialogs/dlg-create-cst/dlg-create-cst.tsx b/rsconcept/frontend/src/features/rsform/dialogs/dlg-create-cst/dlg-create-cst.tsx index 9aaf48ee..5a7fde38 100644 --- a/rsconcept/frontend/src/features/rsform/dialogs/dlg-create-cst/dlg-create-cst.tsx +++ b/rsconcept/frontend/src/features/rsform/dialogs/dlg-create-cst/dlg-create-cst.tsx @@ -38,10 +38,10 @@ export function DlgCreateCst() { const alias = useWatch({ control: methods.control, name: 'alias' }); const cst_type = useWatch({ control: methods.control, name: 'cst_type' }); const { canSubmit, hint } = (() => { - if (!methods.formState.isValid) { - return { canSubmit: false, hint: hintMsg.formInvalid }; - } else if (!validateNewAlias(alias, cst_type, schema)) { + if (!validateNewAlias(alias, cst_type, schema)) { return { canSubmit: false, hint: hintMsg.aliasInvalid }; + } else if (!methods.formState.isValid) { + return { canSubmit: false, hint: hintMsg.formInvalid }; } else { return { canSubmit: true, hint: '' }; } diff --git a/rsconcept/frontend/src/features/rsform/dialogs/dlg-cst-template/dlg-cst-template.tsx b/rsconcept/frontend/src/features/rsform/dialogs/dlg-cst-template/dlg-cst-template.tsx index de04076c..a8631190 100644 --- a/rsconcept/frontend/src/features/rsform/dialogs/dlg-cst-template/dlg-cst-template.tsx +++ b/rsconcept/frontend/src/features/rsform/dialogs/dlg-cst-template/dlg-cst-template.tsx @@ -65,10 +65,10 @@ export function DlgCstTemplate() { const { canSubmit, hint } = (() => { if (!cst_type) { return { canSubmit: false, hint: hintMsg.templateInvalid }; - } else if (!methods.formState.isValid) { - return { canSubmit: false, hint: hintMsg.formInvalid }; } else if (!validateNewAlias(alias, cst_type, schema)) { return { canSubmit: false, hint: hintMsg.aliasInvalid }; + } else if (!methods.formState.isValid) { + return { canSubmit: false, hint: hintMsg.formInvalid }; } else { return { canSubmit: true, hint: '' }; }