Compare commits

..

230 Commits

Author SHA1 Message Date
Liam DeBeasi
cf3e28b35e Update README.md (#27107) 2023-04-03 16:50:56 +00:00
Liam DeBeasi
a4320c3ca3 Update CHANGELOG.md (#27108) 2023-04-03 16:50:36 +00:00
Liam DeBeasi
b411259cc1 Update README.md (#27106) 2023-04-03 16:42:02 +00:00
Liam DeBeasi
3dd2d8399b Update README.md (#27105) 2023-04-03 16:42:00 +00:00
Liam DeBeasi
8bed09d8a9 Update build.yml 2023-04-03 12:40:42 -04:00
Liam DeBeasi
2399c90d37 Update CHANGELOG.md (#27103) 2023-04-03 16:29:21 +00:00
Liam DeBeasi
4ac9055cb0 Update README.md (#27101)
* Update README.md

* Update README.md
2023-04-03 16:29:20 +00:00
Liam DeBeasi
363c3acf0f Update build.yml 2023-04-03 12:25:41 -04:00
Liam DeBeasi
e1db1ca7cb fix(card): some fix title (#27099)
## What is the current behavior?
<!-- Please describe the current behavior that you are modifying. -->


<!-- Issues are required for both bug fixes and features. -->
Issue URL: resolves
https://github.com/ionic-team/ionic-framework/issues/27094


## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

- It works now!

## Does this introduce a breaking change?

- [x] Yes
- [ ] No

<!-- If this introduces a breaking change, please describe the impact
and migration path for existing applications below. -->


## Other information

<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->

BREAKING CHANGE:


This is a breaking change description.

---------

Co-authored-by: Sean Perkins <sean-perkins@users.noreply.github.com>
2023-04-03 15:04:54 +00:00
Liam DeBeasi
3102d2cfe3 Update README.md (#27098)
<!-- Please refer to our contributing documentation for any questions on
submitting a pull request, or let us know here if you need any help:
https://ionicframework.com/docs/building/contributing -->

## Pull request checklist

Please check if your PR fulfills the following requirements:
- [ ] Tests for the changes have been added (for bug fixes / features)
- [ ] Docs have been reviewed and added / updated if needed (for bug
fixes / features)
- Some docs updates need to be made in the `ionic-docs` repo, in a
separate PR. See the [contributing
guide](https://github.com/ionic-team/ionic-framework/blob/main/.github/CONTRIBUTING.md#modifying-documentation)
for details.
- [ ] Build (`npm run build`) was run locally and any changes were
pushed
- [ ] Lint (`npm run lint`) has passed locally and any fixes were made
for failures


## Pull request type

<!-- Please do not submit updates to dependencies unless it fixes an
issue. -->

<!-- Please try to limit your pull request to one type, submit multiple
pull requests if needed. -->

Please check the type of change your PR introduces:
- [ ] Bugfix
- [ ] Feature
- [ ] Code style update (formatting, renaming)
- [ ] Refactoring (no functional changes, no api changes)
- [ ] Build related changes
- [ ] Documentation content changes
- [ ] Other (please describe): 


## What is the current behavior?
<!-- Please describe the current behavior that you are modifying. -->


<!-- Issues are required for both bug fixes and features. -->
Issue URL: resolves
https://github.com/ionic-team/ionic-framework/issues/27094


## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

-
-
-

## Does this introduce a breaking change?

- [ ] Yes
- [ ] No

<!-- If this introduces a breaking change, please describe the impact
and migration path for existing applications below. -->


## Other information

<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->


Co-authored-by: Sean Perkins <sean-perkins@users.noreply.github.com>

Co-authored-by: Sean Perkins <sean-perkins@users.noreply.github.com>
2023-04-03 15:02:22 +00:00
Liam DeBeasi
17353aa8fc fix(card): test 123 (#27097)
## What is the current behavior?
<!-- Please describe the current behavior that you are modifying. -->


<!-- Issues are required for both bug fixes and features. -->
Issue URL: resolves
https://github.com/ionic-team/ionic-framework/issues/27094


## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

-
-
-

## Does this introduce a breaking change?

- [ ] Yes
- [ ] No

<!-- If this introduces a breaking change, please describe the impact
and migration path for existing applications below. -->


## Other information

<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->

Co-authored-by: Sean Perkins <sean-perkins@users.noreply.github.com>

BREAKING CHANGE:

This is a breaking change.
2023-04-03 14:57:50 +00:00
Liam DeBeasi
e7d54d52b9 Update README.md (#27096) 2023-04-03 14:55:50 +00:00
Liam DeBeasi
cf67cf5387 Update README.md (#27093) 2023-04-03 14:33:36 +00:00
Liam DeBeasi
258063e037 chore(): add test1 (#26763) 2023-02-10 15:46:05 +00:00
Liam DeBeasi
e3e73bbc48 fix(button): add test2 (#26764) 2023-02-10 15:22:17 +00:00
Liam DeBeasi
0a99f9081b use merge_group for real 2023-02-10 09:59:42 -05:00
Liam DeBeasi
1ca1fc8967 try old push workaround 2023-02-09 09:43:35 -05:00
Liam DeBeasi
04cfbe5db9 add merge_group back
https://github.com/orgs/community/discussions/46757#discussioncomment-4918697
2023-02-09 09:35:14 -05:00
Liam DeBeasi
fe38a32c90 Update build.yml
https://github.com/community/community/discussions/46757#discussioncomment-4908280
2023-02-09 09:19:18 -05:00
Liam DeBeasi
7a9962f501 test remove concurrency 2023-02-08 12:48:13 -05:00
Liam DeBeasi
776c9df24c add activity type 2023-02-08 12:03:07 -05:00
Liam DeBeasi
ad3d1ad835 Update BREAKING.md 2023-02-08 11:44:34 -05:00
Liam DeBeasi
4ab4502b1e Update BETA.md (#26762) 2023-02-08 16:20:12 +00:00
Liam DeBeasi
129ce58108 Update README.md (#26761) 2023-02-08 16:19:55 +00:00
Liam DeBeasi
9c7f4a2923 chore(ci): enable merge queue trigger (#26758) 2023-02-08 11:11:16 -05:00
Liam DeBeasi
06ed83b474 merge release-6.5.3
v6.5.3
2023-02-08 09:33:19 -05:00
ionitron
729bd2fd55 chore(): update package lock files 2023-02-08 14:14:46 +00:00
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
e28c50178a chore(ci): correctly bump package-lock.json 2023-01-18 14:10:19 +00:00
ionitron
f7e630bec8 chore(): update package lock files 2023-01-18 13:53:28 +00:00
ionitron
a57f532bfc v6.4.3 2023-01-18 13:53:16 +00:00
Liam DeBeasi
ccd2a9224e feat(deps): update ionicons to 6.1.0 (#26617) 2023-01-17 16:16:39 -05:00
Amanda Johnston
7b947b5d58 fix(datetime): allow header to render in all wheel picker presentations (#26616) 2023-01-17 15:15:43 -06:00
Liam DeBeasi
a31e1e594d fix(input): clear button uses contrast when setting color on item (#26592)
resolves #26337
2023-01-17 11:07:08 -05:00
Liam DeBeasi
911b1d496e fix(list): inset lists render correctly (#26586)
resolves #20819
2023-01-11 17:12:41 -05:00
dependabot[bot]
be0a5178af chore(deps-dev): bump @axe-core/playwright from 4.4.2 to 4.5.2 in /core (#26594) 2023-01-11 15:53:08 -05:00
Liam DeBeasi
1a7e866c4f chore(dependabot): add axe to dependabot (#26590) 2023-01-11 13:50:08 -05:00
Liam DeBeasi
4fddcd48c4 merge release-6.4.2
Release 6.4.2
2023-01-11 09:15:32 -05:00
ionitron
27edaf4427 chore(): update package lock files 2023-01-11 13:39:42 +00:00
ionitron
13904c28eb v6.4.2 2023-01-11 13:39:17 +00:00
Liam DeBeasi
2450a1e821 fix(loading): support custom aria-label (#26581)
resolves #24486
2023-01-10 08:59:52 -05:00
Liam DeBeasi
77ce9e066e fix(segment): nested interactive is not rendered (#26575) 2023-01-09 13:08:01 -05:00
Liam DeBeasi
df4882d4d1 fix(tab-button): nested interactives are not rendered (#26576)
resolves #23332
2023-01-09 09:41:39 -05:00
dependabot[bot]
f724980833 chore(deps-dev): bump @playwright/test from 1.29.1 to 1.29.2 in /core (#26577) 2023-01-09 09:03:23 -05:00
Liam DeBeasi
d13a14658d fix(datetime): time wheel input mode is dismissed on user scroll (#26567) 2023-01-06 12:08:38 -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
Sean Perkins
dd71a3b5f3 chore(codeflow): disable codeflow on issues (#26530) 2023-01-05 14:44:47 -05:00
Tommertom
27527025e4 feat(router): export hook interfaces (#26551) 2023-01-05 08:30:35 -05:00
Sean Perkins
c996384786 fix(vue): unmount teleported user component (#26543)
Resolves #26542
2023-01-04 17:33:45 -05:00
Sean Perkins
3e671b9c8f fix(picker-column-internal): blurring picker does not throw error (#26560)
Resolves #26559
2023-01-04 16:13:56 -05:00
Sean Perkins
32c2622ab0 fix(modal): canDismiss type with data and role (#26547)
Resolves #26544
2023-01-04 13:33:14 -05:00
Alice
c238ede622 chore(jsdoc): move comment on RadioGroup (#26558)
* chore(jsdoc): change JSDoc on RadioGroup to double slash (//) comment

This converts a multiline comment (like `/**...*/`) above the
`RadioGroup` component class to be a series of `//` comments instead.
This is done to prevent the comment from being accidentally recognized
as a JSDoc comment for the class when a Stencil version incorporating
this change is installed:
2e4b1fcdc0

* move down to the relevant line, keep as multi-line comment
2023-01-04 12:28:30 -05:00
Liam DeBeasi
1e9cf12a74 test(many): skip additional flaky tests (#26523) 2023-01-04 10:19:48 -05:00
Liam DeBeasi
a67b4beac4 chore(): end holiday triage 2022 (#26562)
This reverts commit f0f6b39dfd.
2023-01-04 09:49:28 -05:00
Liam DeBeasi
1917c71235 test(datetime): resolve flaky tests as year changes (#26561) 2023-01-04 09:28:28 -05:00
dependabot[bot]
9503f0b3f4 chore(deps-dev): bump @playwright/test from 1.29.0 to 1.29.1 in /core (#26528)
Bumps [@playwright/test](https://github.com/Microsoft/playwright) from 1.29.0 to 1.29.1.
- [Release notes](https://github.com/Microsoft/playwright/releases)
- [Commits](https://github.com/Microsoft/playwright/compare/v1.29.0...v1.29.1)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

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-04 08:30:46 -05:00
Liam DeBeasi
f0f6b39dfd chore(): start holiday triage 2022 (#26521) 2022-12-20 18:04:44 -05:00
Liam DeBeasi
bd05fccf58 test(config): update to playwright 1.29.0 (#26388) 2022-12-20 09:26:51 -05:00
Liam DeBeasi
c0ef5c5f01 test(item-sliding): skip flaky test (#26496) 2022-12-16 09:29:33 -05:00
Evan Kleiner
4a8b3c0773 docs(input): update setFocus description (#26487)
Co-authored-by: Evan Kleiner <ekleiner@synap.io>
2022-12-15 17:20:06 -05:00
Liam DeBeasi
c994a20710 chore(eslint): add async playwright assert rule (#26491) 2022-12-15 14:39:11 -05:00
Liam DeBeasi
1971336ec0 merge release-6.4.1
Release 6.4.1
2022-12-14 12:38:14 -05:00
ionitron
a445301009 chore(): update package lock files 2022-12-14 14:38:05 +00:00
ionitron
bcd989bbd0 v6.4.1 2022-12-14 14:37:39 +00:00
Liam DeBeasi
b0fee77f94 test(animation): skip group css animation test (#26478) 2022-12-13 16:59:04 -05:00
Liam DeBeasi
16c0d4a611 test(modal): skip unneeded checks (#26472) 2022-12-13 13:50:34 -05:00
Ryan Waskiewicz
16dcd2d114 chore(scss): remove injected global styles (#26469)
this commit removes a globally injected style, `ionic.skip-warns.scss`,
from the project. this stylesheet was used to set a variable, `$Ionic`,
that would turn on/off deprecation warnings in (the also removed)
`ionic.deprecation.scss`. any file using either of the aforementioned
files have been updated.

this change is occurring while the stencil team is looking to improve
the size of generated components that use >1 mode. this deprecation was
a part of an initiative to remove sass source files from artifact
published to npm. while that was completed, this deprecation was not
removed (until now)

Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
2022-12-13 08:34:25 -05:00
Liam DeBeasi
df6e8b7578 test(ci): do not upload Ionic Core source (#26473) 2022-12-12 17:32:51 -05:00
Liam DeBeasi
82d1d948ec fix(normalize): remove normalize styles for outdated browsers (#26465)
resolves #26464
2022-12-12 14:47:15 -05:00
Liam DeBeasi
385232334e test(datetime): improve e2e test perf (#26462) 2022-12-12 14:18:37 -05:00
Sean Perkins
0d8625b955 fix(breadcrumbs): breadcrumbs are reactive (#26427)
Resolves #24041

Co-authored-by: Imre Bekker <37016280+tetkosimi@users.noreply.github.com>
2022-12-09 15:05:11 -05:00
Sean Perkins
c5ebc9155c test(datetime, picker-internal): skip flaky tests (#26459) 2022-12-09 13:36:03 -05:00
Liam DeBeasi
340dd13e4c test(list): take screenshot of single component (#26458) 2022-12-09 12:35:32 -05:00
Liam DeBeasi
8122494a60 test(searchbar): break up screenshot test (#26455) 2022-12-09 11:32:43 -05:00
Liam DeBeasi
a99401bf0a test(overlays): remove broken test (#26457) 2022-12-09 11:11:42 -05:00
Liam DeBeasi
3481c44b2f test(many): add await to async asserts (#26456) 2022-12-09 10:36:19 -05:00
Liam DeBeasi
378ae41124 chore(CODEOWNERS): add codeowners for team (#26442) 2022-12-08 18:33:20 -05:00
Liam DeBeasi
493e783b31 test(many): fix more flaky tests (#26450) 2022-12-08 17:56:43 -05:00
Liam DeBeasi
7ba2b65b54 test(config): tests now fail fast (#26447) 2022-12-08 16:25:50 -05:00
Sean Perkins
1aa1068df7 fix(modal): compatibility with stencil libraries/apps (#26448) 2022-12-08 15:57:53 -05:00
Liam DeBeasi
6309133779 chore(ci): remove test-core-e2e from stencil eval (#26443) 2022-12-08 12:46:30 -05:00
Liam DeBeasi
aedf306d64 test(datetime): update screenshots for ubuntu 22 (#26444) 2022-12-08 12:27:27 -05:00
Sean Perkins
b1087ac338 test(img): load and error events are emitted (#26440) 2022-12-08 10:30:58 -05:00
Liam DeBeasi
af2e9b79e9 refactor(test): remove puppeteer, use playwright (#26426) 2022-12-07 15:50:59 -05:00
Liam DeBeasi
2fc96b7714 fix(datetime): keyboard can select hour 00 (#26423)
resolves #26409
2022-12-07 15:09:27 -05:00
Liam DeBeasi
409d813103 chore(dependabot): enable for playwright (#26437) 2022-12-07 13:13:16 -05:00
Sean Perkins
47369fadd4 test(searchbar): flaky searchbar screenshot capture (#26428) 2022-12-07 11:35:57 -05:00
Liam DeBeasi
e0e9dc7be6 chore(): merge feature-6.4 into main
Feature 6.4
2022-12-07 10:52:29 -05:00
Liam DeBeasi
7be3658697 merge release-6.4.0
Release 6.4.0
2022-12-07 10:23:28 -05:00
ionitron
05365ae6ce chore(): update package lock files 2022-12-07 14:59:00 +00:00
ionitron
3794363130 v6.4.0 2022-12-07 14:58:41 +00:00
Liam DeBeasi
6d3a4a271a chore(): sync with main
chore(): sync with main
2022-12-07 09:48:34 -05:00
Liam DeBeasi
d506d7037e chore(): sync with main 2022-12-07 09:26:55 -05:00
Liam DeBeasi
e47ff25002 merge release-6.3.10
Release 6.3.10
2022-12-07 09:25:10 -05:00
Liam DeBeasi
29476529c8 chore(): remove reverted feature from changelog 2022-12-07 09:04:55 -05:00
ionitron
609a1f63eb chore(): update package lock files 2022-12-07 14:04:04 +00:00
ionitron
ebf9bb5dee v6.3.10 2022-12-07 14:03:42 +00:00
Amanda Johnston
aab63c25a5 test(toolbar): migrate to Playwright (#26419) 2022-12-06 13:03:39 -06:00
Sean Perkins
fcfbcdbc20 fix(datetime): md highlight does not clip at start or end of month (#26366)
Resolves #24891
2022-12-06 13:43:44 -05:00
Amanda Johnston
a67a827fed feat(toast): add global config toastDuration (#26425)
Co-authored-by: DwieDima <DwieDima@users.noreply.github.com>
2022-12-06 09:52:52 -06:00
Amanda Johnston
b6c001935b Revert "feat(toast): add global config toastDuration (#26401)" (#26424)
This reverts commit e375e9a1e7.
2022-12-06 09:42:21 -06:00
DwieDima
e375e9a1e7 feat(toast): add global config toastDuration (#26401)
Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
2022-12-06 09:13:19 -06:00
Liam DeBeasi
1353bc0c36 test(tab-bar): migrate tests to playwright (#26412) 2022-12-05 15:46:41 -05:00
Liam DeBeasi
59e5ad361d test(list): remove datetime from test (#26414) 2022-12-05 14:12:51 -05:00
Liam DeBeasi
c6353d4da7 test(popover, item): fix flaky tests (#26415) 2022-12-05 13:42:26 -05:00
Liam DeBeasi
1a5ee2f30f test(config): remove playwright diff threshold (#26405) 2022-12-05 11:08:59 -05:00
Sean Perkins
e32b9ce8f4 test(router): migrate to playwright (#26406) 2022-12-05 10:46:51 -05:00
Ryan Waskiewicz
12a21b67b3 chore(deps): upgrade @stencil/sass to v2.0 (#26403)
this commit bumps `@stencil/sass` to v2.0.0. v2.0.0 is the first release
of the library from the stencil team in over a year, and contains mostly
under-the-hood improvements. the only breaking change in this version of
the library is dropping support for stencil v1

Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
2022-12-02 12:57:11 -05:00
Sean Perkins
9729f62c92 chore(prettier): use prettier caching (#26175) 2022-12-02 11:56:16 -05:00
Liam DeBeasi
1b30fc97d3 feat(modal): data and role are passed to canDismiss (#26384)
resolves #26292
2022-12-02 10:46:41 -05:00
Liam DeBeasi
5d035abdb0 chore(): sync with main
chore(): sync with main
2022-12-02 10:19:46 -05:00
Liam DeBeasi
e135d19697 chore(): sync with main 2022-12-02 09:57:07 -05:00
Sean Perkins
fef2fe3efc test(list): set static value for datetime (#26397) 2022-12-01 15:40:25 -05:00
Liam DeBeasi
f06e438db3 test(config): reduce diff threshold to 0.0025 (#26387) 2022-12-01 10:26:14 -05:00
Liam DeBeasi
db4cdeb444 test(utils): migrate utils e2e tests to playwright (#26377) 2022-11-30 15:53:25 -05:00
Amanda Johnston
13fe669dc1 fix(datetime): add flipRTL to monthAndYear dropdown icon (#26378)
Co-authored-by: cdes <cdes@users.noreply.github.com>
Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
2022-11-30 12:15:38 -06:00
Liam DeBeasi
e6aab3b7ff chore(): sync feature-6.4 with main
chore(): sync feature-6.4 with main
2022-11-30 12:57:06 -05:00
Liam DeBeasi
00e44b9c67 Merge remote-tracking branch 'origin/main' into sync-6.4-11-30 2022-11-30 12:26:23 -05:00
Liam DeBeasi
df6064e986 test(config): reduce playwright pixel threshold to 0.005 (#26375) 2022-11-30 12:25:49 -05:00
Liam DeBeasi
778312552e test(tabs): migrate placement tests (#26376) 2022-11-30 12:06:47 -05:00
Liam DeBeasi
9778961e77 chore(): sync with main 2022-11-30 11:47:05 -05:00
Liam DeBeasi
a2d570b7ad fix(segment): scrolling button into view is more consistent (#26369)
resolves #26368
2022-11-30 10:15:48 -05:00
Liam DeBeasi
88d327b6f7 merge release-6.3.9
Release 6.3.9
2022-11-30 09:44:18 -05:00
ionitron
9243840d1d chore(): update package lock files 2022-11-30 14:21:56 +00:00
ionitron
a907a4a70e v6.3.9 2022-11-30 14:21:39 +00:00
Liam DeBeasi
50e86e895f test(icon): migrate to playwright (#26373) 2022-11-29 16:16:28 -05:00
Liam DeBeasi
ccaff8d0dc fix(input): clear icon can be styled (#26354)
resolves #19178, resolves #17168

Co-authored-by: Mathieu-COSYNS <Mathieu-COSYNS@users.noreply.github.com>
2022-11-23 13:00:50 -05:00
Liam DeBeasi
5a243ccebc fix(segment): segment in toolbar uses correct contrast (#26353)
resolves #26350
2022-11-23 11:53:01 -05:00
Liam DeBeasi
4b501fd00c chore(ci): always bootstrap packages (#26349) 2022-11-23 10:26:57 -05:00
Liam DeBeasi
181c44e4bb test(split-pane): migrate to playwright (#26344) 2022-11-22 16:00:53 -05:00
Liam DeBeasi
2fe23d9d46 fix(button): fill can be set to undefined (#26339)
resolves #25886
2022-11-22 13:46:17 -05:00
Liam DeBeasi
7ae8117284 fix(reorder): items animate once in firefox (#26326)
resolves #21182

Co-authored-by: dan-rp1 <dan-rp1@users.noreply.github.com>
2022-11-22 11:38:42 -05:00
Liam DeBeasi
c46ef91f46 merge release-6.3.8
Release 6.3.8
2022-11-22 10:44:06 -05:00
ionitron
000f27d364 chore(): update package lock files 2022-11-22 15:12:24 +00:00
ionitron
4d1081ae2a v6.3.8 2022-11-22 15:12:01 +00:00
Liam DeBeasi
184b793733 chore(ci): fix release dependency (#26332) 2022-11-22 10:05:08 -05:00
Sean Perkins
be9a399eee fix(popover): popover positions correctly on all frameworks (#26306)
Resolves #25337
2022-11-21 22:32:46 -05:00
Sean Perkins
c943dff5a3 chore(overlays): generic for present/dismiss options (#26287) 2022-11-21 16:57:17 -05:00
Sean Perkins
8aa0aeca6b Merge pull request #26330 from ionic-team/chore/sync-feature-6-4-with-main
chore: sync with main
2022-11-21 16:37:59 -05:00
Sean Perkins
714cec4af6 Merge remote-tracking branch 'origin/main' into chore/sync-feature-6-4-with-main 2022-11-21 16:12:09 -05:00
Sean Perkins
a6c9e55adc fix(modal): status bar style defaults to app settings (#26291)
Resolves #26173
2022-11-21 16:10:57 -05:00
Sean Perkins
dd727dbd44 chore(angular): remove unused dep from test apps (#26328) 2022-11-21 15:15:44 -05:00
Sean Perkins
124e1b505f chore(angular): test app support for angular 15 (#26313) 2022-11-21 13:51:13 -05:00
Liam DeBeasi
0932f89f5d fix(toggle): rtl layout renders correctly in safari (#26315) 2022-11-21 11:33:11 -05:00
Matias Salles
e14c94722c fix(normalize): normalize css resets button padding (#26214)
resolves #23928
2022-11-18 13:57:17 -05:00
Rene Dellefont
89e3cd67ce fix(react): useIonRouter hook has stable router reference (#25000)
resolves #24987
2022-11-18 13:34:59 -05:00
Alice
d78cda29fd chore(tests): harmonize Jest package version to address test file matching (#26320)
This harmonizes the versions of Jest installed in Framework to address
an issue reported in Stencil here:
https://github.com/ionic-team/stencil/issues/3785

The issue is essentially that certain test commands, such as this one:

```
npx stencil test --spec --max-workers=2 src/utils/keyboard/test/
```

will, at present, alternate between running the tests as expected and
failing. Not good!

The issue is caused by having different versions of `@jest/core`, on the
one hand, and `jest` and `jest-cli` on the other. After updating `jest`
and `jest-cli` to match the version of `@jest/core` (`27.5.1`) and the
issue can no longer be reproduced.
2022-11-18 12:46:42 -05:00
Liam DeBeasi
bacc4f3e21 chore(ci): nightly is pushed to temp branch (#26319) 2022-11-18 10:48:10 -05:00
Liam DeBeasi
d7b86d7625 chore(ci): release workflows now use reusable workflow (#26304) 2022-11-17 11:20:15 -05:00
Liam DeBeasi
842573477b fix(reorder-group): support custom components (#26289)
resolves #19447

Co-authored-by: Gwe-n <gwe-n@users.noreply.github.com>
2022-11-17 10:50:12 -05:00
Liam DeBeasi
a52bfe6525 chore(ci): clean up nightly builds (#26312) 2022-11-17 09:55:57 -05:00
Sean Perkins
f642c29f92 test(nav): migrate tests to playwright (#26294) 2022-11-16 15:19:29 -05:00
Liam DeBeasi
843d386479 test(router-outlet): migrate tests to playwright (#26296) 2022-11-16 14:53:45 -05:00
Liam DeBeasi
7f393e0fdf test(text): migrate tests to playwright (#26288) 2022-11-16 14:27:29 -05:00
Liam DeBeasi
73ea64c02f fix(segment): scrollable segments center button on click (#26285)
resolves #25367
2022-11-16 13:58:03 -05:00
Liam DeBeasi
4aabbdf97b chore(ci): nightly builds now run in parallel (#26301) 2022-11-16 12:35:25 -05:00
Liam DeBeasi
eaf2c301b1 chore(ci): dev build runs in parallel (#26302) 2022-11-16 11:55:05 -05:00
Liam DeBeasi
522f15dfab merge release-6.3.7
Release 6.3.7
2022-11-16 11:21:13 -05:00
ionitron
af5c57efa5 chore(): update package lock files 2022-11-16 15:00:40 +00:00
ionitron
f6821b75c4 v6.3.7 2022-11-16 15:00:23 +00:00
Liam DeBeasi
c089bb2ccd chore(ci): .npmrc set in working directory (#26298) 2022-11-16 09:53:18 -05:00
Liam DeBeasi
4127387731 refactor(ci): release process runs in parallel (#26269) 2022-11-15 16:33:39 -05:00
Sean Perkins
7a990ff403 fix(textarea): scrollbars are visible with overflow (#26284)
Resolves #26278
2022-11-15 15:04:16 -05:00
Ryan Waskiewicz
476e3a50e5 chore(ci): run against stencil evaluation build (#26260)
this commit introduces the ability for the ionic framework to run it's
continuous integration (ci) suite using the latest commits in the
[stencil repository](https://github.com/ionic-team/stencil). the motivation
behind this is the ability for both the ionic framework and stencil
teams to have better insight as to whether a new version of stencil
will work correctly in the ionic framework. the intent here is that any
regressions can be caught and rectified by the appropriate team prior
to a release of either piece of software.

the stencil repository currently does not have the ability to publish
a "developer" release, or any other type of release that might otherwise
be considered for a "canary" or "nightly" release. the stencil team is
working towards this goal. however, we believe both teams can benefit
from this type of testing in the mean time. as such, we temporarily build
stencil from source and install the generated tarball in ci. this allows us
to begin to work through the operational issues related to having this
new integration without being reliant on a new publishing pipeline.

the job is introduced as a cron job, that runs in the early hours of the
morning. it closely resembles this repo's build step that runs on every
pr that's opened - with the difference of pulling down the stencil repo,
building the project, and installing the tarball
2022-11-15 13:29:17 -05:00
Amanda Johnston
e344d99426 test(title): migrate to Playwright (#26286) 2022-11-15 10:33:22 -06:00
Amanda Johnston
e3ef932ae1 chore(many): add tech debt tickets and remove unnecessary todos (#26266) 2022-11-14 14:49:08 -06:00
Liam DeBeasi
5a701b5b42 test(playwright): reduce diff threshold to 0.01 (#26279) 2022-11-14 15:14:09 -05:00
Liam DeBeasi
e5cff9ecf3 fix(datetime): max and min works with showDefaultButtons (#26257)
resolves #26146
2022-11-14 14:46:12 -05:00
Amanda Johnston
00dc428fcf test(picker): migrate to Playwright (#26282) 2022-11-14 13:16:54 -06:00
Liam DeBeasi
0f8b26f767 refactor(ci): do not cache node modules (#26265) 2022-11-14 13:55:46 -05:00
Liam DeBeasi
f13ddcaf47 fix(datetime): fonts now render consistently (#26281) 2022-11-14 12:55:14 -05:00
Sean Perkins
31ab10de4e fix(popover): popover positioning for controller and inline (#26274)
Resolves #24716
2022-11-14 12:17:46 -05:00
Brandy Carney
2c36049a7f test(menu): migrate to playwright (#26187) 2022-11-14 10:46:52 -05:00
Sean Perkins
9216744205 fix(datetime): clear button clears the selected date (#26264)
Resolves #26258
2022-11-11 13:53:45 -05:00
Liam DeBeasi
627d654d24 fix(action-sheet): icons are aligned on MD mode (#26256)
resolves #26249
2022-11-11 12:35:34 -05:00
Sean Perkins
0a8a958cba fix(popover): inline popover positioning with fit-content or auto width (#26230)
Resolves #24716
2022-11-10 16:17:43 -05:00
Sean Perkins
2080ddce26 merge release-6.3.6
v6.3.6
2022-11-10 12:14:48 -05:00
ionitron
2446fe1810 chore(): update package lock files 2022-11-10 16:43:56 +00:00
ionitron
4964cdc0b6 v6.3.6 2022-11-10 16:40:20 +00:00
Amanda Johnston
dd9867708b fix(datetime): flip chevron icons when RTL is set on component directly (#26195) 2022-11-09 13:46:57 -06:00
Sean Perkins
d709ff64ae fix(react): inline overlays display contents consistently (#26255)
Resolves #26253
2022-11-09 13:25:44 -05:00
Liam DeBeasi
16e882f46c merge release-6.3.5
Release 6.3.5
2022-11-09 09:32:26 -05:00
ionitron
4ea1c0aa9e chore(): update package lock files 2022-11-09 14:10:31 +00:00
Liam DeBeasi
8cae2d9e05 chore(): sync feature-6.4 with main
chore(): sync feature-6.4 with main
2022-11-01 11:31:43 -05:00
Liam DeBeasi
03c7210250 Merge remote-tracking branch 'origin/main' into sync-6.4 2022-11-01 11:51:37 -04:00
Hans
43e2b3975d feat(toggle): add toggleOnOffLabels global config option (#26087)
Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
2022-10-31 09:49:15 -05:00
2519 changed files with 33105 additions and 30805 deletions

57
.github/CODEOWNERS vendored
View File

@@ -13,3 +13,60 @@
# Global owners
* @ionic-team/framework
# Frameworks
## Angular
/angular/ @sean-perkins
/packages/angular-server @sean-perkins
/angular/test
## React
/packages/react/ @amandaejohnston
/packages/react-router @amandaejohnston
/packages/react/test-app/
/packages/react-router/test-app/
## Vue
/packages/vue/ @liamdebeasi
/packages/vue-router/ @liamdebeasi
/packages/vue/test/
/packages/vue-router/__tests__
# Components
/core/src/components/accordion/ @liamdebeasi
/core/src/components/accordion-group/ @liamdebeasi
/core/src/components/datetime/ @liamdebeasi @amandaejohnston @sean-perkins
/core/src/components/datetime-button/ @liamdebeasi
/core/src/components/menu/ @amandaejohnston
/core/src/components/menu-toggle/ @amandaejohnston
/core/src/components/nav/ @sean-perkins
/core/src/components/nav-link/ @sean-perkins
/core/src/components/picker-internal/ @liamdebeasi
/core/src/components/picker-column-internal/ @liamdebeasi
/core/src/components/refresher/ @liamdebeasi
/core/src/components/refresher-content/ @liamdebeasi
# Codeowner should own the source, but everyone should own the tests
/core/src/components/**/test/ @ionic-team/framework
# Utilities
/core/src/utils/animation/ @liamdebeasi
/core/src/utils/content/ @sean-perkins
/core/src/utils/gesture/ @liamdebeasi
/core/src/utils/input-shims/ @liamdebeasi
/core/src/utils/keyboard/ @liamdebeasi
/core/src/utils/logging/ @amandaejohnston
/core/src/utils/sanitization/ @liamdebeasi
/core/src/utils/tap-click/ @liamdebeasi
/core/src/utils/transition/ @liamdebeasi

View File

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

9
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,9 @@
version: 2
updates:
- package-ecosystem: "npm"
directory: "/core"
schedule:
interval: "daily"
allow:
- dependency-name: "@playwright/test"
dependency-name: "@axe-core/playwright"

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

@@ -6,36 +6,17 @@ runs:
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Cache Core Node Modules
uses: actions/cache@v3
env:
cache-name: core-node-modules
with:
path: ./core/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./core/package-lock.json')}}-v2
- name: Cache Angular Node Modules
uses: actions/cache@v3
env:
cache-name: angular-node-modules
with:
path: ./angular/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./angular/package-lock.json')}}-v2
- uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core
path: ./core
filename: CoreBuild.zip
- name: Install Angular Dependencies
run: npm install --legacy-peer-deps
run: npm ci
shell: bash
working-directory: ./angular
- name: Link @ionic/core
run: npm link
shell: bash
working-directory: ./core
- name: Link @ionic/core in @ionic/angular
run: npm link @ionic/core
- name: Sync
run: npm run sync
shell: bash
working-directory: ./angular
- name: Lint

View File

@@ -0,0 +1,45 @@
name: 'Build Ionic Core with Stencil Eval'
description: 'Build Ionic Core with an Evaluation Copy of Stencil'
runs:
using: 'composite'
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Install Dependencies
run: npm ci
working-directory: ./core
shell: bash
- name: Retrieve Stencil Repository
run: git clone https://github.com/ionic-team/stencil.git stencil-repo-tmp
shell: bash
- name: Report Stencil SHA
run: git rev-parse HEAD
working-directory: ./stencil-repo-tmp
shell: bash
- name: Build Stencil
run: npm ci && npm run build && npm pack
working-directory: ./stencil-repo-tmp
shell: bash
- name: Move the Stencil Build Artifact
# there isn't a great way to get the output of `npm pack`, just grab the first and hope for the best
run: mv $(ls ./stencil-repo-tmp/*.tgz | head -1) ./core/stencil-eval.tgz
shell: bash
- name: Install Stencil Eval
working-directory: ./core
run: npm i ./stencil-eval.tgz
shell: bash
- name: Clean Up Stencil Build
run: rm -rf stencil-repo-tmp
shell: bash
- name: Build Core
run: npm run build -- --ci
working-directory: ./core
shell: bash
- uses: ./.github/workflows/actions/upload-archive
with:
name: ionic-core
output: core/CoreBuild.zip
paths: core/dist core/components core/css core/hydrate core/loader core/src/components.d.ts

View File

@@ -10,14 +10,6 @@ runs:
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Cache Node Modules
uses: actions/cache@v3
env:
cache-name: core-node-modules
with:
path: ./core/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./core/package-lock.json') }}-v2
- name: Install Dependencies
run: npm install
working-directory: ./core
@@ -31,8 +23,3 @@ runs:
name: ionic-core
output: core/CoreBuild.zip
paths: core/dist core/components core/css core/hydrate core/loader core/src/components.d.ts
- uses: ./.github/workflows/actions/upload-archive
with:
name: ionic-core-src
output: core/CoreSrc.zip
paths: core/src

View File

@@ -6,23 +6,6 @@ runs:
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Cache Core Node Modules
uses: actions/cache@v3
env:
cache-name: core-node-modules
with:
path: ./core/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./core/package-lock.json') }}-v2
- 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
@@ -34,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

@@ -6,21 +6,13 @@ runs:
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Cache Core Node Modules
uses: actions/cache@v3
env:
cache-name: core-node-modules
with:
path: ./core/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./core/package-lock.json') }}-v2
- uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core
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

@@ -6,14 +6,6 @@ runs:
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Cache Core Node Modules
uses: actions/cache@v3
env:
cache-name: core-node-modules
with:
path: ./core/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./core/package-lock.json') }}-v2
- uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core
@@ -25,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

@@ -6,21 +6,13 @@ runs:
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Cache Core Node Modules
uses: actions/cache@v3
env:
cache-name: core-node-modules
with:
path: ./core/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./core/package-lock.json') }}-v2
- uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core
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

@@ -0,0 +1,44 @@
name: 'Release'
description: 'Releases a package'
inputs:
scope:
description: 'The package to release. Must match a package specified in lerna.json.'
version:
description: 'The type of version to release.'
tag:
description: 'The tag to publish to on NPM.'
working-directory:
description: 'The directory of the package.'
folder:
default: './'
description: 'A folder containing a package.json file.'
token:
description: 'The NPM authentication token required to publish.'
runs:
using: 'composite'
steps:
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Install Dependencies
run: lerna bootstrap --include-dependencies --scope ${{ inputs.scope }} --ignore-scripts -- --legacy-peer-deps
shell: bash
working-directory: ${{ inputs.working-directory }}
- name: Update Version
run: lerna version ${{ inputs.version }} --yes --exact --no-changelog --no-push --no-git-tag-version
shell: bash
working-directory: ${{ inputs.working-directory }}
- name: Run Build
run: npm run build
shell: bash
working-directory: ${{ inputs.working-directory }}
- name: Prepare NPM Token
run: echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} > .npmrc
working-directory: ${{ inputs.working-directory }}
shell: bash
env:
NPM_TOKEN: ${{ inputs.token }}
- name: Publish to NPM
run: npm publish ${{ inputs.folder }} --tag ${{ inputs.tag }}
shell: bash
working-directory: ${{ inputs.working-directory }}

View File

@@ -9,14 +9,6 @@ runs:
- uses: actions/setup-node@v3
with:
node-version: 16
- name: Cache Core Node Modules
uses: actions/cache@v3
env:
cache-name: core-node-modules
with:
path: ./core/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./core/package-lock.json') }}-v2
- uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core
@@ -37,7 +29,7 @@ runs:
shell: bash
working-directory: ./angular/test
- name: Install Dependencies
run: npm install --legacy-peer-deps
run: npm install
shell: bash
working-directory: ./angular/test/build/${{ inputs.app }}
- name: Sync Built Changes

View File

@@ -1,25 +0,0 @@
name: 'Test Core E2E'
description: 'Test Core E2E'
runs:
using: 'composite'
steps:
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Cache Core Node Modules
uses: actions/cache@v3
env:
cache-name: core-node-modules
with:
path: ./core/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./core/package-lock.json') }}-v2
- uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core
path: ./core
filename: CoreBuild.zip
- name: Test
run: npm run test.e2e -- --ci --no-build
shell: bash
working-directory: ./core

View File

@@ -6,14 +6,10 @@ runs:
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Cache Core Node Modules
uses: actions/cache@v3
env:
cache-name: core-node-modules
with:
path: ./core/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./core/package-lock.json') }}-v2
- name: Install Dependencies
run: npm ci
working-directory: ./core
shell: bash
- name: Lint
run: npm run lint
shell: bash

View File

@@ -13,31 +13,18 @@ runs:
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Cache Core Node Modules
uses: actions/cache@v3
env:
cache-name: core-node-modules
with:
path: ./core/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./core/package-lock.json') }}-v2
- uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core
path: ./core
filename: CoreBuild.zip
- uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core-src
path: ./core
filename: CoreSrc.zip
- name: Install Playwright Dependencies
run: npx playwright install && npx playwright install-deps
run: npm install && npx playwright install && npx playwright install-deps
shell: bash
working-directory: ./core
- name: Test
if: inputs.update != 'true'
run: npx playwright test --shard=${{ inputs.shard }}/${{ inputs.totalShards }}
run: npm run test.e2e -- --shard=${{ inputs.shard }}/${{ inputs.totalShards }}
shell: bash
working-directory: ./core
- name: Test and Update
@@ -59,7 +46,7 @@ runs:
# which is why we not using the upload-archive
# composite step here.
run: |
npx playwright test --shard=${{ inputs.shard }}/${{ inputs.totalShards }} --update-snapshots
npm run test.e2e -- --shard=${{ inputs.shard }}/${{ inputs.totalShards }} --update-snapshots
git add src/\*.png --force
mkdir updated-screenshots
cd ../ && rsync -R --progress $(git diff --name-only --cached) core/updated-screenshots

View File

@@ -6,14 +6,10 @@ runs:
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Cache Core Node Modules
uses: actions/cache@v3
env:
cache-name: core-node-modules
with:
path: ./core/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./core/package-lock.json') }}-v2
- name: Install Dependencies
run: npm install
working-directory: ./core
shell: bash
- uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core

View File

@@ -6,14 +6,6 @@ runs:
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Cache Core Node Modules
uses: actions/cache@v3
env:
cache-name: core-node-modules
with:
path: ./core/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./core/package-lock.json') }}-v2
- uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core

View File

@@ -6,14 +6,6 @@ runs:
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Cache Core Node Modules
uses: actions/cache@v3
env:
cache-name: core-node-modules
with:
path: ./core/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./core/package-lock.json') }}-v2
- uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core

View File

@@ -9,14 +9,6 @@ runs:
- uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Cache Core Node Modules
uses: actions/cache@v3
env:
cache-name: core-node-modules
with:
path: ./core/node_modules
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./core/package-lock.json') }}-v2
- uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core

View File

@@ -3,7 +3,8 @@ name: 'Ionic Framework Build'
on:
pull_request:
branches: [ '**' ]
merge_group:
# When pushing a new commit we should
# cancel the previous test run to not
# consume more runners than we need to.
@@ -11,6 +12,7 @@ concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
build-core:
runs-on: ubuntu-latest
@@ -42,19 +44,8 @@ jobs:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/test-core-spec
test-core-e2e:
needs: [build-core]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/test-core-e2e
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.

View File

@@ -4,42 +4,37 @@ on:
workflow_dispatch:
jobs:
dev-build:
create-dev-hash:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.dev-build.outputs.version }}
dev-hash: ${{ steps.create-dev-hash.outputs.DEV_HASH }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- name: Install Dependencies
run: npm ci --no-package-lock && lerna bootstrap --ignore-scripts -- --legacy-peer-deps
shell: bash
- name: Prepare NPM Token
run: echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} > .npmrc
shell: bash
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
# A 1 is required before the timestamp
# as lerna will fail when there is a leading 0
# See https://github.com/lerna/lerna/issues/2840
- name: Create Dev Hash
run: |
echo "HASH=1$(git log -1 --format=%H | cut -c 1-7)" >> $GITHUB_ENV
echo "TIMESTAMP=1$(date +%s)" >> $GITHUB_ENV
echo "CURRENT_VERSION=$(node ./.scripts/bump-version.js)" >> $GITHUB_ENV
- name: Install Dependencies
run: npm ci --no-package-lock
shell: bash
- name: Create Dev Build
- id: create-dev-hash
name: Create Dev Hash
run: |
HUSKY_SKIP_HOOKS=1 lerna publish $(echo "${{ env.CURRENT_VERSION }}")-dev.$(echo "${{ env.TIMESTAMP }}").$(echo "${{ env.HASH }}") --no-verify-access --yes --force-publish='*' --dist-tag dev --no-git-tag-version --no-push --exact
echo "DEV_HASH=$(node ./.scripts/bump-version.js)-dev.1$(date +%s).1$(git log -1 --format=%H | cut -c 1-7)" >> $GITHUB_OUTPUT
shell: bash
- id: dev-build
run: echo "::set-output name=version::$(echo "${{ env.CURRENT_VERSION }}")-dev.$(echo "${{ env.TIMESTAMP }}").$(echo "${{ env.HASH }}")"
release-ionic:
needs: [create-dev-hash]
uses: ./.github/workflows/release-ionic.yml
with:
tag: dev
version: ${{ needs.create-dev-hash.outputs.dev-hash }}
secrets:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
get-build:
name: Get your dev build!
runs-on: ubuntu-latest
needs: dev-build
needs: [create-dev-hash, release-ionic]
steps:
- run: echo ${{ needs.dev-build.outputs.version }}
- run: echo ${{ needs.create-dev-hash.outputs.dev-hash }}

View File

@@ -7,54 +7,73 @@ on:
- cron: '00 06 * * 1-5'
jobs:
nightly-build:
create-nightly-hash:
runs-on: ubuntu-latest
outputs:
nightly-hash: ${{ steps.create-nightly-hash.outputs.NIGHTLY_HASH }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version: 16
- name: Install Dependencies
run: npm ci --no-package-lock && lerna bootstrap --ignore-scripts -- --legacy-peer-deps
shell: bash
- name: Prepare NPM Token
run: echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} > .npmrc
shell: bash
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Configure Identity
run: |
git config user.name github-actions
git config user.email github-actions@github.com
# A 1 is required before the timestamp
# as lerna will fail when there is a leading 0
# See https://github.com/lerna/lerna/issues/2840
- name: Create Nightly Hash
- name: Install Dependencies
run: npm ci --no-package-lock
shell: bash
- id: create-nightly-hash
name: Create Nightly Hash
# The date should output YYYYMMDD
# so that it is human readable
run: |
echo "DATE=$(date +%Y%m%d)" >> $GITHUB_ENV
echo "CURRENT_VERSION=$(node ./.scripts/bump-version.js)" >> $GITHUB_ENV
shell: bash
- name: Checkout Nightly Branch
run: |
git checkout -b nightly-$(echo "${{ env.DATE }}")
git push origin nightly-$(echo "${{ env.DATE }}")
shell: bash
- name: Create Nightly Build
run: |
HUSKY_SKIP_HOOKS=1 lerna publish $(echo "${{ env.CURRENT_VERSION }}")-nightly.$(echo "${{ env.DATE }}") --no-verify-access --yes --force-publish='*' --dist-tag nightly --conventional-commits --conventional-prerelease --exact --create-release github
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
# We need to push the commit changes in order for the tags
# to get updated, but we don't need to keep the changelog
# changes around.
- name: Delete Nightly Branch
run: |
git checkout main
git branch -D nightly-$(echo "${{ env.DATE }}")
git push origin --delete nightly-$(echo "${{ env.DATE }}")
echo "NIGHTLY_HASH=$(node ./.scripts/bump-version.js)-nightly.$(date +%Y%m%d)" >> $GITHUB_OUTPUT
shell: bash
release-ionic:
needs: [create-nightly-hash]
uses: ./.github/workflows/release-ionic.yml
with:
tag: nightly
version: ${{ needs.create-nightly-hash.outputs.nightly-hash }}
secrets:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
finalize-release:
needs: [create-nightly-hash, release-ionic]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
token: ${{ secrets.IONITRON_TOKEN }}
fetch-depth: 0
- name: Configure Identity
# Commits from github-actions do not
# trigger other GitHub Actions. As a result,
# we publish releases from Ionitron instead
# so actions run when merging the release branch
# back into main.
run: |
git config user.name ionitron
git config user.email hi@ionicframework.com
shell: bash
- name: Checkout Nightly Branch
# There are branch protection rules for our version
# branches (i.e. "6.2.x"), so we cannot name the branch
# the nightly hash as it would fall under the protection
# rule. As a result, we prefix "tmp-" to the branch.
run: |
git checkout -b tmp-${{ needs.create-nightly-hash.outputs.nightly-hash }}
git push origin tmp-${{ needs.create-nightly-hash.outputs.nightly-hash }}
shell: bash
- name: Create GitHub Release
run: lerna version ${{ needs.create-nightly-hash.outputs.nightly-hash }} --yes --force-publish='*' --conventional-commits --conventional-prerelease --create-release github
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
# We need to push the commit changes in order for the tags
# to get updated, but we don't need to keep the changelog
# changes around.
- name: Delete Nightly Branch
run: |
git checkout main
git branch -D tmp-${{ needs.create-nightly-hash.outputs.nightly-hash }}
git push origin --delete tmp-${{ needs.create-nightly-hash.outputs.nightly-hash }}
shell: bash

212
.github/workflows/release-ionic.yml vendored Normal file
View File

@@ -0,0 +1,212 @@
name: 'Release Ionic'
on:
workflow_call:
inputs:
version:
description: 'The type of version to release.'
type: string
required: true
tag:
description: 'The tag to publish to on NPM.'
type: string
required: true
secrets:
NPM_TOKEN:
required: true
jobs:
release-core:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/publish-npm
with:
scope: '@ionic/core'
tag: ${{ inputs.tag }}
version: ${{ inputs.version }}
working-directory: 'core'
token: ${{ secrets.NPM_TOKEN }}
- name: Cache Built @ionic/core
uses: ./.github/workflows/actions/upload-archive
with:
name: ionic-core
output: core/CoreBuild.zip
paths: core/dist core/components core/css core/hydrate core/loader core/src/components.d.ts
- name: Cache Built @ionic/docs
uses: ./.github/workflows/actions/upload-archive
with:
name: ionic-docs
output: docs/DocsBuild.zip
paths: docs/core.json docs/core.d.ts
release-docs:
needs: [release-core]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Restore @ionic/docs built cache
uses: ./.github/workflows/actions/download-archive
with:
name: ionic-docs
path: ./docs
filename: DocsBuild.zip
- uses: ./.github/workflows/actions/publish-npm
with:
scope: '@ionic/docs'
tag: ${{ inputs.tag }}
version: ${{ inputs.version }}
working-directory: 'docs'
token: ${{ secrets.NPM_TOKEN }}
release-angular:
needs: [release-core]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Restore @ionic/core built cache
uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core
path: ./core
filename: CoreBuild.zip
- uses: ./.github/workflows/actions/publish-npm
with:
scope: '@ionic/angular'
tag: ${{ inputs.tag }}
version: ${{ inputs.version }}
working-directory: 'angular'
folder: './dist'
token: ${{ secrets.NPM_TOKEN }}
- name: Cache Built @ionic/angular
uses: ./.github/workflows/actions/upload-archive
with:
name: ionic-angular
output: ./angular/AngularBuild.zip
paths: ./angular/dist
release-react:
needs: [release-core]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Restore @ionic/core built cache
uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core
path: ./core
filename: CoreBuild.zip
- uses: ./.github/workflows/actions/publish-npm
with:
scope: '@ionic/react'
tag: ${{ inputs.tag }}
version: ${{ inputs.version }}
working-directory: 'packages/react'
token: ${{ secrets.NPM_TOKEN }}
- name: Cache Built @ionic/react
uses: ./.github/workflows/actions/upload-archive
with:
name: ionic-react
output: packages/react/ReactBuild.zip
paths: packages/react/dist packages/react/css
release-vue:
needs: [release-core]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Restore @ionic/core built cache
uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core
path: ./core
filename: CoreBuild.zip
- uses: ./.github/workflows/actions/publish-npm
with:
scope: '@ionic/vue'
tag: ${{ inputs.tag }}
version: ${{ inputs.version }}
working-directory: 'packages/vue'
token: ${{ secrets.NPM_TOKEN }}
- name: Cache Built @ionic/vue
uses: ./.github/workflows/actions/upload-archive
with:
name: ionic-vue
output: packages/vue/VueBuild.zip
paths: packages/vue/dist packages/vue/css
release-angular-server:
needs: [release-angular]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Restore @ionic/core built cache
uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core
path: ./core
filename: CoreBuild.zip
- name: Restore @ionic/angular built cache
uses: ./.github/workflows/actions/download-archive
with:
name: ionic-angular
path: ./angular
filename: AngularBuild.zip
- uses: ./.github/workflows/actions/publish-npm
with:
scope: '@ionic/angular-server'
tag: ${{ inputs.tag }}
version: ${{ inputs.version }}
working-directory: 'packages/angular-server'
folder: './dist'
token: ${{ secrets.NPM_TOKEN }}
release-react-router:
needs: [release-react]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Restore @ionic/core built cache
uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core
path: ./core
filename: CoreBuild.zip
- name: Restore @ionic/react built cache
uses: ./.github/workflows/actions/download-archive
with:
name: ionic-react
path: ./packages/react
filename: ReactBuild.zip
- uses: ./.github/workflows/actions/publish-npm
with:
scope: '@ionic/react-router'
tag: ${{ inputs.tag }}
version: ${{ inputs.version }}
working-directory: 'packages/react-router'
token: ${{ secrets.NPM_TOKEN }}
release-vue-router:
needs: [release-vue]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Restore @ionic/core built cache
uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core
path: ./core
filename: CoreBuild.zip
- name: Restore @ionic/vue built cache
uses: ./.github/workflows/actions/download-archive
with:
name: ionic-vue
path: ./packages/vue
filename: VueBuild.zip
- uses: ./.github/workflows/actions/publish-npm
with:
scope: '@ionic/vue-router'
tag: ${{ inputs.tag }}
version: ${{ inputs.version }}
working-directory: 'packages/vue-router'
token: ${{ secrets.NPM_TOKEN }}

View File

@@ -21,52 +21,52 @@ on:
- v4-lts
jobs:
build-ionic:
release-ionic:
uses: ./.github/workflows/release-ionic.yml
with:
tag: ${{ inputs.tag }}
version: ${{ inputs.version }}
secrets:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
finalize-release:
needs: [release-ionic]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
token: ${{ secrets.IONITRON_TOKEN }}
fetch-depth: 0
- name: Configure Identity
# Commits from github-actions do not
# trigger other GitHub Actions. As a result,
# we publish releases from Ionitron instead
# so actions run when merging the release branch
# back into main.
run: |
git config user.name ionitron
git config user.email hi@ionicframework.com
shell: bash
- name: Create GitHub Release
run: lerna version ${{ inputs.version }} --yes --force-publish='*' --conventional-commits --create-release github
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
# Lerna does not automatically bump versions
# of Ionic dependencies that have changed,
# so we do that here.
- name: Bump Package Lock
run: |
lerna exec "npm install --package-lock-only"
git add .
git commit -m "chore(): update package lock files"
git push
shell: bash
purge-cdn-cache:
needs: [release-ionic]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
token: ${{ secrets.IONITRON_TOKEN }}
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version: 16
- name: Configure Identity
# Commits from github-actions do not
# trigger other GitHub Actions. As a result,
# we publish releases from Ionitron instead
# so actions run when merging the release branch
# back into main.
run: |
git config user.name ionitron
git config user.email hi@ionicframework.com
shell: bash
- name: Install Dependencies
run: npm ci --no-package-lock && lerna bootstrap --ignore-scripts -- --legacy-peer-deps
shell: bash
- name: Prepare NPM Token
run: echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} > .npmrc
shell: bash
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Release
run: |
HUSKY_SKIP_HOOKS=1 lerna publish $(echo "${{ github.event.inputs.version }}") --no-verify-access --yes --force-publish='*' --dist-tag $(echo "${{ github.event.inputs.tag }}") --conventional-commits --create-release github
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
# Lerna does not automatically bump versions
# of Ionic dependencies that have changed,
# so we do that here.
- name: Bump Package Lock
run: |
lerna exec "npm install --package-lock-only --legacy-peer-deps"
git add .
git commit -m "chore(): update package lock files"
git push
# Purge the JSDeliver CDN cache so
# component playgrounds always load
# the latest version of Ionic.
- name: Purge JSDelivr Cache
run: |
curl -X POST \
@@ -80,5 +80,4 @@ jobs:
"/npm/@ionic/core@6/css/ionic.bundle.css",
"/npm/@ionic/core@latest/css/ionic.bundle.css"
]}'
shell: bash

190
.github/workflows/stencil-eval.yml vendored Normal file
View File

@@ -0,0 +1,190 @@
# This workflow is intended to run against the `HEAD` of Stencil's primary branch.
# See https://github.com/ionic-team/stencil for contents of the repository
name: 'Stencil Nightly Build'
on:
schedule:
# Run every Monday-Friday
# at 6:00 UTC (6:00 am UTC)
- cron: '00 06 * * 1-5'
# When pushing a new commit we should
# cancel the previous test run to not
# consume more runners than we need to.
concurrency:
group: ${{ github.ref }}
cancel-in-progress: false
jobs:
build-core:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
# Checkout the latest commit in this branch
ref: ${{ github.event.pull_request.head.sha }}
- uses: ./.github/workflows/actions/build-core-stencil-eval
test-core-clean-build:
needs: [build-core]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/test-core-clean-build
test-core-lint:
needs: [build-core]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/test-core-lint
test-core-spec:
needs: [build-core]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/test-core-spec
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.
# To increase the number of shards,
# add new items to the shard array
# and change the value of totalShards
# to be the length of the shard array.
shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
totalShards: [20]
needs: [build-core]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/test-core-screenshot
with:
shard: ${{ matrix.shard }}
totalShards: ${{ matrix.totalShards }}
# Screenshots are required to pass
# in order for the branch to be merge
# eligible. However, the screenshot tests
# are run on n runners where n can change
# over time. The verify-screenshots step allows
# us to have a required status check for screenshot
# results without having to manually add each
# matrix run in the branch protection rules
# Source: https://github.community/t/status-check-for-a-matrix-jobs/127354
verify-screenshots:
if: ${{ always() }}
needs: test-core-screenshot
runs-on: ubuntu-latest
steps:
- name: Check build matrix status
if: ${{ needs.test-core-screenshot.result != 'success' }}
run: exit 1
build-vue:
needs: [build-core]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/build-vue
build-vue-router:
needs: [build-vue]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/build-vue-router
test-vue-e2e:
strategy:
fail-fast: false
matrix:
apps: [vue3]
needs: [build-vue, build-vue-router]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/test-vue-e2e
with:
app: ${{ matrix.apps }}
verify-test-vue-e2e:
if: ${{ always() }}
needs: test-vue-e2e
runs-on: ubuntu-latest
steps:
- name: Check build matrix status
if: ${{ needs.test-vue-e2e.result != 'success' }}
run: exit 1
build-angular:
needs: [build-core]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/build-angular
build-angular-server:
needs: [build-angular]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/build-angular-server
test-angular-e2e:
strategy:
fail-fast: false
matrix:
apps: [ng12, ng13, ng14, ng15]
needs: [build-angular, build-angular-server]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/test-angular-e2e
with:
app: ${{ matrix.apps }}
verify-test-angular-e2e:
if: ${{ always() }}
needs: test-angular-e2e
runs-on: ubuntu-latest
steps:
- name: Check build matrix status
if: ${{ needs.test-angular-e2e.result != 'success' }}
run: exit 1
build-react:
needs: [build-core]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/build-react
build-react-router:
needs: [build-react]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/build-react-router
test-react-router-e2e:
needs: [build-react, build-react-router]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/test-react-router-e2e
test-react-e2e:
needs: [build-react, build-react-router]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/test-react-e2e

1
.gitignore vendored
View File

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

10
.stackblitz/codeflow.json Normal file
View File

@@ -0,0 +1,10 @@
{
"bot": {
"issues": {
"enabled": false
},
"pullRequests": {
"enabled": true
}
}
}

View File

@@ -1,3 +1,5 @@
Test B
# Ionic Framework v6 Beta
Thanks for your interest in trying out the Framework v6 beta! We are looking for developers to help test our new changes and provide feedback so that we can make Framework v6 the best release yet! Follow this guide to get setup with the beta.

View File

@@ -1,3 +1,5 @@
test branch update
# Breaking Changes
This is a comprehensive list of the breaking changes introduced in the major version releases of Ionic Framework.

View File

@@ -3,6 +3,195 @@
All notable changes to this project will be documented in this file.
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)
### Bug Fixes
* **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))
## [6.4.3](https://github.com/ionic-team/ionic-framework/compare/v6.4.2...v6.4.3) (2023-01-18)
### Bug Fixes
* **datetime:** allow header to render in all wheel picker presentations ([#26616](https://github.com/ionic-team/ionic-framework/issues/26616)) ([7b947b5](https://github.com/ionic-team/ionic-framework/commit/7b947b5d58ff51a3a6ac360fef6d4df073e1bfec))
* **input:** clear button uses contrast when setting color on item ([#26592](https://github.com/ionic-team/ionic-framework/issues/26592)) ([a31e1e5](https://github.com/ionic-team/ionic-framework/commit/a31e1e594d4ed7bbcf690b27eee143da232f2bdc)), closes [#26337](https://github.com/ionic-team/ionic-framework/issues/26337)
* **list:** inset lists render correctly ([#26586](https://github.com/ionic-team/ionic-framework/issues/26586)) ([911b1d4](https://github.com/ionic-team/ionic-framework/commit/911b1d496efe595ddbf8e980f052e505ce9716c2)), closes [#20819](https://github.com/ionic-team/ionic-framework/issues/20819)
## [6.4.2](https://github.com/ionic-team/ionic-framework/compare/v6.4.1...v6.4.2) (2023-01-11)
### Bug Fixes
* **datetime:** time wheel input mode is dismissed on user scroll ([#26567](https://github.com/ionic-team/ionic-framework/issues/26567)) ([d13a146](https://github.com/ionic-team/ionic-framework/commit/d13a14658df2723aff908a94181cb563cb1f5b43))
* **loading:** support custom aria-label ([#26581](https://github.com/ionic-team/ionic-framework/issues/26581)) ([2450a1e](https://github.com/ionic-team/ionic-framework/commit/2450a1e821d3901c8efb57ec256a10a951d22c8f)), closes [#24486](https://github.com/ionic-team/ionic-framework/issues/24486)
* **modal:** canDismiss type with data and role ([#26547](https://github.com/ionic-team/ionic-framework/issues/26547)) ([32c2622](https://github.com/ionic-team/ionic-framework/commit/32c2622ab04a70d00684e9a813d9bcef698d7551)), closes [#26544](https://github.com/ionic-team/ionic-framework/issues/26544)
* **picker-column-internal:** blurring picker does not throw error ([#26560](https://github.com/ionic-team/ionic-framework/issues/26560)) ([3e671b9](https://github.com/ionic-team/ionic-framework/commit/3e671b9c8ff62945a12eff431839ddae37d9d1a7)), closes [#26559](https://github.com/ionic-team/ionic-framework/issues/26559)
* **segment:** nested interactive is not rendered ([#26575](https://github.com/ionic-team/ionic-framework/issues/26575)) ([77ce9e0](https://github.com/ionic-team/ionic-framework/commit/77ce9e066e1ee71438ceac35479ea04e8df021f5))
* **tab-button:** nested interactives are not rendered ([#26576](https://github.com/ionic-team/ionic-framework/issues/26576)) ([df4882d](https://github.com/ionic-team/ionic-framework/commit/df4882d4d1c516038badfa647db484e070fbd099)), closes [#23332](https://github.com/ionic-team/ionic-framework/issues/23332)
* **vue:** unmount teleported user component ([#26543](https://github.com/ionic-team/ionic-framework/issues/26543)) ([c996384](https://github.com/ionic-team/ionic-framework/commit/c996384786257524842cc1dca8d0fb940699719b)), closes [#26542](https://github.com/ionic-team/ionic-framework/issues/26542)
## [6.4.1](https://github.com/ionic-team/ionic-framework/compare/v6.4.0...v6.4.1) (2022-12-14)
### Bug Fixes
* **breadcrumbs:** breadcrumbs are reactive ([#26427](https://github.com/ionic-team/ionic-framework/issues/26427)) ([0d8625b](https://github.com/ionic-team/ionic-framework/commit/0d8625b95537208c188b32a1707fa66050953281)), closes [#24041](https://github.com/ionic-team/ionic-framework/issues/24041)
* **datetime:** keyboard can select hour 00 ([#26423](https://github.com/ionic-team/ionic-framework/issues/26423)) ([2fc96b7](https://github.com/ionic-team/ionic-framework/commit/2fc96b771412d2deac6d19883bfc5abc74d0bdbd)), closes [#26409](https://github.com/ionic-team/ionic-framework/issues/26409)
* **modal:** compatibility with stencil libraries/apps ([#26448](https://github.com/ionic-team/ionic-framework/issues/26448)) ([1aa1068](https://github.com/ionic-team/ionic-framework/commit/1aa1068df7867a8b8a203052635da018014f5f1c))
* **normalize:** remove normalize styles for outdated browsers ([#26465](https://github.com/ionic-team/ionic-framework/issues/26465)) ([82d1d94](https://github.com/ionic-team/ionic-framework/commit/82d1d948ecd7725772eb1ffee495e7a5dcadb30b)), closes [#26464](https://github.com/ionic-team/ionic-framework/issues/26464)
# [6.4.0](https://github.com/ionic-team/ionic-framework/compare/v6.3.10...v6.4.0) (2022-12-07)
### Features
* **modal:** data and role are passed to canDismiss ([#26384](https://github.com/ionic-team/ionic-framework/issues/26384)) ([1b30fc9](https://github.com/ionic-team/ionic-framework/commit/1b30fc97d33e761866b4bcf7518efcdeb753032d)), closes [#26292](https://github.com/ionic-team/ionic-framework/issues/26292)
* **toast:** add global config toastDuration ([#26425](https://github.com/ionic-team/ionic-framework/issues/26425)) ([a67a827](https://github.com/ionic-team/ionic-framework/commit/a67a827fedc8adf44a35c786f615871facca60fc))
* **toggle:** add toggleOnOffLabels global config option ([#26087](https://github.com/ionic-team/ionic-framework/issues/26087)) ([43e2b39](https://github.com/ionic-team/ionic-framework/commit/43e2b3975d003e29b8060e5f5484bfb3daf457a2))
## [6.3.10](https://github.com/ionic-team/ionic-framework/compare/v6.3.9...v6.3.10) (2022-12-07)
### Bug Fixes
* **datetime:** add flipRTL to monthAndYear dropdown icon ([#26378](https://github.com/ionic-team/ionic-framework/issues/26378)) ([13fe669](https://github.com/ionic-team/ionic-framework/commit/13fe669dc14eb4c9feda8ee956fec42b994b0f96))
* **datetime:** md highlight does not clip at start or end of month ([#26366](https://github.com/ionic-team/ionic-framework/issues/26366)) ([fcfbcdb](https://github.com/ionic-team/ionic-framework/commit/fcfbcdbc200b1354b9128a691fbd9b68d50d8668)), closes [#24891](https://github.com/ionic-team/ionic-framework/issues/24891)
* **segment:** scrolling button into view is more consistent ([#26369](https://github.com/ionic-team/ionic-framework/issues/26369)) ([a2d570b](https://github.com/ionic-team/ionic-framework/commit/a2d570b7ad8b799b072ba6eb79d8fe4c6dd77cf0)), closes [#26368](https://github.com/ionic-team/ionic-framework/issues/26368)
## [6.3.9](https://github.com/ionic-team/ionic-framework/compare/v6.3.8...v6.3.9) (2022-11-30)
### Bug Fixes
* **button:** fill can be set to undefined ([#26339](https://github.com/ionic-team/ionic-framework/issues/26339)) ([2fe23d9](https://github.com/ionic-team/ionic-framework/commit/2fe23d9d46c3593843c781c57340332e5a86fd64)), closes [#25886](https://github.com/ionic-team/ionic-framework/issues/25886)
* **input:** clear icon can be styled ([#26354](https://github.com/ionic-team/ionic-framework/issues/26354)) ([ccaff8d](https://github.com/ionic-team/ionic-framework/commit/ccaff8d0dc66f8adc9cde838c084629391e4200d)), closes [#19178](https://github.com/ionic-team/ionic-framework/issues/19178) [#17168](https://github.com/ionic-team/ionic-framework/issues/17168)
* **reorder:** items animate once in firefox ([#26326](https://github.com/ionic-team/ionic-framework/issues/26326)) ([7ae8117](https://github.com/ionic-team/ionic-framework/commit/7ae81172844659d7f4581956ce17e5324f73beef)), closes [#21182](https://github.com/ionic-team/ionic-framework/issues/21182)
* **segment:** segment in toolbar uses correct contrast ([#26353](https://github.com/ionic-team/ionic-framework/issues/26353)) ([5a243cc](https://github.com/ionic-team/ionic-framework/commit/5a243ccebc8e27bef6eb1ed2f797a0c1166199bf)), closes [#26350](https://github.com/ionic-team/ionic-framework/issues/26350)
## [6.3.8](https://github.com/ionic-team/ionic-framework/compare/v6.3.7...v6.3.8) (2022-11-22)
### Bug Fixes
* **modal:** status bar style defaults to app settings ([#26291](https://github.com/ionic-team/ionic-framework/issues/26291)) ([a6c9e55](https://github.com/ionic-team/ionic-framework/commit/a6c9e55adcaa963f4829d6963b9b1a7b246cef4e)), closes [#26173](https://github.com/ionic-team/ionic-framework/issues/26173)
* **normalize:** normalize css resets button padding ([#26214](https://github.com/ionic-team/ionic-framework/issues/26214)) ([e14c947](https://github.com/ionic-team/ionic-framework/commit/e14c94722c2c8ec145d680f911b708a34f095cd3)), closes [#23928](https://github.com/ionic-team/ionic-framework/issues/23928)
* **popover:** popover positions correctly on all frameworks ([#26306](https://github.com/ionic-team/ionic-framework/issues/26306)) ([be9a399](https://github.com/ionic-team/ionic-framework/commit/be9a399eeed37ae4a67add78ac1283ba0c5e4b14)), closes [#25337](https://github.com/ionic-team/ionic-framework/issues/25337)
* **react:** useIonRouter hook has stable router reference ([#25000](https://github.com/ionic-team/ionic-framework/issues/25000)) ([89e3cd6](https://github.com/ionic-team/ionic-framework/commit/89e3cd67ce6d9cfc0607d6a89362483878a1820b)), closes [#24987](https://github.com/ionic-team/ionic-framework/issues/24987)
* **reorder-group:** support custom components ([#26289](https://github.com/ionic-team/ionic-framework/issues/26289)) ([8425734](https://github.com/ionic-team/ionic-framework/commit/842573477b1b498f2280badc8c7411832c1650a5)), closes [#19447](https://github.com/ionic-team/ionic-framework/issues/19447)
* **segment:** scrollable segments center button on click ([#26285](https://github.com/ionic-team/ionic-framework/issues/26285)) ([73ea64c](https://github.com/ionic-team/ionic-framework/commit/73ea64c02fff1d63651f6c98f03b43265ba5227a)), closes [#25367](https://github.com/ionic-team/ionic-framework/issues/25367)
* **toggle:** rtl layout renders correctly in safari ([#26315](https://github.com/ionic-team/ionic-framework/issues/26315)) ([0932f89](https://github.com/ionic-team/ionic-framework/commit/0932f89f5db63a1e6149f2f45de798d7485d72ee))
## [6.3.7](https://github.com/ionic-team/ionic-framework/compare/v6.3.6...v6.3.7) (2022-11-16)
### Bug Fixes
* **action-sheet:** icons are aligned on MD mode ([#26256](https://github.com/ionic-team/ionic-framework/issues/26256)) ([627d654](https://github.com/ionic-team/ionic-framework/commit/627d654d24f97e340e4004a03f07467619e60149)), closes [#26249](https://github.com/ionic-team/ionic-framework/issues/26249)
* **datetime:** clear button clears the selected date ([#26264](https://github.com/ionic-team/ionic-framework/issues/26264)) ([9216744](https://github.com/ionic-team/ionic-framework/commit/9216744205c1ecc0c3dd51490a25be102f27a91a)), closes [#26258](https://github.com/ionic-team/ionic-framework/issues/26258)
* **datetime:** fonts now render consistently ([#26281](https://github.com/ionic-team/ionic-framework/issues/26281)) ([f13ddca](https://github.com/ionic-team/ionic-framework/commit/f13ddcaf470fb3d070298819675812cebf5f5ceb))
* **datetime:** max and min works with showDefaultButtons ([#26257](https://github.com/ionic-team/ionic-framework/issues/26257)) ([e5cff9e](https://github.com/ionic-team/ionic-framework/commit/e5cff9ecf39c13912cf6e062e4a084fadc59c399)), closes [#26146](https://github.com/ionic-team/ionic-framework/issues/26146)
* **popover:** inline popover positioning with fit-content or auto width ([#26230](https://github.com/ionic-team/ionic-framework/issues/26230)) ([0a8a958](https://github.com/ionic-team/ionic-framework/commit/0a8a958cba02994ea0fefa265b17edddffe62e98)), closes [#24716](https://github.com/ionic-team/ionic-framework/issues/24716)
* **popover:** popover positioning for controller and inline ([#26274](https://github.com/ionic-team/ionic-framework/issues/26274)) ([31ab10d](https://github.com/ionic-team/ionic-framework/commit/31ab10de4e1c8e38582b985f19414f73337a63c8)), closes [#24716](https://github.com/ionic-team/ionic-framework/issues/24716)
* **textarea:** scrollbars are visible with overflow ([#26284](https://github.com/ionic-team/ionic-framework/issues/26284)) ([7a990ff](https://github.com/ionic-team/ionic-framework/commit/7a990ff403d7b7b80541c5d8f9cd05463c4fb593)), closes [#26278](https://github.com/ionic-team/ionic-framework/issues/26278)
## [6.3.6](https://github.com/ionic-team/ionic-framework/compare/v6.3.5...v6.3.6) (2022-11-10)
### Bug Fixes
* **datetime:** flip chevron icons when RTL is set on component directly ([#26195](https://github.com/ionic-team/ionic-framework/issues/26195)) ([dd98677](https://github.com/ionic-team/ionic-framework/commit/dd9867708b66543f5cbe978e0fa6ef34b37f9fc3))
* **react:** inline overlays display contents consistently ([#26255](https://github.com/ionic-team/ionic-framework/issues/26255)) ([d709ff6](https://github.com/ionic-team/ionic-framework/commit/d709ff64ae29a5197dc74cecb95cba602479683d)), closes [#26253](https://github.com/ionic-team/ionic-framework/issues/26253)
## [6.3.5](https://github.com/ionic-team/ionic-framework/compare/v6.3.4...v6.3.5) (2022-11-09)

View File

@@ -1,3 +1,5 @@
TEST A
<p align="center">
<a href="#">
<img alt="Ionic" src="https://github.com/ionic-team/ionic-framework/blob/main/.github/assets/logo.png?raw=true" width="60" />

View File

@@ -3,6 +3,120 @@
All notable changes to this project will be documented in this file.
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)
### Bug Fixes
* **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.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))
## [6.4.3](https://github.com/ionic-team/ionic/compare/v6.4.2...v6.4.3) (2023-01-18)
**Note:** Version bump only for package @ionic/angular
## [6.4.2](https://github.com/ionic-team/ionic/compare/v6.4.1...v6.4.2) (2023-01-11)
**Note:** Version bump only for package @ionic/angular
## [6.4.1](https://github.com/ionic-team/ionic/compare/v6.4.0...v6.4.1) (2022-12-14)
**Note:** Version bump only for package @ionic/angular
# [6.4.0](https://github.com/ionic-team/ionic/compare/v6.3.10...v6.4.0) (2022-12-07)
**Note:** Version bump only for package @ionic/angular
## [6.3.10](https://github.com/ionic-team/ionic/compare/v6.3.9...v6.3.10) (2022-12-07)
**Note:** Version bump only for package @ionic/angular
## [6.3.9](https://github.com/ionic-team/ionic/compare/v6.3.8...v6.3.9) (2022-11-30)
**Note:** Version bump only for package @ionic/angular
## [6.3.8](https://github.com/ionic-team/ionic/compare/v6.3.7...v6.3.8) (2022-11-22)
**Note:** Version bump only for package @ionic/angular
## [6.3.7](https://github.com/ionic-team/ionic/compare/v6.3.6...v6.3.7) (2022-11-16)
### Bug Fixes
* **popover:** inline popover positioning with fit-content or auto width ([#26230](https://github.com/ionic-team/ionic/issues/26230)) ([0a8a958](https://github.com/ionic-team/ionic/commit/0a8a958cba02994ea0fefa265b17edddffe62e98)), closes [#24716](https://github.com/ionic-team/ionic/issues/24716)
## [6.3.6](https://github.com/ionic-team/ionic/compare/v6.3.5...v6.3.6) (2022-11-10)
**Note:** Version bump only for package @ionic/angular
## [6.3.5](https://github.com/ionic-team/ionic/compare/v6.3.4...v6.3.5) (2022-11-09)
**Note:** Version bump only for package @ionic/angular

4060
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.3.5",
"version": "6.5.3",
"description": "Angular specific wrappers for @ionic/core",
"keywords": [
"ionic",
@@ -22,30 +22,28 @@
"bugs": {
"url": "https://github.com/ionic-team/ionic/issues"
},
"publishConfig": {
"directory": "dist"
},
"homepage": "https://ionicframework.com/",
"scripts": {
"prepublishOnly": "npm run build",
"build": "npm run clean && npm run build.ng && npm run build.core && npm run clean-generated",
"build.core": "node scripts/build-core.js",
"build.link": "npm run build && node scripts/link-copy.js",
"build.ng": "ng-packagr -p package.json -c tsconfig.json",
"clean": "node scripts/clean.js",
"clean-generated": "node ./scripts/clean-generated.js",
"lint": "npm run eslint && npm run prettier -- --write",
"lint": "npm run eslint && npm run prettier -- --write --cache",
"lint.fix": "npm run eslint -- --fix",
"fmt": "npm run eslint -- --fix && npm run prettier -- --write",
"fmt": "npm run eslint -- --fix && npm run prettier -- --write --cache",
"prettier": "prettier \"**/*.ts\"",
"eslint": "eslint . --ext .ts",
"prerelease": "npm run validate && np prerelease --yolo --any-branch --tag next",
"sync": "./scripts/sync.sh",
"test": "echo 'angular no tests yet'",
"tsc": "tsc -p .",
"validate": "npm i && npm run lint && npm run test && npm run build"
},
"dependencies": {
"@ionic/core": "^6.3.5",
"@ionic/core": "^6.5.3",
"ionicons": "^6.1.1",
"jsonc-parser": "^3.0.0",
"tslib": "^2.0.0"
},
@@ -92,6 +90,7 @@
},
"allowedNonPeerDependencies": [
"@ionic/core",
"ionicons",
"jsonc-parser"
]
}

View File

@@ -2,17 +2,8 @@ const fs = require('fs-extra');
const path = require('path');
const spawn = require('child_process').spawn;
const stencilPath = path.join(__dirname, '..', '..', 'core', 'node_modules', '.bin');
const typescriptPath = path.join(__dirname, '..', 'node_modules', '.bin');
function copyIonicons() {
const src = path.join(__dirname, '..', '..', 'core', 'node_modules', 'ionicons');
const dst = path.join(__dirname, '..', 'node_modules', 'ionicons');
fs.removeSync(dst);
fs.copySync(src, dst);
}
function copyCSS() {
const src = path.join(__dirname, '..', '..', 'core', 'css');
const dst = path.join(__dirname, '..','dist', 'css');
@@ -57,7 +48,6 @@ function copySchematicsJson(){
}
copyIonicons();
copyCSS();
buildSchematics();
copySchematicsJson()

12
angular/scripts/sync.sh Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
set -e
# 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 = () => {
@@ -83,14 +85,8 @@ export class ValueAccessor implements ControlValueAccessor, AfterViewInit, OnDes
}
/**
* TODO Remove this in favor of https://github.com/angular/angular/issues/10887
* whenever it is implemented. Currently, Ionic's form status classes
* do not react to changes when developers manually call
* Angular form control methods such as markAsTouched.
* This results in Ionic's form status classes being out
* of sync with the ng form status classes.
* This patches the methods to manually sync
* the classes until this feature is implemented in Angular.
* TODO FW-2787: Remove this in favor of https://github.com/angular/angular/issues/10887
* whenever it is implemented.
*/
const formControl = ngControl.control as any;
if (formControl) {

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

@@ -74,7 +74,6 @@ export const toSegments = (path: string): string[] => {
export const destroyView = (view: RouteView | undefined): void => {
if (view) {
// TODO lifecycle event
view.ref.destroy();
view.unlistenEvents();
}
@@ -87,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;
@@ -108,7 +109,7 @@ export class IonPopover {
constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {
this.el = r.nativeElement;
this.el.addEventListener('willPresent', () => {
this.el.addEventListener('ionMount', () => {
this.isCmpOpen = true;
c.detectChanges();
});

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>;
@@ -11,7 +13,6 @@ export class OverlayBaseController<Opts, Overlay> implements ControllerShape<Opt
* Creates a new overlay
*/
create(opts?: Opts): Promise<Overlay> {
// TODO: next major release opts is not optional
return this.ctrl.create((opts || {}) as any);
}

View File

@@ -21,9 +21,9 @@
"@ionic/angular": "^6.1.15",
"@ionic/angular-server": "^6.1.15",
"@nguniversal/express-engine": "^12.1.3",
"angular-in-memory-web-api": "^0.11.0",
"core-js": "^2.6.11",
"express": "^4.15.2",
"ionicons": "^6.0.4",
"rxjs": "^6.5.5",
"tslib": "^2.0.0",
"typescript-eslint-language-service": "^4.1.5",
@@ -3536,9 +3536,9 @@
"dev": true
},
"node_modules/@stencil/core": {
"version": "2.17.1",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.17.1.tgz",
"integrity": "sha512-ErjQsNALgZQ9SYeBHhqwL1UO+Zbptwl3kwrRJC2tGlc3G/T6UvPuaKr+PGsqI+CZGia+0+R5EELQvFu74mYeIg==",
"version": "2.19.2",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.19.2.tgz",
"integrity": "sha512-TK3sHqyQAACwcac4fWntypFtN9c/y+y9ioZojeCnNDY3dxF33Ax70lL9ZLDyQnWWR+aTh1WFoqB5sYOnZIUKMA==",
"bin": {
"stencil": "bin/stencil"
},
@@ -4502,16 +4502,6 @@
"ajv": "^6.9.1"
}
},
"node_modules/angular-in-memory-web-api": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/angular-in-memory-web-api/-/angular-in-memory-web-api-0.11.0.tgz",
"integrity": "sha512-QV1qYHm+Zd+wrvlcPLnAcqqGpOmCN1EUj4rRuYHpek8+QqFFdxBNuPZOJCKvU7I97z5QSKHsdc6PNKlpUQr3UA==",
"peerDependencies": {
"@angular/common": ">=8.0.0",
"@angular/core": ">=8.0.0",
"rxjs": "^6.0.0"
}
},
"node_modules/ansi-colors": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
@@ -10444,23 +10434,11 @@
}
},
"node_modules/ionicons": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-6.0.2.tgz",
"integrity": "sha512-AyKfFaUKVoBz4eB8XkU7H1R5HFnVsgq5ijqSdbXC0lES9PDK/J6LUQz6XUJq0mVVQF5k9kczSPOLMW3mszG0mQ==",
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-6.0.4.tgz",
"integrity": "sha512-uDNOkBo0OVYV+kIhb51g9mb7r3Z0b+78GPZQBsjXuaetNmrB/mNTqN/uFtO+vxL/rQySKjzk8qeKJI5NWL9Ueg==",
"dependencies": {
"@stencil/core": "~2.16.0"
}
},
"node_modules/ionicons/node_modules/@stencil/core": {
"version": "2.16.1",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.16.1.tgz",
"integrity": "sha512-s/UJp9qxExL3DyQPT70kiuWeb3AdjbUZM+5lEIXn30I2DLcLYPOPXfsoWJODieQywq+3vPiLZeIdkoqjf6jcSw==",
"bin": {
"stencil": "bin/stencil"
},
"engines": {
"node": ">=12.10.0",
"npm": ">=6.0.0"
"@stencil/core": "^2.18.0"
}
},
"node_modules/ip": {
@@ -22458,9 +22436,9 @@
"dev": true
},
"@stencil/core": {
"version": "2.17.1",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.17.1.tgz",
"integrity": "sha512-ErjQsNALgZQ9SYeBHhqwL1UO+Zbptwl3kwrRJC2tGlc3G/T6UvPuaKr+PGsqI+CZGia+0+R5EELQvFu74mYeIg=="
"version": "2.19.2",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.19.2.tgz",
"integrity": "sha512-TK3sHqyQAACwcac4fWntypFtN9c/y+y9ioZojeCnNDY3dxF33Ax70lL9ZLDyQnWWR+aTh1WFoqB5sYOnZIUKMA=="
},
"@tootallnate/once": {
"version": "1.1.2",
@@ -23215,11 +23193,6 @@
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"dev": true
},
"angular-in-memory-web-api": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/angular-in-memory-web-api/-/angular-in-memory-web-api-0.11.0.tgz",
"integrity": "sha512-QV1qYHm+Zd+wrvlcPLnAcqqGpOmCN1EUj4rRuYHpek8+QqFFdxBNuPZOJCKvU7I97z5QSKHsdc6PNKlpUQr3UA=="
},
"ansi-colors": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
@@ -27652,18 +27625,11 @@
"dev": true
},
"ionicons": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-6.0.2.tgz",
"integrity": "sha512-AyKfFaUKVoBz4eB8XkU7H1R5HFnVsgq5ijqSdbXC0lES9PDK/J6LUQz6XUJq0mVVQF5k9kczSPOLMW3mszG0mQ==",
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-6.0.4.tgz",
"integrity": "sha512-uDNOkBo0OVYV+kIhb51g9mb7r3Z0b+78GPZQBsjXuaetNmrB/mNTqN/uFtO+vxL/rQySKjzk8qeKJI5NWL9Ueg==",
"requires": {
"@stencil/core": "~2.16.0"
},
"dependencies": {
"@stencil/core": {
"version": "2.16.1",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.16.1.tgz",
"integrity": "sha512-s/UJp9qxExL3DyQPT70kiuWeb3AdjbUZM+5lEIXn30I2DLcLYPOPXfsoWJODieQywq+3vPiLZeIdkoqjf6jcSw=="
}
"@stencil/core": "^2.18.0"
}
},
"ip": {

View File

@@ -32,9 +32,9 @@
"@ionic/angular": "^6.1.15",
"@ionic/angular-server": "^6.1.15",
"@nguniversal/express-engine": "^12.1.3",
"angular-in-memory-web-api": "^0.11.0",
"core-js": "^2.6.11",
"express": "^4.15.2",
"ionicons": "^6.0.4",
"rxjs": "^6.5.5",
"tslib": "^2.0.0",
"typescript-eslint-language-service": "^4.1.5",

View File

@@ -21,9 +21,9 @@
"@ionic/angular": "^6.1.15",
"@ionic/angular-server": "^6.1.15",
"@nguniversal/express-engine": "^13.1.1",
"angular-in-memory-web-api": "^0.11.0",
"core-js": "^2.6.11",
"express": "^4.15.2",
"ionicons": "^6.0.4",
"rxjs": "^6.5.5",
"tslib": "^2.0.0",
"typescript-eslint-language-service": "^4.1.5",
@@ -3423,9 +3423,9 @@
"dev": true
},
"node_modules/@stencil/core": {
"version": "2.17.1",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.17.1.tgz",
"integrity": "sha512-ErjQsNALgZQ9SYeBHhqwL1UO+Zbptwl3kwrRJC2tGlc3G/T6UvPuaKr+PGsqI+CZGia+0+R5EELQvFu74mYeIg==",
"version": "2.19.2",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.19.2.tgz",
"integrity": "sha512-TK3sHqyQAACwcac4fWntypFtN9c/y+y9ioZojeCnNDY3dxF33Ax70lL9ZLDyQnWWR+aTh1WFoqB5sYOnZIUKMA==",
"bin": {
"stencil": "bin/stencil"
},
@@ -4765,16 +4765,6 @@
"ajv": "^6.9.1"
}
},
"node_modules/angular-in-memory-web-api": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/angular-in-memory-web-api/-/angular-in-memory-web-api-0.11.0.tgz",
"integrity": "sha512-QV1qYHm+Zd+wrvlcPLnAcqqGpOmCN1EUj4rRuYHpek8+QqFFdxBNuPZOJCKvU7I97z5QSKHsdc6PNKlpUQr3UA==",
"peerDependencies": {
"@angular/common": ">=8.0.0",
"@angular/core": ">=8.0.0",
"rxjs": "^6.0.0"
}
},
"node_modules/ansi-colors": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
@@ -9844,23 +9834,11 @@
}
},
"node_modules/ionicons": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-6.0.2.tgz",
"integrity": "sha512-AyKfFaUKVoBz4eB8XkU7H1R5HFnVsgq5ijqSdbXC0lES9PDK/J6LUQz6XUJq0mVVQF5k9kczSPOLMW3mszG0mQ==",
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-6.0.4.tgz",
"integrity": "sha512-uDNOkBo0OVYV+kIhb51g9mb7r3Z0b+78GPZQBsjXuaetNmrB/mNTqN/uFtO+vxL/rQySKjzk8qeKJI5NWL9Ueg==",
"dependencies": {
"@stencil/core": "~2.16.0"
}
},
"node_modules/ionicons/node_modules/@stencil/core": {
"version": "2.16.1",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.16.1.tgz",
"integrity": "sha512-s/UJp9qxExL3DyQPT70kiuWeb3AdjbUZM+5lEIXn30I2DLcLYPOPXfsoWJODieQywq+3vPiLZeIdkoqjf6jcSw==",
"bin": {
"stencil": "bin/stencil"
},
"engines": {
"node": ">=12.10.0",
"npm": ">=6.0.0"
"@stencil/core": "^2.18.0"
}
},
"node_modules/ip": {
@@ -18772,9 +18750,9 @@
"dev": true
},
"@stencil/core": {
"version": "2.17.1",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.17.1.tgz",
"integrity": "sha512-ErjQsNALgZQ9SYeBHhqwL1UO+Zbptwl3kwrRJC2tGlc3G/T6UvPuaKr+PGsqI+CZGia+0+R5EELQvFu74mYeIg=="
"version": "2.19.2",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.19.2.tgz",
"integrity": "sha512-TK3sHqyQAACwcac4fWntypFtN9c/y+y9ioZojeCnNDY3dxF33Ax70lL9ZLDyQnWWR+aTh1WFoqB5sYOnZIUKMA=="
},
"@tootallnate/once": {
"version": "2.0.0",
@@ -19791,11 +19769,6 @@
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"dev": true
},
"angular-in-memory-web-api": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/angular-in-memory-web-api/-/angular-in-memory-web-api-0.11.0.tgz",
"integrity": "sha512-QV1qYHm+Zd+wrvlcPLnAcqqGpOmCN1EUj4rRuYHpek8+QqFFdxBNuPZOJCKvU7I97z5QSKHsdc6PNKlpUQr3UA=="
},
"ansi-colors": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
@@ -23499,18 +23472,11 @@
"dev": true
},
"ionicons": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-6.0.2.tgz",
"integrity": "sha512-AyKfFaUKVoBz4eB8XkU7H1R5HFnVsgq5ijqSdbXC0lES9PDK/J6LUQz6XUJq0mVVQF5k9kczSPOLMW3mszG0mQ==",
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-6.0.4.tgz",
"integrity": "sha512-uDNOkBo0OVYV+kIhb51g9mb7r3Z0b+78GPZQBsjXuaetNmrB/mNTqN/uFtO+vxL/rQySKjzk8qeKJI5NWL9Ueg==",
"requires": {
"@stencil/core": "~2.16.0"
},
"dependencies": {
"@stencil/core": {
"version": "2.16.1",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.16.1.tgz",
"integrity": "sha512-s/UJp9qxExL3DyQPT70kiuWeb3AdjbUZM+5lEIXn30I2DLcLYPOPXfsoWJODieQywq+3vPiLZeIdkoqjf6jcSw=="
}
"@stencil/core": "^2.18.0"
}
},
"ip": {

View File

@@ -32,9 +32,9 @@
"@ionic/angular": "^6.1.15",
"@ionic/angular-server": "^6.1.15",
"@nguniversal/express-engine": "^13.1.1",
"angular-in-memory-web-api": "^0.11.0",
"core-js": "^2.6.11",
"express": "^4.15.2",
"ionicons": "^6.0.4",
"rxjs": "^6.5.5",
"tslib": "^2.0.0",
"typescript-eslint-language-service": "^4.1.5",

View File

File diff suppressed because it is too large Load Diff

View File

@@ -31,10 +31,10 @@
"@angular/router": "^14.1.0",
"@ionic/angular": "^6.1.15",
"@ionic/angular-server": "^6.1.15",
"@nguniversal/express-engine": "^14.0.3",
"angular-in-memory-web-api": "^0.11.0",
"core-js": "^2.6.11",
"express": "^4.15.2",
"ionicons": "^6.0.4",
"rxjs": "^6.5.5",
"tslib": "^2.0.0",
"typescript-eslint-language-service": "^4.1.5",

View File

File diff suppressed because it is too large Load Diff

View File

@@ -20,36 +20,36 @@
"test.watch": "concurrently \"npm run start\" \"wait-on http-get://localhost:4200 && npm run cy.open\" --kill-others --success first"
},
"dependencies": {
"@angular/animations": "^15.0.0-rc.1",
"@angular/common": "^15.0.0-rc.1",
"@angular/compiler": "^15.0.0-rc.1",
"@angular/core": "^15.0.0-rc.1",
"@angular/forms": "^15.0.0-rc.1",
"@angular/platform-browser": "^15.0.0-rc.1",
"@angular/platform-browser-dynamic": "^15.0.0-rc.1",
"@angular/platform-server": "^15.0.0-rc.1",
"@angular/router": "^15.0.0-rc.1",
"@angular/animations": "^15.0.0",
"@angular/common": "^15.0.0",
"@angular/compiler": "^15.0.0",
"@angular/core": "^15.0.0",
"@angular/forms": "^15.0.0",
"@angular/platform-browser": "^15.0.0",
"@angular/platform-browser-dynamic": "^15.0.0",
"@angular/platform-server": "^15.0.0",
"@angular/router": "^15.0.0",
"@ionic/angular": "^6.1.15",
"@ionic/angular-server": "^6.1.15",
"@nguniversal/express-engine": "^14.0.3",
"angular-in-memory-web-api": "^0.11.0",
"@nguniversal/express-engine": "^15.0.0",
"core-js": "^2.6.11",
"express": "^4.15.2",
"ionicons": "^6.0.4",
"rxjs": "~7.5.0",
"tslib": "^2.3.0",
"typescript-eslint-language-service": "^4.1.5",
"zone.js": "~0.11.4"
},
"devDependencies": {
"@angular-devkit/build-angular": "^15.0.0-rc.1",
"@angular-eslint/builder": "^14.0.2",
"@angular-eslint/eslint-plugin": "^14.0.2",
"@angular-eslint/eslint-plugin-template": "^14.0.2",
"@angular-eslint/schematics": "^14.0.2",
"@angular-eslint/template-parser": "^14.0.2",
"@angular/cli": "^15.0.0-rc.1",
"@angular/compiler-cli": "^15.0.0-rc.1",
"@angular/language-service": "^15.0.0-rc.1",
"@angular-devkit/build-angular": "^15.0.0",
"@angular-eslint/builder": "^15.0.0-alpha.0",
"@angular-eslint/eslint-plugin": "^15.0.0-alpha.0",
"@angular-eslint/eslint-plugin-template": "^15.0.0-alpha.0",
"@angular-eslint/schematics": "^15.0.0-alpha.0",
"@angular-eslint/template-parser": "^15.0.0-alpha.0",
"@angular/cli": "^15.0.0",
"@angular/compiler-cli": "^15.0.0",
"@angular/language-service": "^15.0.0",
"@nguniversal/builders": "^15.0.0-next.0",
"@types/express": "^4.17.7",
"@types/node": "^12.12.54",

View File

@@ -73,7 +73,7 @@ Cypress.Commands.add('ionPageDoesNotExist', (selector) => {
});
Cypress.Commands.add('ionTabClick', (tabText) => {
// TODO: Figure out how to get rid of wait. It's a workaround for flakiness in CI.
// TODO FW-2790: Figure out how to get rid of wait. It's a workaround for flakiness in CI.
cy.wait(250);
cy.contains('ion-tab-button', tabText).click({ force: true });
});

View File

@@ -1,20 +1,15 @@
# Copy angular dist
rm -rf node_modules/@ionic/angular
cp -a ../../../dist node_modules/@ionic/angular
#!/bin/bash
# Copy angular server
rm -rf node_modules/@ionic/angular-server
cp -a ../../../../packages/angular-server/dist node_modules/@ionic/angular-server
set -e
# # 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/core
npm pack ../../../../core
# # Copy ionicons
rm -rf node_modules/ionicons
cp -a ../../../../core/node_modules/ionicons node_modules/ionicons
# Pack @ionic/angular
npm pack ../../../dist
# Pack @ionic/angular-server
npm pack ../../../../packages/angular-server/dist
# Install Dependencies
npm install *.tgz --no-save

View File

@@ -31,10 +31,6 @@
"strictPropertyInitialization": false,
"target": "es2015",
"baseUrl": ".",
"paths": {
"@ionic/core/hydrate": ["../core/hydrate"],
"@ionic/core": ["../core"]
},
"plugins": [
{
"name": "typescript-eslint-language-service"

View File

@@ -41,5 +41,13 @@ module.exports = {
}
],
"custom-rules/no-component-on-ready-method": "error"
}
},
"overrides": [
{
"files": ["*.e2e.ts"],
"rules": {
"custom-rules/await-playwright-promise-assertion": "error"
}
}
]
};

View File

@@ -1,8 +1,202 @@
# Change Log
All notable changes to this project will be documented in this file.
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)
### 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.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.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))
## [6.4.3](https://github.com/ionic-team/ionic/compare/v6.4.2...v6.4.3) (2023-01-18)
### Bug Fixes
* **datetime:** allow header to render in all wheel picker presentations ([#26616](https://github.com/ionic-team/ionic/issues/26616)) ([7b947b5](https://github.com/ionic-team/ionic/commit/7b947b5d58ff51a3a6ac360fef6d4df073e1bfec))
* **input:** clear button uses contrast when setting color on item ([#26592](https://github.com/ionic-team/ionic/issues/26592)) ([a31e1e5](https://github.com/ionic-team/ionic/commit/a31e1e594d4ed7bbcf690b27eee143da232f2bdc)), closes [#26337](https://github.com/ionic-team/ionic/issues/26337)
* **list:** inset lists render correctly ([#26586](https://github.com/ionic-team/ionic/issues/26586)) ([911b1d4](https://github.com/ionic-team/ionic/commit/911b1d496efe595ddbf8e980f052e505ce9716c2)), closes [#20819](https://github.com/ionic-team/ionic/issues/20819)
## [6.4.2](https://github.com/ionic-team/ionic/compare/v6.4.1...v6.4.2) (2023-01-11)
### Bug Fixes
* **datetime:** time wheel input mode is dismissed on user scroll ([#26567](https://github.com/ionic-team/ionic/issues/26567)) ([d13a146](https://github.com/ionic-team/ionic/commit/d13a14658df2723aff908a94181cb563cb1f5b43))
* **loading:** support custom aria-label ([#26581](https://github.com/ionic-team/ionic/issues/26581)) ([2450a1e](https://github.com/ionic-team/ionic/commit/2450a1e821d3901c8efb57ec256a10a951d22c8f)), closes [#24486](https://github.com/ionic-team/ionic/issues/24486)
* **modal:** canDismiss type with data and role ([#26547](https://github.com/ionic-team/ionic/issues/26547)) ([32c2622](https://github.com/ionic-team/ionic/commit/32c2622ab04a70d00684e9a813d9bcef698d7551)), closes [#26544](https://github.com/ionic-team/ionic/issues/26544)
* **picker-column-internal:** blurring picker does not throw error ([#26560](https://github.com/ionic-team/ionic/issues/26560)) ([3e671b9](https://github.com/ionic-team/ionic/commit/3e671b9c8ff62945a12eff431839ddae37d9d1a7)), closes [#26559](https://github.com/ionic-team/ionic/issues/26559)
* **segment:** nested interactive is not rendered ([#26575](https://github.com/ionic-team/ionic/issues/26575)) ([77ce9e0](https://github.com/ionic-team/ionic/commit/77ce9e066e1ee71438ceac35479ea04e8df021f5))
* **tab-button:** nested interactives are not rendered ([#26576](https://github.com/ionic-team/ionic/issues/26576)) ([df4882d](https://github.com/ionic-team/ionic/commit/df4882d4d1c516038badfa647db484e070fbd099)), closes [#23332](https://github.com/ionic-team/ionic/issues/23332)
## [6.4.1](https://github.com/ionic-team/ionic/compare/v6.4.0...v6.4.1) (2022-12-14)
### Bug Fixes
* **breadcrumbs:** breadcrumbs are reactive ([#26427](https://github.com/ionic-team/ionic/issues/26427)) ([0d8625b](https://github.com/ionic-team/ionic/commit/0d8625b95537208c188b32a1707fa66050953281)), closes [#24041](https://github.com/ionic-team/ionic/issues/24041)
* **datetime:** keyboard can select hour 00 ([#26423](https://github.com/ionic-team/ionic/issues/26423)) ([2fc96b7](https://github.com/ionic-team/ionic/commit/2fc96b771412d2deac6d19883bfc5abc74d0bdbd)), closes [#26409](https://github.com/ionic-team/ionic/issues/26409)
* **modal:** compatibility with stencil libraries/apps ([#26448](https://github.com/ionic-team/ionic/issues/26448)) ([1aa1068](https://github.com/ionic-team/ionic/commit/1aa1068df7867a8b8a203052635da018014f5f1c))
* **normalize:** remove normalize styles for outdated browsers ([#26465](https://github.com/ionic-team/ionic/issues/26465)) ([82d1d94](https://github.com/ionic-team/ionic/commit/82d1d948ecd7725772eb1ffee495e7a5dcadb30b)), closes [#26464](https://github.com/ionic-team/ionic/issues/26464)
# [6.4.0](https://github.com/ionic-team/ionic/compare/v6.3.10...v6.4.0) (2022-12-07)
### Features
* **modal:** data and role are passed to canDismiss ([#26384](https://github.com/ionic-team/ionic/issues/26384)) ([1b30fc9](https://github.com/ionic-team/ionic/commit/1b30fc97d33e761866b4bcf7518efcdeb753032d)), closes [#26292](https://github.com/ionic-team/ionic/issues/26292)
* **toast:** add global config toastDuration ([#26425](https://github.com/ionic-team/ionic/issues/26425)) ([a67a827](https://github.com/ionic-team/ionic/commit/a67a827fedc8adf44a35c786f615871facca60fc))
* **toggle:** add toggleOnOffLabels global config option ([#26087](https://github.com/ionic-team/ionic/issues/26087)) ([43e2b39](https://github.com/ionic-team/ionic/commit/43e2b3975d003e29b8060e5f5484bfb3daf457a2))
## [6.3.10](https://github.com/ionic-team/ionic/compare/v6.3.9...v6.3.10) (2022-12-07)
### Bug Fixes
* **datetime:** add flipRTL to monthAndYear dropdown icon ([#26378](https://github.com/ionic-team/ionic/issues/26378)) ([13fe669](https://github.com/ionic-team/ionic/commit/13fe669dc14eb4c9feda8ee956fec42b994b0f96))
* **datetime:** md highlight does not clip at start or end of month ([#26366](https://github.com/ionic-team/ionic/issues/26366)) ([fcfbcdb](https://github.com/ionic-team/ionic/commit/fcfbcdbc200b1354b9128a691fbd9b68d50d8668)), closes [#24891](https://github.com/ionic-team/ionic/issues/24891)
* **segment:** scrolling button into view is more consistent ([#26369](https://github.com/ionic-team/ionic/issues/26369)) ([a2d570b](https://github.com/ionic-team/ionic/commit/a2d570b7ad8b799b072ba6eb79d8fe4c6dd77cf0)), closes [#26368](https://github.com/ionic-team/ionic/issues/26368)
### Features
* **toast:** add global config toastDuration ([#26401](https://github.com/ionic-team/ionic/issues/26401)) ([e375e9a](https://github.com/ionic-team/ionic/commit/e375e9a1e7d30c481772e84c0ae34f39a019aad3))
### Reverts
* Revert "feat(toast): add global config toastDuration (#26401)" (#26424) ([b6c0019](https://github.com/ionic-team/ionic/commit/b6c001935b4e51a04aa94b0bd6d849e783c8f607)), closes [#26401](https://github.com/ionic-team/ionic/issues/26401) [#26424](https://github.com/ionic-team/ionic/issues/26424)
## [6.3.9](https://github.com/ionic-team/ionic/compare/v6.3.8...v6.3.9) (2022-11-30)
### Bug Fixes
* **button:** fill can be set to undefined ([#26339](https://github.com/ionic-team/ionic/issues/26339)) ([2fe23d9](https://github.com/ionic-team/ionic/commit/2fe23d9d46c3593843c781c57340332e5a86fd64)), closes [#25886](https://github.com/ionic-team/ionic/issues/25886)
* **input:** clear icon can be styled ([#26354](https://github.com/ionic-team/ionic/issues/26354)) ([ccaff8d](https://github.com/ionic-team/ionic/commit/ccaff8d0dc66f8adc9cde838c084629391e4200d)), closes [#19178](https://github.com/ionic-team/ionic/issues/19178) [#17168](https://github.com/ionic-team/ionic/issues/17168)
* **reorder:** items animate once in firefox ([#26326](https://github.com/ionic-team/ionic/issues/26326)) ([7ae8117](https://github.com/ionic-team/ionic/commit/7ae81172844659d7f4581956ce17e5324f73beef)), closes [#21182](https://github.com/ionic-team/ionic/issues/21182)
* **segment:** segment in toolbar uses correct contrast ([#26353](https://github.com/ionic-team/ionic/issues/26353)) ([5a243cc](https://github.com/ionic-team/ionic/commit/5a243ccebc8e27bef6eb1ed2f797a0c1166199bf)), closes [#26350](https://github.com/ionic-team/ionic/issues/26350)
## [6.3.8](https://github.com/ionic-team/ionic/compare/v6.3.7...v6.3.8) (2022-11-22)
### Bug Fixes
* **modal:** status bar style defaults to app settings ([#26291](https://github.com/ionic-team/ionic/issues/26291)) ([a6c9e55](https://github.com/ionic-team/ionic/commit/a6c9e55adcaa963f4829d6963b9b1a7b246cef4e)), closes [#26173](https://github.com/ionic-team/ionic/issues/26173)
* **normalize:** normalize css resets button padding ([#26214](https://github.com/ionic-team/ionic/issues/26214)) ([e14c947](https://github.com/ionic-team/ionic/commit/e14c94722c2c8ec145d680f911b708a34f095cd3)), closes [#23928](https://github.com/ionic-team/ionic/issues/23928)
* **popover:** popover positions correctly on all frameworks ([#26306](https://github.com/ionic-team/ionic/issues/26306)) ([be9a399](https://github.com/ionic-team/ionic/commit/be9a399eeed37ae4a67add78ac1283ba0c5e4b14)), closes [#25337](https://github.com/ionic-team/ionic/issues/25337)
* **reorder-group:** support custom components ([#26289](https://github.com/ionic-team/ionic/issues/26289)) ([8425734](https://github.com/ionic-team/ionic/commit/842573477b1b498f2280badc8c7411832c1650a5)), closes [#19447](https://github.com/ionic-team/ionic/issues/19447)
* **segment:** scrollable segments center button on click ([#26285](https://github.com/ionic-team/ionic/issues/26285)) ([73ea64c](https://github.com/ionic-team/ionic/commit/73ea64c02fff1d63651f6c98f03b43265ba5227a)), closes [#25367](https://github.com/ionic-team/ionic/issues/25367)
* **toggle:** rtl layout renders correctly in safari ([#26315](https://github.com/ionic-team/ionic/issues/26315)) ([0932f89](https://github.com/ionic-team/ionic/commit/0932f89f5db63a1e6149f2f45de798d7485d72ee))
## [6.3.7](https://github.com/ionic-team/ionic/compare/v6.3.6...v6.3.7) (2022-11-16)
### Bug Fixes
* **action-sheet:** icons are aligned on MD mode ([#26256](https://github.com/ionic-team/ionic/issues/26256)) ([627d654](https://github.com/ionic-team/ionic/commit/627d654d24f97e340e4004a03f07467619e60149)), closes [#26249](https://github.com/ionic-team/ionic/issues/26249)
* **datetime:** clear button clears the selected date ([#26264](https://github.com/ionic-team/ionic/issues/26264)) ([9216744](https://github.com/ionic-team/ionic/commit/9216744205c1ecc0c3dd51490a25be102f27a91a)), closes [#26258](https://github.com/ionic-team/ionic/issues/26258)
* **datetime:** fonts now render consistently ([#26281](https://github.com/ionic-team/ionic/issues/26281)) ([f13ddca](https://github.com/ionic-team/ionic/commit/f13ddcaf470fb3d070298819675812cebf5f5ceb))
* **datetime:** max and min works with showDefaultButtons ([#26257](https://github.com/ionic-team/ionic/issues/26257)) ([e5cff9e](https://github.com/ionic-team/ionic/commit/e5cff9ecf39c13912cf6e062e4a084fadc59c399)), closes [#26146](https://github.com/ionic-team/ionic/issues/26146)
* **popover:** inline popover positioning with fit-content or auto width ([#26230](https://github.com/ionic-team/ionic/issues/26230)) ([0a8a958](https://github.com/ionic-team/ionic/commit/0a8a958cba02994ea0fefa265b17edddffe62e98)), closes [#24716](https://github.com/ionic-team/ionic/issues/24716)
* **popover:** popover positioning for controller and inline ([#26274](https://github.com/ionic-team/ionic/issues/26274)) ([31ab10d](https://github.com/ionic-team/ionic/commit/31ab10de4e1c8e38582b985f19414f73337a63c8)), closes [#24716](https://github.com/ionic-team/ionic/issues/24716)
* **textarea:** scrollbars are visible with overflow ([#26284](https://github.com/ionic-team/ionic/issues/26284)) ([7a990ff](https://github.com/ionic-team/ionic/commit/7a990ff403d7b7b80541c5d8f9cd05463c4fb593)), closes [#26278](https://github.com/ionic-team/ionic/issues/26278)
## [6.3.6](https://github.com/ionic-team/ionic/compare/v6.3.5...v6.3.6) (2022-11-10)
### Bug Fixes
* **datetime:** flip chevron icons when RTL is set on component directly ([#26195](https://github.com/ionic-team/ionic/issues/26195)) ([dd98677](https://github.com/ionic-team/ionic/commit/dd9867708b66543f5cbe978e0fa6ef34b37f9fc3))
## [6.3.5](https://github.com/ionic-team/ionic/compare/v6.3.4...v6.3.5) (2022-11-09)

View File

@@ -1,3 +1,7 @@
third commit
# @ionic/core
[Ionic](https://ionicframework.com/) is an open source App Development Framework that makes it easy to build top quality Native and Progressive Web Apps with web technologies.

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
@@ -780,7 +778,7 @@ ion-modal,prop,animated,boolean,true,false,false
ion-modal,prop,backdropBreakpoint,number,0,false,false
ion-modal,prop,backdropDismiss,boolean,true,false,false
ion-modal,prop,breakpoints,number[] | undefined,undefined,false,false
ion-modal,prop,canDismiss,(() => Promise<boolean>) | boolean | undefined,undefined,false,false
ion-modal,prop,canDismiss,((data?: any, role?: string | undefined) => Promise<boolean>) | boolean | undefined,undefined,false,false
ion-modal,prop,enterAnimation,((baseEl: any, opts?: any) => Animation) | undefined,undefined,false,false
ion-modal,prop,handle,boolean | undefined,undefined,false,false
ion-modal,prop,handleBehavior,"cycle" | "none" | undefined,'none',false,false
@@ -1382,7 +1380,7 @@ ion-toast,prop,animated,boolean,true,false,false
ion-toast,prop,buttons,(string | ToastButton)[] | undefined,undefined,false,false
ion-toast,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record<never, never> | undefined,undefined,false,true
ion-toast,prop,cssClass,string | string[] | undefined,undefined,false,false
ion-toast,prop,duration,number,0,false,false
ion-toast,prop,duration,number,config.getNumber('toastDuration', 0),false,false
ion-toast,prop,enterAnimation,((baseEl: any, opts?: any) => Animation) | undefined,undefined,false,false
ion-toast,prop,header,string | undefined,undefined,false,false
ion-toast,prop,htmlAttributes,undefined | { [key: string]: any; },undefined,false,false
@@ -1428,7 +1426,7 @@ ion-toggle,shadow
ion-toggle,prop,checked,boolean,false,false,false
ion-toggle,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record<never, never> | undefined,undefined,false,true
ion-toggle,prop,disabled,boolean,false,false,false
ion-toggle,prop,enableOnOffLabels,boolean | undefined,undefined,false,false
ion-toggle,prop,enableOnOffLabels,boolean | undefined,config.get('toggleOnOffLabels'),false,false
ion-toggle,prop,mode,"ios" | "md",undefined,false,false
ion-toggle,prop,name,string,this.inputId,false,false
ion-toggle,prop,value,null | string | undefined,'on',false,false

View File

@@ -0,0 +1,70 @@
module.exports = {
meta: {
messages: {
awaitPlaywrightPromiseAssertion: 'This Playwright assertion returns a Promise. Add an "await" to avoid creating a flaky test.',
},
},
create(context) {
return {
ExpressionStatement(node) {
const expression = node.expression;
/**
* The first expression of a properly awaited
* Playwright assertion should be an AwaitExpression,
* so if it goes directly to the CallExpression
* then we potentially need to report this.
*/
if (expression.type === 'CallExpression') {
const { object, property } = expression.callee;
/**
* Check to see if the property name is
* of a known Playwright async assertion.
*/
if (
property !== undefined &&
property.type === 'Identifier' &&
hasPlaywrightAsyncAssertion(property.name)
) {
context.report({ node: node, messageId: 'awaitPlaywrightPromiseAssertion' });
}
}
}
}
}
};
/**
* Returns `true` if `property` is the name
* of a known async Playwright assertion.
*/
const hasPlaywrightAsyncAssertion = (property) => {
return ASYNC_PLAYWRIGHT_ASSERTS.includes(property);
}
// https://playwright.dev/docs/test-assertions
const ASYNC_PLAYWRIGHT_ASSERTS = [
'toBeChecked',
'toBeDisabled',
'toBeEditable',
'toBeEmpty',
'toBeEnabled',
'toBeFocused',
'toBeHidden',
'toBeVisible',
'toContainText',
'toHaveAttribute',
'toHaveClass',
'toHaveCount',
'toHaveCSS',
'toHaveId',
'toHaveJSProperty',
'toHaveScreenshot',
'toHaveText',
'toHaveValue',
'toHaveValues',
'toHaveTitle',
'toHaveURL',
'toBeOK',
];

View File

@@ -1,5 +1,6 @@
module.exports = {
rules: {
'no-component-on-ready-method': require('./no-component-on-ready-method.js')
'no-component-on-ready-method': require('./no-component-on-ready-method.js'),
'await-playwright-promise-assertion': require('./await-playwright-promise-assertion.js')
}
}

View File

@@ -1,22 +1,22 @@
module.exports = {
meta: {
messages: {
noComponentOnReadyMethod: 'Using the componentOnReady method is not allowed. Use the componentOnReady helper utility in src/utils/helpers.ts instead.',
},
meta: {
messages: {
noComponentOnReadyMethod: 'Using the componentOnReady method is not allowed. Use the componentOnReady helper utility in src/utils/helpers.ts instead.',
},
create(context) {
return {
CallExpression(node) {
/**
* We only want to exclude usages of componentOnReady().
* Checking for the existence of the componentOnReady method
* is a way of determining if we are in a lazy loaded build
* or custom elements build, so we want to allow that.
*/
const callee = node.callee;
if (callee.type === 'MemberExpression' && callee.property.name === 'componentOnReady') {
context.report({ node: node, messageId: 'noComponentOnReadyMethod' });
}
},
create(context) {
return {
CallExpression(node) {
/**
* We only want to exclude usages of componentOnReady().
* Checking for the existence of the componentOnReady method
* is a way of determining if we are in a lazy loaded build
* or custom elements build, so we want to allow that.
*/
const callee = node.callee;
if (callee.type === 'MemberExpression' && callee.property.name === 'componentOnReady') {
context.report({ node: node, messageId: 'noComponentOnReadyMethod' });
}
}
}
}

15093
core/package-lock.json generated
View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "@ionic/core",
"version": "6.3.5",
"version": "6.5.3",
"description": "Base components for Ionic",
"keywords": [
"ionic",
@@ -32,28 +32,26 @@
],
"dependencies": {
"@stencil/core": "^2.18.0",
"ionicons": "^6.0.3",
"ionicons": "^6.1.1",
"tslib": "^2.1.0"
},
"devDependencies": {
"@axe-core/playwright": "^4.4.2",
"@axe-core/puppeteer": "^4.3.2",
"@ionic/eslint-config": "^0.3.0",
"@ionic/prettier-config": "^2.0.0",
"@jest/core": "^27.5.1",
"@playwright/test": "^1.23.3",
"@playwright/test": "^1.29.0",
"@rollup/plugin-node-resolve": "^8.4.0",
"@rollup/plugin-virtual": "^2.0.3",
"@stencil/angular-output-target": "^0.4.0",
"@stencil/react-output-target": "^0.2.1",
"@stencil/sass": "^1.5.2",
"@stencil/vue-output-target": "^0.6.2",
"@stencil/sass": "^2.0.0",
"@stencil/vue-output-target": "^0.7.0",
"@types/jest": "^27.5.2",
"@types/node": "^14.6.0",
"@types/swiper": "5.4.0",
"@typescript-eslint/eslint-plugin": "^5.17.0",
"@typescript-eslint/parser": "^5.17.0",
"aws-sdk": "^2.738.0",
"clean-css-cli": "^5.6.1",
"domino": "^2.1.6",
"eslint": "^7.32.0",
@@ -61,11 +59,9 @@
"eslint-plugin-custom-rules": "file:custom-rules",
"execa": "^5.0.0",
"fs-extra": "^9.0.1",
"jest": "^26.4.1",
"jest-cli": "^26.4.1",
"pixelmatch": "4.0.2",
"jest": "^27.5.1",
"jest-cli": "^27.5.1",
"prettier": "^2.6.1",
"puppeteer": "^10.4.0",
"rollup": "^2.26.4",
"sass": "^1.26.10",
"serve": "^14.0.1",
@@ -75,7 +71,6 @@
"typescript": "^4.0.5"
},
"scripts": {
"prepublishOnly": "npm run build",
"build": "npm run clean && npm run build.css && stencil build --es5 --docs-json dist/docs.json && npm run cdnloader",
"build.css": "npm run css.sass && npm run css.minify",
"build.debug": "npm run clean && stencil build --debug",
@@ -85,8 +80,8 @@
"css.minify": "cleancss -O2 -o ./css/ionic.bundle.css ./css/ionic.bundle.css",
"css.sass": "sass --embed-sources src/css:./css",
"eslint": "eslint src",
"lint": "npm run lint.ts && npm run lint.sass && npm run prettier -- --write",
"lint.fix": "npm run lint.ts.fix && npm run lint.sass.fix && npm run prettier -- --write",
"lint": "npm run lint.ts && npm run lint.sass && npm run prettier -- --write --cache",
"lint.fix": "npm run lint.ts.fix && npm run lint.sass.fix && npm run prettier -- --write --cache",
"lint.sass": "stylelint \"src/**/*.scss\"",
"lint.sass.fix": "npm run lint.sass -- --fix",
"lint.ts": "npm run eslint",
@@ -95,12 +90,10 @@
"prerender.e2e": "node scripts/testing/prerender.js",
"prettier": "prettier \"./src/**/*.{html,ts,tsx,js,jsx}\"",
"start": "npm run build.css && stencil build --dev --watch --serve",
"test": "stencil test --spec --e2e --max-workers=2",
"test": "npm run test.spec && npm run test.e2e",
"test.spec": "stencil test --spec --max-workers=2",
"test.spec.debug": "npx --node-arg=\"--inspect-brk\" stencil test --spec",
"test.e2e": "stencil test --e2e --max-workers=2",
"test.screenshot": "stencil test --e2e --screenshot --screenshot-connector=scripts/screenshot/dev.js",
"test.screenshot.ci": "stencil test --e2e --screenshot --screenshot-connector=scripts/screenshot/ci.js --ci",
"test.e2e": "npx playwright test",
"test.watch": "jest --watch --no-cache",
"test.treeshake": "node scripts/treeshaking.js dist/index.js",
"validate": "npm run lint && npm run test && npm run build && npm run test.treeshake"

View File

@@ -81,18 +81,14 @@ const config: PlaywrightTestConfig = {
* Maximum time expect() should wait for the condition to be met.
* For example in `await expect(locator).toHaveText();`
*/
timeout: 5000,
toMatchSnapshot: {
/**
* Increases the maximum allowed pixel difference to account
* for slight browser rendering inconsistencies.
*/
maxDiffPixelRatio: 0.02
}
timeout: 5000
},
/* Fail the build on CI if you accidentally left test.only in the source code. */
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
/* Fail fast on CI */
maxFailures: process.env.CI ? 1 : 0,
/* Flaky test should be either addressed or disabled until we can address them */
retries: 0,
/* Opt out of parallel tests on CI. */
workers: process.env.CI ? 1 : undefined,
/* Reporter to use. See https://playwright.dev/docs/test-reporters */

View File

@@ -1,3 +0,0 @@
images
builds
compare.html

View File

@@ -1,218 +0,0 @@
const IonicConnector = require('./ionic');
const fs = require('fs');
const path = require('path');
const S3 = require('aws-sdk/clients/s3');
const execa = require('execa');
const stream = require('stream');
const BUILD_URL = 'https://github.com/ionic-team/ionic/commit/';
const S3_BUCKET = 'screenshot.ionicframework.com';
const s3 = new S3({ apiVersion: '2006-03-01' });
class CIScreenshotConnector extends IonicConnector {
async initBuild(opts) {
const { stdout: result } = await execa('git', ['log', '-1', '--format=%H%n%an <%ae>%n%ct%n%s']);
const [ sha1, author, timestamp, msg ] = result.split('\n');
const sha1short = sha1.slice(0, 7);
opts.buildId = sha1short;
opts.buildMessage = msg;
opts.buildAuthor = author;
opts.buildUrl = BUILD_URL + sha1short;
opts.previewUrl = `https://${S3_BUCKET}/${sha1short}`;
opts.buildTimestamp = (timestamp * 1000);
await super.initBuild(opts);
}
async uploadImage(image) {
const file = path.join(this.imagesDir, image);
const stream = fs.createReadStream(file);
const key = `data/images/${image}`;
await this.uploadStream(stream, key, { ContentType: 'image/png' });
}
async uploadStream(stream, key, extra = {}) {
try {
await s3.headObject({ Bucket: S3_BUCKET, Key: key }).promise();
} catch (e) {
if (e.statusCode !== 404) {
throw e;
}
this.logger.debug(`uploading: ${key}`);
await s3.upload({ Bucket: S3_BUCKET, Key: key, Body: stream, ...extra }).promise();
}
}
async pullMasterBuild() {
await super.pullIonicMasterBuild();
}
async publishBuild(results) {
const currentBuild = results.currentBuild;
const timespan = this.logger.createTimeSpan(`publishing build started`);
const images = currentBuild.screenshots.map(screenshot => screenshot.image);
const imageBatches = [];
while (images.length > 0) {
imageBatches.push(images.splice(0, 10));
}
for (const batch of imageBatches) {
await Promise.all(batch.map(async image => this.uploadImage(image)));
}
const buildBuffer = Buffer.from(JSON.stringify(currentBuild, undefined, 2));
const buildStream = new stream.PassThrough();
buildStream.end(buildBuffer);
const uploads = [
this.uploadStream(buildStream, `data/builds/${currentBuild.id}.json`, { ContentType: 'application/json' }),
];
if (this.updateMaster) {
// master build
// update the master data with this current build
// no need to upload a compare data
const buildStream = new stream.PassThrough();
buildStream.end(buildBuffer);
const key = `data/builds/master.json`;
this.logger.debug(`uploading: ${key}`);
uploads.push(
s3.upload({ Bucket: S3_BUCKET, Key: key, Body: buildStream, ContentType: 'application/json' }).promise()
);
} else {
// PR build
// not updating master
// upload compare data of the PR against the master data
const compare = results.compare;
compare.url = `https://${S3_BUCKET}/${compare.a.id}/${compare.b.id}`;
const compareBuffer = Buffer.from(JSON.stringify(compare, undefined, 2));
const compareStream = new stream.PassThrough();
compareStream.end(compareBuffer);
uploads.push(
this.uploadStream(compareStream, `data/compares/${compare.id}.json`, { ContentType: 'application/json' })
);
}
await Promise.all(uploads);
timespan.finish(`publishing build finished`);
await this.uploadTests(results);
return results;
}
async uploadTests(results) {
const timespan = this.logger.createTimeSpan(`uploading tests started`);
const appRoot = path.join(__dirname, '..', '..');
let uploadPaths = [];
const cssDir = path.join(appRoot, 'css');
fs.readdirSync(cssDir).forEach(cssFile => {
uploadPaths.push(path.join(cssDir, cssFile));
});
uploadPaths.push(path.join(appRoot, 'scripts', 'testing', 'styles.css'));
const distDir = path.join(appRoot, 'dist');
const distIonicDir = path.join(distDir, 'ionic');
fs.readdirSync(distIonicDir).forEach(distIonicFile => {
uploadPaths.push(path.join(distIonicDir, distIonicFile));
});
const distIonicSvgDir = path.join(distIonicDir, 'svg');
fs.readdirSync(distIonicSvgDir).forEach(distIonicSvgFile => {
uploadPaths.push(path.join(distIonicSvgDir, distIonicSvgFile));
});
results.currentBuild.screenshots.forEach(screenshot => {
const testDir = path.dirname(screenshot.testPath);
const testIndexHtml = path.join(appRoot, testDir, 'index.html');
if (!uploadPaths.includes(testIndexHtml)) {
uploadPaths.push(testIndexHtml);
}
});
uploadPaths = uploadPaths.filter(p => p.endsWith('.js') || p.endsWith('.css') || p.endsWith('.html') || p.endsWith('.svg'));
const fileCount = uploadPaths.length;
const uploadBatches = [];
while (uploadPaths.length > 0) {
uploadBatches.push(uploadPaths.splice(0, 20));
}
for (const batch of uploadBatches) {
await Promise.all(batch.map(async uploadPath => {
const stream = fs.createReadStream(uploadPath);
const relPath = path.relative(appRoot, uploadPath);
const key = `data/tests/${results.currentBuild.id}/${relPath}`;
let contentType = 'text/plain';
if (uploadPath.endsWith('.js')) {
contentType = 'application/javascript'
} else if (uploadPath.endsWith('.css')) {
contentType = 'text/css'
} else if (uploadPath.endsWith('.html')) {
contentType = 'text/html'
} else if (uploadPath.endsWith('.svg')) {
contentType = 'image/svg+xml'
}
this.logger.debug(`uploading: ${key} ${contentType}`);
await s3.upload({ Bucket: S3_BUCKET, Key: key, Body: stream, ContentType: contentType }).promise();
}));
}
timespan.finish(`uploading tests finished: ${fileCount} files`);
}
async getScreenshotCache() {
const timespan = this.logger.createTimeSpan(`get screenshot cache started`, true);
try {
const ws = fs.createWriteStream(this.screenshotCacheFilePath);
const p = `/data/compares/screenshot-cache.json?ts=${Date.now()}`;
await this.downloadToStream(ws, p);
} catch (e) {
this.logger.debug(e);
}
timespan.finish(`get screenshot cache finished`);
return super.getScreenshotCache();
}
async updateScreenshotCache(cache, buildResults) {
const timespan = this.logger.createTimeSpan(`update screenshot cache started`, true);
cache = await super.updateScreenshotCache(cache, buildResults);
const cacheBuffer = Buffer.from(JSON.stringify(cache, undefined, 2));
const cacheStream = new stream.PassThrough();
cacheStream.end(cacheBuffer);
const key = `data/compares/screenshot-cache.json`;
this.logger.debug(`uploading: ${key}`);
await s3.upload({ Bucket: S3_BUCKET, Key: key, Body: cacheStream, ContentType: 'application/json' }).promise();
timespan.finish(`update screenshot cache finished`);
return cache;
}
}
module.exports = CIScreenshotConnector;

View File

@@ -1,14 +0,0 @@
const IonicConnector = require('./ionic');
class DevConnector extends IonicConnector {
async pullMasterBuild() {
await super.pullIonicMasterBuild();
const masterBuild = await super.getMasterBuild();
await this.generateJsonpDataUris(masterBuild);
}
}
module.exports = DevConnector;

View File

@@ -1,78 +0,0 @@
const ScreenshotConnector = require('@stencil/core/screenshot/local-connector');
const fs = require('fs');
const path = require('path');
const https = require('https');
class IonicConnector extends ScreenshotConnector {
async pullIonicMasterBuild() {
const timespan = this.logger.createTimeSpan(`pull master screenshot images started`);
const ws = fs.createWriteStream(this.masterBuildFilePath);
const p = `/data/builds/master.json?ts=${Date.now()}`;
await this.downloadToStream(ws, p);
const masterBuild = await this.getMasterBuild();
const masterImageNames = masterBuild.screenshots.map(s => s.image);
const missingImages = masterImageNames.filter(masterImageName => {
try {
const masterImagePath = path.join(this.imagesDir, masterImageName);
fs.accessSync(masterImagePath);
return false;
} catch (e) {}
return true
});
while (missingImages.length > 0) {
const images = missingImages.splice(0, 20);
await Promise.all(images.map(async image => {
this.logger.debug(`downloading: ${image}`);
try {
await this.downloadImage(image);
} catch (e) {
this.logger.error(`Error with ${image}: ${e}`);
throw e;
}
}));
}
timespan.finish(`pull master screenshot images finished`);
}
async downloadToStream(stream, p) {
return new Promise((resolve, reject) => {
const req = https.request({
method: 'GET',
hostname: 'screenshot.ionicframework.com',
path: p,
});
req.on('response', res => {
if (res.statusCode !== 200) {
return reject(new Error(`Bad Status Code: ${res.statusCode}`));
}
stream.on('error', reject);
stream.on('close', resolve);
res.on('error', reject);
res.pipe(stream);
});
req.on('error', reject);
req.end();
});
}
async downloadImage(image) {
const stream = fs.createWriteStream(path.join(this.imagesDir, image));
const p = `/data/images/${image}`;
await this.downloadToStream(stream, p);
}
}
module.exports = IonicConnector;

View File

@@ -14,7 +14,7 @@ import { PickerInternalChangeEventDetail } from "./components/picker-internal/pi
import { PinFormatter } from "./components/range/range-interface";
import { NavigationHookCallback } from "./components/route/route-interface";
import { SelectCompareFn } from "./components/select/select-interface";
import { ToastAttributes } from "./components/toast/toast-interface";
import { ToastAttributes, ToastPosition } from "./components/toast/toast-interface";
export namespace Components {
interface IonAccordion {
/**
@@ -1145,7 +1145,7 @@ export namespace Components {
*/
"setBlur": () => Promise<void>;
/**
* Sets focus on the native `input` in `ion-input`. Use this method instead of the global `input.focus()`.
* Sets focus on the native `input` in `ion-input`. Use this method instead of the global `input.focus()`. Developers who wish to focus an input when a page enters should call `setFocus()` in the `ionViewDidEnter()` lifecycle method.
*/
"setFocus": () => Promise<void>;
/**
@@ -1560,7 +1560,7 @@ export namespace Components {
/**
* Determines whether or not a modal can dismiss when calling the `dismiss` method. If the value is `true` or the value's function returns `true`, the modal will close when trying to dismiss. If the value is `false` or the value's function returns `false`, the modal will not close when trying to dismiss.
*/
"canDismiss"?: undefined | boolean | (() => Promise<boolean>);
"canDismiss"?: undefined | boolean | ((data?: any, role?: string) => Promise<boolean>);
/**
* The component to display inside of the modal.
*/
@@ -1918,6 +1918,7 @@ export namespace Components {
"value"?: string | number;
}
interface IonPickerInternal {
"exitInputMode": () => Promise<void>;
/**
* The mode determines which platform styles to use.
*/
@@ -2483,6 +2484,7 @@ export namespace Components {
* The mode determines which platform styles to use.
*/
"mode"?: "ios" | "md";
"setFocus": () => Promise<void>;
/**
* The type of the button.
*/
@@ -2998,7 +3000,7 @@ export namespace Components {
/**
* The position of the toast on the screen.
*/
"position": 'top' | 'bottom' | 'middle';
"position": ToastPosition;
/**
* Present the toast overlay after it has been created.
*/
@@ -5548,7 +5550,7 @@ declare namespace LocalJSX {
/**
* Determines whether or not a modal can dismiss when calling the `dismiss` method. If the value is `true` or the value's function returns `true`, the modal will close when trying to dismiss. If the value is `false` or the value's function returns `false`, the modal will not close when trying to dismiss.
*/
"canDismiss"?: undefined | boolean | (() => Promise<boolean>);
"canDismiss"?: undefined | boolean | ((data?: any, role?: string) => Promise<boolean>);
/**
* The component to display inside of the modal.
*/
@@ -5907,6 +5909,10 @@ declare namespace LocalJSX {
* Emitted after the popover has presented. Shorthand for ionPopoverWillDismiss.
*/
"onDidPresent"?: (event: IonPopoverCustomEvent<void>) => void;
/**
* Emitted before the popover has presented, but after the component has been mounted in the DOM. This event exists for ion-popover to resolve an issue with the popover and the lazy build, that the transition is unable to get the correct dimensions of the popover with auto sizing. This is not required for other overlays, since the existing overlay transitions are not effected by auto sizing content.
*/
"onIonMount"?: (event: IonPopoverCustomEvent<void>) => void;
/**
* Emitted after the popover has dismissed.
*/
@@ -7003,7 +7009,7 @@ declare namespace LocalJSX {
/**
* The position of the toast on the screen.
*/
"position"?: 'top' | 'bottom' | 'middle';
"position"?: ToastPosition;
/**
* If `true`, the toast will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
*/

View File

@@ -4,7 +4,9 @@ import { test } from '@utils/test/playwright';
test.describe('accordion: a11y', () => {
test('accordions should be keyboard navigable', async ({ page, skip, browserName }) => {
// TODO(FW-1764): remove skip once issue is resolved
skip.browser('firefox', 'https://github.com/ionic-team/ionic-framework/issues/25529');
skip.browser('firefox', 'https://github.com/ionic-team/ionic-framework/issues/25070');
// TODO (FW-2979)
skip.browser('webkit', 'Safari 16 only allows text fields and pop-up menus to be focused.');
await page.goto(`/src/components/accordion/test/a11y`);
const tabKey = browserName === 'webkit' ? 'Alt+Tab' : 'Tab';

View File

@@ -0,0 +1,56 @@
import { expect } from '@playwright/test';
import { test } from '@utils/test/playwright';
test.describe('accordion: states', () => {
test.beforeEach(({ skip }) => {
skip.rtl();
skip.mode('ios');
});
test('should properly set readonly on child accordions', async ({ page }) => {
await page.setContent(`
<ion-accordion-group animated="false">
<ion-accordion>
<ion-item slot="header">Label</ion-item>
<div slot="content">Content</div>
</ion-accordion>
</ion-accordion-group>
`);
const accordionGroup = page.locator('ion-accordion-group');
const accordion = page.locator('ion-accordion');
await expect(accordion).toHaveJSProperty('readonly', false);
await accordionGroup.evaluate((el: HTMLIonAccordionGroupElement) => {
el.readonly = true;
});
await page.waitForChanges();
await expect(accordion).toHaveJSProperty('readonly', true);
});
test('should properly set disabled on child accordions', async ({ page }) => {
await page.setContent(`
<ion-accordion-group animated="false">
<ion-accordion>
<ion-item slot="header">Label</ion-item>
<div slot="content">Content</div>
</ion-accordion>
</ion-accordion-group>
`);
const accordionGroup = page.locator('ion-accordion-group');
const accordion = page.locator('ion-accordion');
await expect(accordion).toHaveJSProperty('disabled', false);
await accordionGroup.evaluate((el: HTMLIonAccordionGroupElement) => {
el.disabled = true;
});
await page.waitForChanges();
await expect(accordion).toHaveJSProperty('disabled', true);
});
});

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 KiB

After

Width:  |  Height:  |  Size: 260 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 KiB

After

Width:  |  Height:  |  Size: 260 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 KiB

After

Width:  |  Height:  |  Size: 238 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 KiB

After

Width:  |  Height:  |  Size: 238 KiB

View File

@@ -1,55 +0,0 @@
import { newE2EPage } from '@stencil/core/testing';
test('should properly set readonly on child accordions', async () => {
const page = await newE2EPage({
html: `
<ion-accordion-group animated="false">
<ion-accordion>
<ion-item slot="header">Label</ion-item>
<div slot="content">Content</div>
</ion-accordion>
</ion-accordion-group>
`,
});
const accordion = await page.find('ion-accordion');
const value = await accordion.getProperty('readonly');
expect(value).toBe(false);
await page.$eval('ion-accordion-group', (el: HTMLIonAccordionGroupElement) => {
el.readonly = true;
});
await page.waitForChanges();
const valueAgain = await accordion.getProperty('readonly');
expect(valueAgain).toBe(true);
});
test('should properly set disabled on child accordions', async () => {
const page = await newE2EPage({
html: `
<ion-accordion-group animated="false">
<ion-accordion>
<ion-item slot="header">Label</ion-item>
<div slot="content">Content</div>
</ion-accordion>
</ion-accordion-group>
`,
});
const accordion = await page.find('ion-accordion');
const value = await accordion.getProperty('disabled');
expect(value).toBe(false);
await page.$eval('ion-accordion-group', (el: HTMLIonAccordionGroupElement) => {
el.disabled = true;
});
await page.waitForChanges();
const valueAgain = await accordion.getProperty('disabled');
expect(valueAgain).toBe(true);
});

View File

@@ -78,7 +78,6 @@
}
.action-sheet-icon {
@include padding(null, null, 4px, null);
@include margin($action-sheet-md-icon-margin-top, $action-sheet-md-icon-margin-end, $action-sheet-md-icon-margin-bottom, $action-sheet-md-icon-margin-start);
color: var(--color);

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

@@ -41,7 +41,7 @@ test.describe('action sheet: basic', () => {
await actionSheetFixture.open('#basic');
const actionSheet = page.locator('ion-action-sheet');
expect(actionSheet).toHaveAttribute('data-testid', 'basic-action-sheet');
await expect(actionSheet).toHaveAttribute('data-testid', 'basic-action-sheet');
});
});
test.describe('action sheet: variants', () => {
@@ -78,7 +78,7 @@ test.describe('action sheet: basic', () => {
await actionSheetFixture.open('#customBackdrop');
const backdrop = page.locator('ion-action-sheet ion-backdrop');
expect(backdrop).toHaveCSS('opacity', '1');
await expect(backdrop).toHaveCSS('opacity', '1');
});
test('should open alert from action sheet', async ({ page, skip }) => {
skip.rtl();
@@ -96,7 +96,7 @@ test.describe('action sheet: basic', () => {
const actionSheet = page.locator('ion-action-sheet');
await actionSheet.locator('ion-backdrop').click();
expect(actionSheet).toBeVisible();
await expect(actionSheet).toBeVisible();
});
});
test.describe('action sheet: focus trap', () => {
@@ -133,14 +133,14 @@ class ActionSheetFixture {
await this.page.locator(selector).click();
await ionActionSheetDidPresent.next();
this.actionSheet = this.page.locator('ion-action-sheet');
expect(this.actionSheet).toBeVisible();
await expect(this.actionSheet).toBeVisible();
}
async dismiss() {
const ionActionSheetDidDismiss = await this.page.spyOnEvent('ionActionSheetDidDismiss');
await this.actionSheet.evaluate((el: HTMLIonActionSheetElement) => el.dismiss());
await ionActionSheetDidDismiss.next();
expect(this.actionSheet).not.toBeVisible();
await expect(this.actionSheet).not.toBeVisible();
}
async screenshot(modifier: string) {

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

After

Width:  |  Height:  |  Size: 96 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

After

Width:  |  Height:  |  Size: 96 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 104 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 91 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 104 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

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