Skip to content

Commit 909863b

Browse files
committed
Merge branch 'main' into chore/update-next-from-main
2 parents 9547a9e + a00a389 commit 909863b

File tree

116 files changed

+8825
-21285
lines changed

Some content is hidden

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

116 files changed

+8825
-21285
lines changed

CHANGELOG.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,53 @@
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.7.1](https://github.com/ionic-team/ionic-framework/compare/v8.7.0...v8.7.1) (2025-07-31)
7+
8+
### Dependencies
9+
10+
* **stencil:** upgrade `@stencil/core` to version 4.36.2
11+
12+
13+
14+
15+
16+
# [8.7.0](https://github.com/ionic-team/ionic-framework/compare/v8.6.7...v8.7.0) (2025-07-30)
17+
18+
19+
### Features
20+
21+
* **css:** add new css utility classes for display and flex utils ([#30567](https://github.com/ionic-team/ionic-framework/issues/30567)) ([75f6c05](https://github.com/ionic-team/ionic-framework/commit/75f6c05fb96313ef890cc80a229a3a3ed3d57460)), closes [#22469](https://github.com/ionic-team/ionic-framework/issues/22469)
22+
* **datetime:** add border property to highlightedDates ([#30534](https://github.com/ionic-team/ionic-framework/issues/30534)) ([d5627c7](https://github.com/ionic-team/ionic-framework/commit/d5627c73681faf658ea3b869f3fb04d708391eb9)), closes [#29833](https://github.com/ionic-team/ionic-framework/issues/29833)
23+
* **deps:** update ionicons to v8 ([#30390](https://github.com/ionic-team/ionic-framework/issues/30390)) ([74cd71a](https://github.com/ionic-team/ionic-framework/commit/74cd71af243183aa738d11b280e155bdfd652126)), closes [#30445](https://github.com/ionic-team/ionic-framework/issues/30445)
24+
* **modal:** add IonModalToken for injecting modal elements in Angular components ([#30474](https://github.com/ionic-team/ionic-framework/issues/30474)) ([30d1910](https://github.com/ionic-team/ionic-framework/commit/30d1910d6ea5428b414d0e127e7681f59426c538))
25+
* **reorder-group:** add ionReorderStart, ionReorderMove, ionReorderEnd events ([#30471](https://github.com/ionic-team/ionic-framework/issues/30471)) ([b154f4e](https://github.com/ionic-team/ionic-framework/commit/b154f4ed095890f57ccab539fd9217976a5466e5)), closes [#23148](https://github.com/ionic-team/ionic-framework/issues/23148) [#27614](https://github.com/ionic-team/ionic-framework/issues/27614)
26+
27+
28+
29+
30+
31+
## [8.6.7](https://github.com/ionic-team/ionic-framework/compare/v8.6.6...v8.6.7) (2025-07-30)
32+
33+
### Dependencies
34+
35+
* **stencil:** downgrade `@stencil/core` to version 4.33.1
36+
37+
_Stencil has been downgraded due to an uncaught regression in Reorder._
38+
39+
40+
41+
42+
43+
## [8.6.6](https://github.com/ionic-team/ionic-framework/compare/v8.6.5...v8.6.6) (2025-07-30)
44+
45+
### Dependencies
46+
47+
* **stencil:** upgrade `@stencil/core` to version 4.36.2
48+
49+
50+
51+
52+
653
## [8.6.5](https://github.com/ionic-team/ionic-framework/compare/v8.6.4...v8.6.5) (2025-07-16)
754

855

core/CHANGELOG.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,52 @@
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.7.1](https://github.com/ionic-team/ionic-framework/compare/v8.7.0...v8.7.1) (2025-07-31)
7+
8+
### Dependencies
9+
10+
* **stencil:** upgrade `@stencil/core` to version 4.36.2
11+
12+
13+
14+
15+
16+
# [8.7.0](https://github.com/ionic-team/ionic-framework/compare/v8.6.7...v8.7.0) (2025-07-30)
17+
18+
19+
### Features
20+
21+
* **css:** add new css utility classes for display and flex utils ([#30567](https://github.com/ionic-team/ionic-framework/issues/30567)) ([75f6c05](https://github.com/ionic-team/ionic-framework/commit/75f6c05fb96313ef890cc80a229a3a3ed3d57460)), closes [#22469](https://github.com/ionic-team/ionic-framework/issues/22469)
22+
* **datetime:** add border property to highlightedDates ([#30534](https://github.com/ionic-team/ionic-framework/issues/30534)) ([d5627c7](https://github.com/ionic-team/ionic-framework/commit/d5627c73681faf658ea3b869f3fb04d708391eb9)), closes [#29833](https://github.com/ionic-team/ionic-framework/issues/29833)
23+
* **deps:** update ionicons to v8 ([#30390](https://github.com/ionic-team/ionic-framework/issues/30390)) ([74cd71a](https://github.com/ionic-team/ionic-framework/commit/74cd71af243183aa738d11b280e155bdfd652126)), closes [#30445](https://github.com/ionic-team/ionic-framework/issues/30445)
24+
* **reorder-group:** add ionReorderStart, ionReorderMove, ionReorderEnd events ([#30471](https://github.com/ionic-team/ionic-framework/issues/30471)) ([b154f4e](https://github.com/ionic-team/ionic-framework/commit/b154f4ed095890f57ccab539fd9217976a5466e5)), closes [#23148](https://github.com/ionic-team/ionic-framework/issues/23148) [#27614](https://github.com/ionic-team/ionic-framework/issues/27614)
25+
26+
27+
28+
29+
30+
## [8.6.7](https://github.com/ionic-team/ionic-framework/compare/v8.6.6...v8.6.7) (2025-07-30)
31+
32+
### Dependencies
33+
34+
* **stencil:** downgrade `@stencil/core` to version 4.33.1
35+
36+
_Stencil has been downgraded due to an uncaught regression in Reorder._
37+
38+
39+
40+
41+
42+
## [8.6.6](https://github.com/ionic-team/ionic-framework/compare/v8.6.5...v8.6.6) (2025-07-30)
43+
44+
### Dependencies
45+
46+
* **stencil:** upgrade `@stencil/core` to version 4.36.2
47+
48+
49+
50+
51+
652
## [8.6.5](https://github.com/ionic-team/ionic-framework/compare/v8.6.4...v8.6.5) (2025-07-16)
753

854

core/api.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1950,6 +1950,9 @@ ion-reorder-group,prop,mode,"ios" | "md",undefined,false,false
19501950
ion-reorder-group,prop,theme,"ios" | "md" | "ionic",undefined,false,false
19511951
ion-reorder-group,method,complete,complete(listOrReorder?: boolean | any[]) => Promise<any>
19521952
ion-reorder-group,event,ionItemReorder,ItemReorderEventDetail,true
1953+
ion-reorder-group,event,ionReorderEnd,ReorderEndEventDetail,true
1954+
ion-reorder-group,event,ionReorderMove,ReorderMoveEventDetail,true
1955+
ion-reorder-group,event,ionReorderStart,void,true
19531956

19541957
ion-ripple-effect,shadow
19551958
ion-ripple-effect,prop,mode,"ios" | "md",undefined,false,false

core/package-lock.json

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

core/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@ionic/core",
3-
"version": "8.6.5",
3+
"version": "8.7.1",
44
"description": "Base components for Ionic",
55
"keywords": [
66
"ionic",
@@ -32,8 +32,8 @@
3232
],
3333
"dependencies": {
3434
"@phosphor-icons/core": "^2.1.1",
35-
"@stencil/core": "4.33.1",
36-
"ionicons": "^7.2.2",
35+
"@stencil/core": "4.36.2",
36+
"ionicons": "^8.0.13",
3737
"tslib": "^2.1.0"
3838
},
3939
"devDependencies": {

core/src/components.d.ts

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import { PopoverSize, PositionAlign, PositionReference, PositionSide, TriggerAct
3030
import { RadioGroupChangeEventDetail, RadioGroupCompareFn } from "./components/radio-group/radio-group-interface";
3131
import { PinFormatter, RangeChangeEventDetail, RangeKnobMoveEndEventDetail, RangeKnobMoveStartEventDetail, RangeValue } from "./components/range/range-interface";
3232
import { RefresherEventDetail } from "./components/refresher/refresher-interface";
33-
import { ItemReorderEventDetail } from "./components/reorder-group/reorder-group-interface";
33+
import { ItemReorderEventDetail, ReorderEndEventDetail, ReorderMoveEventDetail } from "./components/reorder-group/reorder-group-interface";
3434
import { NavigationHookCallback } from "./components/route/route-interface";
3535
import { SearchbarChangeEventDetail, SearchbarInputEventDetail } from "./components/searchbar/searchbar-interface";
3636
import { SegmentChangeEventDetail, SegmentValue } from "./components/segment/segment-interface";
@@ -68,7 +68,7 @@ export { PopoverSize, PositionAlign, PositionReference, PositionSide, TriggerAct
6868
export { RadioGroupChangeEventDetail, RadioGroupCompareFn } from "./components/radio-group/radio-group-interface";
6969
export { PinFormatter, RangeChangeEventDetail, RangeKnobMoveEndEventDetail, RangeKnobMoveStartEventDetail, RangeValue } from "./components/range/range-interface";
7070
export { RefresherEventDetail } from "./components/refresher/refresher-interface";
71-
export { ItemReorderEventDetail } from "./components/reorder-group/reorder-group-interface";
71+
export { ItemReorderEventDetail, ReorderEndEventDetail, ReorderMoveEventDetail } from "./components/reorder-group/reorder-group-interface";
7272
export { NavigationHookCallback } from "./components/route/route-interface";
7373
export { SearchbarChangeEventDetail, SearchbarInputEventDetail } from "./components/searchbar/searchbar-interface";
7474
export { SegmentChangeEventDetail, SegmentValue } from "./components/segment/segment-interface";
@@ -3231,7 +3231,7 @@ export namespace Components {
32313231
}
32323232
interface IonReorderGroup {
32333233
/**
3234-
* Completes the reorder operation. Must be called by the `ionItemReorder` event. If a list of items is passed, the list will be reordered and returned in the proper order. If no parameters are passed or if `true` is passed in, the reorder will complete and the item will remain in the position it was dragged to. If `false` is passed, the reorder will complete and the item will bounce back to its original position.
3234+
* Completes the reorder operation. Must be called by the `ionReorderEnd` event. If a list of items is passed, the list will be reordered and returned in the proper order. If no parameters are passed or if `true` is passed in, the reorder will complete and the item will remain in the position it was dragged to. If `false` is passed, the reorder will complete and the item will bounce back to its original position.
32353235
* @param listOrReorder A list of items to be sorted and returned in the new order or a boolean of whether or not the reorder should reposition the item.
32363236
*/
32373237
"complete": (listOrReorder?: boolean | any[]) => Promise<any>;
@@ -5433,6 +5433,9 @@ declare global {
54335433
};
54345434
interface HTMLIonReorderGroupElementEventMap {
54355435
"ionItemReorder": ItemReorderEventDetail;
5436+
"ionReorderStart": void;
5437+
"ionReorderMove": ReorderMoveEventDetail;
5438+
"ionReorderEnd": ReorderEndEventDetail;
54365439
}
54375440
interface HTMLIonReorderGroupElement extends Components.IonReorderGroup, HTMLStencilElement {
54385441
addEventListener<K extends keyof HTMLIonReorderGroupElementEventMap>(type: K, listener: (this: HTMLIonReorderGroupElement, ev: IonReorderGroupCustomEvent<HTMLIonReorderGroupElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
@@ -9170,9 +9173,22 @@ declare namespace LocalJSX {
91709173
*/
91719174
"mode"?: "ios" | "md";
91729175
/**
9173-
* Event that needs to be listened to in order to complete the reorder action. Once the event has been emitted, the `complete()` method then needs to be called in order to finalize the reorder action.
9176+
* Event that needs to be listened to in order to complete the reorder action.
9177+
* @deprecated Use `ionReorderEnd` instead. If you are accessing `event.detail.from` or `event.detail.to` and relying on them being different you should now add checks as they are always emitted in `ionReorderEnd`, even when they are the same.
91749178
*/
91759179
"onIonItemReorder"?: (event: IonReorderGroupCustomEvent<ItemReorderEventDetail>) => void;
9180+
/**
9181+
* Event that is emitted when the reorder gesture ends. The from and to properties are always available, regardless of if the reorder gesture moved the item. If the item did not change from its start position, the from and to properties will be the same. Once the event has been emitted, the `complete()` method then needs to be called in order to finalize the reorder action.
9182+
*/
9183+
"onIonReorderEnd"?: (event: IonReorderGroupCustomEvent<ReorderEndEventDetail>) => void;
9184+
/**
9185+
* Event that is emitted as the reorder gesture moves.
9186+
*/
9187+
"onIonReorderMove"?: (event: IonReorderGroupCustomEvent<ReorderMoveEventDetail>) => void;
9188+
/**
9189+
* Event that is emitted when the reorder gesture starts.
9190+
*/
9191+
"onIonReorderStart"?: (event: IonReorderGroupCustomEvent<void>) => void;
91769192
/**
91779193
* The theme determines the visual appearance of the component.
91789194
*/

core/src/components/back-button/test/basic/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ <h3>Custom</h3>
125125

126126
<ion-toolbar color="dark">
127127
<ion-buttons slot="start">
128-
<ion-back-button class="ion-hide"></ion-back-button>
128+
<ion-back-button class="ion-display-none"></ion-back-button>
129129
</ion-buttons>
130130
<ion-title>Hidden</ion-title>
131131
</ion-toolbar>

core/src/components/datetime/datetime-interface.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ export type DatetimePresentation = 'date-time' | 'time-date' | 'date' | 'time' |
2222

2323
export type TitleSelectedDatesFormatter = (selectedDates: string[]) => string;
2424

25-
export type DatetimeHighlightStyle =
26-
| {
27-
textColor: string;
28-
backgroundColor?: string;
29-
}
30-
| {
31-
textColor?: string;
32-
backgroundColor: string;
33-
};
25+
/**
26+
* DatetimeHighlightStyle must include textColor, backgroundColor, or border.
27+
* It cannot be an empty object.
28+
*/
29+
export type DatetimeHighlightStyle = {
30+
textColor?: string;
31+
backgroundColor?: string;
32+
border?: string;
33+
} & ({ textColor: string } | { backgroundColor: string } | { border: string });
3434

3535
export type DatetimeHighlight = { date: string } & DatetimeHighlightStyle;
3636

core/src/components/datetime/datetime.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2343,6 +2343,7 @@ export class Datetime implements ComponentInterface {
23432343
`${dateStyle ? dateStyle.backgroundColor : ''}`,
23442344
'important'
23452345
);
2346+
el.style.setProperty('border', `${dateStyle ? dateStyle.border : ''}`, 'important');
23462347
}
23472348
}}
23482349
tabindex="-1"

core/src/components/datetime/test/highlighted-dates/datetime.e2e.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,19 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
2121
date: '2023-01-01', // ensure selected date style overrides highlight
2222
textColor: '#800080',
2323
backgroundColor: '#ffc0cb',
24+
border: '2px solid purple',
2425
},
2526
{
2627
date: '2023-01-02',
2728
textColor: '#b22222',
2829
backgroundColor: '#fa8072',
30+
border: '2px solid purple',
2931
},
3032
{
3133
date: '2023-01-03',
3234
textColor: '#0000ff',
3335
backgroundColor: '#add8e6',
36+
border: '2px solid purple',
3437
},
3538
];
3639
});
@@ -52,20 +55,23 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
5255
return {
5356
textColor: '#b22222',
5457
backgroundColor: '#fa8072',
58+
border: '2px solid purple',
5559
};
5660
}
5761

5862
if (utcDay % 5 === 0) {
5963
return {
6064
textColor: '#800080',
6165
backgroundColor: '#ffc0cb',
66+
border: '2px solid purple',
6267
};
6368
}
6469

6570
if (utcDay % 3 === 0) {
6671
return {
6772
textColor: '#0000ff',
6873
backgroundColor: '#add8e6',
74+
border: '2px solid purple',
6975
};
7076
}
7177

@@ -77,7 +83,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
7783
await expect(datetime).toHaveScreenshot(screenshot(`datetime-highlightedDates-callback`));
7884
});
7985

80-
test('should render highlights correctly when only using one color or the other', async ({ page }) => {
86+
test('should render highlights correctly when only using only one color property', async ({ page }) => {
8187
const datetime = page.locator('ion-datetime');
8288

8389
await datetime.evaluate((el: HTMLIonDatetimeElement) => {
@@ -90,6 +96,10 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
9096
date: '2023-01-03',
9197
textColor: '#0000ff',
9298
},
99+
{
100+
date: '2023-01-04',
101+
border: '2px solid purple',
102+
},
93103
];
94104
});
95105

0 commit comments

Comments
 (0)