From 7294e969bb913692eaf28e54860614f445132713 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Tue, 22 Oct 2024 08:07:36 -0700 Subject: [PATCH 01/14] fix(backdrop): remove tabindex for improved accessibility (#29956) Issue number: resolves #29773 --------- ## What is the current behavior? Certain Chrome and Edge versions (confirmed: Chrome v127 and Edge v127) would indicate that the backdrop has an accessibility violation: ``` Blocked aria-hidden on a element because the element that just received focus must not be hidden from assistive technology users. Avoid using aria-hidden on a focused element or its ancestor. Consider using the inert attribute instead, which will also prevent focus. For more details, see the aria-hidden section of the WAI-ARIA specification at ``` The error is happening because `tabindex` and `aria-hidden` are being passed to `ion-backdrop`. The `tabindex` attribute is used to make an element focusable, regardless of value. When `aria-hidden` is applied to an element, then the element is hidden from screen readers. This violates the accessibility standards since `ion-backdrop` would be considered a focusable element but not visible to screen readers. ## What is the new behavior? - Removed `tabindex`, this aligns with frameworks known for accessibility (Chakra UI) ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information Dev build: `8.3.4-dev.11729533091.1ac77a0c` How to test: 1. Use either Chrome v127 or Edge v127 2. Navigate to the [alert basic page](https://ionic-framework-3pvgcj4b9-ionic1.vercel.app/src/components/alert/test/basic) from the `main` branch 3. Open browser console 4. Click on the first button on the alert page 5. Click on the backdrop 6. Notice the error message in the browser console (if you don't see it, then use a private browser or clear cache) 7. Navigate to the [alert basic page](https://ionic-framework-git-rou-11175-ionic1.vercel.app/src/components/alert/test/basic) from the `ROU-11175` branch 8. Repeat steps 2-6 9. Verify that the error does not appear --- core/src/components/backdrop/backdrop.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/components/backdrop/backdrop.tsx b/core/src/components/backdrop/backdrop.tsx index 7d85b485cc0..9468f02526c 100644 --- a/core/src/components/backdrop/backdrop.tsx +++ b/core/src/components/backdrop/backdrop.tsx @@ -51,7 +51,6 @@ export class Backdrop implements ComponentInterface { const mode = getIonMode(this); return ( ); } diff --git a/core/src/components/alert/alert.tsx b/core/src/components/alert/alert.tsx index ca7efa30fb9..06348e8c065 100644 --- a/core/src/components/alert/alert.tsx +++ b/core/src/components/alert/alert.tsx @@ -757,7 +757,7 @@ export class Alert implements ComponentInterface, OverlayInterface { > -
+
(this.wrapperEl = el)}>
@@ -779,7 +779,7 @@ export class Alert implements ComponentInterface, OverlayInterface { {this.renderAlertButtons()}
-
+ ); } diff --git a/core/src/components/loading/loading.tsx b/core/src/components/loading/loading.tsx index dac4cc5fafc..785f221c208 100644 --- a/core/src/components/loading/loading.tsx +++ b/core/src/components/loading/loading.tsx @@ -356,7 +356,7 @@ export class Loading implements ComponentInterface, OverlayInterface { > -
+
{spinner && ( @@ -368,7 +368,7 @@ export class Loading implements ComponentInterface, OverlayInterface { {message !== undefined && this.renderLoadingMessage(msgId)}
-
+ ); } diff --git a/core/src/components/picker-legacy/picker.tsx b/core/src/components/picker-legacy/picker.tsx index cb6f1ba2d9e..6b267823928 100644 --- a/core/src/components/picker-legacy/picker.tsx +++ b/core/src/components/picker-legacy/picker.tsx @@ -375,7 +375,7 @@ export class Picker implements ComponentInterface, OverlayInterface { > -
+ -
+ ); } From 93364b93c43e38786d98a2c417a3291fdaae543a Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 30 Oct 2024 16:39:42 +0000 Subject: [PATCH 08/14] v8.3.4 --- CHANGELOG.md | 17 +++++++++++++++++ core/CHANGELOG.md | 15 +++++++++++++++ core/package-lock.json | 6 +++--- core/package.json | 2 +- lerna.json | 2 +- packages/angular-server/CHANGELOG.md | 8 ++++++++ packages/angular-server/package-lock.json | 8 ++++---- packages/angular-server/package.json | 4 ++-- packages/angular/CHANGELOG.md | 11 +++++++++++ packages/angular/package-lock.json | 8 ++++---- packages/angular/package.json | 4 ++-- packages/docs/CHANGELOG.md | 8 ++++++++ packages/docs/package-lock.json | 6 +++--- packages/docs/package.json | 2 +- packages/react-router/CHANGELOG.md | 8 ++++++++ packages/react-router/package-lock.json | 8 ++++---- packages/react-router/package.json | 4 ++-- packages/react/CHANGELOG.md | 8 ++++++++ packages/react/package-lock.json | 8 ++++---- packages/react/package.json | 4 ++-- packages/vue-router/CHANGELOG.md | 11 +++++++++++ packages/vue-router/package-lock.json | 8 ++++---- packages/vue-router/package.json | 4 ++-- packages/vue/CHANGELOG.md | 8 ++++++++ packages/vue/package-lock.json | 8 ++++---- packages/vue/package.json | 4 ++-- 26 files changed, 139 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 875825ea573..a6e49112c02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,23 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.3.4](https://github.com/ionic-team/ionic-framework/compare/v8.3.3...v8.3.4) (2024-10-30) + + +### Bug Fixes + +* **angular:** add missing 'compareWith' input to standalone ion-radio-group ([#29870](https://github.com/ionic-team/ionic-framework/issues/29870)) ([47ba703](https://github.com/ionic-team/ionic-framework/commit/47ba703a57d1ca506f943f6b790d0bf7583d79cb)), closes [#29826](https://github.com/ionic-team/ionic-framework/issues/29826) +* **backdrop:** remove tabindex for improved accessibility ([#29956](https://github.com/ionic-team/ionic-framework/issues/29956)) ([7294e96](https://github.com/ionic-team/ionic-framework/commit/7294e969bb913692eaf28e54860614f445132713)), closes [#29773](https://github.com/ionic-team/ionic-framework/issues/29773) +* **input, textarea:** ensure screen readers announce helper and error text when focused ([#29958](https://github.com/ionic-team/ionic-framework/issues/29958)) ([5a73145](https://github.com/ionic-team/ionic-framework/commit/5a7314553a8def87bd19275640c92dd72a6ef1a4)) +* **overlay:** hide from screen readers while animating ([#29951](https://github.com/ionic-team/ionic-framework/issues/29951)) ([cb60073](https://github.com/ionic-team/ionic-framework/commit/cb6007363a8d42b5f126945427c2bfc3d7209c21)), closes [#29857](https://github.com/ionic-team/ionic-framework/issues/29857) +* **overlays:** do not hide root when toast appears ([#29962](https://github.com/ionic-team/ionic-framework/issues/29962)) ([322d7c9](https://github.com/ionic-team/ionic-framework/commit/322d7c98cf6613df0b0db3f119e3f892e6a17e7b)), closes [#29773](https://github.com/ionic-team/ionic-framework/issues/29773) +* **overlays:** hide the focus trap div from screen readers ([#29970](https://github.com/ionic-team/ionic-framework/issues/29970)) ([c3b58f1](https://github.com/ionic-team/ionic-framework/commit/c3b58f1620bcb74db43e3983ef570b7b982abd83)), closes [#29858](https://github.com/ionic-team/ionic-framework/issues/29858) +* **vue:** incorrect view rendered when using router.go(-n) ([#29877](https://github.com/ionic-team/ionic-framework/issues/29877)) ([e32fbe0](https://github.com/ionic-team/ionic-framework/commit/e32fbe02102fe80db29f73c26496a40852032354)), closes [#28201](https://github.com/ionic-team/ionic-framework/issues/28201) [#28201](https://github.com/ionic-team/ionic-framework/issues/28201) [#29847](https://github.com/ionic-team/ionic-framework/issues/29847) + + + + + ## [8.3.3](https://github.com/ionic-team/ionic-framework/compare/v8.3.2...v8.3.3) (2024-10-16) diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index 5cf7ee82a7b..9f8cea162cd 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -3,6 +3,21 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.3.4](https://github.com/ionic-team/ionic-framework/compare/v8.3.3...v8.3.4) (2024-10-30) + + +### Bug Fixes + +* **backdrop:** remove tabindex for improved accessibility ([#29956](https://github.com/ionic-team/ionic-framework/issues/29956)) ([7294e96](https://github.com/ionic-team/ionic-framework/commit/7294e969bb913692eaf28e54860614f445132713)), closes [#29773](https://github.com/ionic-team/ionic-framework/issues/29773) +* **input, textarea:** ensure screen readers announce helper and error text when focused ([#29958](https://github.com/ionic-team/ionic-framework/issues/29958)) ([5a73145](https://github.com/ionic-team/ionic-framework/commit/5a7314553a8def87bd19275640c92dd72a6ef1a4)) +* **overlay:** hide from screen readers while animating ([#29951](https://github.com/ionic-team/ionic-framework/issues/29951)) ([cb60073](https://github.com/ionic-team/ionic-framework/commit/cb6007363a8d42b5f126945427c2bfc3d7209c21)), closes [#29857](https://github.com/ionic-team/ionic-framework/issues/29857) +* **overlays:** do not hide root when toast appears ([#29962](https://github.com/ionic-team/ionic-framework/issues/29962)) ([322d7c9](https://github.com/ionic-team/ionic-framework/commit/322d7c98cf6613df0b0db3f119e3f892e6a17e7b)), closes [#29773](https://github.com/ionic-team/ionic-framework/issues/29773) +* **overlays:** hide the focus trap div from screen readers ([#29970](https://github.com/ionic-team/ionic-framework/issues/29970)) ([c3b58f1](https://github.com/ionic-team/ionic-framework/commit/c3b58f1620bcb74db43e3983ef570b7b982abd83)), closes [#29858](https://github.com/ionic-team/ionic-framework/issues/29858) + + + + + ## [8.3.3](https://github.com/ionic-team/ionic-framework/compare/v8.3.2...v8.3.3) (2024-10-16) **Note:** Version bump only for package @ionic/core diff --git a/core/package-lock.json b/core/package-lock.json index e23c7139338..b854d6a7438 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/core", - "version": "8.3.3", + "version": "8.3.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/core", - "version": "8.3.3", + "version": "8.3.4", "license": "MIT", "dependencies": { "@stencil/core": "4.20.0", @@ -17767,4 +17767,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/core/package.json b/core/package.json index a9402401390..cc99b374d65 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/core", - "version": "8.3.3", + "version": "8.3.4", "description": "Base components for Ionic", "keywords": [ "ionic", diff --git a/lerna.json b/lerna.json index aaecbf98e08..6b73eec8d48 100644 --- a/lerna.json +++ b/lerna.json @@ -3,5 +3,5 @@ "core", "packages/*" ], - "version": "8.3.3" + "version": "8.3.4" } \ No newline at end of file diff --git a/packages/angular-server/CHANGELOG.md b/packages/angular-server/CHANGELOG.md index 87f068694a2..8e18462ddf7 100644 --- a/packages/angular-server/CHANGELOG.md +++ b/packages/angular-server/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.3.4](https://github.com/ionic-team/ionic-framework/compare/v8.3.3...v8.3.4) (2024-10-30) + +**Note:** Version bump only for package @ionic/angular-server + + + + + ## [8.3.3](https://github.com/ionic-team/ionic-framework/compare/v8.3.2...v8.3.3) (2024-10-16) **Note:** Version bump only for package @ionic/angular-server diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index cec18a98429..d441d4fc699 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular-server", - "version": "8.3.3", + "version": "8.3.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular-server", - "version": "8.3.3", + "version": "8.3.4", "license": "MIT", "dependencies": { - "@ionic/core": "^8.3.3" + "@ionic/core": "^8.3.4" }, "devDependencies": { "@angular-eslint/eslint-plugin": "^16.0.0", @@ -11110,4 +11110,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular-server/package.json b/packages/angular-server/package.json index 4b84cac006d..ceb075f4a7f 100644 --- a/packages/angular-server/package.json +++ b/packages/angular-server/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular-server", - "version": "8.3.3", + "version": "8.3.4", "description": "Angular SSR Module for Ionic", "keywords": [ "ionic", @@ -62,6 +62,6 @@ }, "prettier": "@ionic/prettier-config", "dependencies": { - "@ionic/core": "^8.3.3" + "@ionic/core": "^8.3.4" } } diff --git a/packages/angular/CHANGELOG.md b/packages/angular/CHANGELOG.md index 517488505d2..5899927ba34 100644 --- a/packages/angular/CHANGELOG.md +++ b/packages/angular/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.3.4](https://github.com/ionic-team/ionic-framework/compare/v8.3.3...v8.3.4) (2024-10-30) + + +### Bug Fixes + +* **angular:** add missing 'compareWith' input to standalone ion-radio-group ([#29870](https://github.com/ionic-team/ionic-framework/issues/29870)) ([47ba703](https://github.com/ionic-team/ionic-framework/commit/47ba703a57d1ca506f943f6b790d0bf7583d79cb)), closes [#29826](https://github.com/ionic-team/ionic-framework/issues/29826) + + + + + ## [8.3.3](https://github.com/ionic-team/ionic-framework/compare/v8.3.2...v8.3.3) (2024-10-16) **Note:** Version bump only for package @ionic/angular diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 7f71a33aa65..8f907002461 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular", - "version": "8.3.3", + "version": "8.3.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular", - "version": "8.3.3", + "version": "8.3.4", "license": "MIT", "dependencies": { - "@ionic/core": "^8.3.3", + "@ionic/core": "^8.3.4", "ionicons": "^7.0.0", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" @@ -15020,4 +15020,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular/package.json b/packages/angular/package.json index f2c927b0982..cf3edb13741 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular", - "version": "8.3.3", + "version": "8.3.4", "description": "Angular specific wrappers for @ionic/core", "keywords": [ "ionic", @@ -47,7 +47,7 @@ } }, "dependencies": { - "@ionic/core": "^8.3.3", + "@ionic/core": "^8.3.4", "ionicons": "^7.0.0", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" diff --git a/packages/docs/CHANGELOG.md b/packages/docs/CHANGELOG.md index bf807426dda..01d59dbdfaa 100644 --- a/packages/docs/CHANGELOG.md +++ b/packages/docs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.3.4](https://github.com/ionic-team/ionic-framework/compare/v8.3.3...v8.3.4) (2024-10-30) + +**Note:** Version bump only for package @ionic/docs + + + + + ## [8.3.3](https://github.com/ionic-team/ionic-framework/compare/v8.3.2...v8.3.3) (2024-10-16) **Note:** Version bump only for package @ionic/docs diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index a1d2d61aae2..1bf899056ac 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -1,13 +1,13 @@ { "name": "@ionic/docs", - "version": "8.3.3", + "version": "8.3.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/docs", - "version": "8.3.3", + "version": "8.3.4", "license": "MIT" } } -} +} \ No newline at end of file diff --git a/packages/docs/package.json b/packages/docs/package.json index 9faa6071e63..9402ac8627d 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/docs", - "version": "8.3.3", + "version": "8.3.4", "description": "Pre-packaged API documentation for the Ionic docs.", "main": "core.json", "types": "core.d.ts", diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md index 8969ab83e62..182220662ab 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.3.4](https://github.com/ionic-team/ionic-framework/compare/v8.3.3...v8.3.4) (2024-10-30) + +**Note:** Version bump only for package @ionic/react-router + + + + + ## [8.3.3](https://github.com/ionic-team/ionic-framework/compare/v8.3.2...v8.3.3) (2024-10-16) **Note:** Version bump only for package @ionic/react-router diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index 53ec60cc26c..7287ad10239 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react-router", - "version": "8.3.3", + "version": "8.3.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/react-router", - "version": "8.3.3", + "version": "8.3.4", "license": "MIT", "dependencies": { - "@ionic/react": "^8.3.3", + "@ionic/react": "^8.3.4", "tslib": "*" }, "devDependencies": { @@ -6666,4 +6666,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 4e146331381..79225e3bfb1 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react-router", - "version": "8.3.3", + "version": "8.3.4", "description": "React Router wrapper for @ionic/react", "keywords": [ "ionic", @@ -36,7 +36,7 @@ "dist/" ], "dependencies": { - "@ionic/react": "^8.3.3", + "@ionic/react": "^8.3.4", "tslib": "*" }, "peerDependencies": { diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index dc28f6a1d9a..f9f691caab6 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.3.4](https://github.com/ionic-team/ionic-framework/compare/v8.3.3...v8.3.4) (2024-10-30) + +**Note:** Version bump only for package @ionic/react + + + + + ## [8.3.3](https://github.com/ionic-team/ionic-framework/compare/v8.3.2...v8.3.3) (2024-10-16) diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 6e176a5e275..a747dd6080c 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react", - "version": "8.3.3", + "version": "8.3.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/react", - "version": "8.3.3", + "version": "8.3.4", "license": "MIT", "dependencies": { - "@ionic/core": "^8.3.3", + "@ionic/core": "^8.3.4", "ionicons": "^7.0.0", "tslib": "*" }, @@ -20498,4 +20498,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/react/package.json b/packages/react/package.json index 72ce6e4adc5..59b96e911f9 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react", - "version": "8.3.3", + "version": "8.3.4", "description": "React specific wrapper for @ionic/core", "keywords": [ "ionic", @@ -39,7 +39,7 @@ "css/" ], "dependencies": { - "@ionic/core": "^8.3.3", + "@ionic/core": "^8.3.4", "ionicons": "^7.0.0", "tslib": "*" }, diff --git a/packages/vue-router/CHANGELOG.md b/packages/vue-router/CHANGELOG.md index fc02c3c19ad..b8e456b3ce3 100644 --- a/packages/vue-router/CHANGELOG.md +++ b/packages/vue-router/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.3.4](https://github.com/ionic-team/ionic-framework/compare/v8.3.3...v8.3.4) (2024-10-30) + + +### Bug Fixes + +* **vue:** incorrect view rendered when using router.go(-n) ([#29877](https://github.com/ionic-team/ionic-framework/issues/29877)) ([e32fbe0](https://github.com/ionic-team/ionic-framework/commit/e32fbe02102fe80db29f73c26496a40852032354)), closes [#28201](https://github.com/ionic-team/ionic-framework/issues/28201) [#28201](https://github.com/ionic-team/ionic-framework/issues/28201) [#29847](https://github.com/ionic-team/ionic-framework/issues/29847) + + + + + ## [8.3.3](https://github.com/ionic-team/ionic-framework/compare/v8.3.2...v8.3.3) (2024-10-16) **Note:** Version bump only for package @ionic/vue-router diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 2a45b55ebf7..c62a3d299d6 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue-router", - "version": "8.3.3", + "version": "8.3.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue-router", - "version": "8.3.3", + "version": "8.3.4", "license": "MIT", "dependencies": { - "@ionic/vue": "^8.3.3" + "@ionic/vue": "^8.3.4" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", @@ -12798,4 +12798,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json index a8fe48ac36b..f6a69910661 100644 --- a/packages/vue-router/package.json +++ b/packages/vue-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue-router", - "version": "8.3.3", + "version": "8.3.4", "description": "Vue Router integration for @ionic/vue", "scripts": { "test.spec": "jest", @@ -44,7 +44,7 @@ }, "homepage": "https://github.com/ionic-team/ionic-framework#readme", "dependencies": { - "@ionic/vue": "^8.3.3" + "@ionic/vue": "^8.3.4" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md index ae7db1feb0b..59e84626d95 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.3.4](https://github.com/ionic-team/ionic-framework/compare/v8.3.3...v8.3.4) (2024-10-30) + +**Note:** Version bump only for package @ionic/vue + + + + + ## [8.3.3](https://github.com/ionic-team/ionic-framework/compare/v8.3.2...v8.3.3) (2024-10-16) diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 9a5b0bfcefb..46203db6648 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue", - "version": "8.3.3", + "version": "8.3.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue", - "version": "8.3.3", + "version": "8.3.4", "license": "MIT", "dependencies": { - "@ionic/core": "^8.3.3", + "@ionic/core": "^8.3.4", "ionicons": "^7.0.0" }, "devDependencies": { @@ -6562,4 +6562,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue/package.json b/packages/vue/package.json index d5a6d149837..86f48a1a0aa 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue", - "version": "8.3.3", + "version": "8.3.4", "description": "Vue specific wrapper for @ionic/core", "scripts": { "eslint": "eslint src", @@ -66,7 +66,7 @@ "vue-router": "^4.0.16" }, "dependencies": { - "@ionic/core": "^8.3.3", + "@ionic/core": "^8.3.4", "ionicons": "^7.0.0" }, "vetur": { From ffdaa3b2866cbef142289bb673752aa988ebe48c Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 30 Oct 2024 16:40:24 +0000 Subject: [PATCH 09/14] chore(): update package lock files --- core/package-lock.json | 2 +- packages/angular-server/package-lock.json | 14 +++++------ packages/angular/package-lock.json | 14 +++++------ packages/docs/package-lock.json | 2 +- packages/react-router/package-lock.json | 30 +++++++++++------------ packages/react/package-lock.json | 14 +++++------ packages/vue-router/package-lock.json | 30 +++++++++++------------ packages/vue/package-lock.json | 14 +++++------ 8 files changed, 60 insertions(+), 60 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index b854d6a7438..3a4608f31e9 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -17767,4 +17767,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index d441d4fc699..3a9a06112a6 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1031,9 +1031,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.3.tgz", - "integrity": "sha512-f2PXV0jFIFPdjP+NbmQ1mXqRQ4KWi0U0jdQd3wDYsJFWQLmWXhW7Yp/4lCDdl0ouMeZRB2phddqFct1c7H6PyA==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.4.tgz", + "integrity": "sha512-MkgaQ9+oQwj3AK/i25MkLgKUUH3/nvNjd4YlmUyFjPG7l2IBHsrLlSmuFGCyniB+doI9Hynu3T9CZP7NS4RjRQ==", "dependencies": { "@stencil/core": "4.20.0", "ionicons": "^7.2.2", @@ -7188,9 +7188,9 @@ "dev": true }, "@ionic/core": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.3.tgz", - "integrity": "sha512-f2PXV0jFIFPdjP+NbmQ1mXqRQ4KWi0U0jdQd3wDYsJFWQLmWXhW7Yp/4lCDdl0ouMeZRB2phddqFct1c7H6PyA==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.4.tgz", + "integrity": "sha512-MkgaQ9+oQwj3AK/i25MkLgKUUH3/nvNjd4YlmUyFjPG7l2IBHsrLlSmuFGCyniB+doI9Hynu3T9CZP7NS4RjRQ==", "requires": { "@stencil/core": "4.20.0", "ionicons": "^7.2.2", @@ -11110,4 +11110,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 8f907002461..aaf40af261f 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1398,9 +1398,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.3.tgz", - "integrity": "sha512-f2PXV0jFIFPdjP+NbmQ1mXqRQ4KWi0U0jdQd3wDYsJFWQLmWXhW7Yp/4lCDdl0ouMeZRB2phddqFct1c7H6PyA==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.4.tgz", + "integrity": "sha512-MkgaQ9+oQwj3AK/i25MkLgKUUH3/nvNjd4YlmUyFjPG7l2IBHsrLlSmuFGCyniB+doI9Hynu3T9CZP7NS4RjRQ==", "dependencies": { "@stencil/core": "4.20.0", "ionicons": "^7.2.2", @@ -9820,9 +9820,9 @@ "dev": true }, "@ionic/core": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.3.tgz", - "integrity": "sha512-f2PXV0jFIFPdjP+NbmQ1mXqRQ4KWi0U0jdQd3wDYsJFWQLmWXhW7Yp/4lCDdl0ouMeZRB2phddqFct1c7H6PyA==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.4.tgz", + "integrity": "sha512-MkgaQ9+oQwj3AK/i25MkLgKUUH3/nvNjd4YlmUyFjPG7l2IBHsrLlSmuFGCyniB+doI9Hynu3T9CZP7NS4RjRQ==", "requires": { "@stencil/core": "4.20.0", "ionicons": "^7.2.2", @@ -15020,4 +15020,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index 1bf899056ac..b2ec1102513 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -10,4 +10,4 @@ "license": "MIT" } } -} \ No newline at end of file +} diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index 7287ad10239..597890f036c 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -238,9 +238,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.3.tgz", - "integrity": "sha512-f2PXV0jFIFPdjP+NbmQ1mXqRQ4KWi0U0jdQd3wDYsJFWQLmWXhW7Yp/4lCDdl0ouMeZRB2phddqFct1c7H6PyA==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.4.tgz", + "integrity": "sha512-MkgaQ9+oQwj3AK/i25MkLgKUUH3/nvNjd4YlmUyFjPG7l2IBHsrLlSmuFGCyniB+doI9Hynu3T9CZP7NS4RjRQ==", "dependencies": { "@stencil/core": "4.20.0", "ionicons": "^7.2.2", @@ -414,11 +414,11 @@ } }, "node_modules/@ionic/react": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.3.3.tgz", - "integrity": "sha512-BQVke+4QF1viPmwYFV/Bfseh4AhLnA0svP8UvKTP45plJ2KDXF/IbFVNn+FWtjByrqYU4PldUgF01+O4yPGiRw==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.3.4.tgz", + "integrity": "sha512-CIoTHg/1nJJN11IjmsUqeQB1nIP4SxQyo2nBH+MhzeVCMv8Tj00Y4rU/9RYzKfRI7Zfsi9MOwVrwpGhPWi4KWA==", "dependencies": { - "@ionic/core": "8.3.3", + "@ionic/core": "8.3.4", "ionicons": "^7.0.0", "tslib": "*" }, @@ -4057,9 +4057,9 @@ "dev": true }, "@ionic/core": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.3.tgz", - "integrity": "sha512-f2PXV0jFIFPdjP+NbmQ1mXqRQ4KWi0U0jdQd3wDYsJFWQLmWXhW7Yp/4lCDdl0ouMeZRB2phddqFct1c7H6PyA==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.4.tgz", + "integrity": "sha512-MkgaQ9+oQwj3AK/i25MkLgKUUH3/nvNjd4YlmUyFjPG7l2IBHsrLlSmuFGCyniB+doI9Hynu3T9CZP7NS4RjRQ==", "requires": { "@stencil/core": "4.20.0", "ionicons": "^7.2.2", @@ -4163,11 +4163,11 @@ "requires": {} }, "@ionic/react": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.3.3.tgz", - "integrity": "sha512-BQVke+4QF1viPmwYFV/Bfseh4AhLnA0svP8UvKTP45plJ2KDXF/IbFVNn+FWtjByrqYU4PldUgF01+O4yPGiRw==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.3.4.tgz", + "integrity": "sha512-CIoTHg/1nJJN11IjmsUqeQB1nIP4SxQyo2nBH+MhzeVCMv8Tj00Y4rU/9RYzKfRI7Zfsi9MOwVrwpGhPWi4KWA==", "requires": { - "@ionic/core": "8.3.3", + "@ionic/core": "8.3.4", "ionicons": "^7.0.0", "tslib": "*" } @@ -6666,4 +6666,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index a747dd6080c..232c3805ca5 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -736,9 +736,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.3.tgz", - "integrity": "sha512-f2PXV0jFIFPdjP+NbmQ1mXqRQ4KWi0U0jdQd3wDYsJFWQLmWXhW7Yp/4lCDdl0ouMeZRB2phddqFct1c7H6PyA==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.4.tgz", + "integrity": "sha512-MkgaQ9+oQwj3AK/i25MkLgKUUH3/nvNjd4YlmUyFjPG7l2IBHsrLlSmuFGCyniB+doI9Hynu3T9CZP7NS4RjRQ==", "dependencies": { "@stencil/core": "4.20.0", "ionicons": "^7.2.2", @@ -12315,9 +12315,9 @@ "dev": true }, "@ionic/core": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.3.tgz", - "integrity": "sha512-f2PXV0jFIFPdjP+NbmQ1mXqRQ4KWi0U0jdQd3wDYsJFWQLmWXhW7Yp/4lCDdl0ouMeZRB2phddqFct1c7H6PyA==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.4.tgz", + "integrity": "sha512-MkgaQ9+oQwj3AK/i25MkLgKUUH3/nvNjd4YlmUyFjPG7l2IBHsrLlSmuFGCyniB+doI9Hynu3T9CZP7NS4RjRQ==", "requires": { "@stencil/core": "4.20.0", "ionicons": "^7.2.2", @@ -20498,4 +20498,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index c62a3d299d6..6e3138dc0d7 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -661,9 +661,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.3.tgz", - "integrity": "sha512-f2PXV0jFIFPdjP+NbmQ1mXqRQ4KWi0U0jdQd3wDYsJFWQLmWXhW7Yp/4lCDdl0ouMeZRB2phddqFct1c7H6PyA==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.4.tgz", + "integrity": "sha512-MkgaQ9+oQwj3AK/i25MkLgKUUH3/nvNjd4YlmUyFjPG7l2IBHsrLlSmuFGCyniB+doI9Hynu3T9CZP7NS4RjRQ==", "dependencies": { "@stencil/core": "4.20.0", "ionicons": "^7.2.2", @@ -852,11 +852,11 @@ } }, "node_modules/@ionic/vue": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.3.3.tgz", - "integrity": "sha512-6EAPWdmQDvazP4ZsCRjWlG91Kx+1vYxX1gHx02Xvcc7Dn8hRrMW58IAAQ0BqSYsrHNFTKVtwD3cJbmnut8Ghyg==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.3.4.tgz", + "integrity": "sha512-s7P5mTd078CbPK2dpIxxWGNirQacG3sXhJulJ1L0J6+6VI+HHHLKy4ueTRgPl5GLDmjGgdMCBuYu1n4K2nNXFg==", "dependencies": { - "@ionic/core": "8.3.3", + "@ionic/core": "8.3.4", "ionicons": "^7.0.0" } }, @@ -7878,9 +7878,9 @@ "dev": true }, "@ionic/core": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.3.tgz", - "integrity": "sha512-f2PXV0jFIFPdjP+NbmQ1mXqRQ4KWi0U0jdQd3wDYsJFWQLmWXhW7Yp/4lCDdl0ouMeZRB2phddqFct1c7H6PyA==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.4.tgz", + "integrity": "sha512-MkgaQ9+oQwj3AK/i25MkLgKUUH3/nvNjd4YlmUyFjPG7l2IBHsrLlSmuFGCyniB+doI9Hynu3T9CZP7NS4RjRQ==", "requires": { "@stencil/core": "4.20.0", "ionicons": "^7.2.2", @@ -7993,11 +7993,11 @@ "requires": {} }, "@ionic/vue": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.3.3.tgz", - "integrity": "sha512-6EAPWdmQDvazP4ZsCRjWlG91Kx+1vYxX1gHx02Xvcc7Dn8hRrMW58IAAQ0BqSYsrHNFTKVtwD3cJbmnut8Ghyg==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.3.4.tgz", + "integrity": "sha512-s7P5mTd078CbPK2dpIxxWGNirQacG3sXhJulJ1L0J6+6VI+HHHLKy4ueTRgPl5GLDmjGgdMCBuYu1n4K2nNXFg==", "requires": { - "@ionic/core": "8.3.3", + "@ionic/core": "8.3.4", "ionicons": "^7.0.0" } }, @@ -12798,4 +12798,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 46203db6648..2adae2a2acb 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -208,9 +208,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.3.tgz", - "integrity": "sha512-f2PXV0jFIFPdjP+NbmQ1mXqRQ4KWi0U0jdQd3wDYsJFWQLmWXhW7Yp/4lCDdl0ouMeZRB2phddqFct1c7H6PyA==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.4.tgz", + "integrity": "sha512-MkgaQ9+oQwj3AK/i25MkLgKUUH3/nvNjd4YlmUyFjPG7l2IBHsrLlSmuFGCyniB+doI9Hynu3T9CZP7NS4RjRQ==", "dependencies": { "@stencil/core": "4.20.0", "ionicons": "^7.2.2", @@ -3970,9 +3970,9 @@ "dev": true }, "@ionic/core": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.3.tgz", - "integrity": "sha512-f2PXV0jFIFPdjP+NbmQ1mXqRQ4KWi0U0jdQd3wDYsJFWQLmWXhW7Yp/4lCDdl0ouMeZRB2phddqFct1c7H6PyA==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.4.tgz", + "integrity": "sha512-MkgaQ9+oQwj3AK/i25MkLgKUUH3/nvNjd4YlmUyFjPG7l2IBHsrLlSmuFGCyniB+doI9Hynu3T9CZP7NS4RjRQ==", "requires": { "@stencil/core": "4.20.0", "ionicons": "^7.2.2", @@ -6562,4 +6562,4 @@ "dev": true } } -} \ No newline at end of file +} From 2d6eeee26762fcf1c71290900941a063c67142f4 Mon Sep 17 00:00:00 2001 From: Brandy Carney Date: Thu, 31 Oct 2024 10:46:12 -0400 Subject: [PATCH 10/14] test(alert): skip flaky test (#29985) --- core/src/components/alert/test/a11y/alert.e2e.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/src/components/alert/test/a11y/alert.e2e.ts b/core/src/components/alert/test/a11y/alert.e2e.ts index 12add8b2eca..b5aeb63d051 100644 --- a/core/src/components/alert/test/a11y/alert.e2e.ts +++ b/core/src/components/alert/test/a11y/alert.e2e.ts @@ -279,7 +279,10 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { await expect(page).toHaveScreenshot(screenshot(`alert-radio-scale`)); }); - test('should scale text on larger font sizes with text fields', async ({ page }) => { + test('should scale text on larger font sizes with text fields', async ({ page, skip }) => { + // TODO(ROU-8158): unskip this test when a solution is found + skip.browser('chromium', 'Rendering is flaky in Chrome.'); + await page.setContent( ` + + + + + + + Segment View - Basic + + + + + + + No + + + Value + + + + No + Value + + + + + Paid + + + Free + + + Top + + + + + Free + Top + + + + + Orange + + + Banana + + + Pear + + + Peach + + + Grape + + + Mango + + + Apple + + + Strawberry + + + Cherry + + + + Orange + Banana + Pear + Peach + Grape + Mango + Apple + Strawberry + Cherry + + + + + + + + + + Footer + + + + + + + diff --git a/core/src/components/segment-view/test/basic/segment-view.e2e.ts b/core/src/components/segment-view/test/basic/segment-view.e2e.ts new file mode 100644 index 00000000000..447a60be309 --- /dev/null +++ b/core/src/components/segment-view/test/basic/segment-view.e2e.ts @@ -0,0 +1,173 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +/** + * This behavior does not vary across modes/directions + */ +configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('segment-view: basic'), () => { + test('should show the first content with no initial value', async ({ page }) => { + await page.setContent( + ` + + + Paid + + + Free + + + Top + + + + + Free + Top + + `, + config + ); + + const segmentContent = page.locator('ion-segment-content[id="paid"]'); + await expect(segmentContent).toBeInViewport(); + }); + + test('should show the content matching the initial value', async ({ page }) => { + await page.setContent( + ` + + + Paid + + + Free + + + Top + + + + + Free + Top + + `, + config + ); + + const segmentContent = page.locator('ion-segment-content[id="free"]'); + await expect(segmentContent).toBeInViewport(); + }); + + test('should update the content when changing the value by clicking a segment button', async ({ page }) => { + await page.setContent( + ` + + + Paid + + + Free + + + Top + + + + + Free + Top + + `, + config + ); + + await page.locator('ion-segment-button[value="top"]').click(); + + const segmentContent = page.locator('ion-segment-content[id="top"]'); + await expect(segmentContent).toBeInViewport(); + }); + }); + + test('should set correct segment button as checked when changing the value by scrolling the segment content', async ({ + page, + }) => { + await page.setContent( + ` + + + Paid + + + Free + + + Top + + + + + Free + Top + + `, + config + ); + + await page + .locator('ion-segment-view') + .evaluate( + (segmentView: HTMLIonSegmentViewElement) => !segmentView.classList.contains('segment-view-scroll-disabled') + ); + + await page.waitForChanges(); + + await page.locator('ion-segment-content[id="top"]').scrollIntoViewIfNeeded(); + + const segmentButton = page.locator('ion-segment-button[value="top"]'); + await expect(segmentButton).toHaveClass(/segment-button-checked/); + }); + + test('should set correct segment button as checked and show correct content when programmatically setting the segment vale', async ({ + page, + }) => { + await page.setContent( + ` + + + Paid + + + Free + + + Top + + + + + Free + Top + + `, + config + ); + + await page + .locator('ion-segment-view') + .evaluate( + (segmentView: HTMLIonSegmentViewElement) => !segmentView.classList.contains('segment-view-scroll-disabled') + ); + + await page.waitForChanges(); + + await page.locator('ion-segment').evaluate((segment: HTMLIonSegmentElement) => (segment.value = 'top')); + + const segmentButton = page.locator('ion-segment-button[value="top"]'); + await expect(segmentButton).toHaveClass(/segment-button-checked/); + + const segmentContent = page.locator('ion-segment-content[id="top"]'); + await expect(segmentContent).toBeInViewport(); + }); +}); diff --git a/core/src/components/segment-view/test/disabled/index.html b/core/src/components/segment-view/test/disabled/index.html new file mode 100644 index 00000000000..d19722de6dc --- /dev/null +++ b/core/src/components/segment-view/test/disabled/index.html @@ -0,0 +1,103 @@ + + + + + Segment View - Disabled + + + + + + + + + + + + + + + Segment View - Disabled + + + + + + + All + + + Favorites + + + + All + Favorites + + + + + Paid + + + Free + + + Top + + + + + Free + Top + + + + + Bookmarks + + + Reading List + + + Shared Links + + + + Bookmarks + Reading List + Shared Links + + + + + diff --git a/core/src/components/segment-view/test/disabled/segment-view.e2e.ts b/core/src/components/segment-view/test/disabled/segment-view.e2e.ts new file mode 100644 index 00000000000..c7dead8943f --- /dev/null +++ b/core/src/components/segment-view/test/disabled/segment-view.e2e.ts @@ -0,0 +1,49 @@ +import { expect } from '@playwright/test'; +import { configs, test } from '@utils/test/playwright'; + +/** + * This behavior does not vary across directions + */ +configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('segment-view: disabled'), () => { + test('should not have visual regressions', async ({ page }) => { + await page.goto('/src/components/segment-view/test/disabled', config); + + await expect(page).toHaveScreenshot(screenshot(`segment-view-disabled`)); + }); + }); +}); + +/** + * This behavior does not vary across modes/directions + */ +configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('segment-view: disabled'), () => { + test('should keep button enabled even when disabled prop is set', async ({ page }) => { + await page.setContent( + ` + + + Paid + + + Free + + + Top + + + + + Free + Top + + `, + config + ); + + const segmentButton = page.locator('ion-segment-button[value="free"]'); + await expect(segmentButton).not.toHaveClass(/segment-button-disabled/); + }); + }); +}); diff --git a/core/src/components/segment-view/test/disabled/segment-view.e2e.ts-snapshots/segment-view-disabled-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/segment-view/test/disabled/segment-view.e2e.ts-snapshots/segment-view-disabled-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..58fa6b0d0ab679e48ed22800a2ef8b91cf5a2767 GIT binary patch literal 16516 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

>+8L?RTvbid~qKFvg3R6Pl15Lx07 zelqkE-tw4B61^_=T=R8Ya#wHg43wM+0tvXs6SJ9M)A7OJtJi6yLi!&9WL6o77M>R zRl9)r5^X!|$NcrFwzso%n^4jVGvR>k=SB?VIUc#6>f{s2a}FYxJ*ywGqKBGk6HxAm z(n*=}?Mkx8obOnw_0dB+MUGaH>7KQb+X;=GDr|*OSAE#*9A;BfpMywGyNlzp(7rL- zVUu6%*&`H!`PuOQHJmXwBSgsS7qgZlpYcL&B{)h1{OZ~K=A2(*!G!*6pP2FKF)i{w zW7uMAY8_|xDom95qmJ3?puXX7B;D?2{CM@C>oaM^!MA0<7{XtTu7*Yd*QR-p3<75@9b+AoJ0uNP;e9NwI)WC1bR!Sm&^V2CExZhGXar@!2d4IfnWfBNnJZzO0L zLvLL&i{_B|4!Zif`

w*Ml|{{rU! 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⪒n1%koUpY) zIf-*XZ<5b=3P@x}^b$4!H6Et0LB7TnnRC^US(Q`dM0lTnL4ze$5kC$fG~u}|e)Q|j z%fXM84fgR0@kvQ9%f|t`z~H*v$Qssq#Tsl));<&vaD#BdWDbM}j6(T^g%!F*)yM5F z=uG*wTaBk&{QUgF!apCF!}tyF*xTFdHkFDXD<@Pp~`y zEc%LI+*V|nsQ1_fo@cPcsA+6$44PftLlnOHM@0ab1eyfQ?qb0g<_JFMrb&3mLhC4>8-N8inAG~KZzSz`zhf)UNR*S>WVVW2N5`77_OQQCPf6niaS(<&en z^Y8iQkP?ta)A53@&XcE)lQLW;SfOyXPr3l_k~t zZ0_jYp~zB}{RjLC!AZN6CjoR{IWu#oKPCz-&5doi!j+Szo-(4<_$<>utkqXGGCuXG zJDMk=xP^=Mh4O&>-|5`{Du?>01Jr0EoiIu|DfBsbvL{TB1WjSDc7iJ*dORt72Lcb7644` z>rK}EFVprmzo1_J)wI{|o=rC)u~GriJAZxzr905b=8|e?N%f?k&nJ-(u!K8rjD5KIrIBeF z4Rz<$@#w|4X`6_r6xIsK?Km3h$m?+*)bGgmp`Z4q=jRnDQHqp}@72z4PC4zk+o)$f zk+~s;&3Z9*hL4VhR_tH-Z?Ne9xr_V%O4|QBw*&MX!3}7y)dcXdE6RWngW^^}?wnxH zcFFFI*CP1s4uI!aV(-T*U{{@Cq3tm#gZvF?HOc73*~<$9Na|1P zilz)8vd=)S$E!Z03sA8?8~RzBRi(mmu@+MYvtY#I$T8z9ks?4O^$r%X=NXY}Ngc)o zF`6KWv?}5n^)?Z^CnH%R_hk^_xDFf zM{`=1Pi!bDDQOi{K8xWXe`0LRP%gj91^lOV`8dtZzLTRPCMKpDS2?#ksmg9Jts{cF zEl4o_ZhTQNY-MUeV3%_6l+S&rnSxS}T-o3n{B4`~C z9z58~2QEw8>^mWd6#U4Cyu7PxYhq$z(A*8gR_WHp%1qBs_Pe^fVNBedsJ7G6(lRhe z)#r)~4*t+fleVO%8~{^+x2vnGjZKjv3obtX#$YZ%sxJ)cM@L5h@>cgfVeSLKP^-T= z5IwDP=yey_Y65#9k=tm*suHN2TLc6WUI!dg-5H~6E5&m_cYR;n0ntcCS{l$8%JaKe zf?)~w{rfARyqK9S0F%Dpcnl23O}yJtNlDL)j8w2*x-dG|;ZktPF~wwOX9olXfV=~g zfv`czD2xMpTQiq10+&r}P*PGB(^`5tM^<4cDd7ekGPzNLQMj zc{#GlOyEXOPEQBBBF-nBAHQy7JK6HPoOnJkR{`(J}Z@-E8F&DH1X?e1m{_=gb?rNH04H8(q(p}`gw7KY8>e@DO3yB3&&;gDjw zmjny&$?xWRIyinwtJ2xw4jirbKaF+ge_`I~-aGeeE!&RE# z#_LTBFZrk@#_p`T7HU~{(dQ0_;PE26yCcds40Xlt9&AhqSp2x1qc+Z&hO1Gn|0L74 zCMXkicFQwHYs=}3u}+4%H`sQMeL3MY#xurt8&hEUBPJ+j;U-cYSZQR%fv5Dgv71Mj zAB?I+9Y**QKXAWALu+-IED@pIp0vl7BrFYWiLh<3Ls>@2F%j45_c+kRED%SK)YW?4 zK~s$CS|rXUS#08$gHtbZ=;4 zZ^tiH_MI*2S&^0`;ZtTnSAr2)+$H_7{g>hfg@q2YrD$j=v-r&aUsdRTr=k6i_3ZzI zD?ztFEA4vDpX83)@WUYmsg|R4&+f>8VyCz>d*Em~y2#LLQ#WE{0+rZQ_3$Q+7{J6) z&8M2tMylkCUy{(!=xndN0I*C9Ql!#|;F6%FUyZ6ZK^cI)xARPmRJ~)R)0V{+ z)STo3Ih`$fY*yAB`~^rgvbiPhShV8)wPo4k<$aKF>PGc;vjPSqhqq1K;JO-GXiso(iL{qs(aKG9%7wJBY# z;%3%1PqJQ>3`a>p_y(EsXd2e6iRW7iEltSi)~abH!@1Z}(QI zX%w&?=p9e)3ZRttU0uV&B>cAr;xw?~@MW<44@b#}ucyv z{n4RU)YPzv*+>45`D1G0fA<9Z_TNZSJq~hYHw%{kuJbZg=DpBNxh-!=!e!F-Ci^wP z2&XglXgMfAmjn0v;+IpoV>97|p zPI;x<{FR}=m94=xH95I#PI-Q%1$J9FO+{@w_lSL-*vPzR#Ya`C%bD24O#DjUjYX2M zP^+N-1u%L&l!$o!@BbiF0s;cWXiTZ^g08b>a54G#EB?2L*{!We;wfAIJIl_(X-nq3 zlm;)q`E2Ss8^|LL>1#cC+=SatK=$vms&uz?Mh}t71oji>tts{R@ZGw>eivqJ&jsB% zzum(_xBcKv4p34ew8`|v$nS{uJ}JfRSfru0r3%MflQmFej0T?3lrw}#t3cCV;uhD^ z5qptVfq__pNc0tp+JYrX$aJJs`dUk#D-q>+$BhwqR7>=`QmQQ${$WD&9sx!CiO@zO zX0Fvt+W6ffB_}t$5}_)sYiny+Vpp`t_d%hBGpa0K~WPe-5DX8umvY zT)A7kca;#q!&V0M?hY?st`rgU0<)~LQpoH!w6PZb^|_$q!go*>adB~JN$l3N?WPegnSa`NKsDjNv9>xsh zW=6*BNRZpnALFI_0{S~(JOa+&A*_1Bd|+_!CO%b#`}Q0-B3PN38@Ai1olk6h>VX)t znXa#0+yn9TBWUL;vmW9P9|B=l7M|mBuKsxBM)me=5WR9TUkIV&TuaCmv4!O4ynjC* z*Omf{0gNCiq8_{q3*gttk_o2*9`+sOLtBR=s_@@m{=T02pzap;F&Gv+8+?I%@$ru=e!Rc0{t=H(bZmJ3Bpwu)D0Zt9|pzEm#})s-J}g%Rg?J(}N8pk1@j0aR)SBcwbhfWKs$WS%C*w z3_zZ}2f_)kXj>$`-*O*=umjj@fQqGqh(6(NaBg6x7jiU%*8_bKa5m^#H8zI|6t$U2=wKuqLGcuTg(<9yYWCa`$@ljDv)zt@u4!btMc|c4@r_9~n(sC7kUfvkr zB=9lxJtk;vYrCQ~BlhDCM76A~tkOJwC&8rhz_e|BvNpCyT}$g=%rvsKwY57<3B^7?v>yeRzD|?xIhceZXhi_6lXDx2dh9HOQE+qVl>UmArF($v4v38v^kf@8g~I^>r9BK*JzG7<#T;QS)bTKOyg<(vlLprD=(3 z(`FCI+$RYf9-!KSSj-e^k}mE81HrN;lHbPjaLNsox-?*>A>D`(KaX`%{{xXAlyK*0 zKJxVFh(^%<7w8RVO_!%l2a!CWGF;G=fBp>GNfRtZIJLk9@V_w7+VSfpian}hls5ul zeP^*tyIB9YTVMu{Rya<4q`bVG+pzu!D&Nf;H<(#iz_%D zN}3l00o6hmIpRlMy3tI4chuVTmj}{5Lv1{Nv_I-j?Nf( zGw8sp3G*zhs$u>6#KdYS_rM*%7by(gGqRc!5uZK%TAy1SK%wBS8l z!m7U)gV_-_$I8kItji3zl^V}>p0sPi?p&Lw-h#@euBOJNU-K8%%U;t*tgK7m31!zV z-rL`&<$pC+@p2IAZZy12eEj}s)5Rk}L3fA}JlT48xGShBFpuArdFTG?@0+j>7T!;{ zs)QHI4P05-K&ypn0<+!bkEDmr1a9C1c<~|+ygIvkYok{t#qgCOP^fMA^$-aE-JQok z_TRXYLFYktP`=!>87pOg9Asf(0pJ}d2tF=@$1*G&=WABQW@ZB0 z-<~VeH$0F)Gx+%Nl9=PIoGu+={vmjH|# zH#!z~e*E|WbQv7*u3(0x19@bBbr^CCNEVp;b0W9k&fw$)N|0jsV)Qq(imMjT?p@(m z&^-Ho5&}uEr zt`1P?%)vba2?bMngpv9L_v%alm#>wxK@5gujq8T4mDMT;hFA=stNz*DJza=Z!D7IC zbCqQ8`E7Km2k#eYp+LATAFsC>{&X<;0^lEbG5s2#BkfwqeigK?T7V@1<b~fIZ=q z4?jW)UcA+03-Sk8g#A3$imIK34IuXc3oVPiD$^n7&?$9U8v#-jSRr!qw%xOnebDR0 z7?>VB=x=YgyfWoPfo2F^#*$QlMA&AuwC7+?1&b*NYTSHpi$04u_?iKKrI;pKo0<7- zX2uU1Feq)1l?B5cw$!vtd6+Y z*co2hoa9~5ftz3@Yib1T?6$xw8cYaV^3QfVz0np+v723W(bblT&b}&ECnuN~7>Xde zLRWU?&i{|Ztiw&uLE1P4b6wq^fTL)*$tsQE@xb2|84;nZs90E36doM>!qj4k`9Bi2 z=Em?=K7ItRE0js-VqIpRLDxJeC~3sGb?ab%e|T*lddXELfRYRm8A7?)r7DkB+ZiE( z^|`=heF|pP-%Cq?ba+loT)pgRs=W?v-+Z-)c3NcAbOC~W-E<0+&=2bZd(UsM!2vQJ z8`~$NCf{<4ZUwMS9bP^r5Q~eCU!0$x|M^&NqIqiS9ITv%O};*0K>{NaAQW;g{joOo z$PJIe0ZVYph`{m!+``9f2K{o;@%W<>68Z_?DiLr8fzLB?6cqxggL(Gx@l7@7MfEpM z#|-}9N@a^z$aq@e~)7STFYs>G{_2WRK{O9pk81nZw5dS7?Y&R5d5Zq0f$78ffQ4D+Kdl~~l5 z8l`Lh(FLo@4EzSyUA-I}%34iUz{BU2Fw@g+<>S+!kYiQ#1z1m5dp#;!)Kp_`;99J6 zkP}nL(lHoHYdi&0Ex@D?KoaCrGgZ}ocss2k-QkP)!eX~m5MYMMWbK;qUBVJ8M9kow z!OEDcoVxSp&(X*<84IE=P zB1nX-J2YHg%0ISIIxAgB(5_ti?LMt$7)3G3s+RH8b@R)IH3oUHzdO5A#nYu3lkrac z3%hD56X!PN6YNu)jHd;-$_5iX!UQa7P_8_&zRQy#4# zC&lV9RP#nPk$9eO)mAnr?znjl=yH5KS!HAIWgoUOvWWr(><#>sVr1o$M{LK`VAtSi z?=j1&^(SWHklaXmhHPbR=0tW@xKlwUu)~)Xz?wS_CB_apzPZ;p0Tf7|%QTipp4J z6R)%i7FTn2wQx(ecRm$-;^;<=a2pd&nX4PAry?Cx7dMNaeuB5_#M!~bQ;O*#3m^<@ zjdPk!nX+;@+$k<99@6k4QFZ31uPX$qs$WJUk-TdGCswlLY5uyFwTGmkT>AGYaUXCH z#BQ&)I=P~{rv_2QbqWU0jQN*+u2n$x?RF1qX)ah=)OdMz#(!G<9P=qA^Wsh5dnFm4 z$6^dpGf%mrJI~%cuIZT!$27o~UwtXXsFfHG8ovNRZ_H#t=DoI=SdREkFhrsp^Y5{; zyDp2-%2pnAr``gNc|)-<2U~Knt3v>8$g-ZMu6LNk zM=8es(NV~Z_@4$ju3Hom%j6VTc!(I!YuK!+s9GWfhedg-*=i!s_X+OTOWpp@xoeZv zlfA-wSVFHcw3zVT*R)C#&?Y6LqM|M&51XyrQXhkoezJeadLFo zV#&-5K8`Aw17$j8>vWM|VKg13!NnRdR;aZU!jIe+F0W2(8x)yMBf|8_YAjaPR@Ktf zBK8`cN_8*1UW!(tw0Dn&b%kuaB%|tMS#e}I&M?- zkG4znO*O0MtL<7mH1OA8OJt7+w{?U$RWcQ_buloTIRB@Cx}N6jd$rtx&lAEUl@?N} zJji$c&)r7dF$4D_Xn7UC$x~Tb(>%m-JuTv(zx{V*c3KS*}n=yZtPr>odD zXD!70EQp>pBl^79T>nRdcSqMux;6+y&0%L%+d2kXZ1{=yhiy~67KEK2Fy-G|9Ts3aJ)<=6Nb-}*dtRNm z@SD`kh#|oJ=tzcny44{?ktH%XguS!lhv2jO@f`@plhAKlvU1j5Zzl>z2I{R_M?c52 zxoj} zo3rn$#rzG)DE4FmJ*LciSj2mI$Y$LE+KgdslwgGQye3b?yltIqKvYb9flEBuIWZ>6 z%M-`{sa6y_)-{9tTIuep-!y{X9F|oNgDRP7IM-eEd`A|cen-qpscPKQoIN+KKfk6g z#`T;w2BSK9xO11hT#-flo+i!oGWy1Ae1V$q1;@Ag(WEHShmFwDiAf&Hsg8@&1du=l@>mU-?P&|5m}=xkUdX Y8S)o-I{`lYE*(u?T3MTl_WWXfPg3sDoHX*rlH9>w4XGfB0&+5ETW)f$*DmE zBxj)s(&QYPoSJYSW^T>BGc{-Gd}l({t-AdOXkhPmzwZ;)v)1aD57d;YPBEP#At9ks zxqIgk3CXdSBqYai8 zmg*ctdHUm+YYTVC$;n?_9(%5LQq$)X{lknNnT>D8nRN%6Hd?H{WxDTfz9QGc9M3!d zKu+`ai)Xa4BJ-2o5O5Dp{94`?_L(KZYS2UMR*f_iG)&dkK2j`6wh8+(UF|* zlrXg{b(3j?3olfsZw0ht0+ZPOB4*lnlJKD1V%h zw;lYTF1zpI%{m#(SNUGb6Ml|Zbo2J!^lxtOI4~4r3Eh~-p?4;u`}_NOqqzhGoYrSL z1ufeadb9MEU*|?7NVv{@t7oN?=QgS+F|P7sKrO@Vd{*ihNd2D-mAPtX^tfxOs5G|3 z2nNs=5Bm{w(EIbFH9>4LK4Ld+%nDE+j^X`?i^9lW582a{l=D3qxK`0&pBgIBnGG+3 zlQ3Br*JJNNO%08;^=|bfDbKF*t9*R+HGxz~e!H_7Ih7K&eYtL74_q};Rd>dM`Qp{4 z@mTLP)tIqzo9VU$yd8!X7W?k&Bi(;~-MiNm#iKvfp2Wt)bTiuhW%c;IF1&LYdT*SK zQ$6w5tc&w>+faq)nq`u2k;CYZl9H0Zz(5@%&$>|umkzNWVVhsqcTQFyaoI{46K~(Y zf1j)nRek8iB=o^ftT6Im8hubdJS@w@vq*#9_8(kaT1XyMPRFjL)&$Ws z=d^#-NNc*L5O~^iwUIN)b1G(RY;1jfy|(raJEnWqpxkW{?jDttWM8Nk@%F7nd*Vd~ zhUxN*ii(Q5Uv=D!KrQpOa1c% z+1&j6{@&iiYFAfRigK72Ct~$@Q<2@E(rd<*G}-+|?=58_l=j|?mvl$j*vy4q zl$=Q9WAX9w+9hN2aTu$831`#S*Qalf-Pjzo7i9{;V-uu2ohF+izkdBHEG+!+;X_z( zoG?;5C1u*FG>X@7x8E{JOI!PAUEMwoy^n)fk7G7MCMsICC;Ac>i@UqJ*1h&;I#bA~ zS^5rYo~w1@MNX2DQL^Xd<=NQSRH&EN*4AFTA4SeSag8&&S=b(5@$TI@c1%)|v7%xf zgR##y^x=VGFuiBeU5!VNo(eHtq*hi_Yx@yEsUR<( zUA`p2Ui(4L|K7cO6Tuq3#LdFT+?CNL6{)H*d2Wk(K{apU<_z_%0#AP+y-5!^r>ij^rU5^930n zkEc(c!nVUv#%AIZrM)3*2rC{CKUc0?QBRWDpNg|z8m>ZDKR+3pO2JOeDz#lcyx%tK zqLlalg*o5YFQ8)3a%4-fW{Ha2EepSJMcITaPZZAGfK$AXi5RvRJC+c~PnFPshx zpk#pZk=7i|7xv;s_%vecw{trbv|`)-%jLP|&GeoeU9t6%(Jl1ckC$iDlCt#*)8U3r zG)_IwPf{j&PF?UM##kmoeNA@Po5+B&2kVKFUgdpfd>-=p4bk>d^A#2m+xOKbxr2+V zPDV;fN{WgBw3mg23o9#)+6*wX(q8M~K_5*UkpXFH2{ulPvIi?PVfBL6U7xfvw6TW= z#46$t0YgjNBB8;_v#q?PL{LzSLd2kKW~>I zE~JFXygeKbX5d4uKDv!O5FPg28X6eT%jnrfA8w(KwqbR$*&B*@CmCt9iua%p>UT+6 zlHb77Z||a_cy;q8{v>1dSnpJpJ=h)(3?wCpz_!xMOF^|+bzx<1ah6a@gjz;^cXfKwDiKoMrzN>V6e0+O z>jXTOP1rF~qQ9%qRkW9{Uag&VVTD3izDMS@sM_`-BRxHqThZ0EkoNNB%kpX66zm*` zSRwbN-w;=UK|#$_M&65sA*#o(rFH)7*+&l^T&nt{9LmzaYTCGV zQbnz44@zfr5bclQVPpK4tSr0M@g^Eyb^ZyN`MEjXjZ3PDQaeNL!-f5}5DH0Rjvu9x z1sPAnb$y-Pty{^VK|IpX2xFC&F#Y)&Y5@g1tLMZU+5K7dVV||u?UnJ#im#0#zOab3 z>GmzZz6_n5&-bH^<~Vzfi<|1@TOgE_e)fGcg$2!GN3QE;^(q8WLmn)_e?~?|;_XS* z(z@LRhy7(uzLQ{$2u`I=PEJhHbb8L2Z3&W`?n~Z*gA?LnWf*F!i1>=%=)?W3VKf?r zTH=I2Td8N8o}QM4+=76OPGgsUaj;Jm^&*B93$LD5Bp>yyE8EvwE4g?b4h^8dNVPu{ zti*qML}p1hTN4u#Z>9I|-WAyP=Rsf5*3>jJGds;9wj9We@)!>h-6RYf>*%;|F6bh< z18La&M%xe^8V??XZ`IHTcCvUb@?F2)Aj)P$BfFQ|Zwsx;&c-G^erkQ8e+|0sy4z@k zy38A$RysO5KnqX5Jr+Uzeypq8|Ko~HER<$VBcml>84ts*{05>SnW0|!fTphQjdp|V zvbmc(3t_>*#GQ6DD;wM4Tt?2+^fa5amym$KBb3k9kh|#C+1FeBQ@#%~HzqcwD0R7` zf@M(ku>$5z)&67=5fQ<`!IRO*W=@x^3!~rvJOQl}DtVD@|JaHLG-^|kI5^X{5fR0x zp}7?g($kC`Gm(7OkgxN&9Q*dPE3yHVzC@8y?X>Rw1xwj-LM0IbfQD77#I!ziVPOHF zgInX>u&j(zwU-R;u z4)%5+M25@Va|o;3+a8`NWn~gKZ{Cx!X2L!lBVzgCdn41RoF8{v71JW&*s?lzFZ34T zjF8_R0|0gcdU9InrS4$g0 zp#iH;AWK5HyiBsiLB?;vofioXv0hNj)o@ zfyg2jzrMHDF1x?py|c4Zb+}KMbZ#I{c+VsUO;8NMgT9Z7a)X)$(1qK$^0&#Y27C8P z!Mz|>FDvMluuJXITk$@{_lbNIg;S1vHw6R)BqYi{d>HA0?y^{j)6O=SmA;Sdcy~ji z$bOjDe%PfOaZx~?a6X>j^k;+VSyonj75b2lQ;jj?XQ)@brt9qVCxRK>ZjBx{2Oq-^z=FC&{4#S<#k#^Meo6L z7cXL6X1fq^BG4(hxVSR1vw4MtTsl6;xevKUZ+)f@u3N=b9k{l}3QM{zG&DDN&$<9C zPl6{YaU8E8zI^fGsJa{tB@n7!Qi;$3LN5p^9fW%|^A#3Iy(yg;H+rX*=Dk!peXvd&7pbDf7%NYBVHH8ssCUn+w{9~^uR{gv$G zNjrRnxU8(Kgv2gvS7Sp%AN=t*(|Vt+wGIWE$mnP^K%4XD&qED>+%k4%n1xjTn38e` ztHo~g>O+^4NLU&`<{bTiB|K2TeJotdQzOgkw_Uw+dm#5o4YPekGHxEwP}hX$BNClk zT7GB^Ik}^ZDe)z`d8)Ca&)u)Y-+BLxja_RB0ae=%<~?cFu)3%GF{-OtiQ(blqIeI5 z$|T0`VXto5ot2Lla~w-L+?$5MFC!zP=Eo1HbZg&F(CpF5-XOj0d#aFvq(ZY4{|8Cs ze{L2IgsG&rr$<;wsLxg;t$Ws~lxhDYKgqV7b!;k}vqVC*$*s6n2!Y|@VH1%!SaPa0 zslQxcL0abROk?H|kjZ_!Q<)4Hu=Ik?PjF>=!f_uGmz$d-TVo}KvASgee{d+c`5 z+JUcuee${&)+k3bM%5y}-$Wn=F5YSN&Tch)*s!f)Syaha@Sc?aF4r7Z50S>&cPHf9HvU+kN@bhESIns?Hjffc0 zVH(j>Pc*Xyy`gOF`VJ*K z1O9V>){H#NhAT?4MH_vlVF0%q2O)%l>3Nt$QNJNpC*Q)z^EoxOElE}ua24+jE-vrQ zeoNx!BC$oVz2VyI>@0w#w#G&X4uBU4B6fNX4$A>yUvTpZ3JS`v865%4>T}bVy5TE4 zE%J9@kUA${0kIiG!&d3gas-6EHs)MM8`2PQZp}Q!?w5w!B$#B@3GZycqgAwefja3iYjpVvu;SskLfllTNihKgcn!vVBpG^`cS zJ}2y7ToklWg=^ls_o^6i;l`IYx>u77s>@C+YP%rGx=dc0hXZZ>9JroDlm|Vzh4rM?IeD)PPQ*ouGr4XLf zl$7`H-`6j+iL4ndnN5w8*lpO)wTif&wP`D3Rql$JjW|afFdOub;7*XfY@p4~&Q8an zTH@eoX9oagt|M6?j78jOrXv}dU8+Rx*rTNb0OQ@ecY~;M1j=ougB@!mdqh%<&h=#M z@9!u1Zt7~% zaJ2!nAtyH+hZ7Y)8tPkGT2{vE)#F4EGPRU^72)ymzb6N3H#ojMb@v~-aUjC!;1GYX z&o?jWE%u-ezzJ|L!1h4hf;z~>z!dWH%oU}Hi3wOFIeU6~dRx4>pv%ky-H$*s{P^+X zVTw{CO#tnxo1UJYbJ$rHmIW6HI}v?lszIB=Sk+V@Mlv(Gce-u(u>x|WC6{b($f2YBO;0cFw43x8F)&Hi{Q}5mNE-o%EAwe41%k9Zy4XhU6kE0oh z_UXv?KdY;&@gmUAuW@iRc?)kvtcCdfs(h$%1n@V*es6hcKYH{?Uj7Hn!Za*mP_+Zw zWe@jss&*r{Y&3ONOzpdg#vh0x;HCz=v$C)UyYs$V1Z*H&VKzb1-3a=A zXJ_X{;cW;)c-9u6GJcmhu5t@YNmT%`ld_5K-}^FHFd3fpr73^JPu4!pPoQbPZF+-% z?jNz!@GC|3M^oX;e@p#7N0(kcbJN8dUI6fp@I*19r>6%RARchDtp?N<=(Fwd;;>r- zRcQ1u5fA(;&{MrfOr_WQOj%i(VYwUNg`LVS0uq|wQB)5UA`gjGhvih`nVFgI2u|U^ z2g2X-12Y7pShf+i?8}$y+}sP0R3}fK3>oXYcC_4u4AKOSCB}`Rb6@pymtqfox)Pb_ zdrp$>Amv|}mS&5ib5>Eg`#a(9JJtq^b59xSIXUI2rL7q$o|XTDlyq~poAcVW&&kPh zm5o-A?r|b^OwwL1DM*!Z5IF{Rl@$ltU(2Q z&!hU7=xBfm0)!xqG_}Rfl%O7){Y86px#!vx03YbY0T_&Gf8{7>`if7G2Wl# zuW;M{4m*CA&Yi(+lhI*vIditRU*Y@t=bpfyTPJ2oN_w9r>0n&@$C>nh=Wc(Ii~q;2 zkZeeuB(u}0lO(DqwuuWH-fyC0z?15=cl4jQjoYjpK8%g`6Ji%xnmafl>CIj8@s_>( zp!tLaXBt}wRoLS)JEUdUNgbvEOp$(>-TbqX#P&m6yY|xWhxYldn+^_&$q1_}(ajsx z41<0W)=gNPT6%H63_d?UUm3%7%1)lyZhtfG`D&hSL@MSa>5zyQcbexK{a`~Qga7fI%M#l=;`a+h@o-BHXLhW1|d(7gM;-^vFq zsln;Oh*x-4v~5x^64bpDy^(R4=U3=Hx_U8b->;V?A=KVuh6Jv^aZc4zSE~~FWghBiTeQ;do6MH}2>WmETkvQcHDZBbFoA1q=6V4| z^uqpP5{B&Lu!N0j$|TKihqb_ooaXcl32TFrk5-9U6+9=OIlUMCOJd4Dc7Xq-w}`DD zpIzW5xoz6=*R`O(vHUm5`D7ghJY_)*Q&We& zdet@S(mKS?!NDOQkT=CoI7#kZ4O&*9uL^t$%sE$;Dgh~k? zno76;=xd>&B1|FC^MWO2uZmR2&zPL?Et?IXb#;5AJCXinLzTts*L-_U>kU^5_SGgs z1#hPHRx;(K+NpEXO$Ln@Lf`nF?o8gbDE_$xAn3&lazfC-!2v^ddR7(>FRz1TDvnzz%W`6;#^zV>x^wo}&1ml6nj5cfN)J6R z{CMw;@lq(I{pN_5dskYV-!#9sO%d14J2}>^cA*4*rVs!WJUPH-=MOFdxmIas(|XZS z<@oXA6Cu01y8{CQ;o-Ey;%{g#^YN+Y;I`&*>OZevx^xLf*pd=435kL75JEL>eghBz zXdA$)MsI0Y^C(92zo^oslkZEImTlp2EtP(HH=h0b<-FhohSGdmd2+1L`m0}q2_HW- z?bn2E)YqHbDj7l*$DJ6owiStMwVR=O8F=H4f6*|**-h^ZM}mad9;t(0PbpV)-3icS6Mqn3q=yO%B< zM>8;KmoRnVcMa`K8U=g$ymX{%VyzJ=`yGQ48EIUM{@fB7}A*yh3wwF zhh8q?t~@+{ktgQ|P3smKk=9*TTl<(hs*P1M|Ce1v#p^8V*#0jkiIn*(do9bawyl9houLGy3>s} z9iz3qf1J>N723>`_sWpNpPXiaDZ206G&WsNM@L6bkBOBPB@!p;{Xo_Trbt^69Zk(U zii(Z>R_5lPyJt_+&}NA4i~hV;8(9+ z1qTZwD4}A!d^y{tvtFP?=srnu{#F>t-z#$et-@AKELQC(MX_1i)Mj{k42U^cUG?6&JQtw`4*QcwM~ z*}c}OOBp>Mx{cREPo6g?#mZd1wf#d&Ij?OZIvR07W{!-JFPpZ2g5izsd*jDO7W^>* zwDKNvi*6Cs;eF-ys#YG&?oyt-I9nl+evXlkR&=~=HY;)O#N_dACGj`X)cw2##sf2y z9=H1O{6_ALBu68kl^pNnFkni--{P)Rmuo5xn4I+exR0Uj*>LqV|Lhi2WAknO#e&7J zB=n=n$VjI3-I?%PJ5RKH4N)rJ1{de(&klS|I#xzHfVrQFgQAWK(vlJ@sy828*^7MR=I=4pIO9o^v(|Rlyw@0T9}jS?$^^WrQ>D|Q8@g1 z3Kg|CCl#CF3A-P4J%e^c^-q-SQmpC-1qC|=-=vwo-0zpzYYP?52GFvOeiLUwg$S{jB#(}h&Ff@DaNB7LqhDaRk51S&FpM9NLu$S@uR!m*_?hzTANq0q= z5u(&==KL`j+N6sE=ur_;tP%O>Y6*J#%~(_Q#@&L1*4Z!V8S`iQ5rK`1j^#s$KN^N@ zd*@v~YiZ%H@w$(fp6?)E<0wc_vA=cUv~Ix3Km86+VZ@12gP>;DCyDD4zCOh>-6uVd z`T33hDFzs8zineZQ6>_$EYt@$0Z+_sp6ZLIE*@NTKd3i; z76q`>+gcuJj%p!o8}HCFpd|ZGX7@jyJb&Fr^WTEHq}~1YR_dYQ(#q%Hf-soVY%+Uo zk_1pf@l;*i-J< zszJqJ1cGU+6KDrdP%b?PZzCfMO{$Nx*V?0rgEGFm4FUg(nTumaTUpJ#ICBLBlYMYq zSFCc**RTBr)*8UIK({wDn*hFo6A}9>(Z8QGFh-FV*2(DdQ5l2UWo+K_&ivC)FQw4v z&>Q`|!ukMDbGVVU$eE)h9ej`>QkJw*TAoEm$~2i?Qh)C__rOY3fOm00 zY~ebt#Lsmw{_dvbI#W6E5a9WCj%ZB{)>CEixO_YYdeq3y< zgv(3^s4Xn;H5Qp|joSM^6s6i0R%3{g4O>tkBq-<%7wk?&L~Qwv1~33|#fOf2TC*Oe zx=AO$H^x!b@^Lk6t3RIiNr$MBcXF3a`;>o?zVdq+m2WwSB5AS4t_f7q!AoIB)ND#{ zMkp$lhSlsNS(oi#IS5o{2Owoh6}+qPAjX2;)@$Xrd}8+fJOXrBa1;STI`W9z zKLsyJN}$-Tm0!VxA32WnO8?XWW*3x5n3*aB1#;y4Nde<84wdWp!F9AXG$P);n<#Jn zznN96zQ_$RvA$WC0o$TrnX(=m;TTmo6!5solOwu~ykkL~??9XH<-8DriVWpc7xYlCrU7^Qg*i|MHb9 zI@t!+#iILWGmjS+t-z~g8YazQU;pzb9+ciyw!(i> z*e!enE;2Ur;LF1lkoILwf1bt~CB?_HFf$Kgz1@eY;G98H7z9cTw61L9s>)BFYPaOB z6%Qu7dE*Ea7NqO$j<0B^)lw&jwDIE3QGCXgV2W89DnD|+fjYUaw7KeBR;#1Dn8aEX z@1WR$P2Y<3ktyOJ!?tICtDH~xmp#!H)BfpCLF z-3c3~th!IwjkWJ_M%nKV+hb)9xWBt=$pz?>pJ6x{+LHA*Ivr+D&`=X*@DR$ge!k|4CWr_-h=8V*o8OFJXg8cc}3b6?Y#vI++mBRCKP5MCfv z9*tiU4R63WwWB00Dk=)37}&_B@w$f;u=P-3S8IY%mv)H6cHn-2um{Tj z=#iKW?ehi~q2j+0d{UYL5wrw8s`5YM*>fI$dkP%5lZunm>SFQm(*E$<_BfC!z%E41 zB6jQM&2-_gB?mE>mV0clpyEJ1n}S&4HYjlbN5k4wD{^|JLUZ+_t6TtaN2@R*D2BAw z&wh!HF5TXRUB&CLnUuX2`1gZ4$!We8p2PHmtu4JcAL^tA_fza+SK<=2RM5V+Mk3A) zng(b5mKk>R!k|S*=jb!_593DWyxQCGnKo;j8L7cC7nlssgKaX$XYf~Inw5itLrSm) z;wCruIeAQwdrL+<*xd-QW3nJdDdn7XD+%>MM+~8GLJ06;oM5_eVF#WL7}>@`P`C;U z3xVhTr=8jWp$NnaD5t?MU-sudQ9z-x33}o?AnqCH=?#F*Cy0ufo{@1z+U#G5dCw79 zupyRpbv+uUv)`$R0S_<;Q{cDKeej?oR#{z5Em6{a3Hsg@S#Un0Jv=<%XvkPwwBIsh zCB;3#nwQLGwaBf$Ov>C;I+ajRa zPyX@8X~tV4XJzwKPm+>CZb=IY3i9#gD7f{-Zx(^?ML=BK6QYF8cfAvWB9MxC3d`#Z zJ`C6?EbR6_dkQzYKHmq?+K024Vd#6al~7xZVEy0{8=xnS<>uyQ5kbTw}sE0hnQDQE2i?eLWH>d3F;r*>AJ57j`f3f_`LY<$9O025l zC81^O;PWcPs{D)6W+bam{yp-QK^mlAS#Ec#>7u7V!P!G2_;1ph@Z3udZdE1nn3 z+VGGP3A|!r9)KJw`3{e~%R3Vh`jGZTc5#hnpuEM(_?8iLR}@8;!7`cyQl=e*Bb2{5 zapzP*I@m_QW^G|%A>w5%2)?|u?j4!?$4{IfuFry1s;i@8#5e5oIc8=_a5Cmp9qdBM z0Otm3r!z}?{sTUk1 z^I5Sh+gZ9@>`v?;k3d_gDk*~8v8+Su@hH7~Jg(1f{$!CUm4SK%OV6vZ!7(RUEl+ShlzAAk%?T<+p@r!QA2M$Tq3a#{q z)acB;Ox2XeUk@9vOGI}+&>1v~(_6b;D6Dn^50%j+@z>c4bdHQn_M;FI~T!>Mgga zTU?*j?IKT}*8T8NxMfC;C~-&ePCe6UrBZWWLp#rhf7XoVZtp19*3NAVOY_emk@rBs zMY%gXE+Mov2UBi%Dctq=MEmhNU%l+5yWItOACDut3l5v^hPkeAc=;7>XBCubIAoMwCq zW|coxR&L&DlEYS;P@THj)X3Y^dckLd(I5Xi1Ag>Q+?*E$wAf9_5~?|-^3T5l!NY&MY~Z7LKKPpxd?U}b3MD!18xtVX#p zKR5kVUc{k{nUMbR=g;%iSQvhcJ9_heMO4ygzKf3V9rJMT_=Nw^-gK9*Q8L;=>yaU% zFe}-J{GpD~gisH?~&+G@0YrSt23c1%U5S(-(Cr}qicize$~c;tl(%(#rhOS)LPAR6uH z=z1DPgLpJA*ZAYTXVnF>ujJygg^J2{uaIq?V*d?ZK?_Q9iV!xjJFp7jUz*zM7o=3( znoMqy1}QdZB+IF!91&WMeT%Hc^(I0C%yR)?Y0kf~C0Bj^nj%65 zWo0Jn-+2|&VJ#t>(St&Udw^;+4Oetet6zp^9T)}H?8%(zvtb{1oCv@9mOsy?LKYNOb#I!nTwS9fv z)O9w&D5rZifjY>5YdF+ovwR)5Ez~;h)_keRk*0M<(4((^92~5JrYmbSp)X#)nzt6v zm#~?BaLTT%YbGSH;r)_4xx0(1xvurn*9eN5KuUHY1fBdklUN_q@{nYr5P}mU7U|Y! zB|uef@x0OOj64gzd~GlLG$}h~a1li`nP4@r8&rgj(?(BW$!+4|Ow-(P#9G=HhU@n0lA! zCr;kK6Ax<}Y`W#4(^uHu|F#b7PsE3p8tHUC@|1ypN#2sYS(ig z@rbvUdGasjR`Z^PKk%du&W38#D3t6<=q6|mjOKm(v5e|;+}}mUM)|IKX#eDAzjODF znP!+#Y{xG3g{T<6^}ga^azya!S=36g$gkc8>Dr%L`8_yGR>{kl<$O|%l1s+d^pa2f zwVO*w?HIa1Vw&3%l0QpD zIvij`9W*rVRy>`aU-JZqxy6V`3riiaqgsuu-dupFV{WxT_-utb?%ZH}t%PUtGdBUU zIHh}*Z*N5cVa4+)P1;grM>j_P#Y`er2%%%BYxM9D3-fSVt2gqA6c75;jFT0e-{WJ| z>@l;-r}En8*1dv;=zDo2(k*k^SkIM_w9PL2uaT?UX@QKhzE&K|40NiHf4yoosoN=l=_m3y6#W literal 0 HcmV?d00001 diff --git a/core/src/components/segment-view/test/disabled/segment-view.e2e.ts-snapshots/segment-view-disabled-md-ltr-Mobile-Firefox-linux.png b/core/src/components/segment-view/test/disabled/segment-view.e2e.ts-snapshots/segment-view-disabled-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..1d84031d3e4e12c4b76450ff85da7b23c902c79a GIT binary patch literal 23920 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 So&h{box#)9&t;ucLK6VQ2g$Vn literal 0 HcmV?d00001 diff --git a/core/src/components/segment-view/test/disabled/segment-view.e2e.ts-snapshots/segment-view-disabled-md-ltr-Mobile-Safari-linux.png b/core/src/components/segment-view/test/disabled/segment-view.e2e.ts-snapshots/segment-view-disabled-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..697b8ebfe9ef2f8440a4f523efe386916d0cc145 GIT binary patch literal 15953 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 XDpGOmtxfPyHkRxwB`8wb!1uoa;1YN> literal 0 HcmV?d00001 diff --git a/core/src/components/segment/segment.tsx b/core/src/components/segment/segment.tsx index 3ddf8645896..074c2586b87 100644 --- a/core/src/components/segment/segment.tsx +++ b/core/src/components/segment/segment.tsx @@ -7,6 +7,7 @@ import { createColorClasses, hostContext } from '@utils/theme'; import { getIonMode } from '../../global/ionic-global'; import type { Color, StyleEventDetail } from '../../interface'; +import type { SegmentViewScrollEvent } from '../segment-view/segment-view-interface'; import type { SegmentChangeEventDetail, SegmentValue } from './segment-interface'; @@ -27,6 +28,16 @@ export class Segment implements ComponentInterface { // Value before the segment is dragged private valueBeforeGesture?: SegmentValue; + private segmentViewEl?: HTMLIonSegmentViewElement | null = null; + private lastNextIndex?: number; + + /** + * Whether to update the segment view, if exists, when the value changes. + * This behavior is enabled by default, but is set false when scrolling content views + * since we don't want to "double scroll" the segment view. + */ + private triggerScrollOnValueChange?: boolean; + @Element() el!: HTMLIonSegmentElement; @State() activated = false; @@ -78,13 +89,41 @@ export class Segment implements ComponentInterface { @Prop({ mutable: true }) value?: SegmentValue; @Watch('value') - protected valueChanged(value: SegmentValue | undefined) { + protected valueChanged(value: SegmentValue | undefined, oldValue?: SegmentValue | undefined) { + // Force a value to exist if we're using a segment view + if (this.segmentViewEl && value === undefined) { + this.value = this.getButtons()[0].value; + return; + } + + if (oldValue !== undefined && value !== undefined) { + const buttons = this.getButtons(); + const previous = buttons.find((button) => button.value === oldValue); + const current = buttons.find((button) => button.value === value); + + if (previous && current) { + if (!this.segmentViewEl) { + this.checkButton(previous, current); + } else if (this.triggerScrollOnValueChange !== false) { + this.updateSegmentView(); + } + } + } else if (value !== undefined && oldValue === undefined && this.segmentViewEl) { + this.updateSegmentView(); + } + /** * `ionSelect` is emitted every time the value changes (internal or external changes). * Used by `ion-segment-button` to determine if the button should be checked. */ this.ionSelect.emit({ value }); - this.scrollActiveButtonIntoView(); + + // The scroll listener should handle scrolling the active button into view as needed + if (!this.segmentViewEl) { + this.scrollActiveButtonIntoView(); + } + + this.triggerScrollOnValueChange = undefined; } /** @@ -118,9 +157,13 @@ export class Segment implements ComponentInterface { disabledChanged() { this.gestureChanged(); - const buttons = this.getButtons(); - for (const button of buttons) { - button.disabled = this.disabled; + if (!this.segmentViewEl) { + const buttons = this.getButtons(); + for (const button of buttons) { + button.disabled = this.disabled; + } + } else { + this.segmentViewEl.disabled = this.disabled; } } @@ -132,6 +175,12 @@ export class Segment implements ComponentInterface { connectedCallback() { this.emitStyle(); + + this.segmentViewEl = this.getSegmentView(); + } + + disconnectedCallback() { + this.segmentViewEl = null; } componentWillLoad() { @@ -170,6 +219,10 @@ export class Segment implements ComponentInterface { if (this.disabled) { this.disabledChanged(); } + + // Update segment view based on the initial value, + // but do not animate the scroll + this.updateSegmentView(false); } onStart(detail: GestureDetail) { @@ -192,6 +245,7 @@ export class Segment implements ComponentInterface { if (value !== undefined) { if (this.valueBeforeGesture !== value) { this.emitValueChange(); + this.updateSegmentView(); } } this.valueBeforeGesture = undefined; @@ -208,7 +262,7 @@ export class Segment implements ComponentInterface { this.ionChange.emit({ value }); } - private getButtons() { + private getButtons(): HTMLIonSegmentButtonElement[] { return Array.from(this.el.querySelectorAll('ion-segment-button')); } @@ -224,11 +278,7 @@ export class Segment implements ComponentInterface { const buttons = this.getButtons(); buttons.forEach((button) => { - if (activated) { - button.classList.add('segment-button-activated'); - } else { - button.classList.remove('segment-button-activated'); - } + button.classList.toggle('segment-button-activated', activated); }); this.activated = activated; } @@ -293,6 +343,8 @@ export class Segment implements ComponentInterface { // Remove the transform to slide the indicator back to the button clicked currentIndicator.style.setProperty('transform', ''); + + this.scrollActiveButtonIntoView(true); }); this.value = current.value; @@ -312,6 +364,74 @@ export class Segment implements ComponentInterface { } } + private getSegmentView() { + const buttons = this.getButtons(); + // Get the first button with a contentId + const firstContentId = buttons.find((button: HTMLIonSegmentButtonElement) => button.contentId); + // Get the segment content with an id matching the button's contentId + const segmentContent = document.querySelector(`ion-segment-content[id="${firstContentId?.contentId}"]`); + // Return the segment view for that matching segment content + return segmentContent?.closest('ion-segment-view'); + } + + @Listen('ionSegmentViewScroll', { target: 'body' }) + handleSegmentViewScroll(ev: CustomEvent) { + const { scrollRatio, isManualScroll } = ev.detail; + + if (!isManualScroll) { + return; + } + + const dispatchedFrom = ev.target as HTMLElement; + const segmentViewEl = this.segmentViewEl as EventTarget; + const segmentEl = this.el; + + // Only update the indicator if the event was dispatched from the correct segment view + if (ev.composedPath().includes(segmentViewEl) || dispatchedFrom?.contains(segmentEl)) { + const buttons = this.getButtons(); + + // If no buttons are found or there is no value set then do nothing + if (!buttons.length) return; + + const index = buttons.findIndex((button) => button.value === this.value); + const current = buttons[index]; + + const nextIndex = Math.round(scrollRatio * (buttons.length - 1)); + + if (this.lastNextIndex === undefined || this.lastNextIndex !== nextIndex) { + this.lastNextIndex = nextIndex; + this.triggerScrollOnValueChange = false; + + this.checkButton(current, buttons[nextIndex]); + this.emitValueChange(); + } + } + } + + /** + * Finds the related segment view and sets its current content + * based on the selected segment button. This method + * should be called on initial load of the segment, + * after the gesture is completed (if dragging between segments) + * and when a segment button is clicked directly. + */ + private updateSegmentView(smoothScroll = true) { + const buttons = this.getButtons(); + const button = buttons.find((btn) => btn.value === this.value); + + // If the button does not have a contentId then there is + // no associated segment view to update + if (!button?.contentId) { + return; + } + + const segmentView = this.segmentViewEl; + + if (segmentView) { + segmentView.setContent(button.contentId, smoothScroll); + } + } + private scrollActiveButtonIntoView(smoothScroll = true) { const { scrollable, value, el } = this; @@ -492,7 +612,13 @@ export class Segment implements ComponentInterface { this.emitValueChange(); } - if (this.scrollable || !this.swipeGesture) { + if (this.segmentViewEl) { + this.updateSegmentView(); + + if (this.scrollable && previous) { + this.checkButton(previous, current); + } + } else if (this.scrollable || !this.swipeGesture) { if (previous) { this.checkButton(previous, current); } else { diff --git a/packages/angular/src/directives/proxies-list.ts b/packages/angular/src/directives/proxies-list.ts index 93d0cc13ad9..b61d09669ca 100644 --- a/packages/angular/src/directives/proxies-list.ts +++ b/packages/angular/src/directives/proxies-list.ts @@ -69,6 +69,8 @@ export const DIRECTIVES = [ d.IonSearchbar, d.IonSegment, d.IonSegmentButton, + d.IonSegmentContent, + d.IonSegmentView, d.IonSelect, d.IonSelectModal, d.IonSelectOption, diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index e384f56c531..675c37bd1c1 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -1987,14 +1987,14 @@ This event will not emit when programmatically setting the `value` property. @ProxyCmp({ - inputs: ['disabled', 'layout', 'mode', 'type', 'value'] + inputs: ['contentId', 'disabled', 'layout', 'mode', 'type', 'value'] }) @Component({ selector: 'ion-segment-button', changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['disabled', 'layout', 'mode', 'type', 'value'], + inputs: ['contentId', 'disabled', 'layout', 'mode', 'type', 'value'], }) export class IonSegmentButton { protected el: HTMLElement; @@ -2008,6 +2008,57 @@ export class IonSegmentButton { export declare interface IonSegmentButton extends Components.IonSegmentButton {} +@ProxyCmp({ +}) +@Component({ + selector: 'ion-segment-content', + changeDetection: ChangeDetectionStrategy.OnPush, + template: '', + // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property + inputs: [], +}) +export class IonSegmentContent { + protected el: HTMLElement; + constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { + c.detach(); + this.el = r.nativeElement; + } +} + + +export declare interface IonSegmentContent extends Components.IonSegmentContent {} + + +@ProxyCmp({ + inputs: ['disabled'] +}) +@Component({ + selector: 'ion-segment-view', + changeDetection: ChangeDetectionStrategy.OnPush, + template: '', + // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property + inputs: ['disabled'], +}) +export class IonSegmentView { + protected el: HTMLElement; + constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { + c.detach(); + this.el = r.nativeElement; + proxyOutputs(this, this.el, ['ionSegmentViewScroll']); + } +} + + +import type { SegmentViewScrollEvent as IIonSegmentViewSegmentViewScrollEvent } from '@ionic/core'; + +export declare interface IonSegmentView extends Components.IonSegmentView { + /** + * Emitted when the segment view is scrolled. + */ + ionSegmentViewScroll: EventEmitter>; +} + + @ProxyCmp({ inputs: ['cancelText', 'color', 'compareWith', 'disabled', 'expandedIcon', 'fill', 'interface', 'interfaceOptions', 'justify', 'label', 'labelPlacement', 'mode', 'multiple', 'name', 'okText', 'placeholder', 'selectedText', 'shape', 'toggleIcon', 'value'], methods: ['open'] diff --git a/packages/angular/standalone/src/directives/proxies.ts b/packages/angular/standalone/src/directives/proxies.ts index 5fac940a661..a30385ead5c 100644 --- a/packages/angular/standalone/src/directives/proxies.ts +++ b/packages/angular/standalone/src/directives/proxies.ts @@ -65,6 +65,8 @@ import { defineCustomElement as defineIonReorderGroup } from '@ionic/core/compon import { defineCustomElement as defineIonRippleEffect } from '@ionic/core/components/ion-ripple-effect.js'; import { defineCustomElement as defineIonRow } from '@ionic/core/components/ion-row.js'; import { defineCustomElement as defineIonSegmentButton } from '@ionic/core/components/ion-segment-button.js'; +import { defineCustomElement as defineIonSegmentContent } from '@ionic/core/components/ion-segment-content.js'; +import { defineCustomElement as defineIonSegmentView } from '@ionic/core/components/ion-segment-view.js'; import { defineCustomElement as defineIonSelectModal } from '@ionic/core/components/ion-select-modal.js'; import { defineCustomElement as defineIonSelectOption } from '@ionic/core/components/ion-select-option.js'; import { defineCustomElement as defineIonSkeletonText } from '@ionic/core/components/ion-skeleton-text.js'; @@ -1820,14 +1822,14 @@ export declare interface IonRow extends Components.IonRow {} @ProxyCmp({ defineCustomElementFn: defineIonSegmentButton, - inputs: ['disabled', 'layout', 'mode', 'type', 'value'] + inputs: ['contentId', 'disabled', 'layout', 'mode', 'type', 'value'] }) @Component({ selector: 'ion-segment-button', changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['disabled', 'layout', 'mode', 'type', 'value'], + inputs: ['contentId', 'disabled', 'layout', 'mode', 'type', 'value'], standalone: true }) export class IonSegmentButton { @@ -1842,6 +1844,61 @@ export class IonSegmentButton { export declare interface IonSegmentButton extends Components.IonSegmentButton {} +@ProxyCmp({ + defineCustomElementFn: defineIonSegmentContent +}) +@Component({ + selector: 'ion-segment-content', + changeDetection: ChangeDetectionStrategy.OnPush, + template: '', + // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property + inputs: [], + standalone: true +}) +export class IonSegmentContent { + protected el: HTMLElement; + constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { + c.detach(); + this.el = r.nativeElement; + } +} + + +export declare interface IonSegmentContent extends Components.IonSegmentContent {} + + +@ProxyCmp({ + defineCustomElementFn: defineIonSegmentView, + inputs: ['disabled'] +}) +@Component({ + selector: 'ion-segment-view', + changeDetection: ChangeDetectionStrategy.OnPush, + template: '', + // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property + inputs: ['disabled'], + standalone: true +}) +export class IonSegmentView { + protected el: HTMLElement; + constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { + c.detach(); + this.el = r.nativeElement; + proxyOutputs(this, this.el, ['ionSegmentViewScroll']); + } +} + + +import type { SegmentViewScrollEvent as IIonSegmentViewSegmentViewScrollEvent } from '@ionic/core/components'; + +export declare interface IonSegmentView extends Components.IonSegmentView { + /** + * Emitted when the segment view is scrolled. + */ + ionSegmentViewScroll: EventEmitter>; +} + + @ProxyCmp({ defineCustomElementFn: defineIonSelectModal, inputs: ['header', 'multiple', 'options'] diff --git a/packages/react/src/components/proxies.ts b/packages/react/src/components/proxies.ts index 14f81d30ebd..a9f1416ee22 100644 --- a/packages/react/src/components/proxies.ts +++ b/packages/react/src/components/proxies.ts @@ -61,6 +61,8 @@ import { defineCustomElement as defineIonRow } from '@ionic/core/components/ion- import { defineCustomElement as defineIonSearchbar } from '@ionic/core/components/ion-searchbar.js'; import { defineCustomElement as defineIonSegment } from '@ionic/core/components/ion-segment.js'; import { defineCustomElement as defineIonSegmentButton } from '@ionic/core/components/ion-segment-button.js'; +import { defineCustomElement as defineIonSegmentContent } from '@ionic/core/components/ion-segment-content.js'; +import { defineCustomElement as defineIonSegmentView } from '@ionic/core/components/ion-segment-view.js'; import { defineCustomElement as defineIonSelect } from '@ionic/core/components/ion-select.js'; import { defineCustomElement as defineIonSelectModal } from '@ionic/core/components/ion-select-modal.js'; import { defineCustomElement as defineIonSelectOption } from '@ionic/core/components/ion-select-option.js'; @@ -131,6 +133,8 @@ export const IonRow = /*@__PURE__*/createReactComponent('ion-searchbar', undefined, undefined, defineIonSearchbar); export const IonSegment = /*@__PURE__*/createReactComponent('ion-segment', undefined, undefined, defineIonSegment); export const IonSegmentButton = /*@__PURE__*/createReactComponent('ion-segment-button', undefined, undefined, defineIonSegmentButton); +export const IonSegmentContent = /*@__PURE__*/createReactComponent('ion-segment-content', undefined, undefined, defineIonSegmentContent); +export const IonSegmentView = /*@__PURE__*/createReactComponent('ion-segment-view', undefined, undefined, defineIonSegmentView); export const IonSelect = /*@__PURE__*/createReactComponent('ion-select', undefined, undefined, defineIonSelect); export const IonSelectModal = /*@__PURE__*/createReactComponent('ion-select-modal', undefined, undefined, defineIonSelectModal); export const IonSelectOption = /*@__PURE__*/createReactComponent('ion-select-option', undefined, undefined, defineIonSelectOption); diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index 0d93a32c46d..7dd5812ebbc 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -67,6 +67,8 @@ import { defineCustomElement as defineIonRow } from '@ionic/core/components/ion- import { defineCustomElement as defineIonSearchbar } from '@ionic/core/components/ion-searchbar.js'; import { defineCustomElement as defineIonSegment } from '@ionic/core/components/ion-segment.js'; import { defineCustomElement as defineIonSegmentButton } from '@ionic/core/components/ion-segment-button.js'; +import { defineCustomElement as defineIonSegmentContent } from '@ionic/core/components/ion-segment-content.js'; +import { defineCustomElement as defineIonSegmentView } from '@ionic/core/components/ion-segment-view.js'; import { defineCustomElement as defineIonSelect } from '@ionic/core/components/ion-select.js'; import { defineCustomElement as defineIonSelectModal } from '@ionic/core/components/ion-select-modal.js'; import { defineCustomElement as defineIonSelectOption } from '@ionic/core/components/ion-select-option.js'; @@ -745,6 +747,7 @@ export const IonSegment = /*@__PURE__*/ defineContainer('ion-segment-button', defineIonSegmentButton, [ + 'contentId', 'disabled', 'layout', 'type', @@ -753,6 +756,15 @@ export const IonSegmentButton = /*@__PURE__*/ defineContainer('ion-segment-content', defineIonSegmentContent); + + +export const IonSegmentView = /*@__PURE__*/ defineContainer('ion-segment-view', defineIonSegmentView, [ + 'disabled', + 'ionSegmentViewScroll' +]); + + export const IonSelect = /*@__PURE__*/ defineContainer('ion-select', defineIonSelect, [ 'cancelText', 'color',