Skip to content

Commit be6a690

Browse files
authored
chore(git): update next from main (#30537)
2 parents bf4503e + 92b1f4c commit be6a690

34 files changed

+666
-112
lines changed

.github/workflows/conventional-commit.yml

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,35 @@ jobs:
99
runs-on: ubuntu-latest
1010
steps:
1111
- name: Validate PR title
12-
uses: amannn/action-semantic-pull-request@v5
12+
if: |
13+
!contains(github.event.pull_request.title, 'release') &&
14+
!contains(github.event.pull_request.title, 'chore')
15+
uses: amannn/action-semantic-pull-request@v5
1316
env:
1417
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1518
with:
1619
# Configure that a scope must always be provided.
1720
requireScope: true
21+
# Configure allowed commit types
22+
types: |
23+
feat
24+
fix
25+
docs
26+
style
27+
refactor
28+
perf
29+
test
30+
build
31+
ci
32+
revert
33+
release
34+
chore
1835
# Configure additional validation for the subject based on a regex.
1936
# This example ensures the subject doesn't start with an uppercase character.
2037
subjectPattern: ^(?![A-Z]).+$
21-
# If `subjectPattern` is configured, you can use this property to
22-
# override the default error message that is shown when the pattern
23-
# doesn't match. The variables `subject` and `title` can be used
38+
# If `subjectPattern` is configured, you can use this property to
39+
# override the default error message that is shown when the pattern
40+
# doesn't match. The variables `subject` and `title` can be used
2441
# within the message.
2542
subjectPatternError: |
2643
The subject "{subject}" found in the pull request title "{title}" didn't match the configured pattern. Please ensure that the subject doesn't start with an uppercase character.
27-
# If the PR contains one of these newline-delimited labels, the
28-
# validation is skipped. If you want to rerun the validation when
29-
# labels change, you might want to use the `labeled` and `unlabeled`
30-
# event triggers in your workflow.
31-
ignoreLabels: |
32-
release

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,17 @@
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.6.4](https://github.com/ionic-team/ionic-framework/compare/v8.6.3...v8.6.4) (2025-07-09)
7+
8+
9+
### Bug Fixes
10+
11+
* **modal:** support iOS card view transitions for viewport changes ([#30520](https://github.com/ionic-team/ionic-framework/issues/30520)) ([0fd9e82](https://github.com/ionic-team/ionic-framework/commit/0fd9e824508333a53175d7da5f681fc3126a2394)), closes [#30296](https://github.com/ionic-team/ionic-framework/issues/30296)
12+
13+
14+
15+
16+
617
## [8.6.3](https://github.com/ionic-team/ionic-framework/compare/v8.6.2...v8.6.3) (2025-07-02)
718

819

core/CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,17 @@
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.6.4](https://github.com/ionic-team/ionic-framework/compare/v8.6.3...v8.6.4) (2025-07-09)
7+
8+
9+
### Bug Fixes
10+
11+
* **modal:** support iOS card view transitions for viewport changes ([#30520](https://github.com/ionic-team/ionic-framework/issues/30520)) ([0fd9e82](https://github.com/ionic-team/ionic-framework/commit/0fd9e824508333a53175d7da5f681fc3126a2394)), closes [#30296](https://github.com/ionic-team/ionic-framework/issues/30296)
12+
13+
14+
15+
16+
617
## [8.6.3](https://github.com/ionic-team/ionic-framework/compare/v8.6.2...v8.6.3) (2025-07-02)
718

819

core/package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@ionic/core",
3-
"version": "8.6.3",
3+
"version": "8.6.4",
44
"description": "Base components for Ionic",
55
"keywords": [
66
"ionic",

core/src/components/item-sliding/test/async/item-sliding.e2e.ts

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import { expect } from '@playwright/test';
22
import { configs, test } from '@utils/test/playwright';
33

4+
/**
5+
* This behavior does not vary across modes/directions
6+
*/
47
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
58
test.describe(title('item-sliding: async'), () => {
69
test.beforeEach(async ({ page }) => {
@@ -35,5 +38,85 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
3538

3639
await expect(itemSlidingEl).toHaveClass(/item-sliding-active-slide/);
3740
});
41+
42+
// NOTE: This test uses the CDN version of Ionic.
43+
// If this test fails, it is likely due to a regression in the published package.
44+
test('should not throw errors when adding multiple items with side="end" using the Ionic CDN', async ({
45+
page,
46+
}, testInfo) => {
47+
testInfo.annotations.push({
48+
type: 'issue',
49+
description: 'https://github.com/ionic-team/ionic-framework/issues/29499',
50+
});
51+
52+
const errors: string[] = [];
53+
page.on('console', (msg) => {
54+
if (msg.type() === 'error') {
55+
errors.push(msg.text());
56+
}
57+
});
58+
page.on('pageerror', (error) => {
59+
errors.push(error.message);
60+
});
61+
62+
// This issue only happens when using a CDN version of Ionic
63+
// so we need to use the CDN by passing the `importIonicFromCDN` option
64+
// to setContent.
65+
await page.setContent(
66+
`
67+
<ion-header>
68+
<ion-toolbar>
69+
<ion-title>Item Sliding</ion-title>
70+
<ion-buttons slot="end">
71+
<ion-button id="addItem" onclick="addItem()">ADD ITEM</ion-button>
72+
</ion-buttons>
73+
</ion-toolbar>
74+
</ion-header>
75+
<ion-content>
76+
<ion-list id="list"></ion-list>
77+
</ion-content>
78+
79+
<script>
80+
let itemList = [];
81+
function generateItem() {
82+
const currentItem = itemList.length + 1;
83+
const item = \`
84+
<ion-item-sliding>
85+
<ion-item>
86+
<ion-label>Sliding Item \${currentItem}</ion-label>
87+
</ion-item>
88+
<ion-item-options side="end">
89+
<ion-item-option>Delete</ion-item-option>
90+
</ion-item-options>
91+
</ion-item-sliding>
92+
\`;
93+
itemList.push(item);
94+
return item;
95+
}
96+
function addItem() {
97+
const list = document.getElementById('list');
98+
list.innerHTML += generateItem();
99+
const currentItem = itemList.length;
100+
}
101+
</script>
102+
`,
103+
{ ...config, importIonicFromCDN: true }
104+
);
105+
106+
// Click the button enough times to reproduce the issue
107+
const addButton = page.locator('#addItem');
108+
await addButton.click();
109+
await addButton.click();
110+
await addButton.click();
111+
112+
await page.waitForChanges();
113+
114+
// Check that the items have been added
115+
const items = page.locator('ion-item-sliding');
116+
expect(await items.count()).toBe(3);
117+
118+
// Check that no errors have been logged
119+
expect(errors.length).toBe(0);
120+
});
38121
});
39122
});

core/src/components/modal/animations/ios.enter.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export const iosEnterAnimation = (baseEl: HTMLElement, opts: ModalAnimationOptio
4848
}
4949

5050
if (presentingEl) {
51-
const isMobile = window.innerWidth < 768;
51+
const isPortrait = window.innerWidth < 768;
5252
const hasCardModal =
5353
presentingEl.tagName === 'ION-MODAL' && (presentingEl as HTMLIonModalElement).presentingElement !== undefined;
5454
const presentingElRoot = getElementRoot(presentingEl);
@@ -61,7 +61,7 @@ export const iosEnterAnimation = (baseEl: HTMLElement, opts: ModalAnimationOptio
6161

6262
const bodyEl = document.body;
6363

64-
if (isMobile) {
64+
if (isPortrait) {
6565
/**
6666
* Fallback for browsers that does not support `max()` (ex: Firefox)
6767
* No need to worry about statusbar padding since engines like Gecko

core/src/components/modal/animations/ios.leave.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export const iosLeaveAnimation = (baseEl: HTMLElement, opts: ModalAnimationOptio
3535
.addAnimation(wrapperAnimation);
3636

3737
if (presentingEl) {
38-
const isMobile = window.innerWidth < 768;
38+
const isPortrait = window.innerWidth < 768;
3939
const hasCardModal =
4040
presentingEl.tagName === 'ION-MODAL' && (presentingEl as HTMLIonModalElement).presentingElement !== undefined;
4141
const presentingElRoot = getElementRoot(presentingEl);
@@ -61,7 +61,7 @@ export const iosLeaveAnimation = (baseEl: HTMLElement, opts: ModalAnimationOptio
6161

6262
const bodyEl = document.body;
6363

64-
if (isMobile) {
64+
if (isPortrait) {
6565
const transformOffset = !CSS.supports('width', 'max(0px, 1px)') ? '30px' : 'max(30px, var(--ion-safe-area-top))';
6666
const modalTransform = hasCardModal ? '-10px' : transformOffset;
6767
const toPresentingScale = SwipeToCloseDefaults.MIN_PRESENTING_SCALE;

0 commit comments

Comments
 (0)