From 580432530e2a2e9c2a3a7dd269b74dc337ca8b02 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Thu, 6 Mar 2025 12:21:50 -0800 Subject: [PATCH 01/13] docs(select): add helperText and errorText section --- docs/api/select.md | 10 ++++ .../angular/example_component_html.md | 19 ++++++ .../angular/example_component_ts.md | 29 +++++++++ static/usage/v8/select/helper-error/demo.html | 59 +++++++++++++++++++ static/usage/v8/select/helper-error/index.md | 24 ++++++++ .../v8/select/helper-error/javascript.md | 44 ++++++++++++++ static/usage/v8/select/helper-error/react.md | 54 +++++++++++++++++ static/usage/v8/select/helper-error/vue.md | 56 ++++++++++++++++++ 8 files changed, 295 insertions(+) create mode 100644 static/usage/v8/select/helper-error/angular/example_component_html.md create mode 100644 static/usage/v8/select/helper-error/angular/example_component_ts.md create mode 100644 static/usage/v8/select/helper-error/demo.html create mode 100644 static/usage/v8/select/helper-error/index.md create mode 100644 static/usage/v8/select/helper-error/javascript.md create mode 100644 static/usage/v8/select/helper-error/react.md create mode 100644 static/usage/v8/select/helper-error/vue.md diff --git a/docs/api/select.md b/docs/api/select.md index 8a310608fce..0642c6e701d 100644 --- a/docs/api/select.md +++ b/docs/api/select.md @@ -253,6 +253,16 @@ import TypeaheadExample from '@site/static/usage/v8/select/typeahead/index.md'; +## Helper & Error Text + +Helper and error text can be used inside of a select with the `helperText` and `errorText` property. The error text will not be displayed unless the `ion-invalid` and `ion-touched` classes are added to the `ion-select`. This ensures errors are not shown before the user has a chance to enter data. + +In Angular, this is done automatically through form validation. In JavaScript, React and Vue, the class needs to be manually added based on your own validation. + +import HelperError from '@site/static/usage/v8/select/helper-error/index.md'; + + + ## Interfaces ### SelectChangeEventDetail diff --git a/static/usage/v8/select/helper-error/angular/example_component_html.md b/static/usage/v8/select/helper-error/angular/example_component_html.md new file mode 100644 index 00000000000..9e886c3311d --- /dev/null +++ b/static/usage/v8/select/helper-error/angular/example_component_html.md @@ -0,0 +1,19 @@ +```html +
+ + Apple + Banana + Orange + + +
+ + Submit +
+``` diff --git a/static/usage/v8/select/helper-error/angular/example_component_ts.md b/static/usage/v8/select/helper-error/angular/example_component_ts.md new file mode 100644 index 00000000000..ea3ff53e05f --- /dev/null +++ b/static/usage/v8/select/helper-error/angular/example_component_ts.md @@ -0,0 +1,29 @@ +```ts +import { Component } from '@angular/core'; +import { FormBuilder, FormGroup, Validators, ReactiveFormsModule } from '@angular/forms'; +import { IonSelect, IonButton } from '@ionic/angular/standalone'; + +@Component({ + selector: 'app-example', + standalone: true, + imports: [IonSelect, IonButton, ReactiveFormsModule], + templateUrl: './example.component.html', + styleUrl: './example.component.css', +}) +export class ExampleComponent { + myForm: FormGroup; + + constructor(private fb: FormBuilder) { + this.myForm = this.fb.group({ + favFruit: [false, Validators.required], + }); + } + + onSubmit() { + // Mark the control as touched to trigger the error message. + // This is needed if the user submits the form without interacting + // with the checkbox. + this.myForm.get('favFruit')!.markAsTouched(); + } +} +``` diff --git a/static/usage/v8/select/helper-error/demo.html b/static/usage/v8/select/helper-error/demo.html new file mode 100644 index 00000000000..09828e2803c --- /dev/null +++ b/static/usage/v8/select/helper-error/demo.html @@ -0,0 +1,59 @@ + + + + + + Input + + + + + + + +
+
+ + Apple + Banana + Orange + + +
+ + Submit +
+
+ + + + diff --git a/static/usage/v8/select/helper-error/index.md b/static/usage/v8/select/helper-error/index.md new file mode 100644 index 00000000000..c06eb8132a8 --- /dev/null +++ b/static/usage/v8/select/helper-error/index.md @@ -0,0 +1,24 @@ +import Playground from '@site/src/components/global/Playground'; + +import javascript from './javascript.md'; +import react from './react.md'; +import vue from './vue.md'; + +import angular_example_component_html from './angular/example_component_html.md'; +import angular_example_component_ts from './angular/example_component_ts.md'; + + diff --git a/static/usage/v8/select/helper-error/javascript.md b/static/usage/v8/select/helper-error/javascript.md new file mode 100644 index 00000000000..f3cc63c31c9 --- /dev/null +++ b/static/usage/v8/select/helper-error/javascript.md @@ -0,0 +1,44 @@ +```html +
+ + Apple + Banana + Orange + + +
+ + Submit +
+ + +``` diff --git a/static/usage/v8/select/helper-error/react.md b/static/usage/v8/select/helper-error/react.md new file mode 100644 index 00000000000..89c0c5d407a --- /dev/null +++ b/static/usage/v8/select/helper-error/react.md @@ -0,0 +1,54 @@ +```tsx +import React, { useRef, useState } from 'react'; +import { IonSelect, IonSelectOption, IonButton, SelectCustomEvent } from '@ionic/react'; + +function Example() { + const [isTouched, setIsTouched] = useState(false); + const [isValid, setIsValid] = useState(); + + const favFruitRef = useRef(null); + + const validateSelect = (event: SelectCustomEvent<{ value: string }>) => { + setIsTouched(true); + setIsValid(event.detail.value); + }; + + const submit = (event: React.FormEvent) => { + event.preventDefault(); + + if (favFruitRef.current) { + validateSelect({ detail: { value: favFruitRef.current.value } } as SelectCustomEvent<{ + value: string; + }>); + } + }; + + return ( + <> +
+ validateSelect(event)} + > + Apple + Banana + Orange + + +
+ + + Submit + +
+ + ); +} + +export default Example; +``` diff --git a/static/usage/v8/select/helper-error/vue.md b/static/usage/v8/select/helper-error/vue.md new file mode 100644 index 00000000000..ea20c69da3f --- /dev/null +++ b/static/usage/v8/select/helper-error/vue.md @@ -0,0 +1,56 @@ +```html + + + +``` From c0ff5e0ba77956a0a78a0dffc83a61220cd3cf42 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Thu, 6 Mar 2025 12:40:57 -0800 Subject: [PATCH 02/13] fix(select): add missing import, labels, and placeholders --- .../v8/select/helper-error/angular/example_component_ts.md | 4 ++-- static/usage/v8/select/helper-error/react.md | 2 ++ static/usage/v8/select/helper-error/vue.md | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/static/usage/v8/select/helper-error/angular/example_component_ts.md b/static/usage/v8/select/helper-error/angular/example_component_ts.md index ea3ff53e05f..30f7c014486 100644 --- a/static/usage/v8/select/helper-error/angular/example_component_ts.md +++ b/static/usage/v8/select/helper-error/angular/example_component_ts.md @@ -1,12 +1,12 @@ ```ts import { Component } from '@angular/core'; import { FormBuilder, FormGroup, Validators, ReactiveFormsModule } from '@angular/forms'; -import { IonSelect, IonButton } from '@ionic/angular/standalone'; +import { IonSelect, IonSelectOption, IonButton } from '@ionic/angular/standalone'; @Component({ selector: 'app-example', standalone: true, - imports: [IonSelect, IonButton, ReactiveFormsModule], + imports: [IonSelect, IonSelectOption, IonButton, ReactiveFormsModule], templateUrl: './example.component.html', styleUrl: './example.component.css', }) diff --git a/static/usage/v8/select/helper-error/react.md b/static/usage/v8/select/helper-error/react.md index 89c0c5d407a..d1c6ecd44ff 100644 --- a/static/usage/v8/select/helper-error/react.md +++ b/static/usage/v8/select/helper-error/react.md @@ -28,6 +28,8 @@ function Example() {
Date: Thu, 6 Mar 2025 12:46:13 -0800 Subject: [PATCH 03/13] chore(select): use dev build --- static/code/stackblitz/v8/angular/package.json | 4 ++-- static/code/stackblitz/v8/html/package.json | 2 +- static/code/stackblitz/v8/react/package.json | 4 ++-- static/code/stackblitz/v8/vue/package.json | 4 ++-- static/usage/v8/select/helper-error/demo.html | 10 ++++++++-- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/static/code/stackblitz/v8/angular/package.json b/static/code/stackblitz/v8/angular/package.json index b0c78d7f466..d034c81c048 100644 --- a/static/code/stackblitz/v8/angular/package.json +++ b/static/code/stackblitz/v8/angular/package.json @@ -15,8 +15,8 @@ "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", "@angular/router": "^19.0.0", - "@ionic/angular": "^8.0.0", - "@ionic/core": "^8.0.0", + "@ionic/angular": "8.4.4-dev.11741289071.1e8e1c3f", + "@ionic/core": "8.4.4-dev.11741289071.1e8e1c3f", "ionicons": "7.4.0", "rxjs": "^7.8.1", "tslib": "^2.5.0", diff --git a/static/code/stackblitz/v8/html/package.json b/static/code/stackblitz/v8/html/package.json index 422f9a91f55..d1ef1717b5f 100644 --- a/static/code/stackblitz/v8/html/package.json +++ b/static/code/stackblitz/v8/html/package.json @@ -1,6 +1,6 @@ { "dependencies": { - "@ionic/core": "8.4.1", + "@ionic/core": "8.4.4-dev.11741289071.1e8e1c3f", "ionicons": "7.4.0" } } diff --git a/static/code/stackblitz/v8/react/package.json b/static/code/stackblitz/v8/react/package.json index c0803683c63..80e4a603a1b 100644 --- a/static/code/stackblitz/v8/react/package.json +++ b/static/code/stackblitz/v8/react/package.json @@ -3,8 +3,8 @@ "version": "0.1.0", "private": true, "dependencies": { - "@ionic/react": "8.4.1", - "@ionic/react-router": "8.4.1", + "@ionic/react": "8.4.4-dev.11741289071.1e8e1c3f", + "@ionic/react-router": "8.4.4-dev.11741289071.1e8e1c3f", "@types/node": "^22.0.0", "@types/react": "^18.0.9", "@types/react-dom": "^18.0.4", diff --git a/static/code/stackblitz/v8/vue/package.json b/static/code/stackblitz/v8/vue/package.json index b9394bad9da..7656ad5f22c 100644 --- a/static/code/stackblitz/v8/vue/package.json +++ b/static/code/stackblitz/v8/vue/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@ionic/vue": "8.4.1", - "@ionic/vue-router": "8.4.1", + "@ionic/vue": "8.4.4-dev.11741289071.1e8e1c3f", + "@ionic/vue-router": "8.4.4-dev.11741289071.1e8e1c3f", "vue": "^3.2.25", "vue-router": "4.5.0" }, diff --git a/static/usage/v8/select/helper-error/demo.html b/static/usage/v8/select/helper-error/demo.html index 09828e2803c..193997eea1d 100644 --- a/static/usage/v8/select/helper-error/demo.html +++ b/static/usage/v8/select/helper-error/demo.html @@ -6,8 +6,14 @@ Input - - + + From f68f7a100af65b1fa6d8629d970e6a6176263324 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Thu, 6 Mar 2025 13:30:13 -0800 Subject: [PATCH 04/13] refactor(select): match Angular validation --- .../angular/example_component_ts.md | 4 ++-- static/usage/v8/select/helper-error/demo.html | 13 +++++++++++-- .../usage/v8/select/helper-error/javascript.md | 13 +++++++++++-- static/usage/v8/select/helper-error/react.md | 18 +++++++++++++++++- static/usage/v8/select/helper-error/vue.md | 12 +++++++++++- 5 files changed, 52 insertions(+), 8 deletions(-) diff --git a/static/usage/v8/select/helper-error/angular/example_component_ts.md b/static/usage/v8/select/helper-error/angular/example_component_ts.md index 30f7c014486..6ac0561c716 100644 --- a/static/usage/v8/select/helper-error/angular/example_component_ts.md +++ b/static/usage/v8/select/helper-error/angular/example_component_ts.md @@ -15,14 +15,14 @@ export class ExampleComponent { constructor(private fb: FormBuilder) { this.myForm = this.fb.group({ - favFruit: [false, Validators.required], + favFruit: ['', Validators.required], }); } onSubmit() { // Mark the control as touched to trigger the error message. // This is needed if the user submits the form without interacting - // with the checkbox. + // with the select. this.myForm.get('favFruit')!.markAsTouched(); } } diff --git a/static/usage/v8/select/helper-error/demo.html b/static/usage/v8/select/helper-error/demo.html index 193997eea1d..3d14fa6080d 100644 --- a/static/usage/v8/select/helper-error/demo.html +++ b/static/usage/v8/select/helper-error/demo.html @@ -42,10 +42,9 @@ form.addEventListener('submit', (event) => submit(event)); favFruit.addEventListener('ionChange', (event) => validateSelect(event)); + favFruit.addEventListener('ionBlur', () => onIonBlur({ detail: { value: favFruit.value } })); const validateSelect = (event) => { - favFruit.classList.add('ion-touched'); - if (!event.detail.value) { favFruit.classList.add('ion-invalid'); favFruit.classList.remove('ion-valid'); @@ -55,9 +54,19 @@ } }; + const markTouched = () => { + favFruit.classList.add('ion-touched'); + }; + + const onIonBlur = (event) => { + markTouched(); + validateSelect(event); + }; + const submit = (event) => { event.preventDefault(); + markTouched(); validateSelect({ detail: { value: favFruit.value } }); }; diff --git a/static/usage/v8/select/helper-error/javascript.md b/static/usage/v8/select/helper-error/javascript.md index f3cc63c31c9..f15d10d4a7b 100644 --- a/static/usage/v8/select/helper-error/javascript.md +++ b/static/usage/v8/select/helper-error/javascript.md @@ -22,10 +22,9 @@ form.addEventListener('submit', (event) => submit(event)); favFruit.addEventListener('ionChange', (event) => validateSelect(event)); + favFruit.addEventListener('ionBlur', () => onIonBlur({ detail: { value: favFruit.value } })); const validateSelect = (event) => { - favFruit.classList.add('ion-touched'); - if (!event.detail.value) { favFruit.classList.add('ion-invalid'); favFruit.classList.remove('ion-valid'); @@ -35,9 +34,19 @@ } }; + const markTouched = () => { + favFruit.classList.add('ion-touched'); + }; + + const onIonBlur = (event) => { + markTouched(); + validateSelect(event); + }; + const submit = (event) => { event.preventDefault(); + markTouched(); validateSelect({ detail: { value: favFruit.value } }); }; diff --git a/static/usage/v8/select/helper-error/react.md b/static/usage/v8/select/helper-error/react.md index d1c6ecd44ff..c62b4002f65 100644 --- a/static/usage/v8/select/helper-error/react.md +++ b/static/usage/v8/select/helper-error/react.md @@ -9,13 +9,28 @@ function Example() { const favFruitRef = useRef(null); const validateSelect = (event: SelectCustomEvent<{ value: string }>) => { + setIsValid(event.detail.value ? true : false); + }; + + const markTouched = () => { setIsTouched(true); - setIsValid(event.detail.value); + }; + + const onIonBlur = () => { + markTouched(); + + if (favFruitRef.current) { + validateSelect({ detail: { value: favFruitRef.current.value } } as SelectCustomEvent<{ + value: string; + }>); + } }; const submit = (event: React.FormEvent) => { event.preventDefault(); + markTouched(); + if (favFruitRef.current) { validateSelect({ detail: { value: favFruitRef.current.value } } as SelectCustomEvent<{ value: string; @@ -36,6 +51,7 @@ function Example() { helperText="Select your favorite fruit" errorText="This field is required" onIonChange={(event) => validateSelect(event)} + onIonBlur={onIonBlur} > Apple Banana diff --git a/static/usage/v8/select/helper-error/vue.md b/static/usage/v8/select/helper-error/vue.md index e79da315617..a7058fd4c62 100644 --- a/static/usage/v8/select/helper-error/vue.md +++ b/static/usage/v8/select/helper-error/vue.md @@ -8,6 +8,7 @@ helper-text="Select your favorite fruit" error-text="This field is required" @ionChange="validateSelect" + @ionBlur="onIonBlur" :class="{ 'ion-valid': isValid, 'ion-invalid': isValid === false, 'ion-touched': isTouched }" > Apple @@ -37,11 +38,20 @@ const isValid = ref(); const validateSelect = (event: SelectCustomEvent<{ value: string }>) => { + isValid.value = event.detail.value ? true : false; + }; + + const markTouched = () => { isTouched.value = true; - isValid.value = event.detail.value; + }; + + const onIonBlur = () => { + markTouched(); + validateSelect({ detail: { value: favFruit.value } } as SelectCustomEvent<{ value: string }>); }; const submit = () => { + markTouched(); validateSelect({ detail: { value: favFruit.value } } as SelectCustomEvent<{ value: string }>); }; From b3a66404a8d90e7bf34aa4e772c6538a46fc0e21 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Mon, 10 Mar 2025 12:37:48 -0700 Subject: [PATCH 05/13] fix(select): use correct value --- static/usage/v8/select/helper-error/vue.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/usage/v8/select/helper-error/vue.md b/static/usage/v8/select/helper-error/vue.md index a7058fd4c62..e513b4b84ec 100644 --- a/static/usage/v8/select/helper-error/vue.md +++ b/static/usage/v8/select/helper-error/vue.md @@ -33,7 +33,7 @@ IonButton, }, setup() { - const favFruit = ref(false); + const favFruit = ref(''); const isTouched = ref(false); const isValid = ref(); From d1c5d6acf96f746c0ff12be107acc47928d3abe6 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Tue, 11 Mar 2025 09:10:01 -0700 Subject: [PATCH 06/13] Update static/usage/v8/select/helper-error/index.md Co-authored-by: Brandy Smith --- static/usage/v8/select/helper-error/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/static/usage/v8/select/helper-error/index.md b/static/usage/v8/select/helper-error/index.md index c06eb8132a8..6de3b40d644 100644 --- a/static/usage/v8/select/helper-error/index.md +++ b/static/usage/v8/select/helper-error/index.md @@ -9,6 +9,7 @@ import angular_example_component_ts from './angular/example_component_ts.md'; Date: Tue, 11 Mar 2025 09:10:25 -0700 Subject: [PATCH 07/13] Update static/usage/v8/select/helper-error/angular/example_component_html.md Co-authored-by: Brandy Smith --- .../v8/select/helper-error/angular/example_component_html.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/usage/v8/select/helper-error/angular/example_component_html.md b/static/usage/v8/select/helper-error/angular/example_component_html.md index 9e886c3311d..0e65b13e6fe 100644 --- a/static/usage/v8/select/helper-error/angular/example_component_html.md +++ b/static/usage/v8/select/helper-error/angular/example_component_html.md @@ -2,8 +2,8 @@ From 37e475eb96e975ad0be6606c885277935d457089 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Tue, 11 Mar 2025 09:10:38 -0700 Subject: [PATCH 08/13] Update static/usage/v8/select/helper-error/demo.html Co-authored-by: Brandy Smith --- static/usage/v8/select/helper-error/demo.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/usage/v8/select/helper-error/demo.html b/static/usage/v8/select/helper-error/demo.html index 3d14fa6080d..b1fc71d57b8 100644 --- a/static/usage/v8/select/helper-error/demo.html +++ b/static/usage/v8/select/helper-error/demo.html @@ -20,8 +20,8 @@
From f7c6cd73b3fc0cb94d75e6233cca9a7c1b25cd56 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Tue, 11 Mar 2025 09:10:50 -0700 Subject: [PATCH 09/13] Update static/usage/v8/select/helper-error/react.md Co-authored-by: Brandy Smith --- static/usage/v8/select/helper-error/react.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/usage/v8/select/helper-error/react.md b/static/usage/v8/select/helper-error/react.md index c62b4002f65..b8c4cd16904 100644 --- a/static/usage/v8/select/helper-error/react.md +++ b/static/usage/v8/select/helper-error/react.md @@ -43,8 +43,8 @@ function Example() { Date: Tue, 11 Mar 2025 09:11:00 -0700 Subject: [PATCH 10/13] Update static/usage/v8/select/helper-error/vue.md Co-authored-by: Brandy Smith --- static/usage/v8/select/helper-error/vue.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/usage/v8/select/helper-error/vue.md b/static/usage/v8/select/helper-error/vue.md index e513b4b84ec..83a477e922b 100644 --- a/static/usage/v8/select/helper-error/vue.md +++ b/static/usage/v8/select/helper-error/vue.md @@ -3,8 +3,8 @@ Date: Tue, 11 Mar 2025 09:11:13 -0700 Subject: [PATCH 11/13] Update static/usage/v8/select/helper-error/javascript.md Co-authored-by: Brandy Smith --- static/usage/v8/select/helper-error/javascript.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/usage/v8/select/helper-error/javascript.md b/static/usage/v8/select/helper-error/javascript.md index f15d10d4a7b..3a035ff141b 100644 --- a/static/usage/v8/select/helper-error/javascript.md +++ b/static/usage/v8/select/helper-error/javascript.md @@ -1,8 +1,8 @@ ```html From 1ea1e12f345c5f51489b7fa4eb42c82d596dc7c5 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Tue, 11 Mar 2025 09:13:34 -0700 Subject: [PATCH 12/13] chore(select): run lint --- static/usage/v8/select/helper-error/javascript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/usage/v8/select/helper-error/javascript.md b/static/usage/v8/select/helper-error/javascript.md index 3a035ff141b..41e595a05cf 100644 --- a/static/usage/v8/select/helper-error/javascript.md +++ b/static/usage/v8/select/helper-error/javascript.md @@ -2,7 +2,7 @@ From 4cf78afd1f0806713a474241ab8bc1fb12826b82 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Tue, 11 Mar 2025 11:50:18 -0700 Subject: [PATCH 13/13] chore(select): remove dev build --- static/code/stackblitz/v8/angular/package.json | 4 ++-- static/code/stackblitz/v8/html/package.json | 2 +- static/code/stackblitz/v8/react/package.json | 4 ++-- static/code/stackblitz/v8/vue/package.json | 4 ++-- static/usage/v8/select/helper-error/demo.html | 10 ++-------- 5 files changed, 9 insertions(+), 15 deletions(-) diff --git a/static/code/stackblitz/v8/angular/package.json b/static/code/stackblitz/v8/angular/package.json index d034c81c048..b0c78d7f466 100644 --- a/static/code/stackblitz/v8/angular/package.json +++ b/static/code/stackblitz/v8/angular/package.json @@ -15,8 +15,8 @@ "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", "@angular/router": "^19.0.0", - "@ionic/angular": "8.4.4-dev.11741289071.1e8e1c3f", - "@ionic/core": "8.4.4-dev.11741289071.1e8e1c3f", + "@ionic/angular": "^8.0.0", + "@ionic/core": "^8.0.0", "ionicons": "7.4.0", "rxjs": "^7.8.1", "tslib": "^2.5.0", diff --git a/static/code/stackblitz/v8/html/package.json b/static/code/stackblitz/v8/html/package.json index d1ef1717b5f..422f9a91f55 100644 --- a/static/code/stackblitz/v8/html/package.json +++ b/static/code/stackblitz/v8/html/package.json @@ -1,6 +1,6 @@ { "dependencies": { - "@ionic/core": "8.4.4-dev.11741289071.1e8e1c3f", + "@ionic/core": "8.4.1", "ionicons": "7.4.0" } } diff --git a/static/code/stackblitz/v8/react/package.json b/static/code/stackblitz/v8/react/package.json index 80e4a603a1b..c0803683c63 100644 --- a/static/code/stackblitz/v8/react/package.json +++ b/static/code/stackblitz/v8/react/package.json @@ -3,8 +3,8 @@ "version": "0.1.0", "private": true, "dependencies": { - "@ionic/react": "8.4.4-dev.11741289071.1e8e1c3f", - "@ionic/react-router": "8.4.4-dev.11741289071.1e8e1c3f", + "@ionic/react": "8.4.1", + "@ionic/react-router": "8.4.1", "@types/node": "^22.0.0", "@types/react": "^18.0.9", "@types/react-dom": "^18.0.4", diff --git a/static/code/stackblitz/v8/vue/package.json b/static/code/stackblitz/v8/vue/package.json index 7656ad5f22c..b9394bad9da 100644 --- a/static/code/stackblitz/v8/vue/package.json +++ b/static/code/stackblitz/v8/vue/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@ionic/vue": "8.4.4-dev.11741289071.1e8e1c3f", - "@ionic/vue-router": "8.4.4-dev.11741289071.1e8e1c3f", + "@ionic/vue": "8.4.1", + "@ionic/vue-router": "8.4.1", "vue": "^3.2.25", "vue-router": "4.5.0" }, diff --git a/static/usage/v8/select/helper-error/demo.html b/static/usage/v8/select/helper-error/demo.html index b1fc71d57b8..1d3a8647b97 100644 --- a/static/usage/v8/select/helper-error/demo.html +++ b/static/usage/v8/select/helper-error/demo.html @@ -6,14 +6,8 @@ Input - - + +