From 12b75009db33b0af3fac773828c83baea0882346 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 30 Apr 2025 16:21:17 -0400 Subject: [PATCH 01/81] feat(input-otp): add input-otp component --- core/api.txt | 45 ++ core/src/components.d.ts | 127 ++++++ .../components/input-otp/input-otp.ios.scss | 21 + .../components/input-otp/input-otp.md.scss | 22 + core/src/components/input-otp/input-otp.scss | 183 ++++++++ core/src/components/input-otp/input-otp.tsx | 395 ++++++++++++++++++ core/src/themes/ionic.theme.default.ios.scss | 1 + .../angular/src/directives/proxies-list.ts | 1 + packages/angular/src/directives/proxies.ts | 35 ++ .../standalone/src/directives/proxies.ts | 38 ++ packages/react/src/components/proxies.ts | 2 + packages/vue/src/proxies.ts | 21 + 12 files changed, 891 insertions(+) create mode 100644 core/src/components/input-otp/input-otp.ios.scss create mode 100644 core/src/components/input-otp/input-otp.md.scss create mode 100644 core/src/components/input-otp/input-otp.scss create mode 100644 core/src/components/input-otp/input-otp.tsx diff --git a/core/api.txt b/core/api.txt index 428926db860..f3093e7d25e 100644 --- a/core/api.txt +++ b/core/api.txt @@ -780,6 +780,51 @@ ion-input,css-prop,--placeholder-font-weight,md ion-input,css-prop,--placeholder-opacity,ios ion-input,css-prop,--placeholder-opacity,md +ion-input-otp,scoped +ion-input-otp,prop,allowedKeys,string | undefined,undefined,false,false +ion-input-otp,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record | undefined,undefined,false,true +ion-input-otp,prop,disabled,boolean,false,false,true +ion-input-otp,prop,fill,"outline" | "solid",'outline',false,false +ion-input-otp,prop,inputmode,"decimal" | "email" | "none" | "numeric" | "search" | "tel" | "text" | "url" | undefined,undefined,false,false +ion-input-otp,prop,length,number,4,false,false +ion-input-otp,prop,separators,number[] | string | undefined,undefined,false,false +ion-input-otp,prop,shape,"rectangular" | "round" | "soft",'round',false,false +ion-input-otp,prop,size,"large" | "medium" | "small",'medium',false,false +ion-input-otp,prop,type,"number" | "text",'number',false,false +ion-input-otp,prop,value,string | undefined,'',false,false +ion-input-otp,event,ionChange,InputOTPChangeEventDetail,true +ion-input-otp,event,ionComplete,InputOTPCompleteEventDetail,true +ion-input-otp,css-prop,--background,ios +ion-input-otp,css-prop,--background,md +ion-input-otp,css-prop,--background-focused,ios +ion-input-otp,css-prop,--background-focused,md +ion-input-otp,css-prop,--border-color,ios +ion-input-otp,css-prop,--border-color,md +ion-input-otp,css-prop,--border-color-focused,ios +ion-input-otp,css-prop,--border-color-focused,md +ion-input-otp,css-prop,--border-radius,ios +ion-input-otp,css-prop,--border-radius,md +ion-input-otp,css-prop,--border-width,ios +ion-input-otp,css-prop,--border-width,md +ion-input-otp,css-prop,--color,ios +ion-input-otp,css-prop,--color,md +ion-input-otp,css-prop,--height,ios +ion-input-otp,css-prop,--height,md +ion-input-otp,css-prop,--highlight-color,ios +ion-input-otp,css-prop,--highlight-color,md +ion-input-otp,css-prop,--margin,ios +ion-input-otp,css-prop,--margin,md +ion-input-otp,css-prop,--padding,ios +ion-input-otp,css-prop,--padding,md +ion-input-otp,css-prop,--separator-color,ios +ion-input-otp,css-prop,--separator-color,md +ion-input-otp,css-prop,--separator-height,ios +ion-input-otp,css-prop,--separator-height,md +ion-input-otp,css-prop,--separator-width,ios +ion-input-otp,css-prop,--separator-width,md +ion-input-otp,css-prop,--width,ios +ion-input-otp,css-prop,--width,md + ion-input-password-toggle,shadow ion-input-password-toggle,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record | undefined,undefined,false,true ion-input-password-toggle,prop,hideIcon,string | undefined,undefined,false,false diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 72733ac654b..bb232951695 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -18,6 +18,7 @@ import { ScrollBaseDetail, ScrollDetail } from "./components/content/content-int import { DatetimeChangeEventDetail, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimePresentation, FormatOptions, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface"; import { SpinnerTypes } from "./components/spinner/spinner-configs"; import { InputChangeEventDetail, InputInputEventDetail } from "./components/input/input-interface"; +import { InputOTPChangeEventDetail, InputOTPCompleteEventDetail } from "./components/input-otp/input-otp"; import { MenuChangeEventDetail, MenuCloseEventDetail, MenuType, Side } from "./components/menu/menu-interface"; import { ModalBreakpointChangeEventDetail, ModalHandleBehavior } from "./components/modal/modal-interface"; import { NavComponent, NavComponentWithProps, NavOptions, RouterOutletOptions, SwipeGestureHandler, TransitionDoneFn, TransitionInstruction } from "./components/nav/nav-interface"; @@ -55,6 +56,7 @@ export { ScrollBaseDetail, ScrollDetail } from "./components/content/content-int export { DatetimeChangeEventDetail, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimePresentation, FormatOptions, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface"; export { SpinnerTypes } from "./components/spinner/spinner-configs"; export { InputChangeEventDetail, InputInputEventDetail } from "./components/input/input-interface"; +export { InputOTPChangeEventDetail, InputOTPCompleteEventDetail } from "./components/input-otp/input-otp"; export { MenuChangeEventDetail, MenuCloseEventDetail, MenuType, Side } from "./components/menu/menu-interface"; export { ModalBreakpointChangeEventDetail, ModalHandleBehavior } from "./components/modal/modal-interface"; export { NavComponent, NavComponentWithProps, NavOptions, RouterOutletOptions, SwipeGestureHandler, TransitionDoneFn, TransitionInstruction } from "./components/nav/nav-interface"; @@ -1319,6 +1321,52 @@ export namespace Components { */ "value"?: string | number | null; } + interface IonInputOtp { + /** + * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[0-9]" For text (type="text"): "[a-zA-Z0-9]" + */ + "allowedKeys"?: string; + /** + * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. + */ + "color"?: Color; + /** + * Whether the input is disabled + */ + "disabled": boolean; + /** + * The fill style of the input boxes + */ + "fill": 'solid' | 'outline'; + /** + * A hint to the browser for which keyboard to display. Possible values: `"none"`, `"text"`, `"tel"`, `"url"`, `"email"`, `"numeric"`, `"decimal"`, and `"search"`. For numbers (type="number"): "numeric" For text (type="text"): "text" + */ + "inputmode"?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; + /** + * The number of input boxes to display + */ + "length": number; + /** + * Where separators should be shown between input boxes. Can be a comma-separated string or an array of numbers. For example: "3" would show a separator after the 3rd input box. [1,4] would show a separator after the 1st and 4th input boxes. + */ + "separators"?: "all" | string | number[]; + /** + * The shape of the input boxes + */ + "shape": 'round' | 'rectangular' | 'soft'; + /** + * The size of the input boxes + */ + "size": 'small' | 'medium' | 'large'; + /** + * The type of input allowed in the boxes + */ + "type": 'text' | 'number'; + /** + * The value of the OTP input + */ + "value"?: string; + } interface IonInputPasswordToggle { /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). @@ -3404,6 +3452,10 @@ export interface IonInputCustomEvent extends CustomEvent { detail: T; target: HTMLIonInputElement; } +export interface IonInputOtpCustomEvent extends CustomEvent { + detail: T; + target: HTMLIonInputOtpElement; +} export interface IonItemOptionsCustomEvent extends CustomEvent { detail: T; target: HTMLIonItemOptionsElement; @@ -3933,6 +3985,24 @@ declare global { prototype: HTMLIonInputElement; new (): HTMLIonInputElement; }; + interface HTMLIonInputOtpElementEventMap { + "ionChange": InputOTPChangeEventDetail; + "ionComplete": InputOTPCompleteEventDetail; + } + interface HTMLIonInputOtpElement extends Components.IonInputOtp, HTMLStencilElement { + addEventListener(type: K, listener: (this: HTMLIonInputOtpElement, ev: IonInputOtpCustomEvent) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; + removeEventListener(type: K, listener: (this: HTMLIonInputOtpElement, ev: IonInputOtpCustomEvent) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; + } + var HTMLIonInputOtpElement: { + prototype: HTMLIonInputOtpElement; + new (): HTMLIonInputOtpElement; + }; interface HTMLIonInputPasswordToggleElement extends Components.IonInputPasswordToggle, HTMLStencilElement { } var HTMLIonInputPasswordToggleElement: { @@ -4792,6 +4862,7 @@ declare global { "ion-infinite-scroll": HTMLIonInfiniteScrollElement; "ion-infinite-scroll-content": HTMLIonInfiniteScrollContentElement; "ion-input": HTMLIonInputElement; + "ion-input-otp": HTMLIonInputOtpElement; "ion-input-password-toggle": HTMLIonInputPasswordToggleElement; "ion-item": HTMLIonItemElement; "ion-item-divider": HTMLIonItemDividerElement; @@ -6178,6 +6249,60 @@ declare namespace LocalJSX { */ "value"?: string | number | null; } + interface IonInputOtp { + /** + * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[0-9]" For text (type="text"): "[a-zA-Z0-9]" + */ + "allowedKeys"?: string; + /** + * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. + */ + "color"?: Color; + /** + * Whether the input is disabled + */ + "disabled"?: boolean; + /** + * The fill style of the input boxes + */ + "fill"?: 'solid' | 'outline'; + /** + * A hint to the browser for which keyboard to display. Possible values: `"none"`, `"text"`, `"tel"`, `"url"`, `"email"`, `"numeric"`, `"decimal"`, and `"search"`. For numbers (type="number"): "numeric" For text (type="text"): "text" + */ + "inputmode"?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; + /** + * The number of input boxes to display + */ + "length"?: number; + /** + * Emitted when the value changes + */ + "onIonChange"?: (event: IonInputOtpCustomEvent) => void; + /** + * Emitted when the input is complete (all boxes filled) + */ + "onIonComplete"?: (event: IonInputOtpCustomEvent) => void; + /** + * Where separators should be shown between input boxes. Can be a comma-separated string or an array of numbers. For example: "3" would show a separator after the 3rd input box. [1,4] would show a separator after the 1st and 4th input boxes. + */ + "separators"?: "all" | string | number[]; + /** + * The shape of the input boxes + */ + "shape"?: 'round' | 'rectangular' | 'soft'; + /** + * The size of the input boxes + */ + "size"?: 'small' | 'medium' | 'large'; + /** + * The type of input allowed in the boxes + */ + "type"?: 'text' | 'number'; + /** + * The value of the OTP input + */ + "value"?: string; + } interface IonInputPasswordToggle { /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). @@ -8309,6 +8434,7 @@ declare namespace LocalJSX { "ion-infinite-scroll": IonInfiniteScroll; "ion-infinite-scroll-content": IonInfiniteScrollContent; "ion-input": IonInput; + "ion-input-otp": IonInputOtp; "ion-input-password-toggle": IonInputPasswordToggle; "ion-item": IonItem; "ion-item-divider": IonItemDivider; @@ -8411,6 +8537,7 @@ declare module "@stencil/core" { "ion-infinite-scroll": LocalJSX.IonInfiniteScroll & JSXBase.HTMLAttributes; "ion-infinite-scroll-content": LocalJSX.IonInfiniteScrollContent & JSXBase.HTMLAttributes; "ion-input": LocalJSX.IonInput & JSXBase.HTMLAttributes; + "ion-input-otp": LocalJSX.IonInputOtp & JSXBase.HTMLAttributes; "ion-input-password-toggle": LocalJSX.IonInputPasswordToggle & JSXBase.HTMLAttributes; "ion-item": LocalJSX.IonItem & JSXBase.HTMLAttributes; "ion-item-divider": LocalJSX.IonItemDivider & JSXBase.HTMLAttributes; diff --git a/core/src/components/input-otp/input-otp.ios.scss b/core/src/components/input-otp/input-otp.ios.scss new file mode 100644 index 00000000000..1c174e90468 --- /dev/null +++ b/core/src/components/input-otp/input-otp.ios.scss @@ -0,0 +1,21 @@ +@import "./input-otp"; +@import "../../themes/ionic.globals.ios"; + +:host { + --border-width: 0.55px; +} + +.native-input { + -webkit-appearance: none; + + &:focus { + border-width: 1px; + } +} + +// States +// -------------------------------------------------- + +:host(.input-otp-disabled) { + opacity: $form-control-ios-disabled-opacity; +} diff --git a/core/src/components/input-otp/input-otp.md.scss b/core/src/components/input-otp/input-otp.md.scss new file mode 100644 index 00000000000..c55a00a3d88 --- /dev/null +++ b/core/src/components/input-otp/input-otp.md.scss @@ -0,0 +1,22 @@ +@import "./input-otp"; +@import "../../themes/ionic.globals.md"; + +:host { + --border-width: 1px; +} + +.native-input { + transition: border-color 150ms cubic-bezier(0.4, 0, 0.2, 1), + background-color 150ms cubic-bezier(0.4, 0, 0.2, 1); + + &:focus { + border-width: 2px; + } +} + +// States +// -------------------------------------------------- + +:host(.input-otp-disabled) { + opacity: $form-control-md-disabled-opacity; +} diff --git a/core/src/components/input-otp/input-otp.scss b/core/src/components/input-otp/input-otp.scss new file mode 100644 index 00000000000..a68d4e01275 --- /dev/null +++ b/core/src/components/input-otp/input-otp.scss @@ -0,0 +1,183 @@ +@import "../../themes/ionic.globals"; + +// Input OTP +// -------------------------------------------------- + +:host { + /** + * @prop --background: Background color of the input boxes + * @prop --background-focused: Background color when focused + * + * @prop --border-radius: Border radius of the input boxes + * + * @prop --border-width: Border width of the input boxes + * @prop --border-color: Border color of the input boxes + * @prop --border-color-focused: Border color when focused + * + * @prop --color: Text color of the input + * + * @prop --margin: Margin between input boxes + * @prop --padding: Padding within input boxes + * + * @prop --height: Height of input boxes + * @prop --width: Width of input boxes + * + * @prop --separator-color: Color of the separator between boxes + * @prop --separator-width: Width of the separator between boxes + * @prop --separator-height: Height of the separator between boxes + * + * @prop --highlight-color: Color used for the invalid state + */ + --margin: 8px; + --padding: 0; + --separator-width: 8px; + --separator-height: var(--separator-width); + --separator-border-radius: 999px; + --separator-color: #{$background-color-step-150}; + --background-focused: var(--background); + --border-color-focused: #{ion-color(primary, base, 0.4)}; + + display: block; + position: relative; +} + +.input-otp-group { + display: flex; + + align-items: center; + justify-content: center; +} + +.native-wrapper { + display: flex; + + align-items: center; + justify-content: center; +} + +.native-input { + @include border-radius(var(--border-radius)); + @include padding(var(--padding)); + @include margin(var(--margin)); + + width: var(--width); + height: var(--height); + + border: var(--border-width, 1px) solid var(--border-color, var(--ion-border-color)); + + background: var(--background, var(--ion-background-color)); + color: var(--color, var(--ion-text-color)); + + font-size: inherit; + + text-align: center; + appearance: none; +} + +.input-otp-description { + @include margin(8px, 0); + + color: $text-color-step-400; + + text-align: center; +} + +.input-otp-separator { + @include border-radius(var(--separator-border-radius)); + + width: var(--separator-width); + height: var(--separator-height); + + background: var(--separator-color); +} + +// Sizes +// -------------------------------------------------- + +:host(.input-otp-size-small) { + --width: 32px; + --height: 32px; + + font-size: 0.875em; +} + +:host(.input-otp-size-medium) { + --width: 40px; + --height: 40px; + + font-size: 1em; +} + +:host(.input-otp-size-large) { + --width: 48px; + --height: 48px; + + font-size: 1.125em; +} + +// Shapes +// -------------------------------------------------- + +:host(.input-otp-shape-round) { + --border-radius: 16px; +} + +:host(.input-otp-shape-soft) { + --border-radius: 8px; +} + +:host(.input-otp-shape-rectangular) { + --border-radius: 0; +} + +// Fills +// -------------------------------------------------- + +:host(.input-otp-fill-outline) { + --border-color: #{$background-color-step-350}; + --background: none; +} + +:host(.input-otp-fill-solid) { + --border-color: #{$background-color-step-100}; + --background: var(--border-color); +} + +// States +// -------------------------------------------------- + +:host(.input-otp-disabled), +:host(.input-otp-disabled) .native-input:disabled { + cursor: not-allowed; +} + +:host(.has-focus) .native-input:focus { + border-width: 2px; + border-color: var(--border-color-focused); + + outline: none; + + background: var(--background-focused); +} + +// Colors +// -------------------------------------------------- + +:host(.input-otp-fill-outline.ion-color) .native-input { + border-color: current-color(base, 0.3); +} + +:host(.input-otp-fill-outline.ion-color.has-focus) .native-input:focus { + border-color: current-color(base, 0.4); +} + +:host(.input-otp-fill-solid.ion-color) .native-input { + border-color: transparent; + + background: current-color(base, 0.08); + color: current-color(shade); +} + +:host(.input-otp-fill-solid.ion-color.has-focus) .native-input:focus { + border-color: current-color(base, 0.4); +} diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx new file mode 100644 index 00000000000..cd84cce05f8 --- /dev/null +++ b/core/src/components/input-otp/input-otp.tsx @@ -0,0 +1,395 @@ +import type { ComponentInterface, EventEmitter } from '@stencil/core'; +import { Component, Element, Event, Host, Prop, State, h, Watch } from '@stencil/core'; +import { createColorClasses } from '@utils/theme'; + +import { getIonMode } from '../../global/ionic-global'; +import type { Color } from '../../interface'; + +export interface InputOTPChangeEventDetail { + value: string; + complete: boolean; +} + +export interface InputOTPCompleteEventDetail { + value: string; +} + +export interface HTMLIonInputOTPElement extends HTMLElement { + value?: string; +} + +@Component({ + tag: 'ion-input-otp', + styleUrls: { + ios: 'input-otp.ios.scss', + md: 'input-otp.md.scss', + }, + scoped: true, +}) +export class InputOTP implements ComponentInterface { + private inputRefs: HTMLInputElement[] = []; + private inputId = `ion-input-otp-${inputIds++}`; + + @Element() el!: HTMLIonInputOTPElement; + + @State() private inputValues: string[] = []; + @State() hasFocus = false; + + /** + * The color to use from your application's color palette. + * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. + */ + @Prop({ reflect: true }) color?: Color; + + /** + * The number of input boxes to display + */ + @Prop() length = 4; + + /** + * The type of input allowed in the boxes + */ + @Prop() type: 'text' | 'number' = 'number'; + + /** + * A regex pattern string for allowed characters. Defaults based on type. + * + * For numbers (type="number"): "[0-9]" + * For text (type="text"): "[a-zA-Z0-9]" + */ + @Prop() allowedKeys?: string; + + /** + * A hint to the browser for which keyboard to display. + * Possible values: `"none"`, `"text"`, `"tel"`, `"url"`, + * `"email"`, `"numeric"`, `"decimal"`, and `"search"`. + * + * For numbers (type="number"): "numeric" + * For text (type="text"): "text" + */ + @Prop() inputmode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; + + /** + * The size of the input boxes + */ + @Prop() size: 'small' | 'medium' | 'large' = 'medium'; + + /** + * Where separators should be shown between input boxes. + * Can be a comma-separated string or an array of numbers. + * For example: + * "3" would show a separator after the 3rd input box. + * [1,4] would show a separator after the 1st and 4th input boxes. + */ + @Prop() separators?: "all" | string | number[]; + + /** + * The fill style of the input boxes + */ + @Prop() fill: 'solid' | 'outline' = 'outline'; + + /** + * The shape of the input boxes + */ + @Prop() shape: 'round' | 'rectangular' | 'soft' = 'round'; + + /** + * Whether the input is disabled + */ + @Prop({ reflect: true }) disabled = false; + + /** + * The value of the OTP input + */ + @Prop({ mutable: true }) value?: string = ''; + + /** + * Emitted when the value changes + */ + @Event() ionChange!: EventEmitter; + + /** + * Emitted when the input is complete (all boxes filled) + */ + @Event() ionComplete!: EventEmitter; + + @Watch('value') + valueChanged() { + this.initializeValues(); + } + + componentWillLoad() { + this.initializeValues(); + } + + private initializeValues() { + if (this.value && this.value.length > 0) { + const chars = this.value.split('').slice(0, this.length); + chars.forEach((char, index) => { + if (this.validKeys.test(char.toLowerCase())) { + this.inputValues[index] = char; + } + }); + // Update the value without emitting events + this.value = this.inputValues.join(''); + } + } + + /** + * Get the default allowed keys based on type if not explicitly set + */ + private get validKeys(): RegExp { + if (this.allowedKeys) { + // Create a regex that matches a single character from the provided pattern + return new RegExp(`^${this.allowedKeys}$`, 'i'); + } + return this.type === 'number' ? /^[0-9]$/ : /^[a-zA-Z0-9]$/i; + } + + /** + * Get the default value for inputmode based on type if not explicitly set + */ + private getInputmode(): string { + if (this.inputmode) { + return this.inputmode; + } + + if (this.type == 'number') { + return 'numeric'; + } else { + return 'text'; + } + } + + private updateValue() { + const newValue = this.inputValues.join(''); + this.value = newValue; + this.ionChange.emit({ + value: newValue, + complete: newValue.length === this.length, + }); + + if (newValue.length === this.length) { + this.ionComplete.emit({ value: newValue }); + } + } + + private handleInput(index: number, value: string) { + // Only allow input if it's a single character and matches the pattern + if (value.length > 1 || (value.length > 0 && !this.validKeys.test(value.toLowerCase()))) { + // Reset the input value if not valid + this.inputRefs[index].value = ''; + this.inputValues[index] = ''; + return; + } + + this.inputValues[index] = value; + + if (value.length > 0) { + this.focusNext(index); + } + this.updateValue(); + } + + private handleKeyDown(index: number, event: KeyboardEvent) { + if (event.key === 'Backspace') { + if (this.inputValues[index]) { + // If current input has a value, clear it + this.inputRefs[index].value = ''; + this.inputValues[index] = ''; + this.updateValue(); + } else if (index > 0) { + // If current input is empty, move to previous input and clear its value + this.focusPrevious(index); + this.inputRefs[index - 1].value = ''; + this.inputValues[index - 1] = ''; + this.updateValue(); + } + } else if (event.key === 'ArrowLeft') { + event.preventDefault(); + this.focusPrevious(index); + } else if (event.key === 'ArrowRight') { + event.preventDefault(); + // Only allow moving right if current box has a value + if (this.inputValues[index] && index < this.length - 1) { + this.focusNext(index); + } + } else if (event.key === 'Tab') { + // Let all tab events proceed normally + return; + } + } + + private handlePaste(event: ClipboardEvent) { + event.preventDefault(); + const pastedText = event.clipboardData?.getData('text') || ''; + const validChars = pastedText + .split('') + .filter((char) => this.validKeys.test(char.toLowerCase())) + .slice(0, this.length); + + // Find the currently focused input + const focusedIndex = this.inputRefs.findIndex((input) => input === document.activeElement); + const startIndex = focusedIndex >= 0 ? focusedIndex : 0; + + validChars.forEach((char, index) => { + const targetIndex = startIndex + index; + if (targetIndex < this.length) { + this.inputRefs[targetIndex].value = char; + this.inputValues[targetIndex] = char; + } + }); + + this.updateValue(); + + // Focus the next empty input after pasting + const nextEmptyIndex = startIndex + validChars.length; + if (nextEmptyIndex < this.length) { + this.inputRefs[nextEmptyIndex]?.focus(); + } + } + + private focusNext(currentIndex: number) { + if (currentIndex < this.length - 1) { + this.inputRefs[currentIndex + 1]?.focus(); + } + } + + private focusPrevious(currentIndex: number) { + if (currentIndex > 0) { + this.inputRefs[currentIndex - 1]?.focus(); + } + } + + private get parsedSeparators(): number[] { + if (this.separators === undefined) { + return []; + } + if (Array.isArray(this.separators)) { + return this.separators; + } + return this.separators + .split(',') + .map((pos) => parseInt(pos, 10)) + .filter((pos) => !isNaN(pos)); + } + + private showSeparator(index: number) { + if (this.separators === 'all') { + return index < this.length - 1; + } + return this.parsedSeparators.includes(index + 1) && index < this.length - 1; + } + + private handleFocus(index: number) { + this.hasFocus = true; + // When an input receives focus, make it the only tabbable element + this.inputRefs.forEach((input, i) => { + input.tabIndex = i === index ? 0 : -1; + }); + } + + private handleBlur(ev: FocusEvent) { + const relatedTarget = ev.relatedTarget as HTMLElement; + if (relatedTarget == null || !this.inputRefs.includes(relatedTarget as HTMLInputElement)) { + this.hasFocus = false; + // Reset tabIndexes when focus leaves the component + this.updateTabIndexes(); + } + } + + private updateTabIndexes() { + // Find first empty index after any filled boxes + let firstEmptyIndex = -1; + for (let i = 0; i < this.length; i++) { + if (!this.inputValues[i] || this.inputValues[i] === '') { + firstEmptyIndex = i; + break; + } + } + + // Update tabIndex for all inputs + this.inputRefs.forEach((input, index) => { + // If all boxes are filled, make the last box tabbable + // Otherwise, make the first empty box tabbable + const shouldBeTabbable = firstEmptyIndex === -1 ? index === this.length - 1 : firstEmptyIndex === index; + + input.tabIndex = shouldBeTabbable ? 0 : -1; + }); + } + + /** + * Loops through the input values and returns the index + * of the first empty input. + * Returns -1 if all inputs are filled. + */ + private getFirstEmptyIndex() { + for (let i = 0; i < this.length; i++) { + if (!this.inputValues[i] || this.inputValues[i] === '') { + return i; + } + } + return -1; + } + + /** + * Returns the index of the input that should be tabbed to. + * If all inputs are filled, returns the last input's index. + * Otherwise, returns the index of the first empty input. + */ + private getTabbableIndex() { + const firstEmptyIndex = this.getFirstEmptyIndex(); + return firstEmptyIndex === -1 ? this.length - 1 : firstEmptyIndex; + } + + render() { + const mode = getIonMode(this); + const tabbableIndex = this.getTabbableIndex(); + + return ( + +
+ {Array.from({ length: this.length }).map((_, index) => { + return ( +
+ (this.inputRefs[index] = el as HTMLInputElement)} + onInput={(e) => this.handleInput(index, (e.target as HTMLInputElement).value)} + onKeyDown={(e) => this.handleKeyDown(index, e)} + onPaste={(e) => this.handlePaste(e)} + onFocus={() => this.handleFocus(index)} + onBlur={(e) => this.handleBlur(e)} + /> + {this.showSeparator(index) &&
} +
+ ); + })} +
+
+ +
+ + ); + } +} + +let inputIds = 0; diff --git a/core/src/themes/ionic.theme.default.ios.scss b/core/src/themes/ionic.theme.default.ios.scss index b1bd8a0168c..673a5318910 100644 --- a/core/src/themes/ionic.theme.default.ios.scss +++ b/core/src/themes/ionic.theme.default.ios.scss @@ -7,6 +7,7 @@ // iOS General Colors // -------------------------------------------------- $backdrop-ios-color: var(--ion-backdrop-color, #000); +$border-ios-color: var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))); $overlay-ios-background-color: var(--ion-overlay-background-color, var(--ion-color-step-100, var(--ion-background-color-step-100, #f9f9f9))); // iOS Tabs & Tab bar diff --git a/packages/angular/src/directives/proxies-list.ts b/packages/angular/src/directives/proxies-list.ts index b61d09669ca..c6ea71c10c7 100644 --- a/packages/angular/src/directives/proxies-list.ts +++ b/packages/angular/src/directives/proxies-list.ts @@ -36,6 +36,7 @@ export const DIRECTIVES = [ d.IonInfiniteScroll, d.IonInfiniteScrollContent, d.IonInput, + d.IonInputOtp, d.IonInputPasswordToggle, d.IonItem, d.IonItemDivider, diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index 35b15c5f64f..0b13475afe3 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -1017,6 +1017,41 @@ This event will not emit when programmatically setting the `value` property. } +@ProxyCmp({ + inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'separators', 'shape', 'size', 'type', 'value'] +}) +@Component({ + selector: 'ion-input-otp', + changeDetection: ChangeDetectionStrategy.OnPush, + template: '', + // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property + inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'separators', 'shape', 'size', 'type', 'value'], +}) +export class IonInputOtp { + protected el: HTMLIonInputOtpElement; + constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { + c.detach(); + this.el = r.nativeElement; + proxyOutputs(this, this.el, ['ionChange', 'ionComplete']); + } +} + + +import type { InputOTPChangeEventDetail as IIonInputOtpInputOTPChangeEventDetail } from '@ionic/core'; +import type { InputOTPCompleteEventDetail as IIonInputOtpInputOTPCompleteEventDetail } from '@ionic/core'; + +export declare interface IonInputOtp extends Components.IonInputOtp { + /** + * Emitted when the value changes + */ + ionChange: EventEmitter>; + /** + * Emitted when the input is complete (all boxes filled) + */ + ionComplete: EventEmitter>; +} + + @ProxyCmp({ inputs: ['color', 'hideIcon', 'mode', 'showIcon'] }) diff --git a/packages/angular/standalone/src/directives/proxies.ts b/packages/angular/standalone/src/directives/proxies.ts index c7d111f7bef..2170007a692 100644 --- a/packages/angular/standalone/src/directives/proxies.ts +++ b/packages/angular/standalone/src/directives/proxies.ts @@ -36,6 +36,7 @@ import { defineCustomElement as defineIonHeader } from '@ionic/core/components/i import { defineCustomElement as defineIonImg } from '@ionic/core/components/ion-img.js'; import { defineCustomElement as defineIonInfiniteScroll } from '@ionic/core/components/ion-infinite-scroll.js'; import { defineCustomElement as defineIonInfiniteScrollContent } from '@ionic/core/components/ion-infinite-scroll-content.js'; +import { defineCustomElement as defineIonInputOtp } from '@ionic/core/components/ion-input-otp.js'; import { defineCustomElement as defineIonInputPasswordToggle } from '@ionic/core/components/ion-input-password-toggle.js'; import { defineCustomElement as defineIonItem } from '@ionic/core/components/ion-item.js'; import { defineCustomElement as defineIonItemDivider } from '@ionic/core/components/ion-item-divider.js'; @@ -981,6 +982,43 @@ export class IonInfiniteScrollContent { export declare interface IonInfiniteScrollContent extends Components.IonInfiniteScrollContent {} +@ProxyCmp({ + defineCustomElementFn: defineIonInputOtp, + inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'separators', 'shape', 'size', 'type', 'value'] +}) +@Component({ + selector: 'ion-input-otp', + changeDetection: ChangeDetectionStrategy.OnPush, + template: '', + // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property + inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'separators', 'shape', 'size', 'type', 'value'], + standalone: true +}) +export class IonInputOtp { + protected el: HTMLIonInputOtpElement; + constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { + c.detach(); + this.el = r.nativeElement; + proxyOutputs(this, this.el, ['ionChange', 'ionComplete']); + } +} + + +import type { InputOTPChangeEventDetail as IIonInputOtpInputOTPChangeEventDetail } from '@ionic/core/components'; +import type { InputOTPCompleteEventDetail as IIonInputOtpInputOTPCompleteEventDetail } from '@ionic/core/components'; + +export declare interface IonInputOtp extends Components.IonInputOtp { + /** + * Emitted when the value changes + */ + ionChange: EventEmitter>; + /** + * Emitted when the input is complete (all boxes filled) + */ + ionComplete: EventEmitter>; +} + + @ProxyCmp({ defineCustomElementFn: defineIonInputPasswordToggle, inputs: ['color', 'hideIcon', 'mode', 'showIcon'] diff --git a/packages/react/src/components/proxies.ts b/packages/react/src/components/proxies.ts index a9f1416ee22..7fa7626bbc4 100644 --- a/packages/react/src/components/proxies.ts +++ b/packages/react/src/components/proxies.ts @@ -31,6 +31,7 @@ import { defineCustomElement as defineIonImg } from '@ionic/core/components/ion- import { defineCustomElement as defineIonInfiniteScroll } from '@ionic/core/components/ion-infinite-scroll.js'; import { defineCustomElement as defineIonInfiniteScrollContent } from '@ionic/core/components/ion-infinite-scroll-content.js'; import { defineCustomElement as defineIonInput } from '@ionic/core/components/ion-input.js'; +import { defineCustomElement as defineIonInputOtp } from '@ionic/core/components/ion-input-otp.js'; import { defineCustomElement as defineIonInputPasswordToggle } from '@ionic/core/components/ion-input-password-toggle.js'; import { defineCustomElement as defineIonItemDivider } from '@ionic/core/components/ion-item-divider.js'; import { defineCustomElement as defineIonItemGroup } from '@ionic/core/components/ion-item-group.js'; @@ -103,6 +104,7 @@ export const IonImg = /*@__PURE__*/createReactComponent('ion-infinite-scroll', undefined, undefined, defineIonInfiniteScroll); export const IonInfiniteScrollContent = /*@__PURE__*/createReactComponent('ion-infinite-scroll-content', undefined, undefined, defineIonInfiniteScrollContent); export const IonInput = /*@__PURE__*/createReactComponent('ion-input', undefined, undefined, defineIonInput); +export const IonInputOtp = /*@__PURE__*/createReactComponent('ion-input-otp', undefined, undefined, defineIonInputOtp); export const IonInputPasswordToggle = /*@__PURE__*/createReactComponent('ion-input-password-toggle', undefined, undefined, defineIonInputPasswordToggle); export const IonItemDivider = /*@__PURE__*/createReactComponent('ion-item-divider', undefined, undefined, defineIonItemDivider); export const IonItemGroup = /*@__PURE__*/createReactComponent('ion-item-group', undefined, undefined, defineIonItemGroup); diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index 9cb1d0db162..408d31273ca 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -35,6 +35,7 @@ import { defineCustomElement as defineIonImg } from '@ionic/core/components/ion- import { defineCustomElement as defineIonInfiniteScroll } from '@ionic/core/components/ion-infinite-scroll.js'; import { defineCustomElement as defineIonInfiniteScrollContent } from '@ionic/core/components/ion-infinite-scroll-content.js'; import { defineCustomElement as defineIonInput } from '@ionic/core/components/ion-input.js'; +import { defineCustomElement as defineIonInputOtp } from '@ionic/core/components/ion-input-otp.js'; import { defineCustomElement as defineIonInputPasswordToggle } from '@ionic/core/components/ion-input-password-toggle.js'; import { defineCustomElement as defineIonItem } from '@ionic/core/components/ion-item.js'; import { defineCustomElement as defineIonItemDivider } from '@ionic/core/components/ion-item-divider.js'; @@ -491,6 +492,26 @@ export const IonInput: StencilVueComponent 'value', 'ion-input'); +export const IonInputOtp: StencilVueComponent = /*@__PURE__*/ defineContainer('ion-input-otp', defineIonInputOtp, [ + 'color', + 'length', + 'type', + 'allowedKeys', + 'inputmode', + 'size', + 'separators', + 'fill', + 'shape', + 'disabled', + 'value', + 'ionChange', + 'ionComplete' +], [ + 'ionChange', + 'ionComplete' +]); + + export const IonInputPasswordToggle: StencilVueComponent = /*@__PURE__*/ defineContainer('ion-input-password-toggle', defineIonInputPasswordToggle, [ 'color', 'showIcon', From 231b2b08365abff87182dc2265e37e2d086df12d Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 30 Apr 2025 17:26:47 -0400 Subject: [PATCH 02/81] test(input-otp): add tests for different props --- .../input-otp/test/basic/index.html | 64 ++++++++++ .../input-otp/test/color/index.html | 69 +++++++++++ .../input-otp/test/separators/index.html | 112 ++++++++++++++++++ .../input-otp/test/shape/index.html | 76 ++++++++++++ .../components/input-otp/test/size/index.html | 67 +++++++++++ 5 files changed, 388 insertions(+) create mode 100644 core/src/components/input-otp/test/basic/index.html create mode 100644 core/src/components/input-otp/test/color/index.html create mode 100644 core/src/components/input-otp/test/separators/index.html create mode 100644 core/src/components/input-otp/test/shape/index.html create mode 100644 core/src/components/input-otp/test/size/index.html diff --git a/core/src/components/input-otp/test/basic/index.html b/core/src/components/input-otp/test/basic/index.html new file mode 100644 index 00000000000..acfd10e8322 --- /dev/null +++ b/core/src/components/input-otp/test/basic/index.html @@ -0,0 +1,64 @@ + + + + + Input OTP - Basic + + + + + + + + + + + + + + + Input OTP - Basic + + + + +
+
+

Default

+ Didn't get a code? Resend the code + Didn't get a code? Resend the code + Didn't get a code? Resend the code + Didn't get a code? Resend the code +
+ +
+

Disabled

+ + +
+ +
+

Types

+ Numbers only + Letters and numbers + Custom Pattern: a-f and A-F +
+
+
+
+ + diff --git a/core/src/components/input-otp/test/color/index.html b/core/src/components/input-otp/test/color/index.html new file mode 100644 index 00000000000..10375a05ec7 --- /dev/null +++ b/core/src/components/input-otp/test/color/index.html @@ -0,0 +1,69 @@ + + + + + Input OTP - Color + + + + + + + + + + + + + + + Input OTP - Color + + + + +
+
+

Outline Colors

+ + + + + + + + + +
+ +
+

Solid Colors

+ + + + + + + + + +
+
+
+
+ + diff --git a/core/src/components/input-otp/test/separators/index.html b/core/src/components/input-otp/test/separators/index.html new file mode 100644 index 00000000000..aaf9af13970 --- /dev/null +++ b/core/src/components/input-otp/test/separators/index.html @@ -0,0 +1,112 @@ + + + + + Input OTP - Separators + + + + + + + + + + + + + + + Input OTP - Separators + + + + +
+
+

Separators (small)

+ + Enter your one-time password (numbers only) + + + Enter your one-time password (numbers only) + + + Enter your one-time password (numbers only) + + + Enter your one-time password (numbers only) + + + Enter your one-time password (numbers only) + + + Enter your one-time password (numbers only) + + +
+ +
+

Separators (medium)

+ + Enter your one-time password (numbers only) + + + Enter your one-time password (numbers only) + + + Enter your one-time password (numbers only) + + + Enter your one-time password (numbers only) + + + Enter your one-time password (numbers only) + + + Enter your one-time password (numbers only) + + +
+ +
+

Separators (large)

+ + Enter your one-time password (numbers only) + + + Enter your one-time password (numbers only) + + + Enter your one-time password (numbers only) + + + Enter your one-time password (numbers only) + + + Enter your one-time password (numbers only) + + + Enter your one-time password (numbers only) + + +
+
+
+
+ + diff --git a/core/src/components/input-otp/test/shape/index.html b/core/src/components/input-otp/test/shape/index.html new file mode 100644 index 00000000000..ee6fbd45655 --- /dev/null +++ b/core/src/components/input-otp/test/shape/index.html @@ -0,0 +1,76 @@ + + + + + Input OTP - Shape + + + + + + + + + + + + + + + Input OTP - Shape + + + + +
+
+

Default

+ + + + + + + +
+ +
+

Soft

+ + + + + + + +
+ +
+

Rectangular

+ + + + + + + +
+
+
+
+ + diff --git a/core/src/components/input-otp/test/size/index.html b/core/src/components/input-otp/test/size/index.html new file mode 100644 index 00000000000..a6a0926d257 --- /dev/null +++ b/core/src/components/input-otp/test/size/index.html @@ -0,0 +1,67 @@ + + + + + Input OTP - Size + + + + + + + + + + + + + + + Input OTP - Size + + + + +
+
+

Small

+ + + + +
+ +
+

Medium

+ + + + +
+ +
+

Large

+ + + + +
+
+
+
+ + From eb1a8d5f75e784cdd55f58ed8edae067a83be0d0 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 30 Apr 2025 17:48:39 -0400 Subject: [PATCH 03/81] fix(input-otp): fix styles for sizes, spaces and separators --- core/api.txt | 22 ++++-- core/src/components/input-otp/input-otp.scss | 71 ++++++++++++++++---- 2 files changed, 75 insertions(+), 18 deletions(-) diff --git a/core/api.txt b/core/api.txt index f3093e7d25e..afe9140f142 100644 --- a/core/api.txt +++ b/core/api.txt @@ -812,10 +812,24 @@ ion-input-otp,css-prop,--height,ios ion-input-otp,css-prop,--height,md ion-input-otp,css-prop,--highlight-color,ios ion-input-otp,css-prop,--highlight-color,md -ion-input-otp,css-prop,--margin,ios -ion-input-otp,css-prop,--margin,md -ion-input-otp,css-prop,--padding,ios -ion-input-otp,css-prop,--padding,md +ion-input-otp,css-prop,--margin-bottom,ios +ion-input-otp,css-prop,--margin-bottom,md +ion-input-otp,css-prop,--margin-end,ios +ion-input-otp,css-prop,--margin-end,md +ion-input-otp,css-prop,--margin-start,ios +ion-input-otp,css-prop,--margin-start,md +ion-input-otp,css-prop,--margin-top,ios +ion-input-otp,css-prop,--margin-top,md +ion-input-otp,css-prop,--min-width,ios +ion-input-otp,css-prop,--min-width,md +ion-input-otp,css-prop,--padding-bottom,ios +ion-input-otp,css-prop,--padding-bottom,md +ion-input-otp,css-prop,--padding-end,ios +ion-input-otp,css-prop,--padding-end,md +ion-input-otp,css-prop,--padding-start,ios +ion-input-otp,css-prop,--padding-start,md +ion-input-otp,css-prop,--padding-top,ios +ion-input-otp,css-prop,--padding-top,md ion-input-otp,css-prop,--separator-color,ios ion-input-otp,css-prop,--separator-color,md ion-input-otp,css-prop,--separator-height,ios diff --git a/core/src/components/input-otp/input-otp.scss b/core/src/components/input-otp/input-otp.scss index a68d4e01275..d27efe247d7 100644 --- a/core/src/components/input-otp/input-otp.scss +++ b/core/src/components/input-otp/input-otp.scss @@ -16,11 +16,19 @@ * * @prop --color: Text color of the input * - * @prop --margin: Margin between input boxes - * @prop --padding: Padding within input boxes + * @prop --margin-top: Top margin of the input group + * @prop --margin-end: Right margin if direction is left-to-right, and left margin if direction is right-to-left of the input group + * @prop --margin-bottom: Bottom margin of the input group + * @prop --margin-start: Left margin if direction is left-to-right, and right margin if direction is right-to-left of the input group + * + * @prop --padding-top: Top padding of the input boxes + * @prop --padding-end: Right padding if direction is left-to-right, and left padding if direction is right-to-left of the input boxes + * @prop --padding-bottom: Bottom padding of the input boxes + * @prop --padding-start: Left padding if direction is left-to-right, and right padding if direction is right-to-left of the input boxes * * @prop --height: Height of input boxes * @prop --width: Width of input boxes + * @prop --min-width: Minimum width of input boxes * * @prop --separator-color: Color of the separator between boxes * @prop --separator-width: Width of the separator between boxes @@ -28,8 +36,15 @@ * * @prop --highlight-color: Color used for the invalid state */ - --margin: 8px; - --padding: 0; + --margin-top: 16px; + --margin-end: 0; + --margin-bottom: 16px; + --margin-start: 0; + --padding-top: 0; + --padding-end: 0; + --padding-bottom: 0; + --padding-start: 0; + --min-width: 40px; --separator-width: 8px; --separator-height: var(--separator-width); --separator-border-radius: 999px; @@ -42,6 +57,8 @@ } .input-otp-group { + @include margin(var(--margin-top), var(--margin-end), var(--margin-bottom), var(--margin-start)); + display: flex; align-items: center; @@ -53,14 +70,18 @@ align-items: center; justify-content: center; + + min-width: var(--min-width); } .native-input { @include border-radius(var(--border-radius)); - @include padding(var(--padding)); - @include margin(var(--margin)); + @include padding(var(--padding-top), var(--padding-end), var(--padding-bottom), var(--padding-start)); width: var(--width); + + // Required to shrink the input box width + min-width: inherit; height: var(--height); border: var(--border-width, 1px) solid var(--border-color, var(--ion-border-color)); @@ -75,10 +96,13 @@ } .input-otp-description { - @include margin(8px, 0); - color: $text-color-step-400; + font-size: 12px; + font-weight: 500; + + line-height: 20px; + text-align: center; } @@ -95,26 +119,45 @@ // -------------------------------------------------- :host(.input-otp-size-small) { - --width: 32px; - --height: 32px; + --width: 40px; + --height: 40px; font-size: 0.875em; } +:host(.input-otp-size-small) .input-otp-group { + gap: 8px; +} + +:host(.input-otp-size-small) .input-otp-separator { + @include margin-horizontal(8px, null); +} + :host(.input-otp-size-medium) { - --width: 40px; - --height: 40px; + --width: 48px; + --height: 48px; font-size: 1em; } :host(.input-otp-size-large) { - --width: 48px; - --height: 48px; + --width: 56px; + --height: 56px; font-size: 1.125em; } +:host(.input-otp-size-medium) .input-otp-group, +:host(.input-otp-size-large) .input-otp-group { + gap: 12px; +} + +:host(.input-otp-size-medium) .input-otp-separator, +:host(.input-otp-size-large) .input-otp-separator { + @include margin-horizontal(12px, null); +} + + // Shapes // -------------------------------------------------- From ce38d95c704d2323c1089c8e96cb0e005045a407 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 30 Apr 2025 17:48:49 -0400 Subject: [PATCH 04/81] style: lint --- core/src/components.d.ts | 4 ++-- core/src/components/input-otp/input-otp.tsx | 4 ++-- .../components/input-otp/test/separators/index.html | 12 +++--------- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index bb232951695..69390ccdd7d 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1349,7 +1349,7 @@ export namespace Components { /** * Where separators should be shown between input boxes. Can be a comma-separated string or an array of numbers. For example: "3" would show a separator after the 3rd input box. [1,4] would show a separator after the 1st and 4th input boxes. */ - "separators"?: "all" | string | number[]; + "separators"?: 'all' | string | number[]; /** * The shape of the input boxes */ @@ -6285,7 +6285,7 @@ declare namespace LocalJSX { /** * Where separators should be shown between input boxes. Can be a comma-separated string or an array of numbers. For example: "3" would show a separator after the 3rd input box. [1,4] would show a separator after the 1st and 4th input boxes. */ - "separators"?: "all" | string | number[]; + "separators"?: 'all' | string | number[]; /** * The shape of the input boxes */ diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index cd84cce05f8..c6d002cfd76 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -81,7 +81,7 @@ export class InputOTP implements ComponentInterface { * "3" would show a separator after the 3rd input box. * [1,4] would show a separator after the 1st and 4th input boxes. */ - @Prop() separators?: "all" | string | number[]; + @Prop() separators?: 'all' | string | number[]; /** * The fill style of the input boxes @@ -371,7 +371,7 @@ export class InputOTP implements ComponentInterface { disabled={this.disabled} tabIndex={index === tabbableIndex ? 0 : -1} value={this.inputValues[index] || ''} - autocomplete={index === 0 ? "one-time-code" : "off"} + autocomplete={index === 0 ? 'one-time-code' : 'off'} ref={(el) => (this.inputRefs[index] = el as HTMLInputElement)} onInput={(e) => this.handleInput(index, (e.target as HTMLInputElement).value)} onKeyDown={(e) => this.handleKeyDown(index, e)} diff --git a/core/src/components/input-otp/test/separators/index.html b/core/src/components/input-otp/test/separators/index.html index aaf9af13970..8dfb7f9ffa2 100644 --- a/core/src/components/input-otp/test/separators/index.html +++ b/core/src/components/input-otp/test/separators/index.html @@ -39,9 +39,7 @@

Separators (small)

- - Enter your one-time password (numbers only) - + Enter your one-time password (numbers only) Enter your one-time password (numbers only) @@ -62,9 +60,7 @@

Separators (small)

Separators (medium)

- - Enter your one-time password (numbers only) - + Enter your one-time password (numbers only) Enter your one-time password (numbers only) @@ -85,9 +81,7 @@

Separators (medium)

Separators (large)

- - Enter your one-time password (numbers only) - + Enter your one-time password (numbers only) Enter your one-time password (numbers only) From ee6f29d7322b33018e6d487b22d222d1fb3a8ca1 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Thu, 1 May 2025 10:56:19 -0400 Subject: [PATCH 05/81] fix(input-otp): design fixes and invalid state --- core/api.txt | 2 ++ .../components/input-otp/input-otp.ios.scss | 3 ++ .../components/input-otp/input-otp.md.scss | 3 ++ core/src/components/input-otp/input-otp.scss | 30 ++++++++++++------- .../input-otp/test/basic/index.html | 6 ++++ .../components/input-otp/test/size/index.html | 24 +++++++-------- 6 files changed, 45 insertions(+), 23 deletions(-) diff --git a/core/api.txt b/core/api.txt index afe9140f142..3d01fa41a06 100644 --- a/core/api.txt +++ b/core/api.txt @@ -830,6 +830,8 @@ ion-input-otp,css-prop,--padding-start,ios ion-input-otp,css-prop,--padding-start,md ion-input-otp,css-prop,--padding-top,ios ion-input-otp,css-prop,--padding-top,md +ion-input-otp,css-prop,--separator-border-radius,ios +ion-input-otp,css-prop,--separator-border-radius,md ion-input-otp,css-prop,--separator-color,ios ion-input-otp,css-prop,--separator-color,md ion-input-otp,css-prop,--separator-height,ios diff --git a/core/src/components/input-otp/input-otp.ios.scss b/core/src/components/input-otp/input-otp.ios.scss index 1c174e90468..d620711b36e 100644 --- a/core/src/components/input-otp/input-otp.ios.scss +++ b/core/src/components/input-otp/input-otp.ios.scss @@ -1,6 +1,9 @@ @import "./input-otp"; @import "../../themes/ionic.globals.ios"; +// iOS Input OTP +// -------------------------------------------------- + :host { --border-width: 0.55px; } diff --git a/core/src/components/input-otp/input-otp.md.scss b/core/src/components/input-otp/input-otp.md.scss index c55a00a3d88..b668fddabf7 100644 --- a/core/src/components/input-otp/input-otp.md.scss +++ b/core/src/components/input-otp/input-otp.md.scss @@ -1,6 +1,9 @@ @import "./input-otp"; @import "../../themes/ionic.globals.md"; +// Material Design Input OTP +// -------------------------------------------------- + :host { --border-width: 1px; } diff --git a/core/src/components/input-otp/input-otp.scss b/core/src/components/input-otp/input-otp.scss index d27efe247d7..47dbf545b5c 100644 --- a/core/src/components/input-otp/input-otp.scss +++ b/core/src/components/input-otp/input-otp.scss @@ -21,10 +21,10 @@ * @prop --margin-bottom: Bottom margin of the input group * @prop --margin-start: Left margin if direction is left-to-right, and right margin if direction is right-to-left of the input group * - * @prop --padding-top: Top padding of the input boxes - * @prop --padding-end: Right padding if direction is left-to-right, and left padding if direction is right-to-left of the input boxes - * @prop --padding-bottom: Bottom padding of the input boxes - * @prop --padding-start: Left padding if direction is left-to-right, and right padding if direction is right-to-left of the input boxes + * @prop --padding-top: Top padding of the input group + * @prop --padding-end: Right padding if direction is left-to-right, and left padding if direction is right-to-left of the input group + * @prop --padding-bottom: Bottom padding of the input group + * @prop --padding-start: Left padding if direction is left-to-right, and right padding if direction is right-to-left of the input group * * @prop --height: Height of input boxes * @prop --width: Width of input boxes @@ -33,16 +33,17 @@ * @prop --separator-color: Color of the separator between boxes * @prop --separator-width: Width of the separator between boxes * @prop --separator-height: Height of the separator between boxes + * @prop --separator-border-radius: Border radius of the separator between boxes * - * @prop --highlight-color: Color used for the invalid state + * @prop --highlight-color-invalid: Color used for the invalid state */ - --margin-top: 16px; + --margin-top: 0; --margin-end: 0; - --margin-bottom: 16px; + --margin-bottom: 0; --margin-start: 0; - --padding-top: 0; + --padding-top: 16px; --padding-end: 0; - --padding-bottom: 0; + --padding-bottom: 16px; --padding-start: 0; --min-width: 40px; --separator-width: 8px; @@ -51,6 +52,7 @@ --separator-color: #{$background-color-step-150}; --background-focused: var(--background); --border-color-focused: #{ion-color(primary, base, 0.4)}; + --highlight-color-invalid: #{ion-color(danger, base)}; display: block; position: relative; @@ -58,6 +60,7 @@ .input-otp-group { @include margin(var(--margin-top), var(--margin-end), var(--margin-bottom), var(--margin-start)); + @include padding(var(--padding-top), var(--padding-end), var(--padding-bottom), var(--padding-start)); display: flex; @@ -76,7 +79,6 @@ .native-input { @include border-radius(var(--border-radius)); - @include padding(var(--padding-top), var(--padding-end), var(--padding-bottom), var(--padding-start)); width: var(--width); @@ -84,7 +86,9 @@ min-width: inherit; height: var(--height); - border: var(--border-width, 1px) solid var(--border-color, var(--ion-border-color)); + border-width: var(--border-width); + border-color: var(--border-color); + border-style: solid; background: var(--background, var(--ion-background-color)); color: var(--color, var(--ion-text-color)); @@ -203,6 +207,10 @@ background: var(--background-focused); } +:host(.ion-invalid) .native-input { + border-color: var(--highlight-color-invalid); +} + // Colors // -------------------------------------------------- diff --git a/core/src/components/input-otp/test/basic/index.html b/core/src/components/input-otp/test/basic/index.html index acfd10e8322..7c95268fe24 100644 --- a/core/src/components/input-otp/test/basic/index.html +++ b/core/src/components/input-otp/test/basic/index.html @@ -51,6 +51,12 @@

Disabled

+
+

Invalid

+ + +
+

Types

Numbers only diff --git a/core/src/components/input-otp/test/size/index.html b/core/src/components/input-otp/test/size/index.html index a6a0926d257..d085823c010 100644 --- a/core/src/components/input-otp/test/size/index.html +++ b/core/src/components/input-otp/test/size/index.html @@ -39,26 +39,26 @@

Small

- - - - + Description + Description + Description + Description

Medium

- - - - + Description + Description + Description + Description

Large

- - - - + Description + Description + Description + Description
From 2d0441c5f1eb94e1dd8a7d8a15286b9d920913a4 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Thu, 1 May 2025 12:53:10 -0400 Subject: [PATCH 06/81] fix(input-otp): update implementation to match input's more closely --- core/api.txt | 12 +-- core/src/components.d.ts | 56 ++++++------- .../input-otp/input-otp-interface.ts | 20 +++++ core/src/components/input-otp/input-otp.scss | 2 +- core/src/components/input-otp/input-otp.tsx | 80 +++++++++---------- .../input-otp/test/basic/index.html | 7 +- packages/angular/src/directives/proxies.ts | 8 +- .../standalone/src/directives/proxies.ts | 8 +- packages/vue/src/proxies.ts | 8 +- 9 files changed, 111 insertions(+), 90 deletions(-) create mode 100644 core/src/components/input-otp/input-otp-interface.ts diff --git a/core/api.txt b/core/api.txt index 3d01fa41a06..bd7a0a9bc5b 100644 --- a/core/api.txt +++ b/core/api.txt @@ -784,16 +784,16 @@ ion-input-otp,scoped ion-input-otp,prop,allowedKeys,string | undefined,undefined,false,false ion-input-otp,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record | undefined,undefined,false,true ion-input-otp,prop,disabled,boolean,false,false,true -ion-input-otp,prop,fill,"outline" | "solid",'outline',false,false +ion-input-otp,prop,fill,"outline" | "solid" | undefined,'outline',false,false ion-input-otp,prop,inputmode,"decimal" | "email" | "none" | "numeric" | "search" | "tel" | "text" | "url" | undefined,undefined,false,false ion-input-otp,prop,length,number,4,false,false ion-input-otp,prop,separators,number[] | string | undefined,undefined,false,false ion-input-otp,prop,shape,"rectangular" | "round" | "soft",'round',false,false ion-input-otp,prop,size,"large" | "medium" | "small",'medium',false,false ion-input-otp,prop,type,"number" | "text",'number',false,false -ion-input-otp,prop,value,string | undefined,'',false,false -ion-input-otp,event,ionChange,InputOTPChangeEventDetail,true -ion-input-otp,event,ionComplete,InputOTPCompleteEventDetail,true +ion-input-otp,prop,value,null | number | string | undefined,'',false,false +ion-input-otp,event,ionChange,InputOtpChangeEventDetail,true +ion-input-otp,event,ionComplete,InputOtpCompleteEventDetail,true ion-input-otp,css-prop,--background,ios ion-input-otp,css-prop,--background,md ion-input-otp,css-prop,--background-focused,ios @@ -810,8 +810,8 @@ ion-input-otp,css-prop,--color,ios ion-input-otp,css-prop,--color,md ion-input-otp,css-prop,--height,ios ion-input-otp,css-prop,--height,md -ion-input-otp,css-prop,--highlight-color,ios -ion-input-otp,css-prop,--highlight-color,md +ion-input-otp,css-prop,--highlight-color-invalid,ios +ion-input-otp,css-prop,--highlight-color-invalid,md ion-input-otp,css-prop,--margin-bottom,ios ion-input-otp,css-prop,--margin-bottom,md ion-input-otp,css-prop,--margin-end,ios diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 69390ccdd7d..572c4ccc06c 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -18,7 +18,7 @@ import { ScrollBaseDetail, ScrollDetail } from "./components/content/content-int import { DatetimeChangeEventDetail, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimePresentation, FormatOptions, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface"; import { SpinnerTypes } from "./components/spinner/spinner-configs"; import { InputChangeEventDetail, InputInputEventDetail } from "./components/input/input-interface"; -import { InputOTPChangeEventDetail, InputOTPCompleteEventDetail } from "./components/input-otp/input-otp"; +import { InputOtpChangeEventDetail, InputOtpCompleteEventDetail } from "./components/input-otp/input-otp-interface"; import { MenuChangeEventDetail, MenuCloseEventDetail, MenuType, Side } from "./components/menu/menu-interface"; import { ModalBreakpointChangeEventDetail, ModalHandleBehavior } from "./components/modal/modal-interface"; import { NavComponent, NavComponentWithProps, NavOptions, RouterOutletOptions, SwipeGestureHandler, TransitionDoneFn, TransitionInstruction } from "./components/nav/nav-interface"; @@ -56,7 +56,7 @@ export { ScrollBaseDetail, ScrollDetail } from "./components/content/content-int export { DatetimeChangeEventDetail, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimePresentation, FormatOptions, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface"; export { SpinnerTypes } from "./components/spinner/spinner-configs"; export { InputChangeEventDetail, InputInputEventDetail } from "./components/input/input-interface"; -export { InputOTPChangeEventDetail, InputOTPCompleteEventDetail } from "./components/input-otp/input-otp"; +export { InputOtpChangeEventDetail, InputOtpCompleteEventDetail } from "./components/input-otp/input-otp-interface"; export { MenuChangeEventDetail, MenuCloseEventDetail, MenuType, Side } from "./components/menu/menu-interface"; export { ModalBreakpointChangeEventDetail, ModalHandleBehavior } from "./components/modal/modal-interface"; export { NavComponent, NavComponentWithProps, NavOptions, RouterOutletOptions, SwipeGestureHandler, TransitionDoneFn, TransitionInstruction } from "./components/nav/nav-interface"; @@ -1327,45 +1327,45 @@ export namespace Components { */ "allowedKeys"?: string; /** - * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. + * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). */ "color"?: Color; /** - * Whether the input is disabled + * If `true`, the user cannot interact with the input. */ "disabled": boolean; /** - * The fill style of the input boxes + * The fill for the input boxes. If `"solid"` the input boxes will have a background. If `"outline"` the input boxes will be transparent with a border. */ - "fill": 'solid' | 'outline'; + "fill"?: 'outline' | 'solid'; /** * A hint to the browser for which keyboard to display. Possible values: `"none"`, `"text"`, `"tel"`, `"url"`, `"email"`, `"numeric"`, `"decimal"`, and `"search"`. For numbers (type="number"): "numeric" For text (type="text"): "text" */ "inputmode"?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; /** - * The number of input boxes to display + * The number of input boxes to display. */ "length": number; /** - * Where separators should be shown between input boxes. Can be a comma-separated string or an array of numbers. For example: "3" would show a separator after the 3rd input box. [1,4] would show a separator after the 1st and 4th input boxes. + * Where separators should be shown between input boxes. Can be a comma-separated string or an array of numbers. For example: `"3"` will show a separator after the 3rd input box. `[1,4]` will show a separator after the 1st and 4th input boxes. `"all"` will show a separator between every input box. */ "separators"?: 'all' | string | number[]; /** - * The shape of the input boxes + * The shape of the input boxes. If "round" they will have an increased border radius. If "rectangular" they will have no border radius. If "soft" they will have a soft border radius. */ "shape": 'round' | 'rectangular' | 'soft'; /** - * The size of the input boxes + * The size of the input boxes. */ "size": 'small' | 'medium' | 'large'; /** - * The type of input allowed in the boxes + * The type of input allowed in the input boxes. */ "type": 'text' | 'number'; /** - * The value of the OTP input + * The value of the OTP input. */ - "value"?: string; + "value"?: string | number | null; } interface IonInputPasswordToggle { /** @@ -3986,8 +3986,8 @@ declare global { new (): HTMLIonInputElement; }; interface HTMLIonInputOtpElementEventMap { - "ionChange": InputOTPChangeEventDetail; - "ionComplete": InputOTPCompleteEventDetail; + "ionChange": InputOtpChangeEventDetail; + "ionComplete": InputOtpCompleteEventDetail; } interface HTMLIonInputOtpElement extends Components.IonInputOtp, HTMLStencilElement { addEventListener(type: K, listener: (this: HTMLIonInputOtpElement, ev: IonInputOtpCustomEvent) => any, options?: boolean | AddEventListenerOptions): void; @@ -6255,53 +6255,53 @@ declare namespace LocalJSX { */ "allowedKeys"?: string; /** - * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. + * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). */ "color"?: Color; /** - * Whether the input is disabled + * If `true`, the user cannot interact with the input. */ "disabled"?: boolean; /** - * The fill style of the input boxes + * The fill for the input boxes. If `"solid"` the input boxes will have a background. If `"outline"` the input boxes will be transparent with a border. */ - "fill"?: 'solid' | 'outline'; + "fill"?: 'outline' | 'solid'; /** * A hint to the browser for which keyboard to display. Possible values: `"none"`, `"text"`, `"tel"`, `"url"`, `"email"`, `"numeric"`, `"decimal"`, and `"search"`. For numbers (type="number"): "numeric" For text (type="text"): "text" */ "inputmode"?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; /** - * The number of input boxes to display + * The number of input boxes to display. */ "length"?: number; /** * Emitted when the value changes */ - "onIonChange"?: (event: IonInputOtpCustomEvent) => void; + "onIonChange"?: (event: IonInputOtpCustomEvent) => void; /** * Emitted when the input is complete (all boxes filled) */ - "onIonComplete"?: (event: IonInputOtpCustomEvent) => void; + "onIonComplete"?: (event: IonInputOtpCustomEvent) => void; /** - * Where separators should be shown between input boxes. Can be a comma-separated string or an array of numbers. For example: "3" would show a separator after the 3rd input box. [1,4] would show a separator after the 1st and 4th input boxes. + * Where separators should be shown between input boxes. Can be a comma-separated string or an array of numbers. For example: `"3"` will show a separator after the 3rd input box. `[1,4]` will show a separator after the 1st and 4th input boxes. `"all"` will show a separator between every input box. */ "separators"?: 'all' | string | number[]; /** - * The shape of the input boxes + * The shape of the input boxes. If "round" they will have an increased border radius. If "rectangular" they will have no border radius. If "soft" they will have a soft border radius. */ "shape"?: 'round' | 'rectangular' | 'soft'; /** - * The size of the input boxes + * The size of the input boxes. */ "size"?: 'small' | 'medium' | 'large'; /** - * The type of input allowed in the boxes + * The type of input allowed in the input boxes. */ "type"?: 'text' | 'number'; /** - * The value of the OTP input + * The value of the OTP input. */ - "value"?: string; + "value"?: string | number | null; } interface IonInputPasswordToggle { /** diff --git a/core/src/components/input-otp/input-otp-interface.ts b/core/src/components/input-otp/input-otp-interface.ts new file mode 100644 index 00000000000..40c6aa1aa4c --- /dev/null +++ b/core/src/components/input-otp/input-otp-interface.ts @@ -0,0 +1,20 @@ +/** + * Values are converted to strings when emitted which is + * why we do not have a `number` type here even though the + * `value` prop accepts a `number` type. + */ +export interface InputOtpChangeEventDetail { + complete: boolean; + value: string | null; + event?: Event; +} + +export interface InputOtpCompleteEventDetail { + value?: string | null; + event?: Event; +} + +export interface InputOtpCustomEvent extends CustomEvent { + detail: T; + target: HTMLIonInputOtpElement; +} diff --git a/core/src/components/input-otp/input-otp.scss b/core/src/components/input-otp/input-otp.scss index 47dbf545b5c..1e1fa50696f 100644 --- a/core/src/components/input-otp/input-otp.scss +++ b/core/src/components/input-otp/input-otp.scss @@ -87,8 +87,8 @@ height: var(--height); border-width: var(--border-width); - border-color: var(--border-color); border-style: solid; + border-color: var(--border-color); background: var(--background, var(--ion-background-color)); color: var(--color, var(--ion-text-color)); diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index c6d002cfd76..746c10419d2 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -5,18 +5,7 @@ import { createColorClasses } from '@utils/theme'; import { getIonMode } from '../../global/ionic-global'; import type { Color } from '../../interface'; -export interface InputOTPChangeEventDetail { - value: string; - complete: boolean; -} - -export interface InputOTPCompleteEventDetail { - value: string; -} - -export interface HTMLIonInputOTPElement extends HTMLElement { - value?: string; -} +import type { InputOtpChangeEventDetail, InputOtpCompleteEventDetail } from './input-otp-interface'; @Component({ tag: 'ion-input-otp', @@ -30,7 +19,7 @@ export class InputOTP implements ComponentInterface { private inputRefs: HTMLInputElement[] = []; private inputId = `ion-input-otp-${inputIds++}`; - @Element() el!: HTMLIonInputOTPElement; + @Element() el!: HTMLIonInputOtpElement; @State() private inputValues: string[] = []; @State() hasFocus = false; @@ -38,26 +27,20 @@ export class InputOTP implements ComponentInterface { /** * The color to use from your application's color palette. * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. + * For more information on colors, see [theming](/docs/theming/basics). */ @Prop({ reflect: true }) color?: Color; /** - * The number of input boxes to display - */ - @Prop() length = 4; - - /** - * The type of input allowed in the boxes + * If `true`, the user cannot interact with the input. */ - @Prop() type: 'text' | 'number' = 'number'; + @Prop({ reflect: true }) disabled = false; /** - * A regex pattern string for allowed characters. Defaults based on type. - * - * For numbers (type="number"): "[0-9]" - * For text (type="text"): "[a-zA-Z0-9]" + * The fill for the input boxes. If `"solid"` the input boxes will have a background. If + * `"outline"` the input boxes will be transparent with a border. */ - @Prop() allowedKeys?: string; + @Prop() fill?: 'outline' | 'solid' = 'outline'; /** * A hint to the browser for which keyboard to display. @@ -70,48 +53,61 @@ export class InputOTP implements ComponentInterface { @Prop() inputmode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; /** - * The size of the input boxes + * The number of input boxes to display. + */ + @Prop() length = 4; + + /** + * A regex pattern string for allowed characters. Defaults based on type. + * + * For numbers (type="number"): "[0-9]" + * For text (type="text"): "[a-zA-Z0-9]" + */ + @Prop() allowedKeys?: string; + + /** + * The size of the input boxes. */ @Prop() size: 'small' | 'medium' | 'large' = 'medium'; /** * Where separators should be shown between input boxes. * Can be a comma-separated string or an array of numbers. + * * For example: - * "3" would show a separator after the 3rd input box. - * [1,4] would show a separator after the 1st and 4th input boxes. + * `"3"` will show a separator after the 3rd input box. + * `[1,4]` will show a separator after the 1st and 4th input boxes. + * `"all"` will show a separator between every input box. */ @Prop() separators?: 'all' | string | number[]; /** - * The fill style of the input boxes - */ - @Prop() fill: 'solid' | 'outline' = 'outline'; - - /** - * The shape of the input boxes + * The shape of the input boxes. + * If "round" they will have an increased border radius. + * If "rectangular" they will have no border radius. + * If "soft" they will have a soft border radius. */ @Prop() shape: 'round' | 'rectangular' | 'soft' = 'round'; /** - * Whether the input is disabled + * The type of input allowed in the input boxes. */ - @Prop({ reflect: true }) disabled = false; + @Prop() type: 'text' | 'number' = 'number'; /** - * The value of the OTP input + * The value of the OTP input. */ - @Prop({ mutable: true }) value?: string = ''; + @Prop({ mutable: true }) value?: string | number | null = ''; /** * Emitted when the value changes */ - @Event() ionChange!: EventEmitter; + @Event() ionChange!: EventEmitter; /** * Emitted when the input is complete (all boxes filled) */ - @Event() ionComplete!: EventEmitter; + @Event() ionComplete!: EventEmitter; @Watch('value') valueChanged() { @@ -123,8 +119,8 @@ export class InputOTP implements ComponentInterface { } private initializeValues() { - if (this.value && this.value.length > 0) { - const chars = this.value.split('').slice(0, this.length); + if (this.value != null && String(this.value).length > 0) { + const chars = String(this.value).split('').slice(0, this.length); chars.forEach((char, index) => { if (this.validKeys.test(char.toLowerCase())) { this.inputValues[index] = char; diff --git a/core/src/components/input-otp/test/basic/index.html b/core/src/components/input-otp/test/basic/index.html index 7c95268fe24..1647b4df201 100644 --- a/core/src/components/input-otp/test/basic/index.html +++ b/core/src/components/input-otp/test/basic/index.html @@ -41,7 +41,7 @@

Default

Didn't get a code? Resend the code Didn't get a code? Resend the code - Didn't get a code? Resend the code + Didn't get a code? Resend the code Didn't get a code? Resend the code
@@ -65,6 +65,11 @@

Types

+ + diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index 0b13475afe3..36ea467d3ad 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -1037,18 +1037,18 @@ export class IonInputOtp { } -import type { InputOTPChangeEventDetail as IIonInputOtpInputOTPChangeEventDetail } from '@ionic/core'; -import type { InputOTPCompleteEventDetail as IIonInputOtpInputOTPCompleteEventDetail } from '@ionic/core'; +import type { InputOtpChangeEventDetail as IIonInputOtpInputOtpChangeEventDetail } from '@ionic/core'; +import type { InputOtpCompleteEventDetail as IIonInputOtpInputOtpCompleteEventDetail } from '@ionic/core'; export declare interface IonInputOtp extends Components.IonInputOtp { /** * Emitted when the value changes */ - ionChange: EventEmitter>; + ionChange: EventEmitter>; /** * Emitted when the input is complete (all boxes filled) */ - ionComplete: EventEmitter>; + ionComplete: EventEmitter>; } diff --git a/packages/angular/standalone/src/directives/proxies.ts b/packages/angular/standalone/src/directives/proxies.ts index 2170007a692..83330a2b314 100644 --- a/packages/angular/standalone/src/directives/proxies.ts +++ b/packages/angular/standalone/src/directives/proxies.ts @@ -1004,18 +1004,18 @@ export class IonInputOtp { } -import type { InputOTPChangeEventDetail as IIonInputOtpInputOTPChangeEventDetail } from '@ionic/core/components'; -import type { InputOTPCompleteEventDetail as IIonInputOtpInputOTPCompleteEventDetail } from '@ionic/core/components'; +import type { InputOtpChangeEventDetail as IIonInputOtpInputOtpChangeEventDetail } from '@ionic/core/components'; +import type { InputOtpCompleteEventDetail as IIonInputOtpInputOtpCompleteEventDetail } from '@ionic/core/components'; export declare interface IonInputOtp extends Components.IonInputOtp { /** * Emitted when the value changes */ - ionChange: EventEmitter>; + ionChange: EventEmitter>; /** * Emitted when the input is complete (all boxes filled) */ - ionComplete: EventEmitter>; + ionComplete: EventEmitter>; } diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index 408d31273ca..b7bb328fe90 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -494,15 +494,15 @@ export const IonInput: StencilVueComponent export const IonInputOtp: StencilVueComponent = /*@__PURE__*/ defineContainer('ion-input-otp', defineIonInputOtp, [ 'color', + 'disabled', + 'fill', + 'inputmode', 'length', - 'type', 'allowedKeys', - 'inputmode', 'size', 'separators', - 'fill', 'shape', - 'disabled', + 'type', 'value', 'ionChange', 'ionComplete' From 521487871dfd5c18cf84ab63d2bf5612af557573 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Thu, 1 May 2025 13:32:42 -0400 Subject: [PATCH 07/81] feat(input-otp): add readonly support --- core/src/components.d.ts | 8 +++++ .../components/input-otp/input-otp.ios.scss | 7 ---- .../components/input-otp/input-otp.md.scss | 6 ---- core/src/components/input-otp/input-otp.scss | 19 ++++++++-- core/src/components/input-otp/input-otp.tsx | 7 ++++ .../input-otp/test/basic/index.html | 18 +++++++--- .../input-otp/test/color/index.html | 36 +++++++++---------- packages/angular/src/directives/proxies.ts | 4 +-- .../standalone/src/directives/proxies.ts | 4 +-- packages/vue/src/proxies.ts | 1 + 10 files changed, 68 insertions(+), 42 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 572c4ccc06c..c5b97e23b87 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1346,6 +1346,10 @@ export namespace Components { * The number of input boxes to display. */ "length": number; + /** + * If `true`, the user cannot modify the value. + */ + "readonly": boolean; /** * Where separators should be shown between input boxes. Can be a comma-separated string or an array of numbers. For example: `"3"` will show a separator after the 3rd input box. `[1,4]` will show a separator after the 1st and 4th input boxes. `"all"` will show a separator between every input box. */ @@ -6282,6 +6286,10 @@ declare namespace LocalJSX { * Emitted when the input is complete (all boxes filled) */ "onIonComplete"?: (event: IonInputOtpCustomEvent) => void; + /** + * If `true`, the user cannot modify the value. + */ + "readonly"?: boolean; /** * Where separators should be shown between input boxes. Can be a comma-separated string or an array of numbers. For example: `"3"` will show a separator after the 3rd input box. `[1,4]` will show a separator after the 1st and 4th input boxes. `"all"` will show a separator between every input box. */ diff --git a/core/src/components/input-otp/input-otp.ios.scss b/core/src/components/input-otp/input-otp.ios.scss index d620711b36e..70414276957 100644 --- a/core/src/components/input-otp/input-otp.ios.scss +++ b/core/src/components/input-otp/input-otp.ios.scss @@ -15,10 +15,3 @@ border-width: 1px; } } - -// States -// -------------------------------------------------- - -:host(.input-otp-disabled) { - opacity: $form-control-ios-disabled-opacity; -} diff --git a/core/src/components/input-otp/input-otp.md.scss b/core/src/components/input-otp/input-otp.md.scss index b668fddabf7..05ddea9a4e5 100644 --- a/core/src/components/input-otp/input-otp.md.scss +++ b/core/src/components/input-otp/input-otp.md.scss @@ -17,9 +17,3 @@ } } -// States -// -------------------------------------------------- - -:host(.input-otp-disabled) { - opacity: $form-control-md-disabled-opacity; -} diff --git a/core/src/components/input-otp/input-otp.scss b/core/src/components/input-otp/input-otp.scss index 1e1fa50696f..23b3278cd45 100644 --- a/core/src/components/input-otp/input-otp.scss +++ b/core/src/components/input-otp/input-otp.scss @@ -186,13 +186,18 @@ } :host(.input-otp-fill-solid) { - --border-color: #{$background-color-step-100}; + --border-color: #{$background-color-step-50}; --background: var(--border-color); } // States // -------------------------------------------------- +:host(.input-otp-fill-outline.input-otp-disabled) { + --background: #{$background-color-step-50}; + --border-color: #{$background-color-step-100}; +} + :host(.input-otp-disabled), :host(.input-otp-disabled) .native-input:disabled { cursor: not-allowed; @@ -207,10 +212,20 @@ background: var(--background-focused); } -:host(.ion-invalid) .native-input { +:host(.ion-invalid) .native-input, +:host(.ion-invalid.has-focus) .native-input { border-color: var(--highlight-color-invalid); } +:host(.input-otp-fill-outline.input-otp-readonly) { + --background: #{$background-color-step-50}; +} + +:host(.input-otp-fill-solid.input-otp-disabled), +:host(.input-otp-fill-solid.input-otp-readonly) { + --border-color: #{$background-color-step-100}; +} + // Colors // -------------------------------------------------- diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 746c10419d2..c7ea2b11583 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -65,6 +65,11 @@ export class InputOTP implements ComponentInterface { */ @Prop() allowedKeys?: string; + /** + * If `true`, the user cannot modify the value. + */ + @Prop({ reflect: true }) readonly = false; + /** * The size of the input boxes. */ @@ -351,6 +356,7 @@ export class InputOTP implements ComponentInterface { [`input-otp-shape-${this.shape}`]: true, [`input-otp-fill-${this.fill}`]: true, 'input-otp-disabled': this.disabled, + 'input-otp-readonly': this.readonly, })} >
@@ -365,6 +371,7 @@ export class InputOTP implements ComponentInterface { maxLength={1} pattern={this.type === 'number' ? '[0-9]' : undefined} disabled={this.disabled} + readOnly={this.readonly} tabIndex={index === tabbableIndex ? 0 : -1} value={this.inputValues[index] || ''} autocomplete={index === 0 ? 'one-time-code' : 'off'} diff --git a/core/src/components/input-otp/test/basic/index.html b/core/src/components/input-otp/test/basic/index.html index 1647b4df201..a58778cf569 100644 --- a/core/src/components/input-otp/test/basic/index.html +++ b/core/src/components/input-otp/test/basic/index.html @@ -41,20 +41,28 @@

Default

Didn't get a code? Resend the code Didn't get a code? Resend the code - Didn't get a code? Resend the code + + Didn't get a code? Resend the code + Didn't get a code? Resend the code

Disabled

- - + Description + Description +
+ +
+

Readonly

+ Description + Description

Invalid

- - + Description + Description
diff --git a/core/src/components/input-otp/test/color/index.html b/core/src/components/input-otp/test/color/index.html index 10375a05ec7..4e1dd974fc7 100644 --- a/core/src/components/input-otp/test/color/index.html +++ b/core/src/components/input-otp/test/color/index.html @@ -39,28 +39,28 @@

Outline Colors

- - - - - - - - - + + + + + + + + +

Solid Colors

- - - - - - - - - + + + + + + + + +
diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index 36ea467d3ad..0ddc9b58c77 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -1018,14 +1018,14 @@ This event will not emit when programmatically setting the `value` property. @ProxyCmp({ - inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'separators', 'shape', 'size', 'type', 'value'] + inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'readonly', 'separators', 'shape', 'size', 'type', 'value'] }) @Component({ selector: 'ion-input-otp', changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'separators', 'shape', 'size', 'type', 'value'], + inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], }) export class IonInputOtp { protected el: HTMLIonInputOtpElement; diff --git a/packages/angular/standalone/src/directives/proxies.ts b/packages/angular/standalone/src/directives/proxies.ts index 83330a2b314..fd5390d68d5 100644 --- a/packages/angular/standalone/src/directives/proxies.ts +++ b/packages/angular/standalone/src/directives/proxies.ts @@ -984,14 +984,14 @@ export declare interface IonInfiniteScrollContent extends Components.IonInfinite @ProxyCmp({ defineCustomElementFn: defineIonInputOtp, - inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'separators', 'shape', 'size', 'type', 'value'] + inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'readonly', 'separators', 'shape', 'size', 'type', 'value'] }) @Component({ selector: 'ion-input-otp', changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'separators', 'shape', 'size', 'type', 'value'], + inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], standalone: true }) export class IonInputOtp { diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index b7bb328fe90..5ee116d029f 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -499,6 +499,7 @@ export const IonInputOtp: StencilVueComponent = /*@__PURE__*/ d 'inputmode', 'length', 'allowedKeys', + 'readonly', 'size', 'separators', 'shape', From 30eed51544477aa0857f205cd3bb945215eebe54 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Thu, 1 May 2025 13:56:33 -0400 Subject: [PATCH 08/81] feat(input-otp): support disabled and readonly colors --- core/src/components/input-otp/input-otp.scss | 12 ++++++++++- .../input-otp/test/color/index.html | 20 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/core/src/components/input-otp/input-otp.scss b/core/src/components/input-otp/input-otp.scss index 23b3278cd45..991b604119e 100644 --- a/core/src/components/input-otp/input-otp.scss +++ b/core/src/components/input-otp/input-otp.scss @@ -241,9 +241,19 @@ border-color: transparent; background: current-color(base, 0.08); - color: current-color(shade); } :host(.input-otp-fill-solid.ion-color.has-focus) .native-input:focus { border-color: current-color(base, 0.4); } + +// Outline & Disabled +:host(.input-otp-fill-outline.input-otp-disabled.ion-color) .native-input { + border-color: current-color(base, 0.1); +} + +// Solid & Disabled/Readonly +:host(.input-otp-fill-solid.input-otp-disabled.ion-color) .native-input, +:host(.input-otp-fill-solid.input-otp-readonly.ion-color) .native-input { + background: current-color(base, 0.16); +} diff --git a/core/src/components/input-otp/test/color/index.html b/core/src/components/input-otp/test/color/index.html index 4e1dd974fc7..086ddb703ed 100644 --- a/core/src/components/input-otp/test/color/index.html +++ b/core/src/components/input-otp/test/color/index.html @@ -62,6 +62,26 @@

Solid Colors

+ +
+

Disabled

+ Outline + Outline + Outline + Solid + Solid + Solid +
+ +
+

Readonly

+ Outline + Outline + Outline + Solid + Solid + Solid +
From 46e69c8dfe264dd98f954c40530e6f7a3e87f6fc Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Thu, 1 May 2025 14:55:21 -0400 Subject: [PATCH 09/81] fix(input-otp): resolve a11y error with input labels --- core/src/components/input-otp/input-otp.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index c7ea2b11583..83ff9833d6e 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -366,6 +366,7 @@ export class InputOTP implements ComponentInterface { Date: Thu, 1 May 2025 15:59:44 -0400 Subject: [PATCH 10/81] refactor(input-otp): clean up and build --- core/api.txt | 1 + core/src/components/input-otp/input-otp.tsx | 123 ++++++++++++-------- 2 files changed, 74 insertions(+), 50 deletions(-) diff --git a/core/api.txt b/core/api.txt index bd7a0a9bc5b..bea2075e576 100644 --- a/core/api.txt +++ b/core/api.txt @@ -787,6 +787,7 @@ ion-input-otp,prop,disabled,boolean,false,false,true ion-input-otp,prop,fill,"outline" | "solid" | undefined,'outline',false,false ion-input-otp,prop,inputmode,"decimal" | "email" | "none" | "numeric" | "search" | "tel" | "text" | "url" | undefined,undefined,false,false ion-input-otp,prop,length,number,4,false,false +ion-input-otp,prop,readonly,boolean,false,false,true ion-input-otp,prop,separators,number[] | string | undefined,undefined,false,false ion-input-otp,prop,shape,"rectangular" | "round" | "soft",'round',false,false ion-input-otp,prop,size,"large" | "medium" | "small",'medium',false,false diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 83ff9833d6e..11981ac9375 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -140,19 +140,22 @@ export class InputOTP implements ComponentInterface { * Get the default allowed keys based on type if not explicitly set */ private get validKeys(): RegExp { - if (this.allowedKeys) { + const { allowedKeys, type } = this; + + if (allowedKeys) { // Create a regex that matches a single character from the provided pattern - return new RegExp(`^${this.allowedKeys}$`, 'i'); + return new RegExp(`^${allowedKeys}$`, 'i'); } - return this.type === 'number' ? /^[0-9]$/ : /^[a-zA-Z0-9]$/i; + return type === 'number' ? /^[0-9]$/ : /^[a-zA-Z0-9]$/i; } /** * Get the default value for inputmode based on type if not explicitly set */ private getInputmode(): string { - if (this.inputmode) { - return this.inputmode; + const { inputmode } = this; + if (inputmode) { + return inputmode; } if (this.type == 'number') { @@ -163,21 +166,24 @@ export class InputOTP implements ComponentInterface { } private updateValue() { - const newValue = this.inputValues.join(''); + const { inputValues, length } = this; + const newValue = inputValues.join(''); this.value = newValue; this.ionChange.emit({ value: newValue, - complete: newValue.length === this.length, + complete: newValue.length === length, }); - if (newValue.length === this.length) { + if (newValue.length === length) { this.ionComplete.emit({ value: newValue }); } } private handleInput(index: number, value: string) { + const { validKeys } = this; + // Only allow input if it's a single character and matches the pattern - if (value.length > 1 || (value.length > 0 && !this.validKeys.test(value.toLowerCase()))) { + if (value.length > 1 || (value.length > 0 && !validKeys.test(value.toLowerCase()))) { // Reset the input value if not valid this.inputRefs[index].value = ''; this.inputValues[index] = ''; @@ -193,6 +199,8 @@ export class InputOTP implements ComponentInterface { } private handleKeyDown(index: number, event: KeyboardEvent) { + const { length } = this; + if (event.key === 'Backspace') { if (this.inputValues[index]) { // If current input has a value, clear it @@ -212,7 +220,7 @@ export class InputOTP implements ComponentInterface { } else if (event.key === 'ArrowRight') { event.preventDefault(); // Only allow moving right if current box has a value - if (this.inputValues[index] && index < this.length - 1) { + if (this.inputValues[index] && index < length - 1) { this.focusNext(index); } } else if (event.key === 'Tab') { @@ -222,20 +230,22 @@ export class InputOTP implements ComponentInterface { } private handlePaste(event: ClipboardEvent) { + const { inputRefs, length, validKeys } = this; + event.preventDefault(); const pastedText = event.clipboardData?.getData('text') || ''; const validChars = pastedText .split('') - .filter((char) => this.validKeys.test(char.toLowerCase())) - .slice(0, this.length); + .filter((char) => validKeys.test(char.toLowerCase())) + .slice(0, length); // Find the currently focused input - const focusedIndex = this.inputRefs.findIndex((input) => input === document.activeElement); + const focusedIndex = inputRefs.findIndex((input) => input === document.activeElement); const startIndex = focusedIndex >= 0 ? focusedIndex : 0; validChars.forEach((char, index) => { const targetIndex = startIndex + index; - if (targetIndex < this.length) { + if (targetIndex < length) { this.inputRefs[targetIndex].value = char; this.inputValues[targetIndex] = char; } @@ -245,54 +255,60 @@ export class InputOTP implements ComponentInterface { // Focus the next empty input after pasting const nextEmptyIndex = startIndex + validChars.length; - if (nextEmptyIndex < this.length) { - this.inputRefs[nextEmptyIndex]?.focus(); + if (nextEmptyIndex < length) { + inputRefs[nextEmptyIndex]?.focus(); } } private focusNext(currentIndex: number) { - if (currentIndex < this.length - 1) { - this.inputRefs[currentIndex + 1]?.focus(); + const { inputRefs, length } = this; + if (currentIndex < length - 1) { + inputRefs[currentIndex + 1]?.focus(); } } private focusPrevious(currentIndex: number) { + const { inputRefs } = this; if (currentIndex > 0) { - this.inputRefs[currentIndex - 1]?.focus(); + inputRefs[currentIndex - 1]?.focus(); } } private get parsedSeparators(): number[] { - if (this.separators === undefined) { + const { separators } = this; + if (separators === undefined) { return []; } - if (Array.isArray(this.separators)) { - return this.separators; + if (Array.isArray(separators)) { + return separators; } - return this.separators + return separators .split(',') .map((pos) => parseInt(pos, 10)) .filter((pos) => !isNaN(pos)); } private showSeparator(index: number) { - if (this.separators === 'all') { - return index < this.length - 1; + const { length, separators } = this; + if (separators === 'all') { + return index < length - 1; } - return this.parsedSeparators.includes(index + 1) && index < this.length - 1; + return this.parsedSeparators.includes(index + 1) && index < length - 1; } private handleFocus(index: number) { + const { inputRefs } = this; this.hasFocus = true; // When an input receives focus, make it the only tabbable element - this.inputRefs.forEach((input, i) => { + inputRefs.forEach((input, i) => { input.tabIndex = i === index ? 0 : -1; }); } private handleBlur(ev: FocusEvent) { + const { inputRefs } = this; const relatedTarget = ev.relatedTarget as HTMLElement; - if (relatedTarget == null || !this.inputRefs.includes(relatedTarget as HTMLInputElement)) { + if (relatedTarget == null || !inputRefs.includes(relatedTarget as HTMLInputElement)) { this.hasFocus = false; // Reset tabIndexes when focus leaves the component this.updateTabIndexes(); @@ -300,20 +316,22 @@ export class InputOTP implements ComponentInterface { } private updateTabIndexes() { + const { inputRefs, inputValues, length } = this; + // Find first empty index after any filled boxes let firstEmptyIndex = -1; - for (let i = 0; i < this.length; i++) { - if (!this.inputValues[i] || this.inputValues[i] === '') { + for (let i = 0; i < length; i++) { + if (!inputValues[i] || inputValues[i] === '') { firstEmptyIndex = i; break; } } // Update tabIndex for all inputs - this.inputRefs.forEach((input, index) => { + inputRefs.forEach((input, index) => { // If all boxes are filled, make the last box tabbable // Otherwise, make the first empty box tabbable - const shouldBeTabbable = firstEmptyIndex === -1 ? index === this.length - 1 : firstEmptyIndex === index; + const shouldBeTabbable = firstEmptyIndex === -1 ? index === length - 1 : firstEmptyIndex === index; input.tabIndex = shouldBeTabbable ? 0 : -1; }); @@ -325,8 +343,10 @@ export class InputOTP implements ComponentInterface { * Returns -1 if all inputs are filled. */ private getFirstEmptyIndex() { - for (let i = 0; i < this.length; i++) { - if (!this.inputValues[i] || this.inputValues[i] === '') { + const { inputValues, length } = this; + + for (let i = 0; i < length; i++) { + if (!inputValues[i] || inputValues[i] === '') { return i; } } @@ -339,44 +359,47 @@ export class InputOTP implements ComponentInterface { * Otherwise, returns the index of the first empty input. */ private getTabbableIndex() { + const { length } = this; const firstEmptyIndex = this.getFirstEmptyIndex(); - return firstEmptyIndex === -1 ? this.length - 1 : firstEmptyIndex; + return firstEmptyIndex === -1 ? length - 1 : firstEmptyIndex; } render() { + const { color, disabled, fill, hasFocus, inputId, inputRefs, inputValues, length, readonly, shape, size, type } = this; const mode = getIonMode(this); + const inputmode = this.getInputmode(); const tabbableIndex = this.getTabbableIndex(); return (
- {Array.from({ length: this.length }).map((_, index) => { + {Array.from({ length }).map((_, index) => { return (
(this.inputRefs[index] = el as HTMLInputElement)} + ref={(el) => (inputRefs[index] = el as HTMLInputElement)} onInput={(e) => this.handleInput(index, (e.target as HTMLInputElement).value)} onKeyDown={(e) => this.handleKeyDown(index, e)} onPaste={(e) => this.handlePaste(e)} From fcb8e1d211f711402d135b8b23c6e2447ff874ec Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Fri, 2 May 2025 16:53:47 -0400 Subject: [PATCH 11/81] test(input-otp): add tests for basic, color, fill, separators, shape, size --- .../input-otp/test/basic/input-otp.e2e.ts | 220 ++++++++++++++++++ .../input-otp/test/color/input-otp.e2e.ts | 73 ++++++ .../input-otp/test/fill/input-otp.e2e.ts | 42 ++++ .../test/separators/input-otp.e2e.ts | 45 ++++ .../input-otp/test/shape/input-otp.e2e.ts | 23 ++ .../input-otp/test/size/input-otp.e2e.ts | 31 +++ 6 files changed, 434 insertions(+) create mode 100644 core/src/components/input-otp/test/basic/input-otp.e2e.ts create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts new file mode 100644 index 00000000000..4f2e36f06af --- /dev/null +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -0,0 +1,220 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +/** + * Functionality is the same across modes & directions + */ +configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('input-otp: basic functionality'), () => { + test('should render with 4 input boxes and a default value', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const inputBoxes = page.locator('ion-input-otp input'); + await expect(inputBoxes).toHaveCount(4); + + await expect(inputBoxes.nth(0)).toHaveValue('1'); + await expect(inputBoxes.nth(1)).toHaveValue('2'); + + const inputOtp = page.locator('ion-input-otp'); + await expect(inputOtp).toHaveAttribute('value', '12'); + }); + + test('should render with 8 input boxes when length is set to 8 and a default value', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const inputBoxes = page.locator('ion-input-otp input'); + await expect(inputBoxes).toHaveCount(8); + + await expect(inputBoxes.nth(0)).toHaveValue('1'); + await expect(inputBoxes.nth(1)).toHaveValue('2'); + await expect(inputBoxes.nth(2)).toHaveValue('3'); + await expect(inputBoxes.nth(3)).toHaveValue('4'); + await expect(inputBoxes.nth(4)).toHaveValue('5'); + await expect(inputBoxes.nth(5)).toHaveValue('6'); + await expect(inputBoxes.nth(6)).toHaveValue('7'); + await expect(inputBoxes.nth(7)).toHaveValue('8'); + + const inputOtp = page.locator('ion-input-otp'); + await expect(inputOtp).toHaveAttribute('value', '12345678'); + }); + + test('should accept numbers only by default', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('A2e468'); + + const inputBoxes = page.locator('ion-input-otp input'); + await expect(inputBoxes.nth(0)).toHaveValue('2'); + await expect(inputBoxes.nth(1)).toHaveValue('4'); + await expect(inputBoxes.nth(2)).toHaveValue('6'); + await expect(inputBoxes.nth(3)).toHaveValue('8'); + }); + + test('should accept text and numbers when type is set to text', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('A2-B5'); + + const inputBoxes = page.locator('ion-input-otp input'); + await expect(inputBoxes.nth(0)).toHaveValue('A'); + await expect(inputBoxes.nth(1)).toHaveValue('2'); + await expect(inputBoxes.nth(2)).toHaveValue('B'); + await expect(inputBoxes.nth(3)).toHaveValue('5'); + }); + + test('should accept custom pattern when allowed-keys is set', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('AGBZFD'); + + const inputBoxes = page.locator('ion-input-otp input'); + await expect(inputBoxes.nth(0)).toHaveValue('A'); + await expect(inputBoxes.nth(1)).toHaveValue('B'); + await expect(inputBoxes.nth(2)).toHaveValue('F'); + await expect(inputBoxes.nth(3)).toHaveValue('D'); + }); + }); + + test.describe(title('input-otp: focus functionality'), () => { + test('should focus the first input box when tabbed to', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + await page.keyboard.press('Tab'); + + const firstInput = page.locator('ion-input-otp input').first(); + await expect(firstInput).toBeFocused(); + }); + + test('should focus the third input box when tabbed to with a default value of 2 digits', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + await page.keyboard.press('Tab'); + + const thirdInput = page.locator('ion-input-otp input').nth(2); + await expect(thirdInput).toBeFocused(); + }); + + test('should focus the last input box when tabbed to with a default value of 4 digits', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + await page.keyboard.press('Tab'); + + const lastInput = page.locator('ion-input-otp input').last(); + await expect(lastInput).toBeFocused(); + }); + }); + + test.describe(title('input-otp: backspace functionality'), () => { + test('should backspace the first input box when backspace is pressed twice from the 2nd input box and the first input box has a value', async ({ + page, + }) => { + await page.setContent( + ` + Description + `, + config + ); + + await page.keyboard.press('Tab'); + await page.keyboard.press('Backspace'); + await page.keyboard.press('Backspace'); + + const inputBoxes = page.locator('ion-input-otp input'); + await expect(inputBoxes.nth(0)).toHaveValue(''); + await expect(inputBoxes.nth(1)).toHaveValue(''); + await expect(inputBoxes.nth(2)).toHaveValue(''); + await expect(inputBoxes.nth(3)).toHaveValue(''); + }); + + test('should backspace the last input box when backspace is pressed and all values are filled', async ({ + page, + }) => { + await page.setContent( + ` + Description + `, + config + ); + + await page.keyboard.press('Tab'); + await page.keyboard.press('Backspace'); + + const inputBoxes = page.locator('ion-input-otp input'); + await expect(inputBoxes.nth(0)).toHaveValue('1'); + await expect(inputBoxes.nth(1)).toHaveValue('2'); + await expect(inputBoxes.nth(2)).toHaveValue('3'); + await expect(inputBoxes.nth(3)).toHaveValue(''); + }); + + test('should backspace the 2nd input box and fill it with the 3rd value when backspace is pressed and 3 values are filled', async ({ + page, + }) => { + await page.setContent( + ` + Description + `, + config + ); + + await page.keyboard.press('Tab'); + await page.keyboard.press('ArrowLeft'); + await page.keyboard.press('ArrowLeft'); + await page.keyboard.press('Backspace'); + + const inputBoxes = page.locator('ion-input-otp input'); + await expect(inputBoxes.nth(0)).toHaveValue('1'); + await expect(inputBoxes.nth(1)).toHaveValue('3'); + await expect(inputBoxes.nth(2)).toHaveValue(''); + await expect(inputBoxes.nth(3)).toHaveValue(''); + }); + }); +}); diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts b/core/src/components/input-otp/test/color/input-otp.e2e.ts new file mode 100644 index 00000000000..bcfc89cf14f --- /dev/null +++ b/core/src/components/input-otp/test/color/input-otp.e2e.ts @@ -0,0 +1,73 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('input-otp: color'), () => { + // Test all colors with all fills + ['outline', 'solid'].forEach((fill) => { + test(`color with ${fill} fill should not have visual regressions`, async ({ page }) => { + await page.setContent( + ` +
+ + + + + + + + + +
+ `, + config + ); + + const container = page.locator('#container'); + await expect(container).toHaveScreenshot(screenshot(`input-otp-color-${fill}`)); + }); + test(`disabled color with ${fill} fill should not have visual regressions`, async ({ page }) => { + await page.setContent( + `npx +
+ + + + + + + + + +
+ `, + config + ); + + const container = page.locator('#container'); + await expect(container).toHaveScreenshot(screenshot(`input-otp-color-${fill}-disabled`)); + }); + test(`readonly color with ${fill} fill should not have visual regressions`, async ({ page }) => { + await page.setContent( + ` +
+ + + + + + + + + +
+ `, + config + ); + + const container = page.locator('#container'); + await expect(container).toHaveScreenshot(screenshot(`input-otp-color-${fill}-readonly`)); + }); + }); + }); +}); diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts b/core/src/components/input-otp/test/fill/input-otp.e2e.ts new file mode 100644 index 00000000000..20adc5a923b --- /dev/null +++ b/core/src/components/input-otp/test/fill/input-otp.e2e.ts @@ -0,0 +1,42 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('input-otp: fill'), () => { + ['outline', 'solid'].forEach((fill) => { + test(`${fill} fill should not have visual regressions`, async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const inputOtp = page.locator('ion-input-otp'); + await expect(inputOtp).toHaveScreenshot(screenshot(`input-otp-${fill}`)); + }); + test(`disabled should not have visual regressions`, async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const inputOtp = page.locator('ion-input-otp'); + await expect(inputOtp).toHaveScreenshot(screenshot(`input-otp-${fill}-disabled`)); + }); + test(`readonly should not have visual regressions`, async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const inputOtp = page.locator('ion-input-otp'); + await expect(inputOtp).toHaveScreenshot(screenshot(`input-otp-${fill}-readonly`)); + }); + }); + }); +}); diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts b/core/src/components/input-otp/test/separators/input-otp.e2e.ts new file mode 100644 index 00000000000..fa17a6d5410 --- /dev/null +++ b/core/src/components/input-otp/test/separators/input-otp.e2e.ts @@ -0,0 +1,45 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('input-otp: separators'), () => { + // Test separators with all sizes + ['small', 'medium', 'large'].forEach((size) => { + test(`one separator with ${size} size should not have visual regressions`, async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const inputOtp = page.locator('ion-input-otp'); + await expect(inputOtp).toHaveScreenshot(screenshot(`input-otp-separators-one-${size}`)); + }); + + test(`two separators with ${size} size should not have visual regressions`, async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const inputOtp = page.locator('ion-input-otp'); + await expect(inputOtp).toHaveScreenshot(screenshot(`input-otp-separators-two-${size}`)); + }); + + test(`all separators with ${size} size should not have visual regressions`, async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const inputOtp = page.locator('ion-input-otp'); + await expect(inputOtp).toHaveScreenshot(screenshot(`input-otp-separators-all-${size}`)); + }); + }); + }); +}); diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts b/core/src/components/input-otp/test/shape/input-otp.e2e.ts new file mode 100644 index 00000000000..9f0ace5c235 --- /dev/null +++ b/core/src/components/input-otp/test/shape/input-otp.e2e.ts @@ -0,0 +1,23 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('input-otp: shape'), () => { + // Test all shapes with all sizes + ['rectangular', 'round', 'soft'].forEach((shape) => { + ['small', 'medium', 'large'].forEach((size) => { + test(`${shape} shape with ${size} size should not have visual regressions`, async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const inputOtp = page.locator('ion-input-otp'); + await expect(inputOtp).toHaveScreenshot(screenshot(`input-otp-${shape}-${size}`)); + }); + }); + }); + }); +}); diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts b/core/src/components/input-otp/test/size/input-otp.e2e.ts new file mode 100644 index 00000000000..7f87b7e9600 --- /dev/null +++ b/core/src/components/input-otp/test/size/input-otp.e2e.ts @@ -0,0 +1,31 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('input-otp: size'), () => { + ['small', 'medium', 'large'].forEach((size) => { + test(`${size} size should not have visual regressions`, async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const inputOtp = page.locator('ion-input-otp'); + await expect(inputOtp).toHaveScreenshot(screenshot(`input-otp-${size}`)); + }); + test(`${size} size should collapse width when viewport is too narrow`, async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const inputOtp = page.locator('ion-input-otp'); + await expect(inputOtp).toHaveScreenshot(screenshot(`input-otp-${size}-collapsed`)); + }); + }); + }); +}); From 3e4fe5a68c53b5c8a089697ec78a94aa2fe4ae5d Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Fri, 2 May 2025 16:53:53 -0400 Subject: [PATCH 12/81] fix(input-otp): shift input boxes over 1 when clearing a value in the middle --- core/src/components/input-otp/input-otp.tsx | 28 +++++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 11981ac9375..9b0ef0fdc3d 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -203,16 +203,27 @@ export class InputOTP implements ComponentInterface { if (event.key === 'Backspace') { if (this.inputValues[index]) { - // If current input has a value, clear it - this.inputRefs[index].value = ''; + // Remove the value at the current index this.inputValues[index] = ''; + + // Shift all values to the right of the current index left by one + for (let i = index; i < length - 1; i++) { + this.inputValues[i] = this.inputValues[i + 1]; + } + + // Clear the last box + this.inputValues[length - 1] = ''; + + // Update all inputRefs to match inputValues + for (let i = 0; i < length; i++) { + this.inputRefs[i].value = this.inputValues[i] || ''; + } + this.updateValue(); - } else if (index > 0) { - // If current input is empty, move to previous input and clear its value + event.preventDefault(); + } else if (!this.inputValues[index] && index > 0) { + // If current input is empty, move to previous input this.focusPrevious(index); - this.inputRefs[index - 1].value = ''; - this.inputValues[index - 1] = ''; - this.updateValue(); } } else if (event.key === 'ArrowLeft') { event.preventDefault(); @@ -365,7 +376,8 @@ export class InputOTP implements ComponentInterface { } render() { - const { color, disabled, fill, hasFocus, inputId, inputRefs, inputValues, length, readonly, shape, size, type } = this; + const { color, disabled, fill, hasFocus, inputId, inputRefs, inputValues, length, readonly, shape, size, type } = + this; const mode = getIonMode(this); const inputmode = this.getInputmode(); const tabbableIndex = this.getTabbableIndex(); From aeace76c3b3fe5bb3e61cafaf644b7025dcd6a89 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Fri, 2 May 2025 17:03:41 -0400 Subject: [PATCH 13/81] refactor(input-otp): rename allowedKeys to pattern --- core/api.txt | 2 +- core/src/components.d.ts | 16 ++++++++-------- core/src/components/input-otp/input-otp.tsx | 12 ++++++------ .../components/input-otp/test/basic/index.html | 2 +- .../input-otp/test/basic/input-otp.e2e.ts | 4 ++-- packages/angular/src/directives/proxies.ts | 4 ++-- .../angular/standalone/src/directives/proxies.ts | 4 ++-- packages/vue/src/proxies.ts | 2 +- 8 files changed, 23 insertions(+), 23 deletions(-) diff --git a/core/api.txt b/core/api.txt index bea2075e576..2b920789d6c 100644 --- a/core/api.txt +++ b/core/api.txt @@ -781,12 +781,12 @@ ion-input,css-prop,--placeholder-opacity,ios ion-input,css-prop,--placeholder-opacity,md ion-input-otp,scoped -ion-input-otp,prop,allowedKeys,string | undefined,undefined,false,false ion-input-otp,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record | undefined,undefined,false,true ion-input-otp,prop,disabled,boolean,false,false,true ion-input-otp,prop,fill,"outline" | "solid" | undefined,'outline',false,false ion-input-otp,prop,inputmode,"decimal" | "email" | "none" | "numeric" | "search" | "tel" | "text" | "url" | undefined,undefined,false,false ion-input-otp,prop,length,number,4,false,false +ion-input-otp,prop,pattern,string | undefined,undefined,false,false ion-input-otp,prop,readonly,boolean,false,false,true ion-input-otp,prop,separators,number[] | string | undefined,undefined,false,false ion-input-otp,prop,shape,"rectangular" | "round" | "soft",'round',false,false diff --git a/core/src/components.d.ts b/core/src/components.d.ts index c5b97e23b87..1708e7a5dec 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1322,10 +1322,6 @@ export namespace Components { "value"?: string | number | null; } interface IonInputOtp { - /** - * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[0-9]" For text (type="text"): "[a-zA-Z0-9]" - */ - "allowedKeys"?: string; /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). */ @@ -1346,6 +1342,10 @@ export namespace Components { * The number of input boxes to display. */ "length": number; + /** + * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[0-9]" For text (type="text"): "[a-zA-Z0-9]" + */ + "pattern"?: string; /** * If `true`, the user cannot modify the value. */ @@ -6254,10 +6254,6 @@ declare namespace LocalJSX { "value"?: string | number | null; } interface IonInputOtp { - /** - * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[0-9]" For text (type="text"): "[a-zA-Z0-9]" - */ - "allowedKeys"?: string; /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). */ @@ -6286,6 +6282,10 @@ declare namespace LocalJSX { * Emitted when the input is complete (all boxes filled) */ "onIonComplete"?: (event: IonInputOtpCustomEvent) => void; + /** + * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[0-9]" For text (type="text"): "[a-zA-Z0-9]" + */ + "pattern"?: string; /** * If `true`, the user cannot modify the value. */ diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 9b0ef0fdc3d..0a05b880f8b 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -63,7 +63,7 @@ export class InputOTP implements ComponentInterface { * For numbers (type="number"): "[0-9]" * For text (type="text"): "[a-zA-Z0-9]" */ - @Prop() allowedKeys?: string; + @Prop() pattern?: string; /** * If `true`, the user cannot modify the value. @@ -140,11 +140,11 @@ export class InputOTP implements ComponentInterface { * Get the default allowed keys based on type if not explicitly set */ private get validKeys(): RegExp { - const { allowedKeys, type } = this; + const { pattern, type } = this; - if (allowedKeys) { + if (pattern) { // Create a regex that matches a single character from the provided pattern - return new RegExp(`^${allowedKeys}$`, 'i'); + return new RegExp(`^${pattern}$`, 'i'); } return type === 'number' ? /^[0-9]$/ : /^[a-zA-Z0-9]$/i; } @@ -376,7 +376,7 @@ export class InputOTP implements ComponentInterface { } render() { - const { color, disabled, fill, hasFocus, inputId, inputRefs, inputValues, length, readonly, shape, size, type } = + const { color, disabled, fill, hasFocus, inputId, inputRefs, inputValues, length, pattern, readonly, shape, size, type } = this; const mode = getIonMode(this); const inputmode = this.getInputmode(); @@ -405,7 +405,7 @@ export class InputOTP implements ComponentInterface { type="text" inputmode={inputmode} maxLength={1} - pattern={type === 'number' ? '[0-9]' : undefined} + pattern={pattern || (type === 'number' ? '[0-9]' : '[a-zA-Z0-9]')} disabled={disabled} readOnly={readonly} tabIndex={index === tabbableIndex ? 0 : -1} diff --git a/core/src/components/input-otp/test/basic/index.html b/core/src/components/input-otp/test/basic/index.html index a58778cf569..b7cd009a1e9 100644 --- a/core/src/components/input-otp/test/basic/index.html +++ b/core/src/components/input-otp/test/basic/index.html @@ -69,7 +69,7 @@

Invalid

Types

Numbers only Letters and numbers - Custom Pattern: a-f and A-F + Custom Pattern: a-f and A-F
diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index 4f2e36f06af..6d43f9fd1c3 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -88,10 +88,10 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => await expect(inputBoxes.nth(3)).toHaveValue('5'); }); - test('should accept custom pattern when allowed-keys is set', async ({ page }) => { + test('should accept custom pattern when pattern is set', async ({ page }) => { await page.setContent( ` - Description + Description `, config ); diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index 0ddc9b58c77..c36d803d7c3 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -1018,14 +1018,14 @@ This event will not emit when programmatically setting the `value` property. @ProxyCmp({ - inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'readonly', 'separators', 'shape', 'size', 'type', 'value'] + inputs: ['color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'] }) @Component({ selector: 'ion-input-otp', changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], + inputs: ['color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], }) export class IonInputOtp { protected el: HTMLIonInputOtpElement; diff --git a/packages/angular/standalone/src/directives/proxies.ts b/packages/angular/standalone/src/directives/proxies.ts index fd5390d68d5..cec46837067 100644 --- a/packages/angular/standalone/src/directives/proxies.ts +++ b/packages/angular/standalone/src/directives/proxies.ts @@ -984,14 +984,14 @@ export declare interface IonInfiniteScrollContent extends Components.IonInfinite @ProxyCmp({ defineCustomElementFn: defineIonInputOtp, - inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'readonly', 'separators', 'shape', 'size', 'type', 'value'] + inputs: ['color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'] }) @Component({ selector: 'ion-input-otp', changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['allowedKeys', 'color', 'disabled', 'fill', 'inputmode', 'length', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], + inputs: ['color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], standalone: true }) export class IonInputOtp { diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index 5ee116d029f..7bf8182f177 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -498,7 +498,7 @@ export const IonInputOtp: StencilVueComponent = /*@__PURE__*/ d 'fill', 'inputmode', 'length', - 'allowedKeys', + 'pattern', 'readonly', 'size', 'separators', From 5c7a3117f0d30a516935988790179c08f3033162 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 5 May 2025 11:24:01 -0400 Subject: [PATCH 14/81] fix(input-otp): paste from first empty box or first box if all are filled --- core/src/components/input-otp/input-otp.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 0a05b880f8b..9f22d29812f 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -250,12 +250,13 @@ export class InputOTP implements ComponentInterface { .filter((char) => validKeys.test(char.toLowerCase())) .slice(0, length); - // Find the currently focused input - const focusedIndex = inputRefs.findIndex((input) => input === document.activeElement); - const startIndex = focusedIndex >= 0 ? focusedIndex : 0; + // Find the first empty input + const startIndex = this.getFirstEmptyIndex(); + // If all boxes are filled, start at 0 + const pasteStart = startIndex === -1 ? 0 : startIndex; validChars.forEach((char, index) => { - const targetIndex = startIndex + index; + const targetIndex = pasteStart + index; if (targetIndex < length) { this.inputRefs[targetIndex].value = char; this.inputValues[targetIndex] = char; @@ -265,7 +266,7 @@ export class InputOTP implements ComponentInterface { this.updateValue(); // Focus the next empty input after pasting - const nextEmptyIndex = startIndex + validChars.length; + const nextEmptyIndex = pasteStart + validChars.length; if (nextEmptyIndex < length) { inputRefs[nextEmptyIndex]?.focus(); } From b260644169cc87bbb8085089f7b34f70931a2d51 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 5 May 2025 13:04:43 -0400 Subject: [PATCH 15/81] test(input-otp): paste functionality --- .../input-otp/test/basic/input-otp.e2e.ts | 143 ++++++++++++++++++ 1 file changed, 143 insertions(+) diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index 6d43f9fd1c3..f56443ba415 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -217,4 +217,147 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => await expect(inputBoxes.nth(3)).toHaveValue(''); }); }); + + test.describe(title('input-otp: paste functionality'), () => { + test('should paste text into the first and second input box when pasting 2 digits', async ({ page }) => { + await page.setContent( + `Description`, + config + ); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + await firstInput.evaluate((input, value) => { + const event = new ClipboardEvent('paste', { + bubbles: true, + cancelable: true, + clipboardData: new DataTransfer() + }); + if (event.clipboardData) { + event.clipboardData.setData('text', value); + } + input.dispatchEvent(event); + }, '12'); + + const inputBoxes = page.locator('ion-input-otp input'); + await expect(inputBoxes.nth(0)).toHaveValue('1'); + await expect(inputBoxes.nth(1)).toHaveValue('2'); + await expect(inputBoxes.nth(2)).toHaveValue(''); + await expect(inputBoxes.nth(3)).toHaveValue(''); + }); + + test('should paste text into all input boxes when pasting 4 digits', async ({ page }) => { + await page.setContent( + `Description`, + config + ); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + await firstInput.evaluate((input, value) => { + const event = new ClipboardEvent('paste', { + bubbles: true, + cancelable: true, + clipboardData: new DataTransfer() + }); + if (event.clipboardData) { + event.clipboardData.setData('text', value); + } + input.dispatchEvent(event); + }, '1234'); + + const inputBoxes = page.locator('ion-input-otp input'); + await expect(inputBoxes.nth(0)).toHaveValue('1'); + await expect(inputBoxes.nth(1)).toHaveValue('2'); + await expect(inputBoxes.nth(2)).toHaveValue('3'); + await expect(inputBoxes.nth(3)).toHaveValue('4'); + }); + + test('should paste text into the first and second input box when pasting 2 digits in the 3rd box', async ({ page }) => { + await page.setContent( + `Description`, + config + ); + + const thirdInput = page.locator('ion-input-otp input').nth(2); + await thirdInput.focus(); + await thirdInput.evaluate((input, value) => { + const event = new ClipboardEvent('paste', { + bubbles: true, + cancelable: true, + clipboardData: new DataTransfer() + }); + if (event.clipboardData) { + event.clipboardData.setData('text', value); + } + input.dispatchEvent(event); + }, '12'); + + const inputBoxes = page.locator('ion-input-otp input'); + await expect(inputBoxes.nth(0)).toHaveValue('1'); + await expect(inputBoxes.nth(1)).toHaveValue('2'); + await expect(inputBoxes.nth(2)).toHaveValue(''); + await expect(inputBoxes.nth(3)).toHaveValue(''); + }); + + test('should paste text into the last two input boxes when pasting 2 digits after typing 2 digits', async ({ page }) => { + await page.setContent( + `Description`, + config + ); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('12'); + + await firstInput.evaluate((input, value) => { + const event = new ClipboardEvent('paste', { + bubbles: true, + cancelable: true, + clipboardData: new DataTransfer() + }); + if (event.clipboardData) { + event.clipboardData.setData('text', value); + } + input.dispatchEvent(event); + }, '34'); + + const inputBoxes = page.locator('ion-input-otp input'); + await expect(inputBoxes.nth(0)).toHaveValue('1'); + await expect(inputBoxes.nth(1)).toHaveValue('2'); + await expect(inputBoxes.nth(2)).toHaveValue('3'); + await expect(inputBoxes.nth(3)).toHaveValue('4'); + }); + + test('should paste text into all input boxes when pasting 4 digits after typing 4 digits', async ({ page }) => { + await page.setContent( + `Description`, + config + ); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('9999'); + + await firstInput.evaluate((input, value) => { + const event = new ClipboardEvent('paste', { + bubbles: true, + cancelable: true, + clipboardData: new DataTransfer() + }); + if (event.clipboardData) { + event.clipboardData.setData('text', value); + } + input.dispatchEvent(event); + }, '1234'); + + const inputBoxes = page.locator('ion-input-otp input'); + await expect(inputBoxes.nth(0)).toHaveValue('1'); + await expect(inputBoxes.nth(1)).toHaveValue('2'); + await expect(inputBoxes.nth(2)).toHaveValue('3'); + await expect(inputBoxes.nth(3)).toHaveValue('4'); + }); + }); }); From 9aaeef2583c5d1c915f3e970ff446f2fec9ac99a Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 5 May 2025 13:06:07 -0400 Subject: [PATCH 16/81] fix(input-otp): improve separator collapse --- core/src/components/input-otp/input-otp.scss | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/core/src/components/input-otp/input-otp.scss b/core/src/components/input-otp/input-otp.scss index 991b604119e..a6f890b8150 100644 --- a/core/src/components/input-otp/input-otp.scss +++ b/core/src/components/input-otp/input-otp.scss @@ -113,6 +113,8 @@ .input-otp-separator { @include border-radius(var(--separator-border-radius)); + flex: 1 0 auto; + width: var(--separator-width); height: var(--separator-height); @@ -129,14 +131,11 @@ font-size: 0.875em; } -:host(.input-otp-size-small) .input-otp-group { +:host(.input-otp-size-small) .input-otp-group, +:host(.input-otp-size-small) .native-wrapper { gap: 8px; } -:host(.input-otp-size-small) .input-otp-separator { - @include margin-horizontal(8px, null); -} - :host(.input-otp-size-medium) { --width: 48px; --height: 48px; @@ -152,16 +151,12 @@ } :host(.input-otp-size-medium) .input-otp-group, -:host(.input-otp-size-large) .input-otp-group { +:host(.input-otp-size-medium) .native-wrapper, +:host(.input-otp-size-large) .input-otp-group, +:host(.input-otp-size-large) .native-wrapper { gap: 12px; } -:host(.input-otp-size-medium) .input-otp-separator, -:host(.input-otp-size-large) .input-otp-separator { - @include margin-horizontal(12px, null); -} - - // Shapes // -------------------------------------------------- From 6175dfb0435cd7a53023069f0631e2a00b1e82bd Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 5 May 2025 13:37:28 -0400 Subject: [PATCH 17/81] fix(input-otp): move focus to last input when all are filled --- core/src/components/input-otp/input-otp.tsx | 20 +++++++- .../input-otp/test/basic/input-otp.e2e.ts | 49 +++++++++---------- 2 files changed, 40 insertions(+), 29 deletions(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 9f22d29812f..1213c22c716 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -266,9 +266,12 @@ export class InputOTP implements ComponentInterface { this.updateValue(); // Focus the next empty input after pasting + // If all boxes are filled, focus the last input const nextEmptyIndex = pasteStart + validChars.length; if (nextEmptyIndex < length) { inputRefs[nextEmptyIndex]?.focus(); + } else { + inputRefs[length - 1]?.focus(); } } @@ -377,8 +380,21 @@ export class InputOTP implements ComponentInterface { } render() { - const { color, disabled, fill, hasFocus, inputId, inputRefs, inputValues, length, pattern, readonly, shape, size, type } = - this; + const { + color, + disabled, + fill, + hasFocus, + inputId, + inputRefs, + inputValues, + length, + pattern, + readonly, + shape, + size, + type, + } = this; const mode = getIonMode(this); const inputmode = this.getInputmode(); const tabbableIndex = this.getTabbableIndex(); diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index f56443ba415..087480a4c29 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -220,10 +220,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => test.describe(title('input-otp: paste functionality'), () => { test('should paste text into the first and second input box when pasting 2 digits', async ({ page }) => { - await page.setContent( - `Description`, - config - ); + await page.setContent(`Description`, config); const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); @@ -231,7 +228,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => const event = new ClipboardEvent('paste', { bubbles: true, cancelable: true, - clipboardData: new DataTransfer() + clipboardData: new DataTransfer(), }); if (event.clipboardData) { event.clipboardData.setData('text', value); @@ -244,13 +241,13 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => await expect(inputBoxes.nth(1)).toHaveValue('2'); await expect(inputBoxes.nth(2)).toHaveValue(''); await expect(inputBoxes.nth(3)).toHaveValue(''); + + // Focus should be on the 3rd input box + await expect(inputBoxes.nth(2)).toBeFocused(); }); test('should paste text into all input boxes when pasting 4 digits', async ({ page }) => { - await page.setContent( - `Description`, - config - ); + await page.setContent(`Description`, config); const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); @@ -258,7 +255,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => const event = new ClipboardEvent('paste', { bubbles: true, cancelable: true, - clipboardData: new DataTransfer() + clipboardData: new DataTransfer(), }); if (event.clipboardData) { event.clipboardData.setData('text', value); @@ -271,13 +268,15 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => await expect(inputBoxes.nth(1)).toHaveValue('2'); await expect(inputBoxes.nth(2)).toHaveValue('3'); await expect(inputBoxes.nth(3)).toHaveValue('4'); + + // Focus should be on the 4th input box + await expect(inputBoxes.nth(3)).toBeFocused(); }); - test('should paste text into the first and second input box when pasting 2 digits in the 3rd box', async ({ page }) => { - await page.setContent( - `Description`, - config - ); + test('should paste text into the first and second input box when pasting 2 digits in the 3rd box', async ({ + page, + }) => { + await page.setContent(`Description`, config); const thirdInput = page.locator('ion-input-otp input').nth(2); await thirdInput.focus(); @@ -285,7 +284,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => const event = new ClipboardEvent('paste', { bubbles: true, cancelable: true, - clipboardData: new DataTransfer() + clipboardData: new DataTransfer(), }); if (event.clipboardData) { event.clipboardData.setData('text', value); @@ -300,11 +299,10 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => await expect(inputBoxes.nth(3)).toHaveValue(''); }); - test('should paste text into the last two input boxes when pasting 2 digits after typing 2 digits', async ({ page }) => { - await page.setContent( - `Description`, - config - ); + test('should paste text into the last two input boxes when pasting 2 digits after typing 2 digits', async ({ + page, + }) => { + await page.setContent(`Description`, config); const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); @@ -315,7 +313,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => const event = new ClipboardEvent('paste', { bubbles: true, cancelable: true, - clipboardData: new DataTransfer() + clipboardData: new DataTransfer(), }); if (event.clipboardData) { event.clipboardData.setData('text', value); @@ -331,10 +329,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => }); test('should paste text into all input boxes when pasting 4 digits after typing 4 digits', async ({ page }) => { - await page.setContent( - `Description`, - config - ); + await page.setContent(`Description`, config); const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); @@ -345,7 +340,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => const event = new ClipboardEvent('paste', { bubbles: true, cancelable: true, - clipboardData: new DataTransfer() + clipboardData: new DataTransfer(), }); if (event.clipboardData) { event.clipboardData.setData('text', value); From bb7065bcc9fd7fbb072ffc54e4b81962ce3581f8 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 5 May 2025 16:19:30 -0400 Subject: [PATCH 18/81] fix(input-otp): always start value at first empty input when typing --- core/src/components/input-otp/input-otp.tsx | 19 +++++- .../input-otp/test/basic/index.html | 27 +++++--- .../input-otp/test/basic/input-otp.e2e.ts | 66 +++++++++++++++++++ 3 files changed, 101 insertions(+), 11 deletions(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 1213c22c716..77dbbabbc31 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -190,10 +190,25 @@ export class InputOTP implements ComponentInterface { return; } - this.inputValues[index] = value; + // Find the first empty box before or at the current index + let targetIndex = index; + for (let i = 0; i < index; i++) { + if (!this.inputValues[i] || this.inputValues[i] === '') { + targetIndex = i; + break; + } + } + + // Set the value at the target index + this.inputValues[targetIndex] = value; + + // If the value was entered in a later box, clear the current box + if (targetIndex !== index) { + this.inputRefs[index].value = ''; + } if (value.length > 0) { - this.focusNext(index); + this.focusNext(targetIndex); } this.updateValue(); } diff --git a/core/src/components/input-otp/test/basic/index.html b/core/src/components/input-otp/test/basic/index.html index b7cd009a1e9..a1b4f59c1db 100644 --- a/core/src/components/input-otp/test/basic/index.html +++ b/core/src/components/input-otp/test/basic/index.html @@ -47,13 +47,18 @@

Default

Didn't get a code? Resend the code
+
+

Types

+ Numbers only + Letters and numbers + Custom Pattern: a-f and A-F +
+

Disabled

Description Description -
-

Readonly

Description Description @@ -64,19 +69,23 @@

Invalid

Description Description
- -
-

Types

- Numbers only - Letters and numbers - Custom Pattern: a-f and A-F -
diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index 087480a4c29..cc8493cad01 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -109,6 +109,72 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => }); }); + test.describe(title('input-otp: input functionality'), () => { + test('should update the input value when typing 4 digits from the 1st box', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + const inputOtp = page.locator('ion-input-otp'); + const inputBoxes = page.locator('ion-input-otp input'); + + await expect(inputOtp).toHaveJSProperty('value', ''); + await expect(inputBoxes.nth(0)).toHaveValue(''); + await expect(inputBoxes.nth(1)).toHaveValue(''); + await expect(inputBoxes.nth(2)).toHaveValue(''); + await expect(inputBoxes.nth(3)).toHaveValue(''); + + await page.keyboard.type('12'); + + await expect(inputOtp).toHaveJSProperty('value', '12'); + await expect(inputBoxes.nth(0)).toHaveValue('1'); + await expect(inputBoxes.nth(1)).toHaveValue('2'); + await expect(inputBoxes.nth(2)).toHaveValue(''); + await expect(inputBoxes.nth(3)).toHaveValue(''); + + await page.keyboard.type('34'); + + await expect(inputOtp).toHaveJSProperty('value', '1234'); + await expect(inputBoxes.nth(0)).toHaveValue('1'); + await expect(inputBoxes.nth(1)).toHaveValue('2'); + await expect(inputBoxes.nth(2)).toHaveValue('3'); + await expect(inputBoxes.nth(3)).toHaveValue('4'); + }); + + test('should update the 1st input value when typing in the 3rd box', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const thirdInput = page.locator('ion-input-otp input').nth(2); + await thirdInput.focus(); + + const inputOtp = page.locator('ion-input-otp'); + const inputBoxes = page.locator('ion-input-otp input'); + + await page.keyboard.type('1'); + + await expect(inputBoxes.nth(0)).toHaveValue('1'); + await expect(inputBoxes.nth(1)).toHaveValue(''); + await expect(inputBoxes.nth(2)).toHaveValue(''); + await expect(inputBoxes.nth(3)).toHaveValue(''); + await expect(inputOtp).toHaveJSProperty('value', '1'); + + // Focus should be on the 2nd input box + const secondInput = page.locator('ion-input-otp input').nth(1); + await expect(secondInput).toBeFocused(); + }); + }); + test.describe(title('input-otp: focus functionality'), () => { test('should focus the first input box when tabbed to', async ({ page }) => { await page.setContent( From ecf1c112920b0f19239b84e5fd31f43841682b6c Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 6 May 2025 10:52:52 -0400 Subject: [PATCH 19/81] fix(input-otp): allow entering keys in the middle of the input group --- core/src/components/input-otp/input-otp.tsx | 19 +++++++ .../input-otp/test/basic/input-otp.e2e.ts | 52 +++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 77dbbabbc31..c7877c1a10e 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -253,6 +253,25 @@ export class InputOTP implements ComponentInterface { // Let all tab events proceed normally return; } + + // If the input box contains a value and the key being + // entered is a valid key for the input box, update the value, + // shift the values to the right if there is room. + if (this.inputValues[index] && this.validKeys.test(event.key)) { + if (!this.inputValues[length - 1]) { + for (let i = length - 1; i > index; i--) { + this.inputValues[i] = this.inputValues[i - 1]; + this.inputRefs[i].value = this.inputValues[i] || ''; + } + } + this.inputValues[index] = event.key; + this.inputRefs[index].value = event.key; + this.updateValue(); + + // Prevent default to avoid the browser from + // automatically moving the focus to the next input + event.preventDefault(); + } } private handlePaste(event: ClipboardEvent) { diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index cc8493cad01..36a2c8580b6 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -173,6 +173,58 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => const secondInput = page.locator('ion-input-otp input').nth(1); await expect(secondInput).toBeFocused(); }); + + test('should update the 3rd input value and shift the values to the right when typing in the 3rd box containing a value', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const thirdInput = page.locator('ion-input-otp input').nth(2); + await thirdInput.focus(); + + const inputOtp = page.locator('ion-input-otp'); + const inputBoxes = page.locator('ion-input-otp input'); + + await page.keyboard.type('9'); + + await expect(inputBoxes.nth(0)).toHaveValue('1'); + await expect(inputBoxes.nth(1)).toHaveValue('2'); + await expect(inputBoxes.nth(2)).toHaveValue('9'); + await expect(inputBoxes.nth(3)).toHaveValue('3'); + await expect(inputOtp).toHaveJSProperty('value', '1293'); + + // Focus should remain on the 3rd input box + await expect(thirdInput).toBeFocused(); + }); + + test('should update the 2nd input value when typing in the 2nd box containing a value', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const secondInput = page.locator('ion-input-otp input').nth(1); + await secondInput.focus(); + + const inputOtp = page.locator('ion-input-otp'); + const inputBoxes = page.locator('ion-input-otp input'); + + await page.keyboard.type('9'); + + await expect(inputBoxes.nth(0)).toHaveValue('1'); + await expect(inputBoxes.nth(1)).toHaveValue('9'); + await expect(inputBoxes.nth(2)).toHaveValue('3'); + await expect(inputBoxes.nth(3)).toHaveValue('4'); + await expect(inputOtp).toHaveJSProperty('value', '1934'); + + // Focus should remain on the 2nd input box + await expect(secondInput).toBeFocused(); + }); }); test.describe(title('input-otp: focus functionality'), () => { From 46a3fb7db9606b417182577781169ce6555c4b08 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 6 May 2025 13:31:23 -0400 Subject: [PATCH 20/81] refactor(input-otp): return when pasted text is empty --- core/src/components/input-otp/input-otp.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index c7877c1a10e..b48352b3bc1 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -278,7 +278,13 @@ export class InputOTP implements ComponentInterface { const { inputRefs, length, validKeys } = this; event.preventDefault(); - const pastedText = event.clipboardData?.getData('text') || ''; + + const pastedText = event.clipboardData?.getData('text'); + + if (!pastedText) { + return; + } + const validChars = pastedText .split('') .filter((char) => validKeys.test(char.toLowerCase())) From 97649a006b35a7cde236857473961d96c503fa8b Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 6 May 2025 14:00:43 -0400 Subject: [PATCH 21/81] fix(input-otp): respect case when checking pattern --- core/src/components/input-otp/input-otp.tsx | 17 ++++++----- .../input-otp/test/basic/index.html | 20 ++++++------- .../input-otp/test/basic/input-otp.e2e.ts | 28 ++++++++++++++++--- 3 files changed, 44 insertions(+), 21 deletions(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index b48352b3bc1..0eb7ea35758 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -127,7 +127,7 @@ export class InputOTP implements ComponentInterface { if (this.value != null && String(this.value).length > 0) { const chars = String(this.value).split('').slice(0, this.length); chars.forEach((char, index) => { - if (this.validKeys.test(char.toLowerCase())) { + if (this.validKeys.test(char)) { this.inputValues[index] = char; } }); @@ -137,20 +137,23 @@ export class InputOTP implements ComponentInterface { } /** - * Get the default allowed keys based on type if not explicitly set + * Get the regex pattern for allowed characters + * If a pattern is provided, use it to create a regex pattern + * Otherwise, use the default regex pattern based on type */ private get validKeys(): RegExp { const { pattern, type } = this; if (pattern) { - // Create a regex that matches a single character from the provided pattern - return new RegExp(`^${pattern}$`, 'i'); + return new RegExp(`^${pattern}$`); } return type === 'number' ? /^[0-9]$/ : /^[a-zA-Z0-9]$/i; } /** - * Get the default value for inputmode based on type if not explicitly set + * Get the default value for inputmode + * If inputmode is provided, use it + * Otherwise, use the default inputmode based on type */ private getInputmode(): string { const { inputmode } = this; @@ -183,7 +186,7 @@ export class InputOTP implements ComponentInterface { const { validKeys } = this; // Only allow input if it's a single character and matches the pattern - if (value.length > 1 || (value.length > 0 && !validKeys.test(value.toLowerCase()))) { + if (value.length > 1 || (value.length > 0 && !validKeys.test(value))) { // Reset the input value if not valid this.inputRefs[index].value = ''; this.inputValues[index] = ''; @@ -287,7 +290,7 @@ export class InputOTP implements ComponentInterface { const validChars = pastedText .split('') - .filter((char) => validKeys.test(char.toLowerCase())) + .filter((char) => validKeys.test(char)) .slice(0, length); // Find the first empty input diff --git a/core/src/components/input-otp/test/basic/index.html b/core/src/components/input-otp/test/basic/index.html index a1b4f59c1db..32d66045f34 100644 --- a/core/src/components/input-otp/test/basic/index.html +++ b/core/src/components/input-otp/test/basic/index.html @@ -49,9 +49,10 @@

Default

Types

- Numbers only - Letters and numbers - Custom Pattern: a-f and A-F + Numbers only + Letters and numbers + Custom Pattern: a-f and A-F + Custom Pattern: D-L
@@ -76,16 +77,15 @@

Invalid

const numberValue = document.getElementById('numberValue'); numberValue.value = 123; + const inputOtpTypes = document.querySelectorAll('.input-otp-type'); + // Display value under the different input types on ionChange - function addValueListener(id) { - const el = document.getElementById(id); - el.addEventListener('ionChange', (event) => { + inputOtpTypes.forEach((inputOtpType) => { + inputOtpType.addEventListener('ionChange', (event) => { const displayValue = event.detail.value != '' ? `(value: ${event.detail.value})` : ''; - el.querySelector('#value').textContent = displayValue; + inputOtpType.querySelector('#value').textContent = displayValue; }); - } - - ['numberType', 'letterAndNumberType', 'customType'].forEach(addValueListener); + }); diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index 36a2c8580b6..15cbabdca71 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -88,7 +88,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => await expect(inputBoxes.nth(3)).toHaveValue('5'); }); - test('should accept custom pattern when pattern is set', async ({ page }) => { + test('should accept custom pattern of lowercase and uppercase letters when pattern is set', async ({ page }) => { await page.setContent( ` Description @@ -99,14 +99,34 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); - await page.keyboard.type('AGBZFD'); + await page.keyboard.type('aGBZfD'); const inputBoxes = page.locator('ion-input-otp input'); - await expect(inputBoxes.nth(0)).toHaveValue('A'); + await expect(inputBoxes.nth(0)).toHaveValue('a'); await expect(inputBoxes.nth(1)).toHaveValue('B'); - await expect(inputBoxes.nth(2)).toHaveValue('F'); + await expect(inputBoxes.nth(2)).toHaveValue('f'); await expect(inputBoxes.nth(3)).toHaveValue('D'); }); + + test('should accept custom pattern of uppercase letters only when pattern is set', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('abcdABCDEFG'); + + const inputBoxes = page.locator('ion-input-otp input'); + await expect(inputBoxes.nth(0)).toHaveValue('D'); + await expect(inputBoxes.nth(1)).toHaveValue('E'); + await expect(inputBoxes.nth(2)).toHaveValue('F'); + await expect(inputBoxes.nth(3)).toHaveValue('G'); + }); }); test.describe(title('input-otp: input functionality'), () => { From eb6ae3fcabde145353a614ca8011964b7a06ecc3 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 6 May 2025 17:05:27 -0400 Subject: [PATCH 22/81] test(input-otp): add another focus test --- .../input-otp/test/basic/input-otp.e2e.ts | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index 15cbabdca71..0d29f2d3d17 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -190,8 +190,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => await expect(inputOtp).toHaveJSProperty('value', '1'); // Focus should be on the 2nd input box - const secondInput = page.locator('ion-input-otp input').nth(1); - await expect(secondInput).toBeFocused(); + await expect(inputBoxes.nth(1)).toBeFocused(); }); test('should update the 3rd input value and shift the values to the right when typing in the 3rd box containing a value', async ({ page }) => { @@ -217,7 +216,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => await expect(inputOtp).toHaveJSProperty('value', '1293'); // Focus should remain on the 3rd input box - await expect(thirdInput).toBeFocused(); + await expect(inputBoxes.nth(2)).toBeFocused(); }); test('should update the 2nd input value when typing in the 2nd box containing a value', async ({ page }) => { @@ -243,7 +242,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => await expect(inputOtp).toHaveJSProperty('value', '1934'); // Focus should remain on the 2nd input box - await expect(secondInput).toBeFocused(); + await expect(inputBoxes.nth(1)).toBeFocused(); }); }); @@ -289,6 +288,23 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => const lastInput = page.locator('ion-input-otp input').last(); await expect(lastInput).toBeFocused(); }); + + test('should focus the next input otp component when tabbed from the 2nd input box', async ({ page }) => { + await page.setContent( + ` + Description + Description + `, + config + ); + + await page.keyboard.press('Tab'); + await page.keyboard.press('ArrowLeft'); + await page.keyboard.press('Tab'); + + const secondInputOtpFirstInput = page.locator('#second input').first(); + await expect(secondInputOtpFirstInput).toBeFocused(); + }); }); test.describe(title('input-otp: backspace functionality'), () => { @@ -435,6 +451,9 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => await expect(inputBoxes.nth(1)).toHaveValue('2'); await expect(inputBoxes.nth(2)).toHaveValue(''); await expect(inputBoxes.nth(3)).toHaveValue(''); + + // Focus should be on the 3rd input box + await expect(inputBoxes.nth(2)).toBeFocused(); }); test('should paste text into the last two input boxes when pasting 2 digits after typing 2 digits', async ({ From 9b3910093282707d6a02fb3f17fc8d7e3cd5e4a3 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 7 May 2025 17:04:45 -0400 Subject: [PATCH 23/81] fix(input-otp): update emitted events to match the input component --- core/api.txt | 3 + core/src/components.d.ts | 27 +- .../input-otp/input-otp-interface.ts | 7 +- core/src/components/input-otp/input-otp.tsx | 227 ++++++++++-- .../input-otp/test/basic/index.html | 36 +- .../input-otp/test/basic/input-otp.e2e.ts | 339 ++++++++++++++---- .../components/input/test/basic/index.html | 18 + core/src/interface.d.ts | 1 + packages/angular/src/directives/proxies.ts | 33 +- packages/angular/src/index.ts | 4 + .../standalone/src/directives/proxies.ts | 33 +- packages/angular/standalone/src/index.ts | 4 + packages/react/src/components/index.ts | 4 + packages/vue/src/index.ts | 4 + packages/vue/src/proxies.ts | 10 +- 15 files changed, 632 insertions(+), 118 deletions(-) diff --git a/core/api.txt b/core/api.txt index 2b920789d6c..4ca5c9cf2b1 100644 --- a/core/api.txt +++ b/core/api.txt @@ -793,8 +793,11 @@ ion-input-otp,prop,shape,"rectangular" | "round" | "soft",'round',false,false ion-input-otp,prop,size,"large" | "medium" | "small",'medium',false,false ion-input-otp,prop,type,"number" | "text",'number',false,false ion-input-otp,prop,value,null | number | string | undefined,'',false,false +ion-input-otp,event,ionBlur,FocusEvent,true ion-input-otp,event,ionChange,InputOtpChangeEventDetail,true ion-input-otp,event,ionComplete,InputOtpCompleteEventDetail,true +ion-input-otp,event,ionFocus,FocusEvent,true +ion-input-otp,event,ionInput,InputOtpInputEventDetail,true ion-input-otp,css-prop,--background,ios ion-input-otp,css-prop,--background,md ion-input-otp,css-prop,--background-focused,ios diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 1708e7a5dec..33bb28aecf7 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -18,7 +18,7 @@ import { ScrollBaseDetail, ScrollDetail } from "./components/content/content-int import { DatetimeChangeEventDetail, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimePresentation, FormatOptions, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface"; import { SpinnerTypes } from "./components/spinner/spinner-configs"; import { InputChangeEventDetail, InputInputEventDetail } from "./components/input/input-interface"; -import { InputOtpChangeEventDetail, InputOtpCompleteEventDetail } from "./components/input-otp/input-otp-interface"; +import { InputOtpChangeEventDetail, InputOtpCompleteEventDetail, InputOtpInputEventDetail } from "./components/input-otp/input-otp-interface"; import { MenuChangeEventDetail, MenuCloseEventDetail, MenuType, Side } from "./components/menu/menu-interface"; import { ModalBreakpointChangeEventDetail, ModalHandleBehavior } from "./components/modal/modal-interface"; import { NavComponent, NavComponentWithProps, NavOptions, RouterOutletOptions, SwipeGestureHandler, TransitionDoneFn, TransitionInstruction } from "./components/nav/nav-interface"; @@ -56,7 +56,7 @@ export { ScrollBaseDetail, ScrollDetail } from "./components/content/content-int export { DatetimeChangeEventDetail, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimePresentation, FormatOptions, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface"; export { SpinnerTypes } from "./components/spinner/spinner-configs"; export { InputChangeEventDetail, InputInputEventDetail } from "./components/input/input-interface"; -export { InputOtpChangeEventDetail, InputOtpCompleteEventDetail } from "./components/input-otp/input-otp-interface"; +export { InputOtpChangeEventDetail, InputOtpCompleteEventDetail, InputOtpInputEventDetail } from "./components/input-otp/input-otp-interface"; export { MenuChangeEventDetail, MenuCloseEventDetail, MenuType, Side } from "./components/menu/menu-interface"; export { ModalBreakpointChangeEventDetail, ModalHandleBehavior } from "./components/modal/modal-interface"; export { NavComponent, NavComponentWithProps, NavOptions, RouterOutletOptions, SwipeGestureHandler, TransitionDoneFn, TransitionInstruction } from "./components/nav/nav-interface"; @@ -1367,7 +1367,7 @@ export namespace Components { */ "type": 'text' | 'number'; /** - * The value of the OTP input. + * The value of the input group. */ "value"?: string | number | null; } @@ -3990,8 +3990,11 @@ declare global { new (): HTMLIonInputElement; }; interface HTMLIonInputOtpElementEventMap { + "ionInput": InputOtpInputEventDetail; "ionChange": InputOtpChangeEventDetail; "ionComplete": InputOtpCompleteEventDetail; + "ionBlur": FocusEvent; + "ionFocus": FocusEvent; } interface HTMLIonInputOtpElement extends Components.IonInputOtp, HTMLStencilElement { addEventListener(type: K, listener: (this: HTMLIonInputOtpElement, ev: IonInputOtpCustomEvent) => any, options?: boolean | AddEventListenerOptions): void; @@ -6275,13 +6278,25 @@ declare namespace LocalJSX { */ "length"?: number; /** - * Emitted when the value changes + * Emitted when the input group loses focus. + */ + "onIonBlur"?: (event: IonInputOtpCustomEvent) => void; + /** + * The `ionChange` event is fired when the user modifies the input's value. Unlike the `ionInput` event, the `ionChange` event is only fired when changes are committed, not as the user types. The `ionChange` event fires when the `` component loses focus after its value has changed. This event will not emit when programmatically setting the `value` property. */ "onIonChange"?: (event: IonInputOtpCustomEvent) => void; /** - * Emitted when the input is complete (all boxes filled) + * Emitted when all input boxes have been filled with valid values. */ "onIonComplete"?: (event: IonInputOtpCustomEvent) => void; + /** + * Emitted when the input group has focus. + */ + "onIonFocus"?: (event: IonInputOtpCustomEvent) => void; + /** + * The `ionInput` event is fired each time the user modifies the input's value. Unlike the `ionChange` event, the `ionInput` event is fired for each alteration to the input's value. This typically happens for each keystroke as the user types. For elements that accept text input (`type=text`, `type=tel`, etc.), the interface is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others, the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If the input is cleared on edit, the type is `null`. + */ + "onIonInput"?: (event: IonInputOtpCustomEvent) => void; /** * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[0-9]" For text (type="text"): "[a-zA-Z0-9]" */ @@ -6307,7 +6322,7 @@ declare namespace LocalJSX { */ "type"?: 'text' | 'number'; /** - * The value of the OTP input. + * The value of the input group. */ "value"?: string | number | null; } diff --git a/core/src/components/input-otp/input-otp-interface.ts b/core/src/components/input-otp/input-otp-interface.ts index 40c6aa1aa4c..8fb289cfec4 100644 --- a/core/src/components/input-otp/input-otp-interface.ts +++ b/core/src/components/input-otp/input-otp-interface.ts @@ -3,9 +3,12 @@ * why we do not have a `number` type here even though the * `value` prop accepts a `number` type. */ +export interface InputOtpInputEventDetail { + value?: string | null; + event?: Event; +} export interface InputOtpChangeEventDetail { - complete: boolean; - value: string | null; + value?: string | null; event?: Event; } diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 0eb7ea35758..99a66f74be8 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -5,7 +5,11 @@ import { createColorClasses } from '@utils/theme'; import { getIonMode } from '../../global/ionic-global'; import type { Color } from '../../interface'; -import type { InputOtpChangeEventDetail, InputOtpCompleteEventDetail } from './input-otp-interface'; +import type { + InputOtpChangeEventDetail, + InputOtpCompleteEventDetail, + InputOtpInputEventDetail, +} from './input-otp-interface'; @Component({ tag: 'ion-input-otp', @@ -19,6 +23,11 @@ export class InputOTP implements ComponentInterface { private inputRefs: HTMLInputElement[] = []; private inputId = `ion-input-otp-${inputIds++}`; + /** + * The value of the OTP input when it is focused. + */ + private focusedValue?: string | number | null; + @Element() el!: HTMLIonInputOtpElement; @State() private inputValues: string[] = []; @@ -100,20 +109,49 @@ export class InputOTP implements ComponentInterface { @Prop() type: 'text' | 'number' = 'number'; /** - * The value of the OTP input. + * The value of the input group. */ @Prop({ mutable: true }) value?: string | number | null = ''; /** - * Emitted when the value changes + * The `ionInput` event is fired each time the user modifies the input's value. + * Unlike the `ionChange` event, the `ionInput` event is fired for each alteration + * to the input's value. This typically happens for each keystroke as the user types. + * + * For elements that accept text input (`type=text`, `type=tel`, etc.), the interface + * is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others, + * the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If + * the input is cleared on edit, the type is `null`. + */ + @Event() ionInput!: EventEmitter; + + /** + * The `ionChange` event is fired when the user modifies the input's value. + * Unlike the `ionInput` event, the `ionChange` event is only fired when changes + * are committed, not as the user types. + * + * The `ionChange` event fires when the `` component loses + * focus after its value has changed. + * + * This event will not emit when programmatically setting the `value` property. */ @Event() ionChange!: EventEmitter; /** - * Emitted when the input is complete (all boxes filled) + * Emitted when all input boxes have been filled with valid values. */ @Event() ionComplete!: EventEmitter; + /** + * Emitted when the input group loses focus. + */ + @Event() ionBlur!: EventEmitter; + + /** + * Emitted when the input group has focus. + */ + @Event() ionFocus!: EventEmitter; + @Watch('value') valueChanged() { this.initializeValues(); @@ -123,6 +161,12 @@ export class InputOTP implements ComponentInterface { this.initializeValues(); } + /** + * Initializes the input values array based on the current value prop. + * This splits the value into individual characters and validates them against + * the allowed pattern. The values are then used as the values in the native + * input boxes and the value of the input group is updated. + */ private initializeValues() { if (this.value != null && String(this.value).length > 0) { const chars = String(this.value).split('').slice(0, this.length); @@ -137,7 +181,7 @@ export class InputOTP implements ComponentInterface { } /** - * Get the regex pattern for allowed characters + * Get the regex pattern for allowed characters. * If a pattern is provided, use it to create a regex pattern * Otherwise, use the default regex pattern based on type */ @@ -147,12 +191,12 @@ export class InputOTP implements ComponentInterface { if (pattern) { return new RegExp(`^${pattern}$`); } - return type === 'number' ? /^[0-9]$/ : /^[a-zA-Z0-9]$/i; + return type === 'number' ? /^[0-9]$/ : /^[a-zA-Z0-9]$/; } /** - * Get the default value for inputmode - * If inputmode is provided, use it + * Get the default value for inputmode. + * If inputmode is provided, use it. * Otherwise, use the default inputmode based on type */ private getInputmode(): string { @@ -168,23 +212,54 @@ export class InputOTP implements ComponentInterface { } } - private updateValue() { + /** + * Updates the value of the input group. + * This updates the value of the input group and emits an `ionChange` event. + * If all of the input boxes are filled, it emits an `ionComplete` event. + */ + private updateValue(event: Event) { const { inputValues, length } = this; const newValue = inputValues.join(''); this.value = newValue; - this.ionChange.emit({ - value: newValue, - complete: newValue.length === length, - }); - + this.emitIonInput(event); if (newValue.length === length) { this.ionComplete.emit({ value: newValue }); } } - private handleInput(index: number, value: string) { + /** + * Emits an `ionChange` event. + * This API should be called for user committed changes. + * This API should not be used for external value changes. + */ + private emitIonChange(event: Event) { + const { value } = this; + + // Checks for both null and undefined values + const newValue = value == null ? value : value.toString(); + + this.ionChange.emit({ value: newValue, event }); + } + + /** + * Emits an `ionInput` event. + * This is used to emit the input value when the user types, + * backspaces, or pastes. + */ + private emitIonInput(event: Event) { + const { value } = this; + + // Checks for both null and undefined values + const newValue = value == null ? value : value.toString(); + + this.ionInput.emit({ value: newValue, event }); + } + + private onInput = (index: number) => (event: InputEvent) => { const { validKeys } = this; + const value = (event.target as HTMLInputElement).value; + // Only allow input if it's a single character and matches the pattern if (value.length > 1 || (value.length > 0 && !validKeys.test(value))) { // Reset the input value if not valid @@ -213,10 +288,25 @@ export class InputOTP implements ComponentInterface { if (value.length > 0) { this.focusNext(targetIndex); } - this.updateValue(); - } + this.updateValue(event); + }; - private handleKeyDown(index: number, event: KeyboardEvent) { + /** + * Handles keyboard navigation and input for the OTP component. + * + * Navigation: + * - Backspace: Clears current input and moves to previous box if empty + * - Arrow Left/Right: Moves focus between input boxes + * - Tab: Allows normal tab navigation between components + * + * Input Behavior: + * - Validates input against the allowed pattern + * - When entering a key in a filled box: + * - Shifts existing values right if there is room + * - Updates the value of the input group + * - Prevents default behavior to avoid automatic focus shift + */ + private onKeyDown = (index: number) => (event: KeyboardEvent) => { const { length } = this; if (event.key === 'Backspace') { @@ -237,7 +327,7 @@ export class InputOTP implements ComponentInterface { this.inputRefs[i].value = this.inputValues[i] || ''; } - this.updateValue(); + this.updateValue(event); event.preventDefault(); } else if (!this.inputValues[index] && index > 0) { // If current input is empty, move to previous input @@ -258,8 +348,8 @@ export class InputOTP implements ComponentInterface { } // If the input box contains a value and the key being - // entered is a valid key for the input box, update the value, - // shift the values to the right if there is room. + // entered is a valid key for the input box update the value + // and shift the values to the right if there is room. if (this.inputValues[index] && this.validKeys.test(event.key)) { if (!this.inputValues[length - 1]) { for (let i = length - 1; i > index; i--) { @@ -269,22 +359,33 @@ export class InputOTP implements ComponentInterface { } this.inputValues[index] = event.key; this.inputRefs[index].value = event.key; - this.updateValue(); + this.updateValue(event); // Prevent default to avoid the browser from // automatically moving the focus to the next input event.preventDefault(); } - } + }; - private handlePaste(event: ClipboardEvent) { + /** + * Handles pasting text into the input OTP component. + * This function prevents the default paste behavior and + * validates the pasted text against the allowed pattern. + * It then updates the value of the input group and focuses + * the next empty input after pasting. + */ + private onPaste = (event: ClipboardEvent) => { const { inputRefs, length, validKeys } = this; event.preventDefault(); const pastedText = event.clipboardData?.getData('text'); + // If there is no pasted text, still emit the input change event + // because this is how the native input element behaves + // but return early because there is nothing to paste. if (!pastedText) { + this.emitIonInput(event); return; } @@ -306,7 +407,7 @@ export class InputOTP implements ComponentInterface { } }); - this.updateValue(); + this.updateValue(event); // Focus the next empty input after pasting // If all boxes are filled, focus the last input @@ -316,8 +417,11 @@ export class InputOTP implements ComponentInterface { } else { inputRefs[length - 1]?.focus(); } - } + }; + /** + * Focuses the next input box. + */ private focusNext(currentIndex: number) { const { inputRefs, length } = this; if (currentIndex < length - 1) { @@ -325,6 +429,9 @@ export class InputOTP implements ComponentInterface { } } + /** + * Focuses the previous input box. + */ private focusPrevious(currentIndex: number) { const { inputRefs } = this; if (currentIndex > 0) { @@ -332,6 +439,13 @@ export class InputOTP implements ComponentInterface { } } + /** + * Parses the separators prop into an array of numbers. + * + * If the separators prop is not provided, returns an empty array. + * If the separators prop is an array, returns it as is. + * If the separators prop is a string, splits it by commas and parses each part as a number. + */ private get parsedSeparators(): number[] { const { separators } = this; if (separators === undefined) { @@ -346,6 +460,12 @@ export class InputOTP implements ComponentInterface { .filter((pos) => !isNaN(pos)); } + /** + * Determines if a separator should be shown for a given index. + * + * This function checks if the separators prop is set to 'all' or + * if the index is included in the separators array. + */ private showSeparator(index: number) { const { length, separators } = this; if (separators === 'all') { @@ -354,25 +474,58 @@ export class InputOTP implements ComponentInterface { return this.parsedSeparators.includes(index + 1) && index < length - 1; } - private handleFocus(index: number) { + /** + * Handles the focus behavior for the input OTP component. + * Emits the `ionFocus` event when the input group gains focus. + */ + private onFocus = (index: number) => (event: FocusEvent) => { const { inputRefs } = this; + // Only emit ionFocus and set the focusedValue when the + // component first gains focus + if (!this.hasFocus) { + this.ionFocus.emit(event); + this.focusedValue = this.value; + } this.hasFocus = true; + // When an input receives focus, make it the only tabbable element inputRefs.forEach((input, i) => { input.tabIndex = i === index ? 0 : -1; }); - } + }; - private handleBlur(ev: FocusEvent) { + /** + * Handles the blur behavior for the input OTP component. + * Emits the `ionBlur` event when the input group loses focus. + */ + private onBlur = (event: FocusEvent) => { const { inputRefs } = this; - const relatedTarget = ev.relatedTarget as HTMLElement; - if (relatedTarget == null || !inputRefs.includes(relatedTarget as HTMLInputElement)) { + const relatedTarget = event.relatedTarget as HTMLElement; + + // Do not emit blur if we're moving to another input box in the same component + const isInternalFocus = relatedTarget != null && inputRefs.includes(relatedTarget as HTMLInputElement); + + if (!isInternalFocus) { this.hasFocus = false; + // Reset tabIndexes when focus leaves the component this.updateTabIndexes(); + + // Always emit ionBlur when focus leaves the component + this.ionBlur.emit(event); + + // Only emit ionChange if the value has actually changed + if (this.focusedValue !== this.value) { + this.emitIonChange(event); + } } - } + }; + /** + * Updates the tabIndexes for the input boxes. + * This is used to ensure that the correct input is + * focused when the user navigates using the tab key. + */ private updateTabIndexes() { const { inputRefs, inputValues, length } = this; @@ -472,11 +625,11 @@ export class InputOTP implements ComponentInterface { value={inputValues[index] || ''} autocomplete={index === 0 ? 'one-time-code' : 'off'} ref={(el) => (inputRefs[index] = el as HTMLInputElement)} - onInput={(e) => this.handleInput(index, (e.target as HTMLInputElement).value)} - onKeyDown={(e) => this.handleKeyDown(index, e)} - onPaste={(e) => this.handlePaste(e)} - onFocus={() => this.handleFocus(index)} - onBlur={(e) => this.handleBlur(e)} + onInput={this.onInput(index)} + onBlur={this.onBlur} + onFocus={this.onFocus(index)} + onKeyDown={this.onKeyDown(index)} + onPaste={this.onPaste} /> {this.showSeparator(index) &&
}
diff --git a/core/src/components/input-otp/test/basic/index.html b/core/src/components/input-otp/test/basic/index.html index 32d66045f34..354021052bf 100644 --- a/core/src/components/input-otp/test/basic/index.html +++ b/core/src/components/input-otp/test/basic/index.html @@ -50,9 +50,15 @@

Default

Types

Numbers only - Letters and numbers - Custom Pattern: a-f and A-F - Custom Pattern: D-L + + Letters and numbers + + + Custom Pattern: a-f and A-F + + + Custom Pattern: D-L +
@@ -79,13 +85,33 @@

Invalid

const inputOtpTypes = document.querySelectorAll('.input-otp-type'); - // Display value under the different input types on ionChange + // Display value under the different input types on ionInput inputOtpTypes.forEach((inputOtpType) => { - inputOtpType.addEventListener('ionChange', (event) => { + inputOtpType.addEventListener('ionInput', (event) => { const displayValue = event.detail.value != '' ? `(value: ${event.detail.value})` : ''; inputOtpType.querySelector('#value').textContent = displayValue; }); }); + + document.addEventListener('ionChange', (ev) => { + console.log('ionChange', ev); + }); + + document.addEventListener('ionInput', (ev) => { + console.log('ionInput', ev); + }); + + document.addEventListener('ionComplete', (ev) => { + console.log('ionComplete', ev); + }); + + document.addEventListener('ionFocus', (ev) => { + console.log('ionFocus', ev); + }); + + document.addEventListener('ionBlur', (ev) => { + console.log('ionBlur', ev); + }); diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index 0d29f2d3d17..9722ccb4bcf 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -1,6 +1,23 @@ import { expect } from '@playwright/test'; import { configs, test } from '@utils/test/playwright'; +/** + * Simulates a paste event in an input element with the given value + */ +async function simulatePaste(input: any, value: string) { + await input.evaluate((input: any, value: string) => { + const event = new ClipboardEvent('paste', { + bubbles: true, + cancelable: true, + clipboardData: new DataTransfer(), + }); + if (event.clipboardData) { + event.clipboardData.setData('text', value); + } + input.dispatchEvent(event); + }, value); +} + /** * Functionality is the same across modes & directions */ @@ -193,7 +210,9 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => await expect(inputBoxes.nth(1)).toBeFocused(); }); - test('should update the 3rd input value and shift the values to the right when typing in the 3rd box containing a value', async ({ page }) => { + test('should update the 3rd input value and shift the values to the right when typing in the 3rd box containing a value', async ({ + page, + }) => { await page.setContent( ` Description @@ -378,17 +397,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); - await firstInput.evaluate((input, value) => { - const event = new ClipboardEvent('paste', { - bubbles: true, - cancelable: true, - clipboardData: new DataTransfer(), - }); - if (event.clipboardData) { - event.clipboardData.setData('text', value); - } - input.dispatchEvent(event); - }, '12'); + await simulatePaste(firstInput, '12'); const inputBoxes = page.locator('ion-input-otp input'); await expect(inputBoxes.nth(0)).toHaveValue('1'); @@ -405,17 +414,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); - await firstInput.evaluate((input, value) => { - const event = new ClipboardEvent('paste', { - bubbles: true, - cancelable: true, - clipboardData: new DataTransfer(), - }); - if (event.clipboardData) { - event.clipboardData.setData('text', value); - } - input.dispatchEvent(event); - }, '1234'); + await simulatePaste(firstInput, '1234'); const inputBoxes = page.locator('ion-input-otp input'); await expect(inputBoxes.nth(0)).toHaveValue('1'); @@ -434,17 +433,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => const thirdInput = page.locator('ion-input-otp input').nth(2); await thirdInput.focus(); - await thirdInput.evaluate((input, value) => { - const event = new ClipboardEvent('paste', { - bubbles: true, - cancelable: true, - clipboardData: new DataTransfer(), - }); - if (event.clipboardData) { - event.clipboardData.setData('text', value); - } - input.dispatchEvent(event); - }, '12'); + await simulatePaste(thirdInput, '12'); const inputBoxes = page.locator('ion-input-otp input'); await expect(inputBoxes.nth(0)).toHaveValue('1'); @@ -463,20 +452,8 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); - await page.keyboard.type('12'); - - await firstInput.evaluate((input, value) => { - const event = new ClipboardEvent('paste', { - bubbles: true, - cancelable: true, - clipboardData: new DataTransfer(), - }); - if (event.clipboardData) { - event.clipboardData.setData('text', value); - } - input.dispatchEvent(event); - }, '34'); + await simulatePaste(firstInput, '34'); const inputBoxes = page.locator('ion-input-otp input'); await expect(inputBoxes.nth(0)).toHaveValue('1'); @@ -490,20 +467,8 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); - await page.keyboard.type('9999'); - - await firstInput.evaluate((input, value) => { - const event = new ClipboardEvent('paste', { - bubbles: true, - cancelable: true, - clipboardData: new DataTransfer(), - }); - if (event.clipboardData) { - event.clipboardData.setData('text', value); - } - input.dispatchEvent(event); - }, '1234'); + await simulatePaste(firstInput, '1234'); const inputBoxes = page.locator('ion-input-otp input'); await expect(inputBoxes.nth(0)).toHaveValue('1'); @@ -512,4 +477,258 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => await expect(inputBoxes.nth(3)).toHaveValue('4'); }); }); + + test.describe(title('input-otp: events: ionInput functionality'), () => { + test('should emit ionInput event when typing', async ({ page }) => { + await page.setContent(`Description`, config); + + const ionInput = await page.spyOnEvent('ionInput'); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('1'); + await ionInput.next(); + await expect(ionInput).toHaveReceivedEventDetail({ value: '1', event: { isTrusted: true } }); + await expect(ionInput).toHaveReceivedEventTimes(1); + + await page.keyboard.type('2'); + await ionInput.next(); + await expect(ionInput).toHaveReceivedEventDetail({ value: '12', event: { isTrusted: true } }); + await expect(ionInput).toHaveReceivedEventTimes(2); + + await page.keyboard.type('3'); + await ionInput.next(); + await expect(ionInput).toHaveReceivedEventDetail({ value: '123', event: { isTrusted: true } }); + await expect(ionInput).toHaveReceivedEventTimes(3); + + await page.keyboard.type('4'); + await ionInput.next(); + await expect(ionInput).toHaveReceivedEventDetail({ value: '1234', event: { isTrusted: true } }); + await expect(ionInput).toHaveReceivedEventTimes(4); + }); + + test('should emit ionInput event when backspacing', async ({ page }) => { + await page.setContent(`Description`, config); + + const ionInput = await page.spyOnEvent('ionInput'); + + await page.keyboard.press('Tab'); + + await page.keyboard.press('Backspace'); + await ionInput.next(); + await expect(ionInput).toHaveReceivedEventDetail({ value: '123', event: { isTrusted: true } }); + await expect(ionInput).toHaveReceivedEventTimes(1); + + await page.keyboard.press('Backspace'); + await ionInput.next(); + await expect(ionInput).toHaveReceivedEventDetail({ value: '12', event: { isTrusted: true } }); + await expect(ionInput).toHaveReceivedEventTimes(2); + + await page.keyboard.press('Backspace'); + await ionInput.next(); + await expect(ionInput).toHaveReceivedEventDetail({ value: '1', event: { isTrusted: true } }); + await expect(ionInput).toHaveReceivedEventTimes(3); + + await page.keyboard.press('Backspace'); + await ionInput.next(); + await expect(ionInput).toHaveReceivedEventDetail({ value: '', event: { isTrusted: true } }); + await expect(ionInput).toHaveReceivedEventTimes(4); + }); + + test('should emit ionInput event when pasting', async ({ page }) => { + await page.setContent(`Description`, config); + + const ionInput = await page.spyOnEvent('ionInput'); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + await simulatePaste(firstInput, '12'); + + await ionInput.next(); + await expect(ionInput).toHaveReceivedEventDetail({ value: '12', event: { isTrusted: false } }); + await expect(ionInput).toHaveReceivedEventTimes(1); + }); + + test('should not emit ionInput event when programmatically setting the value', async ({ page }) => { + await page.setContent(`Description`, config); + + const ionInput = await page.spyOnEvent('ionInput'); + + const inputOtp = page.locator('ion-input-otp'); + await inputOtp.evaluate((el: HTMLIonInputOtpElement) => { + el.value = '1234'; + }); + await expect(inputOtp).toHaveJSProperty('value', '1234'); + + await expect(ionInput).not.toHaveReceivedEvent(); + }); + }); + + test.describe(title('input-otp: events: ionChange functionality'), () => { + test('should not emit ionChange event when typing', async ({ page }) => { + await page.setContent(`Description`, config); + + const ionChange = await page.spyOnEvent('ionChange'); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('12'); + + await expect(ionChange).not.toHaveReceivedEvent(); + }); + + test('should emit ionChange event when pasting and then blurring', async ({ page }) => { + await page.setContent(`Description`, config); + + const ionChange = await page.spyOnEvent('ionChange'); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + await simulatePaste(firstInput, '12'); + + // Click outside the input to trigger the blur event + await page.mouse.click(0, 0); + + await ionChange.next(); + await expect(ionChange).toHaveReceivedEventDetail({ value: '12', event: { isTrusted: true } }); + await expect(ionChange).toHaveReceivedEventTimes(1); + }); + + test('should emit ionChange event when blurring with a new value', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const ionChange = await page.spyOnEvent('ionChange'); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('12'); + + // Click outside the input to trigger the blur event + await page.mouse.click(0, 0); + + await ionChange.next(); + await expect(ionChange).toHaveReceivedEvent(); + await expect(ionChange).toHaveReceivedEventTimes(1); + }); + + test('should not emit ionChange event when blurring with the same value', async ({ page }) => { + await page.setContent(`Description`, config); + + const ionBlur = await page.spyOnEvent('ionBlur'); + const ionChange = await page.spyOnEvent('ionChange'); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + // Click outside the input to trigger the blur event + await page.mouse.click(0, 0); + + await ionBlur.next(); + await expect(ionBlur).toHaveReceivedEvent(); + await expect(ionBlur).toHaveReceivedEventTimes(1); + await expect(ionChange).not.toHaveReceivedEvent(); + }); + + test('should not emit ionChange event when programmatically setting the value', async ({ page }) => { + await page.setContent(`Description`, config); + + const ionChange = await page.spyOnEvent('ionChange'); + + const inputOtp = page.locator('ion-input-otp'); + await inputOtp.evaluate((el: HTMLIonInputOtpElement) => { + el.value = '1234'; + }); + await expect(inputOtp).toHaveJSProperty('value', '1234'); + + await expect(ionChange).not.toHaveReceivedEvent(); + }); + }); + + test.describe(title('input-otp: events: ionComplete functionality'), () => { + test('should emit ionComplete event when all input boxes are filled', async ({ page }) => { + await page.setContent(`Description`, config); + + const ionComplete = await page.spyOnEvent('ionComplete'); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('1234'); + + await ionComplete.next(); + await expect(ionComplete).toHaveReceivedEventDetail({ value: '1234' }); + await expect(ionComplete).toHaveReceivedEventTimes(1); + }); + }); + + test.describe(title('input-otp: events: ionFocus functionality'), () => { + test('should emit ionFocus event when input box is focused', async ({ page }) => { + await page.setContent(`Description`, config); + + const ionFocus = await page.spyOnEvent('ionFocus'); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await ionFocus.next(); + await expect(ionFocus).toHaveReceivedEvent(); + await expect(ionFocus).toHaveReceivedEventTimes(1); + }); + + test('should not emit ionFocus event when focus is moved to another input in the same component', async ({ + page, + }) => { + await page.setContent(`Description`, config); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + const ionFocus = await page.spyOnEvent('ionFocus'); + + await page.keyboard.press('ArrowRight'); + + await expect(ionFocus).not.toHaveReceivedEvent(); + }); + }); + + test.describe(title('input-otp: events: ionBlur functionality'), () => { + test('should emit ionBlur event when focus leaves the component', async ({ page }) => { + await page.setContent(`Description`, config); + + const ionBlur = await page.spyOnEvent('ionBlur'); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + // Click outside the input to trigger the blur event + await page.mouse.click(0, 0); + + await ionBlur.next(); + await expect(ionBlur).toHaveReceivedEvent(); + await expect(ionBlur).toHaveReceivedEventTimes(1); + }); + + test('should not emit ionBlur event when focus is moved to another input in the same component', async ({ + page, + }) => { + await page.setContent(`Description`, config); + + const ionBlur = await page.spyOnEvent('ionBlur'); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.press('ArrowRight'); + + await expect(ionBlur).not.toHaveReceivedEvent(); + }); + }); }); diff --git a/core/src/components/input/test/basic/index.html b/core/src/components/input/test/basic/index.html index 9ab5c6ecab1..9fa22e9856c 100644 --- a/core/src/components/input/test/basic/index.html +++ b/core/src/components/input/test/basic/index.html @@ -53,5 +53,23 @@

Default

+ + diff --git a/core/src/interface.d.ts b/core/src/interface.d.ts index 6432a506a72..3dcfb6aec2f 100644 --- a/core/src/interface.d.ts +++ b/core/src/interface.d.ts @@ -12,6 +12,7 @@ export { CheckboxCustomEvent } from './components/checkbox/checkbox-interface'; export { DatetimeCustomEvent, DatetimeHighlightStyle } from './components/datetime/datetime-interface'; export { InfiniteScrollCustomEvent } from './components/infinite-scroll/infinite-scroll-interface'; export { InputCustomEvent } from './components/input/input-interface'; +export { InputOtpCustomEvent } from './components/input-otp/input-otp-interface'; export { CounterFormatter } from './components/item/item-interface'; export { ItemSlidingCustomEvent } from './components/item-sliding/item-sliding-interface'; export { LoadingOptions } from './components/loading/loading-interface'; diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index c36d803d7c3..e97ff3fd76f 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -1032,23 +1032,50 @@ export class IonInputOtp { constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { c.detach(); this.el = r.nativeElement; - proxyOutputs(this, this.el, ['ionChange', 'ionComplete']); + proxyOutputs(this, this.el, ['ionInput', 'ionChange', 'ionComplete', 'ionBlur', 'ionFocus']); } } +import type { InputOtpInputEventDetail as IIonInputOtpInputOtpInputEventDetail } from '@ionic/core'; import type { InputOtpChangeEventDetail as IIonInputOtpInputOtpChangeEventDetail } from '@ionic/core'; import type { InputOtpCompleteEventDetail as IIonInputOtpInputOtpCompleteEventDetail } from '@ionic/core'; export declare interface IonInputOtp extends Components.IonInputOtp { /** - * Emitted when the value changes + * The `ionInput` event is fired each time the user modifies the input's value. +Unlike the `ionChange` event, the `ionInput` event is fired for each alteration +to the input's value. This typically happens for each keystroke as the user types. + +For elements that accept text input (`type=text`, `type=tel`, etc.), the interface +is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others, +the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If +the input is cleared on edit, the type is `null`. + */ + ionInput: EventEmitter>; + /** + * The `ionChange` event is fired when the user modifies the input's value. +Unlike the `ionInput` event, the `ionChange` event is only fired when changes +are committed, not as the user types. + +The `ionChange` event fires when the `` component loses +focus after its value has changed. + +This event will not emit when programmatically setting the `value` property. */ ionChange: EventEmitter>; /** - * Emitted when the input is complete (all boxes filled) + * Emitted when all input boxes have been filled with valid values. */ ionComplete: EventEmitter>; + /** + * Emitted when the input group loses focus. + */ + ionBlur: EventEmitter>; + /** + * Emitted when the input group has focus. + */ + ionFocus: EventEmitter>; } diff --git a/packages/angular/src/index.ts b/packages/angular/src/index.ts index da4a6c549c0..cd2d82ea4b0 100644 --- a/packages/angular/src/index.ts +++ b/packages/angular/src/index.ts @@ -86,6 +86,10 @@ export { InfiniteScrollCustomEvent, InputCustomEvent, InputChangeEventDetail, + InputOtpCustomEvent, + InputOtpChangeEventDetail, + InputOtpCompleteEventDetail, + InputOtpInputEventDetail, ItemReorderEventDetail, ItemReorderCustomEvent, ItemSlidingCustomEvent, diff --git a/packages/angular/standalone/src/directives/proxies.ts b/packages/angular/standalone/src/directives/proxies.ts index cec46837067..bae89e29e18 100644 --- a/packages/angular/standalone/src/directives/proxies.ts +++ b/packages/angular/standalone/src/directives/proxies.ts @@ -999,23 +999,50 @@ export class IonInputOtp { constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { c.detach(); this.el = r.nativeElement; - proxyOutputs(this, this.el, ['ionChange', 'ionComplete']); + proxyOutputs(this, this.el, ['ionInput', 'ionChange', 'ionComplete', 'ionBlur', 'ionFocus']); } } +import type { InputOtpInputEventDetail as IIonInputOtpInputOtpInputEventDetail } from '@ionic/core/components'; import type { InputOtpChangeEventDetail as IIonInputOtpInputOtpChangeEventDetail } from '@ionic/core/components'; import type { InputOtpCompleteEventDetail as IIonInputOtpInputOtpCompleteEventDetail } from '@ionic/core/components'; export declare interface IonInputOtp extends Components.IonInputOtp { /** - * Emitted when the value changes + * The `ionInput` event is fired each time the user modifies the input's value. +Unlike the `ionChange` event, the `ionInput` event is fired for each alteration +to the input's value. This typically happens for each keystroke as the user types. + +For elements that accept text input (`type=text`, `type=tel`, etc.), the interface +is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others, +the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If +the input is cleared on edit, the type is `null`. + */ + ionInput: EventEmitter>; + /** + * The `ionChange` event is fired when the user modifies the input's value. +Unlike the `ionInput` event, the `ionChange` event is only fired when changes +are committed, not as the user types. + +The `ionChange` event fires when the `` component loses +focus after its value has changed. + +This event will not emit when programmatically setting the `value` property. */ ionChange: EventEmitter>; /** - * Emitted when the input is complete (all boxes filled) + * Emitted when all input boxes have been filled with valid values. */ ionComplete: EventEmitter>; + /** + * Emitted when the input group loses focus. + */ + ionBlur: EventEmitter>; + /** + * Emitted when the input group has focus. + */ + ionFocus: EventEmitter>; } diff --git a/packages/angular/standalone/src/index.ts b/packages/angular/standalone/src/index.ts index 741fef2831f..f05e383dd4f 100644 --- a/packages/angular/standalone/src/index.ts +++ b/packages/angular/standalone/src/index.ts @@ -83,6 +83,10 @@ export { InfiniteScrollCustomEvent, InputCustomEvent, InputChangeEventDetail, + InputOtpCustomEvent, + InputOtpChangeEventDetail, + InputOtpCompleteEventDetail, + InputOtpInputEventDetail, ItemReorderEventDetail, ItemReorderCustomEvent, ItemSlidingCustomEvent, diff --git a/packages/react/src/components/index.ts b/packages/react/src/components/index.ts index 9b1ab3d26c7..417b826866a 100644 --- a/packages/react/src/components/index.ts +++ b/packages/react/src/components/index.ts @@ -43,6 +43,10 @@ export { InputCustomEvent, InputChangeEventDetail, InputInputEventDetail, + InputOtpCustomEvent, + InputOtpChangeEventDetail, + InputOtpCompleteEventDetail, + InputOtpInputEventDetail, ItemReorderEventDetail, ItemReorderCustomEvent, ItemSlidingCustomEvent, diff --git a/packages/vue/src/index.ts b/packages/vue/src/index.ts index 1aaab322d91..0a6aac15970 100644 --- a/packages/vue/src/index.ts +++ b/packages/vue/src/index.ts @@ -80,6 +80,10 @@ export { InfiniteScrollCustomEvent, InputCustomEvent, InputChangeEventDetail, + InputOtpCustomEvent, + InputOtpChangeEventDetail, + InputOtpCompleteEventDetail, + InputOtpInputEventDetail, ItemReorderEventDetail, ItemReorderCustomEvent, ItemSlidingCustomEvent, diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index 7bf8182f177..7418524af51 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -505,11 +505,17 @@ export const IonInputOtp: StencilVueComponent = /*@__PURE__*/ d 'shape', 'type', 'value', + 'ionInput', 'ionChange', - 'ionComplete' + 'ionComplete', + 'ionBlur', + 'ionFocus' ], [ + 'ionInput', 'ionChange', - 'ionComplete' + 'ionComplete', + 'ionBlur', + 'ionFocus' ]); From 1666307b0aa2a153c3d3f5513e6a989b0ade29b6 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 7 May 2025 17:24:06 -0400 Subject: [PATCH 24/81] fix(input-otp): handle arrow navigation in RTL and add RTL tests --- core/src/components/input-otp/input-otp.tsx | 20 ++++++++----- .../input-otp/test/basic/input-otp.e2e.ts | 30 +++++++++++++------ 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 99a66f74be8..974137aa5f6 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -1,5 +1,6 @@ import type { ComponentInterface, EventEmitter } from '@stencil/core'; import { Component, Element, Event, Host, Prop, State, h, Watch } from '@stencil/core'; +import { isRTL } from '@utils/rtl'; import { createColorClasses } from '@utils/theme'; import { getIonMode } from '../../global/ionic-global'; @@ -308,6 +309,7 @@ export class InputOTP implements ComponentInterface { */ private onKeyDown = (index: number) => (event: KeyboardEvent) => { const { length } = this; + const rtl = isRTL(this.el); if (event.key === 'Backspace') { if (this.inputValues[index]) { @@ -333,14 +335,18 @@ export class InputOTP implements ComponentInterface { // If current input is empty, move to previous input this.focusPrevious(index); } - } else if (event.key === 'ArrowLeft') { + } else if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') { event.preventDefault(); - this.focusPrevious(index); - } else if (event.key === 'ArrowRight') { - event.preventDefault(); - // Only allow moving right if current box has a value - if (this.inputValues[index] && index < length - 1) { - this.focusNext(index); + const isLeft = event.key === 'ArrowLeft'; + const shouldMoveNext = (isLeft && rtl) || (!isLeft && !rtl); + + // Only allow moving to the next input if the current has a value + if (shouldMoveNext) { + if (this.inputValues[index] && index < length - 1) { + this.focusNext(index); + } + } else { + this.focusPrevious(index); } } else if (event.key === 'Tab') { // Let all tab events proceed normally diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index 9722ccb4bcf..6d797dbc7ad 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -19,9 +19,9 @@ async function simulatePaste(input: any, value: string) { } /** - * Functionality is the same across modes & directions + * Functionality is the same across modes */ -configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { +configs({ modes: ['ios'] }).forEach(({ title, config }) => { test.describe(title('input-otp: basic functionality'), () => { test('should render with 4 input boxes and a default value', async ({ page }) => { await page.setContent( @@ -379,8 +379,15 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => ); await page.keyboard.press('Tab'); - await page.keyboard.press('ArrowLeft'); - await page.keyboard.press('ArrowLeft'); + + const isRTL = await page.evaluate(() => document.dir === 'rtl'); + if (isRTL) { + await page.keyboard.press('ArrowRight'); + await page.keyboard.press('ArrowRight'); + } else { + await page.keyboard.press('ArrowLeft'); + await page.keyboard.press('ArrowLeft'); + } await page.keyboard.press('Backspace'); const inputBoxes = page.locator('ion-input-otp input'); @@ -477,8 +484,13 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => await expect(inputBoxes.nth(3)).toHaveValue('4'); }); }); +}); - test.describe(title('input-otp: events: ionInput functionality'), () => { +/** + * Events are the same across modes & directions + */ +configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('input-otp: events: ionInput'), () => { test('should emit ionInput event when typing', async ({ page }) => { await page.setContent(`Description`, config); @@ -565,7 +577,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => }); }); - test.describe(title('input-otp: events: ionChange functionality'), () => { + test.describe(title('input-otp: events: ionChange'), () => { test('should not emit ionChange event when typing', async ({ page }) => { await page.setContent(`Description`, config); @@ -652,7 +664,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => }); }); - test.describe(title('input-otp: events: ionComplete functionality'), () => { + test.describe(title('input-otp: events: ionComplete'), () => { test('should emit ionComplete event when all input boxes are filled', async ({ page }) => { await page.setContent(`Description`, config); @@ -669,7 +681,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => }); }); - test.describe(title('input-otp: events: ionFocus functionality'), () => { + test.describe(title('input-otp: events: ionFocus'), () => { test('should emit ionFocus event when input box is focused', async ({ page }) => { await page.setContent(`Description`, config); @@ -699,7 +711,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => }); }); - test.describe(title('input-otp: events: ionBlur functionality'), () => { + test.describe(title('input-otp: events: ionBlur'), () => { test('should emit ionBlur event when focus leaves the component', async ({ page }) => { await page.setContent(`Description`, config); From f9a33ae0f54c6ab0ac544b7c95d305afe76c9884 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 7 May 2025 18:16:17 -0400 Subject: [PATCH 25/81] test(input): revert logs --- .../src/components/input/test/basic/index.html | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/core/src/components/input/test/basic/index.html b/core/src/components/input/test/basic/index.html index 9fa22e9856c..9ab5c6ecab1 100644 --- a/core/src/components/input/test/basic/index.html +++ b/core/src/components/input/test/basic/index.html @@ -53,23 +53,5 @@

Default

- - From a9a31ab41317e1d75a5c65e8de6f87f8be064078 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 7 May 2025 18:52:31 -0400 Subject: [PATCH 26/81] fix(input-otp): print a warning when separators exceed length --- core/src/components/input-otp/input-otp.tsx | 79 +++++++++++------ .../test/separators/input-otp.e2e.ts | 88 +++++++++++++++++++ 2 files changed, 138 insertions(+), 29 deletions(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 974137aa5f6..7e1e8a99b11 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -1,5 +1,6 @@ import type { ComponentInterface, EventEmitter } from '@stencil/core'; import { Component, Element, Event, Host, Prop, State, h, Watch } from '@stencil/core'; +import { printIonWarning } from '@utils/logging'; import { isRTL } from '@utils/rtl'; import { createColorClasses } from '@utils/theme'; @@ -23,6 +24,7 @@ import type { export class InputOTP implements ComponentInterface { private inputRefs: HTMLInputElement[] = []; private inputId = `ion-input-otp-${inputIds++}`; + private parsedSeparators: number[] = []; /** * The value of the OTP input when it is focused. @@ -158,7 +160,52 @@ export class InputOTP implements ComponentInterface { this.initializeValues(); } + /** + * Processes the separators prop into an array of numbers. + * + * If the separators prop is not provided, returns an empty array. + * If the separators prop is 'all', returns an array of all valid positions (1 to length-1). + * If the separators prop is an array, returns it as is. + * If the separators prop is a string, splits it by commas and parses each part as a number. + * + * If the separators are greater than the input length, it will warn and ignore the separators. + */ + @Watch('separators') + @Watch('length') + private processSeparators() { + const { separators, length } = this; + if (separators === undefined) { + this.parsedSeparators = []; + return; + } + + let separatorValues: number[]; + if (separators === 'all') { + separatorValues = Array.from({ length: length - 1 }, (_, i) => i + 1); + } else if (Array.isArray(separators)) { + separatorValues = separators; + } else { + separatorValues = separators + .split(',') + .map((pos) => parseInt(pos, 10)) + .filter((pos) => !isNaN(pos)); + } + + const invalidSeparators = separatorValues.filter((pos) => pos > length); + if (invalidSeparators.length > 0) { + printIonWarning( + `[ion-input-otp] - The following separator positions are greater than the input length (${length}): ${invalidSeparators.join( + ', ' + )}. These separators will be ignored.`, + this.el + ); + } + + this.parsedSeparators = separatorValues.filter((pos) => pos <= length); + } + componentWillLoad() { + this.processSeparators(); this.initializeValues(); } @@ -446,37 +493,11 @@ export class InputOTP implements ComponentInterface { } /** - * Parses the separators prop into an array of numbers. - * - * If the separators prop is not provided, returns an empty array. - * If the separators prop is an array, returns it as is. - * If the separators prop is a string, splits it by commas and parses each part as a number. - */ - private get parsedSeparators(): number[] { - const { separators } = this; - if (separators === undefined) { - return []; - } - if (Array.isArray(separators)) { - return separators; - } - return separators - .split(',') - .map((pos) => parseInt(pos, 10)) - .filter((pos) => !isNaN(pos)); - } - - /** - * Determines if a separator should be shown for a given index. - * - * This function checks if the separators prop is set to 'all' or - * if the index is included in the separators array. + * Determines if a separator should be shown for a given index by + * checking if the index is included in the parsed separators array. */ private showSeparator(index: number) { - const { length, separators } = this; - if (separators === 'all') { - return index < length - 1; - } + const { length } = this; return this.parsedSeparators.includes(index + 1) && index < length - 1; } diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts b/core/src/components/input-otp/test/separators/input-otp.e2e.ts index fa17a6d5410..e28b3e56bf3 100644 --- a/core/src/components/input-otp/test/separators/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/separators/input-otp.e2e.ts @@ -43,3 +43,91 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { }); }); }); + +/** + * Functionality is the same across modes and directions + */ +configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe.only(title('input-otp: separators functionality'), () => { + test('should render separators after the first and third input box', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const firstSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(1) .input-otp-separator'); + await expect(firstSeparator).toHaveCount(1); + + const secondSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(2) .input-otp-separator'); + await expect(secondSeparator).toHaveCount(0); + + const thirdSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(3) .input-otp-separator'); + await expect(thirdSeparator).toHaveCount(1); + }); + + test('should render separators after the second and third input box', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const inputOtp = page.locator('ion-input-otp'); + await inputOtp.evaluate((el: HTMLIonInputOtpElement) => { + el.separators = [2, 3]; + }); + + const firstSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(1) .input-otp-separator'); + await expect(firstSeparator).toHaveCount(0); + + const secondSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(2) .input-otp-separator'); + await expect(secondSeparator).toHaveCount(1); + + const thirdSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(3) .input-otp-separator'); + await expect(thirdSeparator).toHaveCount(1); + }); + + test('should render all separators', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const firstSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(1) .input-otp-separator'); + await expect(firstSeparator).toHaveCount(1); + + const secondSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(2) .input-otp-separator'); + await expect(secondSeparator).toHaveCount(1); + + const thirdSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(3) .input-otp-separator'); + await expect(thirdSeparator).toHaveCount(1); + }); + + test('should warn when setting separators to a position greater than the input length', async ({ page }) => { + const warnings: string[] = []; + + page.on('console', (ev) => { + if (ev.type() === 'warning') { + warnings.push(ev.text()); + } + }); + + await page.setContent( + ` + Description + `, + config + ); + + expect(warnings.length).toBe(1); + expect(warnings[0]).toContain( + '[Ionic Warning]: [ion-input-otp] - The following separator positions are greater than the input length (4): 5, 6, 7. These separators will be ignored.' + ); + }); + }); +}); From 618575d28379fbe45aa19771628f109fd8ace84a Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 7 May 2025 19:06:13 -0400 Subject: [PATCH 27/81] fix(input-otp): warn for incorrectly formatted separator strings --- core/src/components/input-otp/input-otp.tsx | 12 ++++ .../test/separators/input-otp.e2e.ts | 68 ++++++++++++------- 2 files changed, 55 insertions(+), 25 deletions(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 7e1e8a99b11..f853fa43daa 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -179,6 +179,18 @@ export class InputOTP implements ComponentInterface { return; } + if (typeof separators === 'string' && separators !== 'all') { + const isValidFormat = /^(\d+)(,\d+)*$/.test(separators); + if (!isValidFormat) { + printIonWarning( + `[ion-input-otp] - Invalid separators format. Expected a comma-separated list of numbers, an array of numbers, or "all". Received: ${separators}`, + this.el + ); + this.parsedSeparators = []; + return; + } + } + let separatorValues: number[]; if (separators === 'all') { separatorValues = Array.from({ length: length - 1 }, (_, i) => i + 1); diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts b/core/src/components/input-otp/test/separators/input-otp.e2e.ts index e28b3e56bf3..d782c9d9e0c 100644 --- a/core/src/components/input-otp/test/separators/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/separators/input-otp.e2e.ts @@ -48,14 +48,9 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { * Functionality is the same across modes and directions */ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { - test.describe.only(title('input-otp: separators functionality'), () => { + test.describe(title('input-otp: separators functionality'), () => { test('should render separators after the first and third input box', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const firstSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(1) .input-otp-separator'); await expect(firstSeparator).toHaveCount(1); @@ -68,12 +63,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => }); test('should render separators after the second and third input box', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const inputOtp = page.locator('ion-input-otp'); await inputOtp.evaluate((el: HTMLIonInputOtpElement) => { @@ -91,12 +81,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => }); test('should render all separators', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const firstSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(1) .input-otp-separator'); await expect(firstSeparator).toHaveCount(1); @@ -117,17 +102,50 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => } }); - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); expect(warnings.length).toBe(1); expect(warnings[0]).toContain( '[Ionic Warning]: [ion-input-otp] - The following separator positions are greater than the input length (4): 5, 6, 7. These separators will be ignored.' ); }); + + test('should warn when setting separators to an invalid space-separated string', async ({ page }) => { + const warnings: string[] = []; + + page.on('console', (ev) => { + if (ev.type() === 'warning') { + warnings.push(ev.text()); + } + }); + + const invalidSeparators = '1 2 3'; + + await page.setContent(`Description`, config); + + expect(warnings.length).toBe(1); + expect(warnings[0]).toContain( + `[Ionic Warning]: [ion-input-otp] - Invalid separators format. Expected a comma-separated list of numbers, an array of numbers, or "all". Received: ${invalidSeparators}` + ); + }); + + test('should warn when setting separators to an invalid comma-separated string', async ({ page }) => { + const warnings: string[] = []; + + page.on('console', (ev) => { + if (ev.type() === 'warning') { + warnings.push(ev.text()); + } + }); + + const invalidSeparators = '1,d,3'; + + await page.setContent(`Description`, config); + + expect(warnings.length).toBe(1); + expect(warnings[0]).toContain( + `[Ionic Warning]: [ion-input-otp] - Invalid separators format. Expected a comma-separated list of numbers, an array of numbers, or "all". Received: ${invalidSeparators}` + ); + }); }); }); From 344c72accb0fd9b0d7ce65b3e0118a56ffa1d901 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 7 May 2025 20:04:27 -0400 Subject: [PATCH 28/81] feat(input-otp): expose reset and setFocus methods --- core/api.txt | 2 + core/src/components.d.ts | 9 ++ core/src/components/input-otp/input-otp.tsx | 36 ++++++++ .../input-otp/test/basic/index.html | 30 ++++++ .../input-otp/test/basic/input-otp.e2e.ts | 91 +++++++++++++++++++ packages/angular/src/directives/proxies.ts | 3 +- .../standalone/src/directives/proxies.ts | 3 +- 7 files changed, 172 insertions(+), 2 deletions(-) diff --git a/core/api.txt b/core/api.txt index 4ca5c9cf2b1..e3e8428f0f7 100644 --- a/core/api.txt +++ b/core/api.txt @@ -793,6 +793,8 @@ ion-input-otp,prop,shape,"rectangular" | "round" | "soft",'round',false,false ion-input-otp,prop,size,"large" | "medium" | "small",'medium',false,false ion-input-otp,prop,type,"number" | "text",'number',false,false ion-input-otp,prop,value,null | number | string | undefined,'',false,false +ion-input-otp,method,reset,reset() => Promise +ion-input-otp,method,setFocus,setFocus(index?: number) => Promise ion-input-otp,event,ionBlur,FocusEvent,true ion-input-otp,event,ionChange,InputOtpChangeEventDetail,true ion-input-otp,event,ionComplete,InputOtpCompleteEventDetail,true diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 33bb28aecf7..12f46c0c9e6 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1350,10 +1350,19 @@ export namespace Components { * If `true`, the user cannot modify the value. */ "readonly": boolean; + /** + * Resets the input values and focus state. + */ + "reset": () => Promise; /** * Where separators should be shown between input boxes. Can be a comma-separated string or an array of numbers. For example: `"3"` will show a separator after the 3rd input box. `[1,4]` will show a separator after the 1st and 4th input boxes. `"all"` will show a separator between every input box. */ "separators"?: 'all' | string | number[]; + /** + * Sets focus to an input box. + * @param index The index of the input box to focus. If not provided, focuses the first empty input box or the last input if all are filled. The input boxes start at index 0. + */ + "setFocus": (index?: number) => Promise; /** * The shape of the input boxes. If "round" they will have an increased border radius. If "rectangular" they will have no border radius. If "soft" they will have a soft border radius. */ diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index f853fa43daa..8b16fce71e8 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -3,6 +3,7 @@ import { Component, Element, Event, Host, Prop, State, h, Watch } from '@stencil import { printIonWarning } from '@utils/logging'; import { isRTL } from '@utils/rtl'; import { createColorClasses } from '@utils/theme'; +import { Method } from 'ionicons/dist/types/stencil-public-runtime'; import { getIonMode } from '../../global/ionic-global'; import type { Color } from '../../interface'; @@ -240,6 +241,41 @@ export class InputOTP implements ComponentInterface { } } + /** + * Resets the input values and focus state. + */ + @Method() + async reset() { + this.inputValues = Array(this.length).fill(''); + this.value = ''; + + this.focusedValue = null; + this.hasFocus = false; + + this.inputRefs.forEach((input) => { + input.blur(); + }); + + this.updateTabIndexes(); + } + + /** + * Sets focus to an input box. + * @param index The index of the input box to focus. If not provided, + * focuses the first empty input box or the last input if all are filled. + * The input boxes start at index 0. + */ + @Method() + async setFocus(index?: number) { + if (typeof index === 'number') { + const validIndex = Math.max(0, Math.min(index, this.length - 1)); + this.inputRefs[validIndex]?.focus(); + } else { + const tabbableIndex = this.getTabbableIndex(); + this.inputRefs[tabbableIndex]?.focus(); + } + } + /** * Get the regex pattern for allowed characters. * If a pattern is provided, use it to create a regex pattern diff --git a/core/src/components/input-otp/test/basic/index.html b/core/src/components/input-otp/test/basic/index.html index 354021052bf..fd999797f87 100644 --- a/core/src/components/input-otp/test/basic/index.html +++ b/core/src/components/input-otp/test/basic/index.html @@ -24,6 +24,10 @@ grid-row-gap: 20px; grid-column-gap: 20px; } + + button { + margin: 8px 2px !important; + } @@ -75,6 +79,15 @@

Readonly

Invalid

Description Description + +

Methods

+ Description +
+ + + + +
@@ -112,6 +125,23 @@

Invalid

document.addEventListener('ionBlur', (ev) => { console.log('ionBlur', ev); }); + + document.getElementById('reset').addEventListener('click', () => { + inputOtpMethods.reset(); + }); + + document.getElementById('focus').addEventListener('click', () => { + inputOtpMethods.setFocus(); + }); + + document.getElementById('focus-third').addEventListener('click', () => { + inputOtpMethods.setFocus(2); + }); + + document.getElementById('focus-and-reset').addEventListener('click', () => { + inputOtpMethods.setFocus(); + inputOtpMethods.reset(); + }); diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index 6d797dbc7ad..8d089d950d3 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -744,3 +744,94 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => }); }); }); + +/** + * Methods are the same across modes & directions + */ +configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('input-otp: setFocus method'), () => { + test('should focus the specified input box when index is provided', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + await inputOtp.evaluate((el: HTMLIonInputOtpElement) => { + el.setFocus(2); + }); + + const thirdInput = page.locator('ion-input-otp input').nth(2); + await expect(thirdInput).toBeFocused(); + }); + + test('should focus first empty input when no index is provided and not all inputs are filled', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + await inputOtp.evaluate((el: HTMLIonInputOtpElement) => { + el.setFocus(); + }); + + const thirdInput = page.locator('ion-input-otp input').nth(2); + await expect(thirdInput).toBeFocused(); + }); + + test('should focus last input when no index is provided and all inputs are filled', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + await inputOtp.evaluate((el: HTMLIonInputOtpElement) => { + el.setFocus(); + }); + + const lastInput = page.locator('ion-input-otp input').last(); + await expect(lastInput).toBeFocused(); + }); + + test('should clamp invalid indices to valid range', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + + // Test negative index + await inputOtp.evaluate((el: HTMLIonInputOtpElement) => { + el.setFocus(-1); + }); + const firstInput = page.locator('ion-input-otp input').first(); + await expect(firstInput).toBeFocused(); + + // Test index beyond length + await inputOtp.evaluate((el: HTMLIonInputOtpElement) => { + el.setFocus(10); + }); + const lastInput = page.locator('ion-input-otp input').last(); + await expect(lastInput).toBeFocused(); + }); + }); + + test.describe(title('input-otp: reset method'), () => { + test('should clear all input values and reset focus state', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const inputBoxes = page.locator('ion-input-otp input'); + + // Focus an input first + await inputBoxes.nth(2).focus(); + await expect(inputBoxes.nth(2)).toBeFocused(); + + // Call reset + await inputOtp.evaluate((el: HTMLIonInputOtpElement) => { + el.reset(); + }); + + // Check that values are cleared + await expect(inputOtp).toHaveJSProperty('value', ''); + await expect(inputBoxes.nth(0)).toHaveValue(''); + await expect(inputBoxes.nth(1)).toHaveValue(''); + await expect(inputBoxes.nth(2)).toHaveValue(''); + await expect(inputBoxes.nth(3)).toHaveValue(''); + + // Check that focus is removed + await expect(inputBoxes.nth(2)).not.toBeFocused(); + }); + }); +}); diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index e97ff3fd76f..82688d0ec54 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -1018,7 +1018,8 @@ This event will not emit when programmatically setting the `value` property. @ProxyCmp({ - inputs: ['color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'] + inputs: ['color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], + methods: ['reset', 'setFocus'] }) @Component({ selector: 'ion-input-otp', diff --git a/packages/angular/standalone/src/directives/proxies.ts b/packages/angular/standalone/src/directives/proxies.ts index bae89e29e18..eb30aaae324 100644 --- a/packages/angular/standalone/src/directives/proxies.ts +++ b/packages/angular/standalone/src/directives/proxies.ts @@ -984,7 +984,8 @@ export declare interface IonInfiniteScrollContent extends Components.IonInfinite @ProxyCmp({ defineCustomElementFn: defineIonInputOtp, - inputs: ['color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'] + inputs: ['color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], + methods: ['reset', 'setFocus'] }) @Component({ selector: 'ion-input-otp', From c4743fea0055ed4be5ebd7905e009e8c8720b6ea Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Thu, 8 May 2025 10:06:10 -0400 Subject: [PATCH 29/81] fix(input-otp): move separator next to native wrapper to properly collapse input width --- core/src/components/input-otp/input-otp.scss | 9 +++------ core/src/components/input-otp/input-otp.tsx | 12 ++++++------ core/tsconfig.json | 1 + 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/core/src/components/input-otp/input-otp.scss b/core/src/components/input-otp/input-otp.scss index a6f890b8150..b3484ebddf7 100644 --- a/core/src/components/input-otp/input-otp.scss +++ b/core/src/components/input-otp/input-otp.scss @@ -113,7 +113,7 @@ .input-otp-separator { @include border-radius(var(--separator-border-radius)); - flex: 1 0 auto; + flex-shrink: 0; width: var(--separator-width); height: var(--separator-height); @@ -131,8 +131,7 @@ font-size: 0.875em; } -:host(.input-otp-size-small) .input-otp-group, -:host(.input-otp-size-small) .native-wrapper { +:host(.input-otp-size-small) .input-otp-group { gap: 8px; } @@ -151,9 +150,7 @@ } :host(.input-otp-size-medium) .input-otp-group, -:host(.input-otp-size-medium) .native-wrapper, -:host(.input-otp-size-large) .input-otp-group, -:host(.input-otp-size-large) .native-wrapper { +:host(.input-otp-size-large) .input-otp-group { gap: 12px; } diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 8b16fce71e8..62c2649ead0 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -1,5 +1,5 @@ import type { ComponentInterface, EventEmitter } from '@stencil/core'; -import { Component, Element, Event, Host, Prop, State, h, Watch } from '@stencil/core'; +import { Component, Element, Event, Fragment, Host, Prop, State, h, Watch } from '@stencil/core'; import { printIonWarning } from '@utils/logging'; import { isRTL } from '@utils/rtl'; import { createColorClasses } from '@utils/theme'; @@ -683,8 +683,8 @@ export class InputOTP implements ComponentInterface { })} >
- {Array.from({ length }).map((_, index) => { - return ( + {Array.from({ length }).map((_, index) => ( +
- {this.showSeparator(index) &&
}
- ); - })} + {this.showSeparator(index) &&
} + + ))}
diff --git a/core/tsconfig.json b/core/tsconfig.json index acdd4094006..6e2271dfde6 100644 --- a/core/tsconfig.json +++ b/core/tsconfig.json @@ -10,6 +10,7 @@ "assumeChangesOnlyAffectDirectDependencies": true, "jsx": "react", "jsxFactory": "h", + "jsxFragmentFactory": "Fragment", "lib": [ "dom", "dom.iterable", From f0fba1d8310ec6e1df040273f96007ba332cb013 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Thu, 8 May 2025 11:21:02 -0400 Subject: [PATCH 30/81] refactor(input-otp): ignore Fragment error in eslint --- core/.eslintrc.js | 2 +- core/src/components/input-otp/input-otp.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/.eslintrc.js b/core/.eslintrc.js index 7b2a4188ede..e3acd261965 100644 --- a/core/.eslintrc.js +++ b/core/.eslintrc.js @@ -26,7 +26,7 @@ module.exports = { "@typescript-eslint/no-unused-vars": [ "warn", { - "varsIgnorePattern": "^h$" + "varsIgnorePattern": "^(h|Fragment)$" } ], "no-useless-catch": "off", diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 62c2649ead0..3f1c6d2280b 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -684,7 +684,7 @@ export class InputOTP implements ComponentInterface { >
{Array.from({ length }).map((_, index) => ( - + <>
{this.showSeparator(index) &&
} - + ))}
From a7d14f258404dd4a62170397e8a0db8871ea6817 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Thu, 8 May 2025 16:36:29 -0400 Subject: [PATCH 31/81] fix(input-otp): don't allow focus in boxes without values except last --- core/src/components.d.ts | 2 +- core/src/components/input-otp/input-otp.tsx | 48 +++++++++++++++++-- .../input-otp/test/basic/input-otp.e2e.ts | 31 +++++++++++- 3 files changed, 73 insertions(+), 8 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 12f46c0c9e6..6cc6d202e4f 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1360,7 +1360,7 @@ export namespace Components { "separators"?: 'all' | string | number[]; /** * Sets focus to an input box. - * @param index The index of the input box to focus. If not provided, focuses the first empty input box or the last input if all are filled. The input boxes start at index 0. + * @param index - The index of the input box to focus (0-based). If provided and the input box has a value, the input box at that index will be focused. Otherwise, the first empty input box or the last input if all are filled will be focused. */ "setFocus": (index?: number) => Promise; /** diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 3f1c6d2280b..9e094647dc5 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -32,6 +32,13 @@ export class InputOTP implements ComponentInterface { */ private focusedValue?: string | number | null; + /** + * Tracks whether the user is navigating through input boxes using keyboard navigation + * (arrow keys, tab) versus mouse clicks. This is used to determine the appropriate + * focus behavior when an input box is focused. + */ + private isKeyboardNavigation = false; + @Element() el!: HTMLIonInputOtpElement; @State() private inputValues: string[] = []; @@ -261,9 +268,9 @@ export class InputOTP implements ComponentInterface { /** * Sets focus to an input box. - * @param index The index of the input box to focus. If not provided, - * focuses the first empty input box or the last input if all are filled. - * The input boxes start at index 0. + * @param index - The index of the input box to focus (0-based). + * If provided and the input box has a value, the input box at that index will be focused. + * Otherwise, the first empty input box or the last input if all are filled will be focused. */ @Method() async setFocus(index?: number) { @@ -406,6 +413,13 @@ export class InputOTP implements ComponentInterface { const { length } = this; const rtl = isRTL(this.el); + // Do not process the paste shortcut to avoid changing + // the value to the letter "v" on paste + const isPasteShortcut = (event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'v'; + if (isPasteShortcut) { + return; + } + if (event.key === 'Backspace') { if (this.inputValues[index]) { // Remove the value at the current index @@ -431,6 +445,7 @@ export class InputOTP implements ComponentInterface { this.focusPrevious(index); } } else if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') { + this.isKeyboardNavigation = true; event.preventDefault(); const isLeft = event.key === 'ArrowLeft'; const shouldMoveNext = (isLeft && rtl) || (!isLeft && !rtl); @@ -444,6 +459,7 @@ export class InputOTP implements ComponentInterface { this.focusPrevious(index); } } else if (event.key === 'Tab') { + this.isKeyboardNavigation = true; // Let all tab events proceed normally return; } @@ -551,6 +567,13 @@ export class InputOTP implements ComponentInterface { /** * Handles the focus behavior for the input OTP component. + * + * Focus behavior: + * 1. Keyboard navigation: Allow normal focus movement + * 2. Mouse click: + * - If clicked box has value: Focus that box + * - If clicked box is empty: Focus first empty box + * * Emits the `ionFocus` event when the input group gains focus. */ private onFocus = (index: number) => (event: FocusEvent) => { @@ -563,10 +586,25 @@ export class InputOTP implements ComponentInterface { } this.hasFocus = true; - // When an input receives focus, make it the only tabbable element + let finalIndex = index; + + if (!this.isKeyboardNavigation) { + // If the clicked box has a value, focus it + // Otherwise focus the first empty box + const targetIndex = this.inputValues[index] ? index : this.getFirstEmptyIndex(); + finalIndex = targetIndex === -1 ? this.length - 1 : targetIndex; + + // Focus the target box + this.inputRefs[finalIndex]?.focus(); + } + + // Update tabIndexes to match the focused box inputRefs.forEach((input, i) => { - input.tabIndex = i === index ? 0 : -1; + input.tabIndex = i === finalIndex ? 0 : -1; }); + + // Reset the keyboard navigation flag + this.isKeyboardNavigation = false; }; /** diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index 8d089d950d3..dbcf70f47fd 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -324,6 +324,21 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { const secondInputOtpFirstInput = page.locator('#second input').first(); await expect(secondInputOtpFirstInput).toBeFocused(); }); + + test('should focus the first input box when clicking on the 2nd input box without a value', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const secondInput = page.locator('ion-input-otp input').nth(1); + await secondInput.click(); + + const firstInput = page.locator('ion-input-otp input').first(); + await expect(firstInput).toBeFocused(); + }); }); test.describe(title('input-otp: backspace functionality'), () => { @@ -750,7 +765,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => */ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { test.describe(title('input-otp: setFocus method'), () => { - test('should focus the specified input box when index is provided', async ({ page }) => { + test('should not focus the specified input box when index is provided and value is not set', async ({ page }) => { await page.setContent(`Description`, config); const inputOtp = page.locator('ion-input-otp'); @@ -758,6 +773,18 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => el.setFocus(2); }); + const thirdInput = page.locator('ion-input-otp input').nth(2); + await expect(thirdInput).not.toBeFocused(); + }); + + test('should focus the specified input box when index is provided and value is set', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + await inputOtp.evaluate((el: HTMLIonInputOtpElement) => { + el.setFocus(2); + }); + const thirdInput = page.locator('ion-input-otp input').nth(2); await expect(thirdInput).toBeFocused(); }); @@ -787,7 +814,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => }); test('should clamp invalid indices to valid range', async ({ page }) => { - await page.setContent(`Description`, config); + await page.setContent(`Description`, config); const inputOtp = page.locator('ion-input-otp'); From 6190d0cd1afa6a2412d0e96489e91cf446835fcb Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Thu, 8 May 2025 16:50:23 -0400 Subject: [PATCH 32/81] fix(input-otp): update colors and valid/invalid states design --- core/api.txt | 6 ++ core/src/components/input-otp/input-otp.scss | 99 +++++++++++++------ .../input-otp/test/basic/index.html | 35 ++----- .../input-otp/test/color/index.html | 28 +++--- .../components/input-otp/test/size/index.html | 24 ++--- 5 files changed, 106 insertions(+), 86 deletions(-) diff --git a/core/api.txt b/core/api.txt index e3e8428f0f7..50c27c55abb 100644 --- a/core/api.txt +++ b/core/api.txt @@ -812,12 +812,18 @@ ion-input-otp,css-prop,--border-radius,ios ion-input-otp,css-prop,--border-radius,md ion-input-otp,css-prop,--border-width,ios ion-input-otp,css-prop,--border-width,md +ion-input-otp,css-prop,--border-width-focused,ios +ion-input-otp,css-prop,--border-width-focused,md ion-input-otp,css-prop,--color,ios ion-input-otp,css-prop,--color,md ion-input-otp,css-prop,--height,ios ion-input-otp,css-prop,--height,md +ion-input-otp,css-prop,--highlight-color-focused,ios +ion-input-otp,css-prop,--highlight-color-focused,md ion-input-otp,css-prop,--highlight-color-invalid,ios ion-input-otp,css-prop,--highlight-color-invalid,md +ion-input-otp,css-prop,--highlight-color-valid,ios +ion-input-otp,css-prop,--highlight-color-valid,md ion-input-otp,css-prop,--margin-bottom,ios ion-input-otp,css-prop,--margin-bottom,md ion-input-otp,css-prop,--margin-end,ios diff --git a/core/src/components/input-otp/input-otp.scss b/core/src/components/input-otp/input-otp.scss index b3484ebddf7..37aa4c2a4d3 100644 --- a/core/src/components/input-otp/input-otp.scss +++ b/core/src/components/input-otp/input-otp.scss @@ -12,6 +12,7 @@ * * @prop --border-width: Border width of the input boxes * @prop --border-color: Border color of the input boxes + * @prop --border-width-focused: Border width when focused * @prop --border-color-focused: Border color when focused * * @prop --color: Text color of the input @@ -35,7 +36,9 @@ * @prop --separator-height: Height of the separator between boxes * @prop --separator-border-radius: Border radius of the separator between boxes * - * @prop --highlight-color-invalid: Color used for the invalid state + * @prop --highlight-color-focused: The color of the highlight on the input when focused + * @prop --highlight-color-valid: The color of the highlight on the input when valid + * @prop --highlight-color-invalid: The color of the highlight on the input when invalid */ --margin-top: 0; --margin-end: 0; @@ -51,11 +54,24 @@ --separator-border-radius: 999px; --separator-color: #{$background-color-step-150}; --background-focused: var(--background); - --border-color-focused: #{ion-color(primary, base, 0.4)}; + --border-width-focused: 2px; + --border-color-focused: var(--highlight-color); + --highlight-color-focused: #{ion-color(primary, base, 0.4)}; + --highlight-color-valid: #{ion-color(success, base)}; --highlight-color-invalid: #{ion-color(danger, base)}; + /** + * This is a private API that is used to switch + * out the highlight color based on the state + * of the component without having to write + * different selectors for different fill variants. + */ + --highlight-color: var(--highlight-color-focused); + display: block; position: relative; + + font-size: dynamic-font(14px); } .input-otp-group { @@ -102,7 +118,7 @@ .input-otp-description { color: $text-color-step-400; - font-size: 12px; + font-size: dynamic-font(12px); font-weight: 500; line-height: 20px; @@ -127,8 +143,6 @@ :host(.input-otp-size-small) { --width: 40px; --height: 40px; - - font-size: 0.875em; } :host(.input-otp-size-small) .input-otp-group { @@ -138,15 +152,11 @@ :host(.input-otp-size-medium) { --width: 48px; --height: 48px; - - font-size: 1em; } :host(.input-otp-size-large) { --width: 56px; --height: 56px; - - font-size: 1.125em; } :host(.input-otp-size-medium) .input-otp-group, @@ -179,7 +189,7 @@ :host(.input-otp-fill-solid) { --border-color: #{$background-color-step-50}; - --background: var(--border-color); + --background: #{$background-color-step-50}; } // States @@ -188,6 +198,8 @@ :host(.input-otp-fill-outline.input-otp-disabled) { --background: #{$background-color-step-50}; --border-color: #{$background-color-step-100}; + + color: #{$text-color-step-650}; } :host(.input-otp-disabled), @@ -196,7 +208,7 @@ } :host(.has-focus) .native-input:focus { - border-width: 2px; + border-width: var(--border-width-focused); border-color: var(--border-color-focused); outline: none; @@ -204,11 +216,6 @@ background: var(--background-focused); } -:host(.ion-invalid) .native-input, -:host(.ion-invalid.has-focus) .native-input { - border-color: var(--highlight-color-invalid); -} - :host(.input-otp-fill-outline.input-otp-readonly) { --background: #{$background-color-step-50}; } @@ -218,34 +225,62 @@ --border-color: #{$background-color-step-100}; } +// Input Highlight +// ---------------------------------------------------------------- + +:host(.ion-touched.ion-invalid) { + --highlight-color: var(--highlight-color-invalid); +} + +/** + * The component highlight is only shown + * on focus, so we can safely set the valid + * color state when valid. If we + * set it when .has-focus is present then + * the highlight color would change + * from the valid color to the component's + * color during the transition after the + * component loses focus. + */ +:host(.ion-valid) { + --highlight-color: var(--highlight-color-valid); +} + +:host(.has-focus.ion-valid), +:host(.ion-touched.ion-invalid) { + --border-color: var(--highlight-color); +} + // Colors // -------------------------------------------------- :host(.input-otp-fill-outline.ion-color) .native-input { - border-color: current-color(base, 0.3); + border-color: #{current-color(base, 0.3)}; } -:host(.input-otp-fill-outline.ion-color.has-focus) .native-input:focus { - border-color: current-color(base, 0.4); +// Focused +:host(.input-otp-fill-outline.ion-color.has-focus) .native-input:focus, +:host(.input-otp-fill-solid.ion-color.has-focus) .native-input:focus { + border-color: #{current-color(base, 0.4)}; } -:host(.input-otp-fill-solid.ion-color) .native-input { - border-color: transparent; - - background: current-color(base, 0.08); +// Invalid +:host(.input-otp-fill-outline.ion-color.ion-invalid) .native-input, +:host(.input-otp-fill-solid.ion-color.ion-invalid) .native-input, +:host(.input-otp-fill-outline.ion-color.has-focus.ion-invalid) .native-input, +:host(.input-otp-fill-solid.ion-color.has-focus.ion-invalid) .native-input { + border-color: #{ion-color(danger, base)}; } -:host(.input-otp-fill-solid.ion-color.has-focus) .native-input:focus { - border-color: current-color(base, 0.4); +// Valid +:host(.input-otp-fill-outline.ion-color.ion-valid) .native-input, +:host(.input-otp-fill-solid.ion-color.ion-valid) .native-input, +:host(.input-otp-fill-outline.ion-color.has-focus.ion-valid) .native-input, +:host(.input-otp-fill-solid.ion-color.has-focus.ion-valid) .native-input { + border-color: #{ion-color(success, base)}; } // Outline & Disabled :host(.input-otp-fill-outline.input-otp-disabled.ion-color) .native-input { - border-color: current-color(base, 0.1); -} - -// Solid & Disabled/Readonly -:host(.input-otp-fill-solid.input-otp-disabled.ion-color) .native-input, -:host(.input-otp-fill-solid.input-otp-readonly.ion-color) .native-input { - background: current-color(base, 0.16); + border-color: #{current-color(base, 0.1)}; } diff --git a/core/src/components/input-otp/test/basic/index.html b/core/src/components/input-otp/test/basic/index.html index fd999797f87..70a4f165985 100644 --- a/core/src/components/input-otp/test/basic/index.html +++ b/core/src/components/input-otp/test/basic/index.html @@ -76,18 +76,12 @@

Readonly

-

Invalid

- Description - Description - -

Methods

- Description -
- - - - -
+

Invalid / Touched

+ Description + Description +

Valid / Focused

+ Description + Description
@@ -125,23 +119,6 @@

Methods

document.addEventListener('ionBlur', (ev) => { console.log('ionBlur', ev); }); - - document.getElementById('reset').addEventListener('click', () => { - inputOtpMethods.reset(); - }); - - document.getElementById('focus').addEventListener('click', () => { - inputOtpMethods.setFocus(); - }); - - document.getElementById('focus-third').addEventListener('click', () => { - inputOtpMethods.setFocus(2); - }); - - document.getElementById('focus-and-reset').addEventListener('click', () => { - inputOtpMethods.setFocus(); - inputOtpMethods.reset(); - }); diff --git a/core/src/components/input-otp/test/color/index.html b/core/src/components/input-otp/test/color/index.html index 086ddb703ed..68e864270b1 100644 --- a/core/src/components/input-otp/test/color/index.html +++ b/core/src/components/input-otp/test/color/index.html @@ -65,22 +65,24 @@

Solid Colors

Disabled

- Outline - Outline - Outline - Solid - Solid - Solid + Outline + Solid + +

Readonly

+ Outline + Solid
-

Readonly

- Outline - Outline - Outline - Solid - Solid - Solid +

Invalid / Touched

+ Outline + Solid + +

Valid / Focused

+ Outline + Solid
diff --git a/core/src/components/input-otp/test/size/index.html b/core/src/components/input-otp/test/size/index.html index d085823c010..8b11e5589e4 100644 --- a/core/src/components/input-otp/test/size/index.html +++ b/core/src/components/input-otp/test/size/index.html @@ -39,26 +39,26 @@

Small

- Description - Description - Description - Description + Description + Description + Description + Description

Medium

- Description - Description - Description - Description + Description + Description + Description + Description

Large

- Description - Description - Description - Description + Description + Description + Description + Description
From 6b65ceb1874c1d4b9ddfebd85ec400edcbb5e7ff Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Thu, 8 May 2025 17:24:17 -0400 Subject: [PATCH 33/81] fix(input-otp): do not shift values right if the input value is selected --- core/src/components/input-otp/input-otp.tsx | 9 ++++--- .../input-otp/test/basic/input-otp.e2e.ts | 24 +++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 9e094647dc5..b97702e5228 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -412,11 +412,14 @@ export class InputOTP implements ComponentInterface { private onKeyDown = (index: number) => (event: KeyboardEvent) => { const { length } = this; const rtl = isRTL(this.el); + const input = event.target as HTMLInputElement; - // Do not process the paste shortcut to avoid changing - // the value to the letter "v" on paste const isPasteShortcut = (event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'v'; - if (isPasteShortcut) { + const isTextSelection = input.selectionStart !== input.selectionEnd; + + // Return if the key is the paste shortcut or the input value + // text is selected and let the onPaste / onInput handler manage it + if (isPasteShortcut || isTextSelection) { return; } diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index dbcf70f47fd..248b19ed276 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -263,6 +263,30 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { // Focus should remain on the 2nd input box await expect(inputBoxes.nth(1)).toBeFocused(); }); + + test('should not shift values right when selecting the text in the 2nd input box', async ({ page }) => { + await page.setContent( + ` + Description + `, + config + ); + + const secondInput = page.locator('ion-input-otp input').nth(1); + await secondInput.focus(); + await secondInput.selectText(); + + const inputOtp = page.locator('ion-input-otp'); + const inputBoxes = page.locator('ion-input-otp input'); + + await page.keyboard.type('9'); + + await expect(inputBoxes.nth(0)).toHaveValue('1'); + await expect(inputBoxes.nth(1)).toHaveValue('9'); + await expect(inputBoxes.nth(2)).toHaveValue('3'); + await expect(inputBoxes.nth(3)).toHaveValue(''); + await expect(inputOtp).toHaveJSProperty('value', '193'); + }); }); test.describe(title('input-otp: focus functionality'), () => { From 9b6ee1ee519dab65d8305543010725c2dea93364 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Thu, 8 May 2025 17:32:39 -0400 Subject: [PATCH 34/81] style: lint --- .../input-otp/test/basic/input-otp.e2e.ts | 133 +++--------------- 1 file changed, 19 insertions(+), 114 deletions(-) diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index 248b19ed276..d4aef62b98d 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -24,12 +24,7 @@ async function simulatePaste(input: any, value: string) { configs({ modes: ['ios'] }).forEach(({ title, config }) => { test.describe(title('input-otp: basic functionality'), () => { test('should render with 4 input boxes and a default value', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const inputBoxes = page.locator('ion-input-otp input'); await expect(inputBoxes).toHaveCount(4); @@ -42,12 +37,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should render with 8 input boxes when length is set to 8 and a default value', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const inputBoxes = page.locator('ion-input-otp input'); await expect(inputBoxes).toHaveCount(8); @@ -66,12 +56,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should accept numbers only by default', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); @@ -86,12 +71,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should accept text and numbers when type is set to text', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); @@ -106,12 +86,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should accept custom pattern of lowercase and uppercase letters when pattern is set', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); @@ -126,12 +101,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should accept custom pattern of uppercase letters only when pattern is set', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); @@ -148,12 +118,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { test.describe(title('input-otp: input functionality'), () => { test('should update the input value when typing 4 digits from the 1st box', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); @@ -185,12 +150,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should update the 1st input value when typing in the 3rd box', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const thirdInput = page.locator('ion-input-otp input').nth(2); await thirdInput.focus(); @@ -213,12 +173,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { test('should update the 3rd input value and shift the values to the right when typing in the 3rd box containing a value', async ({ page, }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const thirdInput = page.locator('ion-input-otp input').nth(2); await thirdInput.focus(); @@ -239,12 +194,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should update the 2nd input value when typing in the 2nd box containing a value', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const secondInput = page.locator('ion-input-otp input').nth(1); await secondInput.focus(); @@ -265,12 +215,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should not shift values right when selecting the text in the 2nd input box', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const secondInput = page.locator('ion-input-otp input').nth(1); await secondInput.focus(); @@ -291,12 +236,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { test.describe(title('input-otp: focus functionality'), () => { test('should focus the first input box when tabbed to', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); await page.keyboard.press('Tab'); @@ -305,12 +245,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should focus the third input box when tabbed to with a default value of 2 digits', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); await page.keyboard.press('Tab'); @@ -319,12 +254,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should focus the last input box when tabbed to with a default value of 4 digits', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); await page.keyboard.press('Tab'); @@ -350,12 +280,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should focus the first input box when clicking on the 2nd input box without a value', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const secondInput = page.locator('ion-input-otp input').nth(1); await secondInput.click(); @@ -369,12 +294,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { test('should backspace the first input box when backspace is pressed twice from the 2nd input box and the first input box has a value', async ({ page, }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); await page.keyboard.press('Tab'); await page.keyboard.press('Backspace'); @@ -390,12 +310,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { test('should backspace the last input box when backspace is pressed and all values are filled', async ({ page, }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); await page.keyboard.press('Tab'); await page.keyboard.press('Backspace'); @@ -410,12 +325,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { test('should backspace the 2nd input box and fill it with the 3rd value when backspace is pressed and 3 values are filled', async ({ page, }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); await page.keyboard.press('Tab'); @@ -648,12 +558,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => }); test('should emit ionChange event when blurring with a new value', async ({ page }) => { - await page.setContent( - ` - Description - `, - config - ); + await page.setContent(`Description`, config); const ionChange = await page.spyOnEvent('ionChange'); From cb989bf737708a494743f9c61837c6b21cd3d609 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 12 May 2025 12:04:39 -0400 Subject: [PATCH 35/81] fix(input-otp): update ios and md designs --- .../components/input-otp/input-otp.ios.scss | 15 +++-- .../components/input-otp/input-otp.md.scss | 15 ++--- core/src/components/input-otp/input-otp.scss | 60 ++++++++++++------- 3 files changed, 54 insertions(+), 36 deletions(-) diff --git a/core/src/components/input-otp/input-otp.ios.scss b/core/src/components/input-otp/input-otp.ios.scss index 70414276957..8f0e8176784 100644 --- a/core/src/components/input-otp/input-otp.ios.scss +++ b/core/src/components/input-otp/input-otp.ios.scss @@ -5,13 +5,16 @@ // -------------------------------------------------- :host { - --border-width: 0.55px; + --border-width: #{$hairlines-width}; } -.native-input { - -webkit-appearance: none; +:host(.has-focus) .native-input:focus { + --border-width: 1px; +} + +// Fills +// -------------------------------------------------- - &:focus { - border-width: 1px; - } +:host(.input-otp-fill-outline) { + --border-color: #{$item-ios-border-color}; } diff --git a/core/src/components/input-otp/input-otp.md.scss b/core/src/components/input-otp/input-otp.md.scss index 05ddea9a4e5..f4e2b16e97e 100644 --- a/core/src/components/input-otp/input-otp.md.scss +++ b/core/src/components/input-otp/input-otp.md.scss @@ -8,12 +8,13 @@ --border-width: 1px; } -.native-input { - transition: border-color 150ms cubic-bezier(0.4, 0, 0.2, 1), - background-color 150ms cubic-bezier(0.4, 0, 0.2, 1); - - &:focus { - border-width: 2px; - } +:host(.has-focus) .native-input:focus { + --border-width: 2px; } +// Fills +// -------------------------------------------------- + +:host(.input-otp-fill-outline) { + --border-color: #{$background-color-step-300}; +} diff --git a/core/src/components/input-otp/input-otp.scss b/core/src/components/input-otp/input-otp.scss index 37aa4c2a4d3..ebc6c8c346c 100644 --- a/core/src/components/input-otp/input-otp.scss +++ b/core/src/components/input-otp/input-otp.scss @@ -6,14 +6,11 @@ :host { /** * @prop --background: Background color of the input boxes - * @prop --background-focused: Background color when focused * * @prop --border-radius: Border radius of the input boxes * * @prop --border-width: Border width of the input boxes * @prop --border-color: Border color of the input boxes - * @prop --border-width-focused: Border width when focused - * @prop --border-color-focused: Border color when focused * * @prop --color: Text color of the input * @@ -53,10 +50,7 @@ --separator-height: var(--separator-width); --separator-border-radius: 999px; --separator-color: #{$background-color-step-150}; - --background-focused: var(--background); - --border-width-focused: 2px; - --border-color-focused: var(--highlight-color); - --highlight-color-focused: #{ion-color(primary, base, 0.4)}; + --highlight-color-focused: #{ion-color(primary, base)}; --highlight-color-valid: #{ion-color(success, base)}; --highlight-color-invalid: #{ion-color(danger, base)}; @@ -93,6 +87,9 @@ min-width: var(--min-width); } +// Native Input +// ---------------------------------------------------------------- + .native-input { @include border-radius(var(--border-radius)); @@ -115,17 +112,26 @@ appearance: none; } +:host(.has-focus) .native-input { + caret-color: var(--highlight-color); +} + +// Input Description +// ---------------------------------------------------------------- + .input-otp-description { - color: $text-color-step-400; + color: $text-color-step-300; font-size: dynamic-font(12px); - font-weight: 500; - line-height: 20px; + line-height: dynamic-font(20px); text-align: center; } +// Input Separator +// ---------------------------------------------------------------- + .input-otp-separator { @include border-radius(var(--separator-border-radius)); @@ -183,7 +189,6 @@ // -------------------------------------------------- :host(.input-otp-fill-outline) { - --border-color: #{$background-color-step-350}; --background: none; } @@ -208,12 +213,9 @@ } :host(.has-focus) .native-input:focus { - border-width: var(--border-width-focused); - border-color: var(--border-color-focused); + --border-color: var(--highlight-color); outline: none; - - background: var(--background-focused); } :host(.input-otp-fill-outline.input-otp-readonly) { @@ -223,6 +225,7 @@ :host(.input-otp-fill-solid.input-otp-disabled), :host(.input-otp-fill-solid.input-otp-readonly) { --border-color: #{$background-color-step-100}; + --background: #{$background-color-step-100}; } // Input Highlight @@ -246,22 +249,33 @@ --highlight-color: var(--highlight-color-valid); } +/** + * If the input has a validity state, the + * border should reflect that as a color. + * The invalid state should show if the input is + * invalid and has already been touched. + * The valid state should show if the input + * is valid, has already been touched, and + * is currently focused. Do not show the valid + * highlight when the input is blurred. + */ :host(.has-focus.ion-valid), :host(.ion-touched.ion-invalid) { --border-color: var(--highlight-color); } // Colors -// -------------------------------------------------- +// ---------------------------------------------------------------- -:host(.input-otp-fill-outline.ion-color) .native-input { - border-color: #{current-color(base, 0.3)}; +:host(.ion-color) { + --highlight-color-focused: #{current-color(base)}; } -// Focused -:host(.input-otp-fill-outline.ion-color.has-focus) .native-input:focus, -:host(.input-otp-fill-solid.ion-color.has-focus) .native-input:focus { - border-color: #{current-color(base, 0.4)}; +// Outline border should match the current color +// and the solid border should match when focused +:host(.input-otp-fill-outline.ion-color) .native-input, +:host(.input-otp-fill-solid.ion-color) .native-input:focus { + border-color: #{current-color(base, 0.6)}; } // Invalid @@ -282,5 +296,5 @@ // Outline & Disabled :host(.input-otp-fill-outline.input-otp-disabled.ion-color) .native-input { - border-color: #{current-color(base, 0.1)}; + border-color: #{current-color(base, 0.3)}; } From f4dca87f40c589b91495270b9311a2a78ff775e6 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 12 May 2025 12:04:48 -0400 Subject: [PATCH 36/81] test(input-otp): fix duplicate names and old test structure --- .../input-otp/test/fill/input-otp.e2e.ts | 4 +- .../test/separators/input-otp.e2e.ts | 45 +++++++++++-------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts b/core/src/components/input-otp/test/fill/input-otp.e2e.ts index 20adc5a923b..2ebbf7a1e42 100644 --- a/core/src/components/input-otp/test/fill/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/fill/input-otp.e2e.ts @@ -15,7 +15,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { const inputOtp = page.locator('ion-input-otp'); await expect(inputOtp).toHaveScreenshot(screenshot(`input-otp-${fill}`)); }); - test(`disabled should not have visual regressions`, async ({ page }) => { + test(`disabled ${fill} fill should not have visual regressions`, async ({ page }) => { await page.setContent( ` Description @@ -26,7 +26,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { const inputOtp = page.locator('ion-input-otp'); await expect(inputOtp).toHaveScreenshot(screenshot(`input-otp-${fill}-disabled`)); }); - test(`readonly should not have visual regressions`, async ({ page }) => { + test(`readonly ${fill} fill should not have visual regressions`, async ({ page }) => { await page.setContent( ` Description diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts b/core/src/components/input-otp/test/separators/input-otp.e2e.ts index d782c9d9e0c..6948fec4aaa 100644 --- a/core/src/components/input-otp/test/separators/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/separators/input-otp.e2e.ts @@ -52,14 +52,17 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => test('should render separators after the first and third input box', async ({ page }) => { await page.setContent(`Description`, config); - const firstSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(1) .input-otp-separator'); - await expect(firstSeparator).toHaveCount(1); + const group = page.locator('.input-otp-group'); + const wrappers = group.locator('> .native-wrapper'); - const secondSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(2) .input-otp-separator'); - await expect(secondSeparator).toHaveCount(0); + // Helper to check if the next sibling is a separator + const hasSeparatorAfter = async (index: number) => + wrappers.nth(index).evaluate((el) => el.nextElementSibling?.classList.contains('input-otp-separator') ?? false); - const thirdSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(3) .input-otp-separator'); - await expect(thirdSeparator).toHaveCount(1); + await expect(await hasSeparatorAfter(0)).toBe(true); + await expect(await hasSeparatorAfter(1)).toBe(false); + await expect(await hasSeparatorAfter(2)).toBe(true); + await expect(await hasSeparatorAfter(3)).toBe(false); }); test('should render separators after the second and third input box', async ({ page }) => { @@ -70,27 +73,33 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => el.separators = [2, 3]; }); - const firstSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(1) .input-otp-separator'); - await expect(firstSeparator).toHaveCount(0); + const group = page.locator('.input-otp-group'); + const wrappers = group.locator('> .native-wrapper'); - const secondSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(2) .input-otp-separator'); - await expect(secondSeparator).toHaveCount(1); + // Helper to check if the next sibling is a separator + const hasSeparatorAfter = async (index: number) => + wrappers.nth(index).evaluate((el) => el.nextElementSibling?.classList.contains('input-otp-separator') ?? false); - const thirdSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(3) .input-otp-separator'); - await expect(thirdSeparator).toHaveCount(1); + await expect(await hasSeparatorAfter(0)).toBe(false); + await expect(await hasSeparatorAfter(1)).toBe(true); + await expect(await hasSeparatorAfter(2)).toBe(true); + await expect(await hasSeparatorAfter(3)).toBe(false); }); test('should render all separators', async ({ page }) => { await page.setContent(`Description`, config); - const firstSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(1) .input-otp-separator'); - await expect(firstSeparator).toHaveCount(1); + const group = page.locator('.input-otp-group'); + const wrappers = group.locator('> .native-wrapper'); - const secondSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(2) .input-otp-separator'); - await expect(secondSeparator).toHaveCount(1); + // Helper to check if the next sibling is a separator + const hasSeparatorAfter = async (index: number) => + wrappers.nth(index).evaluate((el) => el.nextElementSibling?.classList.contains('input-otp-separator') ?? false); - const thirdSeparator = page.locator('ion-input-otp .native-wrapper:nth-child(3) .input-otp-separator'); - await expect(thirdSeparator).toHaveCount(1); + await expect(await hasSeparatorAfter(0)).toBe(true); + await expect(await hasSeparatorAfter(1)).toBe(true); + await expect(await hasSeparatorAfter(2)).toBe(true); + await expect(await hasSeparatorAfter(3)).toBe(false); }); test('should warn when setting separators to a position greater than the input length', async ({ page }) => { From 535b73763fd123f8de9826b2d8558285c3f528e9 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 12 May 2025 13:49:16 -0400 Subject: [PATCH 37/81] chore: build --- core/api.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/core/api.txt b/core/api.txt index 50c27c55abb..5a5eb57d3c5 100644 --- a/core/api.txt +++ b/core/api.txt @@ -802,18 +802,12 @@ ion-input-otp,event,ionFocus,FocusEvent,true ion-input-otp,event,ionInput,InputOtpInputEventDetail,true ion-input-otp,css-prop,--background,ios ion-input-otp,css-prop,--background,md -ion-input-otp,css-prop,--background-focused,ios -ion-input-otp,css-prop,--background-focused,md ion-input-otp,css-prop,--border-color,ios ion-input-otp,css-prop,--border-color,md -ion-input-otp,css-prop,--border-color-focused,ios -ion-input-otp,css-prop,--border-color-focused,md ion-input-otp,css-prop,--border-radius,ios ion-input-otp,css-prop,--border-radius,md ion-input-otp,css-prop,--border-width,ios ion-input-otp,css-prop,--border-width,md -ion-input-otp,css-prop,--border-width-focused,ios -ion-input-otp,css-prop,--border-width-focused,md ion-input-otp,css-prop,--color,ios ion-input-otp,css-prop,--color,md ion-input-otp,css-prop,--height,ios From 64cf4e775faaca8bb00c041c999651fe7be6265b Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 12 May 2025 13:54:58 -0400 Subject: [PATCH 38/81] fix(input-otp): update disabled text color --- core/src/components/input-otp/input-otp.scss | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/core/src/components/input-otp/input-otp.scss b/core/src/components/input-otp/input-otp.scss index ebc6c8c346c..c24e6ce1340 100644 --- a/core/src/components/input-otp/input-otp.scss +++ b/core/src/components/input-otp/input-otp.scss @@ -45,6 +45,7 @@ --padding-end: 0; --padding-bottom: 16px; --padding-start: 0; + --color: initial; --min-width: 40px; --separator-width: 8px; --separator-height: var(--separator-width); @@ -103,8 +104,8 @@ border-style: solid; border-color: var(--border-color); - background: var(--background, var(--ion-background-color)); - color: var(--color, var(--ion-text-color)); + background: var(--background); + color: var(--color); font-size: inherit; @@ -200,11 +201,13 @@ // States // -------------------------------------------------- +:host(.input-otp-disabled) { + --color: #{$text-color-step-650}; +} + :host(.input-otp-fill-outline.input-otp-disabled) { --background: #{$background-color-step-50}; --border-color: #{$background-color-step-100}; - - color: #{$text-color-step-650}; } :host(.input-otp-disabled), From 3ae2fff6879f426451f3d5adbdd7941a82e3454a Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 12 May 2025 15:03:25 -0400 Subject: [PATCH 39/81] test(input-otp): set explicit height to capture full screenshot --- core/src/components/input-otp/test/color/input-otp.e2e.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts b/core/src/components/input-otp/test/color/input-otp.e2e.ts index bcfc89cf14f..ee2f3c536d1 100644 --- a/core/src/components/input-otp/test/color/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/color/input-otp.e2e.ts @@ -24,6 +24,8 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { ); const container = page.locator('#container'); + // Set viewport size to ensure the entire height is visible + await page.setViewportSize({ width: 393, height: 900 }); await expect(container).toHaveScreenshot(screenshot(`input-otp-color-${fill}`)); }); test(`disabled color with ${fill} fill should not have visual regressions`, async ({ page }) => { @@ -45,6 +47,8 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { ); const container = page.locator('#container'); + // Set viewport size to ensure the entire height is visible + await page.setViewportSize({ width: 393, height: 900 }); await expect(container).toHaveScreenshot(screenshot(`input-otp-color-${fill}-disabled`)); }); test(`readonly color with ${fill} fill should not have visual regressions`, async ({ page }) => { @@ -66,6 +70,8 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { ); const container = page.locator('#container'); + // Set viewport size to ensure the entire height is visible + await page.setViewportSize({ width: 393, height: 900 }); await expect(container).toHaveScreenshot(screenshot(`input-otp-color-${fill}-readonly`)); }); }); From 2c610e845051f634f14fd02c61eeb048848cc85c Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 12 May 2025 15:10:19 -0400 Subject: [PATCH 40/81] chore(): add updated snapshots --- ...ine-disabled-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 14409 bytes ...ne-disabled-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 24176 bytes ...ine-disabled-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 12580 bytes ...line-disabled-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 14398 bytes ...ine-disabled-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 24119 bytes ...line-disabled-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 15395 bytes ...olor-outline-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 13861 bytes ...lor-outline-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 25999 bytes ...olor-outline-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 12556 bytes ...color-outline-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 13769 bytes ...olor-outline-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 26349 bytes ...color-outline-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 16180 bytes ...ine-readonly-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 15977 bytes ...ne-readonly-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 25050 bytes ...ine-readonly-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 13176 bytes ...line-readonly-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 16064 bytes ...ine-readonly-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 25357 bytes ...line-readonly-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 16394 bytes ...lid-disabled-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 11384 bytes ...id-disabled-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 19535 bytes ...lid-disabled-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 11555 bytes ...olid-disabled-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 11380 bytes ...lid-disabled-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 19414 bytes ...olid-disabled-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 14242 bytes ...-color-solid-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 10827 bytes ...color-solid-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 18765 bytes ...-color-solid-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 11196 bytes ...p-color-solid-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 10858 bytes ...-color-solid-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 18948 bytes ...p-color-solid-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 13296 bytes ...lid-readonly-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 11674 bytes ...id-readonly-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 19792 bytes ...lid-readonly-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 11702 bytes ...olid-readonly-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 11783 bytes ...lid-readonly-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 20490 bytes ...olid-readonly-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 14700 bytes ...ine-disabled-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2763 bytes ...ne-disabled-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4040 bytes ...ine-disabled-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2948 bytes ...line-disabled-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2792 bytes ...ine-disabled-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3929 bytes ...line-disabled-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3184 bytes ...-otp-outline-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2911 bytes ...otp-outline-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4542 bytes ...-otp-outline-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3042 bytes ...t-otp-outline-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2868 bytes ...-otp-outline-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4343 bytes ...t-otp-outline-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3360 bytes ...ine-readonly-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2957 bytes ...ne-readonly-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4399 bytes ...ine-readonly-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3139 bytes ...line-readonly-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2941 bytes ...ine-readonly-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4183 bytes ...line-readonly-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3411 bytes ...lid-disabled-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2647 bytes ...id-disabled-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3875 bytes ...lid-disabled-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2898 bytes ...olid-disabled-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2642 bytes ...lid-disabled-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3716 bytes ...olid-disabled-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3202 bytes ...ut-otp-solid-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2591 bytes ...t-otp-solid-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3786 bytes ...ut-otp-solid-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2823 bytes ...put-otp-solid-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2602 bytes ...ut-otp-solid-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3645 bytes ...put-otp-solid-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3072 bytes ...lid-readonly-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2675 bytes ...id-readonly-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3903 bytes ...lid-readonly-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2919 bytes ...olid-readonly-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2690 bytes ...lid-readonly-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3834 bytes ...olid-readonly-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3237 bytes ...rs-all-large-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3143 bytes ...s-all-large-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4737 bytes ...rs-all-large-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3363 bytes ...ors-all-large-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3106 bytes ...rs-all-large-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4542 bytes ...ors-all-large-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3645 bytes ...s-all-medium-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3069 bytes ...-all-medium-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4465 bytes ...s-all-medium-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3298 bytes ...rs-all-medium-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3031 bytes ...s-all-medium-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4259 bytes ...rs-all-medium-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3569 bytes ...rs-all-small-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3081 bytes ...s-all-small-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4300 bytes ...rs-all-small-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3170 bytes ...ors-all-small-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3000 bytes ...rs-all-small-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4079 bytes ...ors-all-small-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3448 bytes ...rs-one-large-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3200 bytes ...s-one-large-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4852 bytes ...rs-one-large-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3293 bytes ...ors-one-large-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3169 bytes ...rs-one-large-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4650 bytes ...ors-one-large-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3576 bytes ...s-one-medium-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3132 bytes ...-one-medium-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4751 bytes ...s-one-medium-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3265 bytes ...rs-one-medium-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3099 bytes ...s-one-medium-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4530 bytes ...rs-one-medium-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3568 bytes ...rs-one-small-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3065 bytes ...s-one-small-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4415 bytes ...rs-one-small-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3209 bytes ...ors-one-small-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2981 bytes ...rs-one-small-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4164 bytes ...ors-one-small-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3511 bytes ...rs-two-large-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3424 bytes ...s-two-large-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 5335 bytes ...rs-two-large-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 4723 bytes ...ors-two-large-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3372 bytes ...rs-two-large-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 5144 bytes ...ors-two-large-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 5330 bytes ...s-two-medium-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3334 bytes ...-two-medium-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4763 bytes ...s-two-medium-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3441 bytes ...rs-two-medium-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3299 bytes ...s-two-medium-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4513 bytes ...rs-two-medium-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3794 bytes ...rs-two-small-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3312 bytes ...s-two-small-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4540 bytes ...rs-two-small-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3404 bytes ...ors-two-small-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3224 bytes ...rs-two-small-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4298 bytes ...ors-two-small-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3750 bytes ...ngular-large-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2111 bytes ...gular-large-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3839 bytes ...ngular-large-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2276 bytes ...angular-large-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2098 bytes ...ngular-large-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3697 bytes ...angular-large-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2252 bytes ...gular-medium-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2074 bytes ...ular-medium-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4081 bytes ...gular-medium-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2246 bytes ...ngular-medium-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2062 bytes ...gular-medium-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3949 bytes ...ngular-medium-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2218 bytes ...ngular-small-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2033 bytes ...gular-small-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3552 bytes ...ngular-small-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2214 bytes ...angular-small-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2021 bytes ...ngular-small-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3414 bytes ...angular-small-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2181 bytes ...-round-large-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2979 bytes ...round-large-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4700 bytes ...-round-large-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3142 bytes ...p-round-large-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2936 bytes ...-round-large-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4482 bytes ...p-round-large-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3447 bytes ...round-medium-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2911 bytes ...ound-medium-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4542 bytes ...round-medium-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3042 bytes ...-round-medium-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2868 bytes ...round-medium-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4343 bytes ...-round-medium-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3360 bytes ...-round-small-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2876 bytes ...round-small-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4280 bytes ...-round-small-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3002 bytes ...p-round-small-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2778 bytes ...-round-small-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4042 bytes ...p-round-small-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3300 bytes ...p-soft-large-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2573 bytes ...-soft-large-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4278 bytes ...p-soft-large-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2728 bytes ...tp-soft-large-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2576 bytes ...p-soft-large-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4110 bytes ...tp-soft-large-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2813 bytes ...-soft-medium-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2532 bytes ...soft-medium-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4355 bytes ...-soft-medium-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2671 bytes ...p-soft-medium-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2533 bytes ...-soft-medium-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4228 bytes ...p-soft-medium-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2763 bytes ...p-soft-small-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2434 bytes ...-soft-small-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3970 bytes ...p-soft-small-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2634 bytes ...tp-soft-small-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2425 bytes ...p-soft-small-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3771 bytes ...tp-soft-small-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2719 bytes ...ge-collapsed-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3132 bytes ...e-collapsed-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 5227 bytes ...ge-collapsed-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3641 bytes ...rge-collapsed-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3127 bytes ...ge-collapsed-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4916 bytes ...rge-collapsed-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 4148 bytes ...ut-otp-large-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2979 bytes ...t-otp-large-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4700 bytes ...ut-otp-large-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3142 bytes ...put-otp-large-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2936 bytes ...ut-otp-large-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4482 bytes ...put-otp-large-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3447 bytes ...um-collapsed-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3088 bytes ...m-collapsed-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 5054 bytes ...um-collapsed-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3592 bytes ...ium-collapsed-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3087 bytes ...um-collapsed-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4695 bytes ...ium-collapsed-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 4091 bytes ...t-otp-medium-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2911 bytes ...-otp-medium-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4542 bytes ...t-otp-medium-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3042 bytes ...ut-otp-medium-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2868 bytes ...t-otp-medium-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4343 bytes ...ut-otp-medium-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3360 bytes ...ll-collapsed-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3125 bytes ...l-collapsed-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4129 bytes ...ll-collapsed-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3177 bytes ...all-collapsed-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3103 bytes ...ll-collapsed-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3917 bytes ...all-collapsed-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3525 bytes ...ut-otp-small-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2876 bytes ...t-otp-small-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4280 bytes ...ut-otp-small-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3002 bytes ...put-otp-small-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2778 bytes ...ut-otp-small-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4042 bytes ...put-otp-small-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3300 bytes 216 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-disabled-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-disabled-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-disabled-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-disabled-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-disabled-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-disabled-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-readonly-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-readonly-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-readonly-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-readonly-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-readonly-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-readonly-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-disabled-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-disabled-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-disabled-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-disabled-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-disabled-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-disabled-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-readonly-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-readonly-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-readonly-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-readonly-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-readonly-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-readonly-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-readonly-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-readonly-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-readonly-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-readonly-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-readonly-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-readonly-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-readonly-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-readonly-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-readonly-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-readonly-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-readonly-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-readonly-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-large-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-large-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-large-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-large-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-large-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-large-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-medium-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-medium-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-medium-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-medium-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-medium-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-medium-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-small-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-small-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-small-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-small-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-small-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-small-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-large-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-large-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-large-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-large-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-large-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-large-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-small-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-small-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-small-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-small-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-small-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-small-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-medium-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-medium-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-medium-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-medium-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-medium-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-medium-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-small-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-small-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-small-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-small-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-small-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-small-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-large-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-large-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-large-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-large-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-large-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-large-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-small-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-small-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-small-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-small-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-small-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-small-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-large-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-large-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-large-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-large-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-large-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-large-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-medium-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-medium-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-medium-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-medium-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-medium-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-medium-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-small-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-small-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-small-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-small-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-small-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-small-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-collapsed-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-collapsed-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-collapsed-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-collapsed-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-collapsed-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-collapsed-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-collapsed-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-collapsed-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-collapsed-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-collapsed-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-collapsed-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-collapsed-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-collapsed-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-collapsed-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-collapsed-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-collapsed-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-collapsed-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-collapsed-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-md-ltr-Mobile-Safari-linux.png diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-disabled-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-disabled-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a64c9d0118e1a153ece8ea2b1d1310a5c9fe7f59 GIT binary patch literal 14409 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 R@J$CE1l&N2todv3{{en~s3!mb literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-disabled-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-disabled-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..21a16d727139bc820bbcd381fc3092a102482013 GIT binary patch literal 14398 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-disabled-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-disabled-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b06f3b7f3573ca6a8fb7d862f4cf1146ded915bc GIT binary patch literal 24119 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 }}nj+}#P65sQ*^JPB97 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 W--Ss&8f^5XQdZEAFT8m-@P7gB5?p=& literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b1fd6e431ec275d5e1f6fa8071c246ec2040dadb GIT binary patch literal 13861 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
    |JSyGK*x&XM^ZKM^gfTj6kzns^PHv5(L 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 JReCpK{tKHjs&oJV literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-large-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-large-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..edd4f7d6c5ea6c91cf6f817d0d1eb151395e9ddc GIT binary patch literal 3576 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 DY{9{g literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..adefb8abdbec2e92448a93492788d21f9ef7287f GIT binary patch literal 3132 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..ff45c57e56c8cd5f3116786522b34284bcdd0676 GIT binary patch literal 3265 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f294676a43e26a669a253f3207a8e1616d258908 GIT binary patch literal 3099 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..68e27384262cc2c95ccc7a1635ac7c16a05b6ef4 GIT binary patch literal 4530 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-medium-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc2c3c9e99e78cbb600b5dff58b28107bd52d53 GIT binary patch literal 3568 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 R0~aG8xR!xtg@$d!e*lrhLZJWv literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-small-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-small-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f5b3ba2c9e929109851bf0077d2e939a957977 GIT binary patch literal 3209 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-small-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-small-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b706a68dd7b2bfe0388372eb2818caec53e5b9d3 GIT binary patch literal 2981 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 A?*IS* literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-small-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-small-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad4c7e97401397000d94204c31396cf6cf7c07d GIT binary patch literal 3511 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 N(E7%xm%5J8{{Wt6zUcq} literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..d8cdd0a5645f70024072dfd05f86499394830d60 GIT binary patch literal 3424 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..aabd9e3fe1ce7f7e5f21e15ce4190a4649b3d42c GIT binary patch literal 5335 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..73aecd67ce3cd604d697bdc9f3240309143d855c GIT binary patch literal 3372 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..1fa560af18735d268c4ecf68ee34176feb432a2e GIT binary patch literal 5144 zcmd5=cTiK^n+}L{6oN>TA|MES(n1kLAW}o`Djfvrh!A@3AOxfd(tEE0qI9W>5PC04 zkP>?6Mab{Q@7vwkncwVRyE8j;Cv)%Qob#6Rp67j@6Q!xHNI}X#3Ic&BU`le@AP`;@ z@a{lN2>fQVt3L#RsDHrZpt_zW+nKfwdJ|Km%_9RhyeHG(BR)qCD_3K`{Mz=0LeHZ zaUh5|P$r$g41E6vB?u3AQVHz-9xjswLUR0ifA`P$jJu#j=a(h%_i+=xQU}7mLSzYW z?+;}`oJ#|m>{__lZ@EB;Z>__LaqrIIAl1(Ixe9r#AbeI<4G`zuA#y6*`%iMb)KG{l zLJkVp0gR|V$)ab&`PV@YxMUs95ETsg6etOdl7z_N{0oE-NT$pA`90Rt*B@>3yI9W- zxXNv6lECy~tD1YdyEToBGEO%~@`;Xie`KE@Z>#*?&HVg1wa#{tPbfwg`4LGy9wQZ` zG(pZgR+)Z74K-c+qW(qSjk1!GoL|2zmDSV=vmX0s`}($=LSD04%e1guJ%X=OZqL+3 z#NH8SI~KA0N@>pQ@5Hz2kX9W{&YoH4ct9YMufaMh(nadFS!A4O=6au(mzrp^qT(-Q zC8gnFRBgn@hTUwdkJ$D?bBYiIVmq7zWoAE01Ds;6)yX%uoPI9uF)0ZhT&G^INHbp% zavLjy?O7EZZBFTEYlByQ{W`r;X%qK%pB)|5E~~68Y-y2vgFsBMWa@i63tEq{8e7_^ zApHk%f#Dh2g+nmfV#TQh)nXNfjj=*PLftbV59W@y=X$)ApwJ);gn`yo^l=rRP`%)q z(w}VLG1`aM*;PBK3z1wkwAoGY^dphCQ&Jt~PDg362zp3(ll!)vTvoI=Bi>X6H7)&Y zhAYP^iJd}r;Gjs?OoN`78s}?NH;F;3cf-RFB@K-!E^sch`_4R!=*FEKt$YQo6h7nn zW0VEbpu>Q~J>HzsMO0iv6XL{TpQdWDIa!HPFN6$9j=|OFcB=~tLc!G3wtGLn82B}( z*4?hr4>q=>OUh8gg*Vs7U=9`$5jk9rlO7GDH7U8=oQFdjCRzAD-lC<|(b9_Fx8lM@ zC(0*8u8rgboFv3eVH9(^aDSdZI@Qh0QxdBNt5Unub3~w+(r$^d}3yM#-Uf&eA^Ei>t_P zuyz2m2cBC4v#%6oBFri6i>#2j;asI%0as^SD{E`%RZ)>AeJNjETwO~&b{DlTP(+7D z-=CAdjpzlOv_qC1bj#8!iIDI}t7|8l3;()f_mGCPxS(LTBj{Qo;e2?nFHv7R_KKJJ zG;zigI@FM1b?Rxm$<~##S|Op)G9ILwp0mGvM~_}X7MV*JL7we4`5fh^3Y|OEf7aIc z^!Tqxex1+n>d>`r@#dPY`k7oM@3F)sfZ;*sRfKp1L)Bme85vorVWU%#Jsav0qXP2M zvYG$%TKnSs>SFg>Lq;LU%Vz5zbCO9xx`}`}j=#-Sx1IC&e!G{VMDg(f!b>ZX$b7T_ zrk%jx!ijvp8%sJ{lvan91a@ycLkn^~QQa?4BGT2(;CjRFY$avsJ72SEwguNwjpa9R z!bCNA42EuKGGsiQ%Yj;}>K>MNuiFUI+lRO_3a<<3jZ}m4^GD!+ZAQRSi#B8fL~mtL zFu*m-*Plj>jMxZG5^jsy44aqbnch=S%tt><4YkdaIYirB$ zK3s>A(ef4WR(*OBGX}(AbGSaDtEVU5>U|_6;a(QjxBGdvJwO^`eamaPcPTY6CCAZINu=h^F2)P>A8suw3Psk)WxqzbrUMjGjWF(D8JFfO#tnst1ngp%rVr z7Om#e9Z3aWAHJ)su0DCEEU`(%vp~@usE0LA2_EG$sj>wpStB!G?N{f#eiz$~y(f9vp1y>yPxqGe8)~93^kD-< zdC(%PQX{U`sL_%w$JKdEBG(cFVV;@h3EQVGbMmyta?+QF)D$dIMnX-?t31^HCp!zM zhK)+c7N?}-g=1gf2T^BIy}LYQvUR7zh@5B-ku5QpcNv{$g+&Lix@ zvOB_h7Hs+i2~6cSih~^-X5a+s%GOoa)q&j4u4|+r>tn?lI%7Kv&4#Z%sL49FW4sm0 zU2;U8Sr{0X+9?ixGK3(ci`cHpoN1kctWt|J-5Ho9J@=BLB;7W2F@c%i)Z981(+M+u zb?M6f-MOvcw+0u4B&!g1;wo6a88%*-)Cd2R)Azo z&TnHVyt58CB2NEbmg?kayE@+#Xpf0C-M?Lr$R;*!f|q*AHx3*Riv5VB-TRzWN6y0U z_y;ic)}m4*-r7>@`e)?xblH3rAK!}_arXC@y2r`cAJa(Vcm~O36m`hKEcdCP&z2%s zzW$F$9X@0q9zjn3gqxdN` z_+z==>tIzNz#9UA=-72Q+O*hD@s*X9=9+hf!@kXYu!=sNFHsR!!P_6620G#3bGIzd z``1c2p(}l`GNG983|R`(Y|;at<)KHrlBIZ!xq<=nT#p_Zwur%AmRD48Ou4*US}v@N zCJ#xg+mOU)6A3v6_s6;FTG3Ge-Dz>3ZdJp<#QDp0D!)x3`%-|1I8gUZXxk2lyq9dk2pX@AidJF>s>J=k!(Mc9n6neui4c>t6bEOY$R40|RB>NA%L%gFg_WI9d$zFJbgqRpwa3@i`gF zI1zw3z9=a#&;Kv>Np~?(6`Z=@0Wh^EIwmH}J-xkU@G`42(S@1I}WovW_< zLq&`DgtjU&9@zsF>W~DkKUm}PzR7lq;}fK9<<;CrM_nx~Xsgf3?eO@FjK8wV1*{la zD8IIco<5b=(@UPF&3;EgCm=KbrNBGAd_$lqwT`F!Bg)8<4xQnc4(zTUetZ?Zeu<$N zQ<@w*;UZNv$rixE%gW1p@G`Ndcc~X1aB?cp;bAe4lBe$ga-n>#(!C{G++Nmx1c;11 zxvuhWdao_g)eqn7t%I$^PJjZ;D$ih%lI zF@NzCH;hskUmz+6L3j8^3dI5POsccD3MZ0SZGaCbqu}~=oLFNa>EQ4UMHmO+RNOFe z2S>1|#V{GpQz>vD?39?X86OxHltUE=BXI1_p~ZRX%K=K-4SS*sl(%fe4Mz`Y95}{FokyDZpIMDKVXrQ4F*5R!Q!o;H+mNGv4!XW*7 zPc}w^_!$huX}(e;qie{C8Q0O!^7n6hXvS~Sl4|0Mk;jW3Vm@WP+$gUeZ9Q4!<Vm<9gzd@~7+w7XN3d-E~7!yvKuty_O}R|-8ny^-MSWcQ_{OoVSnbfLhb&AV;9d}Np)-|z1pBxPnkKt4P_+Ef&q zcfQtoII1$<9)L|`J+NY_=G4;HS8&js5Afj>^xC(q<(Fz+a$IO~!;yP)I|ndOP#Mom zmsHF$Zf1Y0@poV~V+3%(ksbfB8i7F?fhilxbltbNW0UHK-wD&>%fm4)s^t*AA8y?# z2v6g{DGJY#3t(Gl?Qi>fmA!_h@ju4U_ijv-KL!rRmRD_4K7?eEwpxUoMXCj@YH_eS z_=HFmU!Iu*01;NiyB7wGY8G45wH6P8X!8Mme*bptnS`_{a_PIGZ)Wz*j`^3U?kM=2 zV`G#^AkgARfcz<>i#mc|b`qT!H@ioPkeCnz9F8dVv>(tb`dEXr{m;1{9}Gao%b)U( zWL>O?ki`0|BtKnmm@=WZ#v7dCc(}Tj9dO$ojKlra4ziW7urL9VzKw_L=uVDcsbH;& zc8oYl+r8vnRvsRnyv^!%llhnZjMcJxb>zOQ9Vt%J0>G6?n0ZZZ4OKyL@tEJq0#_CG z;Cb)dtM&&wPN+4OQz2d8TI19AlE;b9YAvnTB;LdR9I zg-e?{e%yiqaJ6MVs3{YP0R9n;B^5pcDtL*@af=KGqxd+$ufYp3`UCih9auayh?#|3 TjczG$;|GGttIJhAF$?||qS=vv literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-large-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..1d03b4f1db41e3c964779b837c8e2e120c5ef403 GIT binary patch literal 5330 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-medium-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-medium-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..77c628890b7869d89eb9e8a5ac89eb190f369d3a GIT binary patch literal 4763 zcmb_gc{G%7`yX2og%L{G=F3QBCuLt|WSeYJS%ySrtjWHOrIJZg?_^61k|iYB#SpT5 zwOGbzM3#uL4aPcTd7shye*b&V`Tg-b=RVK5&w1|q^SSQpy6)@xJP+3L%H^X+M2>(! zpraXyg8b#*>g9dDTy!Hqx(mI4pnP4>h|;~6^jZGc^M1hi~)w80y{(k{F<8& z#KH%PZQ|6EvOFaLVg*JNIL0{Vq8^AH7{ChPHFHF+T3JdxNqfFMSPCE>n~%5^4L%n4RLE~O%)9414K1qkx8hewDxmxu?! z49tu9&oE(U1Y(T;4-_Y`FbA(w1LV`M=H^6-OG*l-r*C_DdP2)|5&Zo8`h9&?#{~u9 zbUHmbS?ie*?z9O%o?jA?P!;O)F}1_Op7>hWkG-`KSp|!Gkdya|)7I9`#=t-;KM&gf z?xmsZr}V*Fxv#V>rg=)ri@NwTq1&6kWQ*Ut$+an*BL^v~^rwWfSDGYJE;yif^4b%_ z=|;^8>l5};$I_Cm!@?e@+?27}9#nmV#nFxa&JQv)WJ^gEvu#zq5XIx}_BaSVTbfZ7 z+SoUTmcwONg<2_$ax#jLhmLcNnhx!I#8&PKT)r{c$+6oX8FBV{5U=RjmjxZr7s^4( zM^7rZIizmCOBE{fNgy#y5{1_%a53WZ`Of(9)p*@a(HtdoQF2z+H13JC*XUyL+v1lC zvo>d-9gChu_QX_clG0;U3~2)182Z;ZC4AOKN`zpsuod<@voeM!2+DT_SKG+wd6WKK zRq9jsBLjP4&8qA_2EIpz3u04Kg+BF+S)gxOqpMbBP7mWhx(6-{`d8;BJbt|PE4M0C zyJfEZx`-~Co{MzrQD}Sw>uYgUqpzHVU94@5yLbGQu-Rlse#BiHdt#Q$y6gEr=oQp7 zF-Tu;uW`iYo_+wedt--dB-lSl{Hb5c2qDA5BTMb`B}?_;;AcW*v`phk895}Gdm7kc zb!S|nU8aqLW@l3d|2un*akGIwse+3K*74_I9_P`MgcRmDR?UR*C^R}hlhA-({9efx zoLEH5owNuJ>;6Pt2=nmdm6JpI=&_yn4>13jGwDLKYY7`=1IjOYZ*ZN9`Qrlf_pzFdfs)+H0Rt`w$z z6Z-Utq=`xcY}Yb5u>CWdl|)UGhu~{N#1Su4v%vAt1B%Yt)|CK(`g0O!`p}iQKY_}G zNf9)8@)VKmg?uvQN!!}z4WtIw<+Yb^bizHDxj3K8UR7^A zseXNe1_5iW_73iJM zaC@Tf`#PEoZp;NM4B?l+UkqE3I(n)g#O&>``l(Ishpaq@#RH!QEqYBfU~xs!HMG{2 z%{$92$tBn&=!Js4?={@prn$Mfaj9|+MsPShIVtIurkGlmiGjKIp}TuH_0gP8@#r7# zhl?{wBob_gCV z)D#b#-q*0Bc6<=kx!KB2QwUV0x143?y_e4Lb)9U1mlQyoULp4~SOqZ93wBA1H{azv zg4x;%O3TRfQ=Fr9)EKM}I_KoyE?9-x4Y#km^Rh7{yby0by5{cge$~Mtkp_Jj z!=)>b5hFF`Vkt0YrNGCP00Y4w>gs7i=dbH|QQqdm6NOF^2_xyxiL+bH^>uY84paEJ zuEFEOV~zEs&L_h3^;w+mv~UFO?{4-_v?pqwJr9M(8{tHz=5Vt$Nm%3M!Mc39>P@CI zeOFJ;U~SSnnst6{XM=?awlj?{}Sg&=Quf3Ikt({kA^sGWsfWVnbt{omlhD(DXvTBx+$$$-av>h)N>e_4G#N zaS2pbIpT%NgiZ?+@_|xamI&^hgD^`-ZK5%me7aECqm`g@tJrSEaO9HTl1??Nh?4b^ z*;-z^m!`#^=6Cl+%-U9dqH$GqO<(k0l9|U>0(|Eb8wQ2L;i@#%oqzYfxCH>yB2E7^ z4gTpgUuVH?I6dShKfDuGVlj=SM6kfO-hxsXqo(6LVjEwbLO@R1?Ji=zx|TlA%=H8Ag9t#_Fu& zro>>d{!vxr%@%#86d=ywg_iUjgPad4YW=#RWi)zcN6fDb((=J4BYRT@Cq^*6MY2Bp zDa;s2bwHMsc%eGJptHpHm}j{Er+Jv=$*^O}(va{t?6Tdl?761_-B4?rByIf)A4eoo zf684@HQ<}7*Wm@GRRaI0lb&@_p|Rq#?fUSc+9d@MmD{TM9(iG}+`8%+y*G=CE*bS# z6k5Ki9B^Z*8mK1u^LTW04wA^fJikLKGgbue1)bgdlo(2tYSza=*NJoKxlsG{Mq^2>XNfMov^`#S{t4 z;Zc`clP*QW^=)m{)GlVPg>khfX^vf(&xgZ|EUQ-Y)OBg1;^G!vvad47;>Bj&jnCBp z4rDFum-w$$dUcdUym6=@tJfbX{DCjVm?3SmEWlLA26`X}KkH1L6jQ-69)Mu23h8m# zOl`}@%F2i3)9aMh2c&ef0w9wyUB`FWnR1&CK)4Umkmq8GW(=UFm(2>sWta%}V}Ods z-s^9|q*~?%B($?Khb|LAf*nARjCo>qAg-MOrM>e^mT`a}DFMQBvIIJUnFj3`fFM89 z%v&s&2%Ib|2{6u_$!AQ1#)SbD{=w}ChKZoZ2_P7NMAMiCvHbrX>AP;MU(;5+h=|D5 zLaSFseZRVrWK~pDUJr^zF6-A%zwknBEPS`8j5I}Q`iv6O#ln8^%V`E4ioGKZoPqL% zbHl6anRH;6beg4s0jsU8ZC^J*6TP>y6*%luYvtzVX8HHd#;~7i)OMhVPGsl@ie~uQ znNnoq3uM@o;K0*e?a*b3uNmqJXD|~G2|g4M0X=~Z#t{2;DP$xaE}|V?Rk6D{7LA_z zloGf#mDcZ`=2Wm(nxFpwu*$IWsd!c;h`Gtigl)3>j+0xxzS{e$qMk2-JuD{dU)do7a$OZ2cw2_9i?u(N=XJutyR#Ygz zQ1cR!mX@}1auVHL{>WS9JECDv;QfGrfE3;x z^+a**pZ}6HtO{!Zv9p>0Ic8jcVmLuB1V65i+1v6MdUume`}abnsf1YgjHJk=yHff2 z`F%A$!!ubCi&oh?VPFsa_sgx^v*aQhQ)47%%l*;Qr-i&ajF{ksL8j8Sg|rH6(Q3!8 z5aDZmm&L6d95S}mvzC_{H<9&Q(-{M87%Cy8nD%yN2DMHFq(;7NiJdI}He>QBdj4B! z)t#RP((=R###~9+OnIl+E8rV!N~SEKqN3s|5Ai|!?sZ0Jq!5-&zWS-B=UTbe&hkg2 zFD~q?u@E52$8S9LGS5-RUyNiZYA-jlc`EM%Asxsr%nCPky7f6#ZVd=g$^QOg!_rJ) zHYWG7c+}O#n&^Fuh`R6Tfp6c6X~jSYoqZ(fXU7R4qc0tN-@~JxQE9m$V^L|YuCB>W zA^3|+#8onT4-Ou4O(fE{CAW>r>-S-|CR|QNrqEDoP+{W%$Ae+~Uzf>s;uwbH0EN^35QmLMx(wJ`kSysy>!i zI~s0Q$``sq?GV_DWjjo+>FG+6nZ?RvStcp^jV*5+_k-`Qd{$VSN^>R!^k`G=sg_Ay z@EIaYo^QmqtxSE^tVud1ssRIdq)MF{YMk*dx?$D+1Gd+K9Frczw0pND@K*)ST5m5@ z_Glm*_O|B-E}R<9iPfuP77#P&_~j3fmSK$@lbxpDi#8=Jqmv)D=SnoaArJ^T7!fgv z-2og`2%O5X6dWqOvOQl`f^CeLr#;DAJck9uRA0NW^BeOU?~qaJw)T~`5da!yWrNI= zPV!y*UxUlb%L6BI>LefvNAP;IhiZTut`}Y|2q0Vo6HOWPPVw2s%~2Z%6=L{cV??cn z$9Pxj=I^kE*Hu+lMZH(UTCf5#GbA$w+vUajd3iOHp65!2K63PvEc+q;{z}@rYyE4$ zTiM@>wWYzrTsr&Xa_4niZlBWWou)IIBfeL-dkTJZuqD)HgjTN(d6mh2*s{#zeIGW} zj9E=*hZ)?C`Yq>~aDPl0+UzXErL#6Qz+yq%$z=EYx;$b;^V!{A_e@Oa5uTWsm;rLh z?i}{fqa)H1L|Pk_FOn)CuC?l97kWIMXkT`p9M-{|Q*a{TL0g^O6Qq zhs>ZH9W5c3)Gl1u2=D#u0Y0xxEbVWk%T;K#G(=6u!Ka^SF6NjdL1pnLGy+jim2QwV z#yp4LvvG5cq1#J%Rr!`r0cC$o`B3z|D>+V5j2m34eE%{6K_ulS6Ru@|#GkF6%_&QX z+lWyFv54~nt?0~+JA%y0ABOgASf^*&}0ULCNvfX9_&pEd$LR(XXl8l86002tW+ladWfENn( zElG*NHpmw<0>1Fv?y4vN1%1$E@Pp7zK~;|weEdi)!@)_cst9>KRO;#^Qr&omm3RY} zniizZ%MW8Vzf9f49A*z|YvWIroV%^Q7^8d{gHlxI=5Ft??@MW0>JgxeCl?cTTCCl$ zzA6Njw!fydE)@;E z&Jv?6k3eioh)ohv(>yD8hJo!R5&{~Ur2oBZyD0#Z7763c(xxKA-BqK0FcsJ%scHJD3~addQ4 z0d9Cb^rRGZtt!1=R0&#nuNj5c08k!(pni^VtCf9g1VOX zWmD4&OOq)i147N^O2@GVdRg|#{FxSk=hsug@;w)TiHMM6_{6-vM9jPX?y~dMexm!= zj{b5tZP%HHA5g%`>}JukBdQTx(1C_(pLb%QXi5*nmnD`8M+^#p5#(ztW>wa`PNTQG z9iKlQW#^L+VR@3G#=|%Gl-E)4FPjh++Uv`^C8A6N=*MMX#ws*XxfUTJRH5&6iRM zEBe_(^Yhns*Qet?e7KWuTmd=STMrw4^ioh(r%;PH+-4IA z`k(U5#5nn8?zJWcMn;z}jd=EBWtVC^SMPZJjzGA~nNfGbC~6ND zQ;J6IQLE*{H;XHPn=d8R=VhK>u3(%sqkdanPLIW6CEb^(R~QccS3*KUF4d{H&h9EK z!$qp^xVyW5=}8hnot^B_kP<$?;G|ymm8A#tb$2To88HjOUt56@K`HRn)zveqs+a-i z<9!#bF989;NRhds)CXY~N$9bPMt3{7k-srhsKi25+w2B%%E|_5X^kL?mir;{M2L#AGf1PaglxQ%``OuRAs*WE&ppTGc!gLhrDB-Wq1v zTf@d6GIC-Am2=lrua;Xzmsh~_pzti=JTcV!9gt+SlACA` zB_JKHUhtT@hg@Ful!kgk)HJ2yY{+zSn!NlwZu)z%}@w0V3tvNmBf>32}}=qm5Jc_PmXg7Ecq zeiDKrca@2rAtT<%pjtnbfpnYN$|6!UM-g2{2FHSz(}xR!H*fOUtTL_Ni+(GRLr*`% zdf2Su5#N-UuscE2Gg8hd8m7>|`znwL$Kgm>UApr*FSVPh{87H%IVROn-9aFlUH+dH z?Z4MVqjr$AK0ZDlvDjej8!ZbnGhoJ9GFxnWZ*OkWYg)s0v?Ywn!r58dSqbr1N0VHl zkg#x&?igwi(2e`SpZ5;UV3JA0}HUi(bwscHPD3x?JI@r->etuBTnk$YKtX`8IjNo96a#WpZ zbZl(%jB`d#4!6NsYb#+%X(csHnK&`)#yxyX(1yC1R9XVTj{z$77P77h~M}<2OQ4s;NT$XwFW&s-qMOs zOl)4?o7>-7!EW7(?w38HU=+9y&RSYqYhPO8Wnp1~fhpO-^%MLI*3>k1ch^%- zU%zS9^HpIXRTvd}X!k<1V8d}xU!SJ^bp4g&oXnaURvxW11R4!rTwL6k31iQyuV-_t zkmmR2IpkRrdb%*_jeEI)x&^8mfs~X~kxf6_g#X@TxbiF8hYy=JHek7Vd7E=_@CWNt zb(M3m(i@#zagDewJU~iXy4Yb{{MJ^F2oTVlBGEyN2Z)M`Kj?_P0t5sG;$f>*R8%%U zsjy$=;UNL#yID=J?ui;kATu))4-BiZZf`28y}cbhbPVFiV!Gb{?c28i0IG9FMFnG= z%q|nqXkBU!dIbW;9cw6YeJ>TQtg`nPX|4wZ2j1*o-{S)9W@?jKSXeB5{n~7Z^d|y7 zdR)N>B9%Qn#M1nCjcRv38^6uVQ?#()5_g)SFk9XjSevY|NH;_xoeqzalapBsj_Qxr z6g4#=fE-qIaA;^|AY1K^hQ}wAm`foF;HDI30syOoBLay;u6TgSTKN_kNfsR)ee>02 z#9vJyMa02^TwgDH3xw%MQA+U?O0ZyBu0ZhuMuv?m9F_e2WkN$kHx@9+Sr9L%(*xYI zloWC$9olQpV>Mfx|;KzcRr_R zX#~M~&)B%w|Hw1nq=q3mXC{z@t?}bW>d2_58P}?fona&w$Wj=E-{JBb(7@Yw@04_P zbyo&Hg@zKldw4X#C_v?d%J|StPEK~`&K)0Y73XCY+^-5sN1rn5>+1uF#EtXw^9_lg zL@ABm+sivS2?k_m{!ohQYAKp`SMNxHP{~e}bise4l}-%&IHpj+k6~cNXZCFXtK@p! z9$R&Fbw=(DHvjEUBSR|L+1Wn|FnIo&Uhe>{8kif#JSM)Xy+WOfEizK&LV z@M)$>1|rcX^dLw0`T2`?CeddnsH4>iA#w50#6$+HYj1C_t&@|AjSUZeAOL2q=piQw;N+3V*y=88y_TiYghfWQd+FTqnHU|=y2f?8wKue@_Y~VObU@0w{7Yb|{AmAk3pu8$+1hd7H`w<9uT6lek|v@+!7S)saLR$o literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-medium-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-medium-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..fb3673dfe34cb4b5d272f65a55b4ca7319babb97 GIT binary patch literal 3299 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-medium-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-medium-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..2268dabf456a1821ab5c9f9355297ee3ec64980e GIT binary patch literal 4513 zcmd^D`8(8K`$u*OgKSwEBOisa3!iMwpt21Wp9p0iYawIovQ4(^+1G5LY!k^$BKy8% z%aS!js2FC9=RJ9z=X!qm{srIbI@et9_ndR?bHDF%->=u}9E`D{E-N!XGZhsT>kU1a z2^AGJ26(n(qz8VzJp1lYQE@okfN9-ES#9O`xpI&5bQ-bL*GCj`oe8fs$KHL$(I9yb zUcu;&C~92j5N;IN#(>=szu3&$d5tj^;rTFdq)jZ?#E$7!aftc(i&Zy6!CLmt1tO%N zHJci?X}N=ez?=+UT=M(i>E`U8Dr>VpntS^og2yNDMolVOO3N3bxxvn~Ove~P#TcS_ zomK?Y#mY`a%}y0c&!h=?enEta257(tpc`l*D%5?DzKjBT%3Ik*szhT>!8z zs|C39A)5;JF`EzhXFYykwqikK5ycN1Ln`otfwPJfzcpE@uOwc5yv%s#?%k37tr_Qe zT;Od}Q&C}ZbKVsdl?)RTljYHhJ6AR)YeXA7=5q-@w5+B{KK=IuG~CEwYZ3>eKaLmE z-ujfmd8s4rHUgoQk&%&-lVjjEU0*OZcKeVZ*vEJNpfwLqK8nG*&))Pu*iH>XA8bo4 z4yU9m1>dh5?=Z^3cku+%7A8S+;bET&Dl7Hrzi-bro8G&Zsi7_8Vs_`waGI2b(+t)v zB{})}HUIrz=A+iKZsemPpT}-)r24~{fL&dYn}?5YCN9_)b6>e@y!p9G0t$WI9o#<= z8FuGweSONg3s*Ji=;+4Y`*{T;koj0(v#G&;q!OH?&vCX?~`z7+3KyQ;8y%357bJ(si~>9ovS1!y@lX44Cg__ zoR`XeQPOWMKD41w7?-CMoCqZ|!c?p`xG`-}Y@$($x_s_4gHDrv)4j^=nI<^@dLoj zK_4Q`vhX;YanpZJcfvaXDvp8q_$VIlw6S?l*{2_pBeqqW3|$kH>tbSJ%FD{S&{H?E z@YS~e_KVlr5QMq&>TdUqk`h(qhBDKk*?kie(C_up&I$=P@;xnNagtKdGzpHg3BYhL zS-IpWdkC=#sw%ka>faX^oY$>!8V2(#xxRQbI!#if_kPBF>bG|IZp2?Y5JF_beDFyQ z{aM}xRgJ}IA!x$N+L|e_hjB;4tFJjOutiV;`Z|hB=5k@2bs<4O6!e}WJ2e%4|DCri zbI?%4VezQO2}x9$m|+Rnf3WnjlH$$pq%)W7>vwN)1>3^H(%lBsiLQP^rYX|u%)JK& zF9t&D4>wgyP91q18?wJErUStdx7997N)`h-^ll)b5!=Z|z0CRv$XJ2jMg7*ISB02e zmP-4r*(7Xk!vyfKU1ea((Z-c`dp%cH>Wx#R=Zu#_&I+r4>2h@=^SACAn^OXg)}t;0 zPZPwR;bp3-encLHQpcyF3{t0 z<18saWA?;$df-`jt0t6GDdqcTAYj>GazLh>J@fA$^LZU{0&9w;u{~3??Ii={v6-qq zmkqM7BCKAtD-&9FI|OP6myVuAZIviRw$htsx%AFVx|?=>R-gF&(Z-+G_00;>w%I_? zf@nG6Qky~RaVg<~N>UJUOWCiTfu&u3@b9H*Vdue1B1%5|@%7dt1&EX&%u^FYsjgr&zT-le%0Z`Zx03 zQoNd-X~uyX=pP87+9UVcj(*td>rv;1olA3cMoW!KH(%rDlr%Q09ElN2#2Zh(PhNz2 zEXEks`g|K|-B7uYRk}*|VCqHOmXeQTzn4}2=O@d(HO7-Wb>&Nc@1(IRP3ad_2a=NV zVLX`EcycEC*SANcCNtdxq15INr3P86B+U>5nmx7l-rin}(bMr3f>bcc95w2jGBatD zQ8(~viV~WpuW78)lkowEY*5p3L67f&=TXY}UdWNZfPe((uliES#K zS0m`}I6<|~%f#>HmHp{Ky=hW=grp=Sb*Xy@d}XK3UX#G3NWAX?+Y)`ygoJZdOV7se3T+Ik2qXo?WKQ1DY!H8gTUw zhPQ_!KO+@|bvrs5wnr~p*)tu|0EVxg$I!8yAL2H%)RK4T%V&{pTtG$ct`|Jnn)W+( zM_+an1$~i;R}gA*X&WqwFSSw9x@a+z2<_r=wNwj`?2P6Rb^2WSk9gn;fb0eUYI>@2 zO$M#s=jWgoa6PW6nJtO03as9YXx*2YwCNr1c#@@x-EXSq>EbY-FwCCJHPCe3XrEzw zy%j|nv5?BMCq{_!1zWq;HLP!HLCE&iQqK2FGf$C-r2FC0zLJln{989RAb4;3b6)(Z zBsjoPo3(IrGh~$=yFC+)bS<_wN$k zJwBN4^)Hl{lhc1FjG780?hp5*UUBYveo+Stpg&`L)JF=aOk8K?&dxZ;Yk+#- zr(KS5$sU;Y`hD!_Fob7yCgR|;^JsWj9;p$v`_OMp5l_4tJ5geg6>a?*^)-U$2zLmG zgzBa8Q%da*xEPJbja>ohho?VAndSY+`u3%%4yspuB|SBjBbb?mr7Atcu>OD9?hgy| zb1~_B^p%5JVD%k1uc3eK=yoHvMn+5)i=qP@QE2qLqPq!-KwL|Axc08&2)!b1q{0o4 zB5B07_eOseM^)c~)a~{!8Wc%V_+V4bRtF%+LT1?PP+51$dCj(L^ zzYRJ@SCp0IW8G$++1NQa^aOHC!=5UmP#qtT&He}O>rtgnIjTNMoch>KOSiW2erpRu z*74E*%9$jn4j2&=&fqo2Gl_K*xO3-Dcm9AduDpLRH9K2U`-5;$Bv;IJ;{MjL!g_JF zQgDvutI_Dw%_fMl?+4U?n1c0;1^x(Ik;{OjL}0kS(^AAN6(BrmLgJ+<`ttvKPYVaH zvipT9YrGZnTbGIW$a8`>m1n&dzF$Du-)s_8dt&@^wI4p@8LC+boE;!H zA)G@A_Y!&K?4nTzKy{DI`pz5tz!9s@whJh`7k4L%j}GLht&@HZmNE#TLhfN*CF&9+ zOiPUI?Ztj?jK>HC{zCNh^b}@h@^fSYcxR%cLqF@cmgC(mmOk{Q$;)}T5PtjqeS_I| zK1IVtx}#ff=MBA9`w~y2EU>ZX1XUs6=jrLXY#JmPDf2fWKs{gbY20E{Cun}}>FX;_ z6xAL1+7@N+KoLGSjR2ug-5g)tw93D`gq?9O;tHooTUi64h=g-Mu$#` zDU=f)cG7W19lDn7JLl&;c#Qo0LfO59KU?@Yt(4{a4oMC&_&4=6%`L*i@i{M@r0GX zL0Xbkz%G1as;-oD(hg94BH?@8U|Df7>}ayt7kcgBiS;jX)X8G!F({j zzE#OEPhAkf5NZqx(F>Q8l&QFwNC7dY4vaEuSeL_FgF$fjUqc^3{JFN`% zn2m~8)k()J;vUN}pZtN?c_S!&>z0BImOYvNkHW>%#65hlzqK0(u!?t6E zOQ0`2G1~Z`<6?u{R8KV{^~2)mcEESZz`BrK_1?Y=c?l^g)=-AfAr8P3X^2c&nr5Ip z)0{C5P>{|5B>fuJ6-FSD6=x7%spP7sSBihyi)}xdg)gjED2ba3cq@6|4wU-hKgh>K`r!GUC!h9nZb@ZVO9HP8JPo4g07)1RM&{-wLAaj`JM(e&A1V z+3t%(VH6*7;X~--o-)})^G45$V&dYXfCRoQf9AZzoW{a_M}ja^o_o&p>aO>wcwT_^ zr%#_AZZ-gkOCmG%K|oiXIfoRZVKnsI(oLeCg&~bDd{UvB3IK!`a)_Jru~SFGG#7^5 zoPa;HIhlDu|EVxVF`&nEM8}$PS->s}1U8!P>?-B1LDLjO5Kj4A@F{_>BNVuLp}GM# KgjH+Xg#8N)WPerw literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-medium-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-medium-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b52eda5ecf6d52da3d9cbb3ce530eefdcda681bb GIT binary patch literal 3794 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 afpx`V>daj74gpsfHa%?vtry5!!T$zi7mSVo literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-small-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-small-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5f92e5bcb30178c7f45ae7465f3b9d942da763ce GIT binary patch literal 4540 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-small-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-small-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..448ed99bb48b0c966e703d9925e365082857db9e GIT binary patch literal 3224 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-small-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-small-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..6b03474060bc89d6f99936a7f70dd9a07534baae GIT binary patch literal 4298 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-small-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-two-small-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b148bf911aa1cbe644afd362d08a8072dd70969a GIT binary patch literal 3750 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-large-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-large-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..2e52effd4ccd050630eaa8c90d1319af950039e5 GIT binary patch literal 2111 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 q3g^dfC1Z{nO7LF`fnfAa(WU2|qW=Rw!8vyT literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-large-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-large-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..1a3dad5e35ad06d8e0ca00772bc7e09a2ef581ce GIT binary patch literal 2276 zcmd5;eK^x=AODG*U6_}i6o;fx-r`6*MQuZNG&0P~PNOMOnU~7iXnCu=l)OA=HBQJ1 z)6vE*FKe;9%MOcaGE9pTQ9Rg0Eadrho#+4O&*!=SxL>aO`@Qb(=l*`~&-cFLi}8SJ z{HOr{02F<~9SZ;|8Q?q`q7L@4mik<9P$6MG+<@vn<4@p1jpT+7fPgI#a_%+&KyuOU zt^o5Uzb$?hof-6}mY<;ZWp=)yWlZs#2h*h`%9ZOSPrku7gpMiHmg=cu#Vci; z?^p@S!&Dan0a8WO5jX&t*6XSRsW*NC0If6?;Ebsj0H~e?00W3B(CT6U0P5`k@YDa& zB(*bEN{osc_%b*8ABToS zWo;sYfngx3Iy>F@f*QJD!Y?VQDX0q1l*=zKFN}rS1hM;T!UfOSYH5IQUL|>_M}g8^J$2~keQ{ib#@~@jKlc} z=2I3c5Qp2(5Dk?%zL7|XW6ep(`WRQ&8#A-BDU0qdA~P+Bp0@Gg~*g|@kw)v2?2TS%iMTeY;1J~)aVQA7gcI@#0t<_K%>#>&$Qhf zU(7K&Tn{EfUthnw7Lmknl*KlL*r7Z;Y%DBLP1KF)1)~C?MV_E+a`N2E&Q7(V>rDjM zp+kSv)%j0!<@ldFS8iTeQ{&f>0re-5>h_wM!OpY-D0lZ0w0A8j_MqSM=SKzy2d%8F zJ-fTR+1UY}o}QP#NhCqbp9VY# z9Gr-O#JRcMRM#mLuUtX+CJU7aNk!J$X;_iF<$#YT|2yb?>``(O<&)c?b+a!h0CC>&q z8EZEsDzP4UCWGbZd)xK(nWd$BWep?`d%}zU{>R4$C6WrU80*bIoX*L~aVF2)pC4gJu@@vul962pHfukuCLZ(HG0&{YF{H*fx^!IpcBZT#&X$+Iev^sh;*wE0B zhB!^Y*My?Sz+0)w#MK~AI>CDB&IB;j{7L{Gd7FM2+k#c4~W)m!ZAu>1jTtyVjP= z0QF>7kYiVg|Q@IMj+w>r6TPQjz>%l2ahdx_yhKyd= z%bC^Hb|Bj2dD$BOi(hasOLM2)MOh>H>#Cy6R(Q}(WutpxWpm;ya#~AMb8TkL#qxc& z%4R_``Qav`)YNJd8NRul(cf`~R-^ b8AzaQ`ASZpB8(6IQ~)#z<6iA{=H|ZvXVvlf literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-large-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-large-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..da5b3ae65a80761023dc6b24eb5683e0026db11f GIT binary patch literal 2098 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 PC1Lo34pwEBC(r){83fKX literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-large-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-large-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5c6b0ca649f7841b232ef3c3996afd91f9d2544d GIT binary patch literal 2252 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 OK@R6!Z0OdP6aNKJvG76w literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..3a11718068781fe9cdb00e4ef101ff0b07cbde51 GIT binary patch literal 4081 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 CU7%(F literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..9aa82cded81084d4fb82a1e16251bfdd93a7ac0a GIT binary patch literal 2246 zcmcgu_g7Qd8odZFGBokcsK{UdUl>DE89^`*x?q9{7ziC4q$nW02axjU2ysOrLz4)E zP&AJ8qJ|MA0u#W2pa@8p2tx~mDrAo9{RwZaIX|3x&%NiI@9uB!Z=aiKgSV8Hke7fU zNE&m+oB%;0Y2e;V90vO2Sn3CG5eXw$nnKJzg)d+r7G{dE69+9$+$#fu#Dg*BCU()q zOQSAV?Dpa5Yb$!aSll2*#<9A<{y|KQhML3zJ*6WsD>*q3f&6bqStrr_u+$$t*;$W^ zWKN8y$kInzrBJ3m8L0fc%3B;`-x;sIzp^*=+l71f?ad{9x8n>Q>W5o=_8qIpi!{#s z`i>aX!Acb)L6C8 zWS$pOZ61BHzqeIOqZtQHyd>Vdd6QshLwzkg%ol5=Wms_)x-%FZuHjrfNK-QFrn&|~8x zi9tmdZss08=dQrh+BLs=^{$$_dQQa31k1tCuSO#~=o;;5NSAB{>EIvEsxz_l*&$wY4?phFkBf(c=8QTD^^x^yDYBNy#E*}U7i#-bPM1EAD33pvk7c=!QpV&D^~_Gj{b+VLOUe97e5b_EQ%IW!koMQa;QCO#+`Q|jvL8-u4zF$5eg=h;eH8tjyQZ9@rU zV~SAl*s1BSDsvDIoMj~^TT-q%6WNtstAO+`6{yFf&MrI)fqXXCLNCUM%gOm)wx;FcQ4Cx^O+Lef(hW(Dl8q zJM{o9OiFImcCU)b9L`gBXb73Hh~M47BMIg*&ygAeKm*l?z_K^O( literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..8977cf362d9e475773f0ffeaaa8f905e03509dc0 GIT binary patch literal 2062 zcmbVNc~Fzr7XQFL7AsiXXsJ|+G*!W1Df{9Y2|-yJSu`w>9Rh>^5kf!|aR5mvk6j3h zvNUV~8bH<%%325k2}DX_gs{c1B&@QO<$b<+Go3f{I&a=Pf86iRo%8+fIp_B~_dK(; zhASLaISc@R0>T1@1OTaL;NDYC8eDgeIeq*{g(BhCfvUmNA^?#64FS7mN61~`-?Fe< zI@7-L{d6|ztTD!QS*M?jI()+s=Z1h~yT3ejF%|Xfo^9%j%ouk~gBW>idcfCB7EVuJ zeCCA;yVj-aem!`gwU{JzBip;DbzoPy6HSb)9fK0`$F`%x@*@bl5u@6|fg|Os1k+=H zoH=zJ0G3tjgfrJEosn3)GrPb8ApIn9gl|xG9I*=%O|K67P zlwlM+)y1fCo118`_jyN*YOuQgkZG{bY#(5F_z$&q<7{OA8t1=W^rwSpY-4jXD=X_; z2;_prY5pMP)~PvNlD4c zlPAF&HO)@cKnwQKGK{mDnzuws(Ss>x;cactzEoAUvaxZ*t53px)3oPBB0oRBh`pV9 zb}XV5dS^Eu#)7{&vY4#}?*^JX-Sfqo)o8cn(P@V~8U8_C$HRKGfvGI9Y zT3UL#9U5H?o-tlnwYfidu(2*0!8ZIM=C@$D@$qpUuVO@GcQD4~ zmajXvZ>|{ggZc&roKYwwF;U?=GV7~kxaj=jq^airm)k!}4kASDNL<74_;Y3*HXd`V z6?AR{>4%kYl$2aTr1Af#nSaCm&#GHB!Zx&kr3Z~lUE;TdgC($8TErP*`OWn-+N!K$ zhtDviV0wkX<#KbaDV>7GP@%P(o1i!O%)#iKl9JLDLS0*1G=V@kt0~3!(g1tT?2vv& z@3dcFAhopA5I1?%+xushcjVTxo4I-1=5R_%in6xr`;DE+$@_>@XQ(3@UC`|=uc)Xf zCwJFrZFhU^#Ya=iV(RJZ&*2PZWMqyVKW=})9*?hM&h9J=I;WQL07e6u?h95*+&cQ(eCFN;?Q&CSiZ);^w|#g-*V@zZNx z)b$AoymT_z|I+6gh@FLMMov!7>guYliq*r1d$F=dbyZkPyoRE}LUncZ#KgqKuomVl zCLrJ~;}K)nx3a8EBo-?kIno*~$=~EsXta>1DCY_eL__0*va(Pp90JurCvx0>@vZ0n zu_ZJx3~8NP0ik( zp55JDE|15@hFe-DvMCB=7UiH?TLW=eK_SCydxTFdaqfFSyonNO$o)}a2QPa%a_+mkoTx>K*D@{d|LS8`FRZ8l~Geu^NQ+FL8Vgd zD>z0*MqXZCpvRTax!Y*;#LFA;1Kw-g{+O5;kguK|^Lo_74~yf4g@xl_il# z9`5cR)6^&Pc)W(72{FCX@}HLT{Q2vJ4I+J?9O!k=p@NgDk$oG|zzeJ$Zw(Kdc%Ge& zu&`LJ(p55p$%+Ev7Z2^})&&{YZlzX@9XO$uX1kSoej22pFEMKI*@a7oo#LZo|y?jAU!=jK|x1EM8IHOGcz;W zYr>;vF7JXEnvPYz^{9K9)h;ckPM^*#C_p2Tv_PId$eD;;vH>juwS>W7q@|_3eSDbx z{jIW_Vm@zlbS9(;dFKut{-e1E2z>MAO|ZlGSnZ1!!9XXvMu6Zl)31`*-(OXOX8DJN zu)%EU9__Os;{mU>wzlf^6yrUxSSS>VrCUKDkn-~K95T7Lw-@Z0H?LAP{D?$j9UWu^ zCz}3FgdZFn1Zi1zm8ujp%RicyNDf#o84Sk3m|LpGc{R1kg}0S(sslJ@qC;PM>g#oPa0p-a)W``icmfW10CCeAR(1XU GlYansi3B$Q literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..80c31a4bbdfde12c6a120635874fc1ad51562219 GIT binary patch literal 3949 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 MuBlGBmg}8A0UPr;egFUf literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-medium-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4b767841ab4f99fbbc2e60727fc4ee52fc96499f GIT binary patch literal 2218 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 gWNIk?$29!apPcA_77Lq>4xpsR0Qc0#fBk2_+dI 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 b+~u%~R&%;`Hn|0Sxxp~!aK`0EcHw^lsjf-b literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-small-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-small-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..34925656a989a588b75ce38712c46f4c32ee8df3 GIT binary patch literal 2214 zcmcgu`#)6c9$pxeY@#ElD@CLXm2%5`jc?|R?w_j#W0^IgATF&>)g zyVM~F(nOth!$FYJO>iHg1_$S8+~0P9i_&GBhb#18aL+6lz%IL@@M_>lQv3N91gT+B zZZ7ylrer+$H2xoZ(-x$bo?c!82HLK=z%M5%C=kC5U!ncV%Nxtjf)Ta7NiFH36qm6N z<%Z&_Zg(34x2TAOo7ts1%d?3!JM|(;8!q7@zq(8BHY?t>y_*||XmTv!1jdBaC!4+M zCG$TmE+;8N@10j*6bM3IG|+$`l`sg}p{4>oMuJe`T@Z9s8xEyhI|@M>H_ei=VQDMBRpK?y3+9gGNS1YHDk}#+xr_ z$petwQ#&ZUn9&E%rWQn>$Li5&w7T4OvS&KJrm4w~<5!DIOl(4f+x zQ-0SKDe>zgUgVcCnM@>o;p9)@;bie^^YDqbE7F`hcMkM_4Bjp}#I%sdudV#+2f3Q_ zK$_NG(zp4r*tad-)OaTE74Gd0XZT8?f!-W7)AFH+it55v!Lv|@v?*ixZTSmLmCUc40!(@g6w zlgZ+*I_UF44i`Jq2tX*K0`^(jm8cJXo`+YwtM1vA!roJ z`^=e4TKl-fFEq5+&feZC;d6ldsZ(gioLFo{5@D^Ztxb;|!>PbEux@TQjAqxqFM;pU zGctSt8|CHYIShtj(LmMAPzeX5YG7cHo|QFH?akV@b!*s*k0iShKEJfD?{sBV)ym9; z*jV3yfc&>{&4oopx%v6kPk!CB^wveS<2H4?DRx}h5w;ICbk|V;qR-9Eojzxi^zCA3 zJH;2I4mK39Jm`3!p=&Ce=Dtj{wO*0lt-=(WqU@+E4RP-t)rdsD6gyFa%F4>nXU^mZ zW?#Lo4JOu)$z{`?dd|rqw-0#X@c5js(n;?3C8@Y4V|zNC?jIanG+1oUo)xe;9UX+o zL8dp6Sb5&M2<_>)5&8Z5W+(P+aZH>?GPddJR^GS))3YO;e)jAc$kNx>H&pDZ9F8sGgpl zLW}U5cMgY|q6%#>2ImN}byvs9a22fTe)yC3NBpPO^YiW&krT);EAPKUvvO0u7 zcmgzc*~BsH>gyHOix0zl8=?dUj1L?@Gd7BEZG}8gWOJ7BbMts(ST`Jno9v*H73)-B zPHU^bZd!%9Qc6c(zpk2}zepyLsvkb|25(wPvkaq}wzlAbfdL?*;W}b}!{r%FC7X?~ zw-44a!Q{wiWiQip5vwJ61qD$_$$mI|~c%EooD`vtjcw+HhE-)?TOTd-u@&c}Mbyfpz1O zpoU-mQ0QMXQi!7jRfmor_aT$XtrtIB*LS2;SlZDT}7>tAwZYLAZR|U9>A!Mrn@*LJbQmix_0q7@WM>S7+u` zaLgU7y&-#0E)PO@hV&oSXa5orcC>?#K^8+;g4lmP96#kwkn0-R;{s?d_o;tLJ@v-#Y19^N2S|P9;b9C!t9(H!s3z zCZTO@N!4j|WW*TYz~}QX2tCN;#>3}2?t@k`3uvq}>u-U{O}L}q>0$-*xRKFc8B&!e zw~oVC5mbqt!r9%0p-`wLKOOx^)_873Ax?&AXWE8C9i<$Or#`*6Wmt1{%SP{hoO<>@ bJ(~uJ3NOVT6zFXHct9w3jN1d(AFux#d-VZ` literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-small-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-small-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..12ca2ce5be520c1445ec8696383269b45e373396 GIT binary patch literal 2021 zcmbtVc{JPU8vdarOlv9E64YqRSQ;hOMD3F?N^K*QgjhzK3b(P9T1r%lxpt!@+K9Dc zEMY9M)Lz%6Xd*MColy~rq`20Kr4{aP=A8TI+;h*p&mZ6So%4O?-Ja)tzl?8Oubq~G z$^Zax+R?!d4FF;p;28%I2UjJF*%#m@b{BmO1vIiWmH|Mj%+c;k&$yB`Zh(WwvDU~I zo5eb+qS6(Qo%K7=s-lyZ8Wh~=7_%&+g6C&i%k3ZfNM`!QD;Ce?obS%>A>31VA?Z%X zC(E1UVDwnz_DV<&swybFcZH!zwmY_F^Z+@p__S53@AT! zUI>O_lY$Tfawc_wa)s#=fGLU!Jg_Gy0+SG;H~_710c_8=Ndtt`|L~|8Ew`z1x0_p# z$b0;S+tH30KjWh>KZQ}@(yz1Y*3C#BG-mUz$lVd!i~cXH{i(|!Vq9EjU*GH;vL zFDWTWC={aQPW~uM%&eWBp6=@EdioSvE2Ygb>`Y5b^X&-32M4PtD|>l+%gM<(St$*e zC${69iwX-JtX?3m<((BB>4rr`{dBw4(Oh8wNl=tWjSdXh#>VbZk>StIo(R-jUw&}n z(V!E>h{Qs4PpIHPZ9*owKhwzh_5 zi*HJ_>5~`?2JPxyd->G+d+R2rN~LX8EYB~z+28LRSy0o^@T~Q0IgaSUq1h*GH?3)= znORvB3Z=UAA%@}Qu2fwrJ|~Fa{%T zzRg`&pY8R%aYMNLbBztNi$j=s$JyQ8-P+nZzOD1%kpGH`W&?w%s|mGV7&yYbz_7{5xR+H>|^}{t7flT3VV@#5tX0&HEr= ztED?SI%beO`gxZ!g8~8q%rsn`oF2ct^%KoFUvgS0wvyQLcFl)DmTv)5WU*M=+fivK z&g|^b=KNP_s7L{ewzCsm#liUbY09L zQZ@PsmAV>X1}dK~5H$I9^MwgT*Owki$zjM`=3l*&laE0GU9TP+9i1eYa*8VT+S}U` zEYH$h1yNl}GQ%vIg+L%sS68p0(-))S!^4|Cha4Onpvw?{yK)%7i=&j3Otkz{z%J`2 ziOdlQezf^tWQJ#Z?^~U9^YVJVy}g~Ij>M2*dU}xWhQK}p8&6YH6aHjE@WCp6`&nC? zr+g}(f1Byk+t$|B%s|)PArkSb^oE9p#>Vx(XD9}^d$chWYAtR-fMMnVE@}J0#N4!bqMQ&0L48CLU7mvK5BM<6~lORHJipbM4Q4 zPp9jm94?%};&2lzmUZ;|{Gs{Li3v;6VdqpR*ks)1o7Z+^$Ag+N7s<=ZAxs~JS3QzA z-g0rsI92}f%L@>cv1<10Z$!9_O&OJ{?pOO})x*QXCUHN%u<#kW7DLua{b6clcz75? zJ5>&uR@#{DOQIGQ7M7GWc-3FNeA&>zpmGFD#$#X4M_h!#tnTkNFc@oNMTS0%dwBd( z@^o@cObj0Xbv0VFh%GegADSw>wr! zJO!*2XsXzm4vv&JO#v1fvc3M{9dC&UDqGO%!>}&PTQEb7&dmkhyt&YX5SST#+~sX< zMudijMn%E3?Tjel*WVtAKK1%(aK^2SD^ga}?=5{*W)WUDAC+2y?#egv(ir>AFUXMdyT>FZn1 zAq2%iANa$6A6;U4FFqVjOk}^jHNBrDRw{Tj80hNC`Uf<3L0MV3rL{Gg`4VgikPdHe z3U9;B&5ieKraT;pq>#yUPlNsdE!poRQf$M*jE=kj#N2afQaOi!;NA!^eY!DZ2LWT^ z3HaWs=_b@yRN1G_^yH>rLYc?@(vh-F$icE;W7V}|Q0MPm8|Niuj#14N= W)!)QyyMUi1;P|zxT_Y;+;lBVq>ABAU literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-small-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-rectangular-small-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..168694cc5e13142ef0c67cfef29c41f432441778 GIT binary patch literal 3414 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 NV0OvcqzG|4@*j_B-Kziq literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-large-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-large-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..6968b0ef9d72e263da2df3e01be534ddee6a8cbd GIT binary patch literal 4700 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-large-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-large-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..11c60bfd53aacdfb92341fb2f82f0cd6a8bd0336 GIT binary patch literal 3142 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 HIG^+vb*rxc literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-large-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-large-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0c90c3b3a046e41a54e5ba99e8252fd296c108e2 GIT binary patch literal 4482 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-large-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-large-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..3844be293874e938f23c336cbff386ac92a1daaa GIT binary patch literal 3447 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-medium-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-medium-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5a8af327847e4f8de502dc7c31f07873d1d550e0 GIT binary patch literal 4542 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-medium-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-medium-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..edc29022ba2b4fbb82c7a81543286ddda268bb4b GIT binary patch literal 2868 zcmbuBc|2R`8poqmTWzJST53&kr-n+5eQE8wP@M^4soG+Y#xAzdT1zdZ6^%%hu}rm= z+G2^JH7FufkfO2F5IeCG;hxU@eCF?aKll0Lob!3#^StMr-|u<9&q=v!Z6UxX!3P3? z1gtDg?}0!ZDZsTS&ne(|B;xe_#1VYY!WdLZky-?S_|~jUZ~PLTze@KCUuFa9;T9gIcbgc0_+_Y} zS6AO$Ay|uoK)u%@xj~>t?hsMXAP=1rq+zVZ0ZJdd1G=v8KMuL?2wqn+v-N~y!B*K| zIQDsur!_uUs(Xth%M&NNp}!v1BI7XBCI^K`CY|x?V^3^sZ0zrA_to?X$!5$3<$-ax zRgI#>E?)HY^D`+FhA0GQL5+$B@0`3=z6lm#9z=h5@XXC_E6$#(VSCrMC+ZSx5US|~kf31_fl8iUlap0YP$(%W>D1rnk&9__6;5za!A{M8%D*Ct(B!X0KQB^dhLg0*meFI? zZXF8?zn7Ocp`MU+)L{q(^(ZYf`K$o#ceF_@|HGrf(Zaa$fqWG;_M)V=ea zh}w#^J0TI(jureJV38CgmqPF)f5BKddE!ou%9ef=n$MW$9OsSfVx+lzuv{A9@0n~c zZ`^A%UpAGQOisKOhM2vfwK(wQ1o5m%ctH_b#2^tE5pZm+c*=if)%~@uJnwPNZ3w@v zozWM>A?vA{@E$6e8PUQE`ZWo43M5g8-=s}VO@01c$hsUk))F+=>sQsJ&VOYD}GO^AuSbga7C=kcTF@N7XRhwN#&_gd>meW#e z-5%O}+Bh>a)753}BFgbqsJSPNQeZSirEX35w=G`gd|=jC3MDKqE~2L}d;84Uk&%%| zZw`lZ%{|TtZ*TP4*MrSIwYHs6Ct$QuCggbvd0=3DvQ_UqUubCPBH_%m(Q7jczlumh-^Rm{J zAb~sUwnFZTM-5Gp$!XoQJqR#F?Bf?)dN+x_eeD%d;UAAt#HhePTdD@eqxjyN5Z%?F zrW)}yas)IQF$?&4&e+%2*VJ}cD_%KOr-J(t`9R$S5w9Mqm1tau*YaNq-&M65s&FC( zIR;AMwjN{y<+g;9Pe|yPu>=>ppoHW=hn#j{T68{ zDSpmV)@4wdK$ebDX)h9tSXVT*lofvF72)n)^inUqdp0;YxW2yr;9&+C4skUAL_BQnlC7!(JJx}I(ggSImxhQ%0GMyB$72ookX?C$C zScHeuZaLP>^A9CYO;8Bc==bu-gH5k0nj}A0h28QGl>D0|rnaQeWjk%D`}DnY&mwd@ zHTgrR22YB#H8m0Sj)`p>`UT4c@k-CF;Mglxc{p5_mkz<&-rnA*F*6}c94Eji%9QBMK{Z+t*x!ef|n!Lniyd#U(^i@*!@~l$ccs@w^r)?XfekJ z-pL&^%y5V+B5HA{h021YhEJRKcdE^1)yh z78VQ!qwVB43I@X%%E*Bw(gAmAs=04TBvNrP7z%+FDyJG9?<;g%^BaBFv!ZeFX$f_) z)_Xuvgtv<3_ugSU>ce%J1x0F4$j?B`UzPOp^Rs!S-{d_Yjqe{F8QB@JcO64E*ch>g z8CyBIxx|JB3WZW$K2E2zhkv%=jSJXb_#Dij?M#R+RDrs<{obSd@bK^}3hnP- z)sKh*qytj*^z^D++fen61Nl0?`8Z-Qt&?h!=Oy2wL4!aG5$~&s1*C)ENI`Qq(P$!& zcEs#v9UhKWIH4I7f{@YCGq159of-gUKYsi;TtDX9pS({y)_aax_gA|Gpz7z~>@6~kJ3TeY;u_tqD5)zbr9Z?=mh`mGMUFGw9z`{CGg2^3$v^teO z2)_vrlf}*}y<=nJUAeLb(b0k1+vke^i{~ToJ{IQYH*ek2$?$+mC@VVJ3l{9o>l3qQJEMWRkRucWnAXTA&W(; zbaAq?Gv|5lSb>I3Jhw3vPd86a1{7ip6wovtvJZF64ptwBY5POov_|cXukP+F)7AlR zmPacRgsW&1LqkKKKil5FZ)j+EybCm){clfW0r!vDtkp2Rz8ab6jmO=yJ}8u7z;wGp zrvArkU*+Zb`uh*)@Bb-kldm6f4>kf+il_8B&cc$Cxxqq{ z3l}cb*4Ayz45z$QVTii=%ueKL7;BT6V(RYeTV7cyxX0HnlCSl_ zNSi=usVvX8W^B64Cp6O6=0a;llHB4xOuGmjvX5gkLzpDk^s^Vy?4Gh-gVdc<^BVAt-Z4H=AGHI_slah&m_iBUz>sU7A*(_Vt_r=GzNh# z#Q@)*UA+u^`gr!3fj~FvVVY{D0k&)JTwa)&u|=Bey139mMK9A(yQW);YK_P|XT|f~ zgC@*|GOKz%FdflkEEYL#p=o6|qzPk0F~zW>q+=f@^U^0%IBvggi4oy+RRc3$=c9gHs$GecG~N=wmf7gPPoSy_5`Jbv4C{F7jn2Pu1^%1!(9K3)0H)WQO0VPTPqMr)K=RTq8vBKPX34!iR=wtbqg(Qu)!Fi)Q_UBb677#bPzvaL$md^ZdX47|f{Zf-uj zzc%SYD7Q()V6>;c|3&xA8aRNv-j|OHpA&4YJ894#Kd_LrEb9X0t6WE8X=!OGkcycMf_bp$==*;fUq9?bsN`OSs+CdhuR8hDKRS*QB*X4bbZV7 z1+ms*U;TLRpW^xqwT2mSdPEE1&Y)N*?6GkwsS<4UHGX?%Xa1&%GFR|qoE^qCP*mQ7 zXk93`TZ%Fgq}erViWayK2BAMnu_kh>=yYSi7*@^2zIS)yr&Z_2%B)=avsFeKkVx0D z59t-*O9VEEc+&uZcI=^01nlt}#P7C*?Si3ii`j0xKWw``eUj<~Ojb2jm)Q(1La z-Z`qH;cBBms&fkvyLnhq4!8WC6{Lb9B_-v(bAPrLexQQ!Ya=Sh!~Q+9-yLjt-j`sH zkeTKPx#t6S+>)?jZ^iM4-*yUhF+o!}2) z*r)A@ol$4Cx0eWXWt)8w^)r!V#T)IGk5xw4C<3Q3&VIK=AHkkD-Rv0;1tua zQ}m4`hyfy9!Do8}Q)_FzyOv)Jdt6mnku-Na9$aUaY8I?PI)yV1H?Gb0-ISUItLWxc4?%g^wf>osOfGF{6(-S#!AXrYk@7POYa|s@WZZ*O#YJA{kvw7M;NXbWNq2EHu^U}D=S?Sj{Od`yd_#9t`@~bj z#U=q3*d(AN8$${?f$s~pC35NJYb6+)cK#Z0UnwQpqr=J3{JG9Qb}C8Wc1u!wcLi-I z;O^s~)hQ4FMm4}N2mA}Yna=YqF+!Hqc-z~EOhmYM=;tqx|YP4a~^YeAN zv6=j5O#Ir3sW{|3+l4|@LJRpePxJlIS!5g75hwn(`3d*UO*FI6OjLGr3Ixz_U_uMQ z^Spky4X%uqmYqXtI-#usLXQycIA;I~@oNx=-VN`y%6;~cS5h?4Aq8P47Cncp*}r}F zM$Ly;$3HL6#(^Q_dOA9^Rqm6Ij6`2pw^Ix+1SdKMt1i}9|G?F|w*twCpZMdrT#cxq zU*CK#iXJ9$t32OX=#ABB5^#9!;sa@ysmJ*M=rkZHH~{E0waLbk&nz;#pVn32hi12f zie1hm- z$H!wW)`};7_=C?5eok5Md63205B!u@euya?J|<*W>vTvjcFgym&J+voDB~eKh215te8vc0Lt*dK%oXx*8Tz z2FuG}KQ5V#x0V3}=l1sYcIPp6L#*c3YCzkJOT*ekk2sFosv(l507xIDGE zP*8BB_La~4>i6YqJP^H81kAd0x$DZ=ifdjv!?Ej7{7Xq}IQ81m6z9dR(~~E;5vzfs z-CbQGDk@V4C4iVqUOLUcVo6*|T0px-SA6g5?X8kRU8Gu7zbu^k;Xf>hv7S9?K`s#* zxFmw70j`d z&xgaP3fM26_a$;Ei3kfvefM4F<7`vA9d(V1@4WTyhU#XGTG{gf@NSiKLrX@#LZFwR zupZxo!b7h?c&37pqoZJz%di$bzqq(A#60)Ot=iW;8zM(jr}c=FXSeIAM{+f;yh3&E zN}HQ#F0mbF^l>Hr%TjpXx1(_f)P8Fd(9zLRZ=*#vBV2kAA-*cV(Ovq20%?W`YNuL>iRHb;Q8b%!Q% zlX;r85D4vQp)zuf%;4SvQWBI}fn?I=Nmh5pm-wk0-*zktIR)6OH125J0K0e z;nkSSx(+!EwXAZ5Dw2Xfj~>6dO@$Hwp|7SWv~6pK!cpKx%FFaQ@09$9er(k1-oJle z&UHk@;8kswwVj;-3X0axs9e2Ahp9qsr-K%SaxS&H|yA zt(;y`Qu03NV0{-TMkaoK3IJYW20uKmM9Ij?E@ua==XQe|vTjN|exQqyEX>Hb)z#Zu z$jGlXVBRQ^bs;Vj(Zo+Fys@Y^j4#SFXZ&=D@(+njY0_Gcpz2OWKR9GmD!*J z8q}W1wL6D47$VjMEss0n3JG?|cVp!?x;%(o#=67VIN!eei-v#wwFeX00$vYtderh( zr`U!ZIj)SAWu68Nr?tiiZEdylm{?e($9qjTUJ9IvU|VXs!czd`x^xVkWKAe{;1X|V zlYC!>JY7lH18b&GSZkq#$cm}Z){rjPh*Xc5N2z!al>>Kr6{&Ala3AuW?N53P^Cv0u zRlhH<+qWEVnD##bMv$93(@1d%iBxu5UfdTY!@+v2D3 z&3nbNG~99UT>lMX3ff#SYjL?4cM}}|v|q;;3Q|O8z~R>li;Fb^ZbT~q^I8p>idvrO zusDs%LxkkrefNt836dfG^fJJ|JC_+47`*9Rj(3;6t)jtmoC+^;fOcWwm4(P_B{IpZ^wFR&E|{;VO=xSvt)las zmPGM8BtWob?>Fdm06#FwDMAhVy(r*tln3LMlCQ1wW=N~K9Rdmr5K1xZcD_e=et;63 zP}F)fW)k~VFKSmUHrMcN3@-J1t>W?X-I(?lOu?0ly(>s7*yiI}f+s+bdF)^x>>6xW zLSgnPKQw`%GR2ayv}#a5^2e&oxbAfClK#8@bhb&878fV)2cJZ5?Celu`#F>Yq!@T0 z*88Bqy%i`f=fnd2XY2_TH3^!}_mpyItZH1L@A$qKiJZ zMD%n`472c%(nc+RX(;o7z`X?^N6{)V0QzF?Z)&~r@{-o$bJ+R0=l6uETpZiDrx>D- z;(^TzN9*Y5ECB(>wCf#BBd(rHP*&VN9An_rvbD`-zsyO?sRj&P%Y)iHX(t!8UD*Hp zRiZrAibGCM8lD~Rp^M}7otbpsO61PXJv#;h{mijZ=DDGVm4UN8tHhvwx8s!+fgG{LemuR}S3;_z}QTug%xC^|IC zkqMk+d?ZsuwDJR!wQ>n6si-#{oZ%I>-+nBe=F0$-e#|;yeI@g zd+lsdP7uVG29CW&gupgAwrCRU_`;oRETG2c3QOQbAl$<4ya-t0M7%Q~2sU7cGCz+m z^9F5^=ZVAZt5&y=wn9i|=8WH;SoYK_@c`@N z*Rv7ExW%$)4Sk$XaS_4!-U2n%f-e4{|Jlu(`!Bb}>`!P{5=-Y_o*<xG#`m zKFNtH9`>Qw{C@oLYuKIPG!NZk?xWP=iMdee^D`DPiAz2|+wI~rEVHN3ZA(U%P|6av z1fzGu;zMVbFi3S}Y09faQMXK(;v_!%tc! z+lqs9@_Fbgk!$UY&Li;nc}^{^Fwwq6C4{52Gg{l7cYF9<@_?J)=a3e{-<{eP2&8mY zuFD>g65w0Kn=CAFkCPaFnswCF^&d5Nih_IpC2RjI^{h9`Do%3Q=Crs|N~bpGrA)To z-^CIOB7>U_YH4ZJ)z@2CSqbJTndSBLSW)P34O>m2Tw~l@f%Q+**^Q0bm#KJ14(^eL zWajKhl_h?qQy6J#n#*7~;!PCezOB-+MC|)7X`@ z(cc~>SnLb>oo69 zu3RGCLTn{=s|YzwudV4%O-+Tq8s`(-CGI=aDB(Xn%GUrKKf^U2=u@Ng_K z{{mR9BkVXxz#M${f5An)!$Ws|!CfGi&i4O49sh47fLIF)Hlo@(I-n6NM>j-$&k zd$kgzNlg3))~=z3_@T2Uvki6E)6#@4w?^#+$%Z9zi73ZwOpbMYeEih12bzOH4@hU5 zAC}1$1T*k7Y$2;=hnj-0dm6W?SKrWZtR*FdK*=Q7?FR2KHZkEvAjsXl3)B|orlO*f z(SynQcm+vX*VQ?a)KjT!E-@R{Jj>hECnQ9Lg-HTPY8Rc&XGvT|2YI5Mvg}`SahP(^ zblUr+rKHiNZa|G!iozWgu`Z`7#I=j|xHMc~L>?n;6&DqDWBLjJrPjWD>Gam~TpoWw zcGavO+LwvaH8II?)l4fp8QtZl?{oF!&>*$>dIL2zujl$zXJ=>Gg9j}M1S4!ffa9f0 zw{LK?H8nfftID#l>Z&R}fCQu0+C04wgSwkd4i9C+lx4C#0|Q}b(gC3qK7cqflS6(T zsIH|oj3?PhTWM-*!=*(%6A~0VJtS7~3dfHhuOpGtmFL%a#lRJgRZ*y^89mp%l1@X% zjvaHobSYUqOTr2a5`H)G!7PWr%%BEJxcv_sZ4>i^mNA9SSoN=H6=MA4g8W;e($hhbpzaM<<>xkWDWo3r3>zcQ2-CCK6{ai&Ni9;g{MpE<)L6}CP z0U<2DsGu(l7TtJ3X=?KF@eyJrY->$1nS2nCJD^-~S(%lgg0;SUPo|Vw0k7OBT*y6c zRnVeJ!uaILRnRv-l<;HIx70XNloiL@3(5)H$4O)kk+{gchq$yK?Nv!7`wYtiw}Luq zD-yE!g~ckHo8_RDtz{C86GiiRd{`FtwqLE{nzBe;LxUwkvh(X#Lsd0327|%Zh9>s* zT9=x}%4|$WD?ziV2hbhU(X9AE&Xd3Xs%&YICz`IyiYc9f5$P#5iUffJ+Lupxw7Tk$dojuAW{PGf3)w zYR_rHVad$Ox;haETua{EBz*hICPIIJDcK9s2b3<|Gi|ZBwfBxsFKd6CX*+nwAgHT3 zd~sxQve;zI+08BcfO{OW`P0jnFPXs;fd>4LfO*IG1Gl-2ZAUk^SSD#Brp*tFJ%g?d zHB@-I+}H{z1bzEGH1UXrh6O^>jy4%nQ9J>j`?vjSc*mM z=v;|!c_*7_mIr(=4p^d}zrQ&SheSCJ;nQppyKeNanYH&~DRBAR0mVJ(G^$%BSG3*D zZuIS{;nw!{>exkhPu8<|=#ML{QC02jN>{I5b#0B(>ZQ~3Z4tWq`qyr#{nmx0U?v)` zgf?GZiD{es%U`PTa`VrbfPU6mGw~bK7lL*s+!F;?7E{?(RaNthWQHI0J_J<)bn)}^ z_m83hc{5P(NwTM9jgFw>^OcMweSa)gR9IXQ1qx5ojW;Qvn`!_Yh@7~S5Vyv#!EY`U z9k!D+2${(N$b1WQ+A}gDk*8=XdY2*6FqSoej@=6i*%xLzCcq|t$_bQce?589h|LRM zd_Ko}VV3@4kyd4y?%?7g1U=pPv5nhW^EcUe6W$-NzoViy4^3FuPyN2m1n3k=r{UST zCtM=;Xy&`TN7xm-QcPAq1gaqbL;`27U5VI(Azym%=x2&|&FKajFzd$?S7yzB3LK0< zC}pl@=M8O6H!CYEm~h*+0HLX+)rqBW^(7Y$ed=|X*;?*ed7#)n79P`vD4|4zEJgDO0uqX1q;JR| zn;^0vH33;5^gxszkrF^4APIyHd)<9I^Jd=6o4tR0_kMHEJ>~n(?{`k3gPql}!!n0K zAkZ-zYjY6 zBj6)Ny_sOVIdFg!G z>}yjK7aP1e5SOLbJP=pXCH(_GA1@$)E+sNxpnUT=6_CSelmtlaU$uuo8DN$W$TlHZ z0Hh54e`?kq^Po&kd3)^+HNT7tmN(Qhy-~V3cAZD+8+mb!Jc0Y#A@q1i{)Yy3R{Xfa zYcLF{gY^D#Fjg`$S28juc!efZ;{3|dQo1PPLdP9{3j(>IWH<%lLJ(oVo=B#u);CkP zwv4bvjzm}X+k-Y40!=FmgQqD~t|`nj_AcyL^jtCYuyEN^RTZxwvaaq^h<=M(m+@kS zt~)3EN3OGtyc?M1tercK4Gc`y@OX8&y1U%bjJQ~Zse4YEsg$&pxu1#Vh zvHe4?%vipkOX%FZ`RO$C+>TDc?0f>3Eyu4Jaeon|1q8eNRt&AKCFUC!+>tb{@M~FF z=e}1iVRBQZ0&Q_hI|Y)NA@c5$K3f^3yBMN#(jSph+?wbhg;qZ+<{KN_;RVTMAa!eC zL!GhiWY?09iRJ=m^)q6=*x(MiqGysDK1*qmNU3DMu4buTN!`>_-!k4kL*rr|cWC^j zL%inDA1a6bd+P^m4J_`KnY73$JYmN!GGH~G9NDH>p2_BP`f|g%w`kN4La|QnjgWG; zMb7*2rMWq6LU*d!UUl2ljs9kItiP=hR=o`JT(0(PM2WKzGf3y8GH#L@y)7U4B{nTB zjac>bH4^hqZHa>@8mzcX-Cp|2Bt=CjsrSDR?x3@P4Xtya~?ge@AN1uW;54FN-H1-xV7cZh7(wQul+)-h#^DpKx{KaAT zhyUa#>bW$1gSPK}%Y9z(yTviS_1P0b1wW%t_9)UX^RovG74p>E1&42qWf;fKp4FIF zJua2J0&PtMxAdm(N<5~+ckB&ZkE7sAxP6-*HDYVmlu8qw8IXpE8g6~iVrI(D6nS?= zpH11wo33v+JkonnIr#_<^LGv8G&Oej;P7t0Xl+PXIO46d?pIpoaytZv3kY1F3SFT% zi&{kVDed42-Bb3;>{v|(41E__g`l0hr8yP-@W>Mc;&?FM z&l8;#Jyou=w>({lm7$fw9F-y8F4|*{w#?B_)HN3m?iXoD{`rRl3VvXSqi1^~(&wR} zo_y}hXDyS-$*$8SA0cnmGL=qz4NAhTE2Lf*-^g<5J~%crN6&QA{2VhXGhMO)2@yoW z6_Zo3(Cez6L1akYa?rGzAK*J2doGXG_}%_ZMHD<%`MAyU+unQL69Gu)(ojRclNJ}m zrSej`sz+XLA}TI@&zHx5b)FWN67xD%`U!dY3ma44=)YzCNImmThGT~sG2`ZH=xv}(@7dn1o`YR}pX8~H1^r{X{D-Xi zKWc9})6Q6l${C^N7zI;psfg;3TZZ8m3=M0-7F=!b9vDne|7Ex))W787rIq^qy=_tK zm9oL@-90VZ4tK03bYZZpmt%b9V&B4=Wl=eq3?n+7tNrk~AxiqT9f?;Q2-Ur!@A9I^ zDwV&wI)>TbU1vp%7sCkD&6yu<@Sf*i?2IB}HrZX-7r&xL?o_m2^(h}3uJ9KT7B)z! zaMR>|;LY~dv6h_GKQS2juBHC|{@ABaCs#JEBclB(-IFcP-2Sz^+|j$|!C3k2w$|3x zX**dtIg`+tXRf8XGRbReYur}};x_o{2DmLJyv~-0S2%Cugg_vaj+eWWjdCa`D^c7r zma|uiyh-hYDa)chYj9tH4j`b>Xr-k|;{BteQHw+6BO@aKX0go^QA;(d+1J7&BCg^y zY>A@skjOT<2sh2FcoDIfz0FxY0*90rBO@#8NsBSLz1XckE-NivQdUM=8}Kkp83l+8 zZf~NjMGKjTb0_bu4I*f}{80+!d}>?h(wL#+4}nOeE7@JS%m%#qC0=Z6dmE<0j2MrO z0Pue7M?Jcjm~gyGdOIgP&nOHz)tXE+jd6e^VM>2;PSgz?c+4O6PY|b#n;95XWAq~B$mf(U6 zDz`&}3s%d%)^k74X=~_qYFKzUuCO|Ewr82PAH$pJj*pKI9HemO=U*W%ii16CQ6=x+ zUoYzWci|9=75%kexsGLbmQ@u*Xz|I;&PLB<`%kV^H{DcY^~DuJ0giLiQ~?Vp`uh4N zIBoS9FVj0M9Ay<0XzVNxSBmH6WRe!etFEe|g7-OUISepGV&2n}fF2cYUSic9QtS)J zm@=q&8Js`3U~FuBND*22h*cYAns>iX3bV7)25>2G>Gj2(?Aphh?^wZkW@$Rv*HqHa z$|M&O-iXweyvZ@cP#YR@#C>#R&YkScI_EKi0m{fl{S)97XcR3;lIzRkG&JuHi7B0I zxxdLzZ}(Nt#Ft5QcXiQc@fcM^;j8^LCw2W9XtlR@5YWVJpFj(!RH}rk9b|upm++j= z=UXdHh8Qf>E}VbS$zF*xNI4=TplbKJ8o25A_lCKQD`GGhEDVK8fEJ9$Y$uCPu0-ZW z^M{}Kha_zQ`GXbHtf!~j(-#KF=_2p~hkywq4u=y%8=qPcht_*9GZ+j2LJeIapbXKe z;y1kht6J?>G6x0*OrrQ7KYeOf4KOh=+2(U3EFL_1v^9ZM7(iBrg@pyb-(LO7#4Ew< z?UzR?ua2Q(@0Q_&R{qM1qH$3 z%pE*XD;7n4Sy@?6N;h}+fR?*Rz*!b))qnc{u+H8N&mL+W6vTn8o9gL>H>czyZ;c7< zTTyp@bMW%YfmFHA6}SAxFuSWPjXN|0h=8#%aN@t`$v(`1@ahsjHyrT{Fm{4$EbPoF I(3^3801XbXdH?_b literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-small-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-small-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..da0c78f86c0954a68c0a0510456fae4e538ce2cb GIT binary patch literal 4280 zcmcIoX*ASf+b2pwLdw355h+bXwoqdk%OFd3*|WtIMiGkavSqB3oopjpwn3JR7_#qK zvX5mD*~j~zzP<04_xbXibDuf)bZ;A6Rge&xz)$k~zc5IHe`9*FK?G|l8wSG>cK6b#*F6of!7 zsSbTsZht0uyH>?O@-{*xIvWxC%={gch41-nt3aO8O|!U%Ssy3f=k+z7E-6?|#KfTF z95?Y(d4JM_GpF{kf6`}siSjRdQ+$Q9C!akPq-5p;)?5FJ&_2*X6M0X`eE&LSD)kH} zNa-A~mO)AhvuQ!p>Vd!lx9n5U#sVwQ>s&g_*s+6$d}x;aoFwhfkEv8bWc4-bXUroh zB1O=I{ zUk@FsvdaYt3)<*Hl~#2X4{3H8a6wK?nXqTpmp1qy?~01rK9{*D`T21TNDRc@vAZY` z%@W{g@NxBrCA`;dV}GYg6^;IV3ydsR=c~#WPRE|J3Nju%D1?8)_PRWU#6D z8IG@@VZwhcvr)9Mv5iejbAw&jGi&wgeOk7I4B@FX76KBcA*Q}vTIx1dJ}<6?mi@8A ziXDt!G#YoyTf85j5m#=Fsac1f_8PWCo}hDZT1K>epb}=f$9~_ZPs1W(yf%ysireB% z-ujI{Zx53%#SE3bhskxioK&~m=|ccX#l^{He5tIY6Egd1O*o&x)o^|oqmjb?kzFE< zE+6fl8gZn}WO8|nIiTBPtVIt{P(#!wluXy|?PdfJbal7Hk(Xy3N4O`?T08X))wQ&? zQr;e&Qo9cH+&uY}g)6BC`n^8)9orLY*Q<=$8cnA*a zW3#P7&)ZG`t>_U`YMUbMCZ@dIT%hDXFbOX%E&YCS_(#vgBs@NzS+3B)>hMK6+qbIU zA`f25WSwo)%yj7MDA?o8onsRd-wSD?W=G82tM7#<5o&~XxzLT-GYsDNLZBzIeu_Se zgF|FfG`I*#0KvXG|s67#yp?C(x2%*~_9 znn@flmwUe-?X4mDRj!Y7gnp1hvzZCFdXDtxv)Dd*SBl9h=^6QULDw-A%64@yobj=> zHUFmo(km~zjcDm+r;d$+F_qyl9JL9Lm|aKBi>+FBe66+&z}zP+xM-ORkWxMD$svgfGM4 zf^ofPVJd54Qj(yE$dCWmpnq)ZFOX5G zX`aKw;wNPtQS1_~Pjo^{;Zbh<{@^|!-1+4>HzXb4B#pEZb06SjEF91o2aS}Pg%+1J zaojX2`Bq|5$yJzs*$mC5)_xENRZD|M@rHWmYTj^pX%|SvN2@JBAF;APBVw+dT~&2e z!m+o#!oK^C?_XD3QGT0|a0f*B8q4al!SHe)V_fSalQi2P`ae*~@H;m$6L@nyB*P;j zE}8pnfA?9*3ccgln?4=!!`49m@ncs*U9zXQn51Oa$lClZMx(kT4lYlrK1+~I*1Z}u znjbY1mfPW?71qvP9<^AE^lwVFINd>qEp{jE%LL=aMlcp@$n#WrGwyG}+(75t^2Zme z0iA;r`K*_hXHVFVvxzQfdH>kO$*E=2f;HKX1kI@UJcBNJ^}bndH`y?WLi=Ho!IgQ^ z-A^v)q@{6NjF(&ifG&%*eeCO3Z`TeiShJiCXs9t{L{%c$-83gGI~vI*?vo zSy2vm($clS=yncgz{Wi5U=Sua%Kt=xMJ^@VAj;b4RDOA-K+C53_mD^ADu4nZb@@9 zJ|kBvB8>7MT_X1qapaSrFqtmt1A;!3{vY!q0v+R1^OsA8%$0b z^>XJw9`z9rt};=P8QHf6pjgwT3TkjNsmce0{4lnEylonQkFDn$GB3yk>kc5?QE8_j z@3(FP1OVysGcJM5<3s>KMBu_d=7j`+6>H}EA)U;;v;aYi2|{Ll)K~zu=6+4QTp+vu z^uG|wIqlhFVzZiyOR=o0hQ=jeRt90Q*uXBIg*Y{j)4fsKfm|5sLjz)76_|$?ViZZW zdH(d^x4J-B7l*rij7O*HULp<`lLQ|;;Mv>T8>_IVi-?RwETfS&eVNLX{FT;i7ovC- zd0;TugBaxQik_HB1vP+0^${$M$NNNFmDAw4>;xKq${HZ*DKP#7MH>dg?sVPk#N!R# z=%8iat3+O#D=NmcCO)w&B$ZZHvP{;vxYmQeBbu{dXLx8RGc$Ac%#%mXTdVOlZlmAI)U-&l zbH>KsCOC+O@hd)(Tm73h&`{E=cWbPud!=Y$JCp9s){9+^0~u)p zD)zCi6aO1<h7gYXX@F6ZexKo1WOo#`urg%CD=@m5+u!l(c^b{30K_?v8n9}B0R z5&#}E8nz3!gPh4Kz%IA**t;XUQ;#+V z>Djy_%T}Op{e69bY3@zz83ClayOL7O7g^6qhU*qmd+jo>`~)r7o$Yjs&!dskEe*t` zVuy<_c9OutCyl=QMfMp0Ym-0S9VCFnx}_`Rg*5e=&q#7jhfAE;gWr*F)VsB8_6Wm` z9RnFKG2<_pNSW1dZ>fBiQXIdyj^E7y^UK~v3$ zKCfQ|SL4BN#?<)?fQk7qk9lZr5M*bfhG_@lR=&p>dylk+X~5LzK%v2=m{q420yEfG z5=}>hoA)$hQ##Gu8}s1njy0rBby;691mF_p-sAQ~#cU&-?%20^nn_2JwEZI8`Y)I8 zs|vX%HM^1F;VrjnrrwD+9lQg+5dGDGkG5dXS6Govd`d8$+5d3yy5GTEsI!x*1LNdZ zH~nM!7Zr(n{wBAJFc>4w$qFlv-|e*Ki0`bIrW^OCi{S$-U@cuu%?dTXvo~9_%JTbD zFMalgpBSE1x|=CXg6z&7p}yD!nH+V7d|gOjARhi%E;fl0Gep--fhy6`Gk*H3C~d^} z0xBhF1*Jfn8Z13CGbiPo3avH7Q@#EUvKxHjK=a~vA`#X(5H;mCG-y;}oP`Rr3*eWM zy0-rdnUM+`8W|C#inA9U4~><}u$wp8qYhxmnk{ngkYbtmq4z$p~>$QW=@5>U(x|Kmd*=vP#!NmR=8ujAYH44wl2NKn93;84uN Hr|+s%B~@F=sHF`>#ZFO#YGc%>rMQ*`A+|EHRFv2$(xBFfT2e{NRHs$c z)>3;3YMoLIwNqgL z0-dtBj<5rPIPk!?D<2Qg2H1%}fENeW&ipE4SoBO1fl%-p1cB&6 zP|rc33d%gf!kRZV2?Rpw{|m*Bamec`bStI`b)tK|$8d&>>4^ z9%|znHM{F-hmgJf=v+c`^HjkD=Kfhkc(}M)K1{*OJ!>0f$)pNOy}gGF(w=)iLTwHHhFSd$MU_7b9m3Wuv=`0Mpv~*)`}fw8zQ!>aSQ4(`qWpHs#aC? zO?7T=nQ|}088J04%*UoVwi9dor+Q%cOj1TlrziN$57mo_G9d8_oq{p#fv;*Wp55?B2ot)rX83Opvw?;l0( zPe=G;Fy3Kd#I?0Gh&-~u`O9oev>wdy<>RI%5}7PhR#t{v%+Nz;|Iv-knf>WK8TGOh z-9U{6CUS9dv>q%7{A6iaky)!`Ov(D=k05v4JhzsXR&Rg5S5KyN%;DOz>gfu3sKQ&@ zVb!3W%n!1<-!(D|L!_*tu;0Eq%sVq32q59TQEa{-!yD&V9MpX2J&D|2b-Oz zBlpIf>PZOsOb2kT*z)r7cvFP>S6Y?d(Kotdk8tDD=a8;%@8&gvTbT-K`RO$GXe*=u z^iG*{Jv!RT%IZNzMs@J4@s#c{T{Z`qk!FgiXlyLBe`dYa!7Hl)hfBk!b@lX|cpsZB zAbx&0{^|GMh4%LLKvI`OyLO$OoFu+}s;GrN>{Yd)W?vPQF}i&>+3cdS^2o4uy7LuY zN}$TbtVrJMt-mDss~|Hj7hAuZe>J9ADa@Y|(in6+a`WGofE(&Q%+K#^I8_yP$=KM` zeI}y{Tz0&bqs*ilDD#}f8WeLSnU;IG%1QC7uUh){$;v*@MZH`ktk#`Il8TEv8T*sV zqMr^9xC#pk8>R&epI9-yU}M|qm+GhL?|jn9)=V$Cf9zN;Jcr~ajIMPpzW2iDi09Y27Jay>PWEBy7pKR+ zS7HxZE*+!awd*srYIQIAbWFI9pwdJiIS=8@r8G|sw=rbGhVA|MNb=2NE&P>z- z(zyEZW|`CgM*qf`&GK}OZH#JhKRi6_9UOdGQo{Lcr;QQ}bT^qX z#QgkUC=}V2S;qe8=xFEElvKoQte%UD3uyP-x0*@<;$tV zE2XbqWmi_Jg@%SIsjK(QhitA;;kn-y$~D(3X{h+`cgwF4K*zxLfC9Z~Z!g*sO#fUT zb3}h5CLv+(?A*)TS@91DD0%!iffCOu1UA1jmvovl$5;aH89Jl)9{wkfm zv@>k7GS!IHmlFK^`SU7+@vN*2-`Z+CM1~7o0p?PvR4M(Cgqj*HBbn3E($YG*y15j} za8(-%K%D^cHKs!Y3{2Dy-+&Ys7XydW_6Kv>n{I9yJ&V=ejp@hgftm#R^qn4Q@afaF zLDL3BB+^79Rxx7wu0+oDWIUcHDmwb2y7~%$Z8WXYZ7S}FZnWJi2Y3K<>(;ID=1A>f zqa85ltS*Ki&T%C$P!;(mi2HGQdA|;W#fmd#9e4qR9dC^_RBzc8kx+Ae3@jhJGIVDc zzHf^}Mq4f07&DWnn^QGrvD%6@jvm ziu?vZ6u^9MZ?A{1FFrAm;}#OhJp5Y4!IyINU;l4=JCq#z&1EL)tLlpvFMg}2@ae># zY9E`nGz{M$WIDOI1xmJ+lq|g6X=St?0a-xp8ekx>A!MHOXIf>;A3ECF+JF@1mK<|4 z(Tu01rE*bCfVhVd78WOCV`BxJMWCrq&_c+j&?SCAZlnDvECip}zqIgPk@7%B4pb5! z{JAc5eLWy5D(Yapyh=ZwWi)KUHUdbfFO_*=5U?{TXn0^Cn@l!l=-@qt_)~zDH@K>S zI1>~6-^Ry%i!iXfXqrND)J^K6yPYq zUpaS0UuwB_*jP@8&(_7o!p+TX_v446B1u3P05k}wu%NU70*Rcw7y1YutsCX|@u_A0 z!BRd-2?je+Dc%lfaA_2R@954rdpUAjKBQjk^W^077cbJNCBmtOfIBLr;88?TMQhM2 z-$6;4xC77Efs^8~&8@BE{n>cRr%#T+MI_7k@b>OTX-NrmChjN@-02YzkS2kO5l*N; zz5(j5cc|E~)b9d(@1wmyU#H@>*{F-4 z4-8=yYK)K8EQytoX-*i=c@05S%0a*)d|Wqp-A1+`~Tc$w}XEnET5f8sqF&p P-yjP!YeeN$k9+?FLxi{q literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-small-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-small-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..8c88ee5067843fe18d08aea243e3ad5028e97009 GIT binary patch literal 2778 zcma)8cT`h*5)K$?0zu^ox}fNy5gw1W)DVh5hyg+<5)gq1Qltft5)+yR4HA&5fGFVs zK3v6s^bSimh8`evR6v4&l+cUpUH0t$v*+x2_m6w;xo777X6BpuzKON8K#B;R69R!i zBB<-e)*uj1Eb#6qzzf{PbtapE2TzbS(hyYGEj14U2|Ys@U%PSt)zSpc{4@c?zp}6~ zx{w`Um(eS(5M^56`f=axuoHD=dg?AOek8h8_iVfQvrgj`47m@AGaq;)!5EJ|3o*KI z<}@n)a86t>v`PUX3_VUwdeRrb&(1R}3gb|O{RS(_*qeLA(*6C3^l$s5#!YsCyrl3c z;B=!aIv~(L!hU}VGKlR(gMK&WTme~L3O)_Gda_0k^h{s^3^IL$=LKCh)Z}?^D(C;1 z8DG{hfSpEIiGgWzM4AM+X?d%WAcsvHmJEGz)!$tPhaY&V2tL2L}f!vKKMC zvkwD$(Z%_dTGbRSUCyguVf7bPL@@=RG&c25j^KAHcLktPBo2Bx^2 zA{tX%z}GA-&ZoH(X-FDp&A^S5&sl}{l=xmsl-zMd(gr>qOU`+j`=%^NnrQti#F&Do zItTka>hA8QP$(Sd}-u3DY8+2 z+)u4}q{N+>AgwcwuVgPg{rW@=9aH<(Qk>Y{(NXa3-FvK$ogKR^PQrh(Zlt$2sTE#q z_HXwbQE8Z(np*J6=O#D)i-vXqMb7oGh}~cpmoK{;3qC$RIyyS3(n6ncRm<*%ep3y) zBPSWRYP02d`8OO;t*VNN%h}hfgdZ`(;H9=r>^RAq!k;_9{SYWYOm{bDLYHpr9+ZTdu zz6pVOry}@r1aS{#(>^-I!ebA?IM_8!gwpEV?(lF1!_APk{_zN?^li+&$j;2;MC;2(VA1;S zzM|36+_hC=PJnrvZYwueI{X#$uMm3CDsqa77Q+YMwG;L}H~7t;|Km_ zS3Y|o8G5j0pvB48`Y_^4mJt>a>FStqE+V+P=DvOnCibgC>eA)gvznBrzqG_CFcqC@ z)DnV12?UI}`Fp3@GsJ#9NasU56`I(=nwn|^=3tmmz5-vqSM95DOX2X?Q3fNu=)fze z{yb!2r$^}o-mYNKs#8n=td$V9v-SsTKK?)*7)3f<`PhV-l2*cBBqc2i1{b3wDS}(c z!HrW&0=zxkJ9qAoWx&x*xw*O94F~b?x6k=|(Ol*nclGcj_~N(->~5xqB*pz^Dx+1o zbAL(J1ek}^FGplIYy|q#^!6uN@PEwCBGYEmjxMuw#Sj94St3>R0$~LY+gw~<50*k2 zwi{}?zq+k_f4={6b`O;LwMYNZ(Z+_mzr($crlqG#e0hULqk$&8@V8S25ou+uTK?Ouibs*V>+`I=t>uMaSSmw&cXTWvL9}wrPxVE- z$#iFi{?F}b7fFhXEQ++b_~M9P@s$NP-tF&)qf&PF_MlLx|3uAYR7#ucMS&M9v5|>9=yaF9_FmxFLUto^73+WataCASXo&C+HC?~i7luP-%&+a z#YrdulOBq}K+vq6ogGrWo|>wpFikrspHA<(t5#7_;jNa5h&v+!foN)I=!I>X)3Lbf zdx*5zl9CcPeZQo;H%g8fq|DCDSc-4#Zum4#9d55qfBWX~)TA_gXASUwd_tmu$o)24 zd`BEXzggNo#|;SyA=Xa?A zB3ob=MICIg8DSI|?OyZ?ytlVEiIkZ?UszbkU@)dT5>JCww6(Q0G_dyeRW2=*nwlCi znM}V`nUPdp$)~pxL|pQwbafJLfRcr2>aL zIyjs=$0+f|21>$NA9Ou&^*e za#he=f&$YlO#$`MA7UD_kS|#XhTwb4+ zs;V^(cYzepM*T%X(J@KZt1DAI2Wg*1fBROOw0<`-^5^#Uc8*cZIw^uTo6l0wR$0a(}<|;x7-*R^iEqeG3~wSX)wkWT?tXu#4I`Pc~Xh7B#xG zsSRP#q~2mcsS1(sD1 M3SnVfXn33aPgJE|RR910 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-small-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-round-small-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..cb2a6a8394e6ec1e3a7f57113b5faa416ca19bd6 GIT binary patch literal 4042 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 PbRvYh9{iK)P1bW6RzU)z`*W~WXx_xJne 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 NkXCkxatrVH{{SR%J`?}| literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..73866f8fbc488d62d18fa5a0974adef2a5fdc3c9 GIT binary patch literal 2573 zcmb7Gc{tQ-8~)K|$uSKfl%R`sLhZ~EKxvoaEC7hMpw66jz-4nrgDmU?N-c}y z^CMy8s@hJPX3mj@YloU{6EyEW+c9eTbC_AYhsw}iqeB|Z`#KPf9(AY%#QQAPHtvaD z`R~j`54d)Yb;qmHDs1({L-vM};`hnE@pDd@oDDdei+A9%d4fd7N%F5^xolAY@Oj`V z2>?1jRfz(A1brbOsRsr;-o@Gq=po3!Eu^0m&?6Eg49MqO1E%}`VUdLv4|uh$UvOZCo3S^SzH}T)q6ELpeH6j{qURS#Lfzvlt~IaR2R`Tx*nUJBnhh*b@GI z+Ol9F4SAXD#lc|Xap{TfOk_2!#}?i_J2H=^y6%;gJFguD=Wa8Z!RVrFrsvR{4wOJa8yZP>FTFT zpxb>$Jx9Mh@O-iMbi75u&k6h_ok6wikG0~0!d@7V3jGH(|2yQp{A?Tcr#EEV9Jm_j za>n?A$;}O%ukX_~Z&uCqg2o9*r0T8I$JQp3hNX0R)Y{UtySqD-pBc6Ev2A^Qy{M=t zVqr{8T|Jmpbrpwmp34Vd3HpN83Cu`sXv?*iWzOY@IhUuVK|!2yua=6+%C!6UkGR!* z2!mf@;MI8NfwY441pZy7Kh-#T-QkJdU8C0begOdr0&Yu+Qf$NHHg9P7zwS>Yk)$ID zgoK2rq%Z_pg_3D+Z=WBf4fOQr1hMqM zRU)Ej@yz-!17(-$!e)mmuN*pb$g^7*qTyzMa&vbd%{NQPHHpd1$bj)Q0TZDCYp9d6 z^WgAsK;@A1roF4H#-DyRhWDDlW4_Y|_gno^K5hnl-O&*KzmocIp5a~?tMKhJ7yW}g zX(LwaBN^^1bSi_T7VCqQZ=Vd$t zxxZ^6;Id1GN0d;^@6#a^3gtUXT>|?s1pJ>W4f?wfxZDMfU{27bvvYsHZ1i#YB(#!` z&Sxp9%|33-+)?Up9eIdHLBh98athJG!a$qp|D_gx1MGj)oh3Va`_ProeJ`BK#%e>^ zoZ*+Rrc}0X-@e4ZRBcjkXZFL5fI0p{lB?BiB|-F1~z3CWnTEJZOKu zp{=2+%Dk-8`S6%|{&`a5w3jwh~o<}YfC<6X0eVhsLq_=sqtW7Eb#A4vUn8lmK{|4to}Pp>W?7`v zz8sG%J|7o{P@$jf=2EHD*x1#=uh>E-MqBIcOvy?VX%5 zGc(Oao);C>MSrV)>qoySz{kXFPBs%05)#D4#c$+ZajCAW!;jH#$Pk~@)vdFr0mpnh zaf_2@?d|PtY?8a#C-KXEPEJl%R#yK0MUF4DG&EQhK19s7;g`YbmeXW|;C-iXshOE< zj3Ef*iDV*)lzluP19Kk|GCxvVS64SPGh?2zj}f(Y)WEma9HZ$W#8~wgK+Y3Gx zQLq^Mbr(BAZHwBw-rh2|T7<}T+Nia)_3quf{i*oj>Y#1gww;WapIca9->9#t$%0gX zA%H+(X?dq^gn)jgwMmO?wY0R{xM`w7@W>K;TNQUQZES2TSnby7jF(UVRp~_X$>{av zsg{(1l8XcH-&bKKm~=Y*ZJLph5r@OMaN&YRdg4?KlgZ@qcp$*>9%5o*nlc?PgU73b z$M=bB4TI<4l(a++SE2ehZoWd7sT0D&!*zFtPBw{7V3VgnZPSb7%{@GJWgeu~1T$`E zXy{yqX8AD3@kO8a(OrlzxH}3Zs?zjj#h>b`Vr6pY&Yjk-E*RlpdV6uPCZ+epyj)IB z4k%k1>6V69D~I54_~g`-d7cH*{LdE2Kv$uRdtfdBSFg6Uwki|kc5Wv&SA>7*e{0bE z`n861;;}1ThKk9cR9|p#D8Bfz3q+1F*0T_U!)5unOoaa$JYFx_t+tu>71}p*X;1vF z#1k@T?M#Iz$zQBiR#y7@`;DXcn1NDvLMoWh8X6i11j06PnZZE)gvR_n|42N3pK+97 z#QX^OTT0z(-%Txg`}*=$Rv0mxxsXYWA$D$1m$zr6=GsWjX^}mOieUCYIXY%wbo&Md z40u*ZWc)A(Yp6&_t*)*HnSYijBlsi<^!zknT~QgafS#~Z)6y!bs(K%&FK*kDNF;W2 zbeu?5ke7F*`lq{==#$@IX^i^%T=rUiem)rLv%b&!&66D*9g|5UKPoGBha~dM8LL$F z5=R9Pn8d{Tn}RwlhqcCKOCkD;UF=<4W*2ch&ak>-?`&9tq*8sv9x@|FQuawz|0fi?_VFY zX(OU5pOj{dkBC^6l-ybo_XWmRn3$%NcluUhf{ynWddMGspdku@$$=KIRzi#K_@O*n az7(~l78+ROl?B#!0P3vGnNq~%+kXJ2ap|7` literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..6fddfccc77375b848f2d7856210a9711882fcc31 GIT binary patch literal 4278 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 A_5c6? literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..cd263c8354499c176e03bc2631e167000fe49066 GIT binary patch literal 2728 zcmb`Jdpuj&7RQg8iwSLJN{ymME0j`Ifz7=#}@T9BNjs&=dNt>wXsveJbqr{ywL zyzxC3g4Mwy{CTp`Mpc^5oZz_pXM8cL|^mZa{$VA^xdS~r_IBB z&ULJCa%Zh{nzv)YtHm;90U-aXF&qGtTkWL)K=cIw==?Lo4GGQ6c>W>T_n{xVH`Ey3 zTR8fyM<895F!B?XsS1_8eXm<(wc&GVQTu3pRZ2=61k%#m*B2I5nDeK1NP@-D+#IdE zzKH1d$LuS|z}Z)|Q$OgERX8+C_>&=@S7~pvPM_37hmx4e&@ct|mB8OjbPv4elfFxNa=VG-Wy*jr=j-y3p} zB3gW~`K2h%y{@~`UfqNf@z<}WsplMB#EQeu&(N~E)~Jn_GLtm2y_lZ%Qirv(BR4pr zU_70cNqSja;y|vPy8FxRo3^8>#-Cgb`d8aFCKzlTYVW z(I*^jZPV1$)MO6qHMd&?Z>=x7*IrH8+}s?VoTS>Tm$`aHGq_KIWN$Yeuh<>h$K?jo z9f1?d+1Uu5LB8|H18}BbJZwP2%*=~E9-3Bv^L;77bThg0yt#Z$q0-c(_s-_pSlx~6 zA)m5@j~~5{n8l1Y@CjzS_I7sZT4{9Hl-|0WYwRFs9w>f$=gqKp)? zn6)|C_kViyU+~uDU^DDlb=kBY`%HIXMk`P{<6h5 zHpWv`^@RrY_}2z|7NXA8t;YsQgt*k|&wx@o6)m=t&W$6`ic4 z6cgPaUMxZXZr7&93H8Y5c}#52G-=YO{jU~K`VzvFqA1W|ei{IzWd8rg;LD|@nx>|v zVFsg|Y)z=3(_NQu;m`Taak+1qLG7f$vAjIlwY9bWRm+a&WVuX(?U?oqMdQ+2Ce@d9 z9uJsqT{zV$AjW`f{p)@Sg>nJJbWVTg{m$0L{GTb(Jzn_Fz$#~EQ8H1gy}Y$}G*cmwrPQ8kKDE+r5b4Qyn7FTZ{A)T3W;LqT)H(+2oa#(0}a{ zSsZV4($2RflgVTBpyGGc=*l~H_AS1DW_|o((J;S#uX=FM5ftVlCb#UNCQET*Vq$`x zCvRb4cxvhaxR05Qtq9(*2Ey^&xp;6VbvQl-<>FG&(BQ^mvHWk`aBy(Q zirM5Ir_t#For(KvwQNZw(i!~cny9EKJ$?Q1jmcQAh=>Rr`j@M{jXp1#v8*bDk=ttE}B(=^+VHW zH2>?@-xTNvz|bZwb=Ugx*y|tw|6X);b@f_q52)l z(~=z;9d)affpI@I^IdQ_+)AXKo!trtET?d1H^63}o1Bd3pgZiK0}e+ox;=aNQeOGO z!cF+@=jooXZ-_)Qss|kjrkcm+k8p}(tAFx)J@?+PIJav$t8eB!S4e*QIOMEsnuej_ zMn!;D-{8Um#n;a-mqa>=NbQ<_+0-{+Rdz-pm>i5cIOupR>kX*0?j9brE1hB|J?byy zUE{WGeR7J8ZO5AygJ}`WSW?DbEq%Jucggw8Aa1_u6XJjMtKTJxPJh$Rv# z@`^DD?f2A{Pgfg|^bGX%{RIry*w}bPpa_S3<+#@I-a@EYP+#&Dny|xCp$#AhLh_A1&452Gsn$^)R l^5xzZJSF}0#*w(UFU0x4UH1`-V(_*JAgqv<)fSiU{0EaC7>xh` literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..9a3d1d9e68d46b354e99cc34076182abd85e7d20 GIT binary patch literal 2576 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a6f8944c565a9c101332e1855e5a2e41c5d656fe GIT binary patch literal 4110 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 Q=6nd|f{9+Gj$`!y0P9CqivR!s literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-large-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..3b33de17bd0d8a0c4fad2407689807a7a1ee1242 GIT binary patch literal 2813 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..d922eb8997a57f2234006983617d505531ed27c4 GIT binary patch literal 2532 zcmbVOc{J2t8~;kb44JH@LK=j!W=oSy2E&x4ER!us7(3Z%H2rEQF~kUCEU6G#vJOgK zTa>Z$^G+JYSjIAzkkO#uxA&a)J->h6bKc*3&pr3v^E~%C&%Mv*bD!tNU$!)b3LF&x z004?MGqwf*o_KKW4%q{a+oDdtCY}&$QzTH{D>VlI{JCgjL)*w~HpAb{#-EpO#WygZ z(c+WyyV+}&8Lk!LZidKo*B#R z@Kd2mcR%D)JX<}h&*M1#KDFi7n_XBcLzk~zi}|rWx4yp4;c$FM%R!%;%U||O3%CZ` zZdY$KC(-@xY|KAF<_p8S)@$nOlJGkl3!@i~yJ{TXYq595hE+(0K%ocWt)-lu-Oryt z(`dBeVcYy_!2AG1-o!NdSXhH|SXda6j|V&}Y09}NdSjK@2};&xdc@%S|6z4Q)!A`r zyy-UcJ#n<+y1HYH8A}Cdz86Iz3=a=WA?|GVP|l#yXe5>=bI**0Xlh>Gm!YAXmGQOTB2mE(dS?6Vu(vh zvV-(uf9Vc9&{8u{_^Tb++*4QG&);7{_kD)?_o=D&<9u>!iSY&?>!=h6Ohn=NfS1>f zo5ZOL3ldzM4dJxgQJHoEP3w3HO;(PnXUP)W6VkA6j4i!ibP{Q#<5-3%$Qs)mTjTBs zGFPKwK!<0~-tv@?(X>KWkxh6R#t@iP=f*lN;-~B3IP!vGvfZgC7|FsRU*@D|ZPHy@ zv%)lO^6szqkB)BQ2VTbhAF1Gf%^_&VQ_9MLU*5%Vzq20*$>{3n^mM>}aJeBNAxGl2 z_)PEZJ^AR-BSJ6G+*fcZ!|moxBP250a(0KiiNJ9lr=-9#ev z!CUUqG`|{2^IS`lGyK?ZF=%aPXJ>C;AI|=yG9x+n1Js}Z4N`mFi+$#Vk}LBpe?%1S+WuBSW;4=>;LJ+&>RFN5Q{9Z9vL2X_wW!we(dg+(T{vO zy0ARnG&VX)^%*G{7#P^z#w9Vg@8C^LItB|aSt!_m3otP}d-iPnUCda2KNyvX)kw=6 z_z0bTL_{PdGxH_p)qVj1@ctcvfj&N|-P3snG0{KPy)l^d9#8Jd1aEg$ettfFdzBB7 zDjdA^Z8|F}Yh`6+wlA;w_NJPa76~6|Wn~o^SwG?vvoSwXXh9(u;8(abHdcvuI+a8U zWHg#UZozY)P-sCx!Nr2$%_T-uR1^s5!omVmul)7v$HG-%3z!1yxls7^cetpXA7S@f zzOHSlxx8g`<Kw~FtLd&9 z!bt6-Jsk-W{ICG3QyFHhWBm*a1_SpHgd3c5)6+evV~Ru&jY_Wp*;r&ta*e$To6QDs zW}Zo%_*V;{N;2f7Sqf-hKRuEkjvHrFx|~Z|`mQ5-K%fGBYhrylBX~nht@Lm6fTgs)8vs zn<)m=w7o?KACQK(TiKn zgbE2=uMaXTw$0U#swyq@17lH!kvSKxA}>EBvGD@)iud;mhK4O)zkW?ubpksILVp_- z;^08;o`&N%8VK{}1KE1FCTDsm!426SbdsXgd}yP$MgIkyyHqEC4v*5{;NY{-1?J@B zd#a$IU_E1rKp@1oWm{r#xb2FF>F_r~QhJvi9JZL9Ldb_M6?xxS*REZ|pA$AaG-I)X z;7k|AC!*vK)GV)$Zdpp1n92N1SE-p_g}F4A_b>IBh4`)V#7$zozA^Z11JEXx#^p%Y Gdw&8Mxz`{7 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f4764017e6975cc135b7c4b11a147063027c240d GIT binary patch literal 4355 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f60a53b2c5334ebc25e5b5ab5416501773f09ba3 GIT binary patch literal 2533 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 Gc<0~Ae9syH literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5332977512af8c95b4f5a6f5d0142f132d52b7b2 GIT binary patch literal 4228 zcmd^@XH=8Vw#GvdP^tl>3PhqH9i@nrAPGt@(m@DKY0{elp^JoOD3K;ciqyX-DAEH` zMUY;U5}E>10!ZlXzTvFl+?pbH8cV)d#*38~Bv!9vyC1?Y^dyE&jFMvQGMokUG zeGrHO4ZJ(j(Ey*mUOgrt5R0}Z;*RkXo3$L5$0jBmF=n(bU;1ww^Qwx{6;mJ#l5N!? zc5&RYaa6Z9s0>vNG}AO0^I*Ie9aIHG?$T*N?diU>nI{{wNgH@kqQ5|7zSuh#+vkc8 zd#*|TjtW&>w{Tkv?#1smo(~(}DnBlFa_^n+?REFm8w#_D=Aa7)kssdYs!VE>hm_Q+ zAZpba1T_oz2af=V5_p85;h5$H5CseHsA||U|EoPhC|nf1)bob?eZ)VIaLm^%!+b+> zn^-*%|_&qWp zhgKa0vN(P(9uOuE3rK^B?Pa(?4*Zpyk`Db3mn`==a?T|n@<8St3UXizI0!Q9J?!uA zZ){?sJ~A?5Y-OdLn3%|C=GN#J8mhw1!C~~A>2k3{XOgkG`Hwo`mWxXqTZtd6ho2u1 z`dp*9?gRbpFuXKaEY{e_2yR{Hmpi1Vm>3rqSFD>Y$7ibD=!ilouT50<9Z%Hy3SraI z4Au#a*Ciz-x36?6fRF9*rHoLv!|^^fMJ`de2Iq^N{#-bzoda28uryM}v8k`986qnq z)BjT3YH8+6l(DJlwa>Ak(#XvPX*SC>C%873(FKT|k`_L4Ml^;`If&D2$H-%A;k&Vc zfxu3D=y6YbsmOwx`iF#vcP)8z zdO;{dXU(JU+}zUk2&w9~PhZjRUb;vzgs!P+_>Jj-jT!dee z1B;hwJzKRNsiBotYhiKy4;|97o5NpRPX;VZWqW1pMWJ4f>(XA>+2W7(NLqf1UFgY# z*9WZmgyD~{W;TW>LOXgi6_~x{ioEr7I`A?$qVKj6z1mns7(7NrM?<_<61#Bcq+ExE z4~}=Ir;0kgRh9OCrN$(svV*(RC5tK?I>EH+I2DvLak91zIp1U-G-~0Lxg(y5ML4)x z8tMS+Z)h%qjai*yi@qZr9Zk`;03PM}n3var3Yu)(C1|%kXATVG5J`nco;C|0l{c`| zO?yKfd-=$832UutLQvUkK`iuRinETcXdJon7vc*CF^$=gQo=D9sqiIHXwv7=rm)il zX7mf#$q!VadbP*YgB4v}UB3=4r~Z_y+C8UUdB31n1~@$=O|Ao#zx!~|fVVOb&T#E5 z3-}u6sa4xzM^6mKSs~7(%yb|_+F^1F9k4derKcq)irbQPC*Eo&n|2yiUx*?;RQ_uuhX?ivT{jCljj z8&r{hB=?LO7SDOZF*ca5!soY^B>xRL4UkQxT8EI-78MbMsep$M@pu$=p3O|q7@woyCl{;e)eL>~HaPpT?Vl1)dL&reL_J&)0kAc!5^kFympuMc>4 zn6UA%`{h751yz#HH5d%1rKQCn^o(|_q?uHUGqOPX>U<^0q7M77Kp9F7CNqArfCcX* z6|jq%9!(=8@O$>-cvSst0Soxwwg0c*o&OKduy6cL3Vurl-@3bR{kQzi%?l%RMtIm2%t!=+WODq*#j zC$B;#Vvvo&yK?2LMU#cP*~M?(ga_@cUbh4t$9;IK8@*r1=-(j`jgjILKmBEDXgK>? z`$53Zhr}HtFmii)+t|WFlaZ0}-(SwNc4b3pglzSNZz%o;QjIBa*IU(NUdeQd1ZOIxU@8`w5)8ZD^tJF z8-J?+;EN^T)-K%YReW)Qo?dtD4YFs<4_9+Ld)PcsjhgxYiftl9#7 zP$COxCO}VJLlN?4z(p1d6t+*vLgNO2QYl4Lo@D%Dxe16Ks^-6EEanK{6I7p;Kqfqa zM}Wwn4gYP<4EdPAX}t1Oz=XTaaqca;f>dBFb3Rp=LMeH{A(VJx-HP*AxizVS$J3xlFUNVV4V}D< zP}tj;Z3V~+4m;Ts++G@(FBtU1@5caiclSO1pj6RgmpGM%!>v;?O0s-q16Eom(~)Lp zfEOG^!{{?L0$7NOSxJ@tl9-p!94_<#z3@Hz9zd;rzp-Y6t;{f;XV0DymmN-y_DP-m zVFp03KNX#P`8WHNQkPd&touXuf2aE`mlO@6cBk%*A;Xm4*)(Q}h=>%ImnTUyY^ZT7 z28d1h_9=gI9TC}WWaN=EfWxEcBeW$O)A*kLx@cJ+ATDlE+2&HSW98ZSJA|E`eW2Jd zzqq1ez}g}$J>3WZf~A*M9=X{bbzR%iK_q8x1)qX4)J!u)HQ!+~J#~r(P{y{B=2XG{ z8_+$ske0;>1+xd<=Ms73lR94TuTw^bWv&0H$XBd|?af5_ogVKRHH98K59Fy65lRog zu>}sEY>y%TYa`4cBIPxcpa4r+7xFI4i< zZGyU{w1ReiI+a*edk_!B-$Rp_&;SPGL_|fWxWkUOIh2n{L!^E<^MHw&^>4L2&uP4j zT?@5Yl(K|%9h(tt1Og2B)kjRqKM(U{A=7DTx$J#_&?;8cY_MChY1MXfgbG)H3|^DX zl5t6?SNCsal&@LjI2sD|_O763KC$V0t(+6{o~0Ld8WMP8aY9>PX*2pT$lZNS8sbgb z-7{z6u~~G4d~x#@CjA-e9QjoSF2CtMF2e!tgPk^5Wm6^KK8hjnuf{*S$A5`Zoud4m}jN_UXDx zjGKSu+nWpcH=9gui?4%;(wP0v`lXOfU=}R2>|-zsjmf8rIUeHpy4f+n8@l`<8xi!f zOlS_9CtsA2vsSi~%*d_}VGXJRF63RGO?Si#A(!#e#nb3sGlnCjxm10X+@Bwv_~8lq zbw}lbc=xuxb9=QEFj6SsxyhUKc;%5J)htitP4swoEym(aG?*2Y? zPbUM9TtY_z*ZgY=((*{W%FzaVyz*f@J*!IX>CsjnF_RibjgxkWIlPVZezmG)-yX+K zn)K}(_)~-STtm5=$K z6C~8Gkj_8)aJn#^I#XTnS231`nNKHh%0E3g`+C!!0`;i`6;fg29S>6iV4a%g8P!<< zVR7-dU8zF#ho>Rf&4p~wx3V2r z^LC*=j#zHIm#NkrDBpNUtS146R(vl%9kP`?jcdjtXgtRm9y3CcBjD=V0o0Z>vDOcb zDI=r+Z?t5vKIlLI2R`c)v20G@0BK90y!*e~&geF94i9SbxSbu>wm=ml7#RZ24)Pr8 blXE?5ShwSf5*gs%1(2q?9->^$Hu8S}XGF$E literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-medium-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..c713bb77c94681283aa89ed0989e93520a853cdd GIT binary patch literal 2763 zcmb_eXH-+!77j9xVJI@=ARtB5$siz#R521zL?E=#11KSMrAZ6Ds0^Y&C_z9-2ueVN zBp@P0I?6*77-^xCATpr@1JVpgdxsyh-p{w*Tko#B?%DUAwf5cR`@Vf1T3H&43P}q= zAP`Z6iJ=Vy!gn9oo`M44c`qh!6fAt9HpT{!%8#-O;N^!<1B9I*xMBr8A3z{NScKsf zyGSCJ>0*9;L%wqbSuGZpRO_MO{XTK=eByHrL$B+f-n!g$S8qPwUF`i(*m8zAXyV?N ze~d1SRY=2_htbi;ii-O^AFAc^)#)hke=fP|nU;(@`SX)kxf0`hs?Tux%)Nx;LS;Kq zt#~H!8*yz*`w_Bt3;QP5Tp{}q1h@G7sw5T_4ct%5Y?Oa(YNfM9KXJn)AUcS7$ySuu* zySf#-8r>WME6nvy>2NO~5*eGDug|$Olzjf|o|BVP${y|MZt4zDn(M%dUzOI<()z#- zSzyI1=XA4Q!aj;xAdwU@`KpG7Mny%1Go$+Pg|+jl19!FVYt~1u6ca7Wl$Dj$zga*L zV`F3E4Ooio;pB#f28meN*+0#DQp27|4PZh-Y~teLlvP#fur6XwULJ)`N4>!Wv9{H3 z&w8L$1UfPWnwy)I6%}9Xuoh!=3N4R{i_fpJyVqEGQ5y1V?rMtnH3gFly1Kh-VDFmP zY_^iP(4R5-vo6OTOA238D|y3UJQ}85_raz`U8e^!@3BmJ8r9FMN~E}(Bu461e)-~0 z@#rB;a2-@62)y{e_aG1{MFGg2yYBzV@O)77;#?B-WD3kwS;Ibp{f#rq=Izuy1C9j(5K!{K0|vuQ)YxpvSa z{Vj3Z>z@+Ee1n3lK$k%3z*7b_U4UvTe)ax%eQ4SE_;}c-Ha-ejrG9BCP*hCJua^W5 z(UAoe7|cfMmFMP4P{@1~Jd*=?UA?{3*vk>@_U_I-%lYy}v(BY4+=6i7cAercFB+^x z-s>bLCRS8cjYzu2x?#mJ_MaV&sCWJKR|z_H<(eEU?7hIRqU-|m_+S%Ke zmXV^nI67?=*VIn@_RpE%=B-)6_zSm0uuDznr}|RW+Cn~f+F-F*A%VmS3dL6UICA&& zg+}H%!k^y31{myg3SX{_tgKx?0L_x9^OQ)Gy;%5>(K5e&gIo6VHQ{b2qBm3c#4^(&+F8 z)5noo)4q67scPiX^6ujZFAQ2m9Dog7h04wb|9nhOYRUTd=Z=mJX(_3`FJGub*0cWJ z-bVcV`~chqyp|rq)?>-kD{3Wo0f<1O$0sIe>FPdny+x?t;OfahUK7uY)zjJJD3Ws0 z!qn7M6Aq{4=H{lMU#A+8eQ(|B2R^j}#$SD!Ie**R9bJ-m_JgYlf|4q!3Oa*~Z*|ox zLW28na{GXJ|4q9$7^`1@{k0)%0iTkZYVYh^kn3^4ZF(tDa>QE13=d8fi2OpbE-o&Jfo0svXT;<2G`_x#Oi&6+J&U z_Dq@7F&}?_^Qri4T3{nr`(mMG-1mhtSp3fG&nuhwqKWCC_ksIUMS0TF((8*=t)_T? zZNf0ssfN*i$LlJGMq+}j5o?y!g@ zVgZ4mrKd+4Cz(LQrr-WUOIw@68KRVP<>cg~Wn>2PHGITzM(mAfP{8bHe_vlypI(x^ zpC85B$LDthm&@fWEcEy4?^CCz-NyX214dt*#MWk-D;yR4fiXJzd~a`$QEy~q#F(0@ zqM)iO%F7Wz?#$Lc^Q9W9otW|R@>-ZqmLFaiEc+dCKt>vEXms>({LYGTGmjMm&|gqk zI3#ns>1k!{u)**~-dsDg_lRU==& zzJM+O<>@EEW9*!qln~L}+7ZU!AbE1~#zDvrPm?m4fq9_!&?D9n5%hDeE!6Mdqe1HB zRI2%DB#FTV8UoxJ@W_Ba+ui0JOoR;G)d!YEdbF-C)2-e3 zr1ojXTEaH>LM@%Xm?)+P+@tL6a}LYuJmF5z&G0~LYZLb45d-oGJ5N7;{74|lyb$WR zbM)kqhwr)JW_Z}8OIm7bPvzq`ui)3Wms|ZJBOM9a0Rte@u&FJCffB%I6zPLd?rL@tIqUV8yv1<(u~~-WaQu+kH_-^Qd^D{ zD(Wq}ckd9WBccHvln~s=Offtq9I17u^qLyx+B}D28fOba@#8HqyLx+(@THYV&ziCI z^+Dv~N~b*P#Ls;otSS!2m*!MsRPE^Bf9zD&1ES?zLR@<1jJ2k;R$WrNTMO-vqe(>$ zp0B_h8yaj^l7Mmrb?G&-vSOo`u*{Dch)o1gC|uSV)tJb&I-7cg;v zNId>Xp?(4y2nxQW#;2D9s-Hi&^`n3Q)Wub2X@1_s<*bfudcx5=&;VAGQ$RpK`NYB5 zAt*$8{Bx+fQb6l2NX4_CVr#;XIeKZZu%h5QEX9)LCv@ zwm#-lbb#3HZ(Lh6ngqSII7~Yb0#e+!F@|$e*zRzDw`wbu&Wbhz;yoSY2*CQC*m6kN zQ|P*SzPYp9A;$+dH7g8HWjV)eZhspabBfYE?h$h;%L;%$FmQ>O-Wsutmb(;g4q~8B zhIF^a*C)5T)ial5SPFoFKubZ@CXL>vw0BBT9TU!qOx@hZ9q;byDhO5TVe9UzkXmcT z{DonXnLlkR@=yL#qgS_GHG*n7X?h4E_4@B4#I(M|H2lQItC2czAcY{VSsGRvVD9}3 DspUMP literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b6e1a6bb548348d77a22bba5b24488de847dac9e GIT binary patch literal 2434 zcmb`Jdpy(s9>=HrGNoTTO&5MLk`WT7hD6pP*U4BCg204u>Il}dc6`?4S*5}U<)<&8}&2VT!lH3G8IH%nf4&EjK%1d&c z1&(s|3{nD=+-VCsqY?rIb%ME)Abr&TXe#WLcqYjf1_oXwnS5cd8NLofcTgRULaU^W z;w`N)zi?FPSyAZcdyDJbJ9$Brb|}== zd@`}sSm#Jc&%&(WTL_U@NmEOm)%w+f)@9If%?h2P-nQK|MqKpwZVrccNUUb0{K-={ zjPOc6? z6LDvC*0lesMowgsFZn0EEOTyz0)F&PzNwLPiYwn4=kKYE8&!>Rynoq+)d4FR_ zgM8xtWhy!!Y?ST)rPPqLQr>F@Rz3m&D;V5VLL&R!bxK{TTk&-3Y;YcoaWp7Ar>wNp zwcOpz-(OSp*v;wAe2Y{?CnqNsK?p}6fy&&C-@P+k)SQ@_`qZd?&n<h>KmOE67F5TulvlIMN;5*euUk+C{~)x04f3iNDoSy@>3_1wD|p-D-_><%2nK>Tj#Fx2(e?kS$x-F zOvvO<5uavcj0e3@F)V1~*|E=`%b9N8K9*03$G{(FwnGo4d~LQ_p3g>{BI+%nZU0*T z`{lj1<^^4&;Zq88i3$r@6Sj$spK?j=+Dl2Vj3Mzh5J@T`iJ*uHqtU!j*CR-8%}e@T zI;sd^y$VegrKShL4A*&qpymB0+Tt%NRv zu)lC&YzHW+A8~`k zF&IW={gfw9o;y&V6DO6rJ8dfpYidrKn&x^OL?xi|?Wv9;k%&Mb#HGD_`Lg6<*=z`7 zc6K%;C51!tzK_ZuANMqa7^E<7j@4KB_SnFC?(I6D?Z$YLm9??5IMLYH2=v#)o0023 zs%vWCaJXHL@ugR|r%#@gx-oIan`9^R=L(HsFxXZTEGj`o zTDd6|R#sNl&liQw4-?kD&j8vqFzMCRGolDed+64tcw>V^g_$N~kymTH4i;3>XzW~5 z4EPq4o1C2N&CUT>0vvQ)Lu0VY7i(d0UkO}TSQwYKPZOt}Zbcu8To_?ti|yoO;@x$e zak%|pNwBh3+x$SqSyzdBsQhRlO^X@CvnuIp6>gAKEapd8m+kF42L=p+zkYuE_H8sd z*CaAxYctZxDIJwRN_baWyCPm+rc$X|ZTt7_%d{yfyZRnKP_BGX#!p{3LqE!@?`0ydkv@BxFCK4a zYkR0Rt(Px~V2w-(^C_NEjH5-Y2$6=G+I>j9PEyM?7doE%!Pe5!QZG|5-BkeO(RKXY#xOv?CV&HE8R6Uz5|vy2ojofBB2N< zNYw;HrAikFMWlwg`DY&HWgcg(nYGTk>)v(uKHqLs0YPXNkK$^LgDQ!}(~qKEvF38iVBG`ydhCc;Pg9W;S$EksQ}94US8aiy0%lE*Bi( za;<24@

    #?dZp8p{09iN(VfS{b%gZI5 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 R0`ArzsDZhD)eZNU{{U(LKehk> literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5e10e6c5612929c53c88337527dd2248d258a9fa GIT binary patch literal 2634 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 B`iKAk literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..3cb0aa3222266ae4690bd02ea2a6654f0eb19607 GIT binary patch literal 2425 zcmbtWX*gTk8jf;Jr-P|AOG~LLY7R$m8r0AxRVAcN5Jyl|Lu-iE!9{y%8&gQAI%thW zNEHpLYIY*3ax0u5T=Pj?A|)~Q?)Jz1+2^^>T|d@d&)$2zYpw5nzxP||ZV0C%(kjv* z5a@`Dvx7SbB$5t{(UOONUcq|03wVg!b$5b+D8p(iAdr-)i^ByE{Ik_5jPtcMQHk}S z{<+~r`eJ;+wn_PeWZhjno%z?PiAoQ~EGyx@|2UHp+xoP7QaAqV5^Q-(>+lELlJ zO&s9%$VcJZqff*;LR%rx>^1-WI^PB1*CEdE+}8di%?A2`)h*n4Rz%Z^uv8NRC7B%N zh=4!|qEliZGZ;h!L>PgCe$k4O2aQPnkFUHtMDdb^3=3mp>YF#gMoP6vZu8J!ri~lWHB?O$==?c$K#2Jh{&a<&b_%^Fc#9Ja`<6hUf%5N zY)?;5Rh8~MZveV}W4Xf4+}gT^xssEUbHMc6+1-s@{qwlGIsvLdlCVfAS^|FzX$r%a z%EOL=ZTA-FWE#zCo>vB)In;WS8*0HG8Oc)hSw=Wzs41(dMNvOE{$7+Pf#z4&*3MgZ zBg}1W4aszzNdX%ffQm^-uswZREDn0|*qevHF~RDQuLGvQ45%`Uurt2--4gS~kIZH)w--YkX*#9u9#J0_?EmCf- zZk}sLiVSREW@cuazXSxvQ_nLplKL@t-deU3vaHkMdg&5f5((%gR#M+(4X?!pWCaRlzYa%?%A%YbSeXDTT$w@9qo2E?>Uv>gt-1 zkPsezo>L0ycrWm2{ZwEYB+OW!8YG@cgr=*itHa^&1#{WX*kzrQsaeCr!xa@3v1`*j zb+H-MXH1cgD^V;8rlz_&oj_Qy{^{Gk!du$g;}?etu2mv19q|Qg`XEkeVf)iw|G}Xl zk7|#mrl$BH5urpBQSfRaRM8OKz+OEDw(YTboMeG_yjKqp-Q3(vp%`Y&iG5{GP7cKy zf|9vWd(Ky`_+l^%)_=QN^GR6oTgi#7AIkD|^uOQj=5wuUPkk8vLzGfl*o@H3Ryr&m zOQ~XU%iYgz;4f-K9GQ9@ZBh`5!}S)Oqtw<81epAn&0N=o_4Nj8uRS5}g=;xX-4Yd_IC$hB0(y+N_W@Ce?WZK-{(l;<*Y=0gY7$}5< zJ7`{YbCWsM6KWy&@+H{pX-Ub+#Kf-z<9gqBBA;7~%uH26AHW4br;MbgmKGzB zUwNfi{{)>*KF6fCI?{Oiaz1YKw)KnFRy|?e6T1jg8sHZS=5Mf`k2C zSy@>C*3K?5E^Z>!g2iH;(bje;AAR}qWkyCuXJ@BVriPWk7Kg(Ti9}ebk)a_4IK-JV zPBovVTca<%_$c|Ht3MOmsNWXO=>TTT&SEp>fK&APQ}32_&sI?=VYhDa1%mLfu&vEa zU>Ehs8iRA^RKZ{Yk9YI-?I!lBl$2CF*dn53mBu#tjDG+Ay*}MgU*EfK3>fb0-1GJ2 zh)NuN-PGjhm+4&Oldpgu9uzzv%^sGYG1Xy}dnv;e$_mfTnNVx~0~?zlEyy z2x*+KNI;`d+l?G?s04)>2VnhkY6|1!6}$PD=R@q)8pjR-QB+qi%FnNI(*>#vyCwW5 zY3VZen@A)wB;>F0@%-y`8mg+MDumQ53Wf6O)hmV$M1?R+PXt^Vi^T$TrOJT8#lgY(k9l10UVJRF2 zDHs=qanAY$bz7+ew~}2QP>F1-6e#!$geSVhOZH5K Q19vHqizC8;0`p7$55lULO#lD@ literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..af2c6f857cef9d65018a53bf4e031c7983aeb4b5 GIT binary patch literal 3771 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/shape/input-otp.e2e.ts-snapshots/input-otp-soft-small-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..8fe5638711c4217c8be4c23598b4fdfa53a82256 GIT binary patch literal 2719 zcmbW3XH-+^7KTF+7!0D65HX-b9Uy?A1_2RFf=H3x2}74bdJ9ER7@D*JWM~=`L|_pKqs_n&|Uz3v+`& zARdD|D02{qB@uXbOu?Twf1VGYDG(HtfNA29{jF70uiMhUTy?E&on_zr$GPDAU zLUrFFUlSAKkma~^31NyzPELOOPoG*hu=RX4Ha13RX&L<>AO;01sjKG=Gasm3@oO%M zi(|cOXt){KF&?V5;4Hi#)L^@V*6zRU@2?m`D&E=(B4QOqGdbI*@WUEz^-yJHWg}zb zz>}khzP`SS-+pU*?Iv?NB16hYlk3258XFk_$dL`uRaNzMM+M8)_Vy$(LRqaSy|c3utz*LUPjjRxelbP3 z*B2CAPE1U!sHsuYylWpCsu~|3&(8Yz998x-JNKPlZY=eaJYm3w>;8>sVr`@l^S6Qwu3{#1W%f9 zgWEuZC#?|OQJ1Tu93)A~*C+o%=1XB`GMS##eCkpNUn&^_D?cj8k~{nD-&G%ezTP$s zCFT+a&U*I3wTGp&v^09FS6b`fYpJKc9pUj~mgSWd85xd#Yb2%N*@@TJUi2*$&&h>MG>sH<-;av8jYafqJPy2;wWeFPEfHg|m+6sGn4I13w1_lP-Ra*9~Ld7)nZT`_5?ueu=T@_(f zO^Vj=eSxH|`dQ?{`!vVi|A^v4l?^`^`#=Wb{lEZNG}G&CU|;d&)@o_U(sl^GfR1UFU7g#o>KbDj$B0rZ$pA_ zJb(K1>Cn`aZ`ji}%3gz}*4BxmOO64*Z_VIZpZ*m-NKjC4U~q6`c-UoG&s9aZth6*9 zr!|3NSG#1}M+)gv^fW`j#Vsr>z`VTt+zDJ9@dGrPN65`0S|WYz^@|seMn=qu z*o{z;d(1oxlMMe$$V0;aKV1IS3I79Gb%i3g=1EdgQulp*&;5%LV2Z_>cz8%cQYGht z!$U)}ii_`AS$!zE%AZQ!KUk@qtasy#h={C}>@UWXvqPn%rJ3vP8!c;1^g8-l^zNh= zOe5%LlvvhgtFPJ>>y>vKdG_}9`)kcJpgLRl@Ai$dqr)gaVZnHJ$!5B-udh6>_RdAl z3$SaD)XgqlomYFDtSlet^riK6H31A9GPkod`lh*ASyeT68gC?}5w#1iuC8`$3z6xV z0!XHz(c7CNoq{RFX^C=kbB`Rxy}ed$^1P&>AqS^*;Z}IKIvX3?(N@1=T6(%my{&Dt zpVPrl-{;;Prqd05eB@$CI@;s=`$&MRhItCZV`G$|AyZEid{3x3;?7uqfBzgK>FSs6 z6n;=zTH4UWM9=)ZgwF8}{|4#wW~Jp5Kp;i_od(X%SLf#DhzHA6jznCRr7YUe@H{m` zL|lM-b2@4x@LxPnXkoz*0S9l0 z4h|3fzf=m?2~;C`2z6m=_7n;Qw7)ZYZ?ZL5y0NhlL_9fI0fWJ_VeOZ%UR~^!F7E!R z(Hv;B1m8;%sTjcX(5FvESgfd(l@&}gER9nX2YMug#XZ*CAZ|a|9vdIGu($7X%haae zwWFXg*nF10CBwy~j3cSKFLh01}@X!Po21Lq^1 z)1w?b9$z&m?+O9Hc0TJ4d->>hx9;8J1$=X~KbHwQ+N53uI#ut|#nI$Tr*u9%oFI6d zcWCx2D=CSaqh?xIS><+qXoxwE#71wDcj|3wu@65)h+NY2j6Wk~6cju|LIn2PXHOU*H&Rey;{j?YB}4MHem!Sr=Yt$QlkyyCJT9)J zq+};1uRnq8$|&%{Gk{#mo161^Z|*-jIEb{awnxJu?dxD5>-MRWSZa%-LdkH2ivtoi zR-Wr_H{4)FuougE0VuDw^We!Ey_wC_!s51Ycs493!bsW;E?z0N|Vgy*|EmV%iul_!eX$ba)CLThAOo}s Ksz&d}xPJpmG8gRt literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-collapsed-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-collapsed-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0069b8cc08bbc2947d5a405780c100369900e0c0 GIT binary patch literal 3132 zcmbuCX*65w8por!6jf^KpoSg|jiE|4r4&I4H8h44DOyuoLb0 zQyMYWA)$s+L`q6aRBCPz#BldH_nx)Rr?b{wcYoM>uV?M&ecrv_-~a!-JJH6<^oYPo z0T2ju1a4-G0D-s?fqP&6L%>FGFF}V3w z%c*UX64y#?K55LwNkr-IYL+>Eka~3CESBc7^({Vc&ANaV<0Ts0{rlY@$GM0LVq#jf z&mx(gi9K_Dt5eCg$=K^&8b@q7v8g6*evaonc{!+q4*E)$>d$pTcUSO78Jr#$Uvj`8 z%a4*wVw$R1HI<|A4As#BjvNrv34)* zUcOL5T*xo%A?DM3zw)|FhZ#0>zG&F zPE5L^p?-O`vMQK#i&v)d0i{7{b{H7=`%@H^)N?>~3nNDQ#UgQs#bA_qvoyq-{=r5? zXdeTH#~GcQ;fT^jGid`?CU(d;%Xt=y@8P|zS_aUZP1XHs4&Pqw0F187QKa71Eypdit!wkAc zlHXU&Hvb73m1bc=$tD2tf*K;6#3kN3_o{t5ZLF+M>bNuv-z=Z&lvX8z`r=KM>SB2c zn|dl;e6?Yahl~!|=}RIzLuC@bYdXx{ADOB6=&dpfk;X{i6#|(f zmeS-CLMWZWvG5W*h@Zv@773(slwvP8i!g!D4X@O-# z6_;z#hStcp6r}f=n9vscUxd1jQfeb--%pE^Y&c6{@%JR5{ZnA+#{{Da^}mP zZL-+Lbyu6Hbjcll{wq(94 zEiEm6yzhwBK6@^8(B0c(!HwXgo?;5F>%S`t4mEZE>LR3c;5){OMC=N7m1^BdFePpt6JHECe5M z^(5<^;CWzLb>4&b)n!4TjKL=6hf*Wgh&7XtkPuH#+$GyH+JiMdLBqGKDGjx9$N<%v z{8U-}{SH3ah=V=$0=0(fYyPqlLjJggL8Bbgd^`>DU!AT&H`dpi*M}{pBH6cWGaH{h zelxM;QbYBs3y>xU6!d$s!dreT{PjIIrdow!k9vQ3YGi0gR5&5BwN3Ux#Oibh)#Z^T z_TJ%`_GwhiM@dj!QSuSdNq{QzJ@|xvV?WU%X070_|3nl~75S+R1 zbMG(g0AMo|dNkfRX|83+I!EH1Wq%RHXs_P(XBtd^MS0$YoOtdS9|7s8>UuoHk2S+Gfyd+T!yh|-hhZX&y`J~=Z2XV zTlV{3n03XYlie=mZ!Or0@RZh6 zVwblMZnNh4xAj&Y$V+0o&;%$HdP?YN!4+wpAT#l&Ren*AT|&wm>z%+JdUAfkG6JT$`gceeorJ5@WBf2{CbTv=IJ zTI%(A0py*k$Mha;>TZs^_ikdP z&SRw63pH&~8>7gjrKPC0gLm_ zTnB50M3^%>kLpj3je+6At&yBopfM~>5ZD_Vev@zCw6sK`2W^ysn8P?cUaf3M363x| zCF3k|C(%$`5EXyRsyr|}d?!({$P9J%4mF~w z!H37k$5jcFwGWp*c^5}Moas*S^Ydd*23q_3`@6fBb$*eH8~1JG<`Wiy9ZQTGy>Fky z{FfvaS6!VV@-ATVm1X|Zr%y3fGXNE+wy2h&yLOxF+Y!0vT_2L@f&L20kUx%Ni9AjB zHVmNE_xJYpR8>{uL`d}IAf1rK@e6F+r%z6?9j_lBM72#FO!&8*z8VqA*<4CVNl7%m z!z2%SXwZBew5>1d=~Xx9?m`*jqm%mQaOUm<2`om{5xo3O+?jN4(} z(AaHy{rAPsEzXXW7qzrnSOZt=?d^L{)ej5|0AjPwcv(?V!6y^i?x6w1H#Rr-S38f^ zs#sfEE={#fd1x%rNo-2`Pjz*54pkdnQm*wkRiG7$RiiqZnt%$60CxN)8kbV9EX&2| zZcWFUrb;Jv-5Jzl7u4qWdp+7_;f2-O37lED>0yZ4z&6$Ii}9zAPl&OqbQCsc2QO1?YfZp21*XQ?Kgigm)Ue zzJHs}b5K$c^-E1kE%zwK&<4!Aa`36?U$F*ktU O0TA58$`}uGi}^RG6Bsc7 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-collapsed-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-collapsed-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f9796a0ad9215e05bcab905e91a2c4ceff2eb808 GIT binary patch literal 5227 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 b7k1~*9Z*A?TxY%Cs-D|c{N*BLoe--tO z7)6qkGnrQzc&%b)9yQhwJY%cb>gOGJ*sTI zR1gZyJ^ddv;s451DG?M6zuUKSs;We1d$V+}Uq|rAVYQv+78hIgBZ3QvL(kN__ib-) zyJ|p*lVhKPmTJ7z#DK7d25r!} zjlDe^Zw#xnv~yKxT~#Cey!c| z7+&=6MupZPnwpwGU$0)j?%qoavL$!1%{PvzdMj~+b&+o$P{jd8^l>NJbJ2*I$`!9-EUb|*&X&HY#l)?U39^Z&Lc$N)N z3)xf&{l21GZY7_o86tA|jUecId23tEp9(|b8oM)8R~WNdcD>KedZ|AJ)6q2D`FLf0 z;!aL=wHU<<=G2qf&~#8M5sWsN{^3e_AYBfL)46g*I65Y#zppPWJ6po4!iOCo`>7YY zkD@a*e&aVcH(w5{nVX+)h&yzYyb`bscAo5<9M-M1MX=q@efiQ@;XB(mI+_3`3#=F$ zolXbsD?eZIJMN*FOc}d1gkNR^4;R|)|2R78J=Z7k$+!0`xUX||acLlv#Yu18tk8P3 zrj{v9<+PqNE5mjK2|i8$P*+!9ZkHmED`uau0@U%EGuPOFzTx56?X7iI0F-5w1vnhu z`Z6n&E2BG_bw4lp(G}|k`ohp|6mPENPu6aI#n{=s|0>akT{H@Bp zSPV5**noOB^zN)c7>_8L{B61uY`$9`V|3r`Lvbiod#OP{zhEc4e;?}S?>`9!%?`-M z-xXE$_#H$+uNG5dJY*gJ{=Cv=qJN?cg8{k|H&k&G<$E zti6xeFB=#bxZKEn5_FK(?WjTPQXa8m1Bwt!V^zXnqG2#tz3N18gzHcqrA7F9g6tdr$xQh-zW1>N(yF5+xqwD4@))psA_3bgBro3(Rsa z%D%94lew>7FW~WGmRQWg+n;R3F{gvpP(4{%2Z7-t2X1)Cs<8(Bz3IqoMn=X8B?dt( zE}%Uy|5$^o4W89UfH+Bwvg%_UIA`wK>_}76F;CH7!>6F_0#F<%`b2CWKxnH zEQ-0EQ%NLlP0ceeTWmWR8uy{z3E>_WiQC_~AMFdH-eNm0A$O=BvE7oS%Xb)B28;F4 vdpW3wCUSHE6H3Mbu7g7bPRPmPW~t(w5pA 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 E@4+nw-~a#s literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-collapsed-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-collapsed-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..e677d327f97e0187ba935eba5eba58779ae2d1e1 GIT binary patch literal 4916 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 L%~0if=)3<3OiSfp literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a2b87099f001293a446c3568b6daa04ecbc97ed5 GIT binary patch literal 2979 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 NV0OvcqzG|4@*j_B-Kziq literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..6968b0ef9d72e263da2df3e01be534ddee6a8cbd GIT binary patch literal 4700 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..11c60bfd53aacdfb92341fb2f82f0cd6a8bd0336 GIT binary patch literal 3142 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 HIG^+vb*rxc literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0c90c3b3a046e41a54e5ba99e8252fd296c108e2 GIT binary patch literal 4482 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-large-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..3844be293874e938f23c336cbff386ac92a1daaa GIT binary patch literal 3447 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 CjtQgy literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-collapsed-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-collapsed-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..e840dcd71fa753b7c931d134bba6a35ce218ae51 GIT binary patch literal 5054 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 aum{?J#I415M05ZhJ_v4XZd7G>Gv+_7S`$(L literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-collapsed-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-collapsed-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..e692c0a9a41e42f6cba4f1580c1cf601b66878db GIT binary patch literal 4695 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5a8af327847e4f8de502dc7c31f07873d1d550e0 GIT binary patch literal 4542 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-medium-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..edc29022ba2b4fbb82c7a81543286ddda268bb4b GIT binary patch literal 2868 zcmbuBc|2R`8poqmTWzJST53&kr-n+5eQE8wP@M^4soG+Y#xAzdT1zdZ6^%%hu}rm= z+G2^JH7FufkfO2F5IeCG;hxU@eCF?aKll0Lob!3#^StMr-|u<9&q=v!Z6UxX!3P3? z1gtDg?}0!ZDZsTS&ne(|B;xe_#1VYY!WdLZky-?S_|~jUZ~PLTze@KCUuFa9;T9gIcbgc0_+_Y} zS6AO$Ay|uoK)u%@xj~>t?hsMXAP=1rq+zVZ0ZJdd1G=v8KMuL?2wqn+v-N~y!B*K| zIQDsur!_uUs(Xth%M&NNp}!v1BI7XBCI^K`CY|x?V^3^sZ0zrA_to?X$!5$3<$-ax zRgI#>E?)HY^D`+FhA0GQL5+$B@0`3=z6lm#9z=h5@XXC_E6$#(VSCrMC+ZSx5US|~kf31_fl8iUlap0YP$(%W>D1rnk&9__6;5za!A{M8%D*Ct(B!X0KQB^dhLg0*meFI? zZXF8?zn7Ocp`MU+)L{q(^(ZYf`K$o#ceF_@|HGrf(Zaa$fqWG;_M)V=ea zh}w#^J0TI(jureJV38CgmqPF)f5BKddE!ou%9ef=n$MW$9OsSfVx+lzuv{A9@0n~c zZ`^A%UpAGQOisKOhM2vfwK(wQ1o5m%ctH_b#2^tE5pZm+c*=if)%~@uJnwPNZ3w@v zozWM>A?vA{@E$6e8PUQE`ZWo43M5g8-=s}VO@01c$hsUk))F+=>sQsJ&VOYD}GO^AuSbga7C=kcTF@N7XRhwN#&_gd>meW#e z-5%O}+Bh>a)753}BFgbqsJSPNQeZSirEX35w=G`gd|=jC3MDKqE~2L}d;84Uk&%%| zZw`lZ%{|TtZ*TP4*MrSIwYHs6Ct$QuCggbvd0=3DvQ_UqUubCPBH_%m(Q7jczlumh-^Rm{J zAb~sUwnFZTM-5Gp$!XoQJqR#F?Bf?)dN+x_eeD%d;UAAt#HhePTdD@eqxjyN5Z%?F zrW)}yas)IQF$?&4&e+%2*VJ}cD_%KOr-J(t`9R$S5w9Mqm1tau*YaNq-&M65s&FC( zIR;AMwjN{y<+g;9Pe|yPu>=>ppoHW=hn#j{T68{ zDSpmV)@4wdK$ebDX)h9tSXVT*lofvF72)n)^inUqdp0;YxW2yr;9&+C4skUAL_BQnlC7!(JJx}I(ggSImxhQ%0GMyB$72ookX?C$C zScHeuZaLP>^A9CYO;8Bc==bu-gH5k0nj}A0h28QGl>D0|rnaQeWjk%D`}DnY&mwd@ zHTgrR22YB#H8m0Sj)`p>`UT4c@k-CF;Mglxc{p5_mkz<&-rnA*F*6}c94Eji%9QBMK{Z+t*x!ef|n!Lniyd#U(^i@*!@~l$ccs@w^r)?XfekJ z-pL&^%y5V+B5HA{h021YhEJRKcdE^1)yh z78VQ!qwVB43I@X%%E*Bw(gAmAs=04TBvNrP7z%+FDyJG9?<;g%^BaBFv!ZeFX$f_) z)_Xuvgtv<3_ugSU>ce%J1x0F4$j?B`UzPOp^Rs!S-{d_Yjqe{F8QB@JcO64E*ch>g z8CyBIxx|JB3WZW$K2E2zhkv%=jSJXb_#Dij?M#R+RDrs<{obSd@bK^}3hnP- z)sKh*qytj*^z^D++fen61Nl0?`8Z-Qt&?h!=Oy2wL4!aG5$~&s1*C)ENI`Qq(P$!& zcEs#v9UhKWIH4I7f{@YCGq159of-gUKYsi;TtDX9pS({y)_aax_gA|Gpz7z~>@6~kJ3TeY;u_tqD5)zbr9Z?=mh`mGMUFGw9z`{CGg2^3$v^teO z2)_vrlf}*}y<=nJUAeLb(b0k1+vke^i{~ToJ{IQYH*ek2$?$+mC@VVJ3l{9o>l3qQJEMWRkRucWnAXTA&W(; zbaAq?Gv|5lSb>I3Jhw3vPd86a1{7ip6wovtvJZF64ptwBY5POov_|cXukP+F)7AlR zmPacRgsW&1LqkKKKil5FZ)j+EybCm){clfW0r!vDtkp2Rz8ab6jmO=yJ}8u7z;wGp zrvArkU*+Zb`uh*)@Bb-kldm6f4>kf+il_8B&cc$Cxxqq{ z3l}cb*4Ayz45z$QVTii=%ueKL7;BT6V(RYeTV7cyxX0HnlCSl_ zNSi=usVvX8W^B64Cp6O6=0a;llHB4xOuGmjvX5gkLzpDk^s^Vy?4Gh-gVdc<^BVAt-Z4H=AGHI_slah&m_iBUz>sU7A*(_Vt_r=GzNh# z#Q@)*UA+u^`gr!3fj~FvVVY{D0k&)JTwa)&u|=Bey139mMK9A(yQW);YK_P|XT|f~ zgC@*|GOKz%FdflkEEYL#p=o6|qzPk0F~zW>q+=f@^U^0%IBvggi4oy+RRc3$=c9gHs$GecG~N=wmf7gPPoSy_5`Jbv4C{F7jn2Pu1^%1!(9K3)0H)WQO0VPTPqMr)K=RTq8vBKPX34!iR=wtbqg(Qu)!Fi)Q_UBb677#bPzvaL$md^ZdX47|f{Zf-uj zzc%SYD7Q()V6>;c|3&xA8aRNv-j|OHpA&4YJ894#Kd_LrEb9X0t6WE8X=!OGkcycMf_bp$==*;fUq9?bsN`OSs+CdhuR8hDKRS*QB*X4bbZV7 z1+ms*U;TLRpW^xqwT2mSdPEE1&Y)N*?6GkwsS<4UHGX?%Xa1&%GFR|qoE^qCP*mQ7 zXk93`TZ%Fgq}erViWayK2BAMnu_kh>=yYSi7*@^2zIS)yr&Z_2%B)=avsFeKkVx0D z59t-*O9VEEc+&uZcI=^01nlt}#P7C*?Si3ii`j0xKWw``eUj<~Ojb2jm)Q(1La z-Z`qH;cBBms&fkvyLnhq4!8WC6{Lb9B_-v(bAPrLexQQ!Ya=Sh!~Q+9-yLjt-j`sH zkeTKPx#t6S+>)?jZ^iM4-*yUhF+o!}2) z*r)A@ol$4Cx0eWXWt)8w^)r!V#T)IGk5xw4C<3Q3&VIK=AHkkD-Rv0;1tua zQ}m4`hyfy9!Do8}Q)_FzyOv)Jdt6mnku-Na9$aUaY8I?PI)yV1H?Gb0-ISUItLWxc4?%g^wf>osOfGF{6(-S#!AXrYk@7POYa|s@WZZ*O#YJA{kvw7M;NXbWNq2EHu^U}D=S?Sj{Od`yd_#9t`@~bj z#U=q3*d(AN8$${?f$s~pC35NJYb6+)cK#Z0UnwQpqr=J3{JG9Qb}C8Wc1u!wcLi-I z;O^s~)hQ4FMm4}N2mA}Yna=YqF+!Hqc-z~EOhmYM=;tqx|YP4a~^YeAN zv6=j5O#Ir3sW{|3+l4|@LJRpePxJlIS!5g75hwn(`3d*UO*FI6OjLGr3Ixz_U_uMQ z^Spky4X%uqmYqXtI-#usLXQycIA;I~@oNx=-VN`y%6;~cS5h?4Aq8P47Cncp*}r}F zM$Ly;$3HL6#(^Q_dOA9^Rqm6Ij6`2pw^Ix+1SdKMt1i}9|G?F|w*twCpZMdrT#cxq zU*CK#iXJ9$t32OX=#ABB5^#9!;sa@ysmJ*M=rkZHH~{E0waLbk&nz;#pVn32hi12f zie1hm- z$H!wW)`};7_=C?5eok5Md63205B!u@euya?J|<*W>vTvjcFgym&J+voDB~eKh215te8vc0Lt*dK%oXx*8Tz z2FuG}KQ5V#x0V3}=l1sYcIPp6L#*c3YCzkJOT*ekk2sFosv(l507xIDGE zP*8BB_La~4>i6YqJP^H81kAd0x$DZ=ifdjv!?Ej7{7Xq}IQ81m6z9dR(~~E;5vzfs z-CbQGDk@V4C4iVqUOLUcVo6*|T0px-SA6g5?X8kRU8Gu7zbu^k;Xf>hv7S9?K`s#* zxFmw70j`d z&xgaP3fM26_a$;Ei3kfvefM4F<7`vA9d(V1@4WTyhU#XGTG{gf@NSiKLrX@#LZFwR zupZxo!b7h?c&37pqoZJz%di$bzqq(A#60)Ot=iW;8zM(jr}c=FXSeIAM{+f;yh3&E zN}HQ#F0mbF^l>Hr%TjpXx1(_f)P8Fd(9zLRZ=*#vBV2kAA-*cV(Ovq20%?W`YNuL>iRHb;Q8b%!Q% zlX;r85D4vQp)zuf%;4SvQWBI}fn?I=Nmh5pm-wk0-*zktIR)6OH125J0K0e z;nkSSx(+!EwXAZ5Dw2Xfj~>6dO@$Hwp|7SWv~6pK!cpKx%FFaQ@09$9er(k1-oJle z&UHk@;8kswwVj;-3X0axs9e2Ahp9qsr-K%SaxS&H|yA zt(;y`Qu03NV0{-TMkaoK3IJYW20uKmM9Ij?E@ua==XQe|vTjN|exQqyEX>Hb)z#Zu z$jGlXVBRQ^bs;Vj(Zo+Fys@Y^j4#SFXZ&=D@(+njY0_Gcpz2OWKR9GmD!*J z8q}W1wL6D47$VjMEss0n3JG?|cVp!?x;%(o#=67VIN!eei-v#wwFeX00$vYtderh( zr`U!ZIj)SAWu68Nr?tiiZEdylm{?e($9qjTUJ9IvU|VXs!czd`x^xVkWKAe{;1X|V zlYC!>JY7lH18b&GSZkq#$cm}Z){rjPh*Xc5N2z!al>>Kr6{&Ala3AuW?N53P^Cv0u zRlhH<+qWEVnD##bMv$93(@1d%iBxu5UfdTY!@+v2D3 z&3nbNG~99UT>lMX3ff#SYjL?4cM}}|v|q;;3Q|O8z~R>li;Fb^ZbT~q^I8p>idvrO zusDs%LxkkrefNt836dfG^fJJ|JC_+47`*9Rj(3;6t)jtmoC+^;fOcWwm4(P_B{IpZ^wFR&E|{;VO=xSvt)las zmPGM8BtWob?>Fdm06#FwDMAhVy(r*tln3LMlCQ1wW=N~K9Rdmr5K1xZcD_e=et;63 zP}F)fW)k~VFKSmUHrMcN3@-J1t>W?X-I(?lOu?0ly(>s7*yiI}f+s+bdF)^x>>6xW zLSgnPKQw`%GR2ayv}#a5^2e&oxbAfClK#8@bhb&878fV)2cJZ5?Celu`#F>Yq!@T0 z*88Bqy%i`f=fnd2XY2_TH3^!}_mpyItZH1L@A$qKiJZ zMD%n`472c%(nc+RX(;o7z`X?^N6{)V0QzF?Z)&~r@{-o$bJ+R0=l6uETpZiDrx>D- z;(^TzN9*Y5ECB(>wCf#BBd(rHP*&VN9An_rvbD`-zsyO?sRj&P%Y)iHX(t!8UD*Hp zRiZrAibGCM8lD~Rp^M}7otbpsO61PXJv#;h{mijZ=DDGVm4UN8tHhvwx8s!+fgG{LemuR}S3;_z}QTug%xC^|IC zkqMk+d?ZsuwDJR!wQ>n6si-#{oZ%I>-+nBe=F0$-e#|;yeI@g zd+lsdP7uVG29CW&gupgAwrCRU_`;oRETG2c3QOQbAl$<4ya-t0M7%Q~2sU7cGCz+m z^9F5^=ZVAZt5&y=wn9i|=8WH;SoYK_@c`@N z*Rv7ExW%$)4Sk$XaS_4!-U2n%f-e4{|Jlu(`!Bb}>`!P{5=-Y_o*<xG#`m zKFNtH9`>Qw{C@oLYuKIPG!NZk?xWP=iMdee^D`DPiAz2|+wI~rEVHN3ZA(U%P|6av z1fzGu;zMVbFi3S}Y09faQMXK(;v_!%tc! z+lqs9@_Fbgk!$UY&Li;nc}^{^Fwwq6C4{52Gg{l7cYF9<@_?J)=a3e{-<{eP2&8mY zuFD>g65w0Kn=CAFkCPaFnswCF^&d5Nih_IpC2RjI^{h9`Do%3Q=Crs|N~bpGrA)To z-^CIOB7>U_YH4ZJ)z@2CSqbJTndSBLSW)P34O>m2Tw~l@f%Q+**^Q0bm#KJ14(^eL zWajKhl_h?qQy6J#n#*7~;!PCezOB-+MC|)7X`@ z(cc~>SnLb>oo69 zu3RGCLTn{=s|YzwudV4%O-+Tq8s`(-CGI=aDB(Xn%GUrKKf^U2=u@Ng_K z{{mR9BkVXxz#M${f5An)!$Ws|!CfGi&i4O49sh47fLIF)Hlo@(I-n6NM>j-$&k zd$kgzNlg3))~=z3_@T2Uvki6E)6#@4w?^#+$%Z9zi73ZwOpbMYeEih12bzOH4@hU5 zAC}1$1T*k7Y$2;=hnj-0dm6W?SKrWZtR*FdK*=Q7?FR2KHZkEvAjsXl3)B|orlO*f z(SynQcm+vX*VQ?a)KjT!E-@R{Jj>hECnQ9Lg-HTPY8Rc&XGvT|2YI5Mvg}`SahP(^ zblUr+rKHiNZa|G!iozWgu`Z`7#I=j|xHMc~L>?n;6&DqDWBLjJrPjWD>Gam~TpoWw zcGavO+LwvaH8II?)l4fp8QtZl?{oF!&>*$>dIL2zujl$zXJ=>Gg9j}M1S4!ffa9f0 zw{LK?H8nfftID#l>Z&R}fCQu0+C04wgSwkd4i9C+lx4C#0|Q}b(gC3qK7cqflS6(T zsIH|oj3?PhTWM-*!=*(%6A~0VJtS7~3dfHhuOpGtmFL%a#lRJgRZ*y^89mp%l1@X% zjvaHobSYUqOTr2a5`H)G!7PWr%%BEJxcv_sZ4>i^mNA9SSoN=H6=MA4g8W;e($hhbpzaM<<>xkWDWo3r3>zcQ2-CCK6{ai&Ni9;g{MpE<)L6}CP z0U<2DsGu(l7TtJ3X=?KF@eyJrY->$1nS2nCJD^-~S(%lgg0;SUPo|Vw0k7OBT*y6c zRnVeJ!uaILRnRv-l<;HIx70XNloiL@3(5)H$4O)kk+{gchq$yK?Nv!7`wYtiw}Luq zD-yE!g~ckHo8_RDtz{C86GiiRd{`FtwqLE{nzBe;LxUwkvh(X#Lsd0327|%Zh9>s* zT9=x}%4|$WD?ziV2hbhU(X9AE&Xd3Xs%&YICz`IyiYc9f5$P#5iUffJ+Lupxw7Tk$dojuAW{PGf3)w zYR_rHVad$Ox;haETua{EBz*hICPIIJDcK9s2b3<|Gi|ZBwfBxsFKd6CX*+nwAgHT3 zd~sxQve;zI+08BcfO{OW`P0jnFPXs;fd>4LfO*IG1Gl-2ZAUk^SSD#Brp*tFJ%g?d zHB@-I+}H{z1bzEGH1UXrh6O^>jy4%nQ9J>j`?vjSc*mM z=v;|!c_*7_mIr(=4p^d}zrQ&SheSCJ;nQppyKeNanYH&~DRBAR0mVJ(G^$%BSG3*D zZuIS{;nw!{>exkhPu8<|=#ML{QC02jN>{I5b#0B(>ZQ~3Z4tWq`qyr#{nmx0U?v)` zgf?GZiD{es%U`PTa`VrbfPU6mGw~bK7lL*s+!F;?7E{?(RaNthWQHI0J_J<)bn)}^ z_m83hc{5P(NwTM9jgFw>^OcMweSa)gR9IXQ1qx5ojW;Qvn`!_Yh@7~S5Vyv#!EY`U z9k!D+2${(N$b1WQ+A}gDk*8=XdY2*6FqSoej@=6i*%xLzCcq|t$_bQce?589h|LRM zd_Ko}VV3@4kyd4y?%?7g1U=pPv5nhW^EcUe6W$-NzoViy4^3FuPyN2m1n3k=r{UST zCtM=;Xy&`TN7xm-QcPAq1gaqbL;`27U5VI(Azym%=x2&|&FKajFzd$?S7yzB3LK0< zC}pl@=M8O6H!CYEm~h*+0HLX+)rqBW^(7Y$ed=|X*;?*ed7#)n79P`fXE7@Avm_{r38Y ziCwyAZVv+ONCx(= zKgzo=J14IFo7(-r^VK0Y${-0Bb#l%Q2#MfA3};) zt3V6_)^if##Dz2g1{lo5V60hU<209(vZ6K@D$*__&R%=yX^?x)`1(HzZE8OvU(a~}92Iofnqt}tg-q%V=J-(rJ(v-i4 zOweTF&LRnGW7)8BAgOW1Jtyl>=RCi#ydZ@d-O~)XG|TBe&+*xklL_`hq6PN^DJ2Zk zLmx8IF>+4J83YUcisQqQ?yqpyUJ4nhf>skWbKPd{evCJh8b6te$|n=Fn8c?Q@XvlJ zt{IVSV!fLuvMCg8xnv)_8f*3(-=2Z72_$6xOu$O5tWMU$6cY-dnH061mTFWq`BmP^$IG_C#bvf^{8Xd)6Zfw*`>RkOXlOZG!6C3JnkW0wP zxII`b!cC~^<6*;~CE49KYA>su6Ry3cWnGyy(;UtAst?}w$37asue7s?U;>lL)Ya2N zeSa%tW3>8iYO18`@K$FpqF#e;!?&VdeI*%EGaaVC80| zwuc{+wQHK1wn+MPzkmP?Vwk~T;0U~`Pt&RluqG2D!y+Ds6Otu#jE&nuk`@+jkKe1nk%Ye4#{@*8WZ|NMAYNMR%nfPTwGkR zSABEq2(tfNq>7xlBpflD<8-5Tv?X{R#%TrJ_4Rm~Wn+m}=9@P}C+$7NVlCpLqN03# zd~{tKy}0LNd243qh}lJNVU>mk;^do~K!h_W&X4y>XwFOq)PJ(sZX(BW7;f~7MNaLg zM2Q&-17;4KbsKIo;=em zee%II^ViO$C6-4ahK8M=U()&XgCUAW;oo00(K1`uRW?pbs2uWNHA1N(ha8K1eXC|y zGNZ&|1jeuTRF%M0f0bUd9^T`9^-OMgE5eCPEL}eKx2J&I*WuTES51h#e$E+bCiXjT-4_XPJ8H6Xl=SzR87b~XPtbXHqWd?-?=zmIT@_P!VEoy$Bmf_=jS~z zud!jd6#OeRy|-L_)*=xX-umqcPswv16MU8+z<`%{5cKMkB{HqO0c|++P#%Yi@yKp< z+`m(0e?eaI0B|b|y(PyigNreJX}B@JOh6PKFWMz~oOzhTd#Qk3Ir3p_Nx>!p76H>J zZ&jCU!dtHsPM#3{ODmTs;d+;b7IfR>NbA`HTN_|ReRA8jwgYtbvAf=m`-&d_N9UL;b9ESGFvn+~p>Ee=!uQuRkA( zFSp3-`H~y~;B47u^iX=7s}6kj;M zotP-N5Lo>w^6STEtE+*x)vmWiZg95O)v|j0n+yxBZ(Eu@P)`}EcYqlyX1sNO6e@GR zwy8;9F@r*(09;;c3$pdev&xzM(vvmO6woxW94}EecuNnB zkd~fqP}n~aK%n|Ge52yGdX5!mD-uE$Bs;YUd>(sYxY7^;5r}!yl`6B#^jbZFlqh!a z>51JcLgI=`i;LAYHN4G<0I+NG%R3W#x3}(|admT}(&>Ee7CnI8-ZqI-%I;sItBFeA z7_P7?MzJ(hj>?Me6%|!5i5~URG2Zy-5Vg4!u{q{lHu$G{ikq8T{38n`OyvA_jnx`smwOn9Q9mYUXE1`2@6ASQNs+w zzA4Dcjq*Me($cUEv=CPA zr{}VL{e-$kUqwppWi^9`N8$lk>|peW`9lkVrV?suYX11;#(Rq+ZQnaYu=)Z10Rcb3 z0SxFPg}p*5?-2DshW8~hFCKk{bcIQ)h#g0pE{_!2?K_Ikbay)0_RQ_c>Y)-!vslOk#qKe71wmZQ&UVfz@ujOug>(G>Z z>>lZ4^T?>Efj$gf_>a|{hvcQ0A8wg=)z~N) z_x7yvSz$TA3ZKjJ~zp{YYw97Ov zKR@Ef=OimNhdX!fpwWCADEDZ}bYEW|kIS}F8*WFkA1WB=K%oH*&T!<0V`^7jM|hp{ zi{RkksI6}Rp4|@*8GdVL`0@n{i1 z7C?VEz$?c;0yySajEs(s9+Wce>IjtLh%Yc5YR1Q%7e+NHRdE`aKb{?Z>mIx7jQ`J1 l>6W`7@{vBZzg-z0w9nM;3k}340{;P^OXsc4Ys}nZ{|!^TMnM1o literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-collapsed-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-collapsed-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..34ee0ff34acdda365c63e205f19fdf330ae033d6 GIT binary patch literal 4129 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 LT-Gnwy?XyY6~pzK literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-collapsed-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-collapsed-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..9c42fa908a334e63786968ec65c63f11eae4a747 GIT binary patch literal 3177 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 HA9Uwmtk&}BZWvrmhAO3 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 a2q{~2yb(DxrVc)nA(mzsRH@08sQ&`O%&TSq literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-collapsed-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-collapsed-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..051fe890e56fcf51d04a72764ea6878fd4ee75c8 GIT binary patch literal 3525 zcmcJSc{o(<8^@0&O|lbX32CH_<}F*jc4Ha6ueH!5`yL_E$S{~>sZm){l(8gbvTq^A zk}b=Sgpg45#u!V+GKSw1*Y&&J|9{u-T<1D-pL3n(dG2#R-}`gl6K8H}#LF$g4M7ku z+8AXCL2P$`Z3p85S8q!pIQU@;v^3I#3VWpf0XLk1dgu!-O+lHQ&55Sxw`OM47I)#d#0WWc1d>DWEQ{%h`BH?w+f z3*L)cl7Zt5ayo=uPB-5Xcky}PB<^DV5{cO_%zb5~UuGtB;%0XOyUVYqADU(Zh7+hW z8pnpyGagwH5on><*w`(z+RuA+P^c%-gvi)fS9N%7tnr=y*)${-65raNI-;QPhnm`6 z3z0+dazb(M5*=~|ybr>~0IYu7Km|Cz%6EtlRPrjb)|y^hFH1dU~9_y}8evIpeP`^|G+=jy9b=Lz_8FBC_&%xvEBZt44_V`Nxw}Q%}?|+S`q<)4J2uPSjLd4uR#$v@bIc$nccd z@@Q&m_Wl#}l1wJZ!c3G%B5|nR!NI-g#D(_5_g%aE_;=@|vEupeT&}t{vAMqdd&z== zi{8WX)pknQI(zkJrr)NgU${|Qibqut zJ<86OgLLqCZB^gToX<>CE9>a*fG;H0)m(>%RpcW=`+{!VXq@nW{r)T^KAwAs7Hs#% zf1q{tDRuvqx5IxSx_lIT(c2fq$^z}eLmK?^O@KC`iMi&Zl}GexPF z!OJtPq@Oh zB6T3ubj4f_b3(VfzN~X@-8?d<+(AC|YTmGWMHR@>mv4Rq* zC!2(l3?|WV>c7F=SZQ<==_QyK7~>m9c>3$xXr=UsUj35*x8wV!XF-o zk_%zc(ClbYi^{9pNqh@XU`t&VvAV7MAM#uRj!Ej^^n)@+uklf z_|&cF4KdA>pylbm2l!tX7V;^jo@YcJurCr*QBldK^PU`goUk>}8qO&CR$mdtx~ryi zOOPJ)G>2KWxEN4gSvgrtuRq@zeqN=}5MNV5Vx6e=D{$PNB*xpJ%=VR)m0_8*ssJFL za!nUmx$JFB5c2u*XBprykw_dW^We9?^-pd&t@eV;5j!Tz7bJqo{N)ov6zo(sAuBUe zCxx(Hh1E#l*II-4VmQDUui@p&T#5bxO4<;0D`m9Gx){G`=!-`0`|F5sIYtqjz%Vf} zd61f#w-Jd>y#45rC?`9cl;$mwMXXexrwBN?@ggfxOG`_|X)H2vCr8A74yJccyVZHz zJaq0E-y#;*LjQhHM#jj>N*KzltGg2HU}Usc8o#-Cpdj>ATX`DG+i53u-)&#x`)m2AQF14?1b%+_V0ke^{C4w1x!odiAiQEHyYa^@Z`mXQ4R@-b=Px3J(4G8T|5m0o z`2Yyjv4as3?j9aa6_|_TF*|OZA^w*2o$T!Fa=X<{`*oa_&*&SAm9SkH^&jmcEjd2U z$grNfK5P=(HuWZC`G~5|Q09jHj!G$_OrU!3J@WGM@Ph~c1_|^nxYh!LIbOS!h}oF~ zugJ*T93#Ja)wnV{C`dH4x^mnt`=~R3#lXOT*GSSXKrs0CghtoXS>@#-sY+K&I%RSd z4HFS|Z?S@IZf;&I|7*W#H0N-Y6|XU#Us!0UF4fx55FylA5Zn1(@1*GYS-<^NKpMX( z_tVA|`D5i4px?brg7 z_43s#-Ak9A$ju(#l}K5ILq#J50r(RLgaxby;6HG#7*kMed$OHMrOYM^8wdsl2EsVm zA3u2#IZijykTwF)%O{hw2J?b=bq01>cP=li)mrY z^;%Ik?JW_j)+ZSmtyJx8p4u@!U4ey_L5Hc2udIMj^Xa}wc;?_ZYc;pBQq`_Dm>0_I z^L&t=PG)2Y=JM|4a6{Z}iQ3q>rLq1kNj-d19cA&Zh_aRTR$Bn}b+kJ02aT4(%VQzZ zH#SBLoavdMQ?^aNWEdlQ$H(s{B=C*C2{;@Q>fj*rA}?=|Nv9kZifiz$kUMqiRLJ<~ zs8mf&O>cic!S*B<1SV=(SU?uqRkMTIK{Vt5#H8Np*%e^v)G|P%B-!GgnB=Jj=!(90b{XP z0tSK})QpyvyJAVJ73JlQ0PxzZU&0s+27;23l3+2-kJHlhkZ=@2s4+$+{ISLt1|t{; zI18lbdG%`ZDas~0v^I5L+kfdBdJ`Dn^`;V+Hl(t0a*v;UU+IDh*L&{h=;(!Y928Mh zzroF9(DcK?G@-9`t6!QyJWh)4-wfBb$4=}4xeBVXoCvp*rzb2YC&$y*H`_C|p6ufd!vQ^zjIj$TvC2;cAu3J%V$ua^eOfpHN! z@Oak7jb9AL<-U*w1?ak8nKlf~?E>x}3XE^GNM^7eD zR!Dwcb~d|T{kr>g+UDk_!K#V`5rXRM@6$%AnrBx4SDpLt^hK<>jZG@DmRa8*en`Q2~XPj5=MgY>>`gbc+Z*>$r1(MbPH9u)Jz1tl$M{hTmIH9f( zd3(q4+nO06)8bG=;g#Cox{Qiq_Zcc?)7RHGMhN|woo$X2R&Z2JFS$CX1h9$KkoFla z-2*t>)YZiUWs=GJWk6jjWo(0hvTZIm1vof3EDc9BI<8S6C?YLQ!mb{7HsteFM@J~j z9G0%;XS#A(H(3?esw3{@J2H6o~Mm! z<2XV`2U<$q9|GM66wxLf%9CgMtm$e|-6LE9``XOMzCY=22>|rA1=gGdT~MKeF8M{u zzZa1}Cq5t0f@P=-e27 zD-bj~?HwJL7L*?%(2q%^m|>r3FU0$En<{roKhebQh}DE;G0QQu(wL^}jP=#8)k%gq zm-_5cPa-Jq1r#R-Y#hGh=gXBAF9-<=b}WcvD4|4zEJgDO0uqX1q;JR| zn;^0vH33;5^gxszkrF^4APIyHd)<9I^Jd=6o4tR0_kMHEJ>~n(?{`k3gPql}!!n0K zAkZ-zYjY6 zBj6)Ny_sOVIdFg!G z>}yjK7aP1e5SOLbJP=pXCH(_GA1@$)E+sNxpnUT=6_CSelmtlaU$uuo8DN$W$TlHZ z0Hh54e`?kq^Po&kd3)^+HNT7tmN(Qhy-~V3cAZD+8+mb!Jc0Y#A@q1i{)Yy3R{Xfa zYcLF{gY^D#Fjg`$S28juc!efZ;{3|dQo1PPLdP9{3j(>IWH<%lLJ(oVo=B#u);CkP zwv4bvjzm}X+k-Y40!=FmgQqD~t|`nj_AcyL^jtCYuyEN^RTZxwvaaq^h<=M(m+@kS zt~)3EN3OGtyc?M1tercK4Gc`y@OX8&y1U%bjJQ~Zse4YEsg$&pxu1#Vh zvHe4?%vipkOX%FZ`RO$C+>TDc?0f>3Eyu4Jaeon|1q8eNRt&AKCFUC!+>tb{@M~FF z=e}1iVRBQZ0&Q_hI|Y)NA@c5$K3f^3yBMN#(jSph+?wbhg;qZ+<{KN_;RVTMAa!eC zL!GhiWY?09iRJ=m^)q6=*x(MiqGysDK1*qmNU3DMu4buTN!`>_-!k4kL*rr|cWC^j zL%inDA1a6bd+P^m4J_`KnY73$JYmN!GGH~G9NDH>p2_BP`f|g%w`kN4La|QnjgWG; zMb7*2rMWq6LU*d!UUl2ljs9kItiP=hR=o`JT(0(PM2WKzGf3y8GH#L@y)7U4B{nTB zjac>bH4^hqZHa>@8mzcX-Cp|2Bt=CjsrSDR?x3@P4Xtya~?ge@AN1uW;54FN-H1-xV7cZh7(wQul+)-h#^DpKx{KaAT zhyUa#>bW$1gSPK}%Y9z(yTviS_1P0b1wW%t_9)UX^RovG74p>E1&42qWf;fKp4FIF zJua2J0&PtMxAdm(N<5~+ckB&ZkE7sAxP6-*HDYVmlu8qw8IXpE8g6~iVrI(D6nS?= zpH11wo33v+JkonnIr#_<^LGv8G&Oej;P7t0Xl+PXIO46d?pIpoaytZv3kY1F3SFT% zi&{kVDed42-Bb3;>{v|(41E__g`l0hr8yP-@W>Mc;&?FM z&l8;#Jyou=w>({lm7$fw9F-y8F4|*{w#?B_)HN3m?iXoD{`rRl3VvXSqi1^~(&wR} zo_y}hXDyS-$*$8SA0cnmGL=qz4NAhTE2Lf*-^g<5J~%crN6&QA{2VhXGhMO)2@yoW z6_Zo3(Cez6L1akYa?rGzAK*J2doGXG_}%_ZMHD<%`MAyU+unQL69Gu)(ojRclNJ}m zrSej`sz+XLA}TI@&zHx5b)FWN67xD%`U!dY3ma44=)YzCNImmThGT~sG2`ZH=xv}(@7dn1o`YR}pX8~H1^r{X{D-Xi zKWc9})6Q6l${C^N7zI;psfg;3TZZ8m3=M0-7F=!b9vDne|7Ex))W787rIq^qy=_tK zm9oL@-90VZ4tK03bYZZpmt%b9V&B4=Wl=eq3?n+7tNrk~AxiqT9f?;Q2-Ur!@A9I^ zDwV&wI)>TbU1vp%7sCkD&6yu<@Sf*i?2IB}HrZX-7r&xL?o_m2^(h}3uJ9KT7B)z! zaMR>|;LY~dv6h_GKQS2juBHC|{@ABaCs#JEBclB(-IFcP-2Sz^+|j$|!C3k2w$|3x zX**dtIg`+tXRf8XGRbReYur}};x_o{2DmLJyv~-0S2%Cugg_vaj+eWWjdCa`D^c7r zma|uiyh-hYDa)chYj9tH4j`b>Xr-k|;{BteQHw+6BO@aKX0go^QA;(d+1J7&BCg^y zY>A@skjOT<2sh2FcoDIfz0FxY0*90rBO@#8NsBSLz1XckE-NivQdUM=8}Kkp83l+8 zZf~NjMGKjTb0_bu4I*f}{80+!d}>?h(wL#+4}nOeE7@JS%m%#qC0=Z6dmE<0j2MrO z0Pue7M?Jcjm~gyGdOIgP&nOHz)tXE+jd6e^VM>2;PSgz?c+4O6PY|b#n;95XWAq~B$mf(U6 zDz`&}3s%d%)^k74X=~_qYFKzUuCO|Ewr82PAH$pJj*pKI9HemO=U*W%ii16CQ6=x+ zUoYzWci|9=75%kexsGLbmQ@u*Xz|I;&PLB<`%kV^H{DcY^~DuJ0giLiQ~?Vp`uh4N zIBoS9FVj0M9Ay<0XzVNxSBmH6WRe!etFEe|g7-OUISepGV&2n}fF2cYUSic9QtS)J zm@=q&8Js`3U~FuBND*22h*cYAns>iX3bV7)25>2G>Gj2(?Aphh?^wZkW@$Rv*HqHa z$|M&O-iXweyvZ@cP#YR@#C>#R&YkScI_EKi0m{fl{S)97XcR3;lIzRkG&JuHi7B0I zxxdLzZ}(Nt#Ft5QcXiQc@fcM^;j8^LCw2W9XtlR@5YWVJpFj(!RH}rk9b|upm++j= z=UXdHh8Qf>E}VbS$zF*xNI4=TplbKJ8o25A_lCKQD`GGhEDVK8fEJ9$Y$uCPu0-ZW z^M{}Kha_zQ`GXbHtf!~j(-#KF=_2p~hkywq4u=y%8=qPcht_*9GZ+j2LJeIapbXKe z;y1kht6J?>G6x0*OrrQ7KYeOf4KOh=+2(U3EFL_1v^9ZM7(iBrg@pyb-(LO7#4Ew< z?UzR?ua2Q(@0Q_&R{qM1qH$3 z%pE*XD;7n4Sy@?6N;h}+fR?*Rz*!b))qnc{u+H8N&mL+W6vTn8o9gL>H>czyZ;c7< zTTyp@bMW%YfmFHA6}SAxFuSWPjXN|0h=8#%aN@t`$v(`1@ahsjHyrT{Fm{4$EbPoF I(3^3801XbXdH?_b literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..da0c78f86c0954a68c0a0510456fae4e538ce2cb GIT binary patch literal 4280 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 P-yjP!YeeN$k9+?FLxi{q literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..8c88ee5067843fe18d08aea243e3ad5028e97009 GIT binary patch literal 2778 zcma)8cT`h*5)K$?0zu^ox}fNy5gw1W)DVh5hyg+<5)gq1Qltft5)+yR4HA&5fGFVs zK3v6s^bSimh8`evR6v4&l+cUpUH0t$v*+x2_m6w;xo777X6BpuzKON8K#B;R69R!i zBB<-e)*uj1Eb#6qzzf{PbtapE2TzbS(hyYGEj14U2|Ys@U%PSt)zSpc{4@c?zp}6~ zx{w`Um(eS(5M^56`f=axuoHD=dg?AOek8h8_iVfQvrgj`47m@AGaq;)!5EJ|3o*KI z<}@n)a86t>v`PUX3_VUwdeRrb&(1R}3gb|O{RS(_*qeLA(*6C3^l$s5#!YsCyrl3c z;B=!aIv~(L!hU}VGKlR(gMK&WTme~L3O)_Gda_0k^h{s^3^IL$=LKCh)Z}?^D(C;1 z8DG{hfSpEIiGgWzM4AM+X?d%WAcsvHmJEGz)!$tPhaY&V2tL2L}f!vKKMC zvkwD$(Z%_dTGbRSUCyguVf7bPL@@=RG&c25j^KAHcLktPBo2Bx^2 zA{tX%z}GA-&ZoH(X-FDp&A^S5&sl}{l=xmsl-zMd(gr>qOU`+j`=%^NnrQti#F&Do zItTka>hA8QP$(Sd}-u3DY8+2 z+)u4}q{N+>AgwcwuVgPg{rW@=9aH<(Qk>Y{(NXa3-FvK$ogKR^PQrh(Zlt$2sTE#q z_HXwbQE8Z(np*J6=O#D)i-vXqMb7oGh}~cpmoK{;3qC$RIyyS3(n6ncRm<*%ep3y) zBPSWRYP02d`8OO;t*VNN%h}hfgdZ`(;H9=r>^RAq!k;_9{SYWYOm{bDLYHpr9+ZTdu zz6pVOry}@r1aS{#(>^-I!ebA?IM_8!gwpEV?(lF1!_APk{_zN?^li+&$j;2;MC;2(VA1;S zzM|36+_hC=PJnrvZYwueI{X#$uMm3CDsqa77Q+YMwG;L}H~7t;|Km_ zS3Y|o8G5j0pvB48`Y_^4mJt>a>FStqE+V+P=DvOnCibgC>eA)gvznBrzqG_CFcqC@ z)DnV12?UI}`Fp3@GsJ#9NasU56`I(=nwn|^=3tmmz5-vqSM95DOX2X?Q3fNu=)fze z{yb!2r$^}o-mYNKs#8n=td$V9v-SsTKK?)*7)3f<`PhV-l2*cBBqc2i1{b3wDS}(c z!HrW&0=zxkJ9qAoWx&x*xw*O94F~b?x6k=|(Ol*nclGcj_~N(->~5xqB*pz^Dx+1o zbAL(J1ek}^FGplIYy|q#^!6uN@PEwCBGYEmjxMuw#Sj94St3>R0$~LY+gw~<50*k2 zwi{}?zq+k_f4={6b`O;LwMYNZ(Z+_mzr($crlqG#e0hULqk$&8@V8S25ou+uTK?Ouibs*V>+`I=t>uMaSSmw&cXTWvL9}wrPxVE- z$#iFi{?F}b7fFhXEQ++b_~M9P@s$NP-tF&)qf&PF_MlLx|3uAYR7#ucMS&M9v5|>9=yaF9_FmxFLUto^73+WataCASXo&C+HC?~i7luP-%&+a z#YrdulOBq}K+vq6ogGrWo|>wpFikrspHA<(t5#7_;jNa5h&v+!foN)I=!I>X)3Lbf zdx*5zl9CcPeZQo;H%g8fq|DCDSc-4#Zum4#9d55qfBWX~)TA_gXASUwd_tmu$o)24 zd`BEXzggNo#|;SyA=Xa?A zB3ob=MICIg8DSI|?OyZ?ytlVEiIkZ?UszbkU@)dT5>JCww6(Q0G_dyeRW2=*nwlCi znM}V`nUPdp$)~pxL|pQwbafJLfRcr2>aL zIyjs=$0+f|21>$NA9Ou&^*e za#he=f&$YlO#$`MA7UD_kS|#XhTwb4+ zs;V^(cYzepM*T%X(J@KZt1DAI2Wg*1fBROOw0<`-^5^#Uc8*cZIw^uTo6l0wR$0a(}<|;x7-*R^iEqeG3~wSX)wkWT?tXu#4I`Pc~Xh7B#xG zsSRP#q~2mcsS1(sD1 M3SnVfXn33aPgJE|RR910 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/size/input-otp.e2e.ts-snapshots/input-otp-small-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..cb2a6a8394e6ec1e3a7f57113b5faa416ca19bd6 GIT binary patch literal 4042 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 PbRvYh9{iK)P1bW6RzU)z`*W~WXx_xJne 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 NkXCkxatrVH{{SR%J`?}| literal 0 HcmV?d00001 From a968721df007c043e08b733802cd6eec2e9c1708 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 12 May 2025 15:18:54 -0400 Subject: [PATCH 41/81] style: remove escapes --- core/src/components/input-otp/input-otp.scss | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/components/input-otp/input-otp.scss b/core/src/components/input-otp/input-otp.scss index c24e6ce1340..5dd53f4109a 100644 --- a/core/src/components/input-otp/input-otp.scss +++ b/core/src/components/input-otp/input-otp.scss @@ -278,7 +278,7 @@ // and the solid border should match when focused :host(.input-otp-fill-outline.ion-color) .native-input, :host(.input-otp-fill-solid.ion-color) .native-input:focus { - border-color: #{current-color(base, 0.6)}; + border-color: current-color(base, 0.6); } // Invalid @@ -286,7 +286,7 @@ :host(.input-otp-fill-solid.ion-color.ion-invalid) .native-input, :host(.input-otp-fill-outline.ion-color.has-focus.ion-invalid) .native-input, :host(.input-otp-fill-solid.ion-color.has-focus.ion-invalid) .native-input { - border-color: #{ion-color(danger, base)}; + border-color: ion-color(danger, base); } // Valid @@ -294,10 +294,10 @@ :host(.input-otp-fill-solid.ion-color.ion-valid) .native-input, :host(.input-otp-fill-outline.ion-color.has-focus.ion-valid) .native-input, :host(.input-otp-fill-solid.ion-color.has-focus.ion-valid) .native-input { - border-color: #{ion-color(success, base)}; + border-color: ion-color(success, base); } // Outline & Disabled :host(.input-otp-fill-outline.input-otp-disabled.ion-color) .native-input { - border-color: #{current-color(base, 0.3)}; + border-color: current-color(base, 0.3); } From b47fa984d72b70cc819b52441733f6de0b873f62 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 12 May 2025 15:26:54 -0400 Subject: [PATCH 42/81] feat(input-otp): support autocapitalize --- core/api.txt | 1 + core/src/components.d.ts | 8 ++++++++ core/src/components/input-otp/input-otp.tsx | 8 ++++++++ core/src/components/input-otp/test/basic/index.html | 2 +- packages/angular/src/directives/proxies.ts | 4 ++-- packages/angular/standalone/src/directives/proxies.ts | 4 ++-- packages/vue/src/proxies.ts | 1 + 7 files changed, 23 insertions(+), 5 deletions(-) diff --git a/core/api.txt b/core/api.txt index 5a5eb57d3c5..8425e926e6d 100644 --- a/core/api.txt +++ b/core/api.txt @@ -781,6 +781,7 @@ ion-input,css-prop,--placeholder-opacity,ios ion-input,css-prop,--placeholder-opacity,md ion-input-otp,scoped +ion-input-otp,prop,autocapitalize,string,'off',false,false ion-input-otp,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record | undefined,undefined,false,true ion-input-otp,prop,disabled,boolean,false,false,true ion-input-otp,prop,fill,"outline" | "solid" | undefined,'outline',false,false diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 6cc6d202e4f..93c66544244 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1322,6 +1322,10 @@ export namespace Components { "value"?: string | number | null; } interface IonInputOtp { + /** + * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. + */ + "autocapitalize": string; /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). */ @@ -6266,6 +6270,10 @@ declare namespace LocalJSX { "value"?: string | number | null; } interface IonInputOtp { + /** + * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. + */ + "autocapitalize"?: string; /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). */ diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index b97702e5228..ae4892e2a89 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -44,6 +44,12 @@ export class InputOTP implements ComponentInterface { @State() private inputValues: string[] = []; @State() hasFocus = false; + /** + * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. + * Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. + */ + @Prop() autocapitalize = 'off'; + /** * The color to use from your application's color palette. * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. @@ -693,6 +699,7 @@ export class InputOTP implements ComponentInterface { render() { const { + autocapitalize, color, disabled, fill, @@ -732,6 +739,7 @@ export class InputOTP implements ComponentInterface { id={`${inputId}-${index}`} aria-label={`Input ${index + 1} of ${length}`} type="text" + autoCapitalize={autocapitalize} inputmode={inputmode} maxLength={1} pattern={pattern || (type === 'number' ? '[0-9]' : '[a-zA-Z0-9]')} diff --git a/core/src/components/input-otp/test/basic/index.html b/core/src/components/input-otp/test/basic/index.html index 70a4f165985..71e31de7aff 100644 --- a/core/src/components/input-otp/test/basic/index.html +++ b/core/src/components/input-otp/test/basic/index.html @@ -60,7 +60,7 @@

    Types

    Custom Pattern: a-f and A-F - + Custom Pattern: D-L

    0}Ei~2JeJREuw$3JrH-~Rl3_VtG= zm(Sy@`}+3ojt@=Wk8I5OpzJuuobSRH^Lc+|+NbX=1s)sMbMDRE-QwTZ#Pq7qyU~%{ zXD4;I`G7=B=+s?$0deo-q}cgn9FmiT4~2i$-}6HWcvxUhc>LW~;6CISshZ_et^r%> z6AQ5(esR~~e9p}#-`Qr1_wBQ*2+DUW{$LhRUA;Tl{O8Y~EB&j)+3VR@?<l=##)i{YcF!{S`!5C56xoxG%6%yO&}c+m=jr>mdKI;Vst0Ol-rfB*mh literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..96b2b4f77be4cf865332f685a60e032e5e76b200 GIT binary patch literal 12556 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..2d084da822d4aebd9f02d2141fa899abd90297b3 GIT binary patch literal 13769 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..773e0272fe716168d445002f2083625df466a42c GIT binary patch literal 26349 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0a52d6bf6bb028607a2e69ba3658a42cad050511 GIT binary patch literal 16180 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-readonly-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-readonly-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..2dd1f5191ff108510a9a89a5641eb84bd8152fb9 GIT binary patch literal 13176 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-readonly-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-readonly-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..42b2eebae0aea398e484abf61b0a260b03685d4f GIT binary patch literal 16064 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-readonly-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-readonly-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5222149c64715d400f9e5cc9338e2840a0e3367a GIT binary patch literal 25357 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-readonly-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-outline-readonly-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..79e57fba2bfd09c45580853794f69fc653f0ea76 GIT binary patch literal 16394 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-disabled-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-disabled-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0ce562c8ad20e4503045e9cd579d92b622f6839b GIT binary patch literal 19414 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 EFHgWx!T>zFBPBTHGc_n_1aCZyq1CQa7C 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..97b9a451b0d7726ea32c9de64fcb0ebca29f0cba GIT binary patch literal 18765 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 AZ2$lO literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..6bf737d31cf5b3929c6879a6333c049bad04407f GIT binary patch literal 11196 zcmeI2dr(t%7RN6d7qo&9kszf!6G#@z20I=+l#@`^zfvfq((3e{5&K(4x;i2I;v_QlX zKrapGldKVV1OQ9`km%x-cw9c<8IQUFB3!C7=A4D! zkZ6WaS444!A3w>>vlB89>go}_r{^_MRcrjDV+o=L3rmNwnQa#4S6>lDccXR<@16J!tlL zUsqM$2v3(;NS>Pmv;!)1K*(a$#~V2e8z z_nl;a?8;;pp+2D_F|NH{Q97!7hQ!1dp-41jIWPJ_IfK%B@O*!Xbd!w4@k8-2xjBJ4`4-w<}&k!Njf5lhRZ$ZeeL zVtl2=%Utg0RoEwmr}#pFMLe zEiILejBF5nEXU1g7lHwtr>=ZqmMcT7%>MsngO=P~?YIk*_zL9jJQ~o0b+to>#F?*=F@^s~-%9?MmzuJ6s4T{C9Ubura~@cLuq8v3(E*|qoI7!)cS zJU%!n|22B`t(%rF#o^XUf;#0C;+hW?N+0Na>mm*{??$oY+nLV@AP=2u7Vdvu8uqb# zuNd9vAb#(}-@OvM?v7kuoxQ#H^Plxd^tyV&Z%K9Ex%7Z?W(E^lZoq!sJjUwz!Zui` z_M!5j5sR)z`7Emk$5$w#1fz{lr|d&<2IN6K*Fj}5>Oc*8wYbS0@`(n`O1g+D4?V;o zgo{alzR%?zGiz4frA<+Nv|p7aZ2ccA%YP(4f6YUE?rUfyMrl_Fj*FvWBsN`5?h_-b zcI$S9TN@KKgzwNY`EB=!f)^cF9`yb{e2FdT3JmHVXH^pEXu9r$=iAauqvj#Cq9Z@r z|5@-W%kHVu%tkl;tXd}&D;Scu_b~J(G$>Q4`lt0fI04uKa?RCF%SMKb6UigyWZkOH z?}TLKXH$)3p|%y@8JCITO{@a`ep29A0FXCN>d z*#UAxDvCw3rq&0m(Kt!deZg+3VJFAakt=1&IFK*|MH_~vRV50tZUt1UN~Do85*<2r zP4!p>a(!w+B1A*d`{8?~C)yuqzAv2I^Axc?9^#;+C`M z2uwA&UV1@Li=&o4e zg&dJMkNfEMOab@sk-`4{tY4Q)x6LJF)$tY2ok6?rr>1s!czTY0|NU2xbG$WilDD zxuxaxSnP7!8njhHbhPOSj~(#|2~p8DN6%SR#a#!l?Cv@#B7#qwT2`v-pJjL*f=ah?3@ZEfpxif3lxZj}Ii zcQ&r{t{YOgo$W22ml@f(&xBav^qVFuklF52#K?6<+1vOl}mpQU9ci&JM6 zm$mvH;)H#ScdF1wxHRz1Sp&{YT^BG!msC8i6Vvr6{&$0nRhbzOl9XTfvb~CZ$Carn zMv>^q^6SmHkYI3Lcrshx80OopV`F2_biVYwxy33uqfj(!W_|D^nnJ7ZgVLu0I^QnZ zA--|NQb!qQGmi+K!Zyv;CSBaqo62!les@^(D94Rc_JzHX9-{U)hy zuZD2M-`^kNlFM^Z>`KcAL9rIbMP`cUkW^KpgRsJj8 z42Cfn#$XsLhhgkbRKniHIvB>_${1W3%M-zsF}N}YSH|GV7+e{HD`S7yOneui{!Cl) zT~9EK!7%p!2V-JW%Q*me&*#@!0Jvodw=CZo(12T(aLW>IS&HG7CET)v=f~jrF?fCq go*(;fXE7Fx@5g}q9*O)vfF^JOkmNyZAnech1w@el5&!@I literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..7ee39197e12ef796fab7533c91687034eb0eefa7 GIT binary patch literal 10858 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 T4qt$`J3&w;md53VZa4l5r*}Eh literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd799270e76196a1f3540b45054d9ed2f872c98 GIT binary patch literal 13296 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 MnphcA4NqMDKel6tGynhq literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-readonly-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-readonly-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..67283e5e2cc85aca8a899170559c24b0918c643d GIT binary patch literal 11674 zcmeI2c{J4R-^VFsjfyO(D6+L!8~eB^YnIzm3K7a~?E9dS+_qGR+YIikxBP}Q*>^(H z*e1&~23Z?BV_%V;EkLll*;zru&@yY z=Q5w}Jgu&P_2pwvzE(};{3>9O-4P+FL^6}cJ5Uy=3#LDP`ZPu0O+%0Ay{EE{_& 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-readonly-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-readonly-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..bd7435bd5bffeeeb05d21c5de0a5eed2548dba83 GIT binary patch literal 20490 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 YIx1IjWMLe>@kfMER97gKyZz{Y0WU1IN&o-= literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-readonly-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/color/input-otp.e2e.ts-snapshots/input-otp-color-solid-readonly-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b7b36dc397d5fb7f09c8070cfe21452b3bd60143 GIT binary patch literal 14700 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac3a1c4023f0ced530b47667bce142d9bde410b GIT binary patch literal 4040 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..27f5772abf3f7161c18acd5ea0e921d6f6040c35 GIT binary patch literal 2948 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..55871f013c32da833e74cb08d5be64a8ebf8cdcb GIT binary patch literal 2792 zcmb_edo+|=8-GcNP9ZYNC6}ZcmxCI))*vRwgbXIeko#>S*GY_u(eNRuk;b@H<8(Qu zM$9pzoQ@-$!BjrCN)uBUX2yNU^?U1E>#Y9$*827z@80jT_kQ+z*6;T`zlY?3boohP zj{*PyKOtP5yZ}Io1g=BnrNQr-ivPDsD$&aY4%GE%3IIT%2H|wVJFQ$a>>k@YwncVk zpb{a?rVvhKMZzPBeKYIBIF0+^X{A=Lhmg%^?F5??0qSTXf{I zWg_3nUX6?Oc#6BS&t5?bD{`v7cijpp9Nf@Z!}?a`T)Mg3mYK;kJRj)b{hlkZQlf+5u&*T&l~H05=*>ek0pQ8wml5#~!A1n{VH>BiF55t_<7F`L^vO zuUn*T#~7FldtXyGMT7@fIB)Cpa zSI!(V95$N-+h2kx%u}F0+`COfa5o|#QG4O|bTLo=T;5hMH5lt*QG>S#_x?DJ$z6G#afbaoj$0%}Tq-MoS^cd$}Hc z&kyQ@LM=|bx$Cg8+$wrFg3VU*GYh-C4dTVEAjn5OveQn_*2)pS}@50s3X!oC1eoZDV81x#K{1 z!H+PMPBXrQ99QF3*zJWt_GOn_Cr3}b0!O6fWTZ(}aW&x`_urP=_*_-@Dfsy{+FQ)!hCEP*x}Y>t>wOnAh(%^{Z)2iqLJ?pZq0uyG@qX z7zkZt9am`oQDg|eW`HQfTA~J$5jW;^in`in;oo_-Ra&aoQmgr6b1;M$EF*pSM-D2( z;ng07B?-|}L$OCScc`xzg__(<{Z4AqI37*bLO+kFM90U`3OB-pL)=QcQI+gA}}13~w5QdU=o(0qdCsX?rc zxy6i_I&Ymj1pi1BkI4bf9+log6=QYcX=y#R$~Mb z|9o6r26)BKU7O?-m@q9KX45fjGS?NrwHIn3BeEC_=+w+et3MNmc^3I5qB5hO$J-oE zuu9*{gApkp@|2e9jzgs`yvx=yG*MRk+E__KfieF{y^eYG~nG3CE1*bBpzKYYl< z4ST76d3)cjm*ySa zX0y3en|6jUd)qEyfn;I9kG#k)a-j7JCMPGKJ})$BR{IuGYHyy}VFQF-cJr#3y($sK z;BdQTf|ta@U=X`xf~P+|KXT+qv1_R4T|;N67pkwYun<2#w)N^us!eLeu|z{9c}?r2 zj=#!-Dm{5`#SzqEg;O9PrZjQLGu1wMK71$?1C#X4!6b9crhqW9~Wo4vKCb7^YM2?KQ)D8~f*;?n$Bw_B+RrXjj7M^W8= zW#TT8NUSafEv(G-i!Ls59L6JGdLTO`?#!8zb=n~41z$m@(>FI(r+w=J1RpG9dXB^J z)VisrfS&RBSPY~_aBXVd+)Tv`m^flk>y$bnObB+ z(G%L~O8bnJ1)Egy@_J?qZ}ZP*w%mHCn>^{{U0Rf6Y3aR7is^(%RM2)#(h+3lhe9QT zXwCB5S1;LDjBnG;Y$3$QKM6Q3>mf7zIhnA&H~@NftiH~huC$Eua&ybiu;I?za+wVc zcHk?*p?Y5Cs%T|#YCqy_^7E>%iB08oQ}&hT|4P65vMLzj=m09<+swW3JHgtD5hSgE zs*x@cqM0}?4kK}_OE5J>vBh5q2??>>b7VW8$;*t1iBXijdf4Z2WOVeTSd5E|oDhqB zRCAQ(=D7|`CbQ^hQ;m_Nod9YN3WWk&1*Ja|J}CA{Udri!w5Pz%tH3i?1P6L8Bf9UP z$UN=H+~g9M-_Z3ZRol?@;ou^CmYag`}>Xk8=dru*{Rc+8(+tD2y3%nIHj=I z!F_pp+<9!qA}TB_%*~Ah=1=R08Ha(rG}{)*F)HMzh(8?UT)<*^W8DxV**A&JN5P$1}=sF|P%S!5HU_&ddsu zSaiDS?)(w9w3*D5VH(oexlPdprKYCVnom;FZN01(bdr#g7hmHz-DA8QN% literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..01d70bd9dd2523dc7fe56ac52a922a3ccf23ca22 GIT binary patch literal 3929 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-disabled-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..cbf23ee622aa7389be27898b999dc8239524ab8e GIT binary patch literal 3184 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 B)xiJ& literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4184768d040a633544c1d6e5eb2274232cd07b27 GIT binary patch literal 2911 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5a8af327847e4f8de502dc7c31f07873d1d550e0 GIT binary patch literal 4542 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..edc29022ba2b4fbb82c7a81543286ddda268bb4b GIT binary patch literal 2868 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 G0sjN1+CSR> literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-readonly-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-readonly-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0d23ddd6153765f2f67eb731c6290f6596af876a GIT binary patch literal 3139 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-readonly-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-readonly-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a01f22bacb29167a8ae3c76ff7af0c492f7f3153 GIT binary patch literal 2941 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-readonly-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-outline-readonly-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..bce64d8f746b3f062a6135b29054b750f8221d8c GIT binary patch literal 3411 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 SO)CHkBM3_06!}iik?=p8`Dwxc literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..7f731c481d7831678802bba2d9abe7c6c6443633 GIT binary patch literal 2647 zcmbVOdpwhEA0LT1gfcZf&I#41gpnyZrm-Az=23Hw#w27BvbLmnvn=LNnOcwJ^udP8 zIa|mgGxH>wNzP{v?Y-;sd_K?n=lj0*ANPITzx%%K`+NO<-|zQ#5u8wVyQKC@fk2>L z_GhhKKp+tUFh+w#f%DcLpPv^Itc#r`=w*-c6bK}>+ur(&TYSL`&)z{H03<#SXP3B! z9`cqV{uZui4{1MmTNUxF4QeWQ7wY@iHZ4Q!fU3Ftc+C9o7af)_I>-g7BI3FgG{P(b{d9G5r~%YzMC7&OCqqytV3WfW`@fd>Q(b#D~zD z>S|Z_f$SlZ&S>S%(y}t?77WTGdqbz|vaEnQM`tjsO8RuacSY5iQF;P75CfseI9YgA zKo!>3)iJ9O;SA)tb1@8_WRw_LNaV1zQ=&A}?^gu8K1?*|Hd7SSIB?*=>_E1utxT}7 z#E6xJ=*>5R*Xv-7Dwu@m&GkVW{!k@}W9T`jZR2b^d9tNg%bqxn79rz_6jpFcBK&G> zEcE&XE{9|K(fz)uY$n=Rfyy`}56}z<5X9kdwsz}9)UfQcTBPi*0x&kjSS?mT@uEx` zOVS`ZcqyD$;vl&=bL# zAG|W&%&na#8w9cPjvMFe>FAVIR8%k+T!9lPt+nxxY8(UiHg)Hwt3arMB*CVHSQF*J zqQKx#&6Gb|kSA1yn+f-6w4(vdu_r0(QF6tDueXzBzASwkIO0WGT3pPO6`l7HX!8x> z@N02#{E3N!2M;Pyc7CqwbG*EXZ>=B*U5ol+uZ~vfDsasn~5QRRu zPc2G|n=27sq@q)};n!MbX4i*n!ZI>Mq000_8Ye<}3{SSm%QWIaDKRExJ3#wO@j)pZxyjrB&`= zvLaYa%YOeY70%4+7`=nQN`4d1PgeOQ%a3zw_ePG7C5%qQ?3xP`H4sXX9YH+9+ZO8b zQnxbJy5G9)d1W6L1ANNM|%)39!8{2Ewa3wv)5| zXxpE!0R}X0s`7uD&wuM$KKlNRo?btXgze3h&CSj1Asaip&ea+2r48!4Av@7D7~q|@ zAt@iQ>+@rh3fh2m74=@5=*}G;9u8uX7Pc_WHeTfy@U6!q24Pv_;wqT$LzPatUl-zk zoZRD?5p|I{!F&KWx1v3)YxLt!$RSOyOmm?i(%s*fI5J$=L1)wTLEr^-pUCRzA{&*v{MFHf<{ z?mYJN_NL$1PQ)ePaOS;By+x;AU!A_-?412+y1cyH-QCF4)YQz(N6j8=8uPUa08oIM zq?lbRL?l!tZN%VK&KI3BrS#Bfw7=Hoeu5Q@OFXeVb`k^)G%2k zVEY_dWs~Bg9_}kklf3|33L;@KOT}z)X-QgIdY_)Ro4fnOLVQP-3KCq&xr~=p(M%Uh zJL3#lxwuIf2-kzbw9@Ah0ZvYU{~Cs7uFd^Yu8R@p2oU3Jjg>@6tRA5w(PjQZnj0AYZ!2Pv4SneaK z(a_M~=jW%O?T`n*;*UaQeVSIZsRZ%_hzQGPab5+s5*3eZ-4K4~RC9-i{Tt)YfEN;* z^5IuhV|weQmbZyFB@sjx!|4OJ7fK8^HR=D1zTZL4v)S5?27$Zr>0B zkX8bX^CSOk#sR|on&9s~u(%ilNd2kg{ye#|uty)1QZ(=0y$ftq6m(GE1Nu1}B^mKD z2eJVsuXi%vFs#1_t|%j37s-uV_|jfjsA_o@kW;|gXn+4AJ1fO25B^qenR$LkgRed= z%BU~kPFS(0w>|!1>W#dg?uXG+2HJF#=-+)uC^CKaNtCzy@Ka!e2C}z7S--UWJ@wy@ CBmo@& literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a119f1fc3fef5df6ec53e5139bc1956a1c861b65 GIT binary patch literal 3875 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..df9a223dfbe724998b4f405f07c4ee1cccd1b981 GIT binary patch literal 2898 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 Xj~u$RKV21^LLr2q#ie5Xt9Sna%UGQ` literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..6c7fd49e9e26f722350461702fda4cd4ccdd2716 GIT binary patch literal 2642 zcmbtWdpy&7A0NkIX-TE^8xu1Ta)FZc4a14YBl3Z@~Mr9-=xd%XLm zt|3Z9iJ~cW)NLQWdJ{SHXSQJQ!h-qgF85M!Fj92mcoeooqO@8L1fty{h=D*mQg{W> z6EIfHTL%QU0q$-6j(NV1aeONhK+vJUDtffQ$IH- zEBMrBDY$k+2>3rMnP{cqN{>xYA`x#eY1eU|p|ap~yL*ald0kV{7UeT=CAdInfh34qtga&v z2#O9aoH0`GJd?@P(X*WwypF{FV1tmeb52NTs;SXW@pcXO@$u<2a+){0TEbC|mJ$*d zO?x1i(@uwF%S(zXBp-#-bDNkMzb7Le)RdOafID;m@e>W?95aXxx}AF|FoO=_q(z=TSeibGR7l6)fghvvB#+W z9;4CP54(R9PJLT}+}_$U^m}5ndgLkqd3B`$uUxvfpWm(4--R2VOy2#K>RDlW z;>4T!FLi+_6qsvlY{TmdBt%qDczAelaK+mNmZjpW-+)BTy3ytM)~_kVh=_+1=xKSd z$XQgmX=EuZ+msyHnJ!*oeQj_rwclO*^8(*(aXqof@SMd)7)&vyIj{vPyrb}FDRFjt zH<>_?kdXKwEqv@SULhePBO|DtfI52?)4=)A_dOP@=#aFtSY|^qkbx)R!-%2CWBo$!(WYW5#5XV1i=Ne1G_1?VtPHDa05rWf>t8BU% zQEN)#25aG(0wzHkxflPIUg9dWf%9kv*TBV5@l3(sEoSIzPptM-JCJNx ze5!aE4XYBLdS`TDbi6b5PCAx;q?Dzk7$Aq^SM9{v8~N zt>^Qt9hudmmd4CT#iZ599eS9ILzhk_mx7-WhAeol|R-PPzX6{(~%*x-`9~Bzc=} zUhY9rtkamyosXGNO@1_W3p@B@n(akD*n zWJFYTRaH5XX#ITE+uNHpG6Hq+3JD28p->JE4i_&jOtdEl`1|X)v?Q({s%m`kVrRaW zY!uY?#P0}z#FTv0)Qi;!KsPlpF;ly}?|@-R?|e9`IxaqbWN4@@X_JP5508!lCOSc`Sya!6hzOwIN9YE?9XB>NGcz+~)XZ%3ftpfaiiC~X zH@n-bp8vGc2j6(R&>Fw;uJl9%Wnl51edZ&d2u)dKl2879pnz=33mmuQ{rmUNB1UoJ zFV+Vtoft(&4Gat*DjYU@XJd}>?w$V`MMUJgM&KZHPZf1bXRBM_Z+QWv5ddzbAf}5= zH*F3sLMI#!$vK=kvY%0)=P4>CCZl2H3|3K7<1H^6z+irDiC0mm;qEL2-&%hZFkygc z8}`RtwnW7Hp$FbnkI1N~CjVNWhaaio`c)K|yj@#Rl!@vJpMSfSmomuVp#A)mAxkmM z_4V}=FRzjF@nvTqOVT~>l*GgEOsD1E2B{BwG6iO9nAXCZ;3+Lin#kHUXOVrC`@Cy1KghpZKY9?5OD>Kq$H{hxPS2fDAfs?i1HCH#Y~qoV>+*)7QseTx0{@oULR~ zT3Q;va+&Abn@1ffPerTj^A@O{f^8*>)F{^=ll;} zcTU5GfL{aiGvdedB3tA?#Z1X7R8(OvcK2loSW7x{X17J<7g#pXG02}5KN5)Q;Z0*i zb@8&Ub*M5CfHXHZN1$FOLPqew*2Vj4|Dp&$Ypz6UTjf(Wuq1+996U}wwmX00UrN3F A0{{R3 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..068d8eb6fbaa86b208a34de8c8c729b76ec334ff GIT binary patch literal 3716 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 LV5(oG=NSDzLH_BG literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-disabled-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..d99a39479a81137cd3bf146094dcf3e93ac5c019 GIT binary patch literal 3202 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..8be3fc556be950b6238d99f26b9bb836cf827b34 GIT binary patch literal 2591 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 F{{S{;4#xlh literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..76fc6068db25be3846540e1b62bdc1907373c3d0 GIT binary patch literal 2823 zcmb7G2T)V#7QU!}Qr`*)B7#x_!m_kg=~6dHPY5D}5FZ{C}IGjHCzbLW=1=iKxE=ljlgPQ0bLF*k=W2LJ%v z&|eI!0e~eIe0Dp_23{YBrjLR*7JqAFJ)n{zvJAeQ@z;aG&w@wTS+^$uz)=G=xCO_) zT$}VYy%ZzXz1dekqUUl2Vw8UK)( z&X)Ap&Quk{OYqTFGnmsYvM0D(vET0c$>115nk7G!`oYBBBUF17cO2-SNpuJu*@)1} zk68)VG43f2YPN2#mA?%Dhq%5q766#iQvv{Q2pbT^-3b8Ic|rj2GyiFzEfxg;qn2C% za4CTWaMu4XM$a+4)kBi!&vni{=#Atul1sz82qlutdTMFgS?k!GzGCN}AXG+I6`_fS zgeWc|<+!w8$y`U(JYQH?_&bTBdnNb%`}Z#^{Y8W8a82Y330He2umDm%ofopTAR0WY zns7C-sJM7Ot=CH^mY`ry7!F7t(W1qqLSp5s-n9OW-`&LqR-(rkk$o!UzuR(xokC`&G$_)ZiCSM5CDp*rXOVI`bq zSOj5Xze6Z=Q(oQ?;v|?#tAr2?rw(-;-4alKy5cE*p}+p-uB;Kf%^sX`F5w-^x3K#k zX~=R~uNcix8g!-2VRoC~a`iLrB9EBq4VcMN5=p({ZoP^9YmChek-$)SXK22V zrkrq6DUqnZwzj4o^!4Svd-oC?i_oi@CI5_Tv> z!k8b|T_3uOu|Xh6TIL8db8}BD_KspR1Fx5tT={lE*k`o*R_N~6`RemCr>JWze(2ub z-n*?4&Eu{#gW%w|At52&BS%NO)1+;RhI__@;UfoE+&dy+YjKS7@uSB`B{F0_&313p zsEw8Xw5B@-WA58})Ig`x86A8UZ?t%-C9SwNeuK*u?oLNKMYK9qwH~X7az@?05yjcJ zw>O6q;EAgbKL}(!#qzqFg&?26l3fk1HvHshH)Oqemp|TMP)yJ1?%h8)`*ojgK8aqD zmX`iKc>5l7Fx@Evec5rZIW8-pd}2ugNDEh?^8zV{liO50&P;bq*w|Lc!{>;Y z7JbuBFxVg0ff&gW3i1nqF4bGU!#+T;vpa zq;_8gjzG|Bxn%_P;`PK`@l9rLNfx(EiwY3Z;m`Htn{fx{^ z>gAw`JP<7C;KoKZqWn%?O^uR(py0}9uPPfWs}xDJr>9A3YHI1LSN$_Hxh5tia2QOY z{U^r3daGAhn8PDo-TC=>(ptkf91eHOloH|bdiW6D+1XiIQDN2>x$yC#06#xOIEl_! zrk0kL4su_gNN!HzkWY>rZ}1tP5IvP#FdcDVwn)i>xw^XUlhUr)(m^pPEiZ=~8pfDs zYnJTn1R{eb1NJw&#R67Gm9#e6PU8#04|bNxDH3uD3d1eo2mD-YHa0eeemBamPlv%` zT|7`Iy~e<`!3;GoxV3fu)2BSlogF$(=eU1szDG?+zFmQD=k52bYOHVIrZFTbT@sYcBjcTED zR6wDaS0Eb^Md;GTMtgQ1k^Z)}sG_1G#s`_4S9y82z|2&72hE^XmD;v3%}hj=Rw$wj zQ87r#(x^vMr6(f}*1&F9QBff*DvB^OON!W=W%n7YH3WB2CmKxq0c3>8$P!(~!gI!%nj?Y?5)s=T~+fd}>V_36l6t=$QtB}5XcYz6~OzpoEb=@2~T4t8Qn zwpQkktWeUy*T&)L>6{h^Tif(wQfaA)goK1`ja1Y`uFwoxMMZ_azCPmLrzJyGo!>oR zf*US&l1P4bOnUp)j+>iXSXg*)#3`~ORmOteDd+?TxeE%M$I*btP~goAi6yzYGYLJ< zi%Q&-!Be(%S`i8sXT$uDVG82Zu_*7^a!IVUT-x9ZmHR_eQs4ZwY)f_5->$b7AEhZ2Mj1po}QWDrUz<=P~?LLDgOKNPa z@_gFT(!#K_;^X5}k2ri&S_WoEF-qs;aNFtoTGYHgEp5!U<0VB%} z1}w%}BU^byH6c*aa#1E@qn&pJq`yUEJCa``N(@r3+{b=F{=f0kcQ36(Yh@R$s5y+yds@ zV!h>{va73W=<{b!dkh%hbB${pNV@N>7!;h)_2!^~adt8*IJot!U5$z%?e%|*$sh38 z4|v2Wb^ctTwJdA&yRy68AoY1fZsgiJh1=BC)hU}%1J8Om%B7KL%x!u)Q?)PC(Wbe$M dgJ5PP(8VE3wSUIA4i2*b)X?0ZQqTGEKLCbTdNcq4 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..7768dfb1d9e2655281446b1fbc7e3973f3e9aa60 GIT binary patch literal 2602 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 D>DCFV literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..1d73fdc57abc088db78590e2d964eb7435c3dd5c GIT binary patch literal 3645 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..8175f86e5cc7ab2e6d2ca54fc70d9af85cd0479d GIT binary patch literal 3072 zcmb7`c|4T+9>*V963TEiIZbvI5~hT*Br~WvS&ua{c1|2?)`={|td?|+C5a41hBHiM z=a6ZPTZE*s4nwq9i)@4L)9JqM`Rl&!z0V)d@_K!Kzwh(=F7NM`Xlre`U+l0L008?h zT}0XgfB+7B_Z1ZZ?>FOehrowGguSI1K!17U1Nb2nVRp$u6uja^eF*>{PP>G>;1FA| zFpde5aTFApT<@NEh0(Br+x5#;;ENWl55g350kT2_*6@(_2wl zSph02CAC>2OCWUN|C{vWynt$Y@Mw*uIDO6xMSPHO03j-%B;??jN)70Ha|QG=2}C5>h#${W3{aYGyhvkO36!yL+(HswT>+E*k=cOO_e71~J2(+_Zw zaP-eVc6k7)k$rQnNyqB(u@`3~1kFT4hnwge-$roXL5LH#)En+#XHtZR>>*KJ2MKN& zGId&78zawQ2L0fn3vg{mK^qh2U)Q=+;LhWvKG+LMcC9yyj(0(CenRNy!_4{Usq@fBx{V2bQ;zaJPI*ue^f;(%EXqWV%60& zaY+}|?KGjS*rA7a?9ChpN#(+K@;JIZ$Qi3w{GSpEP-0!HtGd85|K765#)*Qn5zn{c zX4Ca%%TUV%CB+;+R$!(%%C+C3x23=Cu1wnnmE89qHunz>rYoM^v4xp45xo+i11C@+S=+RnXZ-<+Zc$% zB<_6ik}USm(ZY}l3*{$*eSCaeT4KX5swkuMw`Xd$e0L)PeACc{r{0Zba~VTv-wO39{yP4`_iy%)Hub>k@bM z<@0i%vz*~TK9%*^nT_V8QhRnEWc@o~e%DjQaG3JX(>^pEV25jLO?q=}Aq}Q?slB>OjxbZFL;iW&t0*~YfO0k}d*?_u4AcEnwl`d;^a*>) zz`At(NeU$F$X=Y6L;QWi6${A~dx(pKz$pnqd(_o@=s&U@M0q_=MHt6r@hxQ^QcK@j zjqqWhCL>T4NQ>gC`oJCT`niG#xt?(i`Or5}7YtG>-%40Vd&LRi zg8hxevQ=SuOHl)^$D!>}4RlzSJ7?HK{#eR#Ax9^zPmAZ{K6}zxX64v^a&aeExqhzP z=kl*#c#P!9m?zWcvNk1cL37uTXF~12^S6A3_&-qi{{Z%XmS#fN0K#sFxAz`7IXNK7 zK_it)J*MgUNXU#p)8-5>P zMD4b1=|h-EDG6q~rNWJr`-U+c;RQ5pH%`>mk+vo6+WPwG@}h)2fT$7(&ProlO1>A| zR&|iWDXFbJSU-_q=pM@x&Z82m+jd8qzpj25ct1an^zbOE)&cu~jg2H&@t@cViLv#~ zbTR^eptz(&ke#Wp9m}J4 za+NR1mJUi_|FX69RP)lGOju}(fcnv((ax3L^O-7^ z8J_X+M{G70zj_`UlWJJ*?M?ne)<$%<=%QYpITf|u@5Bhty{MYuCJ;^FN_GA+x3C$9&e7B z?u3O30Y;y@R6uxsI-A=ZGJX!7usPGP&W&SuF-5kw=BgX!=*^&$Qs2CB(miuVDfb07 z^XuljqJ9ns4~7_)Pvzyfg*+|EG$G~WK!Ns~!s0dHO2E{lh|Oc-dz*tOH8rwoP_fiK zA3uHs0KB9^XT{Iu%RTxN0AO8cL}W1FXzWaO!$RF?-VHq8lJE{gBl{{!MW$gQaUfSI7XS1G<`+CYj^b1??TF;=TM09?uIMGakjol5jW? zbo8*Ftel*17<60;l0M|0071b$K|@~>gi2&h-*KaoK!?}%o7vO*M*FeE+4z)_aet@^Ye_X zynH9coE$dUE>LhTN(|^59|y;-x}K|>Z98kQq|?VU_e+ zF@4+K`yY3XHt=w;u!ULm^0x$f8ZfvXW( zxy*=OWBrn!Jc$&ui|T$uw-hxj87?VvP25KO^V2gkZD-%|w^lp$V-1k35ev*pH+^PC$bN_T^d z|D%GoL%qW(5WkaTHL->hh)8)!lMTi5W9nJoo2${^!|(Q9>0kJ}S<1W(aEb>mnOh_2 IW}Y|y31e>4xc~qF literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-readonly-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-readonly-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0c1edcc392d12c2da5cdbc082911e1b0b93512a9 GIT binary patch literal 2675 zcmb_eXH-+$5h=tsM14~5}I1j6_gJ5_}+T&-oJ0HcYf@%&+OT==gfTH?744zMPF28zX$*T zqBsMrDF6uE2j>LHHgH^*u>SQDAe!o9fYNsO1OSLAKU9O7f9)wPL7o`Ma0Jo8=74~0iz!)!j_nQK99^`cLBioUJn`oE@H10Wi$R*&IjpgTA3vi@)srNJbi{-TIu+vb z-`bB?JsCi#BKg9xEb^K~NC;gH7n59%)_^yOWAeeLpkR#<+kkN*bW8iOp|!SNmoCK* z%+5Zb5aCTeHa0d{vWwsRe#;<5F;^ozS4*kXwr{?oZz92+OebQ_lt{)_#5{8g?Z-wL z85wEkc)i)PS4zsM((2-uoye`<$}{`{9u|VgIZq-x21h_oKro@9p&d~DQQ&ksUd9_L z;G+%~-1>SXW;s+lmLdMdAw|Qx#Iaknn~o!Yi^S`Xr^w-SY?Ne)US(s9&Cn)@OG z_jE?ZCe;6>V_v6oz977{m=l}k0x%KSCn^Vp3!v~$aWdi6s0hfE8 z+kpLfnNdrlZJ9s#Ju;d>#(ddGUpjAXX*TCv;LP&;NKXmg%-Xux|8T?r2DP0ryOe|W zKcT3|=g|YVI=1GbcR;m+<_0_RE>?LB96}PBKUdz)s0$PxkM$JM^YEB%%S3%_ZFOpU z{M4Up``TyZ!-vEJ&x|t34%8neY@e|2^zd+F{MMHq2lH#! z0yb6{u~6+C6?u6*HWp~O3tGftW4gsL!$0m+x%VMMeolb~T`AjhoyX;+rhCgq_&v0v zM~_&-tP)iaVSVnS!HFz@wcu2)F*n}~hf5*(yV)SN%Pf^X3;!M;&!4`StN}?N zbW3*Ae|f`jB@zfvWEWSj?@y_&>IHFH5(rubOvU$n>#=4&*BF2*1EfAh4 zA%xJ@)_$lZOO)+pmO$a<1Ftp}V;KnCCjhQ+;zSXxTRmk3x{tL^yNKF&!~da%LM;tw z3|J^^Pe2#Wdad;8~#@pamsubJ|KGCOx8VKA5rML@VcTPq|rH8nx6faj@l z{CM!ltiH$9LUXdn%YEr{+vW562@pv!272F>6&l~E~P$9PjB|gTJ_d7X>Dz_vbL6#keH)XUDiRBJ$?OJT~(D$K#F5_ z3tzOf?4_IwL?V$81W1mP%F2mJN%ejcre%Qv`F}`EsU{(vq|5- zwp8Bk0Z(yP;}+;YSPv&*vG0EuKLYxjTovf-xy-VE{wLB$!rcWc9i$o zSXlUjbZ0UzQ&}>*;W~UE_i33!6POpW*sUrqc=**Ubp+(yr>B>QzP{H=EIT=zCklqP zwucae`QgSW+1}}&adB}+^poCy_z>XdH`QOqoeq%1$l*S}_9;LMeh<>TvGz#rxT2z> zmKJYzX)g@+r8bz@nXlW`)#d8yDlIL2;|Q29yX)5jR~KEQ-wrOV5s5_p2Os0f5kQexuKn3&ku+5Wmrv0*>7u8Dd4#4){s(^^^-v3CpW z3DT;zb$7ZP5>Q_K3H#3)ZcKV)kC~a8+BSq!($jnW5w2>PZBFIv2`s8ikoUgAnU(#t zuuuYXSw5}Ht*yO%X4M3P+1BJk519V5&t1i~R^4a#eZFpdYFZlQiu2&wQjn%C?fQ*l zzUuJF%C9ue(W24@!_+5gPJxyx&Z092dvgZ|2e7IJ2d}jLp|}(A;>8Opm5RgR%nC1q zV_BbjzCt}|tG>22bol-KzP>&%?_Qps*{5z|92`bKe(gl4WqPc9|Hh*Y-Z3{f$3k2^ zJgCo~r=NDXht6YHMr3yJT%+^VO?Y+jmJpqU_5oi;9Y7`s<1n46UuXr8nq8I=$e&mb7Dz zcqv^U5LbEy^Uxo1arvwOGx3wh_M7O|>?XH>1hBD^U+TFvc{2H$ oXL2mII=S^1neRKobDBDDaJnPFK=ZOegFUf literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-readonly-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-readonly-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..7e5af9de51e569f8368dcbaa8dd25f2637224602 GIT binary patch literal 3903 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 F`Y)^vk-z`| literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-readonly-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-readonly-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..26cbcb3d3c43c5237908088c751ef12d770b7078 GIT binary patch literal 2690 zcmb_edo+~m8vn><$hDblV!LlCx7{do+#+KlWN1QBgdrwuCWOc)*W7OnY9yD9kQowV zD9U9M)r6QCBG+8TG#DC}^J$;6*8cabb>2U|?_JOOzIQ$E^SeAxlASG5MCgbR001JE z=gjQ^fF}vudqQ}@=k}p1`!Akgd!!jqJ0QCN078bA=B5|Jik2C!)>qJgz-n;7g@AT5 zT5jEHvsgUw9L$@ZrHGRIh*kCIlhf@=Q929#wIDH>AFlIrWTAyzT#sDds)7_L1wg!&_G_ihRT0-0$N#J8_To{5C1j8;hOBM zIUrDNn^OlV!90et!#0B9+~p=Nmn$Z#Uko12FCehD%Vp-}<+Zl9&Jm*9%F8i#puhCdfx^vyhZnK;vLH zj@}%>@po{bK0cf9jm=&k;C-fngI>dUdvll**HEZ>??E{V3E2Nx`LW&n`pC73XYQSo zoeAKVtMcz`TJ6w{ZEeO!Qloa(M@kY22G2z2I&M$0w+4z%pM^L#`7=6V!8+KW(YdwF zfSf2JCnx`E_zfKHA`@1SlasT#6Gd?VeC{8_hh{3tctWgiM2|z!H}FmFfFr6y`=tu7P9sq;1QiP!jUhK;(V!06HnXt z`X7jS!ttL@_x-tJ2!S8%{2OGYxKGO=6y=QEt~0Z7(#E7$feahl3I|TR1{Cpr0p}~9 z-k&t7_#+%Ap5FZ=;O^SmT5cO39{SP}qdZ9|?8lJO`Y>dM?LzWisRZ6JnE=u?LQlfX zMJr#6L$b4S)pEREhrld{^ULM)0vJ+@NPwtdvRf2S(UFEtbjmpM4vj8^c08OH;hww>ns)Ln&FRhMoNFr zembBz)lz?O78wv%hKme+vD6^hj#Rt^KvWwzmDPPy4+Ot`U>xwbiHHe&1ZF zTK~|Cd;U|l8j_0(3xfQyL=AbP@P^vjl|hp|mzrJ@ktoN)Ub#Yh_bwwZ6DS`v=2|m_ zGwkb~o|4Jr%F4>t*6kt3Yrn|Lo81034IU{Q9TFC{`B$#`rRt&O5U3dp(HynYGO~D! z%n(iRaPOb#%YSHFL0z~An;EXTLe$`JI05t*DDgNt-35V)0_A3>hTB+jMxcU%f*^`l z>o~8Ipdn-Mxnw6S%|32s{I^F|(v9Fevu%_Z`H1}dL z95i%_aS@I7YN81$E{@bOmzL;_e)*$Ve?LEisO=Y{*xe0UKyXkHkx2ZyxCmMr46!gj zAGXpw=c484=eO7#JO|o#8+V1gIabl!eB0C0Jgc;%q$EB*{_EGT_4W1X#@~Au*R8VF zb~qCbR)olJy}@$>A|fKr8hPMF3g1e~OQ*a^lRf=mWMnQ-zlBVGi(x}A7@pA89j4PG z7l$>odq2`>GN~4NH^)jj{;?OIgbM%&=vaVr%#(>es#;VCg%6`MeVlD>o;yJboA`*?oLilrlpCZV1B;7U?tR#AD=q< zMpVx5+%ZPO4Qi!BMF?}eW*%mSH})HTTJNNhV{eu?iSD`k-gQin?61d9zALcoa}JCc4vKs%p6_nqC65+%AiaPXP`AJO%r*p##?tS&9~jXC6ZeOa;L zw?XD8`itMcln5LY63R(A^3Dae30@-5md8O=jvxEHC(?}r?e6J+=d<@Ft7);a UkM1^)gF_`?iLf=VHFNvp-`R{Y1ONa4 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-readonly-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/fill/input-otp.e2e.ts-snapshots/input-otp-solid-readonly-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d9a063bc8a61ac70329987c3d5f4fb024b6aff GIT binary patch literal 3834 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 OC6I=iHlkA1GUOjmbJEiQ literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-large-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-large-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4e54b58b03ffd390bf70c50d7b2257b7c19deeae GIT binary patch literal 3363 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 KwTrbJBmM(lW<>@7 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-large-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-large-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..57fba0451d3acf7db62d8e5ebb19dd69263a757c GIT binary patch literal 3106 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-large-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-large-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..c5b2cf71587e1a1058c209442245dfa2b48233a4 GIT binary patch literal 4542 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 DUv*^m literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-large-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-large-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..439bbf8193f4f2b923b5b520b35db7b9a0186116 GIT binary patch literal 3645 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-medium-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-medium-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4c356225aecf0228b20bc961314cf377bbaaec41 GIT binary patch literal 4465 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-medium-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-medium-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a4cd2f9cf8a93bc7949c3e2f744ee8153e347125 GIT binary patch literal 3298 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-medium-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-medium-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..e7c6eb1c4670eef57c4d067fb7aec45ce10ed1fd GIT binary patch literal 4259 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 IbwBh!0Ab|y=>Px# literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-medium-md-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-medium-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..59028c2b69e7ae58abb7ba7475912ec84d7c3bd7 GIT binary patch literal 3569 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-small-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-small-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f2da40c69e2b633ce3285d30bbda6b5bf675992f GIT binary patch literal 3081 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 QfVKxY+q>IgY_8w?2dY0jBLDyZ literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-small-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-small-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..082f915e6bc1eb4268edcfd24aed754633636178 GIT binary patch literal 4300 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 N#z6Nbybk6Z^FIYgDe?dS literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-small-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-small-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..bb683cf57332a4d95935f8f0e1433d4acad3b139 GIT binary patch literal 3170 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-small-md-ltr-Mobile-Firefox-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-all-small-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..465f49f131a88f002d148b4c35c35623a3104808 GIT binary patch literal 4079 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 Awg3PC literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-large-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-large-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..6964d763a3e089d3b63866eea89e70f669733e1d GIT binary patch literal 3200 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 +5QrUA_cfHvPYKSzql5c zyO`vg*#pCh!>z4sM*DXB_roEX+ zw%^aMu7j=qG}&#=V;u6cv+~S5}r%ZBh9bTlQe|ysY5iXyCI> z%hBQwp{9i}2(CH=5;-xuQvplOyVD$s)PhI*GZd$!*^c`^76I+QN?yvIe$J#P44gS|NX-?w@?}RJ$>u!7m_`TvS1)PI*_84u-_JD6Fh+ zx_A{2iKA0VE9I?UbcI61Q(e$I6|O^ql|yZj7s_}4dYd{s14VP;IHIUXvf)qvd77rf z^+sdnFXqKYoVRW@>9(E9U%XhnnEN=#K4?w(9^v%kH{ezu3N=M_@eO!%@J+0~P;E++ zzbosa&}89v;LS1QKaE+rz^>{U_g7MNh+hpgoeT^ds#~ZoAY&8XY7ojLyiEc z?ema6=?gRA;b_o1+gc+z_RSL*8m%_<`1JU`q^Y^N75z~FH(ING0VySi_=Y*CE((*OVRY*-sco^sil<#}M<@3}S zorv6&HVR66F<@L{^FqwwGc`In%atM$50$$bML|yurig)q{J3Ce9j6$W)?`UO-yzR& dgv02M*i4T6!}3seMZh!*q_1NHFM~No{0~0h@Ad!y literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-large-ios-ltr-Mobile-Safari-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-large-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..2e4be5a7ed17abf241d21ed9d4c5d21f9c683932 GIT binary patch literal 3293 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-large-md-ltr-Mobile-Chrome-linux.png b/core/src/components/input-otp/test/separators/input-otp.e2e.ts-snapshots/input-otp-separators-one-large-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..14b217fd342448c361e2d30d6e46a29911f46992 GIT binary patch literal 3169 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

diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index 82688d0ec54..f4e67c9386e 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -1018,7 +1018,7 @@ This event will not emit when programmatically setting the `value` property. @ProxyCmp({ - inputs: ['color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], + inputs: ['autocapitalize', 'color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], methods: ['reset', 'setFocus'] }) @Component({ @@ -1026,7 +1026,7 @@ This event will not emit when programmatically setting the `value` property. changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], + inputs: ['autocapitalize', 'color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], }) export class IonInputOtp { protected el: HTMLIonInputOtpElement; diff --git a/packages/angular/standalone/src/directives/proxies.ts b/packages/angular/standalone/src/directives/proxies.ts index eb30aaae324..655bb4af081 100644 --- a/packages/angular/standalone/src/directives/proxies.ts +++ b/packages/angular/standalone/src/directives/proxies.ts @@ -984,7 +984,7 @@ export declare interface IonInfiniteScrollContent extends Components.IonInfinite @ProxyCmp({ defineCustomElementFn: defineIonInputOtp, - inputs: ['color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], + inputs: ['autocapitalize', 'color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], methods: ['reset', 'setFocus'] }) @Component({ @@ -992,7 +992,7 @@ export declare interface IonInfiniteScrollContent extends Components.IonInfinite changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], + inputs: ['autocapitalize', 'color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], standalone: true }) export class IonInputOtp { diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index 7418524af51..0e4d33aea62 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -493,6 +493,7 @@ export const IonInput: StencilVueComponent export const IonInputOtp: StencilVueComponent = /*@__PURE__*/ defineContainer('ion-input-otp', defineIonInputOtp, [ + 'autocapitalize', 'color', 'disabled', 'fill', From ccedd962a429db3de04153290363a8a4e6e6a9a7 Mon Sep 17 00:00:00 2001 From: ionitron Date: Mon, 12 May 2025 19:46:49 +0000 Subject: [PATCH 43/81] chore(): add updated snapshots --- ...-time-diff-md-ltr-Mobile-Firefox-linux.png | Bin 13267 -> 12921 bytes ...ustom-size-ios-rtl-Mobile-Chrome-linux.png | Bin 68217 -> 68807 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/core/src/components/datetime/test/locale/datetime.e2e.ts-snapshots/datetime-locale-en-US-time-diff-md-ltr-Mobile-Firefox-linux.png b/core/src/components/datetime/test/locale/datetime.e2e.ts-snapshots/datetime-locale-en-US-time-diff-md-ltr-Mobile-Firefox-linux.png index 18265d6cbb2c0383249143a28e75418c5f95e0a3..ab58bc1766bc45b3072513eaca2e1a87b53141c3 100644 GIT binary patch literal 12921 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 bM=S^tS3p%z^Dg*j9XL5@C8>(H9|Hd`4X4ph diff --git a/core/src/components/fab/test/custom-size/fab.e2e.ts-snapshots/fab-custom-size-ios-rtl-Mobile-Chrome-linux.png b/core/src/components/fab/test/custom-size/fab.e2e.ts-snapshots/fab-custom-size-ios-rtl-Mobile-Chrome-linux.png index b4889b4586e6eb0ed9c038c8606ec7cdc6b6cc01..e2af42c78d93b2583b7ab2bef34aaa73d91c4385 100644 GIT binary patch delta 66393 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 z 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 KTP$t*>Hh%i%^61k delta 65819 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 From a9008cded65d557281fdcda63c70e44fc8bbfc90 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 12 May 2025 16:20:28 -0400 Subject: [PATCH 44/81] Revert "chore(): add updated snapshots" This reverts commit ccedd962a429db3de04153290363a8a4e6e6a9a7. --- ...-time-diff-md-ltr-Mobile-Firefox-linux.png | Bin 12921 -> 13267 bytes ...ustom-size-ios-rtl-Mobile-Chrome-linux.png | Bin 68807 -> 68217 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/core/src/components/datetime/test/locale/datetime.e2e.ts-snapshots/datetime-locale-en-US-time-diff-md-ltr-Mobile-Firefox-linux.png b/core/src/components/datetime/test/locale/datetime.e2e.ts-snapshots/datetime-locale-en-US-time-diff-md-ltr-Mobile-Firefox-linux.png index ab58bc1766bc45b3072513eaca2e1a87b53141c3..18265d6cbb2c0383249143a28e75418c5f95e0a3 100644 GIT binary patch literal 13267 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 bM=S^tS3p%z^Dg*j9XL5@C8>(H9|Hd`4X4ph literal 12921 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 delta 66393 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 z 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 KTP$t*>Hh%i%^61k From a46322bacf9cc4d838d741f00b2b43eec5fb87af Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 12 May 2025 16:20:34 -0400 Subject: [PATCH 45/81] revert --- core/src/themes/ionic.theme.default.ios.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/themes/ionic.theme.default.ios.scss b/core/src/themes/ionic.theme.default.ios.scss index 673a5318910..b1bd8a0168c 100644 --- a/core/src/themes/ionic.theme.default.ios.scss +++ b/core/src/themes/ionic.theme.default.ios.scss @@ -7,7 +7,6 @@ // iOS General Colors // -------------------------------------------------- $backdrop-ios-color: var(--ion-backdrop-color, #000); -$border-ios-color: var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))); $overlay-ios-background-color: var(--ion-overlay-background-color, var(--ion-color-step-100, var(--ion-background-color-step-100, #f9f9f9))); // iOS Tabs & Tab bar From 18e0f70ac1a10c2ca35c48577a5949a7003b48d6 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 12 May 2025 18:44:28 -0400 Subject: [PATCH 46/81] test(input-otp): simplify basic test with helper function to verify values --- .../input-otp/test/basic/input-otp.e2e.ts | 183 +++++++----------- 1 file changed, 66 insertions(+), 117 deletions(-) diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index d4aef62b98d..743e1871753 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -1,4 +1,5 @@ import { expect } from '@playwright/test'; +import type { Locator } from '@playwright/test'; import { configs, test } from '@utils/test/playwright'; /** @@ -18,6 +19,21 @@ async function simulatePaste(input: any, value: string) { }, value); } +/** + * Helper function to verify input values in both the input + * boxes and the input-otp component's value property + */ +async function verifyInputValues(inputOtp: Locator, expectedValues: string[]) { + const inputBoxes = inputOtp.locator('input'); + for (let i = 0; i < expectedValues.length; i++) { + await expect(inputBoxes.nth(i)).toHaveValue(expectedValues[i]); + } + + // Concatenate the expected values and check the JS property + const concatenatedValue = expectedValues.join(''); + await expect(inputOtp).toHaveJSProperty('value', concatenatedValue); +} + /** * Functionality is the same across modes */ @@ -26,93 +42,75 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { test('should render with 4 input boxes and a default value', async ({ page }) => { await page.setContent(`Description`, config); + const inputOtp = page.locator('ion-input-otp'); + const inputBoxes = page.locator('ion-input-otp input'); await expect(inputBoxes).toHaveCount(4); - await expect(inputBoxes.nth(0)).toHaveValue('1'); - await expect(inputBoxes.nth(1)).toHaveValue('2'); - - const inputOtp = page.locator('ion-input-otp'); - await expect(inputOtp).toHaveAttribute('value', '12'); + await verifyInputValues(inputOtp, ['1', '2', '', '']); }); test('should render with 8 input boxes when length is set to 8 and a default value', async ({ page }) => { await page.setContent(`Description`, config); + const inputOtp = page.locator('ion-input-otp'); + const inputBoxes = page.locator('ion-input-otp input'); await expect(inputBoxes).toHaveCount(8); - await expect(inputBoxes.nth(0)).toHaveValue('1'); - await expect(inputBoxes.nth(1)).toHaveValue('2'); - await expect(inputBoxes.nth(2)).toHaveValue('3'); - await expect(inputBoxes.nth(3)).toHaveValue('4'); - await expect(inputBoxes.nth(4)).toHaveValue('5'); - await expect(inputBoxes.nth(5)).toHaveValue('6'); - await expect(inputBoxes.nth(6)).toHaveValue('7'); - await expect(inputBoxes.nth(7)).toHaveValue('8'); - - const inputOtp = page.locator('ion-input-otp'); - await expect(inputOtp).toHaveAttribute('value', '12345678'); + await verifyInputValues(inputOtp, ['1', '2', '3', '4', '5', '6', '7', '8']); }); test('should accept numbers only by default', async ({ page }) => { await page.setContent(`Description`, config); + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); await page.keyboard.type('A2e468'); - const inputBoxes = page.locator('ion-input-otp input'); - await expect(inputBoxes.nth(0)).toHaveValue('2'); - await expect(inputBoxes.nth(1)).toHaveValue('4'); - await expect(inputBoxes.nth(2)).toHaveValue('6'); - await expect(inputBoxes.nth(3)).toHaveValue('8'); + await verifyInputValues(inputOtp, ['2', '4', '6', '8']); }); test('should accept text and numbers when type is set to text', async ({ page }) => { await page.setContent(`Description`, config); + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); await page.keyboard.type('A2-B5'); - const inputBoxes = page.locator('ion-input-otp input'); - await expect(inputBoxes.nth(0)).toHaveValue('A'); - await expect(inputBoxes.nth(1)).toHaveValue('2'); - await expect(inputBoxes.nth(2)).toHaveValue('B'); - await expect(inputBoxes.nth(3)).toHaveValue('5'); + await verifyInputValues(inputOtp, ['A', '2', 'B', '5']); }); test('should accept custom pattern of lowercase and uppercase letters when pattern is set', async ({ page }) => { await page.setContent(`Description`, config); + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); await page.keyboard.type('aGBZfD'); - const inputBoxes = page.locator('ion-input-otp input'); - await expect(inputBoxes.nth(0)).toHaveValue('a'); - await expect(inputBoxes.nth(1)).toHaveValue('B'); - await expect(inputBoxes.nth(2)).toHaveValue('f'); - await expect(inputBoxes.nth(3)).toHaveValue('D'); + await verifyInputValues(inputOtp, ['a', 'B', 'f', 'D']); }); test('should accept custom pattern of uppercase letters only when pattern is set', async ({ page }) => { await page.setContent(`Description`, config); + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); await firstInput.focus(); await page.keyboard.type('abcdABCDEFG'); - const inputBoxes = page.locator('ion-input-otp input'); - await expect(inputBoxes.nth(0)).toHaveValue('D'); - await expect(inputBoxes.nth(1)).toHaveValue('E'); - await expect(inputBoxes.nth(2)).toHaveValue('F'); - await expect(inputBoxes.nth(3)).toHaveValue('G'); + await verifyInputValues(inputOtp, ['D', 'E', 'F', 'G']); }); }); @@ -124,29 +122,16 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await firstInput.focus(); const inputOtp = page.locator('ion-input-otp'); - const inputBoxes = page.locator('ion-input-otp input'); - await expect(inputOtp).toHaveJSProperty('value', ''); - await expect(inputBoxes.nth(0)).toHaveValue(''); - await expect(inputBoxes.nth(1)).toHaveValue(''); - await expect(inputBoxes.nth(2)).toHaveValue(''); - await expect(inputBoxes.nth(3)).toHaveValue(''); + await verifyInputValues(inputOtp, ['', '', '', '']); await page.keyboard.type('12'); - await expect(inputOtp).toHaveJSProperty('value', '12'); - await expect(inputBoxes.nth(0)).toHaveValue('1'); - await expect(inputBoxes.nth(1)).toHaveValue('2'); - await expect(inputBoxes.nth(2)).toHaveValue(''); - await expect(inputBoxes.nth(3)).toHaveValue(''); + await verifyInputValues(inputOtp, ['1', '2', '', '']); await page.keyboard.type('34'); - await expect(inputOtp).toHaveJSProperty('value', '1234'); - await expect(inputBoxes.nth(0)).toHaveValue('1'); - await expect(inputBoxes.nth(1)).toHaveValue('2'); - await expect(inputBoxes.nth(2)).toHaveValue('3'); - await expect(inputBoxes.nth(3)).toHaveValue('4'); + await verifyInputValues(inputOtp, ['1', '2', '3', '4']); }); test('should update the 1st input value when typing in the 3rd box', async ({ page }) => { @@ -160,11 +145,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await page.keyboard.type('1'); - await expect(inputBoxes.nth(0)).toHaveValue('1'); - await expect(inputBoxes.nth(1)).toHaveValue(''); - await expect(inputBoxes.nth(2)).toHaveValue(''); - await expect(inputBoxes.nth(3)).toHaveValue(''); - await expect(inputOtp).toHaveJSProperty('value', '1'); + await verifyInputValues(inputOtp, ['1', '', '', '']); // Focus should be on the 2nd input box await expect(inputBoxes.nth(1)).toBeFocused(); @@ -183,11 +164,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await page.keyboard.type('9'); - await expect(inputBoxes.nth(0)).toHaveValue('1'); - await expect(inputBoxes.nth(1)).toHaveValue('2'); - await expect(inputBoxes.nth(2)).toHaveValue('9'); - await expect(inputBoxes.nth(3)).toHaveValue('3'); - await expect(inputOtp).toHaveJSProperty('value', '1293'); + await verifyInputValues(inputOtp, ['1', '2', '9', '3']); // Focus should remain on the 3rd input box await expect(inputBoxes.nth(2)).toBeFocused(); @@ -204,11 +181,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await page.keyboard.type('9'); - await expect(inputBoxes.nth(0)).toHaveValue('1'); - await expect(inputBoxes.nth(1)).toHaveValue('9'); - await expect(inputBoxes.nth(2)).toHaveValue('3'); - await expect(inputBoxes.nth(3)).toHaveValue('4'); - await expect(inputOtp).toHaveJSProperty('value', '1934'); + await verifyInputValues(inputOtp, ['1', '9', '3', '4']); // Focus should remain on the 2nd input box await expect(inputBoxes.nth(1)).toBeFocused(); @@ -222,15 +195,10 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await secondInput.selectText(); const inputOtp = page.locator('ion-input-otp'); - const inputBoxes = page.locator('ion-input-otp input'); await page.keyboard.type('9'); - await expect(inputBoxes.nth(0)).toHaveValue('1'); - await expect(inputBoxes.nth(1)).toHaveValue('9'); - await expect(inputBoxes.nth(2)).toHaveValue('3'); - await expect(inputBoxes.nth(3)).toHaveValue(''); - await expect(inputOtp).toHaveJSProperty('value', '193'); + await verifyInputValues(inputOtp, ['1', '9', '3', '']); }); }); @@ -296,15 +264,13 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }) => { await page.setContent(`Description`, config); + const inputOtp = page.locator('ion-input-otp'); + await page.keyboard.press('Tab'); await page.keyboard.press('Backspace'); await page.keyboard.press('Backspace'); - const inputBoxes = page.locator('ion-input-otp input'); - await expect(inputBoxes.nth(0)).toHaveValue(''); - await expect(inputBoxes.nth(1)).toHaveValue(''); - await expect(inputBoxes.nth(2)).toHaveValue(''); - await expect(inputBoxes.nth(3)).toHaveValue(''); + await verifyInputValues(inputOtp, ['', '', '', '']); }); test('should backspace the last input box when backspace is pressed and all values are filled', async ({ @@ -312,14 +278,12 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }) => { await page.setContent(`Description`, config); + const inputOtp = page.locator('ion-input-otp'); + await page.keyboard.press('Tab'); await page.keyboard.press('Backspace'); - const inputBoxes = page.locator('ion-input-otp input'); - await expect(inputBoxes.nth(0)).toHaveValue('1'); - await expect(inputBoxes.nth(1)).toHaveValue('2'); - await expect(inputBoxes.nth(2)).toHaveValue('3'); - await expect(inputBoxes.nth(3)).toHaveValue(''); + await verifyInputValues(inputOtp, ['1', '2', '3', '']); }); test('should backspace the 2nd input box and fill it with the 3rd value when backspace is pressed and 3 values are filled', async ({ @@ -339,11 +303,8 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { } await page.keyboard.press('Backspace'); - const inputBoxes = page.locator('ion-input-otp input'); - await expect(inputBoxes.nth(0)).toHaveValue('1'); - await expect(inputBoxes.nth(1)).toHaveValue('3'); - await expect(inputBoxes.nth(2)).toHaveValue(''); - await expect(inputBoxes.nth(3)).toHaveValue(''); + const inputOtp = page.locator('ion-input-otp'); + await verifyInputValues(inputOtp, ['1', '3', '', '']); }); }); @@ -355,11 +316,10 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await firstInput.focus(); await simulatePaste(firstInput, '12'); + const inputOtp = page.locator('ion-input-otp'); + const inputBoxes = page.locator('ion-input-otp input'); - await expect(inputBoxes.nth(0)).toHaveValue('1'); - await expect(inputBoxes.nth(1)).toHaveValue('2'); - await expect(inputBoxes.nth(2)).toHaveValue(''); - await expect(inputBoxes.nth(3)).toHaveValue(''); + await verifyInputValues(inputOtp, ['1', '2', '', '']); // Focus should be on the 3rd input box await expect(inputBoxes.nth(2)).toBeFocused(); @@ -372,11 +332,9 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await firstInput.focus(); await simulatePaste(firstInput, '1234'); + const inputOtp = page.locator('ion-input-otp'); const inputBoxes = page.locator('ion-input-otp input'); - await expect(inputBoxes.nth(0)).toHaveValue('1'); - await expect(inputBoxes.nth(1)).toHaveValue('2'); - await expect(inputBoxes.nth(2)).toHaveValue('3'); - await expect(inputBoxes.nth(3)).toHaveValue('4'); + await verifyInputValues(inputOtp, ['1', '2', '3', '4']); // Focus should be on the 4th input box await expect(inputBoxes.nth(3)).toBeFocused(); @@ -391,11 +349,10 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await thirdInput.focus(); await simulatePaste(thirdInput, '12'); + const inputOtp = page.locator('ion-input-otp'); + const inputBoxes = page.locator('ion-input-otp input'); - await expect(inputBoxes.nth(0)).toHaveValue('1'); - await expect(inputBoxes.nth(1)).toHaveValue('2'); - await expect(inputBoxes.nth(2)).toHaveValue(''); - await expect(inputBoxes.nth(3)).toHaveValue(''); + await verifyInputValues(inputOtp, ['1', '2', '', '']); // Focus should be on the 3rd input box await expect(inputBoxes.nth(2)).toBeFocused(); @@ -411,11 +368,9 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await page.keyboard.type('12'); await simulatePaste(firstInput, '34'); - const inputBoxes = page.locator('ion-input-otp input'); - await expect(inputBoxes.nth(0)).toHaveValue('1'); - await expect(inputBoxes.nth(1)).toHaveValue('2'); - await expect(inputBoxes.nth(2)).toHaveValue('3'); - await expect(inputBoxes.nth(3)).toHaveValue('4'); + const inputOtp = page.locator('ion-input-otp'); + + await verifyInputValues(inputOtp, ['1', '2', '3', '4']); }); test('should paste text into all input boxes when pasting 4 digits after typing 4 digits', async ({ page }) => { @@ -426,11 +381,9 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await page.keyboard.type('9999'); await simulatePaste(firstInput, '1234'); - const inputBoxes = page.locator('ion-input-otp input'); - await expect(inputBoxes.nth(0)).toHaveValue('1'); - await expect(inputBoxes.nth(1)).toHaveValue('2'); - await expect(inputBoxes.nth(2)).toHaveValue('3'); - await expect(inputBoxes.nth(3)).toHaveValue('4'); + const inputOtp = page.locator('ion-input-otp'); + + await verifyInputValues(inputOtp, ['1', '2', '3', '4']); }); }); }); @@ -520,7 +473,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => await inputOtp.evaluate((el: HTMLIonInputOtpElement) => { el.value = '1234'; }); - await expect(inputOtp).toHaveJSProperty('value', '1234'); + await verifyInputValues(inputOtp, ['1', '2', '3', '4']); await expect(ionInput).not.toHaveReceivedEvent(); }); @@ -602,7 +555,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => await inputOtp.evaluate((el: HTMLIonInputOtpElement) => { el.value = '1234'; }); - await expect(inputOtp).toHaveJSProperty('value', '1234'); + await verifyInputValues(inputOtp, ['1', '2', '3', '4']); await expect(ionChange).not.toHaveReceivedEvent(); }); @@ -780,11 +733,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => }); // Check that values are cleared - await expect(inputOtp).toHaveJSProperty('value', ''); - await expect(inputBoxes.nth(0)).toHaveValue(''); - await expect(inputBoxes.nth(1)).toHaveValue(''); - await expect(inputBoxes.nth(2)).toHaveValue(''); - await expect(inputBoxes.nth(3)).toHaveValue(''); + await verifyInputValues(inputOtp, ['', '', '', '']); // Check that focus is removed await expect(inputBoxes.nth(2)).not.toBeFocused(); From cbf963de4040bba8e26aea8af166e560797450f4 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 12 May 2025 19:21:41 -0400 Subject: [PATCH 47/81] test(input-otp): add helper functions and constants, warn for duplicate separators --- core/src/components/input-otp/input-otp.tsx | 9 ++ .../input-otp/test/color/input-otp.e2e.ts | 4 +- .../input-otp/test/fill/input-otp.e2e.ts | 4 +- .../test/separators/input-otp.e2e.ts | 132 ++++++++++-------- .../input-otp/test/shape/input-otp.e2e.ts | 7 +- .../input-otp/test/size/input-otp.e2e.ts | 4 +- 6 files changed, 99 insertions(+), 61 deletions(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index ae4892e2a89..b0c2ec664ba 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -217,6 +217,15 @@ export class InputOTP implements ComponentInterface { .filter((pos) => !isNaN(pos)); } + // Check for duplicate separator positions + const duplicates = separatorValues.filter((pos, index) => separatorValues.indexOf(pos) !== index); + if (duplicates.length > 0) { + printIonWarning( + `[ion-input-otp] - Duplicate separator positions are not allowed. Received: ${separators}`, + this.el + ); + } + const invalidSeparators = separatorValues.filter((pos) => pos > length); if (invalidSeparators.length > 0) { printIonWarning( diff --git a/core/src/components/input-otp/test/color/input-otp.e2e.ts b/core/src/components/input-otp/test/color/input-otp.e2e.ts index ee2f3c536d1..6fb970e838a 100644 --- a/core/src/components/input-otp/test/color/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/color/input-otp.e2e.ts @@ -1,10 +1,12 @@ import { expect } from '@playwright/test'; import { configs, test } from '@utils/test/playwright'; +const VALID_FILLS = ['outline', 'solid']; + configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { test.describe(title('input-otp: color'), () => { // Test all colors with all fills - ['outline', 'solid'].forEach((fill) => { + VALID_FILLS.forEach((fill) => { test(`color with ${fill} fill should not have visual regressions`, async ({ page }) => { await page.setContent( ` diff --git a/core/src/components/input-otp/test/fill/input-otp.e2e.ts b/core/src/components/input-otp/test/fill/input-otp.e2e.ts index 2ebbf7a1e42..b20e93a4591 100644 --- a/core/src/components/input-otp/test/fill/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/fill/input-otp.e2e.ts @@ -1,9 +1,11 @@ import { expect } from '@playwright/test'; import { configs, test } from '@utils/test/playwright'; +const VALID_FILLS = ['outline', 'solid']; + configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { test.describe(title('input-otp: fill'), () => { - ['outline', 'solid'].forEach((fill) => { + VALID_FILLS.forEach((fill) => { test(`${fill} fill should not have visual regressions`, async ({ page }) => { await page.setContent( ` diff --git a/core/src/components/input-otp/test/separators/input-otp.e2e.ts b/core/src/components/input-otp/test/separators/input-otp.e2e.ts index 6948fec4aaa..37c9bb8bb4a 100644 --- a/core/src/components/input-otp/test/separators/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/separators/input-otp.e2e.ts @@ -1,10 +1,39 @@ +import type { ConsoleMessage } from '@playwright/test'; import { expect } from '@playwright/test'; +import type { E2EPage } from '@utils/test/playwright'; import { configs, test } from '@utils/test/playwright'; +const DEFAULT_INPUT_LENGTH = 4; +const VALID_SIZES = ['small', 'medium', 'large']; + +/** + * Helper function to check if the next sibling after + * the input box is a separator + */ +const hasSeparatorAfter = async (page: E2EPage, index: number): Promise => { + const wrappers = page.locator('.input-otp-group > .native-wrapper'); + return await wrappers + .nth(index) + .evaluate((el: Element) => el.nextElementSibling?.classList.contains('input-otp-separator') ?? false); +}; + +/** + * Helper function to collect console warnings + */ +const collectWarnings = async (page: E2EPage): Promise => { + const warnings: string[] = []; + page.on('console', (ev: ConsoleMessage) => { + if (ev.type() === 'warning') { + warnings.push(ev.text()); + } + }); + return warnings; +}; + configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { test.describe(title('input-otp: separators'), () => { // Test separators with all sizes - ['small', 'medium', 'large'].forEach((size) => { + VALID_SIZES.forEach((size) => { test(`one separator with ${size} size should not have visual regressions`, async ({ page }) => { await page.setContent( ` @@ -52,17 +81,10 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => test('should render separators after the first and third input box', async ({ page }) => { await page.setContent(`Description`, config); - const group = page.locator('.input-otp-group'); - const wrappers = group.locator('> .native-wrapper'); - - // Helper to check if the next sibling is a separator - const hasSeparatorAfter = async (index: number) => - wrappers.nth(index).evaluate((el) => el.nextElementSibling?.classList.contains('input-otp-separator') ?? false); - - await expect(await hasSeparatorAfter(0)).toBe(true); - await expect(await hasSeparatorAfter(1)).toBe(false); - await expect(await hasSeparatorAfter(2)).toBe(true); - await expect(await hasSeparatorAfter(3)).toBe(false); + await expect(await hasSeparatorAfter(page, 0)).toBe(true); + await expect(await hasSeparatorAfter(page, 1)).toBe(false); + await expect(await hasSeparatorAfter(page, 2)).toBe(true); + await expect(await hasSeparatorAfter(page, 3)).toBe(false); }); test('should render separators after the second and third input box', async ({ page }) => { @@ -73,61 +95,42 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => el.separators = [2, 3]; }); - const group = page.locator('.input-otp-group'); - const wrappers = group.locator('> .native-wrapper'); - - // Helper to check if the next sibling is a separator - const hasSeparatorAfter = async (index: number) => - wrappers.nth(index).evaluate((el) => el.nextElementSibling?.classList.contains('input-otp-separator') ?? false); - - await expect(await hasSeparatorAfter(0)).toBe(false); - await expect(await hasSeparatorAfter(1)).toBe(true); - await expect(await hasSeparatorAfter(2)).toBe(true); - await expect(await hasSeparatorAfter(3)).toBe(false); + await expect(await hasSeparatorAfter(page, 0)).toBe(false); + await expect(await hasSeparatorAfter(page, 1)).toBe(true); + await expect(await hasSeparatorAfter(page, 2)).toBe(true); + await expect(await hasSeparatorAfter(page, 3)).toBe(false); }); test('should render all separators', async ({ page }) => { await page.setContent(`Description`, config); - const group = page.locator('.input-otp-group'); - const wrappers = group.locator('> .native-wrapper'); + await expect(await hasSeparatorAfter(page, 0)).toBe(true); + await expect(await hasSeparatorAfter(page, 1)).toBe(true); + await expect(await hasSeparatorAfter(page, 2)).toBe(true); + await expect(await hasSeparatorAfter(page, 3)).toBe(false); + }); - // Helper to check if the next sibling is a separator - const hasSeparatorAfter = async (index: number) => - wrappers.nth(index).evaluate((el) => el.nextElementSibling?.classList.contains('input-otp-separator') ?? false); + test('should handle empty separators string', async ({ page }) => { + await page.setContent(`Description`, config); - await expect(await hasSeparatorAfter(0)).toBe(true); - await expect(await hasSeparatorAfter(1)).toBe(true); - await expect(await hasSeparatorAfter(2)).toBe(true); - await expect(await hasSeparatorAfter(3)).toBe(false); + await expect(await hasSeparatorAfter(page, 0)).toBe(false); + await expect(await hasSeparatorAfter(page, 1)).toBe(false); + await expect(await hasSeparatorAfter(page, 2)).toBe(false); + await expect(await hasSeparatorAfter(page, 3)).toBe(false); }); test('should warn when setting separators to a position greater than the input length', async ({ page }) => { - const warnings: string[] = []; - - page.on('console', (ev) => { - if (ev.type() === 'warning') { - warnings.push(ev.text()); - } - }); - + const warnings = await collectWarnings(page); await page.setContent(`Description`, config); expect(warnings.length).toBe(1); expect(warnings[0]).toContain( - '[Ionic Warning]: [ion-input-otp] - The following separator positions are greater than the input length (4): 5, 6, 7. These separators will be ignored.' + `[Ionic Warning]: [ion-input-otp] - The following separator positions are greater than the input length (${DEFAULT_INPUT_LENGTH}): 5, 6, 7. These separators will be ignored.` ); }); test('should warn when setting separators to an invalid space-separated string', async ({ page }) => { - const warnings: string[] = []; - - page.on('console', (ev) => { - if (ev.type() === 'warning') { - warnings.push(ev.text()); - } - }); - + const warnings = await collectWarnings(page); const invalidSeparators = '1 2 3'; await page.setContent(`Description`, config); @@ -139,15 +142,20 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => }); test('should warn when setting separators to an invalid comma-separated string', async ({ page }) => { - const warnings: string[] = []; + const warnings = await collectWarnings(page); + const invalidSeparators = '1,d,3'; - page.on('console', (ev) => { - if (ev.type() === 'warning') { - warnings.push(ev.text()); - } - }); + await page.setContent(`Description`, config); - const invalidSeparators = '1,d,3'; + expect(warnings.length).toBe(1); + expect(warnings[0]).toContain( + `[Ionic Warning]: [ion-input-otp] - Invalid separators format. Expected a comma-separated list of numbers, an array of numbers, or "all". Received: ${invalidSeparators}` + ); + }); + + test('should warn when setting separators to negative numbers', async ({ page }) => { + const warnings = await collectWarnings(page); + const invalidSeparators = '-1,2,3'; await page.setContent(`Description`, config); @@ -156,5 +164,17 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => `[Ionic Warning]: [ion-input-otp] - Invalid separators format. Expected a comma-separated list of numbers, an array of numbers, or "all". Received: ${invalidSeparators}` ); }); + + test('should warn when setting separators to duplicate positions', async ({ page }) => { + const warnings = await collectWarnings(page); + const invalidSeparators = '1,1,2'; + + await page.setContent(`Description`, config); + + expect(warnings.length).toBe(1); + expect(warnings[0]).toContain( + `[Ionic Warning]: [ion-input-otp] - Duplicate separator positions are not allowed. Received: ${invalidSeparators}` + ); + }); }); }); diff --git a/core/src/components/input-otp/test/shape/input-otp.e2e.ts b/core/src/components/input-otp/test/shape/input-otp.e2e.ts index 9f0ace5c235..766f641a6b1 100644 --- a/core/src/components/input-otp/test/shape/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/shape/input-otp.e2e.ts @@ -1,11 +1,14 @@ import { expect } from '@playwright/test'; import { configs, test } from '@utils/test/playwright'; +const VALID_SHAPES = ['rectangular', 'round', 'soft']; +const VALID_SIZES = ['small', 'medium', 'large']; + configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { test.describe(title('input-otp: shape'), () => { // Test all shapes with all sizes - ['rectangular', 'round', 'soft'].forEach((shape) => { - ['small', 'medium', 'large'].forEach((size) => { + VALID_SHAPES.forEach((shape) => { + VALID_SIZES.forEach((size) => { test(`${shape} shape with ${size} size should not have visual regressions`, async ({ page }) => { await page.setContent( ` diff --git a/core/src/components/input-otp/test/size/input-otp.e2e.ts b/core/src/components/input-otp/test/size/input-otp.e2e.ts index 7f87b7e9600..989fc30fb93 100644 --- a/core/src/components/input-otp/test/size/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/size/input-otp.e2e.ts @@ -1,9 +1,11 @@ import { expect } from '@playwright/test'; import { configs, test } from '@utils/test/playwright'; +const VALID_SIZES = ['small', 'medium', 'large']; + configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { test.describe(title('input-otp: size'), () => { - ['small', 'medium', 'large'].forEach((size) => { + VALID_SIZES.forEach((size) => { test(`${size} size should not have visual regressions`, async ({ page }) => { await page.setContent( ` From dd7476b6c359ea4da6abe2947a07bc1b0254532f Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 12 May 2025 19:35:46 -0400 Subject: [PATCH 48/81] fix(input-otp): extract pattern to a function --- core/src/components/input-otp/input-otp.tsx | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index b0c2ec664ba..8e93f256386 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -304,12 +304,19 @@ export class InputOTP implements ComponentInterface { * Otherwise, use the default regex pattern based on type */ private get validKeys(): RegExp { - const { pattern, type } = this; + return new RegExp(`^${this.getPattern()}$`); + } + /** + * Gets the string pattern to pass to the input element + * and use in the regex for allowed characters. + */ + private getPattern(): string { + const { pattern, type } = this; if (pattern) { - return new RegExp(`^${pattern}$`); + return pattern; } - return type === 'number' ? /^[0-9]$/ : /^[a-zA-Z0-9]$/; + return type === 'number' ? '[0-9]' : '[a-zA-Z0-9]'; } /** @@ -717,15 +724,14 @@ export class InputOTP implements ComponentInterface { inputRefs, inputValues, length, - pattern, readonly, shape, size, - type, } = this; const mode = getIonMode(this); const inputmode = this.getInputmode(); const tabbableIndex = this.getTabbableIndex(); + const pattern = this.getPattern(); return ( Date: Tue, 13 May 2025 16:21:01 -0400 Subject: [PATCH 49/81] Update core/src/components/input-otp/input-otp.tsx Co-authored-by: Shane --- core/src/components/input-otp/input-otp.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 8e93f256386..c34e4bf4c7d 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -28,7 +28,9 @@ export class InputOTP implements ComponentInterface { private parsedSeparators: number[] = []; /** - * The value of the OTP input when it is focused. + * Stores the initial value of the input when it receives focus. + * Used to determine if the value changed during the focus session + * to avoid emitting unnecessary change events on blur. */ private focusedValue?: string | number | null; From e8be93ab23d10c6cef9af7ee048d73ecfd07a331 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 19 May 2025 13:41:36 -0400 Subject: [PATCH 50/81] fix(angular): add input-otp to Angular's value accessors --- .../numeric-value-accessor.ts | 6 +- .../text-value-accessor.ts | 6 +- .../standalone/src/directives/index.ts | 1 + .../standalone/src/directives/input-otp.ts | 133 ++++++++++++++++++ packages/angular/standalone/src/index.ts | 1 + 5 files changed, 142 insertions(+), 5 deletions(-) create mode 100644 packages/angular/standalone/src/directives/input-otp.ts diff --git a/packages/angular/src/directives/control-value-accessors/numeric-value-accessor.ts b/packages/angular/src/directives/control-value-accessors/numeric-value-accessor.ts index 9e79f816fe1..82b08a40538 100644 --- a/packages/angular/src/directives/control-value-accessors/numeric-value-accessor.ts +++ b/packages/angular/src/directives/control-value-accessors/numeric-value-accessor.ts @@ -3,7 +3,7 @@ import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { ValueAccessor } from '@ionic/angular/common'; @Directive({ - selector: 'ion-input[type=number],ion-range', + selector: 'ion-input[type=number],ion-input-otp:not([type=text]),ion-range', providers: [ { provide: NG_VALUE_ACCESSOR, @@ -18,12 +18,12 @@ export class NumericValueAccessorDirective extends ValueAccessor { } @HostListener('ionInput', ['$event.target']) - handleInputEvent(el: HTMLIonInputElement | HTMLIonRangeElement): void { + handleInputEvent(el: HTMLIonInputElement | HTMLIonInputOtpElement | HTMLIonRangeElement): void { this.handleValueChange(el, el.value); } registerOnChange(fn: (_: number | null) => void): void { - if (this.el.nativeElement.tagName === 'ION-INPUT') { + if (this.el.nativeElement.tagName === 'ION-INPUT' || this.el.nativeElement.tagName === 'ION-INPUT-OTP') { super.registerOnChange((value: string) => { fn(value === '' ? null : parseFloat(value)); }); diff --git a/packages/angular/src/directives/control-value-accessors/text-value-accessor.ts b/packages/angular/src/directives/control-value-accessors/text-value-accessor.ts index f4b52198cf5..bb2ec696fb7 100644 --- a/packages/angular/src/directives/control-value-accessors/text-value-accessor.ts +++ b/packages/angular/src/directives/control-value-accessors/text-value-accessor.ts @@ -3,7 +3,7 @@ import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { ValueAccessor } from '@ionic/angular/common'; @Directive({ - selector: 'ion-input:not([type=number]),ion-textarea,ion-searchbar', + selector: 'ion-input:not([type=number]),ion-input-otp[type=text],ion-textarea,ion-searchbar', providers: [ { provide: NG_VALUE_ACCESSOR, @@ -18,7 +18,9 @@ export class TextValueAccessorDirective extends ValueAccessor { } @HostListener('ionInput', ['$event.target']) - _handleInputEvent(el: HTMLIonInputElement | HTMLIonTextareaElement | HTMLIonSearchbarElement): void { + _handleInputEvent( + el: HTMLIonInputElement | HTMLIonInputOtpElement | HTMLIonTextareaElement | HTMLIonSearchbarElement + ): void { this.handleValueChange(el, el.value); } } diff --git a/packages/angular/standalone/src/directives/index.ts b/packages/angular/standalone/src/directives/index.ts index 675c5005121..95ce727fe0b 100644 --- a/packages/angular/standalone/src/directives/index.ts +++ b/packages/angular/standalone/src/directives/index.ts @@ -2,6 +2,7 @@ export * from './checkbox'; export * from './datetime'; export * from './icon'; export * from './input'; +export * from './input-otp'; export * from './radio-group'; export * from './range'; export * from './searchbar'; diff --git a/packages/angular/standalone/src/directives/input-otp.ts b/packages/angular/standalone/src/directives/input-otp.ts new file mode 100644 index 00000000000..6ec88b37a6b --- /dev/null +++ b/packages/angular/standalone/src/directives/input-otp.ts @@ -0,0 +1,133 @@ +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ElementRef, + EventEmitter, + HostListener, + Injector, + NgZone, + forwardRef, +} from '@angular/core'; +import { NG_VALUE_ACCESSOR } from '@angular/forms'; +import { ValueAccessor } from '@ionic/angular/common'; +import type { + InputOtpInputEventDetail as IIonInputOtpInputEventDetail, + InputOtpChangeEventDetail as IIonInputOtpChangeEventDetail, + InputOtpCompleteEventDetail as IIonInputOtpCompleteEventDetail, + Components, +} from '@ionic/core/components'; +import { defineCustomElement } from '@ionic/core/components/ion-input-otp.js'; + +import { ProxyCmp, proxyOutputs } from './angular-component-lib/utils'; + +const INPUT_OTP_INPUTS = [ + 'autocapitalize', + 'color', + 'disabled', + 'fill', + 'inputmode', + 'length', + 'pattern', + 'readonly', + 'separators', + 'shape', + 'size', + 'type', + 'value', +]; + +/** + * Pulling the provider into an object and using PURE works + * around an ng-packagr issue that causes + * components with multiple decorators and + * a provider to be re-assigned. This re-assignment + * is not supported by Webpack and causes treeshaking + * to not work on these kinds of components. + */ +const accessorProvider = { + provide: NG_VALUE_ACCESSOR, + useExisting: /*@__PURE__*/ forwardRef(() => IonInputOtp), + multi: true, +}; + +@ProxyCmp({ + defineCustomElementFn: defineCustomElement, + inputs: INPUT_OTP_INPUTS, + methods: ['reset', 'setFocus'], +}) +@Component({ + selector: 'ion-input-otp', + changeDetection: ChangeDetectionStrategy.OnPush, + template: '', + // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property + inputs: INPUT_OTP_INPUTS, + providers: [accessorProvider], + standalone: true, +}) +export class IonInputOtp extends ValueAccessor { + protected el: HTMLElement; + constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone, injector: Injector) { + super(injector, r); + c.detach(); + this.el = r.nativeElement; + proxyOutputs(this, this.el, ['ionInput', 'ionChange', 'ionComplete', 'ionBlur', 'ionFocus']); + } + + @HostListener('ionInput', ['$event.target']) + handleIonInput(el: HTMLIonInputOtpElement): void { + this.handleValueChange(el, el.value); + } + + registerOnChange(fn: (_: any) => void): void { + super.registerOnChange((value: string) => { + if (this.type === 'number') { + /** + * If the input type is `number`, we need to convert the value to a number + * when the value is not empty. If the value is empty, we want to treat + * the value as null. + */ + fn(value === '' ? null : parseFloat(value)); + } else { + fn(value); + } + }); + } +} + +export declare interface IonInputOtp extends Components.IonInputOtp { + /** + * The `ionInput` event is fired each time the user modifies the input's value. + * Unlike the `ionChange` event, the `ionInput` event is fired for each alteration + * to the input's value. This typically happens for each keystroke as the user types. + * + * For elements that accept text input (`type=text`, `type=tel`, etc.), the interface + * is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others, + * the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If + * the input is cleared on edit, the type is `null`. + */ + ionInput: EventEmitter>; + /** + * The `ionChange` event is fired when the user modifies the input's value. + * Unlike the `ionInput` event, the `ionChange` event is only fired when changes + * are committed, not as the user types. + * + * The `ionChange` event fires when the `` component loses + * focus after its value has changed. + * + * This event will not emit when programmatically setting the `value` property. + */ + ionChange: EventEmitter>; + /** + * Emitted when all input boxes have been filled with valid values. + */ + ionComplete: EventEmitter>; + /** + * Emitted when the input group loses focus. + */ + ionBlur: EventEmitter>; + /** + * Emitted when the input group has focus. + */ + ionFocus: EventEmitter>; +} diff --git a/packages/angular/standalone/src/index.ts b/packages/angular/standalone/src/index.ts index f05e383dd4f..23debccc1cd 100644 --- a/packages/angular/standalone/src/index.ts +++ b/packages/angular/standalone/src/index.ts @@ -32,6 +32,7 @@ export { IonCheckbox, IonDatetime, IonInput, + IonInputOtp, IonIcon, IonRadioGroup, IonRange, From c6ae0d43cddee9ad10450b949e08dd325d04fe73 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 19 May 2025 13:41:56 -0400 Subject: [PATCH 51/81] test(angular): add tests for input-otp in lazy tests --- .../test/base/e2e/src/lazy/form.spec.ts | 91 ++++++++++++++++++- .../src/app/lazy/form/form.component.html | 14 +++ .../base/src/app/lazy/form/form.component.ts | 24 ++++- .../src/app/lazy/inputs/inputs.component.html | 10 ++ .../src/app/lazy/inputs/inputs.component.ts | 3 + 5 files changed, 140 insertions(+), 2 deletions(-) diff --git a/packages/angular/test/base/e2e/src/lazy/form.spec.ts b/packages/angular/test/base/e2e/src/lazy/form.spec.ts index 65611cd151f..1897adc7522 100644 --- a/packages/angular/test/base/e2e/src/lazy/form.spec.ts +++ b/packages/angular/test/base/e2e/src/lazy/form.spec.ts @@ -7,6 +7,8 @@ describe('Form', () => { it('should update Ionic form classes when calling form methods programmatically', async () => { cy.get('#input-touched').click(); cy.get('#touched-input-test').should('have.class', 'ion-touched'); + cy.get('#input-otp-touched').click(); + cy.get('#touched-input-otp-number-test').should('have.class', 'ion-touched'); }); describe('markAllAsTouched', () => { @@ -32,6 +34,9 @@ describe('Form', () => { input2: 'Default Value', inputMin: 1, inputMax: 1, + inputOtp: null, + inputOtpText: '', + inputOtp2: 1234, checkbox: false, radio: null }); @@ -41,6 +46,15 @@ describe('Form', () => { cy.get('ion-input.required').type('Some value'); cy.get('ion-input.required input').blur(); + // Test number OTP input + cy.get('#touched-input-otp-number-test input').first().type('5678'); + cy.get('#touched-input-otp-number-test input').last().focus().blur(); + + + // Test text OTP input + cy.get('#touched-input-otp-text-test input').first().type('ABCD'); + cy.get('#touched-input-otp-text-test input').last().focus().blur(); + testStatus('INVALID'); cy.get('ion-select').click(); @@ -60,6 +74,9 @@ describe('Form', () => { input2: 'Default Value', inputMin: 1, inputMax: 1, + inputOtp: 5678, + inputOtpText: 'ABCD', + inputOtp2: 1234, checkbox: false, radio: null }); @@ -75,6 +92,9 @@ describe('Form', () => { input2: 'Default Value', inputMin: 1, inputMax: 1, + inputOtp: null, + inputOtpText: '', + inputOtp2: 1234, checkbox: false, radio: null }); @@ -90,6 +110,9 @@ describe('Form', () => { input2: 'Default Value', inputMin: 1, inputMax: 1, + inputOtp: null, + inputOtpText: '', + inputOtp2: 1234, checkbox: true, radio: null }); @@ -105,8 +128,36 @@ describe('Form', () => { input2: 'Default Value', inputMin: 1, inputMax: 1, + inputOtp: null, + inputOtpText: '', + inputOtp2: 1234, + checkbox: false, + radio: 'nes', + }); + }); + + it('ion-input-otp should change', () => { + // Test number OTP input + cy.get('#touched-input-otp-number-test input').first().type('5678'); + cy.get('#touched-input-otp-number-test input').last().focus().blur(); + + // Test text OTP input + cy.get('#touched-input-otp-text-test input').first().type('ABCD'); + cy.get('#touched-input-otp-text-test input').last().focus().blur(); + + testData({ + datetime: '2010-08-20', + select: null, + toggle: false, + input: '', + input2: 'Default Value', + inputMin: 1, + inputMax: 1, + inputOtp: 5678, + inputOtpText: 'ABCD', + inputOtp2: 1234, checkbox: false, - radio: 'nes' + radio: null }); }); @@ -115,6 +166,38 @@ describe('Form', () => { cy.get('#submit-button').click(); cy.get('#submit').should('have.text', 'true'); }); + + it('ion-input-otp should validate both number and text types', () => { + // Test number OTP validation + cy.get('#touched-input-otp-number-test').should('have.class', 'ng-invalid'); + cy.get('#touched-input-otp-number-test input').first().type('5678'); + cy.get('#touched-input-otp-number-test input').last().focus().blur(); + cy.get('#touched-input-otp-number-test').should('have.class', 'ng-valid'); + + // Test text OTP validation + cy.get('#touched-input-otp-text-test').should('have.class', 'ng-invalid'); + cy.get('#touched-input-otp-text-test input').first().type('ABCD'); + cy.get('#touched-input-otp-text-test input').last().focus().blur(); + cy.get('#touched-input-otp-text-test').should('have.class', 'ng-valid'); + }); + + // Add test for partial OTP input validation + it('ion-input-otp should remain invalid when partially filled', () => { + // Test number OTP with only first digit + cy.get('#touched-input-otp-number-test').should('have.class', 'ng-invalid'); + cy.get('#touched-input-otp-number-test input').first().type('5'); + cy.get('#touched-input-otp-number-test input').eq(1).focus().blur(); + cy.get('#touched-input-otp-number-test').should('have.class', 'ng-invalid'); + + // Test text OTP with only first character + cy.get('#touched-input-otp-text-test').should('have.class', 'ng-invalid'); + cy.get('#touched-input-otp-text-test input').first().type('A'); + cy.get('#touched-input-otp-text-test input').eq(1).focus().blur(); + cy.get('#touched-input-otp-text-test').should('have.class', 'ng-invalid'); + + // Verify form status is still invalid + testStatus('INVALID'); + }); }); describe('blur', () => { @@ -128,6 +211,9 @@ describe('Form', () => { input2: 'Default Value', inputMin: 1, inputMax: 1, + inputOtp: null, + inputOtpText: '', + inputOtp2: 1234, checkbox: false, radio: null }); @@ -140,6 +226,9 @@ describe('Form', () => { input2: 'Default Value', inputMin: 1, inputMax: 1, + inputOtp: null, + inputOtpText: '', + inputOtp2: 1234, checkbox: true, radio: null }); diff --git a/packages/angular/test/base/src/app/lazy/form/form.component.html b/packages/angular/test/base/src/app/lazy/form/form.component.html index 6b4a04fd2f7..3023c6640ce 100644 --- a/packages/angular/test/base/src/app/lazy/form/form.component.html +++ b/packages/angular/test/base/src/app/lazy/form/form.component.html @@ -44,6 +44,20 @@ + + Input OTP (required) + + + + Input OTP Text (required) + + + Set Input OTP Touched + + + Input OTP + + Checkbox diff --git a/packages/angular/test/base/src/app/lazy/form/form.component.ts b/packages/angular/test/base/src/app/lazy/form/form.component.ts index 7c14b429af1..5e670482b47 100644 --- a/packages/angular/test/base/src/app/lazy/form/form.component.ts +++ b/packages/angular/test/base/src/app/lazy/form/form.component.ts @@ -1,6 +1,15 @@ import { Component } from '@angular/core'; -import { UntypedFormGroup, UntypedFormBuilder, Validators, UntypedFormControl } from '@angular/forms'; +import { UntypedFormGroup, UntypedFormBuilder, Validators, UntypedFormControl, AbstractControl, ValidationErrors } from '@angular/forms'; +function otpRequiredLength(length: number) { + return (control: AbstractControl): ValidationErrors | null => { + const value = control.value; + if (!value || value.toString().length !== length) { + return { otpLength: true }; + } + return null; + }; +} @Component({ selector: 'app-form', templateUrl: './form.component.html', @@ -19,6 +28,9 @@ export class FormComponent { toggle: [false], input: ['', Validators.required], input2: ['Default Value'], + inputOtp: [null, [Validators.required, otpRequiredLength(4)]], + inputOtpText: ['', [Validators.required, otpRequiredLength(4)]], + inputOtp2: [1234], inputMin: [1, Validators.min(1)], inputMax: [1, Validators.max(1)], checkbox: [false], @@ -35,6 +47,13 @@ export class FormComponent { } } + setOtpTouched() { + const formControl = this.profileForm.get('inputOtp'); + if (formControl) { + formControl.markAsTouched(); + } + } + onSubmit() { this.submitted = 'true'; } @@ -46,6 +65,9 @@ export class FormComponent { toggle: true, input: 'Some value', input2: 'Another values', + inputOtp: 5678, + inputOtpText: 'ABCD', + inputOtp2: 1234, checkbox: true, radio: 'nes' }); diff --git a/packages/angular/test/base/src/app/lazy/inputs/inputs.component.html b/packages/angular/test/base/src/app/lazy/inputs/inputs.component.html index 07cf0727e33..7f5dfc8264c 100644 --- a/packages/angular/test/base/src/app/lazy/inputs/inputs.component.html +++ b/packages/angular/test/base/src/app/lazy/inputs/inputs.component.html @@ -71,6 +71,16 @@ {{input}} + + Input OTP + {{inputOtp}} + + + + Input OTP Mirror + {{inputOtp}} + + Checkbox diff --git a/packages/angular/test/base/src/app/lazy/inputs/inputs.component.ts b/packages/angular/test/base/src/app/lazy/inputs/inputs.component.ts index 4a6c9dea39f..e53f73948c3 100644 --- a/packages/angular/test/base/src/app/lazy/inputs/inputs.component.ts +++ b/packages/angular/test/base/src/app/lazy/inputs/inputs.component.ts @@ -9,6 +9,7 @@ export class InputsComponent { datetime? = '1994-03-15'; input? = 'some text'; + inputOtp? = '1234'; checkbox = true; radio? = 'nes'; toggle = true; @@ -20,6 +21,7 @@ export class InputsComponent { console.log('set values'); this.datetime = '1994-03-15'; this.input = 'some text'; + this.inputOtp = '1234'; this.checkbox = true; this.radio = 'nes'; this.toggle = true; @@ -31,6 +33,7 @@ export class InputsComponent { console.log('reset values'); this.datetime = undefined; this.input = undefined; + this.inputOtp = undefined; this.checkbox = false; this.radio = undefined; this.toggle = false; From d53b808ecb56b93d5ad18967e27bde7b299dee4a Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Mon, 19 May 2025 13:42:59 -0400 Subject: [PATCH 52/81] test(angular): add tests for input-otp in standalone tests --- .../src/standalone/value-accessors.spec.ts | 76 ++++++++++++++++++- .../standalone/app-standalone/app.routes.ts | 1 + .../home-page/home-page.component.html | 5 ++ .../input-otp/input-otp.component.html | 11 +++ .../input-otp/input-otp.component.ts | 34 +++++++++ 5 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 packages/angular/test/base/src/app/standalone/value-accessors/input-otp/input-otp.component.html create mode 100644 packages/angular/test/base/src/app/standalone/value-accessors/input-otp/input-otp.component.ts diff --git a/packages/angular/test/base/e2e/src/standalone/value-accessors.spec.ts b/packages/angular/test/base/e2e/src/standalone/value-accessors.spec.ts index ab03da596a1..470a565a3c7 100644 --- a/packages/angular/test/base/e2e/src/standalone/value-accessors.spec.ts +++ b/packages/angular/test/base/e2e/src/standalone/value-accessors.spec.ts @@ -1,4 +1,3 @@ - describe('Value Accessors', () => { describe('Checkbox', () => { @@ -147,4 +146,79 @@ describe('Value Accessors', () => { }); }); + describe('Input OTP', () => { + beforeEach(() => cy.visit('/standalone/value-accessors/input-otp')); + + it('should update the form value', () => { + cy.get('#formValue').should('have.text', JSON.stringify({ + inputOtpString: '', + inputOtpNumber: '' + }, null, 2)); + cy.get('ion-input-otp[formControlName="inputOtpString"]').should('have.class', 'ion-pristine'); + cy.get('ion-input-otp[formControlName="inputOtpNumber"]').should('have.class', 'ion-pristine'); + + cy.get('ion-input-otp[formControlName="inputOtpString"]').should('have.class', 'ion-invalid'); + cy.get('ion-input-otp[formControlName="inputOtpNumber"]').should('have.class', 'ion-invalid'); + + // Type into the string OTP input + cy.get('ion-input-otp[formControlName="inputOtpString"] input').eq(0).type('a'); + cy.get('ion-input-otp[formControlName="inputOtpString"] input').eq(1).type('b'); + cy.get('ion-input-otp[formControlName="inputOtpString"] input').eq(2).type('c'); + cy.get('ion-input-otp[formControlName="inputOtpString"] input').eq(3).type('d'); + cy.get('ion-input-otp[formControlName="inputOtpString"] input').eq(3).blur(); + + // Type into the number OTP input + cy.get('ion-input-otp[formControlName="inputOtpNumber"] input').eq(0).type('1'); + cy.get('ion-input-otp[formControlName="inputOtpNumber"] input').eq(1).type('2'); + cy.get('ion-input-otp[formControlName="inputOtpNumber"] input').eq(2).type('3'); + cy.get('ion-input-otp[formControlName="inputOtpNumber"] input').eq(3).type('4'); + cy.get('ion-input-otp[formControlName="inputOtpNumber"] input').eq(3).blur(); + + cy.get('#formValue').should('have.text', JSON.stringify({ + inputOtpString: 'abcd', + inputOtpNumber: 1234 + }, null, 2)); + + cy.get('ion-input-otp[formControlName="inputOtpString"]').should('have.class', 'ion-dirty'); + cy.get('ion-input-otp[formControlName="inputOtpNumber"]').should('have.class', 'ion-dirty'); + + cy.get('ion-input-otp[formControlName="inputOtpString"]').should('have.class', 'ion-valid'); + cy.get('ion-input-otp[formControlName="inputOtpNumber"]').should('have.class', 'ion-valid'); + }); + + it('should remain invalid when partially filled', () => { + cy.get('#formValue').should('have.text', JSON.stringify({ + inputOtpString: '', + inputOtpNumber: '' + }, null, 2)); + cy.get('ion-input-otp[formControlName="inputOtpString"]').should('have.class', 'ion-pristine'); + cy.get('ion-input-otp[formControlName="inputOtpNumber"]').should('have.class', 'ion-pristine'); + + cy.get('ion-input-otp[formControlName="inputOtpString"]').should('have.class', 'ion-invalid'); + cy.get('ion-input-otp[formControlName="inputOtpNumber"]').should('have.class', 'ion-invalid'); + + // Type only 2 characters into the string OTP input + cy.get('ion-input-otp[formControlName="inputOtpString"] input').eq(0).type('a'); + cy.get('ion-input-otp[formControlName="inputOtpString"] input').eq(1).type('b'); + cy.get('ion-input-otp[formControlName="inputOtpString"] input').eq(2).blur(); + + // Type only 2 characters into the number OTP input + cy.get('ion-input-otp[formControlName="inputOtpNumber"] input').eq(0).type('1'); + cy.get('ion-input-otp[formControlName="inputOtpNumber"] input').eq(1).type('2'); + cy.get('ion-input-otp[formControlName="inputOtpNumber"] input').eq(2).blur(); + + cy.get('#formValue').should('have.text', JSON.stringify({ + inputOtpString: 'ab', + inputOtpNumber: 12 + }, null, 2)); + + cy.get('ion-input-otp[formControlName="inputOtpString"]').should('have.class', 'ion-dirty'); + cy.get('ion-input-otp[formControlName="inputOtpNumber"]').should('have.class', 'ion-dirty'); + + // Verify both inputs remain invalid when partially filled + cy.get('ion-input-otp[formControlName="inputOtpString"]').should('have.class', 'ion-invalid'); + cy.get('ion-input-otp[formControlName="inputOtpNumber"]').should('have.class', 'ion-invalid'); + }); + }); + }); diff --git a/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts b/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts index c58432e0e9d..596aee68fdc 100644 --- a/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts +++ b/packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts @@ -44,6 +44,7 @@ export const routes: Routes = [ { path: 'checkbox', loadComponent: () => import('../value-accessors/checkbox/checkbox.component').then(c => c.CheckboxComponent) }, { path: 'datetime', loadComponent: () => import('../value-accessors/datetime/datetime.component').then(c => c.DatetimeComponent) }, { path: 'input', loadComponent: () => import('../value-accessors/input/input.component').then(c => c.InputComponent) }, + { path: 'input-otp', loadComponent: () => import('../value-accessors/input-otp/input-otp.component').then(c => c.InputOtpComponent) }, { path: 'radio-group', loadComponent: () => import('../value-accessors/radio-group/radio-group.component').then(c => c.RadioGroupComponent) }, { path: 'range', loadComponent: () => import('../value-accessors/range/range.component').then(c => c.RangeComponent) }, { path: 'searchbar', loadComponent: () => import('../value-accessors/searchbar/searchbar.component').then(c => c.SearchbarComponent) }, diff --git a/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html b/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html index af57a62512c..6c60543a837 100644 --- a/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html +++ b/packages/angular/test/base/src/app/standalone/home-page/home-page.component.html @@ -116,6 +116,11 @@ Input Test + + + Input OTP Test + + Radio Group Test diff --git a/packages/angular/test/base/src/app/standalone/value-accessors/input-otp/input-otp.component.html b/packages/angular/test/base/src/app/standalone/value-accessors/input-otp/input-otp.component.html new file mode 100644 index 00000000000..6f562f3aa6f --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/value-accessors/input-otp/input-otp.component.html @@ -0,0 +1,11 @@ +
+

IonInputOtp Value Accessors

+

+ This test checks the form integrations with ion-input-otp to make sure values are correctly assigned to the form group. +

+ + + String + Number + +
diff --git a/packages/angular/test/base/src/app/standalone/value-accessors/input-otp/input-otp.component.ts b/packages/angular/test/base/src/app/standalone/value-accessors/input-otp/input-otp.component.ts new file mode 100644 index 00000000000..6b62886d7fc --- /dev/null +++ b/packages/angular/test/base/src/app/standalone/value-accessors/input-otp/input-otp.component.ts @@ -0,0 +1,34 @@ +import { Component } from "@angular/core"; +import { FormBuilder, FormsModule, ReactiveFormsModule, Validators, AbstractControl, ValidationErrors } from "@angular/forms"; +import { IonInputOtp } from "@ionic/angular/standalone"; +import { ValueAccessorTestComponent } from "../value-accessor-test/value-accessor-test.component"; + +function otpRequiredLength(length: number) { + return (control: AbstractControl): ValidationErrors | null => { + const value = control.value; + if (!value || value.toString().length !== length) { + return { otpLength: true }; + } + return null; + }; +} + +@Component({ + selector: 'app-input-otp', + templateUrl: 'input-otp.component.html', + standalone: true, + imports: [ + IonInputOtp, + ReactiveFormsModule, + FormsModule, + ValueAccessorTestComponent + ] +}) +export class InputOtpComponent { + form = this.fb.group({ + inputOtpString: ['', [Validators.required, otpRequiredLength(4)]], + inputOtpNumber: ['', [Validators.required, otpRequiredLength(4)]], + }); + + constructor(private fb: FormBuilder) { } +} From 26349c555ad5be1a0d103171d907729773adfddf Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 20 May 2025 10:32:32 -0400 Subject: [PATCH 53/81] refactor(input-otp): naming update --- core/src/components/input-otp/input-otp.tsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index c34e4bf4c7d..ac9df1b9ca8 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -256,7 +256,7 @@ export class InputOTP implements ComponentInterface { if (this.value != null && String(this.value).length > 0) { const chars = String(this.value).split('').slice(0, this.length); chars.forEach((char, index) => { - if (this.validKeys.test(char)) { + if (this.validKeyPattern.test(char)) { this.inputValues[index] = char; } }); @@ -305,7 +305,7 @@ export class InputOTP implements ComponentInterface { * If a pattern is provided, use it to create a regex pattern * Otherwise, use the default regex pattern based on type */ - private get validKeys(): RegExp { + private get validKeyPattern(): RegExp { return new RegExp(`^${this.getPattern()}$`); } @@ -383,12 +383,12 @@ export class InputOTP implements ComponentInterface { } private onInput = (index: number) => (event: InputEvent) => { - const { validKeys } = this; + const { validKeyPattern } = this; const value = (event.target as HTMLInputElement).value; // Only allow input if it's a single character and matches the pattern - if (value.length > 1 || (value.length > 0 && !validKeys.test(value))) { + if (value.length > 1 || (value.length > 0 && !validKeyPattern.test(value))) { // Reset the input value if not valid this.inputRefs[index].value = ''; this.inputValues[index] = ''; @@ -494,7 +494,7 @@ export class InputOTP implements ComponentInterface { // If the input box contains a value and the key being // entered is a valid key for the input box update the value // and shift the values to the right if there is room. - if (this.inputValues[index] && this.validKeys.test(event.key)) { + if (this.inputValues[index] && this.validKeyPattern.test(event.key)) { if (!this.inputValues[length - 1]) { for (let i = length - 1; i > index; i--) { this.inputValues[i] = this.inputValues[i - 1]; @@ -519,7 +519,7 @@ export class InputOTP implements ComponentInterface { * the next empty input after pasting. */ private onPaste = (event: ClipboardEvent) => { - const { inputRefs, length, validKeys } = this; + const { inputRefs, length, validKeyPattern } = this; event.preventDefault(); @@ -535,7 +535,7 @@ export class InputOTP implements ComponentInterface { const validChars = pastedText .split('') - .filter((char) => validKeys.test(char)) + .filter((char) => validKeyPattern.test(char)) .slice(0, length); // Find the first empty input From eb7f8382b8accbd4609273e5932d4f324fa0d8d0 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 20 May 2025 10:50:35 -0400 Subject: [PATCH 54/81] refactor(input-otp): remove redundant code --- core/src/components/input-otp/input-otp.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index ac9df1b9ca8..067b7050a81 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -449,9 +449,6 @@ export class InputOTP implements ComponentInterface { if (event.key === 'Backspace') { if (this.inputValues[index]) { - // Remove the value at the current index - this.inputValues[index] = ''; - // Shift all values to the right of the current index left by one for (let i = index; i < length - 1; i++) { this.inputValues[i] = this.inputValues[i + 1]; From 2a9c274821463e3e51886cabb5b15741005abb03 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 20 May 2025 13:51:22 -0400 Subject: [PATCH 55/81] fix(input-otp): allow characters outside of latin when type is text --- core/src/components.d.ts | 4 +- core/src/components/input-otp/input-otp.tsx | 6 +- .../input-otp/test/basic/input-otp.e2e.ts | 183 +++++++++++++++++- 3 files changed, 187 insertions(+), 6 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 93c66544244..6e0e59d2473 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1347,7 +1347,7 @@ export namespace Components { */ "length": number; /** - * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[0-9]" For text (type="text"): "[a-zA-Z0-9]" + * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[0-9]" For text (type="text"): "[\\p{L}\\p{N}]" */ "pattern"?: string; /** @@ -6315,7 +6315,7 @@ declare namespace LocalJSX { */ "onIonInput"?: (event: IonInputOtpCustomEvent) => void; /** - * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[0-9]" For text (type="text"): "[a-zA-Z0-9]" + * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[0-9]" For text (type="text"): "[\\p{L}\\p{N}]" */ "pattern"?: string; /** diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 067b7050a81..e7d30353e25 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -89,7 +89,7 @@ export class InputOTP implements ComponentInterface { * A regex pattern string for allowed characters. Defaults based on type. * * For numbers (type="number"): "[0-9]" - * For text (type="text"): "[a-zA-Z0-9]" + * For text (type="text"): "[\\p{L}\\p{N}]" */ @Prop() pattern?: string; @@ -306,7 +306,7 @@ export class InputOTP implements ComponentInterface { * Otherwise, use the default regex pattern based on type */ private get validKeyPattern(): RegExp { - return new RegExp(`^${this.getPattern()}$`); + return new RegExp(`^${this.getPattern()}$`, 'u'); } /** @@ -318,7 +318,7 @@ export class InputOTP implements ComponentInterface { if (pattern) { return pattern; } - return type === 'number' ? '[0-9]' : '[a-zA-Z0-9]'; + return type === 'number' ? '[0-9]' : '[\\p{L}\\p{N}]'; } /** diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index 743e1871753..b5cec068af9 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -74,7 +74,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await verifyInputValues(inputOtp, ['2', '4', '6', '8']); }); - test('should accept text and numbers when type is set to text', async ({ page }) => { + test('should accept Latin characters when type is text', async ({ page }) => { await page.setContent(`Description`, config); const inputOtp = page.locator('ion-input-otp'); @@ -87,6 +87,102 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await verifyInputValues(inputOtp, ['A', '2', 'B', '5']); }); + test('should accept accented Latin characters when type is text', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('áéíó'); + + await verifyInputValues(inputOtp, ['á', 'é', 'í', 'ó']); + }); + + test('should accept Cyrillic characters when type is text', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('АбвГ'); + + await verifyInputValues(inputOtp, ['А', 'б', 'в', 'Г']); + }); + + test('should accept Chinese characters when type is text', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('中国北京'); + + await verifyInputValues(inputOtp, ['中', '国', '北', '京']); + }); + + test('should accept Japanese characters when type is text', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('ひらがな'); + + await verifyInputValues(inputOtp, ['ひ', 'ら', 'が', 'な']); + }); + + test('should accept Korean characters when type is text', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('안녕하세'); + + await verifyInputValues(inputOtp, ['안', '녕', '하', '세']); + }); + + test('should accept Arabic characters when type is text', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('أبجد'); + + await verifyInputValues(inputOtp, ['أ', 'ب', 'ج', 'د']); + }); + + test('should accept mixed language characters when type is text', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('A漢字Б'); + + await verifyInputValues(inputOtp, ['A', '漢', '字', 'Б']); + }); + + test('should reject special characters when type is text', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('!@#$%^&*()-,:;./?+'); + + await verifyInputValues(inputOtp, ['', '', '', '']); + }); + test('should accept custom pattern of lowercase and uppercase letters when pattern is set', async ({ page }) => { await page.setContent(`Description`, config); @@ -112,6 +208,91 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await verifyInputValues(inputOtp, ['D', 'E', 'F', 'G']); }); + + test('should accept custom pattern of all characters when pattern is set', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('*#.!'); + + await verifyInputValues(inputOtp, ['*', '#', '.', '!']); + }); + + test('should accept only Latin characters and numbers when pattern is set', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('Ab中国北京12'); + + await verifyInputValues(inputOtp, ['A', 'b', '1', '2']); + }); + + test('should accept only Cyrillic characters when pattern is set', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('АбABC123вГ'); + + await verifyInputValues(inputOtp, ['А', 'б', 'в', 'Г']); + }); + + test('should accept only Chinese characters when pattern is set', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('中国ABC123北京'); + + await verifyInputValues(inputOtp, ['中', '国', '北', '京']); + }); + + test('should accept only Japanese characters when pattern is set', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('ひらABC123がな'); + + await verifyInputValues(inputOtp, ['ひ', 'ら', 'が', 'な']); + }); + + test('should accept only Korean characters when pattern is set', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('안녕ABC123하세'); + + await verifyInputValues(inputOtp, ['안', '녕', '하', '세']); + }); + + test('should accept only Arabic characters when pattern is set', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('أبجد123'); + + await verifyInputValues(inputOtp, ['أ', 'ب', 'ج', 'د']); + }); }); test.describe(title('input-otp: input functionality'), () => { From 72755ce5f9d5237ee6209c084086939048ba4ef3 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 20 May 2025 13:55:34 -0400 Subject: [PATCH 56/81] style: lint --- .../input-otp/test/basic/input-otp.e2e.ts | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index b5cec068af9..58acd31dc13 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -247,7 +247,10 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should accept only Chinese characters when pattern is set', async ({ page }) => { - await page.setContent(`Description`, config); + await page.setContent( + `Description`, + config + ); const inputOtp = page.locator('ion-input-otp'); const firstInput = page.locator('ion-input-otp input').first(); @@ -259,7 +262,10 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should accept only Japanese characters when pattern is set', async ({ page }) => { - await page.setContent(`Description`, config); + await page.setContent( + `Description`, + config + ); const inputOtp = page.locator('ion-input-otp'); const firstInput = page.locator('ion-input-otp input').first(); @@ -271,7 +277,10 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should accept only Korean characters when pattern is set', async ({ page }) => { - await page.setContent(`Description`, config); + await page.setContent( + `Description`, + config + ); const inputOtp = page.locator('ion-input-otp'); const firstInput = page.locator('ion-input-otp input').first(); @@ -283,7 +292,10 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should accept only Arabic characters when pattern is set', async ({ page }) => { - await page.setContent(`Description`, config); + await page.setContent( + `Description`, + config + ); const inputOtp = page.locator('ion-input-otp'); const firstInput = page.locator('ion-input-otp input').first(); From ec35637753589426f4283bef707e2a7383be8d4d Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 20 May 2025 14:03:54 -0400 Subject: [PATCH 57/81] refactor(input-otp): change for loop to findIndex --- core/src/components/input-otp/input-otp.tsx | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index e7d30353e25..a35128d7c40 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -686,19 +686,16 @@ export class InputOTP implements ComponentInterface { } /** - * Loops through the input values and returns the index + * Searches through the input values and returns the index * of the first empty input. * Returns -1 if all inputs are filled. */ private getFirstEmptyIndex() { const { inputValues, length } = this; - - for (let i = 0; i < length; i++) { - if (!inputValues[i] || inputValues[i] === '') { - return i; - } - } - return -1; + // Create an array of the same length as the input OTP + // and fill it with the input values + const values = Array.from({ length }, (_, i) => inputValues[i] || ''); + return values.findIndex(value => !value || value === '') ?? -1; } /** From b0fea618958305493cd81f2f366007c14df4d020 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 20 May 2025 14:04:59 -0400 Subject: [PATCH 58/81] style: lint --- core/src/components/input-otp/input-otp.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index a35128d7c40..156f2878aea 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -695,7 +695,7 @@ export class InputOTP implements ComponentInterface { // Create an array of the same length as the input OTP // and fill it with the input values const values = Array.from({ length }, (_, i) => inputValues[i] || ''); - return values.findIndex(value => !value || value === '') ?? -1; + return values.findIndex((value) => !value || value === '') ?? -1; } /** From 1c9c939eef9a2c522f82d77cf98543b2fc45dc5d Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 20 May 2025 16:26:20 -0400 Subject: [PATCH 59/81] fix(input-otp): allow any kind of numeric character in any script for number type --- core/src/components.d.ts | 4 +-- core/src/components/input-otp/input-otp.tsx | 4 +-- .../input-otp/test/basic/input-otp.e2e.ts | 27 +++++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 6e0e59d2473..58df4596053 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1347,7 +1347,7 @@ export namespace Components { */ "length": number; /** - * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[0-9]" For text (type="text"): "[\\p{L}\\p{N}]" + * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[\\p{N}]" For text (type="text"): "[\\p{L}\\p{N}]" */ "pattern"?: string; /** @@ -6315,7 +6315,7 @@ declare namespace LocalJSX { */ "onIonInput"?: (event: IonInputOtpCustomEvent) => void; /** - * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[0-9]" For text (type="text"): "[\\p{L}\\p{N}]" + * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[\\p{N}]" For text (type="text"): "[\\p{L}\\p{N}]" */ "pattern"?: string; /** diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 156f2878aea..f4547576b7b 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -88,7 +88,7 @@ export class InputOTP implements ComponentInterface { /** * A regex pattern string for allowed characters. Defaults based on type. * - * For numbers (type="number"): "[0-9]" + * For numbers (type="number"): "[\\p{N}]" * For text (type="text"): "[\\p{L}\\p{N}]" */ @Prop() pattern?: string; @@ -318,7 +318,7 @@ export class InputOTP implements ComponentInterface { if (pattern) { return pattern; } - return type === 'number' ? '[0-9]' : '[\\p{L}\\p{N}]'; + return type === 'number' ? '[\\p{N}]' : '[\\p{L}\\p{N}]'; } /** diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index 58acd31dc13..cc8d339332b 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -74,6 +74,33 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await verifyInputValues(inputOtp, ['2', '4', '6', '8']); }); + test('should accept Eastern Arabic numerals by default', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('١٢٣٤'); + + // There is an issue with Playwright automatically flipping the + // values, so we check for the flipped values from above, even though + // it is entered correctly in the component. + await verifyInputValues(inputOtp, ['١', '٢', '٣', '٤']); + }); + + test('should accept only Western Arabic numerals when pattern is set to [0-9]', async ({ page }) => { + await page.setContent(`Description`, config); + + const inputOtp = page.locator('ion-input-otp'); + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('12٣٤34'); + + await verifyInputValues(inputOtp, ['1', '2', '3', '4']); + }); + test('should accept Latin characters when type is text', async ({ page }) => { await page.setContent(`Description`, config); From d1dc6034c008e7266ec4ac9dd4c42d5ed6dfe16d Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 21 May 2025 16:16:05 -0400 Subject: [PATCH 60/81] docs(input-otp): add code blocks in docs --- core/src/components.d.ts | 4 ++-- core/src/components/input-otp/input-otp.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 58df4596053..043491c87ac 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1347,7 +1347,7 @@ export namespace Components { */ "length": number; /** - * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[\\p{N}]" For text (type="text"): "[\\p{L}\\p{N}]" + * A regex pattern string for allowed characters. Defaults based on type. For numbers (`type="number"`): `"[\\p{N}]"` For text (`type="text"`): `"[\\p{L}\\p{N}]"` */ "pattern"?: string; /** @@ -6315,7 +6315,7 @@ declare namespace LocalJSX { */ "onIonInput"?: (event: IonInputOtpCustomEvent) => void; /** - * A regex pattern string for allowed characters. Defaults based on type. For numbers (type="number"): "[\\p{N}]" For text (type="text"): "[\\p{L}\\p{N}]" + * A regex pattern string for allowed characters. Defaults based on type. For numbers (`type="number"`): `"[\\p{N}]"` For text (`type="text"`): `"[\\p{L}\\p{N}]"` */ "pattern"?: string; /** diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index f4547576b7b..b6f9dd69b10 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -88,8 +88,8 @@ export class InputOTP implements ComponentInterface { /** * A regex pattern string for allowed characters. Defaults based on type. * - * For numbers (type="number"): "[\\p{N}]" - * For text (type="text"): "[\\p{L}\\p{N}]" + * For numbers (`type="number"`): `"[\\p{N}]"` + * For text (`type="text"`): `"[\\p{L}\\p{N}]"` */ @Prop() pattern?: string; From ff4bb55a2a9327d8718cc27e493f09f19d0970f4 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 21 May 2025 17:30:55 -0400 Subject: [PATCH 61/81] docs(input-otp): document as single slash --- core/src/components.d.ts | 4 ++-- core/src/components/input-otp/input-otp.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 043491c87ac..019fa5318c8 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1347,7 +1347,7 @@ export namespace Components { */ "length": number; /** - * A regex pattern string for allowed characters. Defaults based on type. For numbers (`type="number"`): `"[\\p{N}]"` For text (`type="text"`): `"[\\p{L}\\p{N}]"` + * A regex pattern string for allowed characters. Defaults based on type. For numbers (`type="number"`): `"[\p{N}]"` For text (`type="text"`): `"[\p{L}\p{N}]"` */ "pattern"?: string; /** @@ -6315,7 +6315,7 @@ declare namespace LocalJSX { */ "onIonInput"?: (event: IonInputOtpCustomEvent) => void; /** - * A regex pattern string for allowed characters. Defaults based on type. For numbers (`type="number"`): `"[\\p{N}]"` For text (`type="text"`): `"[\\p{L}\\p{N}]"` + * A regex pattern string for allowed characters. Defaults based on type. For numbers (`type="number"`): `"[\p{N}]"` For text (`type="text"`): `"[\p{L}\p{N}]"` */ "pattern"?: string; /** diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index b6f9dd69b10..d3164e1fe5d 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -88,8 +88,8 @@ export class InputOTP implements ComponentInterface { /** * A regex pattern string for allowed characters. Defaults based on type. * - * For numbers (`type="number"`): `"[\\p{N}]"` - * For text (`type="text"`): `"[\\p{L}\\p{N}]"` + * For numbers (`type="number"`): `"[\p{N}]"` + * For text (`type="text"`): `"[\p{L}\p{N}]"` */ @Prop() pattern?: string; From acbba7c35c3fe22cb0c87a6dad67a2508b8162ee Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Thu, 22 May 2025 09:49:14 -0400 Subject: [PATCH 62/81] test(input-otp): use script pattern in e2e test --- .../components/input-otp/test/basic/input-otp.e2e.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index cc8d339332b..16c9f8800ec 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -262,7 +262,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should accept only Cyrillic characters when pattern is set', async ({ page }) => { - await page.setContent(`Description`, config); + await page.setContent(`Description`, config); const inputOtp = page.locator('ion-input-otp'); const firstInput = page.locator('ion-input-otp input').first(); @@ -275,7 +275,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { test('should accept only Chinese characters when pattern is set', async ({ page }) => { await page.setContent( - `Description`, + `Description`, config ); @@ -290,7 +290,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { test('should accept only Japanese characters when pattern is set', async ({ page }) => { await page.setContent( - `Description`, + `Description`, config ); @@ -305,7 +305,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { test('should accept only Korean characters when pattern is set', async ({ page }) => { await page.setContent( - `Description`, + `Description`, config ); @@ -320,7 +320,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { test('should accept only Arabic characters when pattern is set', async ({ page }) => { await page.setContent( - `Description`, + `Description`, config ); From c5e97c39fc0629ef05e9cbb77567c4451aaa997a Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Thu, 22 May 2025 16:22:00 -0400 Subject: [PATCH 63/81] fix(input-otp): inherit aria attributes and hide empty input boxes from screen readers --- core/src/components/input-otp/input-otp.tsx | 21 ++++- .../input-otp/test/a11y/input-otp.e2e.ts | 88 +++++++++++++++++++ .../input-otp/test/basic/input-otp.e2e.ts | 5 +- 3 files changed, 109 insertions(+), 5 deletions(-) create mode 100644 core/src/components/input-otp/test/a11y/input-otp.e2e.ts diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index d3164e1fe5d..3c169ea213e 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -1,5 +1,7 @@ import type { ComponentInterface, EventEmitter } from '@stencil/core'; import { Component, Element, Event, Fragment, Host, Prop, State, h, Watch } from '@stencil/core'; +import type { Attributes } from '@utils/helpers'; +import { inheritAriaAttributes } from '@utils/helpers'; import { printIonWarning } from '@utils/logging'; import { isRTL } from '@utils/rtl'; import { createColorClasses } from '@utils/theme'; @@ -23,6 +25,7 @@ import type { scoped: true, }) export class InputOTP implements ComponentInterface { + private inheritedAttributes: Attributes = {}; private inputRefs: HTMLInputElement[] = []; private inputId = `ion-input-otp-${inputIds++}`; private parsedSeparators: number[] = []; @@ -242,10 +245,15 @@ export class InputOTP implements ComponentInterface { } componentWillLoad() { + this.inheritedAttributes = inheritAriaAttributes(this.el); this.processSeparators(); this.initializeValues(); } + componentDidLoad() { + this.updateTabIndexes(); + } + /** * Initializes the input values array based on the current value prop. * This splits the value into individual characters and validates them against @@ -352,6 +360,7 @@ export class InputOTP implements ComponentInterface { if (newValue.length === length) { this.ionComplete.emit({ value: newValue }); } + this.updateTabIndexes(); } /** @@ -675,13 +684,16 @@ export class InputOTP implements ComponentInterface { } } - // Update tabIndex for all inputs + // Update tabIndex and aria-hidden for all inputs inputRefs.forEach((input, index) => { - // If all boxes are filled, make the last box tabbable - // Otherwise, make the first empty box tabbable const shouldBeTabbable = firstEmptyIndex === -1 ? index === length - 1 : firstEmptyIndex === index; input.tabIndex = shouldBeTabbable ? 0 : -1; + + // If the input is empty and not the first empty input, + // it should be hidden from screen readers. + const isEmpty = !inputValues[index] || inputValues[index] === ''; + input.setAttribute('aria-hidden', isEmpty && !shouldBeTabbable ? 'true' : 'false'); }); } @@ -716,6 +728,7 @@ export class InputOTP implements ComponentInterface { disabled, fill, hasFocus, + inheritedAttributes, inputId, inputRefs, inputValues, @@ -741,7 +754,7 @@ export class InputOTP implements ComponentInterface { 'input-otp-readonly': readonly, })} > -
+
{Array.from({ length }).map((_, index) => ( <>
diff --git a/core/src/components/input-otp/test/a11y/input-otp.e2e.ts b/core/src/components/input-otp/test/a11y/input-otp.e2e.ts new file mode 100644 index 00000000000..6a066b19ce8 --- /dev/null +++ b/core/src/components/input-otp/test/a11y/input-otp.e2e.ts @@ -0,0 +1,88 @@ +import AxeBuilder from '@axe-core/playwright'; +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +/** + * Functionality is the same across modes + */ +configs().forEach(({ title, config }) => { + test.describe(title('input-otp: a11y'), () => { + test('should not have accessibility violations', async ({ page }) => { + await page.setContent( + ` +
+ +
+ `, + config + ); + + const results = await new AxeBuilder({ page }).analyze(); + expect(results.violations).toEqual([]); + }); + + test('should render with correct aria attributes on initial load', async ({ page }) => { + await page.setContent(``, config); + + const inputOtpGroup = page.locator('ion-input-otp .input-otp-group'); + await expect(inputOtpGroup).toHaveAttribute('aria-label', 'One-time password input'); + + const inputBoxes = page.locator('ion-input-otp input'); + + await expect(inputBoxes.nth(0)).toHaveAttribute('aria-hidden', 'false'); + await expect(inputBoxes.nth(1)).toHaveAttribute('aria-hidden', 'true'); + await expect(inputBoxes.nth(2)).toHaveAttribute('aria-hidden', 'true'); + await expect(inputBoxes.nth(3)).toHaveAttribute('aria-hidden', 'true'); + }); + + test('should update aria-hidden when value is set', async ({ page }) => { + await page.setContent(``, config); + + const inputBoxes = page.locator('ion-input-otp input'); + + await expect(inputBoxes.nth(0)).toHaveAttribute('aria-hidden', 'false'); + await expect(inputBoxes.nth(1)).toHaveAttribute('aria-hidden', 'false'); + await expect(inputBoxes.nth(2)).toHaveAttribute('aria-hidden', 'false'); + await expect(inputBoxes.nth(3)).toHaveAttribute('aria-hidden', 'true'); + }); + + test('should update aria-hidden when typing a value', async ({ page }) => { + await page.setContent(``, config); + + const inputBoxes = page.locator('ion-input-otp input'); + + const firstInput = page.locator('ion-input-otp input').first(); + await firstInput.focus(); + + await page.keyboard.type('123'); + + await expect(inputBoxes.nth(0)).toHaveAttribute('aria-hidden', 'false'); + await expect(inputBoxes.nth(1)).toHaveAttribute('aria-hidden', 'false'); + await expect(inputBoxes.nth(2)).toHaveAttribute('aria-hidden', 'false'); + await expect(inputBoxes.nth(3)).toHaveAttribute('aria-hidden', 'false'); + }); + + test('should update aria-hidden when value is cleared using backspace', async ({ page }) => { + await page.setContent(``, config); + + const inputBoxes = page.locator('ion-input-otp input'); + + await page.keyboard.press('Tab'); + await page.keyboard.press('Backspace'); + await page.keyboard.press('Backspace'); + + await expect(inputBoxes.nth(0)).toHaveAttribute('aria-hidden', 'false'); + await expect(inputBoxes.nth(1)).toHaveAttribute('aria-hidden', 'true'); + await expect(inputBoxes.nth(2)).toHaveAttribute('aria-hidden', 'true'); + await expect(inputBoxes.nth(3)).toHaveAttribute('aria-hidden', 'true'); + }); + + test('should update aria-label and aria-labelledby when set on host', async ({ page }) => { + await page.setContent(``, config); + + const inputOtpGroup = page.locator('ion-input-otp .input-otp-group'); + await expect(inputOtpGroup).toHaveAttribute('aria-label', 'Custom label'); + await expect(inputOtpGroup).toHaveAttribute('aria-labelledby', 'my-label'); + }); + }); +}); diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index 16c9f8800ec..32a11b157ce 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -262,7 +262,10 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { }); test('should accept only Cyrillic characters when pattern is set', async ({ page }) => { - await page.setContent(`Description`, config); + await page.setContent( + `Description`, + config + ); const inputOtp = page.locator('ion-input-otp'); const firstInput = page.locator('ion-input-otp input').first(); From 9d905b2b943453b28d79d9f33df99038534bc125 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Thu, 22 May 2025 17:12:52 -0400 Subject: [PATCH 64/81] fix(input-otp): hide description when there is no content --- core/src/components/input-otp/input-otp.scss | 4 ++++ core/src/components/input-otp/input-otp.tsx | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/core/src/components/input-otp/input-otp.scss b/core/src/components/input-otp/input-otp.scss index 5dd53f4109a..2b8b12ee585 100644 --- a/core/src/components/input-otp/input-otp.scss +++ b/core/src/components/input-otp/input-otp.scss @@ -130,6 +130,10 @@ text-align: center; } +.input-otp-description-hidden { + display: none; +} + // Input Separator // ---------------------------------------------------------------- diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 3c169ea213e..e3cd6773184 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -726,6 +726,7 @@ export class InputOTP implements ComponentInterface { autocapitalize, color, disabled, + el, fill, hasFocus, inheritedAttributes, @@ -741,6 +742,7 @@ export class InputOTP implements ComponentInterface { const inputmode = this.getInputmode(); const tabbableIndex = this.getTabbableIndex(); const pattern = this.getPattern(); + const hasDescription = el.querySelector('.input-otp-description')?.textContent?.trim() !== ''; return ( ))}
-
+
From 4015ee4fea8cb6d6b17ef935aecfb7919137a09d Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Fri, 23 May 2025 13:51:50 -0400 Subject: [PATCH 65/81] fix(input-otp): properly handle value updates and add tests --- core/src/components.d.ts | 2 +- core/src/components/input-otp/input-otp.tsx | 32 ++++++++++++------- .../input-otp/test/a11y/input-otp.e2e.ts | 5 ++- .../test/base/e2e/src/lazy/inputs.spec.ts | 27 +++++++++++++--- .../src/app/lazy/form/form.component.html | 4 +-- .../src/app/lazy/inputs/inputs.component.html | 2 +- 6 files changed, 50 insertions(+), 22 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 019fa5318c8..7520ea08c04 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1355,7 +1355,7 @@ export namespace Components { */ "readonly": boolean; /** - * Resets the input values and focus state. + * Resets the value and focus state. */ "reset": () => Promise; /** diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index e3cd6773184..8e955130929 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -261,24 +261,31 @@ export class InputOTP implements ComponentInterface { * input boxes and the value of the input group is updated. */ private initializeValues() { - if (this.value != null && String(this.value).length > 0) { - const chars = String(this.value).split('').slice(0, this.length); - chars.forEach((char, index) => { - if (this.validKeyPattern.test(char)) { - this.inputValues[index] = char; - } - }); - // Update the value without emitting events - this.value = this.inputValues.join(''); + // Clear all input values + this.inputValues = Array(this.length).fill(''); + + // If the value is null, undefined, or an empty string, return + if (this.value == null || String(this.value).length === 0) { + return; } + + // Split the value into individual characters and validate + // them against the allowed pattern + const chars = String(this.value).split('').slice(0, this.length); + chars.forEach((char, index) => { + if (this.validKeyPattern.test(char)) { + this.inputValues[index] = char; + } + }); + // Update the value without emitting events + this.value = this.inputValues.join(''); } /** - * Resets the input values and focus state. + * Resets the value and focus state. */ @Method() async reset() { - this.inputValues = Array(this.length).fill(''); this.value = ''; this.focusedValue = null; @@ -790,7 +797,8 @@ export class InputOTP implements ComponentInterface { class={{ 'input-otp-description': true, 'input-otp-description-hidden': !hasDescription, - }}> + }} + >
diff --git a/core/src/components/input-otp/test/a11y/input-otp.e2e.ts b/core/src/components/input-otp/test/a11y/input-otp.e2e.ts index 6a066b19ce8..19195b43a67 100644 --- a/core/src/components/input-otp/test/a11y/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/a11y/input-otp.e2e.ts @@ -78,7 +78,10 @@ configs().forEach(({ title, config }) => { }); test('should update aria-label and aria-labelledby when set on host', async ({ page }) => { - await page.setContent(``, config); + await page.setContent( + ``, + config + ); const inputOtpGroup = page.locator('ion-input-otp .input-otp-group'); await expect(inputOtpGroup).toHaveAttribute('aria-label', 'Custom label'); diff --git a/packages/angular/test/base/e2e/src/lazy/inputs.spec.ts b/packages/angular/test/base/e2e/src/lazy/inputs.spec.ts index 5f9bb0525ae..8c1c2ca4bf7 100644 --- a/packages/angular/test/base/e2e/src/lazy/inputs.spec.ts +++ b/packages/angular/test/base/e2e/src/lazy/inputs.spec.ts @@ -3,17 +3,18 @@ describe('Inputs', () => { cy.visit('/lazy/inputs'); }) - it('should have default value', () => { + it('should have default values', () => { cy.get('ion-checkbox').should('have.prop', 'checked').and('equal', true); cy.get('ion-radio-group').should('have.prop', 'value').and('equal', 'nes'); cy.get('ion-toggle').should('have.prop', 'checked').and('equal', true); cy.get('ion-input').should('have.prop', 'value').and('equal', 'some text'); + cy.get('ion-input-otp').should('have.prop', 'value').and('equal', '1234'); cy.get('ion-datetime').should('have.prop', 'value').and('equal', '1994-03-15'); cy.get('ion-select').should('have.prop', 'value').and('equal', 'nes'); cy.get('ion-range').should('have.prop', 'value').and('equal', 50); }); - it('should have reset value', () => { + it('should reset values', () => { cy.get('#reset-button').click(); cy.get('ion-checkbox').should('have.prop', 'checked').and('equal', false); @@ -26,12 +27,13 @@ describe('Inputs', () => { * value property is undefined. */ cy.get('ion-input').should('not.have.prop', 'value'); + cy.get('ion-input-otp').should('not.have.prop', 'value'); cy.get('ion-datetime').should('not.have.prop', 'value'); cy.get('ion-select').should('not.have.prop', 'value'); cy.get('ion-range').should('not.have.prop', 'value'); }); - it('should get some value', () => { + it('should set values', () => { cy.get('#reset-button').click(); cy.get('#set-button').click(); @@ -39,12 +41,13 @@ describe('Inputs', () => { cy.get('ion-radio-group').should('have.prop', 'value').and('equal', 'nes'); cy.get('ion-toggle').should('have.prop', 'checked').and('equal', true); cy.get('ion-input').should('have.prop', 'value').and('equal', 'some text'); + cy.get('ion-input-otp').should('have.prop', 'value').and('equal', '1234'); cy.get('ion-datetime').should('have.prop', 'value').and('equal', '1994-03-15'); cy.get('ion-select').should('have.prop', 'value').and('equal', 'nes'); cy.get('ion-range').should('have.prop', 'value').and('equal', 50); }); - it('change values should update angular', () => { + it('should update angular when values change', () => { cy.get('#reset-button').click(); cy.get('ion-checkbox#first-checkbox').click(); @@ -52,7 +55,10 @@ describe('Inputs', () => { cy.get('ion-toggle').first().click(); cy.get('ion-input').eq(0).type('hola'); - cy.get('ion-input input').eq(0).blur(); + cy.focused().blur(); + + cy.get('ion-input-otp input').eq(0).type('1234'); + cy.focused().blur(); // Set date to 1994-03-14 cy.get('ion-datetime').first().shadow().find('.calendar-day:not([disabled])').first().click(); @@ -68,7 +74,18 @@ describe('Inputs', () => { cy.get('#radio-note').should('have.text', 'nes'); cy.get('#toggle-note').should('have.text', 'true'); cy.get('#input-note').should('have.text', 'hola'); + cy.get('#input-otp-note').should('have.text', '1234'); cy.get('#datetime-note').should('have.text', '1994-03-14'); cy.get('#select-note').should('have.text', 'ps'); }); + + it('should update values when erasing input', () => { + cy.get('ion-input').eq(0).type('{backspace}'); + cy.get('ion-input').should('have.prop', 'value').and('equal', 'some tex'); + cy.get('#input-note').should('have.text', 'some tex'); + + cy.get('ion-input-otp input:last').eq(0).type('{backspace}'); + cy.get('ion-input-otp').should('have.prop', 'value').and('equal', '123'); + cy.get('#input-otp-note').should('have.text', '123'); + }); }); diff --git a/packages/angular/test/base/src/app/lazy/form/form.component.html b/packages/angular/test/base/src/app/lazy/form/form.component.html index 3023c6640ce..f9244756da4 100644 --- a/packages/angular/test/base/src/app/lazy/form/form.component.html +++ b/packages/angular/test/base/src/app/lazy/form/form.component.html @@ -48,12 +48,12 @@ Input OTP (required) + Set Input OTP Touched + Input OTP Text (required) - Set Input OTP Touched - Input OTP diff --git a/packages/angular/test/base/src/app/lazy/inputs/inputs.component.html b/packages/angular/test/base/src/app/lazy/inputs/inputs.component.html index 7f5dfc8264c..c63e1c2792e 100644 --- a/packages/angular/test/base/src/app/lazy/inputs/inputs.component.html +++ b/packages/angular/test/base/src/app/lazy/inputs/inputs.component.html @@ -73,7 +73,7 @@ Input OTP - {{inputOtp}} + {{inputOtp}} From 82d086f65e74e61768d47486cd85d841308c74ae Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Fri, 23 May 2025 15:46:47 -0400 Subject: [PATCH 66/81] test(input-otp): clarify the JS behavior of RTL languages in the e2e test --- .../input-otp/test/basic/input-otp.e2e.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index 32a11b157ce..f7b5466da1d 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -83,10 +83,10 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await page.keyboard.type('١٢٣٤'); - // There is an issue with Playwright automatically flipping the - // values, so we check for the flipped values from above, even though - // it is entered correctly in the component. - await verifyInputValues(inputOtp, ['١', '٢', '٣', '٤']); + // Because Arabic is a right-to-left script, JavaScript's handling of RTL text + // causes the array values to be reversed while input boxes maintain LTR order. + // We reverse our expected values to match this behavior. + await verifyInputValues(inputOtp, ['٤', '٣', '٢', '١'].reverse()); }); test('should accept only Western Arabic numerals when pattern is set to [0-9]', async ({ page }) => { @@ -183,7 +183,10 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await page.keyboard.type('أبجد'); - await verifyInputValues(inputOtp, ['أ', 'ب', 'ج', 'د']); + // Because Arabic is a right-to-left script, JavaScript's handling of RTL text + // causes the array values to be reversed while input boxes maintain LTR order. + // We reverse our expected values to match this behavior. + await verifyInputValues(inputOtp, ['د', 'ج', 'ب', 'أ'].reverse()); }); test('should accept mixed language characters when type is text', async ({ page }) => { @@ -333,7 +336,10 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await page.keyboard.type('أبجد123'); - await verifyInputValues(inputOtp, ['أ', 'ب', 'ج', 'د']); + // Because Arabic is a right-to-left script, JavaScript's handling of RTL text + // causes the array values to be reversed while input boxes maintain LTR order. + // We reverse our expected values to match this behavior. + await verifyInputValues(inputOtp, ['د', 'ج', 'ب', 'أ'].reverse()); }); }); From 8c29200bc97d0ce651f5d993636b46bfdf893e22 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Fri, 23 May 2025 18:38:12 -0400 Subject: [PATCH 67/81] fix(input-otp): correct paste behavior to always start at first box --- core/src/components/input-otp/input-otp.tsx | 17 +++++++---------- .../input-otp/test/basic/input-otp.e2e.ts | 4 ++-- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/core/src/components/input-otp/input-otp.tsx b/core/src/components/input-otp/input-otp.tsx index 8e955130929..6d33b9257a0 100644 --- a/core/src/components/input-otp/input-otp.tsx +++ b/core/src/components/input-otp/input-otp.tsx @@ -551,24 +551,21 @@ export class InputOTP implements ComponentInterface { .filter((char) => validKeyPattern.test(char)) .slice(0, length); - // Find the first empty input - const startIndex = this.getFirstEmptyIndex(); - // If all boxes are filled, start at 0 - const pasteStart = startIndex === -1 ? 0 : startIndex; - + // Always paste starting at the first box validChars.forEach((char, index) => { - const targetIndex = pasteStart + index; - if (targetIndex < length) { - this.inputRefs[targetIndex].value = char; - this.inputValues[targetIndex] = char; + if (index < length) { + this.inputRefs[index].value = char; + this.inputValues[index] = char; } }); + // Update the value so that all input boxes are updated + this.value = validChars.join(''); this.updateValue(event); // Focus the next empty input after pasting // If all boxes are filled, focus the last input - const nextEmptyIndex = pasteStart + validChars.length; + const nextEmptyIndex = validChars.length; if (nextEmptyIndex < length) { inputRefs[nextEmptyIndex]?.focus(); } else { diff --git a/core/src/components/input-otp/test/basic/input-otp.e2e.ts b/core/src/components/input-otp/test/basic/input-otp.e2e.ts index f7b5466da1d..f3527a56b46 100644 --- a/core/src/components/input-otp/test/basic/input-otp.e2e.ts +++ b/core/src/components/input-otp/test/basic/input-otp.e2e.ts @@ -587,7 +587,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { await expect(inputBoxes.nth(2)).toBeFocused(); }); - test('should paste text into the last two input boxes when pasting 2 digits after typing 2 digits', async ({ + test('should paste text into the first two input boxes when pasting 2 digits after typing 2 digits', async ({ page, }) => { await page.setContent(`Description`, config); @@ -599,7 +599,7 @@ configs({ modes: ['ios'] }).forEach(({ title, config }) => { const inputOtp = page.locator('ion-input-otp'); - await verifyInputValues(inputOtp, ['1', '2', '3', '4']); + await verifyInputValues(inputOtp, ['3', '4', '', '']); }); test('should paste text into all input boxes when pasting 4 digits after typing 4 digits', async ({ page }) => { From 24accec161e4833e728101286a86fb0edc6a79f6 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 27 May 2025 13:50:12 -0400 Subject: [PATCH 68/81] test(vue): add tests for input-otp --- packages/vue/test/base/src/views/Inputs.vue | 11 +++++++++++ packages/vue/test/base/tests/e2e/specs/inputs.cy.js | 8 ++++++++ 2 files changed, 19 insertions(+) diff --git a/packages/vue/test/base/src/views/Inputs.vue b/packages/vue/test/base/src/views/Inputs.vue index 2cf45a98d09..6fa7fee77c4 100644 --- a/packages/vue/test/base/src/views/Inputs.vue +++ b/packages/vue/test/base/src/views/Inputs.vue @@ -41,6 +41,10 @@ + + + + @@ -77,6 +81,7 @@ Checkbox: {{ checkbox }}
Toggle: {{ toggle }}
Input: {{ input }}
+ Input OTP: {{ inputOtp }}
Range: {{ range }}
Textarea: {{ textarea }}
Searchbar: {{ searchbar }}
@@ -104,6 +109,7 @@ import { IonDatetime, IonHeader, IonInput, + IonInputOtp, IonItem, IonLabel, IonPage, @@ -132,6 +138,7 @@ export default defineComponent({ IonDatetime, IonHeader, IonInput, + IonInputOtp, IonItem, IonLabel, IonPage, @@ -152,6 +159,7 @@ export default defineComponent({ const checkbox = ref(false); const toggle = ref(false); const input = ref(''); + const inputOtp = ref(''); const range = ref({ lower: 30, upper: 70 @@ -167,6 +175,7 @@ export default defineComponent({ checkbox.value = false; toggle.value = false; input.value = ''; + inputOtp.value = ''; range.value = { lower: 30, upper: 70 @@ -183,6 +192,7 @@ export default defineComponent({ checkbox.value = true; toggle.value = true; input.value = 'Hello World'; + inputOtp.value = '1234'; range.value = { lower: 10, upper: 90 @@ -199,6 +209,7 @@ export default defineComponent({ checkbox, toggle, input, + inputOtp, range, textarea, searchbar, diff --git a/packages/vue/test/base/tests/e2e/specs/inputs.cy.js b/packages/vue/test/base/tests/e2e/specs/inputs.cy.js index bc87eaa8cf2..26c26f8ef95 100644 --- a/packages/vue/test/base/tests/e2e/specs/inputs.cy.js +++ b/packages/vue/test/base/tests/e2e/specs/inputs.cy.js @@ -6,6 +6,7 @@ describe('Inputs', () => { cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', false); cy.get('ion-toggle').should('have.prop', 'checked').and('eq', false); cy.get('ion-input').should('have.prop', 'value').and('eq', ''); + cy.get('ion-input-otp').should('have.prop', 'value').and('eq', ''); cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 30, upper: 70 }); cy.get('ion-textarea').should('have.prop', 'value').and('eq', ''); cy.get('ion-searchbar').should('have.prop', 'value').and('eq', ''); @@ -21,6 +22,7 @@ describe('Inputs', () => { cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', true); cy.get('ion-toggle').should('have.prop', 'checked').and('eq', true); cy.get('ion-input').should('have.prop', 'value').and('eq', 'Hello World'); + cy.get('ion-input-otp').should('have.prop', 'value').and('eq', '1234'); cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 10, upper: 90 }); cy.get('ion-textarea').should('have.prop', 'value').and('eq', 'Lorem Ipsum'); cy.get('ion-searchbar').should('have.prop', 'value').and('eq', 'Search Query'); @@ -34,6 +36,7 @@ describe('Inputs', () => { cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', false); cy.get('ion-toggle').should('have.prop', 'checked').and('eq', false); cy.get('ion-input').should('have.prop', 'value').and('eq', ''); + cy.get('ion-input-otp').should('have.prop', 'value').and('eq', ''); cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 30, upper: 70 }); cy.get('ion-textarea').should('have.prop', 'value').and('eq', ''); cy.get('ion-searchbar').should('have.prop', 'value').and('eq', ''); @@ -49,6 +52,11 @@ describe('Inputs', () => { cy.get('#input-ref').should('have.text', 'Hello Input'); }); + it('typing into input-otp should update ref', () => { + cy.get('ion-input-otp input').eq(0).type('1234', { scrollBehavior: false }); + + cy.get('#input-otp-ref').should('have.text', '1234'); + }); it('typing into searchbar should update ref', () => { cy.get('ion-searchbar input').type('Hello Searchbar', { scrollBehavior: false }); From a6cfbb45fd88d52671e6fa1c1e51f2e99470f2f5 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 27 May 2025 13:58:59 -0400 Subject: [PATCH 69/81] chore(scripts): improve test app build scripts to be faster and more descriptive --- packages/angular/test/build.sh | 33 +++++++++++------------- packages/react-router/test/build.sh | 39 ++++++++++++++++------------- packages/react/test/build.sh | 35 +++++++++++++------------- packages/vue/test/build.sh | 35 +++++++++++++------------- 4 files changed, 71 insertions(+), 71 deletions(-) diff --git a/packages/angular/test/build.sh b/packages/angular/test/build.sh index f597a55f9e6..1d3254cf704 100755 --- a/packages/angular/test/build.sh +++ b/packages/angular/test/build.sh @@ -1,41 +1,38 @@ #!/bin/bash -# The directory where the source -# for each specific application is. +# Directory containing test application versions +# (e.g. ng18, ng19, etc.) APPS_DIR="apps" -# The directory where the -# base application logic is +# Base application template that all test apps are built from BASE_DIR="base" + +# Output directory for built applications BUILD_DIR="build" -# The specific application -# we are building +# Application version to build (passed as first argument) APP_DIR="${1}" -# The full path to the specific application. +# Full paths for source and destination FULL_APP_DIR="${APPS_DIR}/${APP_DIR}/." - -# The full path to the base application. FULL_BASE_DIR="${BASE_DIR}/." - -# The full path to the built application. BUILD_APP_DIR="${BUILD_DIR}/${APP_DIR}/" -# Make sure the full app directory exists. +# Verify application version exists if [ ! -d $FULL_APP_DIR ]; then echo "Could not find test app: ${FULL_APP_DIR}" exit 1 fi -# Make the build directory if it does not already exist. +# Create build directory if needed mkdir -p $BUILD_DIR -# First we need to copy the base application -cp -R $FULL_BASE_DIR $BUILD_APP_DIR +# Copy base template first +echo "Copying base application..." +rsync -a --exclude='.git' --exclude='node_modules' $FULL_BASE_DIR $BUILD_APP_DIR -# Then we can copy the specific app which -# will override any files in the base application. -cp -R $FULL_APP_DIR $BUILD_APP_DIR +# Copy version-specific files (overrides base template) +echo "Copying application version..." +rsync -a --exclude='.git' --exclude='node_modules' $FULL_APP_DIR $BUILD_APP_DIR echo "Copied test app files for ${APP_DIR}" diff --git a/packages/react-router/test/build.sh b/packages/react-router/test/build.sh index a646dc74ba8..6bfdea6afd0 100755 --- a/packages/react-router/test/build.sh +++ b/packages/react-router/test/build.sh @@ -1,33 +1,38 @@ #!/bin/bash -# The directory where the source -# for each specific application is. +# Directory containing test application versions +# (e.g. reactrouter5, reactrouter6, etc.) APPS_DIR="apps" -# The directory where the -# base application logic is +# Base application template that all test apps are built from BASE_DIR="base" + +# Output directory for built applications BUILD_DIR="build" -# The specific application -# we are building +# Application version to build (passed as first argument) APP_DIR="${1}" -# The full path to the specific application. +# Full paths for source and destination FULL_APP_DIR="${APPS_DIR}/${APP_DIR}/." - -# The full path to the base application. FULL_BASE_DIR="${BASE_DIR}/." - -# The full path to the built application. BUILD_APP_DIR="${BUILD_DIR}/${APP_DIR}/" -# Make the build directory if it does not already exist. +# Verify application version exists +if [ ! -d $FULL_APP_DIR ]; then + echo "Could not find test app: ${FULL_APP_DIR}" + exit 1 +fi + +# Create build directory if needed mkdir -p $BUILD_DIR -# First we need to copy the base application -cp -R $FULL_BASE_DIR $BUILD_APP_DIR +# Copy base template first +echo "Copying base application..." +rsync -a --exclude='.git' --exclude='node_modules' $FULL_BASE_DIR $BUILD_APP_DIR + +# Copy version-specific files (overrides base template) +echo "Copying application version..." +rsync -a --exclude='.git' --exclude='node_modules' $FULL_APP_DIR $BUILD_APP_DIR -# Then we can copy the specific app which -# will override any files in the base application. -cp -R $FULL_APP_DIR $BUILD_APP_DIR +echo "Copied test app files for ${APP_DIR}" diff --git a/packages/react/test/build.sh b/packages/react/test/build.sh index 51467aee36b..175a590d51b 100755 --- a/packages/react/test/build.sh +++ b/packages/react/test/build.sh @@ -1,39 +1,38 @@ #!/bin/bash -# The directory where the source -# for each specific application is. +# Directory containing test application versions +# (e.g. react18, react19, etc.) APPS_DIR="apps" -# The directory where the -# base application logic is +# Base application template that all test apps are built from BASE_DIR="base" + +# Output directory for built applications BUILD_DIR="build" -# The specific application -# we are building +# Application version to build (passed as first argument) APP_DIR="${1}" -# The full path to the specific application. +# Full paths for source and destination FULL_APP_DIR="${APPS_DIR}/${APP_DIR}/." - -# The full path to the base application. FULL_BASE_DIR="${BASE_DIR}/." - -# The full path to the built application. BUILD_APP_DIR="${BUILD_DIR}/${APP_DIR}/" -# Make sure the full app directory exists. +# Verify application version exists if [ ! -d $FULL_APP_DIR ]; then echo "Could not find test app: ${FULL_APP_DIR}" exit 1 fi -# Make the build directory if it does not already exist. +# Create build directory if needed mkdir -p $BUILD_DIR -# First we need to copy the base application -cp -R $FULL_BASE_DIR $BUILD_APP_DIR +# Copy base template first +echo "Copying base application..." +rsync -a --exclude='.git' --exclude='node_modules' $FULL_BASE_DIR $BUILD_APP_DIR + +# Copy version-specific files (overrides base template) +echo "Copying application version..." +rsync -a --exclude='.git' --exclude='node_modules' $FULL_APP_DIR $BUILD_APP_DIR -# Then we can copy the specific app which -# will override any files in the base application. -cp -R $FULL_APP_DIR $BUILD_APP_DIR +echo "Copied test app files for ${APP_DIR}" diff --git a/packages/vue/test/build.sh b/packages/vue/test/build.sh index 51467aee36b..6bea253ae6d 100755 --- a/packages/vue/test/build.sh +++ b/packages/vue/test/build.sh @@ -1,39 +1,38 @@ #!/bin/bash -# The directory where the source -# for each specific application is. +# Directory containing test application versions +# (e.g. vue2, vue3, etc.) APPS_DIR="apps" -# The directory where the -# base application logic is +# Base application template that all test apps are built from BASE_DIR="base" + +# Output directory for built applications BUILD_DIR="build" -# The specific application -# we are building +# Application version to build (passed as first argument) APP_DIR="${1}" -# The full path to the specific application. +# Full paths for source and destination FULL_APP_DIR="${APPS_DIR}/${APP_DIR}/." - -# The full path to the base application. FULL_BASE_DIR="${BASE_DIR}/." - -# The full path to the built application. BUILD_APP_DIR="${BUILD_DIR}/${APP_DIR}/" -# Make sure the full app directory exists. +# Verify application version exists if [ ! -d $FULL_APP_DIR ]; then echo "Could not find test app: ${FULL_APP_DIR}" exit 1 fi -# Make the build directory if it does not already exist. +# Create build directory if needed mkdir -p $BUILD_DIR -# First we need to copy the base application -cp -R $FULL_BASE_DIR $BUILD_APP_DIR +# Copy base template first +echo "Copying base application..." +rsync -a --exclude='.git' --exclude='node_modules' $FULL_BASE_DIR $BUILD_APP_DIR + +# Copy version-specific files (overrides base template) +echo "Copying application version..." +rsync -a --exclude='.git' --exclude='node_modules' $FULL_APP_DIR $BUILD_APP_DIR -# Then we can copy the specific app which -# will override any files in the base application. -cp -R $FULL_APP_DIR $BUILD_APP_DIR +echo "Copied test app files for ${APP_DIR}" From 72ad44a54bef07c6406f54fb5af31ffb094f3c84 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 27 May 2025 14:03:56 -0400 Subject: [PATCH 70/81] fix(vue): add v-model binding for input-otp --- core/stencil.config.ts | 2 +- packages/vue/src/proxies.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/core/stencil.config.ts b/core/stencil.config.ts index 2bdcb4efa29..746fff3255d 100644 --- a/core/stencil.config.ts +++ b/core/stencil.config.ts @@ -202,7 +202,7 @@ export const config: Config = { event: 'ion-change', }, { - elements: ['ion-input', 'ion-searchbar', 'ion-textarea', 'ion-range'], + elements: ['ion-input', 'ion-input-otp', 'ion-searchbar', 'ion-textarea', 'ion-range'], targetAttr: 'value', event: 'ion-input', } diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index 0e4d33aea62..4b75028728a 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -492,7 +492,7 @@ export const IonInput: StencilVueComponent 'value', 'ion-input'); -export const IonInputOtp: StencilVueComponent = /*@__PURE__*/ defineContainer('ion-input-otp', defineIonInputOtp, [ +export const IonInputOtp: StencilVueComponent = /*@__PURE__*/ defineContainer('ion-input-otp', defineIonInputOtp, [ 'autocapitalize', 'color', 'disabled', @@ -517,7 +517,8 @@ export const IonInputOtp: StencilVueComponent = /*@__PURE__*/ d 'ionComplete', 'ionBlur', 'ionFocus' -]); +], +'value', 'ion-input'); export const IonInputPasswordToggle: StencilVueComponent = /*@__PURE__*/ defineContainer('ion-input-password-toggle', defineIonInputPasswordToggle, [ From 0461608ed4880bd82743313f50d69e46c5ba0a52 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 27 May 2025 14:51:25 -0400 Subject: [PATCH 71/81] chore(scripts): update build scripts for test app to remove deleted files --- packages/angular/test/build.sh | 9 +++++++++ packages/react-router/test/build.sh | 9 +++++++++ packages/react/test/build.sh | 9 +++++++++ packages/vue/test/build.sh | 9 +++++++++ 4 files changed, 36 insertions(+) diff --git a/packages/angular/test/build.sh b/packages/angular/test/build.sh index 1d3254cf704..018f05c75aa 100755 --- a/packages/angular/test/build.sh +++ b/packages/angular/test/build.sh @@ -35,4 +35,13 @@ rsync -a --exclude='.git' --exclude='node_modules' $FULL_BASE_DIR $BUILD_APP_DIR echo "Copying application version..." rsync -a --exclude='.git' --exclude='node_modules' $FULL_APP_DIR $BUILD_APP_DIR +# Remove files that don't exist in either source directory +echo "Cleaning up removed files..." +find $BUILD_APP_DIR -type f -not -path "*/node_modules/*" -not -path "*/.git/*" | while read file; do + rel_path=${file#$BUILD_APP_DIR} + if [ ! -f "${FULL_BASE_DIR}${rel_path}" ] && [ ! -f "${FULL_APP_DIR}${rel_path}" ]; then + rm "$file" + fi +done + echo "Copied test app files for ${APP_DIR}" diff --git a/packages/react-router/test/build.sh b/packages/react-router/test/build.sh index 6bfdea6afd0..4ba70d67707 100755 --- a/packages/react-router/test/build.sh +++ b/packages/react-router/test/build.sh @@ -35,4 +35,13 @@ rsync -a --exclude='.git' --exclude='node_modules' $FULL_BASE_DIR $BUILD_APP_DIR echo "Copying application version..." rsync -a --exclude='.git' --exclude='node_modules' $FULL_APP_DIR $BUILD_APP_DIR +# Remove files that don't exist in either source directory +echo "Cleaning up removed files..." +find $BUILD_APP_DIR -type f -not -path "*/node_modules/*" -not -path "*/.git/*" | while read file; do + rel_path=${file#$BUILD_APP_DIR} + if [ ! -f "${FULL_BASE_DIR}${rel_path}" ] && [ ! -f "${FULL_APP_DIR}${rel_path}" ]; then + rm "$file" + fi +done + echo "Copied test app files for ${APP_DIR}" diff --git a/packages/react/test/build.sh b/packages/react/test/build.sh index 175a590d51b..8259eef9754 100755 --- a/packages/react/test/build.sh +++ b/packages/react/test/build.sh @@ -35,4 +35,13 @@ rsync -a --exclude='.git' --exclude='node_modules' $FULL_BASE_DIR $BUILD_APP_DIR echo "Copying application version..." rsync -a --exclude='.git' --exclude='node_modules' $FULL_APP_DIR $BUILD_APP_DIR +# Remove files that don't exist in either source directory +echo "Cleaning up removed files..." +find $BUILD_APP_DIR -type f -not -path "*/node_modules/*" -not -path "*/.git/*" | while read file; do + rel_path=${file#$BUILD_APP_DIR} + if [ ! -f "${FULL_BASE_DIR}${rel_path}" ] && [ ! -f "${FULL_APP_DIR}${rel_path}" ]; then + rm "$file" + fi +done + echo "Copied test app files for ${APP_DIR}" diff --git a/packages/vue/test/build.sh b/packages/vue/test/build.sh index 6bea253ae6d..8f6531bedbf 100755 --- a/packages/vue/test/build.sh +++ b/packages/vue/test/build.sh @@ -35,4 +35,13 @@ rsync -a --exclude='.git' --exclude='node_modules' $FULL_BASE_DIR $BUILD_APP_DIR echo "Copying application version..." rsync -a --exclude='.git' --exclude='node_modules' $FULL_APP_DIR $BUILD_APP_DIR +# Remove files that don't exist in either source directory +echo "Cleaning up removed files..." +find $BUILD_APP_DIR -type f -not -path "*/node_modules/*" -not -path "*/.git/*" | while read file; do + rel_path=${file#$BUILD_APP_DIR} + if [ ! -f "${FULL_BASE_DIR}${rel_path}" ] && [ ! -f "${FULL_APP_DIR}${rel_path}" ]; then + rm "$file" + fi +done + echo "Copied test app files for ${APP_DIR}" From 1ffbc0dec185c17b90ed888e168f8ef68448d325 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 27 May 2025 14:55:10 -0400 Subject: [PATCH 72/81] test(vue): use proper v-model instead of debug code --- packages/vue/test/base/src/views/Inputs.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vue/test/base/src/views/Inputs.vue b/packages/vue/test/base/src/views/Inputs.vue index 6fa7fee77c4..b4dc2f496bc 100644 --- a/packages/vue/test/base/src/views/Inputs.vue +++ b/packages/vue/test/base/src/views/Inputs.vue @@ -42,7 +42,7 @@ - + From 6b17afcaa20f4a2a4444c71f1bbecee69c667ab3 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 27 May 2025 15:20:14 -0400 Subject: [PATCH 73/81] test(react): add inputs test to test input-otp and other inputs --- packages/react/test/base/cypress.config.ts | 1 + packages/react/test/base/src/App.tsx | 2 + packages/react/test/base/src/pages/Inputs.tsx | 250 ++++++++++++++++++ packages/react/test/base/src/pages/Main.tsx | 3 + .../specs/{icons => components}/icons.cy.ts | 0 .../tests/e2e/specs/components/inputs.cy.ts | 75 ++++++ 6 files changed, 331 insertions(+) create mode 100644 packages/react/test/base/src/pages/Inputs.tsx rename packages/react/test/base/tests/e2e/specs/{icons => components}/icons.cy.ts (100%) create mode 100644 packages/react/test/base/tests/e2e/specs/components/inputs.cy.ts diff --git a/packages/react/test/base/cypress.config.ts b/packages/react/test/base/cypress.config.ts index 8b5be1e4b3a..a0d01e60187 100644 --- a/packages/react/test/base/cypress.config.ts +++ b/packages/react/test/base/cypress.config.ts @@ -1,6 +1,7 @@ import { defineConfig } from 'cypress'; export default defineConfig({ + includeShadowDom: true, video: false, screenshotOnRunFailure: false, defaultCommandTimeout: 10000, diff --git a/packages/react/test/base/src/App.tsx b/packages/react/test/base/src/App.tsx index 8ae9f65291c..39ebb5f74ff 100644 --- a/packages/react/test/base/src/App.tsx +++ b/packages/react/test/base/src/App.tsx @@ -22,6 +22,7 @@ import '@ionic/react/css/display.css'; /* Theme variables */ import './theme/variables.css'; import Icons from './pages/Icons'; +import Inputs from './pages/Inputs'; import Main from './pages/Main'; import Tabs from './pages/Tabs'; import TabsBasic from './pages/TabsBasic'; @@ -63,6 +64,7 @@ const App: React.FC = () => ( + diff --git a/packages/react/test/base/src/pages/Inputs.tsx b/packages/react/test/base/src/pages/Inputs.tsx new file mode 100644 index 00000000000..fd4656ee68b --- /dev/null +++ b/packages/react/test/base/src/pages/Inputs.tsx @@ -0,0 +1,250 @@ +import React, { useState } from 'react'; + +import type { + IonDatetimeCustomEvent, + DatetimeChangeEventDetail, + IonTextareaCustomEvent, + TextareaInputEventDetail, + IonSelectCustomEvent, + SelectChangeEventDetail, + IonRadioGroupCustomEvent, + RadioGroupChangeEventDetail, + IonCheckboxCustomEvent, + CheckboxChangeEventDetail, + IonToggleCustomEvent, + ToggleChangeEventDetail, + IonRangeCustomEvent, + RangeChangeEventDetail, + IonSegmentCustomEvent, + SegmentChangeEventDetail, + IonInputCustomEvent, + InputInputEventDetail, + IonSearchbarCustomEvent, + SearchbarInputEventDetail, + IonInputOtpCustomEvent, + InputOtpInputEventDetail, +} from '@ionic/core'; +import { + IonBackButton, + IonButton, + IonButtons, + IonCheckbox, + IonContent, + IonDatetime, + IonHeader, + IonInput, + IonInputOtp, + IonItem, + IonLabel, + IonPage, + IonRadio, + IonRadioGroup, + IonRange, + IonSearchbar, + IonSegment, + IonSegmentButton, + IonSelect, + IonSelectOption, + IonTextarea, + IonTitle, + IonToggle, + IonToolbar +} from '@ionic/react'; + +interface InputsProps {} + +const Inputs: React.FC = () => { + const [checkbox, setCheckbox] = useState(false); + const [toggle, setToggle] = useState(false); + const [input, setInput] = useState(''); + const [inputOtp, setInputOtp] = useState(''); + const [range, setRange] = useState({ lower: 30, upper: 70 }); + const [textarea, setTextarea] = useState(''); + const [searchbar, setSearchbar] = useState(''); + const [datetime, setDatetime] = useState(''); + const [radio, setRadio] = useState('red'); + const [segment, setSegment] = useState('dogs'); + const [select, setSelect] = useState('apples'); + + const reset = () => { + setCheckbox(false); + setToggle(false); + setInput(''); + setInputOtp(''); + setRange({ lower: 30, upper: 70 }); + setTextarea(''); + setSearchbar(''); + setDatetime(''); + setRadio('red'); + setSegment('dogs'); + setSelect('apples'); + }; + + const set = () => { + setCheckbox(true); + setToggle(true); + setInput('Hello World'); + setInputOtp('1234'); + setRange({ lower: 10, upper: 90 }); + setTextarea('Lorem Ipsum'); + setSearchbar('Search Query'); + setDatetime('2019-01-31'); + setRadio('blue'); + setSegment('cats'); + setSelect('bananas'); + }; + + return ( + + + + + + + Inputs + + + ) => { + if (typeof e.detail.value === 'string') setSegment(e.detail.value); + }} + > + + Dogs + + + Cats + + + + + ) => setSearchbar(e.detail.value!)} + > + + + + + + + Inputs + + + + + ) => setCheckbox(e.detail.checked)} + > + Checkbox + + + + + ) => setToggle(e.detail.checked)} + > + Toggle + + + + + ) => setInput(e.detail.value!)} + label="Input" + > + + + + ) => setInputOtp(e.detail.value ?? '')} + > + + + + ) => setRange(e.detail.value as { lower: number; upper: number })} + > + + + + ) => setTextarea(e.detail.value!)} + label="Textarea" + > + + + + Datetime + ) => { + const value = e.detail.value; + if (typeof value === 'string') { + setDatetime(value); + } + }} + > + + + ) => setRadio(e.detail.value)} + > + + Red + + + Green + + + Blue + + + + + >) => setSelect(e.detail.value)} + label="Select" + > + Apples + Bananas + + + +
+ Checkbox: {checkbox.toString()}
+ Toggle: {toggle.toString()}
+ Input: {input}
+ Input OTP: {inputOtp}
+ Range: {JSON.stringify(range)}
+ Textarea: {textarea}
+ Searchbar: {searchbar}
+ Datetime: {datetime}
+ Radio Group: {radio}
+ Segment: {segment}
+ Select: {select}
+ +
+ + Reset Values + Set Values +
+
+
+ ); +}; + +export default Inputs; diff --git a/packages/react/test/base/src/pages/Main.tsx b/packages/react/test/base/src/pages/Main.tsx index 8286e02a366..5595c0d6307 100644 --- a/packages/react/test/base/src/pages/Main.tsx +++ b/packages/react/test/base/src/pages/Main.tsx @@ -43,6 +43,9 @@ const Main: React.FC = () => { Icons + + Inputs + diff --git a/packages/react/test/base/tests/e2e/specs/icons/icons.cy.ts b/packages/react/test/base/tests/e2e/specs/components/icons.cy.ts similarity index 100% rename from packages/react/test/base/tests/e2e/specs/icons/icons.cy.ts rename to packages/react/test/base/tests/e2e/specs/components/icons.cy.ts diff --git a/packages/react/test/base/tests/e2e/specs/components/inputs.cy.ts b/packages/react/test/base/tests/e2e/specs/components/inputs.cy.ts new file mode 100644 index 00000000000..b32468bd96e --- /dev/null +++ b/packages/react/test/base/tests/e2e/specs/components/inputs.cy.ts @@ -0,0 +1,75 @@ +describe('Inputs', () => { + beforeEach(() => { + cy.visit('/inputs') + }) + + it('should have default value', () => { + cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', false); + cy.get('ion-toggle').should('have.prop', 'checked').and('eq', false); + cy.get('ion-input').should('have.prop', 'value').and('eq', ''); + cy.get('ion-input-otp').should('have.prop', 'value').and('eq', ''); + cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 30, upper: 70 }); + cy.get('ion-textarea').should('have.prop', 'value').and('eq', ''); + cy.get('ion-searchbar').should('have.prop', 'value').and('eq', ''); + cy.get('ion-datetime').should('have.prop', 'value').and('eq', ''); + cy.get('ion-radio-group').should('have.prop', 'value').and('eq', 'red'); + cy.get('ion-segment').should('have.prop', 'value').and('eq', 'dogs'); + cy.get('ion-select').should('have.prop', 'value').and('eq', 'apples'); + }); + + it('should set/reset values', () => { + cy.get('ion-button#set').click(); + + cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', true); + cy.get('ion-toggle').should('have.prop', 'checked').and('eq', true); + cy.get('ion-input').should('have.prop', 'value').and('eq', 'Hello World'); + cy.get('ion-input-otp').should('have.prop', 'value').and('eq', '1234'); + cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 10, upper: 90 }); + cy.get('ion-textarea').should('have.prop', 'value').and('eq', 'Lorem Ipsum'); + cy.get('ion-searchbar').should('have.prop', 'value').and('eq', 'Search Query'); + cy.get('ion-datetime').should('have.prop', 'value').and('eq', '2019-01-31'); + cy.get('ion-radio-group').should('have.prop', 'value').and('eq', 'blue'); + cy.get('ion-segment').should('have.prop', 'value').and('eq', 'cats'); + cy.get('ion-select').should('have.prop', 'value').and('eq', 'bananas'); + + cy.get('ion-button#reset').click(); + + cy.get('ion-checkbox').should('have.prop', 'checked').and('eq', false); + cy.get('ion-toggle').should('have.prop', 'checked').and('eq', false); + cy.get('ion-input').should('have.prop', 'value').and('eq', ''); + cy.get('ion-input-otp').should('have.prop', 'value').and('eq', ''); + cy.get('ion-range').should('have.prop', 'value').and('deep.eq', { lower: 30, upper: 70 }); + cy.get('ion-textarea').should('have.prop', 'value').and('eq', ''); + cy.get('ion-searchbar').should('have.prop', 'value').and('eq', ''); + cy.get('ion-datetime').should('have.prop', 'value').and('eq', ''); + cy.get('ion-radio-group').should('have.prop', 'value').and('eq', 'red'); + cy.get('ion-segment').should('have.prop', 'value').and('eq', 'dogs'); + cy.get('ion-select').should('have.prop', 'value').and('eq', 'apples'); + }); + + describe('updating text input refs', () => { + it('typing into input should update ref', () => { + cy.get('ion-input input').type('Hello Input', { scrollBehavior: false }); + + cy.get('#input-ref').should('have.text', 'Hello Input'); + }); + + it('typing into input-otp should update ref', () => { + cy.get('ion-input-otp input').eq(0).type('1234', { scrollBehavior: false }); + + cy.get('#input-otp-ref').should('have.text', '1234'); + }); + + it('typing into searchbar should update ref', () => { + cy.get('ion-searchbar input').type('Hello Searchbar', { scrollBehavior: false }); + + cy.get('#searchbar-ref').should('have.text', 'Hello Searchbar'); + }); + + it('typing into textarea should update ref', () => { + cy.get('ion-textarea textarea').type('Hello Textarea', { scrollBehavior: false }); + + cy.get('#textarea-ref').should('have.text', 'Hello Textarea'); + }); + }); +}) From 2698faf1b3b83243cc2dfa477c0ac2bf9faee8b4 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 27 May 2025 16:43:07 -0400 Subject: [PATCH 74/81] chore(scripts): revert build test apps back to cp --- packages/angular/test/build.sh | 13 ++----------- packages/react-router/test/build.sh | 13 ++----------- packages/react/test/build.sh | 13 ++----------- packages/vue/test/build.sh | 13 ++----------- 4 files changed, 8 insertions(+), 44 deletions(-) diff --git a/packages/angular/test/build.sh b/packages/angular/test/build.sh index 018f05c75aa..47d057307b4 100755 --- a/packages/angular/test/build.sh +++ b/packages/angular/test/build.sh @@ -29,19 +29,10 @@ mkdir -p $BUILD_DIR # Copy base template first echo "Copying base application..." -rsync -a --exclude='.git' --exclude='node_modules' $FULL_BASE_DIR $BUILD_APP_DIR +cp -R $FULL_BASE_DIR $BUILD_APP_DIR # Copy version-specific files (overrides base template) echo "Copying application version..." -rsync -a --exclude='.git' --exclude='node_modules' $FULL_APP_DIR $BUILD_APP_DIR - -# Remove files that don't exist in either source directory -echo "Cleaning up removed files..." -find $BUILD_APP_DIR -type f -not -path "*/node_modules/*" -not -path "*/.git/*" | while read file; do - rel_path=${file#$BUILD_APP_DIR} - if [ ! -f "${FULL_BASE_DIR}${rel_path}" ] && [ ! -f "${FULL_APP_DIR}${rel_path}" ]; then - rm "$file" - fi -done +cp -R $FULL_APP_DIR $BUILD_APP_DIR echo "Copied test app files for ${APP_DIR}" diff --git a/packages/react-router/test/build.sh b/packages/react-router/test/build.sh index 4ba70d67707..21e2055bd42 100755 --- a/packages/react-router/test/build.sh +++ b/packages/react-router/test/build.sh @@ -29,19 +29,10 @@ mkdir -p $BUILD_DIR # Copy base template first echo "Copying base application..." -rsync -a --exclude='.git' --exclude='node_modules' $FULL_BASE_DIR $BUILD_APP_DIR +cp -R $FULL_BASE_DIR $BUILD_APP_DIR # Copy version-specific files (overrides base template) echo "Copying application version..." -rsync -a --exclude='.git' --exclude='node_modules' $FULL_APP_DIR $BUILD_APP_DIR - -# Remove files that don't exist in either source directory -echo "Cleaning up removed files..." -find $BUILD_APP_DIR -type f -not -path "*/node_modules/*" -not -path "*/.git/*" | while read file; do - rel_path=${file#$BUILD_APP_DIR} - if [ ! -f "${FULL_BASE_DIR}${rel_path}" ] && [ ! -f "${FULL_APP_DIR}${rel_path}" ]; then - rm "$file" - fi -done +cp -R $FULL_APP_DIR $BUILD_APP_DIR echo "Copied test app files for ${APP_DIR}" diff --git a/packages/react/test/build.sh b/packages/react/test/build.sh index 8259eef9754..8ec4738a7e9 100755 --- a/packages/react/test/build.sh +++ b/packages/react/test/build.sh @@ -29,19 +29,10 @@ mkdir -p $BUILD_DIR # Copy base template first echo "Copying base application..." -rsync -a --exclude='.git' --exclude='node_modules' $FULL_BASE_DIR $BUILD_APP_DIR +cp -R $FULL_BASE_DIR $BUILD_APP_DIR # Copy version-specific files (overrides base template) echo "Copying application version..." -rsync -a --exclude='.git' --exclude='node_modules' $FULL_APP_DIR $BUILD_APP_DIR - -# Remove files that don't exist in either source directory -echo "Cleaning up removed files..." -find $BUILD_APP_DIR -type f -not -path "*/node_modules/*" -not -path "*/.git/*" | while read file; do - rel_path=${file#$BUILD_APP_DIR} - if [ ! -f "${FULL_BASE_DIR}${rel_path}" ] && [ ! -f "${FULL_APP_DIR}${rel_path}" ]; then - rm "$file" - fi -done +cp -R $FULL_APP_DIR $BUILD_APP_DIR echo "Copied test app files for ${APP_DIR}" diff --git a/packages/vue/test/build.sh b/packages/vue/test/build.sh index 8f6531bedbf..405cba1877e 100755 --- a/packages/vue/test/build.sh +++ b/packages/vue/test/build.sh @@ -29,19 +29,10 @@ mkdir -p $BUILD_DIR # Copy base template first echo "Copying base application..." -rsync -a --exclude='.git' --exclude='node_modules' $FULL_BASE_DIR $BUILD_APP_DIR +cp -R $FULL_BASE_DIR $BUILD_APP_DIR # Copy version-specific files (overrides base template) echo "Copying application version..." -rsync -a --exclude='.git' --exclude='node_modules' $FULL_APP_DIR $BUILD_APP_DIR - -# Remove files that don't exist in either source directory -echo "Cleaning up removed files..." -find $BUILD_APP_DIR -type f -not -path "*/node_modules/*" -not -path "*/.git/*" | while read file; do - rel_path=${file#$BUILD_APP_DIR} - if [ ! -f "${FULL_BASE_DIR}${rel_path}" ] && [ ! -f "${FULL_APP_DIR}${rel_path}" ]; then - rm "$file" - fi -done +cp -R $FULL_APP_DIR $BUILD_APP_DIR echo "Copied test app files for ${APP_DIR}" From 00946042fe0b9dd1a1c5ac8a279f72db240c0444 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 27 May 2025 17:46:03 -0400 Subject: [PATCH 75/81] fix(angular): exclude ion-input-otp from standalone proxy generation --- core/stencil.config.ts | 1 + .../standalone/src/directives/proxies.ts | 66 ------------------- 2 files changed, 1 insertion(+), 66 deletions(-) diff --git a/core/stencil.config.ts b/core/stencil.config.ts index 746fff3255d..edb5de73469 100644 --- a/core/stencil.config.ts +++ b/core/stencil.config.ts @@ -54,6 +54,7 @@ const getAngularOutputTargets = () => { * Value Accessors are manually implemented in the `@ionic/angular/standalone` package. */ 'ion-input', + 'ion-input-otp', 'ion-textarea', 'ion-searchbar', 'ion-datetime', diff --git a/packages/angular/standalone/src/directives/proxies.ts b/packages/angular/standalone/src/directives/proxies.ts index 655bb4af081..c7d111f7bef 100644 --- a/packages/angular/standalone/src/directives/proxies.ts +++ b/packages/angular/standalone/src/directives/proxies.ts @@ -36,7 +36,6 @@ import { defineCustomElement as defineIonHeader } from '@ionic/core/components/i import { defineCustomElement as defineIonImg } from '@ionic/core/components/ion-img.js'; import { defineCustomElement as defineIonInfiniteScroll } from '@ionic/core/components/ion-infinite-scroll.js'; import { defineCustomElement as defineIonInfiniteScrollContent } from '@ionic/core/components/ion-infinite-scroll-content.js'; -import { defineCustomElement as defineIonInputOtp } from '@ionic/core/components/ion-input-otp.js'; import { defineCustomElement as defineIonInputPasswordToggle } from '@ionic/core/components/ion-input-password-toggle.js'; import { defineCustomElement as defineIonItem } from '@ionic/core/components/ion-item.js'; import { defineCustomElement as defineIonItemDivider } from '@ionic/core/components/ion-item-divider.js'; @@ -982,71 +981,6 @@ export class IonInfiniteScrollContent { export declare interface IonInfiniteScrollContent extends Components.IonInfiniteScrollContent {} -@ProxyCmp({ - defineCustomElementFn: defineIonInputOtp, - inputs: ['autocapitalize', 'color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], - methods: ['reset', 'setFocus'] -}) -@Component({ - selector: 'ion-input-otp', - changeDetection: ChangeDetectionStrategy.OnPush, - template: '', - // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['autocapitalize', 'color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], - standalone: true -}) -export class IonInputOtp { - protected el: HTMLIonInputOtpElement; - constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { - c.detach(); - this.el = r.nativeElement; - proxyOutputs(this, this.el, ['ionInput', 'ionChange', 'ionComplete', 'ionBlur', 'ionFocus']); - } -} - - -import type { InputOtpInputEventDetail as IIonInputOtpInputOtpInputEventDetail } from '@ionic/core/components'; -import type { InputOtpChangeEventDetail as IIonInputOtpInputOtpChangeEventDetail } from '@ionic/core/components'; -import type { InputOtpCompleteEventDetail as IIonInputOtpInputOtpCompleteEventDetail } from '@ionic/core/components'; - -export declare interface IonInputOtp extends Components.IonInputOtp { - /** - * The `ionInput` event is fired each time the user modifies the input's value. -Unlike the `ionChange` event, the `ionInput` event is fired for each alteration -to the input's value. This typically happens for each keystroke as the user types. - -For elements that accept text input (`type=text`, `type=tel`, etc.), the interface -is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others, -the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If -the input is cleared on edit, the type is `null`. - */ - ionInput: EventEmitter>; - /** - * The `ionChange` event is fired when the user modifies the input's value. -Unlike the `ionInput` event, the `ionChange` event is only fired when changes -are committed, not as the user types. - -The `ionChange` event fires when the `` component loses -focus after its value has changed. - -This event will not emit when programmatically setting the `value` property. - */ - ionChange: EventEmitter>; - /** - * Emitted when all input boxes have been filled with valid values. - */ - ionComplete: EventEmitter>; - /** - * Emitted when the input group loses focus. - */ - ionBlur: EventEmitter>; - /** - * Emitted when the input group has focus. - */ - ionFocus: EventEmitter>; -} - - @ProxyCmp({ defineCustomElementFn: defineIonInputPasswordToggle, inputs: ['color', 'hideIcon', 'mode', 'showIcon'] From 0c457b7942b9288ada04c59ba033428698f21d11 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 27 May 2025 18:50:52 -0400 Subject: [PATCH 76/81] docs(component-guide): add information on new input components --- docs/component-guide.md | 172 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 171 insertions(+), 1 deletion(-) diff --git a/docs/component-guide.md b/docs/component-guide.md index 25b17ec003e..134e3013d06 100644 --- a/docs/component-guide.md +++ b/docs/component-guide.md @@ -14,10 +14,18 @@ * [Switch](#switch) * [Accordion](#accordion) - [Rendering Anchor or Button](#rendering-anchor-or-button) - * [Example Components](#example-components-1) + * [Example Components](#example-components-4) * [Component Structure](#component-structure-1) - [Converting Scoped to Shadow](#converting-scoped-to-shadow) - [RTL](#rtl) +- [Adding New Components with Native Input Support](#adding-new-components-with-native-input-support) + * [Angular Integration](#angular-integration) + * [Angular Tests](#angular-tests) + * [Vue Integration](#vue-integration) + * [Vue Tests](#vue-tests) + * [React Integration](#react-integration) + * [React Tests](#react-tests) + * [Interface Exports](#interface-exports) ## Button States @@ -749,3 +757,165 @@ class={{ transform-origin: right center; } ``` + +## Adding New Components with Native Input Support + +When creating a new component that renders native input elements (such as `` or `