Compare commits
93 Commits
ROU-11849
...
test-sheet
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
964eba11d1 | ||
|
|
911684f83a | ||
|
|
ecfffe9486 | ||
|
|
0b70a997ed | ||
|
|
c5e4f58e65 | ||
|
|
839646dc07 | ||
|
|
3a5ed90c03 | ||
|
|
a723ad327c | ||
|
|
d52b253fa0 | ||
|
|
e27c14a00a | ||
|
|
446b64ef36 | ||
|
|
c38aa07cf8 | ||
|
|
071b414a00 | ||
|
|
5ca8fc85aa | ||
|
|
7da26d0fd5 | ||
|
|
8bec166200 | ||
|
|
40e610dec0 | ||
|
|
907506b35c | ||
|
|
b57d1634a1 | ||
|
|
68a523cb1d | ||
|
|
38b3ac4472 | ||
|
|
280cb050f3 | ||
|
|
92f1975c12 | ||
|
|
4020859d4e | ||
|
|
17dc854eae | ||
|
|
5d719ba6b0 | ||
|
|
345bd53831 | ||
|
|
2df6d2ce6e | ||
|
|
1d3e12cf30 | ||
|
|
fed4d62a0d | ||
|
|
3e76b8339e | ||
|
|
9674438dfb | ||
|
|
6afcd530e6 | ||
|
|
87c96fa322 | ||
|
|
2a22181c04 | ||
|
|
0b1abf7271 | ||
|
|
4e76bd3761 | ||
|
|
3b1a0eb00b | ||
|
|
1563b7bae7 | ||
|
|
4cbbbb053a | ||
|
|
b77447bea0 | ||
|
|
c62590a2d8 | ||
|
|
14f32f8fee | ||
|
|
fe964c8fa0 | ||
|
|
4d6a067677 | ||
|
|
034d047202 | ||
|
|
8e8e8f90cd | ||
|
|
a0d5ad7b8d | ||
|
|
61abc2bbb3 | ||
|
|
b587ccde56 | ||
|
|
57f8666e44 | ||
|
|
975abc558d | ||
|
|
4e38700566 | ||
|
|
2dea6071db | ||
|
|
8b5215ff03 | ||
|
|
fc4e5ae287 | ||
|
|
1877ac5dd1 | ||
|
|
00beab4af8 | ||
|
|
f7a2d34305 | ||
|
|
6a1382fc2c | ||
|
|
c3ad15b0bf | ||
|
|
54bc6cc54f | ||
|
|
af6b86597c | ||
|
|
7fec492ac7 | ||
|
|
7d639b0412 | ||
|
|
b740070ca4 | ||
|
|
d8582e47b1 | ||
|
|
63074415e1 | ||
|
|
bf396c9b07 | ||
|
|
e6e6483ba7 | ||
|
|
fbbb5e3c0c | ||
|
|
7a9d138e3d | ||
|
|
8ef79cf4fb | ||
|
|
3f0e43deed | ||
|
|
808c60c235 | ||
|
|
b0d88ea9ff | ||
|
|
5a564d63e6 | ||
|
|
4fc1366a25 | ||
|
|
c5c4d1d989 | ||
|
|
cad1c61528 | ||
|
|
d52fca084c | ||
|
|
8dd566b5c1 | ||
|
|
44efdb06e0 | ||
|
|
e1a451214d | ||
|
|
396ff3d3ca | ||
|
|
2667ee37f2 | ||
|
|
43b707e022 | ||
|
|
796e00720e | ||
|
|
91477cfe23 | ||
|
|
e27bb2c529 | ||
|
|
78df64c115 | ||
|
|
e140b9010f | ||
|
|
b67259edae |
1
.github/ionic-issue-bot.yml
vendored
@@ -93,6 +93,7 @@ stale:
|
||||
- "triage"
|
||||
- "type: bug"
|
||||
- "type: feature request"
|
||||
- "needs: investigation"
|
||||
exemptAssigned: true
|
||||
exemptProjects: true
|
||||
exemptMilestones: true
|
||||
|
||||
@@ -5,7 +5,7 @@ runs:
|
||||
steps:
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
- uses: ./.github/workflows/actions/download-archive
|
||||
with:
|
||||
name: ionic-core
|
||||
|
||||
@@ -5,7 +5,7 @@ runs:
|
||||
steps:
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
- uses: ./.github/workflows/actions/download-archive
|
||||
with:
|
||||
name: ionic-core
|
||||
|
||||
@@ -11,7 +11,7 @@ runs:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
|
||||
- name: Install Dependencies
|
||||
run: npm ci
|
||||
|
||||
@@ -11,7 +11,7 @@ runs:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
- name: Install Dependencies
|
||||
run: npm install
|
||||
working-directory: ./core
|
||||
|
||||
@@ -5,7 +5,7 @@ runs:
|
||||
steps:
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
- uses: ./.github/workflows/actions/download-archive
|
||||
with:
|
||||
name: ionic-core
|
||||
|
||||
@@ -5,7 +5,7 @@ runs:
|
||||
steps:
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
- uses: ./.github/workflows/actions/download-archive
|
||||
with:
|
||||
name: ionic-core
|
||||
|
||||
@@ -5,7 +5,7 @@ runs:
|
||||
steps:
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
- uses: ./.github/workflows/actions/download-archive
|
||||
with:
|
||||
name: ionic-core
|
||||
|
||||
@@ -5,7 +5,7 @@ runs:
|
||||
steps:
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
- uses: ./.github/workflows/actions/download-archive
|
||||
with:
|
||||
name: ionic-core
|
||||
|
||||
@@ -21,7 +21,7 @@ runs:
|
||||
steps:
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
# Provenance requires npm 9.5.0+
|
||||
- name: Install latest npm
|
||||
run: npm install -g npm@latest
|
||||
|
||||
@@ -5,7 +5,7 @@ runs:
|
||||
steps:
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
|
||||
- uses: ./.github/workflows/actions/download-archive
|
||||
with:
|
||||
|
||||
@@ -5,7 +5,7 @@ runs:
|
||||
steps:
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
- name: Install Dependencies
|
||||
run: npm ci
|
||||
working-directory: ./core
|
||||
|
||||
@@ -15,7 +15,7 @@ runs:
|
||||
steps:
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
- uses: ./.github/workflows/actions/download-archive
|
||||
with:
|
||||
name: ionic-core
|
||||
|
||||
@@ -8,7 +8,7 @@ runs:
|
||||
steps:
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
- name: Install Dependencies
|
||||
run: npm ci
|
||||
working-directory: ./core
|
||||
|
||||
@@ -8,7 +8,7 @@ runs:
|
||||
steps:
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
- uses: ./.github/workflows/actions/download-archive
|
||||
with:
|
||||
name: ionic-core
|
||||
|
||||
@@ -8,7 +8,7 @@ runs:
|
||||
steps:
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
- uses: ./.github/workflows/actions/download-archive
|
||||
with:
|
||||
name: ionic-core
|
||||
|
||||
@@ -8,7 +8,7 @@ runs:
|
||||
steps:
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
- uses: ./.github/workflows/actions/download-archive
|
||||
with:
|
||||
name: ionic-core
|
||||
|
||||
@@ -9,7 +9,7 @@ runs:
|
||||
steps:
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
node-version: 22.x
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: ./artifacts
|
||||
|
||||
4
.github/workflows/release.yml
vendored
@@ -120,9 +120,13 @@ jobs:
|
||||
-d '{
|
||||
"path": [
|
||||
"/npm/@ionic/core@6/dist/ionic/ionic.esm.js",
|
||||
"/npm/@ionic/core@7/dist/ionic/ionic.esm.js",
|
||||
"/npm/@ionic/core@8/dist/ionic/ionic.esm.js",
|
||||
"/npm/@ionic/core@latest/dist/ionic/ionic.esm.js",
|
||||
"/npm/@ionic/core@next/dist/ionic/ionic.esm.js",
|
||||
"/npm/@ionic/core@6/css/ionic.bundle.css",
|
||||
"/npm/@ionic/core@7/css/ionic.bundle.css",
|
||||
"/npm/@ionic/core@8/css/ionic.bundle.css",
|
||||
"/npm/@ionic/core@latest/css/ionic.bundle.css"
|
||||
"/npm/@ionic/core@next/css/ionic.bundle.css"
|
||||
]}'
|
||||
|
||||
91
CHANGELOG.md
@@ -3,6 +3,97 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [8.6.1](https://github.com/ionic-team/ionic-framework/compare/v8.6.0...v8.6.1) (2025-06-11)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **item-sliding:** check for side attribute to avoid an `undefined` value ([#29845](https://github.com/ionic-team/ionic-framework/issues/29845)) ([c38aa07](https://github.com/ionic-team/ionic-framework/commit/c38aa07cf8bfab200b3c071328d893bd1627cde7)), closes [#29499](https://github.com/ionic-team/ionic-framework/issues/29499)
|
||||
* **modal:** reset footer positioning after content drag and multi-footer support ([#30470](https://github.com/ionic-team/ionic-framework/issues/30470)) ([071b414](https://github.com/ionic-team/ionic-framework/commit/071b414a00f4497ed0baa1431f0bee4b3c7c13fb)), closes [#30468](https://github.com/ionic-team/ionic-framework/issues/30468)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [8.6.0](https://github.com/ionic-team/ionic-framework/compare/v8.5.9...v8.6.0) (2025-06-04)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **input-otp:** correctly handle autofill by splitting the values into all inputs ([#30444](https://github.com/ionic-team/ionic-framework/issues/30444)) ([b77447b](https://github.com/ionic-team/ionic-framework/commit/b77447bea050821da1e5f618ec7b7b530e7f7f5d))
|
||||
* **scroll-assist:** allow focus on input's siblings ([#30409](https://github.com/ionic-team/ionic-framework/issues/30409)) ([2dea607](https://github.com/ionic-team/ionic-framework/commit/2dea6071db12903f2ce815328db19b95366aa9a5))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **datetime:** add animation to adjacent days selection ([#30298](https://github.com/ionic-team/ionic-framework/issues/30298)) ([e140b90](https://github.com/ionic-team/ionic-framework/commit/e140b9010fd63490a8d340b3d705869fb04a4319))
|
||||
* **datetime:** add showAdjacentDays to display days from the previous and next months ([#30262](https://github.com/ionic-team/ionic-framework/issues/30262)) ([b67259e](https://github.com/ionic-team/ionic-framework/commit/b67259edae267c2dbece360da532ca9017c8febd))
|
||||
* **input-otp:** add new input-otp component ([#30386](https://github.com/ionic-team/ionic-framework/issues/30386)) ([4d6a067](https://github.com/ionic-team/ionic-framework/commit/4d6a067677a7b828263c2ed71a409a3a4c392c85))
|
||||
* **toggle:** add iOS 18 haptic feedback ([#29945](https://github.com/ionic-team/ionic-framework/issues/29945)) ([796e007](https://github.com/ionic-team/ionic-framework/commit/796e00720e0da90eda1d246a6d5b11f954e5993c))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [8.5.9](https://github.com/ionic-team/ionic-framework/compare/v8.5.8...v8.5.9) (2025-06-04)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **datetime:** display the correct month when multiple values are set ([#29610](https://github.com/ionic-team/ionic-framework/issues/29610)) ([14f32f8](https://github.com/ionic-team/ionic-framework/commit/14f32f8feea7b3880367868ff0a2134b0c28cc07)), closes [#29094](https://github.com/ionic-team/ionic-framework/issues/29094)
|
||||
* **modal:** move sheet footers instead of cloning while dragging ([#30433](https://github.com/ionic-team/ionic-framework/issues/30433)) ([4cbbbb0](https://github.com/ionic-team/ionic-framework/commit/4cbbbb053ad36d176f1d79ad09777f94ca8076d2)), closes [#30315](https://github.com/ionic-team/ionic-framework/issues/30315) [#30341](https://github.com/ionic-team/ionic-framework/issues/30341) [#30312](https://github.com/ionic-team/ionic-framework/issues/30312)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [8.5.8](https://github.com/ionic-team/ionic-framework/compare/v8.5.7...v8.5.8) (2025-05-28)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **input-password-toggle, button:** force update aria attributes ([#30411](https://github.com/ionic-team/ionic-framework/issues/30411)) ([4e38700](https://github.com/ionic-team/ionic-framework/commit/4e387005663b4e8425cb28e41608bb4f924b3864))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [8.5.7](https://github.com/ionic-team/ionic-framework/compare/v8.5.6...v8.5.7) (2025-05-07)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **labels:** prevent clicking a label from triggering onClick twice on several components ([#30384](https://github.com/ionic-team/ionic-framework/issues/30384)) ([7d639b0](https://github.com/ionic-team/ionic-framework/commit/7d639b0412120523f758942c855cb69f9a52e9d9)), closes [#30165](https://github.com/ionic-team/ionic-framework/issues/30165)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [8.5.6](https://github.com/ionic-team/ionic-framework/compare/v8.5.5...v8.5.6) (2025-04-30)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **item:** emit click event once when clicking padded space on item and emit correct element ([#30373](https://github.com/ionic-team/ionic-framework/issues/30373)) ([7a9d138](https://github.com/ionic-team/ionic-framework/commit/7a9d138e3d5ecde55c12ff337ca29052a9194d69)), closes [#29758](https://github.com/ionic-team/ionic-framework/issues/29758) [#29761](https://github.com/ionic-team/ionic-framework/issues/29761)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [8.5.5](https://github.com/ionic-team/ionic-framework/compare/v8.5.4...v8.5.5) (2025-04-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **config:** allow LogLevel to work with isolatedModules and update all warns and errors to respect logLevel ([#30350](https://github.com/ionic-team/ionic-framework/issues/30350)) ([d52fca0](https://github.com/ionic-team/ionic-framework/commit/d52fca084cf5a9924d0f6a6c4d9ece0373b83213))
|
||||
* **modal:** add expandToScroll property to ModalOptions ([#30357](https://github.com/ionic-team/ionic-framework/issues/30357)) ([8dd566b](https://github.com/ionic-team/ionic-framework/commit/8dd566b5c1241022e26cc91c0f415de20c0d0f34)), closes [#30356](https://github.com/ionic-team/ionic-framework/issues/30356)
|
||||
* **select:** update icon color and use correct focused class ([#30342](https://github.com/ionic-team/ionic-framework/issues/30342)) ([cad1c61](https://github.com/ionic-team/ionic-framework/commit/cad1c61528c52a53b2164f2ea46f49144d3b46ad))
|
||||
* **toggle:** ensure proper visual selection when navigating via VoiceOver in Safari ([#30349](https://github.com/ionic-team/ionic-framework/issues/30349)) ([b1bc58f](https://github.com/ionic-team/ionic-framework/commit/b1bc58f1c8ffdc859e3f4349040bb1ad6e383d1e))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [8.5.4](https://github.com/ionic-team/ionic-framework/compare/v8.5.3...v8.5.4) (2025-04-09)
|
||||
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ module.exports = {
|
||||
"@typescript-eslint/no-unused-vars": [
|
||||
"warn",
|
||||
{
|
||||
"varsIgnorePattern": "^h$"
|
||||
"varsIgnorePattern": "^(h|Fragment)$"
|
||||
}
|
||||
],
|
||||
"no-useless-catch": "off",
|
||||
|
||||
@@ -3,6 +3,97 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [8.6.1](https://github.com/ionic-team/ionic-framework/compare/v8.6.0...v8.6.1) (2025-06-11)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **item-sliding:** check for side attribute to avoid an `undefined` value ([#29845](https://github.com/ionic-team/ionic-framework/issues/29845)) ([c38aa07](https://github.com/ionic-team/ionic-framework/commit/c38aa07cf8bfab200b3c071328d893bd1627cde7)), closes [#29499](https://github.com/ionic-team/ionic-framework/issues/29499)
|
||||
* **modal:** reset footer positioning after content drag and multi-footer support ([#30470](https://github.com/ionic-team/ionic-framework/issues/30470)) ([071b414](https://github.com/ionic-team/ionic-framework/commit/071b414a00f4497ed0baa1431f0bee4b3c7c13fb)), closes [#30468](https://github.com/ionic-team/ionic-framework/issues/30468)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [8.6.0](https://github.com/ionic-team/ionic-framework/compare/v8.5.9...v8.6.0) (2025-06-04)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **input-otp:** correctly handle autofill by splitting the values into all inputs ([#30444](https://github.com/ionic-team/ionic-framework/issues/30444)) ([b77447b](https://github.com/ionic-team/ionic-framework/commit/b77447bea050821da1e5f618ec7b7b530e7f7f5d))
|
||||
* **scroll-assist:** allow focus on input's siblings ([#30409](https://github.com/ionic-team/ionic-framework/issues/30409)) ([2dea607](https://github.com/ionic-team/ionic-framework/commit/2dea6071db12903f2ce815328db19b95366aa9a5))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **datetime:** add animation to adjacent days selection ([#30298](https://github.com/ionic-team/ionic-framework/issues/30298)) ([e140b90](https://github.com/ionic-team/ionic-framework/commit/e140b9010fd63490a8d340b3d705869fb04a4319))
|
||||
* **datetime:** add showAdjacentDays to display days from the previous and next months ([#30262](https://github.com/ionic-team/ionic-framework/issues/30262)) ([b67259e](https://github.com/ionic-team/ionic-framework/commit/b67259edae267c2dbece360da532ca9017c8febd))
|
||||
* **input-otp:** add new input-otp component ([#30386](https://github.com/ionic-team/ionic-framework/issues/30386)) ([4d6a067](https://github.com/ionic-team/ionic-framework/commit/4d6a067677a7b828263c2ed71a409a3a4c392c85))
|
||||
* **toggle:** add iOS 18 haptic feedback ([#29945](https://github.com/ionic-team/ionic-framework/issues/29945)) ([796e007](https://github.com/ionic-team/ionic-framework/commit/796e00720e0da90eda1d246a6d5b11f954e5993c))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [8.5.9](https://github.com/ionic-team/ionic-framework/compare/v8.5.8...v8.5.9) (2025-06-04)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **datetime:** display the correct month when multiple values are set ([#29610](https://github.com/ionic-team/ionic-framework/issues/29610)) ([14f32f8](https://github.com/ionic-team/ionic-framework/commit/14f32f8feea7b3880367868ff0a2134b0c28cc07)), closes [#29094](https://github.com/ionic-team/ionic-framework/issues/29094)
|
||||
* **modal:** move sheet footers instead of cloning while dragging ([#30433](https://github.com/ionic-team/ionic-framework/issues/30433)) ([4cbbbb0](https://github.com/ionic-team/ionic-framework/commit/4cbbbb053ad36d176f1d79ad09777f94ca8076d2)), closes [#30315](https://github.com/ionic-team/ionic-framework/issues/30315) [#30341](https://github.com/ionic-team/ionic-framework/issues/30341) [#30312](https://github.com/ionic-team/ionic-framework/issues/30312)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [8.5.8](https://github.com/ionic-team/ionic-framework/compare/v8.5.7...v8.5.8) (2025-05-28)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **input-password-toggle, button:** force update aria attributes ([#30411](https://github.com/ionic-team/ionic-framework/issues/30411)) ([4e38700](https://github.com/ionic-team/ionic-framework/commit/4e387005663b4e8425cb28e41608bb4f924b3864))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [8.5.7](https://github.com/ionic-team/ionic-framework/compare/v8.5.6...v8.5.7) (2025-05-07)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **labels:** prevent clicking a label from triggering onClick twice on several components ([#30384](https://github.com/ionic-team/ionic-framework/issues/30384)) ([7d639b0](https://github.com/ionic-team/ionic-framework/commit/7d639b0412120523f758942c855cb69f9a52e9d9)), closes [#30165](https://github.com/ionic-team/ionic-framework/issues/30165)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [8.5.6](https://github.com/ionic-team/ionic-framework/compare/v8.5.5...v8.5.6) (2025-04-30)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **item:** emit click event once when clicking padded space on item and emit correct element ([#30373](https://github.com/ionic-team/ionic-framework/issues/30373)) ([7a9d138](https://github.com/ionic-team/ionic-framework/commit/7a9d138e3d5ecde55c12ff337ca29052a9194d69)), closes [#29758](https://github.com/ionic-team/ionic-framework/issues/29758) [#29761](https://github.com/ionic-team/ionic-framework/issues/29761)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [8.5.5](https://github.com/ionic-team/ionic-framework/compare/v8.5.4...v8.5.5) (2025-04-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **config:** allow LogLevel to work with isolatedModules and update all warns and errors to respect logLevel ([#30350](https://github.com/ionic-team/ionic-framework/issues/30350)) ([d52fca0](https://github.com/ionic-team/ionic-framework/commit/d52fca084cf5a9924d0f6a6c4d9ece0373b83213))
|
||||
* **modal:** add expandToScroll property to ModalOptions ([#30357](https://github.com/ionic-team/ionic-framework/issues/30357)) ([8dd566b](https://github.com/ionic-team/ionic-framework/commit/8dd566b5c1241022e26cc91c0f415de20c0d0f34)), closes [#30356](https://github.com/ionic-team/ionic-framework/issues/30356)
|
||||
* **select:** update icon color and use correct focused class ([#30342](https://github.com/ionic-team/ionic-framework/issues/30342)) ([cad1c61](https://github.com/ionic-team/ionic-framework/commit/cad1c61528c52a53b2164f2ea46f49144d3b46ad))
|
||||
* **toggle:** ensure proper visual selection when navigating via VoiceOver in Safari ([#30349](https://github.com/ionic-team/ionic-framework/issues/30349)) ([b1bc58f](https://github.com/ionic-team/ionic-framework/commit/b1bc58f1c8ffdc859e3f4349040bb1ad6e383d1e))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [8.5.4](https://github.com/ionic-team/ionic-framework/compare/v8.5.3...v8.5.4) (2025-04-09)
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Get Playwright
|
||||
FROM mcr.microsoft.com/playwright:v1.51.1
|
||||
FROM mcr.microsoft.com/playwright:v1.52.0
|
||||
|
||||
# Set the working directory
|
||||
WORKDIR /ionic
|
||||
|
||||
98
core/api.txt
@@ -317,7 +317,7 @@ ion-badge,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secon
|
||||
ion-badge,prop,hue,"bold" | "subtle" | undefined,undefined,false,false
|
||||
ion-badge,prop,mode,"ios" | "md",undefined,false,false
|
||||
ion-badge,prop,shape,"round | rectangular" | "soft" | undefined,undefined,false,false
|
||||
ion-badge,prop,size,"large" | "medium" | "small" | "xlarge" | "xsmall" | "xxsmall" | undefined,undefined,false,false
|
||||
ion-badge,prop,size,"large" | "medium" | "small" | undefined,undefined,false,false
|
||||
ion-badge,prop,theme,"ios" | "md" | "ionic",undefined,false,false
|
||||
ion-badge,prop,vertical,"bottom" | "top" | undefined,undefined,false,false
|
||||
ion-badge,css-prop,--background,ionic
|
||||
@@ -396,7 +396,7 @@ ion-button,prop,rel,string | undefined,undefined,false,false
|
||||
ion-button,prop,routerAnimation,((baseEl: any, opts?: any) => Animation) | undefined,undefined,false,false
|
||||
ion-button,prop,routerDirection,"back" | "forward" | "root",'forward',false,false
|
||||
ion-button,prop,shape,"rectangular" | "round" | "soft" | undefined,undefined,false,true
|
||||
ion-button,prop,size,"default" | "large" | "small" | "xlarge" | "xsmall" | undefined,undefined,false,true
|
||||
ion-button,prop,size,"default" | "large" | "medium" | "small" | undefined,undefined,false,true
|
||||
ion-button,prop,strong,boolean,false,false,false
|
||||
ion-button,prop,target,string | undefined,undefined,false,false
|
||||
ion-button,prop,theme,"ios" | "md" | "ionic",undefined,false,false
|
||||
@@ -703,6 +703,7 @@ ion-datetime,prop,name,string,this.inputId,false,false
|
||||
ion-datetime,prop,preferWheel,boolean,false,false,false
|
||||
ion-datetime,prop,presentation,"date" | "date-time" | "month" | "month-year" | "time" | "time-date" | "year",'date-time',false,false
|
||||
ion-datetime,prop,readonly,boolean,false,false,false
|
||||
ion-datetime,prop,showAdjacentDays,boolean,false,false,false
|
||||
ion-datetime,prop,showClearButton,boolean,false,false,false
|
||||
ion-datetime,prop,showDefaultButtons,boolean,false,false,false
|
||||
ion-datetime,prop,showDefaultTimeLabel,boolean,true,false,false
|
||||
@@ -1026,6 +1027,99 @@ ion-input,css-prop,--placeholder-opacity,ionic
|
||||
ion-input,css-prop,--placeholder-opacity,ios
|
||||
ion-input,css-prop,--placeholder-opacity,md
|
||||
|
||||
ion-input-otp,scoped
|
||||
ion-input-otp,prop,autocapitalize,string,'off',false,false
|
||||
ion-input-otp,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record<never, never> | undefined,undefined,false,true
|
||||
ion-input-otp,prop,disabled,boolean,false,false,true
|
||||
ion-input-otp,prop,fill,"outline" | "solid" | undefined,'outline',false,false
|
||||
ion-input-otp,prop,inputmode,"decimal" | "email" | "none" | "numeric" | "search" | "tel" | "text" | "url" | undefined,undefined,false,false
|
||||
ion-input-otp,prop,length,number,4,false,false
|
||||
ion-input-otp,prop,pattern,string | undefined,undefined,false,false
|
||||
ion-input-otp,prop,readonly,boolean,false,false,true
|
||||
ion-input-otp,prop,separators,number[] | string | undefined,undefined,false,false
|
||||
ion-input-otp,prop,shape,"rectangular" | "round" | "soft",'round',false,false
|
||||
ion-input-otp,prop,size,"large" | "medium" | "small",'medium',false,false
|
||||
ion-input-otp,prop,type,"number" | "text",'number',false,false
|
||||
ion-input-otp,prop,value,null | number | string | undefined,'',false,false
|
||||
ion-input-otp,method,setFocus,setFocus(index?: number) => Promise<void>
|
||||
ion-input-otp,event,ionBlur,FocusEvent,true
|
||||
ion-input-otp,event,ionChange,InputOtpChangeEventDetail,true
|
||||
ion-input-otp,event,ionComplete,InputOtpCompleteEventDetail,true
|
||||
ion-input-otp,event,ionFocus,FocusEvent,true
|
||||
ion-input-otp,event,ionInput,InputOtpInputEventDetail,true
|
||||
ion-input-otp,css-prop,--background,ionic
|
||||
ion-input-otp,css-prop,--background,ios
|
||||
ion-input-otp,css-prop,--background,md
|
||||
ion-input-otp,css-prop,--border-color,ionic
|
||||
ion-input-otp,css-prop,--border-color,ios
|
||||
ion-input-otp,css-prop,--border-color,md
|
||||
ion-input-otp,css-prop,--border-radius,ionic
|
||||
ion-input-otp,css-prop,--border-radius,ios
|
||||
ion-input-otp,css-prop,--border-radius,md
|
||||
ion-input-otp,css-prop,--border-style,ionic
|
||||
ion-input-otp,css-prop,--border-style,ios
|
||||
ion-input-otp,css-prop,--border-style,md
|
||||
ion-input-otp,css-prop,--border-width,ionic
|
||||
ion-input-otp,css-prop,--border-width,ios
|
||||
ion-input-otp,css-prop,--border-width,md
|
||||
ion-input-otp,css-prop,--color,ionic
|
||||
ion-input-otp,css-prop,--color,ios
|
||||
ion-input-otp,css-prop,--color,md
|
||||
ion-input-otp,css-prop,--height,ionic
|
||||
ion-input-otp,css-prop,--height,ios
|
||||
ion-input-otp,css-prop,--height,md
|
||||
ion-input-otp,css-prop,--highlight-color-focused,ionic
|
||||
ion-input-otp,css-prop,--highlight-color-focused,ios
|
||||
ion-input-otp,css-prop,--highlight-color-focused,md
|
||||
ion-input-otp,css-prop,--highlight-color-invalid,ionic
|
||||
ion-input-otp,css-prop,--highlight-color-invalid,ios
|
||||
ion-input-otp,css-prop,--highlight-color-invalid,md
|
||||
ion-input-otp,css-prop,--highlight-color-valid,ionic
|
||||
ion-input-otp,css-prop,--highlight-color-valid,ios
|
||||
ion-input-otp,css-prop,--highlight-color-valid,md
|
||||
ion-input-otp,css-prop,--margin-bottom,ionic
|
||||
ion-input-otp,css-prop,--margin-bottom,ios
|
||||
ion-input-otp,css-prop,--margin-bottom,md
|
||||
ion-input-otp,css-prop,--margin-end,ionic
|
||||
ion-input-otp,css-prop,--margin-end,ios
|
||||
ion-input-otp,css-prop,--margin-end,md
|
||||
ion-input-otp,css-prop,--margin-start,ionic
|
||||
ion-input-otp,css-prop,--margin-start,ios
|
||||
ion-input-otp,css-prop,--margin-start,md
|
||||
ion-input-otp,css-prop,--margin-top,ionic
|
||||
ion-input-otp,css-prop,--margin-top,ios
|
||||
ion-input-otp,css-prop,--margin-top,md
|
||||
ion-input-otp,css-prop,--min-width,ionic
|
||||
ion-input-otp,css-prop,--min-width,ios
|
||||
ion-input-otp,css-prop,--min-width,md
|
||||
ion-input-otp,css-prop,--padding-bottom,ionic
|
||||
ion-input-otp,css-prop,--padding-bottom,ios
|
||||
ion-input-otp,css-prop,--padding-bottom,md
|
||||
ion-input-otp,css-prop,--padding-end,ionic
|
||||
ion-input-otp,css-prop,--padding-end,ios
|
||||
ion-input-otp,css-prop,--padding-end,md
|
||||
ion-input-otp,css-prop,--padding-start,ionic
|
||||
ion-input-otp,css-prop,--padding-start,ios
|
||||
ion-input-otp,css-prop,--padding-start,md
|
||||
ion-input-otp,css-prop,--padding-top,ionic
|
||||
ion-input-otp,css-prop,--padding-top,ios
|
||||
ion-input-otp,css-prop,--padding-top,md
|
||||
ion-input-otp,css-prop,--separator-border-radius,ionic
|
||||
ion-input-otp,css-prop,--separator-border-radius,ios
|
||||
ion-input-otp,css-prop,--separator-border-radius,md
|
||||
ion-input-otp,css-prop,--separator-color,ionic
|
||||
ion-input-otp,css-prop,--separator-color,ios
|
||||
ion-input-otp,css-prop,--separator-color,md
|
||||
ion-input-otp,css-prop,--separator-height,ionic
|
||||
ion-input-otp,css-prop,--separator-height,ios
|
||||
ion-input-otp,css-prop,--separator-height,md
|
||||
ion-input-otp,css-prop,--separator-width,ionic
|
||||
ion-input-otp,css-prop,--separator-width,ios
|
||||
ion-input-otp,css-prop,--separator-width,md
|
||||
ion-input-otp,css-prop,--width,ionic
|
||||
ion-input-otp,css-prop,--width,ios
|
||||
ion-input-otp,css-prop,--width,md
|
||||
|
||||
ion-input-password-toggle,shadow
|
||||
ion-input-password-toggle,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record<never, never> | undefined,undefined,false,true
|
||||
ion-input-password-toggle,prop,hideIcon,string | undefined,undefined,false,false
|
||||
|
||||
502
core/package-lock.json
generated
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ionic/core",
|
||||
"version": "8.5.4",
|
||||
"version": "8.6.1",
|
||||
"description": "Base components for Ionic",
|
||||
"keywords": [
|
||||
"ionic",
|
||||
@@ -32,20 +32,20 @@
|
||||
],
|
||||
"dependencies": {
|
||||
"@phosphor-icons/core": "^2.1.1",
|
||||
"@stencil/core": "4.20.0",
|
||||
"@stencil/core": "4.33.1",
|
||||
"ionicons": "^7.2.2",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@axe-core/playwright": "^4.10.1",
|
||||
"@axe-core/playwright": "^4.10.2",
|
||||
"@capacitor/core": "^7.0.0",
|
||||
"@capacitor/haptics": "^7.0.0",
|
||||
"@capacitor/keyboard": "^7.0.0",
|
||||
"@capacitor/status-bar": "^7.0.0",
|
||||
"@clack/prompts": "^0.10.0",
|
||||
"@clack/prompts": "^0.11.0",
|
||||
"@ionic/eslint-config": "^0.3.0",
|
||||
"@ionic/prettier-config": "^2.0.0",
|
||||
"@playwright/test": "^1.51.1",
|
||||
"@playwright/test": "^1.52.0",
|
||||
"@rollup/plugin-node-resolve": "^8.4.0",
|
||||
"@rollup/plugin-virtual": "^2.0.3",
|
||||
"@stencil/angular-output-target": "^0.10.0",
|
||||
|
||||
@@ -43,12 +43,25 @@
|
||||
|
||||
console.log('Generating SCSS variables...');
|
||||
|
||||
// Separate typography tokens from the rest
|
||||
const typographyProperties = dictionary.allTokens.filter((prop) => prop.$type === 'typography');
|
||||
const otherProperties = dictionary.allTokens.filter((prop) => prop.$type !== 'typography');
|
||||
|
||||
// Make sure the reused scss variables are defined first, to avoid compilation errors
|
||||
const sortedProperties = [...otherProperties, ...typographyProperties];
|
||||
const primitiveProperties = dictionary.allTokens.filter((prop) => prop.path[0] === 'primitives');
|
||||
const scaleProperties = dictionary.allTokens.filter((prop) => prop.path[0] === 'scale');
|
||||
const borderProperties = dictionary.allTokens.filter((prop) => prop.path[0] === 'border');
|
||||
const semanticsProperties = dictionary.allTokens.filter((prop) => prop.path[0] === 'semantics');
|
||||
const nonPrimitiveScaleBorderSemanticsProperties = dictionary.allTokens.filter(
|
||||
(prop) => !['primitives', 'scale', 'border', 'semantics'].includes(prop.path[0])
|
||||
);
|
||||
const typographyProperties = nonPrimitiveScaleBorderSemanticsProperties.filter((prop) => prop.$type === 'typography');
|
||||
const otherProperties = nonPrimitiveScaleBorderSemanticsProperties.filter((prop) => prop.$type !== 'typography');
|
||||
|
||||
// Order: primitives → semantics → scale → border → other → typography
|
||||
const sortedProperties = [
|
||||
...primitiveProperties,
|
||||
...semanticsProperties,
|
||||
...scaleProperties,
|
||||
...borderProperties,
|
||||
...otherProperties,
|
||||
...typographyProperties
|
||||
];
|
||||
|
||||
const prefixedVariables = sortedProperties.map((prop) => {
|
||||
// Remove consecutive repeated words from the token name, like border-border-color
|
||||
|
||||
@@ -48,6 +48,19 @@ function removeConsecutiveRepeatedWords(str) {
|
||||
return str.replace(/(\b\w+\b)(-\1)+/g, '$1');
|
||||
}
|
||||
|
||||
// Generates a reference variable for an alias token type
|
||||
// (e.g., $ion-border-default: var(--ion-border-default, #d5d5d5) → $ion-border-default: var(--ion-border-default, $ion-primitives-neutral-400))
|
||||
function getAliasReferenceVariable(prop) {
|
||||
if (typeof prop.$value === 'string' && prop.$value.startsWith('{') && prop.$value.endsWith('}')) {
|
||||
// Remove curly braces and replace dots with dashes
|
||||
let ref = prop.$value.slice(1, -1).replace(/\./g, '-');
|
||||
// Remove consecutive repeated words (e.g., border-border-radius-0 → border-radius-0)
|
||||
ref = removeConsecutiveRepeatedWords(ref);
|
||||
return `$${variablesPrefix}-${ref}`;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Generates a valid box-shadow value from a shadow Design Token structure
|
||||
function generateShadowValue(prop, propName) {
|
||||
const cssShadow = prop.$value.map(shadow => {
|
||||
@@ -80,17 +93,25 @@ function generateFontFamilyValue(prop, propName, variableType = 'css') {
|
||||
|
||||
// Generates a final value, based if the Design Token is of type color or not
|
||||
function generateValue(prop, propName) {
|
||||
const rgb = hexToRgb(prop.$value);
|
||||
// Use the original value to detect aliases
|
||||
const aliasVar = getAliasReferenceVariable({ $value: prop.original.$value });
|
||||
|
||||
let rgbDeclaration = '';
|
||||
|
||||
if (rgb) {
|
||||
// If the token is color, also add a rgb variable using the same color
|
||||
rgbDeclaration = `\n$${variablesPrefix}-${propName}-rgb: var(--${variablesPrefix}-${propName}-rgb, ${rgb.r}, ${rgb.g}, ${rgb.b});`;
|
||||
prop.value = getRgbaValue(prop.$value);
|
||||
// Always generate the main variable
|
||||
let mainValue;
|
||||
if (aliasVar) {
|
||||
mainValue = `$${variablesPrefix}-${propName}: var(--${variablesPrefix}-${propName}, ${aliasVar});`;
|
||||
} else {
|
||||
mainValue = `$${variablesPrefix}-${propName}: var(--${variablesPrefix}-${propName}, ${prop.$value});`;
|
||||
}
|
||||
|
||||
return `$${variablesPrefix}-${propName}: var(--${variablesPrefix}-${propName}, ${prop.$value});${rgbDeclaration}`;
|
||||
// Always generate the -rgb variable if it's a color
|
||||
const rgb = hexToRgb(prop.$value);
|
||||
let rgbDeclaration = '';
|
||||
if (rgb) {
|
||||
rgbDeclaration = `\n$${variablesPrefix}-${propName}-rgb: var(--${variablesPrefix}-${propName}-rgb, ${rgb.r}, ${rgb.g}, ${rgb.b});`;
|
||||
}
|
||||
|
||||
return `${mainValue}${rgbDeclaration}`;
|
||||
}
|
||||
|
||||
// Generates a typography based css utility-class or scss variable from a typography token structure
|
||||
@@ -287,6 +308,7 @@ module.exports = {
|
||||
generateFontFamilyValue,
|
||||
generateTypographyOutput,
|
||||
generateValue,
|
||||
getAliasReferenceVariable,
|
||||
setPrefixValue,
|
||||
generateRadiusUtilityClasses,
|
||||
generateColorUtilityClasses,
|
||||
|
||||
851
core/src/components.d.ts
vendored
@@ -99,7 +99,7 @@ export class AccordionGroup implements ComponentInterface {
|
||||
* Custom behavior: ['a', 'b']
|
||||
*/
|
||||
printIonWarning(
|
||||
`ion-accordion-group was passed an array of values, but multiple="false". This is incorrect usage and may result in unexpected behaviors. To dismiss this warning, pass a string to the "value" property when multiple="false".
|
||||
`[ion-accordion-group] - An array of values was passed, but multiple is "false". This is incorrect usage and may result in unexpected behaviors. To dismiss this warning, pass a string to the "value" property when multiple="false".
|
||||
|
||||
Value Passed: [${value.map((v) => `'${v}'`).join(', ')}]
|
||||
`,
|
||||
|
||||
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 53 KiB |
@@ -5,6 +5,7 @@ import type { Gesture } from '@utils/gesture';
|
||||
import { createButtonActiveGesture } from '@utils/gesture/button-active';
|
||||
import { raf } from '@utils/helpers';
|
||||
import { createLockController } from '@utils/lock-controller';
|
||||
import { printIonWarning } from '@utils/logging';
|
||||
import {
|
||||
createDelegateController,
|
||||
createTriggerController,
|
||||
@@ -320,8 +321,8 @@ export class Alert implements ComponentInterface, OverlayInterface {
|
||||
// checkboxes and inputs are all accepted, but they cannot be mixed.
|
||||
const inputTypes = new Set(inputs.map((i) => i.type));
|
||||
if (inputTypes.has('checkbox') && inputTypes.has('radio')) {
|
||||
console.warn(
|
||||
`Alert cannot mix input types: ${Array.from(inputTypes.values()).join(
|
||||
printIonWarning(
|
||||
`[ion-alert] - Alert cannot mix input types: ${Array.from(inputTypes.values()).join(
|
||||
'/'
|
||||
)}. Please see alert docs for more info.`
|
||||
);
|
||||
|
||||
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 100 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |