• 
      

    Simplify dialog actions, support cancelation, and add close reasons.

    Review Request #14684 — Created Nov. 11, 2025 and submitted — Latest diff uploaded

    Information

    Ink
    master

    Reviewers

    DialogView lacked support for handling a cancel request from the
    browser, such as when the user hit the Escape key. The dialog would
    close with no feedback. This was a problem for the Confirm dialog,
    which never went through the cancel response flow.

    There's now explicit support for handling this and direct closing using
    the cancel and close events, along with new Cancel actions.

    When closing a dialog, or when receiving a cancel/close request, a Close
    Reason will be set. This contains a flag indicating if the dialog was
    canceled, along with optional fields for the action triggering the
    closure and any state returned from the action's click handler.

    To support that on the action side, we needed a Cancel action type. To
    avoid introducing yet type requiring a Callback variant, we're
    deprecating the *_CALLBACK versions of the types. These weren't really
    necessary, as they just determined whether to invoke the provided
    callback= argument.

    We now support CLOSE and CANCEL types, with CALLBACK and
    CALLBACK_AND_CLOSE being deprecated. A default of null is equivalent
    to CALLBACK, which invokes an action but does not close the dialog.
    The old types will convert to the new on load, but are not formally
    deprecated for now.

    If the cancel event is triggered on the element, and there's a
    Cancel action, it will be invoked directly, allowing any callback to
    be run.

    Tested each action type, new and old, and verified the right behavior.
    Tested both in Review Board and with the new story updates.

    Tested that hitting Escape closed the Confirm dialog, and triggered
    the Cancel dialog behavior.

    Commits

    Files