From c1bba3b5f0f6934d0ae15ffa1da8162ac30fbc5d Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Thu, 9 May 2024 11:54:00 -0700 Subject: [PATCH] feat(input): add soft shape for ionic theme (#29477) Issue number: internal --------- ## What is the current behavior? The input component does not support the `soft` shape. ## What is the new behavior? - `soft` has been added to shape, but will only work for the `ionic` theme. - Added tests ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information [Preview](https://ionic-framework-git-fw-6096-ionic1.vercel.app/src/components/input/test/shape?ionic:theme=ionic) --- core/api.txt | 2 +- core/src/components.d.ts | 8 +++--- core/src/components/input/input.ionic.scss | 4 +++ core/src/components/input/input.tsx | 10 ++++--- .../components/input/test/shape/index.html | 4 +++ .../components/input/test/shape/input.e2e.ts | 26 ++++++++++++++++++ ...ionic-md-ltr-light-Mobile-Chrome-linux.png | Bin 0 -> 4459 bytes ...onic-md-ltr-light-Mobile-Firefox-linux.png | Bin 0 -> 5013 bytes ...ionic-md-ltr-light-Mobile-Safari-linux.png | Bin 0 -> 3985 bytes ...ionic-md-rtl-light-Mobile-Chrome-linux.png | Bin 0 -> 4437 bytes ...onic-md-rtl-light-Mobile-Firefox-linux.png | Bin 0 -> 5018 bytes ...ionic-md-rtl-light-Mobile-Safari-linux.png | Bin 0 -> 3956 bytes 12 files changed, 45 insertions(+), 9 deletions(-) create mode 100644 core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-ltr-light-Mobile-Chrome-linux.png create mode 100644 core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-ltr-light-Mobile-Firefox-linux.png create mode 100644 core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-ltr-light-Mobile-Safari-linux.png create mode 100644 core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-rtl-light-Mobile-Chrome-linux.png create mode 100644 core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-rtl-light-Mobile-Firefox-linux.png create mode 100644 core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-rtl-light-Mobile-Safari-linux.png diff --git a/core/api.txt b/core/api.txt index ee9de029b9..bee279b382 100644 --- a/core/api.txt +++ b/core/api.txt @@ -628,7 +628,7 @@ ion-input,prop,pattern,string | undefined,undefined,false,false ion-input,prop,placeholder,string | undefined,undefined,false,false ion-input,prop,readonly,boolean,false,false,true ion-input,prop,required,boolean,false,false,false -ion-input,prop,shape,"rectangular" | "round" | undefined,undefined,false,false +ion-input,prop,shape,"rectangular" | "round" | "soft" | undefined,undefined,false,false ion-input,prop,size,"large" | "medium" | "xlarge" | undefined,'medium',false,false ion-input,prop,spellcheck,boolean,false,false,false ion-input,prop,step,string | undefined,undefined,false,false diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 8855cce9f8..08838a19d4 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1471,9 +1471,9 @@ export namespace Components { */ "setFocus": () => Promise; /** - * The shape of the input. Set to `"round"` for an input with more rounded corners, or `"rectangular"` for an input without rounded corners. + * Set to `"soft"` for an input with slightly rounded corners, `"round"` for an input with fully rounded corners, or `"rectangular"` for an input without rounded corners. Defaults to `"round"` for the ionic theme, and `undefined` for all other themes. */ - "shape"?: 'round' | 'rectangular'; + "shape"?: 'soft' | 'round' | 'rectangular'; /** * The size of the input. If "large", it will have an increased height. By default the size is medium. This property only applies to the `"ionic"` theme. */ @@ -6751,9 +6751,9 @@ declare namespace LocalJSX { */ "required"?: boolean; /** - * The shape of the input. Set to `"round"` for an input with more rounded corners, or `"rectangular"` for an input without rounded corners. + * Set to `"soft"` for an input with slightly rounded corners, `"round"` for an input with fully rounded corners, or `"rectangular"` for an input without rounded corners. Defaults to `"round"` for the ionic theme, and `undefined` for all other themes. */ - "shape"?: 'round' | 'rectangular'; + "shape"?: 'soft' | 'round' | 'rectangular'; /** * The size of the input. If "large", it will have an increased height. By default the size is medium. This property only applies to the `"ionic"` theme. */ diff --git a/core/src/components/input/input.ionic.scss b/core/src/components/input/input.ionic.scss index 3f75fc57db..6183016b21 100644 --- a/core/src/components/input/input.ionic.scss +++ b/core/src/components/input/input.ionic.scss @@ -104,6 +104,10 @@ // Ionic Input Shapes // -------------------------------------------------- +:host(.input-shape-soft) { + --border-radius: #{$ionic-border-radius-rounded-medium}; +} + :host(.input-shape-round) { --border-radius: #{$ionic-border-radius-rounded-full}; } diff --git a/core/src/components/input/input.tsx b/core/src/components/input/input.tsx index 84c58887fd..7d212fc1a7 100644 --- a/core/src/components/input/input.tsx +++ b/core/src/components/input/input.tsx @@ -246,10 +246,11 @@ export class Input implements ComponentInterface { @Prop() required = false; /** - * The shape of the input. Set to `"round"` for an input with more rounded corners, - * or `"rectangular"` for an input without rounded corners. + * Set to `"soft"` for an input with slightly rounded corners, `"round"` for an input with fully + * rounded corners, or `"rectangular"` for an input without rounded corners. + * Defaults to `"round"` for the ionic theme, and `undefined` for all other themes. */ - @Prop() shape?: 'round' | 'rectangular'; + @Prop() shape?: 'soft' | 'round' | 'rectangular'; /** * If `true`, the element will have its spelling and grammar checked. @@ -518,7 +519,8 @@ export class Input implements ComponentInterface { private getShape() { const theme = getIonTheme(this); const { shape } = this; - if (theme === 'ios' && shape === 'round') { + // TODO(ROU-5475): Remove the check for `soft` when the shape is supported in ios and md. + if ((theme === 'ios' && shape === 'round') || (theme !== 'ionic' && shape === 'soft')) { printIonWarning(`The "${shape}" shape is not supported in the ${theme} theme.`); return undefined; } diff --git a/core/src/components/input/test/shape/index.html b/core/src/components/input/test/shape/index.html index b8b27b9d68..04c75f0280 100644 --- a/core/src/components/input/test/shape/index.html +++ b/core/src/components/input/test/shape/index.html @@ -52,6 +52,10 @@

Default Shape

+
+

Soft Shape

+ +

Round Shape

diff --git a/core/src/components/input/test/shape/input.e2e.ts b/core/src/components/input/test/shape/input.e2e.ts index 5b700c606c..4f78c4a05f 100644 --- a/core/src/components/input/test/shape/input.e2e.ts +++ b/core/src/components/input/test/shape/input.e2e.ts @@ -112,6 +112,32 @@ configs({ modes: ['ionic-md', 'md'] }).forEach(({ title, screenshot, config }) = configs({ modes: ['ionic-md'] }).forEach(({ title, screenshot, config }) => { test.describe(title('input: shape'), () => { + // TODO(ROU-5475): Add the `md` theme once the `soft` shape is available + // in the `md` theme by combining these tests with the above tests. + test.describe('soft shape', () => { + test.describe('outline fill', () => { + test('should not have visual regressions', async ({ page }) => { + await page.setContent( + ` + + `, + config + ); + + const input = page.locator('ion-input'); + await expect(input).toHaveScreenshot(screenshot(`input-shape-soft-fill-outline`)); + }); + }); + }); + /** * Rectangular shape is only available in the ionic theme * TODO(FW-6098): Add test for rectangular shape in md diff --git a/core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-ltr-light-Mobile-Chrome-linux.png b/core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-ltr-light-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..eecbeb2817027d756576f9a256c7651bd8ba4439 GIT binary patch literal 4459 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 KP$)(|2>TbJi==V@ literal 0 HcmV?d00001 diff --git a/core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-ltr-light-Mobile-Firefox-linux.png b/core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-ltr-light-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..361f492869fc27e42b2bb4e61bf836ca1a3c1b9e GIT binary patch literal 5013 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-ltr-light-Mobile-Safari-linux.png b/core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-ltr-light-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..34abcae8802bd4645f41e72185e9f200faceda40 GIT binary patch literal 3985 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 Of>2Y^R4kCUc>aGJN7AnV literal 0 HcmV?d00001 diff --git a/core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-rtl-light-Mobile-Firefox-linux.png b/core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-rtl-light-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..25316cbca5127214bc0787175306a1fcb1e0a5d4 GIT binary patch literal 5018 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 literal 0 HcmV?d00001 diff --git a/core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-rtl-light-Mobile-Safari-linux.png b/core/src/components/input/test/shape/input.e2e.ts-snapshots/input-shape-soft-fill-outline-ionic-md-rtl-light-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a8cdf3e03762bc1f246f11b3f133cc87d5580e50 GIT binary patch literal 3956 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 p0N%OuWbW