From 5acf8ab60de4db1f2c9f27728c79f9c47c2969b3 Mon Sep 17 00:00:00 2001
From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
Date: Tue, 21 Jan 2025 17:53:34 -0500
Subject: [PATCH 01/13] feat(select): add helperText and errorText properties
---
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 | 67 +++++++++++++++++++
core/src/components/select/select.tsx | 67 +++++++++++++++++++
packages/angular/src/directives/proxies.ts | 4 +-
packages/vue/src/proxies.ts | 2 +
7 files changed, 160 insertions(+), 2 deletions(-)
diff --git a/core/src/components.d.ts b/core/src/components.d.ts
index 1bdfaa88545..a77c651c8ad 100644
--- a/core/src/components.d.ts
+++ b/core/src/components.d.ts
@@ -2755,6 +2755,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.
*/
@@ -2763,6 +2767,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`.
*/
@@ -7568,6 +7576,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.
*/
@@ -7576,6 +7588,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..48578689c22 100644
--- a/core/src/components/select/select.scss
+++ b/core/src/components/select/select.scss
@@ -25,6 +25,8 @@
* @prop --border-width: Width of the select border
*
* @prop --ripple-color: The color of the ripple effect on MD mode.
+ *
+ * TODO: add supporting text css vars
*/
--padding-top: 0px;
--padding-end: 0px;
@@ -275,6 +277,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 3b4ef84f26f..9c1d9bbd3b0 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`.
*/
@@ -983,6 +998,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}
onFocus={this.onFocus}
onBlur={this.onBlur}
ref={(focusEl) => (this.focusEl = focusEl)}
@@ -990,6 +1007,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;
@@ -1069,6 +1135,7 @@ export class Select implements ComponentInterface {
{hasFloatingOrStackedLabel && this.renderSelectIcon()}
{shouldRenderHighlight &&
}
+ {this.renderBottomContent()}
);
}
diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts
index 675c37bd1c1..09e05390a90 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', 'selectedText', 'shape', 'toggleIcon', 'value'],
+ inputs: ['cancelText', 'color', 'compareWith', 'disabled', 'errorText', 'expandedIcon', 'fill', 'helperText', 'interface', 'interfaceOptions', 'justify', 'label', 'labelPlacement', 'mode', 'multiple', 'name', 'okText', 'placeholder', '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', 'selectedText', 'shape', 'toggleIcon', 'value'],
+ inputs: ['cancelText', 'color', 'compareWith', 'disabled', 'errorText', 'expandedIcon', 'fill', 'helperText', 'interface', 'interfaceOptions', 'justify', 'label', 'labelPlacement', 'mode', 'multiple', 'name', 'okText', 'placeholder', 'selectedText', 'shape', 'toggleIcon', 'value'],
})
export class IonSelect {
protected el: HTMLElement;
diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts
index 7dd5812ebbc..4d25b54ea96 100644
--- a/packages/vue/src/proxies.ts
+++ b/packages/vue/src/proxies.ts
@@ -771,6 +771,8 @@ export const IonSelect = /*@__PURE__*/ defineContainer
Date: Tue, 21 Jan 2025 17:53:52 -0500
Subject: [PATCH 02/13] test(select): add e2e test for bottom content
---
.../select/test/bottom-content/index.html | 132 ++++++++++++
.../select/test/bottom-content/select.e2e.ts | 195 ++++++++++++++++++
2 files changed, 327 insertions(+)
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
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..b27b6134ad5
--- /dev/null
+++ b/core/src/components/select/test/bottom-content/index.html
@@ -0,0 +1,132 @@
+
+
+
+
+ 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
+
+
+
+
+ Toggle Fill
+
+
+
+
+
+
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..ead4a72ca8f
--- /dev/null
+++ b/core/src/components/select/test/bottom-content/select.e2e.ts
@@ -0,0 +1,195 @@
+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('input should have an aria-describedby attribute when helper text is present', async ({ page }) => {
+ await page.setContent(
+ ` `,
+ config
+ );
+
+ const input = page.locator('ion-select button');
+ const helperText = page.locator('ion-select .helper-text');
+ const helperTextId = await helperText.getAttribute('id');
+ const ariaDescribedBy = await input.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('input should have an aria-describedby attribute when error text is present', async ({ page }) => {
+ await page.setContent(
+ ` `,
+ config
+ );
+
+ const input = page.locator('ion-select button');
+ const errorText = page.locator('ion-select .error-text');
+ const errorTextId = await errorText.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
+ );
+
+ const input = page.locator('ion-select button');
+
+ 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 input = page.locator('ion-select button');
+
+ 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 input = page.locator('ion-select button');
+
+ await expect(input).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: ['ios'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
+ test.describe(title('select: supporting text customization'), () => {
+ test('should not have visual regressions when rendering helper text with a custom color', async ({ page }) => {
+ await page.setContent(
+ `
+
+
+ `,
+ config
+ );
+
+ const errorText = page.locator('ion-select');
+ await expect(errorText).toHaveScreenshot(screenshot(`select-helper-text-custom`));
+ });
+ test('should not have visual regressions when rendering error text with a custom color', async ({ page }) => {
+ await page.setContent(
+ `
+
+
+ `,
+ config
+ );
+
+ const errorText = page.locator('ion-select');
+ await expect(errorText).toHaveScreenshot(screenshot(`select-error-text-custom`));
+ });
+ });
+});
From 51e792069c25d3c2322c0de025b3d40967c7218f Mon Sep 17 00:00:00 2001
From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
Date: Tue, 21 Jan 2025 17:54:08 -0500
Subject: [PATCH 03/13] chore(): add updated snapshots
---
...r-text-custom-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2859 bytes
...-text-custom-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 3772 bytes
...r-text-custom-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2836 bytes
...ct-error-text-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2217 bytes
...t-error-text-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2980 bytes
...ct-error-text-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2205 bytes
...ect-error-text-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 1971 bytes
...ct-error-text-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2592 bytes
...ect-error-text-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 1800 bytes
...stacked-label-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 1999 bytes
...tacked-label-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2857 bytes
...stacked-label-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 1960 bytes
...-stacked-label-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 1776 bytes
...stacked-label-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2534 bytes
...-stacked-label-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 1644 bytes
...r-text-custom-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2911 bytes
...-text-custom-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4218 bytes
...r-text-custom-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2898 bytes
...t-helper-text-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2255 bytes
...-helper-text-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2984 bytes
...t-helper-text-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2244 bytes
...ct-helper-text-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 1956 bytes
...t-helper-text-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2556 bytes
...ct-helper-text-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 1828 bytes
...stacked-label-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2037 bytes
...tacked-label-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2858 bytes
...stacked-label-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2002 bytes
...-stacked-label-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 1793 bytes
...stacked-label-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 2494 bytes
...-stacked-label-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 1620 bytes
...text-wrapping-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2619 bytes
...ext-wrapping-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4685 bytes
...text-wrapping-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 2726 bytes
...-text-wrapping-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 2221 bytes
...text-wrapping-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4834 bytes
...-text-wrapping-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 2282 bytes
36 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-ios-ltr-Mobile-Chrome-linux.png
create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-ios-ltr-Mobile-Firefox-linux.png
create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-ios-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-ios-ltr-Mobile-Chrome-linux.png
create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-custom-ios-ltr-Mobile-Firefox-linux.png
create mode 100644 core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-custom-ios-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/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-ios-ltr-Mobile-Chrome-linux.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2118fecb17b24f6c22d23e11a84705c8e1334c5
GIT binary patch
literal 2859
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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-custom-ios-ltr-Mobile-Safari-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-error-text-custom-ios-ltr-Mobile-Safari-linux.png
new file mode 100644
index 0000000000000000000000000000000000000000..330d83ef72193c17a7479ccf3dd72d50daffe0d9
GIT binary patch
literal 2836
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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-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|D44iC-=Xk{oA%F4*~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
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
Wjo=F_7~%ey0Si+b6TFezAO8Vo8LZL(
literal 0
HcmV?d00001
diff --git a/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-custom-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-custom-ios-ltr-Mobile-Firefox-linux.png
new file mode 100644
index 0000000000000000000000000000000000000000..75226d79f27f41b491b3a20734f4de2e443ad603
GIT binary patch
literal 4218
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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-ios-ltr-Mobile-Safari-linux.png b/core/src/components/select/test/bottom-content/select.e2e.ts-snapshots/select-helper-text-custom-ios-ltr-Mobile-Safari-linux.png
new file mode 100644
index 0000000000000000000000000000000000000000..b7fcf6116b177aecb561cb81e7eeefd5c45de539
GIT binary patch
literal 2898
zcmb7Gc{J3E7yph|Nc0dxQcAY`LhsokOU78nHd(WbC0R;hA{jHbL`ZK6F?MC=eAM
zyo4-+F!qd0GiGEg8N2v-fB(+;{m$>+bMC$8o_o*v+n$EaW=fWfbtslqf6CBTOT`DOrAJvRB=k6UCnEmiL
z|9xS^E)Cb$XL5z^!Hx&k%vu8%vG&(edp-V4H@gO=GzWS!M72JEI!2MSz7)95?x(S_
zC;MA07z{?I)6bndhf{P$yQlTW#YhSEPSttOOi$0w&Pqy3`aXK3irL@WQ*Li&feY}AtX?IMF>cP
z30>}R_)t_7N1@d&O2xpkrl!Wl#pSKqOq2id4rG5h$fr2k+ZPlR43pyGxFMgP{l>-c
z3JGa0ETrXVV;J-qevhK9~y(17#rh%9cRM*rptiO)xC+x#pzWlhU_5;&w@Raf
zL?TUQazuIy$96i@dcgerDsRi#`1?22*B2BOH8wWBh>k|y5Z`ojPPDPLwY9e1py6B<
zof=>9=h?_h3&!JcIP@(TEZ#;w2#I``dGh2*9UYx$ens4mg#{~D*VWZkcyKT6XG@Fb
z>C*`{?G6Bn6KZJqbNAqi5tcjV{x-xA|j&i;L?a_TWmA$DdQQew^w}
z4h{|k0x>`$5fAqs1_uYHm`H;YT3cFFdM2l*+t<6#Gnve%PoJizryCd;#KgornZRDS
z>F(}MAP^w>`qF~1(9qE13$t;h0hIfs
zMB>=+aJ5ITAPIZiJU>5QQBk4b)R?6elGHtDZT=^%e`aQe#bVXf
z)`Arg#=(!~2o5sI(o#~s)AjNEwW#$40zr#JI|m$)2h#q~mlG-~EEIqU3JTV*e6Ln%
zDsQloPx<|#R+`EK!AyLZQdV9`YARSKx2ll|6_@(|BCyG5{uqTu=BFimpG
z#x${3zD0;PDmRUy@jeeWuXN=Xe3XKGb|f|^-6T}xA9fzb?wfAGtJA7I$H76_W!SRO
zlwxo53{UU7#rc+1vxEoE7ATmH*2y?W8`!soPj=l69MGWudU^Oh(Pqje
z-8O@)`0!4NkVBzE^qUxK@W`pW{BYK4Lu`bO))(|b#)F64m*q`_gA~ik^2^*!yJ*w>
zox~AM06;;pt9L=!snplT4aMe|+3Awh>a%icI-eyYTdI)ofLE;;ZxLpip5jQNM}<
z$lu=in>5s`G^~MS#I2SS{TY6@)&12e^qIA0Is%4+h7AYj`G=byR%H|0_db?8Ds2?4
zW@ebH=gcgNc;g!1irEC_Y-l}Sg%kIxnhB}bl`d~O`aHI-Nhu{id-GejGdEz!d@Q99
zyqo~eagWzD|A8*^*-(XYz*M`mUnKB?yzR2Q6xK_B|1%G&TGs%=;tz9B!cQ3
zd@D637#Vw`#o?Yt(rqvHwpNfv`C5xR%m_
zw=_I$5aF$iP5+`A^zQIz24hsA`%c_G_-Xe3iS3fel21{eDn=?wBIPce1i5929+Y_$
z_!mG5Cx21>HU)$WUy>5|G{AZHFc=DaU##^!ne@ErjM@|R=>6!|MRepfvuod<2awJh
zRVZB(va7cf=hc==lTFij;AQ6Wie9%g90gpr;B}EU*nxVadaNi+@6U8n?9dg<%RdJ2
zg9;@IlbV=+{SqolAtoOU=qppwHwQgdzCYZYs5Pm}s>l{RO1+Vh(Yc<^2&`N}AT5wP
z>^0lDas&$zG(nt0YX3s-6`jjGT=^Lc`TTxZzwQia8Wn!;&}sMD#}UWj;j5s?9A2yx
z_%4l@l5774Rlm%LZ+>b~22I?tEYl-j%Iqqlq~}>ii`_m`&7Cl}G~&z;biYYFq8ci@w_RVjdar@=
zZr!9Kl^Vb23&t>7ao0YIp^+bs_xxhb95{Y4sTX0&vZMpIL$1jP5D+%c^#K&Aw>HlS
b@cwi?xu%naTAa#1ev$#0fd#Y@;uiI9Wi6&K
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!eFpA3d8z