Compare commits

..

122 Commits

Author SHA1 Message Date
Sean Perkins
5f56f069e5 refactor(react-router): migrate stack manager to hooks 2023-08-01 16:03:17 -04:00
Liam DeBeasi
824033f1d4 fix(react, vue): custom animations are used when going back (#27895)
Issue number: resolves #27873

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Custom animations are not always used when the `handleNavigateBack`
method is called. This impacts both Ionic React and Ionic Vue.

While we do set the `incomingRouteParams` with the animation:
a08a5894ba/packages/react-router/src/ReactRouter/IonRouter.tsx (L247-L252)

We do sometimes call `handleNavigate`:
a08a5894ba/packages/react-router/src/ReactRouter/IonRouter.tsx (L273-L279)

This `handleNavigate` method sets `incomingRouteParams` again:
a08a5894ba/packages/react-router/src/ReactRouter/IonRouter.tsx (L225-L230)

Since we do not re-pass `routeAnimation`, that field gets set to
`undefined` and the custom animation does not get used.

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

- Custom animation is now passed to `handleNavigate`

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

Dev build: `7.2.2-dev.11690810887.180000d1`
2023-07-31 17:57:03 +00:00
Liam DeBeasi
b8553d89f8 docs(popover): clarify size property (#27894)
Issue number: N/A

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

See: https://github.com/ionic-team/ionic-framework/issues/27877

The current description does not accurately describe what `size="auto"`
does.

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

- Description clarifies that the width of the popover is set based on
platform defaults.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->
2023-07-31 15:25:45 +00:00
Liam DeBeasi
ba2f49b8a4 fix(radio): radios can be focused and are announced with group (#27817)
Issue number: resolves #27438

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

There are a few issues with the modern radio syntax:

1. The native radio is inside the Shadow DOM. As a result, radios are
not announced with their parent group with screen readers (i.e. "1 of
3")
2. The native radio cannot be focused inside of `ion-select-popover` on
Firefox.
3. The `ionFocus` and `ionBlur` events do not fire.

I also discovered an issue with item:

1. Items inside of a Radio Group have a role of `listitem` which prevent
radios from being grouped correctly in some browsers. According to
https://bugzilla.mozilla.org/show_bug.cgi?id=1840916, browsers are
behaving correctly here. The `listitem` role should not be present when
an item is used in a radio group (even if the radio group itself is
inside a list).

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

Most of the changes are test-related, but I broke it down per commit to
make this easier to review:


ae77002afd

- Item no longer has `role="listitem"` when used inside of a radio
group.
- Added spec tests to verify the role behavior


0a9b7fb91d

- I discovered that some the legacy basic test were accidentally using
the modern syntax. I corrected this by adding `legacy="true"` to the
radios.


a8a90e53b2,
412d1d54e7,
and
1d1179b69a

- The current radio group tests only tested the legacy radio syntax, and
not the modern syntax.
- I created a `legacy` directory to house the legacy syntax tests.
- I created new tests in the root test directory for the modern syntax.
- I also deleted the screenshots for the modern tests here because the
tests for `ion-radio` already take screenshots of the radio (even in an
item).


e2c966e68b
- Moved radio roles to the host. This allows Firefox to focus radios and
for screen readers to announce the radios as part of a group.
- I also added focus/blur listeners so ionFocus and ionBlur fire


f10eff47a5

- I cleaned up the tests here to use a common radio fixture

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

I tested this with the following setups.  indicates the screen reader
announces the group count (i.e. "1 of 4").  indicates the screen reader
does not announce the group count.

**Radio in Radio Group:**
- iOS + VoiceOver: 
- Android + TalkBack: 
- macOS + VoiceOver + Safari: 
- macOS + VoiceOver + Firefox: 
- macOS + VoiceOver + Chrome: 
- Windows + NVDA + Chrome: 
- Windows + NVDA + Firefox: 

**Radio in Item in Radio Group :**
- iOS + VoiceOver: 
- Android + TalkBack: 
(https://bugs.chromium.org/p/chromium/issues/detail?id=1459006)
- macOS + VoiceOver + Safari: 
- macOS + VoiceOver + Firefox: 
- macOS + VoiceOver + Chrome: 
(https://bugs.chromium.org/p/chromium/issues/detail?id=1459003)
- Windows + NVDA + Chrome: 
- Windows + NVDA + Firefox: 
2023-07-31 14:07:44 +00:00
dependabot[bot]
a08a5894ba chore(deps-dev): Bump @stencil/sass from 3.0.4 to 3.0.5 in /core (#27850)
Bumps [@stencil/sass](https://github.com/ionic-team/stencil-sass) from
3.0.4 to 3.0.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ionic-team/stencil-sass/releases"><code>@​stencil/sass</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v3.0.5</h2>
<h2>What's Changed</h2>
<h3>Bug Fixes</h3>
<ul>
<li>fix(utils): only run plugin for sass files by <a
href="https://github.com/rwaskiewicz"><code>@​rwaskiewicz</code></a> in
<a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/361">ionic-team/stencil-sass#361</a></li>
</ul>
<h3>Chores</h3>
<ul>
<li>chore(package): add engines to package.json by <a
href="https://github.com/rwaskiewicz"><code>@​rwaskiewicz</code></a> in
<a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/337">ionic-team/stencil-sass#337</a></li>
<li>chore(repo): remove dependabot by <a
href="https://github.com/rwaskiewicz"><code>@​rwaskiewicz</code></a> in
<a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/332">ionic-team/stencil-sass#332</a></li>
<li>Configure Renovate by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/330">ionic-team/stencil-sass#330</a></li>
<li>chore: replace stencil slack with discord channel by <a
href="https://github.com/sean-perkins"><code>@​sean-perkins</code></a>
in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/349">ionic-team/stencil-sass#349</a></li>
<li>chore(repo): update ci workflow post-stencil v4 by <a
href="https://github.com/rwaskiewicz"><code>@​rwaskiewicz</code></a> in
<a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/355">ionic-team/stencil-sass#355</a></li>
<li>chore(ci): don't fail fast for build job by <a
href="https://github.com/rwaskiewicz"><code>@​rwaskiewicz</code></a> in
<a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/363">ionic-team/stencil-sass#363</a></li>
<li>chore(repo): ignore .tgz files by <a
href="https://github.com/rwaskiewicz"><code>@​rwaskiewicz</code></a> in
<a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/362">ionic-team/stencil-sass#362</a></li>
</ul>
<h3>Dependency Updates</h3>
<p><code>@ionic/prettier-config</code></p>
<ul>
<li>chore(deps): update dependency <code>@​ionic/prettier-config</code>
to v3.1.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/371">ionic-team/stencil-sass#371</a></li>
<li>chore(deps): update dependency <code>@​ionic/prettier-config</code>
to v4 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/373">ionic-team/stencil-sass#373</a></li>
</ul>
<p><code>@stencil/core</code></p>
<ul>
<li>chore(deps-dev): bump <code>@​stencil/core</code> from 3.3.0 to
3.3.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/328">ionic-team/stencil-sass#328</a></li>
<li>chore(deps-dev): bump <code>@​stencil/core</code> from 3.3.1 to
3.4.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/344">ionic-team/stencil-sass#344</a></li>
<li>chore(deps): update dependency <code>@​stencil/core</code> to v3.4.1
by <a href="https://github.com/renovate"><code>@​renovate</code></a> in
<a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/354">ionic-team/stencil-sass#354</a></li>
<li>chore(deps): update dependency <code>@​stencil/core</code> to v4 by
<a href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/360">ionic-team/stencil-sass#360</a></li>
</ul>
<p><code>@types/node</code></p>
<ul>
<li>chore(deps-dev): bump <code>@​types/node</code> from 20.2.5 to
20.3.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/340">ionic-team/stencil-sass#340</a></li>
<li>chore(deps-dev): bump <code>@​types/node</code> from 20.3.0 to
20.3.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/343">ionic-team/stencil-sass#343</a></li>
<li>chore(deps): update dependency <code>@​types/node</code> to v20.3.2
by <a href="https://github.com/renovate"><code>@​renovate</code></a> in
<a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/359">ionic-team/stencil-sass#359</a></li>
<li>chore(deps): update dependency <code>@​types/node</code> to v20.3.3
by <a href="https://github.com/renovate"><code>@​renovate</code></a> in
<a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/365">ionic-team/stencil-sass#365</a></li>
</ul>
<p><code>actions/checkout</code></p>
<ul>
<li>chore(deps): bump actions/checkout from 3.5.2 to 3.5.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/335">ionic-team/stencil-sass#335</a></li>
</ul>
<p><code>actions/setup-node</code></p>
<ul>
<li>chore(deps): update actions/setup-node action to v3.7.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/367">ionic-team/stencil-sass#367</a></li>
</ul>
<p><code>jest</code></p>
<ul>
<li>chore(deps): update jest to v29 (major) by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/352">ionic-team/stencil-sass#352</a></li>
<li>chore(deps): update dependency jest to v29.6.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/368">ionic-team/stencil-sass#368</a></li>
</ul>
<p><code>node</code></p>
<ul>
<li>chore(deps): update node.js to v20.3.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/353">ionic-team/stencil-sass#353</a></li>
<li>chore(deps): update node.js to v20.4.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/369">ionic-team/stencil-sass#369</a></li>
<li>chore(deps): update node.js to v20.5.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/ionic-team/stencil-sass/pull/375">ionic-team/stencil-sass#375</a></li>
</ul>
<p><code>np</code></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c400e88fd0"><code>c400e88</code></a>
3.0.5</li>
<li><a
href="965c6a3c0e"><code>965c6a3</code></a>
chore(deps): update node.js to v20.5.0 (<a
href="https://redirect.github.com/ionic-team/stencil-sass/issues/375">#375</a>)</li>
<li><a
href="53ca4c57d9"><code>53ca4c5</code></a>
chore(deps): update dependency terser to v5.19.1 (<a
href="https://redirect.github.com/ionic-team/stencil-sass/issues/374">#374</a>)</li>
<li><a
href="c6d78af154"><code>c6d78af</code></a>
chore(deps): update dependency <code>@​ionic/prettier-config</code> to
v4 (<a
href="https://redirect.github.com/ionic-team/stencil-sass/issues/373">#373</a>)</li>
<li><a
href="d37a20caec"><code>d37a20c</code></a>
chore(deps): update dependency terser to v5.19.0 (<a
href="https://redirect.github.com/ionic-team/stencil-sass/issues/372">#372</a>)</li>
<li><a
href="3a6098a434"><code>3a6098a</code></a>
chore(deps): update dependency prettier to v3 (<a
href="https://redirect.github.com/ionic-team/stencil-sass/issues/370">#370</a>)</li>
<li><a
href="0063520bcf"><code>0063520</code></a>
chore(deps): update dependency <code>@​ionic/prettier-config</code> to
v3.1.0 (<a
href="https://redirect.github.com/ionic-team/stencil-sass/issues/371">#371</a>)</li>
<li><a
href="76c367d64f"><code>76c367d</code></a>
fix(utils): only run plugin for sass files (<a
href="https://redirect.github.com/ionic-team/stencil-sass/issues/361">#361</a>)</li>
<li><a
href="8d7cbc6c70"><code>8d7cbc6</code></a>
chore(repo): ignore .tgz files (<a
href="https://redirect.github.com/ionic-team/stencil-sass/issues/362">#362</a>)</li>
<li><a
href="efb2efcb4f"><code>efb2efc</code></a>
chore(ci): don't fail fast for build job (<a
href="https://redirect.github.com/ionic-team/stencil-sass/issues/363">#363</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/ionic-team/stencil-sass/compare/v3.0.4...v3.0.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@stencil/sass&package-manager=npm_and_yarn&previous-version=3.0.4&new-version=3.0.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-27 16:23:13 +00:00
Liam DeBeasi
0b8f1bc7dd fix(item-options): use correct safe area padding (#27853)
Issue number: Internal

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Item sliding options in the "start" slot use the "left" safe area
padding on the end edge. This causes the padding to be added in the
wrong place.

During development I also discovered that the RTL padding was wrong for
both start and end options.

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

LTR:

- `side="start"` options set "left" safe area padding on left edge of
first child
- `side="end"` options set "right" safe area padding on right edge of
last child

RTL:

- `side="start"` options set "right" safe area padding on right edge of
first child
- `side="end"` options set "left" safe area padding on the left edge of
the last child

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

| side prop/text direction | `main` | `branch` |
| - | - | - |
| start/LTR |
![start-ltr](https://github.com/ionic-team/ionic-framework/assets/2721089/36fd01c7-0907-4933-b8be-f0193f5652f3)
|
![start-ltr](https://github.com/ionic-team/ionic-framework/assets/2721089/0949fd0e-22a9-4101-bfff-07062b69fdd5)
|
| end/LTR |
![end-ltr](https://github.com/ionic-team/ionic-framework/assets/2721089/1fcc1440-e2ad-4935-9bb5-cce6d7f466ab)
|
![end-ltr](https://github.com/ionic-team/ionic-framework/assets/2721089/33c520d3-2bee-4235-a491-93a2c2d1fab5)
|
| start/RTL |
![start-rtl](https://github.com/ionic-team/ionic-framework/assets/2721089/ce66cc00-019a-4b63-b0d3-3ae094ae53a0)
|
![start-rtl](https://github.com/ionic-team/ionic-framework/assets/2721089/c655cfe7-4b22-41fb-8910-7b7055f87f9b)
|
| end/RTL |
![end-rtl](https://github.com/ionic-team/ionic-framework/assets/2721089/2d9f6810-80c3-479c-90d9-c4e0c55ad705)
|
![end-rtl](https://github.com/ionic-team/ionic-framework/assets/2721089/745a499b-bb22-40d4-a74f-55232c2af102)
|
2023-07-26 16:24:14 +00:00
Liam DeBeasi
bd71373f1a merge release-7.2.1
Release 7.2.1
2023-07-26 12:23:52 -04:00
ionitron
960adbbc5c chore(): update package lock files 2023-07-26 15:54:44 +00:00
ionitron
db29871654 v7.2.1 2023-07-26 15:54:29 +00:00
dependabot[bot]
e9ee96a443 chore(deps-dev): Bump @playwright/test from 1.36.1 to 1.36.2 in /core (#27857)
Bumps [@playwright/test](https://github.com/Microsoft/playwright) from
1.36.1 to 1.36.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Microsoft/playwright/releases"><code>@​playwright/test</code>'s
releases</a>.</em></p>
<blockquote>
<h2>1.36.2</h2>
<h3>Highlights</h3>
<p><a
href="https://redirect.github.com/microsoft/playwright/issues/24316">microsoft/playwright#24316</a>
- [REGRESSION] Character classes are not working in globs in 1.36</p>
<h3>Browser Versions</h3>
<ul>
<li>Chromium 115.0.5790.75</li>
<li>Mozilla Firefox 115.0</li>
<li>WebKit 17.0</li>
</ul>
<p>This version was also tested against the following stable
channels:</p>
<ul>
<li>Google Chrome 114</li>
<li>Microsoft Edge 114</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1f983acac0"><code>1f983ac</code></a>
chore: mark 1.36.2 (<a
href="https://redirect.github.com/Microsoft/playwright/issues/24379">#24379</a>)</li>
<li><a
href="40e2096fbc"><code>40e2096</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/24371">#24371</a>):
fix: properly handle character sets in globs</li>
<li>See full diff in <a
href="https://github.com/Microsoft/playwright/compare/v1.36.1...v1.36.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@playwright/test&package-manager=npm_and_yarn&previous-version=1.36.1&new-version=1.36.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-26 13:11:41 +00:00
Liam DeBeasi
38626d9680 fix(modal): body background is reset with inline card modals (#27835)
Issue number: resolves #27830

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Card modals set the body background to `black` to match iOS. This color
should be removed once the final card modal has been closed. When modals
were updated to work inline, the code that removed the background color
was never updated to account for this. As a result, opening multiple
inline card modals never removes the background color because there are
always >1 modals in the DOM.

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

- The card modal now queries for _visible_ modals in the DOM to
determine if it should remove the background color.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

Dev-build: `7.2.1-dev.11689879279.14e28634`
2023-07-20 19:13:02 +00:00
Liam DeBeasi
6e4919caff fix(item-sliding): buttons are not interactive on close (#27829)
Issue number: resolves #22722

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Item Sliding Options are not disabled until after a 600ms timeout. This
timeout exists to allow the close transition to complete. Without the
timeout, the item sliding options disappear without a transition. I
explored waiting for the `transitionend` event instead of the
`setTimeout`, but the bug persisted.

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

- If an item sliding is closing then we add a class to the host. This
class disables pointer events on all `ion-item-options` children so the
buttons cannot be accidentally tapped while closing. This class is then
removed after the 600ms timeout.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->
2023-07-20 18:27:45 +00:00
dependabot[bot]
5122ced9e1 chore(deps-dev): Bump @capacitor/core from 5.2.1 to 5.2.2 in /core (#27832)
Bumps [@capacitor/core](https://github.com/ionic-team/capacitor) from
5.2.1 to 5.2.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ionic-team/capacitor/releases"><code>@​capacitor/core</code>'s
releases</a>.</em></p>
<blockquote>
<h2>5.2.2</h2>
<h2><a
href="https://github.com/ionic-team/capacitor/compare/5.2.1...5.2.2">5.2.2</a>
(2023-07-19)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>add http method to prototype.open (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6740">#6740</a>)
(<a
href="1fd2d8762f">1fd2d87</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ionic-team/capacitor/blob/main/CHANGELOG.md"><code>@​capacitor/core</code>'s
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/ionic-team/capacitor/compare/5.2.1...5.2.2">5.2.2</a>
(2023-07-19)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>add http method to prototype.open (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6740">#6740</a>)
(<a
href="1fd2d8762f">1fd2d87</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f378edae9e"><code>f378eda</code></a>
Release 5.2.2</li>
<li><a
href="1fd2d8762f"><code>1fd2d87</code></a>
fix: add http method to prototype.open (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6740">#6740</a>)</li>
<li><a
href="67c7f6e7bd"><code>67c7f6e</code></a>
chore: Improve bot message for requesting reproductions (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6735">#6735</a>)</li>
<li>See full diff in <a
href="https://github.com/ionic-team/capacitor/compare/5.2.1...5.2.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@capacitor/core&package-manager=npm_and_yarn&previous-version=5.2.1&new-version=5.2.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-20 15:40:09 +00:00
Liam DeBeasi
3c794d25d6 merge feature-7.2
Feature 7.2
2023-07-19 14:24:54 -04:00
Liam DeBeasi
9c799a6eea merge release-7.2
Release 7.2
2023-07-19 13:41:06 -04:00
ionitron
08cc3d93ae chore(): update package lock files 2023-07-19 16:29:26 +00:00
ionitron
8661e21674 v7.2.0 2023-07-19 16:29:12 +00:00
Liam DeBeasi
a32cd57f1d chore: sync with main
chore: sync with main
2023-07-19 10:55:21 -04:00
Liam DeBeasi
ddfbc9faef Merge remote-tracking branch 'origin/main' into final-7.2-sync 2023-07-19 09:52:12 -04:00
Liam DeBeasi
c8dcf18b9b merge release-7.1.4
Release 7.1.4
2023-07-19 09:43:38 -04:00
ionitron
f18da214bc chore(): update package lock files 2023-07-19 13:08:31 +00:00
ionitron
7e174849b5 v7.1.4 2023-07-19 13:08:11 +00:00
Sean Perkins
90f41243d9 feat(angular): support binding routing data to component inputs (#27694)
Issue number: Resolves #27476

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Ionic Angular application on Angular v16 cannot use the
[`bindToComponentInputs`](https://angular.io/api/router/ExtraOptions#bindToComponentInputs)
feature to assign route parameters, query parameters, route data and
route resolve data to component inputs.

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

- Ionic Angular developers can use the option on `RouterModule.forRoot`
to enable the Angular feature for binding the route snapshot data to the
component inputs.

**Modules**
```ts
@NgModule({
  imports: [
    RouterModule.forRoot([/* your routes */], { 
      bindToComponentInputs: true // <-- enable this feature
    })
  ]
})
export class AppModule { }
```

**Standalone**

```ts
import { withComponentInputBinding } from '@angular/router';

bootstrapApplication(App, {
  providers: [
    provideRouter(routes, 
      //... other features
      withComponentInputBinding() // <-- enable this feature
    )
  ],
});
```

With this feature enabled, developers can bind route parameters, query
parameters, route data and the returned value from a resolver to input
bindings on their component.

For example, with a route configuration of:
```ts
RouterModule.forChild([
  {
    path: ':id',
    data: {
      title: 'Hello world'
    },
    resolve: {
      name: () => 'Resolved name'
    },
    loadComponent: () => import('./example-component/example.component').then(c => c.ExampleComponent)
  }
])
```
and a component configuration of:

```ts
@Component({ }) 
export class ExampleComponent {
  @Input() id?: string;
  @Input() title?: string;
  @Input() name?: string;
  @Input() query?: string;
}
```

Navigating to the component with a url of: `/2?query=searchphrase`

The following would occur:
- `id` would return `2`
- `title` would return `Hello world`
- `name` would return `Resolved name`
- `query` would return `searchphrase`

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

This PR will need to be targeted to a minor release once a design doc is
approved by the team.

Dev-build: `7.1.3-dev.11689276547.129acb40`
2023-07-18 16:26:37 -04:00
Sean Perkins
2cf1a0bcae fix(angular): menu button is enabled with Angular Universal builds (#27814)
Issue number: Resolves #27524 #22206

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

After destructive hydration from an Angular Universal build, the
`ion-menu` is disabled. This results in a few problematic behaviors:
- If used with an `ion-split-pane`, the split pane will not render with
the menu.
- If used with an `ion-menu-button`, the menu icon will not render and
the menu will not be accessible.

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

- Removes automatically disabling the `ion-menu` when in a server
environment.
- Prevents setting an `ion-menu` that no longer exists in the DOM, as an
active menu. This allows the most recent menu to be enabled when
rendered from Angular Universal builds.

Loom recording overviewing the change:
https://www.loom.com/share/5a149218adc84cc2af435fc1b1f45124?sid=249028f4-be3d-4d4a-948a-597da83be95a

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

Dev-build: `7.1.4-dev.11689625795.1d16532b`
2023-07-18 15:50:11 +00:00
dependabot[bot]
aa9ea60357 chore(deps-dev): Bump @playwright/test from 1.36.0 to 1.36.1 in /core (#27809)
Bumps [@playwright/test](https://github.com/Microsoft/playwright) from
1.36.0 to 1.36.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Microsoft/playwright/releases"><code>@​playwright/test</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v1.36.1</h2>
<h3>Highlights</h3>
<p><a
href="https://redirect.github.com/microsoft/playwright/issues/24184">microsoft/playwright#24184</a>
- [REGRESSION]: Snapshot name contains some random string after test
name when tests are run in container</p>
<h3>Browser Versions</h3>
<ul>
<li>Chromium 115.0.5790.75</li>
<li>Mozilla Firefox 115.0</li>
<li>WebKit 17.0</li>
</ul>
<p>This version was also tested against the following stable
channels:</p>
<ul>
<li>Google Chrome 114</li>
<li>Microsoft Edge 114</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4417b78552"><code>4417b78</code></a>
chore: mark 1.36.1 (<a
href="https://redirect.github.com/Microsoft/playwright/issues/24230">#24230</a>)</li>
<li><a
href="cf5900f142"><code>cf5900f</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/24213">#24213</a>):
Revert &quot;fix: do not collide with other tests when test n...</li>
<li>See full diff in <a
href="https://github.com/Microsoft/playwright/compare/v1.36.0...v1.36.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@playwright/test&package-manager=npm_and_yarn&previous-version=1.36.0&new-version=1.36.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-17 17:38:02 +00:00
dependabot[bot]
2996c853a3 chore(deps-dev): Bump @capacitor/haptics from 5.0.5 to 5.0.6 in /core (#27804)
Bumps
[@capacitor/haptics](https://github.com/ionic-team/capacitor-plugins)
from 5.0.5 to 5.0.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ionic-team/capacitor-plugins/releases"><code>@​capacitor/haptics</code>'s
releases</a>.</em></p>
<blockquote>
<h2><code>@​capacitor/haptics</code><a
href="https://github.com/5"><code>@​5</code></a>.0.6</h2>
<h2><a
href="https://github.com/ionic-team/capacitor-plugins/compare/@capacitor/haptics@5.0.5...@capacitor/haptics@5.0.6">5.0.6</a>
(2023-07-12)</h2>
<p><strong>Note:</strong> Version bump only for package
<code>@​capacitor/haptics</code></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f2564fe79f"><code>f2564fe</code></a>
chore(release): publish [skip ci]</li>
<li><a
href="d16bad6791"><code>d16bad6</code></a>
feat(filesystem): download files from server to filesystem</li>
<li><a
href="7e1911d6cd"><code>7e1911d</code></a>
fix(google-maps): Add missing listeners to removeAllMapListeners (<a
href="https://redirect.github.com/ionic-team/capacitor-plugins/issues/1672">#1672</a>)</li>
<li><a
href="798f788452"><code>798f788</code></a>
fix(push-notifications): make requestPermissions resolve if granted (<a
href="https://redirect.github.com/ionic-team/capacitor-plugins/issues/1677">#1677</a>)</li>
<li><a
href="487258940e"><code>4872589</code></a>
fix(local-notifications): make requestPermissions resolve if granted (<a
href="https://redirect.github.com/ionic-team/capacitor-plugins/issues/1678">#1678</a>)</li>
<li><a
href="94863cd60b"><code>94863cd</code></a>
chore: grant packages-write to workflows (<a
href="https://redirect.github.com/ionic-team/capacitor-plugins/issues/1671">#1671</a>)</li>
<li>See full diff in <a
href="https://github.com/ionic-team/capacitor-plugins/compare/@capacitor/haptics@5.0.5...@capacitor/haptics@5.0.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@capacitor/haptics&package-manager=npm_and_yarn&previous-version=5.0.5&new-version=5.0.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-17 15:53:45 +00:00
Nicolas Sandron
71310372c9 feat(searchbar): add name property (#27737)
resolves #27675
2023-07-17 11:43:00 -04:00
dependabot[bot]
f7b0706f19 chore(deps-dev): Bump @capacitor/keyboard from 5.0.5 to 5.0.6 in /core (#27802)
Bumps
[@capacitor/keyboard](https://github.com/ionic-team/capacitor-plugins)
from 5.0.5 to 5.0.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ionic-team/capacitor-plugins/releases"><code>@​capacitor/keyboard</code>'s
releases</a>.</em></p>
<blockquote>
<h2><code>@​capacitor/keyboard</code><a
href="https://github.com/5"><code>@​5</code></a>.0.6</h2>
<h2><a
href="https://github.com/ionic-team/capacitor-plugins/compare/@capacitor/keyboard@5.0.5...@capacitor/keyboard@5.0.6">5.0.6</a>
(2023-07-12)</h2>
<p><strong>Note:</strong> Version bump only for package
<code>@​capacitor/keyboard</code></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f2564fe79f"><code>f2564fe</code></a>
chore(release): publish [skip ci]</li>
<li><a
href="d16bad6791"><code>d16bad6</code></a>
feat(filesystem): download files from server to filesystem</li>
<li><a
href="7e1911d6cd"><code>7e1911d</code></a>
fix(google-maps): Add missing listeners to removeAllMapListeners (<a
href="https://redirect.github.com/ionic-team/capacitor-plugins/issues/1672">#1672</a>)</li>
<li><a
href="798f788452"><code>798f788</code></a>
fix(push-notifications): make requestPermissions resolve if granted (<a
href="https://redirect.github.com/ionic-team/capacitor-plugins/issues/1677">#1677</a>)</li>
<li><a
href="487258940e"><code>4872589</code></a>
fix(local-notifications): make requestPermissions resolve if granted (<a
href="https://redirect.github.com/ionic-team/capacitor-plugins/issues/1678">#1678</a>)</li>
<li><a
href="94863cd60b"><code>94863cd</code></a>
chore: grant packages-write to workflows (<a
href="https://redirect.github.com/ionic-team/capacitor-plugins/issues/1671">#1671</a>)</li>
<li>See full diff in <a
href="https://github.com/ionic-team/capacitor-plugins/compare/@capacitor/keyboard@5.0.5...@capacitor/keyboard@5.0.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@capacitor/keyboard&package-manager=npm_and_yarn&previous-version=5.0.5&new-version=5.0.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-17 15:21:28 +00:00
dependabot[bot]
721fc6fd9a chore(deps-dev): Bump @capacitor/core from 5.1.1 to 5.2.1 in /core (#27805)
Bumps [@capacitor/core](https://github.com/ionic-team/capacitor) from
5.1.1 to 5.2.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ionic-team/capacitor/releases"><code>@​capacitor/core</code>'s
releases</a>.</em></p>
<blockquote>
<h2>5.2.1</h2>
<h2><a
href="https://github.com/ionic-team/capacitor/compare/5.2.0...5.2.1">5.2.1</a>
(2023-07-13)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>allow single parameter on setRequestBody (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6728">#6728</a>)
(<a
href="5343bdb60d">5343bdb</a>)</li>
</ul>
<h2>5.2.0</h2>
<h1><a
href="https://github.com/ionic-team/capacitor/compare/5.1.1...5.2.0">5.2.0</a>
(2023-07-12)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>cli:</strong> make migrate not error if there are no
dependencies (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6707">#6707</a>)
(<a
href="25ca83a8a7">25ca83a</a>)</li>
<li><strong>cookies:</strong> sanitize url before retrieving/setting
cookies (<a
href="ca4063471f">ca40634</a>)</li>
<li><strong>http:</strong> fire events in correct order when using xhr
(<a
href="5ed3617875">5ed3617</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>http:</strong> support for FormData requests (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6708">#6708</a>)
(<a
href="849c564582">849c564</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ionic-team/capacitor/blob/main/CHANGELOG.md"><code>@​capacitor/core</code>'s
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/ionic-team/capacitor/compare/5.2.0...5.2.1">5.2.1</a>
(2023-07-13)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>allow single parameter on setRequestBody (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6728">#6728</a>)
(<a
href="5343bdb60d">5343bdb</a>)</li>
</ul>
<h1><a
href="https://github.com/ionic-team/capacitor/compare/5.1.1...5.2.0">5.2.0</a>
(2023-07-12)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>cli:</strong> make migrate not error if there are no
dependencies (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6707">#6707</a>)
(<a
href="25ca83a8a7">25ca83a</a>)</li>
<li><strong>cookies:</strong> sanitize url before retrieving/setting
cookies (<a
href="ca4063471f">ca40634</a>)</li>
<li><strong>http:</strong> fire events in correct order when using xhr
(<a
href="5ed3617875">5ed3617</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>http:</strong> support for FormData requests (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6708">#6708</a>)
(<a
href="849c564582">849c564</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ae2b4ce222"><code>ae2b4ce</code></a>
Release 5.2.1</li>
<li><a
href="5343bdb60d"><code>5343bdb</code></a>
fix: allow single parameter on setRequestBody (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6728">#6728</a>)</li>
<li><a
href="4fdbe6ee84"><code>4fdbe6e</code></a>
chore: run fmt (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6729">#6729</a>)</li>
<li><a
href="910c54eb50"><code>910c54e</code></a>
chore(readme): add new contributor (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6723">#6723</a>)</li>
<li><a
href="6047394d34"><code>6047394</code></a>
chore(readme): add new contributor (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6724">#6724</a>)</li>
<li><a
href="c0eb9cf427"><code>c0eb9cf</code></a>
Release 5.2.0</li>
<li><a
href="5ed3617875"><code>5ed3617</code></a>
fix(http): fire events in correct order when using xhr</li>
<li><a
href="25ca83a8a7"><code>25ca83a</code></a>
fix(cli): make migrate not error if there are no dependencies (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6707">#6707</a>)</li>
<li><a
href="427da4296c"><code>427da42</code></a>
fix missing \r\n after Content-Disposition in iOS (<a
href="https://redirect.github.com/ionic-team/capacitor/issues/6722">#6722</a>)</li>
<li><a
href="ca4063471f"><code>ca40634</code></a>
fix(cookies): sanitize url before retrieving/setting cookies</li>
<li>Additional commits viewable in <a
href="https://github.com/ionic-team/capacitor/compare/5.1.1...5.2.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@capacitor/core&package-manager=npm_and_yarn&previous-version=5.1.1&new-version=5.2.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-14 20:09:56 +00:00
dependabot[bot]
d5f4e0a498 chore(deps-dev): Bump @capacitor/status-bar from 5.0.5 to 5.0.6 in /core (#27803)
Bumps
[@capacitor/status-bar](https://github.com/ionic-team/capacitor-plugins)
from 5.0.5 to 5.0.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ionic-team/capacitor-plugins/releases"><code>@​capacitor/status-bar</code>'s
releases</a>.</em></p>
<blockquote>
<h2><code>@​capacitor/status-bar</code><a
href="https://github.com/5"><code>@​5</code></a>.0.6</h2>
<h2><a
href="https://github.com/ionic-team/capacitor-plugins/compare/@capacitor/status-bar@5.0.5...@capacitor/status-bar@5.0.6">5.0.6</a>
(2023-07-12)</h2>
<p><strong>Note:</strong> Version bump only for package
<code>@​capacitor/status-bar</code></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f2564fe79f"><code>f2564fe</code></a>
chore(release): publish [skip ci]</li>
<li><a
href="d16bad6791"><code>d16bad6</code></a>
feat(filesystem): download files from server to filesystem</li>
<li><a
href="7e1911d6cd"><code>7e1911d</code></a>
fix(google-maps): Add missing listeners to removeAllMapListeners (<a
href="https://redirect.github.com/ionic-team/capacitor-plugins/issues/1672">#1672</a>)</li>
<li><a
href="798f788452"><code>798f788</code></a>
fix(push-notifications): make requestPermissions resolve if granted (<a
href="https://redirect.github.com/ionic-team/capacitor-plugins/issues/1677">#1677</a>)</li>
<li><a
href="487258940e"><code>4872589</code></a>
fix(local-notifications): make requestPermissions resolve if granted (<a
href="https://redirect.github.com/ionic-team/capacitor-plugins/issues/1678">#1678</a>)</li>
<li><a
href="94863cd60b"><code>94863cd</code></a>
chore: grant packages-write to workflows (<a
href="https://redirect.github.com/ionic-team/capacitor-plugins/issues/1671">#1671</a>)</li>
<li>See full diff in <a
href="https://github.com/ionic-team/capacitor-plugins/compare/@capacitor/status-bar@5.0.5...@capacitor/status-bar@5.0.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@capacitor/status-bar&package-manager=npm_and_yarn&previous-version=5.0.5&new-version=5.0.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-14 19:27:31 +00:00
Maria Hutt
b78af7598f fix(button): submit form when pressing enter key (#27790)
Issue number: resolves #19368 

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

## What is the current behavior?

The form submits when clicking on the `ion-button`. However, users
cannot submit the form when focused on a form element and pressing the
`enter` button. This does not follow the behavior of the native button
on a form.

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

- Form now submits when a form element is focused and the `enter` button
is pressed.
  - It also submits regardless of the amount of form elements present.
- Form will not submit if the `ion-button` is disabled.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

N/A
2023-07-14 17:24:53 +00:00
Sean Perkins
16c77ccdc8 refactor: use capacitor types for native plugins (#27755)
Issue number: Internal

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Ionic currently detects and uses Capacitor APIs for different plugins
(haptics, status bar and keyboard). This implementation does not have
type safety and can result in unexpected behaviors.

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

- Adds `@capacitor/core`, `@capacitor/keyboard`, `@capacitor/haptics`
and `@capacitor/status-bar` as dev dependencies. These should _only_ be
used with `import type { }`.
- Refactors the plugin usages to be typed against the plugin packages,
while using a duplicate enum when needing a value. This allows us to not
bundle the capacitor plugins with Ionic Framework.
- Introduces a `getCapacitor()` function for interacting with the
`window.Capacitor` object through a typed object.

**How does it work?**

The idea is we want the type safety from the Capacitor packages, without
directly bundling that source code within Ionic Framework. This means we
use the Capacitor deps where a type is needed, but clone any enums where
a value is referenced. If a Capacitor dep changes the supported values,
Typescript will fail to compile and that will signal to use to update
our enum values to match any changes.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

Dev-build: `7.1.2-dev.11688696027.1c4d4ad1`

Tested against a demo app for some of the core behavior:
https://github.com/sean-perkins/capacitor-ionic-plugins-demo
2023-07-14 15:27:28 +00:00
Liam DeBeasi
66584b03d0 fix: safari no longer adjusts text in landscape (#27787)
Issue number: resolves #27782

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Ionic uses text-size-adjust to prevent browsers from resizing text in
landscape mode in order to match native app behavior. However, WebKit
only supports `-webkit-text-size-adjust`, so this fix never applied to
iOS devices.

https://caniuse.com/?search=text-size-adjust

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

- Add `-webkit-text-size-adjust` where we use `text-size-adjust`

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

**Landscape**

| main | branch |
| - | - |
|
![IMG_0046](https://github.com/ionic-team/ionic-framework/assets/2721089/d719f495-c051-4f64-a6fa-f17435c68cb5)
|
![IMG_0048](https://github.com/ionic-team/ionic-framework/assets/2721089/7a0b5f45-b72a-466d-8e00-846de2572e49)
|

**Portrait** (Should be no changes)

| main | branch |
| - | - |
|
![IMG_0045](https://github.com/ionic-team/ionic-framework/assets/2721089/a2324f9f-efcc-4c75-8359-2441f93ceadc)
|
![IMG_0047](https://github.com/ionic-team/ionic-framework/assets/2721089/64566645-5778-435f-a511-5fe7234c7f65)
|
2023-07-13 17:26:13 +00:00
Amanda Johnston
da2fc0a256 chore(toggle): rename item test to use correct component name (#27789)
Issue number: N/A

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

The `item` test for `ion-toggle` uses `label` instead of `toggle` in the
file name.

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

Test and corresponding screenshots folder renamed.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->
2023-07-13 14:56:28 +00:00
Sean Perkins
64b75f27ac Merge pull request #27791 from ionic-team/sp/sync-7.2-with-main-7-12
chore: sync with main
2023-07-12 22:32:40 -04:00
Sean Perkins
03c830e9e9 Merge remote-tracking branch 'origin/main' into sp/sync-7.2-with-main-7-12 2023-07-12 22:09:54 -04:00
Liam DeBeasi
2cb7013954 fix(textarea): stacked/floating textarea size is correct on safari (#27766)
Issue number: resolves #27345

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

WebKit has a bug where children of grid elements placed inside flex
elements have the wrong size. This is causing textarea's dimensions to
spill out of its grid container. Grid is used for autogrow
functionality, and the grid itself is placed inside `.label-wrapper`
which uses flexbox for aligning the label and control.

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

- Adds `grid-auto-rows: 100%` to avoid the WebKit bug which specifies
the size of implicitly-created grid rows.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->


Dev build: `7.1.3-dev.11688748118.18ff9e7d`
WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=256781

---------

Co-authored-by: ionitron <hi@ionicframework.com>
2023-07-12 20:35:36 +00:00
Amanda Johnston
35f0ec581a fix(radio, checkbox, toggle): add top and bottom margins when in ion-item (#27788)
Issue number: Resolves #27498

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

When `ion-radio`, `ion-checkbox`, or `ion-toggle` is used within
`ion-item`, top and bottom margins are not added to the label, while
they are present when using the legacy syntax. We didn't catch this
because the issue is only visible when using a label that breaks onto
more than one line; otherwise, the height of the item exceeds what the
margins would've added.

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

Margins added. Values were taken from `ion-item` styles
[here](096d9cc931/core/src/components/item/item.ios.scss (L203-L206))
and
[here](096d9cc931/core/src/components/item/item.md.scss (L298-L301)),
which no longer get applied because the `ion-label` is nested in an
additional shadow component. Note that left/right margins are already
included in the modern syntax labels.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

This PR is a combination of the following:
- https://github.com/ionic-team/ionic-framework/pull/27771
- https://github.com/ionic-team/ionic-framework/pull/27783
- https://github.com/ionic-team/ionic-framework/pull/27784

---------

Co-authored-by: ionitron <hi@ionicframework.com>
Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
2023-07-12 20:10:35 +00:00
dependabot[bot]
3bd1d7e1e5 chore(deps-dev): Bump @playwright/test from 1.35.1 to 1.36.0 in /core (#27778)
Bumps [@playwright/test](https://github.com/Microsoft/playwright) from
1.35.1 to 1.36.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Microsoft/playwright/releases"><code>@​playwright/test</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v1.36.0</h2>
<h3>Highlights</h3>
<p>🏝️ Summer maintenance release.</p>
<h3>Browser Versions</h3>
<ul>
<li>Chromium 115.0.5790.75</li>
<li>Mozilla Firefox 115.0</li>
<li>WebKit 17.0</li>
</ul>
<p>This version was also tested against the following stable
channels:</p>
<ul>
<li>Google Chrome 114</li>
<li>Microsoft Edge 114</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="74ec8c243a"><code>74ec8c2</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/24145">#24145</a>):
fix(snapshots): match resources by method (<a
href="https://redirect.github.com/Microsoft/playwright/issues/24147">#24147</a>)</li>
<li><a
href="1e8e8b4b02"><code>1e8e8b4</code></a>
chore: mark 1.36.0 (<a
href="https://redirect.github.com/Microsoft/playwright/issues/24129">#24129</a>)</li>
<li><a
href="6ee70e2ce3"><code>6ee70e2</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/24135">#24135</a>):
docs: add release notes for 1.36</li>
<li><a
href="e9e6cf551f"><code>e9e6cf5</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/24106">#24106</a>):
fix(trace): do not allow after w/o before</li>
<li><a
href="b7dcc2bb16"><code>b7dcc2b</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/24127">#24127</a>):
fix: do not create empty directories for successful snap...</li>
<li><a
href="52f594e0eb"><code>52f594e</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/24128">#24128</a>):
chore: update WebKit browser version to 17.0</li>
<li><a
href="9bca9f1b4f"><code>9bca9f1</code></a>
feat(chromium): roll to r1071 (<a
href="https://redirect.github.com/Microsoft/playwright/issues/24098">#24098</a>)</li>
<li><a
href="90c92c5724"><code>90c92c5</code></a>
feat(firefox): roll to r1419 (<a
href="https://redirect.github.com/Microsoft/playwright/issues/24091">#24091</a>)</li>
<li><a
href="b9e68e22e0"><code>b9e68e2</code></a>
feat: support Chromium installation on Debian 12 (<a
href="https://redirect.github.com/Microsoft/playwright/issues/24090">#24090</a>)</li>
<li><a
href="9af2b518f2"><code>9af2b51</code></a>
fix: exclude <code>tracesDir</code> option from
<code>launchOptions</code> fixture (<a
href="https://redirect.github.com/Microsoft/playwright/issues/24086">#24086</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/Microsoft/playwright/compare/v1.35.1...v1.36.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@playwright/test&package-manager=npm_and_yarn&previous-version=1.35.1&new-version=1.36.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: ionitron <hi@ionicframework.com>
2023-07-12 19:01:21 +00:00
Liam DeBeasi
c1cd9a54f2 merge release-7.1.3
Release 7.1.3
2023-07-12 10:26:31 -04:00
ionitron
d6c812f785 chore(): update package lock files 2023-07-12 12:54:58 +00:00
ionitron
0c9392abd6 v7.1.3 2023-07-12 12:54:40 +00:00
Liam DeBeasi
82c568b8c8 fix(overlays): first button is not focused on backdrop tap (#27774)
Issue number: resolves #27773

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

The focus trap util for scoped components moves focus back to the first
focusable element inside of `.ion-overlay-wrapper` when clicking the
backdrop. The reason for this is it (incorrectly) assumes that all
focusable elements will be children of `.ion-overlay-wrapper`. This is
true **except** for `ion-backdrop` which overlays the entire screen and
therefore cannot be a child of `.ion-overlay-wrapper`.

This does not impact modal and popover as the shadow focus trap utility
makes use of the Shadow Root as the parent for all focusable elements,
not `.ion-overlay-wrapper`.

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

- Scoped focus trap util no longer moves focus if the `ion-backdrop` was
focused.

I opted to explicitly account for `ion-backdrop` rather than come up
with some new private API. As far as I can tell `ion-backdrop` is the
only exception to this focus trapping rule with `.ion-overlay-wrapper`.
Open to alternative ideas though.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

Dev build: `7.1.3-dev.11689085446.181c2143`
2023-07-11 16:08:27 +00:00
Liam DeBeasi
e7353946a1 test(picker-internal): re-enable basic screenshot test (#27768)
Issue number: N/A

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Test was skipped due to flakiness

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

- Re-enabled test
- Removes directions tests because behavior does not vary across text
directions
- Updated screenshot to screenshot individual picker instead of the
entire page

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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: ionitron <hi@ionicframework.com>
2023-07-10 18:42:49 +00:00
Liam DeBeasi
096d9cc931 test(overlays): migrate to pageUtils and re-enable (#27769)
Issue number: N/A

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Focus trapping tests were disabled because they were flaky

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

- Re-enabled the test 
- Migrated the test to use the pageUtils fixture which seems to be more
stable with keyboard focus than the built-in page.keyboard commands

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->
2023-07-07 20:46:25 +00:00
Brandy Carney
6fe716fd13 feat(button): allow button to increase in height when text wraps (#27547)
Issue number: N/A - this does not completely resolve an issue but it
enables users to opt-in to having text wrap in a button by setting a
minimum height

---------

## What is the current behavior?
The current behavior when text is really long in a button is:
- Default buttons expand in width until part of the text (and button) is
off the screen and not in the visible viewport
- Block and full buttons horizontally align the text in the center and
overflow it on both sides (but the overflow is not visible so the text
is cut off at the beginning and end)

## What is the new behavior?
Allow the button height to increase when text wraps and add some padding
so that buttons with wrapped text still look nice. This does **NOT**
wrap the text in a button by default. That will be done in FW-4599.

- Removed `text-overflow: ellipsis` since this does not have any effect
- Changes `height` setting to `min-height` on all button types (small,
large, default) and buttons inside of an item, toolbar or list header
- Increases `padding-top` and `padding-bottom` on the buttons so that
overflowing buttons have padding around them
- Changes `.button-native` display property from `block` to `flex` in
order for anchor tags (`<ion-button href="#">` to align their text
vertically
- Sets `flex-shrink: 0` on slotted `start`/`end` elements to prevent
icons (and other elements) from shrinking to make room for the text
- Adds e2e test for button wrapping including the different types of
buttons that were changed by this PR
- Adds `ion-text-wrap` to the `ion-button` elements used in this test to
verify the height / padding changes are working as desired (to be
removed with FW-4599)
- Screenshot diffs are in the following PR:
https://github.com/ionic-team/ionic-framework/pull/27561

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

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


## Other information

This does **NOT** wrap the text in a button by default. It only enables
buttons to look nicer and auto adjust their height/padding when the text
is wrapping.

After internal discussion we decided that automatically making the text
wrap inside of a button may have undesired effects on existing apps. For
example, if someone has a button inside of a list header with a long
label, the button will now wrap if it has a space or dash in the text
content.

Developers should set `ion-text-wrap` on the `ion-button` to opt-in to
text wrapping in a button, and this will become the default as part of
FW-4599 (the next major release).

---------

Co-authored-by: ionitron <hi@ionicframework.com>
Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
2023-07-07 15:04:52 -04:00
Liam DeBeasi
2085025644 fix: avoid unresolved import warning on stencil apps (#27765)
Issue number: resolves #27762

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Stencil 3.4.1 regressed the tsconfig alias path transpilation. This is
fixed in 4.0.0 though.

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

- Downgrade to Stencil 3.4.0. Stencil 4.0 has breaking changes, so I'd
like to wait on upgrading until we can work through any of the changes
that impact Ionic.

This reverts commit 9793b3c0a0.


## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

Stencil issue: https://github.com/ionic-team/stencil/issues/4550
2023-07-07 14:14:17 +00:00
Liam DeBeasi
70e7faf6f6 merge release-7.1.2
Release 7.1.2
2023-07-06 15:13:40 -04:00
ionitron
61486d97f7 chore(): update package lock files 2023-07-06 16:40:18 +00:00
ionitron
20331458de v7.1.2 2023-07-06 16:40:00 +00:00
Liam DeBeasi
4906d02e08 test(tab-button): add focus state screenshots (#27731)
Issue number: N/A

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

We do not have screenshots that verify the focus states are being
applied correctly.

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

- Added screenshot tests to verify focus states are being captured for
non-translucent tab bars (iOS and MD) as well as translucent tab bars
(iOS only)

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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: ionitron <hi@ionicframework.com>
2023-07-06 16:03:12 +00:00
Liam DeBeasi
db9a0010df fix(back-button): show correct background on focus + hover with ios (#27723)
Issue number: resolves #27722

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

The back button on iOS uses the same background and foreground colors on
hover + focus making it impossible to read

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

- Back button uses a transparent background color on hover + focus to
match the behavior of `ion-button`

| `main` | branch |
| - | - |
| <video
src="https://github.com/ionic-team/ionic-framework/assets/2721089/e8bed785-66d7-40cd-beb3-54636c7fc59a"></video>
| <video
src="https://github.com/ionic-team/ionic-framework/assets/2721089/2c4a9a5c-f1a9-4a83-879f-8b0e9ce18558"></video>
|

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->
2023-07-06 16:00:48 +00:00
Liam DeBeasi
32bc33ed28 refactor(angular): move to packages directory (#27719)
Issue number: N/A

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

The `angular` directory sits at the root of the project instead of in
`packages` with all the other JS Framework integrations. This does not
cause any functional issues with Ionic, but it is confusing since
integrations are not in a consistent place.

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

- Moves the `angular` directory to `packages/angular`

Note: Most files should remain unchanged. The only files I changed are
the files that had direct paths to the old `angular` directory:

1. Removes the `angular` path in `lerna.json`. This is now covered by
`packages/*`
2. Updated the angular file path in `.gitignore`
3. Updates the path to the angular package in `stencil.config.ts` for
the Angular Output Targets
4. Updates some of Angular's sync scripts to correctly get the core
stylesheets as well as the core package.
5. Updates the test app sync script to correctly sync core and
angular-server

~I'm not entirely sure why GitHub thinks
https://github.com/ionic-team/ionic-framework/pull/27719/files#diff-f5bba7e7c7c75426e2b9c89868310cb03890493b4efe0252adf8d12cc8398962
is a new file since it exists in `main` here:
1f06be4a31/angular/test/base/scripts/build-ionic.sh~
Fixed in
6e7fc49827

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

Dev build: `7.1.2-dev.11688052109.13454f5c`
2023-07-05 17:52:35 +00:00
Liam DeBeasi
e5ab6d8804 refactor(select): use border mixin (#27732)
Issue number: N/A

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

The outline select uses `border-left` and `border-right` properties to
handle LTR vs RTL borders. However, our border mixin takes care of this
by using logical border properties.

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

- Updates the outline select to use the border mixin.

Note 1: There should be no visual changes as a result of this. This is
simpler way of doing what we are already doing.
Note 2: There do exist logical border radius properties (for the other
explicit LTR vs RTL work we do), but Ionic 7 supports browsers that do
not support these properties yet. (I created FW-4661 to track this)

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->
2023-07-05 12:49:06 +00:00
Ryan Waskiewicz
a4197a5c74 chore(ci): fix stencil nightly ci job (#27726)
Issue number: N/A

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

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

this commit updates the name of the dependent job for building the
angular server (`build-angular-server`).

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->
2023-06-30 15:34:26 +00:00
Liam DeBeasi
cef4691b5d chore: remove angular dep for angular-server (#27720)
Issue number: N/A

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

`@ionic/angular-server` has a dependency on `@ionic/core` not
`@ionic/angular` (see
1f06be4a31/packages/angular-server/package.json).
As a result, once `@ionic/core` is built there is no reason for
`@ionic/angular-server` to also wait for `@ionic/angular` to build
before it can build.

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

- `@ionic/angular-server` now waits for `@ionic/core` to build instead
of `@ionic/angular`

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->


Dev build sample run:
https://github.com/ionic-team/ionic-framework/actions/runs/5414097033
2023-06-29 19:33:32 +00:00
Sean Perkins
1f06be4a31 fix(nav): root component is mounted with root params (#27676)
Issue number: Resolves #27146

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

When an `ion-nav` is presented multiple times in an overlay, the user's
`root` component will attempt to be attached twice. This results in the
view being mounted without the `rootParams` being defined, causing an
exception in a user's application.

This behavior occurs due to the `root` watch callback firing twice. The
second time the `ion-nav` is presented in an overlay, the watch callback
will execute _before_ `componentDidLoad` fires. This results in the
watch callback firing twice, once from the underlying change detection
and the second time from [manually calling the
function](https://github.com/ionic-team/ionic-framework/blob/main/core/src/components/nav/nav.tsx#L115)
from `componentDidLoad`.

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

- `ion-nav` includes a new flag to track when `componentDidLoad`
executes. This allows us to prevent the behavior of the `rootChanged`
callback from happening when the component has not loaded.
- `ion-nav` consistently attaches the `rootParams` to the `root`
component.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

Dev-build: `7.0.15-dev.11687924603.10a1e477`.

### How to test

You can install against the reproduction app in the linked issue to
verify the behavior before and after.
- Before, the app will throw an exception when presenting the modal the
second time.
- After, the app will not throw an exception when presenting the modal
the second time. Information that you fill out on the main screen form
will be rendered inside the modal content.
2023-06-28 15:27:25 +00:00
Liam DeBeasi
458d16e742 docs(input, textarea): clarify ionInput and ionChange (#27710)
Issue number: N/A

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

See https://github.com/ionic-team/ionic-framework/issues/27709

The `ionInput` description is vague and does not clarify that it only
fires as the user types.

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

- Clarified the ionInput description for input and textarea

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->
2023-06-28 15:26:37 +00:00
Lars Mikkelsen
2af5a141dc chore(ci): fix npm package provenance (#27712)
Issue number: N/A

---------

## What is the current behavior?

Nightly build and release broken in #27711 due to missing shell property
in GitHub Actions workflow.

## What is the new behavior?

- Nightly build and release works.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

## Other information
2023-06-28 12:45:04 +00:00
Maria Hutt
ba3b4706d8 test(popover): re-enable size (#27686)
Issue number: internal ticket

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Size tests were being skipped.

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

- Size tests are no longer being skipped.
- Size tests have been provided comments to explain flakiness.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

I recommend adding a `.only` to the `popover: visible backdrop` and
running the test with `npm run test.e2e popover -- --repeat-each 100` a
few times

---------

Co-authored-by: ionitron <hi@ionicframework.com>
2023-06-27 17:06:24 +00:00
Lars Mikkelsen
91bb6b57aa chore(ci): restore npm package provenance (#27711)
Issue number: #

---------

## What is the current behavior?

Package provenance was disabled in #27656.

## What is the new behavior?

- Package provenance is enabled.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

## Other information
2023-06-27 15:08:33 +00:00
Ryan Waskiewicz
3e5ec5032b chore(ci): remove stencil v4 nightly workflow (#27708)
Issue number: N/A

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

## What is the current behavior?
<!-- Please describe the current behavior that you are modifying. -->
We have a workflow that is no longer needed (that I wrote 🙃) 

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

remove the stencil v4 nightly workflow following the stencil v4 release
on 2023.06.26

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

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


## Other information

I'll have to take a look at the Actions tab at GitHub after this is
merged. I may have to do some manual cleanup (deleting workflow runs)
once this file is no longer in the repo.
<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->
2023-06-27 14:20:39 +00:00
dependabot[bot]
9793b3c0a0 chore(deps): Bump @stencil/core from 3.4.0 to 3.4.1 in /core (#27703)
Bumps [@stencil/core](https://github.com/ionic-team/stencil) from 3.4.0
to 3.4.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ionic-team/stencil/releases"><code>@​stencil/core</code>'s
releases</a>.</em></p>
<blockquote>
<h2>🐨 3.4.1 (2023-06-26)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>compiler:</strong> fix issue with aliased paths getting cut
off (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4481">#4481</a>)
(<a
href="1a2c1608a4">1a2c160</a>)</li>
<li><strong>compiler:</strong> reorder tsconfig#path transforms (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4501">#4501</a>)
(<a
href="6b4fe58dee">6b4fe58</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ionic-team/stencil/blob/main/CHANGELOG.md"><code>@​stencil/core</code>'s
changelog</a>.</em></p>
<blockquote>
<h2>🐨 <a
href="https://github.com/ionic-team/stencil/compare/v3.4.0...v3.4.1">3.4.1</a>
(2023-06-26)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>compiler:</strong> fix issue with aliased paths getting cut
off (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4481">#4481</a>)
(<a
href="1a2c1608a4">1a2c160</a>)</li>
<li><strong>compiler:</strong> reorder tsconfig#path transforms (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4501">#4501</a>)
(<a
href="6b4fe58dee">6b4fe58</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f5676d61db"><code>f5676d6</code></a>
🐨 v3.4.1</li>
<li><a
href="6b4fe58dee"><code>6b4fe58</code></a>
fix(compiler): reorder tsconfig#path transforms (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4501">#4501</a>)</li>
<li><a
href="b4508921f8"><code>b450892</code></a>
chore(deps): update dependency npm to v9.7.2 (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4510">#4510</a>)</li>
<li><a
href="fdc9feeb1b"><code>fdc9fee</code></a>
chore(deps): update typescript-eslint to v5.60.0 (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4515">#4515</a>)</li>
<li><a
href="bf4f899945"><code>bf4f899</code></a>
chore(deps): update dependency semver to v7.5.3 (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4511">#4511</a>)</li>
<li><a
href="36e5b84792"><code>36e5b84</code></a>
chore(deps): update node.js to v20.3.1 (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4514">#4514</a>)</li>
<li><a
href="94eb8559e0"><code>94eb855</code></a>
chore(deps): update dependency terser to v5.18.1 (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4507">#4507</a>)</li>
<li><a
href="f5e708c689"><code>f5e708c</code></a>
chore(deps): update dependency eslint-plugin-jest to v27.2.2 (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4506">#4506</a>)</li>
<li><a
href="1a2c1608a4"><code>1a2c160</code></a>
fix(compiler): fix issue with aliased paths getting cut off (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4481">#4481</a>)</li>
<li><a
href="2b13b8a12e"><code>2b13b8a</code></a>
chore(deps): update dependency webpack to v5.87.0 (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4505">#4505</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/ionic-team/stencil/compare/v3.4.0...v3.4.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@stencil/core&package-manager=npm_and_yarn&previous-version=3.4.0&new-version=3.4.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-26 18:57:38 +00:00
Maria Hutt
23165cdb8c test(item-sliding): update visual regressions (#27695)
Issue number: -

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

I forgot to address the tests when working on FW-2608 to address issue
#26103

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

- Updated the visual regressions tests to verify that the item-sliding
displays correctly on LTR/RTL.
- Updated the item sliding tests to use the generators

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

The tests for item-sliding are disabled due to gesture flakiness. This
will be addressed in another ticket. I recommend testing locally by
adding the `.only` to all tests called `should not have visual
regressions` and running `npm run test.e2e item-sliding`.
2023-06-26 15:20:38 +00:00
Liam DeBeasi
a0c2bb795b merge release-7.1.1
Release 7.1.1
2023-06-26 09:48:28 -04:00
ionitron
881d2c37ba chore(): update package lock files 2023-06-26 13:18:13 +00:00
ionitron
bcc51d41f3 v7.1.1 2023-06-26 13:17:51 +00:00
Liam DeBeasi
f263611260 fix(textarea): autogrow resizes correctly (#27691)
Issue number: resolves #27688

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Autogrow broke as a result of
8bcd9e8b35.
`white-space: pre-wrap` used to be on the host, but it was discovered
that this caused textareas that had any white space to break visually.

As a result, I moved `white-space: pre-wrap` to apply on the host only
for the legacy textarea. The modern textarea had `white-space: pre-wrap`
set on the native textarea.

We also had `white-space: pre-wrap` set on the `::after` pseudo element
for autogrow:
f29c66aee2/core/src/components/textarea/textarea.scss (L311)

However, we also use the `text-inherit` mixin:
f29c66aee2/core/src/components/textarea/textarea.scss (L322)
This mixin sets `white-space: inherit` and also overrides the `pre-wrap`
we had set. As a result, the whitespace was being inherited from the
default white space instead of `pre-wrap`.

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

- Textarea no longer overrides the explicit `white-space: pre-wrap` on
the `::after` element.
- Re-enabled a skipped autogrow test that would have caught this bug
- Fixed a whitespace issue in another autogrow test


Note: The legacy screenshot diffs in
6ba2093166
are unrelated to this PR. Now that we are unskipping them the
screenshots have been updated. I verified this in
https://github.com/ionic-team/ionic-framework/pull/27692. This PR shows
a branch created off `7.0.x` (which does not have the reported
regression) and the tests enabled w/ the screenshots updated. The linked
verification PR can be closed when this PR merges.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

Dev build: 7.1.1-dev.11687532007.11a1a9a4

---------

Co-authored-by: ionitron <hi@ionicframework.com>
2023-06-23 16:05:40 +00:00
Liam DeBeasi
f29c66aee2 chore(deps): only install ionicons 7.1.0 (#27682)
Issue number: N/A

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

There is a known bug in a dependency that Stencil uses to process CSS
that causes the build to fail on Ionicons 7.1.1+. Our
`package-lock.json` always installs 7.1.0, but if you remove the package
lock you'll get a newer version of Ionicons that triggers the bug.

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

- Core installs only ionicons 7.1.0 until the underlying bug is resolved
(tracked internally)

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->
2023-06-21 15:16:34 +00:00
Liam DeBeasi
3d5ef3afd0 chore: merge feature-7.1
Feature 7.1
2023-06-21 10:03:51 -04:00
Liam DeBeasi
858450bc04 merge release-7.1.0
Release 7.1.0
2023-06-21 09:30:58 -04:00
Liam DeBeasi
867826826b chore(): clean up changelog 2023-06-21 08:47:06 -04:00
ionitron
e2cfd93fca chore(): update package lock files 2023-06-21 12:44:37 +00:00
ionitron
236573949a v7.1.0 2023-06-21 12:44:19 +00:00
Liam DeBeasi
8bcd9e8b35 feat(textarea): add experimental label slot (#27677)
Issue number: resolves #27061

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Textarea does not accept custom HTML labels

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

- Textarea accepts custom HTML labels as an experimental feature. We
marked this as experimental because it makes use of "scoped slots" which
is an emulated version of Web Component slots. As a result, there may be
instances where the slot behavior does not exactly match the native slot
behavior.

Note to reviewers: This is a combination of previously reviewed PRs. The
implementation is complete, so feel free to bikeshed.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->


Docs PR: https://github.com/ionic-team/ionic-docs/pull/3001

---------

Co-authored-by: ionitron <hi@ionicframework.com>
2023-06-20 16:16:23 -04:00
Amanda Johnston
95e28b6629 feat(select): add props to customize toggle icons (#27648)
Issue number: resolves #17248

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

While the `icon` shadow part allows customization of the existing toggle
icon, developers do not have a way to specify a different icon to use
entirely.

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

New props `toggleIcon` and `expandedIcon` added. (Design docs are
[here](https://github.com/ionic-team/ionic-framework-design-documents/blob/main/projects/ionic-framework/components/select/0002-custom-icons.md)
and
[here](https://github.com/ionic-team/ionic-framework-design-documents/blob/main/projects/ionic-framework/components/select/0003-custom-icon-on-open.md)
respectively.)

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

Docs PR: https://github.com/ionic-team/ionic-docs/pull/2996
Dev build: `7.0.15-dev.11687278023.161b97d8`

---------

Co-authored-by: ionitron <hi@ionicframework.com>
2023-06-20 12:18:36 -05:00
Liam DeBeasi
8179366845 chore(): sync with main
chore(): sync with main
2023-06-20 11:13:39 -04:00
ionitron
edfa585ebb chore(): add updated snapshots 2023-06-20 14:30:36 +00:00
Liam DeBeasi
6fab2a98b3 chore(): sync with main 2023-06-20 10:05:00 -04:00
Liam DeBeasi
a45395cc02 feat(input): add experimental label slot (#27650)
Issue number: resolves #27061

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Input does not accept custom HTML labels

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

- Input accepts custom HTML labels as an experimental feature. We marked
this as experimental because it makes use of "scoped slots" which is an
emulated version of Web Component slots. As a result, there may be
instances where the slot behavior does not exactly match the native slot
behavior.

Note to reviewers: This is a combination of previously reviewed PRs. The
implementation is complete, so feel free to bikeshed.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->


Docs PR: https://github.com/ionic-team/ionic-docs/pull/2997

---------

Co-authored-by: Brandy Carney <brandyscarney@users.noreply.github.com>
2023-06-15 15:23:41 -04:00
dependabot[bot]
155864035d chore(deps-dev): Bump @playwright/test from 1.35.0 to 1.35.1 in /core (#27659)
Bumps [@playwright/test](https://github.com/Microsoft/playwright) from
1.35.0 to 1.35.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Microsoft/playwright/releases"><code>@​playwright/test</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v1.35.1</h2>
<h3>Highlights</h3>
<p><a
href="https://redirect.github.com/microsoft/playwright/issues/23622">microsoft/playwright#23622</a>
- [Docs] Provide a description how to correctly use expect.configure
with poll parameter
<a
href="https://redirect.github.com/microsoft/playwright/issues/23666">microsoft/playwright#23666</a>
- [BUG] Live Trace does not work with Codespaces
<a
href="https://redirect.github.com/microsoft/playwright/issues/23693">microsoft/playwright#23693</a>
- [BUG] attachment steps are not hidden inside
expect.toHaveScreenshot()</p>
<h3>Browser Versions</h3>
<ul>
<li>Chromium 115.0.5790.13</li>
<li>Mozilla Firefox 113.0</li>
<li>WebKit 16.4</li>
</ul>
<p>This version was also tested against the following stable
channels:</p>
<ul>
<li>Google Chrome 114</li>
<li>Microsoft Edge 114</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="472e0eeda2"><code>472e0ee</code></a>
chore: mark 1.35.1 (<a
href="https://redirect.github.com/Microsoft/playwright/issues/23708">#23708</a>)</li>
<li><a
href="ed09eb6065"><code>ed09eb6</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/23710">#23710</a>):
chore: bundle open's xdg-open script (<a
href="https://redirect.github.com/Microsoft/playwright/issues/23714">#23714</a>)</li>
<li><a
href="182a71f254"><code>182a71f</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/23695">#23695</a>):
chore: miscellaneous trace viewer fixes</li>
<li><a
href="ba20378b5b"><code>ba20378</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/23674">#23674</a>):
chore: fix language port 1.35 release notes (<a
href="https://redirect.github.com/Microsoft/playwright/issues/23701">#23701</a>)</li>
<li><a
href="7a064d0915"><code>7a064d0</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/23670">#23670</a>):
docs: release notes for ports (<a
href="https://redirect.github.com/Microsoft/playwright/issues/23671">#23671</a>)</li>
<li><a
href="49ece365ab"><code>49ece36</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/23661">#23661</a>):
fix: drop <code>expect.configure({ poll })</code> from types</li>
<li><a
href="615e2e8fa8"><code>615e2e8</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/23470">#23470</a>):
docs: improve by adding teardown and examples (<a
href="https://redirect.github.com/Microsoft/playwright/issues/23621">#23621</a>)</li>
<li>See full diff in <a
href="https://github.com/Microsoft/playwright/compare/v1.35.0...v1.35.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@playwright/test&package-manager=npm_and_yarn&previous-version=1.35.0&new-version=1.35.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-15 18:25:30 +00:00
Liam DeBeasi
8fc71543d7 merge release-7.0.14
Release 7.0.14
2023-06-15 13:07:55 -04:00
ionitron
f049a2c945 chore(): update package lock files 2023-06-15 16:37:19 +00:00
ionitron
9271357e99 v7.0.14 2023-06-15 16:37:06 +00:00
Liam DeBeasi
d915ca6870 chore(ci): use local version of lerna (#27656)
Issue number: N/A

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

[GitHub Actions comes with Lerna 7
preinstalled](https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md#project-management)
which has a breaking change for `lerna bootstrap`. This is causing Dev
builds and releases to intermittently fail despite our `package.json`
wanting Lerna 5.

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

- Ensure that the local version of Lerna is used instead of the global
Lerna. Long term we should look to update to Lerna 7 and migrate off
`lerna bootstrap`.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->
2023-06-15 16:12:53 +00:00
Liam DeBeasi
7a38a006a9 fix(keyboard): keyboard events emit correctly when Capacitor is available but the Keyboard plugin is not (#27655)
Issue number: resolves #27654

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

When Capacitor and the Keyboard plugin are available,
`Keyboard.getEngine()` returns an object:
d3232dcc00/core/src/utils/native/keyboard.ts (L19)

When Capacitor is _not_ available this method returns `undefined`.

However, when Capacitor is available but the Keyboard plugin is not,
`Keyboard.getEngine()` returns `false`.

In https://github.com/ionic-team/ionic-framework/pull/27569 I fixed a
bug where the wrong listeners were being used to emit keyboard lifecycle
events. However, I did not know that method can return `false`, and our
tests only account for the `undefined` or defined edge cases. As a
result, if you are using Capacitor in an app that is deployed to the
browser then the visual viewport Ionic keyboard events never fire.

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

- Visual viewport Ionic keyboard events fire in browser

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->
2023-06-15 15:53:04 +00:00
Shawn Taylor
d555375c14 fix(toast): allow color for translucent toast (#27652)
Issue number: resolves #27567

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

## What is the current behavior?
Translucent toasts do not have the appropriate background color when the
`color` property is set on the toast.
<!-- Please describe the current behavior that you are 
modifying. -->
<img width="554" alt="Screenshot 2023-06-14 at 5 46 45 PM"
src="https://github.com/ionic-team/ionic-framework/assets/14926794/05f7522c-23bc-44f8-af42-b82034cbe067">

## What is the new behavior?

- Translucent toasts can have a background color based on the `color`
property of the toast.

<!-- Please describe the behavior or changes that are being added by
this PR. -->
<img width="553" alt="Screenshot 2023-06-14 at 5 46 28 PM"
src="https://github.com/ionic-team/ionic-framework/assets/14926794/28a6345b-5bf3-494c-af81-0d53877295df">

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

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


## Other information

Note: Translucent toasts are only available in `ios` mode.

<!-- 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: ionitron <hi@ionicframework.com>
2023-06-15 15:29:00 +00:00
Liam DeBeasi
606a892e40 fix(select): hide notch cutout if no visible label provided (#27649) 2023-06-15 09:01:46 -04:00
Ryan Waskiewicz
d3232dcc00 chore(global): remove unused context references (#27634)
Issue number: N/A

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Ionic Framework references a deprecated object,`Context`, exposed by
Stencil

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

starting with stencil v4, the deprecated `Context` object will no longer
be exposed by stencil. this change was introduced in
https://github.com/ionic-team/stencil/pull/4437, and will be present in
the first v4 prerelease following v4.0.0-beta.2. in anticipation for
this change, we seek to remove references to `Context` early.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No - To the best of my knowledge

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


## Other information

ATM, the Stencil v4 nightly build is passing, as it's grabbing
`@stencil/core@4.0.0-beta.2`. The change in which we remove the
`Context` object will occur in the _next_ pre-release. I'm removing
`Context` here to try to get a jump on things.


The current iteration of the code that I'm deleting was added in
c415bbe1d7 (diff-ce62e75f0c31a76aac491f13a64e9c7771a6cbae8ca6635541164b69f0479bf1)
<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->
2023-06-14 19:33:51 +00:00
dependabot[bot]
fe39a2ab9b chore(deps): Bump @stencil/core from 3.3.1 to 3.4.0 in /core (#27642)
Bumps [@stencil/core](https://github.com/ionic-team/stencil) from 3.3.1
to 3.4.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ionic-team/stencil/releases"><code>@​stencil/core</code>'s
releases</a>.</em></p>
<blockquote>
<h2> 3.4.0 (2023-06-13)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>compiler:</strong> handle static members with stencil
decorators (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4463">#4463</a>)
(<a
href="dc3925e86d">dc3925e</a>)</li>
<li><strong>runtime:</strong> add autocomplete to textarea (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4465">#4465</a>)
(<a
href="7f42430196">7f42430</a>)</li>
<li><strong>runtime:</strong> issue with update-component and patched
Promise (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4460">#4460</a>)
(<a
href="1187694f4c">1187694</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>compiler:</strong> primary package output target validation
(<a
href="https://redirect.github.com/ionic-team/stencil/issues/4395">#4395</a>)
(<a
href="e53ee07654">e53ee07</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ionic-team/stencil/blob/main/CHANGELOG.md"><code>@​stencil/core</code>'s
changelog</a>.</em></p>
<blockquote>
<h1> <a
href="https://github.com/ionic-team/stencil/compare/v3.3.1...v3.4.0">3.4.0</a>
(2023-06-13)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>compiler:</strong> handle static members with stencil
decorators (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4463">#4463</a>)
(<a
href="dc3925e86d">dc3925e</a>)</li>
<li><strong>runtime:</strong> add autocomplete to textarea (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4465">#4465</a>)
(<a
href="7f42430196">7f42430</a>)</li>
<li><strong>runtime:</strong> issue with update-component and patched
Promise (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4460">#4460</a>)
(<a
href="1187694f4c">1187694</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>compiler:</strong> primary package output target validation
(<a
href="https://redirect.github.com/ionic-team/stencil/issues/4395">#4395</a>)
(<a
href="e53ee07654">e53ee07</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b9425abc5b"><code>b9425ab</code></a>
 v3.4.0</li>
<li><a
href="c6e523655e"><code>c6e5236</code></a>
chore(deps): update dependency <code>@​types/eslint</code> to v8.40.1
(<a
href="https://redirect.github.com/ionic-team/stencil/issues/4474">#4474</a>)</li>
<li><a
href="99f2b5557b"><code>99f2b55</code></a>
chore(deps): update peter-evans/create-or-update-comment action to
v3.0.2 (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4">#4</a>...</li>
<li><a
href="39ea2d5514"><code>39ea2d5</code></a>
chore(deps): update dependency <code>@​types/ws</code> to v8.5.5 (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4476">#4476</a>)</li>
<li><a
href="0451f62b2f"><code>0451f62</code></a>
chore(deps): update dependency <code>@​types/node</code> to v20.2.6 (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4475">#4475</a>)</li>
<li><a
href="7f42430196"><code>7f42430</code></a>
fix(runtime): add autocomplete to textarea (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4465">#4465</a>)</li>
<li><a
href="8c77ebe099"><code>8c77ebe</code></a>
chore(deps): update dependency npm to v9.7.1 (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4479">#4479</a>)</li>
<li><a
href="dc3925e86d"><code>dc3925e</code></a>
fix(compiler): handle static members with stencil decorators (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4463">#4463</a>)</li>
<li><a
href="2f870d8ae4"><code>2f870d8</code></a>
chore(deps): update actions/checkout action to v3.5.3 (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4473">#4473</a>)</li>
<li><a
href="1187694f4c"><code>1187694</code></a>
fix(runtime): issue with update-component and patched Promise (<a
href="https://redirect.github.com/ionic-team/stencil/issues/4460">#4460</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/ionic-team/stencil/compare/v3.3.1...v3.4.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@stencil/core&package-manager=npm_and_yarn&previous-version=3.3.1&new-version=3.4.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-14 16:17:03 +00:00
Liam DeBeasi
6247ee0f96 merge release-7.0.13
Release 7.0.13
2023-06-14 10:51:47 -04:00
ionitron
7c38d17ebd chore(): update package lock files 2023-06-14 14:20:06 +00:00
ionitron
d350a1719f v7.0.13 2023-06-14 14:19:53 +00:00
dependabot[bot]
b571881d6e chore(deps-dev): Bump @axe-core/playwright from 4.7.2 to 4.7.3 in /core (#27637)
Bumps [@axe-core/playwright](https://github.com/dequelabs/axe-core-npm)
from 4.7.2 to 4.7.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dequelabs/axe-core-npm/releases"><code>@​axe-core/playwright</code>'s
releases</a>.</em></p>
<blockquote>
<h2>Release 4.7.3</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>webdriverjs:</strong> skip unloaded iframes (<a
href="https://redirect.github.com/dequelabs/axe-core-npm/issues/743">#743</a>)
(<a
href="9cb50ebb6b">9cb50eb</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/dequelabs/axe-core-npm/blob/develop/CHANGELOG.md"><code>@​axe-core/playwright</code>'s
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this file.
See <a href="https://conventionalcommits.org">Conventional Commits</a>
for commit guidelines.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9cb50ebb6b"><code>9cb50eb</code></a>
fix(webdriverjs): skip unloaded iframes (<a
href="https://redirect.github.com/dequelabs/axe-core-npm/issues/743">#743</a>)</li>
<li><a
href="48e222e87d"><code>48e222e</code></a>
Merge pull request <a
href="https://redirect.github.com/dequelabs/axe-core-npm/issues/740">#740</a>
from dequelabs/master</li>
<li><a
href="4a5591347a"><code>4a55913</code></a>
docs: update docs to use named import and create example.js (<a
href="https://redirect.github.com/dequelabs/axe-core-npm/issues/741">#741</a>)</li>
<li><a
href="c0b063144d"><code>c0b0631</code></a>
Merge pull request <a
href="https://redirect.github.com/dequelabs/axe-core-npm/issues/736">#736</a>
from dequelabs/release-1685630602</li>
<li><a
href="281ca6955d"><code>281ca69</code></a>
chore: release v4.7.2</li>
<li>See full diff in <a
href="https://github.com/dequelabs/axe-core-npm/compare/v4.7.2...v4.7.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@axe-core/playwright&package-manager=npm_and_yarn&previous-version=4.7.2&new-version=4.7.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-13 15:23:08 +00:00
dependabot[bot]
1f0c8049a3 chore(deps-dev): Bump @playwright/test from 1.34.3 to 1.35.0 in /core (#27625)
Bumps [@playwright/test](https://github.com/Microsoft/playwright) from
1.34.3 to 1.35.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Microsoft/playwright/releases"><code>@​playwright/test</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v1.35.0</h2>
<h3>Highlights</h3>
<ul>
<li>
<p>UI mode is now available in VSCode Playwright extension via a new
&quot;Show trace viewer&quot; button:</p>
<p><img
src="https://github.com/microsoft/playwright/assets/746130/13094128-259b-477a-8bbb-c1181178e8a2"
alt="Playwright UI Mode" /></p>
</li>
<li>
<p>UI mode and trace viewer mark network requests handled with <a
href="https://playwright.dev/docs/api/class-page#page-route"><code>page.route()</code></a>
and <a
href="https://playwright.dev/docs/api/class-browsercontext#browser-context-route"><code>browserContext.route()</code></a>
handlers, as well as those issued via the <a
href="https://playwright.dev/docs/api-testing">API testing</a>:</p>
<p><img
src="https://github.com/microsoft/playwright/assets/746130/0df2d4b6-faa3-465c-aff3-c435b430bfe1"
alt="Trace Viewer" /></p>
</li>
<li>
<p>New option <code>maskColor</code> for methods <a
href="https://playwright.dev/docs/api/class-page#page-screenshot"><code>page.screenshot()</code></a>,
<a
href="https://playwright.dev/docs/api/class-locator#locator-screenshot"><code>locator.screenshot()</code></a>,
<a
href="https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1"><code>expect(page).toHaveScreenshot()</code></a>
and <a
href="https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1"><code>expect(locator).toHaveScreenshot()</code></a>
to change default masking color:</p>
<pre lang="js"><code>await page.goto('https://playwright.dev');
await expect(page).toHaveScreenshot({
  mask: [page.locator('img')],
  maskColor: '#00FF00', // green
});
</code></pre>
</li>
<li>
<p>New <code>uninstall</code> CLI command to uninstall browser
binaries:</p>
<pre lang="bash"><code>$ npx playwright uninstall # remove browsers
installed by this installation
$ npx playwright uninstall --all # remove all ever-install Playwright
browsers
</code></pre>
</li>
<li>
<p>Both UI mode and trace viewer now could be opened in a browser
tab:</p>
<pre lang="bash"><code>$ npx playwright test --ui-port 0 # open UI mode
in a tab on a random port
$ npx playwright show-trace --port 0 # open trace viewer in tab on a
random port
</code></pre>
</li>
</ul>
<h3>⚠️ Breaking changes</h3>
<ul>
<li>
<p><code>playwright-core</code> binary got renamed from
<code>playwright</code> to <code>playwright-core</code>. So if you use
<code>playwright-core</code> CLI, make sure to update the name:</p>
<pre lang="bash"><code>$ npx playwright-core install # the new way to
install browsers when using playwright-core
</code></pre>
<p>This change <strong>does not</strong> affect
<code>@playwright/test</code> and <code>playwright</code> package
users.</p>
</li>
</ul>
<h3>Browser Versions</h3>
<ul>
<li>Chromium 115.0.5790.13</li>
<li>Mozilla Firefox 113.0</li>
<li>WebKit 16.4</li>
</ul>
<p>This version was also tested against the following stable
channels:</p>
<ul>
<li>Google Chrome 114</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a2798c3221"><code>a2798c3</code></a>
chore: mark 1.35.0 (<a
href="https://redirect.github.com/Microsoft/playwright/issues/23581">#23581</a>)</li>
<li><a
href="745e2009cf"><code>745e200</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/23606">#23606</a>)
docs: fix images for release notes</li>
<li><a
href="f28d156039"><code>f28d156</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/23582">#23582</a>):
docs: enhance UI mode docs (<a
href="https://redirect.github.com/Microsoft/playwright/issues/23604">#23604</a>)</li>
<li><a
href="3e94abe1d9"><code>3e94abe</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/23593">#23593</a>):
feat(chromium): roll to r1067 (<a
href="https://redirect.github.com/Microsoft/playwright/issues/23599">#23599</a>)</li>
<li><a
href="f411348fa2"><code>f411348</code></a>
cherry-pick(<a
href="https://redirect.github.com/Microsoft/playwright/issues/23583">#23583</a>):
chore: do not show select item when Show trace</li>
<li><a
href="e0c4576e29"><code>e0c4576</code></a>
docs: add a note about CodeSpaces UI mode (<a
href="https://redirect.github.com/Microsoft/playwright/issues/23580">#23580</a>)</li>
<li><a
href="4f8680f7a3"><code>4f8680f</code></a>
fix(pause): revert timeouts after pause (<a
href="https://redirect.github.com/Microsoft/playwright/issues/23578">#23578</a>)</li>
<li><a
href="eda109388e"><code>eda1093</code></a>
docs: js release notes 1.35 (<a
href="https://redirect.github.com/Microsoft/playwright/issues/23560">#23560</a>)</li>
<li><a
href="7d2201561f"><code>7d22015</code></a>
chore(devops): add check status for report merger to PRs (<a
href="https://redirect.github.com/Microsoft/playwright/issues/23564">#23564</a>)</li>
<li><a
href="0b30f2017c"><code>0b30f20</code></a>
chore: make trace server work over http (<a
href="https://redirect.github.com/Microsoft/playwright/issues/23561">#23561</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/Microsoft/playwright/compare/v1.34.3...v1.35.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@playwright/test&package-manager=npm_and_yarn&previous-version=1.34.3&new-version=1.35.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-09 13:34:11 +00:00
Liam DeBeasi
d44422e224 feat(datetime): add part for month/year button (#27618)
Issue number: resolves #26596

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

There is no way to customize the month/year toggle button using CSS.

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

- Adds a Shadow Part to the month/year toggle button.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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: ionitron <hi@ionicframework.com>
2023-06-08 16:07:00 -04:00
Sean Perkins
d20bea561c fix(angular): tabs supports conditional slot bindings (#27582)
Issue number: Resolves #19484

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

The Angular implementation of `ion-tabs` does not support conditional
binding the `slot` property on `ion-tab-bar` or assigning a variable as
the slot.

For example, this usage is invalid:

```html
<ion-tabs>
  <ion-tab-bar [slot]="slot"></ion-tab-bar>
</ion-tabs>
```

This occurs because `ng-content` only supports static content
projection. It is not intended for scenarios where the content can be
relocated or conditionally rendered.

An example of static content projection would be:
```html
<ion-tabs>
  <ion-tab-bar slot="top"></ion-tab-bar>
</ion-tabs>
```

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

- `ion-tabs` supports conditional slot bindings or a slot that is bound
to a variable in Angular.

The revised implementation relocates the tab bar in the `ion-tabs`
template, based on it's current slot attribute. The implementation
checks the tab bar slot whenever the content changes.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

Dev-build: `7.0.11-dev.11685631370.18980633`

---------

Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
2023-06-06 22:41:33 -04:00
Amanda Johnston
f2c1845fba feat(datetime): add shadow parts and CSS variables for styling wheel pickers (#27529)
Issue number: resolves #25945

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Datetime wheel pickers cannot be styled.

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

Adds styling APIs in accordance with the Wheel Pickers and Time Picker
sections of [this design
doc](https://github.com/ionic-team/ionic-framework-design-documents/blob/main/projects/ionic-framework/components/datetime/datetime-styling.md).

Shadow parts added:
- `wheel-item`
- `wheel-item active`
- `time-button`
- `time-button active`

CSS properties added:
- `--wheel-highlight-background`
- `--wheel-fade-background-rgb`

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

Dev build: `7.0.7-dev.11685554390.10c2ca9b`
Docs PR: https://github.com/ionic-team/ionic-docs/pull/2982
2023-06-06 11:25:15 -05:00
Sean Perkins
ea817a5dc5 Merge pull request #27583 from ionic-team/sp/sync-feature-7.1-with-main
chore: sync with main
2023-06-01 14:29:16 -04:00
ionitron
1814f0e58d chore(): add updated snapshots 2023-06-01 17:33:30 +00:00
Sean Perkins
d10509f840 fix: import paths
The `win` utility was moved to the browser/ folder.
2023-06-01 13:05:00 -04:00
Sean Perkins
49b91692fc chore(segment): remove unused import
pointerCoord usage was removed on main.
2023-06-01 12:16:24 -04:00
Sean Perkins
66d959f5bf Merge remote-tracking branch 'origin/main' into sp/sync-feature-7.1-with-main 2023-06-01 12:10:45 -04:00
Shawn Taylor
209880622a fix(datetime): ascending order for years (#27551)
resolves #27422

Co-authored-by: Jón Prüßmeier <jon-pruessmeier@users.noreply.github.com>

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

## What is the current behavior?
<!-- Please describe the current behavior that you are modifying. -->
Years in the date picker are displayed in descending order.

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

- Years in the date picker are displayed in ascending order
- This matches the native behavior

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!-- If this introduces a breaking change, please describe the impact
and migration path for existing applications below. -->
This is not a breaking change, but it may be unexpected and also may
cause users' visual diff tests to fail. As such, we'll target this to
7.1

## Other information

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

---------

Co-authored-by: ionitron <hi@ionicframework.com>
2023-05-26 13:12:41 -04:00
Liam DeBeasi
af92cb28c8 feat(select): add label slot (#27545)
resolves #26838
2023-05-25 14:57:03 -04:00
Brandy Carney
448e63fef0 feat(segment): display segment as a grid and add an ellipsis to overflowing text in a segment button (#27457)
Issue number: resolves #16532

---------

## What is the current behavior?
Text that is too long to fit in a segment button does not ellipsis,
instead it centers all of the text and cuts it off at the beginning and
end of the text.

## What is the new behavior?
Text that is wider than the segment button will now add an ellipsis and
cut the text off instead of horizontally centering the text and
overflowing the button (while being cut off visually).

While researching how to fix this issue I discovered that the button
text was not properly overflowing when it should due to a limitation of
flex. I was able to mock segments using divs and see that certain
buttons were adding an ellipsis when there was room to grow. This is due
to a combination of using `flex-basis: 0` on the segment buttons and
`width: auto` on the segment inside of a toolbar. This
[blog](https://css-tricks.com/equal-columns-with-flexbox-its-more-complicated-than-you-might-think)
sums it up well, but it is not something I could work around with
segment set as `display: flex`. When I changed the mocked segment to use
`display: grid`, it allowed the text to properly grow, while overflowing
and adding an ellipsis when it couldn't grow. This can be seen in my
[Codepen
example](https://codepen.io/brandyscarney/pen/poOpbWE?editors=1100).

As a result, I made the following updates:

- Changed the `ion-segment` to [`display:
grid`](https://github.com/ionic-team/ionic-framework/pull/27457/files#diff-dedcf5921daa49880ebae649e04d4f488a6b965c885a7bb1fdf29a5f1b3d501fR14)
(`display: inline-grid` could not be used because the highlight was not
properly aligned to the bottom of a toolbar for `md` mode)
- Moves the `max-width` for Material Design segment buttons to the
parent segment by using [`grid-auto-columns: minmax(auto,
$segment-button-md-max-width);`](https://github.com/ionic-team/ionic-framework/pull/27457/files#diff-8df7c6681b616fdc975b068e3d31282cc4997222e786db6365ebcef3bccbb6d3R10).
This is necessary for the buttons to properly center inside of the grid
when they all hit the max-width (360px at the moment).
- The Material Design segment buttons will now take up equal widths.
This matches the [MD2 spec for fixed
segments](https://m2.material.io/components/tabs#fixed-tabs).
- Sets [`grid-row:
1`](https://github.com/ionic-team/ionic-framework/pull/27457/files#diff-761a18ae6f41275e0eb63e9710045cafd5b221721ef1dad1d46d562e50404615R75)
on the host segment button. This tells the segment buttons to stay on
the same row.
- Sets [`max-width:
100%`](https://github.com/ionic-team/ionic-framework/pull/27457/files#diff-761a18ae6f41275e0eb63e9710045cafd5b221721ef1dad1d46d562e50404615R214)
and [`overflow:
hidden`](https://github.com/ionic-team/ionic-framework/pull/27457/files#diff-761a18ae6f41275e0eb63e9710045cafd5b221721ef1dad1d46d562e50404615R222)
on the native button. This allows the text itself to ellipsis.
- Added tests for segment wrapping & went through all existing tests to
add missing `ion-label` elements in the segment buttons

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

## Other information

### High-level changes between main and this branch

| `main` | `FW-3401` |
| ---| ---|
|
![main-ios](https://github.com/ionic-team/ionic-framework/assets/6577830/b245fffa-e09c-4a96-bc6e-c4d2ee68cd16)
|
![branch-ios](https://github.com/ionic-team/ionic-framework/assets/6577830/397d95f5-24d3-4421-b960-1a8a6ace7c26)
|
|
![main-md](https://github.com/ionic-team/ionic-framework/assets/6577830/75c77373-0dde-4e7d-a7fa-fc082fcb5c7a)
|
![branch-md](https://github.com/ionic-team/ionic-framework/assets/6577830/402f8293-8ea5-47fb-bc13-7dc2d85b361a)
|
2023-05-24 11:42:57 -04:00
Brandy Carney
5c10f88b2e feat(select): expose container and label as CSS parts (#27541)
Issue number: resolves #27112

---------

## What is the current behavior?
The select does not expose the label or the container for the
value/placeholder as a CSS shadow part in order to style it.

## What is the new behavior?
- Exposed `label` and `container` parts for custom styling
- Added an e2e test to verify the parts are working
- Renamed the existing screenshots for the custom tests to fix a typo
from "custon" to "custom"

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

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

---------

Co-authored-by: ionitron <hi@ionicframework.com>
2023-05-24 10:54:18 -04:00
Morritz
ec95ae5cd3 feat(segment, segment-button): update segment value property to accept numbers (#27222)
Issue number: resolves #27221

---------

## What is the current behavior?

The value property of the segment component in Ionic Framework currently
only accepts string values.

## What is the new behavior?

This pull request updates the "value" property of the segment component
to accept a union of string and number types. This allows for more
versatile data input in the segment component, particularly for users
who work with numerical data.

## Does this introduce a breaking change?

- [ ] Yes
- [X] No

## Other information

N/A
2023-05-24 09:07:57 -05:00
Andrzej
e80f0b2409 feat: return if the pop on NavController was successful (#27404)
Issue number: Resolves #27403 

---------

## What is the current behavior?

NavController.pop() returns `Promise<void>`.

## What is the new behavior?

NavController.pop() returns `Promise<boolean>` propagating success/fail
from underlying outlet.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

---------
2023-05-18 17:17:13 -04:00
Liam DeBeasi
bddff105ce chore: sync with main
chore: sync with main
2023-05-16 14:27:49 -04:00
ionitron
f08cb31b39 chore(): add updated snapshots 2023-05-16 17:58:30 +00:00
Liam DeBeasi
19ec41c965 chore: sync with main 2023-05-16 10:26:41 -04:00
Liam DeBeasi
5dd921f906 chore: sync with main
chore: sync with main
2023-05-11 15:13:04 -04:00
Liam DeBeasi
159bffbb5f chore(): sync with main 2023-05-11 14:57:44 -04:00
Amanda Johnston
368add2a5c feat(range): add label prop (#27408)
Issue number: N/A

---------

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

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

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

Labels on `ion-range` can only be set via the `label` slot. When only
plain text is needed, this is cumbersome because you need to add an
entire new element to wrap the label.

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

Label prop added. If both the prop and slot are used, the prop will take
priority.

## Does this introduce a breaking change?

- [ ] Yes
- [x] 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. -->

- Docs PR: https://github.com/ionic-team/ionic-docs/pull/2955
- Dev build: `7.0.6-dev.11683657201.139d03f4`
2023-05-10 10:13:26 -05:00
Amanda Johnston
1c71bfb327 Merge pull request #27407 from ionic-team/chore/sync-with-main-6
chore: sync with main
2023-05-05 13:58:59 -05:00
amandaesmith3
8043fcf42c lint 2023-05-05 13:30:32 -05:00
amandaesmith3
6c68c56a7f Merge remote-tracking branch 'origin/main' into chore/sync-with-main-6 2023-05-05 13:30:21 -05:00
Sean Perkins
4a6870553b Merge pull request #27367 from ionic-team/chore/sync-with-main-5-3
chore: sync with main
2023-05-03 16:58:33 -04:00
Sean Perkins
626462ec89 chore: fix generated types 2023-05-03 14:31:04 -04:00
Sean Perkins
10d2c75f8d Merge remote-tracking branch 'origin/main' into chore/sync-with-main-5-3 2023-05-03 13:38:03 -04:00
Maria Hutt
0a0345a84a refactor(many): use utils import (#27160) 2023-04-12 13:25:14 -07:00
1225 changed files with 6685 additions and 1992 deletions

4
.github/CODEOWNERS vendored
View File

@@ -15,9 +15,9 @@
## Angular
/angular/ @sean-perkins
/packages/angular/ @sean-perkins
/packages/angular-server @sean-perkins
/angular/test
/packages/angular/test
## React

View File

@@ -295,7 +295,7 @@ See [Ionic's E2E testing guide](../core/src/utils/test/playwright/docs/README.md
#### Modifying Files
1. Locate the files inside the relevant root directory:
- Angular: [`/angular/src`](/angular/src)
- Angular: [`/packages/angular/src`](/packages/angular/src)
- React: [`/packages/react/src`](/packages/react/src)
- Vue: [`/packages/vue/src`](/packages/vue/src)
2. Make your changes to the files. If the change is overly complex or out of the ordinary, add comments so we can understand the changes.
@@ -311,7 +311,7 @@ See [Ionic's E2E testing guide](../core/src/utils/test/playwright/docs/README.md
##### Previewing in this repository
Follow the steps in the test directory for each framework:
- Angular: [`/angular/test`](/angular/test/README.md)
- Angular: [`/packages/angular/test`](/packages/angular/test/README.md)
- React: [`/packages/react/test`](/packages/react/test/README.md)
- Vue: [`/packages/vue/test`](/packages/vue/test/README.md)
@@ -322,7 +322,7 @@ Follow the steps to [preview changes in core](#preview-changes).
#### Lint Changes
1. Run `npm run lint` to lint the TypeScript in the relevant directory:
- Angular: [`/angular/src`](/angular/src)
- Angular: [`/packages/angular/src`](/packages/angular/src)
- React: [`/packages/react/src`](/packages/react/src)
- Vue: [`/packages/vue/src`](/packages/vue/src)
2. If there are lint errors, run `npm run lint.fix` to automatically fix any errors. Repeat step 1 to ensure the errors have been fixed, and manually fix them if not.
@@ -330,7 +330,7 @@ Follow the steps to [preview changes in core](#preview-changes).
#### Modifying Tests
1. Locate the e2e test to modify inside the relevant test app directory:
- Angular: [`/angular/test/base/e2e/src`](/angular/test/base/e2e/src)
- Angular: [`/packages/angular/test/base/e2e/src`](/packages/angular/test/base/e2e/src)
- React: [`/packages/react/test/base/tests/e2e/specs`](/packages/react/test/base/tests/e2e/specs)
- Vue: [`/packages/vue/test/base/tests/e2e/specs`](/packages/vue/test/base/tests/e2e/specs)
2. If a test exists, modify the test by adding an example to reproduce the problem fixed or feature added.

View File

@@ -14,3 +14,7 @@ updates:
- dependency-name: "@stencil/sass"
- dependency-name: "@stencil/vue-output-target"
- dependency-name: "ionicons"
- dependency-name: "@capacitor/core"
- dependency-name: "@capacitor/keyboard"
- dependency-name: "@capacitor/haptics"
- dependency-name: "@capacitor/status-bar"

2
.github/labeler.yml vendored
View File

@@ -9,7 +9,7 @@
- core/**/*
'package: angular':
- angular/**/*
- packages/angular/**/*
- packages/angular-*/**/*
'package: react':

View File

@@ -14,25 +14,25 @@ runs:
- name: Install Angular Dependencies
run: npm ci
shell: bash
working-directory: ./angular
working-directory: ./packages/angular
- name: Sync
run: npm run sync
shell: bash
working-directory: ./angular
working-directory: ./packages/angular
- name: Lint
run: npm run lint
shell: bash
working-directory: ./angular
working-directory: ./packages/angular
- name: Build
run: npm run build
shell: bash
working-directory: ./angular
working-directory: ./packages/angular
- name: Check Diff
run: git diff --exit-code
shell: bash
working-directory: ./angular
working-directory: ./packages/angular
- uses: ./.github/workflows/actions/upload-archive
with:
name: ionic-angular
output: ./angular/AngularBuild.zip
paths: ./angular/dist
output: ./packages/angular/AngularBuild.zip
paths: ./packages/angular/dist

View File

@@ -22,15 +22,21 @@ runs:
- uses: actions/setup-node@v3
with:
node-version: 16.x
# Provenance requires npm 9.5.0+
- name: Install latest npm
run: npm install -g npm@latest
shell: bash
# This ensures the local version of Lerna is installed
# and that we do not use the global Lerna version
- name: Install root dependencies
run: npm ci
shell: bash
- name: Install Dependencies
run: lerna bootstrap --include-dependencies --scope ${{ inputs.scope }} --ignore-scripts -- --legacy-peer-deps
run: npx 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 --preid=${{ inputs.preid }}
run: npx lerna version ${{ inputs.version }} --yes --exact --no-changelog --no-push --no-git-tag-version --preid=${{ inputs.preid }}
shell: bash
working-directory: ${{ inputs.working-directory }}
- name: Run Build

View File

@@ -27,16 +27,16 @@ runs:
- name: Create Test App
run: ./build.sh ${{ inputs.app }}
shell: bash
working-directory: ./angular/test
working-directory: ./packages/angular/test
- name: Install Dependencies
run: npm install
shell: bash
working-directory: ./angular/test/build/${{ inputs.app }}
working-directory: ./packages/angular/test/build/${{ inputs.app }}
- name: Sync Built Changes
run: npm run sync
shell: bash
working-directory: ./angular/test/build/${{ inputs.app }}
working-directory: ./packages/angular/test/build/${{ inputs.app }}
- name: Run Tests
run: npm run test
shell: bash
working-directory: ./angular/test/build/${{ inputs.app }}
working-directory: ./packages/angular/test/build/${{ inputs.app }}

View File

@@ -122,7 +122,7 @@ jobs:
- uses: ./.github/workflows/actions/build-angular
build-angular-server:
needs: [build-angular]
needs: [build-core]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

View File

@@ -81,15 +81,15 @@ jobs:
tag: ${{ inputs.tag }}
version: ${{ inputs.version }}
preid: ${{ inputs.preid }}
working-directory: 'angular'
working-directory: 'packages/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
output: packages/angular/AngularBuild.zip
paths: packages/angular/dist
release-react:
needs: [release-core]
@@ -144,7 +144,7 @@ jobs:
paths: packages/vue/dist packages/vue/css
release-angular-server:
needs: [release-angular]
needs: [release-core]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
@@ -154,12 +154,6 @@ jobs:
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'

View File

@@ -133,7 +133,7 @@ jobs:
- uses: ./.github/workflows/actions/build-angular
build-angular-server:
needs: [build-angular]
needs: [build-core-with-stencil-nightly]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

View File

@@ -1,220 +0,0 @@
# 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 v4 Build'
on:
schedule:
# Run every Monday-Friday
# at 6:00 UTC (6:00 am UTC)
- cron: '00 06 * * 1-5'
workflow_dispatch:
# allows for manual invocations in the GitHub UI
# 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-with-stencil-v4:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/build-core-stencil-prerelease
with:
stencil-version: v4-next
test-core-clean-build:
needs: [build-core-with-stencil-v4]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/test-core-clean-build
test-core-lint:
needs: [build-core-with-stencil-v4]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/test-core-lint
test-core-spec:
needs: [build-core-with-stencil-v4]
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-with-stencil-v4]
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-with-stencil-v4]
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-with-stencil-v4]
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-with-stencil-v4]
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:
strategy:
fail-fast: false
matrix:
apps: [reactrouter5]
needs: [build-react, build-react-router]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/test-react-router-e2e
with:
app: ${{ matrix.apps }}
verify-test-react-router-e2e:
if: ${{ always() }}
needs: test-react-router-e2e
runs-on: ubuntu-latest
steps:
- name: Check build matrix status
if: ${{ needs.test-react-router-e2e.result != 'success' }}
run: exit 1
test-react-e2e:
strategy:
fail-fast: false
matrix:
apps: [react17, react18]
needs: [build-react, build-react-router]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/workflows/actions/test-react-e2e
with:
app: ${{ matrix.apps }}
verify-test-react-e2e:
if: ${{ always() }}
needs: test-react-e2e
runs-on: ubuntu-latest
steps:
- name: Check build matrix status
if: ${{ needs.test-react-e2e.result != 'success' }}
run: exit 1

4
.gitignore vendored
View File

@@ -71,8 +71,8 @@ core/playwright-report/
core/**/*-snapshots
# angular
angular/css/
angular/test/build/
packages/angular/css/
packages/angular/test/build/
.angular/
# vue

View File

@@ -3,6 +3,133 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [7.2.1](https://github.com/ionic-team/ionic-framework/compare/v7.2.0...v7.2.1) (2023-07-26)
### Bug Fixes
* **item-sliding:** buttons are not interactive on close ([#27829](https://github.com/ionic-team/ionic-framework/issues/27829)) ([6e4919c](https://github.com/ionic-team/ionic-framework/commit/6e4919caff90fc60988e5cc85ad7161844eb5b51)), closes [#22722](https://github.com/ionic-team/ionic-framework/issues/22722)
* **modal:** body background is reset with inline card modals ([#27835](https://github.com/ionic-team/ionic-framework/issues/27835)) ([38626d9](https://github.com/ionic-team/ionic-framework/commit/38626d96809d1c6be523ea62a4fac1dec73ee891)), closes [#27830](https://github.com/ionic-team/ionic-framework/issues/27830)
# [7.2.0](https://github.com/ionic-team/ionic-framework/compare/v7.1.4...v7.2.0) (2023-07-19)
### Features
* **angular:** support binding routing data to component inputs ([#27694](https://github.com/ionic-team/ionic-framework/issues/27694)) ([90f4124](https://github.com/ionic-team/ionic-framework/commit/90f41243d9404caaad99076965b7cd649ddf7f33)), closes [#27476](https://github.com/ionic-team/ionic-framework/issues/27476)
* **button:** allow button to increase in height when text wraps ([#27547](https://github.com/ionic-team/ionic-framework/issues/27547)) ([6fe716f](https://github.com/ionic-team/ionic-framework/commit/6fe716fd1320935632854e5d4f741b57801bda92))
* **searchbar:** add name property ([#27737](https://github.com/ionic-team/ionic-framework/issues/27737)) ([7131037](https://github.com/ionic-team/ionic-framework/commit/71310372c94862342d607007ece127340df92a8c)), closes [#27675](https://github.com/ionic-team/ionic-framework/issues/27675)
## [7.1.4](https://github.com/ionic-team/ionic-framework/compare/v7.1.3...v7.1.4) (2023-07-19)
### Bug Fixes
* **angular:** menu button is enabled with Angular Universal builds ([#27814](https://github.com/ionic-team/ionic-framework/issues/27814)) ([2cf1a0b](https://github.com/ionic-team/ionic-framework/commit/2cf1a0bcae7d766aa25951c53470876f9569906c)), closes [#27524](https://github.com/ionic-team/ionic-framework/issues/27524) [#22206](https://github.com/ionic-team/ionic-framework/issues/22206)
* **button:** submit form when pressing enter key ([#27790](https://github.com/ionic-team/ionic-framework/issues/27790)) ([b78af75](https://github.com/ionic-team/ionic-framework/commit/b78af7598f19ca5e1b440ddc0091a62d86321066)), closes [#19368](https://github.com/ionic-team/ionic-framework/issues/19368)
* **radio, checkbox, toggle:** add top and bottom margins when in ion-item ([#27788](https://github.com/ionic-team/ionic-framework/issues/27788)) ([35f0ec5](https://github.com/ionic-team/ionic-framework/commit/35f0ec581a55e0cb080f0793fb94d3e424c06d4d)), closes [#27498](https://github.com/ionic-team/ionic-framework/issues/27498)
* safari no longer adjusts text in landscape ([#27787](https://github.com/ionic-team/ionic-framework/issues/27787)) ([66584b0](https://github.com/ionic-team/ionic-framework/commit/66584b03d0b33507170f954009998c72fb3f7755)), closes [#27782](https://github.com/ionic-team/ionic-framework/issues/27782)
* **textarea:** stacked/floating textarea size is correct on safari ([#27766](https://github.com/ionic-team/ionic-framework/issues/27766)) ([2cb7013](https://github.com/ionic-team/ionic-framework/commit/2cb701395487c6a0304400f6b821659ae6def820)), closes [#27345](https://github.com/ionic-team/ionic-framework/issues/27345)
## [7.1.3](https://github.com/ionic-team/ionic-framework/compare/v7.1.2...v7.1.3) (2023-07-12)
### Bug Fixes
* avoid unresolved import warning on stencil apps ([#27765](https://github.com/ionic-team/ionic-framework/issues/27765)) ([2085025](https://github.com/ionic-team/ionic-framework/commit/2085025644f075e63d04bece56eca4f2beeadbb6)), closes [#27762](https://github.com/ionic-team/ionic-framework/issues/27762)
* **overlays:** first button is not focused on backdrop tap ([#27774](https://github.com/ionic-team/ionic-framework/issues/27774)) ([82c568b](https://github.com/ionic-team/ionic-framework/commit/82c568b8c8e1e9934e1928452aa5216619290e7b)), closes [#27773](https://github.com/ionic-team/ionic-framework/issues/27773)
## [7.1.2](https://github.com/ionic-team/ionic-framework/compare/v7.1.1...v7.1.2) (2023-07-06)
### Bug Fixes
* **back-button:** show correct background on focus + hover with ios ([#27723](https://github.com/ionic-team/ionic-framework/issues/27723)) ([db9a001](https://github.com/ionic-team/ionic-framework/commit/db9a0010df3c7fd0fcd0dbcd8c4ad3b30d022b5c)), closes [#27722](https://github.com/ionic-team/ionic-framework/issues/27722)
* **nav:** root component is mounted with root params ([#27676](https://github.com/ionic-team/ionic-framework/issues/27676)) ([1f06be4](https://github.com/ionic-team/ionic-framework/commit/1f06be4a31965f2a949b4866a585aee6af0af29d)), closes [#27146](https://github.com/ionic-team/ionic-framework/issues/27146)
## [7.1.1](https://github.com/ionic-team/ionic-framework/compare/v7.1.0...v7.1.1) (2023-06-26)
### Bug Fixes
* **textarea:** autogrow resizes correctly ([#27691](https://github.com/ionic-team/ionic-framework/issues/27691)) ([f263611](https://github.com/ionic-team/ionic-framework/commit/f263611260c465bfeefc2db7b1ea04bfa5b54303)), closes [#27688](https://github.com/ionic-team/ionic-framework/issues/27688)
# [7.1.0](https://github.com/ionic-team/ionic-framework/compare/v7.0.14...v7.1.0) (2023-06-21)
### Bug Fixes
* **angular:** tabs supports conditional slot bindings ([#27582](https://github.com/ionic-team/ionic-framework/issues/27582)) ([d20bea5](https://github.com/ionic-team/ionic-framework/commit/d20bea561c362eacd250cdedbc9b79159eb2c95f)), closes [#19484](https://github.com/ionic-team/ionic-framework/issues/19484)
* **datetime:** ascending order for years ([#27551](https://github.com/ionic-team/ionic-framework/issues/27551)) ([2098806](https://github.com/ionic-team/ionic-framework/commit/209880622a4600f88c4878e82975ad0492bd55db)), closes [#27422](https://github.com/ionic-team/ionic-framework/issues/27422)
* import paths ([d10509f](https://github.com/ionic-team/ionic-framework/commit/d10509f84099515f62c895dcd736cc387e382bde))
* **select:** hide notch cutout if no visible label provided ([#27649](https://github.com/ionic-team/ionic-framework/issues/27649)) ([606a892](https://github.com/ionic-team/ionic-framework/commit/606a892e400a531cac5c413dc7492a54ae0e1fea))
### Features
* **datetime:** add part for month/year button ([#27618](https://github.com/ionic-team/ionic-framework/issues/27618)) ([d44422e](https://github.com/ionic-team/ionic-framework/commit/d44422e224374804010746a12f398d3c0d6a9f2c)), closes [#26596](https://github.com/ionic-team/ionic-framework/issues/26596)
* **datetime:** add shadow parts and CSS variables for styling wheel pickers ([#27529](https://github.com/ionic-team/ionic-framework/issues/27529)) ([f2c1845](https://github.com/ionic-team/ionic-framework/commit/f2c1845fba11d8273331c601052f0f34457b6649)), closes [#25945](https://github.com/ionic-team/ionic-framework/issues/25945)
* **input:** add experimental label slot ([#27650](https://github.com/ionic-team/ionic-framework/issues/27650)) ([a45395c](https://github.com/ionic-team/ionic-framework/commit/a45395cc02b2617b80e6c2389fa745e7c20540fc)), closes [#27061](https://github.com/ionic-team/ionic-framework/issues/27061)
* **range:** add label prop ([#27408](https://github.com/ionic-team/ionic-framework/issues/27408)) ([368add2](https://github.com/ionic-team/ionic-framework/commit/368add2a5ca3820a1f9623c96d29bcccfa693fdc))
* return if the pop on NavController was successful ([#27404](https://github.com/ionic-team/ionic-framework/issues/27404)) ([e80f0b2](https://github.com/ionic-team/ionic-framework/commit/e80f0b240968de0d642463e95a35adf8dbffd2e1)), closes [#27403](https://github.com/ionic-team/ionic-framework/issues/27403)
* **segment, segment-button:** update segment value property to accept numbers ([#27222](https://github.com/ionic-team/ionic-framework/issues/27222)) ([ec95ae5](https://github.com/ionic-team/ionic-framework/commit/ec95ae5cd38e3d2b9ec9fdbc9e237fa1241f7a4e)), closes [#27221](https://github.com/ionic-team/ionic-framework/issues/27221)
* **segment:** display segment as a grid and add an ellipsis to overflowing text in a segment button ([#27457](https://github.com/ionic-team/ionic-framework/issues/27457)) ([448e63f](https://github.com/ionic-team/ionic-framework/commit/448e63fef0aca603214cb357dec37e1db2a0f052)), closes [#16532](https://github.com/ionic-team/ionic-framework/issues/16532)
* **select:** add label slot ([#27545](https://github.com/ionic-team/ionic-framework/issues/27545)) ([af92cb2](https://github.com/ionic-team/ionic-framework/commit/af92cb28c8819c88b40192b5dcbafedc1eb2064a)), closes [#26838](https://github.com/ionic-team/ionic-framework/issues/26838)
* **select:** add props to customize toggle icons ([#27648](https://github.com/ionic-team/ionic-framework/issues/27648)) ([95e28b6](https://github.com/ionic-team/ionic-framework/commit/95e28b6629843af7dce62f20bc8e31adfb391990)), closes [#17248](https://github.com/ionic-team/ionic-framework/issues/17248)
* **select:** expose container and label as CSS parts ([#27541](https://github.com/ionic-team/ionic-framework/issues/27541)) ([5c10f88](https://github.com/ionic-team/ionic-framework/commit/5c10f88b2eb4d869966ea9a6d1db34185cefe676)), closes [#27112](https://github.com/ionic-team/ionic-framework/issues/27112)
* **textarea:** add experimental label slot ([#27677](https://github.com/ionic-team/ionic-framework/issues/27677)) ([8bcd9e8](https://github.com/ionic-team/ionic-framework/commit/8bcd9e8b35f252a4efaec7a7be7d69a70beefa9f)), closes [#27061](https://github.com/ionic-team/ionic-framework/issues/27061)
## [7.0.14](https://github.com/ionic-team/ionic-framework/compare/v7.0.13...v7.0.14) (2023-06-15)
### Bug Fixes
* **keyboard:** keyboard events emit correctly when Capacitor is available but the Keyboard plugin is not ([#27655](https://github.com/ionic-team/ionic-framework/issues/27655)) ([7a38a00](https://github.com/ionic-team/ionic-framework/commit/7a38a006a94f1240d93102f2f42bbfc4d76a679e)), closes [#27654](https://github.com/ionic-team/ionic-framework/issues/27654)
* **toast:** allow color for translucent toast ([#27652](https://github.com/ionic-team/ionic-framework/issues/27652)) ([d555375](https://github.com/ionic-team/ionic-framework/commit/d555375c146639b32e85c57a8cdd4d52313ef4cf)), closes [#27567](https://github.com/ionic-team/ionic-framework/issues/27567)
## [7.0.13](https://github.com/ionic-team/ionic-framework/compare/v7.0.12...v7.0.13) (2023-06-14)
### Bug Fixes
* **react:** onDoubleClick fires on components ([#27611](https://github.com/ionic-team/ionic-framework/issues/27611)) ([3e191df](https://github.com/ionic-team/ionic-framework/commit/3e191df3dd43dcdd5a5f717166d4db9834340a2b)), closes [#21320](https://github.com/ionic-team/ionic-framework/issues/21320)
## [7.0.12](https://github.com/ionic-team/ionic-framework/compare/v7.0.11...v7.0.12) (2023-06-08)

View File

@@ -1,10 +0,0 @@
import { NgModule } from "@angular/core";
import { RouterModule } from "@angular/router";
@NgModule({
imports: [
RouterModule.forChild([])
],
exports: [RouterModule]
})
export class VersionTestRoutingModule { }

View File

@@ -3,6 +3,129 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [7.2.1](https://github.com/ionic-team/ionic-framework/compare/v7.2.0...v7.2.1) (2023-07-26)
### Bug Fixes
* **item-sliding:** buttons are not interactive on close ([#27829](https://github.com/ionic-team/ionic-framework/issues/27829)) ([6e4919c](https://github.com/ionic-team/ionic-framework/commit/6e4919caff90fc60988e5cc85ad7161844eb5b51)), closes [#22722](https://github.com/ionic-team/ionic-framework/issues/22722)
* **modal:** body background is reset with inline card modals ([#27835](https://github.com/ionic-team/ionic-framework/issues/27835)) ([38626d9](https://github.com/ionic-team/ionic-framework/commit/38626d96809d1c6be523ea62a4fac1dec73ee891)), closes [#27830](https://github.com/ionic-team/ionic-framework/issues/27830)
# [7.2.0](https://github.com/ionic-team/ionic-framework/compare/v7.1.4...v7.2.0) (2023-07-19)
### Features
* **button:** allow button to increase in height when text wraps ([#27547](https://github.com/ionic-team/ionic-framework/issues/27547)) ([6fe716f](https://github.com/ionic-team/ionic-framework/commit/6fe716fd1320935632854e5d4f741b57801bda92))
* **searchbar:** add name property ([#27737](https://github.com/ionic-team/ionic-framework/issues/27737)) ([7131037](https://github.com/ionic-team/ionic-framework/commit/71310372c94862342d607007ece127340df92a8c)), closes [#27675](https://github.com/ionic-team/ionic-framework/issues/27675)
## [7.1.4](https://github.com/ionic-team/ionic-framework/compare/v7.1.3...v7.1.4) (2023-07-19)
### Bug Fixes
* **angular:** menu button is enabled with Angular Universal builds ([#27814](https://github.com/ionic-team/ionic-framework/issues/27814)) ([2cf1a0b](https://github.com/ionic-team/ionic-framework/commit/2cf1a0bcae7d766aa25951c53470876f9569906c)), closes [#27524](https://github.com/ionic-team/ionic-framework/issues/27524) [#22206](https://github.com/ionic-team/ionic-framework/issues/22206)
* **button:** submit form when pressing enter key ([#27790](https://github.com/ionic-team/ionic-framework/issues/27790)) ([b78af75](https://github.com/ionic-team/ionic-framework/commit/b78af7598f19ca5e1b440ddc0091a62d86321066)), closes [#19368](https://github.com/ionic-team/ionic-framework/issues/19368)
* **radio, checkbox, toggle:** add top and bottom margins when in ion-item ([#27788](https://github.com/ionic-team/ionic-framework/issues/27788)) ([35f0ec5](https://github.com/ionic-team/ionic-framework/commit/35f0ec581a55e0cb080f0793fb94d3e424c06d4d)), closes [#27498](https://github.com/ionic-team/ionic-framework/issues/27498)
* safari no longer adjusts text in landscape ([#27787](https://github.com/ionic-team/ionic-framework/issues/27787)) ([66584b0](https://github.com/ionic-team/ionic-framework/commit/66584b03d0b33507170f954009998c72fb3f7755)), closes [#27782](https://github.com/ionic-team/ionic-framework/issues/27782)
* **textarea:** stacked/floating textarea size is correct on safari ([#27766](https://github.com/ionic-team/ionic-framework/issues/27766)) ([2cb7013](https://github.com/ionic-team/ionic-framework/commit/2cb701395487c6a0304400f6b821659ae6def820)), closes [#27345](https://github.com/ionic-team/ionic-framework/issues/27345)
## [7.1.3](https://github.com/ionic-team/ionic-framework/compare/v7.1.2...v7.1.3) (2023-07-12)
### Bug Fixes
* avoid unresolved import warning on stencil apps ([#27765](https://github.com/ionic-team/ionic-framework/issues/27765)) ([2085025](https://github.com/ionic-team/ionic-framework/commit/2085025644f075e63d04bece56eca4f2beeadbb6)), closes [#27762](https://github.com/ionic-team/ionic-framework/issues/27762)
* **overlays:** first button is not focused on backdrop tap ([#27774](https://github.com/ionic-team/ionic-framework/issues/27774)) ([82c568b](https://github.com/ionic-team/ionic-framework/commit/82c568b8c8e1e9934e1928452aa5216619290e7b)), closes [#27773](https://github.com/ionic-team/ionic-framework/issues/27773)
## [7.1.2](https://github.com/ionic-team/ionic-framework/compare/v7.1.1...v7.1.2) (2023-07-06)
### Bug Fixes
* **back-button:** show correct background on focus + hover with ios ([#27723](https://github.com/ionic-team/ionic-framework/issues/27723)) ([db9a001](https://github.com/ionic-team/ionic-framework/commit/db9a0010df3c7fd0fcd0dbcd8c4ad3b30d022b5c)), closes [#27722](https://github.com/ionic-team/ionic-framework/issues/27722)
* **nav:** root component is mounted with root params ([#27676](https://github.com/ionic-team/ionic-framework/issues/27676)) ([1f06be4](https://github.com/ionic-team/ionic-framework/commit/1f06be4a31965f2a949b4866a585aee6af0af29d)), closes [#27146](https://github.com/ionic-team/ionic-framework/issues/27146)
## [7.1.1](https://github.com/ionic-team/ionic-framework/compare/v7.1.0...v7.1.1) (2023-06-26)
### Bug Fixes
* **textarea:** autogrow resizes correctly ([#27691](https://github.com/ionic-team/ionic-framework/issues/27691)) ([f263611](https://github.com/ionic-team/ionic-framework/commit/f263611260c465bfeefc2db7b1ea04bfa5b54303)), closes [#27688](https://github.com/ionic-team/ionic-framework/issues/27688)
# [7.1.0](https://github.com/ionic-team/ionic-framework/compare/v7.0.14...v7.1.0) (2023-06-21)
### Bug Fixes
* **datetime:** ascending order for years ([#27551](https://github.com/ionic-team/ionic-framework/issues/27551)) ([2098806](https://github.com/ionic-team/ionic-framework/commit/209880622a4600f88c4878e82975ad0492bd55db)), closes [#27422](https://github.com/ionic-team/ionic-framework/issues/27422)
* **select:** hide notch cutout if no visible label provided ([#27649](https://github.com/ionic-team/ionic-framework/issues/27649)) ([606a892](https://github.com/ionic-team/ionic-framework/commit/606a892e400a531cac5c413dc7492a54ae0e1fea))
### Features
* **datetime:** add part for month/year button ([#27618](https://github.com/ionic-team/ionic-framework/issues/27618)) ([d44422e](https://github.com/ionic-team/ionic-framework/commit/d44422e224374804010746a12f398d3c0d6a9f2c)), closes [#26596](https://github.com/ionic-team/ionic-framework/issues/26596)
* **datetime:** add shadow parts and CSS variables for styling wheel pickers ([#27529](https://github.com/ionic-team/ionic-framework/issues/27529)) ([f2c1845](https://github.com/ionic-team/ionic-framework/commit/f2c1845fba11d8273331c601052f0f34457b6649)), closes [#25945](https://github.com/ionic-team/ionic-framework/issues/25945)
* **input:** add experimental label slot ([#27650](https://github.com/ionic-team/ionic-framework/issues/27650)) ([a45395c](https://github.com/ionic-team/ionic-framework/commit/a45395cc02b2617b80e6c2389fa745e7c20540fc)), closes [#27061](https://github.com/ionic-team/ionic-framework/issues/27061)
* **range:** add label prop ([#27408](https://github.com/ionic-team/ionic-framework/issues/27408)) ([368add2](https://github.com/ionic-team/ionic-framework/commit/368add2a5ca3820a1f9623c96d29bcccfa693fdc))
* **segment, segment-button:** update segment value property to accept numbers ([#27222](https://github.com/ionic-team/ionic-framework/issues/27222)) ([ec95ae5](https://github.com/ionic-team/ionic-framework/commit/ec95ae5cd38e3d2b9ec9fdbc9e237fa1241f7a4e)), closes [#27221](https://github.com/ionic-team/ionic-framework/issues/27221)
* **segment:** display segment as a grid and add an ellipsis to overflowing text in a segment button ([#27457](https://github.com/ionic-team/ionic-framework/issues/27457)) ([448e63f](https://github.com/ionic-team/ionic-framework/commit/448e63fef0aca603214cb357dec37e1db2a0f052)), closes [#16532](https://github.com/ionic-team/ionic-framework/issues/16532)
* **select:** add label slot ([#27545](https://github.com/ionic-team/ionic-framework/issues/27545)) ([af92cb2](https://github.com/ionic-team/ionic-framework/commit/af92cb28c8819c88b40192b5dcbafedc1eb2064a)), closes [#26838](https://github.com/ionic-team/ionic-framework/issues/26838)
* **select:** add props to customize toggle icons ([#27648](https://github.com/ionic-team/ionic-framework/issues/27648)) ([95e28b6](https://github.com/ionic-team/ionic-framework/commit/95e28b6629843af7dce62f20bc8e31adfb391990)), closes [#17248](https://github.com/ionic-team/ionic-framework/issues/17248)
* **select:** expose container and label as CSS parts ([#27541](https://github.com/ionic-team/ionic-framework/issues/27541)) ([5c10f88](https://github.com/ionic-team/ionic-framework/commit/5c10f88b2eb4d869966ea9a6d1db34185cefe676)), closes [#27112](https://github.com/ionic-team/ionic-framework/issues/27112)
* **textarea:** add experimental label slot ([#27677](https://github.com/ionic-team/ionic-framework/issues/27677)) ([8bcd9e8](https://github.com/ionic-team/ionic-framework/commit/8bcd9e8b35f252a4efaec7a7be7d69a70beefa9f)), closes [#27061](https://github.com/ionic-team/ionic-framework/issues/27061)
## [7.0.14](https://github.com/ionic-team/ionic-framework/compare/v7.0.13...v7.0.14) (2023-06-15)
### Bug Fixes
* **keyboard:** keyboard events emit correctly when Capacitor is available but the Keyboard plugin is not ([#27655](https://github.com/ionic-team/ionic-framework/issues/27655)) ([7a38a00](https://github.com/ionic-team/ionic-framework/commit/7a38a006a94f1240d93102f2f42bbfc4d76a679e)), closes [#27654](https://github.com/ionic-team/ionic-framework/issues/27654)
* **toast:** allow color for translucent toast ([#27652](https://github.com/ionic-team/ionic-framework/issues/27652)) ([d555375](https://github.com/ionic-team/ionic-framework/commit/d555375c146639b32e85c57a8cdd4d52313ef4cf)), closes [#27567](https://github.com/ionic-team/ionic-framework/issues/27567)
## [7.0.13](https://github.com/ionic-team/ionic-framework/compare/v7.0.12...v7.0.13) (2023-06-14)
### Bug Fixes
* **react:** onDoubleClick fires on components ([#27611](https://github.com/ionic-team/ionic-framework/issues/27611)) ([3e191df](https://github.com/ionic-team/ionic-framework/commit/3e191df3dd43dcdd5a5f717166d4db9834340a2b)), closes [#21320](https://github.com/ionic-team/ionic-framework/issues/21320)
## [7.0.12](https://github.com/ionic-team/ionic-framework/compare/v7.0.11...v7.0.12) (2023-06-08)

View File

@@ -425,6 +425,13 @@ ion-datetime,event,ionFocus,void,true
ion-datetime,css-prop,--background
ion-datetime,css-prop,--background-rgb
ion-datetime,css-prop,--title-color
ion-datetime,css-prop,--wheel-fade-background-rgb
ion-datetime,css-prop,--wheel-highlight-background
ion-datetime,part,month-year-button
ion-datetime,part,time-button
ion-datetime,part,time-button active
ion-datetime,part,wheel-item
ion-datetime,part,wheel-item active
ion-datetime-button,shadow
ion-datetime-button,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record<never, never> | undefined,'primary',false,true
@@ -1030,6 +1037,7 @@ ion-range,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secon
ion-range,prop,debounce,number | undefined,undefined,false,false
ion-range,prop,disabled,boolean,false,false,false
ion-range,prop,dualKnobs,boolean,false,false,false
ion-range,prop,label,string | undefined,undefined,false,false
ion-range,prop,labelPlacement,"end" | "fixed" | "start",'start',false,false
ion-range,prop,legacy,boolean | undefined,undefined,false,false
ion-range,prop,max,number,100,false,false
@@ -1149,6 +1157,7 @@ ion-searchbar,prop,disabled,boolean,false,false,false
ion-searchbar,prop,enterkeyhint,"done" | "enter" | "go" | "next" | "previous" | "search" | "send" | undefined,undefined,false,false
ion-searchbar,prop,inputmode,"decimal" | "email" | "none" | "numeric" | "search" | "tel" | "text" | "url" | undefined,undefined,false,false
ion-searchbar,prop,mode,"ios" | "md",undefined,false,false
ion-searchbar,prop,name,string,this.inputId,false,false
ion-searchbar,prop,placeholder,string,'Search',false,false
ion-searchbar,prop,searchIcon,string | undefined,undefined,false,false
ion-searchbar,prop,showCancelButton,"always" | "focus" | "never",'never',false,false
@@ -1183,7 +1192,7 @@ ion-segment,prop,mode,"ios" | "md",undefined,false,false
ion-segment,prop,scrollable,boolean,false,false,false
ion-segment,prop,selectOnFocus,boolean,false,false,false
ion-segment,prop,swipeGesture,boolean,true,false,false
ion-segment,prop,value,string | undefined,undefined,false,false
ion-segment,prop,value,number | string | undefined,undefined,false,false
ion-segment,event,ionChange,SegmentChangeEventDetail,true
ion-segment,css-prop,--background
@@ -1192,7 +1201,7 @@ ion-segment-button,prop,disabled,boolean,false,false,false
ion-segment-button,prop,layout,"icon-bottom" | "icon-end" | "icon-hide" | "icon-start" | "icon-top" | "label-hide" | undefined,'icon-top',false,false
ion-segment-button,prop,mode,"ios" | "md",undefined,false,false
ion-segment-button,prop,type,"button" | "reset" | "submit",'button',false,false
ion-segment-button,prop,value,string,'ion-sb-' + ids++,false,false
ion-segment-button,prop,value,number | string,'ion-sb-' + ids++,false,false
ion-segment-button,css-prop,--background
ion-segment-button,css-prop,--background-checked
ion-segment-button,css-prop,--background-focused
@@ -1230,6 +1239,7 @@ ion-select,prop,cancelText,string,'Cancel',false,false
ion-select,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record<never, never> | undefined,undefined,false,true
ion-select,prop,compareWith,((currentValue: any, compareValue: any) => boolean) | null | string | undefined,undefined,false,false
ion-select,prop,disabled,boolean,false,false,false
ion-select,prop,expandedIcon,string | undefined,undefined,false,false
ion-select,prop,fill,"outline" | "solid" | undefined,undefined,false,false
ion-select,prop,interface,"action-sheet" | "alert" | "popover",'alert',false,false
ion-select,prop,interfaceOptions,any,{},false,false
@@ -1244,6 +1254,7 @@ ion-select,prop,okText,string,'OK',false,false
ion-select,prop,placeholder,string | undefined,undefined,false,false
ion-select,prop,selectedText,null | string | undefined,undefined,false,false
ion-select,prop,shape,"round" | undefined,undefined,false,false
ion-select,prop,toggleIcon,string | undefined,undefined,false,false
ion-select,prop,value,any,undefined,false,false
ion-select,method,open,open(event?: UIEvent) => Promise<any>
ion-select,event,ionBlur,void,true
@@ -1266,7 +1277,9 @@ ion-select,css-prop,--padding-top
ion-select,css-prop,--placeholder-color
ion-select,css-prop,--placeholder-opacity
ion-select,css-prop,--ripple-color
ion-select,part,container
ion-select,part,icon
ion-select,part,label
ion-select,part,placeholder
ion-select,part,text

156
core/package-lock.json generated
View File

@@ -1,29 +1,33 @@
{
"name": "@ionic/core",
"version": "7.0.12",
"version": "7.2.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@ionic/core",
"version": "7.0.12",
"version": "7.2.1",
"license": "MIT",
"dependencies": {
"@stencil/core": "^3.3.1",
"ionicons": "^7.1.0",
"@stencil/core": "^3.4.0",
"ionicons": "7.1.0",
"tslib": "^2.1.0"
},
"devDependencies": {
"@axe-core/playwright": "^4.7.2",
"@axe-core/playwright": "^4.7.3",
"@capacitor/core": "^5.2.2",
"@capacitor/haptics": "^5.0.6",
"@capacitor/keyboard": "^5.0.6",
"@capacitor/status-bar": "^5.0.6",
"@ionic/eslint-config": "^0.3.0",
"@ionic/prettier-config": "^2.0.0",
"@jest/core": "^27.5.1",
"@playwright/test": "^1.34.3",
"@playwright/test": "^1.36.2",
"@rollup/plugin-node-resolve": "^8.4.0",
"@rollup/plugin-virtual": "^2.0.3",
"@stencil/angular-output-target": "^0.7.1",
"@stencil/react-output-target": "^0.5.3",
"@stencil/sass": "^3.0.4",
"@stencil/sass": "^3.0.5",
"@stencil/vue-output-target": "^0.8.6",
"@types/jest": "^27.5.2",
"@types/node": "^14.6.0",
@@ -53,9 +57,9 @@
"dev": true
},
"node_modules/@axe-core/playwright": {
"version": "4.7.2",
"resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.7.2.tgz",
"integrity": "sha512-k5f6KGVkPsZ7wR56XnRZYS4b1Wd8wkVTpjqeScFYZMTJxKVv3FGKoBqQVBoCphWtP0oMWQc41zQgHO6gaYTcQw==",
"version": "4.7.3",
"resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.7.3.tgz",
"integrity": "sha512-v2PRgAyGvop7bamrTpNJtc5b1R7giAPnMzZXrS/VDZBCY5+uwVYtCNgDvBsqp5P1QMZxUMoBN+CERJUTMjFN0A==",
"dev": true,
"dependencies": {
"axe-core": "^4.7.0"
@@ -602,6 +606,42 @@
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
"dev": true
},
"node_modules/@capacitor/core": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/@capacitor/core/-/core-5.2.2.tgz",
"integrity": "sha512-3jKECZC5+YD2rljMZm1e/K3AYyoxUmLDZCyofTPbRYPBSI0wJh5ZCkX+XIGzNM0o/Wokl3Voa1JB8xsLC0MPxA==",
"dev": true,
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/@capacitor/haptics": {
"version": "5.0.6",
"resolved": "https://registry.npmjs.org/@capacitor/haptics/-/haptics-5.0.6.tgz",
"integrity": "sha512-UrMcR7p2X10ql4VLlowUuH/VckTeu0lj+RQpekxox14uxDmu5AGIFDK/iDTi8W6QZkxTJRZK6sbCjgwYgNJ7Pw==",
"dev": true,
"peerDependencies": {
"@capacitor/core": "^5.0.0"
}
},
"node_modules/@capacitor/keyboard": {
"version": "5.0.6",
"resolved": "https://registry.npmjs.org/@capacitor/keyboard/-/keyboard-5.0.6.tgz",
"integrity": "sha512-9GewAa/y2Hwkdw/Be8MTdiAjrFZ7TPDKpR44M0Y/0QMnK+mBbgzcoZ/UkuumWv6e2F1IAI+VY5eYVQHDeZcRoA==",
"dev": true,
"peerDependencies": {
"@capacitor/core": "^5.0.0"
}
},
"node_modules/@capacitor/status-bar": {
"version": "5.0.6",
"resolved": "https://registry.npmjs.org/@capacitor/status-bar/-/status-bar-5.0.6.tgz",
"integrity": "sha512-7od8CxsBnot1XMK3IeOkproFL4hgoKoWAc3pwUvmDOkQsXoxwQm4SR9mLwQavv1XfxtHbFV9Ukd7FwMxOPSViw==",
"dev": true,
"peerDependencies": {
"@capacitor/core": "^5.0.0"
}
},
"node_modules/@eslint/eslintrc": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
@@ -1501,19 +1541,19 @@
}
},
"node_modules/@playwright/test": {
"version": "1.34.3",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.34.3.tgz",
"integrity": "sha512-zPLef6w9P6T/iT6XDYG3mvGOqOyb6eHaV9XtkunYs0+OzxBtrPAAaHotc0X+PJ00WPPnLfFBTl7mf45Mn8DBmw==",
"version": "1.36.2",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.36.2.tgz",
"integrity": "sha512-2rVZeyPRjxfPH6J0oGJqE8YxiM1IBRyM8hyrXYK7eSiAqmbNhxwcLa7dZ7fy9Kj26V7FYia5fh9XJRq4Dqme+g==",
"dev": true,
"dependencies": {
"@types/node": "*",
"playwright-core": "1.34.3"
"playwright-core": "1.36.2"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
"node": ">=14"
"node": ">=16"
},
"optionalDependencies": {
"fsevents": "2.3.2"
@@ -1594,9 +1634,9 @@
}
},
"node_modules/@stencil/core": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-3.3.1.tgz",
"integrity": "sha512-I+660Oe9OMLiU+thjV1GgcI27dcvrSpF3xisHWBOU/4mzRtho3YW0cI8lSjcqyB1KirGTA6QeQ0Xif5UHqn8hw==",
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-3.4.0.tgz",
"integrity": "sha512-kEtPtV6QegME8YgMjWrhS7KktItbhqOpAuK9aXypDdI/7bLU9iM/4DtnQGWY/DARBophk+XRBfNXcE62Bmi0dw==",
"bin": {
"stencil": "bin/stencil"
},
@@ -1615,10 +1655,14 @@
}
},
"node_modules/@stencil/sass": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@stencil/sass/-/sass-3.0.4.tgz",
"integrity": "sha512-k1dP0A2QBx62m250FATc1hErXxXs6Jnf4TBxdL1C/dc32Kzz2n5aCT4SodBz0ebT5WMnITauZyFqYxzCzDoKag==",
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@stencil/sass/-/sass-3.0.5.tgz",
"integrity": "sha512-9nyllMXOEvHywo6fP2iwXgnq32A+OOUE36Aq7iUjzwT3wdr04qsvupO1JNIyRvmvCDF15hOKXztrZH1/wDu2Zg==",
"dev": true,
"engines": {
"node": ">=12.0.0",
"npm": ">=6.0.0"
},
"peerDependencies": {
"@stencil/core": ">=2.0.0 || >=3.0.0-beta.0 || >= 4.0.0-beta.0 || >= 4.0.0"
}
@@ -8150,15 +8194,15 @@
}
},
"node_modules/playwright-core": {
"version": "1.34.3",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.34.3.tgz",
"integrity": "sha512-2pWd6G7OHKemc5x1r1rp8aQcpvDh7goMBZlJv6Co5vCNLVcQJdhxRL09SGaY6HcyHH9aT4tiynZabMofVasBYw==",
"version": "1.36.2",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.36.2.tgz",
"integrity": "sha512-sQYZt31dwkqxOrP7xy2ggDfEzUxM1lodjhsQ3NMMv5uGTRDsLxU0e4xf4wwMkF2gplIxf17QMBCodSFgm6bFVQ==",
"dev": true,
"bin": {
"playwright-core": "cli.js"
},
"engines": {
"node": ">=14"
"node": ">=16"
}
},
"node_modules/postcss": {
@@ -10335,9 +10379,9 @@
},
"dependencies": {
"@axe-core/playwright": {
"version": "4.7.2",
"resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.7.2.tgz",
"integrity": "sha512-k5f6KGVkPsZ7wR56XnRZYS4b1Wd8wkVTpjqeScFYZMTJxKVv3FGKoBqQVBoCphWtP0oMWQc41zQgHO6gaYTcQw==",
"version": "4.7.3",
"resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.7.3.tgz",
"integrity": "sha512-v2PRgAyGvop7bamrTpNJtc5b1R7giAPnMzZXrS/VDZBCY5+uwVYtCNgDvBsqp5P1QMZxUMoBN+CERJUTMjFN0A==",
"dev": true,
"requires": {
"axe-core": "^4.7.0"
@@ -10743,6 +10787,36 @@
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
"dev": true
},
"@capacitor/core": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/@capacitor/core/-/core-5.2.2.tgz",
"integrity": "sha512-3jKECZC5+YD2rljMZm1e/K3AYyoxUmLDZCyofTPbRYPBSI0wJh5ZCkX+XIGzNM0o/Wokl3Voa1JB8xsLC0MPxA==",
"dev": true,
"requires": {
"tslib": "^2.1.0"
}
},
"@capacitor/haptics": {
"version": "5.0.6",
"resolved": "https://registry.npmjs.org/@capacitor/haptics/-/haptics-5.0.6.tgz",
"integrity": "sha512-UrMcR7p2X10ql4VLlowUuH/VckTeu0lj+RQpekxox14uxDmu5AGIFDK/iDTi8W6QZkxTJRZK6sbCjgwYgNJ7Pw==",
"dev": true,
"requires": {}
},
"@capacitor/keyboard": {
"version": "5.0.6",
"resolved": "https://registry.npmjs.org/@capacitor/keyboard/-/keyboard-5.0.6.tgz",
"integrity": "sha512-9GewAa/y2Hwkdw/Be8MTdiAjrFZ7TPDKpR44M0Y/0QMnK+mBbgzcoZ/UkuumWv6e2F1IAI+VY5eYVQHDeZcRoA==",
"dev": true,
"requires": {}
},
"@capacitor/status-bar": {
"version": "5.0.6",
"resolved": "https://registry.npmjs.org/@capacitor/status-bar/-/status-bar-5.0.6.tgz",
"integrity": "sha512-7od8CxsBnot1XMK3IeOkproFL4hgoKoWAc3pwUvmDOkQsXoxwQm4SR9mLwQavv1XfxtHbFV9Ukd7FwMxOPSViw==",
"dev": true,
"requires": {}
},
"@eslint/eslintrc": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
@@ -11381,14 +11455,14 @@
}
},
"@playwright/test": {
"version": "1.34.3",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.34.3.tgz",
"integrity": "sha512-zPLef6w9P6T/iT6XDYG3mvGOqOyb6eHaV9XtkunYs0+OzxBtrPAAaHotc0X+PJ00WPPnLfFBTl7mf45Mn8DBmw==",
"version": "1.36.2",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.36.2.tgz",
"integrity": "sha512-2rVZeyPRjxfPH6J0oGJqE8YxiM1IBRyM8hyrXYK7eSiAqmbNhxwcLa7dZ7fy9Kj26V7FYia5fh9XJRq4Dqme+g==",
"dev": true,
"requires": {
"@types/node": "*",
"fsevents": "2.3.2",
"playwright-core": "1.34.3"
"playwright-core": "1.36.2"
}
},
"@rollup/plugin-node-resolve": {
@@ -11450,9 +11524,9 @@
"requires": {}
},
"@stencil/core": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-3.3.1.tgz",
"integrity": "sha512-I+660Oe9OMLiU+thjV1GgcI27dcvrSpF3xisHWBOU/4mzRtho3YW0cI8lSjcqyB1KirGTA6QeQ0Xif5UHqn8hw=="
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-3.4.0.tgz",
"integrity": "sha512-kEtPtV6QegME8YgMjWrhS7KktItbhqOpAuK9aXypDdI/7bLU9iM/4DtnQGWY/DARBophk+XRBfNXcE62Bmi0dw=="
},
"@stencil/react-output-target": {
"version": "0.5.3",
@@ -11462,9 +11536,9 @@
"requires": {}
},
"@stencil/sass": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@stencil/sass/-/sass-3.0.4.tgz",
"integrity": "sha512-k1dP0A2QBx62m250FATc1hErXxXs6Jnf4TBxdL1C/dc32Kzz2n5aCT4SodBz0ebT5WMnITauZyFqYxzCzDoKag==",
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@stencil/sass/-/sass-3.0.5.tgz",
"integrity": "sha512-9nyllMXOEvHywo6fP2iwXgnq32A+OOUE36Aq7iUjzwT3wdr04qsvupO1JNIyRvmvCDF15hOKXztrZH1/wDu2Zg==",
"dev": true,
"requires": {}
},
@@ -16258,9 +16332,9 @@
}
},
"playwright-core": {
"version": "1.34.3",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.34.3.tgz",
"integrity": "sha512-2pWd6G7OHKemc5x1r1rp8aQcpvDh7goMBZlJv6Co5vCNLVcQJdhxRL09SGaY6HcyHH9aT4tiynZabMofVasBYw==",
"version": "1.36.2",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.36.2.tgz",
"integrity": "sha512-sQYZt31dwkqxOrP7xy2ggDfEzUxM1lodjhsQ3NMMv5uGTRDsLxU0e4xf4wwMkF2gplIxf17QMBCodSFgm6bFVQ==",
"dev": true
},
"postcss": {

View File

@@ -1,6 +1,6 @@
{
"name": "@ionic/core",
"version": "7.0.12",
"version": "7.2.1",
"description": "Base components for Ionic",
"keywords": [
"ionic",
@@ -31,21 +31,25 @@
"loader/"
],
"dependencies": {
"@stencil/core": "^3.3.1",
"ionicons": "^7.1.0",
"@stencil/core": "^3.4.0",
"ionicons": "7.1.0",
"tslib": "^2.1.0"
},
"devDependencies": {
"@axe-core/playwright": "^4.7.2",
"@axe-core/playwright": "^4.7.3",
"@capacitor/core": "^5.2.2",
"@capacitor/haptics": "^5.0.6",
"@capacitor/keyboard": "^5.0.6",
"@capacitor/status-bar": "^5.0.6",
"@ionic/eslint-config": "^0.3.0",
"@ionic/prettier-config": "^2.0.0",
"@jest/core": "^27.5.1",
"@playwright/test": "^1.34.3",
"@playwright/test": "^1.36.2",
"@rollup/plugin-node-resolve": "^8.4.0",
"@rollup/plugin-virtual": "^2.0.3",
"@stencil/angular-output-target": "^0.7.1",
"@stencil/react-output-target": "^0.5.3",
"@stencil/sass": "^3.0.4",
"@stencil/sass": "^3.0.5",
"@stencil/vue-output-target": "^0.8.6",
"@types/jest": "^27.5.2",
"@types/node": "^14.6.0",

View File

@@ -33,7 +33,7 @@ import { RefresherEventDetail } from "./components/refresher/refresher-interface
import { ItemReorderEventDetail } from "./components/reorder-group/reorder-group-interface";
import { NavigationHookCallback } from "./components/route/route-interface";
import { SearchbarChangeEventDetail, SearchbarInputEventDetail } from "./components/searchbar/searchbar-interface";
import { SegmentChangeEventDetail } from "./components/segment/segment-interface";
import { SegmentChangeEventDetail, SegmentValue } from "./components/segment/segment-interface";
import { SegmentButtonLayout } from "./components/segment-button/segment-button-interface";
import { SelectChangeEventDetail, SelectCompareFn, SelectInterface } from "./components/select/select-interface";
import { SelectPopoverOption } from "./components/select-popover/select-popover-interface";
@@ -69,7 +69,7 @@ export { RefresherEventDetail } from "./components/refresher/refresher-interface
export { ItemReorderEventDetail } from "./components/reorder-group/reorder-group-interface";
export { NavigationHookCallback } from "./components/route/route-interface";
export { SearchbarChangeEventDetail, SearchbarInputEventDetail } from "./components/searchbar/searchbar-interface";
export { SegmentChangeEventDetail } from "./components/segment/segment-interface";
export { SegmentChangeEventDetail, SegmentValue } from "./components/segment/segment-interface";
export { SegmentButtonLayout } from "./components/segment-button/segment-button-interface";
export { SelectChangeEventDetail, SelectCompareFn, SelectInterface } from "./components/select/select-interface";
export { SelectPopoverOption } from "./components/select-popover/select-popover-interface";
@@ -947,7 +947,7 @@ export namespace Components {
*/
"value"?: string | string[] | null;
/**
* Values used to create the list of selectable years. By default the year values range between the `min` and `max` datetime inputs. However, to control exactly which years to display, the `yearValues` input can take a number, an array of numbers, or string of comma separated numbers. For example, to show upcoming and recent leap years, then this input's value would be `yearValues="2024,2020,2016,2012,2008"`.
* Values used to create the list of selectable years. By default the year values range between the `min` and `max` datetime inputs. However, to control exactly which years to display, the `yearValues` input can take a number, an array of numbers, or string of comma separated numbers. For example, to show upcoming and recent leap years, then this input's value would be `yearValues="2008,2012,2016,2020,2024"`.
*/
"yearValues"?: number[] | number | string;
}
@@ -1214,7 +1214,7 @@ export namespace Components {
*/
"inputmode"?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
/**
* The visible label associated with the input.
* The visible label associated with the input. Use this if you need to render a plaintext label. The `label` property will take priority over the `label` slot if both are used.
*/
"label"?: string;
/**
@@ -2176,7 +2176,7 @@ export namespace Components {
*/
"side": PositionSide;
/**
* Describes how to calculate the popover width. If `"cover"`, the popover width will match the width of the trigger. If `"auto"`, the popover width will be determined by the content in the popover.
* Describes how to calculate the popover width. If `"cover"`, the popover width will match the width of the trigger. If `"auto"`, the popover width will be set to a static default value.
*/
"size": PopoverSize;
/**
@@ -2289,6 +2289,10 @@ export namespace Components {
* Show two knobs.
*/
"dualKnobs": boolean;
/**
* The text to display as the control's label. Use this over the `label` slot if you only need plain text. The `label` property will take priority over the `label` slot if both are used.
*/
"label"?: string;
/**
* Where to place the label relative to the range. `"start"`: The label will appear to the left of the range in LTR and to the right in RTL. `"end"`: The label will appear to the right of the range in LTR and to the left in RTL. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
*/
@@ -2574,6 +2578,10 @@ export namespace Components {
* The mode determines which platform styles to use.
*/
"mode"?: "ios" | "md";
/**
* If used in a form, set the name of the control, which is submitted with the form data.
*/
"name": string;
/**
* Set the input's placeholder. `placeholder` can accept either plaintext or HTML as a string. To display characters normally reserved for HTML, they must be escaped. For example `<Ionic>` would become `&lt;Ionic&gt;` For more information: [Security Documentation](https://ionicframework.com/docs/faq/security)
*/
@@ -2635,7 +2643,7 @@ export namespace Components {
/**
* the value of the segment.
*/
"value"?: string;
"value"?: SegmentValue;
}
interface IonSegmentButton {
/**
@@ -2658,7 +2666,7 @@ export namespace Components {
/**
* The value of the segment button.
*/
"value": string;
"value": SegmentValue;
}
interface IonSelect {
/**
@@ -2677,6 +2685,10 @@ export namespace Components {
* If `true`, the user cannot interact with the select.
*/
"disabled": boolean;
/**
* The toggle icon to show when the select is open. If defined, the icon rotation behavior in `md` mode will be disabled. If undefined, `toggleIcon` will be used for when the select is both open and closed.
*/
"expandedIcon"?: string;
/**
* The fill for the item. If `"solid"` the item will have a background. If `"outline"` the item will be transparent with a border. Only available in `md` mode.
*/
@@ -2694,7 +2706,7 @@ export namespace Components {
*/
"justify": 'start' | 'end' | 'space-between';
/**
* The visible label associated with the select.
* The visible label associated with the select. Use this if you need to render a plaintext label. The `label` property will take priority over the `label` slot if both are used.
*/
"label"?: string;
/**
@@ -2738,6 +2750,10 @@ export namespace Components {
* The shape of the select. If "round" it will have an increased border radius.
*/
"shape"?: 'round';
/**
* The toggle icon to use. Defaults to `chevronExpand` for `ios` mode, or `caretDownSharp` for `md` mode.
*/
"toggleIcon"?: string;
/**
* The value of the select.
*/
@@ -2980,7 +2996,7 @@ export namespace Components {
*/
"inputmode"?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
/**
* The visible label associated with the textarea.
* The visible label associated with the textarea. Use this if you need to render a plaintext label. The `label` property will take priority over the `label` slot if both are used.
*/
"label"?: string;
/**
@@ -4969,7 +4985,7 @@ declare namespace LocalJSX {
*/
"value"?: string | string[] | null;
/**
* Values used to create the list of selectable years. By default the year values range between the `min` and `max` datetime inputs. However, to control exactly which years to display, the `yearValues` input can take a number, an array of numbers, or string of comma separated numbers. For example, to show upcoming and recent leap years, then this input's value would be `yearValues="2024,2020,2016,2012,2008"`.
* Values used to create the list of selectable years. By default the year values range between the `min` and `max` datetime inputs. However, to control exactly which years to display, the `yearValues` input can take a number, an array of numbers, or string of comma separated numbers. For example, to show upcoming and recent leap years, then this input's value would be `yearValues="2008,2012,2016,2020,2024"`.
*/
"yearValues"?: number[] | number | string;
}
@@ -5244,7 +5260,7 @@ declare namespace LocalJSX {
*/
"inputmode"?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
/**
* The visible label associated with the input.
* The visible label associated with the input. Use this if you need to render a plaintext label. The `label` property will take priority over the `label` slot if both are used.
*/
"label"?: string;
/**
@@ -5288,7 +5304,7 @@ declare namespace LocalJSX {
*/
"onIonBlur"?: (event: IonInputCustomEvent<FocusEvent>) => void;
/**
* The `ionChange` event is fired for `<ion-input>` elements when the user modifies the element's value. Unlike the `ionInput` event, the `ionChange` event is not necessarily fired for each alteration to an element's value. Depending on the way the users interacts with the element, the `ionChange` event fires at a different moment: - When the user commits the change explicitly (e.g. by selecting a date from a date picker for `<ion-input type="date">`, pressing the "Enter" key, etc.). - When the element loses focus after its value has changed: for elements where the user's interaction is typing.
* The `ionChange` event is fired when the user modifies the input's value. Unlike the `ionInput` event, the `ionChange` event is only fired when changes are committed, not as the user types. Depending on the way the users interacts with the element, the `ionChange` event fires at a different moment: - When the user commits the change explicitly (e.g. by selecting a date from a date picker for `<ion-input type="date">`, pressing the "Enter" key, etc.). - When the element loses focus after its value has changed: for elements where the user's interaction is typing.
*/
"onIonChange"?: (event: IonInputCustomEvent<InputChangeEventDetail>) => void;
/**
@@ -5296,7 +5312,7 @@ declare namespace LocalJSX {
*/
"onIonFocus"?: (event: IonInputCustomEvent<FocusEvent>) => void;
/**
* The `ionInput` event fires when the `value` of an `<ion-input>` element has been changed. For elements that accept text input (`type=text`, `type=tel`, etc.), the interface is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others, the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If the input is cleared on edit, the type is `null`.
* The `ionInput` event is fired each time the user modifies the input's value. Unlike the `ionChange` event, the `ionInput` event is fired for each alteration to the input's value. This typically happens for each keystroke as the user types. For elements that accept text input (`type=text`, `type=tel`, etc.), the interface is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others, the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If the input is cleared on edit, the type is `null`.
*/
"onIonInput"?: (event: IonInputCustomEvent<InputInputEventDetail>) => void;
/**
@@ -6173,7 +6189,7 @@ declare namespace LocalJSX {
*/
"side"?: PositionSide;
/**
* Describes how to calculate the popover width. If `"cover"`, the popover width will match the width of the trigger. If `"auto"`, the popover width will be determined by the content in the popover.
* Describes how to calculate the popover width. If `"cover"`, the popover width will match the width of the trigger. If `"auto"`, the popover width will be set to a static default value.
*/
"size"?: PopoverSize;
/**
@@ -6304,6 +6320,10 @@ declare namespace LocalJSX {
* Show two knobs.
*/
"dualKnobs"?: boolean;
/**
* The text to display as the control's label. Use this over the `label` slot if you only need plain text. The `label` property will take priority over the `label` slot if both are used.
*/
"label"?: string;
/**
* Where to place the label relative to the range. `"start"`: The label will appear to the left of the range in LTR and to the right in RTL. `"end"`: The label will appear to the right of the range in LTR and to the left in RTL. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
*/
@@ -6609,6 +6629,10 @@ declare namespace LocalJSX {
* The mode determines which platform styles to use.
*/
"mode"?: "ios" | "md";
/**
* If used in a form, set the name of the control, which is submitted with the form data.
*/
"name"?: string;
/**
* Emitted when the input loses focus.
*/
@@ -6706,7 +6730,7 @@ declare namespace LocalJSX {
/**
* the value of the segment.
*/
"value"?: string;
"value"?: SegmentValue;
}
interface IonSegmentButton {
/**
@@ -6728,7 +6752,7 @@ declare namespace LocalJSX {
/**
* The value of the segment button.
*/
"value"?: string;
"value"?: SegmentValue;
}
interface IonSelect {
/**
@@ -6747,6 +6771,10 @@ declare namespace LocalJSX {
* If `true`, the user cannot interact with the select.
*/
"disabled"?: boolean;
/**
* The toggle icon to show when the select is open. If defined, the icon rotation behavior in `md` mode will be disabled. If undefined, `toggleIcon` will be used for when the select is both open and closed.
*/
"expandedIcon"?: string;
/**
* The fill for the item. If `"solid"` the item will have a background. If `"outline"` the item will be transparent with a border. Only available in `md` mode.
*/
@@ -6764,7 +6792,7 @@ declare namespace LocalJSX {
*/
"justify"?: 'start' | 'end' | 'space-between';
/**
* The visible label associated with the select.
* The visible label associated with the select. Use this if you need to render a plaintext label. The `label` property will take priority over the `label` slot if both are used.
*/
"label"?: string;
/**
@@ -6827,6 +6855,10 @@ declare namespace LocalJSX {
* The shape of the select. If "round" it will have an increased border radius.
*/
"shape"?: 'round';
/**
* The toggle icon to use. Defaults to `chevronExpand` for `ios` mode, or `caretDownSharp` for `md` mode.
*/
"toggleIcon"?: string;
/**
* The value of the select.
*/
@@ -7066,7 +7098,7 @@ declare namespace LocalJSX {
*/
"inputmode"?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
/**
* The visible label associated with the textarea.
* The visible label associated with the textarea. Use this if you need to render a plaintext label. The `label` property will take priority over the `label` slot if both are used.
*/
"label"?: string;
/**
@@ -7098,7 +7130,7 @@ declare namespace LocalJSX {
*/
"onIonBlur"?: (event: IonTextareaCustomEvent<FocusEvent>) => void;
/**
* The `ionChange` event is fired for `<ion-textarea>` elements when the user modifies the element's value. Unlike the `ionInput` event, the `ionChange` event is not necessarily fired for each alteration to an element's value. The `ionChange` event is fired when the element loses focus after its value has been modified.
* The `ionChange` event is fired when the user modifies the textarea's value. Unlike the `ionInput` event, the `ionChange` event is fired when the element loses focus after its value has been modified.
*/
"onIonChange"?: (event: IonTextareaCustomEvent<TextareaChangeEventDetail>) => void;
/**
@@ -7106,7 +7138,7 @@ declare namespace LocalJSX {
*/
"onIonFocus"?: (event: IonTextareaCustomEvent<FocusEvent>) => void;
/**
* The `ionInput` event fires when the `value` of an `<ion-textarea>` element has been changed. When `clearOnEdit` is enabled, the `ionInput` event will be fired when the user clears the textarea by performing a keydown event.
* The `ionInput` event is fired each time the user modifies the textarea's value. Unlike the `ionChange` event, the `ionInput` event is fired for each alteration to the textarea's value. This typically happens for each keystroke as the user types. When `clearOnEdit` is enabled, the `ionInput` event will be fired when the user clears the textarea by performing a keydown event.
*/
"onIonInput"?: (event: IonTextareaCustomEvent<TextareaInputEventDetail>) => void;
/**

View File

@@ -1,8 +1,8 @@
import type { ComponentInterface, EventEmitter } from '@stencil/core';
import { Component, Element, Event, Host, Listen, Method, Prop, Watch, h } from '@stencil/core';
import { printIonWarning } from '@utils/logging';
import { getIonMode } from '../../global/ionic-global';
import { printIonWarning } from '../../utils/logging';
import type { AccordionGroupChangeEventDetail } from './accordion-group-interface';

View File

@@ -1,10 +1,10 @@
import type { ComponentInterface } from '@stencil/core';
import { Component, Element, Host, Prop, State, Watch, h } from '@stencil/core';
import { addEventListener, getElementRoot, raf, removeEventListener, transitionEndAsync } from '@utils/helpers';
import { chevronDown } from 'ionicons/icons';
import { config } from '../../global/config';
import { getIonMode } from '../../global/ionic-global';
import { addEventListener, getElementRoot, raf, removeEventListener, transitionEndAsync } from '../../utils/helpers';
const enum AccordionState {
Collapsed = 1 << 0,

View File

@@ -1,10 +1,7 @@
import type { ComponentInterface, EventEmitter } from '@stencil/core';
import { Watch, Component, Element, Event, Host, Method, Prop, h, readTask } from '@stencil/core';
import { getIonMode } from '../../global/ionic-global';
import type { AnimationBuilder, CssClassMap, FrameworkDelegate, OverlayInterface } from '../../interface';
import type { Gesture } from '../../utils/gesture';
import { createButtonActiveGesture } from '../../utils/gesture/button-active';
import type { Gesture } from '@utils/gesture';
import { createButtonActiveGesture } from '@utils/gesture/button-active';
import {
BACKDROP,
createDelegateController,
@@ -16,9 +13,12 @@ import {
present,
safeCall,
setOverlayId,
} from '../../utils/overlays';
} from '@utils/overlays';
import { getClassMap } from '@utils/theme';
import { getIonMode } from '../../global/ionic-global';
import type { AnimationBuilder, CssClassMap, FrameworkDelegate, OverlayInterface } from '../../interface';
import type { OverlayEventDetail } from '../../utils/overlays-interface';
import { getClassMap } from '../../utils/theme';
import type { ActionSheetButton } from './action-sheet-interface';
import { iosEnterAnimation } from './animations/ios.enter';

View File

@@ -1,5 +1,6 @@
import { createAnimation } from '@utils/animation/animation';
import type { Animation } from '../../../interface';
import { createAnimation } from '../../../utils/animation/animation';
/**
* iOS Action Sheet Enter Animation

View File

@@ -1,5 +1,6 @@
import { createAnimation } from '@utils/animation/animation';
import type { Animation } from '../../../interface';
import { createAnimation } from '../../../utils/animation/animation';
/**
* iOS Action Sheet Leave Animation

View File

@@ -1,5 +1,6 @@
import { createAnimation } from '@utils/animation/animation';
import type { Animation } from '../../../interface';
import { createAnimation } from '../../../utils/animation/animation';
/**
* MD Action Sheet Enter Animation

View File

@@ -1,5 +1,6 @@
import { createAnimation } from '@utils/animation/animation';
import type { Animation } from '../../../interface';
import { createAnimation } from '../../../utils/animation/animation';
/**
* MD Action Sheet Leave Animation

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

@@ -1,12 +1,8 @@
import type { ComponentInterface, EventEmitter } from '@stencil/core';
import { Component, Element, Event, Host, Listen, Method, Prop, Watch, forceUpdate, h } from '@stencil/core';
import { config } from '../../global/config';
import { getIonMode } from '../../global/ionic-global';
import type { AnimationBuilder, CssClassMap, OverlayInterface, FrameworkDelegate } from '../../interface';
import { ENABLE_HTML_CONTENT_DEFAULT } from '../../utils/config';
import type { Gesture } from '../../utils/gesture';
import { createButtonActiveGesture } from '../../utils/gesture/button-active';
import { ENABLE_HTML_CONTENT_DEFAULT } from '@utils/config';
import type { Gesture } from '@utils/gesture';
import { createButtonActiveGesture } from '@utils/gesture/button-active';
import {
createDelegateController,
createTriggerController,
@@ -18,11 +14,15 @@ import {
present,
safeCall,
setOverlayId,
} from '../../utils/overlays';
} from '@utils/overlays';
import { sanitizeDOMString } from '@utils/sanitization';
import { getClassMap } from '@utils/theme';
import { config } from '../../global/config';
import { getIonMode } from '../../global/ionic-global';
import type { AnimationBuilder, CssClassMap, OverlayInterface, FrameworkDelegate } from '../../interface';
import type { OverlayEventDetail } from '../../utils/overlays-interface';
import type { IonicSafeString } from '../../utils/sanitization';
import { sanitizeDOMString } from '../../utils/sanitization';
import { getClassMap } from '../../utils/theme';
import type { AlertButton, AlertInput } from './alert-interface';
import { iosEnterAnimation } from './animations/ios.enter';

View File

@@ -1,5 +1,6 @@
import { createAnimation } from '@utils/animation/animation';
import type { Animation } from '../../../interface';
import { createAnimation } from '../../../utils/animation/animation';
/**
* iOS Alert Enter Animation

View File

@@ -1,5 +1,6 @@
import { createAnimation } from '@utils/animation/animation';
import type { Animation } from '../../../interface';
import { createAnimation } from '../../../utils/animation/animation';
/**
* iOS Alert Leave Animation

View File

@@ -1,5 +1,6 @@
import { createAnimation } from '@utils/animation/animation';
import type { Animation } from '../../../interface';
import { createAnimation } from '../../../utils/animation/animation';
/**
* Md Alert Enter Animation

View File

@@ -1,5 +1,6 @@
import { createAnimation } from '@utils/animation/animation';
import type { Animation } from '../../../interface';
import { createAnimation } from '../../../utils/animation/animation';
/**
* Md Alert Leave Animation

View File

@@ -11,13 +11,6 @@
<link href="../../../../../scripts/testing/styles.css" rel="stylesheet" />
<script src="../../../../../scripts/testing/scripts.js"></script>
<script type="module" src="../../../../../dist/ionic/ionic.esm.js"></script>
<script type="module">
import * as motion from 'https://esm.run/motion';
window.motionOne = motion;
</script>
</head>
<body>
@@ -30,47 +23,25 @@
<ion-content class="ion-padding">
<ion-button id="default">Open Alert</ion-button>
<ion-button id="timeout">Open Alert, Close After 500ms</ion-button>
<ion-alert id="custom-alert" trigger="default" header="Alert" message="Hello World!"></ion-alert>
<ion-alert id="default-alert" trigger="default" header="Alert" message="Hello World!"></ion-alert>
<ion-alert id="timeout-alert" trigger="timeout" header="Alert" message="Hello World!"></ion-alert>
</ion-content>
</ion-app>
<script>
const customAlert = document.querySelector('#custom-alert');
const defaultAlert = document.querySelector('#default-alert');
const timeoutAlert = document.querySelector('#timeout-alert');
customAlert.enterAnimation = async (el, opts, done) => {
const { animate } = window.motionOne;
const backdropAni = animate('#custom-alert ion-backdrop', {
opacity: 'var(--backdrop-opacity)'
});
defaultAlert.buttons = ['OK'];
timeoutAlert.buttons = ['OK'];
const wrapperAni = animate('#custom-alert .alert-wrapper', {
opacity: 1,
transform: ['scale(1.5)', 'scale(1)']
})
await Promise.all([wrapperAni.finished, backdropAni.finished]);
done();
}
customAlert.leaveAnimation = async (el, opts, done) => {
const { animate } = window.motionOne;
const backdropAni = animate('#custom-alert ion-backdrop', {
opacity: 0
});
const wrapperAni = animate('#custom-alert .alert-wrapper', {
opacity: 0,
transform: 'scale(0.5)'
})
await Promise.all([wrapperAni.finished, backdropAni.finished]);
done();
}
customAlert.buttons = ['OK'];
timeoutAlert.addEventListener('didPresent', () => {
setTimeout(() => {
timeoutAlert.dismiss();
}, 500);
});
</script>
</body>
</html>

View File

@@ -1,9 +1,9 @@
import type { ComponentInterface } from '@stencil/core';
import { Build, Component, Element, Host, Method, h } from '@stencil/core';
import { isPlatform } from '@utils/platform';
import { config } from '../../global/config';
import { getIonMode } from '../../global/ionic-global';
import { isPlatform } from '../../utils/platform';
@Component({
tag: 'ion-app',

View File

@@ -38,11 +38,3 @@
opacity: .6;
}
}
// Back Button Color: Focused
// --------------------------------------------------
:host(.ion-color.ion-focused) .button-native::after {
background: #{current-color(base)};
}

View File

@@ -1,14 +1,14 @@
import type { ComponentInterface } from '@stencil/core';
import { Component, Element, Host, Prop, h } from '@stencil/core';
import type { ButtonInterface } from '@utils/element-interface';
import type { Attributes } from '@utils/helpers';
import { inheritAriaAttributes } from '@utils/helpers';
import { createColorClasses, hostContext, openURL } from '@utils/theme';
import { arrowBackSharp, chevronBack } from 'ionicons/icons';
import { config } from '../../global/config';
import { getIonMode } from '../../global/ionic-global';
import type { AnimationBuilder, Color } from '../../interface';
import type { ButtonInterface } from '../../utils/element-interface';
import type { Attributes } from '../../utils/helpers';
import { inheritAriaAttributes } from '../../utils/helpers';
import { createColorClasses, hostContext, openURL } from '../../utils/theme';
/**
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.

View File

@@ -1,8 +1,8 @@
import type { ComponentInterface, EventEmitter } from '@stencil/core';
import { Component, Event, Host, Listen, Prop, h } from '@stencil/core';
import { GESTURE_CONTROLLER } from '@utils/gesture';
import { getIonMode } from '../../global/ionic-global';
import { GESTURE_CONTROLLER } from '../../utils/gesture';
@Component({
tag: 'ion-backdrop',

View File

@@ -1,9 +1,9 @@
import type { ComponentInterface } from '@stencil/core';
import { Component, Host, Prop, h } from '@stencil/core';
import { createColorClasses } from '@utils/theme';
import { getIonMode } from '../../global/ionic-global';
import type { Color } from '../../interface';
import { createColorClasses } from '../../utils/theme';
/**
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.

View File

@@ -1,12 +1,12 @@
import type { ComponentInterface, EventEmitter } from '@stencil/core';
import { Component, Element, Event, Host, Prop, h } from '@stencil/core';
import type { Attributes } from '@utils/helpers';
import { inheritAriaAttributes } from '@utils/helpers';
import { createColorClasses, hostContext, openURL } from '@utils/theme';
import { chevronForwardOutline, ellipsisHorizontal } from 'ionicons/icons';
import { getIonMode } from '../../global/ionic-global';
import type { AnimationBuilder, Color } from '../../interface';
import type { Attributes } from '../../utils/helpers';
import { inheritAriaAttributes } from '../../utils/helpers';
import { createColorClasses, hostContext, openURL } from '../../utils/theme';
import type { RouterDirection } from '../router/utils/interface';
import type { BreadcrumbCollapsedClickEventDetail } from './breadcrumb-interface';

View File

@@ -1,9 +1,9 @@
import type { ComponentInterface, EventEmitter } from '@stencil/core';
import { Component, Element, Event, Host, Listen, Prop, State, Watch, h } from '@stencil/core';
import { createColorClasses, hostContext } from '@utils/theme';
import { getIonMode } from '../../global/ionic-global';
import type { Color } from '../../interface';
import { createColorClasses, hostContext } from '../../utils/theme';
import type { BreadcrumbCollapsedClickEventDetail } from '../breadcrumb/breadcrumb-interface';
/**

View File

@@ -16,7 +16,7 @@
@include margin($button-ios-margin-top, $button-ios-margin-end, $button-ios-margin-bottom, $button-ios-margin-start);
height: #{$button-ios-height};
min-height: #{$button-ios-min-height};
font-size: #{$button-ios-font-size};
font-weight: #{$button-ios-font-weight};
@@ -92,7 +92,7 @@
--padding-end: #{$button-ios-large-padding-end};
--padding-bottom: #{$button-ios-large-padding-bottom};
height: #{$button-ios-large-height};
min-height: #{$button-ios-large-min-height};
font-size: #{$button-ios-large-font-size};
}
@@ -104,11 +104,16 @@
--padding-end: #{$button-ios-small-padding-end};
--padding-bottom: #{$button-ios-small-padding-bottom};
height: #{$button-ios-small-height};
min-height: #{$button-ios-small-min-height};
font-size: #{$button-ios-small-font-size};
}
:host(.button-has-icon-only) {
--padding-top: 0;
--padding-bottom: 0;
}
// iOS Round Button
// --------------------------------------------------

View File

@@ -16,7 +16,7 @@ $button-ios-margin-bottom: 4px !default;
$button-ios-margin-start: 2px !default;
/// @prop - Padding top of the button
$button-ios-padding-top: 0 !default;
$button-ios-padding-top: 13px !default;
/// @prop - Padding end of the button
$button-ios-padding-end: 1em !default;
@@ -27,8 +27,8 @@ $button-ios-padding-bottom: $button-ios-padding-top !d
/// @prop - Padding start of the button
$button-ios-padding-start: $button-ios-padding-end !default;
/// @prop - Height of the button
$button-ios-height: 3.1em !default;
/// @prop - Minimum height of the button
$button-ios-min-height: 3.1em !default;
/// @prop - Border radius of the button
$button-ios-border-radius: 14px !default;
@@ -65,7 +65,7 @@ $button-ios-opacity-disabled: .5 !default;
// --------------------------------------------------
/// @prop - Padding top of the large button
$button-ios-large-padding-top: 0 !default;
$button-ios-large-padding-top: 17px !default;
/// @prop - Padding end of the large button
$button-ios-large-padding-end: 1em !default;
@@ -76,8 +76,8 @@ $button-ios-large-padding-bottom: $button-ios-large-padding-
/// @prop - Padding start of the large button
$button-ios-large-padding-start: $button-ios-large-padding-end !default;
/// @prop - Height of the large button
$button-ios-large-height: 3.1em !default;
/// @prop - Minimum height of the large button
$button-ios-large-min-height: 3.1em !default;
/// @prop - Border radius of the large button
$button-ios-large-border-radius: 16px !default;
@@ -90,7 +90,7 @@ $button-ios-large-font-size: 20px !default;
// --------------------------------------------------
/// @prop - Padding top of the small button
$button-ios-small-padding-top: 0 !default;
$button-ios-small-padding-top: 4px !default;
/// @prop - Padding end of the small button
$button-ios-small-padding-end: .9em !default;
@@ -101,8 +101,8 @@ $button-ios-small-padding-bottom: $button-ios-small-padding-
/// @prop - Padding start of the small button
$button-ios-small-padding-start: $button-ios-small-padding-end !default;
/// @prop - Height of the small button
$button-ios-small-height: 2.1em !default;
/// @prop - Minimum height of the small button
$button-ios-small-min-height: 2.1em !default;
/// @prop - Border radius of the small button
$button-ios-small-border-radius: 6px !default;

View File

@@ -16,7 +16,7 @@
@include margin($button-md-margin-top, $button-md-margin-end, $button-md-margin-bottom, $button-md-margin-start);
height: #{$button-md-height};
min-height: #{$button-md-min-height};
font-size: #{$button-md-font-size};
font-weight: #{$button-md-font-weight};
@@ -97,7 +97,7 @@
--padding-end: #{$button-md-large-padding-end};
--padding-bottom: #{$button-md-large-padding-bottom};
height: #{$button-md-large-height};
min-height: #{$button-md-large-min-height};
font-size: #{$button-md-large-font-size};
}
@@ -108,11 +108,16 @@
--padding-end: #{$button-md-small-padding-end};
--padding-bottom: #{$button-md-small-padding-bottom};
height: #{$button-md-small-height};
min-height: #{$button-md-small-min-height};
font-size: #{$button-md-small-font-size};
}
:host(.button-has-icon-only) {
--padding-top: 0;
--padding-bottom: 0;
}
// MD strong Button
// --------------------------------------------------

View File

@@ -16,19 +16,19 @@ $button-md-margin-bottom: 4px !default;
$button-md-margin-start: 2px !default;
/// @prop - Padding top of the button
$button-md-padding-top: 0 !default;
$button-md-padding-top: 8px !default;
/// @prop - Padding end of the button
$button-md-padding-end: 1.1em !default;
/// @prop - Padding bottom of the button
$button-md-padding-bottom: 0 !default;
$button-md-padding-bottom: $button-md-padding-top !default;
/// @prop - Padding start of the button
$button-md-padding-start: 1.1em !default;
/// @prop - Height of the button
$button-md-height: 36px !default;
/// @prop - Minimum height of the button
$button-md-min-height: 36px !default;
/// @prop - Border radius of the button
$button-md-border-radius: 4px !default;
@@ -63,7 +63,7 @@ $button-md-opacity-disabled: .5 !default;
// --------------------------------------------------
/// @prop - Padding top of the large button
$button-md-large-padding-top: 0 !default;
$button-md-large-padding-top: 14px !default;
/// @prop - Padding end of the large button
$button-md-large-padding-end: 1em !default;
@@ -74,8 +74,8 @@ $button-md-large-padding-bottom: $button-md-large-padding
/// @prop - Padding start of the large button
$button-md-large-padding-start: $button-md-large-padding-end !default;
/// @prop - Height of the large button
$button-md-large-height: 2.8em !default;
/// @prop - Minimum height of the large button
$button-md-large-min-height: 2.8em !default;
/// @prop - Font size of the large button
$button-md-large-font-size: 20px !default;
@@ -85,7 +85,7 @@ $button-md-large-font-size: 20px !default;
// --------------------------------------------------
/// @prop - Padding top of the small button
$button-md-small-padding-top: 0 !default;
$button-md-small-padding-top: 4px !default;
/// @prop - Padding end of the small button
$button-md-small-padding-end: .9em !default;
@@ -96,8 +96,8 @@ $button-md-small-padding-bottom: $button-md-small-padding
/// @prop - Padding start of the small button
$button-md-small-padding-start: $button-md-small-padding-end !default;
/// @prop - Height of the small button
$button-md-small-height: 2.1em !default;
/// @prop - Minimum height of the small button
$button-md-small-min-height: 2.1em !default;
/// @prop - Font size of the small button
$button-md-small-font-size: 13px !default;

View File

@@ -55,8 +55,8 @@
text-align: center;
text-decoration: none;
text-overflow: ellipsis;
// TODO(FW-4599): change to normal
white-space: nowrap;
user-select: none;
@@ -114,8 +114,6 @@
:host(.button-block) .button-native {
@include margin-horizontal(0);
display: block;
width: 100%;
clear: both;
@@ -138,8 +136,6 @@
:host(.button-full) .button-native {
@include margin-horizontal(0);
display: block;
width: 100%;
contain: content;
@@ -159,12 +155,17 @@
@include padding(var(--padding-top), var(--padding-end), var(--padding-bottom), var(--padding-start));
@include text-inherit();
display: block;
display: flex;
position: relative;
align-items: center;
width: 100%;
height: 100%;
min-height: inherit;
transition: var(--transition);
border-width: var(--border-width);
@@ -210,11 +211,20 @@
}
// Button Slots
// --------------------------------------------------
::slotted([slot=start]),
::slotted([slot=end]) {
flex-shrink: 0;
}
// Button Icons
// --------------------------------------------------
::slotted(ion-icon) {
font-size: 1.4em;
font-size: 1.35em;
pointer-events: none;
}

View File

@@ -1,13 +1,13 @@
import type { ComponentInterface, EventEmitter } from '@stencil/core';
import { Component, Element, Event, Host, Prop, h } from '@stencil/core';
import { Component, Element, Event, Host, Prop, Watch, h } from '@stencil/core';
import type { AnchorInterface, ButtonInterface } from '@utils/element-interface';
import type { Attributes } from '@utils/helpers';
import { inheritAriaAttributes, hasShadowDom } from '@utils/helpers';
import { printIonWarning } from '@utils/logging';
import { createColorClasses, hostContext, openURL } from '@utils/theme';
import { getIonMode } from '../../global/ionic-global';
import type { AnimationBuilder, Color } from '../../interface';
import type { AnchorInterface, ButtonInterface } from '../../utils/element-interface';
import type { Attributes } from '../../utils/helpers';
import { inheritAriaAttributes, hasShadowDom } from '../../utils/helpers';
import { printIonWarning } from '../../utils/logging';
import { createColorClasses, hostContext, openURL } from '../../utils/theme';
import type { RouterDirection } from '../router/utils/interface';
/**
@@ -32,6 +32,8 @@ export class Button implements ComponentInterface, AnchorInterface, ButtonInterf
private inItem = false;
private inListHeader = false;
private inToolbar = false;
private formButtonEl: HTMLButtonElement | null = null;
private formEl: HTMLFormElement | null = null;
private inheritedAttributes: Attributes = {};
@Element() el!: HTMLElement;
@@ -52,6 +54,13 @@ export class Button implements ComponentInterface, AnchorInterface, ButtonInterf
* If `true`, the user cannot interact with the button.
*/
@Prop({ reflect: true }) disabled = false;
@Watch('disabled')
disabledChanged() {
const { disabled } = this;
if (this.formButtonEl) {
this.formButtonEl.disabled = disabled;
}
}
/**
* Set to `"block"` for a full-width button or to `"full"` for a full-width button
@@ -144,6 +153,22 @@ export class Button implements ComponentInterface, AnchorInterface, ButtonInterf
*/
@Event() ionBlur!: EventEmitter<void>;
connectedCallback(): void {
// Allow form to be submitted through `ion-button`
if (this.type !== 'button' && hasShadowDom(this.el)) {
this.formEl = this.findForm();
if (this.formEl) {
// Create a hidden native button inside of the form
this.formButtonEl = document.createElement('button');
this.formButtonEl.type = this.type;
this.formButtonEl.style.display = 'none';
// Only submit if the button is not disabled.
this.formButtonEl.disabled = this.disabled;
this.formEl.appendChild(this.formButtonEl);
}
}
}
componentWillLoad() {
this.inToolbar = !!this.el.closest('ion-buttons');
this.inListHeader = !!this.el.closest('ion-list-header');
@@ -177,12 +202,63 @@ export class Button implements ComponentInterface, AnchorInterface, ButtonInterf
return form;
}
if (typeof form === 'string') {
const el = document.getElementById(form);
if (el instanceof HTMLFormElement) {
return el;
// Check if the string provided is a form id.
const el: HTMLElement | null = document.getElementById(form);
if (el) {
if (el instanceof HTMLFormElement) {
return el;
} else {
/**
* The developer specified a string for the form attribute, but the
* element with that id is not a form element.
*/
printIonWarning(
`Form with selector: "#${form}" could not be found. Verify that the id is attached to a <form> element.`,
this.el
);
return null;
}
} else {
/**
* The developer specified a string for the form attribute, but the
* element with that id could not be found in the DOM.
*/
printIonWarning(
`Form with selector: "#${form}" could not be found. Verify that the id is correct and the form is rendered in the DOM.`,
this.el
);
return null;
}
}
return null;
if (form !== undefined) {
/**
* The developer specified a HTMLElement for the form attribute,
* but the element is not a HTMLFormElement.
* This will also catch if the developer tries to pass in null
* as the form attribute.
*/
printIonWarning(
`The provided "form" element is invalid. Verify that the form is a HTMLFormElement and rendered in the DOM.`,
this.el
);
return null;
}
/**
* If the form element is not set, the button may be inside
* of a form element. Query the closest form element to the button.
*/
return this.el.closest('form');
}
private submitForm(ev: Event) {
// this button wants to specifically submit a form
// climb up the dom to see if we're in a <form>
// and if so, then use JS to submit it
if (this.formEl && this.formButtonEl) {
ev.preventDefault();
this.formButtonEl.click();
}
}
private handleClick = (ev: Event) => {
@@ -190,49 +266,7 @@ export class Button implements ComponentInterface, AnchorInterface, ButtonInterf
if (this.type === 'button') {
openURL(this.href, ev, this.routerDirection, this.routerAnimation);
} else if (hasShadowDom(el)) {
// this button wants to specifically submit a form
// climb up the dom to see if we're in a <form>
// and if so, then use JS to submit it
let formEl = this.findForm();
const { form } = this;
if (!formEl && form !== undefined) {
/**
* The developer specified a form selector for
* the button to submit, but it was not found.
*/
if (typeof form === 'string') {
printIonWarning(
`Form with selector: "#${form}" could not be found. Verify that the id is correct and the form is rendered in the DOM.`,
el
);
} else {
printIonWarning(
`The provided "form" element is invalid. Verify that the form is a HTMLFormElement and rendered in the DOM.`,
el
);
}
return;
}
if (!formEl) {
/**
* If the form element is not set, the button may be inside
* of a form element. Query the closest form element to the button.
*/
formEl = el.closest('form');
}
if (formEl) {
ev.preventDefault();
const fakeButton = document.createElement('button');
fakeButton.type = this.type;
fakeButton.style.display = 'none';
formEl.appendChild(fakeButton);
fakeButton.click();
fakeButton.remove();
}
this.submitForm(ev);
}
};

View File

@@ -44,7 +44,7 @@ configs({ directions: ['ltr'], modes: ['ios'] }).forEach(({ title, config }) =>
await page.setContent(
`
<form>
<ion-button type="submit">Submit</ion-button>
<ion-button type="submit">Submit</ion-button>
</form>
`,
config
@@ -56,19 +56,93 @@ configs({ directions: ['ltr'], modes: ['ios'] }).forEach(({ title, config }) =>
expect(submitEvent).toHaveReceivedEvent();
});
test('should submit the closest form by pressing the `enter` button on a form element', async ({
page,
}, testInfo) => {
testInfo.annotations.push({
type: 'issue',
description: 'https://github.com/ionic-team/ionic-framework/issues/19368',
});
await page.setContent(
`
<form>
<input type="text" />
<ion-button type="submit">Submit</ion-button>
</form>
`,
config
);
const submitEvent = await page.spyOnEvent('submit');
await page.press('input', 'Enter');
expect(submitEvent).toHaveReceivedEvent();
});
test('should submit the closest form with multiple elements by pressing the `enter` button', async ({
page,
}, testInfo) => {
testInfo.annotations.push({
type: 'issue',
description: 'https://github.com/ionic-team/ionic-framework/issues/19368',
});
await page.setContent(
`
<form>
<input type="text" />
<textarea></textarea>
<ion-button type="submit">Submit</ion-button>
</form>
`,
config
);
const submitEvent = await page.spyOnEvent('submit');
await page.press('input', 'Enter');
expect(submitEvent).toHaveReceivedEvent();
});
test('should not submit the closest form when button is disabled', async ({ page }, testInfo) => {
testInfo.annotations.push({
type: 'issue',
description: 'https://github.com/ionic-team/ionic-framework/issues/19368',
});
await page.setContent(
`
<form>
<input type="text" />
<ion-button type="submit" disabled>Submit</ion-button>
</form>
`,
config
);
const submitEvent = await page.spyOnEvent('submit');
await page.press('input', 'Enter');
expect(submitEvent).not.toHaveReceivedEvent();
});
});
test.describe(title('should throw a warning if the form cannot be found'), () => {
test('form is a string selector', async ({ page }) => {
await page.setContent(`<ion-button type="submit" form="missingForm">Submit</ion-button>`, config);
const logs: string[] = [];
page.on('console', (msg) => {
logs.push(msg.text());
if (msg.type() === 'warning') {
logs.push(msg.text());
}
});
await page.click('ion-button');
await page.setContent(`<ion-button type="submit" form="missingForm">Submit</ion-button>`, config);
expect(logs.length).toBe(1);
expect(logs[0]).toContain(
@@ -77,6 +151,14 @@ configs({ directions: ['ltr'], modes: ['ios'] }).forEach(({ title, config }) =>
});
test('form is an element reference', async ({ page }) => {
const logs: string[] = [];
page.on('console', (msg) => {
if (msg.type() === 'warning') {
logs.push(msg.text());
}
});
await page.setContent(
`
<ion-button type="submit">Submit</ion-button>
@@ -90,14 +172,6 @@ configs({ directions: ['ltr'], modes: ['ios'] }).forEach(({ title, config }) =>
config
);
const logs: string[] = [];
page.on('console', (msg) => {
logs.push(msg.text());
});
await page.click('ion-button');
expect(logs.length).toBe(1);
expect(logs[0]).toContain(
'[Ionic Warning]: The provided "form" element is invalid. Verify that the form is a HTMLFormElement and rendered in the DOM.'

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 78 KiB

View File

@@ -0,0 +1,207 @@
import { expect } from '@playwright/test';
import { configs, test } from '@utils/test/playwright';
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
test.describe(title('button: wrap'), () => {
test('should render button with long text', async ({ page }) => {
// TODO(FW-4599): remove ion-text-wrap class
await page.setContent(
`
<ion-button class="ion-text-wrap">This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends</ion-button>
`,
config
);
const button = page.locator('ion-button');
await expect(button).toHaveScreenshot(screenshot(`button-wrap`));
});
test('should render small button with long text', async ({ page }) => {
// TODO(FW-4599): remove ion-text-wrap class
await page.setContent(
`
<ion-button class="ion-text-wrap" size="small">This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends</ion-button>
`,
config
);
const button = page.locator('ion-button');
await expect(button).toHaveScreenshot(screenshot(`button-wrap-small`));
});
test('should render large button with long text', async ({ page }) => {
// TODO(FW-4599): remove ion-text-wrap class
await page.setContent(
`
<ion-button class="ion-text-wrap" size="large">This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends</ion-button>
`,
config
);
const button = page.locator('ion-button');
await expect(button).toHaveScreenshot(screenshot(`button-wrap-large`));
});
test('should render button with long text and icons', async ({ page }) => {
// TODO(FW-4599): remove ion-text-wrap class
await page.setContent(
`
<ion-button class="ion-text-wrap">
<ion-icon slot="start" name="heart"></ion-icon>
This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends
<ion-icon slot="end" name="star"></ion-icon>
</ion-button>
`,
config
);
const button = page.locator('ion-button');
await expect(button).toHaveScreenshot(screenshot(`button-wrap-icons`));
});
test('should render block button with long text', async ({ page }) => {
// TODO(FW-4599): remove ion-text-wrap class
await page.setContent(
`
<ion-button class="ion-text-wrap" expand="block">This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends</ion-button>
`,
config
);
const button = page.locator('ion-button');
await expect(button).toHaveScreenshot(screenshot(`button-wrap-block`));
});
test('should render block button with long text and icons', async ({ page }) => {
// TODO(FW-4599): remove ion-text-wrap class
await page.setContent(
`
<ion-button class="ion-text-wrap" expand="block">
<ion-icon slot="start" name="heart"></ion-icon>
This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends
<ion-icon slot="end" name="star"></ion-icon>
</ion-button>
`,
config
);
const button = page.locator('ion-button');
await expect(button).toHaveScreenshot(screenshot(`button-wrap-block-icons`));
});
test('should render full button with long text', async ({ page }) => {
// TODO(FW-4599): remove ion-text-wrap class
await page.setContent(
`
<ion-button class="ion-text-wrap" expand="full">This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends</ion-button>
`,
config
);
const button = page.locator('ion-button');
await expect(button).toHaveScreenshot(screenshot(`button-wrap-full`));
});
test('should render full button with long text and icons', async ({ page }) => {
// TODO(FW-4599): remove ion-text-wrap class
await page.setContent(
`
<ion-button class="ion-text-wrap" expand="full">
<ion-icon slot="start" name="heart"></ion-icon>
This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends
<ion-icon slot="end" name="star"></ion-icon>
</ion-button>
`,
config
);
const button = page.locator('ion-button');
await expect(button).toHaveScreenshot(screenshot(`button-wrap-full-icons`));
});
test('should render an item button with long text', async ({ page }) => {
// TODO(FW-4599): remove ion-text-wrap class
await page.setContent(
`
<ion-item>
<ion-button class="ion-text-wrap" slot="end">
This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends
</ion-button>
</ion-item>
`,
config
);
const item = page.locator('ion-item');
await expect(item).toHaveScreenshot(screenshot(`button-wrap-item-button`));
});
test('should render an item button with long text and icons', async ({ page }) => {
// TODO(FW-4599): remove ion-text-wrap class
await page.setContent(
`
<ion-item>
<ion-button class="ion-text-wrap" slot="end">
<ion-icon slot="start" name="heart"></ion-icon>
This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends
<ion-icon slot="end" name="star"></ion-icon>
</ion-button>
</ion-item>
`,
config
);
const item = page.locator('ion-item');
await expect(item).toHaveScreenshot(screenshot(`button-wrap-item-button-icons`));
});
test('should render a list header button with long text', async ({ page }) => {
// TODO(FW-4599): remove ion-text-wrap class
await page.setContent(
`
<ion-list-header>
<ion-label>List Header</ion-label>
<ion-button class="ion-text-wrap">
This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends
</ion-button>
</ion-list-header>
`,
config
);
const listHeader = page.locator('ion-list-header');
await expect(listHeader).toHaveScreenshot(screenshot(`button-wrap-list-header-button`));
});
test('should render a toolbar button with long text', async ({ page }) => {
// TODO(FW-4599): remove ion-text-wrap class
await page.setContent(
`
<ion-toolbar>
<ion-buttons slot="end">
<ion-button class="ion-text-wrap">
This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends
</ion-button>
</ion-buttons>
</ion-toolbar>
`,
config
);
const toolbar = page.locator('ion-toolbar');
await expect(toolbar).toHaveScreenshot(screenshot(`button-wrap-toolbar-button`));
});
});
});

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

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