Skip to content

bug: IonAlert hijacks 'insertLineBreak' when using inputs #30811

Closed

Description

@mikebrucker

Prerequisites

Ionic Framework Version

v8.x

Current Behavior

  • IonAlert has an option to add inputs.
  • When adding checkbox inputs to the ion-alert, on any page in any location, any textarea or other input in which you want to input a linebreak is impossible.
  • The ion-alert inputs seem to be hijacking the 'beforeinput' event or the e.inputType === 'insertLineBreak'.
  • Having isOpen true or false has no effect.

Expected Behavior

Linebreaks are possible when an IonAlert with custom inputs are present.

Steps to Reproduce

check the code reproduction

  1. open or close ion-alert (does not matter)
  2. open console and observe the log for the linebreak event
  3. type text into the text area and hit enter key for a linebreak
  4. toggle inputs for ion-alert from 5 checkboxes to an empty array
  5. type text into the text area and hit enter key for a linebreak

Code Reproduction URL

https://react-9q8cq9kr.stackblitz.io

Ionic Info

From my normal project (not the code reproduction repo)

Ionic:

Ionic CLI : 7.2.1 (C:\Users\mysecretusername\AppData\Roaming\nvm\v22.19.0\node_modules@ionic\cli)
Ionic Framework : @ionic/react 8.7.6

Capacitor:

Capacitor CLI : 7.4.3
@capacitor/android : 7.4.3
@capacitor/core : 7.4.3
@capacitor/ios : 7.4.3

Utility:

cordova-res : not installed globally
native-run : 2.0.1

System:

NodeJS : v22.19.0 (C:\Program Files\nodejs\node.exe)
npm : 10.9.3
OS : Windows 10

Additional Information

No response

Activity

  1. phillewis1 commented on Dec 4, 2025

    @phillewis1

    I believe this issue is causing the onIonChange event handlers on inputs to break throughout my entire application as well. Once the IonAlert component is mounted, pressing "Enter" does not fire the onIonChange event anywhere in the application. Best not to use checkbox inputs on IonAlert components until this is resolved.

  2. mikebrucker commented on Dec 5, 2025

    @mikebrucker
    Author

    I believe this issue is causing the onIonChange event handlers on inputs to break throughout my entire application as well. Once the IonAlert component is mounted, pressing "Enter" does not fire the onIonChange event anywhere in the application. Best not to use checkbox inputs on IonAlert components until this is resolved.

    I'm at the moment just completely wrapping the IonAlert with {isOpen ? <IonAlert isOpen={isOpen} inputs={inputs} /> : null} until this is addressed.

  3. thetaPC commented on Oct 19, 2026

    @thetaPC
    Contributor

    Thanks for the report, and sorry for the delay.

    Verified on 9.0.8. When an ion-alert has checkbox inputs, it listens for the Enter key on the whole document and cancels it, so that Enter does not toggle its own checkboxes. That listener is active for as long as the alert is mounted, open or closed, and it is not limited to the alert's checkboxes. So while an inline IonAlert with checkboxes is on the page, Enter does not insert line breaks in any textarea, does not submit forms, does not fire ionChange on inputs (as noted in the earlier comment), and does not activate buttons, including the alert's own OK button.

    Workarounds:

    • Only render the IonAlert while it is open, as in the earlier comment, so the listener goes away when it closes:
    {isOpen && <IonAlert isOpen header="Options" inputs={inputs} buttons={['OK']} onDidDismiss={() => setIsOpen(false)} />}
    • Present the alert with useIonAlert instead of the inline component. The alert is removed from the page when it is dismissed:
    const [presentAlert] = useIonAlert();
    
    presentAlert({ header: 'Options', inputs, buttons: ['OK'] });

    Tracked as a bug in core.

  4. b84330808 commented on Oct 21, 2026

    @b84330808

    Thanks for confirming! I'd like to take this one if the team isn't already on it. I have a fix that only cancels Enter when the keydown comes from one of the alert's own checkboxes, so Enter works again elsewhere on the page and on the alert's buttons, with spec tests for all three cases. Happy to open a PR once you give the go-ahead.

  5. added a commit that references this issue on Oct 27, 2026
    28d2940
  6. ShaneK commented on Oct 28, 2026

    @ShaneK
    Member

    Thanks for your report! This has been fixed in v9.0.10!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions