Skip to content

Commit a934e48

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

File tree

124 files changed

+8991
-21288
lines changed

Some content is hidden

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

124 files changed

+8991
-21288
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: 15 additions & 14 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/custom/datetime.e2e.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
55
test.describe(title('datetime: custom'), () => {
66
test.beforeEach(async ({ page }) => {
77
await page.goto(`/src/components/datetime/test/custom`, config);
8+
9+
await page.locator('.datetime-ready').last().waitFor();
810
});
911

1012
test('should allow styling wheel style datetimes', async ({ page }) => {
@@ -30,6 +32,13 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
3032
test('should allow styling calendar days in grid style datetimes', async ({ page }) => {
3133
const datetime = page.locator('#custom-calendar-days');
3234

35+
// Wait for calendar days to be rendered
36+
await page.waitForFunction(() => {
37+
const datetime = document.querySelector('#custom-calendar-days');
38+
const calendarDays = datetime?.shadowRoot?.querySelectorAll('.calendar-day');
39+
return calendarDays && calendarDays.length > 0;
40+
});
41+
3342
await expect(datetime).toHaveScreenshot(screenshot(`datetime-custom-calendar-days`));
3443
});
3544
});

0 commit comments

Comments
 (0)