merge release-6.5.3

Release 6.5.3
This commit is contained in:
Liam DeBeasi
2023-02-08 09:33:13 -05:00
committed by GitHub
205 changed files with 370 additions and 148 deletions

View File

@ -44,10 +44,6 @@ jobs:
test-core-screenshot: test-core-screenshot:
strategy: strategy:
# This ensures that all screenshot shard
# failures are reported so the dev can
# review everything at once.
fail-fast: false
matrix: matrix:
# Divide the tests into n buckets # Divide the tests into n buckets
# and run those buckets in parallel. # and run those buckets in parallel.

View File

@ -3,6 +3,19 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [6.5.3](https://github.com/ionic-team/ionic-framework/compare/v6.5.2...v6.5.3) (2023-02-08)
### Bug Fixes
* **button:** size and strong are respected in ion-buttons ([#26726](https://github.com/ionic-team/ionic-framework/issues/26726)) ([3759125](https://github.com/ionic-team/ionic-framework/commit/37591255b4ab3dde5ece6950024a3b66e7224364))
* **chip:** descenders are not clipped in label ([#26729](https://github.com/ionic-team/ionic-framework/issues/26729)) ([a9e000b](https://github.com/ionic-team/ionic-framework/commit/a9e000b4338f75c27e9284dbe9a6501ba3b213bc)), closes [#18313](https://github.com/ionic-team/ionic-framework/issues/18313)
* **refresher:** prevent clearing virtual scroll overflow styling ([#26613](https://github.com/ionic-team/ionic-framework/issues/26613)) ([9d6ec29](https://github.com/ionic-team/ionic-framework/commit/9d6ec2925cb2314d5379b864aef467b34afbb318)), closes [#26553](https://github.com/ionic-team/ionic-framework/issues/26553)
## [6.5.2](https://github.com/ionic-team/ionic-framework/compare/v6.5.1...v6.5.2) (2023-02-01) ## [6.5.2](https://github.com/ionic-team/ionic-framework/compare/v6.5.1...v6.5.2) (2023-02-01)

View File

@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [6.5.3](https://github.com/ionic-team/ionic/compare/v6.5.2...v6.5.3) (2023-02-08)
**Note:** Version bump only for package @ionic/angular
## [6.5.2](https://github.com/ionic-team/ionic/compare/v6.5.1...v6.5.2) (2023-02-01) ## [6.5.2](https://github.com/ionic-team/ionic/compare/v6.5.1...v6.5.2) (2023-02-01)

View File

@ -1,15 +1,15 @@
{ {
"name": "@ionic/angular", "name": "@ionic/angular",
"version": "6.5.2", "version": "6.5.3",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@ionic/angular", "name": "@ionic/angular",
"version": "6.5.2", "version": "6.5.3",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@ionic/core": "^6.5.2", "@ionic/core": "^6.5.3",
"ionicons": "^6.1.1", "ionicons": "^6.1.1",
"jsonc-parser": "^3.0.0", "jsonc-parser": "^3.0.0",
"tslib": "^2.0.0" "tslib": "^2.0.0"
@ -1006,9 +1006,9 @@
"license": "BSD-3-Clause" "license": "BSD-3-Clause"
}, },
"node_modules/@ionic/core": { "node_modules/@ionic/core": {
"version": "6.5.2", "version": "6.5.3",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.5.2.tgz", "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.5.3.tgz",
"integrity": "sha512-9SQedXM0Hohy6ydgJVA22Ls6DeDgVJdlUHgaxQUNhtqIZuCqbaYZMEoanflMc852qkIyQtF25Zh7Q2wIVZveWw==", "integrity": "sha512-z4slJZEw0PLet2htICKmCh76sN6kY28GSaYLDV1b4O/ya6qgu4QDwPkKbg22E8fiXBALlilce2zJQ55Tx5C6Aw==",
"dependencies": { "dependencies": {
"@stencil/core": "^2.18.0", "@stencil/core": "^2.18.0",
"ionicons": "^6.1.1", "ionicons": "^6.1.1",
@ -7334,9 +7334,9 @@
"dev": true "dev": true
}, },
"@ionic/core": { "@ionic/core": {
"version": "6.5.2", "version": "6.5.3",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.5.2.tgz", "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.5.3.tgz",
"integrity": "sha512-9SQedXM0Hohy6ydgJVA22Ls6DeDgVJdlUHgaxQUNhtqIZuCqbaYZMEoanflMc852qkIyQtF25Zh7Q2wIVZveWw==", "integrity": "sha512-z4slJZEw0PLet2htICKmCh76sN6kY28GSaYLDV1b4O/ya6qgu4QDwPkKbg22E8fiXBALlilce2zJQ55Tx5C6Aw==",
"requires": { "requires": {
"@stencil/core": "^2.18.0", "@stencil/core": "^2.18.0",
"ionicons": "^6.1.1", "ionicons": "^6.1.1",

View File

@ -1,6 +1,6 @@
{ {
"name": "@ionic/angular", "name": "@ionic/angular",
"version": "6.5.2", "version": "6.5.3",
"description": "Angular specific wrappers for @ionic/core", "description": "Angular specific wrappers for @ionic/core",
"keywords": [ "keywords": [
"ionic", "ionic",
@ -42,7 +42,7 @@
"validate": "npm i && npm run lint && npm run test && npm run build" "validate": "npm i && npm run lint && npm run test && npm run build"
}, },
"dependencies": { "dependencies": {
"@ionic/core": "^6.5.2", "@ionic/core": "^6.5.3",
"ionicons": "^6.1.1", "ionicons": "^6.1.1",
"jsonc-parser": "^3.0.0", "jsonc-parser": "^3.0.0",
"tslib": "^2.0.0" "tslib": "^2.0.0"

View File

@ -3,6 +3,19 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [6.5.3](https://github.com/ionic-team/ionic/compare/v6.5.2...v6.5.3) (2023-02-08)
### Bug Fixes
* **button:** size and strong are respected in ion-buttons ([#26726](https://github.com/ionic-team/ionic/issues/26726)) ([3759125](https://github.com/ionic-team/ionic/commit/37591255b4ab3dde5ece6950024a3b66e7224364))
* **chip:** descenders are not clipped in label ([#26729](https://github.com/ionic-team/ionic/issues/26729)) ([a9e000b](https://github.com/ionic-team/ionic/commit/a9e000b4338f75c27e9284dbe9a6501ba3b213bc)), closes [#18313](https://github.com/ionic-team/ionic/issues/18313)
* **refresher:** prevent clearing virtual scroll overflow styling ([#26613](https://github.com/ionic-team/ionic/issues/26613)) ([9d6ec29](https://github.com/ionic-team/ionic/commit/9d6ec2925cb2314d5379b864aef467b34afbb318)), closes [#26553](https://github.com/ionic-team/ionic/issues/26553)
## [6.5.2](https://github.com/ionic-team/ionic/compare/v6.5.1...v6.5.2) (2023-02-01) ## [6.5.2](https://github.com/ionic-team/ionic/compare/v6.5.1...v6.5.2) (2023-02-01)

View File

@ -1,12 +1,12 @@
{ {
"name": "@ionic/core", "name": "@ionic/core",
"version": "6.5.2", "version": "6.5.3",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@ionic/core", "name": "@ionic/core",
"version": "6.5.2", "version": "6.5.3",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@stencil/core": "^2.18.0", "@stencil/core": "^2.18.0",

View File

@ -1,6 +1,6 @@
{ {
"name": "@ionic/core", "name": "@ionic/core",
"version": "6.5.2", "version": "6.5.3",
"description": "Base components for Ionic", "description": "Base components for Ionic",
"keywords": [ "keywords": [
"ionic", "ionic",

View File

@ -1,5 +1,6 @@
@import "./button"; @import "./button";
@import "./button.ios.vars"; @import "./button.ios.vars";
@import "../toolbar/toolbar.ios.vars";
// iOS Button // iOS Button
@ -23,6 +24,20 @@
letter-spacing: #{$button-ios-letter-spacing}; letter-spacing: #{$button-ios-letter-spacing};
} }
/**
* The default buttons in a toolbar
* have a different font size/weight
* than buttons outside of a toolbar on iOS.
* However, we still want the "size"/"strong"
* properties to be usable in a toolbar, so we add
* the .in-buttons selector such that we
* can add the different font size/weight in a toolbar
* but still let "size"/"strong" override it.
*/
:host(.in-buttons) {
font-size: #{$toolbar-ios-button-font-size};
font-weight: 400;
}
// iOS Solid Button // iOS Solid Button
// -------------------------------------------------- // --------------------------------------------------

View File

@ -293,6 +293,7 @@ export class Button implements ComponentInterface, AnchorInterface, ButtonInterf
[`${buttonType}-strong`]: strong, [`${buttonType}-strong`]: strong,
'in-toolbar': hostContext('ion-toolbar', this.el), 'in-toolbar': hostContext('ion-toolbar', this.el),
'in-toolbar-color': hostContext('ion-toolbar[color]', this.el), 'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
'in-buttons': hostContext('ion-buttons', this.el),
'button-has-icon-only': hasIconOnly, 'button-has-icon-only': hasIconOnly,
'button-disabled': disabled, 'button-disabled': disabled,
'ion-activatable': true, 'ion-activatable': true,

View File

@ -2,11 +2,53 @@ import { expect } from '@playwright/test';
import { test } from '@utils/test/playwright'; import { test } from '@utils/test/playwright';
test.describe('button: size', () => { test.describe('button: size', () => {
test('should not have visual regressions', async ({ page }) => { test.beforeEach(({ skip }) => {
await page.goto(`/src/components/button/test/size`); skip.rtl();
});
test('should render small buttons', async ({ page }) => {
await page.setContent(`
<ion-button size="small" fill="solid">Small Button</ion-button>
`);
await page.setIonViewport(); const wrapper = page.locator('ion-button');
expect(await page.screenshot()).toMatchSnapshot(`button-size-${page.getSnapshotSettings()}.png`); expect(await wrapper.screenshot()).toMatchSnapshot(`button-size-small-${page.getSnapshotSettings()}.png`);
});
test('should render large buttons', async ({ page }) => {
await page.setContent(`
<ion-button size="large" fill="solid">Large Button</ion-button>
`);
const wrapper = page.locator('ion-button');
expect(await wrapper.screenshot()).toMatchSnapshot(`button-size-large-${page.getSnapshotSettings()}.png`);
});
test.describe('in ion-buttons', () => {
test('should render small button', async ({ page }) => {
await page.setContent(`
<ion-buttons>
<ion-button size="small" fill="solid">Small Button</ion-button>
</ion-buttons>
`);
const wrapper = page.locator('ion-button');
expect(await wrapper.screenshot()).toMatchSnapshot(
`button-size-small-in-buttons-${page.getSnapshotSettings()}.png`
);
});
test('should render large button', async ({ page }) => {
await page.setContent(`
<ion-buttons>
<ion-button size="large" fill="solid">Large Button</ion-button>
</ion-buttons>
`);
const wrapper = page.locator('ion-button');
expect(await wrapper.screenshot()).toMatchSnapshot(
`button-size-large-in-buttons-${page.getSnapshotSettings()}.png`
);
});
}); });
}); });

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -18,6 +18,11 @@
<ion-app> <ion-app>
<ion-header> <ion-header>
<ion-toolbar> <ion-toolbar>
<ion-buttons slot="start">
<ion-button fill="solid">Default Button</ion-button>
<ion-button fill="solid" size="small">Small Button</ion-button>
<ion-button fill="solid" size="large">Large Button</ion-button>
</ion-buttons>
<ion-title>Button - Size</ion-title> <ion-title>Button - Size</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>

View File

@ -1,12 +1,57 @@
import { expect } from '@playwright/test'; import { expect } from '@playwright/test';
import { test } from '@utils/test/playwright'; import { test } from '@utils/test/playwright';
/**
* Clear buttons have special font-weight
* styles which is why we make sure
* to capture the clear button here.
*/
test.describe('button: strong', () => { test.describe('button: strong', () => {
test('should not have visual regressions', async ({ page }) => { test.beforeEach(({ skip }) => {
await page.goto(`/src/components/button/test/strong`); skip.rtl();
});
test('should render strong button', async ({ page }) => {
await page.setContent(`
<ion-button fill="solid" strong="true">Button</ion-button>
`);
await page.setIonViewport(); const wrapper = page.locator('ion-button');
expect(await page.screenshot()).toMatchSnapshot(`button-strong-${page.getSnapshotSettings()}.png`); expect(await wrapper.screenshot()).toMatchSnapshot(`button-strong-${page.getSnapshotSettings()}.png`);
});
test('should render strong clear button', async ({ page }) => {
await page.setContent(`
<ion-button fill="clear" strong="true">Button</ion-button>
`);
const wrapper = page.locator('ion-button');
expect(await wrapper.screenshot()).toMatchSnapshot(`button-clear-strong-${page.getSnapshotSettings()}.png`);
});
test.describe('in ion-buttons', () => {
test('should render strong button', async ({ page }) => {
await page.setContent(`
<ion-buttons>
<ion-button strong="true" fill="solid">Button</ion-button>
</ion-buttons>
`);
const wrapper = page.locator('ion-button');
expect(await wrapper.screenshot()).toMatchSnapshot(`button-strong-in-buttons-${page.getSnapshotSettings()}.png`);
});
test('should render strong clear button', async ({ page }) => {
await page.setContent(`
<ion-buttons>
<ion-button strong="true" fill="clear">Button</ion-button>
</ion-buttons>
`);
const wrapper = page.locator('ion-button');
expect(await wrapper.screenshot()).toMatchSnapshot(
`button-clear-strong-in-buttons-${page.getSnapshotSettings()}.png`
);
});
}); });
}); });

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -18,6 +18,11 @@
<ion-app> <ion-app>
<ion-header> <ion-header>
<ion-toolbar> <ion-toolbar>
<ion-buttons slot="start">
<ion-button fill="solid" strong="true">Solid Button</ion-button>
<ion-button fill="outline" strong="true">Outline Button</ion-button>
<ion-button fill="clear" strong="true">Clear Button</ion-button>
</ion-buttons>
<ion-title>Button - Strong</ion-title> <ion-title>Button - Strong</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>

View File

@ -12,9 +12,6 @@
@include margin-horizontal(2px, 2px); @include margin-horizontal(2px, 2px);
height: 32px; height: 32px;
font-size: #{$toolbar-ios-button-font-size};
font-weight: 400;
} }
::slotted(*) ion-button:not(.button-round) { ::slotted(*) ion-button:not(.button-round) {

View File

@ -14,9 +14,6 @@
@include margin-horizontal(2px, 2px); @include margin-horizontal(2px, 2px);
height: 32px; height: 32px;
font-size: #{$toolbar-md-button-font-size};
font-weight: 500;
} }
::slotted(*) ion-button:not(.button-round) { ::slotted(*) ion-button:not(.button-round) {

View File

@ -27,8 +27,6 @@
font-family: $font-family-base; font-family: $font-family-base;
font-size: 14px; font-size: 14px;
line-height: 1;
cursor: pointer; cursor: pointer;
overflow: hidden; overflow: hidden;

View File

@ -9,4 +9,28 @@ test.describe('chip: rendering', () => {
expect(await page.screenshot()).toMatchSnapshot(`chip-basic-${page.getSnapshotSettings()}.png`); expect(await page.screenshot()).toMatchSnapshot(`chip-basic-${page.getSnapshotSettings()}.png`);
}); });
test('should not clip descenders in item', async ({ page, skip }) => {
skip.rtl();
skip.mode('md');
test.info().annotations.push({
type: 'issue',
description: 'https://github.com/ionic-team/ionic-framework/issues/18313',
});
await page.setContent(`
<ion-list>
<ion-item>
<ion-chip>
<ion-label>Agreements</ion-label>
</ion-chip>
</ion-item>
</ion-list>
`);
const chip = page.locator('ion-chip');
expect(await chip.screenshot()).toMatchSnapshot(`chip-descender-${page.getSnapshotSettings()}.png`);
});
}); });

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@ -27,23 +27,6 @@ test.describe('datetime: locale', () => {
}); });
}); });
test.describe('ta-IN', () => {
test('should not have visual regressions', async () => {
await datetimeFixture.goto('ta-IN', 'date');
await datetimeFixture.expectLocalizedDatePicker();
});
test('month/year picker should not have visual regressions', async () => {
await datetimeFixture.goto('ta-IN', 'month-year');
await datetimeFixture.expectLocalizedMonthYearPicker();
});
test('time picker should not have visual regressions', async () => {
await datetimeFixture.goto('ta-IN', 'time');
await datetimeFixture.expectLocalizedTimePicker();
});
});
test.describe('ja-JP', () => { test.describe('ja-JP', () => {
test('should not have visual regressions', async () => { test('should not have visual regressions', async () => {
await datetimeFixture.goto('ja-JP', 'date'); await datetimeFixture.goto('ja-JP', 'date');

Some files were not shown because too many files have changed in this diff Show More