Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(git): update next from main #29982

Merged
merged 12 commits into from
Oct 30, 2024
Merged

Commits on Oct 22, 2024

  1. fix(backdrop): remove tabindex for improved accessibility (#29956)

    Issue number: resolves #29773
    
    ---------
    
    <!-- Please do not submit updates to dependencies unless it fixes an
    issue. -->
    
    <!-- Please try to limit your pull request to one type (bugfix, feature,
    etc). Submit multiple pull requests if needed. -->
    
    ## What is the current behavior?
    <!-- Please describe the current behavior that you are modifying. -->
    
    Certain Chrome and Edge versions (confirmed: Chrome v127 and Edge v127)
    would indicate that the backdrop has an accessibility violation:
    
    ```
    Blocked aria-hidden on a <ion-backdrop> element because the element that just received
    focus must not be hidden from assistive technology users. Avoid using aria-hidden on a
    focused element or its ancestor. Consider using the inert attribute instead, which will also
    prevent focus. For more details, see the aria-hidden section of the WAI-ARIA specification at
    ```
    
    The error is happening because `tabindex` and `aria-hidden` are being
    passed to `ion-backdrop`. The `tabindex` attribute is used to make an
    element focusable, regardless of value. When `aria-hidden` is applied to
    an element, then the element is hidden from screen readers. This
    violates the accessibility standards since `ion-backdrop` would be
    considered a focusable element but not visible to screen readers.
    
    ## What is the new behavior?
    <!-- Please describe the behavior or changes that are being added by
    this PR. -->
    
    - Removed `tabindex`, this aligns with frameworks known for
    accessibility (Chakra UI)
    
    ## Does this introduce a breaking change?
    
    - [ ] Yes
    - [x] No
    
    <!--
      If this introduces a breaking change:
    1. Describe the impact and migration path for existing applications
    below.
      2. Update the BREAKING.md file with the breaking change.
    3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
    See
    https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
    for more information.
    -->
    
    
    ## Other information
    
    <!-- Any other information that is important to this PR such as
    screenshots of how the component looks before and after the change. -->
    
    Dev build: `8.3.4-dev.11729533091.1ac77a0c`
    
    How to test:
    
    1. Use either Chrome v127 or Edge v127
    2. Navigate to the [alert basic
    page](https://ionic-framework-3pvgcj4b9-ionic1.vercel.app/src/components/alert/test/basic)
    from the `main` branch
    3. Open browser console
    4. Click on the first button on the alert page
    5. Click on the backdrop
    6. Notice the error message in the browser console (if you don't see it,
    then use a private browser or clear cache)
    7. Navigate to the [alert basic
    page](https://ionic-framework-git-rou-11175-ionic1.vercel.app/src/components/alert/test/basic)
    from the `ROU-11175` branch
    8. Repeat steps 2-6
    9. Verify that the error does not appear
    thetaPC authored Oct 22, 2024
    Configuration menu
    Copy the full SHA
    7294e96 View commit details
    Browse the repository at this point in the history
  2. fix(angular): add missing 'compareWith' input to standalone ion-radio…

    …-group (#29870)
    
    Issue number: resolves #29826
    
    ---------
    
    ## What is the current behavior?
    
    When using `compareWith` on `ion-radio-group` in Ionic Angular
    Standalone the following error is thrown:
    
    ```
    NG8002: Can't bind to 'compareWith' since it isn't a known property of 'ion-radio-group'.
    ```
    
    ## What is the new behavior?
    
    - `compareWith` on `ion-radio-group` in Angular Standalone is available
    
    ## Does this introduce a breaking change?
    
    - [ ] Yes
    - [x] No
    ebarooni authored Oct 22, 2024
    Configuration menu
    Copy the full SHA
    47ba703 View commit details
    Browse the repository at this point in the history
  3. fix(vue): incorrect view rendered when using router.go(-n) (#29877)

    resolves #28201
    
    This PR fixes the navigation issue related to `router.go` that was
    identified in issue #28201. After working on this issue I realised that
    @xxllxhdj has already created a PR for this in #29847. While their fix
    is great, I have added tests to replicate the issue, reused existing
    code and `undefined` will be returned in unexpected situations - which
    matches the existing functionality.
    
    ## What is the current behavior?
    
    If a user navigates from `/home` -> `/pageA` -> `/pageB` -> `/pageC` ->
    back to `/pageB` -> then `router.go(-2)` is called the URL will be
    updated to `/home` correctly, but the app will try to render `/pageA`.
    
    This happens for any delta < -1.
    
    ## What is the new behavior?
    
    The app will correctly render `/pageA`, which matches the URL.
    
    ## Does this introduce a breaking change?
    
    - [ ] Yes
    - [X] No
    
    ---------
    
    Co-authored-by: xxllxhdj <[email protected]>
    bentleyo and xxllxhdj authored Oct 22, 2024
    Configuration menu
    Copy the full SHA
    e32fbe0 View commit details
    Browse the repository at this point in the history

Commits on Oct 24, 2024

  1. fix(overlay): hide from screen readers while animating (#29951)

    Issue number: resolves #29857 
    
    ---------
    
    <!-- Please do not submit updates to dependencies unless it fixes an
    issue. -->
    
    <!-- Please try to limit your pull request to one type (bugfix, feature,
    etc). Submit multiple pull requests if needed. -->
    
    ## What is the current behavior?
    <!-- Please describe the current behavior that you are modifying. -->
    
    Screen readers like Android Talkback would not have the focus ring on
    the correct element. For example, Talkback would announce the buttons
    correctly within action sheet but the focus ring was no where to be
    seen.
    
    After digging around, the focus rings are located out of screen because
    the action sheet is mounted to the DOM out of the screen first then
    transitions into the screen. There are some screen readers that do not
    behave as expected when an element uses `transform` styles like action
    sheet.
    
    
    https://github.com/user-attachments/assets/5a700bcc-3149-47a9-96ff-0aef99dd2bb3
    
    ## What is the new behavior?
    <!-- Please describe the behavior or changes that are being added by
    this PR. -->
    
    - When an overlay is being animated (presenting or dismissing), the
    overlay will hide from screen readers. This allows the element to
    navigate to its correct destination for screen readers to interact with.
    Plus, we shouldn't allow screen readers to interact with content in the
    middle of an animation. It could lead to some confusion.
    
    ## Does this introduce a breaking change?
    
    - [ ] Yes
    - [x] No
    
    <!--
      If this introduces a breaking change:
    1. Describe the impact and migration path for existing applications
    below.
      2. Update the BREAKING.md file with the breaking change.
    3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
    See
    https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
    for more information.
    -->
    
    
    ## Other information
    
    <!-- Any other information that is important to this PR such as
    screenshots of how the component looks before and after the change. -->
    
    Dev build: 8.3.3-dev.11729276019.194c165c
    
    **A physical Android device will be needed, the issue does not appear in
    simulators**
    
    Components that need to be tested because they use overlays:
    - Action sheet
    - Alert
    - Loading
    - Modal
    - Popover
    - Select w/ action sheet interface
    - Select w/ alert interface
    - Select w/ popover interface
    - Toast
    
    How to test:
    1. Create a starter app (any framework will do)
    2. Add an action sheet
    3. Build app for mobile devices
    ```
    ionic build
    
    ionic cap add ios
    ionic cap add android
    
    ionic cap copy && ionic cap sync
    ```
    4. Open the app in Android Studio: `ionic cap open android`
    5. Connect the Android device to Android Studio
    6. Open app in Android device
    7. Launch Talkback
    8. Navigate back to the app
    9. Open action sheet 
    10. Swipe over to the action sheet's buttons
    11. Notice that the buttons don't have a focus ring
    12. Go back to the starter
    4. Install the dev build
    5. Add the components to the app
    6. Sync app: `ionic cap copy && ionic cap sync`
    13. Relaunch the app on the Android device
    14. Verify that the focus ring appears on the action sheet's buttons
    15. Verify that the other overlays are working as intended
    thetaPC authored Oct 24, 2024
    Configuration menu
    Copy the full SHA
    cb60073 View commit details
    Browse the repository at this point in the history

Commits on Oct 25, 2024

  1. fix(overlays): do not hide root when toast appears (#29962)

    Issue number: stemmed from #29773
    
    ---------
    
    <!-- Please do not submit updates to dependencies unless it fixes an
    issue. -->
    
    <!-- Please try to limit your pull request to one type (bugfix, feature,
    etc). Submit multiple pull requests if needed. -->
    
    ## What is the current behavior?
    <!-- Please describe the current behavior that you are modifying. -->
    
    Certain Chrome and Edge versions (confirmed: Chrome v127, v128, v129 and
    Edge v127) would indicate that certain elements have an accessibility
    violation:
    
    ```
    Blocked aria-hidden on a "ELEMENT NAME" element because the element that just received
    focus must not be hidden from assistive technology users. Avoid using aria-hidden on a
    focused element or its ancestor. Consider using the inert attribute instead, which will also
    prevent focus. For more details, see the aria-hidden section of the WAI-ARIA specification at
    ```
    
    This issue happens when a toast appears and the users clicks on any
    element that is not related to toast. This is due to the main content
    having an `aria-hidden` so users should not to be able to interact with
    any of those elements. This isn't an issue when an overlay uses a
    backdrop, like `ion-alert` because the backdrop prevents a user from
    interacting with those elements.
    
    ## What is the new behavior?
    <!-- Please describe the behavior or changes that are being added by
    this PR. -->
    
    - When toast is present, the main content no longer has an
    `aria-hidden`. This aligns with accessibility guidelines. I also
    verified with other Framework, MD states "Don't trap focus in the
    snackbar. Users should be able to freely navigate in and out."
    
    ## Does this introduce a breaking change?
    
    - [ ] Yes
    - [x] No
    
    <!--
      If this introduces a breaking change:
    1. Describe the impact and migration path for existing applications
    below.
      2. Update the BREAKING.md file with the breaking change.
    3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
    See
    https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
    for more information.
    -->
    
    
    ## Other information
    
    <!-- Any other information that is important to this PR such as
    screenshots of how the component looks before and after the change. -->
    
    Dev build: `8.3.4-dev.11729879684.1ea28919`
    
    1. Clone this
    [repo](https://github.com/brandyscarney/test-angular-overlays)
    2. Install deps
    3. Run the app on a private browser (Chrome v127, v128, v129 or Edge
    v127)
    4. Open browser console
    5. Click on "Open Toast" button
    6. Click on any element other than "Open Toast" button, like "Open
    Popover"
    7. Notice the error message
    8. Close private browser
    9. Install dev build: `npm install
    @ionic/[email protected]`
    10. Repeat steps 4-7
    11. Verify that the error message doesn't occur
    thetaPC authored Oct 25, 2024
    Configuration menu
    Copy the full SHA
    322d7c9 View commit details
    Browse the repository at this point in the history
  2. fix(input, textarea): ensure screen readers announce helper and error…

    … text when focused (#29958)
    
    Issue number: internal
    
    ---------
    
    <!-- Please do not submit updates to dependencies unless it fixes an
    issue. -->
    
    <!-- Please try to limit your pull request to one type (bugfix, feature,
    etc). Submit multiple pull requests if needed. -->
    
    ## What is the current behavior?
    <!-- Please describe the current behavior that you are modifying. -->
    
    Screen readers do not announce helper and error text when user is
    focused on the input or textarea. This does not align with the
    accessibility guidelines.
    
    ## What is the new behavior?
    <!-- Please describe the behavior or changes that are being added by
    this PR. -->
    
    - The appropriate `aria` tags are added to the native input and textarea
    in order to associate them to the helper and error texts.
    - `aria-describedBy` will only be added to the native element based on
    helper or error text. If helper text exists then the helper text ID will
    be used. If the error text exists and the component has the `ion-touched
    ion-invalid` classes, then the error text ID will be used.
    - `aria-invalid` will only be added if the error text exists and the
    component has the `ion-touched ion-invalid` classes.
    - Added tests.
    
    ## Does this introduce a breaking change?
    
    - [ ] Yes
    - [x] No
    
    <!--
      If this introduces a breaking change:
    1. Describe the impact and migration path for existing applications
    below.
      2. Update the BREAKING.md file with the breaking change.
    3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
    See
    https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
    for more information.
    -->
    
    
    ## Other information
    
    <!-- Any other information that is important to this PR such as
    screenshots of how the component looks before and after the change. -->
    
    How to test:
    1. Navigate to the [input
    page](https://ionic-framework-lio43tje7-ionic1.vercel.app/src/components/input/test/bottom-content)
    on the `main` branch
    2. Turn on the screen reader of your choice
    3. Notice that the screen reader does not announce the helper or error
    text when the input is focused
    4. Navigate to the [input
    page](https://ionic-framework-git-rou-11274-ionic1.vercel.app/src/components/input/test/bottom-content)
    on the `ROU-11274` branch
    5. Turn on the screen reader of your choice
    6. Verify that the screen reader announces the helper or error text when
    the input is focused on
    7. Navigate to the [textarea
    page](https://ionic-framework-lio43tje7-ionic1.vercel.app/src/components/textarea/test/bottom-content)
    on the `main` branch
    8. Repeat steps 2-3
    9. Navigate to the [textarea
    page](https://ionic-framework-git-rou-11274-ionic1.vercel.app/src/components/textarea/test/bottom-content)
    on the `ROU-11274` branch
    10. Repeat steps 5-6
    
    Known Webkit issues:
    This fix will not work on macOS
    [16](https://bugs.webkit.org/show_bug.cgi?id=254081) and
    [17](https://bugs.webkit.org/show_bug.cgi?id=262895) as VoiceOver will
    not read any text using `aria-describedby`. Works fine on macOS 18.
    thetaPC authored Oct 25, 2024
    Configuration menu
    Copy the full SHA
    5a73145 View commit details
    Browse the repository at this point in the history

Commits on Oct 29, 2024

  1. fix(overlays): hide the focus trap div from screen readers (#29970)

    Issue number: resolves #29858
    
    ---------
    
    ## What is the current behavior?
    When swiping between elements using Android TalkBack, a green box is
    shown for certain overlays and it gains focus at the beginning and end
    of those overlays:
    
    <img width="419" alt="Screenshot 2024-10-25 at 2 44 45 PM"
    src="https://github.com/user-attachments/assets/dffd8126-ec1d-4b6f-87fc-6488c7c09aab">
    
    ## What is the new behavior?
    The `aria-hidden` attribute is now added to the focus trap divs to hide
    them from screen readers, without preventing these divs from trapping
    keyboard focus.
    
    ## Does this introduce a breaking change?
    
    - [ ] Yes
    - [x] No
    
    ## Other information
    Dev build: `8.3.4-dev.11729882231.1b2e7f13`
    brandyscarney authored Oct 29, 2024
    Configuration menu
    Copy the full SHA
    c3b58f1 View commit details
    Browse the repository at this point in the history

Commits on Oct 30, 2024

  1. v8.3.4

    Ionitron committed Oct 30, 2024
    Configuration menu
    Copy the full SHA
    93364b9 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    ffdaa3b View commit details
    Browse the repository at this point in the history
  3. merge release-8.3.4 (#29980)

    v8.3.4
    brandyscarney authored Oct 30, 2024
    Configuration menu
    Copy the full SHA
    6dc52d2 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    8d2d176 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    379587d View commit details
    Browse the repository at this point in the history