Skip to content

Commit 07ac3db

Browse files
merge main (#30354)
2 parents 5da939d + b391760 commit 07ac3db

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+1334
-487
lines changed

CHANGELOG.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,43 @@
33
All notable changes to this project will be documented in this file.
44
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
55

6+
## [8.5.4](https://github.com/ionic-team/ionic-framework/compare/v8.5.3...v8.5.4) (2025-04-09)
7+
8+
9+
### Bug Fixes
10+
11+
* **config:** properly export LogLevel ([#30335](https://github.com/ionic-team/ionic-framework/issues/30335)) ([835ad52](https://github.com/ionic-team/ionic-framework/commit/835ad52c290a3687dc9e9c6bf4326948a9c3fe0d)), closes [#30255](https://github.com/ionic-team/ionic-framework/issues/30255)
12+
13+
14+
15+
16+
17+
## [8.5.3](https://github.com/ionic-team/ionic-framework/compare/v8.5.2...v8.5.3) (2025-04-02)
18+
19+
20+
### Bug Fixes
21+
22+
* **checkbox:** ensure proper visual selection when navigating via VoiceOver in Safari ([#30300](https://github.com/ionic-team/ionic-framework/issues/30300)) ([bb40a1e](https://github.com/ionic-team/ionic-framework/commit/bb40a1efe71237075db2f3a536eddeb1d7c400fc))
23+
* **overlays:** exclude backdrop-no-scroll class when toast is presented ([#30123](https://github.com/ionic-team/ionic-framework/issues/30123)) ([7f9df7a](https://github.com/ionic-team/ionic-framework/commit/7f9df7a89447e51eec0b1516069a1e0c9c9722e5)), closes [#30112](https://github.com/ionic-team/ionic-framework/issues/30112)
24+
* **segment-view:** prevent vertical scroll while scrolling horizontally ([#30276](https://github.com/ionic-team/ionic-framework/issues/30276)) ([105796f](https://github.com/ionic-team/ionic-framework/commit/105796f6bc8f961f58ecbb101285097cc86891c0)), closes [#30001](https://github.com/ionic-team/ionic-framework/issues/30001)
25+
26+
27+
28+
29+
30+
## [8.5.2](https://github.com/ionic-team/ionic-framework/compare/v8.5.1...v8.5.2) (2025-03-26)
31+
32+
33+
### Bug Fixes
34+
35+
* **datetime:** support typing time values in a 24-hour format ([#30147](https://github.com/ionic-team/ionic-framework/issues/30147)) ([ac6e6a0](https://github.com/ionic-team/ionic-framework/commit/ac6e6a03174263d09ec55c9742a026862a3df444)), closes [#28877](https://github.com/ionic-team/ionic-framework/issues/28877)
36+
* **range:** emit ionInput when value changes ([#30293](https://github.com/ionic-team/ionic-framework/issues/30293)) ([7789bb5](https://github.com/ionic-team/ionic-framework/commit/7789bb59ee5c76074ff4872dc6a50ae2d83df8f5)), closes [#29619](https://github.com/ionic-team/ionic-framework/issues/29619)
37+
* **segment-button:** ensure consistent disabled state for segment-content error handling ([#30288](https://github.com/ionic-team/ionic-framework/issues/30288)) ([1cfa915](https://github.com/ionic-team/ionic-framework/commit/1cfa915e8fe362951c521bce970a9f5f10918ab2))
38+
39+
40+
41+
42+
643
## [8.5.1](https://github.com/ionic-team/ionic-framework/compare/v8.5.0...v8.5.1) (2025-03-19)
744

845

core/CHANGELOG.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,43 @@
33
All notable changes to this project will be documented in this file.
44
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
55

6+
## [8.5.4](https://github.com/ionic-team/ionic-framework/compare/v8.5.3...v8.5.4) (2025-04-09)
7+
8+
9+
### Bug Fixes
10+
11+
* **config:** properly export LogLevel ([#30335](https://github.com/ionic-team/ionic-framework/issues/30335)) ([835ad52](https://github.com/ionic-team/ionic-framework/commit/835ad52c290a3687dc9e9c6bf4326948a9c3fe0d)), closes [#30255](https://github.com/ionic-team/ionic-framework/issues/30255)
12+
13+
14+
15+
16+
17+
## [8.5.3](https://github.com/ionic-team/ionic-framework/compare/v8.5.2...v8.5.3) (2025-04-02)
18+
19+
20+
### Bug Fixes
21+
22+
* **checkbox:** ensure proper visual selection when navigating via VoiceOver in Safari ([#30300](https://github.com/ionic-team/ionic-framework/issues/30300)) ([bb40a1e](https://github.com/ionic-team/ionic-framework/commit/bb40a1efe71237075db2f3a536eddeb1d7c400fc))
23+
* **overlays:** exclude backdrop-no-scroll class when toast is presented ([#30123](https://github.com/ionic-team/ionic-framework/issues/30123)) ([7f9df7a](https://github.com/ionic-team/ionic-framework/commit/7f9df7a89447e51eec0b1516069a1e0c9c9722e5)), closes [#30112](https://github.com/ionic-team/ionic-framework/issues/30112)
24+
* **segment-view:** prevent vertical scroll while scrolling horizontally ([#30276](https://github.com/ionic-team/ionic-framework/issues/30276)) ([105796f](https://github.com/ionic-team/ionic-framework/commit/105796f6bc8f961f58ecbb101285097cc86891c0)), closes [#30001](https://github.com/ionic-team/ionic-framework/issues/30001)
25+
26+
27+
28+
29+
30+
## [8.5.2](https://github.com/ionic-team/ionic-framework/compare/v8.5.1...v8.5.2) (2025-03-26)
31+
32+
33+
### Bug Fixes
34+
35+
* **datetime:** support typing time values in a 24-hour format ([#30147](https://github.com/ionic-team/ionic-framework/issues/30147)) ([ac6e6a0](https://github.com/ionic-team/ionic-framework/commit/ac6e6a03174263d09ec55c9742a026862a3df444)), closes [#28877](https://github.com/ionic-team/ionic-framework/issues/28877)
36+
* **range:** emit ionInput when value changes ([#30293](https://github.com/ionic-team/ionic-framework/issues/30293)) ([7789bb5](https://github.com/ionic-team/ionic-framework/commit/7789bb59ee5c76074ff4872dc6a50ae2d83df8f5)), closes [#29619](https://github.com/ionic-team/ionic-framework/issues/29619)
37+
* **segment-button:** ensure consistent disabled state for segment-content error handling ([#30288](https://github.com/ionic-team/ionic-framework/issues/30288)) ([1cfa915](https://github.com/ionic-team/ionic-framework/commit/1cfa915e8fe362951c521bce970a9f5f10918ab2))
38+
39+
40+
41+
42+
643
## [8.5.1](https://github.com/ionic-team/ionic-framework/compare/v8.5.0...v8.5.1) (2025-03-19)
744

845

core/package-lock.json

Lines changed: 17 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@ionic/core",
3-
"version": "8.5.1",
3+
"version": "8.5.4",
44
"description": "Base components for Ionic",
55
"keywords": [
66
"ionic",
@@ -45,7 +45,7 @@
4545
"@clack/prompts": "^0.10.0",
4646
"@ionic/eslint-config": "^0.3.0",
4747
"@ionic/prettier-config": "^2.0.0",
48-
"@playwright/test": "^1.51.0",
48+
"@playwright/test": "^1.51.1",
4949
"@rollup/plugin-node-resolve": "^8.4.0",
5050
"@rollup/plugin-virtual": "^2.0.3",
5151
"@stencil/angular-output-target": "^0.10.0",

core/src/components/checkbox/checkbox.common.scss

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,14 @@
8383
display: none;
8484
}
8585

86+
/**
87+
* The native input must be hidden with display instead of visibility or
88+
* aria-hidden to avoid accessibility issues with nested interactive elements.
89+
*/
90+
input {
91+
display: none;
92+
}
93+
8694
.native-wrapper {
8795
display: flex;
8896

core/src/components/checkbox/checkbox.native.scss

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,6 @@
3838
@include margin(null, null, $checkbox-item-label-margin-bottom, null);
3939
}
4040

41-
input {
42-
@include visually-hidden();
43-
}
44-
4541
.checkbox-icon {
4642
@include border-radius(var(--border-radius));
4743

core/src/components/checkbox/checkbox.tsx

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import type { CheckboxChangeEventDetail } from './checkbox-interface';
3333
})
3434
export class Checkbox implements ComponentInterface {
3535
private inputId = `ion-cb-${checkboxIds++}`;
36+
private inputLabelId = `${this.inputId}-lbl`;
3637
private helperTextId = `${this.inputId}-helper-text`;
3738
private errorTextId = `${this.inputId}-error-text`;
3839
private focusEl?: HTMLElement;
@@ -194,6 +195,15 @@ export class Checkbox implements ComponentInterface {
194195
this.ionBlur.emit();
195196
};
196197

198+
private onKeyDown = (ev: KeyboardEvent) => {
199+
if (ev.key === ' ') {
200+
ev.preventDefault();
201+
if (!this.disabled) {
202+
this.toggleChecked(ev);
203+
}
204+
}
205+
};
206+
197207
private onClick = (ev: MouseEvent) => {
198208
if (this.disabled) {
199209
return;
@@ -264,16 +274,24 @@ export class Checkbox implements ComponentInterface {
264274
size,
265275
} = this;
266276
const theme = getIonTheme(this);
267-
268277
const path = getSVGPath(theme, indeterminate);
278+
const hasLabelContent = el.textContent !== '';
269279

270280
renderHiddenInput(true, el, name, checked ? value : '', disabled);
271281

282+
// The host element must have a checkbox role to ensure proper VoiceOver
283+
// support in Safari for accessibility.
272284
return (
273285
<Host
286+
role="checkbox"
274287
aria-checked={indeterminate ? 'mixed' : `${checked}`}
275288
aria-describedby={this.getHintTextID()}
276289
aria-invalid={this.getHintTextID() === this.errorTextId}
290+
aria-labelledby={hasLabelContent ? this.inputLabelId : null}
291+
aria-label={inheritedAttributes['aria-label'] || null}
292+
aria-disabled={disabled ? 'true' : null}
293+
tabindex={disabled ? undefined : 0}
294+
onKeyDown={this.onKeyDown}
277295
class={createColorClasses(color, {
278296
[theme]: true,
279297
'in-item': hostContext('ion-item', el),
@@ -290,7 +308,7 @@ export class Checkbox implements ComponentInterface {
290308
})}
291309
onClick={this.onClick}
292310
>
293-
<label class="checkbox-wrapper">
311+
<label class="checkbox-wrapper" htmlFor={inputId}>
294312
{/*
295313
The native control must be rendered
296314
before the visible label text due to https://bugs.webkit.org/show_bug.cgi?id=251951
@@ -310,9 +328,10 @@ export class Checkbox implements ComponentInterface {
310328
<div
311329
class={{
312330
'label-text-wrapper': true,
313-
'label-text-wrapper-hidden': el.textContent === '',
331+
'label-text-wrapper-hidden': !hasLabelContent,
314332
}}
315333
part="label"
334+
id={this.inputLabelId}
316335
>
317336
<slot></slot>
318337
{this.renderHintText()}

core/src/components/datetime/datetime.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1992,7 +1992,7 @@ export class Datetime implements ComponentInterface {
19921992
});
19931993

19941994
this.setActiveParts({
1995-
...activePart,
1995+
...this.getActivePartsWithFallback(),
19961996
hour: ev.detail.value,
19971997
});
19981998

@@ -2032,7 +2032,7 @@ export class Datetime implements ComponentInterface {
20322032
});
20332033

20342034
this.setActiveParts({
2035-
...activePart,
2035+
...this.getActivePartsWithFallback(),
20362036
minute: ev.detail.value,
20372037
});
20382038

@@ -2078,7 +2078,7 @@ export class Datetime implements ComponentInterface {
20782078
});
20792079

20802080
this.setActiveParts({
2081-
...activePart,
2081+
...this.getActivePartsWithFallback(),
20822082
ampm: ev.detail.value,
20832083
hour,
20842084
});

0 commit comments

Comments
 (0)