Compare commits

..

48 Commits

Author SHA1 Message Date
ionitron
24530b5bc6 v6.5.3 2023-02-08 14:14:31 +00:00
Liam DeBeasi
37591255b4 fix(button): size and strong are respected in ion-buttons (#26726)
resolves https://github.com/ionic-team/ionic-framework/issues/16289
2023-02-07 08:44:10 -05:00
Liam DeBeasi
418e503433 test(many): disable flaky tests (#26733) 2023-02-03 16:51:47 -05:00
Liam DeBeasi
a9e000b433 fix(chip): descenders are not clipped in label (#26729)
resolves #18313
2023-02-03 15:00:22 -05:00
Liam DeBeasi
d084557bbc chore(ci): enable fail-fast for matrix jobs (#26713)
Screenshot matrix jobs had "fail-fast: false". This enabled each test runner to provide its `playwright-report` directory so team members can view test failures. At the time, all tests ran even if previous tests failed.

In https://github.com/ionic-team/ionic-framework/pull/26447, we updated the Playwright config to have tests fail fast within a single test runner. However, other test runners continue to run. This is not helpful in the case of failing tests because the artifacts for each test runner will not be reported until all test runners are done.

This PR changes the matrix strategy to enable fail-fast (which is the default) so in-progress/queued test runners fail if a previous test runner fails.
2023-02-03 13:46:01 -05:00
Liam DeBeasi
7553cc7b0d test(many): resolve more flaky tests (#26731) 2023-02-03 13:21:38 -05:00
Sean Perkins
9d6ec2925c fix(refresher): prevent clearing virtual scroll overflow styling (#26613)
Resolves #26553
2023-02-02 13:20:03 -05:00
Liam DeBeasi
54cd571acd merge release-6.5.2
Release 6.5.2
2023-02-01 09:18:03 -05:00
ionitron
4cf5ad8f25 chore(): update package lock files 2023-02-01 13:49:15 +00:00
ionitron
1b712e4a4b v6.5.2 2023-02-01 13:49:02 +00:00
Liam DeBeasi
95f65a5a39 fix(popover): resolve import warning in stencil apps (#26705)
resolves #26704
2023-01-31 15:34:57 -05:00
Sean Perkins
7c0089718a fix(vue): cache attached view reference (#26694)
Resolves #26695
2023-01-30 15:58:03 -05:00
Liam DeBeasi
69d89eae94 fix(popover): popover opens on chrome 109 (#26672)
resolves #26643
2023-01-30 11:55:20 -05:00
Sean Perkins
95a3c69bbb fix(item): inherit aria attributes before render (#26546)
Resolves #26538
2023-01-27 16:02:45 -05:00
Liam DeBeasi
227b2aea00 chore(ci): sync scripts now account for dependencies (#26686) 2023-01-27 14:37:05 -05:00
Amanda Johnston
63afc279e5 test(overlays): re-enable hidden focusable element test (#26685) 2023-01-27 09:04:07 -06:00
Liam DeBeasi
a687457936 fix(select): setting options async updates rendered text (#26667)
resolves #19324
2023-01-25 13:30:03 -05:00
Liam DeBeasi
a4ceda8a95 chore(github): update issue template for v7 beta (#26683) 2023-01-25 12:10:07 -05:00
Liam DeBeasi
9757786084 merge release-6.5.1
Release 6.5.1
2023-01-25 09:18:21 -05:00
ionitron
e3cc0f4537 chore(): update package lock files 2023-01-25 13:46:56 +00:00
ionitron
135a4194ce v6.5.1 2023-01-25 13:46:32 +00:00
Liam DeBeasi
946807d67b fix(select): focusing item works in firefox (#26668) 2023-01-24 14:17:04 -05:00
dependabot[bot]
191c3386a4 chore(deps-dev): bump @axe-core/playwright from 4.5.2 to 4.6.0 in /core (#26666)
Bumps [@axe-core/playwright](https://github.com/dequelabs/axe-core-npm) from 4.5.2 to 4.6.0.
- [Release notes](https://github.com/dequelabs/axe-core-npm/releases)
- [Changelog](https://github.com/dequelabs/axe-core-npm/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/dequelabs/axe-core-npm/compare/v4.5.2...v4.6.0)

---
updated-dependencies:
- dependency-name: "@axe-core/playwright"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-24 08:29:19 -05:00
Liam DeBeasi
c6620c7c74 fix(picker-column): cssClass is set on column (#26658)
resolves #26653
2023-01-23 11:05:55 -05:00
Liam DeBeasi
1115203120 fix(modal, popover): warn if trigger element was not found (#26650) 2023-01-20 15:04:16 -05:00
Sean Perkins
6b16a0c020 fix(vue): unmount teleported components (#26647)
Resolves #26644
2023-01-20 11:23:27 -05:00
Amanda Johnston
22e9ff866f fix(action-sheet): button icons are not announced by screen readers (#26640) 2023-01-19 14:50:05 -06:00
Amanda Johnston
77ccac0590 fix(toggle): on-off icon is not announced by screen readers (#26641) 2023-01-19 12:40:37 -06:00
Liam DeBeasi
acc8d911ad chore(angular-server): fix peer dependencies (#26638) 2023-01-19 11:53:30 -05:00
Liam DeBeasi
abcfe9fe86 fix(react): hardware back button works in dev mode (#26614)
resolves #26599
2023-01-19 10:49:47 -05:00
Liam DeBeasi
dd7cd8c0bf fix(fab-button): icon is not announced by screen readers (#26619)
resolves #22296
2023-01-19 09:31:26 -05:00
Liam DeBeasi
44b8292226 chore(angular): fix package-lock (#26637) 2023-01-19 09:12:00 -05:00
Liam DeBeasi
87d83bb21b chore(vue-router): add eslint and prettier (#26636) 2023-01-19 08:51:08 -05:00
Liam DeBeasi
dc27736bd5 chore(vue): add eslint and prettier (#26635) 2023-01-18 18:29:25 -05:00
Liam DeBeasi
6d4c52aa5b chore(react-router): migrate to eslint, add prettier (#26634) 2023-01-18 17:22:16 -05:00
Liam DeBeasi
b02190d71f chore(react): migrate to eslint, add prettier (#26633) 2023-01-18 16:49:25 -05:00
Liam DeBeasi
2dca54a457 docs(breadcrumb): remove documentation for nonexistent APIs (#26630)
resolves #26625
2023-01-18 14:31:34 -05:00
Liam DeBeasi
487f4cd4a8 merge release-6.5.0
v6.5.0
2023-01-18 11:33:51 -05:00
Liam DeBeasi
5f4650da5a chore(): update angular package-lock with legacy peer deps 2023-01-18 15:55:32 +00:00
Liam DeBeasi
ffe6f0ee2d chore(deps): temporarily use legacy peer deps 2023-01-18 15:28:56 +00:00
ionitron
cd5ae8dd5d v6.5.0 2023-01-18 15:06:12 +00:00
Liam DeBeasi
545f0a9309 chore(): merge 6.5.0 features
Feature 6.5.0
2023-01-18 09:57:58 -05:00
Liam DeBeasi
c01600191e chore(): sync with main 2023-01-18 09:36:43 -05:00
Liam DeBeasi
a095201def merge release-6.4.3
Release 6.4.3
2023-01-18 09:34:17 -05:00
Liam DeBeasi
90405eb0af feat(deps): update ionicons to 6.1.1 (#26626) 2023-01-18 09:12:02 -05:00
Liam DeBeasi
ccd2a9224e feat(deps): update ionicons to 6.1.0 (#26617) 2023-01-17 16:16:39 -05:00
Amanda Johnston
c2e1ad385d chore(many): replace any types and add tech debt tickets (#26293)
Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
2023-01-06 09:34:55 -06:00
Tommertom
27527025e4 feat(router): export hook interfaces (#26551) 2023-01-05 08:30:35 -05:00
428 changed files with 22444 additions and 6311 deletions

View File

@@ -21,6 +21,7 @@ body:
- label: v4.x
- label: v5.x
- label: v6.x
- label: v7.x
- label: Nightly
- type: textarea
attributes:

View File

@@ -8,7 +8,7 @@ runs:
node-version: 16.x
- name: Install Angular Server Dependencies
run: npm install --legacy-peer-deps
run: npm ci
shell: bash
working-directory: ./packages/angular-server
- name: Build

View File

@@ -12,7 +12,7 @@ runs:
path: ./core
filename: CoreBuild.zip
- name: Install Angular Dependencies
run: npm install --legacy-peer-deps
run: npm ci
shell: bash
working-directory: ./angular
- name: Sync

View File

@@ -6,15 +6,6 @@ runs:
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Install Dependencies
run: npm install --legacy-peer-deps
shell: bash
working-directory: ./packages/react-router
- uses: ./.github/workflows/actions/download-archive
with:
name: ionic-react
path: ./packages/react
filename: ReactBuild.zip
- uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core
@@ -26,7 +17,7 @@ runs:
path: ./packages/react
filename: ReactBuild.zip
- name: Install Dependencies
run: npm install --legacy-peer-deps
run: npm ci
shell: bash
working-directory: ./packages/react-router
- name: Sync

View File

@@ -12,7 +12,7 @@ runs:
path: ./core
filename: CoreBuild.zip
- name: Install React Dependencies
run: npm install --legacy-peer-deps
run: npm ci
shell: bash
working-directory: ./packages/react
- name: Sync

View File

@@ -17,7 +17,7 @@ runs:
path: ./packages/vue
filename: VueBuild.zip
- name: Install Vue Router Dependencies
run: npm install
run: npm ci
shell: bash
working-directory: ./packages/vue-router
- name: Sync

View File

@@ -12,7 +12,7 @@ runs:
path: ./core
filename: CoreBuild.zip
- name: Install Vue Dependencies
run: npm install --legacy-peer-deps
run: npm ci
shell: bash
working-directory: ./packages/vue
- name: Sync

View File

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

1
.gitignore vendored
View File

@@ -7,6 +7,7 @@
log.txt
*.sublime-project
*.sublime-workspace
*.tgz
.idea/
.vscode/

View File

@@ -3,23 +3,60 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [6.4.5](https://github.com/ionic-team/ionic-framework/compare/v6.4.4...v6.4.5) (2023-02-01)
## [6.5.3](https://github.com/ionic-team/ionic-framework/compare/v6.5.2...v6.5.3) (2023-02-08)
### Bug Fixes
* **vue:** cache attached view reference ([#26694](https://github.com/ionic-team/ionic-framework/issues/26694)) ([a930c43](https://github.com/ionic-team/ionic-framework/commit/a930c43581155d262af42e0f16d26a4b1a65fe51)), closes [#26695](https://github.com/ionic-team/ionic-framework/issues/26695)
* **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.4.4](https://github.com/ionic-team/ionic-framework/compare/v6.4.3...v6.4.4) (2023-01-25)
## [6.5.2](https://github.com/ionic-team/ionic-framework/compare/v6.5.1...v6.5.2) (2023-02-01)
### Bug Fixes
* **vue:** unmount teleported components ([#26647](https://github.com/ionic-team/ionic-framework/issues/26647)) ([e75f050](https://github.com/ionic-team/ionic-framework/commit/e75f050be5cd487874ad00f2536c109bf7c7233d)), closes [#26644](https://github.com/ionic-team/ionic-framework/issues/26644)
* **item:** inherit aria attributes before render ([#26546](https://github.com/ionic-team/ionic-framework/issues/26546)) ([95a3c69](https://github.com/ionic-team/ionic-framework/commit/95a3c69bbbe415cb5f14ac8e1faed287e91b4b40)), closes [#26538](https://github.com/ionic-team/ionic-framework/issues/26538)
* **popover:** popover opens on chrome 109 ([#26672](https://github.com/ionic-team/ionic-framework/issues/26672)) ([69d89ea](https://github.com/ionic-team/ionic-framework/commit/69d89eae940ccd8b0cca379a961166c4592f34c7)), closes [#26643](https://github.com/ionic-team/ionic-framework/issues/26643)
* **popover:** resolve import warning in stencil apps ([#26705](https://github.com/ionic-team/ionic-framework/issues/26705)) ([95f65a5](https://github.com/ionic-team/ionic-framework/commit/95f65a5a390eb600de8998c8be9dfd7c023d1eeb)), closes [#26704](https://github.com/ionic-team/ionic-framework/issues/26704)
* **select:** setting options async updates rendered text ([#26667](https://github.com/ionic-team/ionic-framework/issues/26667)) ([a687457](https://github.com/ionic-team/ionic-framework/commit/a6874579361db548d961fdee83299d664dd6541b)), closes [#19324](https://github.com/ionic-team/ionic-framework/issues/19324)
* **vue:** cache attached view reference ([#26694](https://github.com/ionic-team/ionic-framework/issues/26694)) ([7c00897](https://github.com/ionic-team/ionic-framework/commit/7c0089718afbbe3e19fecee4abbea00a6e618d95)), closes [#26695](https://github.com/ionic-team/ionic-framework/issues/26695)
## [6.5.1](https://github.com/ionic-team/ionic-framework/compare/v6.5.0...v6.5.1) (2023-01-25)
### Bug Fixes
* **action-sheet:** button icons are not announced by screen readers ([#26640](https://github.com/ionic-team/ionic-framework/issues/26640)) ([22e9ff8](https://github.com/ionic-team/ionic-framework/commit/22e9ff866f8bd7e2e4ca82eae70969ea4f2658df))
* **fab-button:** icon is not announced by screen readers ([#26619](https://github.com/ionic-team/ionic-framework/issues/26619)) ([dd7cd8c](https://github.com/ionic-team/ionic-framework/commit/dd7cd8c0bfe652d293dc2c2b1bd2a36fd9cf0a0b)), closes [#22296](https://github.com/ionic-team/ionic-framework/issues/22296)
* **modal, popover:** warn if trigger element was not found ([#26650](https://github.com/ionic-team/ionic-framework/issues/26650)) ([1115203](https://github.com/ionic-team/ionic-framework/commit/11152031202a513121861486e50ea7942b9118d3))
* **picker-column:** cssClass is set on column ([#26658](https://github.com/ionic-team/ionic-framework/issues/26658)) ([c6620c7](https://github.com/ionic-team/ionic-framework/commit/c6620c7c74abe04c3041e8b256441af72ea12131)), closes [#26653](https://github.com/ionic-team/ionic-framework/issues/26653)
* **react:** hardware back button works in dev mode ([#26614](https://github.com/ionic-team/ionic-framework/issues/26614)) ([abcfe9f](https://github.com/ionic-team/ionic-framework/commit/abcfe9fe867730f29b9379c3736f86b3d20c5b0a)), closes [#26599](https://github.com/ionic-team/ionic-framework/issues/26599)
* **select:** focusing item works in firefox ([#26668](https://github.com/ionic-team/ionic-framework/issues/26668)) ([946807d](https://github.com/ionic-team/ionic-framework/commit/946807d67b972c41b52c23c8f00feca4c705b224))
* **toggle:** on-off icon is not announced by screen readers ([#26641](https://github.com/ionic-team/ionic-framework/issues/26641)) ([77ccac0](https://github.com/ionic-team/ionic-framework/commit/77ccac059091d5d9f7daf9c7fb01a9e855b86ce3))
* **vue:** unmount teleported components ([#26647](https://github.com/ionic-team/ionic-framework/issues/26647)) ([6b16a0c](https://github.com/ionic-team/ionic-framework/commit/6b16a0c020fc6afb6a5a6e6fa6f0758384f026b9)), closes [#26644](https://github.com/ionic-team/ionic-framework/issues/26644)
# [6.5.0](https://github.com/ionic-team/ionic-framework/compare/v6.4.3...v6.5.0) (2023-01-18)
### Features
* **deps:** update ionicons to 6.1.0 ([#26617](https://github.com/ionic-team/ionic-framework/issues/26617)) ([ccd2a92](https://github.com/ionic-team/ionic-framework/commit/ccd2a9224e018ad0d67903d44ec312934c3b35ec))
* **deps:** update ionicons to 6.1.1 ([#26626](https://github.com/ionic-team/ionic-framework/issues/26626)) ([90405eb](https://github.com/ionic-team/ionic-framework/commit/90405eb0af69ce04faf5855189449d0b7518288c))
* **router:** export hook interfaces ([#26551](https://github.com/ionic-team/ionic-framework/issues/26551)) ([2752702](https://github.com/ionic-team/ionic-framework/commit/27527025e4588f43f9f79640f0929e7c7d0618ee))

View File

@@ -3,7 +3,7 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [6.4.5](https://github.com/ionic-team/ionic/compare/v6.4.4...v6.4.5) (2023-02-01)
## [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
@@ -11,20 +11,32 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
## [6.4.4](https://github.com/ionic-team/ionic/compare/v6.4.3...v6.4.4) (2023-01-25)
## [6.0.16](https://github.com/ionic-team/ionic/compare/v6.0.15...v6.0.16) (2022-04-08)
## [6.5.2](https://github.com/ionic-team/ionic/compare/v6.5.1...v6.5.2) (2023-02-01)
### Bug Fixes
* **angular:** button components now route correctly without reload ([#25071](https://github.com/ionic-team/ionic/issues/25071)) ([fb994fa](https://github.com/ionic-team/ionic/commit/fb994fa9a7721a3575fb8d123be34aea4bf076a4))
* **popover:** popover opens on chrome 109 ([#26672](https://github.com/ionic-team/ionic/issues/26672)) ([69d89ea](https://github.com/ionic-team/ionic/commit/69d89eae940ccd8b0cca379a961166c4592f34c7)), closes [#26643](https://github.com/ionic-team/ionic/issues/26643)
## [6.0.15](https://github.com/ionic-team/ionic/compare/v6.0.14...v6.0.15) (2022-04-06)
## [6.5.1](https://github.com/ionic-team/ionic/compare/v6.5.0...v6.5.1) (2023-01-25)
**Note:** Version bump only for package @ionic/angular
# [6.5.0](https://github.com/ionic-team/ionic/compare/v6.4.3...v6.5.0) (2023-01-18)
### Features
* **deps:** update ionicons to 6.1.0 ([#26617](https://github.com/ionic-team/ionic/issues/26617)) ([ccd2a92](https://github.com/ionic-team/ionic/commit/ccd2a9224e018ad0d67903d44ec312934c3b35ec))
* **deps:** update ionicons to 6.1.1 ([#26626](https://github.com/ionic-team/ionic/issues/26626)) ([90405eb](https://github.com/ionic-team/ionic/commit/90405eb0af69ce04faf5855189449d0b7518288c))
@@ -398,7 +410,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
# [6.1.0](https://github.com/ionic-team/ionic/compare/v6.0.16...v6.1.0) (2022-04-13)
# [6.1.0](https://github.com/ionic-team/ionic/compare/v6.0.14...v6.1.0) (2022-04-13)
### Bug Fixes

4036
angular/package-lock.json generated
View File

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -2,8 +2,11 @@
set -e
# Copy core dist
rm -rf node_modules/@ionic/core/dist node_modules/@ionic/core/components
cp -a ../core/dist node_modules/@ionic/core/dist
cp -a ../core/components node_modules/@ionic/core/components
cp -a ../core/package.json node_modules/@ionic/core/package.json
# Pack @ionic/core
npm pack ../core
# Pack @ionic/angular
npm pack ./
# Install Dependencies
npm install *.tgz --no-save

View File

@@ -6,6 +6,8 @@ import { Config } from './providers/config';
import { IonicWindow } from './types/interfaces';
import { raf } from './util/util';
// TODO(FW-2827): types
export const appInitialize = (config: Config, doc: Document, zone: NgZone) => {
return (): any => {
const win: IonicWindow | undefined = doc.defaultView as any;

View File

@@ -18,13 +18,13 @@ export class BooleanValueAccessorDirective extends ValueAccessor {
super(injector, el);
}
writeValue(value: any): void {
writeValue(value: boolean): void {
this.el.nativeElement.checked = this.lastValue = value == null ? false : value;
setIonicClasses(this.el);
}
@HostListener('ionChange', ['$event.target'])
_handleIonChange(el: any): void {
_handleIonChange(el: HTMLIonCheckboxElement | HTMLIonToggleElement): void {
this.handleChangeEvent(el, el.checked);
}
}

View File

@@ -19,6 +19,7 @@ export class RadioValueAccessorDirective extends ValueAccessor {
super(injector, el);
}
// TODO(FW-2827): type (HTMLIonRadioElement and HTMLElement are both missing `checked`)
@HostListener('ionSelect', ['$event.target'])
_handleIonSelect(el: any): void {
this.handleChangeEvent(el, el.checked);

View File

@@ -20,7 +20,14 @@ export class SelectValueAccessorDirective extends ValueAccessor {
}
@HostListener('ionChange', ['$event.target'])
_handleChangeEvent(el: any): void {
_handleChangeEvent(
el:
| HTMLIonRangeElement
| HTMLIonSelectElement
| HTMLIonRadioGroupElement
| HTMLIonSegmentElement
| HTMLIonDatetimeElement
): void {
this.handleChangeEvent(el, el.value);
}
}

View File

@@ -20,7 +20,7 @@ export class TextValueAccessorDirective extends ValueAccessor {
}
@HostListener('ionChange', ['$event.target'])
_handleInputEvent(el: any): void {
_handleInputEvent(el: HTMLIonInputElement | HTMLIonTextareaElement | HTMLIonSearchbarElement): void {
this.handleChangeEvent(el, el.value);
}
}

View File

@@ -4,6 +4,8 @@ import { Subscription } from 'rxjs';
import { raf } from '../../util/util';
// TODO(FW-2827): types
@Directive()
export class ValueAccessor implements ControlValueAccessor, AfterViewInit, OnDestroy {
private onChange: (value: any) => void = () => {

View File

@@ -30,6 +30,8 @@ import { isComponentFactoryResolver } from '../../util/util';
import { StackController } from './stack-controller';
import { RouteView, getUrl } from './stack-utils';
// TODO(FW-2827): types
@Directive({
selector: 'ion-router-outlet',
exportAs: 'outlet',

View File

@@ -17,6 +17,8 @@ import {
toSegments,
} from './stack-utils';
// TODO(FW-2827): types
export class StackController {
private views: RouteView[] = [];
private runningTask?: Promise<any>;

View File

@@ -86,6 +86,7 @@ export interface StackEvent {
tabSwitch: boolean;
}
// TODO(FW-2827): types
export interface RouteView {
id: number;
url: string;

View File

@@ -108,6 +108,7 @@ export declare interface IonModal extends Components.IonModal {
],
})
export class IonModal {
// TODO(FW-2827): type
@ContentChild(TemplateRef, { static: false }) template: TemplateRef<any>;
isCmpOpen: boolean = false;

View File

@@ -99,6 +99,7 @@ export declare interface IonPopover extends Components.IonPopover {
],
})
export class IonPopover {
// TODO(FW-2827): type
@ContentChild(TemplateRef, { static: false }) template: TemplateRef<any>;
isCmpOpen: boolean = false;

View File

@@ -21,6 +21,8 @@ import { EnvironmentInjector } from '../di/r3_injector';
import { NavParams } from '../directives/navigation/nav-params';
import { isComponentFactoryResolver } from '../util/util';
// TODO(FW-2827): types
@Injectable()
export class AngularDelegate {
constructor(private zone: NgZone, private appRef: ApplicationRef) {}
@@ -28,9 +30,17 @@ export class AngularDelegate {
create(
resolverOrInjector: ComponentFactoryResolver,
injector: Injector,
location?: ViewContainerRef
location?: ViewContainerRef,
elementReferenceKey?: string
): AngularFrameworkDelegate {
return new AngularFrameworkDelegate(resolverOrInjector, injector, location, this.appRef, this.zone);
return new AngularFrameworkDelegate(
resolverOrInjector,
injector,
location,
this.appRef,
this.zone,
elementReferenceKey
);
}
}
@@ -43,12 +53,29 @@ export class AngularFrameworkDelegate implements FrameworkDelegate {
private injector: Injector,
private location: ViewContainerRef | undefined,
private appRef: ApplicationRef,
private zone: NgZone
private zone: NgZone,
private elementReferenceKey?: string
) {}
attachViewToDom(container: any, component: any, params?: any, cssClasses?: string[]): Promise<any> {
return this.zone.run(() => {
return new Promise((resolve) => {
const componentProps = {
...params,
};
/**
* Ionic Angular passes a reference to a modal
* or popover that can be accessed using a
* variable in the overlay component. If
* elementReferenceKey is defined, then we should
* pass a reference to the component using
* elementReferenceKey as the key.
*/
if (this.elementReferenceKey !== undefined) {
componentProps[this.elementReferenceKey] = container;
}
const el = attachView(
this.zone,
this.resolverOrInjector,
@@ -59,7 +86,7 @@ export class AngularFrameworkDelegate implements FrameworkDelegate {
this.elEventsMap,
container,
component,
params,
componentProps,
cssClasses
);
resolve(el);

View File

@@ -21,7 +21,12 @@ export class ModalController extends OverlayBaseController<ModalOptions, HTMLIon
create(opts: ModalOptions): Promise<HTMLIonModalElement> {
return super.create({
...opts,
delegate: this.angularDelegate.create(this.resolver ?? this.environmentInjector, this.injector),
delegate: this.angularDelegate.create(
this.resolver ?? this.environmentInjector,
this.injector,
undefined,
'modal'
),
});
}
}

View File

@@ -3,6 +3,8 @@ import { NgZone, Inject, Injectable } from '@angular/core';
import { BackButtonEventDetail, KeyboardEventDetail, Platforms, getPlatforms, isPlatform } from '@ionic/core';
import { Subscription, Subject } from 'rxjs';
// TODO(FW-2827): types
export interface BackButtonEmitter extends Subject<BackButtonEventDetail> {
subscribeWithPriority(
priority: number,

View File

@@ -21,7 +21,12 @@ export class PopoverController extends OverlayBaseController<PopoverOptions, HTM
create(opts: PopoverOptions): Promise<HTMLIonPopoverElement> {
return super.create({
...opts,
delegate: this.angularDelegate.create(this.resolver ?? this.environmentInjector, this.injector),
delegate: this.angularDelegate.create(
this.resolver ?? this.environmentInjector,
this.injector,
undefined,
'popover'
),
});
}
}

View File

@@ -4,6 +4,8 @@ import { parse } from 'jsonc-parser';
const CONFIG_PATH = 'angular.json';
// TODO(FW-2827): types
export function readConfig(host: Tree): any {
const sourceText = host.read(CONFIG_PATH)?.toString('utf-8');
return JSON.parse(sourceText);

View File

@@ -1,5 +1,5 @@
export interface IonicGlobal {
config?: any;
config?: any; // TODO(FW-2827): type
asyncQueue?: boolean;
}

View File

@@ -1,3 +1,5 @@
// TODO(FW-2827): types
interface ControllerShape<Opts, HTMLElm> {
create(options: Opts): Promise<HTMLElm>;
dismiss(data?: any, role?: string, id?: string): Promise<boolean>;

View File

@@ -2,19 +2,14 @@
set -e
# Copy angular dist
rm -rf node_modules/@ionic/angular
cp -a ../../../dist node_modules/@ionic/angular
# Pack @ionic/core
npm pack ../../../../core
# Copy angular server
rm -rf node_modules/@ionic/angular-server
cp -a ../../../../packages/angular-server/dist node_modules/@ionic/angular-server
# Pack @ionic/angular
npm pack ../../../dist
# # Copy core dist
rm -rf node_modules/@ionic/core
mkdir node_modules/@ionic/core
cp -a ../../../../core/css node_modules/@ionic/core/css
cp -a ../../../../core/dist node_modules/@ionic/core/dist
cp -a ../../../../core/hydrate node_modules/@ionic/core/hydrate
cp -a ../../../../core/loader node_modules/@ionic/core/loader
cp -a ../../../../core/package.json node_modules/@ionic/core/package.json
# Pack @ionic/angular-server
npm pack ../../../../packages/angular-server/dist
# Install Dependencies
npm install *.tgz --no-save

View File

@@ -3,25 +3,57 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [6.4.5](https://github.com/ionic-team/ionic/compare/v6.4.4...v6.4.5) (2023-02-01)
## [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/core
### 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.4.4](https://github.com/ionic-team/ionic/compare/v6.4.3...v6.4.4) (2023-01-25)
## [6.5.2](https://github.com/ionic-team/ionic/compare/v6.5.1...v6.5.2) (2023-02-01)
### Bug Fixes
* **item:** inherit aria attributes before render ([#26546](https://github.com/ionic-team/ionic/issues/26546)) ([95a3c69](https://github.com/ionic-team/ionic/commit/95a3c69bbbe415cb5f14ac8e1faed287e91b4b40)), closes [#26538](https://github.com/ionic-team/ionic/issues/26538)
* **popover:** popover opens on chrome 109 ([#26672](https://github.com/ionic-team/ionic/issues/26672)) ([69d89ea](https://github.com/ionic-team/ionic/commit/69d89eae940ccd8b0cca379a961166c4592f34c7)), closes [#26643](https://github.com/ionic-team/ionic/issues/26643)
* **popover:** resolve import warning in stencil apps ([#26705](https://github.com/ionic-team/ionic/issues/26705)) ([95f65a5](https://github.com/ionic-team/ionic/commit/95f65a5a390eb600de8998c8be9dfd7c023d1eeb)), closes [#26704](https://github.com/ionic-team/ionic/issues/26704)
* **select:** setting options async updates rendered text ([#26667](https://github.com/ionic-team/ionic/issues/26667)) ([a687457](https://github.com/ionic-team/ionic/commit/a6874579361db548d961fdee83299d664dd6541b)), closes [#19324](https://github.com/ionic-team/ionic/issues/19324)
## [6.0.16](https://github.com/ionic-team/ionic/compare/v6.0.15...v6.0.16) (2022-04-08)
## [6.5.1](https://github.com/ionic-team/ionic/compare/v6.5.0...v6.5.1) (2023-01-25)
### Bug Fixes
* **action-sheet:** button icons are not announced by screen readers ([#26640](https://github.com/ionic-team/ionic/issues/26640)) ([22e9ff8](https://github.com/ionic-team/ionic/commit/22e9ff866f8bd7e2e4ca82eae70969ea4f2658df))
* **fab-button:** icon is not announced by screen readers ([#26619](https://github.com/ionic-team/ionic/issues/26619)) ([dd7cd8c](https://github.com/ionic-team/ionic/commit/dd7cd8c0bfe652d293dc2c2b1bd2a36fd9cf0a0b)), closes [#22296](https://github.com/ionic-team/ionic/issues/22296)
* **modal, popover:** warn if trigger element was not found ([#26650](https://github.com/ionic-team/ionic/issues/26650)) ([1115203](https://github.com/ionic-team/ionic/commit/11152031202a513121861486e50ea7942b9118d3))
* **picker-column:** cssClass is set on column ([#26658](https://github.com/ionic-team/ionic/issues/26658)) ([c6620c7](https://github.com/ionic-team/ionic/commit/c6620c7c74abe04c3041e8b256441af72ea12131)), closes [#26653](https://github.com/ionic-team/ionic/issues/26653)
* **select:** focusing item works in firefox ([#26668](https://github.com/ionic-team/ionic/issues/26668)) ([946807d](https://github.com/ionic-team/ionic/commit/946807d67b972c41b52c23c8f00feca4c705b224))
* **toggle:** on-off icon is not announced by screen readers ([#26641](https://github.com/ionic-team/ionic/issues/26641)) ([77ccac0](https://github.com/ionic-team/ionic/commit/77ccac059091d5d9f7daf9c7fb01a9e855b86ce3))
## [6.0.15](https://github.com/ionic-team/ionic/compare/v6.0.14...v6.0.15) (2022-04-06)
**Note:** Version bump only for package @ionic/core
# [6.5.0](https://github.com/ionic-team/ionic/compare/v6.4.3...v6.5.0) (2023-01-18)
### Features
* **deps:** update ionicons to 6.1.0 ([#26617](https://github.com/ionic-team/ionic/issues/26617)) ([ccd2a92](https://github.com/ionic-team/ionic/commit/ccd2a9224e018ad0d67903d44ec312934c3b35ec))
* **deps:** update ionicons to 6.1.1 ([#26626](https://github.com/ionic-team/ionic/issues/26626)) ([90405eb](https://github.com/ionic-team/ionic/commit/90405eb0af69ce04faf5855189449d0b7518288c))
* **router:** export hook interfaces ([#26551](https://github.com/ionic-team/ionic/issues/26551)) ([2752702](https://github.com/ionic-team/ionic/commit/27527025e4588f43f9f79640f0929e7c7d0618ee))
@@ -626,7 +658,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
# [6.1.0](https://github.com/ionic-team/ionic/compare/v6.0.16...v6.1.0) (2022-04-13)
# [6.1.0](https://github.com/ionic-team/ionic/compare/v6.0.14...v6.1.0) (2022-04-13)
### Bug Fixes

View File

@@ -193,8 +193,6 @@ ion-breadcrumbs,prop,itemsBeforeCollapse,number,1,false,false
ion-breadcrumbs,prop,maxItems,number | undefined,undefined,false,false
ion-breadcrumbs,prop,mode,"ios" | "md",undefined,false,false
ion-breadcrumbs,event,ionCollapsedClick,BreadcrumbCollapsedClickEventDetail,true
ion-breadcrumbs,css-prop,--background
ion-breadcrumbs,css-prop,--color
ion-button,shadow
ion-button,prop,buttonType,string,'button',false,false

88
core/package-lock.json generated
View File

@@ -1,16 +1,16 @@
{
"name": "@ionic/core",
"version": "6.4.5",
"version": "6.5.3",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@ionic/core",
"version": "6.4.5",
"version": "6.5.3",
"license": "MIT",
"dependencies": {
"@stencil/core": "^2.18.0",
"ionicons": "^6.0.4",
"ionicons": "^6.1.1",
"tslib": "^2.1.0"
},
"devDependencies": {
@@ -24,7 +24,7 @@
"@stencil/angular-output-target": "^0.4.0",
"@stencil/react-output-target": "^0.2.1",
"@stencil/sass": "^2.0.0",
"@stencil/vue-output-target": "^0.6.2",
"@stencil/vue-output-target": "^0.7.0",
"@types/jest": "^27.5.2",
"@types/node": "^14.6.0",
"@types/swiper": "5.4.0",
@@ -55,12 +55,12 @@
"dev": true
},
"node_modules/@axe-core/playwright": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.5.2.tgz",
"integrity": "sha512-RXdnUeroQwLoIoxxZNKBy/2FsjOrgYsiIrSdZkRfVVWFudTgatncc9izyMZ40ou+nw/d1zi/WPCjrLUI6TZBBA==",
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.6.0.tgz",
"integrity": "sha512-q9K4GVJ1fH8FQqErgs01dwzhOJ03vZDfMg+vO9Er05BxQOCp9Rm8oyB3byVzC7oNlxFaPU1qQ8zLwZYypHmchw==",
"dev": true,
"dependencies": {
"axe-core": "^4.5.2"
"axe-core": "^4.6.1"
},
"peerDependencies": {
"playwright": ">= 1.0.0"
@@ -1632,12 +1632,12 @@
}
},
"node_modules/@stencil/vue-output-target": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/@stencil/vue-output-target/-/vue-output-target-0.6.2.tgz",
"integrity": "sha512-Oh7SLFbOUchCSCbGe/Dqal2xSYPKCFQiVKnvzvS0dsHP/XS7rfHqp3qptW6JCp9lBoo3wmmBurHfldqxhLlnag==",
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/@stencil/vue-output-target/-/vue-output-target-0.7.0.tgz",
"integrity": "sha512-iPEgnT2z6HsfWVRWVZk5C1AaMZnbJjB+c/hvtWoO7B3aErTJB8Up6oFk/t3IRsr12aNuZ4fUra0FEDx9WweH0Q==",
"dev": true,
"peerDependencies": {
"@stencil/core": "^2.9.0"
"@stencil/core": "^2.9.0 || ^3.0.0-beta.0"
}
},
"node_modules/@stylelint/postcss-css-in-js": {
@@ -5316,9 +5316,9 @@
}
},
"node_modules/ionicons": {
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-6.0.4.tgz",
"integrity": "sha512-uDNOkBo0OVYV+kIhb51g9mb7r3Z0b+78GPZQBsjXuaetNmrB/mNTqN/uFtO+vxL/rQySKjzk8qeKJI5NWL9Ueg==",
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-6.1.1.tgz",
"integrity": "sha512-Qe6mx25DFNwA9UL1rhewI5StI3uD4+BqB2KdvLjyWhtvoUXwyAsmfHLZuDANAHQowIKtTt6BZCt5/g5NIQ635Q==",
"dependencies": {
"@stencil/core": "^2.18.0"
}
@@ -8200,14 +8200,14 @@
}
},
"node_modules/playwright": {
"version": "1.30.0",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.30.0.tgz",
"integrity": "sha512-ENbW5o75HYB3YhnMTKJLTErIBExrSlX2ZZ1C/FzmHjUYIfxj/UnI+DWpQr992m+OQVSg0rCExAOlRwB+x+yyIg==",
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.29.2.tgz",
"integrity": "sha512-hKBYJUtdmYzcjdhYDkP9WGtORwwZBBKAW8+Lz7sr0ZMxtJr04ASXVzH5eBWtDkdb0c3LLFsehfPBTRfvlfKJOA==",
"dev": true,
"hasInstallScript": true,
"peer": true,
"dependencies": {
"playwright-core": "1.30.0"
"playwright-core": "1.29.2"
},
"bin": {
"playwright": "cli.js"
@@ -8228,19 +8228,6 @@
"node": ">=14"
}
},
"node_modules/playwright/node_modules/playwright-core": {
"version": "1.30.0",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.30.0.tgz",
"integrity": "sha512-7AnRmTCf+GVYhHbLJsGUtskWTE33SwMZkybJ0v6rqR1boxq2x36U7p1vDRV7HO2IwTZgmycracLxPEJI49wu4g==",
"dev": true,
"peer": true,
"bin": {
"playwright": "cli.js"
},
"engines": {
"node": ">=14"
}
},
"node_modules/postcss": {
"version": "7.0.35",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
@@ -10510,12 +10497,12 @@
},
"dependencies": {
"@axe-core/playwright": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.5.2.tgz",
"integrity": "sha512-RXdnUeroQwLoIoxxZNKBy/2FsjOrgYsiIrSdZkRfVVWFudTgatncc9izyMZ40ou+nw/d1zi/WPCjrLUI6TZBBA==",
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.6.0.tgz",
"integrity": "sha512-q9K4GVJ1fH8FQqErgs01dwzhOJ03vZDfMg+vO9Er05BxQOCp9Rm8oyB3byVzC7oNlxFaPU1qQ8zLwZYypHmchw==",
"dev": true,
"requires": {
"axe-core": "^4.5.2"
"axe-core": "^4.6.1"
}
},
"@babel/code-frame": {
@@ -11651,9 +11638,9 @@
"requires": {}
},
"@stencil/vue-output-target": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/@stencil/vue-output-target/-/vue-output-target-0.6.2.tgz",
"integrity": "sha512-Oh7SLFbOUchCSCbGe/Dqal2xSYPKCFQiVKnvzvS0dsHP/XS7rfHqp3qptW6JCp9lBoo3wmmBurHfldqxhLlnag==",
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/@stencil/vue-output-target/-/vue-output-target-0.7.0.tgz",
"integrity": "sha512-iPEgnT2z6HsfWVRWVZk5C1AaMZnbJjB+c/hvtWoO7B3aErTJB8Up6oFk/t3IRsr12aNuZ4fUra0FEDx9WweH0Q==",
"dev": true,
"requires": {}
},
@@ -14362,9 +14349,9 @@
}
},
"ionicons": {
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-6.0.4.tgz",
"integrity": "sha512-uDNOkBo0OVYV+kIhb51g9mb7r3Z0b+78GPZQBsjXuaetNmrB/mNTqN/uFtO+vxL/rQySKjzk8qeKJI5NWL9Ueg==",
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-6.1.1.tgz",
"integrity": "sha512-Qe6mx25DFNwA9UL1rhewI5StI3uD4+BqB2KdvLjyWhtvoUXwyAsmfHLZuDANAHQowIKtTt6BZCt5/g5NIQ635Q==",
"requires": {
"@stencil/core": "^2.18.0"
}
@@ -16478,22 +16465,13 @@
}
},
"playwright": {
"version": "1.30.0",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.30.0.tgz",
"integrity": "sha512-ENbW5o75HYB3YhnMTKJLTErIBExrSlX2ZZ1C/FzmHjUYIfxj/UnI+DWpQr992m+OQVSg0rCExAOlRwB+x+yyIg==",
"version": "1.29.2",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.29.2.tgz",
"integrity": "sha512-hKBYJUtdmYzcjdhYDkP9WGtORwwZBBKAW8+Lz7sr0ZMxtJr04ASXVzH5eBWtDkdb0c3LLFsehfPBTRfvlfKJOA==",
"dev": true,
"peer": true,
"requires": {
"playwright-core": "1.30.0"
},
"dependencies": {
"playwright-core": {
"version": "1.30.0",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.30.0.tgz",
"integrity": "sha512-7AnRmTCf+GVYhHbLJsGUtskWTE33SwMZkybJ0v6rqR1boxq2x36U7p1vDRV7HO2IwTZgmycracLxPEJI49wu4g==",
"dev": true,
"peer": true
}
"playwright-core": "1.29.2"
}
},
"playwright-core": {

View File

@@ -1,6 +1,6 @@
{
"name": "@ionic/core",
"version": "6.4.5",
"version": "6.5.3",
"description": "Base components for Ionic",
"keywords": [
"ionic",
@@ -32,7 +32,7 @@
],
"dependencies": {
"@stencil/core": "^2.18.0",
"ionicons": "^6.0.4",
"ionicons": "^6.1.1",
"tslib": "^2.1.0"
},
"devDependencies": {
@@ -46,7 +46,7 @@
"@stencil/angular-output-target": "^0.4.0",
"@stencil/react-output-target": "^0.2.1",
"@stencil/sass": "^2.0.0",
"@stencil/vue-output-target": "^0.6.2",
"@stencil/vue-output-target": "^0.7.0",
"@types/jest": "^27.5.2",
"@types/node": "^14.6.0",
"@types/swiper": "5.4.0",

View File

@@ -287,7 +287,7 @@ export class ActionSheet implements ComponentInterface, OverlayInterface {
{buttons.map((b) => (
<button type="button" id={b.id} class={buttonClass(b)} onClick={() => this.buttonClick(b)}>
<span class="action-sheet-button-inner">
{b.icon && <ion-icon icon={b.icon} lazy={false} class="action-sheet-icon" />}
{b.icon && <ion-icon icon={b.icon} aria-hidden="true" lazy={false} class="action-sheet-icon" />}
{b.text}
</span>
{mode === 'md' && <ion-ripple-effect></ion-ripple-effect>}
@@ -299,7 +299,9 @@ export class ActionSheet implements ComponentInterface, OverlayInterface {
<div class="action-sheet-group action-sheet-group-cancel">
<button type="button" class={buttonClass(cancelButton)} onClick={() => this.buttonClick(cancelButton)}>
<span class="action-sheet-button-inner">
{cancelButton.icon && <ion-icon icon={cancelButton.icon} lazy={false} class="action-sheet-icon" />}
{cancelButton.icon && (
<ion-icon icon={cancelButton.icon} aria-hidden="true" lazy={false} class="action-sheet-icon" />
)}
{cancelButton.text}
</span>
{mode === 'md' && <ion-ripple-effect></ion-ripple-effect>}

View File

@@ -30,7 +30,7 @@ export interface AlertInput {
type?: TextFieldTypes | 'checkbox' | 'radio' | 'textarea';
name?: string;
placeholder?: string;
value?: any;
value?: any; // TODO(FW-2832): type
label?: string;
checked?: boolean;
disabled?: boolean;
@@ -60,5 +60,6 @@ export interface AlertButton {
role?: 'cancel' | 'destructive' | string;
cssClass?: string | string[];
id?: string;
// TODO(FW-2832): type
handler?: (value: any) => AlertButtonOverlayHandler | Promise<AlertButtonOverlayHandler>;
}

View File

@@ -25,6 +25,8 @@ import { iosLeaveAnimation } from './animations/ios.leave';
import { mdEnterAnimation } from './animations/md.enter';
import { mdLeaveAnimation } from './animations/md.leave';
// TODO(FW-2832): types
/**
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
*/

View File

@@ -10,7 +10,7 @@ import { isPlatform } from '../../utils/platform';
styleUrl: 'app.scss',
})
export class App implements ComponentInterface {
private focusVisible?: any;
private focusVisible?: any; // TODO(FW-2832): type
@Element() el!: HTMLElement;

View File

@@ -4,10 +4,6 @@
// --------------------------------------------------
:host {
/**
* @prop --background: Background of the breadcrumbs
* @prop --color: Text color of the breadcrumbs
*/
@include font-smoothing();
display: flex;

View File

@@ -1,5 +1,6 @@
@import "./button";
@import "./button.ios.vars";
@import "../toolbar/toolbar.ios.vars";
// iOS Button
@@ -23,6 +24,20 @@
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
// --------------------------------------------------

View File

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

View File

@@ -2,11 +2,53 @@ import { expect } from '@playwright/test';
import { test } from '@utils/test/playwright';
test.describe('button: size', () => {
test('should not have visual regressions', async ({ page }) => {
await page.goto(`/src/components/button/test/size`);
test.beforeEach(({ skip }) => {
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`
);
});
});
});

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -18,6 +18,11 @@
<ion-app>
<ion-header>
<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-toolbar>
</ion-header>

View File

@@ -1,12 +1,57 @@
import { expect } from '@playwright/test';
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('should not have visual regressions', async ({ page }) => {
await page.goto(`/src/components/button/test/strong`);
test.beforeEach(({ skip }) => {
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`
);
});
});
});

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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