feat(dialog): add onBeforeButtonClick hook to support validation before closing dialog #251900
+17
−7
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes #251899 and adds an optional
onBeforeButtonClick
callback to theDialog
component, allowing consumers to intercept button clicks and determine whether the dialog should close. This enables scenarios such as form validation, where the dialog should only close if the input is valid.Motivation
Currently, the
Dialog
component always resolves its promise and closes when a button is clicked, with no way to prevent this based on user input or validation logic. This makes it impossible to implement dialogs that require validation before closing.Changes
onBeforeButtonClick?: (index: number, values?: string[], checkboxChecked?: boolean) => boolean | Promise<boolean>
property toIDialogOptions
.Dialog.show()
to call this callback (if provided) before resolving and closing the dialog.false
(or resolves tofalse
), the dialog remains open and the user can correct their input.Example Usage
Benefits
Backward Compatibility
This change is fully backward compatible. If
onBeforeButtonClick
is not provided, the dialog behaves as before.