From efd3e0fd2bafd7e77ca192b5a9f54c460cbd8f79 Mon Sep 17 00:00:00 2001 From: Sean Perkins <13732623+sean-perkins@users.noreply.github.com> Date: Mon, 20 Jan 2025 15:15:02 -0600 Subject: [PATCH 01/18] feat(config): add logLevel option to suppress ionic warnings and errors (#30015) resolves #29814 --------- - Developers can assign a value to `logLevel` in the Ionic config to control the log level that Ionic Framework will produce logs for. - `OFF` will completely disable all warnings and errors from Ionic - `WARN` will log warnings and errors - `ERROR` will log only errors - Default behavior is that developers receive both Ionic warnings and errors - Configuration only applies to usages of `printIonWarning` and `printIonError` --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- core/src/utils/config.ts | 10 ++ core/src/utils/logging/index.ts | 22 +++- core/src/utils/logging/test/logging.spec.ts | 114 ++++++++++++++++++++ 3 files changed, 142 insertions(+), 4 deletions(-) create mode 100644 core/src/utils/logging/test/logging.spec.ts diff --git a/core/src/utils/config.ts b/core/src/utils/config.ts index e38d43beb4e..6b66417f7fc 100644 --- a/core/src/utils/config.ts +++ b/core/src/utils/config.ts @@ -2,6 +2,7 @@ import type { SpinnerTypes } from '../components/spinner/spinner-configs'; import type { TabButtonLayout } from '../components/tab-bar/tab-bar-interface'; import type { AnimationBuilder, Mode } from '../interface'; +import type { LogLevel } from './logging'; import type { PlatformConfig } from './platform'; export interface IonicConfig { @@ -220,6 +221,15 @@ export interface IonicConfig { */ experimentalCloseWatcher?: boolean; + /** + * Configures the logging level for Ionic Framework: + * + * - `'OFF'`: No errors or warnings are logged. + * - `'ERROR'`: Logs only errors. + * - `'WARN'`: Logs errors and warnings. + */ + logLevel?: LogLevel; + // PRIVATE configs keyboardHeight?: number; inputShims?: boolean; diff --git a/core/src/utils/logging/index.ts b/core/src/utils/logging/index.ts index ee4234cb6a5..4bf58ce6297 100644 --- a/core/src/utils/logging/index.ts +++ b/core/src/utils/logging/index.ts @@ -1,3 +1,11 @@ +import { config } from '@global/config'; + +export const enum LogLevel { + OFF = 'OFF', + ERROR = 'ERROR', + WARN = 'WARN', +} + /** * Logs a warning to the console with an Ionic prefix * to indicate the library that is warning the developer. @@ -5,18 +13,24 @@ * @param message - The string message to be logged to the console. */ export const printIonWarning = (message: string, ...params: any[]) => { - return console.warn(`[Ionic Warning]: ${message}`, ...params); + const logLevel = config.get('logLevel', LogLevel.WARN); + if ([LogLevel.WARN].includes(logLevel)) { + return console.warn(`[Ionic Warning]: ${message}`, ...params); + } }; -/* +/** * Logs an error to the console with an Ionic prefix * to indicate the library that is warning the developer. * * @param message - The string message to be logged to the console. * @param params - Additional arguments to supply to the console.error. */ -export const printIonError = (message: string, ...params: any) => { - return console.error(`[Ionic Error]: ${message}`, ...params); +export const printIonError = (message: string, ...params: any[]) => { + const logLevel = config.get('logLevel', LogLevel.ERROR); + if ([LogLevel.ERROR, LogLevel.WARN].includes(logLevel)) { + return console.error(`[Ionic Error]: ${message}`, ...params); + } }; /** diff --git a/core/src/utils/logging/test/logging.spec.ts b/core/src/utils/logging/test/logging.spec.ts new file mode 100644 index 00000000000..e0f1bdcb923 --- /dev/null +++ b/core/src/utils/logging/test/logging.spec.ts @@ -0,0 +1,114 @@ +import { config } from '@global/config'; +import { LogLevel } from '../index'; + +import { printIonError, printIonWarning } from '../index'; + +describe('Logging', () => { + describe('#printIonWarning', () => { + let consoleWarnSpy: jest.SpyInstance; + + beforeEach(() => { + consoleWarnSpy = jest.spyOn(console, 'warn'); + // Suppress console.warn output from polluting the test output + consoleWarnSpy.mockImplementation(() => {}); + }); + + afterEach(() => { + consoleWarnSpy.mockRestore(); + }); + + describe('when the logLevel configuration is not set', () => { + it('logs a warning to the console', () => { + config.set('logLevel', undefined); + + printIonWarning('This is a warning message'); + + expect(consoleWarnSpy).toHaveBeenCalledWith('[Ionic Warning]: This is a warning message'); + }); + }); + + describe("when the logLevel configuration is set to 'WARN'", () => { + it('logs a warning to the console', () => { + config.set('logLevel', LogLevel.WARN); + + printIonWarning('This is a warning message'); + + expect(consoleWarnSpy).toHaveBeenCalledWith('[Ionic Warning]: This is a warning message'); + }); + }); + + describe("when the logLevel configuration is set to 'ERROR'", () => { + it('does not log a warning to the console', () => { + config.set('logLevel', LogLevel.ERROR); + + printIonWarning('This is a warning message'); + + expect(consoleWarnSpy).not.toHaveBeenCalled(); + }); + }); + + describe("when the logLevel configuration is set to 'OFF'", () => { + it('does not log a warning to the console', () => { + config.set('logLevel', LogLevel.OFF); + + printIonWarning('This is a warning message'); + + expect(consoleWarnSpy).not.toHaveBeenCalled(); + }); + }); + }); + + describe('#printIonError', () => { + let consoleErrorSpy: jest.SpyInstance; + + beforeEach(() => { + consoleErrorSpy = jest.spyOn(console, 'error'); + // Suppress console.error output from polluting the test output + consoleErrorSpy.mockImplementation(() => {}); + }); + + afterEach(() => { + consoleErrorSpy.mockRestore(); + }); + + describe('when the logLevel configuration is not set', () => { + it('logs an error to the console', () => { + config.set('logLevel', undefined); + + printIonError('This is an error message'); + + expect(consoleErrorSpy).toHaveBeenCalledWith('[Ionic Error]: This is an error message'); + }); + }); + + describe("when the logLevel configuration is set to 'ERROR'", () => { + it('logs an error to the console', () => { + config.set('logLevel', LogLevel.ERROR); + + printIonError('This is an error message'); + + expect(consoleErrorSpy).toHaveBeenCalledWith('[Ionic Error]: This is an error message'); + }); + }); + + describe("when the logLevel configuration is set to 'WARN'", () => { + it('logs an error to the console', () => { + config.set('logLevel', LogLevel.WARN); + + printIonError('This is an error message'); + + expect(consoleErrorSpy).toHaveBeenCalledWith('[Ionic Error]: This is an error message'); + }); + }); + + describe("when the logLevel configuration is set to 'OFF'", () => { + it('does not log an error to the console', () => { + config.set('logLevel', LogLevel.OFF); + + printIonError('This is an error message'); + + expect(consoleErrorSpy).not.toHaveBeenCalled(); + }); + }); + }); +}); From ac4ea3232b1ccffa1c31dc4c6c416e16848ff607 Mon Sep 17 00:00:00 2001 From: fudom <143608856+fudom@users.noreply.github.com> Date: Thu, 23 Jan 2025 21:48:58 +0100 Subject: [PATCH 02/18] feat(toolbar): add shadow parts for background, container, and content (#30069) Resolves #30068 --------- Add `part` attributes to toolbar for the `background`, `container` and `content`. --- core/api.txt | 5 ++++- core/src/components/toolbar/toolbar.tsx | 10 +++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/core/api.txt b/core/api.txt index 67d49417556..6679bd89aa1 100644 --- a/core/api.txt +++ b/core/api.txt @@ -2000,4 +2000,7 @@ ion-toolbar,css-prop,--padding-end,md ion-toolbar,css-prop,--padding-start,ios ion-toolbar,css-prop,--padding-start,md ion-toolbar,css-prop,--padding-top,ios -ion-toolbar,css-prop,--padding-top,md \ No newline at end of file +ion-toolbar,css-prop,--padding-top,md +ion-toolbar,part,background +ion-toolbar,part,container +ion-toolbar,part,content \ No newline at end of file diff --git a/core/src/components/toolbar/toolbar.tsx b/core/src/components/toolbar/toolbar.tsx index 0999d404272..d742953d9ad 100644 --- a/core/src/components/toolbar/toolbar.tsx +++ b/core/src/components/toolbar/toolbar.tsx @@ -13,6 +13,10 @@ import type { Color, CssClassMap, StyleEventDetail } from '../../interface'; * @slot secondary - Content is placed to the left of the toolbar text in `ios` mode, and directly to the right in `md` mode. * @slot primary - Content is placed to the right of the toolbar text in `ios` mode, and to the far right in `md` mode. * @slot end - Content is placed to the right of the toolbar text in LTR, and to the left in RTL. + * + * @part background - The background of the toolbar, covering the entire area behind the toolbar content. + * @part container - The container that wraps all toolbar content, including the default slot and named slot content. + * @part content - The container for the default slot, wrapping content provided without a named slot. */ @Component({ tag: 'ion-toolbar', @@ -97,11 +101,11 @@ export class Toolbar implements ComponentInterface { }), }} > -
-
+
+
-
+
From 166e43554e832ff550ce6ad3505a95979b4e7138 Mon Sep 17 00:00:00 2001 From: Israel de la Barrera Date: Mon, 3 Feb 2025 19:45:15 +0100 Subject: [PATCH 03/18] feat(modal): add expandToScroll property to allow scrolling at all breakpoints (#30097) Issue number: resolves #24631 Co-authored-by: Maria Hutt <13530427+thetaPC@users.noreply.github.com> Co-authored-by: Brandy Smith --- core/api.txt | 1 + core/src/components.d.ts | 8 ++ .../components/modal/animations/ios.enter.ts | 59 ++++++++++- .../components/modal/animations/ios.leave.ts | 30 +++++- .../components/modal/animations/md.enter.ts | 63 +++++++++++- .../components/modal/animations/md.leave.ts | 34 +++++- core/src/components/modal/animations/sheet.ts | 14 ++- core/src/components/modal/gestures/sheet.ts | 97 ++++++++++++++++-- core/src/components/modal/modal-interface.ts | 1 + core/src/components/modal/modal.ios.scss | 13 +++ core/src/components/modal/modal.scss | 10 ++ core/src/components/modal/modal.tsx | 41 +++++++- core/src/components/modal/modal.vars.scss | 6 ++ .../components/modal/test/sheet/index.html | 12 +++ ...et-present-ios-ltr-Mobile-Chrome-linux.png | Bin 42854 -> 42653 bytes ...t-present-ios-ltr-Mobile-Firefox-linux.png | Bin 56174 -> 56017 bytes ...et-present-ios-ltr-Mobile-Safari-linux.png | Bin 37029 -> 37252 bytes ...eet-present-md-ltr-Mobile-Chrome-linux.png | Bin 41011 -> 40868 bytes ...et-present-md-ltr-Mobile-Firefox-linux.png | Bin 52399 -> 52638 bytes ...eet-present-md-ltr-Mobile-Safari-linux.png | Bin 34758 -> 34951 bytes core/src/css/core.scss | 5 +- packages/angular/common/src/overlays/modal.ts | 1 + packages/vue/src/components/Overlays.ts | 2 +- 23 files changed, 365 insertions(+), 32 deletions(-) diff --git a/core/api.txt b/core/api.txt index 6679bd89aa1..e373e34003d 100644 --- a/core/api.txt +++ b/core/api.txt @@ -1074,6 +1074,7 @@ ion-modal,prop,backdropDismiss,boolean,true,false,false ion-modal,prop,breakpoints,number[] | undefined,undefined,false,false ion-modal,prop,canDismiss,((data?: any, role?: string | undefined) => Promise) | boolean,true,false,false ion-modal,prop,enterAnimation,((baseEl: any, opts?: any) => Animation) | undefined,undefined,false,false +ion-modal,prop,expandToScroll,boolean,true,false,false ion-modal,prop,focusTrap,boolean,true,false,false ion-modal,prop,handle,boolean | undefined,undefined,false,false ion-modal,prop,handleBehavior,"cycle" | "none" | undefined,'none',false,false diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 1bdfaa88545..5656510c471 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1731,6 +1731,10 @@ export namespace Components { * Animation to use when the modal is presented. */ "enterAnimation"?: AnimationBuilder; + /** + * Controls whether scrolling or dragging within the sheet modal expands it to a larger breakpoint. This only takes effect when `breakpoints` and `initialBreakpoint` are set. If `true`, scrolling or dragging anywhere in the modal will first expand it to the next breakpoint. Once fully expanded, scrolling will affect the content. If `false`, scrolling will always affect the content, and the modal will only expand when dragging the header or handle. + */ + "expandToScroll": boolean; /** * If `true`, focus will not be allowed to move outside of this overlay. If `false`, focus will be allowed to move outside of the overlay. In most scenarios this property should remain set to `true`. Setting this property to `false` can cause severe accessibility issues as users relying on assistive technologies may be able to move focus into a confusing state. We recommend only setting this to `false` when absolutely necessary. Developers may want to consider disabling focus trapping if this overlay presents a non-Ionic overlay from a 3rd party library. Developers would disable focus trapping on the Ionic overlay when presenting the 3rd party overlay and then re-enable focus trapping when dismissing the 3rd party overlay and moving focus back to the Ionic overlay. */ @@ -6532,6 +6536,10 @@ declare namespace LocalJSX { * Animation to use when the modal is presented. */ "enterAnimation"?: AnimationBuilder; + /** + * Controls whether scrolling or dragging within the sheet modal expands it to a larger breakpoint. This only takes effect when `breakpoints` and `initialBreakpoint` are set. If `true`, scrolling or dragging anywhere in the modal will first expand it to the next breakpoint. Once fully expanded, scrolling will affect the content. If `false`, scrolling will always affect the content, and the modal will only expand when dragging the header or handle. + */ + "expandToScroll"?: boolean; /** * If `true`, focus will not be allowed to move outside of this overlay. If `false`, focus will be allowed to move outside of the overlay. In most scenarios this property should remain set to `true`. Setting this property to `false` can cause severe accessibility issues as users relying on assistive technologies may be able to move focus into a confusing state. We recommend only setting this to `false` when absolutely necessary. Developers may want to consider disabling focus trapping if this overlay presents a non-Ionic overlay from a 3rd party library. Developers would disable focus trapping on the Ionic overlay when presenting the 3rd party overlay and then re-enable focus trapping when dismissing the 3rd party overlay and moving focus back to the Ionic overlay. */ diff --git a/core/src/components/modal/animations/ios.enter.ts b/core/src/components/modal/animations/ios.enter.ts index 2001cbdcf43..3c8924f2889 100644 --- a/core/src/components/modal/animations/ios.enter.ts +++ b/core/src/components/modal/animations/ios.enter.ts @@ -17,27 +17,78 @@ const createEnterAnimation = () => { const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)'); - return { backdropAnimation, wrapperAnimation }; + return { backdropAnimation, wrapperAnimation, contentAnimation: undefined }; }; /** * iOS Modal Enter Animation for the Card presentation style */ export const iosEnterAnimation = (baseEl: HTMLElement, opts: ModalAnimationOptions): Animation => { - const { presentingEl, currentBreakpoint } = opts; + const { presentingEl, currentBreakpoint, expandToScroll } = opts; const root = getElementRoot(baseEl); - const { wrapperAnimation, backdropAnimation } = + const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation(); backdropAnimation.addElement(root.querySelector('ion-backdrop')!); wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')!).beforeStyles({ opacity: 1 }); + // The content animation is only added if scrolling is enabled for + // all the breakpoints. + !expandToScroll && contentAnimation?.addElement(baseEl.querySelector('.ion-page')!); + const baseAnimation = createAnimation('entering-base') .addElement(baseEl) .easing('cubic-bezier(0.32,0.72,0,1)') .duration(500) - .addAnimation(wrapperAnimation); + .addAnimation([wrapperAnimation]) + .beforeAddWrite(() => { + if (expandToScroll) { + // Scroll can only be done when the modal is fully expanded. + return; + } + + /** + * There are some browsers that causes flickering when + * dragging the content when scroll is enabled at every + * breakpoint. This is due to the wrapper element being + * transformed off the screen and having a snap animation. + * + * A workaround is to clone the footer element and append + * it outside of the wrapper element. This way, the footer + * is still visible and the drag can be done without + * flickering. The original footer is hidden until the modal + * is dismissed. This maintains the animation of the footer + * when the modal is dismissed. + * + * The workaround needs to be done before the animation starts + * so there are no flickering issues. + */ + const ionFooter = baseEl.querySelector('ion-footer'); + /** + * This check is needed to prevent more than one footer + * from being appended to the shadow root. + * Otherwise, iOS and MD enter animations would append + * the footer twice. + */ + const ionFooterAlreadyAppended = baseEl.shadowRoot!.querySelector('ion-footer'); + if (ionFooter && !ionFooterAlreadyAppended) { + const footerHeight = ionFooter.clientHeight; + const clonedFooter = ionFooter.cloneNode(true) as HTMLIonFooterElement; + + baseEl.shadowRoot!.appendChild(clonedFooter); + ionFooter.style.setProperty('display', 'none'); + ionFooter.setAttribute('aria-hidden', 'true'); + + // Padding is added to prevent some content from being hidden. + const page = baseEl.querySelector('.ion-page') as HTMLElement; + page.style.setProperty('padding-bottom', `${footerHeight}px`); + } + }); + + if (contentAnimation) { + baseAnimation.addAnimation(contentAnimation); + } if (presentingEl) { const isMobile = window.innerWidth < 768; diff --git a/core/src/components/modal/animations/ios.leave.ts b/core/src/components/modal/animations/ios.leave.ts index 914652878fa..89ba3ce8427 100644 --- a/core/src/components/modal/animations/ios.leave.ts +++ b/core/src/components/modal/animations/ios.leave.ts @@ -19,7 +19,7 @@ const createLeaveAnimation = () => { * iOS Modal Leave Animation */ export const iosLeaveAnimation = (baseEl: HTMLElement, opts: ModalAnimationOptions, duration = 500): Animation => { - const { presentingEl, currentBreakpoint } = opts; + const { presentingEl, currentBreakpoint, expandToScroll } = opts; const root = getElementRoot(baseEl); const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation(); @@ -32,7 +32,33 @@ export const iosLeaveAnimation = (baseEl: HTMLElement, opts: ModalAnimationOptio .addElement(baseEl) .easing('cubic-bezier(0.32,0.72,0,1)') .duration(duration) - .addAnimation(wrapperAnimation); + .addAnimation(wrapperAnimation) + .beforeAddWrite(() => { + if (expandToScroll) { + // Scroll can only be done when the modal is fully expanded. + return; + } + + /** + * If expandToScroll is disabled, we need to swap + * the visibility to the original, so the footer + * dismisses with the modal and doesn't stay + * until the modal is removed from the DOM. + */ + const ionFooter = baseEl.querySelector('ion-footer'); + if (ionFooter) { + const clonedFooter = baseEl.shadowRoot!.querySelector('ion-footer')!; + + ionFooter.style.removeProperty('display'); + ionFooter.removeAttribute('aria-hidden'); + + clonedFooter.style.setProperty('display', 'none'); + clonedFooter.setAttribute('aria-hidden', 'true'); + + const page = baseEl.querySelector('.ion-page') as HTMLElement; + page.style.removeProperty('padding-bottom'); + } + }); if (presentingEl) { const isMobile = window.innerWidth < 768; diff --git a/core/src/components/modal/animations/md.enter.ts b/core/src/components/modal/animations/md.enter.ts index a04c33e7f9a..fee0efc4f64 100644 --- a/core/src/components/modal/animations/md.enter.ts +++ b/core/src/components/modal/animations/md.enter.ts @@ -19,25 +19,78 @@ const createEnterAnimation = () => { { offset: 1, opacity: 1, transform: `translateY(0px)` }, ]); - return { backdropAnimation, wrapperAnimation }; + return { backdropAnimation, wrapperAnimation, contentAnimation: undefined }; }; /** * Md Modal Enter Animation */ export const mdEnterAnimation = (baseEl: HTMLElement, opts: ModalAnimationOptions): Animation => { - const { currentBreakpoint } = opts; + const { currentBreakpoint, expandToScroll } = opts; const root = getElementRoot(baseEl); - const { wrapperAnimation, backdropAnimation } = + const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation(); backdropAnimation.addElement(root.querySelector('ion-backdrop')!); wrapperAnimation.addElement(root.querySelector('.modal-wrapper')!); - return createAnimation() + // The content animation is only added if scrolling is enabled for + // all the breakpoints. + expandToScroll && contentAnimation?.addElement(baseEl.querySelector('.ion-page')!); + + const baseAnimation = createAnimation() .addElement(baseEl) .easing('cubic-bezier(0.36,0.66,0.04,1)') .duration(280) - .addAnimation([backdropAnimation, wrapperAnimation]); + .addAnimation([backdropAnimation, wrapperAnimation]) + .beforeAddWrite(() => { + if (expandToScroll) { + // Scroll can only be done when the modal is fully expanded. + return; + } + + /** + * There are some browsers that causes flickering when + * dragging the content when scroll is enabled at every + * breakpoint. This is due to the wrapper element being + * transformed off the screen and having a snap animation. + * + * A workaround is to clone the footer element and append + * it outside of the wrapper element. This way, the footer + * is still visible and the drag can be done without + * flickering. The original footer is hidden until the modal + * is dismissed. This maintains the animation of the footer + * when the modal is dismissed. + * + * The workaround needs to be done before the animation starts + * so there are no flickering issues. + */ + const ionFooter = baseEl.querySelector('ion-footer'); + /** + * This check is needed to prevent more than one footer + * from being appended to the shadow root. + * Otherwise, iOS and MD enter animations would append + * the footer twice. + */ + const ionFooterAlreadyAppended = baseEl.shadowRoot!.querySelector('ion-footer'); + if (ionFooter && !ionFooterAlreadyAppended) { + const footerHeight = ionFooter.clientHeight; + const clonedFooter = ionFooter.cloneNode(true) as HTMLIonFooterElement; + + baseEl.shadowRoot!.appendChild(clonedFooter); + ionFooter.style.setProperty('display', 'none'); + ionFooter.setAttribute('aria-hidden', 'true'); + + // Padding is added to prevent some content from being hidden. + const page = baseEl.querySelector('.ion-page') as HTMLElement; + page.style.setProperty('padding-bottom', `${footerHeight}px`); + } + }); + + if (contentAnimation) { + baseAnimation.addAnimation(contentAnimation); + } + + return baseAnimation; }; diff --git a/core/src/components/modal/animations/md.leave.ts b/core/src/components/modal/animations/md.leave.ts index 9977c678d07..e453e9339cd 100644 --- a/core/src/components/modal/animations/md.leave.ts +++ b/core/src/components/modal/animations/md.leave.ts @@ -21,7 +21,7 @@ const createLeaveAnimation = () => { * Md Modal Leave Animation */ export const mdLeaveAnimation = (baseEl: HTMLElement, opts: ModalAnimationOptions): Animation => { - const { currentBreakpoint } = opts; + const { currentBreakpoint, expandToScroll } = opts; const root = getElementRoot(baseEl); const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation(); @@ -29,8 +29,36 @@ export const mdLeaveAnimation = (baseEl: HTMLElement, opts: ModalAnimationOption backdropAnimation.addElement(root.querySelector('ion-backdrop')!); wrapperAnimation.addElement(root.querySelector('.modal-wrapper')!); - return createAnimation() + const baseAnimation = createAnimation() .easing('cubic-bezier(0.47,0,0.745,0.715)') .duration(200) - .addAnimation([backdropAnimation, wrapperAnimation]); + .addAnimation([backdropAnimation, wrapperAnimation]) + .beforeAddWrite(() => { + if (expandToScroll) { + // Scroll can only be done when the modal is fully expanded. + return; + } + + /** + * If expandToScroll is disabled, we need to swap + * the visibility to the original, so the footer + * dismisses with the modal and doesn't stay + * until the modal is removed from the DOM. + */ + const ionFooter = baseEl.querySelector('ion-footer'); + if (ionFooter) { + const clonedFooter = baseEl.shadowRoot!.querySelector('ion-footer')!; + + ionFooter.style.removeProperty('display'); + ionFooter.removeAttribute('aria-hidden'); + + clonedFooter.style.setProperty('display', 'none'); + clonedFooter.setAttribute('aria-hidden', 'true'); + + const page = baseEl.querySelector('.ion-page') as HTMLElement; + page.style.removeProperty('padding-bottom'); + } + }); + + return baseAnimation; }; diff --git a/core/src/components/modal/animations/sheet.ts b/core/src/components/modal/animations/sheet.ts index 760414f8162..e827846a7be 100644 --- a/core/src/components/modal/animations/sheet.ts +++ b/core/src/components/modal/animations/sheet.ts @@ -4,7 +4,7 @@ import type { ModalAnimationOptions } from '../modal-interface'; import { getBackdropValueForSheet } from '../utils'; export const createSheetEnterAnimation = (opts: ModalAnimationOptions) => { - const { currentBreakpoint, backdropBreakpoint } = opts; + const { currentBreakpoint, backdropBreakpoint, expandToScroll } = opts; /** * If the backdropBreakpoint is undefined, then the backdrop @@ -29,7 +29,17 @@ export const createSheetEnterAnimation = (opts: ModalAnimationOptions) => { { offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint! * 100}%)` }, ]); - return { wrapperAnimation, backdropAnimation }; + /** + * This allows the content to be scrollable at any breakpoint. + */ + const contentAnimation = !expandToScroll + ? createAnimation('contentAnimation').keyframes([ + { offset: 0, opacity: 1, maxHeight: `${(1 - currentBreakpoint!) * 100}%` }, + { offset: 1, opacity: 1, maxHeight: `${currentBreakpoint! * 100}%` }, + ]) + : undefined; + + return { wrapperAnimation, backdropAnimation, contentAnimation }; }; export const createSheetLeaveAnimation = (opts: ModalAnimationOptions) => { diff --git a/core/src/components/modal/gestures/sheet.ts b/core/src/components/modal/gestures/sheet.ts index a90eb5d99ea..5c95481ca0c 100644 --- a/core/src/components/modal/gestures/sheet.ts +++ b/core/src/components/modal/gestures/sheet.ts @@ -49,6 +49,7 @@ export const createSheetGesture = ( backdropBreakpoint: number, animation: Animation, breakpoints: number[] = [], + expandToScroll: boolean, getCurrentBreakpoint: () => number, onDismiss: () => void, onBreakpointChange: (breakpoint: number) => void @@ -71,6 +72,10 @@ export const createSheetGesture = ( { offset: 1, transform: 'translateY(100%)' }, ], BACKDROP_KEYFRAMES: backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop, + CONTENT_KEYFRAMES: [ + { offset: 0, maxHeight: '100%' }, + { offset: 1, maxHeight: '0%' }, + ], }; const contentEl = baseEl.querySelector('ion-content'); @@ -79,10 +84,11 @@ export const createSheetGesture = ( let offset = 0; let canDismissBlocksGesture = false; const canDismissMaxStep = 0.95; - const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation'); - const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation'); const maxBreakpoint = breakpoints[breakpoints.length - 1]; const minBreakpoint = breakpoints[0]; + const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation'); + const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation'); + const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation'); const enableBackdrop = () => { baseEl.style.setProperty('pointer-events', 'auto'); @@ -110,6 +116,36 @@ export const createSheetGesture = ( baseEl.classList.add(FOCUS_TRAP_DISABLE_CLASS); }; + /** + * Toggles the visible modal footer when `expandToScroll` is disabled. + * @param footer The footer to show. + */ + const swapFooterVisibility = (footer: 'original' | 'cloned') => { + const originalFooter = baseEl.querySelector('ion-footer') as HTMLIonFooterElement | null; + + if (!originalFooter) { + return; + } + + const clonedFooter = wrapperEl.nextElementSibling as HTMLIonFooterElement; + const footerToHide = footer === 'original' ? clonedFooter : originalFooter; + const footerToShow = footer === 'original' ? originalFooter : clonedFooter; + + footerToShow.style.removeProperty('display'); + footerToShow.removeAttribute('aria-hidden'); + + const page = baseEl.querySelector('.ion-page') as HTMLElement; + if (footer === 'original') { + page.style.removeProperty('padding-bottom'); + } else { + const pagePadding = footerToShow.clientHeight; + page.style.setProperty('padding-bottom', `${pagePadding}px`); + } + + footerToHide.style.setProperty('display', 'none'); + footerToHide.setAttribute('aria-hidden', 'true'); + }; + /** * After the entering animation completes, * we need to set the animation to go from @@ -121,6 +157,7 @@ export const createSheetGesture = ( if (wrapperAnimation && backdropAnimation) { wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]); backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]); + contentAnimation?.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]); animation.progressStart(true, 1 - currentBreakpoint); /** @@ -138,7 +175,7 @@ export const createSheetGesture = ( } } - if (contentEl && currentBreakpoint !== maxBreakpoint) { + if (contentEl && currentBreakpoint !== maxBreakpoint && expandToScroll) { contentEl.scrollY = false; } @@ -154,6 +191,14 @@ export const createSheetGesture = ( const contentEl = findClosestIonContent(detail.event.target! as HTMLElement); currentBreakpoint = getCurrentBreakpoint(); + /** + * If we have expandToScroll disabled, we should not allow the swipe gesture to start + * if the content is being swiped. + */ + if (!expandToScroll && contentEl) { + return false; + } + if (currentBreakpoint === 1 && contentEl) { /** * The modal should never swipe to close on the content with a refresher. @@ -187,6 +232,16 @@ export const createSheetGesture = ( */ canDismissBlocksGesture = baseEl.canDismiss !== undefined && baseEl.canDismiss !== true && minBreakpoint === 0; + /** + * If expandToScroll is disabled, we need to swap + * the footer visibility to the original, so if the modal + * is dismissed, the footer dismisses with the modal + * and doesn't stay on the screen after the modal is gone. + */ + if (!expandToScroll) { + swapFooterVisibility('original'); + } + /** * If we are pulling down, then it is possible we are pulling on the content. * We do not want scrolling to happen at the same time as the gesture. @@ -323,6 +378,20 @@ export const createSheetGesture = ( }, ]); + if (contentAnimation) { + /** + * The modal content should scroll at any breakpoint when expandToScroll + * is disabled. In order to do this, the content needs to be completely + * viewable so scrolling can access everything. Otherwise, the default + * behavior would show the content off the screen and only allow + * scrolling when the sheet is fully expanded. + */ + contentAnimation.keyframes([ + { offset: 0, maxHeight: `${(1 - breakpointOffset) * 100}%` }, + { offset: 1, maxHeight: `${snapToBreakpoint * 100}%` }, + ]); + } + animation.progressStep(0); } @@ -332,6 +401,15 @@ export const createSheetGesture = ( */ gesture.enable(false); + /** + * If expandToScroll is disabled, we need to swap + * the footer visibility to the cloned one so the footer + * doesn't flicker when the sheet's height is animated. + */ + if (!expandToScroll && shouldRemainOpen) { + swapFooterVisibility('cloned'); + } + if (shouldPreventDismiss) { handleCanDismiss(baseEl, animation); } else if (!shouldRemainOpen) { @@ -339,13 +417,13 @@ export const createSheetGesture = ( } /** - * If the sheet is going to be fully expanded then we should enable - * scrolling immediately. The sheet modal animation takes ~500ms to finish - * so if we wait until then there is a visible delay for when scrolling is - * re-enabled. Native iOS allows for scrolling on the sheet modal as soon - * as the gesture is released, so we align with that. + * Enables scrolling immediately if the sheet is about to fully expand + * or if it allows scrolling at any breakpoint. Without this, there would + * be a ~500ms delay while the modal animation completes, causing a + * noticeable lag. Native iOS allows scrolling as soon as the gesture is + * released, so we align with that behavior. */ - if (contentEl && snapToBreakpoint === breakpoints[breakpoints.length - 1]) { + if (contentEl && (snapToBreakpoint === breakpoints[breakpoints.length - 1] || !expandToScroll)) { contentEl.scrollY = true; } @@ -365,6 +443,7 @@ export const createSheetGesture = ( raf(() => { wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]); backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]); + contentAnimation?.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]); animation.progressStart(true, 1 - snapToBreakpoint); currentBreakpoint = snapToBreakpoint; onBreakpointChange(currentBreakpoint); diff --git a/core/src/components/modal/modal-interface.ts b/core/src/components/modal/modal-interface.ts index 733fcc9a55d..0b3ce7f901d 100644 --- a/core/src/components/modal/modal-interface.ts +++ b/core/src/components/modal/modal-interface.ts @@ -31,6 +31,7 @@ export interface ModalAnimationOptions { presentingEl?: HTMLElement; currentBreakpoint?: number; backdropBreakpoint?: number; + expandToScroll: boolean; } export interface ModalBreakpointChangeEventDetail { diff --git a/core/src/components/modal/modal.ios.scss b/core/src/components/modal/modal.ios.scss index fc5e25e3d19..dffb778e020 100644 --- a/core/src/components/modal/modal.ios.scss +++ b/core/src/components/modal/modal.ios.scss @@ -87,3 +87,16 @@ :host(.modal-sheet) .modal-wrapper { @include border-radius(var(--border-radius), var(--border-radius), 0, 0); } + +// iOS Sheet Modal - Scroll at all breakpoints +// -------------------------------------------------- + +/** + * Sheet modals require an additional padding as mentioned in the + * `core.scss` file. However, there's a workaround that requires + * a cloned footer to be added to the modal. This is only necessary + * because the core styles are not being applied to the cloned footer. + */ +:host(.modal-sheet.modal-no-expand-scroll) ion-footer ion-toolbar:first-of-type { + padding-top: $modal-sheet-padding-top; +} diff --git a/core/src/components/modal/modal.scss b/core/src/components/modal/modal.scss index 02b7128c99c..7c5ec7916fe 100644 --- a/core/src/components/modal/modal.scss +++ b/core/src/components/modal/modal.scss @@ -166,3 +166,13 @@ ion-backdrop { position: absolute; bottom: 0; } + +// Sheet Modal - Scroll at all breakpoints +// -------------------------------------------------- + +:host(.modal-sheet.modal-no-expand-scroll) ion-footer { + position: absolute; + bottom: 0; + + width: var(--width); +} diff --git a/core/src/components/modal/modal.tsx b/core/src/components/modal/modal.tsx index bc8f6184f9a..682f602121e 100644 --- a/core/src/components/modal/modal.tsx +++ b/core/src/components/modal/modal.tsx @@ -130,6 +130,18 @@ export class Modal implements ComponentInterface, OverlayInterface { */ @Prop() breakpoints?: number[]; + /** + * Controls whether scrolling or dragging within the sheet modal expands + * it to a larger breakpoint. This only takes effect when `breakpoints` + * and `initialBreakpoint` are set. + * + * If `true`, scrolling or dragging anywhere in the modal will first expand + * it to the next breakpoint. Once fully expanded, scrolling will affect the content. + * If `false`, scrolling will always affect the content, and the modal will only expand + * when dragging the header or handle. + */ + @Prop() expandToScroll = true; + /** * A decimal value between 0 and 1 that indicates the * initial point the modal will open at when creating a @@ -562,6 +574,7 @@ export class Modal implements ComponentInterface, OverlayInterface { presentingEl: presentingElement, currentBreakpoint: this.initialBreakpoint, backdropBreakpoint: this.backdropBreakpoint, + expandToScroll: this.expandToScroll, }); /* tslint:disable-next-line */ @@ -616,7 +629,10 @@ export class Modal implements ComponentInterface, OverlayInterface { // should be in the DOM and referenced by now, except // for the presenting el const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation); - const ani = (this.animation = animationBuilder(el, { presentingEl: this.presentingElement })); + const ani = (this.animation = animationBuilder(el, { + presentingEl: this.presentingElement, + expandToScroll: this.expandToScroll, + })); const contentEl = findIonContent(el); if (!contentEl) { @@ -668,6 +684,7 @@ export class Modal implements ComponentInterface, OverlayInterface { presentingEl: this.presentingElement, currentBreakpoint: initialBreakpoint, backdropBreakpoint, + expandToScroll: this.expandToScroll, })); ani.progressStart(true, 1); @@ -680,6 +697,7 @@ export class Modal implements ComponentInterface, OverlayInterface { backdropBreakpoint, ani, this.sortedBreakpoints, + this.expandToScroll, () => this.currentBreakpoint ?? 0, () => this.sheetOnDismiss(), (breakpoint: number) => { @@ -778,6 +796,7 @@ export class Modal implements ComponentInterface, OverlayInterface { presentingEl: presentingElement, currentBreakpoint: this.currentBreakpoint ?? this.initialBreakpoint, backdropBreakpoint: this.backdropBreakpoint, + expandToScroll: this.expandToScroll, } ); @@ -927,9 +946,16 @@ export class Modal implements ComponentInterface, OverlayInterface { }; render() { - const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap } = - this; - + const { + handle, + isSheetModal, + presentingElement, + htmlAttributes, + handleBehavior, + inheritedAttributes, + focusTrap, + expandToScroll, + } = this; const showHandle = handle !== false && isSheetModal; const mode = getIonMode(this); const isCardModal = presentingElement !== undefined && mode === 'ios'; @@ -948,6 +974,7 @@ export class Modal implements ComponentInterface, OverlayInterface { ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, + [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, ...getClassMap(this.cssClass), @@ -1019,6 +1046,12 @@ interface ModalOverlayOptions { * to fade in when using a sheet modal. */ backdropBreakpoint: number; + + /** + * Whether or not the modal should scroll/drag + * the content only when fully expanded. + */ + expandToScroll?: boolean; } type ModalPresentOptions = ModalOverlayOptions; diff --git a/core/src/components/modal/modal.vars.scss b/core/src/components/modal/modal.vars.scss index 724de22a0cf..7565d1c04f1 100644 --- a/core/src/components/modal/modal.vars.scss +++ b/core/src/components/modal/modal.vars.scss @@ -23,3 +23,9 @@ $modal-inset-height-large: 600px; /// @prop - Text color of the modal content $modal-text-color: $text-color; + +/// @prop - Padding top of the sheet modal +$modal-sheet-padding-top: 6px; + +/// @prop - Padding bottom of the sheet modal +$modal-sheet-padding-bottom: 6px; diff --git a/core/src/components/modal/test/sheet/index.html b/core/src/components/modal/test/sheet/index.html index bc4ba338001..8dacb81ffc4 100644 --- a/core/src/components/modal/test/sheet/index.html +++ b/core/src/components/modal/test/sheet/index.html @@ -100,6 +100,12 @@ > Present Sheet Modal (Max breakpoint is not 1) + + + diff --git a/core/src/components/input/test/bottom-content/input.e2e.ts b/core/src/components/input/test/bottom-content/input.e2e.ts index 5de0ca79e19..770ca5238f5 100644 --- a/core/src/components/input/test/bottom-content/input.e2e.ts +++ b/core/src/components/input/test/bottom-content/input.e2e.ts @@ -1,189 +1,218 @@ import { expect } from '@playwright/test'; import { configs, test } from '@utils/test/playwright'; -configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { - test.describe(title('input: bottom content'), () => { - test('entire input component should render correctly with no fill', async ({ page }) => { +/** + * Functionality is the same across modes & directions + */ +configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('input: bottom content functionality'), () => { + test('should not render bottom content if no hint is enabled', async ({ page }) => { + await page.setContent(``, config); + + const bottomEl = page.locator('ion-input .input-bottom'); + await expect(bottomEl).toHaveCount(0); + }); + test('helper text should be visible initially', async ({ page }) => { await page.setContent( - ` - - `, + ``, config ); - const input = page.locator('ion-input'); - await expect(input).toHaveScreenshot(screenshot(`input-full-bottom-no-fill`)); + + const helperText = page.locator('ion-input .helper-text'); + const errorText = page.locator('ion-input .error-text'); + await expect(helperText).toBeVisible(); + await expect(helperText).toHaveText('Helper text'); + await expect(errorText).toBeHidden(); }); - test('entire input component should render correctly with solid fill', async ({ page }) => { + test('input should have an aria-describedby attribute when helper text is present', async ({ page }) => { await page.setContent( - ` - - `, + ``, config ); - const input = page.locator('ion-input'); - await expect(input).toHaveScreenshot(screenshot(`input-full-bottom-solid`)); + + const input = page.locator('ion-input input'); + const helperText = page.locator('ion-input .helper-text'); + const helperTextId = await helperText.getAttribute('id'); + const ariaDescribedBy = await input.getAttribute('aria-describedby'); + + expect(ariaDescribedBy).toBe(helperTextId); }); - test('entire input component should render correctly with outline fill', async ({ page }) => { + test('error text should be visible when input is invalid', async ({ page }) => { await page.setContent( - ` - - `, + ``, config ); - const input = page.locator('ion-input'); - await expect(input).toHaveScreenshot(screenshot(`input-full-bottom-outline`)); - }); - }); -}); -/** - * Rendering is the same across modes - */ -configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { - test.describe(title('input: bottom content functionality'), () => { - test('should not render bottom content if no hint or counter is enabled', async ({ page }) => { - await page.setContent(``, config); - - const bottomEl = page.locator('ion-input .input-bottom'); - await expect(bottomEl).toHaveCount(0); + const helperText = page.locator('ion-input .helper-text'); + const errorText = page.locator('ion-input .error-text'); + await expect(helperText).toBeHidden(); + await expect(errorText).toBeVisible(); + await expect(errorText).toHaveText('Error text'); }); - }); -}); -/** - * Rendering is the same across modes - */ -configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { - test.describe(title('input: hint text'), () => { - test.describe('input: hint text functionality', () => { - test('helper text should be visible initially', async ({ page }) => { - await page.setContent( - ``, - config - ); + test('input should have an aria-describedby attribute when error text is present', async ({ page }) => { + await page.setContent( + ``, + config + ); - const helperText = page.locator('ion-input .helper-text'); - const errorText = page.locator('ion-input .error-text'); - await expect(helperText).toBeVisible(); - await expect(helperText).toHaveText('my helper'); - await expect(errorText).toBeHidden(); - }); - test('input should have an aria-describedby attribute when helper text is present', async ({ page }) => { - await page.setContent( - ``, - config - ); + const input = page.locator('ion-input input'); + const errorText = page.locator('ion-input .error-text'); + const errorTextId = await errorText.getAttribute('id'); + const ariaDescribedBy = await input.getAttribute('aria-describedby'); - const input = page.locator('ion-input input'); - const helperText = page.locator('ion-input .helper-text'); - const helperTextId = await helperText.getAttribute('id'); - const ariaDescribedBy = await input.getAttribute('aria-describedby'); + expect(ariaDescribedBy).toBe(errorTextId); + }); + test('input should have aria-invalid attribute when input is invalid', async ({ page }) => { + await page.setContent( + ``, + config + ); - expect(ariaDescribedBy).toBe(helperTextId); - }); - test('error text should be visible when input is invalid', async ({ page }) => { - await page.setContent( - ``, - config - ); + const input = page.locator('ion-input input'); - const helperText = page.locator('ion-input .helper-text'); - const errorText = page.locator('ion-input .error-text'); - await expect(helperText).toBeHidden(); - await expect(errorText).toBeVisible(); - await expect(errorText).toHaveText('my error'); - }); - test('error text should change when variable is customized', async ({ page }) => { - await page.setContent( - ` - - - `, - config - ); + await expect(input).toHaveAttribute('aria-invalid'); + }); + test('input should not have aria-invalid attribute when input is valid', async ({ page }) => { + await page.setContent( + ``, + config + ); - const errorText = page.locator('ion-input .error-text'); - await expect(errorText).toHaveScreenshot(screenshot(`input-error-custom-color`)); - }); - test('input should have an aria-describedby attribute when error text is present', async ({ page }) => { - await page.setContent( - ``, - config - ); + const input = page.locator('ion-input input'); - const input = page.locator('ion-input input'); - const errorText = page.locator('ion-input .error-text'); - const errorTextId = await errorText.getAttribute('id'); - const ariaDescribedBy = await input.getAttribute('aria-describedby'); + await expect(input).not.toHaveAttribute('aria-invalid'); + }); + test('input should not have aria-describedby attribute when no hint or error text is present', async ({ page }) => { + await page.setContent(``, config); - expect(ariaDescribedBy).toBe(errorTextId); - }); - test('input should have aria-invalid attribute when input is invalid', async ({ page }) => { - await page.setContent( - ``, - config - ); + const input = page.locator('ion-input input'); - const input = page.locator('ion-input input'); + await expect(input).not.toHaveAttribute('aria-describedby'); + }); + }); +}); - await expect(input).toHaveAttribute('aria-invalid'); - }); - test('input should not have aria-invalid attribute when input is valid', async ({ page }) => { - await page.setContent( - ``, - config - ); +/** + * Rendering is different across modes + */ +configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('input: helper text rendering'), () => { + test('should not have visual regressions when rendering helper text', async ({ page }) => { + await page.setContent(``, config); - const input = page.locator('ion-input input'); + const bottomEl = page.locator('ion-input'); + await expect(bottomEl).toHaveScreenshot(screenshot(`input-helper-text`)); + }); + test('should not have visual regressions when rendering helper text with wrapping text', async ({ page }) => { + await page.setContent( + ``, + config + ); - await expect(input).not.toHaveAttribute('aria-invalid'); - }); - test('input should not have aria-describedby attribute when no hint or error text is present', async ({ - page, - }) => { - await page.setContent(``, config); + const bottomEl = page.locator('ion-input'); + await expect(bottomEl).toHaveScreenshot(screenshot(`input-helper-text-wrapping`)); + }); + test('should not have visual regressions when rendering helper text with a stacked label', async ({ page }) => { + await page.setContent( + ``, + config + ); - const input = page.locator('ion-input input'); + const bottomEl = page.locator('ion-input'); + await expect(bottomEl).toHaveScreenshot(screenshot(`input-helper-text-stacked-label`)); + }); + }); - await expect(input).not.toHaveAttribute('aria-describedby'); - }); + test.describe(title('input: error text rendering'), () => { + test('should not have visual regressions when rendering error text', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const bottomEl = page.locator('ion-input'); + await expect(bottomEl).toHaveScreenshot(screenshot(`input-error-text`)); }); - test.describe('input: hint text rendering', () => { - test.describe('regular inputs', () => { - test('should not have visual regressions when rendering helper text', async ({ page }) => { - await page.setContent(``, config); - - const bottomEl = page.locator('ion-input .input-bottom'); - await expect(bottomEl).toHaveScreenshot(screenshot(`input-bottom-content-helper`)); - }); - test('should not have visual regressions when rendering error text', async ({ page }) => { - await page.setContent( - ``, - config - ); - - const bottomEl = page.locator('ion-input .input-bottom'); - await expect(bottomEl).toHaveScreenshot(screenshot(`input-bottom-content-error`)); - }); - }); + test('should not have visual regressions when rendering error text with a stacked label', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const bottomEl = page.locator('ion-input'); + await expect(bottomEl).toHaveScreenshot(screenshot(`input-error-text-stacked-label`)); }); }); }); /** - * Rendering is the same across modes + * Customizing supporting text is the same across modes and directions */ +configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('input: supporting text customization'), () => { + test('should not have visual regressions when rendering helper text with custom css', async ({ page }) => { + await page.setContent( + ` + + + `, + config + ); + + const helperText = page.locator('ion-input'); + await expect(helperText).toHaveScreenshot(screenshot(`input-helper-text-custom-css`)); + }); + test('should not have visual regressions when rendering error text with custom css', async ({ page }) => { + await page.setContent( + ` + + + `, + config + ); + + const errorText = page.locator('ion-input'); + await expect(errorText).toHaveScreenshot(screenshot(`input-error-text-custom-css`)); + }); + test('should not have visual regressions when rendering error text with a custom css variable', async ({ + page, + }) => { + await page.setContent( + ` + + + `, + config + ); + + const errorText = page.locator('ion-input'); + await expect(errorText).toHaveScreenshot(screenshot(`input-error-text-custom-css-var`)); + }); + }); +}); + configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { test.describe(title('input: counter'), () => { test.describe('input: counter functionality', () => { test('should not activate if maxlength is not specified even if bottom content is visible', async ({ page }) => { await page.setContent( ` - + `, config ); @@ -193,7 +222,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, co test('default formatter should be used', async ({ page }) => { await page.setContent( ` - + `, config ); @@ -203,8 +232,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, co test('custom formatter should be used when provided', async ({ page }) => { await page.setContent( ` - - + + + + diff --git a/core/src/components/textarea/test/bottom-content/textarea.e2e.ts b/core/src/components/textarea/test/bottom-content/textarea.e2e.ts index 79fcfc4cfac..7c7315c4857 100644 --- a/core/src/components/textarea/test/bottom-content/textarea.e2e.ts +++ b/core/src/components/textarea/test/bottom-content/textarea.e2e.ts @@ -1,134 +1,209 @@ import { expect } from '@playwright/test'; import { configs, test } from '@utils/test/playwright'; -configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { - test.describe(title('textarea: bottom content'), () => { - test('should not render bottom content if no hint or counter is enabled', async ({ page }) => { - await page.setContent(``, config); +/** + * Functionality is the same across modes & directions + */ +configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('textarea: bottom content functionality'), () => { + test('should not render bottom content if no hint is enabled', async ({ page }) => { + await page.setContent(``, config); const bottomEl = page.locator('ion-textarea .textarea-bottom'); await expect(bottomEl).toHaveCount(0); }); - }); -}); + test('helper text should be visible initially', async ({ page }) => { + await page.setContent( + ``, + config + ); -configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { - test.describe(title('textarea: hint text'), () => { - test.describe('textarea: hint text functionality', () => { - test('helper text should be visible initially', async ({ page }) => { - await page.setContent( - ``, - config - ); + const helperText = page.locator('ion-textarea .helper-text'); + const errorText = page.locator('ion-textarea .error-text'); + await expect(helperText).toBeVisible(); + await expect(helperText).toHaveText('Helper text'); + await expect(errorText).toBeHidden(); + }); + test('textarea should have an aria-describedby attribute when helper text is present', async ({ page }) => { + await page.setContent( + ``, + config + ); - const helperText = page.locator('ion-textarea .helper-text'); - const errorText = page.locator('ion-textarea .error-text'); - await expect(helperText).toBeVisible(); - await expect(helperText).toHaveText('my helper'); - await expect(errorText).toBeHidden(); - }); - test('textarea should have an aria-describedby attribute when helper text is present', async ({ page }) => { - await page.setContent( - ``, - config - ); + const textarea = page.locator('ion-textarea textarea'); + const helperText = page.locator('ion-textarea .helper-text'); + const helperTextId = await helperText.getAttribute('id'); + const ariaDescribedBy = await textarea.getAttribute('aria-describedby'); - const textarea = page.locator('ion-textarea textarea'); - const helperText = page.locator('ion-textarea .helper-text'); - const helperTextId = await helperText.getAttribute('id'); - const ariaDescribedBy = await textarea.getAttribute('aria-describedby'); + expect(ariaDescribedBy).toBe(helperTextId); + }); + test('error text should be visible when textarea is invalid', async ({ page }) => { + await page.setContent( + ``, + config + ); - expect(ariaDescribedBy).toBe(helperTextId); - }); - test('error text should be visible when textarea is invalid', async ({ page }) => { - await page.setContent( - ``, - config - ); + const helperText = page.locator('ion-textarea .helper-text'); + const errorText = page.locator('ion-textarea .error-text'); + await expect(helperText).toBeHidden(); + await expect(errorText).toBeVisible(); + await expect(errorText).toHaveText('Error text'); + }); - const helperText = page.locator('ion-textarea .helper-text'); - const errorText = page.locator('ion-textarea .error-text'); - await expect(helperText).toBeHidden(); - await expect(errorText).toBeVisible(); - await expect(errorText).toHaveText('my error'); - }); - test('error text should change when variable is customized', async ({ page }) => { - await page.setContent( - ` - - - `, - config - ); + test('textarea should have an aria-describedby attribute when error text is present', async ({ page }) => { + await page.setContent( + ``, + config + ); - const errorText = page.locator('ion-textarea .error-text'); - await expect(errorText).toHaveScreenshot(screenshot(`textarea-error-custom-color`)); - }); - test('textarea should have an aria-describedby attribute when error text is present', async ({ page }) => { - await page.setContent( - ``, - config - ); + const textarea = page.locator('ion-textarea textarea'); + const errorText = page.locator('ion-textarea .error-text'); + const errorTextId = await errorText.getAttribute('id'); + const ariaDescribedBy = await textarea.getAttribute('aria-describedby'); - const textarea = page.locator('ion-textarea textarea'); - const errorText = page.locator('ion-textarea .error-text'); - const errorTextId = await errorText.getAttribute('id'); - const ariaDescribedBy = await textarea.getAttribute('aria-describedby'); + expect(ariaDescribedBy).toBe(errorTextId); + }); + test('textarea should have aria-invalid attribute when textarea is invalid', async ({ page }) => { + await page.setContent( + ``, + config + ); - expect(ariaDescribedBy).toBe(errorTextId); - }); - test('textarea should have aria-invalid attribute when input is invalid', async ({ page }) => { - await page.setContent( - ``, - config - ); + const textarea = page.locator('ion-textarea textarea'); - const textarea = page.locator('ion-textarea textarea'); + await expect(textarea).toHaveAttribute('aria-invalid'); + }); + test('textarea should not have aria-invalid attribute when textarea is valid', async ({ page }) => { + await page.setContent( + ``, + config + ); - await expect(textarea).toHaveAttribute('aria-invalid'); - }); - test('textarea should not have aria-invalid attribute when input is valid', async ({ page }) => { - await page.setContent( - ``, - config - ); + const textarea = page.locator('ion-textarea textarea'); - const textarea = page.locator('ion-textarea textarea'); + await expect(textarea).not.toHaveAttribute('aria-invalid'); + }); + test('textarea should not have aria-describedby attribute when no hint or error text is present', async ({ + page, + }) => { + await page.setContent(``, config); - await expect(textarea).not.toHaveAttribute('aria-invalid'); - }); - test('textarea should not have aria-describedby attribute when no hint or error text is present', async ({ - page, - }) => { - await page.setContent(``, config); + const textarea = page.locator('ion-textarea textarea'); - const textarea = page.locator('ion-textarea textarea'); + await expect(textarea).not.toHaveAttribute('aria-describedby'); + }); + }); +}); - await expect(textarea).not.toHaveAttribute('aria-describedby'); - }); +/** + * Rendering is different across modes + */ +configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('textarea: helper text rendering'), () => { + test('should not have visual regressions when rendering helper text', async ({ page }) => { + await page.setContent(``, config); + + const bottomEl = page.locator('ion-textarea'); + await expect(bottomEl).toHaveScreenshot(screenshot(`textarea-helper-text`)); }); - test.describe('textarea: hint text rendering', () => { - test.describe('regular textareas', () => { - test('should not have visual regressions when rendering helper text', async ({ page }) => { - await page.setContent(``, config); - - const bottomEl = page.locator('ion-textarea .textarea-bottom'); - await expect(bottomEl).toHaveScreenshot(screenshot(`textarea-bottom-content-helper`)); - }); - test('should not have visual regressions when rendering error text', async ({ page }) => { - await page.setContent( - ``, - config - ); - - const bottomEl = page.locator('ion-textarea .textarea-bottom'); - await expect(bottomEl).toHaveScreenshot(screenshot(`textarea-bottom-content-error`)); - }); - }); + test('should not have visual regressions when rendering helper text with wrapping text', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const bottomEl = page.locator('ion-textarea'); + await expect(bottomEl).toHaveScreenshot(screenshot(`textarea-helper-text-wrapping`)); + }); + test('should not have visual regressions when rendering helper text with a stacked label', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const bottomEl = page.locator('ion-textarea'); + await expect(bottomEl).toHaveScreenshot(screenshot(`textarea-helper-text-stacked-label`)); + }); + }); + + test.describe(title('textarea: error text rendering'), () => { + test('should not have visual regressions when rendering error text', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const bottomEl = page.locator('ion-textarea'); + await expect(bottomEl).toHaveScreenshot(screenshot(`textarea-error-text`)); + }); + test('should not have visual regressions when rendering error text with a stacked label', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const bottomEl = page.locator('ion-textarea'); + await expect(bottomEl).toHaveScreenshot(screenshot(`textarea-error-text-stacked-label`)); + }); + }); +}); + +/** + * Customizing supporting text is the same across modes and directions + */ +configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('textarea: supporting text customization'), () => { + test('should not have visual regressions when rendering helper text with custom css', async ({ page }) => { + await page.setContent( + ` + + + `, + config + ); + + const helperText = page.locator('ion-textarea'); + await expect(helperText).toHaveScreenshot(screenshot(`textarea-helper-text-custom-css`)); + }); + test('should not have visual regressions when rendering error text with custom css', async ({ page }) => { + await page.setContent( + ` + + + `, + config + ); + + const errorText = page.locator('ion-textarea'); + await expect(errorText).toHaveScreenshot(screenshot(`textarea-error-text-custom-css`)); + }); + test('should not have visual regressions when rendering error text with a custom css variable', async ({ + page, + }) => { + await page.setContent( + ` + + + `, + config + ); + + const errorText = page.locator('ion-textarea'); + await expect(errorText).toHaveScreenshot(screenshot(`textarea-error-text-custom-css-var`)); }); }); }); @@ -139,7 +214,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, co test('should not activate if maxlength is not specified even if bottom content is visible', async ({ page }) => { await page.setContent( ` - + `, config ); @@ -149,7 +224,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, co test('default formatter should be used', async ({ page }) => { await page.setContent( ` - + `, config ); @@ -159,7 +234,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, co test('custom formatter should be used when provided', async ({ page }) => { await page.setContent( ` - + + + + + + + + + + + Checkbox - Bottom Content + + + + +
+
+

No Hint

+ Label +
+ +
+

No Hint: Stacked

+ Label +
+ +
+

Helper Text: Label Start

+ Label +
+ +
+

Helper Text: Label End

+ Label +
+ +
+

Helper Text: Label Stacked

+ Label +
+ +
+

Helper Text: Label Fixed

+ Label +
+ +
+

Error Text: Label Start

+ Label +
+ +
+

Error Text: Label End

+ Label +
+ +
+

Error Text: Label Stacked

+ Label +
+ +
+

Error Text: Label Fixed

+ Label +
+
+ + + + +
+
+ + diff --git a/core/src/components/checkbox/test/item/checkbox.e2e.ts b/core/src/components/checkbox/test/item/checkbox.e2e.ts index 5f9f78ab8b5..bdcf1892da2 100644 --- a/core/src/components/checkbox/test/item/checkbox.e2e.ts +++ b/core/src/components/checkbox/test/item/checkbox.e2e.ts @@ -53,7 +53,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { test.describe(title('checkbox: long label in item'), () => { - test('should render margins correctly when using long label in item', async ({ page }) => { + test('should not have visual regressions when using long label in item', async ({ page }) => { await page.setContent( ` @@ -69,7 +69,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { const list = page.locator('ion-list'); await expect(list).toHaveScreenshot(screenshot(`checkbox-long-label-in-item`)); }); - test('should render margins correctly when using long label in item with start alignment', async ({ + test('should not have visual regressions when using long label in item with start alignment', async ({ page, }, testInfo) => { testInfo.annotations.push({ @@ -93,8 +93,25 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { }); }); + test.describe(title('checkbox: end label in item'), () => { + test('should not have visual regressions when using end label in item', async ({ page }) => { + await page.setContent( + ` + + + Enable Notifications + + + `, + config + ); + const list = page.locator('ion-list'); + await expect(list).toHaveScreenshot(screenshot(`checkbox-end-label-in-item`)); + }); + }); + test.describe(title('checkbox: stacked label in item'), () => { - test('should render margins correctly when using stacked label in item', async ({ page }) => { + test('should not have visual regressions when using stacked label in item', async ({ page }) => { await page.setContent( ` diff --git a/core/src/components/checkbox/test/item/checkbox.e2e.ts-snapshots/checkbox-end-label-in-item-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/checkbox/test/item/checkbox.e2e.ts-snapshots/checkbox-end-label-in-item-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..c11295cded2bb728c647f20f6ffd6803a414a320 GIT binary patch literal 2887 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 F{{UX%oO=KO literal 0 HcmV?d00001 diff --git a/core/src/components/checkbox/test/item/checkbox.e2e.ts-snapshots/checkbox-end-label-in-item-ios-ltr-Mobile-Safari-linux.png b/core/src/components/checkbox/test/item/checkbox.e2e.ts-snapshots/checkbox-end-label-in-item-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5e4e5b0914833a9eca09735027f15e19cc01d179 GIT binary patch literal 2951 zcma);hgTEZ7REuV3S-EfDiU9 zT;*6(@O&K<_aVCOSm`sFGsKp~Dmjxv+r%>-oQWKF`UQ?3Rk+LevTO34hCWMhK|sfh zhO}fSg{FU^=knG}h@5jmuUCWi_WKg2zSV@ZhaA>1)|iad`R(;5k%YZj@^io=833fN zyg8gY4gk?nMy6~4^b7$h*jRXpkyJ~(%5mUlVgz62)2{EIKd1Lm5)m>-?=J}a1h1tfQ)nh3zq$`pJ*RqOg3 zA;X`Dcs+*k^gJ1NgbKPQli`B*=RSR!J?3hOb<2ZgvlbK^FqHI{DOdc*V4}E3!ONG# z(5)Y#f>$*y_ULqO9v&|Cr%gUnNr+NH%6VWjD%HyLgV4;{?tPu=32!Zt;p$~3lj*9O z>!^%wyvt4U+*n^o0`fKNl>Od+Fy(xEz}jn zqS0v9@a2Ue=ef0D665DffBZ}2Np`j;M$uyN9~VD;GAkb4TPJSZ_4MpnqJ5l~1@Zf@)||WP3|XOGCrOd2a^=0dHSlUq8Qzdz#D3%ic|}c{kejcA1UWty>ek zhKGC`s#*eET3T97&CQ^+e7`o7y?O;mkI&8?&V?*U$BqKYuCF@oUc zVOu?d8ohKneT?AY;W0)KqLh@BOjJ3jIo7$&H2aC9m_Ydp4IaOE%s(B05msUr6zfOW zL-}iNlURh6B3qoDsJ1VJBPQ`s@p!bxPqEBeSE9*Hfiw~ZlwoPb>eRcSngosJufE<* z2i+tKbMtgm<5%U}L1JrbKXrYM=y}lz%HJil@wIU!hSxxfihk#ylr5nbnqJ^sV;^g6 zY<&ERpO;t00EUxC%a=<*a zTsLGrYj7EpR)NDwQ(awM&z(D`qM|}x;ffXxUNm--2|dHoP2_9^OY%LA9h043CW5O&x$Eb;L{{b8TVdyN%g7 zIo?gqaqvI}%~Pz2x>yn~k%V4XR8sn9Z7qd5wH9n;X*oGQzQn32EoGC|Y{$F@YvoOy$}IJ;I5xJ5-0JV6@V!kEB74J`OOIVvu4*=A$D*v>CFK;KH+7K|uzm{*3xgQ<+&UK9))jIG<>lpLx}>JQ!zEMGHxb$iL zvf!a?wC@$!R}J^~S5#IesovjPpUbn2gP$Qo7!4DXlNUz`2~Ltas!k0{pG%B&gMUvq z`?;9=7!<3uz8PJ4Ij<)F=AgT~d#Bn-URq+_7)Vf4@xayq2uxJ3oTgT2=$?fVBO3b`d#jo zKU;m0DJCA~vRrZSs)<&VDtUp6iz^l`O#s{-TwN{JW8fv$4}A>(?3}gjUA(VTII=vL zdr1+C#i9(o!oy)<`#o>oKqe%<5ZEPBRrc{Y@s^_1p zq1*cDXP<;U-@avIV!{Ex7aAHmR(dTlpr==6DOK@T4A!TVCh zZI!Z5oH$Vs+`2J?f7jaDT35HpSSb$C5hI3doQJS;@=BOnSa{~M?@Bm5`&3$8?K@F< zE1p-<9%r`@$*dV&0r}_pLy~y8Ni8=RVKkb>Fj3^dk z1v=%cP1^nDW4;J3<(3{NlVdatB6fd2J#mT;E-Wnk_uqey>TRF4{o>u!LHl$83{KWZ zCO8g15)6r_>UykfsdJ4(%3z7%mSsm8v$a;g1kCeLp&n>eEasTo`e_COq`v+=?mxeQ3i&F3Rq9slLOU-%$IuaoA~2haCW`bU+b+t zRO|PODxG>aB?@7u(P-a2Bcsn21+WQ;i?99qWolueqO1%(O6m<_?yiBJ!W3#_XV;D9 z2Y`K&+5ly1wk6P5imzhAyTMiGt&xscFad>mU1(WO*?Or4bUwONjyFq9OT**wWK9)5 zNS0X{yu@u@DQsm#ykYLj7E>1h@@zqMjA^cIg`!jiEyx;9ii(OLV+jO8-3tIP{fsi^ zm*sJ#Iuf8JLVpn1qXGcXUut{R WuoOu*$8gYD1ITNZh+4SY)Bgf{#KX=2 literal 0 HcmV?d00001 diff --git a/core/src/components/checkbox/test/item/checkbox.e2e.ts-snapshots/checkbox-end-label-in-item-md-ltr-Mobile-Chrome-linux.png b/core/src/components/checkbox/test/item/checkbox.e2e.ts-snapshots/checkbox-end-label-in-item-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..e1c479c87bbbac60c54f9f9ae3d4137c313b4d69 GIT binary patch literal 2624 zcmb`J`9G9<8^?H2s7rHG?pA> z%Q}M`B(gJ|?8MlYA!GM^&tLHT@I3bq_x*j{uh)Iu*Y){cpZE2Rv$ZxA7lDaDAQ15z zX2y09$e}o}z9u99?(XWR&w|Gxe>+nIq_E@kECeFFeZ%#it0UihLslC^O+P*DijKvb|7R0*Ci#X(=qmLe+TXrtHpHfq^)AZtGVo^bPc|dQrRke%^ z4CaHu=sf)P2NsJByLFNLxw%$E{np{QP*; z0rN4Xd4+{bpUEnr8wHYik^`d9dOU*_`RBHd^cv>yW=VGqag?_NOBP z?(~@l+qAH-u(|p91Dxa$CX;DmVp3I8^Fr@kVWHZ&a~_;RH@KFMkB`EugCQr*z(7($ z!aqS98pgS8&{INB!Y$E6`QYH-hK2^BqSZwe6{48}hEpgmEk zOgr!UzZI00t}Xms3W^N~2pFynUTaU&7M54Crsn45F&yuJAK$!r^Q8Knvf^SVR>%*6 z=*iD*ZNl;d0wFUq)7RHG$A*sg_kWR)@K*N2hYu7IsjRFlC^U4w1Jk}GBBo$FQpw#| zoosO|bnW&j7nS<;d14|B?)~ah(Xsm52cJ-HrKP3g;^H(lHGRsRnRcpf)$1FJgE&WT z@4ULYgS{QTDH2&yT6*~K;eeB5b=S(|AFGW9)G`b7s%P#02;_%k-r=)2`fE zRRa|jCHNU?P_ebO#b7Wx>4u#9a1p}2rg+K5#zwB-hv1tGayX>I6Hwv9W=x8t&|TdB;}*@r!=YH6Z|qhmRh~!C>hI z;nhox?5Va?n=~zg#62uF6Lby;2YN_a+iOMK+1Yt%sLI~i*_>0FW0fH#DH$+7plT#J zJvDWM+4J_T!oEN(`_k%IL-fSNJq!lpJkAc^ky5`C#$OtK{`|QxHCE@*NFRrjnwr{+ z7Nt-qEidIBVK6d*Y!6t4z7cm|VBiBV^Kebz$jC?=MRk68S%;S*R4=GOvjUq8JU@8} zcx^YUK074aJv6s3B>6QOnmm?;RcZvjjd969w z#V}f3UB%^@RX|ZFR7BfQmB05xq-BVhoMFUw(d^9x?Fcqh#fCqWX&7l>U@+3s(gIZ0 z(+lBt&;-y&#*{Q^R?zoeUtlLsrZzVt9UUFFt%(c@i^YnO0013M#QF03^6Y^#cah`y z(GLedkSUaIA`6E$6@%F!|`wqX9Bq`fq?# zXn^WaO@z?u+M2euHU^75wp|3^46HQnJNr@hzyW>j+7kky=}U&r))6w99Fq)a@iW5G z((@=fdOhdU|^aT+ID5<2=ySvK;R*TpTYJ4W{=H>>-5ElLB%^P5pmvV*_GFjFj z?6z8J@08LA5D5fyaB#SL_pYg_X?S?Jv9WPTNcCe{sn?g!?d=P*vkXIL7Z)WZB{UkH zN+R8dr^m;~udlCv{rXkce_8@DQ)AKJ-w#V{{~ z4Qij~AnCoUNK@0sj~_R=_W*42^76`{+S;WtF@oD+$&;5098`#{Lh?A{bM)RHe7=%` zLRXCi1~U(M`Z6g=q|?#;OcYPBOCRSNhHLmKv$=n|u_&D2?w6b;% zj3nPHV5&;6TQr|BnNwgU{it~9!jK31w=FBOuBe~P;Kk_b>BV0abQds26LWIV_V!Q~ zOlx1FI15sbvR?NL#^K6x|71kEST9_FtfWF&BZ80>8FyXi|8NXa*k0D@KDaIf8B6^* lYIX=BHJ*9wzl1wD@-{As$Gv%C2pkC^H%zRJ3lZ*5{{tpI9~l4u literal 0 HcmV?d00001 diff --git a/core/src/components/checkbox/test/item/checkbox.e2e.ts-snapshots/checkbox-end-label-in-item-md-ltr-Mobile-Firefox-linux.png b/core/src/components/checkbox/test/item/checkbox.e2e.ts-snapshots/checkbox-end-label-in-item-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..66aaf9855336a871404b9526597d9f1b67114970 GIT binary patch literal 3305 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 literal 0 HcmV?d00001 diff --git a/core/src/components/checkbox/test/item/index.html b/core/src/components/checkbox/test/item/index.html index 43d2cd640d3..b2fa0bdccd1 100644 --- a/core/src/components/checkbox/test/item/index.html +++ b/core/src/components/checkbox/test/item/index.html @@ -49,6 +49,15 @@

Placement Start

+
+

Default Justify

+ + + Enable Notifications + + +
+

Justify Start

@@ -79,6 +88,15 @@

Justify Space Between

Placement End

+
+

Default Justify

+ + + Enable Notifications + + +
+

Justify Start

@@ -109,6 +127,15 @@

Justify Space Between

Placement Fixed

+
+

Default Justify

+ + + Enable Notifications + + +
+

Justify Start

@@ -139,6 +166,15 @@

Justify Space Between

Placement Stacked

+
+

Default Align

+ + + Enable Notifications + + +
+

Align Start

@@ -190,6 +226,24 @@

Multiline Label

+
+ + + + Enable Notifications Enable Notifications Enable Notifications + + + +
+
+ + + + Enable Notifications Enable Notifications Enable Notifications + + + +
diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index 9d6d23b5c17..69c2f742454 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -507,14 +507,14 @@ export declare interface IonCardTitle extends Components.IonCardTitle {} @ProxyCmp({ - inputs: ['alignment', 'checked', 'color', 'disabled', 'indeterminate', 'justify', 'labelPlacement', 'mode', 'name', 'required', 'value'] + inputs: ['alignment', 'checked', 'color', 'disabled', 'errorText', 'helperText', 'indeterminate', 'justify', 'labelPlacement', 'mode', 'name', 'required', 'value'] }) @Component({ selector: 'ion-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['alignment', 'checked', 'color', 'disabled', 'indeterminate', 'justify', 'labelPlacement', 'mode', 'name', 'required', 'value'], + inputs: ['alignment', 'checked', 'color', 'disabled', 'errorText', 'helperText', 'indeterminate', 'justify', 'labelPlacement', 'mode', 'name', 'required', 'value'], }) export class IonCheckbox { protected el: HTMLIonCheckboxElement; diff --git a/packages/angular/standalone/src/directives/checkbox.ts b/packages/angular/standalone/src/directives/checkbox.ts index c1259d10800..72e55ac0c6f 100644 --- a/packages/angular/standalone/src/directives/checkbox.ts +++ b/packages/angular/standalone/src/directives/checkbox.ts @@ -20,6 +20,8 @@ const CHECKBOX_INPUTS = [ 'checked', 'color', 'disabled', + 'errorText', + 'helperText', 'indeterminate', 'justify', 'labelPlacement', diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index a866edde10a..79a0953d053 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -231,6 +231,8 @@ export const IonCheckbox = /*@__PURE__*/ defineContainer Date: Mon, 10 Mar 2025 18:39:13 -0400 Subject: [PATCH 12/18] feat(toggle): add helperText and errorText properties (#30161) Issue number: N/A --------- ## What is the current behavior? Toggle does not support helper and error text. ## What is the new behavior? Adds support for helper and error text, similar to input and textarea. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information - [Bottom Content: Preview](https://ionic-framework-git-rou-11552-ionic1.vercel.app/src/components/toggle/test/bottom-content) - [Item: Preview](https://ionic-framework-git-rou-11552-ionic1.vercel.app/src/components/toggle/test/item) --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Co-authored-by: Maria Hutt --- core/api.txt | 5 + core/src/components.d.ts | 16 ++ .../toggle/test/bottom-content/index.html | 132 ++++++++++++ .../toggle/test/bottom-content/toggle.e2e.ts | 198 ++++++++++++++++++ ...-custom-css-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2905 bytes ...custom-css-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3305 bytes ...-custom-css-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2798 bytes ...error-text-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2582 bytes ...rror-text-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2935 bytes ...error-text-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2619 bytes ...-error-text-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2378 bytes ...error-text-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2540 bytes ...-error-text-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2187 bytes ...cked-label-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2315 bytes ...ked-label-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2893 bytes ...cked-label-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2309 bytes ...acked-label-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 1891 bytes ...cked-label-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2169 bytes ...acked-label-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 1740 bytes ...-custom-css-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2932 bytes ...custom-css-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3663 bytes ...-custom-css-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2706 bytes ...r-text-end-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2585 bytes ...-text-end-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2756 bytes ...r-text-end-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2608 bytes ...er-text-end-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2299 bytes ...r-text-end-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2357 bytes ...er-text-end-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2113 bytes ...d-wrapping-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3172 bytes ...-wrapping-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 5225 bytes ...d-wrapping-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3335 bytes ...nd-wrapping-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2724 bytes ...d-wrapping-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4646 bytes ...nd-wrapping-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2792 bytes ...elper-text-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2569 bytes ...lper-text-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2751 bytes ...elper-text-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2598 bytes ...helper-text-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2364 bytes ...elper-text-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2383 bytes ...helper-text-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2170 bytes ...xt-stacked-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2326 bytes ...t-stacked-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2719 bytes ...xt-stacked-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2331 bytes ...ext-stacked-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 1893 bytes ...xt-stacked-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2092 bytes ...ext-stacked-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 1772 bytes ...d-wrapping-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3539 bytes ...-wrapping-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 5643 bytes ...d-wrapping-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3608 bytes ...ed-wrapping-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2876 bytes ...d-wrapping-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 5737 bytes ...ed-wrapping-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2603 bytes ...t-wrapping-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3147 bytes ...-wrapping-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 5192 bytes ...t-wrapping-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3309 bytes ...xt-wrapping-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2753 bytes ...t-wrapping-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4687 bytes ...xt-wrapping-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2856 bytes .../components/toggle/test/item/index.html | 54 +++++ .../components/toggle/test/item/toggle.e2e.ts | 23 +- ...bel-in-item-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3223 bytes ...el-in-item-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3921 bytes ...bel-in-item-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3051 bytes core/src/components/toggle/toggle.scss | 100 ++++++--- core/src/components/toggle/toggle.tsx | 60 ++++++ packages/angular/src/directives/proxies.ts | 4 +- .../standalone/src/directives/toggle.ts | 2 + packages/vue/src/proxies.ts | 2 + 68 files changed, 567 insertions(+), 29 deletions(-) create mode 100644 core/src/components/toggle/test/bottom-content/index.html create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-custom-css-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-custom-css-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-custom-css-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-custom-css-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-custom-css-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-custom-css-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-wrapping-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-wrapping-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-wrapping-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-wrapping-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-wrapping-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-wrapping-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-wrapping-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-wrapping-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-wrapping-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-wrapping-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-wrapping-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-wrapping-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-wrapping-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-wrapping-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-wrapping-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-wrapping-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-wrapping-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-wrapping-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/toggle/test/item/toggle.e2e.ts-snapshots/toggle-end-label-in-item-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/toggle/test/item/toggle.e2e.ts-snapshots/toggle-end-label-in-item-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/toggle/test/item/toggle.e2e.ts-snapshots/toggle-end-label-in-item-md-ltr-Mobile-Safari-linux.png diff --git a/core/api.txt b/core/api.txt index 70cd499a604..73135538efc 100644 --- a/core/api.txt +++ b/core/api.txt @@ -1948,6 +1948,8 @@ ion-toggle,prop,checked,boolean,false,false,false ion-toggle,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record | undefined,undefined,false,true ion-toggle,prop,disabled,boolean,false,false,false ion-toggle,prop,enableOnOffLabels,boolean | undefined,config.get('toggleOnOffLabels'),false,false +ion-toggle,prop,errorText,string | undefined,undefined,false,false +ion-toggle,prop,helperText,string | undefined,undefined,false,false ion-toggle,prop,justify,"end" | "space-between" | "start" | undefined,undefined,false,false ion-toggle,prop,labelPlacement,"end" | "fixed" | "stacked" | "start",'start',false,false ion-toggle,prop,mode,"ios" | "md",undefined,false,false @@ -1981,8 +1983,11 @@ ion-toggle,css-prop,--track-background,ios ion-toggle,css-prop,--track-background,md ion-toggle,css-prop,--track-background-checked,ios ion-toggle,css-prop,--track-background-checked,md +ion-toggle,part,error-text ion-toggle,part,handle +ion-toggle,part,helper-text ion-toggle,part,label +ion-toggle,part,supporting-text ion-toggle,part,track ion-toolbar,shadow diff --git a/core/src/components.d.ts b/core/src/components.d.ts index bd7426116f1..b4587c7c2d9 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -3284,6 +3284,14 @@ export namespace Components { * Enables the on/off accessibility switch labels within the toggle. */ "enableOnOffLabels": boolean | undefined; + /** + * Text that is placed under the toggle label and displayed when an error is detected. + */ + "errorText"?: string; + /** + * Text that is placed under the toggle label and displayed when no error is detected. + */ + "helperText"?: string; /** * How to pack the label and toggle within a line. `"start"`: The label and toggle will appear on the left in LTR and on the right in RTL. `"end"`: The label and toggle will appear on the right in LTR and on the left in RTL. `"space-between"`: The label and toggle will appear on opposite ends of the line with space between the two elements. Setting this property will change the toggle `display` to `block`. */ @@ -8171,6 +8179,14 @@ declare namespace LocalJSX { * Enables the on/off accessibility switch labels within the toggle. */ "enableOnOffLabels"?: boolean | undefined; + /** + * Text that is placed under the toggle label and displayed when an error is detected. + */ + "errorText"?: string; + /** + * Text that is placed under the toggle label and displayed when no error is detected. + */ + "helperText"?: string; /** * How to pack the label and toggle within a line. `"start"`: The label and toggle will appear on the left in LTR and on the right in RTL. `"end"`: The label and toggle will appear on the right in LTR and on the left in RTL. `"space-between"`: The label and toggle will appear on opposite ends of the line with space between the two elements. Setting this property will change the toggle `display` to `block`. */ diff --git a/core/src/components/toggle/test/bottom-content/index.html b/core/src/components/toggle/test/bottom-content/index.html new file mode 100644 index 00000000000..d2537f01083 --- /dev/null +++ b/core/src/components/toggle/test/bottom-content/index.html @@ -0,0 +1,132 @@ + + + + + Toggle - Bottom Content + + + + + + + + + + + + + + Toggle - Bottom Content + + + + +
+
+

No Hint

+ Label +
+ +
+

No Hint: Stacked

+ Label +
+ +
+

Helper Text: Label Start

+ Label +
+ +
+

Helper Text: Label End

+ Label +
+ +
+

Helper Text: Label Stacked

+ Label +
+ +
+

Helper Text: Label Fixed

+ Label +
+ +
+

Error Text: Label Start

+ Label +
+ +
+

Error Text: Label End

+ Label +
+ +
+

Error Text: Label Stacked

+ Label +
+ +
+

Error Text: Label Fixed

+ Label +
+
+ + + + +
+
+ + diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts new file mode 100644 index 00000000000..306831ad2f0 --- /dev/null +++ b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts @@ -0,0 +1,198 @@ +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('toggle: bottom content functionality'), () => { + test('should not render bottom content if no hint is enabled', async ({ page }) => { + await page.setContent(`Label`, config); + + const bottomEl = page.locator('ion-toggle .toggle-bottom'); + await expect(bottomEl).toHaveCount(0); + }); + test('helper text should be visible initially', async ({ page }) => { + await page.setContent(`Label`, config); + + const helperText = page.locator('ion-toggle .helper-text'); + const errorText = page.locator('ion-toggle .error-text'); + await expect(helperText).toBeVisible(); + await expect(helperText).toHaveText('Helper text'); + await expect(errorText).toBeHidden(); + }); + test('toggle should have an aria-describedby attribute when helper text is present', async ({ page }) => { + await page.setContent(`Label`, config); + + const toggle = page.locator('ion-toggle'); + const helperText = page.locator('ion-toggle .helper-text'); + const helperTextId = await helperText.getAttribute('id'); + const ariaDescribedBy = await toggle.getAttribute('aria-describedby'); + + expect(ariaDescribedBy).toBe(helperTextId); + }); + test('error text should be visible when toggle is invalid', async ({ page }) => { + await page.setContent( + `Label`, + config + ); + + const helperText = page.locator('ion-toggle .helper-text'); + const errorText = page.locator('ion-toggle .error-text'); + await expect(helperText).toBeHidden(); + await expect(errorText).toBeVisible(); + await expect(errorText).toHaveText('Error text'); + }); + + test('toggle should have an aria-describedby attribute when error text is present', async ({ page }) => { + await page.setContent( + `Label`, + config + ); + + const toggle = page.locator('ion-toggle'); + const errorText = page.locator('ion-toggle .error-text'); + const errorTextId = await errorText.getAttribute('id'); + const ariaDescribedBy = await toggle.getAttribute('aria-describedby'); + + expect(ariaDescribedBy).toBe(errorTextId); + }); + test('toggle should have aria-invalid attribute when toggle is invalid', async ({ page }) => { + await page.setContent( + `Label`, + config + ); + + const toggle = page.locator('ion-toggle'); + + await expect(toggle).toHaveAttribute('aria-invalid'); + }); + test('toggle should not have aria-invalid attribute when toggle is valid', async ({ page }) => { + await page.setContent(`Label`, config); + + const toggle = page.locator('ion-toggle'); + + await expect(toggle).not.toHaveAttribute('aria-invalid'); + }); + test('toggle should not have aria-describedby attribute when no hint or error text is present', async ({ + page, + }) => { + await page.setContent(`Label`, config); + + const toggle = page.locator('ion-toggle'); + + await expect(toggle).not.toHaveAttribute('aria-describedby'); + }); + }); +}); + +/** + * Rendering is different across modes + */ +configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('toggle: helper text rendering'), () => { + // Check the default label placement, end, and stacked + [undefined, 'end', 'stacked'].forEach((labelPlacement) => { + test(`${ + labelPlacement ? `${labelPlacement} label - ` : '' + }should not have visual regressions when rendering helper text`, async ({ page }) => { + await page.setContent( + `Label`, + config + ); + + const bottomEl = page.locator('ion-toggle'); + await expect(bottomEl).toHaveScreenshot( + screenshot(`toggle-helper-text${labelPlacement ? `-${labelPlacement}` : ''}`) + ); + }); + + test(`${ + labelPlacement ? `${labelPlacement} label - ` : '' + }should not have visual regressions when rendering helper text with wrapping text`, async ({ page }) => { + await page.setContent( + `Label`, + config + ); + + const bottomEl = page.locator('ion-toggle'); + await expect(bottomEl).toHaveScreenshot( + screenshot(`toggle-helper-text${labelPlacement ? `-${labelPlacement}` : ''}-wrapping`) + ); + }); + }); + }); + + test.describe(title('toggle: error text rendering'), () => { + test('should not have visual regressions when rendering error text', async ({ page }) => { + await page.setContent( + `Label`, + config + ); + + const bottomEl = page.locator('ion-toggle'); + await expect(bottomEl).toHaveScreenshot(screenshot(`toggle-error-text`)); + }); + test('should not have visual regressions when rendering error text with a stacked label', async ({ page }) => { + await page.setContent( + `Label`, + config + ); + + const bottomEl = page.locator('ion-toggle'); + await expect(bottomEl).toHaveScreenshot(screenshot(`toggle-error-text-stacked-label`)); + }); + }); +}); + +/** + * Customizing supporting text is the same across modes and directions + */ +configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('toggle: supporting text customization'), () => { + test('should not have visual regressions when rendering helper text with custom css', async ({ page }) => { + await page.setContent( + ` + + Label + `, + config + ); + + const helperText = page.locator('ion-toggle'); + await expect(helperText).toHaveScreenshot(screenshot(`toggle-helper-text-custom-css`)); + }); + test('should not have visual regressions when rendering error text with custom css', async ({ page }) => { + await page.setContent( + ` + + Label + `, + config + ); + + const errorText = page.locator('ion-toggle'); + await expect(errorText).toHaveScreenshot(screenshot(`toggle-error-text-custom-css`)); + }); + }); +}); diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-custom-css-md-ltr-Mobile-Chrome-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-custom-css-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..2b7a724e9fee90ee45d6e7db90fd9a42f3b41411 GIT binary patch literal 2905 zcmV-f3#RmmP)Px=6G=otRCt{2ntM=FS02aDy}7wJxg-P#A%ud1V2cD$3MjbLww5U)E=8u`3fqE`K}mol5Fok9 z&D}pvdr3pcOB|`2&mRo@e&_to;eOBi9E4#Q;A4@2KIjVgaDY#h#Rv)jsH>|hFE95r zXJ}~XzJ2>V%956rmY<*RX+i&oU;uy9^`SN9G@9yr7 zkB>if>XgA?ICkt!!Rb3DLp-X#flZswRY{=^z?L-$;2?s`1rU~Dm`%E0K+h;si}E+c@7Km zVT+3qOrcN!0IXK)$jAsqQ9(gL0|NuBHzOm1BuM}Oj^n#_?J6uRymRLcP19GeUM(#x z#c><}5EvM^VZ(;n+S>cyz#bl4s4_4xuy^m?ix)5Y`T3C~IX*r<-&sIpWF!D!XlRI{ zC;&h~K|w)50qc#3h*;>FKg_sLB_}5*G&HoozdtN24DM0pOF20?2>=iZg>d5e@WT(2 zl9E_2m&;wyYCm|KpHv|TaxcN1siM(n+S}Xr@81t4F`LaMlgTy#R07i2*ofnJWMrh- zZ02&gLqkJbw{C?llgR`}vxftyhwV>WZ1wP3o9|Sao}O-KXs~sxT)8qRC`c?8mz0#q z<#LLm-gx5;ola*o8rd{w&YVd}Nm;*sy+WaQ`|Y=jii+SgQ(RnpUg&Y#e*%0ir z%wRCEeZ@&$KR>@Go_HcWJluC?>=x{d;^~?S!?0(bd4`SPJn_`jR7FLFQmOQ*;sVa_U+p~Ra^i+ zC{5EC=K3zmAyTQ7-LkloUaeO9RB;QMrbQx=cX?$p8QkKyiBA=`fb$B6!|^UVhr@Bd zqrev6Q^hT;R;yO4^)Bzo$cRVV53yM6Q^hrK12{cB?Ok@YTJ6z^i&!ki001*%Gh_dC zyuc7h1p!Na4 zI7TebmwQ^{ha2|r3d1mhAdE(%QmI_BWQm*ED=I2M(zJ>S6x^A zWZzG2p1S#M)3+(bDY1F64vjFqQlY$c_LjC!iwp4RXQLnA`Z$N+I0I>6_!d<9-r9dA^*@tNB{fa;haLI%xIo)!!v$K<&X= zYLZHSHNE*{vy+%Efi0aN2$CdqI$cjsPgGQt^G&7MY`%T__OfNmQc_X`0s)TW>|KjH zCAy_bZ)I=m+1CCq`qk}f0Kn3WrSlm909OuOsXJIl_!F`unYvxwb-wGy`!`;!dXbcn zPI9pf)(=jPP6Gx|2CA>RFC;#Mbt&FbRK8Nl6Y(T*lD_J`j?#|g9m(16X9EC&V}n)K zRoC9VCQFhXlSTVC?rXe%jJ4{@inUoHAzh~>g zShr;DlETjmc>z2Cfa0j4^4FE++sX?+FLWLXvZZbd0N@aINE{=!odX7H2P$8wT)J-Q z=6`P{M1*vk|gXU?oUOKSyh_f zYi@q8+13}cF{a?N**9I;CD~yqVRrfLjE!$L0suCg*Z?H~0Ib=&=9_5(Hm&kEtuwEdGG+Z3l% zD2J{Nv8p%><(z@q0YRuhH>lGMe*e&!0Vsy5J7#wSum#lowuYLb90VvLxB+U8|iYcER-MwAEtukFb9`0WF3R zgV&K~#%C->i{Y-}?7FjdE~9StB^1IzvW{n+PCboqkgRvJye`fm@XMko%Jv)BW8fPX z=;ClV(B<7D3KlOHp)6nh^(z1X zLo=;^Yfb-6y4NMn2ix}HO9_Ty?4E_%c8+^}rMDmu{)B(H|7iE9WyXT>XCvSF>J9)v z5-agOvWOrh|mu{TAasBvp0DvS;^1{Uz zmaSjrQMED-XMD2hlj_&1#W7;|1xX3Ht!dk(U6(paJK8^P2LSko`#*Q;xuoq$?ARqs zmaY2bDj4DE-#`8Jxvy=Mnp5Y)5bV!oJ*4c{xh#fa}NaxvmlWijGYWij$U^f!cH@KwtS00000NkvXXu0mjf Dh#a9d literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-custom-css-md-ltr-Mobile-Firefox-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-custom-css-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b0f6f4e36c7af919c72715e165084d20967bbf2e GIT binary patch literal 3305 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 AeEPx;&`Cr=RA_L|VYDR?$ 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 literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-ios-ltr-Mobile-Safari-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..46546ab7b4205e49e262ee41c768ddd43be7557c GIT binary patch literal 2619 zcmV-B3dHq^P)1^~Enm^G@Z@;uLRoT4Z*%}JU}#9%&h zD~h5hiX=&bARvTHCKJOj7~`878?p`lD?>7wjKyM-Bmn@%*km%9OeTymMNtSLMNwo~ z)_OWjNj!hK3970Jf{;umEfx#IFw-697TV|YojP@De0;p3qN1^}(QdcvYk8i3@4ffB zy1JGwUHb6D57RWQRf(c_`t<4U?(Wjk(uRhH;^N|Y2AxMZj*G=&06^2U&1N&1Olbxf zV~nxUXaoRRmSeFP8Eu-}^Vgc#ClZNND&=rEDC)oFzd0tuGiT0JRaL$H_S@av-7mlV za!pOm`1rV18;{2~Zru3hn{Re@c0T#!llR|$KgV&TYHV!GvuDq?wY7D2c7F8HM+XiZAXTrv`l=*J zeSLi=PoBJZ@nU^_{d3Pf_eHMRqtPfyodpF248zRdk*4WIix!cgnYGrkEJq>{z2h80 zx3skE*|UdycDY<0k7r$+jo0f1fYH&>L?W?c$BxBQY}&L507&iUjiM;gXjD~I zhr^MD$^UA3`J3_udjEz-Me<}Dl023x2V-ov+ar;PHmzkkHkGdwYAm zUhlz!2OoIg0RWI?+2`|BS66EW=g*%Hg+gw(n-tsI+m|g{1^_I}mX(za4Gk?{zMNDg z5{bdVL9^MMQIuIA%Q8tCFW zs;jFT8X9~)--|E47z_q`dU~??xtSmcf}$v9vzcVr+_Bkgkw^p~ltp*eLi$W-zu&)p z{d#?MTU*E9^rXjRnh4u=&*AqgZ4xg|-GWf{$x z<7HXCcI{e8NlDrYTtijWKp;?DTzu0AhKGlpPN&Ug%P6?4866!}Rdw;=#WO{l1;JoY z6h+cY5JFk>YnEl_7W%8j$jAsnsHCJMk8Os-VUFW4#%PL6TVNPwp>30@s+z~XOwcc= zvqP5Ug(frr!FS2+i%NDlwUj;W0qyFU%ws-g>rvw ziAJNMDAF{Y^^%dID6)x20f7H!zf2B~$niM&Q}aD*d!OAtas1uS+eO3SaA1t%@pv>E z&8`JPDwPTbgIY(vN>(>@N@t82^>#F#>U3N;c!t=QQD=HG(=GxA0Lm!ViZMTj12|@LWpeIK_=aqrs?VTIwplSS61kA zGyp(aySgG~tV$xG73D+%GuE59OoOtR=|%4H*PBVP{Pkwztt9}Uiehrm2M8s7e(Tce z*_y}@ay~mYHpcV3-|sgV40gNSX0y>WO?s;&NvTvSkx0a1F`nnibvjLDZDBW0l@UT# ztCcJ<)2gyL@3F01!C&g*KJH@fSzk6;*g&>CPzl)XpFi0uH?}0 zwF8IB-`EQP{=IKF*44B1tNWk$LG8JAWH4whxnr?d%FD}RvDn1KL^7F-L?YL(Ur&z^ zAtEcDg7jsgyWVWZ--wXeY-Si{riI|7&=>By4^3HA{o!})>Q%FZZYXfxeyp{3(`L$Q zm1D8nezVVbYl(bg#>2LUo;yz*tNQ(KdpB)16gUB(^yj+~#<9*1C*C<# z*Yz*TY6%`YKHT!_(mlKMF0({3PY^;Z%d#vh2m-nCAqavj%Vf7m%fFhkM08E%nNmka zw@Gt4VM$GdXt!(5j6qOSDKvF6PYOqf)&QVN5&$4_mZ~VKB%!Ix7r2Z* d+w1t!@*jdH$b5WK@FxHO002ovPDHLkV1gT631R>M literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-md-ltr-Mobile-Chrome-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..c9cf7c3b15adae4e0cf141df0f43a6a62364674d GIT binary patch literal 2378 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 N002ovPDHLkV1l^DKq3GD literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..adcae6b810d7ba0797942985f6a57f7247db8f44 GIT binary patch literal 2315 zcmV+m3H0`fP)Px-#Ysd#RCt{2n|){-=N-qNM|V0&r;}vMGD%!Fs^e_MGm7nG^Rk)M11I^XEK5q5 zmocxw+Xw}ZHZV5w&lVFH`lBOZp)rFk48m9mZ9)wWG>mzK6uYzQ7vedNW!ZVD8W~$J zmUJiSboV^_nA5C-EOz~lOU8NiK3`7T5bnja>@c= zjHjli=H}))J3CuiT9kNE6z|=;x3RHt?AS58-A*DWCMM?R=iA%c+uGX7ZrnI{@L(tu0sx#pe|}(Kz~}Sz_4Qr4bg67k zV12k;u1Aj^Wyc7DFgiL)u7`$(dV71xH2`3Ec$i$DIdf)kaBz8f*>1PTVlj-d&*x)V zmgjk5DM^wZugYHoEfxy^;M}=$fk43L^EEa$Dz}avJxVTmdU|f&yy@|H%w}_ce?N&t z2>JbfkH@3mhw`f$8yh=)`t+46S3Dli-Me>(hliD0JkOiWW^!S*S}hif%jNQVz2vUf z>&<=zdMJOpT3lRgZf-tx>Xh5<9vvOczIFNXWdML62-mJ%>*?v~?CcB#0UO(ZT3Y)0 z`kYSZ_3PJ9oH)_m-hTY}@$T+!J-vB0ddI8n2!%pUrxQY$6Q9XsL{YR_t=W;0NTjy5 zwv12TDOF!C)p=m$P*qhqR8>_DDr0%@>R(VYsRW%reBHc%-_Cob7nQPl^7}ueKmS5b z@Z^W}Em3pupM7WjA0O;QD)o6+!#i)8+n;ZrDZ7+ z<-Tvxc|WqdLy^*$niu@@X>F6xAgOY*wPj>^NE9bu@x&*l za_qBN{OK=O|MqusomyTQw>L_$7{)m1^N+E+WuC_vuf6}_{qMgX_~VtOvv238Dt*=X z%DWetmm0`5?Xb&byY!KmASboyIlbQK+a5jGe}vjNO;j< zA|XkUxq05qJs*R`Lc8kR-U}q?_FgbGHUI#yD5h2(0|--(pR%njYT0b&rqNCdT<0NS zeu1Bw0RW^HmtuE6vA_1+0``z$(oa5D(u#p+ax7+UZh}TSIP_OY(*S^{gWj5+?tSmQ z>wEJpEJ-=3wnepFjoTZ?Yxa^~c;sU#8Xe;r6oZ^#c;w@Wm%s7ZtB3y6@ao$8ALbim z6TW?C-0||lsh>R$4&R>G+dAFWHQm+~9=?q+j*m}#w!fV;u!SGJ`DDZ-AFsH&-3Ns&c5RsvN4SDu=J8DqSaR5JKs6S`#OR^;f zgTY`hP!z>5jLBp&7)pQRCGH1iG8sV-QmIsd6EykKu5lJSK$!4<^n%L-$xeW1_+ zImTadXGr?w!Uig;NL49qGPWJ0C)AUJY6Vs=tL!;JSx~w`r86uRy{gDl_4j`N_sG25 ziq)o96?vqdE-N2WM0zTrYTZ#$MLygpuPU8i_mLG)VFMLaq_&XNRJll}(>ildZ4oNB zN$)2Jf=)lO(Vv^@r#~vH$k>w1I#8@1{i?`ETm?`sE3?^5RslL)A&~F=AcQ5477WAa zZC3yQhrd(AwG>se7cLO52dJ+wB@Z5!5;rGMmj#r<0NnFq6qZ2VUf?x=s_PQYk?YlF6hbNwO>}OH{>mLl!xb l@>MC8Mx&AJ-Iwgx{{XJs)yIuMfcpRd002ovPDHLkV1l;iYm5K@ literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..54a9d8ead96c92dd1577d9958bd66287186cc17d GIT binary patch literal 2893 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 literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-ios-ltr-Mobile-Safari-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..63b1b3e7d99d290615dafa7aee1820eaf2e25dcf GIT binary patch literal 2309 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 literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-md-ltr-Mobile-Firefox-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..392392a234ffafe0add072fe1f764a229b1ea21c GIT binary patch literal 2169 zcmV-<2!{8GP)O56e@0c9~21QinyA@d=tVD~$6>2U+!eTxEl&kXb4ecW^3`F`jB{m;4Yo+G=* z6-Wg#3B-LBNFX}0K>{Ix=xU6TA|yrhAw?7w6(JxX09930Dh=SCo}P$}jfJ0|pGx%} zbh6e`Td3ia83>hM-ff9%gOphIi=H_OEhle9IH5KOO=GeG#BWBN@4FWM` z$`s6*GY2UtDR6al#m=2O;o;%IP$eZLAu1{gZEbCch=^eCsr1{_Sh8dZ^MM^ZcHr2t zV+aZgLS0=QN=r-O<>iIs}>WI92|_JM~^ailP6C`TwEOd{r&qd zh_bRWSXfxV($bRksELUQa&vRh+S=O1EE^jeVP8r+fdLejehb3a*B1mMEG!KB z_U&V@1qB75UjWD>cJ125dVB5KwK#tKI5IOcnKy)nhB8$+J3AvjKAxFqU|?YXP=v7e zC=G7ix`hP`7O>n82?;@dem={2Yinx;fP&k-dpBHMT-fL_Y}hb%nS_J{L`O$6Z=e*~ zzI{8atgQMr2vIYrK75kaW|n<8Mo~?ZKy+Y|Ku93EW{ji=NfDAFx*bJCrAFa|=OO>? zRF@0b&JTs#_AR1@CRI%V|~5?7XsDa0s-i*IEqW6+ z^XB$^(e`#gN9W)F3y&Yv9KpHm_4UX$wTG|#8g#fjP<6`Lr~Tl#=0gm6X{xB|8i8mi zI)`HaAei`$LqkC^JPz#Xay+)Y0P?IHl!Y%tYcW z7&vkS+;_&a2H!bbh;xB6(0b!0^lhy%{HOgGIA%0%Bqif&)Tg+|-GvU0SP1*5_tE&r z1)TNqhj&pHyXJ*gUW37tcBo4`jOMEq(B&XHuKfsu7r&(xhQ=VyjC>aENpY~66@;ep zD^NUcZ)ruIyEk06ZGvUcH2nG5X4D-#gi$#esN9->iZ#((pxDgvd3h9Cs;V(KY(CD>g8g?%EM{CVZILAbzO)f{i$9U)%8^Qjg<*F3!oY>c*JHM#J|`DL zcYoU%>{;)LaEe}y#?ms;AkNPS!L9UPJ5@vJVHNyhXF6Sp`~+2BC1U)IQpoi5`W}ed z{XgLP<~VqrOz)zI5$UP8otYyVL|OP!7&zF&e&y2tsON5N9r8!`z`*_~Jn=>d>^T4E zbBZ9@=DBem!R52%%bZ7iz6CYO``}%e#XO>?)VRm}gqLMxi&449Fwk>2ZlB1+#n87w z01cg;KtrRk$1qp~K8H&S-+@eDj~Qa&q-pRzm&2K?4T?A)A>Xp&yhFx4Z&6l6o2Aer ztmn>P&ix>dpf9gKosUalOVD_}1SVrf!R?z^7`eGH@8}5x)hmlw#*Gvy81c)GFnwk` zsuPlMEjosIgGGQJo5M75=~X;+7RFr6g}#k7E-iWw?G24^-|;nScJ1Z9cPSh`{s2$C z|E@9)()tLVkSIkc#rZ!tK?2dyi4q72MAv+l6d@@>Qbf07oRk_;YDlRerN)CMz>-Hu z9wB*zt-o-XOv7P6Vbd!cZya(C}|Cpw+U9 z0aGvY=g~Q|^qBrni%*46dJBeHAcPPoIQrA$o-*-EhLuUYg?sc*D{l!#cR-ZY*Y^Ka z2GJ7)LqkIrkSc{h5RkqALnRQ3en2U}D?uFyJg`%zP9ZNZkEIB&457Iy!Zk87VypaZ zY;4#HTsqc9Q5l3{u2YXvu4~d5x?WmZ8Y(I(*tK|X5e~QA1xp<;aU%Cn*~v*`7NS82 z)j)QJfvBT-;(W5bT z>{zv%qB0169?;a(#I`qTOA)k{f%bgSHF;Ht@d-ZiL4yWi=FFLo1_VD+kP>MB6>T~b zJ8w|dLb~R*ZQI!O6w^bjBB&m1bWyjcqzFY2wC#wtBt6z3XdfqmAal}YY9uBmGO*+m z!YR74p6->@AP|%qBwL!;Xrq*rl;GgOgKC556|967>d vt!R{;4HW#gNx{>WN1Djdo>98r&_?+OwuZrU<+IRF00000NkvXXu0mjf(m418 literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-md-ltr-Mobile-Safari-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-error-text-stacked-label-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..539362ef9f2783aa9fc7933c9b86f9c96838bfb8 GIT binary patch literal 1740 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 literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-custom-css-md-ltr-Mobile-Safari-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-custom-css-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..500a223bc010d745ca8bd2fc32b7bc5f308da328 GIT binary patch literal 2706 zcmV;D3T^d?P)1P4jiM7 zCt9yexn?X@Yw2{X#E~&(wBw1Rlo8*qwLRYe2gMik2Cbk-baDs*Az%f|VI;~0!{%kP z_s8ls>dx?n0bE?YdUau8p+=)ADJfaF zaA8VHicY5^Q;!@uf*{E82!vKgruaT z5YI6T8#iv;h7B8V9G^LJW>Qj8p9L`th5_2*+_`fvUc49=7Z(^9C>D!5J3C*zctNIy zhli8biHV6Olc}YpMX%RCefo6e%9SXJq9|&!+2Z5l@7=pMRIece0BrZkN~N->s7RyH z$mMdOP#7B<+h3%=zdrz=y}jLPwE_TEuU_q%8XO$#joLEwjXM{uR_n22#||Dmn3|eO zJYlg|{RJD1MgYL5QKN{)dg#z0nM_8ea=BdZ)c3swf3wqxyKH$v5Y*$sGu*joHk%y| z2U$R4W20+#3IJ$sZYHmbi;MmI{KCS*LPJA+eSMpoo72jJa^(LRwl{ zLPA1$d3j!5o=Tdb3rPA%&x368h z*2l+3B9Uy~yxDHIlQquI&!0GPB8S5X4GqoA%vd=IMha(b+L?V&v!vR(r3?AUxTT-+T z0Kn(-#bR+$Q4x;gFbo5?1EjC7@3d*t#*7(5+%j#^`;e^=$8oxo^LzL1X|-Awi$$eV zjf{+(H*X$Hc+TKOh=xeaYdlyb%VaVhk4K0M7~IsT zXI%6?#O4cKGe{mkeoSj-6crT(0|0(}_#>o(GD|aiM-ANl7Yc<6g#v;g#zik{5(co@Y#xvI{P}a&)13p--Q9iT#tk=H;jV;-hbJZ`ju=r!pr`n`bZ?MhZtJPfAwJSBZF{K7-d6u0NqWQNFQ!_pRMGf4*tMZ1P~a zTA`jjdNxHtLg8G>xqTJ;s(z_b%~xg4`OWwpxHquC;003=WZR2ys!w{@j>SejI{xk=K_|>ymEFO<15C}{rQ+0Lqgb5RP zJf53eR;yL7*GEQ11_T5Mg+e}`Pq9T3(CblgfTx^E$+(;$;)y<%e;g%=+J9&Nl7B97 zINkLd3yv=k^Tld~S~)|hZPP9~xv27KB`v`<=hm35<~38-Od2_Q9q8Fbs1z9DzXK>+1`{ zuvV)z7z`MO^^U|a%wRAO-!XiBeGvrVa5%Jg?{FOdq521q1-`iUMem~k1^NPz1wOg> z32~c$KOba)^x||U{`ypb@{$r{fuj$O61Tf=?FL!kOwAeMHnkuXWPyF<`$)m!N5vou z%so1nq9CELv1p_FBMU4QE9P*F>yrVMEp|)PKca-$!q)$_-u(F{$O3bY&LM;Q)T9ov z35TNS%a<=(TU+bu>h9jXTUJ(9Sy@?AQ)4g~3grlsTRS^D zQ55yy(8jNAanJ2NkP7PYv+`dnT`m7s`z;6Ns1<4mynb1}obx3B;6nWcH!sSPs3qj} zva!o#fwEgqZW%2`>VlhQZld>YQcy{qJZ^y)diL^>_53y<_Rvla}7eNpoA0OhBl+)=1Z+cxGk4KybAO}JZK8F12 z;-Wt-QY(5MHY}_wBwaLhn=l;f=x^hNb#!1~t z7Q|A{pt`d`9nuwY*6QQqi=6!VGBP(WgqxsH4 zZ`J?#?9ZS}JCZp4I%K`Mmx-!bbKk z**h4)-o%E)mNu0xKec?)$Vr;T8Y;>emotnOWB!VKF<&g^i?_vZ+gY|V`)2me1v~rG zd}pE87P&0$mA_ueUYHF-@R9pR&eood3yr(;w>yg?7rV)I`Y)$LL?QY2^Dj1Bj1P-1 zT~|6iX!>9TdvhS+Kx}aAjpiG=b{!SvtA?xJ{pY*b;Mfha4McqAoXiMug!(6Sjj^Ub z&3BfeJ&#K4pH-(q~Kd~@SXPA7`_=Cf^I2>SH91bvlr!gG(Kb5@@+XN9Q5d200001b5ch_0Itp) z=>Px;(@8`@RA_#yV>3UV*K}8(}T%o z{lEU`b5V9P^US#+<1^RCr@E3nIm;k`WPZk6r5{a-Z%k#V-2t3b^ znhimacq&6t6h%>uMuX!xK@cdaau4|U@uS!4wcG6pu}+^p&9ZD+Sy`ghDJI5XObs}W zV;CkJ4v*t7q^5^?eyM~Y2!bF)qtQqtGCVv?5QJW@*J`y%*#8r5-n`k^*!bbYhlE(2 zot@!uSV47)i7^;O1D0iB>jMB_pT%)ptJT6@4BL_8IF@DM_>fv(6va3P1Vkhfi9{ke zj_dV$9LJOYnEzA6YQVDW_wU~YLC|P4dc9t+*T*y~R06}Wl#~=v6d8tL7)DYe&H)iq zBgb*6sj0tPhQ7YO+S*#T+dXU6tm5Kgk|gD+p-||-g9oo)zh1Cl!TR;<<)f2j*}A&A zw{PEOW@Z)@6=h^(sB73yGcv<4LqkIV0E5Aho}O+n7{+f+1VN;nD2ht6R-*B)D2jf+ zpJ5n9pAZ-7>+7?!vhLo!`}XbI!-o&gn>Wwxc1x+jU~ui)wdLjIZEbCvH*a3GY86e> zFlk_5z;3ti-Mjbw`}Y+U6^j-vdiLy@y0-nJK_n6h27`hi==FM%B;)VP2!fC#35P{8 zGSD>5vTQ=E_|e+hdh+DS*RNmK*Vp&-^mx7AJ9q9#sZC8y#l^*~t*woXjcsjhFJHdA zdi5$yI&tDeG#c&f?5wG&dH3#JUS8g=UAxp>RQ=E(8jbq>exB!zMx)VaR8SB}l18I3 zNf`oxKr|XvQ2Q@YR#tZE)G7E(QIy?o|NQy0lsae5oET5X32y=k|aS8av2hZAPB?5!-@?U2j9MZ z+rNK*PEL;1YBiZm&CShnBj?YbFCX{w=FRKw?gjuj91ezI4jedO`7hS3TL%DuscHd( zvk=R&2!fc+<|K;ra9DUavPTEe*alH8m|FZoIQKi@Au2|kR-Wb!-fkNE~KWW-n@CUrKP30xfv!MKYo1Q zzI}7&&Mhh`>g($}c<`Xd<9Yx7y|Pam6<8z^5k-+8h(vqqSU?a2$8lI}qH6^SEXyj> z;LDdUt5>g<|I*mlSWr+XC0Fa-b-`Low(P$LdHWm<{&&MzfMNug!DQXo;)AaZ6-w_0X zUO|Bp1VN;xrmAHR1kdwMr*qo0X=4pgQ50P+S4Kw0sMdb{`qgYUD+?OO2POyt06@h} z8`y#h+<+X=Ds`dJXlBfqF-`^qK`a)_SgGT4lL5+coFE8lO+*j~f(U{jiX!~0poHI{ z!Gy(+4F+|$kw=!6s1kpc2C#wD{btzxlUdNKJ1!?UPz=LV?{{Mz^~4W#1CI#~6wVu} zoJB~8L?TI+p!yNpLEOPx zDkTO20k}9&>{oFd|Fir703bCr6+sZ6&zJnsgeZzWpKoOAC!~ksovVh12Kf;5dc84w zM={v9Z{I`+f>F4v)$8><&%0c%B#U#oTs+UiGiUi;Mf@NLLh+*g{{8#%U1+!4U0Yi_ zPX3;r9%U7c#P#dfpFDY@jPk?vQ4|#lg=m@{92`tfPgiEg;NT!l(;AIN@k9i-zLnMf zOMLqDslUH}_Uzd)yZ=1Tx3{-1UcC6tn>QTCEm^We@lwjoqPH6r96spI-P+)z~yrF_xF!VBnYCkwAA5n2!c>nRu&8f<&=Ly zK%GuUQPkkz;Ly+z%d!@WCC(sS5Co^w2}giNqk;2}g!siU7!1iD-JCmjPMXR>p%7Gb zU|^u3p`o&}G9@J?KR^hYuevTefT@1%`avw{M3% zTEdDID_*>KVYAut^Ycfoi=wElTen`jc5T_RWm#ESOP4MM07#Ud!f<%W$K`U-G~M0Z zotBn1Y0{)|T2K_lp`jtK*DH!5Y<;;Wh`-?w1X1gL(e~}zrQ@)!uCD6pY5>6J&!2G| zzjEb@WVX}koH=u*#L{ZDPyhgc&1UQF?oLlnA4!=!c``u|F#^P3th#b@bDutaT3=s( z?b@{%O6*c7B_(D0^yvcw1EEl8aB$G;^}?$zIF4f&hGAGV8jVJyEXxiL4>Jq{Ln$Z# z90!tSaSj3u!%QZVT8pxbjEpH$rod+@+QxC*WHObMl)%@Ll9Cvo$8ntG2qTe*PNy4{ z0#Dt?H(;!~qS5HUzyN|E9*@UrwaO`@^i~|lGcz+S77LE!@Y;{V;ppw{?dt04=;-L` z>gw(7bvPU}O^c!^HN7N2{6{w^ikeI&ilTn^syI74+w1j)LLrOAf??Q$2M2`b+-$Si;-ScaVHotIV-c&Ws%$pf&Ye3iUAhGK(VuC=`uG zd7hUp|47q4DnpDL7zrt-R;z_~SQRyC!XQcV;K76E&!2}u*QQOIVx~%hAOu0!y?eLc z@6XN6&B@6D0E|zG!SdzH%gf7qdwY)^J2sNo+1c6B(sK3cRe~TMKYmnV!?{N_io;P z4orSGG1=TrZnD4kUIv!kZ04Ssd*(ae^PQP9E_Ym!SozO;z!d|+e;xzsfEW;BIEVou zhJpWiz&0cN{{36NefuU~zkU_|=I7V1UtYd+xm*E#8{c=uEb{5oCuJ2=d}DnmcCp2C z^eZ9YvT6N=lY2Df#o~m&1n-tFO+VKQB3QSQ29WXzaR z>s6{$Nkb3)ryM_iT$(p;F4?nZml7pP$kC%mB~P9_vVZ@6$(Ajf$CguJ##U&6)?oq| zfmvroxLrs3)_ec{y@J7jz)3LRTtbzT#SRdL4I8FmYSgGv+Vtz!uO)BZyfS+9Xc;nO zh-dINY}g=+7A=yVJ$vf^u3WhyRjXE&kt0XS(4j*WBxTE%Rbjex=~DF(wklVyEKQm; zkvVhbL>~xr3bo8{r$Ar^2p|9m6DF)+2$dDEjh#%HGC3+D?Et|a@aopBD@BSFk;RJ_ zdj{{!nKN?h)-5ka?bfZET)cQu&YnFhr%#_&U=U_t7E>lnm>^4*EYVP5*d=O=@aD}M zAuNFOtXZ=C>m$VD8+xLs}u&1r93-sFVT&7(kfMcJ27q!xqkVg2@2F zmMvRk#flYwbf-dv3c7sFl`EGtZQ4{OO`4<(H*VZGo!xEPwDAJMp+kq1C8kfGuB(QH z3l|EZ;o!l8QoD9-&mf;TaYB|YTPEeom6LPl&MCVzZrs?*R>UHqwRI z$Q}a@HDEAph7%r`W$2r53qY7Xd$wOQEc=-CtOk1Z>ZNfW7KQGQ966$YTSEi=VMQ=v z#0X)QXUUR9X3m@`ojP^$*vA)r`}URf>({G>g5CIj?%cVa_lZhqh@&7kong(II(6!B z{TTFlb}Ct4o1ICkRtN_OI2|xVs}K&JJb9vP{$NZ56T-SMNuYORwFX;K$LS@p9iO=3 zM4}sgz&bb@d-(`cUKmF3)e7MN0d*Y>MziD8e_|b1+@QEo!uj&$3yN$fUXYmj@Zm#k z%gOM7tw=0;op|Sef(=*Pn%K=OWf>ICjI{f*(By*$4?Lm4cPSZaA9#*!+E@wA1BuEA zPU?ghBZLM3k5G>jJZ{t~8X;0Ade$z&KJ3gfgV7{TEhA$ZAxt2|DR?&XG}s|wlz|sydkc8<37ytn$Zvem=3c?Kw2*gO_EZPMEDQJl7 z!i5WKIHg#DV8G8I5*f^BFOHe5#h(ohvtXZM#fr&=3m2qJnKF86X$sG9M2@hpUcI`0 zPhs4yUAv}rX$Sw@xN$>$L?0;RKd`bw5Bl2p7)6F%vKW`7##8%$W8_f9PD-P-d(S+ zp+5rIz~|&2kib&3Xi>lOft&`iq>N@ER}x)9xL^VTq=5qmDqAdAut1p|fDlSdIPtX+ z@X8x1A4+FNn><64%7&B7fSNmyY#p0aG*jQ~7Z?y&_YXqJS;X-;H4>{D<8gpME~51$ z6A`#+(B4}fF<0cA136!Y8KQEPUxIX^H1PdzIL z%xCj_FgA$h-N#^|0lFpml&m9bA%qf>tw4a5O?o?ZVFU6Ud7nTw@HeSyP`4c*P@nJt z<(o@0JV)r{GmJ&Moa-?7<_1-QfnYkr;IkoQuChU4{_Z&Xi~qi-jPWI{S^<+7x1oap z0oH@!x#f&dWRj44$}C2#S%JX)1o9eT4}>L5gIb4C1KA)91p@*xAC15@I|_DT1au1H zvU>Gu{Tq!33$$+CS~U%<-J?ejea6>D(A&@fVfiopA{Y>OZ7!y8gURS7?j}I_zG9Jt zR%Rv3awZY6yiT1u>bXERVBTOrfR(scK{72jtI%^(r%u(0$%I7*021zIqFWG&=)T^) zduy05NwQWOF(8BiXxK53h(;{#+qX}zx0#DW{6oR1Vji?6KeV18lDY< z8_kA&VQ5d200006VoOIv0RI60 z0RN!9r;`8x3FS#dK~!jg?OJU}Q{Nvy_hI)=_uzCE(`sTWSZYd8D3OImi6GPqLFz?C zB|U(t8A3%^p+S~}WD-P5FY-l6MPY+1AtZ~86tmLOvU2L?+}w6IcXuEDFHYUxZ9e3- z+rPp-ukPJBpL4!D-+R92`*0AR=fOYxR-nIIfPeU>gFgWH+|3Nb&@@fcG{Z0)$IWQC z5Coa$WC((wD2n5_OeP};0>^(cyT9n~@3&Yi85tRVu_`JmXqv97s`7WbfQdesbroou zb~>G2uXm0E1FpW%;it;rd7foimSsI24*)(p zo0^&mV7h>bKA1rVEX&&McDPIkg2?4^k|c2)$1n^*5V(#E!+1O%kH-TQASh%0djbI9 z^?GeK8$l2%l?ubK;Q!2D3SS-2G;OolIF3V6RH0CWhKBkqE3_vvnJgqEgy(sRqFgQ) z$8oSptdeT!GrGZ?xduo zZQHiVWHPaYckkZq>FHUvY*}7jo=&HeRPy+zKZnx7k?JsMd=;-J;apFXGclW(}_db67Xt7wXUArc< zwzjqw6cluHbQlbV=g*(NeEG7rwiY%WKYpBHn7+Qg=H}+tuU~K2u;IXg1JVXn-xiu> zS*z8`^Sn~2^x35Igi57SC=@);2dM^@WdoS~r>Lr`I(hOWe2$2S$jHbT92^u{E=ndbL{J*48E#a^=dEVynAi#fpJ} z0RVu}Xmq(;B_$N0dQ%REBbcEmijr0b@7}!|7#O&G`SRw?n*jhU%MJ| zlN!KQ@Or&0%LW!PP!#p((IfFMX=!PCy`Ch=t5>ha#l>+Pclz|{$;nA^AC*d#pPzsJ z{Q0o3u=@J?_V)I+wl>&w?AWoxhYu$vCg$bk4Gj&ImX?~$=HA}k0A!mDIE=Fhg79~x zW&?sC1VPX=9n63pk0&%VGyvk4FJCro+9dwPU@&aivZb-H@!-LOH*en5Xf&rzo$~R6 zw`|#xk&%&;lVdiUBO)Ri8yh!n+z6Wr3kxZVI(qcz-o1MP0NL5u27^J`h!U|{trSIR zG#cn!N&aOU|Du#WF$H|dNw=B^Ze-Os7|MwQQ)s%ziKoZ zsjP(WS+C%{WuwpYYF%kS(3hNNC@*HrG9B{A6l)}<#IWl&hhc_$jHdR&l7nwqCr9jhIUJ7M++6qxS5;L#eE4wf+O^Xu z005WERajUUA0IECG&3`^v$HcTEiEf6YsR@EA|m$e*;7|nw`R?n`1ttMt5*X61j-Mg zP-tkVUa$Z9^{dnAeE1DVq#)UCX>x(8y_DZA0JmJ6e^WUE|=ptj^jAP zFbu;?O-(r*4j~qU3V?FV^L9wY9aSrl!t^A_k7*X0v&Yxtf}qR;^mKfB*iA7casX zK%mT;mLW-U$&w{Hoeth+oSK^Qdc82UCzu-e$-_AW18^}#8fI(X=!O? zWhHdFcI?>Uvs2}AIm@z#4jr=DY?+yv>FMbJfVn9?ShsFnb#?WpPoK)m%cm3j`}^D5 z+iPoUNs@g0`0>q~Hwy|11Pb6665wS6A5avPpP$e3yl{*8riFwBfZXu#n!$8oTB zDKssh^d$J%-H{oc0>9!F@y-?##lIs6BF+k9820U^^g;&D^H!@hA|m2<3GhEyIDSA# Sj8gOf0000Px-wMj%lRA_(taa-QBjc%lZBB@;mK2=W=Ui#`p7wZ13}Y ze4l;J^FHT2&wF5oVW9uu4j`)?z~6)aq;wnpbSYoGdezw2=q$_M-~Zypi%wDE zKJ4s7*1&#+{2NeJRn^zmm!6)!+JXEWe|lD~A=qZ6;~P2*!z&z*bLi{qd;IwE?Ck88 zEnBj)vpqaKtgSCzyl84_!f`w^Gjqp|9qhP5p{T8`9U2+4USK0Pxt)7aP;7Z=yu+ziJ1 z`}@Pg!|&a@r`2jJDk@@PVpJ-Xdjev$Gn>sOlgVf_(ll)_7z_r3Ua!~d_24s2(?+Aw zWHOn}W*cQ!6k@S>+qP|XP4V&Z1qB7*^W@|tf*>_DHQ=jAB#MrX*6DN%!x#*P#KgqN z$Vgz?wQE;mVxqxdU>Ih8eqJOJ6%`dR3=kf*@~i@6^=PmoHzsB_51b&|nM@4BAP53vU0pRtM@KJQ zxbXb>a~_XJQPlkW{8GgyBqRiaAgNSJ(=-G@Sy@?GSy`+#I5^lX@nCFagkcz5tEGS- z2tg1uO`FYT>$F`hq@|_#`}>cKj06S-g1zKYo*In?f*^rF0E+2@2M=OmVpuDV<8Fxu zV^^+Y9a#_r@#f7NiA2J#al3+Yxm;ggU!hPK9v;5T|LhcIXJg@yL^cI%O-s3;#FA75YJnwpxhurQjYuU)&Q zR4Vm)J?m3jTN@i2o05{!+1Yvf_U)XU98fxQb92kf%Y%Y~GBPrzr>D=JJ)4}ITv}S{ za(FBdP+y!{su+gt-o2Z>`#W~l>2xhEEfW(HE{8ZWGP3L6`10ioilTLOb%TS0(b3Tf z2?>FLfni}`5{ZOmWoKtsS6Bb@&p(-&nep-QWo2bx{N~M@d3kvS1qDK(Fe)m_&(H7t z`SUKvW(`=aRtp3I7nltV4RX1ht(cB429L)(c<>-elD`nD9at=u$;nAiPfwf8Ig823 zNesh8B9YCwUa$Z5?c2I_>y{$A0Ay}%&NZe`C|pif0_b$Q!NEb-CUO7-L4t#W9muhM z{rbf^LJ-8^a6&^v-KZl3K?sJq*wGM)MC@*KIsP)4%(aQu3J_0EPuG|M0Rdnux=j52 zQlcp88WTm)<)3kwUbF=aB@Qu}ke z`1_^ga=ETCovM8#Np9V`)wPM%3J@5EwOXySG?`2`JUk5Q>~az_DJhB1=eru@+5m>4 z=6@~ zxj{ie+qZ8&bm)-FI$A82M~@y^SMzu8-gR|#*>zT{)oE#Iu1(|?U?fRW6s1%u2L=X0 zLqi?!*o{Wx;Nalq&6{ImWBGhOK@i}FAHi{)q9}ntU^1E7+uI%7Ok^@yTU#5$Fam*qq9`24*`~Vteuxub z7^b_syScg9W=ZLEx{n_}PEAdS^FcPq08sD!&@ZrPA$cRp-)9G}hqoZA2U9GLH z5{V=*Fwoc6m(9oJm)Dg*MMcH4XU~*M<<+ZKdwP157Vq`ucji z{&Kne#*G^{Z{8dp9%i`{6B9H|%jI&=?zExcI9^gxBA3g@#>UFZ$|#Dm_QzltMp2Z* z;Q&o3ic%;PDwV3gzaLyuk|eoYu23lS_V(uU`CKj+RLS3VAaVKfW%in>)#|-__kx4N z&!0cvy?Yl$(G43mJbCh@u&|J&peR~gT#R8@Qc}{TOP9oA@zBtajsKZ5XHXO^EiL8o zcr5Yg(W9N6oyp0`VPRp5r?`IodPYXZ{rmToO6AFuCxt?xwLiwLP?97u3?m3aAP|5f zMw7_|x|0M!kR*xYI6)97ivCU=AqXliE@rp)4<9}R9|i{p^?H3#Q4#2b+w`|^90x^z z=;nMR}0YPBkr z%H~~!AG;a$%ofLS9LG5v4n<{R!`AL_|ak4-XrS#(;nT6h*&&{c3Gp zSXh{zo(6Ak`T6;Id3ibZw+4n`K;^|0hG8lzD~}vGl9G~AU0rSC|6}XJu35WhHLHH= zZ3B@=l$)DdTwLto;i1uJ^78Vmttg6CR#s{>8l_TMSXcVfya&j{3|F8F3)*LJri$b9Qr}HdEM@LVbIKeQCTCFyl z%|G>D47FO#`YeY6{QvZq0v!W}VFxcyEk3hy>~EL2918IN3ttNK@$or+{P^#m_kYJT VgP}7MIwJr8002ovPDHLkV1f)|S;8w*FxU7It7Gc8g*sf`J`ip`v1dh%FY_ih_vUh235I-QR)P z@49dI?R~p<^*!Bz%e!xPX71ecn{(#OoU9YGf;k9bj zO0HbFA{Q@S3>!_mcJ1WGjT>_I?AfsU`26{^q)nSv7A#mG{rmS1yPseU|4PmKr{OvE zVLTp>>$Ay?4*xlLc3{Eob&<3I3wG}YfJpjq0&nl$y)t?7WI2ESykyFhNg6b0Aamx- zk!;zr>7$L=Y|)~HELyZkUcY`Vb?VfSWy_XH-n@Bz!=wGMVZ-FqsZ)|Ydv+NxV1SGm zF+#upEoRfevj6q}%#79m`)vD67XHSLn{P}YkHENWUD_2f7 zZ{F;K$9=6@wWLpej8R??Rb7 zcdm>XGe+LMd#9fP_2|)~a`Wa*Nu4^i*4eOOgLLT7L7f<&aewUCF@tF}CS z`c%Gr`68b_ebOsUnlwJMY4t@o8P~GS9n0qLV(NQ705UWA2(ZZK@_QU%q^*Rb$7F zjTatc1;+UC8Dcf#|}sG{|efq52FcAq99qOiTbn!5cSjoUB~AQXV{b z;9IwsE?uf1jqk^5xQ_M-RPk-@d)x`=3~49?zaV zQ^Dh~Y~8w5s#U9|p5&uPkJQ`5Q8{qnfOdQO^l2S?{rdH#ckkXhdGR#gym=!hPMnB7 zJj=WC0*2*A{pPK2SlZl`B_PAEhpt5>g{?(_2G$>Zx9Z*%nM(Q@X@88wlB zoHc8f0Ql?Dl(>^Ebo*8P^tXZXH%a+bY z9;+oDYjf&#x~~f*FSZP<5AwaV7zebt>Y`ojbRBh>;XLP0kB(RKkJh<|aLo_ee@@J=Wo@7jT3(A}O58bA$vq z`ZLF5p)`-v9gdg^7AzRaz(P$f2#m6 zOf}CeRjQOPkQvs)U2J6Sd8JdQPO^Rbb{Bh%URNILRNPA#xc%gaLuw`#(Su+m+VD7iVzP4X8BQT^Od%CREt+-s z>LrTIAuIriQ57jt6Ut!J3`sA0xGE-qovDW!ki9nn!~?2`iCt zR=RX))i4yOQKLrsJtiMn$I(0zkQg)3$;PDp zVMa~Z#~<3C1m{%qNM+z%%~*L?%o({SW%?s9^HP5N$Em^Weyl$kz ziAy}6d{49)bIUdYCy{LczbZl_fkqqB?QslwE=g0Q*Rxy&{FP8r{-KEzc&zDono%y{46NH2%92Kkqr&JRs zPE;oaPnh^9z6a|i{j)w7E?iij^H=`FE1}vNs6O7N-E6wir`vtR;02Lr44&Il?Kk$9 b6yW^_>r4mf9q-_+00000NkvXXu0mjfg8hun literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-md-ltr-Mobile-Safari-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..e8fc0b0b1485162dfa8c7c717cdcfc1ea7281664 GIT binary patch literal 2113 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 GPy8>I2s!Qm literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-wrapping-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-wrapping-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..3f699287ba8c796e0ea5bf524d135364ac49cc00 GIT binary patch literal 5225 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 Vpii@SDfd5Ap!OYjnWk0H{{RwP;xqsN literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-wrapping-md-ltr-Mobile-Safari-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-end-wrapping-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..528ebd678a89ab38f3b04aac2a366abe07ab4c49 GIT binary patch literal 2792 zcmVP)VnmIgqERsstztYQVm{~VTcEbJ zg;t;6jl;}yI{#kyWM2^ZD`d@z<|k zcQ~4tmlqryER{;PZ{LpNIDP2q)vHsdPUZ1FM^P002Xb^lup%8IvbZ?)OklO-)Nn3;m}=A}KB|rnVy@A~G{G=|c*IA~ZDAYPAvs zA(P3nva+cC2%*^6*tKidk|a56)~t+-3}3ws0Dx-(_$nzmIr;YO+p}lS9zJ}yL?Y4Y zbl<*xqmM>LM$+5q>FGT^Js&=Nc=hU)R;yjHVujgkHk-{>t99<&xlf)v8H)G-fPS!s zI)LXkZ{Dm@sgz1(Vq&6DD4a24#z2))sT9Moj*bqC#e!j2c6PS?(UBuZ`Z_8Az(s-D zk}MX>*|TSlA3vU#mq+bkGMNJvcXf4P7#1ELPF+TwIB{ayv}yEF4u|98umAv81!_w& z7z{X$2L%ODf3~)^+TXQd7}nn2PH*43bt^P9bj+ABqehJqi^c8j?Hf04qz--m{+-X~ z4_a&hfOC#5iTpVWm$aLXOaITOHwII0Z|~i^ckTBiB_)N0g(W5??%%(kBuTT`tW+v( zHd}9RFI{u<=1qk{v3T*~hK7dIr%x9Z6|vcD48w|wiV6w}2!dF=cyU)(S7BjcMn*<) zaq(ckD*!;h=m*^dK@bFi5W;cX)(4K`2qCIwFdx5XWMuTs+}PMilH|L0?-nguBoqoG zBO^;oOS7`FsL#$wl8lImC@d_@$;lCkL?Iy|J9g}_*=+P{mX(!FoH&uqW{(;*YR{fM zCXRqVf1;WZlgVTb9FCLE z(P?J0`ThI%R5PL)Q@>?wHaj>tI5;@i+kpW9e=-(95H_35#eRfg7>~!3NF*wiiX=$} zgMm4{eG`kt2?+_~#*On@UI4%!jX^yja(=(&AUr%gAt8Z&3hsnXr+e_=!TtO934-{& zoB)8o0)x6`b9dOZY16n|F8yhpbMM~0YierpC>{Xd@4_$|jV|7@*<-O-F)=Z&^driv zSFfm99RL8}#DLGIe`)O4v98>^(O$oP?b(R{0DljL$1}Vn5{X;&pFe;0>_jfo>-A}A zX+AxLi!>U|>eZ`%Sq6bU27!HT2m^cGl7vE`i_elMMx)W)Qy_%W($cgrFQKDj>J-TL1L zfqe}E`w6tv7woNXVA31WwzCUU-nsw{eDV56n{QQD~ z0=oS>)N3@F+}zy5hYzn`zn&heP$=5l+m9YSdi(b6zC-TaySHV_7J?wGR%?EKeq&>! zLp_Zo$%=}KRjXEQ+O$cnRzqM241osq zC4Gnd^UpsV4yUH3=EjX1qeqWUN=mY?w-2Dx>7-I=d3kwUTwG;kB?N}R5O|=#4j3MM z1Ay}O?OV*{nYU7@)Z>UE}EEX?WvV_a!CMG6! zbaX&q2n>N;35;PF3nA3q-RNU2)=*+?qa>Yeus=7KR!G>JUBR5CX+cCOTSqLgMko& zzz`S$yAl|~Fcz1~{rdH*SS)sZPKn86s;jGWGUwJ_WMt&rxpTd~m~2Q$NL*Z8QBe`S zN3YlSEi)R8Mx#+8k@T(CXf*Dg0>iN8=H_qTzIAqXwzs!OMMXhi2n>O}7#PDa2A9ia zv)OHJZ7xnjLkQK@)`o&R}m8q$zzF6EkK0dy!t*xo4 z2_f|K>C>vJD*K~)z5daoM>vjOzI=JYgb4zHze|%NK-D-ysO0lP6E+<>krc z^3u{$>Qe){9s)yP2<%y4dkij@D-Z|}Le0(1)NcwoVX;`6o13Gfqf=5+=Fgv>GO*<2 z}y^O%wn-v)SP|{!#EsHcXzi|tL5|gLZOg)DsDELfBg7iGMRWho>VFwHf)$kB;s&5 zEEWq^l>`8I7mHdfNgxog*=(UuC=!Vb27|$1=<4dCz6!^^ zshc>FNE8+pHe$pGnM@{=$wrJA5f&CE5{bB6E{nwqxa%XBgzakq7Z~_6#!v_Ng@BvW z41s+u-~t1;1VBp)tU1jP*y{o=F!&wJ0|yQab%p^c6bh|Y`{c+hYlUGucux_r_kwl7cN|& z??)hTKm-PU%`0Ce@SPnyc07Lkm?TM~(U_By)6mdhu~>?Wi!WZhND#!%oja?mt1Bxj z_wC!~P)}2<)ytMGyLIc9*=#N?EiEoC?)TMnI^D8m%c%P0%a^}+@q#4DD_5@U-o3lu zdbL`emX=mqTWd0zAaGy>2L8<7Z`^1BH>Vi_`*UF6x7_&owxJbpbDANrKL-YWD_~ku zz|Cofz=0JQ_z8c%aSOOP%@8<10|P(d?=30d<}^d#01XWML=frnuO9s+G#X7|VPQo@ u#ZU)v6$A!<5`Vu+0s#C~pd|qS{K&u5S#8oDMhC|L0000Q5d200001b5ch_0Itp) z=>Px;!%0LzRA_3{#1P3NBa)$ebg z7vt=n^ZlOh`F_qh-}8hBf&l*Fw?g*24fu<{9Q*-50RUgWeznFMb~N#410ho6CMM?OjdASubfud+sRFohH6h%=KB{C7< zfbgo3VVIbh7%v)Dh{=tOjmgQ$uV26J>+35nE>2BNot>Q(bDd7-;lqc^%F4RCyHB1x zxo_V-k|bf)%*;%BdisS67X}6f%FD~s($c!Rx&k-%SA(Lc`T2POKy-9;TwGjqbhLkO zA_yXul*we`tQG9aUJ!)E#YKvuq#sw{;N!=Sw{G3)?d@%BY#bjSx7lp3UcC}?+uGXl z^71}@{Mgdc(%s!{G#V=^Dqz;ln>SgO9U2;{tE=np@6XE0I(P2eAF>zmcsx$0ljnJr zN<|Pv;C&fE5P~4!un30+k|b%G7Qd{(L1}5}?c29uTBp;cr>BpNjfuHQNl66-1u&hK zmUisevAViCSWQh$&6O)xG#U+@YA;{D+|$!DIXM}WxxWG|%PuZ1avY~ttJP|C2pR~2 zP^;Bp(qOmSS(b%=SK#2sj~|yVUD~~Sw_dN;Xf*BZ?b74u=D#{l#ROrn9oLVq;^k zUAv~&>$O_#sZ*z<1)NT&*I(H2Ve{_Xxs#chDJ`&h^XAYjjuhYy06`F~RvV@&tyVib zJInLDOeTXNI;i*z*TghUV;JU-gTcYU(b3W8&z~PSZ~y?naoptOWJ*ekSm4vAPd1w^ zHZ~UiZEI`WzI{6YK%>#<_4=u)DTBcPvnYxhA0JmLl_9k^Vt`#wtycTrGz9{gOr}<= z?RLAkR1JX!k|h7f0ZEeY-o2A%@7S?Juh-)^{_^F^q@*OC=kMLSx45_{Ekh7QZf@?w zhYw?7VyddDIy*bt+uLE*jT<*EUc8u+l9H2?GdVd~R8(ZKSOx|L!fbgsU>JsB7`PUS zh{EXTXuI7Ghe9|e{p8@=w{QFR@0Vt`w6q*Nc(A&UA=ejUYJ!-P(YI8)vH&}oH+vk$j;7gX=#zm<)OAW0`Pb|f*{~H z9&B%24hVu^7zWh_yH^lF(=@VTRN*+zWHN2ouwgm21wk;I&GGT^OB(V0`**EY8`=sa zvY4NrrzlFN(?vx^MM@`0k_!t92!g<<5CRi8j<3wY{|#(5o7?SPzkWT6M(l)!Wm&V? z40qI_aiCBrR?*ot!!SJ0M`|L1KoErIc|j21ZwMNAo?k^AKp%y_B9g*aTd+*5E)JlB zc%F}-LfHMona>dfSw$ScFc4V|mb>Z+9CEpQ6>$LPjmTafc|4vlHOL}6IsV~*cN<>k z#$h6SZ77PaA`alTz~yp9P-plYD3!`p#DPMgP%4%1+&Cf%?RGmnBMN!Fi(%N$c+k|; zB<0g)vw58zdEw&4i;<0N{}^IoVh{wGo0|)NXDSH7+}xb6_k-dCo?OWQ0B_&Em7YS+ z&d%1?*ZYwiA0H3i=B4rM*|Uz0j$bVz0={qHIL>S~ho(V<*=*)GPTV1j`{baEfgx(; zxoCKJ_}#mAzJBL8&S*3;3}ZAJySloh>kTgvSkmEebaZsg&CN-R{rK@?aB#4{zkf+V zlgTtZJPgwoi)CnN$X6s-=yW<1MM;vhTCJgJ003C6R+1#4-$R>-;L-QbwEv=S-n@D7 z;)Tg%Dlac@XlRgTx!vwZj~+dF@}#Gyr?s`UxVRY7;49*GyUWVT?%%&}G#aHL(PT2& z?RK--JT*17q#%ytB_$=()6+c9mzI_~olY;25P+iS`t|GOa{1icoW)`ZL4(C&fwK@C z1RdU0od&6_uTxeg6FULx&FGI4S>wlpf*{P#&)aM^K@gz#rI8@;dJzQieP8sGgZTLPb?er_w77J`FifM-oH%g; z{ylNxL|j~)RG48HtJMlWdORMbQn{oEyu$Tw+;VlXEITtZgCK~-V$tjMfwy)=L`6ky z+_-UOX2#`mS*=!^%?6*kU>Js?D2k#i%d#v>)3n3kpePD1r62)t9Egnya1fv|<9@88$f*5>8qNkszi^U5Fyf*=UD z+f7lF%jIHOmg6|_@sBv&%Ovm$1HKSTDijL%hSi@1LI7|$9KIi&PG@dzt{@2TL2Do) z%Yk8-B?aMZ0Mi`DNsCF-|8@j)tLOhV*!LmviXvW+j!>zfbRH8Ig1#dEc7%SP43`Qz foi5TQtvdV%l8LWjU#FL200000NkvXXu0mjf<4o`y literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b8de8497a13d9b466f5bfd3766eeacca4ea1e136 GIT binary patch literal 2751 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 literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0f74d3ae43daa960d5c3b5449fba3ef1d08b6c00 GIT binary patch literal 2326 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 Ny`8gdHS+w;e*rsOBC-Gg literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-ios-ltr-Mobile-Safari-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..dc09863128364914da136472d2bfaab518b7795e GIT binary patch literal 2331 zcmV+$3FP*PP)?bF?utENHi!xk$CZ-i6&}9iEE?iiXdOX|8@iZCI#{NN2 zK*^a04<6)sUfnY@0#n_|DJv_Rot?GWZ0YO9FplF0f>80yjL@iCTrxya{PykJ!oosR zQ&Vkit+bzI*_oLczu$lIxY66&>u@+aJ3H^+zn|NdiE2|?TDrQr zD&G?hho`2d;P&X~XnT7*+y(%QkB`Ic3l}cjx^-)1WyNeZ2Lb_66dewS!C;_i8lK5< zoa#;8i`!nW*8>2qT)E<>h6& z-JYX{?S=R+U%s3_fBwOP2X?!CdU|?%d|Wz2(=h=24($ax}0eEy^U_gGQ zRA(=q`NhS>>gwvYwljV_DW{G|G4Sd_IfClItez zo%nx{f^VO%6vXE%1@ZYxdhrtz6X9@J`swj_CMPFToPYW9WkC>BXj<+`FaG)S=b=zY z`nk2W_4e)C6z8w3tf{(cy@h_~{3y{)aS4u>OQ?Sq4ZlarGvs+*pkzIpTJ*x1;}$jB}eb%GfeFJ3Gu zDS_KdOG~d`zXkxTtgMhEIXpZpUBr!z4SC#BtJO+3UPD8}^73**tM&DDilX-K-=De- z$*MbY3}b_-}7GD8d*X48_J<;drVxXfztP+nu7i7cXAa*Vp&-^b8FR!PvfJk{0y0y~$*{ zdi835e}7R?5dfg0qhps0ilTU)zjW!+&d$!!qeq*Yn-f~44p$sLeE9C&yQ{0K*RNlX zuWoU1ab{*_cz9T+(|!8%>D8-O=gyszo21d8!1w(WpYJ zWXMCeazl>eq(g!r#A308Cdp7CLI%4c8CtCt!D<)syF+d$-;ZIKJm9A&5hUg&k|Ti z?i2)pWm%SGW3iYZ2+3wC#7{*`b{d9Z1VNA_snu$eMZu9#EqV(xvoLd-tjt}S6vX!};^IuLxNN)c=XK|t_o(zHYE0u@z?U;}5lsoM^o=d&5@(8yRk>>}0w!~u#|x6HI; zEFQk<(1w;|zz=>E3seZAc!ptATu3ARLjW>pqff@-34(w=$*xrq*#MpMY#ax)@E*zw z&uBE_IPUd&5p3gOS(c`0><<9xDxkTWh~i0-WLZ|>|KX%Y;oSHX==FLuzXL@)hG7EFM9i=rs+_Dl=W>-E{h6ta!pI-O32VQ?I; ztgKYt4v)vjeIonSDyxw#pO z#h`MHMgvz!Wcs!@7z`P$)kugs85_UfzrDQ;^K&qqY%mx|lGJE4qA12M))^~yg{Y< zQDhi~rfG&@V6GPYNw!KN6Ut85?a&H79l6NT{s$L0%0E18x@-Ud002ovPDHLkV1l@| BgGvAZ literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-md-ltr-Mobile-Chrome-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..fad2e2ab83dc22a75c341c00a918d2bf7e2058a0 GIT binary patch literal 1893 zcmV-r2b%baP)002k`0ssI2F}R--00001b5ch_0Itp) z=>Px+A4x<(RCt{2n_XzrTo}hsnsi;$*{NOKI=e4XP+2z+bT^}OviUJY1kpQ{-G~## zJ2x+^!k9Q=P=+5c6!C5YKVcWHc;RF?MQ5>g__fw{RIO=U(@(RsN#2X|67sfN*QTk` zm;NtCcJe&uJik2WB| zhoh&b=i%XwOSnxhdGY>{P{DE;}k_rPfyp?)y3m+j^iFYc+lS7?(_Mi3XJ2pJoZwpR;$%& zySlo9!QhV{KX&Zc0RT`cm1SjR0Dw)KHkFo^&d<-!%*;e05!hp6vDo+T-=z&BkA!x+ z{nV*blarGhHf%7P%`acR6rSZc?)UHCN~IFV@usGxk&zKtj-sfvVdQZfy4~)wva*_* z8k(jp77JXa1pU%!?%3@LNCZQC}P z?B7c^H8s`I(NSAltJmvs9B*!J_INz7>z+S<-sN(UBsn@diXccsL&Np!*E>5qD=I1$ z78Y*YxFKOk001Q4E8vBN1+`j@VgI?5BuT2(YW{M-PD>DkMx#lx%w2gW{Oc;tOAB8` z!opXPu<(_RkmIKB(z$sHk&Pf z(e(HCXH|bD_TncH9LHI$R)QcJ8yod{JzpM;Mn8W1SY2Ihv)ObyT~kw2s&OSn zs;Y809PRDx(DB8K7xVM;Z{NOMvt~_AO-+)E!{MN5ddrqA005iKR$gBI?b|nKuh;9> zu3fuaoZ`o!*=&CF=n+Yhmo8nhTCIG!-|rtB9K3n+rq}B=o6TcmW2we|zyIpht3yLW zPN$Q1^msfpP5b@+a5$XmBA3hi`}_TVzuWD;a^(t+C-2>-99ohf}&_$UERHV_j-GKc^4E#O(qkDVMe3z+_`fGgCWWI#EBCqieA2a zS*23(UPq1`nVz0*YirxOb!%$<0|NsG4<5XA>lR6p$BrG-YPGz5b#--4geH?oqtU?Q zJ9qBDgSojmilQ!DxBz!6e*O9-bdk&Da01=X&>)k^-o1O5YOGKwgm_6>vi?Jd4xK%F zR;5zy*|TTGu(KejeNjd-iPIx^*orEoqE} z!Y~ZNr`FGL-0<-5;lqdb?%m6;A$j{W5_vDJtgJkF@}$XRf;&q+Jw3v+D2fgb4~N5H zk|cY3d(#^W)zZ>(?b@|qFt~sJ{v?<2@o|cxy1KepmOXRk%;e-`TU#5nSF6>{&CSck zn#(p8%d&w$AdyH23tcYP(W6H>jthlC48x>1PE{xr;%zc7JcvMl9x|sjKJ;Z-mS=+) zGMNlwz}+O_DR}lza*8KR+H`}vmua?!6Nv=e+f7PozLnFx6tXc40{|!~DOnB=f|Zn% z000<v{I?ewg#O}S5Z;H2&ZBnxXyz zAsmOIzgR|5H1h<)t0}IboN@?X?uqmL`SWL1PbvOG0ud5P2p`tMkBPDpK@eHZ+WrC| zgcR|pfXZrIDHMuaen=yR5MF)^!w>|CL?YR`69nOOI^h`3B#lO+5&lF&oJ8L4;UWk{ zQJ>F;<9M1mcaj)}dHC=l%d-43DvczWwPj7nPbM)8Qz#S^MR`1)+S=L--6tj{NRkv@ fl+-jzJM;br9rsnY)r$ir00000NkvXXu0mjf1*xd> literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-md-ltr-Mobile-Firefox-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..3b30ff9a221f9e6175a3b635d0601976069e34ed GIT binary patch literal 2092 zcmV+{2-Ek8P)aD=Jp(yYxLx}PDqKd3@*)_VE(!nDAxUcFkDE?p`=e*BO@g9gcxB}=q2itFFMzwFtw zM{?)REh|^9lrCMm=x0~1T#;eJhRKsBPo!PDcCuy57AaV;pky0UJ#^@hOqnu8E?v4L z-@bj5+O=!T{{8!y-{3$hQm7cXAOmoHzWeEIUKr1tIGONR~}R84*#hib=|pem(nu!#wBBn9KMGm5Zk=@P+Ew9Py?RxbETv1AmKrr`2tWZhdh}?WF>~e0C2Q8KQAHZR z#%K5L-O~j!5bM^hoAtmsu3{3pT3mJx2~EJUb0N48oFf6pYN6snaE=5VtA&b7WN@1{ zZIZ%;3+tvms}yU+v9jN=VS_G6y=By>Q5vDBU%!4tCb0y^9(UiqeZpRrg|bUIapHv3 zs#QzMl`CgmJ=1~v_3M}9$dM!Y20wrPtXs9cd-qEI{Q0eK+DD7ZIo z-sslo&Ye3_v0_CTH*TDiEn8N+ievAYCr=)E{P?lFefw57^~QuF)u#?o5cajiHB1R9B>ej8B?A*CicJ11gJUIY?NH5V_3ZD~WCZtRebKifdi#py?S~XeI~r#pg{w9@ZfO$RZJBS(%z1c&+DzkgrP6C%|Iye+t1y?W`OB_$;(IMh94$PiT;h42$IJcDh@ z{|c^3l`85paME5=qH}&z^+F&hiT@(R6sf*nrD-W{#E20xX3UsW&tq@hx}^ijfD-q^ zAI8O0qb)~f%$T7;Mx5;P=g;Nn(W5eS=uln4m~|WwK7RZtQ>RWXokbm{oDcOcI=``xVCxaYn#wi2ngJB~tyg6lWBD=FAycxNxCVs#Hm5O0oce z+M-1ZJqSN|@Sq;>EMLA{O&L`Jv}Mbd8ouY$jG$`g&Ye?p<0;;=24~fp#YNE|STvCk zmxSOPham))S-?5=GvTVmU2zFVz_CLixDcEp0mo{g;zDqa1RSe{iVMLx5^$^*DlP=) zNWigLsJIZEBLT;1q2fYtjszU5#Z7UxPq3Rq7RURETeX;i^TLYsJ9p}Z73uf55wZM7 zF#~5nd0+kSnLZj=yn284L$$o8xLg(!Z~*cHGw*Rw;x}7hkq=_P`2i-P`34To0P?
Iywm{Nv=NVM0s|Kb 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 KqdJ5~+&=(cSIXi5 literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-wrapping-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-wrapping-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..9ef4441bff846e8628ac0997fcd8cf1cda5fe026 GIT binary patch literal 5643 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 literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-wrapping-ios-ltr-Mobile-Safari-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-wrapping-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..8e9ddf157baa91ee07e7524242d64340ab864539 GIT binary patch literal 3608 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 JNeK7Ye*&Mz) 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 literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-wrapping-md-ltr-Mobile-Safari-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-stacked-wrapping-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0b9c4106d927713ff37b21d051b6a951b63cca40 GIT binary patch literal 2603 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 A(*OVf literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-wrapping-md-ltr-Mobile-Firefox-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-wrapping-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..35e2203fa5e61550894cf45cac2c0d75391875c0 GIT binary patch literal 4687 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 E13=L25&!@I literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-wrapping-md-ltr-Mobile-Safari-linux.png b/core/src/components/toggle/test/bottom-content/toggle.e2e.ts-snapshots/toggle-helper-text-wrapping-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..ccdc8f680fc0f5a5f222cab798e552b0c68bdb79 GIT binary patch literal 2856 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

Placement Start

+
+

Default Justify

+ + + Enable Notifications + + +
+

Justify Start

@@ -77,6 +86,15 @@

Justify Space Between

Placement End

+
+

Default Justify

+ + + Enable Notifications + + +
+

Justify Start

@@ -107,6 +125,15 @@

Justify Space Between

Placement Fixed

+
+

Default Justify

+ + + Enable Notifications + + +
+

Justify Start

@@ -167,6 +194,33 @@

Multiline Label

+
+ + + + Enable Notifications Enable Notifications Enable Notifications + + + +
+
+ + + + Enable Notifications Enable Notifications Enable Notifications + + + +
+
+ + + + Enable Notifications Enable Notifications Enable Notifications + + + +
diff --git a/core/src/components/toggle/test/item/toggle.e2e.ts b/core/src/components/toggle/test/item/toggle.e2e.ts index 1dff98c31be..f5db0dab8ab 100644 --- a/core/src/components/toggle/test/item/toggle.e2e.ts +++ b/core/src/components/toggle/test/item/toggle.e2e.ts @@ -53,7 +53,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { configs({ directions: ['ltr'], modes: ['md'] }).forEach(({ title, screenshot, config }) => { test.describe(title('toggle: long label in item'), () => { - test('should render margins correctly when using long label in item', async ({ page }) => { + test('should not have visual regressions when using long label in item', async ({ page }) => { await page.setContent( ` @@ -71,8 +71,27 @@ configs({ directions: ['ltr'], modes: ['md'] }).forEach(({ title, screenshot, co }); }); + test.describe(title('toggle: end label in item'), () => { + test('should not have visual regressions when using end label in item', async ({ page }) => { + await page.setContent( + ` + + + + Enable Notifications + + + + `, + config + ); + const list = page.locator('ion-list'); + await expect(list).toHaveScreenshot(screenshot(`toggle-end-label-in-item`)); + }); + }); + test.describe(title('toggle: stacked label in item'), () => { - test('should render margins correctly when using stacked label in item', async ({ page }) => { + test('should not have visual regressions when using stacked label in item', async ({ page }) => { await page.setContent( ` diff --git a/core/src/components/toggle/test/item/toggle.e2e.ts-snapshots/toggle-end-label-in-item-md-ltr-Mobile-Chrome-linux.png b/core/src/components/toggle/test/item/toggle.e2e.ts-snapshots/toggle-end-label-in-item-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..218ee735ef550e3d6bed984f46b292cf7f1565e8 GIT binary patch literal 3223 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 Gcm4%$K|e?U literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/item/toggle.e2e.ts-snapshots/toggle-end-label-in-item-md-ltr-Mobile-Firefox-linux.png b/core/src/components/toggle/test/item/toggle.e2e.ts-snapshots/toggle-end-label-in-item-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..73d9a9fd86a444707842609aac914f66fef4472e GIT binary patch literal 3921 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 literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/test/item/toggle.e2e.ts-snapshots/toggle-end-label-in-item-md-ltr-Mobile-Safari-linux.png b/core/src/components/toggle/test/item/toggle.e2e.ts-snapshots/toggle-end-label-in-item-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..d176f1ed59f16e80d85dd7e4c2f6035efbe9e760 GIT binary patch literal 3051 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 literal 0 HcmV?d00001 diff --git a/core/src/components/toggle/toggle.scss b/core/src/components/toggle/toggle.scss index fa89fb2128f..ad78e471c0b 100644 --- a/core/src/components/toggle/toggle.scss +++ b/core/src/components/toggle/toggle.scss @@ -134,47 +134,53 @@ input { align-items: center; } -// Toggle Justify -// -------------------------------------------------- +// Toggle Bottom Content +// ---------------------------------------------------------------- + +.toggle-bottom { + @include padding(4px, null, null, null); + + display: flex; -:host(.toggle-justify-space-between) .toggle-wrapper { justify-content: space-between; -} -:host(.toggle-justify-start) .toggle-wrapper { - justify-content: start; + font-size: dynamic-font(12px); + + white-space: normal; } -:host(.toggle-justify-end) .toggle-wrapper { - justify-content: end; +:host(.toggle-label-placement-stacked) .toggle-bottom { + font-size: dynamic-font(16px); } -// Toggle Align -// -------------------------------------------------- +// Toggle Hint Text +// ---------------------------------------------------------------- +/** + * Error text should only be shown when .ion-invalid is + * present on the checkbox. Otherwise the helper text should + * be shown. + */ +.toggle-bottom .error-text { + display: none; -:host(.toggle-alignment-start) .toggle-wrapper { - align-items: start; + color: ion-color(danger, base); } -:host(.toggle-alignment-center) .toggle-wrapper { - align-items: center; -} +.toggle-bottom .helper-text { + display: block; -// Justify Content & Align Items -// --------------------------------------------- + color: $text-color-step-300; +} -// The toggle should be displayed as block when either justify -// or alignment is set; otherwise, these properties will have no -// visible effect. -:host(.toggle-justify-space-between), -:host(.toggle-justify-start), -:host(.toggle-justify-end), -:host(.toggle-alignment-start), -:host(.toggle-alignment-center) { +:host(.ion-touched.ion-invalid) .toggle-bottom .error-text { display: block; } +:host(.ion-touched.ion-invalid) .toggle-bottom .helper-text { + display: none; +} + // Toggle Label Placement - Start // ---------------------------------------------------------------- @@ -204,6 +210,8 @@ input { */ :host(.toggle-label-placement-end) .toggle-wrapper { flex-direction: row-reverse; + + justify-content: start; } /** @@ -247,6 +255,8 @@ input { */ :host(.toggle-label-placement-stacked) .toggle-wrapper { flex-direction: column; + + text-align: center; } :host(.toggle-label-placement-stacked) .label-text-wrapper { @@ -274,6 +284,46 @@ input { @include transform-origin(center, top); } +// Toggle Justify +// -------------------------------------------------- + +:host(.toggle-justify-space-between) .toggle-wrapper { + justify-content: space-between; +} + +:host(.toggle-justify-start) .toggle-wrapper { + justify-content: start; +} + +:host(.toggle-justify-end) .toggle-wrapper { + justify-content: end; +} + +// Toggle Align +// -------------------------------------------------- + +:host(.toggle-alignment-start) .toggle-wrapper { + align-items: start; +} + +:host(.toggle-alignment-center) .toggle-wrapper { + align-items: center; +} + +// Justify Content & Align Items +// --------------------------------------------- + +// The toggle should be displayed as block when either justify +// or alignment is set; otherwise, these properties will have no +// visible effect. +:host(.toggle-justify-space-between), +:host(.toggle-justify-start), +:host(.toggle-justify-end), +:host(.toggle-alignment-start), +:host(.toggle-alignment-center) { + display: block; +} + // Toggle Background Track: Unchecked // -------------------------------------------------- diff --git a/core/src/components/toggle/toggle.tsx b/core/src/components/toggle/toggle.tsx index e50a81bea57..8ccdb60d3dd 100644 --- a/core/src/components/toggle/toggle.tsx +++ b/core/src/components/toggle/toggle.tsx @@ -21,6 +21,9 @@ import type { ToggleChangeEventDetail } from './toggle-interface'; * @part track - The background track of the toggle. * @part handle - The toggle handle, or knob, used to change the checked state. * @part label - The label text describing the toggle. + * @part supporting-text - Supporting text displayed beneath the toggle label. + * @part helper-text - Supporting text displayed beneath the toggle label when the toggle is valid. + * @part error-text - Supporting text displayed beneath the toggle label when the toggle is invalid and touched. */ @Component({ tag: 'ion-toggle', @@ -32,6 +35,8 @@ import type { ToggleChangeEventDetail } from './toggle-interface'; }) export class Toggle implements ComponentInterface { private inputId = `ion-tg-${toggleIds++}`; + private helperTextId = `${this.inputId}-helper-text`; + private errorTextId = `${this.inputId}-error-text`; private gesture?: Gesture; private focusEl?: HTMLElement; private lastDrag = 0; @@ -65,6 +70,16 @@ export class Toggle implements ComponentInterface { */ @Prop() disabled = false; + /** + * Text that is placed under the toggle label and displayed when an error is detected. + */ + @Prop() errorText?: string; + + /** + * Text that is placed under the toggle label and displayed when no error is detected. + */ + @Prop() helperText?: string; + /** * The value of the toggle does not mean if it's checked or not, use the `checked` * property for that. @@ -297,6 +312,48 @@ export class Toggle implements ComponentInterface { return this.el.textContent !== ''; } + private getHintTextID(): string | undefined { + const { el, helperText, errorText, helperTextId, errorTextId } = this; + + if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) { + return errorTextId; + } + + if (helperText) { + return helperTextId; + } + + return undefined; + } + + /** + * Responsible for rendering helper text and error text. + * This element should only be rendered if hint text is set. + */ + private renderHintText() { + const { helperText, errorText, helperTextId, errorTextId } = this; + + /** + * undefined and empty string values should + * be treated as not having helper/error text. + */ + const hasHintText = !!helperText || !!errorText; + if (!hasHintText) { + return; + } + + return ( +
+
+ {helperText} +
+
+ {errorText} +
+
+ ); + } + render() { const { activated, color, checked, disabled, el, justify, labelPlacement, inputId, name, alignment, required } = this; @@ -308,6 +365,8 @@ export class Toggle implements ComponentInterface { return ( + {this.renderHintText()}
{this.renderToggleControl()}
diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index 69c2f742454..ce4560e0095 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -2473,14 +2473,14 @@ Shorthand for ionToastDidDismiss. @ProxyCmp({ - inputs: ['alignment', 'checked', 'color', 'disabled', 'enableOnOffLabels', 'justify', 'labelPlacement', 'mode', 'name', 'required', 'value'] + inputs: ['alignment', 'checked', 'color', 'disabled', 'enableOnOffLabels', 'errorText', 'helperText', 'justify', 'labelPlacement', 'mode', 'name', 'required', 'value'] }) @Component({ selector: 'ion-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['alignment', 'checked', 'color', 'disabled', 'enableOnOffLabels', 'justify', 'labelPlacement', 'mode', 'name', 'required', 'value'], + inputs: ['alignment', 'checked', 'color', 'disabled', 'enableOnOffLabels', 'errorText', 'helperText', 'justify', 'labelPlacement', 'mode', 'name', 'required', 'value'], }) export class IonToggle { protected el: HTMLIonToggleElement; diff --git a/packages/angular/standalone/src/directives/toggle.ts b/packages/angular/standalone/src/directives/toggle.ts index 76e37ad1a04..83915dc9eab 100644 --- a/packages/angular/standalone/src/directives/toggle.ts +++ b/packages/angular/standalone/src/directives/toggle.ts @@ -21,6 +21,8 @@ const TOGGLE_INPUTS = [ 'color', 'disabled', 'enableOnOffLabels', + 'errorText', + 'helperText', 'justify', 'labelPlacement', 'mode', diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index 79a0953d053..b194d5e9ce9 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -1015,6 +1015,8 @@ export const IonToggle = /*@__PURE__*/ defineContainer Date: Mon, 10 Mar 2025 18:53:11 -0400 Subject: [PATCH 13/18] feat(select): add helperText and errorText properties (#30143) Issue number: resolves #29205 --------- ## What is the current behavior? Select does not support helper and error text. ## What is the new behavior? - Adds support for `helperText` and `errorText` - Adds parts for `helper-text`, `error-text` and `supporting-text` - Adds an e2e test for helper and error text with functional tests and screenshot tests ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information [Preview](https://ionic-framework-git-rou-11551-ionic1.vercel.app/src/components/select/test/bottom-content) --------- Co-authored-by: swimer11 <65334157+swimer11@users.noreply.github.com> --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- core/api.txt | 5 + core/src/components.d.ts | 16 ++ core/src/components/select/select.ios.scss | 2 + .../components/select/select.md.solid.scss | 4 + core/src/components/select/select.scss | 65 ++++++ core/src/components/select/select.tsx | 67 ++++++ .../select/test/bottom-content/index.html | 141 ++++++++++++ .../select/test/bottom-content/select.e2e.ts | 215 ++++++++++++++++++ ...-custom-css-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2603 bytes ...custom-css-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3312 bytes ...-custom-css-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2442 bytes ...tom-css-var-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 1968 bytes ...om-css-var-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2570 bytes ...tom-css-var-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 1852 bytes ...error-text-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2217 bytes ...rror-text-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2980 bytes ...error-text-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2205 bytes ...-error-text-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 1971 bytes ...error-text-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2592 bytes ...-error-text-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 1800 bytes ...cked-label-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 1999 bytes ...ked-label-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2857 bytes ...cked-label-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 1960 bytes ...acked-label-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 1776 bytes ...cked-label-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2534 bytes ...acked-label-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 1644 bytes ...-custom-css-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2547 bytes ...custom-css-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3661 bytes ...-custom-css-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2377 bytes ...elper-text-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2255 bytes ...lper-text-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2984 bytes ...elper-text-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2244 bytes ...helper-text-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 1956 bytes ...elper-text-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2556 bytes ...helper-text-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 1828 bytes ...cked-label-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2037 bytes ...ked-label-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2858 bytes ...cked-label-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2002 bytes ...acked-label-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 1793 bytes ...cked-label-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2494 bytes ...acked-label-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 1620 bytes ...t-wrapping-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2619 bytes ...-wrapping-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4685 bytes ...t-wrapping-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2726 bytes ...xt-wrapping-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2221 bytes ...t-wrapping-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4834 bytes ...xt-wrapping-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2282 bytes packages/angular/src/directives/proxies.ts | 4 +- .../standalone/src/directives/select.ts | 2 + packages/vue/src/proxies.ts | 2 + 50 files changed, 521 insertions(+), 2 deletions(-) create mode 100644 core/src/components/select/test/bottom-content/index.html create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-var-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-var-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-var-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-stacked-label-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-stacked-label-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-stacked-label-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-stacked-label-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-stacked-label-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-stacked-label-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-custom-css-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-custom-css-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-custom-css-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-stacked-label-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-stacked-label-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-stacked-label-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-stacked-label-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-stacked-label-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-stacked-label-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-wrapping-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-wrapping-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-wrapping-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-wrapping-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-wrapping-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-wrapping-md-ltr-Mobile-Safari-linux.png diff --git a/core/api.txt b/core/api.txt index 73135538efc..c1d2b772d75 100644 --- a/core/api.txt +++ b/core/api.txt @@ -1626,8 +1626,10 @@ ion-select,prop,cancelText,string,'Cancel',false,false ion-select,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record | undefined,undefined,false,true ion-select,prop,compareWith,((currentValue: any, compareValue: any) => boolean) | null | string | undefined,undefined,false,false ion-select,prop,disabled,boolean,false,false,false +ion-select,prop,errorText,string | undefined,undefined,false,false ion-select,prop,expandedIcon,string | undefined,undefined,false,false ion-select,prop,fill,"outline" | "solid" | undefined,undefined,false,false +ion-select,prop,helperText,string | undefined,undefined,false,false ion-select,prop,interface,"action-sheet" | "alert" | "modal" | "popover",'alert',false,false ion-select,prop,interfaceOptions,any,{},false,false ion-select,prop,justify,"end" | "space-between" | "start" | undefined,undefined,false,false @@ -1682,9 +1684,12 @@ ion-select,css-prop,--placeholder-opacity,md ion-select,css-prop,--ripple-color,ios ion-select,css-prop,--ripple-color,md ion-select,part,container +ion-select,part,error-text +ion-select,part,helper-text ion-select,part,icon ion-select,part,label ion-select,part,placeholder +ion-select,part,supporting-text ion-select,part,text ion-select-modal,scoped diff --git a/core/src/components.d.ts b/core/src/components.d.ts index b4587c7c2d9..ac38d78837f 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -2771,6 +2771,10 @@ export namespace Components { * If `true`, the user cannot interact with the select. */ "disabled": boolean; + /** + * Text that is placed under the select and displayed when an error is detected. + */ + "errorText"?: string; /** * The toggle icon to show when the select is open. If defined, the icon rotation behavior in `md` mode will be disabled. If undefined, `toggleIcon` will be used for when the select is both open and closed. */ @@ -2779,6 +2783,10 @@ export namespace Components { * The fill for the item. If `"solid"` the item will have a background. If `"outline"` the item will be transparent with a border. Only available in `md` mode. */ "fill"?: 'outline' | 'solid'; + /** + * Text that is placed under the select and displayed when no error is detected. + */ + "helperText"?: string; /** * The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`. */ @@ -7616,6 +7624,10 @@ declare namespace LocalJSX { * If `true`, the user cannot interact with the select. */ "disabled"?: boolean; + /** + * Text that is placed under the select and displayed when an error is detected. + */ + "errorText"?: string; /** * The toggle icon to show when the select is open. If defined, the icon rotation behavior in `md` mode will be disabled. If undefined, `toggleIcon` will be used for when the select is both open and closed. */ @@ -7624,6 +7636,10 @@ declare namespace LocalJSX { * The fill for the item. If `"solid"` the item will have a background. If `"outline"` the item will be transparent with a border. Only available in `md` mode. */ "fill"?: 'outline' | 'solid'; + /** + * Text that is placed under the select and displayed when no error is detected. + */ + "helperText"?: string; /** * The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`. */ diff --git a/core/src/components/select/select.ios.scss b/core/src/components/select/select.ios.scss index a1d3f5df087..5b5e2f913ee 100644 --- a/core/src/components/select/select.ios.scss +++ b/core/src/components/select/select.ios.scss @@ -5,6 +5,8 @@ // -------------------------------------------------- :host { + --border-width: #{$hairlines-width}; + --border-color: #{$item-ios-border-color}; --highlight-height: 0px; } diff --git a/core/src/components/select/select.md.solid.scss b/core/src/components/select/select.md.solid.scss index 7d48ddb10be..321065ea803 100644 --- a/core/src/components/select/select.md.solid.scss +++ b/core/src/components/select/select.md.solid.scss @@ -32,6 +32,10 @@ --border-color: var(--highlight-color); } +/** + * The bottom content should never have + * a border with the solid style. + */ :host(.select-fill-solid) .select-bottom { border-top: none; } diff --git a/core/src/components/select/select.scss b/core/src/components/select/select.scss index 8b12f01ec1c..cd0a7707aa8 100644 --- a/core/src/components/select/select.scss +++ b/core/src/components/select/select.scss @@ -275,6 +275,71 @@ button { --highlight-color: var(--highlight-color-valid); } +// Select Bottom Content +// ---------------------------------------------------------------- + +.select-bottom { + /** + * The bottom content should take on the start and end + * padding so it is always aligned with either the label + * or the start of the text select. + */ + @include padding(5px, var(--padding-end), 0, var(--padding-start)); + + display: flex; + + justify-content: space-between; + + border-top: var(--border-width) var(--border-style) var(--border-color); + + font-size: dynamic-font(12px); + + white-space: normal; +} + +/** + * If the select has a validity state, the + * border and label should reflect that as a color. + * The invalid state should show if the select is + * invalid and has already been touched. + * The valid state should show if the select + * is valid, has already been touched, and + * is currently focused. Do not show the valid + * highlight when the select is blurred. + */ +:host(.has-focus.ion-valid), +:host(.ion-touched.ion-invalid) { + --border-color: var(--highlight-color); +} + +// Select Hint Text +// ---------------------------------------------------------------- + +/** + * Error text should only be shown when .ion-invalid is + * present on the select. Otherwise the helper text should + * be shown. + */ + .select-bottom .error-text { + display: none; + + color: var(--highlight-color-invalid); +} + +.select-bottom .helper-text { + display: block; + + color: $text-color-step-300; +} + +:host(.ion-touched.ion-invalid) .select-bottom .error-text { + display: block; +} + +:host(.ion-touched.ion-invalid) .select-bottom .helper-text { + display: none; +} + // Select Label // ---------------------------------------------------------------- diff --git a/core/src/components/select/select.tsx b/core/src/components/select/select.tsx index edbb3a790c9..0645cd5e56b 100644 --- a/core/src/components/select/select.tsx +++ b/core/src/components/select/select.tsx @@ -41,6 +41,9 @@ import type { SelectChangeEventDetail, SelectInterface, SelectCompareFn } from ' * @part icon - The select icon container. * @part container - The container for the selected text or placeholder. * @part label - The label text describing the select. + * @part supporting-text - Supporting text displayed beneath the select. + * @part helper-text - Supporting text displayed beneath the select when the select is valid. + * @part error-text - Supporting text displayed beneath the select when the select is invalid and touched. */ @Component({ tag: 'ion-select', @@ -52,6 +55,8 @@ import type { SelectChangeEventDetail, SelectInterface, SelectCompareFn } from ' }) export class Select implements ComponentInterface { private inputId = `ion-sel-${selectIds++}`; + private helperTextId = `${this.inputId}-helper-text`; + private errorTextId = `${this.inputId}-error-text`; private overlay?: OverlaySelect; private focusEl?: HTMLButtonElement; private mutationO?: MutationObserver; @@ -98,6 +103,16 @@ export class Select implements ComponentInterface { */ @Prop() fill?: 'outline' | 'solid'; + /** + * Text that is placed under the select and displayed when an error is detected. + */ + @Prop() errorText?: string; + + /** + * Text that is placed under the select and displayed when no error is detected. + */ + @Prop() helperText?: string; + /** * The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`. */ @@ -1014,6 +1029,8 @@ export class Select implements ComponentInterface { aria-label={this.ariaLabel} aria-haspopup="dialog" aria-expanded={`${isExpanded}`} + aria-describedby={this.getHintTextID()} + aria-invalid={this.getHintTextID() === this.errorTextId} aria-required={`${required}`} onFocus={this.onFocus} onBlur={this.onBlur} @@ -1022,6 +1039,55 @@ export class Select implements ComponentInterface { ); } + private getHintTextID(): string | undefined { + const { el, helperText, errorText, helperTextId, errorTextId } = this; + + if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) { + return errorTextId; + } + + if (helperText) { + return helperTextId; + } + + return undefined; + } + + /** + * Renders the helper text or error text values + */ + private renderHintText() { + const { helperText, errorText, helperTextId, errorTextId } = this; + + return [ +
+ {helperText} +
, +
+ {errorText} +
, + ]; + } + + /** + * Responsible for rendering helper text, and error text. This element + * should only be rendered if hint text is set. + */ + private renderBottomContent() { + const { helperText, errorText } = this; + + /** + * undefined and empty string values should + * be treated as not having helper/error text. + */ + const hasHintText = !!helperText || !!errorText; + if (!hasHintText) { + return; + } + + return
{this.renderHintText()}
; + } + render() { const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, shape, name, value } = this; @@ -1101,6 +1167,7 @@ export class Select implements ComponentInterface { {hasFloatingOrStackedLabel && this.renderSelectIcon()} {shouldRenderHighlight &&
} + {this.renderBottomContent()} ); } diff --git a/core/src/components/select/test/bottom-content/index.html b/core/src/components/select/test/bottom-content/index.html new file mode 100644 index 00000000000..9241aedd45b --- /dev/null +++ b/core/src/components/select/test/bottom-content/index.html @@ -0,0 +1,141 @@ + + + + + Select - Bottom Content + + + + + + + + + + + + + + Select - Bottom Content + + + + +
+
+

No Hint

+ + Option + +
+ +
+

No Hint: Stacked

+ + Option + +
+ +
+

Helper Text

+ + Option + +
+ +
+

Helper Text: Stacked

+ Label + Option + +
+ +
+

Error Text

+ + Option +
+ +
+

Error Text: Stacked

+ + Option +
+ +
+

Error Text: Custom Color

+ + Option +
+ +
+

Helper Text: Wrapping

+ + Option + +
+
+ + +
+
+ + + + diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts b/core/src/components/select/test/bottom-content/select.e2e.ts new file mode 100644 index 00000000000..12514c845cf --- /dev/null +++ b/core/src/components/select/test/bottom-content/select.e2e.ts @@ -0,0 +1,215 @@ +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('select: bottom content functionality'), () => { + test('should not render bottom content if no hint is enabled', async ({ page }) => { + await page.setContent(``, config); + + const bottomEl = page.locator('ion-select .select-bottom'); + await expect(bottomEl).toHaveCount(0); + }); + test('helper text should be visible initially', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const helperText = page.locator('ion-select .helper-text'); + const errorText = page.locator('ion-select .error-text'); + await expect(helperText).toBeVisible(); + await expect(helperText).toHaveText('Helper text'); + await expect(errorText).toBeHidden(); + }); + test('select should have an aria-describedby attribute when helper text is present', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const select = page.locator('ion-select button'); + const helperText = page.locator('ion-select .helper-text'); + const helperTextId = await helperText.getAttribute('id'); + const ariaDescribedBy = await select.getAttribute('aria-describedby'); + + expect(ariaDescribedBy).toBe(helperTextId); + }); + test('error text should be visible when select is invalid', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const helperText = page.locator('ion-select .helper-text'); + const errorText = page.locator('ion-select .error-text'); + await expect(helperText).toBeHidden(); + await expect(errorText).toBeVisible(); + await expect(errorText).toHaveText('Error text'); + }); + + test('select should have an aria-describedby attribute when error text is present', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const select = page.locator('ion-select button'); + const errorText = page.locator('ion-select .error-text'); + const errorTextId = await errorText.getAttribute('id'); + const ariaDescribedBy = await select.getAttribute('aria-describedby'); + + expect(ariaDescribedBy).toBe(errorTextId); + }); + test('select should have aria-invalid attribute when select is invalid', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const select = page.locator('ion-select button'); + + await expect(select).toHaveAttribute('aria-invalid'); + }); + test('select should not have aria-invalid attribute when select is valid', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const select = page.locator('ion-select button'); + + await expect(select).not.toHaveAttribute('aria-invalid'); + }); + test('select should not have aria-describedby attribute when no hint or error text is present', async ({ + page, + }) => { + await page.setContent(``, config); + + const select = page.locator('ion-select button'); + + await expect(select).not.toHaveAttribute('aria-describedby'); + }); + }); +}); + +/** + * Rendering is different across modes + */ +configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('select: helper text rendering'), () => { + test('should not have visual regressions when rendering helper text', async ({ page }) => { + await page.setContent(``, config); + + const bottomEl = page.locator('ion-select'); + await expect(bottomEl).toHaveScreenshot(screenshot(`select-helper-text`)); + }); + test('should not have visual regressions when rendering helper text with wrapping text', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const bottomEl = page.locator('ion-select'); + await expect(bottomEl).toHaveScreenshot(screenshot(`select-helper-text-wrapping`)); + }); + test('should not have visual regressions when rendering helper text with a stacked label', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const bottomEl = page.locator('ion-select'); + await expect(bottomEl).toHaveScreenshot(screenshot(`select-helper-text-stacked-label`)); + }); + }); + + test.describe(title('select: error text rendering'), () => { + test('should not have visual regressions when rendering error text', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const bottomEl = page.locator('ion-select'); + await expect(bottomEl).toHaveScreenshot(screenshot(`select-error-text`)); + }); + test('should not have visual regressions when rendering error text with a stacked label', async ({ page }) => { + await page.setContent( + ``, + config + ); + + const bottomEl = page.locator('ion-select'); + await expect(bottomEl).toHaveScreenshot(screenshot(`select-error-text-stacked-label`)); + }); + }); +}); + +/** + * Customizing supporting text is the same across modes and directions + */ +configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('select: supporting text customization'), () => { + test('should not have visual regressions when rendering helper text with custom css', async ({ page }) => { + await page.setContent( + ` + + + `, + config + ); + + const helperText = page.locator('ion-select'); + await expect(helperText).toHaveScreenshot(screenshot(`select-helper-text-custom-css`)); + }); + test('should not have visual regressions when rendering error text with custom css', async ({ page }) => { + await page.setContent( + ` + + + `, + config + ); + + const errorText = page.locator('ion-select'); + await expect(errorText).toHaveScreenshot(screenshot(`select-error-text-custom-css`)); + }); + test('should not have visual regressions when rendering error text with a custom css variable', async ({ + page, + }) => { + await page.setContent( + ` + + + `, + config + ); + + const errorText = page.locator('ion-select'); + await expect(errorText).toHaveScreenshot(screenshot(`select-error-text-custom-css-var`)); + }); + }); +}); diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-md-ltr-Mobile-Chrome-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0f095ef038e93d415887fde95ecab1fe0d305539 GIT binary patch literal 2603 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 Rd-(kU*NiMMC5A51{|2PZ_t5|V literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-md-ltr-Mobile-Firefox-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a09c0d0d075f0dabd731855b540a311fd05fcde4 GIT binary patch literal 3312 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 H>+yd90rT=; literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-md-ltr-Mobile-Safari-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..8b126b4e1bf135f33d46cb05ca6368cd803cc8a4 GIT binary patch literal 2442 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 PFBsUs9V{x$QIGxwRi(i^ literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-var-md-ltr-Mobile-Firefox-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-var-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..24255dd5b38019bf2897ddd9d48c64a2c39abbb2 GIT binary patch literal 2570 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 K-JWenO#c^6R(DhY literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-var-md-ltr-Mobile-Safari-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-css-var-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b6d2a9d0c4a840fb5a49607d4bb511428d8f896c GIT binary patch literal 1852 zcmbtVc{JM#7XG1@@|3RHAZ2sOO3HUOHtd9 z*9kTDJycO`Jt29~R+FgON*iJc8j(z9&Y3fR%^!2--gEA~=iYO^`^WvhbJMS5QR=E7 zRR93gF=(Va0LZ1t>Psr}vY4ZfYLF$RAFiU1fb^eU(M!#fHP$f5%bxM2eD0lV9*baQ z0hRfw%d$eH`eFXLcFbfyUbB?_=r<^9SpDl1y#J@qqd(iW`|Dka)L|*b+(_(%&P4wh zbjHB)yMwC7jYR{u%&gNuu_j0~@?FY4LLTBQ1#z`}w~E74LJoL6)7aUgXff_3^~EHB z1BfwW7^&b)%|771`kN=h{Qw}=(%TOlPe#iFDW`IQ`;at!0I%{twoIUukk+Z4otmeMH2U`j!O6flTb)#mlab-!E$_n{8yitsU@sb5!tUwm zsjW45aOv+sFaN@1x?dnK-xmsnFc|Fa3MV}?^L&!H!@1^WzZ1~^gL&AAdQwB&sI_&o zzCUENGy6q)r`@yMrsn37l9J3TK?K5=h2KkJ?QtknYQs$&?(7j&*YXR!F^gmC>+3T3 zdy51Dp}DDv$zr(}cpwmn;NV(m03aZK8srq*X>-(xxBbImPI`N_oqE!BaZm?BK^d~c zTDe?qSy`E-M%4W4qs797@->vJ!GSV|YwnZ=yB`v@+et zSlp2veFWVg0R+q*twAQ zktjP+&kK{n}-KnflI0$F@ zc4Q>2VNv{TBXR4i+f&bohzKt)uY}%!Q<|EH&4j%N3d)Y)Ea#f0oApCOL!iuIyt&Do zyc`}=ksk(sT)e^O^YfWJ9;M->0mlIR2EAVNL#{p-(d7a5xne731UM z$;tACZ=9sFbFcEEJN-{-qHCB{RaK3R7S2nLtq5?Cx*|}dnB{J7nFRn(_7f}i{l7~4 zmqdx@U8QvlIRLLpA5fPeYTNvG$qsCHoQEYJk{Sv%mMI*{>5H40f75OVC&Emu!yky` z@Jq!axs_x|GCou=dQNzqcaAr@26Z8HxWz)x7=;Anz#EceOaPN+w<jQUhR6eam5)H&OGTZ}c&eBxo_ad24SEV?hkQhA4LG(t$5a# z39l}2bNlm%!-Aq9x#sy+(r&4Py^_u^Hp=RH3J}Wm_2kcr2=pJzzhxI?YrO~@d;tXn zGYp!8t^H2iY{Y62mYKQ@jy}jKP3%4LjrrQeIL2&I&-^Snih7{$-rrBQfEZ*fbhUQ|0g$Cfx10*@3n4d9!SsFBE zW3y<5GC&1e-OhPGeKcE)X|kJkw7bx`^0BL~pl*`k=h9g#uo*>lI_XG^;O_P`j=GK5zjE1N3YDhwx(UN@MEWOoP|3>>UCaCoJ+A0-yX3o%U`7 literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..df4cd2580d4de157bc46797908da36de20cb608a GIT binary patch literal 2217 zcmbtW=|9x_7yk}kSLP;-{IW$EHL^uAM3!R6GN`dMW6M(Z>~pOlA$!RdW4TOWBKs~9 z-HXO@Et6#oBT0RSk8 ziUCXKtfB}!zWn`EUU`dTJoxyc7!HQa&q!w-}4ki>Fh7D&oByJ zo2pAr2A4aR@+rL@^{962oFS9Ng@m$Ryr9zQ^eJzZJQGt>Z!fR2infhmOt(6;&xV+& zXxkrjTL%ZqY+I14tLswW9vLSAAWbK0?kma4{$w(V{ryxGDH$0VC8e6$T7Q3ki4oio);NOO_S z<6p(1kB|2E_s7dEp2f#gIzs$DFaHjV#|*i3a2j%Qaxynhe_RL6B?bisa&dE;nwmaR zBNImzh%gzMXK``0i+AO+<+77+NQ#K~2L%yFM!x6s@$n&o*Jm}VF?M#V>+40ixqa}E zjX4QP$!d}pCZ`FlVAt%El$cmM?PKp88Od&qJ_XGAJ$?Grts!hJEOS6rRrOn_TP)Vn z(b3Vy=4^;U<^WV$nmjYJ*7@<{$E2jB*#I`{q+^ zTm4HGm-O`YNnUV>b`*QcL$&Pn>)qq~k&#-EfKEX98s?qN8&qCi9)aW~G2-1cGdPHR zgId`|?zDF@GBPqqmG=(z_sh!5<%PfmtM;Jp=6#^>&N;$>Vpi+n=Gxktb)}8QsS{vu z`1k;*yYZ3`SlxFPjY0)}>xXdiY;24uJ_Lio`v(UtkI1mo@9h;kui(VQ#YtXRXXl0e z?bWuyaSv4~DJd4n+S;0%o4c#4%bxk=on4Bs5)7JzD7|x8^Tv%_1xycCH0^H|>koDH z7Fiq|Kyn8J1gPXyRa9J-mp3I?3Eqv0>KgSxnwW5)8hB14-|V-i3!Fu!OF$qHaC{Gm zw9VdQa+a)yqyHGio6BGI^V@i5*HWYvHrCfyUQtm|T3Y)4eZlJI{{HL!)SE^|Mm|1O zhInH$Gy3XkWlc@-ej7JXV_;xleDUQq_u&U_Zh{$=mEPgu;h~|e(+$rOOYwN(=g)C^3qm7eK-m)pgHcsg6&uS1)r{O_w03BxF3z!9t8Bb2EG%x` zj9JA0DV_7MSSySJn}z+x_AM=efQ`Wb!mezZbGr&@fd|uO&CPq&PrwJ5FD|2V`_CsgANI~4lHIpW zMtP&s&FVfBByR0|Q2(Ods65Kon8(t2BVA)qI zu{%2By=5%!m3I+G%FUmmWP?)n4US_l6km49lSI|eYt4^&hZJc!N;^6_K{<&$lI#3G z$wP`>^|s==2VK4f~+MxlOAJHiy(s)u}Uh2F9i96>ZCI{=4Z%dZb zedSJCLFY83rOqBJBkyf@d#2)-=Z}s&f2u1G^T{(C#>?m;ZCA{fiPElBsTQ%53Pe`6 zJ;9DSfVYf(M2YAo@BnUQqwehj7R#-Jr>N-$I)assN{lVW{$HqwI1M#^IM$H}<#BXG zd`kRlPF`0n^8TVubdlu%I)SG71n0e4{TN^8(U3=?OFE~pb&h?gWN+>0z3>%*kaC4M zkdvn95UhoIq3;j|g(ieqTmD$_yw=73P&DKr7#^N(sglr5arpLK9Q|Sl&i#A6!*`z3 zkQ*v4zLTeWU%?$DQ}pITQGhbtZ28d4k(eubUQJBW>P$vk+xB$yhLO!74ZbKUocq0y zV!zOjmt1Xd_x*S)6}|QP$3`j#J`QiWJhy0J?iS7Lb@?wY0ScU(c?MIgB)VSm;5C}4 zxDUoQQSA17%-Ejr2>esD6vMxTw#6JS3e3AkeoN}|dcWbP^JuP_jJ7*&APNh!7grN@ zl@JZD5kjw+GJ@dk?45&SEWC6%y}K8`^HsNlX+AV$5~2`Bw)`!|lbY7`VPH)6!e+MF z?&Ut``|q7TeI4y7alTU2s($`7q$LK5OKU=l2%?Q&3sQ6>hW<*c3 U^7+Op&ffztHZVt2>p8{#3&E{Q{r~^~ literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..84d060bbfa971ff753037e851c99f35c8afd8846 GIT binary patch literal 2980 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 K5miPm_x}l-4KE=8 literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-md-ltr-Mobile-Chrome-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..d747d4b823e7f9b9d77d911f19284435e03f84bb GIT binary patch literal 1971 zcmbVNdpHyR8vjbaS_(;s<2F&qPLd*F8N!NO$B}E~60;&EO_L+68@a`7>$sQ8}^~D zkRXWj3y@u6A8=AtOB^I(T9Q<}AZ^4oP~Yq=L*{uylE$U2kulBligJv9fY(qr&IWqQoi9I&xjl z$1nx?2ZauZMWST%OZT04DG~!Z**$SfxYlE2^4z-gtX9Ud=)mdu9SZmF!uCy;<@-8a z-Ll;v>C^zH6M!V)g|iaiQKlp4(h8ObuOXb>zyR?-LOReN-+LY%ze2%{92F#pn$ctG zvzdc~gA4{EO=JZOWpAZqTBpfy7S`L_+c}*_K+?YPNPhqZFUiL9sE8H#_3VkL+S*#I z8Tox4?1Y{k;ptNuH4FR>&e~dXc-7X{me1#RZ+-aSj7FnFLn}Up8Ngsq2!ze@(-KKE z2A7MU4uwCzIG&xBGy8HHZ`L<=TM8K-7+5qBg+Zgq6p zAOHF|Comt5QEdqsBIf1gu~@9s)Kn5l6=82@$J`Rk*}C|2B*X>K{K*LPNbo(^THTH;!1G+IT) z%&!$*w@VFb?CaOK`H@qFLwN-Sv_xSX&Ckz|LLx;rc}GM<)S#-EyjN5zrC{H#E_sJR zmXSI~17)nvIl1@qT7+2x=Q8A(_A5G_JF^;YOr%n&-@;HRRB*61)aGCc>}qr5c(DK<7XS@R&`T2PQlyzK6m=GH$8U!bBL{|t{yisP*ZTX{2NSj*hgY(mJ(EMEd)LI#d{Qz?>@ui6 zG$Yf2)$Nje2pBxm3s-;a6?OTSpq4Q!J8-Pxb9e(sOb>K#Hg{gM~H6b|KlikV^cn>ea6#VzHfrNN=0Zb-c{GcvWf zSPKSoTpVVx)Kyfn(r}hs@fwb5X+faKG9x$~9}tk_N__Ur#o76S1Sl`bpXJ15YCFiJ zSs(6seZ_arIaQgbyxV5JUWt*B^FN0Q#dK9liVKYr#UeDn7jGx^e~R+IYIZf2yVYDP z0W?)7xnglMh%&${C2|)~gcgD%+rDEUK(2n@f1q17S#R(SryEPph;;SQJ@dYY0B~`2 zh@R&R_w-yeaLl8--w+%S|i6-!}p-#oYFm^GUC1U&?F3f-{&?a02h;|o9634v z4(}grQ_GFb*u$N#9-`6&l3lptn<7V>ZFBy4Snn6bpc}#}+Z@-HnxSf^BUl=vISt;q z{SQV%7W$SlmtBZz}7urgtWaF@}GD z{C}!1t~#EY^KTv7=7%vo5b1M+bnOf~a@~yqxBa-T1!zh-Jbn_rnYD$JyYvFJJl+?o zh~PKXw;VWMd0Rn;Tv)}}k^sjR6AVstRygbbSSX#{=**?WaigFg1FAXf^=s-C1nI}) zcYnU6>na-L&we3}OS1>?Q`kwr_ADAHJm2N0cqY|TLe(2_1MY@L*lLexyT{|&+PgOyuD_GAAAL3tQ2y0) n59BkKqt1zMdWRyu^EH3WmcbF)+wU*LUl=&pI@wSW0m**>)PcbJ literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-md-ltr-Mobile-Firefox-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..6ab72cb69ce170c0d9d92dfe5c1b49bd15610602 GIT binary patch literal 2592 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 literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-md-ltr-Mobile-Safari-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..8c32aa48598feb76a22c21d65d88693d27bb8679 GIT binary patch literal 1800 zcmb7FdobJi7XK<0eNZfEw{fe#G}?N!sjgP5NM%!L(p^PGsT8FTyGXrN;!*Xk&322F zrC60v>ydhdsCsN=X_rvkHj6|&sx}BkiJ)n_&N(w@K66f*qXS-Z z``+yU08PSqoHGC_$x3`yV~a9AMB&-Wr0#P8j{}?k^sgUMFHy++L~`29D^cCRmALd#loySx?FCv5$h62tD&T8v0%-fm9Qm5k!1icxsC2!6%3v~?%`}--*@vmAl$4aN z$;IUvL6e9QS5{JTv*+>YqN1X-v@}gk&B*sc6>qFgh3M7*{Bc2n^~R~Z`m@g>GR+Sd zqtWcDs-Ek|Pgq!(k-2aDEOPlb<2X;AV37}9NTf<~V-1seeSJmRBA=d~77B&k-Q7b& zLp&aDc6PRn1cGksmSKJjVR1zawdRPO3Toa)Ih7tG+J zA;87|*`ip{=rn|M5@4N?aVwlws}7R0y}f-*ObnGu4GXjAT~b0D8ym&14y8*EYHMrR zUacd8gM&h0K($*)NQi+}O8Zz)BYA167ZW_r%TK!sa=i5#sr(tV+^_@QV!%NPHiQ1C z+|9n)6d`VjIhbjD;snWrQNm);-x+6jZG&9P-%7%Cv5Sj~TguJN%{S*}RlFDb;LXzk zt=HEV5lQBUR_OeAmdCk_0ZBzgh1roK{N7#}Uv2AF`n!PIK@Et=>W}=Ag~Mw!P-N%ww`8if2FqaEO+hP=@>n(4t&QBvm!At6=0u; z&I13Fw>C}}98-I!26oz^{#N`ypc2nuk&5|H0QMvn2C0JNQ99!PchhldXiA$<-8Gyo z7CtJie{@;1u5P3;7UV>$Z>mIoKPC76wp$~dot=t1@B{vnOx-_<6!c9Uiqe6xW-P3z zw!QxRT)r}u~tp{+;b z=7`^&hIp~F%+vA(-xu|hlD7p2%S!#i!k@o-K(!uG=`@zk`g6p)B(S@*fv1;k?nxsX zZO_Psz45-07jG|RkeAERCE*RpHY{>e=Se00j8cVh`bv?=3k6^>e17jGxMI zaxx7`V9K`sNJGT_#N#{e3B?r^ zWoZ-a*bRxF$nKh~Qy_2~8HysG;(yuQ@lMXmoZ{$+q*6A!X|cRbG2B7`Ifp;el;>MJx=8KsU$LQ5{A%n0 UDXHy>^0fiNIR{)7*8ARn0FIwkh5!Hn literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-stacked-label-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-stacked-label-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..fe8af5c7eb47b07a9b6448083b48913ef1d734f5 GIT binary patch literal 1999 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 literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-stacked-label-ios-ltr-Mobile-Safari-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-stacked-label-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4c6e0e86542cf80ecb4d67bd53eedcccee4236d7 GIT binary patch literal 1960 zcmb7Fc{Cg77XK8rwYAlfqD)GwbSSk{Z7pdfbnMk&ES1(8f-0t|r3{j$Op{njY^80Q zD%EJTC^DTE!$YOXAZnW-T55X|Yw*(Z-Z}5Tcix=uobS8mJNMq-z4!cn=i=R6o%YKf zk_772}mH3=RD<4~nz)nt8(wJ!jz|sUg~$%?`l1kNbBZt3xeSs%1?#Ltlampg~Bv? zKDIB#HC{OV9P3*5T(U!53@n{nesTb3D)>H5$=8Il9gs& zTbmuFH*rU}F-62y;CX@!AbGo>^R9r_gWYBa_^eyYo{F(lFVK}(L&wYJ;wf?V^2I>M@?hpv`i7oF#AP|UeBf7Zr zFA=)7mKNtr0`j#OQ~W-5@-Zh8AHF!&YFE)epQxsyqURR<>9vR56B^AbX`yr&{YSW& zKp=<@gA$i+wuUxX{q}Kh`um6lcysFZW?z~02$%bh&=pS2Wov6|G8Ib1U8p9?^KZ8L z)b#fEVmj z*~CJS!^;Hnp}TuXQG2ZDI6#|3)^4qi47rs|31E zAV|&4&CbrwB^1iE4Yca*+qXO(k3=HX)zz`7*%Jmbz|=_dKoo;JoFt7P9Tc_N&_K3* z?fh?Y>on*hBGKrC)0z+5^%?dDWknS0=;&Z)X^13X>O%A8qAiMgIBd2Ee%iHtd|YJ3 zH=!;3XEP395n$=$#8ChybRAo?k2A-S+@SS7>y*Rme_Dy-lg~xtBZe)XHRN=e$NQqYYCnY2%aIYus}QJc zl6AGX<4uBZ(9R`j3ICH)XGcSOAOhx9k@wDiP0slmR{RkZ}!3$Yb`Bd@`#eO~=_5M%zeA^|(P zdfCpJYsnVa;D7nel}L)==`d{0{0U?dj(Wwd=fI1B$TZfY4F1Vm-Yur@8E| zNe9yJ6t79(aT~EO3xdKYznMW?e=<_+L+%#*X_%CjRAQpqB3P5(e?H{oJ9R=+>)?$n zPu*^H4cnERo&Dpht;>e}HCR?QV3JH5VzG2Vn6I0Sk+xxxhSDU?^LfvX-+9v}PYSUu zb^8p#)ZY!3;TMezQrTF4oS1t&x(hup)^1>S$ZcCblq+NLMeC2^ioV^xmD@?X{0-w@ zd^hcX{M;p(zI*Hx@u7(dbwN*2QReM-iF2!wV(w9jr`c2X98cYp;85c+GXwDtBvU#H z2kCcwloSb_)NBk{=i+Evwc%EGW~(wlN*tbQdx)NE9%8z`8+L-36dg+z7-xqK_Inv$ zrTtYgMwD{hup?)DmrFys*KBLGt9Tngn^!g;Oq+9R#?gW|eA}aUXpSHlQQYJ_8?be^ z@;;tw-oDGYlES%#ia(55GfV6Hp<9R zuC3-se`@zncX2*esZjlb2O73(edVwCDU}~0oZQ-M|G8r6W3C0)qQ_!XLGqftZRyp` zz_VpVTUm4F5K6f!J8}c5sZr#G$AuaZL X_#gQ>px)J4w0Z&Jyeq8EAvoh-Ul5o| literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-stacked-label-md-ltr-Mobile-Chrome-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-stacked-label-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..2617d536de651a56c0b0e877f3021099af241e79 GIT binary patch literal 1776 zcma)-|3A}<7suc0?pl#AA6>a&WuKI&S(io%yVsYi#^mBE^JVPDWHVfm2q{FAiii!@ zU8LBgX=~(53OD9^WY;z~%UHH13^QM@&mV9IUin z0BD{*N*+ZCIIl>D7H#z!L;TQ45B#$P0jMZEmg zBh~sv9c%(81qNuHHFO8%BOxy~0&4c3NST0Pg)!8F*WrwIoYdw)XtsR_F zVoM<@FSFL{><9_(ur@@t#1XsmwSo$7y7mLMS z*+&r9--_T}ElB!oI8k?e)wJvPXBwKSuFX*@A697_GdS7ZU0r)9bv4@=!<@?o182Lq z7j!=_`8~57M(2c@;E!2jn%Oqic<`C$>aa{LhbVu~0+kZ;s&Lp+H>LnFL>jFZ7jjDN zu3je2a~{Wy^p-FVbRG^uQ3IPDWV8dOZsY+gOUtvq&WRQ#9=!R5KGaI|%33S_$6(1T z!Vm+oV8>x6zxMSHB6CrbJY0FBA?RpbIP*%;4_p*J#uiDOZ$yy4-Cg81vw2y3&+^34 z@ZMfd!!AHr&U>~4@X8Pn0du^bnz3G(U;PCG9@zNn-`Cd(Elcp&BMA~SK{4m!SrsWG zLuvy$mG-@;MtHL22+&&x*V|m@#8jT=+I9J-c-7*G z|3JDG_FriI-#q_+8xNad{KsWq0VblPWKeY$68aCPa$c{Bw=OF8KunFKz?e@gh`QH^ogE>D~KhB6rFh`zcSOhCwrQr{6O|Mmt&s&R8D>YVw* zV+NFVfy4Voq@<@1JQ0CJWR?=ix{lzWlVLsmlo@H_8PrwcI9G)U!9@{deT=4fi2rz1 zUWN|g^V$B07vvYDs2?Ss$Pg~HY3yDcg5P6Jx~ z=}X6j!Up)zuwle<{3t&%#x{Qy6fnyTU)22I;K!OQAWWI{qvchRUfsd|T{{Rd+@tq8 z(`a=z`UtDnA!eat?_=Bjj3oOW2#*HNexj@+HvG`GiIctg8i%>zK4{xD6^fO-q-9nq zzuPRoQqPcCu@&|TcP|v+&X5$gUio9=?!RH_PtWP;-9V)cIX?DHuEMey zv%6^cUTJa%*^M<$eemE!ZXN_#qqvz`Nq9)`@hw2DJ5PEtXB@Ml*$DBzY{Rsfw%_Pa z|Jr=L!$8{JiJ!$>V;GPS6vX6J` zU$CA%7n^fuUfO4WKwF4=p(=}A7L>o!2J+9?!|#`mUW9*VQIl#yj2p=nEDh=Qd*@y9 ziK-U|=z?4MH>rA*}#v#A9NHNwvI3d&5ESy5vVJw3OSu6C-~3Be`fy*uG! zOt(%v{5~-=MHL_{#gzy*U-6Gz)xNc?*f?lLyY9q#8Bl@yP=DB3%6<`;KkHyd`|A2A upXyhbCYL~>HARA70iQRU!ywPWRuFV=Z3oDK!`*sez-bo`XNF_&wZ8!%0AacS literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-stacked-label-md-ltr-Mobile-Firefox-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-stacked-label-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..c25e9a40ce988d6a5146c108921c7b6a671620d1 GIT binary patch literal 2534 zcmdT``9G9>7apFW8KoGZ;wjsdy`({8X|l^s$X-3f2xHAYWa_a-2!qL^&Uj;;28LyTI7N_|a)OQ;00ujT2I3Z)mwyTCKuXR8i zV7`U|koX(VKLAT-vW_zzeC8-%fjE$HeSo7F26Mn!F2z#4%?-S`iEtp>RVqp>0FSm9 zz>ZP&V8^TD7nAZC^ybk6;<1Fq{wf3k* zoSCMIiEus3;SGNUJ#6ll-h}oId=_>O>xw-Yj*ToA>(=W)& zJ{uZbJ7OMV(;F5@T`Xxsq$^7TRm8$pPQg6!I5`GZ0`6=7e61iND5(1}{UE7&ckP?k zjMOo!`jnr?5wnkE@1t|Oe$|;!s_V-n_Asd_Q5KYtNH=bi@yT>!dkWHBrgOmvOiaob z23UopVHj!KYa0$+2Kv%!^JeRd)o(SVXC}>FJCpKMNGOtvZ3wD#S43p^yO5$~^@{&H zO3nLx>xMh8o#4fZQNAkT{Do%&ZnA5(VAmY{E3UUU%Ec~Vt(!^i{=iUOXMS+DwOt-H zeO6;?vDSNRlj-T&UtGQz5dRPtc%?qSs3X;i)fI%4uyFp?40Kcn18#mu9Tp$A6fz8qdiF6Y9fwt>Fh92sE$zXPlmJv<aRxfP48mX#U_mtbhhNYEtsd=h)Po2dK&B>i}k(L*y_Y zOvP8Ln9X|&SQMd{9pP$toq|rtMGehP9g6Jn>qj#;f66+&a_aT;?BqW+QW$u=qQ`=o z7C|p^WN`O*!hl2=j9=_X+7HJxvV~{IXx~dhdR*MEh~}lf@$s_W&$tiSSzo#cv4U70 zo@30Ytojq^m&<&?H#d@(ME4*38-jx@j{c>JvTY1YB7TrN{;8={U2Ffv+M^W9?Y3xQ zcMn6;Gr)FZgj?{+feGD-Li}+i#S+*YT(v%g#y|mO2F@;U#sZ(3eBzuPnt&XkNza{M zmR?xWlI{KcGI0IlHxlW_-rVD^%YLbepIS-lWY&$SfRHkpeN^NKh5Xgkj4^!qaL}St zEbb)7px0`kxAyJCW#f~vY-vu`WBSsh?K6E@5;1n}GL)drZKIiu(=VvWbPq8nt(@n5 z9oj|sm@mXxbk%NT`<*Z88@$0TPdy$|Qv&^(D{MmHmg!MC9W2G>DO!8Xl$Jr2IY`MtTO)eF?7sQMIxZQFxr5`r$1LMrHw2rQ zgi*&!ZYilV#vl=xCNF~BULZDVowCHRRljLYbR^}3napE36nks4#giewV- zU0fo{E}{l*$Q%llEw_8p6}m`YO|YgbqmpnP9i8i&pPp(q%6)BFmM-n1Bsy;=6A!|S z-ieIctS!lRPW8Lro@lQ=AHb;T42X~4c2@fh8ytCfZ0mA@B8^t{J^OY2s40F>xV6Oy zn-l}Ln-fknMyTYwI+F@3FObEjazn#+<)=kV^M(RPpAF4B?%UQVUc=7G^-%tPKXq*= zcwcrs&sw;?g*?7jcar&vxarVUPe;!N)fQZ`g!}n?B6ukaHcbl8t9^$~WL@O^t#m&Q ze8W~=GL$W@C}1J(ZQzXAf^Fpjy49Hj$QAP0VAA!O>ji~$)Bqz6#p7eibd(S-5< zTo3haGBw?-^(Ow-K0OHotN66(UP_Fwv&+4{uAzldg+R_%DEcr$2@2^L!iKH{nD^;C zb)e&v$6DZm9vskcgQ)3g6>7Me{wttkig#L-TOcT$6*^Np$?ngR&YG*yvZkPP<*mAu zGD<5?HI2hLz@tAN(xgngZyJfsJ`(q~M`zA0(?1}ksDqy)vIbFS&nuU63`#&V?dP!pMKjT1;cH7mW{p-MKxP177ptfxq*I z&ytOVCT7x7Of*Z*NPKFBW~X`z-#DB^^V$aU2@C)?S|a8r`t^z z84R!|GV4~<-o$suB3Q?L@enwP90ZF0P6PIrh`pX|xNB8xV~{nwQBrNzgki+GBt7?c zKM$*Fd-2*f@kE5T^v!5lTWV-D8*I2Cr%HU@7Tyn~(CM<2kWXAAQq4R^JZ(UY3!)eW zm|(|U(AY@=nhQ#n)jN~;0usGFV*ugcx4J`pF3iHHzJ#PlcXIdL&N5M$%*N1OM@P3b1++FsQ|!y zS&9E?(e)-EAVmq5#~ijxb{c7tG7JOEHT?!`t>X@ll-CMLj|XcPH!pAefILV zBuRb;TGwlorj}5ZGyc}yfkKE`OoA6(J-5Iqgsm;q=;(E0qhRfg)$&t4^xRjXM{>q^ zCpc#Wjo`Hw8|;bKF0-?W6njqOZlgA<(aLsq#Rp@wbnUJCT0U;euY~|^k+v&yT(3a@ zkQpA(y5t2i)!X`i0E_q6r8lC09AoT=HEuRgoK-ked29Om z1~%u-3F97zD2a(ozDgTq3Vy;cz~tz|yP`au_TW{`7_N6u4<2ewv28!d5_8LO_S^FPjA6SMH^yx-QD|~q{jyKN+zpou{AB+pVejomzF!SEV(gS;L|cK zS6gLHOIB0`DQ#&o7*mrm6_#hV|4U8zZk_8|zHnnAo&92HUSUF&rH12z5WSbPuUBe9 zH35J7ClmPFFyq$XG%|X^pVS-JCe?TMxGNmmr8FLnfB*VMBdM3XA3A`DI45X=HI9TP z%YzyawY)f7FESSKE!&rizY!!%iu0PAM~e5V(N4|reViax6YZlz$mYR_mLf&PTBV3u%8=61 zOsui*l!+xIO3WZcDz$3_y_s|FoBQUTd+wX>^St<-=f(H=etzdk{l(T?MDU^@001JE z7N+(9z>~`Dt@wGl+Ko3cCcYQ#hVN8UmRR6p53~;_y#2F zl^8Gh4C+aCJS#|!muEIQo7G&o^>8Nijne(cZWr8w0^D#;=@7?_OBdhG)rfw;Tonze z@xGVT)w7ZKJbfO*ADXCo!=g{zg7vhyr0a&zHQBA&@3gIi;Uf>2;hX;@Z6#?<7Sx}(Mbm#`){iB~GpdryH02J{5*Jsk8 zm5mu3o6RO;84N~YadGg>&F=1Q&B8HiDzJ3D50oTljA||`^O>o2nn2zLfX-g5C{XZR zizOiU^jlmv&60-1*&ahs8W$J$ zha3DIolYOd=dBSQ5y1%8cX64e)BSxT7?W>N#-$x1);2aCZIPQNoWp(O$v$%y5f&D0cp22! z-+$fEu)VUKp<4c9Z%n4Nso77SJV_E)R8%}lm>$kmJagtuhLhT>N9jU5@iI_T)1;!J z`Ep3Q&A{MD6^q4cZEc0m6G+|KdU|>q8X7x*erDk6>Z;-8iP_nx-+s#)T_xc0@7$X( zY9hkIe{u`}Kr&b-cKh#s`f_K019ye4u9Ts~&dyF84p&sJU5 z2Dkf34ueLchnt;oo9pZ1siqYr{D8*m?T-S0_r_m`jQ!e6m+oFmJq! zZ~*U`W0YgS!dMV$Zk@HRmOE6wW|kSbLTUZzwCU9LiZxz8e7Z{O3`FC9)=JC)=X_?f zq;)C{uBlt))ACf@qy&V{*;H|AS8(QMGKKTXi0@Bwd+bn2#+D$<<;eQ4^{;4I>7M=W z(jjH$N?^D;WwDyc`BFE5aZI^Yl$N{;|K@>N5vVRvX^(rVaRJtf3ogdT6mB?kA8Q(4i)gj%t2@K4XSe>4>nH^A|*?R~z$7LcFwshEOZL+#M>-Zh*v|n7aUBR&+ zP+vB);Bvk#Kbt|e^Bv13sD7e!7mD}zJf7^GgrG?5IPC1YcE0YIM`4Ti053tl2tG*I z>KWMlvPN&x3J-w0Y?3xAZbEJv*W3KH88^6?(v-6%}cy%ihbS_!MPWINB^VnbWD zA6Oz%tGgU(oRw#+kV!wDNB6g!EFIiOd`JoS3&H-{eq=koS!}QnB|YvD=yP}0#iNd> zVXd#2e66Gn!Ae(w8Iq0iE&Vi8$EdD=caCti*&7${zk5t`cal?t27-~_R>~qR=4%+j zM)E;n1#UP3YNXIsixENy3LNhl4>mX`lR{Uz+7skC94VT~rx$>?yK}qUpnrn^=v>tB z_RB%2m8jg=QO=(X?}>&cr`~GU4YBXv62!}^_e{vA1v}0oQ#OKtjvquvU^AJ8I^@PC zSxaVTu3f;+mF8*3FVXfKKJ#0THE}Y0wJ$?bq2tu&Q7H2uXEXb0Ha9HrW?`T}gK2#C zO776K+kVt4?Si>*9*7Ivu}DXDkUpBW!KLtBFfOmznwxRSkic=Q@B1m{JGWZ1YS+@v z#oqskbeR8jKjOgi0awE<+QL#KWRn= zAa!L{r1nTf3MBcC)2Z2*{g|s!k#r*-?-84=?^FAtdxSlL-gYt94%N1Mx+%A1ezl#& z*3UcYh90$>IaNeja9%SX9Rza(bme-Ny9cfQm~>y?>_apwP`xnu>#TG0k(cYZAB4`aJnz5H9TH!uuIuk{A7It9(2u1$4dxcW*5r{o Xnlf_T&~FgLz2X2%h^=Wo*gNrGB0cqB literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-custom-css-md-ltr-Mobile-Firefox-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-custom-css-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..fca86c70c139bb26229fb6440cd6060357bd2ef3 GIT binary patch literal 3661 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 literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-custom-css-md-ltr-Mobile-Safari-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-custom-css-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..24969919b61464725754ac0fb258f4beb8fe7dd2 GIT binary patch literal 2377 zcmbVOc{tQ-8~za*jzZKFWtxgX_ADu~Z$q}pAVjh=N-|Bxq#`FvlneUf6gD@AK&#|-}7GA`@Vm?*KZ$lo<-{tW&h;%8@V0qp*>UN#p$0|3yDt%d0&Oy1l`m=hvMP~-4dLkj`uBmQbKv6=h@AZDElN6mn8W`Tq0yD_WSK`QTvU*8Nk{f z7KFUuSG8v*+6Mqyqe@NzzLJ*?0Gc2bQQ)u;UI-9>02c&AOcexx_?H>LJyR!Jp!N8F zef9EP|= z)m3zr`=_x*5LD)355K>al@(oGUAh!l-RnkVWMouS&)ne95KK`qVyN!14Lixs!Erj^S?qtS;G`IzLdTURFax!_RtibMxNNXaoY` z?LE@|yF~l@_YIBz1Qv_6Jn?63Sico74fwHdlFNOES@heEFfqB;lK$}#QNfnPMie_J z%ZNcB5c%|}nVIunIvLMk(q=DmbFncoAgHsmb0Re@EiG>Lr-1LQsJM7|SXkqoUz2Z z4b#)pqjz+0$%BJ~Z@uQHhsA(YQ6v)C*49QJqaj_~+}!TmdB;g05{dEg@#*QTv}5Ok zU+||1sU(BL;k>=QH*^&g6y)?HGHp)b@pump5AB@Pc8;W(zxKc+Gk33u2!EL1Bsd%{ zCLxjCHIdb13LKUWez9LdLSLRzR#p(Qv9rB-8u|LiBBrvka<7DZYHI56o2z>+_UK%6 z%+*sn9(tFwKTOflK-XN__8Ns&{%`-dcEjH zP6z%Xp1k+x0kIh|OM`;QMmjEXJ;k(GvgkLZBP3F7XP|;YVQh7*y)9Djw843Uh|Q6h z8l#4%*52ugvxL^{Uyx`cSw(3;wX+FcAbKnZe8flI`08+iMC^sz0;u<|4c3aWF zQCsVYWzJs@LPkl+K}r4C3S+XN6=*=}O?!J=`)exDT7tb|YZ@n(kuniaPMJwr!58(F z@UvR>WW*>(cUM<_Q}1!)`p%euxU+LdD@?ADVIO`QOIJ?!a7MC)$vbD20QddaaRpk{ z#Mc96la556=BkYVhtj?hQ7F0(U3f6~)AINnxQ?onmDP85hr&983{0I50Pel}gn^Dm zVyLr0y=9@EI%*nGotxY)0xZn>Gt+J^L@92WIx-0ZOnI$W~@g|PLR6_u}1)3 z^Y2orQ@*wPk~?Irkg->x~Zuhc~UP ztrE~w^;&*YP6W*kbh4^bT~G%hayF8e-9*{dB7p-1?~!sAN3B5X%M>DkcKZTF&vD?j z4C_GH-kOe;j?l*&*Ek>Ak4FFadB2RTVjM)H_tD=sn5pOH%IEE9->1h0ts#dg?)b*g z&zT0v0b+=Zv92*!)};aHK&;$_?};?m8r_KxnO{;$mF-*-JB0wdGdyL+VCTkc1GUr+ z;UP2Ay<)yzyKV;K;N!eJ^uh)-t@F1w8Aqf8{e4*Kjh>1(rCeWAo*UzKx`bqhU;|S# z)0^gF5}ko0WyaKe{^sgreM?%4T$BEEA50yd#~>>2+TQhy#+KLvZ*;nLAoX8Izw&>k zel+5a!%EGt2jKe&(|&jE5J1=a*J1ooP2@X^=M%dH5D2=OrkTR`Mu4rQgGHs8?}NVq Dae`@b literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0595d4ad2bd0df8dba61d7981ecd6d96bda23cd9 GIT binary patch literal 2255 zcma);`#;nF7r@^{Mra>f8#82u8d_0=Oljq^<}%mFTnhQ7^ufqIQNE_qzCLqpR@iDW z_siF1Ut}z~Q!dRVAs?40xvPBNpFiOHd3?_guh;8`^Ej__Ugwq= zv$7}72%xYou^;MqAcMaYEoY-7H$&3@lB|&KAiu{SGxT4K&M3<66$hI1M$LYL zzW5!?0q#C}LIRpDzR?7{4qbx*rN5O+1H+IJ2_P^rP#iEYHxL7q)&E8 zVMf6mAG5u>GSd+kIW{^vT2xeY>P&C;J~6KjMHI@KNF!LOHY9Fw@qdtO+mjl%`S{v~)EuB5&`YD=+UK&&a~eP7@2Q*CmpsTr)l zq-W||v1j9WU!S+$!rjF+T-@#EOcL(9p_9kK`&`3f~(T8irG;5s{I(r+>fK zGpk&`8X0r`{CQj3o?O!?3$qiQeed6|H77`!nwrkd&8e!Y!eFpA3d8zmFVI@{a1 zwY6D!FB>hCWgkpWUkeWpPcR~LPvUT?_}uL5^2$mbEH=+JKR;hu-O0&mH6T2^hQV<1 z_EwKUA(69FQ~D+*H;yYJkVxCyGjj_IM0>c0;(-Ic>tJkEBwO2s(7Kr~ZoDu*zXv1b zU@WDj$F;PQ@Q7rBn3&j}J$u?HNMuH0qQv&FNVLVZd>Mf#B_%5xoAr$iWJ;^~^HM&axy7{K z*;w|cbhotRH#V}Mdd9}D`mTd^(7W1LEDdVDA>PzD(BJ|0RMP@{B?daIp*y)d5Iff1n4&ZgG0q*WO85u}*!Vx&F_0!~}cQU~|Jm6$@bMrYO zu|qEB6c8v*r_(X?m*wSpT3QxZhJrbbMmvcj`S|#Fc^wRyP7MTG!j^^i4cpw_rnUOS zpS`{ND+Y-~((;Nu>ixpf^!4?PkK2U%`ub{UXw=r%TM!6u zW>((4b7Yf8M56j{AyRank;YcLRTu)!WYia#J?2ogR`hU6d zzwtA^;IjN{RUZH{U(XtXbed$!{|&LOm|HqHq+QHEVL&30vZ940$pr<6X?d|7Q({ex z@C@k6kY^m%5qot&ARvGYkvRp%vOwL5+E_A;`xTu}1iS_&dB&f<&-S#mwCt>Z(chwc zWV6}b-8O1!tfi%;`}ZY1Jv~9XRcNeQ8XDGYEKfv5L?jb1Q>AqJZ+I3?A-SQUAsvZ@ z%P_2G=I5;;_E-k^GFOfb6-WTp1y1WZs`zMECnvVu5fGBfC{(70F>`5<=MGlJ(&A#^ z&6{8g56y-85krkVtgMnRX@b5noeNJ<&ONv5?CN?1(r*9$99=j>LQ+x^garJ;0R#dp z|1r$K!zz?jS!`a-tV`5^mz1fk0qf)7fPvYa_Z;GnNYD1E487j)k-1k`? z=ePObS+-IzbpnRIy0IY=iEy})+K?A#4<47+gqhX5*xB`_AaN*V<&KUHL$7V1iELKh z-rVdxRP3?(ZFCeJQ+iWm@Z3%j20PDc69_8BtO2u&@mxwhqrMt3*2Y~8+vHLwb2 zW;aLpAR&c9p%MBqnF~*8T`&#@yh<4BIpDD3a5$B2y!`w_slpq#ZgD2oGCzFy08#%( zRUM!2fuaAfmWHJY9k2}T(LxUAB8GmY;Z9jmQD8to@?~+reb{=}#{cTowCwC`7Apu$ z7{n-QT_C#gsQ%*)^Wn)7tvFM7=r;p7EV4H)pC@U+gW8cp9wz0AC z(l}om3IQjRvx^H-MWsvUawBUGP}+fuiA}R+=N(G0;yDZ3+VGL9mL)?2IN!qbADy2* zVN!+e6ieJ6e@enH*uyU3s%(?kGAMs`_KO1+AE(GWSb>Q st9U;{aB_QFIy)bJGb4)wMftk`@%nJ^L&@X2;I9C%x?n>nHut*sU#II4(f|Me literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4113a659079465d229d54cd156055c263bd5d76e GIT binary patch literal 2984 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 F{{hW{zH0yg literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-md-ltr-Mobile-Firefox-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..de1985cf689828d16620d201766287dec3494857 GIT binary patch literal 2556 zcmd5;XIoR*77j=;5Rwp(CI|^p8JeK93?+on4KYFlq|2oWf-=&SB0_{nM^L1f0hB5z zAiYIIg22@)(nArHUIK$4Wloqsa6jGWemT!sXYIAudiPrIyAPE_G~(kC;{ky{d?v>F z<{%Io6?n&;;tc-^eKH7u0*L^9b4st>jZ5h+B)b!plf&(fg znWxZYD6?M4%pkuuA6ZmK?sE3fJN*&yRPfgG=k@#)H$8KcLaqLh#wLf#Y}=e6=6-A2 z%1GrZrj4PU%N$#~KR^#9w1#5aBiRM>K%6q`r`ZG^ajfz3kRGrLDxuqxrdn`pEQ5C(8CH%B?YjuLv-lnnC#gu|pIQE2Plb6%D(y zHrWDIA0HTiUCGhH1qTO54{Yo*-K}kGP#BEp^z^iZ4ouFR1)!b5?_|6$VU$B*8As+1 zkQ;5wmTHgxagm_ZhY#6l@81^|6tExcZFen?yiQI{xhn^jCm}rsnM8m$I6^+4qUlGcylOo}5F<%M-YWc6Q>>Gg>i&gCwAlUaa2P zORaA$SbY2TEw7?tE2LZ;eEbgUdj|Ch?Y_jj3d1$5O9u5@q9BSv*D7gm%ML#5)}+|D_)hJXbG1cDRZyipMq z2^TX_QC0mwNsNnwl-tyrw*IxV^Q=hLiG71Wmva+&$6eB+g zj`gO~>3DztS|2k#f~2df>j50$Y^JxLMW4@Py#0QeH|>pW89su6zJym#t)%5lEKOYG+y+rkd!XJ;e(`Uu0Lql-F0Ha24S zwihXRc~X(_yY={)PeqqSRBs9{udHZt*j&AeT*7E-2ENddJ3jeF-Fh&!u1+mIBja#T z^0b<_uC6YqJ5iF6ABN~SpMd4Gk0$n+vXn{%l_!XpVarKNqX6Sp7=Cnk5(<3^^EpV? z4-3;Vy?l9NjxO9Bb|5Bglt63rUvl#F1mm~MN=xAq67kbr(X+eE?>#*|gVj|IEn>B` zwKa!8VbgPS6ksUDH3JAazN_O6)-^6*hvuLNvrM&VfV(0p9&m(!z>QnC;=8*IQ&UrW zm<^4My%)8PZ=QAywxXn-j~@+!gBwEfVxupN5JY?0e5%gb;9fyhFm#KStPt&&Vyq+^_{ zWw|wyp7XoEX@U#wMR7xeC=!WOQdf_zs=82oC0CKIgbsSm;>M4x2cL{P84Sk+F#>_` z?Mv&006c*k;JGM->OPQzR8%B#QS$es4dX~qu<~Pg$LB&L*sdt;JO5|n)9OB{M?$zi zHf9XOv0>tFZf+22|AcV)F&G{hN>uvL^`-y?8s7fsXRw)GIQpuk<)f@DaZHL5*|FT@ zMFJWssUsigsNm52^I4^rhlj4UwTQR3_tf+>(g*|S9<+od9Kk?O;ILoZuroi3Q)uMG z`uh5DR2g>S?tGu<@@OsZ32vx!q^fM~?c;lTjJE)xX4+_-Utz(1VS(2yyi-~A{qF6Pn||B=8Bp{@?g?Gsp(X{3Vi1(|m_uv|cy5vwxmFmF@n Vxhsj%dca>D$i#rCU#aKx@Nbe7Uz-2` literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-md-ltr-Mobile-Safari-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..c11f281c415776cae9676ec41fa7c5e252145ee2 GIT binary patch literal 1828 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 Yv7+~;d&?jE0z)8XM%IQek)D7356omJ0{{R3 literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-stacked-label-ios-ltr-Mobile-Safari-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-stacked-label-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..64eafdc9869c6f34eb67adcccfb787be5dd1a00f GIT binary patch literal 2002 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 literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-stacked-label-md-ltr-Mobile-Firefox-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-stacked-label-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..96342840fd4e0ad65c74f1b3a5e94fd3a0c12563 GIT binary patch literal 2494 zcmds(i8qvQ8^?!`F=d&_mMmi?N?uaQ9>!osw(3VIVM1AA{A6qFYsgNP?6U8vXc(gi zCHpdkvL%%@*|)s+K^4d&H;nLjuHv@t1uW- z1gH(z*}(U;fz&b>3?53vYyRV9vGC;~!NgvmeOcGQ>61Q&JvZU({@IG~a`i|;kg0sH z-ebObu2)@=&HWb#SaQSpZsp^SYf3D<0UvkRdO z4$t5h!)7R0vp{>#F^7bFeEF0=5^PqK?JbD&`aKbd*U{0teLJ(|p3lZ&CJPG-yAjjB zsZqi_8nD29^EVY#>ei#8qM|_tqoX%hOIRvA&Lun|6Z9Rp-v~o5H<8h@kc4W(oPjty z2Zw~|X&a>nGf|tHn*?X)%6DyTkxz;GY3H=3rl#`q^YKAJLHWhS1RM_MR=~>2nvj(x zQ&CZokdTnKpZ?K+As>&y05PU;x8ul?k`l_--0Es$DJdzN?hK_rlP!lIZm*VvgoSlP zpd?p&YHDioX*BcF($ZD+zP>)!y=`}4=|oARWExEsjzCx&G?&V_nnO&*0}ZwE3JZ07 ze0^JcdW^E^r8jZFp z;QoQwCA~gBtVOsnq#g4ZV84OwwI|@UwLfewf3yA87CkjNnR}0S*0p~Ly}Y;Msg~%q zvtD6iV?(gA%HiZ6jh2T$R(?+c4}%H8s(dseJe>WCW_(f-wxFP3dwgT@>%h3Xu_Lmz zwUv?_mzH)~!TC#EM~7Y`-*dY@akX@Ti}zDcD7oTg?P3MbhoyytMo;&$ivX75aMQM9U9vvmX@koNFy)pUH?oI1uyx$rhh!GsCYwk=4aot z8plsEjeNOux0LMcs^C!B0kb|_OavrLvbTV2e(O4?t`6jev&4Y7vn4`rzHPfyQ?*w{}!)7OO1B&$QG;gADwYN!#v?QX3I8$P28 z@r#Iz{e6IIo;7swfgE7Wv}R?xrv1}$G@qEbilRFy;F^19uJD1e_)TWdQ1dobCt42{ zUqPZ!1CvQ1@0$8pyP+8qkjfEhF3tK-B+`0XIDnRm zVKtBz6bm~XRj+Xr;+zWxE;l+?8tQ-r3}uLn@gZIDYGZdhgQfdyi6i)BlE6n`CFo$U#zZ#C z#nIk=iwA|mw8sde{QdXWF`~+D1Td2}!!@=ZJ$Ky+=2Ta0oR*gD`#AJ%O6$fi<)un}K|NXy><>u6@jB+y!O42YX zOU-*Elc@Ue4<6(!Rz>9&Wn=L__V)G(85zm4GW1+cbJVbZ-ywyCD`bbtZ#>5(%iNZ-ZjTvia2l@B-alD&7g38|{@I5at|kSK z=~f&*cI?>uu}1HO7*SQPYAF9mq)E|+JKj{H@9#3RRuBzqbdY%ziD!4^qobn}Km?AB zjUoB@C9f434()IwX~WPPYZ0z^A@N4FRbZCd;;mfmm5^18!J-JW)fQ;_0nVE=H9-Pos1=28U!jxW=(?IlJ8qPphp9t zcnmpP(_Ly(hW9NVb#AI6e(uIPf2}_WE{X(+OuL!r;wBNFl2WupkBp99=&i4^Y|_)y zi#&2d(O4XVS(AR0#_3Na7?xT?&iNc1z7hINhvA4adAg)>aW3)Yc&sk7z&=X z3Yh==Tx*PIH;){)1RkHTLq<}joRjj}6yn!Goh)l{yelngFB4-5?4UT663tp5@W z<2Woo^Cs}n)ZAQI5Af1uvpVNYFABxO@-YU=C>eDZb)f@wc+I#GD*4Uy=V=v3@Puar9bAL;8JL z1*Pk3-cX#gr=HRvq<-dgfRgkGj~ModJ&P^Wr3A+=t7Gw#6-_R}68K*RBWfGsD{)pq F{{<-JK|TNg literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-stacked-label-md-ltr-Mobile-Safari-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-stacked-label-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..6a643e6ab5f1c01be14d00af51e0c024421c165a GIT binary patch literal 1620 zcmb_dX;70_6#ZBRk*z2xxUe@WLa+)%5CwuJLWmMHK?Mek3UvVzjcf*x#U&Cp*#uc+ z6B#5x4UnXU;7|oc1PrSL0;qtJum%H?1^RV5o&IQlcHYc;Z|=M~_uTu=y*J6r(@k4r zn+5;?+Guy=NdQo~3*L{ZD}(#g6txdL)Xrnvkihz%tAtyb1sXP@k*@ft!dbytcO1#^ z^`dRoP@1nFQcaPt2^Hv&q&t(oOgakjL%nA}eJxzSQOm3_7My!!iRy3n=+k}mAv(hI zIbl0?^Pn~i!~pGWAiZ%UW#pPaeR(@^sJOVRQgTxe)wL93(!CV5`0>!|avZAs#75xN zeK=nah+o%51FDCiO1kP9st8l$W+34|4dU$?eLUX28{&!5;27s(j|yoVPI+PeEe&aI znIoL+$Srr$0|=kh5Kxzt$Fi0A?tD0=viD)<6k+d{U_2z~OIML&5phkv+Wp8W3tClE zQ^RJTsqQC^HXVRyR9qeaZ16&N;q>&rg3i>`RDnRi<#H>r#c7SQnC3g02F*7W{7ZJk zVdiXaC3a_4Rc-B@fD@@uC|;)-VLrc83M}c%$j;3jrx0ZYb0p-X$0eHuCGaBR)Pp zadC06U|%3N!*!LDO@<6({>k*Lu(G&FRU_M_ENk{Mu=KucEvOmzZs zR84iwH^w9GK>=m7B49J1#qqKLb0U>WGdXtKjt2z=5s7=!SxS$)t54U>L`2KEWqEWu z-P(`&RYFNh-5wv7?;I=THwJHj=O24=#u$y<9B)@}Fp>xok~cIpjS%*}!X`n1X=Y%1 zW?7jzI#WYav!kO!j}!Gkl>o7z^^A-(#jJ|=U1)j6j}QunHwux9;B`lo#J2gVa=z(ABbL_d3FZ23;ReeU%lQW z5J`w*&5G}fpHEeXudgW<{qkHT0d=gWPlaE3<^BEri_hS2xN-WIzA7AxH0Ehc1`EZX z6QQl81!k%BN~3es0>R5EUTZ%dDv?O~2M7IN`W%6A5|TK=&iEi&kqy#)F4PZsczARb z9#|@u685qQEs6CPyW2Jdu&=t-4bBgH&AW%TyN>7Efg$b2J&}K80P-RR^=t2R7z%}= z{$P^EQoYqO!MN%Gx&Vohxq~7jDd-o9ridrn!3Puy<&bfDK;3#pIPgaOh!e(UiliVGOVu%A49~uF hHUrje*8VPmRSmA?T?o#(1Obi-0FClQ)*dD#{sFF{3|0UD literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-wrapping-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-wrapping-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..ad48c13a1f5f9fd1ded9bb37e7625f008fed2d03 GIT binary patch literal 2619 zcmbtWc{r478-HyzwlIWaIVH59tWj~A)8vrdH&K)=p=8TCa?*r}GnSlV8p|OSrW%Bd zF${uIu~n{PW#^JlFHQ*Zth@d*Ao(_q$(=tFx`Fl$sO( z0J3)HtPubpf&ur=5K(Zwq?-sn07Rk@ws4@TSAzopk}G!BXWZh8=0`jo6}{DWbD43E zRUaEFoB8>BLp*TvUB7yzSlY>^`n}JmsHfP7ANNQWM~^2vn2Gx2|Dm!=(d~fseg$1) zRh1t{9zTC<;I2^SiU?*PzN{TfCHG#u@tStCYgOpo(|yuq8s=qHP_V2d!l)Go?wZgs zdjP;sEI|=?4{4GFuA@iA0W)}nD4_PlLIlWqUkKc_`Q`-ts=a&=c&zX*ZhrpXVoo*r z2uuH?rBy~Ca5}MvU>j5phjZk}kv-y36nWraR(*YaYnt34U0o81G+4A>2R%7G{e76a zbPYy(`Eqf7h`c9Y$1#mYqh)4hzS=Qxv%bFG7tM9t4WQg(V^<1Huc@YXc5R!#Dtnp3 z?Cox>ycs;D4iV|xlr4;?$!%Vc6a-adS^k@NK{HYbO^g6{6_o|~I%Y_!UqnX2)syu3sH__Hk8Cu|QBBP@%Z~f3AtE;HkLa0$wQsm3NzOcZq2Xk|w z;mCn1Z!ImYOD}Q*2U#puetv#UjS+FMd#{bH?U0ow;25r!73AmVx4bA22u4SJ1b=}E z)e?!!4<9ID1UEGWg}x6T{C`?mT^(yc8j>|NG#UdLxkKcL=&h=n8ZMXB3dNx14?r@;U>cn6mQnbRn!% z*}$VkNLgE&wy>~JgulAI=5M45M%ohW)zox?uxv!eh1kvjgdUDSAb>fbyej&iK7Fc( zvlo~?Y(lcmo;}ORGhF5IoSmI>I|IP3TE@+dyS(SbTxb~1g08-@`sJ6z!P>x0$!K=> zT7QNZ@Jttq`Bd$TT4MKn?a0>0*~4J4g$wMDg!3aKBZU?b%2Lf^M+aw}zK=GAgopPs z7?+7bvI9$QdN{9RWXI%!P&##f(($|b@uk{%^Y0^zNu{j)~6c99T!3EH!yHK zh{e2_sJK|YzOhl*!&W@x>@kA5m5|Wh-VVZt_Xs8EeD|)ps;a8Id?FQrKtQ3;$tWuP zi7Ua)&d%-zi3XzSov$U}8rGQu<~T{eCk@sNE&tM^sHjK-3iUr8R%Vg7z8u_N?!K9n zo}Nw$8BkVIYU}7w*}M1Fty_Ts0WvZ&-04d12J-_4{6}c9H%OQCaG*=2$IE2(FAd0Q zpK4gb^0$SN21zabi&d4+pUY#cQT**h(P(rT9{=!EY`T2Z+-Kv$h~LFGkwfMMj!*C3 zzyFhI5O<%%nn&*Z+}!fY3MrwdcWrZxn3tEAmX=m}Q3SwZZAuj&;^&_^lTMzB1BHga zQB%C<{}7)4>JxjADRhk41pp!Zt!=3)=KPCtL7{L^J!E#JOu4$aWcLgCq?|wh^fNCM z+BYt$p>)u~Ciy!hCt~@F@=$pAFy#r8W3a7B=@}XGAM5Jt1y#&xHv2SKp8<#VeUhws zoyf=HER-@mThWxAx%zz!waJfM7^Yqjs(cPG>HqX86^;HlFrc2*4)PHMf1&PhcS}o4 zo}uq92?;wqf>Fog#i^*MfD}|xGNaX$mY#jaln@t}hkv|50?Q?J?}Dy!N=iz^Xrr;J zOosANXvP~zHW%U&%{Rt;U@}1sC5DfjLL!k1uHfS2E-9O#KeuHLGSe@b1h5o-W^rU-#|#+ZgSAsFNn#k`7jndyU~9v38zjSZ!PwV+ex5v#+s4Mm zVq#(j3{aA>on=gplGK~ofojj(Ku>dh{fe@(wjfChB7uO>oEoM^<8ZjR-j#2C+IWPg zmse3?VTe2Znd@N+EUE8$W>%Iv!EL8RVf;naTTh3G*RsiE3-T7LHLaxN0Q{VTLqb+Du3T1;nMFtg47Vr_lh`O)czLjvBsI+-;yqxaXj z`mmw)`S79oo{o+*-%vBPhK2?z*v}MDJj@-yX(TS1w50(%HNfR^2daG~M3X@I>kNoH zeMScwsXk1V|Cyyw%;sLLUEO*L;-mT{pmSFT>Y3XWpD zLtdNzA~@4C($gm>ap zT&@v0%%p(N&0~`vrTnA~&uikfvDYuFiJEM1y~WfZcD-)>Ux7^oVTEU5^Iv4kOnk!4z#vL-@yvWsj{O2RPN z#=g$jvM)2gN1xyCKlq*R`JQvnbMAfabME`Tm-~9X?h|Kfe1nDg0y7N_4T~N^*PMoi zHV){UGSUN2Qd-<94GjmEp02iKpc6TRp_mKL`{n1UrT#|ICpobQIb>^iD~Bi7FN9Vc zCP&zeWDWx9Sg5g!Sn|h4BSmvK;Iya3^yPB0k?-_U!NQZoHAodTXr|Zr_wVsTR7+YD zXrgyabs=E&6H%&aVea^kH#-l9Fzrc;)e%ktx1zM^AX;>g$?M_Z)|&tA>jV8S|Ms=8 zNdA96XEY9%h@1Q#$iS3L!!&!A7Ngr6^(OH-4O6m~4;|Nke1dc=uS z4=DZqM$tgr>H{S7aOc&1{D-9<>H({Rm!D`n-dV&=)I1msd3C@O7xZWTE4h{^y}gWo z@kY_(+j9{EOW|h9fk&Zv9>y9IA;_i{w3+Lr{z}T;y3C_LH_pr5mH~1rY(H--c%{U= z-q)>uF()3hj2g0a|C$4jAEYfREvP9ya+!T~QcuaDAmc1eDUIN*0d zkqm6#)~DL%faJ*EZUc!~7MPM;h+x_|F{h@wv*%^CyeDeCvjz*ybTS{Ws)iOQmg^Kk zjnhTP8~g`|4+!PjrFGNHOT?BIX>Va+mJ3(=bT-8--WSLf6x|zm-~Zl-pHJCK01iGJ z5!C?Ga&*hmGHS(fh-{Jx1f#ZG0odHPS7&OU$1V`7hn*z+mj|(WFQA?DJ61*3U*~_M zZR5p@{Kz9#L#2)qMK)zAuOw_f+(oW1OK=pO<&)Qinq(G_nxstnh+wCzJG)*0g}_1^ z3qqlpd8Gx0^DXj?nVjPNOXWk#AV7?vm#;rd=9aMT1~TVw>$})@DS`&+Q%k>d`9>n+ zPBY03a8f>S9r?Qj-SQnLr=u3IDhcf4#}$Z*N<_pt`t)1thG35osNki)et0TRAsenm zGZ+5$Y6}qZsdK1shA-iZQcG#dAxr&v@tI--I2}WOR@lKkO-Lj?%X1(eOUtx${iTlT z`#_;ghsB+;HzPdBLAcggZEOG;vW0&R^GPV7F5`=e(CR2spK`iS=Cg;qqm-R#50Qx7 z`}~UcAwr>B*pK(|`fFYNAa9j%pLUjgU1!SCeuEoGyFx#nM=ICwwfuq7K#G*TUpzCz zRPC6r0qM#tbDdM^g=ki@({ZKq^vb4l4*!h~R9 zP0iZTZRGdG9%+8DAjIc$boRAgcpE3Pb(AG^|fYb!{7%igVKg&@nZoufHyYB1Bgr2fyPcw znXGg`?5y}rYdn90Mf6`Lx5uz`m9z)P&UID&)GVsW3YvfIyOft2JaTc68mKft9qbY+ zid20x-@VpCm3}bt5!)l(NP;e1t^0w-DM#lg`$?(3X ze%;=oCG6AD@h-8y?x70+^MS>QmR;zsM8T0EnYu~3(D~KzMmJ(}sClV_s>^Xq2EUSL zALY}%0VufzKxigB)nW-^vq#CRKE8?R)tPsQT)zwot08%4M#qF%8vt00&h2|ovhomYufK>a7Z565|uw)c=eUtd(&Oz3} zo=bVUqDP9cbKlbww2wZ++dC{HOL(X8wo3b~@Wfs9#VD@_!9Bp zJKQ0wVYLO%Vf;FTo~(CpnsoQQ)$z~SntfsNp$xZ$TZWx??x7zY->cvF!f(}4!jVhO z|AwypH(+ub{$E(hL7&5E`*Za;RUb}A8GAZ~Y``;cQ3);ih-@>L>}uu<|ERIk8(-bZ z)Oh@@sI2*dMbV9mLArOo<1XRm>_?4gR8gdxK*3>{Pd~en&!^&(O;0RId~wA@Ki@dR z6=1OnzT|<)U+-=d+1a^692-&ir_oZP-zQ~pr&z7|WLl0Yd((w45;7}m3ex>m;BgFF_;H?rV{ zKGGx2p@(%YR>>5hYAUV?dcpg7LW>YJqk>=AE8Vix!FE)Xc@Oy{VTX4JZGv3{7}c`) zrW{I;6+#T%b>xl%=w{`!hhm5Wz=Gm}gB7zC@gUaLU%!gwL-u?g6yq}L@wD!1pLU%> zGwmysIsW1FDc^SGmbCD0BrDw;Z>SbfM;Qt`pAP}j$lv(I03vHIAm<$A#1_$xp?^GR zw#P>ArF84j55+AQ%f_w(qBm1RUCB0hxiH^vGlIL&eza5nwoITW&oYE-8+yw&wgbQzlE?E!JoViUHT_Yqp2`G-9}T0Zk4i(O zZVEaZ2)QlvW|&vsw*vS#i2^e`(tv}1wJO&5yf;dN9v^J?*s#^yDd(z;2h{{ajoxrI zvKGZ!m)I?NelKA?+wIuk_lqnH1K(zu#Le9v^5&*#r&h?sEMz|X!uO$ksJSu~L13G# z@NAq(RJVlWtP9x-oXZGQY7aZf>mfVSVe9sQ2~28tJRmF6q^{brxH&^X&mq1!;)yn| zy+f>b!*r6>IZv41VzQSW5=ydx$WOrzBz5UH)emi>LM6+09m`H~xR8Zz_8=i2S8nXi zv{aFu=^~}jq|%$GX9Q4DZ3kH|5!n^DM;Q;(RX%s=SL!#g=&AgsW<5WGIc^9`yU7FZ_fE|htp1|{S&g@%CLRW zT@WSOTl1$yI|SV6Y@CAJ?52~(X|`^p=Og(~*|*_v$Q6Pm^>$S%VlM$LepF^tmgzxSZ*rYk z>q5Je%2^UOxFr~x$|JcYpr;5UXZfkQx^&8A4)x}M7A`Ol;JO;(`BsI^3rJ^C)jl!o z(1>#M$7H;x9i^Y6*7v%JUhn&S1$R^}Ja~6iYP9CTK;#9#rvv#WEA^+;pc8bT<@p(g zx{`#3MI`TthA$MimmzfLTGD=O!8A6y0?>UZ*+SeuL6xOf$(=?JSwvkmddyo0BKxqd z`JmFRXLhnRvLDd<1c}Ff z+Z^$Kh$Z&5%OC-J=bMg54+YO7PE6Ej%tlz!v6g{ode+S3!Aue?g>rnj!XcH-VNXX4=$(D4yaVU zYc(BLV}-)3qqLVL?hf~(*SH^Q$BU5?EFrRw+jvX>ZG8qDpZnlFwO$b2gh`NjInu)T z#_yfD7Iz<&^bDN~HVYq7FcSHDpY$E)n3=uf`dIj zjF#{2mrInS{#6I}{Cm6F+YZ=wG=-oW9KcsPj0K1&BY%ONX5r?AV9ad!QYiV^r)5U| zEBJ!ZYYVm3H0w)Z7)l@IJ_M(2^#f>SLFYP78(i9?vFmZU^Er67b{7Fxcw8*y62v08A7J>7?m!;OD!Pg zSTJv7ZXqTAGTcY}IEE2|d2MsD-+Tm!pDR$2iNMsMQCCxW>kY8H7)K!jyOKiq0iq6I z!78sP0V_jBoJsY0iaYuwo@go;6KgQ!T&C7FtSqp$0?DP=-E?f-Ve5hrR6 znORfyTbpoXE1MA+J3|Z&yu#!Pqcy>H`(Yg1F~}ow91uq61&9LqUoX(LxJ!@nQW3gS zu*&S|B-2X?@|2<2V;RXiXx{u7NU{JekyzK;$yJZ~xCKM&qpt9;tVKZdv1CIJf!rmv z0eiqX-*bn7QcSKAv_vqLk;Ve#4j5`l&>WswOXV!P9PtDp%z;H>CP{|uq+0ET;G<*T hX@7|6Ii@4FT+_7fiy5uAfZs$kdT?Xi(rd^k{{!3v@R0xj literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-wrapping-ios-ltr-Mobile-Safari-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-wrapping-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..42e54051219ac8d20592bf05c85b83b0074d609b GIT binary patch literal 2726 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 literal 0 HcmV?d00001 diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-wrapping-md-ltr-Mobile-Safari-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-wrapping-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..7baa724e31e2e3905b5bfd1cb255078fcef7ea84 GIT binary patch literal 2282 zcmb7`c{r5o8^>Q7HIzY3@-t~1jeQy7$l4ssWZ%X%B4f)?ma-f}j4fm&Sw_~QbBZtt zO@qlc@sm&@W0xgmEGI^aEW>%v@4C)^zkkmAT-W=)*L^+DbwAI2eZJrONw>E(6Bd#b z0suhR!rT-G0DP(7zb%v>eACqAX28#3A1gCc;Nb7^p!IPs06@zuOpTmKC10j4o9BKx zbeKydziF6rrC4q!9R**F4# zU)|0m9{}u&P$2-sNR|&UvbO+!5p_Bah(i8l=!pWw(#}pqNT_JVQbZ)nxBKqfKnoIy z6ce-KfrbEmM^uXLmw)z+S|C2cIc&B@7$TASY9-7Uk!U(nFFAx3}z_#`x;jXgSgO-pj(Asn>;>3yE?CkZu?eNY;sBqWk>{KlFf#nKK*8X{f;Xi>+65#u78}LcUBr+%*wO85)`D8*7>^v#b_uZCMG5{ zG&CxzaY^wJuBx%Iv8=3Yzlu%|H!^yeenMV>@|DZIO`*JqT*)UdvJwvo3k#c=n1ILh z^z_Wm&i1J<_@lD0urMJZ;q`0tY;*XTGpkEW;{yZSv}pj4wu_32^7VbVo}HJMckiAk zZ=NtEi^XCY4GpPjX*WqE9bH{TYVY8nLuX}HR@R(GR=1-99El;v@^%;=YIZg@!&e!X zYBpC!Yr$NlrKLx=C;%%-KtLe)!;4|AmY&|kfEgRzZlxFdqs~-DOen?M+xs+(*qJJf zDPH>c(b$2_<#IoLLSY^F6IrB);cDj%D-pozT|@BXt5>f)TS#IO5)x8U!3KU$bL8aZ zYdu>pd3ydG@L2$0;X1t3n>^Ig zI>+1M^pjtzpE>7hF+V>)G&Gbdur||vexH5O!6`nzeeQ;pRbMYvxwW;`(9lpyN@{m^ zS42wh5mFL?@U6!m-M|4}7Ih5`cQZ0H4fktuDNr=+9= z1_qXwmuGDA^Lbf32-H(mef#alL$j=aqJ8e1iLo(%S|`YDRb}Pt*RRK#qtG@(S~kti z&8Ni0{r&wXCMWgv^*IX*wl+3{GtREAM<9@~i3yMxaX36cOR}iqeDFkGe*VQnz#b&I zVhJ;o3;^_w)Z>6OR7ntkCRy?WNe}+f$iEGZNgTMT0<4*o_Ung$q}gP|{}r%b2o=P( z$zxRpTX>?-y5Z*5D#6xdHriyiE0slm_I@eCLv3q=^DfndN~OwV2TT+9q=JKk!s{e`WLmyy`fW(5FchA?42k}^R z;=3m`HJ}C*DKWd7U&iUggKZ8HOikv+l-iE6*(gz{-#IrjdB6C4Xf=(7G$4t>;h$z_ zz4Qob_mR3`pN46!V4~EU%#xDROpodD@gAT0Js$6X@u;5O25E* zfw#L=TwL7R(jp@xbBBXCVy{G1Q&W@4R?yMGtB9Xf=ReCm4&AHC+59ru&3npVILFt~ zXnh|(7|O^b_4s`yweG69u{%3uC{Y*({(1g)1=rlDoja@e_#}(Q-(m-#S=;`T+XtS2n4BvM{8#%E1?xR6P zVd8e!Gc#)|E7$gqft!K0*b#QV zuUs2>;!Pi4;2`L9IzmzsWUs<1Lhr-pzWZQcJC=;artDjhI%7B1VEkY`-DAAMseYlM z@yl$*dc2A#ba{Dsq{f|S(Cbe}UWhHAQiq3z!oMvJ68g`JBasAmcjatz>-*-YGkoZ|Q>QHeycv5$v_HqNQ5-=k80ZfC>`@T0Xs!23|@n@#_;!M#CM zK-ABBHK*?Je*p1YC$H$b-{MFCiF_(ujh4@Dt9ER_5?DZfN6hu>1Gon0O6?V+n?kCaBq z%QrrM9>AEOP$=);zju3A;iLqv`Mv?t3c5%@QQM9AS71Gfr5G^9=df~I)y0PzZByrt z9jmk6<9^qkbH8PyN@D?iFGVIp1ZQM|uDS^v#>2>!sE$VHLBDLivsXfSH|1H0YR6&d zu{tL=2l40FANr8P`0D-s)Z>NLE_giN(Q$)=HpGaZl3*EoPlD(F-#uU(St<998LhN= R0=&Ec7Fb);r^a4Me*xdNEd&4n literal 0 HcmV?d00001 diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index ce4560e0095..f638e0c3e36 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -2060,7 +2060,7 @@ export declare interface IonSegmentView extends Components.IonSegmentView { @ProxyCmp({ - inputs: ['cancelText', 'color', 'compareWith', 'disabled', 'expandedIcon', 'fill', 'interface', 'interfaceOptions', 'justify', 'label', 'labelPlacement', 'mode', 'multiple', 'name', 'okText', 'placeholder', 'required', 'selectedText', 'shape', 'toggleIcon', 'value'], + inputs: ['cancelText', 'color', 'compareWith', 'disabled', 'errorText', 'expandedIcon', 'fill', 'helperText', 'interface', 'interfaceOptions', 'justify', 'label', 'labelPlacement', 'mode', 'multiple', 'name', 'okText', 'placeholder', 'required', 'selectedText', 'shape', 'toggleIcon', 'value'], methods: ['open'] }) @Component({ @@ -2068,7 +2068,7 @@ export declare interface IonSegmentView extends Components.IonSegmentView { changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['cancelText', 'color', 'compareWith', 'disabled', 'expandedIcon', 'fill', 'interface', 'interfaceOptions', 'justify', 'label', 'labelPlacement', 'mode', 'multiple', 'name', 'okText', 'placeholder', 'required', 'selectedText', 'shape', 'toggleIcon', 'value'], + inputs: ['cancelText', 'color', 'compareWith', 'disabled', 'errorText', 'expandedIcon', 'fill', 'helperText', 'interface', 'interfaceOptions', 'justify', 'label', 'labelPlacement', 'mode', 'multiple', 'name', 'okText', 'placeholder', 'required', 'selectedText', 'shape', 'toggleIcon', 'value'], }) export class IonSelect { protected el: HTMLIonSelectElement; diff --git a/packages/angular/standalone/src/directives/select.ts b/packages/angular/standalone/src/directives/select.ts index 973990f5c82..e0dcac3f7ba 100644 --- a/packages/angular/standalone/src/directives/select.ts +++ b/packages/angular/standalone/src/directives/select.ts @@ -21,8 +21,10 @@ const SELECT_INPUTS = [ 'color', 'compareWith', 'disabled', + 'errorText', 'expandedIcon', 'fill', + 'helperText', 'interface', 'interfaceOptions', 'justify', diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index b194d5e9ce9..28da8d5882f 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -872,6 +872,8 @@ export const IonSelect = /*@__PURE__*/ defineContainer Date: Mon, 10 Mar 2025 19:07:22 -0400 Subject: [PATCH 14/18] feat(radio-group): add helperText and errorText properties (#30222) Issue number: N/A --------- ## What is the current behavior? Radio group does not support helper and error text. ## What is the new behavior? Adds support for helper and error text. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information - [Supporting Text: Preview](https://ionic-framework-git-rou-11554-ionic1.vercel.app/src/components/radio-group/test/supporting-text) --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- core/api.txt | 2 + core/src/components.d.ts | 16 ++ .../radio-group/radio-group.ios.scss | 12 + .../radio-group/radio-group.md.scss | 12 + .../components/radio-group/radio-group.scss | 44 ++++ .../components/radio-group/radio-group.tsx | 74 +++++- .../test/supporting-text/index.html | 207 +++++++++++++++ .../test/supporting-text/radio-group.e2e.ts | 247 ++++++++++++++++++ ...-custom-css-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3716 bytes ...custom-css-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 5424 bytes ...-custom-css-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3511 bytes ...error-text-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2344 bytes ...rror-text-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4175 bytes ...error-text-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2324 bytes ...-error-text-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3426 bytes ...error-text-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 5119 bytes ...-error-text-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3204 bytes ...-custom-css-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3709 bytes ...custom-css-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 5782 bytes ...-custom-css-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3418 bytes ...elper-text-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2359 bytes ...lper-text-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4133 bytes ...elper-text-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2360 bytes ...helper-text-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3363 bytes ...elper-text-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4889 bytes ...helper-text-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 3165 bytes ...adio-scale-ios-ltr-Mobile-Chrome-linux.png | Bin 4094 -> 3705 bytes ...dio-scale-ios-ltr-Mobile-Firefox-linux.png | Bin 4337 -> 4435 bytes ...radio-scale-md-ltr-Mobile-Chrome-linux.png | Bin 5677 -> 5170 bytes ...adio-scale-md-ltr-Mobile-Firefox-linux.png | Bin 5039 -> 5945 bytes .../control-value-accessors/value-accessor.ts | 7 + packages/angular/src/directives/proxies.ts | 4 +- .../standalone/src/directives/radio-group.ts | 2 +- packages/vue/src/proxies.ts | 2 + 34 files changed, 625 insertions(+), 4 deletions(-) create mode 100644 core/src/components/radio-group/radio-group.ios.scss create mode 100644 core/src/components/radio-group/radio-group.md.scss create mode 100644 core/src/components/radio-group/radio-group.scss create mode 100644 core/src/components/radio-group/test/supporting-text/index.html create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-custom-css-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-custom-css-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-custom-css-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-custom-css-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-custom-css-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-custom-css-md-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-md-ltr-Mobile-Safari-linux.png diff --git a/core/api.txt b/core/api.txt index c1d2b772d75..201c86c28d0 100644 --- a/core/api.txt +++ b/core/api.txt @@ -1352,6 +1352,8 @@ ion-radio,part,mark ion-radio-group,none ion-radio-group,prop,allowEmptySelection,boolean,false,false,false ion-radio-group,prop,compareWith,((currentValue: any, compareValue: any) => boolean) | null | string | undefined,undefined,false,false +ion-radio-group,prop,errorText,string | undefined,undefined,false,false +ion-radio-group,prop,helperText,string | undefined,undefined,false,false ion-radio-group,prop,name,string,this.inputId,false,false ion-radio-group,prop,value,any,undefined,false,false ion-radio-group,event,ionChange,RadioGroupChangeEventDetail,true diff --git a/core/src/components.d.ts b/core/src/components.d.ts index ac38d78837f..c458b851506 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -2315,6 +2315,14 @@ export namespace Components { * This property allows developers to specify a custom function or property name for comparing objects when determining the selected option in the ion-radio-group. When not specified, the default behavior will use strict equality (===) for comparison. */ "compareWith"?: string | RadioGroupCompareFn | null; + /** + * The error text to display at the top of the radio group. + */ + "errorText"?: string; + /** + * The helper text to display at the top of the radio group. + */ + "helperText"?: string; /** * The name of the control, which is submitted with the form data. */ @@ -7111,6 +7119,14 @@ declare namespace LocalJSX { * This property allows developers to specify a custom function or property name for comparing objects when determining the selected option in the ion-radio-group. When not specified, the default behavior will use strict equality (===) for comparison. */ "compareWith"?: string | RadioGroupCompareFn | null; + /** + * The error text to display at the top of the radio group. + */ + "errorText"?: string; + /** + * The helper text to display at the top of the radio group. + */ + "helperText"?: string; /** * The name of the control, which is submitted with the form data. */ diff --git a/core/src/components/radio-group/radio-group.ios.scss b/core/src/components/radio-group/radio-group.ios.scss new file mode 100644 index 00000000000..eff6fb0ca35 --- /dev/null +++ b/core/src/components/radio-group/radio-group.ios.scss @@ -0,0 +1,12 @@ +@import "../../themes/ionic.globals.ios"; +@import "./radio-group"; +@import "../item/item.ios.vars"; + +// iOS Radio Group Top in List +// -------------------------------------------------- + +// Add padding to the error and helper text when used in a +// list to align them with the list header and item text. +ion-list .radio-group-top { + @include padding-horizontal($item-ios-padding-start, $item-ios-padding-end); +} diff --git a/core/src/components/radio-group/radio-group.md.scss b/core/src/components/radio-group/radio-group.md.scss new file mode 100644 index 00000000000..dc36adc2a21 --- /dev/null +++ b/core/src/components/radio-group/radio-group.md.scss @@ -0,0 +1,12 @@ +@import "../../themes/ionic.globals.md"; +@import "./radio-group"; +@import "../item/item.md.vars"; + +// Material Design Radio Group Top in List +// -------------------------------------------------- + +// Add padding to the error and helper text when used in a +// list to align them with the list header and item text. +ion-list .radio-group-top { + @include padding-horizontal($item-md-padding-start, $item-md-padding-end); +} diff --git a/core/src/components/radio-group/radio-group.scss b/core/src/components/radio-group/radio-group.scss new file mode 100644 index 00000000000..3eceab4405d --- /dev/null +++ b/core/src/components/radio-group/radio-group.scss @@ -0,0 +1,44 @@ +@import "../../themes/ionic.globals"; + +// Radio Group +// -------------------------------------------------- + +ion-radio-group { + // Prevents additional pixels from being rendered on top + vertical-align: top; +} + +.radio-group-wrapper { + display: inline; +} + +// Radio Group: Top +// -------------------------------------------------- + +.radio-group-top { + line-height: 1.5; +} + +/** + * Error text should only be shown when .ion-invalid is present + * on the radio group. Otherwise the helper text should be shown. + */ +.radio-group-top .error-text { + display: none; + + color: ion-color(danger, base); +} + +.radio-group-top .helper-text { + display: block; + + color: $text-color-step-300; +} + +.ion-touched.ion-invalid .radio-group-top .error-text { + display: block; +} + +.ion-touched.ion-invalid .radio-group-top .helper-text { + display: none; +} diff --git a/core/src/components/radio-group/radio-group.tsx b/core/src/components/radio-group/radio-group.tsx index a8762b5f8a3..c3e1e4c0b0e 100644 --- a/core/src/components/radio-group/radio-group.tsx +++ b/core/src/components/radio-group/radio-group.tsx @@ -8,9 +8,15 @@ import type { RadioGroupChangeEventDetail, RadioGroupCompareFn } from './radio-g @Component({ tag: 'ion-radio-group', + styleUrls: { + ios: 'radio-group.ios.scss', + md: 'radio-group.md.scss', + }, }) export class RadioGroup implements ComponentInterface { private inputId = `ion-rg-${radioGroupIds++}`; + private helperTextId = `${this.inputId}-helper-text`; + private errorTextId = `${this.inputId}-error-text`; private labelId = `${this.inputId}-lbl`; private label?: HTMLIonLabelElement | null; @@ -39,6 +45,16 @@ export class RadioGroup implements ComponentInterface { */ @Prop({ mutable: true }) value?: any | null; + /** + * The helper text to display at the top of the radio group. + */ + @Prop() helperText?: string; + + /** + * The error text to display at the top of the radio group. + */ + @Prop() errorText?: string; + @Watch('value') valueChanged(value: any | undefined) { this.setRadioTabindex(value); @@ -224,13 +240,69 @@ export class RadioGroup implements ComponentInterface { radioToFocus?.setFocus(); } + /** + * Renders the helper text or error text values + */ + private renderHintText() { + const { helperText, errorText, helperTextId, errorTextId } = this; + + const hasHintText = !!helperText || !!errorText; + if (!hasHintText) { + return; + } + + return ( +
+
+ {helperText} +
+
+ {errorText} +
+
+ ); + } + + private getHintTextID(): string | undefined { + const { el, helperText, errorText, helperTextId, errorTextId } = this; + + if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) { + return errorTextId; + } + + if (helperText) { + return helperTextId; + } + + return undefined; + } + render() { const { label, labelId, el, name, value } = this; const mode = getIonMode(this); renderHiddenInput(true, el, name, value, false); - return ; + return ( + + {this.renderHintText()} + {/* + TODO(FW-6279): Wrapping the slot in a div is a workaround due to a + Stencil issue. Without the wrapper, the children radio will fire the + blur event on focus, instead of waiting for them to be blurred. + */} +
+ +
+
+ ); } } diff --git a/core/src/components/radio-group/test/supporting-text/index.html b/core/src/components/radio-group/test/supporting-text/index.html new file mode 100644 index 00000000000..9abc0e42d68 --- /dev/null +++ b/core/src/components/radio-group/test/supporting-text/index.html @@ -0,0 +1,207 @@ + + + + + Radio Group - Supporting Text + + + + + + + + + + + + + + Radio Group - Supporting Text + + + + +
+
+

No Supporting Text

+ + Label + Label + Label + Label + Label + +
+ +
+

Helper Text

+ + Label + Label + Label + Label + Label + +
+ +
+

Error Text

+ + Label + Label + Label + Label + Label + +
+ +
+ + List + + + Label + + + Label + + + Label + + + Label + + + Label + + + +
+ +
+ + Supporting Text: List + + + Label + + + Label + + + Label + + + Label + + + Label + + + +
+ +
+ + Error Text: List + + + Label + + + Label + + + Label + + + Label + + + Label + + + +
+ +
+

Helper Text: Custom

+ + Label + Label + Label + Label + Label + +
+ +
+

Error Text: Custom

+ + Label + Label + Label + Label + Label + +
+
+ + + + +
+
+ + diff --git a/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts b/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts new file mode 100644 index 00000000000..e33d0a35463 --- /dev/null +++ b/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts @@ -0,0 +1,247 @@ +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('radio group: supporting text functionality'), () => { + test('should not render top content if no hint is enabled', async ({ page }) => { + await page.setContent( + ` + + Label + Label + Label + + `, + config + ); + + const bottomEl = page.locator('ion-radio-group .radio-group-top'); + await expect(bottomEl).toHaveCount(0); + }); + test('helper text should be visible initially', async ({ page }) => { + await page.setContent( + ` + + Label + Label + Label + + `, + config + ); + + const helperText = page.locator('ion-radio-group .helper-text'); + const errorText = page.locator('ion-radio-group .error-text'); + await expect(helperText).toBeVisible(); + await expect(helperText).toHaveText('Helper text'); + await expect(errorText).toBeHidden(); + }); + test('radio group should have an aria-describedby attribute when helper text is present', async ({ page }) => { + await page.setContent( + ` + + Label + Label + Label + + `, + config + ); + + const radioGroup = page.locator('ion-radio-group'); + const helperText = page.locator('ion-radio-group .helper-text'); + const helperTextId = await helperText.getAttribute('id'); + const ariaDescribedBy = await radioGroup.getAttribute('aria-describedby'); + + expect(ariaDescribedBy).toBe(helperTextId); + }); + test('error text should be visible when radio group is invalid', async ({ page }) => { + await page.setContent( + ` + + Label + Label + Label + + `, + config + ); + + const helperText = page.locator('ion-radio-group .helper-text'); + const errorText = page.locator('ion-radio-group .error-text'); + await expect(helperText).toBeHidden(); + await expect(errorText).toBeVisible(); + await expect(errorText).toHaveText('Error text'); + }); + + test('radio group should have an aria-describedby attribute when error text is present', async ({ page }) => { + await page.setContent( + ` + + Label + Label + Label + + `, + config + ); + + const radioGroup = page.locator('ion-radio-group'); + const errorText = page.locator('ion-radio-group .error-text'); + const errorTextId = await errorText.getAttribute('id'); + const ariaDescribedBy = await radioGroup.getAttribute('aria-describedby'); + + expect(ariaDescribedBy).toBe(errorTextId); + }); + test('radio group should have aria-invalid attribute when radio group is invalid', async ({ page }) => { + await page.setContent( + ` + + Label + Label + Label + + `, + config + ); + + const radioGroup = page.locator('ion-radio-group'); + + await expect(radioGroup).toHaveAttribute('aria-invalid'); + }); + test('radio group should not have aria-invalid attribute when radio group is valid', async ({ page }) => { + await page.setContent( + ` + + Label + Label + Label + + `, + config + ); + + const radioGroup = page.locator('ion-radio-group'); + + await expect(radioGroup).not.toHaveAttribute('aria-invalid'); + }); + test('radio group should not have aria-describedby attribute when no hint or error text is present', async ({ + page, + }) => { + await page.setContent( + ` + + Label + Label + Label + + `, + config + ); + + const radioGroup = page.locator('ion-radio-group'); + + await expect(radioGroup).not.toHaveAttribute('aria-describedby'); + }); + }); +}); + +/** + * Rendering is different across modes + */ +configs({ modes: ['ios', 'md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('radio-group: supporting text rendering'), () => { + test('should not have visual regressions when rendering helper text', async ({ page }) => { + await page.setContent( + ` + + Label + Label + Label + + `, + config + ); + + const radioGroup = page.locator('ion-radio-group'); + await expect(radioGroup).toHaveScreenshot(screenshot(`radio-group-helper-text`)); + }); + + test('should not have visual regressions when rendering error text', async ({ page }) => { + await page.setContent( + ` + + Label + Label + Label + + `, + config + ); + + const radioGroup = page.locator('ion-radio-group'); + await expect(radioGroup).toHaveScreenshot(screenshot(`radio-group-error-text`)); + }); + }); +}); + +/** + * Customizing supporting text is the same across modes and directions + */ +configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('radio group: supporting text customization'), () => { + test('should not have visual regressions when rendering helper text with custom css', async ({ page }) => { + await page.setContent( + ` + + + + Label + Label + Label + + `, + config + ); + + const radioGroup = page.locator('ion-radio-group'); + await expect(radioGroup).toHaveScreenshot(screenshot(`radio-group-helper-text-custom-css`)); + }); + test('should not have visual regressions when rendering error text with custom css', async ({ page }) => { + await page.setContent( + ` + + + + Label + Label + Label + + `, + config + ); + + const radioGroup = page.locator('ion-radio-group'); + await expect(radioGroup).toHaveScreenshot(screenshot(`radio-group-error-text-custom-css`)); + }); + }); +}); diff --git a/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-custom-css-md-ltr-Mobile-Chrome-linux.png b/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-custom-css-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5f9e7dede93d20285ecfe4577f060cdadd61a93c GIT binary patch literal 3716 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 literal 0 HcmV?d00001 diff --git a/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-custom-css-md-ltr-Mobile-Firefox-linux.png b/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-custom-css-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..672e43129f95d20b53d25f4f4a2f5125221855c8 GIT binary patch literal 5424 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 literal 0 HcmV?d00001 diff --git a/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-custom-css-md-ltr-Mobile-Safari-linux.png b/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-custom-css-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..2162ada7e67b4c9a91950a89fb9ffdb42ebc647a GIT binary patch literal 3511 zcmai1cR1TyAOCTcRMo1MxV5#mST(C^H)iFgK@_!%*hEO}ixQ=@sj3Q6E46B+#zpPg zbz|0wnVKD;MT<9m-oM}HJ?A{%bN)Er^?W{`^E@Zzww395c0qOk0M0{i8NmR6DT#4b z1~D_N4Kintv9Y?En;HS9zh^;f=@Z6H6x2u`j(NE=kA+{b6$HLOtU+97T`{t$7^8(U zrkW1ki?`Fc_=0aYOE>S9^rV&}Drc+0zK$!v8iX4rk-Eq?{uzQd&G^|HjZ-Ju;SS% za3gj0-b!7f0e83SSh5K7zZFZ`Jhf|ThanVJO6d}4BLNf(V1aYg!B{>(&P`1B z)VoERV(FAax6-t0ygpR&_oiK}cnmWToN_%cYge6OX{R9B9LQ0vefLhtKP7ahQiZ-r zYigf0&EZjvII9Rv*vs0ry1j|uY5WIZj9Y#)>cWn%EsXA}+2~73O%Vl=((XZ^dr7zE zD>)xXJYMMozvk)tQoYiqID;^FOH8if+J8X{+nTF{7_?)gqcu^|2IHnSHOX!=@YL4i zsO=@Y1+^6mIL&4rYhiu>Blmfn$m_e>1op?isEgiV!Z7OyUnv zm<;tL{xF$snmG@?pwFG9>VJ}aIPk2o6lz$2T zTFhUxh8;+-WedNCp4Y^7sdk2x1eRnn;CgHs18uJTF@SHiW&M8GeONK%KyrTB5Hv~I z;_|7`ax(O|O^Z=;c8>aI9eddOa}u{HayLpTPNUOz$=8?epMd!Cq#GHuv? z$jPWtPhs6BT!z9(`pAj@VEE44S#OJvSu5sy2|O&y=Z>%R=WSI%z%1D}v*U1luj79F zcxO_e+QY_E3udA$fKdHJ8+ZZ27vN~Q~ zE$iw3p|{=s5KHk_mCVf`rdrXIg3%HF3lLw71E7OXl*$zKs)d|0Jn8vx*_f! zrMy#11DtDI*l2Rpz0szXv9*$eGPg|I-OlVi3;h<5X*oVO1dnU!DsXdJT-O^1{oqg$2> zUGM!ouKoGjY3H{)IQ@yxY?0ppXK|*BMqBgP?P+eZ*pL^=dcS6q%~tq2{SpsLgpA1{ zc{ZmrN4ueFZyt8A!~1?+}AF zJGx%{`F`?#l9%v81H@rt^~--oYsV~gB!X`ImP$n02B zo$DXj_~yJz__@z!wUU)@k*({IVS~*KrXV;GN50G!t2~=yb{{e5ulDI8QrfD5fYa>v zkF8nQf9bF$qZ?X2DkWY1w0Q(tw(IngRRye`R90H)wb5TZiSqR&UklLr{B3uTK|0zl zK?iQZcz8wF;T4 zRZbh$G|4nsp89o0DiafXiz<)&Cnk<F?j;!-nVKpO;gOuiymSqqEIYt4MG2ZPW(BSh1~+_jAg(m%Z#;srJYEKEA%j;x<@p zONSF@@{`Apm76W@eM-lJfGc$w~*)dNT~B@usN2MiPkV>q8X2*hYIS=vE-i1UzC7fVf|5 z`~0rxuNxzu`^#0nNb}a+B9qC_FgX9YMr9S1f2meXc(XP7p|`hpsCH{(qn-REJ>6bn zma)_M^{*+pCb$5-S3qon@Af*YQc5pwYT}opBf8&@u|iG{Kjm(=F{?phoAi1(0kVgj z8nSMNZJgrMAf5>V5EXVyD=TgfzSMhD9wJ3~Q|ggBxaW&ywTv$QdTt6GsDx<@gvAj; zT|yTr!Ql^z?VcST)Ykt<5sV@B4*GjP+l~5l(*BcBlPlQuE&pZ!rmO|ys2U2-;>Gps z?Cb~&3x})^DSJF{cQ0yb!TS1^8;KvjqN#7n%i4GIbv-TG-Q9ikr$!_O^Tw`%N~O-t z&FQzw$jG?$rUeBDe`FN(F6J(6B<~ytM?IO$$<8h-FaKb~e*KO&K!wnMrcWt4*?u10 ziin(U4<_)9modefB!d5+(b2O|S6q@LVNy7sE)`g}DHeJ;mR!tEyN)89W&n z92^`Pl9!i%sS)7h>bm?+FY$tu6{8MHsdcq|-TH?@Ly_nMv9ajy+cS7MTN7jBwbfOY zGiQ2wdUR z9UTn>o}NTeY-4UgvY0*PLH;#2eTozB)BZz?A6#8%s*RG z)fp!Hm!s37Kj#bR5Y3<5dba)0dMM+Qj}RlgvP9S2!giOgBpg4))6+A!>8^vr?1v8@ z3Qc(V$^C1=4aoBV6bk(VJ3l|4@AYgqeOyPOnN3K${c9*djZ_`*2j2)7-rv<}^!2AO z#pbSnMi!q)+N}S3K9i9D5-fuFV15J3F=6 zikU4)D;n1ma!}p-#5w&7sVwX8huRg(NXVVXV zx%6e@@eTF$nmRgcY-|pg+V|x^Ur<6g#~lP>S#x1}x-oFcfI)?n3sTYFXS`BUQo5z& zHPc%f8@K10RJF8b78Vx9#)9bU!>z5YN0fCbYr@|CzK4>)N?*oejaxE|)SbT)0>0d5 zJOvkhtZGYsHc5JvA)i?WmRl8lOuGX0h7g-l$5Y18r0aK zmioo3Swot4&<J=CT_QBrq-PMIXx_`ne>jnNC|><>Tl7BetbQC!>!67e%ky zP!^AX!|Utofp_s|&OL)T`%j9bI>2im2Cc)hKoNH~{bo{=l9NQ1)O+ycfQGycuLh`< w{3V6ZSX& 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 literal 0 HcmV?d00001 diff --git a/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-md-ltr-Mobile-Firefox-linux.png b/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-error-text-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..d5b7036b8df4b5efb3ffb6ac3d7d25699f47fcb4 GIT binary patch literal 5119 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 bBIEc!pbZ7TDN0ef00000NkvXXu0mjfHZ(a6 literal 0 HcmV?d00001 diff --git a/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-custom-css-md-ltr-Mobile-Firefox-linux.png b/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-custom-css-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..83665d55e58e9d31976efe3e7361577d336b5b9c GIT binary patch literal 5782 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 literal 0 HcmV?d00001 diff --git a/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0273116bf61f066aee2e303609d2571cc0bb00e6 GIT binary patch literal 2359 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 Q2RjeI?wq4_9m?;{zsT!yy#N3J literal 0 HcmV?d00001 diff --git a/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..8fcd29e304b191decb6ced4c433235be6ce1d395 GIT binary patch literal 4133 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 Msc0dJ?puWZ4}I>cZ2$lO literal 0 HcmV?d00001 diff --git a/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-ios-ltr-Mobile-Safari-linux.png b/core/src/components/radio-group/test/supporting-text/radio-group.e2e.ts-snapshots/radio-group-helper-text-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..9604e7e1fd71256812dee48d49b87c47f987544c GIT binary patch literal 2360 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 z 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 literal 0 HcmV?d00001 diff --git a/core/src/components/radio/test/a11y/radio.e2e.ts-snapshots/radio-scale-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/radio/test/a11y/radio.e2e.ts-snapshots/radio-scale-ios-ltr-Mobile-Chrome-linux.png index 475da30dda28e1cd76984200d1e099a60f4d55a8..74768be0ad772118e90ce50978ad2050025a93e5 100644 GIT binary patch literal 3705 zcmaKvXE@y5*2eWZLGb7;T1FRbwCJPPsL_I85MlK4j4~r43?UIDLGw2%z9js0xbDvtCJ2G5qJq z)v@BDaO%Iu^Q~di6BB6;X76N#)r1lurhU-x>}ms?eQ z{`|S6MOj*ZZGBx=Pp|f2y(gCwcdo}^=D^xvZ?A5-)n)KYB{?Q?)*fO1eIUJ2mcGEUGibe1ej$OP{i8Gij0B+MXCADcwM&7 z%c~5&vjy*k2yeV`OwD42@>@hkUcM60>wJLkh`Q2GwqTz0!HQ;xg27+~1qC^|iEE|; zaK(f2me$r%lWZ0yCfUcmATuYSK6jar;NZ>R77RvOGVAIM$YenWbh-MG9I)s zLQKknChwT|6+DwWv>UzILRdDn&H$BwP%VZ2ohfcRP`! zi*|erRrXj>e*Q1+GV|^Kp6$%m+f+`vNEeru4z2}m%xd}j*IJ22{az$K?_Uc{Pfw56 zD$pt@tE{xFoQ#i;4+scgM(8rQ!{O$l8Nho)rCL~6NOhbS>I*)ooHQ{pY4j)PS~L_D zJw90O!D6u_$k-nb!HXu{eAd?14vl_L3uZDCK}Hegq|3|8)6-Bg&B(||=ZLk8=g*&S zTM)Mqs4Z2cAgpWb1L}4{UYXDLPqP_ z+S*>dy6x+&sfonl)I)tw%JjYs4Uv_ACY!j^0B?S zxrW{K)jqCop=6J?y}q95#vtc}%vNGYtdNht;5_bdBJTA;#3hqcem$RL;6Damp! zTzog_L;lJ`<{ci7pD8p`zh-V2S_=$-+A%UQiBLsN*Er?B__mRLJmu}}Ettzoy`Y}l zf)aGI%RRV2WDo1kpzup}7#HFt3#-2+QY zCoC5a58ZzH_H?af%Zs{=?23ZnzihF*r4)Ss%-M-Ckvh#X{TYzwxV6JU{jfdq1fYl_ z*UKxvSzm>sF)wL05CtBeKu`TN`ufBco|cxTF+TAno_1bcs<^zInrkQnc?&@|wV>MNqt;i99Yn)i}xiJ|e&XSpX1 zqKHGlAaZhYii&JMccnR)B^fvkcmoc9NXLBq%e$Od>N;Vy=SQOv9DKY!oJ~th+ckKL z6XNGyKl?26Y;WG7&W)TZAuo?m2t|{TXa)z%&0uoWqLk4+h9)Mv+uL~SZa?|6CsWhq zr!G*{aM2Zl%EJ-+zVe)38#P~VpG}WlU0yCmyL)*3(wPz{`$CEmAn!iX*3@xDL3KLanBk!M-YYk>JUNe(Nm_?<2%v&$|X z5&*PN6A1URhkq}9Y-{@&!9*7w_4W=k?&k6d=7j;(Tg`~C zuZ4^{ySm~i4S3wo_6hWKEE4w525S$=opnKIV_|`Nans~+pjg)~KT#9r*_fQqVb?3O z%o8nVqI#+(#9$E-QYPQ|H+|*awV`*-da_fnJf^bd)p0$>?zc*L;ZwB0z z_cLv6ZSi+^&d~imbEgO=1878eQjGq!*ToB z0zQ+4nYr^}iaFTW$Y|vt9QXI8)lpJCXg#^d?O}7EM_3r-t$Aoj$Wre%V1w@p3Lc-G z;aR%f>NNO(mK+iiGCVv?h1!{^TUqWw^Ucwn1+m&!vsCeXvJ>C-+nU1`Ur7P_%hjv!Je4rX5%#z)41DPeA^PeT!m%Z|+)n(1EbQf& zm#??Ch?Ep1PW+2ooupICYFpfTQC@5RMQOy}i@TwWf7tuWxxT@~8Nd-|SAvRl=;Y+? z_VPuzqJFfAkcfyu?KGZA>C6nAqyT}m+PCU3tO9QbJGU#<_M7B<(_5`Yx9ARG2O!Go zAZtzMaMZv+e?MF03nX0zekmXPK0SSM=KUkNaYYJqn7zK8 z9ximuOAhFs04D&e#s8|m2*RrQN$<%MF$64ls8N(hH9X%+6hNAmwsx~)&Cy%6n{f7f z{nuA#b8~Ykx&jIKcM$&%Dk_=`8HOb`l_tVWS%Ygw7lK9Gii>c*!k;%ns7~C|!_!G? sUYgwJ>%WjU@=os!h$VvmpVSpYJT#8Ow1(>n0e?v%1E{G^jg|}QKaNiyssI20 literal 4094 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 QU_%emRMmr)E5DBTKjC*f2><{9 diff --git a/core/src/components/radio/test/a11y/radio.e2e.ts-snapshots/radio-scale-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/radio/test/a11y/radio.e2e.ts-snapshots/radio-scale-ios-ltr-Mobile-Firefox-linux.png index fd8a84627a4755cbd52e6aa2aec397a8533b7341..6d5593aede09b046921ef8752976d29d7e23ee74 100644 GIT binary patch literal 4435 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 JS8F;&{SUQnN!|be diff --git a/core/src/components/radio/test/a11y/radio.e2e.ts-snapshots/radio-scale-md-ltr-Mobile-Chrome-linux.png b/core/src/components/radio/test/a11y/radio.e2e.ts-snapshots/radio-scale-md-ltr-Mobile-Chrome-linux.png index 6240454fbe9a268cdebd68cfd8a011acbc17b8e8..01ba887bdc206740ffa77ba322c3379423bcd50e 100644 GIT binary patch literal 5170 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 literal 5677 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 diff --git a/core/src/components/radio/test/a11y/radio.e2e.ts-snapshots/radio-scale-md-ltr-Mobile-Firefox-linux.png b/core/src/components/radio/test/a11y/radio.e2e.ts-snapshots/radio-scale-md-ltr-Mobile-Firefox-linux.png index a9c83cfa0aae0cce150a3987c77ec957221fe646..6968c85969d77f55beab6584bb2899dffdc2a09e 100644 GIT binary patch literal 5945 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 b^H}76?Z3H0TSC)@00000NkvXXu0mjfIv>S1 literal 5039 zcmV;g6Hx4lP)jT9A?1)<_wqvDyU$V!z`#^0K-!`3{M3WP{AyRSx^B5vjS!@aONzB zSwV7A5Z$k_*51AeyR$Pql&SZ43ft4uQ`3Lt>Z$fuh9sqw11Sd*;lQlXQ*cGdM>Dzf;#uqZZ8 zmA0!TeLL5al4jKlnllA?LF`HgryL09K);dmWzg6KGHXHnMslM%)udO4IvKFn4PVGV zBT|s(&8l=@%7I`GpuIZ{m?agJOMC}z)4Yb1wy!0vOI9^wT9?!?W;kZOURP1MSjxvQ zlJ}?j&%<@2dN;~TtEV7OcW%mo7&rhx+xMO6slA&wsV-$*>Pg2PYZl~J1N_mGewVTl z^JMDus{TA$eSE*hMolG-x1n>YFri@vgk@don!s7HMBuJ$#C)0U z;Q|cn-oRJ~e)PWwd8baDWb)+6=J_wY@IpEB%rlGS_ey{L#EBE7YuB!Z4>fDnl+Qo^ ze1+o4(MKOGZ@&4aSyQiGz09Aa$WMbGwnI%R@6n(j%^kKzG<)fgIWp$$-*bkBY4ra+ z$amg(XL;+bw+vIRx#k+V=%S0lc$xkl!hvU=c}5OA@W3p{7cGh}f*c3)+qG*a2qLI& z-@Z~-Ru;#!Rp#&mc+Z1s%b;%c6S=1mT*Kzd;HMVm4fHI?=gpfZ_3H;Ota|n8(x5>D zY1*`@v~Jy6+P7~n#~ypEG;G)~u?H%4;xLfUm@z{-cI+tcz4xA=_3yp+Ua3|sT0XMa zwYt~aYd`tqljW|v?uz>sk>*Q5zKm^cde5j5WD7H$BQf0LA}<#K-+c0b)vJsy2;^Q1 ztXsFPTzTb{(z9nzK?tm96bACag9qoBa}y>^khX2xt`Lurf;`%5SRR@jANkz!c{vMA zT7$dX@Y3i5OY2pM0r-M^_0?CG+O=!v%u8|H?Afzr{`~n>xPR)Yr^+37+!5`qBzRRA z$Zx;>b~)pWGqNkdwBK>Z9TQwp{!^zQ&!1QJ$fQ9|s;o`#-*O`9_~4`aqaz51)KzLMQ`+f9D`^;h#x8*aFveEs#;(cVl#SA~H*q1(nX zZ3^;eY)lg5fU0rnw48-`naJ+SG3_z&3nkKT%pXKvuEWgordgp=6v(;pZMWT)la~7A zlTT!eEw(81SrQwcf;@iKuFQcqa@CZrDpBZCd25qECU?r1)T5oWS0QhuW5yL272*n% zoH;$GV1}|+a`aHqAph~lA7$Nj*UheZ)TmJ=TJ1+qKmD{k_Sj?c+H0@LPe1)6q+ixp zV-0E3ri~na_~CNgamSh5Yd-Ytx8KSwx7;G*#*GvHpQw2A=FR1xgAOu*z;)JHN5Vi( zpp7hnQa(+2&pr2?+;`u7^7`wq3(sGpMh#he?X_k1-FKIxjyg*A-+%vnmLEDMDNX+V z`|k_x7|-$j_utE`S+h)rWb@58mjezsKu$aDG?PK`BQKEu@y8!>_uY3JHx5D1oNKPR zrtGxSPIA&oCuLJ^p%0xIuw=;+x&QwA%^Jyi;1UueVtt1ka)?=9P$nozP2M778r$7u zVbSz%nY?x!O)6nQJvZ7;_u7<<3lR&*mo8l@tE{q0_TBNKd8saa`st@~$|np${dAc-cdqBKdiCnbJ@?!rH{5VTV4l1XkOSxwPB=kcdg-OWwe7Rd zJ|-0h@Qb0iK@M2XIp-WBpn`;1qehLSyu94RD7?r8IiT*)p@Z;_{fPJuF`Ly^TP=_! zUwrX}Q4&FOt+m!#^5BCH<_Kqd(xgC6z^z4(={f7S&0_b#@WI=c%`9dMh%3gczCDW(>%OC)-@x~hq8sN(> zzZCM-N>~O+@Mg`Lc`^tg(4|Wk`SZ^|v%jNF(Hv}Ka{ds)2e4~!(5o0GUyu`Q+;h)8 zjm4lu_FV*W(f5ERce60Ovqv6z#FrmrHV!`cVEOI0 z-?C#i*kA**zYwrk9ZI!o)iRdI9((LjWxk|9?rKY#O)9RhnwQoEdF9a~Z-&f;1mOU> zAGN+Lp^%* zFs8Um2#U=%+bk;-FxvnxWtIRM`rv~POz!^CM<30(JSxa}2Fy+b4}?3x{FKP*JrOKJ zhYmH-`QLwER(80<4m%jjg^eGD;siOxG*~te!s)u}t`pLpfJF(=U~MVbd2a}4mu!&h zZ@d%ui#g5nBKQ!XxJ~vPUP^#Du*h1rY?%e}cH3p@4ox4Y`g8Y*(v$^_Su)Xelc@!7O^Sz&rqc4F7JcMw-jk2lG6dL=6 ztcSV*?wklj1S8a{RV(@EqmKfY{PD*hXWu)fI*P^?qDg_gTIXf;AWA_&x5izkC3Z5* z%;Dad53d~lUn86OYw~Lcziy;6_l6ccLx^aRmkBfB^&Kf(tGv z3gldT%rVEv!w)}f<{?8t_CbkwivFDv<6CdNHIT)`ZHOi4dU+1`t+c#A4uJf~6$tt4 znS93-a^IpsPPCR_O}_NhQ%@OzK-5-&9dxa$0sHmqmu(yL^8dZ&Di-7j9Rg|)sWH}` z57E)4ZVEm*KrfV%06D@HO-ikTx>`Z&iVNhp2v=QomARF>Z-@a93y4ZsTeiEfyg(kL z$s1)fxz_;?QJ+z-ql9)=T$6QCWzf7$!4O(I6tVg!Fc!-C+;xf*i9E%?c5n zA3Jtz*c3$g$4GymjjuFysQGazn|UwiGf0@ySFm(M!l0y*>a z>C?yDlDLib`15!6Pf%VwY@IK@_@YVCDkTN-LIQ9937^~#%O2m(I~r8q%;(@i(!MES{zAc%-JtiS&HCX%h04BID<3*-oxi!Z*|uz>i4 zov$a@ipdS}|AiJ2VVT&ewiN;7|M}=T8cM6$h^}(HlAC7H4UIXkWuD|u(Y}6VpJ5=s z;)*NGNgoiUs9}|7j4Kx8=bn3R*3{0|df>iPfKhG>QJF^_K%o>D$Y;)+X@IQ7DQI(e z=|@R`9DoCKXz#uEmKR=lA$xmFZ6fZFmryB`Z%KiCMaYwLD1_g^jj`s*(dLw$YG5fy ztJ*~vVP$VpvkPL!03U7_W-5sC%5tpQ1gsRa|Z@fcfKS!ss#@84g@?-xpOfgFoM zTY!mjlMW0z{U!;JA92JHrd%0vEh1YWQjDYN$3pp~;x@7E|6b(>7}OkAEF|Sf}J3W8{|at5z6H2A&QxBy_Bf8&^~@F z4unvYx`L!ZzS7mMQ;JIUlKN5{>__z6CEFCEnoT#G*CxZa$6xmo9BdYfV@SP0Xh*c9 z9})1w$5V|TM=?zI?%hp>Ac*YhEecC0>WQ*x;{v%|B}gP&g|62#05B@p)U*%t$@3|O zVPD|tD23HOai_14JvK>p3EQi%W? z^~#1pnYwif9lXjFy_yrej$*R45;f#6zx=ZAaZQ}~VgoV?$XU024jf>mRF^c67g1)* zZ`wRVHX!Pez;S_`6rk20uzq4F0NEvK0MPX6AM-mk?iv->@orfw1uT@cQoG<1K;${} z*k-?ac+S=1T|#uhA&C64HuMQlR?J=^V?))OO-Y&S+{5iBw_7^>1iyPkQ;>r2`YoTM zrQ8hw=RQ+LwY8M=-A_QL)EzY{* z0y*7VxHa1RLsu6jGqDsJY~Uq@DgatdYUP_(kj|??1s8_v0Uysxp~@?-ykd^lvKv&$ zhz4RZL)d(`n8(Q4{xMHklys;qs zWXv_~GNQj%%`ROq+Ls=4G_xO};fcN?5Y*47l~b$D-0RTNMA~g&*<&bsBr?vIG_;|l z7?3kJO&dh1gPwzNn2(r|L8q&Pft25Ekmobr9)tOdz*Pby_~v$_iaVzs#sJtf!tK>H zW`mrV3&NPrJFGH40^q!du(n%x%X=k`5kxe+Abebab4`-wI`b2NYn?f*)vjpE=ZGeK z9>6|&(js%9BY&8ON;abP{3&f;JM{ZzI+uI26!TQXaaya(d^UyMoI=;pe*5j0GYnyX z>5g{6=R?xdj6wqn*J5r{i~*?i^cW;H!1N=`PasX4C z8g;i3C7)xIi{Yl%@y?j(91!7E4VQwv7;dN6uJj!613EtXumrwp%IUA}@yK$Cy>I{lKSNNa3~#xz002ovPDHLk FV1oEb*+c*U diff --git a/packages/angular/common/src/directives/control-value-accessors/value-accessor.ts b/packages/angular/common/src/directives/control-value-accessors/value-accessor.ts index 9c4dc7444bc..30715544eb2 100644 --- a/packages/angular/common/src/directives/control-value-accessors/value-accessor.ts +++ b/packages/angular/common/src/directives/control-value-accessors/value-accessor.ts @@ -52,6 +52,13 @@ export class ValueAccessor implements ControlValueAccessor, AfterViewInit, OnDes if (el === this.elementRef.nativeElement) { this.onTouched(); setIonicClasses(this.elementRef); + + // When ion-radio is blurred, el and this.elementRef.nativeElement are + // different so we need to check if the closest ion-radio-group is the same + // as this.elementRef.nativeElement and if so, we need to mark the radio group + // as touched + } else if (el.closest('ion-radio-group') === this.elementRef.nativeElement) { + this.onTouched(); } } diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index f638e0c3e36..cfa828e322c 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -1639,14 +1639,14 @@ export declare interface IonRadio extends Components.IonRadio { @ProxyCmp({ - inputs: ['allowEmptySelection', 'compareWith', 'name', 'value'] + inputs: ['allowEmptySelection', 'compareWith', 'errorText', 'helperText', 'name', 'value'] }) @Component({ selector: 'ion-radio-group', changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['allowEmptySelection', 'compareWith', 'name', 'value'], + inputs: ['allowEmptySelection', 'compareWith', 'errorText', 'helperText', 'name', 'value'], }) export class IonRadioGroup { protected el: HTMLIonRadioGroupElement; diff --git a/packages/angular/standalone/src/directives/radio-group.ts b/packages/angular/standalone/src/directives/radio-group.ts index 925f48182b9..acba66c60dc 100644 --- a/packages/angular/standalone/src/directives/radio-group.ts +++ b/packages/angular/standalone/src/directives/radio-group.ts @@ -16,7 +16,7 @@ import { defineCustomElement } from '@ionic/core/components/ion-radio-group.js'; import { ProxyCmp, proxyOutputs } from './angular-component-lib/utils'; -const RADIO_GROUP_INPUTS = ['allowEmptySelection', 'compareWith', 'name', 'value']; +const RADIO_GROUP_INPUTS = ['allowEmptySelection', 'compareWith', 'errorText', 'helperText', 'name', 'value']; /** * Pulling the provider into an object and using PURE works diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index 28da8d5882f..b25fd491b5c 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -698,6 +698,8 @@ export const IonRadioGroup = /*@__PURE__*/ defineContainer Date: Tue, 11 Mar 2025 15:50:07 -0700 Subject: [PATCH 15/18] feat(input, textarea): dir is inherited to native form control (#30102) Issue number: resolves #30193 resolves #29577 Co-authored-by: Maria Hutt --- core/src/components/input/input.tsx | 18 +++++++++++++++++- core/src/components/input/test/input.spec.ts | 18 ++++++++++++++++++ .../components/textarea/test/textarea.spec.ts | 18 ++++++++++++++++++ core/src/components/textarea/textarea.tsx | 18 +++++++++++++++++- 4 files changed, 70 insertions(+), 2 deletions(-) diff --git a/core/src/components/input/input.tsx b/core/src/components/input/input.tsx index 2a9b9ec34e7..c70b2bb4009 100644 --- a/core/src/components/input/input.tsx +++ b/core/src/components/input/input.tsx @@ -338,10 +338,26 @@ export class Input implements ComponentInterface { } } + /** + * dir is a globally enumerated attribute. + * As a result, creating these as properties + * can have unintended side effects. Instead, we + * listen for attribute changes and inherit them + * to the inner `` element. + */ + @Watch('dir') + onDirChanged(newValue: string) { + this.inheritedAttributes = { + ...this.inheritedAttributes, + dir: newValue, + }; + forceUpdate(this); + } + componentWillLoad() { this.inheritedAttributes = { ...inheritAriaAttributes(this.el), - ...inheritAttributes(this.el, ['tabindex', 'title', 'data-form-type']), + ...inheritAttributes(this.el, ['tabindex', 'title', 'data-form-type', 'dir']), }; } diff --git a/core/src/components/input/test/input.spec.ts b/core/src/components/input/test/input.spec.ts index 245e7dd492f..af9faac9f3c 100644 --- a/core/src/components/input/test/input.spec.ts +++ b/core/src/components/input/test/input.spec.ts @@ -44,6 +44,24 @@ describe('input: rendering', () => { const bottomContent = page.body.querySelector('ion-input .input-bottom'); expect(bottomContent).toBe(null); }); + + it('should inherit watched attributes', async () => { + const page = await newSpecPage({ + components: [Input], + html: '', + }); + + const inputEl = page.body.querySelector('ion-input')!; + const nativeEl = inputEl.querySelector('input')!; + + expect(nativeEl.getAttribute('dir')).toBe('ltr'); + + inputEl.setAttribute('dir', 'rtl'); + + await page.waitForChanges(); + + expect(nativeEl.getAttribute('dir')).toBe('rtl'); + }); }); /** diff --git a/core/src/components/textarea/test/textarea.spec.ts b/core/src/components/textarea/test/textarea.spec.ts index 5925a19c011..f1611a3e291 100644 --- a/core/src/components/textarea/test/textarea.spec.ts +++ b/core/src/components/textarea/test/textarea.spec.ts @@ -14,6 +14,24 @@ it('should inherit attributes', async () => { expect(nativeEl.getAttribute('data-form-type')).toBe('password'); }); +it('should inherit watched attributes', async () => { + const page = await newSpecPage({ + components: [Textarea], + html: '', + }); + + const textareaEl = page.body.querySelector('ion-textarea')!; + const nativeEl = textareaEl.querySelector('textarea')!; + + expect(nativeEl.getAttribute('dir')).toBe('ltr'); + + textareaEl.setAttribute('dir', 'rtl'); + + await page.waitForChanges(); + + expect(nativeEl.getAttribute('dir')).toBe('rtl'); +}); + /** * Textarea uses emulated slots, so the internal * behavior will not exactly match IonSelect's slots. diff --git a/core/src/components/textarea/textarea.tsx b/core/src/components/textarea/textarea.tsx index 3349f0c1a85..7764dfba8b5 100644 --- a/core/src/components/textarea/textarea.tsx +++ b/core/src/components/textarea/textarea.tsx @@ -261,6 +261,22 @@ export class Textarea implements ComponentInterface { this.runAutoGrow(); } + /** + * dir is a globally enumerated attribute. + * As a result, creating these as properties + * can have unintended side effects. Instead, we + * listen for attribute changes and inherit them + * to the inner `