14208 Commits

Author SHA1 Message Date
a65886ba37 test(app, routing): use index 2025-06-20 17:41:22 -07:00
a926134ba5 chore(rr5, rr6): update package 2025-06-20 12:15:10 -07:00
49cbc46d4b test(dynamic-ionpage-classnames): use old version for rr5 2025-06-18 17:26:17 -07:00
9c5f55adae test(rr5): keep the old pages 2025-06-18 16:09:12 -07:00
9d69a69d08 Merge branch 'main' of github.com:ionic-team/ionic-framework into mh/react-router-6 2025-06-17 11:51:27 -07:00
7a20697849 fix(ReactRouterViewStack, StackManager): use correct value & add value check 2025-06-16 17:24:11 -07:00
10bb889dc3 docs(IonReactRouter): use updated param names 2025-06-16 11:36:40 -07:00
2656e98490 chore: update package and sync file 2025-06-13 16:29:34 -07:00
e6e17eb435 refactor(IonReactRouter): split component to use hooks correctly 2025-06-13 16:28:43 -07:00
5cccf0b297 refactor(many): update to prevent compile errors 2025-06-13 16:27:59 -07:00
366004e3f8 refactor(Tabs2): switch to navigate 2025-06-13 14:12:06 -07:00
c6f8dd4c54 refactor(many): replace render with element 2025-06-13 13:46:41 -07:00
71fb8cb8f9 refactor(many): update to use <Navigate> 2025-06-13 13:32:36 -07:00
12c49f5c51 refactor(many): remove exact from test pages 2025-06-13 12:05:18 -07:00
c45c0f9bfa docs(many): update comments 2025-06-13 11:35:29 -07:00
6811fe5cc8 fix(range): improve focus and blur handling for dual knobs (#30482)
Issue number: resolves #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. -->

Currently, if you use keyboard navigation to move between dual range
slider knobs, only the first knob you navigate to is highlighted. This
is because both elements in the same component are marked as focusable
and the code that manages focusable doesn't take into account multiple
elements in the same component.


https://github.com/user-attachments/assets/36d84eed-6928-446e-becd-ffa2a97e3cc2

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

After these changes, we manage focusing on dual knob range sliders
manually, so using tab navigation through dual knob range sliders
focuses knobs as expected.

## 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. -->

[Test - Range - Basic
screen](https://ionic-framework-git-fw-6401-ionic1.vercel.app/src/components/range/test/basic)
2025-06-13 16:43:48 +00:00
7ff8994d12 feat(IonReactHashRouter): migrate to a functional component and react router 6
Co-authored-by: Sean Perkins <13732623+sean-perkins@users.noreply.github.com>
2025-06-12 16:14:24 -07:00
205a7056d7 chore(IonReactMemoryRouter): remove unused type 2025-06-11 17:15:35 -07:00
331b39427b feat(IonReactMemoryRouter): migrate to a functional component and react router 6
Co-authored-by: Sean Perkins <13732623+sean-perkins@users.noreply.github.com>
2025-06-11 17:14:44 -07:00
d52b253fa0 merge release-8.6.1 (#30475)
Release v8.6.1
2025-06-11 09:04:26 -07:00
e27c14a00a chore(): update package lock files 2025-06-11 15:37:41 +00:00
446b64ef36 v8.6.1 v8.6.1 2025-06-11 15:37:04 +00:00
0a0dcb6d7d feat(IonReactRouter): migrate to a functional component and react router 6
Co-authored-by: Sean Perkins <13732623+sean-perkins@users.noreply.github.com>
2025-06-10 17:14:14 -07:00
c38aa07cf8 fix(item-sliding): check for side attribute to avoid an undefined value (#29845)
Issue number: resolves #29499

---------

## What is the current behavior?
Using the bundled version of Ionic results in an error `Uncaught (in
promise) Error: "undefined" is not a valid value for [side]. Use "start"
or "end" instead.` with `<ion-item-sliding>`.

Reproduction 1: 
- https://stackblitz.com/edit/stackblitz-starters-mezoy6?file=index.html
- Press the Add (`+`) button several times

It is also reproducible in an Ionic Angular app when installed via npm.

Reproduction 2: 
-
https://stackblitz.com/edit/angular-exwgke?file=src%2Fapp%2Fexample.component.ts
- Press the `Add Items` button several times

## What is the new behavior?
Check for the side attribute to avoid `side` being `undefined`.

## Does this introduce a breaking change?
- [ ] Yes
- [x] No

## Other information

Dev build: `8.6.1-dev.11749562115.1e681558`

Test PR: https://github.com/ionic-team/ionic-framework/pull/30469

The tests must be merged separately, after this is released, in order to
use the fix from the CDN.

---------

Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
2025-06-10 18:11:09 +00:00
071b414a00 fix(modal): reset footer positioning after content drag and multi-footer support (#30470)
Issue number: resolves #30468

---------

<!-- 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. -->

Currently, if you use pointer events to drag the content of a sheet
modal with `expandToScroll` disabled and have you have a footer and a
dismiss button, then you use the dismiss button to close the modal, the
footer will be stuck in its pinned position at the bottom of the screen.

Additionally, if you have multiple footers, only one of them properly
gets pinned and unpinned.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

- We now move footers back to their stationary position when we finish
our drag event on modal content
- We support pinning and unpinning multiple footers at the same time now

## 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.6.1-dev.11749575087.1b86eb67`
2025-06-10 18:09:37 +00:00
0008059f8c docs(IonRouter, ReactRouterViewStack, StackManager): update comments 2025-06-09 15:57:41 -07:00
93202c070e chore(IonRouteInner): update render 2025-06-09 15:57:13 -07:00
a78f6b3151 feat(IonRouter): migrate to functional component with react router 6
Co-authored-by: Sean Perkins <13732623+sean-perkins@users.noreply.github.com>
2025-06-09 13:07:24 -07:00
37f76c72ec chore(StackManager): run lint 2025-06-09 11:35:13 -07:00
5ca8fc85aa chore(deps): update dependency @capacitor/core to v7.3.0 (#30461)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@capacitor/core](https://capacitorjs.com)
([source](https://redirect.github.com/ionic-team/capacitor)) | [`7.2.0`
->
`7.3.0`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/7.2.0/7.3.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fcore/7.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@capacitor%2fcore/7.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@capacitor%2fcore/7.2.0/7.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fcore/7.2.0/7.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>ionic-team/capacitor (@&#8203;capacitor/core)</summary>

###
[`v7.3.0`](https://redirect.github.com/ionic-team/capacitor/blob/HEAD/CHANGELOG.md#730-2025-06-05)

[Compare
Source](https://redirect.github.com/ionic-team/capacitor/compare/7.2.0...7.3.0)

##### Bug Fixes

- add error code checking to `runPlatformHook`
([#&#8203;7994](https://redirect.github.com/ionic-team/capacitor/issues/7994))
([8717680](8717680491))
- **cli:** Don't downgrade deployment target on migrate
([#&#8203;7953](https://redirect.github.com/ionic-team/capacitor/issues/7953))
([46e8792](46e87925b6))
- **cli:** ensures the execution order of CLI hooks
([#&#8203;7947](https://redirect.github.com/ionic-team/capacitor/issues/7947))
([c3ea809](c3ea8094cd))
- **cli:** unexpected error on target device list
([#&#8203;8015](https://redirect.github.com/ionic-team/capacitor/issues/8015))
([f827c48](f827c48f08))
- **cli:** use proper build params
([#&#8203;8016](https://redirect.github.com/ionic-team/capacitor/issues/8016))
([12ce2a4](12ce2a4865))
- **core:** Prevent error when hasListeners is empty
([#&#8203;7975](https://redirect.github.com/ionic-team/capacitor/issues/7975))
([a4a0942](a4a0942edd))
- Remove all plugin listeners in bridge reset
([#&#8203;7962](https://redirect.github.com/ionic-team/capacitor/issues/7962))
([06aeea9](06aeea973a))

##### Features

- **cli:** Initial Cordova plugin SPM support
([#&#8203;7999](https://redirect.github.com/ionic-team/capacitor/issues/7999))
([c030354](c030354263))
- expose `appStartPath` on cap config server configuration
([#&#8203;8019](https://redirect.github.com/ionic-team/capacitor/issues/8019))
([a274fef](a274fef069))
- **ios:** Alternative debug config for SPM
([#&#8203;7982](https://redirect.github.com/ionic-team/capacitor/issues/7982))
([a054aa5](a054aa5bb4))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/ionic-team/ionic-framework).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC40MC4zIiwidXBkYXRlZEluVmVyIjoiNDAuNDAuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-09 17:28:43 +00:00
7da26d0fd5 test(popover): skip flaky no event popover test (#30464)
Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
2025-06-09 17:18:32 +00:00
8bec166200 chore(deps): update dependency @axe-core/playwright to ^4.10.2 (#30460)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@axe-core/playwright](https://redirect.github.com/dequelabs/axe-core-npm)
| [`^4.10.1` ->
`^4.10.2`](https://renovatebot.com/diffs/npm/@axe-core%2fplaywright/4.10.1/4.10.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@axe-core%2fplaywright/4.10.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@axe-core%2fplaywright/4.10.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@axe-core%2fplaywright/4.10.1/4.10.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@axe-core%2fplaywright/4.10.1/4.10.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>dequelabs/axe-core-npm (@&#8203;axe-core/playwright)</summary>

###
[`v4.10.2`](https://redirect.github.com/dequelabs/axe-core-npm/blob/HEAD/CHANGELOG.md#4102-2025-05-12)

[Compare
Source](https://redirect.github.com/dequelabs/axe-core-npm/compare/v4.10.1...v4.10.2)

##### Bug Fixes

- Optimize AxeBuilder memory usage.
([#&#8203;1154](https://redirect.github.com/dequelabs/axe-core-npm/issues/1154))
([e53cd36](e53cd36d07)),
closes
[/github.com/bensenescu/axe-core-npm/blob/develop/packages/puppeteer/src/axePuppeteer.ts#L59](https://redirect.github.com//github.com/bensenescu/axe-core-npm/blob/develop/packages/puppeteer/src/axePuppeteer.ts/issues/L59)
[/github.com/bensenescu/axe-core-npm/blob/develop/packages/puppeteer/src/utils.ts#L34](https://redirect.github.com//github.com/bensenescu/axe-core-npm/blob/develop/packages/puppeteer/src/utils.ts/issues/L34)
- Update axe-core to v4.10.3
([#&#8203;1155](https://redirect.github.com/dequelabs/axe-core-npm/issues/1155))
([f8e3a14](f8e3a14043))
- **wdio:** resolve blank navigation issue in WDIO v9
([#&#8203;1169](https://redirect.github.com/dequelabs/axe-core-npm/issues/1169))
([6505560](6505560d64))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/ionic-team/ionic-framework).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC40MC4zIiwidXBkYXRlZEluVmVyIjoiNDAuNDAuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-09 15:19:08 +00:00
907506b35c test(fab): skip flaky custom size test (#30463)
Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
2025-06-09 14:57:57 +00:00
2df6d2ce6e chore(git): purge JSDelivr cache for all major versions (#30457)
Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
2025-06-04 18:03:03 +00:00
1d3e12cf30 merge release-8.6.0 (#30455)
v8.6.0
2025-06-04 11:59:01 -04:00
fed4d62a0d chore(): update package lock files 2025-06-04 14:58:14 +00:00
3e76b8339e v8.6.0 v8.6.0 2025-06-04 14:57:34 +00:00
9674438dfb merge main (#30454) 2025-06-04 10:49:05 -04:00
6afcd530e6 Merge branch 'main' into chore/update-from-main 2025-06-04 10:33:07 -04:00
87c96fa322 merge release-8.5.9 (#30452)
v8.5.9
2025-06-04 10:22:48 -04:00
2a22181c04 docs(changelog): add missing closed issues 2025-06-04 10:11:04 -04:00
0b1abf7271 docs(changelog): improve description of fix for datetime 2025-06-04 09:58:12 -04:00
4e76bd3761 chore(): update package lock files 2025-06-04 13:46:14 +00:00
3b1a0eb00b v8.5.9 v8.5.9 2025-06-04 13:45:35 +00:00
1563b7bae7 chore(deps): update dependency @stencil/core to v4.33.1 (#30450)
Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
Co-authored-by: Christian Bromann <git@bromann.dev>
2025-06-03 18:30:01 -04:00
4cbbbb053a fix(sheet): move sheet footers instead of cloning while dragging (#30433)
Issue number: resolves several (listed at the bottom) + 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. -->
Currently, when expand to scroll is disabled in a sheet modal, we
duplicate the footer on drag and show a cloned version in the shadow DOM
instead of the original. This causes many issues (described in the Other
Information section), especially because often times the cloned version
of the footer would stick around instead of the original version, which
made any event listeners in the footer (and styling) broken by default
instead of only while dragging.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->
We are now following [method 2 of the design
doc](https://github.com/ionic-team/ionic-framework-design-documents/blob/main/projects/ionic-framework/components/modal/0003-sheet-modal-scroll.md#approach-2-move-the-footer),
with minor deviation.

Now we try to eliminate the shaky behavior in the footer by setting the
footer to be absolutely positioned on the page and adding padding to the
bottom of the modal while dragging is happening to offset the missing
footer content. We are additionally performing some extra logic to swap
back when the modal is dragged below the height of the footer so that it
collapses correctly visually.

Note this is a minor variation in method two from the design doc because
I moved the footer to the body instead of to the parent modal. This is
because the parent modal will prevent anything not in its ion-page from
displaying, but it seems to work fine. As a side-effect of this, I had
to add an extra class and support for that class in a few areas so we
could identify footers that belonged to modals while they were moving
and apply applicable classes.

Additionally with this change I was able to remove all of the extra code
in the leave/enter animations because we no longer need to worry about
managing a clone of an element there. This allows me to contain all code
relating to behavior of the footer to `sheet.ts`.

## 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

This refactor in how the footer combats shakiness should resolve many
issues caused by the previous implementation, including the following:
- this change no longer has the footer being swapped out, effectively
breaking event listeners, which fixes #30315
- this change no longer has the footer being duplicated at all, which
fixes #30341
- this change no longer has the footer (sometimes) being moved to the
shadow DOM, which fixes #30312

**Current dev build**: `8.5.8-dev.11748530383.18b4e301`

---------

Co-authored-by: Israel de la Barrera <israeldlbarreral@pm.me>
Co-authored-by: Maria Hutt <thetaPC@users.noreply.github.com>
Co-authored-by: Brandy Smith <brandyscarney@users.noreply.github.com>
2025-06-03 15:47:11 +00:00
b77447bea0 fix(input-otp): correctly handle autofill by splitting the values into all inputs (#30444)
Properly handle autofill by detecting when the input value exceeds one character in the `onInput` handler and distributing the value across all input fields.

---------

Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
2025-06-03 09:59:03 -04:00
c62590a2d8 chore(git): improve Ionitron to stop closing issues that have the 'needs: investigation' label (#30424)
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. -->
- Currently, `Ionitron` is closing issues when they have the `needs:
investigation` label.
- We might want to use the duplicate ticket as our source of truth since
a community member has made a
[suggestion](https://github.com/ionic-team/ionic-framework/issues/30380#issuecomment-2848626887)
that could fix it.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->
- The `ionic-issue-bot.yml` file was changed to stop closing issues that
have the `needs: investigation` label
- To prevent `Ionitron` from closing issues with the `needs:
investigation` label, we've added this label to the `exemptLabels` list
under the `stale`, `noReply`, and `noReproduction` sections.
- This tells the bot not to close issues with that label, even if they
meet the criteria for being stale or lacking a reply/reproduction.


## 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. -->
- _N.A._

---------

Co-authored-by: Brandy Smith <brandyscarney@users.noreply.github.com>
2025-06-02 18:49:00 +00:00
14f32f8fee fix(datetime): set working parts to last selected value (#29610)
Issue number: resolves #29094

---------

<!-- 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. -->

When assigning multiple selected dates that span different months, the
date time will not set the correct working parts and instead fallback to
the default date: May 28, 2021.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

When opening the datetime with multiple dates selected, the calendar
will animate to the last value in the array of selected dates.

If the datetime is collapsed, body is not visible, is not a grid view or
the user has made a selection of a new date, the calendar will not
animate and instead will set the working parts to the current value
selected (latest/last value).

## 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. -->

Internally we discussed setting the month view to the first value in the
array. Upon further investigation I determined this is not the expected
behavior. When a user interacts with multiple date selection, the most
recent selection (their active view) is the **last** value in the array.
Animating or updating the working parts to the first value in the array
would result in the calendar month jumping after every selection. Using
the last index of the array results in no odd jumps in the experience.
If a developer wishes to configure this behavior, they can change the
order of the values in the value assigned to the datetime (to cause a
specific month/date to be the initial view).

Dev build: `8.5.8-dev.11748388365.11ad9dfe`

---------

Co-authored-by: Maria Hutt <thetaPC@users.noreply.github.com>
2025-05-30 18:11:26 +00:00
4d6a067677 feat(input-otp): add new input-otp component (#30386)
Adds a new component `ion-input-otp` which provides the OTP input functionality

- Displays as an input group with multiple boxes accepting a single character
- Accepts `type` which determines whether the boxes accept numbers or text/numbers and determines the keyboard to display
- Supports changing the displayed keyboard using the `inputmode` property
- Accepts a `length` property to control the number of input boxes
- Accepts the following properties to change the design: `fill`, `shape`, `size`, `color`
- Accepts a `separators` property to show a separator between 1 or more input boxes
- Supports the `disabled`, `readonly` and invalid states
- Supports limiting the accepted input via the `pattern` property
- Emits the following events: `ionInput`, `ionChange`, `ionComplete`, `ionBlur`, `ionFocus`
- Exposes the following method: `setFocus`

---------

Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
Co-authored-by: Shane <shane@shanessite.net>
2025-05-29 15:10:37 -04:00