diff --git a/packages/openscd/src/wizard-dialog.ts b/packages/openscd/src/wizard-dialog.ts index b1a5f502a4..e5d6d330e5 100644 --- a/packages/openscd/src/wizard-dialog.ts +++ b/packages/openscd/src/wizard-dialog.ts @@ -28,6 +28,7 @@ import 'ace-custom-element'; import './wizard-checkbox.js'; import './wizard-textfield.js'; import './wizard-select.js'; +import { WizardTextField } from './wizard-textfield.js'; import { newActionEvent, @@ -198,6 +199,12 @@ export class WizardDialog extends LitElement { /** Commits `action` if all inputs are valid, reports validity otherwise. */ async act(action?: WizardActor, primary = true): Promise { if (action === undefined) return false; + + for (const input of dialogInputs(this.dialog)) + if(input instanceof WizardTextField) { + input.ensureValueUpdated(); + } + const wizardInputs = Array.from(this.inputs); const wizardList = ( this.dialog?.querySelector('filtered-list,mwc-list') diff --git a/packages/openscd/src/wizard-textfield.ts b/packages/openscd/src/wizard-textfield.ts index c690a7111e..779e8bd0b9 100644 --- a/packages/openscd/src/wizard-textfield.ts +++ b/packages/openscd/src/wizard-textfield.ts @@ -149,6 +149,10 @@ export class WizardTextField extends LitElement { (this.multiplierButton as HTMLElement) ?? null; } + ensureValueUpdated(): void { + if (this.textfield) this.value = this.textfield.value; + } + checkValidity(): boolean { if ( this.reservedValues &&