Compare commits

...

81 Commits

Author SHA1 Message Date
Brandy Carney
ac17dd6a44 chore: use proper file 2024-09-05 12:01:46 -04:00
Brandy Carney
7fc02b4251 chore: build 2024-09-05 11:51:26 -04:00
Maria Hutt
e97ccd8370 feat(react, vue, angular): use tabs without router (#29794)
Issue number: resolves #25184

---------

Co-authored-by: Brandy Carney <brandyscarney@users.noreply.github.com>
Co-authored-by: Sean Perkins <13732623+sean-perkins@users.noreply.github.com>
2024-09-05 11:33:37 -04:00
Tanner Reits
9a8c49ae7f feat(datetime): add ionic theme styles to time label (#29829)
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. -->

No `ionic` theme styles for the datetime time label

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

Adds styles to the time label for the `ionic` theme

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## Other information

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


[Preview](https://ionic-framework-6m937m00k-ionic1.vercel.app/src/components/datetime/test/basic?ionic:theme=ionic)
2024-09-04 09:08:49 -04:00
Tanner Reits
6aa47d363f feat(datetime): add ionic theme styles to title (#29828)
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. -->

There are no dedicated title styles for the `ionic` theme

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

Adds `ionic` theme styles for the datetime default title

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## Other information

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

[Preview
(inline-custom)](https://ionic-framework-c0db80uay-ionic1.vercel.app/src/components/datetime/test/basic?ionic:theme=ionic)
2024-09-03 15:57:36 -04:00
Brandy Carney
78e7edaa06 chore(): sync next with main (#29821) 2024-08-30 15:37:05 -04:00
ionitron
17f7c52fa4 chore(): add updated snapshots 2024-08-30 19:07:35 +00:00
Brandy Carney
e839920162 chore: run build 2024-08-30 14:48:58 -04:00
Brandy Carney
21954f6f57 style: update code order for Sass
Due to https://sass-lang.com/documentation/breaking-changes/mixed-decls/
2024-08-30 14:39:59 -04:00
Tanner Reits
9f1a1942b9 chore(deps): update @types/node to v18 2024-08-30 14:35:04 -04:00
Brandy Carney
526f2b4a63 Merge branch 'main' into chore-sync-next-main 2024-08-30 13:35:59 -04:00
Brandy Carney
a0101bf3fb feat(item, list): add support for lines property in ionic theme (#29816)
- Adds the supported styles for `lines` in both the item and list components
- Splits the tests up in `item/test/lines` and `list/test/lines` so that it isn't taking screenshots of an entire page and instead tests based on the lines property
2024-08-30 10:40:17 -04:00
Brandy Carney
95dd3364f2 chore(): add Tanner to issue assignees (#29819) 2024-08-30 10:18:11 -04:00
Brandy Carney
51a86fb0dd feat(datetime): add datetime styles for ionic theme (#29807)
Adds the styles for Datetime in the `ionic` theme for the following (days, months, arrows, weeks):
- Typography
- Colors
- Spacing
- Sizing
- States (selected, pressed, focus, hover)
2024-08-30 10:12:40 -04:00
Maria Hutt
ccf1f65892 feat(radio): add ionic theme styles (#29805)
- Added `ionic` theme styles
- Added `ionic` to the tests
- Updated file structure
- Added a focus ring mixin
2024-08-30 09:56:42 -04:00
renovate[bot]
a745c6f4bc chore(deps): update playwright (#29750)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type |
Update |
|---|---|---|---|---|---|---|---|
| [@playwright/test](https://playwright.dev)
([source](https://togithub.com/microsoft/playwright)) | [`^1.45.3` ->
`^1.46.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.45.3/1.46.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.45.3/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.45.3/1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| mcr.microsoft.com/playwright | `v1.45.3` -> `v1.46.0` |
[![age](https://developer.mend.io/api/mc/badges/age/docker/mcr.microsoft.com%2fplaywright/v1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/mcr.microsoft.com%2fplaywright/v1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/mcr.microsoft.com%2fplaywright/v1.45.3/v1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/mcr.microsoft.com%2fplaywright/v1.45.3/v1.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| final | minor |

---

### Release Notes

<details>
<summary>microsoft/playwright (@&#8203;playwright/test)</summary>

###
[`v1.46.0`](https://togithub.com/microsoft/playwright/compare/v1.45.3...99a36310570617222290c09b96a2026beb8b00f9)

[Compare
Source](https://togithub.com/microsoft/playwright/compare/v1.45.3...v1.46.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View the
[repository job
log](https://developer.mend.io/github/ionic-team/ionic-framework).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM4LjIwLjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: ionitron <hi@ionicframework.com>
Co-authored-by: Maria Hutt <maria@ionic.io>
2024-08-29 20:51:36 +00:00
José Rio
3656c8deba feat(input-password-toggle): fixed color and icon sizes. (#29808)
Issue number: resolves ROU-4860

---------

## What is the current behavior?
Icon color and sizes are not ok.

## What is the new behavior?
- Fixed Icon color into `neutral-800`
- Set the icon size with `16px`

## Does this introduce a breaking change?

- [ ] Yes
- [X] No

## Other information

This will complete the
[PR](https://github.com/ionic-team/ionic-framework/pull/29787)

[Basic
Preview](https://ionic-framework-p6zymvqpo-ionic1.vercel.app/src/components/input-password-toggle/test/basic?ionic:theme=ionic)

---------

Co-authored-by: Brandy Carney <brandyscarney@users.noreply.github.com>
2024-08-29 15:25:34 +01:00
Bernardo Cardoso
aded437923 fix(colors): change ionic colors scss imports for ionic dist (#29791)
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. -->
When consuming the Ionic Framework and using the Ionic Theme, the color
attribute was still not working as the color css was not present.

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

- Now the ion-color maps are correctly imported on the Ionic `dist`
related folder and not the on the `md/ios` ones.
- Changed the usage of `map.get` to `map-get` to avoid issues with the
usage of `@use` and `@forward`. This seems to have no impact on the
compilation and I believe its a better code convention, as map-gets are
a native scss function that doesn't need to be imported.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## 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>
Co-authored-by: Maria Hutt <maria@ionic.io>
2024-08-27 08:42:46 +01:00
Brandy Carney
aa48963212 docs(testing): update testing instructions for debugging tests (#29800)
Adds more information to the testing documentation on how to execute
individual tests or pause execution.
2024-08-26 16:17:36 +00:00
Giuliana Silva
b9ef92ae7e feat(toggle): add ionic theme styles (#29790)
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 new behavior?
- Updated ionic theme styles for the toggle
- Added new states for the toggle (only for ionic theme)

## Does this introduce a breaking change?
- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## 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>
Co-authored-by: Maria Hutt <maria@ionic.io>
2024-08-26 09:25:38 +01:00
Bernardo Cardoso
4506ccf99c feat(input): change fill default on ionic theme (#29789)
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 new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

- Now the fill option default value is outline when using the Ionic
theme.
- Updated snapshots.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## Other information

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

- [Input Fill
Sample](https://ionic-framework-9fbgwzxss-ionic1.vercel.app/src/components/input/test/fill?ionic:theme=ionic)

---------

Co-authored-by: ionitron <hi@ionicframework.com>
2024-08-23 17:47:08 +01:00
Brandy Carney
ca4c0a5a8d feat(textarea): add support for the shape property with soft, round and rectangular options (#29788)
- Adds support for `"soft"`, `"round"` and `"rectangular"` shapes in the Ionic theme, with `"round"` as the default
- Adds a `shape` folder and test with examples
- Adds an e2e test with screenshots for all shapes
2024-08-22 18:29:49 -04:00
José Rio
0d67c83c21 feat(input-password-toggle): add ionic theme design (#29787)
Issue number: ROU-4860

---------

## What is the current behavior?
Input Password Toggle does not have styles for the ionic theme.

## What is the new behavior?
- Added color style
- Set margins

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

## Other information

| Figma Design | Implemented Input Password Toggle |
| --- | --- | 
| ![Figma
Design](https://github.com/user-attachments/assets/285c4766-267b-4c73-b0fc-801b130c6fb2)
| ![Implemented
InputPasswordToggle](https://github.com/user-attachments/assets/a768cbfe-3bf4-4d49-89ce-0b142d29d3b0)
|

- [Basic
Preview](https://ionic-framework-git-rou-4860-ionic1.vercel.app/src/components/input-password-toggle/test/basic?ionic:theme=ionic)

---------

Co-authored-by: Brandy Carney <brandyscarney@users.noreply.github.com>
2024-08-22 16:23:15 +01:00
Brandy Carney
e539620880 feat(textarea): add small and large sizes for the ionic theme (#29781)
- Adds the `small` and `large` sizes for the `ionic` theme
- Adds tests for the sizes to the existing `size` test
2024-08-21 16:15:05 -04:00
Brandy Carney
b57f4be284 feat(textarea): add ionic theme design with medium size (#29776)
- Adds the typography styles for the default size (medium)
- Adds the styles for the outline fill 
- Adds the styles for the label & helper text
- Adds the spacing for the label, textarea, counter and helper text
2024-08-21 14:55:40 -04:00
Maria Hutt
bacded500b fix(react): intellisense works with IntelliJ (#29782)
Issue number: resolves #29755 

---------

<!-- 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. -->

Types do not generate when a React app is opened in IntelliJ IDE.

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

- Updated `stencil/react-output-target` to the latest
- Updated the stencil config file
- Updated `jest`, `ts-jest`, and `typescript` because of the changes in
`packages/react/tsconfig.json`
- Installed `jest-environment-jsdom` because Jest 26 no longer ships it
by default since the test environment is now node by default. The test
environment needs to be changed to `jsdom` when [building a web
app](https://jestjs.io/docs/configuration#testenvironment-string).

![Screenshot 2024-08-19 at 3 44
56 PM](https://github.com/user-attachments/assets/7a5ab4e7-4641-4fa7-978d-8f68a0b334ea)
![Screenshot 2024-08-19 at 3 45
11 PM](https://github.com/user-attachments/assets/66f5a522-776b-488d-932f-4fa59cf5dd49)


## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->

No visual changes are introduced and there will be no changes needed by
developers. Their apps will continue to work as is.


## 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: 8.2.8-dev.11724100788.103018f2
2024-08-20 19:10:12 +00:00
Christian Bromann
bf7f6f6acf fix(test): fix Stencil Nightly build (#29780)
## What is the current behavior?
The Playwright test for
`core/src/components/menu/test/safe-area/menu.e2e.ts` started to fail
after introducing the following patch to Stencil:
[#5926](https://github.com/ionic-team/stencil/pull/5926). After
debugging the situation it turns out that the test overwrites the first
style in the `<head />` tag which turns out to be a component style that
caused all screenshot test to fail.

## What is the new behavior?
Overwrite the existing style by adding a new style tag at the bottom of
the page.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## Other information

n/a
2024-08-20 17:12:50 +00:00
Brandy Carney
4580edc21f merge release-8.2.7 (#29770)
v8.2.7
2024-08-13 15:23:55 -04:00
ionitron
f4377b1688 chore(): update package lock files 2024-08-13 18:38:11 +00:00
ionitron
43ff02c100 v8.2.7 2024-08-13 18:36:38 +00:00
Maria Hutt
59ba289233 refactor(spinner): use mode to render default (#29768) 2024-08-13 11:09:39 -07:00
Maria Hutt
32fb17cf6e refactor(button): add ripple effect to ionic theme (#29754)
Co-authored-by: Brandy Carney <brandyscarney@users.noreply.github.com>
2024-08-12 14:30:31 -07:00
renovate[bot]
9c4ba2e304 chore(deps): update capacitor to v6.1.2 (#29764)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@capacitor/core](https://capacitorjs.com)
([source](https://togithub.com/ionic-team/capacitor)) | [`6.1.1` ->
`6.1.2`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/6.1.1/6.1.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fcore/6.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@capacitor%2fcore/6.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@capacitor%2fcore/6.1.1/6.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fcore/6.1.1/6.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@capacitor/haptics](https://togithub.com/ionic-team/capacitor-plugins)
| [`6.0.0` ->
`6.0.1`](https://renovatebot.com/diffs/npm/@capacitor%2fhaptics/6.0.0/6.0.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fhaptics/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@capacitor%2fhaptics/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@capacitor%2fhaptics/6.0.0/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fhaptics/6.0.0/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@capacitor/keyboard](https://togithub.com/ionic-team/capacitor-plugins)
| [`6.0.1` ->
`6.0.2`](https://renovatebot.com/diffs/npm/@capacitor%2fkeyboard/6.0.1/6.0.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fkeyboard/6.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@capacitor%2fkeyboard/6.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@capacitor%2fkeyboard/6.0.1/6.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fkeyboard/6.0.1/6.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@capacitor/status-bar](https://togithub.com/ionic-team/capacitor-plugins)
| [`6.0.0` ->
`6.0.1`](https://renovatebot.com/diffs/npm/@capacitor%2fstatus-bar/6.0.0/6.0.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fstatus-bar/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@capacitor%2fstatus-bar/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@capacitor%2fstatus-bar/6.0.0/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fstatus-bar/6.0.0/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>ionic-team/capacitor (@&#8203;capacitor/core)</summary>

###
[`v6.1.2`](https://togithub.com/ionic-team/capacitor/blob/HEAD/CHANGELOG.md#612-2024-08-07)

[Compare
Source](https://togithub.com/ionic-team/capacitor/compare/6.1.1...6.1.2)

##### Bug Fixes

- **android:** better cleaning of allowedOrigin url
([#&#8203;7607](https://togithub.com/ionic-team/capacitor/issues/7607))
([d123260](d123260c70))
- **http:** pass original url as query param on the proxy url
([#&#8203;7527](https://togithub.com/ionic-team/capacitor/issues/7527))
([1da06e6](1da06e66cb))
- support dependencies with ".swift" at the end of name
([#&#8203;7583](https://togithub.com/ionic-team/capacitor/issues/7583))
([ceee68a](ceee68a2db))

</details>

<details>
<summary>ionic-team/capacitor-plugins
(@&#8203;capacitor/haptics)</summary>

###
[`v6.0.1`](https://togithub.com/ionic-team/capacitor-plugins/releases/tag/%40capacitor/status-bar%406.0.1)

[Compare
Source](https://togithub.com/ionic-team/capacitor-plugins/compare/@capacitor/haptics@6.0.0...@capacitor/haptics@6.0.1)

**Note:** Version bump only for package
[@&#8203;capacitor/status-bar](https://togithub.com/capacitor/status-bar)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View the
[repository job
log](https://developer.mend.io/github/ionic-team/ionic-framework).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4yMC4xIiwidXBkYXRlZEluVmVyIjoiMzguMjAuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-12 19:29:52 +00:00
renovate[bot]
43ad81e0c3 chore(deps): update dependency @stencil/core to v4.20.0 (#29749)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@stencil/core](https://stenciljs.com/)
([source](https://togithub.com/ionic-team/stencil)) | [`4.19.2` ->
`4.20.0`](https://renovatebot.com/diffs/npm/@stencil%2fcore/4.19.2/4.20.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@stencil%2fcore/4.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@stencil%2fcore/4.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@stencil%2fcore/4.19.2/4.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@stencil%2fcore/4.19.2/4.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>ionic-team/stencil (@&#8203;stencil/core)</summary>

###
[`v4.20.0`](https://togithub.com/ionic-team/stencil/blob/HEAD/CHANGELOG.md#-4200-2024-08-02)

[Compare
Source](https://togithub.com/ionic-team/stencil/compare/v4.19.2...v4.20.0)

##### Bug Fixes

- **core:** add @&#8203;stencil/core/testing/jest-preset to export map
([#&#8203;5900](https://togithub.com/ionic-team/stencil/issues/5900))
([3def2b7](3def2b7e16)),
fixes
[#&#8203;5896](https://togithub.com/ionic-team/stencil/issues/5896)
- **compiler:** don't allow shadowRoot getter to avoid hydration issues
([#&#8203;5912](https://togithub.com/ionic-team/stencil/issues/5912))
([5dd4f7f](5dd4f7fb05))
- **compiler:** no need for commenting selectors anymore
([#&#8203;5892](https://togithub.com/ionic-team/stencil/issues/5892))
([d571bbb](d571bbbb68)),
fixes
[#&#8203;5880](https://togithub.com/ionic-team/stencil/issues/5880)
- **compiler:** respect project tsconfig watch options
([#&#8203;5916](https://togithub.com/ionic-team/stencil/issues/5916))
([74adeee](74adeee75a)),
closes
[#&#8203;5709](https://togithub.com/ionic-team/stencil/issues/5709),
fixes
[#&#8203;5709](https://togithub.com/ionic-team/stencil/issues/5709),
fixes
[#&#8203;5592](https://togithub.com/ionic-team/stencil/issues/5592)
- **compiler:** run copy task after other output targets
([#&#8203;5902](https://togithub.com/ionic-team/stencil/issues/5902))
([c3d4e8b](c3d4e8b170)),
fixes
[#&#8203;5592](https://togithub.com/ionic-team/stencil/issues/5592)
- **core:** add missing screenshot export
([#&#8203;5909](https://togithub.com/ionic-team/stencil/issues/5909))
([764a8ba](764a8bafde)),
fixes
[#&#8203;5906](https://togithub.com/ionic-team/stencil/issues/5906)
- **hydrate:** ensure beforeHydrateFn and afterHydrateFn always return a
function
([#&#8203;5890](https://togithub.com/ionic-team/stencil/issues/5890))
([a7c212c](a7c212c2a9)),
fixes
[#&#8203;5884](https://togithub.com/ionic-team/stencil/issues/5884)
- **runtime:** hydrate shadow dom first
([#&#8203;5911](https://togithub.com/ionic-team/stencil/issues/5911))
([ccf1a89](ccf1a8941f))
- **runtime:** make isSameVnode return false on initial render in a
hydration case
([#&#8203;5891](https://togithub.com/ionic-team/stencil/issues/5891))
([82a7bb9](82a7bb9ead))
- **testing:** update Jest types
([#&#8203;5910](https://togithub.com/ionic-team/stencil/issues/5910))
([5f8c969](5f8c9692d4)),
fixes
[#&#8203;5908](https://togithub.com/ionic-team/stencil/issues/5908)
- **core:** update TypeScript to v5.5
([#&#8203;5898](https://togithub.com/ionic-team/stencil/issues/5898))
([5e74837](5e748378fd))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View the
[repository job
log](https://developer.mend.io/github/ionic-team/ionic-framework).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-12 19:18:37 +00:00
Bernardo Cardoso
210f724ae7 feat(card): add ionic theme tokens, update design (#29757)
## What is the new behavior?
- Reviewed tokens used for `ion-card` on Ionic Theme.
- Removed border on ion-card.
- Changed default shape to round.
- Added ionic theme partials for `ion-title`, `ion-subtitle`, `ion-header` and `ion-content`.

## Other information
[Sample Screen](https://ionic-framework-hyyi9k1ti-ionic1.vercel.app/src/components/card/test/theme-ionic)

---------

Co-authored-by: Brandy Carney <brandyscarney@gmail.com>
Co-authored-by: ionitron <hi@ionicframework.com>
2024-08-09 15:21:41 -04:00
Brandy Carney
20073e10c9 fix(angular): remove the tabindex set by routerLink from Ionic components (#29744)
Issue number: resolves #20632

---------

## What is the current behavior?
When using the `routerLink` directive in Angular, it automatically adds
`tabindex="0"` to the element. This creates issues with Ionic components
that render native button or anchor elements, as they have their own
focus management. As a result, when navigating between list items with
`routerLink` using the `Tab` key, you need to press the `Tab` key twice
to move to the next item. This problem is illustrated in the following
demo:

[![Open in
StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/edit/angular-blfa7h?file=src%2Fapp%2Fexample.component.html)

Related Angular issue: https://github.com/angular/angular/issues/28345

## What is the new behavior?
Updated our `RouterLinkDelegateDirective` to check if the element using
`routerLink` is one of the following Ionic components:
`ion-back-button`, `ion-breadcrumb`, `ion-button`, `ion-card`,
`ion-fab-button`, `ion-item`, `ion-item-option`, `ion-menu-button`,
`ion-segment-button`, or `ion-tab-button`. If so, it removes the
`tabindex` attribute from the element. This allows these Ionic
components to let the native button or anchor element handle the focus.

This solution is demonstrated in the following demo:

[![Open in
StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/edit/angular-blfa7h-svmguh?file=src%2Fapp%2Fexample.component.html)

> [!NOTE]
> I did not include the `ion-router-link` component in the list to
remove `tabindex` because [the router link
documentation](https://ionicframework.com/docs/api/router-link) does not
recommend using it with Angular:
>> Note: this component should only be used with vanilla and Stencil
JavaScript projects. For Angular projects, use an `<a>` and `routerLink`
with the Angular router.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

## Other information

Dev build: `8.2.7-dev.11722448707.1e8c66e6`
2024-08-08 15:02:35 +00:00
Maria Hutt
8fb813686f refactor(item): add slot styles (#29741)
Co-authored-by: ionitron <hi@ionicframework.com>
2024-08-07 12:53:48 -07:00
Brandy Carney
7b16397714 fix(content): allow custom roles and aria attributes to be set on content (#29753)
Issue number: N/A

---------

## What is the current behavior?
Setting a custom `role` on the `ion-content` element does not work.

## What is the new behavior?
- Inherit attributes for the content element which allows a custom
`role` property to be set
- Adds e2e tests for content, header, and footer verifying that the
proper roles are assigned

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

## Other information
To test this PR:

1. Switch to the branch and navigate to the `core/` directory
1. Make sure to run `npx playwright install` if it has not been updated
recenly
1. Run `npm run test.e2e src/components/content/test/a11y/`
1. Verify that the tests pass
1. Remove my fix in `core/src/components/content/content.tsx` and run
the test again
1. Verify that the `should allow for custom role` tests fail
2024-08-07 14:57:29 +00:00
Brandy Carney
ab4f2791c1 fix(vue): pass router-link value to href to properly render clickable elements (#29745)
Issue number: N/A

---------

## What is the current behavior?
Ionic Framework Vue components using `router-link` do not apply an
`href` property which causes components to render `div` or `button`
elements when they should render an `a`. This is inconsistent with the
way Angular and Vue handle router link.

## What is the new behavior?
Updates `@stencil/vue-output-target` to latest which adds the code from
the following PR:
https://github.com/ionic-team/stencil-ds-output-targets/pull/446

The update in vue output target checks if `router-link` and `navManager`
are defined so this fix only applies to Ionic Framework components. If
both are defined then it adds the `href` property to the element with
the value of `router-link`.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

## Other information

Dev build: `8.2.7-dev.11722629362.1ac136c4`
2024-08-05 21:35:26 +00:00
Brandy Carney
a9f278ad67 fix(item): router-link remains clickable with item cover (#29743)
Issue number: N/A

---------

## What is the current behavior?
Item includes `ion-anchor` in the list of clickable components it
queries. This component was renamed to `ion-router-link` in
[v5](https://github.com/ionic-team/ionic-framework/blob/main/BREAKING_ARCHIVE/v5.md#anchor).

## What is the new behavior?
Updates the reference to `ion-anchor` to `ion-router-link` in
`ion-item`.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No
2024-08-05 14:49:51 +00:00
Steven Ribeiro
bfee3cd064 fix(react): add onPointerDown, onTouchEnd, add onTouchMove (#29736)
Issue number: resolves #29174

---------

## What is the current behavior?

React throws tab errors with `IonTabButton` when binding to
`onPointerDown`, `onTouchEnd` and `onTouchMove`

## What is the new behavior?

- Adds missing type definitions for `onPointerDown`, `onTouchEnd` and
`onTouchMove` to `IonTaButton`
- React does not throw type errors when binding callback functions to
these events

---------

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

---------

Co-authored-by: steven <sribeiro@gio.lu>
2024-08-02 21:53:13 +00:00
renovate[bot]
133995af79 chore(deps): update playwright (#29719)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type |
Update |
|---|---|---|---|---|---|---|---|
| [@playwright/test](https://playwright.dev)
([source](https://togithub.com/microsoft/playwright)) | [`^1.45.0` ->
`^1.45.3`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.45.0/1.45.3)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.45.0/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.45.0/1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| mcr.microsoft.com/playwright | `v1.45.0` -> `v1.45.3` |
[![age](https://developer.mend.io/api/mc/badges/age/docker/mcr.microsoft.com%2fplaywright/v1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/mcr.microsoft.com%2fplaywright/v1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/mcr.microsoft.com%2fplaywright/v1.45.0/v1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/mcr.microsoft.com%2fplaywright/v1.45.0/v1.45.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| final | patch |

---

### Release Notes

<details>
<summary>microsoft/playwright (@&#8203;playwright/test)</summary>

###
[`v1.45.3`](https://togithub.com/microsoft/playwright/compare/v1.45.2...0e130fa8edaf85765c4a5a86bded0e6d33bfd7c2)

[Compare
Source](https://togithub.com/microsoft/playwright/compare/v1.45.2...v1.45.3)

###
[`v1.45.2`](https://togithub.com/microsoft/playwright/compare/v1.45.1...d8a5f3b33193e413b404ff4aa1f71e859d8f1b6b)

[Compare
Source](https://togithub.com/microsoft/playwright/compare/v1.45.1...v1.45.2)

###
[`v1.45.1`](https://togithub.com/microsoft/playwright/compare/v1.45.0...e8989f83d9801cdaadc3803b5341c601c9593947)

[Compare
Source](https://togithub.com/microsoft/playwright/compare/v1.45.0...v1.45.1)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View the
[repository job
log](https://developer.mend.io/github/ionic-team/ionic-framework).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MzEuNCIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-08-02 20:55:34 +00:00
Sean Perkins
bf60712aaf chore(playwright): add click method to promise assertion lint checks (#29740)
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 has a set of custom lint assertions to avoid creating
flaky Playwright tests by forgetting to await a promise. However the
`click` method was not included in the original list of methods to
check.

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

- Developers will receive a lint error when forgetting to await click
methods from Playwright
- Resolves existing tests where this lint issue was present

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## Other information

<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->
2024-07-31 15:35:09 +00:00
Maria Hutt
196a7bf1b9 refactor(item, list): use the same background color (#29739) 2024-07-31 08:16:41 -07:00
Brandy Carney
454e509cea merge release-8.2.6 (#29730)
v8.2.6

---------

Co-authored-by: ionitron <hi@ionicframework.com>
2024-07-24 16:23:11 -04:00
Mikel Hamer
92ce563c40 fix(overlays): do not overwrite id set in htmlAttributes (#29722)
Issue number: resolves #29712

---------

<!-- 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?
In every type of overlay, the auto incremented overlay id is overwriting
any id set in htmlAttributes.

## What is the new behavior?
The id in htmlAttributes now takes precedence. 

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## Other information

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

---------

Co-authored-by: Sean Perkins <13732623+sean-perkins@users.noreply.github.com>
2024-07-24 14:17:56 +00:00
Sean Perkins
05913c3cc3 fix(angular): add focusTrap prop to modal and popover (#29729)
Issue number: resolves #29728

---------

<!-- 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 `focusTrap` property was missed when adding focus trapping
configuration to the modal and popover. This results in a type error
when developers attempt to assign to the property.

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

- Adds `focusTrap` property to `ion-modal` and `ion-popover` for the
angular component wrappers
- Resolves type warnings when using the property in angular

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## 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: `8.2.6-dev.11721672792.195afb09`
2024-07-24 14:14:58 +00:00
renovate[bot]
e344f7d709 chore(deps): update dependency @capacitor/core to v6.1.1 (#29727)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@capacitor/core](https://capacitorjs.com)
([source](https://togithub.com/ionic-team/capacitor)) | [`6.1.0` ->
`6.1.1`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/6.1.0/6.1.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fcore/6.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@capacitor%2fcore/6.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@capacitor%2fcore/6.1.0/6.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fcore/6.1.0/6.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>ionic-team/capacitor (@&#8203;capacitor/core)</summary>

###
[`v6.1.1`](https://togithub.com/ionic-team/capacitor/blob/HEAD/CHANGELOG.md#611-2024-07-17)

[Compare
Source](https://togithub.com/ionic-team/capacitor/compare/6.1.0...6.1.1)

##### Bug Fixes

- **android:** Allow WebView to load blob urls
([#&#8203;7551](https://togithub.com/ionic-team/capacitor/issues/7551))
([0dca917](0dca917da5))
- **android:** javascript injection not working on urls with query
([#&#8203;7545](https://togithub.com/ionic-team/capacitor/issues/7545))
([57ce5c6](57ce5c6556))
- **android:** send FormData on older devices
([#&#8203;7519](https://togithub.com/ionic-team/capacitor/issues/7519))
([de8b50d](de8b50dc1d))
- **android:** UTF-8 encode form data value
([#&#8203;7525](https://togithub.com/ionic-team/capacitor/issues/7525))
([a73ed31](a73ed318cd))
- **cli:** enable cleartext for live reload
([#&#8203;7563](https://togithub.com/ionic-team/capacitor/issues/7563))
([e06648f](e06648f456))
- **http:** handle UInt8Array on body
([#&#8203;7546](https://togithub.com/ionic-team/capacitor/issues/7546))
([cfb9ce1](cfb9ce1756))
- **ios:** make removeAllListeners accessible from javascript
([#&#8203;7566](https://togithub.com/ionic-team/capacitor/issues/7566))
([388a822](388a8223c6))
- **ios:** Match CapApp-SPM iOS version with project version
([#&#8203;7556](https://togithub.com/ionic-team/capacitor/issues/7556))
([df4dc9a](df4dc9a17f))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/ionic-team/ionic-framework).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MzguMCIsInVwZGF0ZWRJblZlciI6IjM3LjQzOC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-23 18:15:37 +00:00
Maria Hutt
25e765d1f0 feat(core): add ionic colors (#29707)
Co-authored-by: Brandy Carney <brandyscarney@users.noreply.github.com>
2024-07-19 11:37:57 -07:00
Sean Perkins
2bc3b1feae chore(vue): bump vue dev-deps to have generic type (#29718)
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. -->

In v3.2.46 [vue was updated](https://github.com/vuejs/core/pull/3969) to
add support for a generic type argument to the `Plugin` type. In
https://github.com/ionic-team/ionic-framework/pull/29637 Ionic's Vue
plugin was updated to use the generic, but the`@ionic/vue` project is
currently installing v3.2.37.

This results in a local type checking error and build error:
```
(!) Plugin typescript: @rollup/plugin-typescript TS2315: Type 'Plugin_2' is not generic.
src/ionic-vue.ts: (24:24)

24 export const IonicVue: Plugin<[IonicConfig?]> = {
```

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

- Bumps and pins the dev dependency of `vue` to `3.2.46`. There are
other breaking changes that Vue has shipped in minor/patch cycles that
prevents from updating to the latest.
- Resolves the type checking error locally during build of
the`@ionic/vue` package

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## Other information

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

Validation steps:
1. Checkout the branch
2. Build `core/`
3. In `packages/vue`, install latest pinned dependencies with `npm ci`
4. Sync the changes to the `vue` package with `npm run sync`
5. Open `/packages/vue/src/ionic-vue.ts`
6. Observe: No type errors on L24
7. Run `npm run build`
8. Observe: No build errors
2024-07-16 20:11:49 +00:00
renovate[bot]
2ddc793e86 chore(deps): update playwright (#29658)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type |
Update |
|---|---|---|---|---|---|---|---|
| [@playwright/test](https://playwright.dev)
([source](https://togithub.com/microsoft/playwright)) | [`^1.44.1` ->
`^1.45.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.44.1/1.45.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.44.1/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.44.1/1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| mcr.microsoft.com/playwright | `v1.44.1` -> `v1.45.0` |
[![age](https://developer.mend.io/api/mc/badges/age/docker/mcr.microsoft.com%2fplaywright/v1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/mcr.microsoft.com%2fplaywright/v1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/mcr.microsoft.com%2fplaywright/v1.44.1/v1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/mcr.microsoft.com%2fplaywright/v1.44.1/v1.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| final | minor |

---

### Release Notes

<details>
<summary>microsoft/playwright (@&#8203;playwright/test)</summary>

###
[`v1.45.0`](https://togithub.com/microsoft/playwright/compare/v1.44.1...4f3f6eecae490af444dd9298c9eaeb0c596915b7)

[Compare
Source](https://togithub.com/microsoft/playwright/compare/v1.44.1...v1.45.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/ionic-team/ionic-framework).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjQyMS45IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Maria Hutt <maria@ionic.io>
2024-07-16 18:49:24 +00:00
Mikel Hamer
1295cedae9 fix(alert): do not overwrite id set in htmlAttributes (#29708)
Issue number: resolves #29704

---------

<!-- 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?
Setting the id of an alert via htmlAttributes doesn't work due to it
being overwritten by the overlay id.

## What is the new behavior?
Setting the id of an alert via htmlAttributes works.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## Other information

First time PR, long time fan. Please let me know if I missed any of the
contributing guidelines, happy to change anything!
2024-07-15 14:51:14 +00:00
Maria Hutt
476a6ac837 test(button): add ionic mode to outline (#29702) 2024-07-11 08:18:32 -07:00
Maria Hutt
79a3fd00de feat(spinner): add size for ionic theme (#29699)
Co-authored-by: Brandy Carney <brandyscarney@users.noreply.github.com>
2024-07-09 12:44:44 -07:00
Maria Hutt
0979172b61 refactor(input): update bg color and label color for ionic (#29698) 2024-07-09 12:32:04 -07:00
Maria Hutt
abe3b3f100 feat(avatar): add xxsmall size (#29697)
Co-authored-by: Brandy Carney <brandyscarney@users.noreply.github.com>
2024-07-09 12:20:22 -07:00
Maria Hutt
a12c1ac319 refactor(item): use correct button sizes (#29691) 2024-07-09 11:35:06 -07:00
Maria Hutt
24221eb693 refactor(badge): update padding for medium size (#29692) 2024-07-09 11:17:56 -07:00
jcesarmobile
d30afa5a44 chore(angular-server): update eslint to 8.x (#29671)
Updated `eslint` to latest 8.x and `@ionic/eslint-config` to latest
(0.4.0), which is required for eslint 8.x to work.

Removed `eslint-plugin-import` and `@typescript-eslint/eslint-plugin`
since they are part of `@ionic/eslint-config`
2024-07-03 16:44:32 +00:00
Brandy Carney
10615bfb30 merge release-8.2.5 (#29687)
v8.2.5
2024-07-03 10:47:21 -04:00
Brandy Carney
0196d45902 docs(changelog): correct v8.2.5 changelog 2024-07-03 10:33:14 -04:00
Brandy Carney
6a1b193ec4 chore(): update package lock files 2024-07-03 10:08:11 -04:00
ionitron
556a05807c chore(): update package lock files 2024-07-03 14:06:02 +00:00
ionitron
3f9ae8405b v8.2.5 2024-07-03 14:05:17 +00:00
Brandy Carney
d70ea400a4 chore(deps): update dependency @stencil/core to v4.19.2 (#29685)
Issue number: resolves #29681

---------

### Release Notes

<details>
<summary>ionic-team/stencil (@&#8203;stencil/core)</summary>

###
[`v4.19.2`](https://togithub.com/ionic-team/stencil/blob/HEAD/CHANGELOG.md#-4192-2024-07-02)

[Compare
Source](https://togithub.com/ionic-team/stencil/compare/v4.19.1...v4.19.2)

### Bug Fixes

* **hydrate:** partially revert
[#5838](https://github.com/ionic-team/stencil/issues/5838)
([#5876](https://github.com/ionic-team/stencil/issues/5876))
([dfbc340](dfbc34007a))
* **hydrate:** support server side rendering of components with listener
([#5877](https://github.com/ionic-team/stencil/issues/5877))
([2c5b7f8](2c5b7f8ecb)),
fixes [#5869](https://github.com/ionic-team/stencil/issues/5869)
* **testing:** add testing sub module to export map
([#5873](https://github.com/ionic-team/stencil/issues/5873))
([bb2e04f](bb2e04f488)),
fixes [#5871](https://github.com/ionic-team/stencil/issues/5871) and
[#5868](https://github.com/ionic-team/stencil/issues/5868)

</details>
2024-07-02 21:02:33 +00:00
Sukaato
90893f46c9 feat(vue): add optional IonicConfig type parameter to IonicVue plugin (#29637)
Issue number: https://github.com/ionic-team/ionic-framework/issues/29659

---------

<!-- 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 using `.use(IonicVue, {})`, the config object has no autocomplete.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->
- Add type autocomplete on plugin option in VueJS package.


## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## 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: Julien Vaumoron <julien.vaumoron@kanoma.fr>
2024-06-28 19:02:20 +00:00
Brandy Carney
4eb16298a3 merge release-8.2.4 (#29678)
v8.2.4
2024-06-28 11:46:45 -04:00
Brandy Carney
485a1b6892 docs(changelog): update changelogs for skipped version 2024-06-28 11:31:59 -04:00
Brandy Carney
ba1c1dd2be chore(): update package lock files 2024-06-28 11:23:08 -04:00
ionitron
9fec58680f chore(): update package lock files 2024-06-28 15:11:29 +00:00
ionitron
2ec47e3a93 v8.2.4 2024-06-28 15:10:48 +00:00
Brandy Carney
fda8397e1c merge release-8.2.3 (#29676)
v8.2.3
2024-06-28 11:03:39 -04:00
Brandy Carney
085c243942 v8.2.3 2024-06-28 10:50:41 -04:00
Brandy Carney
4c9083050b chore(angular-server): add sync github action and update @stencil/core to 4.19.1 in core (#29670)
Issue number: internal

---------

This does a couple things:

**1 - Adds a `sync` command to get the latest `core` build in
`angular-server`**

The release process for `angular-server` failed
[here](https://github.com/ionic-team/ionic-framework/actions/runs/9686982182/job/26730689874).
This failure was only made apparent because the Lerna command
[here](52ff0505e8/.github/workflows/actions/publish-npm/action.yml (L35))
runs prior to building each package.

This should have been caught by CI on the [update to @stencil/core to
v4.19.0](https://github.com/ionic-team/ionic-framework/pull/29666), but
the `angular-server` package is the only package that doesn't sync
`core` before it builds. This PR adds a `sync` command so that
`angular-server` will use the latest core build during the normal build
action.

**2 - Resolving types errors in `angular-server`**

After properly syncing `core` in `angular-server` using the command
added, running build fails with the following:

<img width="400px" alt="Screenshot 2024-06-27 at 1 16 15 PM"
src="https://github.com/ionic-team/ionic-framework/assets/6577830/68d74750-821b-4776-b563-124d8fa06a79">

This was a regression in Stencil. `@stencil/core` has been updated to
resolve these errors so the build passes.
2024-06-27 18:12:12 -04:00
Brandy Carney
52ff0505e8 chore(deps): update dependency @stencil/core to v4.19.0 (#29666)
### Release Notes

<details>
<summary>ionic-team/stencil (@&#8203;stencil/core)</summary>

###
[`v4.19.0`](https://togithub.com/ionic-team/stencil/blob/HEAD/CHANGELOG.md#-4190-2024-06-26)

[Compare
Source](https://togithub.com/ionic-team/stencil/compare/v4.18.3...v4.19.0)

### Bug Fixes

* **compiler:** support rollup's external input option
([#3227](https://github.com/ionic-team/stencil/issues/3227))
([2c68849](2c6884970b)),
fixes [#3226](https://github.com/ionic-team/stencil/issues/3226)
* **emit:** don't emit test files
([#5789](https://github.com/ionic-team/stencil/issues/5789))
([50892f1](50892f153c)),
fixes [#5788](https://github.com/ionic-team/stencil/issues/5788)
* **hyrdate:** support vdom annotation in nested dsd structures
([#5856](https://github.com/ionic-team/stencil/issues/5856))
([61bb5e3](61bb5e3a08))
* label attribute not toggling input
([#3474](https://github.com/ionic-team/stencil/issues/3474))
([13db920](13db92075b)),
fixes [#3473](https://github.com/ionic-team/stencil/issues/3473)
* **mock-doc:** expose ShadowRoot and DocumentFragment globals
([#5827](https://github.com/ionic-team/stencil/issues/5827))
([98bbd7c](98bbd7c0d6)),
fixes [#3260](https://github.com/ionic-team/stencil/issues/3260)
* **runtime:** allow watchers to fire w/ no Stencil members
([#5855](https://github.com/ionic-team/stencil/issues/5855))
([850ad4f](850ad4f4dd)),
fixes [#5854](https://github.com/ionic-team/stencil/issues/5854)
* **runtime:** catch errors in async lifecycle methods
([#5826](https://github.com/ionic-team/stencil/issues/5826))
([87e5b33](87e5b33a3b)),
fixes [#5824](https://github.com/ionic-team/stencil/issues/5824)
* **runtime:** don't register listener before connected to DOM
([#5844](https://github.com/ionic-team/stencil/issues/5844))
([9d7021f](9d7021feab)),
fixes [#4067](https://github.com/ionic-team/stencil/issues/4067)
* **runtime:** properly assign style declarations
([#5838](https://github.com/ionic-team/stencil/issues/5838))
([5c10ebf](5c10ebfd09))
* **testing:** allow to re-use pages across it blocks
([#5830](https://github.com/ionic-team/stencil/issues/5830))
([561eab4](561eab4af6)),
fixes [#3720](https://github.com/ionic-team/stencil/issues/3720)
* **typescript:** remove unsupported label property
([#5840](https://github.com/ionic-team/stencil/issues/5840))
([d26ea2b](d26ea2b749)),
fixes [#3473](https://github.com/ionic-team/stencil/issues/3473)


### Features

* **cli:** support generation of sass and less files
([#5857](https://github.com/ionic-team/stencil/issues/5857))
([1883812](18838123f1)),
closes [#2155](https://github.com/ionic-team/stencil/issues/2155)
* **compiler:** generate export maps on build
([#5809](https://github.com/ionic-team/stencil/issues/5809))
([b6d2404](b6d24043bd))
* **complier:** support type import aliasing
([#5836](https://github.com/ionic-team/stencil/issues/5836))
([7ffb25d](7ffb25d259)),
closes [#2335](https://github.com/ionic-team/stencil/issues/2335)
* **runtime:** support declarative shadow DOM
([#5792](https://github.com/ionic-team/stencil/issues/5792))
([c837063](c837063628)),
closes [#4010](https://github.com/ionic-team/stencil/issues/4010)
* **testing:** add `toHaveLastReceivedEventDetail` event spy matcher
([#5829](https://github.com/ionic-team/stencil/issues/5829))
([63491de](63491de1e6)),
closes [#2488](https://github.com/ionic-team/stencil/issues/2488)
* **testing:** allow to disable network error logging via
'logFailingNetworkRequests' option
([#5839](https://github.com/ionic-team/stencil/issues/5839))
([dac3e33](dac3e33e14)),
closes [#2572](https://github.com/ionic-team/stencil/issues/2572)
* **testing:** expose captureBeyondViewport in pageCompareScreenshot
([#5828](https://github.com/ionic-team/stencil/issues/5828))
([cf6a450](cf6a4503b3)),
closes [#3188](https://github.com/ionic-team/stencil/issues/3188)

</details>
2024-06-26 21:09:28 +00:00
Maria Hutt
253465a8be test(refresher): update test page fullscreen title (#29614)
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 test page has the wrong title text.

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

- Updated the text to reflect the purpose of the page.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## 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
2024-06-26 20:30:58 +00:00
Maria Hutt
8e3fcbb658 chore(vue): unpin version (#29657)
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. -->

Vue input values cannot accept a string object without causing it's
behavior to fail. This is happening because a change that happened
through Vue.

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

- Vue released a fix, verified that fixes the issue, upgraded the
version

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## Other information

<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->
2024-06-26 17:39:11 +00:00
Brandy Carney
caa88b34e1 style(many): fix comments with wrong component names (#29665) 2024-06-26 16:29:19 +00:00
Brandy Carney
ceb41f31f3 fix(angular): popover arrow navigation with disabled items (#29662)
Issue number: resolves #29640

---------

## What is the current behavior?
(Angular) If a list inside of a popover contains a disabled item and is
included in the following way:

```html
<ion-list>
  <ion-item [button]="true">Option 1</ion-item>
  <ion-item [button]="true" [disabled]="true">Option 2</ion-item>
  <ion-item [button]="true">Option 3</ion-item>
</ion-list>
```

when you try to navigate using the arrow down keys, it will stop at the
disabled item instead of continuing over it.

Note that changing the item to the following will work:

```html
<ion-item [button]="true" disabled="true">Option 2</ion-item>
```

## What is the new behavior?
Reflect the `disabled` property in the item so that when items are
queried in the popover, the arrow down key skips over the disabled item.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

## Other information

This can be tested in the Angular test app by following the
documentation here:
https://github.com/ionic-team/ionic-framework/blob/main/docs/angular/testing.md

Removing my fix in `core`, then running `npm run build` and re-syncing
the test app should reproduce the problem.
2024-06-26 15:35:44 +00:00
renovate[bot]
3d6e2c4d2f chore(deps): update capacitor to v6.1.0 (#29627)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@capacitor/core](https://capacitorjs.com)
([source](https://togithub.com/ionic-team/capacitor)) | [`6.0.0` ->
`6.1.0`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/6.0.0/6.1.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fcore/6.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@capacitor%2fcore/6.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@capacitor%2fcore/6.0.0/6.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fcore/6.0.0/6.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@capacitor/keyboard](https://togithub.com/ionic-team/capacitor-plugins)
| [`6.0.0` ->
`6.0.1`](https://renovatebot.com/diffs/npm/@capacitor%2fkeyboard/6.0.0/6.0.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fkeyboard/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@capacitor%2fkeyboard/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@capacitor%2fkeyboard/6.0.0/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fkeyboard/6.0.0/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>ionic-team/capacitor (@&#8203;capacitor/core)</summary>

###
[`v6.1.0`](https://togithub.com/ionic-team/capacitor/blob/HEAD/CHANGELOG.md#610-2024-06-11)

[Compare
Source](https://togithub.com/ionic-team/capacitor/compare/6.0.0...6.1.0)

##### Bug Fixes

- **android:** avoid crash if server url ends in /
([#&#8203;7426](https://togithub.com/ionic-team/capacitor/issues/7426))
([f8264cc](f8264ccae1))
- **cli:** Avoid duplicate entries in packageClassList
([#&#8203;7470](https://togithub.com/ionic-team/capacitor/issues/7470))
([cca0b80](cca0b80529))
- **cli:** Run sync before updating gradle
([#&#8203;7497](https://togithub.com/ionic-team/capacitor/issues/7497))
([f27786e](f27786ea13))
- **http:** don't override readyState for non POST requests
([#&#8203;7488](https://togithub.com/ionic-team/capacitor/issues/7488))
([30c13a8](30c13a865e))
- **ios:** check if urlSchemeTask is stopped before calling its methods
([#&#8203;7482](https://togithub.com/ionic-team/capacitor/issues/7482))
([b32b5b1](b32b5b17ed))

##### Features

- **cli:** run plugin hooks
([#&#8203;7499](https://togithub.com/ionic-team/capacitor/issues/7499))
([3b847ea](3b847eac42))
- **ios:** CAPPluginMethod selector-based initializer
([#&#8203;7412](https://togithub.com/ionic-team/capacitor/issues/7412))
([44c5b55](44c5b55e36))

</details>

<details>
<summary>ionic-team/capacitor-plugins
(@&#8203;capacitor/keyboard)</summary>

###
[`v6.0.1`](https://togithub.com/ionic-team/capacitor-plugins/releases/tag/%40capacitor/camera%406.0.1)

[Compare
Source](https://togithub.com/ionic-team/capacitor-plugins/compare/@capacitor/keyboard@6.0.0...@capacitor/keyboard@6.0.1)

##### Bug Fixes

- **ios:** iOS panorama photos selected through CameraPlugin are
corrupted
([#&#8203;2090](https://togithub.com/ionic-team/capacitor-plugins/issues/2090))
([998e495](998e4950d5))
- **ios:** Picking ProRAW pictures from Gallery
([#&#8203;2098](https://togithub.com/ionic-team/capacitor-plugins/issues/2098))
([20b9e26](20b9e26b1b))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/ionic-team/ionic-framework).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zOTMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjQxMy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-24 18:50:54 +00:00
renovate[bot]
ff214bd5f3 chore(deps): update playwright (#29609)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@axe-core/playwright](https://togithub.com/dequelabs/axe-core-npm) |
[`^4.8.5` ->
`^4.9.1`](https://renovatebot.com/diffs/npm/@axe-core%2fplaywright/4.9.1/4.9.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@axe-core%2fplaywright/4.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@axe-core%2fplaywright/4.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@axe-core%2fplaywright/4.9.1/4.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@axe-core%2fplaywright/4.9.1/4.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@playwright/test](https://playwright.dev)
([source](https://togithub.com/microsoft/playwright)) | [`^1.39.0` ->
`^1.44.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.44.1/1.44.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.44.1/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.44.1/1.44.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Configuration

📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/ionic-team/ionic-framework).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zOTMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjM5My4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-18 00:24:57 +00:00
1523 changed files with 19200 additions and 21177 deletions

View File

@@ -6,11 +6,19 @@ runs:
- uses: actions/setup-node@v4
with:
node-version: 18.x
- uses: ./.github/workflows/actions/download-archive
with:
name: ionic-core
path: ./core
filename: CoreBuild.zip
- name: Install Angular Server Dependencies
run: npm ci
shell: bash
working-directory: ./packages/angular-server
- name: Sync
run: npm run sync
shell: bash
working-directory: ./packages/angular-server
- name: Build
run: npm run build.prod
shell: bash

View File

@@ -13,6 +13,6 @@ jobs:
- name: 'Auto-assign issue'
uses: pozil/auto-assign-issue@c5bca5027e680b9e8411b826d16947afd8c76b32 # v2.0.0
with:
assignees: brandyscarney, thetaPC, joselrio, rugoncalves, BenOsodrac, JoaoFerreira-FrontEnd, OS-giulianasilva
assignees: brandyscarney, thetaPC, joselrio, rugoncalves, BenOsodrac, JoaoFerreira-FrontEnd, OS-giulianasilva, tanner-reits
numOfAssignee: 1
allowSelfAssign: false

View File

@@ -3,6 +3,68 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [8.2.7](https://github.com/ionic-team/ionic-framework/compare/v8.2.5...v8.2.7) (2024-08-13)
### Bug Fixes
* **alert:** do not overwrite id set in htmlAttributes ([#29708](https://github.com/ionic-team/ionic-framework/issues/29708)) ([1295ced](https://github.com/ionic-team/ionic-framework/commit/1295cedae9ffbcc40389c19499e58e7e21fb424e)), closes [#29704](https://github.com/ionic-team/ionic-framework/issues/29704)
* **angular:** add focusTrap prop to modal and popover ([#29729](https://github.com/ionic-team/ionic-framework/issues/29729)) ([05913c3](https://github.com/ionic-team/ionic-framework/commit/05913c3cc3f2e8cb91f9a0944cd55e78392b0ba3)), closes [#29728](https://github.com/ionic-team/ionic-framework/issues/29728)
* **angular:** remove the tabindex set by routerLink from Ionic components ([#29744](https://github.com/ionic-team/ionic-framework/issues/29744)) ([20073e1](https://github.com/ionic-team/ionic-framework/commit/20073e10c934d3704734195c72f4281c9b9658e3)), closes [#20632](https://github.com/ionic-team/ionic-framework/issues/20632)
* **content:** allow custom roles and aria attributes to be set on content ([#29753](https://github.com/ionic-team/ionic-framework/issues/29753)) ([7b16397](https://github.com/ionic-team/ionic-framework/commit/7b16397714be773fda28658ab4009755f545b735))
* **item:** router-link remains clickable with item cover ([#29743](https://github.com/ionic-team/ionic-framework/issues/29743)) ([a9f278a](https://github.com/ionic-team/ionic-framework/commit/a9f278ad67758a19e0e12ce7ed6d13eb573b0765))
* **overlays:** do not overwrite id set in htmlAttributes ([#29722](https://github.com/ionic-team/ionic-framework/issues/29722)) ([92ce563](https://github.com/ionic-team/ionic-framework/commit/92ce563c402e557b08a622bd20f78459782312e2)), closes [#29712](https://github.com/ionic-team/ionic-framework/issues/29712)
* **react:** add onPointerDown, onTouchEnd, add onTouchMove ([#29736](https://github.com/ionic-team/ionic-framework/issues/29736)) ([bfee3cd](https://github.com/ionic-team/ionic-framework/commit/bfee3cd064a9b495489c2679ccfb762e622dbf09)), closes [#29174](https://github.com/ionic-team/ionic-framework/issues/29174)
* **vue:** pass router-link value to href to properly render clickable elements ([#29745](https://github.com/ionic-team/ionic-framework/issues/29745)) ([ab4f279](https://github.com/ionic-team/ionic-framework/commit/ab4f2791c1968adbb1d858c5f009fa251bb9101b))
## [8.2.6](https://github.com/ionic-team/ionic-framework/compare/v8.2.5...v8.2.6) (2024-07-24)
### Bug Fixes
* **alert:** do not overwrite id set in htmlAttributes ([#29708](https://github.com/ionic-team/ionic-framework/issues/29708)) ([1295ced](https://github.com/ionic-team/ionic-framework/commit/1295cedae9ffbcc40389c19499e58e7e21fb424e)), closes [#29704](https://github.com/ionic-team/ionic-framework/issues/29704)
* **angular:** add focusTrap prop to modal and popover ([#29729](https://github.com/ionic-team/ionic-framework/issues/29729)) ([05913c3](https://github.com/ionic-team/ionic-framework/commit/05913c3cc3f2e8cb91f9a0944cd55e78392b0ba3)), closes [#29728](https://github.com/ionic-team/ionic-framework/issues/29728)
* **overlays:** do not overwrite id set in htmlAttributes ([#29722](https://github.com/ionic-team/ionic-framework/issues/29722)) ([92ce563](https://github.com/ionic-team/ionic-framework/commit/92ce563c402e557b08a622bd20f78459782312e2)), closes [#29712](https://github.com/ionic-team/ionic-framework/issues/29712)
## [8.2.5](https://github.com/ionic-team/ionic-framework/compare/v8.2.4...v8.2.5) (2024-07-03)
### Bug Fixes
* **dependencies:** use latest @stencil/core to remove DOMException errors ([#29685](https://github.com/ionic-team/ionic-framework/issues/29685)) ([d70ea4](https://github.com/ionic-team/ionic/commit/d70ea400a4713bd091af1393e196e10844a190b6)), closes [#29681](https://github.com/ionic-team/ionic/issues/29681)
* **vue:** add optional IonicConfig type parameter to IonicVue plugin ([#29637](https://github.com/ionic-team/ionic-framework/issues/29637)) ([90893f4](https://github.com/ionic-team/ionic-framework/commit/90893f46c930dbccd4251fa2f56bdde30b669158)), closes [#29659](https://github.com/ionic-team/ionic-framework/issues/29659)
## [8.2.4](https://github.com/ionic-team/ionic-framework/compare/v8.2.2...v8.2.4) (2024-06-28)
### Bug Fixes
* **angular:** popover arrow navigation with disabled items ([#29662](https://github.com/ionic-team/ionic-framework/issues/29662)) ([ceb41f3](https://github.com/ionic-team/ionic-framework/commit/ceb41f31f382ff1bcf81de2b11680699d33d5077)), closes [#29640](https://github.com/ionic-team/ionic-framework/issues/29640)
## 8.2.3
This version should be skipped. Install 8.2.4 instead.
## [8.2.2](https://github.com/ionic-team/ionic-framework/compare/v8.2.1...v8.2.2) (2024-06-12)

View File

@@ -3,6 +3,60 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [8.2.7](https://github.com/ionic-team/ionic-framework/compare/v8.2.5...v8.2.7) (2024-08-13)
### Bug Fixes
* **alert:** do not overwrite id set in htmlAttributes ([#29708](https://github.com/ionic-team/ionic-framework/issues/29708)) ([1295ced](https://github.com/ionic-team/ionic-framework/commit/1295cedae9ffbcc40389c19499e58e7e21fb424e)), closes [#29704](https://github.com/ionic-team/ionic-framework/issues/29704)
* **content:** allow custom roles and aria attributes to be set on content ([#29753](https://github.com/ionic-team/ionic-framework/issues/29753)) ([7b16397](https://github.com/ionic-team/ionic-framework/commit/7b16397714be773fda28658ab4009755f545b735))
* **item:** router-link remains clickable with item cover ([#29743](https://github.com/ionic-team/ionic-framework/issues/29743)) ([a9f278a](https://github.com/ionic-team/ionic-framework/commit/a9f278ad67758a19e0e12ce7ed6d13eb573b0765))
* **overlays:** do not overwrite id set in htmlAttributes ([#29722](https://github.com/ionic-team/ionic-framework/issues/29722)) ([92ce563](https://github.com/ionic-team/ionic-framework/commit/92ce563c402e557b08a622bd20f78459782312e2)), closes [#29712](https://github.com/ionic-team/ionic-framework/issues/29712)
* **vue:** pass router-link value to href to properly render clickable elements ([#29745](https://github.com/ionic-team/ionic-framework/issues/29745)) ([ab4f279](https://github.com/ionic-team/ionic-framework/commit/ab4f2791c1968adbb1d858c5f009fa251bb9101b))
## [8.2.6](https://github.com/ionic-team/ionic-framework/compare/v8.2.5...v8.2.6) (2024-07-24)
### Bug Fixes
* **alert:** do not overwrite id set in htmlAttributes ([#29708](https://github.com/ionic-team/ionic-framework/issues/29708)) ([1295ced](https://github.com/ionic-team/ionic-framework/commit/1295cedae9ffbcc40389c19499e58e7e21fb424e)), closes [#29704](https://github.com/ionic-team/ionic-framework/issues/29704)
* **overlays:** do not overwrite id set in htmlAttributes ([#29722](https://github.com/ionic-team/ionic-framework/issues/29722)) ([92ce563](https://github.com/ionic-team/ionic-framework/commit/92ce563c402e557b08a622bd20f78459782312e2)), closes [#29712](https://github.com/ionic-team/ionic-framework/issues/29712)
## [8.2.5](https://github.com/ionic-team/ionic-framework/compare/v8.2.4...v8.2.5) (2024-07-03)
**Note:** Version bump only for package @ionic/core
## [8.2.4](https://github.com/ionic-team/ionic-framework/compare/v8.2.2...v8.2.4) (2024-06-28)
### Bug Fixes
* **angular:** popover arrow navigation with disabled items ([#29662](https://github.com/ionic-team/ionic-framework/issues/29662)) ([ceb41f3](https://github.com/ionic-team/ionic-framework/commit/ceb41f31f382ff1bcf81de2b11680699d33d5077)), closes [#29640](https://github.com/ionic-team/ionic-framework/issues/29640)
## 8.2.3
This version should be skipped. Install 8.2.4 instead.
## [8.2.2](https://github.com/ionic-team/ionic-framework/compare/v8.2.1...v8.2.2) (2024-06-12)

View File

@@ -1,5 +1,5 @@
# Get Playwright
FROM mcr.microsoft.com/playwright:v1.44.1
FROM mcr.microsoft.com/playwright:v1.46.0
# Set the working directory
WORKDIR /ionic

View File

@@ -185,7 +185,7 @@ ion-app,prop,theme,"ios" | "md" | "ionic",undefined,false,false
ion-avatar,shadow
ion-avatar,prop,mode,"ios" | "md",undefined,false,false
ion-avatar,prop,shape,"rectangular" | "round" | "soft" | undefined,undefined,false,false
ion-avatar,prop,size,"large" | "medium" | "small" | "xlarge" | "xsmall" | undefined,undefined,false,false
ion-avatar,prop,size,"large" | "medium" | "small" | "xlarge" | "xsmall" | "xxsmall" | undefined,undefined,false,false
ion-avatar,prop,theme,"ios" | "md" | "ionic",undefined,false,false
ion-avatar,css-prop,--border-radius,ionic
ion-avatar,css-prop,--border-radius,ios
@@ -398,50 +398,73 @@ ion-button,prop,theme,"ios" | "md" | "ionic",undefined,false,false
ion-button,prop,type,"button" | "reset" | "submit",'button',false,false
ion-button,event,ionBlur,void,true
ion-button,event,ionFocus,void,true
ion-button,css-prop,--background,ionic
ion-button,css-prop,--background,ios
ion-button,css-prop,--background,md
ion-button,css-prop,--background-activated,ionic
ion-button,css-prop,--background-activated,ios
ion-button,css-prop,--background-activated,md
ion-button,css-prop,--background-activated-opacity,ionic
ion-button,css-prop,--background-activated-opacity,ios
ion-button,css-prop,--background-activated-opacity,md
ion-button,css-prop,--background-focused,ionic
ion-button,css-prop,--background-focused,ios
ion-button,css-prop,--background-focused,md
ion-button,css-prop,--background-focused-opacity,ionic
ion-button,css-prop,--background-focused-opacity,ios
ion-button,css-prop,--background-focused-opacity,md
ion-button,css-prop,--background-hover,ionic
ion-button,css-prop,--background-hover,ios
ion-button,css-prop,--background-hover,md
ion-button,css-prop,--background-hover-opacity,ionic
ion-button,css-prop,--background-hover-opacity,ios
ion-button,css-prop,--background-hover-opacity,md
ion-button,css-prop,--border-color,ionic
ion-button,css-prop,--border-color,ios
ion-button,css-prop,--border-color,md
ion-button,css-prop,--border-radius,ionic
ion-button,css-prop,--border-radius,ios
ion-button,css-prop,--border-radius,md
ion-button,css-prop,--border-style,ionic
ion-button,css-prop,--border-style,ios
ion-button,css-prop,--border-style,md
ion-button,css-prop,--border-width,ionic
ion-button,css-prop,--border-width,ios
ion-button,css-prop,--border-width,md
ion-button,css-prop,--box-shadow,ionic
ion-button,css-prop,--box-shadow,ios
ion-button,css-prop,--box-shadow,md
ion-button,css-prop,--color,ionic
ion-button,css-prop,--color,ios
ion-button,css-prop,--color,md
ion-button,css-prop,--color-activated,ionic
ion-button,css-prop,--color-activated,ios
ion-button,css-prop,--color-activated,md
ion-button,css-prop,--color-focused,ionic
ion-button,css-prop,--color-focused,ios
ion-button,css-prop,--color-focused,md
ion-button,css-prop,--color-hover,ionic
ion-button,css-prop,--color-hover,ios
ion-button,css-prop,--color-hover,md
ion-button,css-prop,--opacity,ionic
ion-button,css-prop,--opacity,ios
ion-button,css-prop,--opacity,md
ion-button,css-prop,--padding-bottom,ionic
ion-button,css-prop,--padding-bottom,ios
ion-button,css-prop,--padding-bottom,md
ion-button,css-prop,--padding-end,ionic
ion-button,css-prop,--padding-end,ios
ion-button,css-prop,--padding-end,md
ion-button,css-prop,--padding-start,ionic
ion-button,css-prop,--padding-start,ios
ion-button,css-prop,--padding-start,md
ion-button,css-prop,--padding-top,ionic
ion-button,css-prop,--padding-top,ios
ion-button,css-prop,--padding-top,md
ion-button,css-prop,--ripple-color,ionic
ion-button,css-prop,--ripple-color,ios
ion-button,css-prop,--ripple-color,md
ion-button,css-prop,--transition,ionic
ion-button,css-prop,--transition,ios
ion-button,css-prop,--transition,md
ion-button,part,native
@@ -465,10 +488,13 @@ ion-card,prop,shape,"rectangular" | "round" | "soft" | undefined,'round',false,t
ion-card,prop,target,string | undefined,undefined,false,false
ion-card,prop,theme,"ios" | "md" | "ionic",undefined,false,false
ion-card,prop,type,"button" | "reset" | "submit",'button',false,false
ion-card,css-prop,--background,ionic
ion-card,css-prop,--background,ios
ion-card,css-prop,--background,md
ion-card,css-prop,--border-radius,ionic
ion-card,css-prop,--border-radius,ios
ion-card,css-prop,--border-radius,md
ion-card,css-prop,--color,ionic
ion-card,css-prop,--color,ios
ion-card,css-prop,--color,md
ion-card,part,native
@@ -665,19 +691,16 @@ ion-datetime,event,ionFocus,void,true
ion-datetime,css-prop,--background,ionic
ion-datetime,css-prop,--background,ios
ion-datetime,css-prop,--background,md
ion-datetime,css-prop,--background-rgb,ionic
ion-datetime,css-prop,--background-rgb,ios
ion-datetime,css-prop,--background-rgb,md
ion-datetime,css-prop,--title-color,ionic
ion-datetime,css-prop,--focus-ring-color,ionic
ion-datetime,css-prop,--focus-ring-width,ionic
ion-datetime,css-prop,--title-color,ios
ion-datetime,css-prop,--title-color,md
ion-datetime,css-prop,--wheel-fade-background-rgb,ionic
ion-datetime,css-prop,--wheel-fade-background-rgb,ios
ion-datetime,css-prop,--wheel-fade-background-rgb,md
ion-datetime,css-prop,--wheel-highlight-background,ionic
ion-datetime,css-prop,--wheel-highlight-background,ios
ion-datetime,css-prop,--wheel-highlight-background,md
ion-datetime,css-prop,--wheel-highlight-border-radius,ionic
ion-datetime,css-prop,--wheel-highlight-border-radius,ios
ion-datetime,css-prop,--wheel-highlight-border-radius,md
ion-datetime,part,calendar-day
@@ -972,7 +995,7 @@ ion-item,prop,button,boolean,false,false,false
ion-item,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record<never, never> | undefined,undefined,false,true
ion-item,prop,detail,boolean | undefined,undefined,false,false
ion-item,prop,detailIcon,string | undefined,undefined,false,false
ion-item,prop,disabled,boolean,false,false,false
ion-item,prop,disabled,boolean,false,false,true
ion-item,prop,download,string | undefined,undefined,false,false
ion-item,prop,href,string | undefined,undefined,false,false
ion-item,prop,lines,"full" | "inset" | "none" | undefined,undefined,false,false
@@ -989,19 +1012,25 @@ ion-item,css-prop,--background,md
ion-item,css-prop,--background-activated,ionic
ion-item,css-prop,--background-activated,ios
ion-item,css-prop,--background-activated,md
ion-item,css-prop,--background-activated-opacity,ionic
ion-item,css-prop,--background-activated-opacity,ios
ion-item,css-prop,--background-activated-opacity,md
ion-item,css-prop,--background-focused,ionic
ion-item,css-prop,--background-focused,ios
ion-item,css-prop,--background-focused,md
ion-item,css-prop,--background-focused-opacity,ionic
ion-item,css-prop,--background-focused-opacity,ios
ion-item,css-prop,--background-focused-opacity,md
ion-item,css-prop,--background-hover,ionic
ion-item,css-prop,--background-hover,ios
ion-item,css-prop,--background-hover,md
ion-item,css-prop,--background-hover-opacity,ionic
ion-item,css-prop,--background-hover-opacity,ios
ion-item,css-prop,--background-hover-opacity,md
ion-item,css-prop,--border-color,ionic
ion-item,css-prop,--border-color,ios
ion-item,css-prop,--border-color,md
ion-item,css-prop,--border-radius,ionic
ion-item,css-prop,--border-radius,ios
ion-item,css-prop,--border-radius,md
ion-item,css-prop,--border-style,ionic
@@ -1010,30 +1039,43 @@ ion-item,css-prop,--border-style,md
ion-item,css-prop,--border-width,ionic
ion-item,css-prop,--border-width,ios
ion-item,css-prop,--border-width,md
ion-item,css-prop,--color,ionic
ion-item,css-prop,--color,ios
ion-item,css-prop,--color,md
ion-item,css-prop,--color-activated,ionic
ion-item,css-prop,--color-activated,ios
ion-item,css-prop,--color-activated,md
ion-item,css-prop,--color-focused,ionic
ion-item,css-prop,--color-focused,ios
ion-item,css-prop,--color-focused,md
ion-item,css-prop,--color-hover,ionic
ion-item,css-prop,--color-hover,ios
ion-item,css-prop,--color-hover,md
ion-item,css-prop,--detail-icon-color,ionic
ion-item,css-prop,--detail-icon-color,ios
ion-item,css-prop,--detail-icon-color,md
ion-item,css-prop,--detail-icon-font-size,ionic
ion-item,css-prop,--detail-icon-font-size,ios
ion-item,css-prop,--detail-icon-font-size,md
ion-item,css-prop,--detail-icon-opacity,ionic
ion-item,css-prop,--detail-icon-opacity,ios
ion-item,css-prop,--detail-icon-opacity,md
ion-item,css-prop,--inner-border-width,ionic
ion-item,css-prop,--inner-border-width,ios
ion-item,css-prop,--inner-border-width,md
ion-item,css-prop,--inner-box-shadow,ionic
ion-item,css-prop,--inner-box-shadow,ios
ion-item,css-prop,--inner-box-shadow,md
ion-item,css-prop,--inner-padding-bottom,ionic
ion-item,css-prop,--inner-padding-bottom,ios
ion-item,css-prop,--inner-padding-bottom,md
ion-item,css-prop,--inner-padding-end,ionic
ion-item,css-prop,--inner-padding-end,ios
ion-item,css-prop,--inner-padding-end,md
ion-item,css-prop,--inner-padding-start,ionic
ion-item,css-prop,--inner-padding-start,ios
ion-item,css-prop,--inner-padding-start,md
ion-item,css-prop,--inner-padding-top,ionic
ion-item,css-prop,--inner-padding-top,ios
ion-item,css-prop,--inner-padding-top,md
ion-item,css-prop,--min-height,ionic
@@ -1051,8 +1093,10 @@ ion-item,css-prop,--padding-start,md
ion-item,css-prop,--padding-top,ionic
ion-item,css-prop,--padding-top,ios
ion-item,css-prop,--padding-top,md
ion-item,css-prop,--ripple-color,ionic
ion-item,css-prop,--ripple-color,ios
ion-item,css-prop,--ripple-color,md
ion-item,css-prop,--transition,ionic
ion-item,css-prop,--transition,ios
ion-item,css-prop,--transition,md
ion-item,part,detail-icon
@@ -2097,8 +2141,11 @@ ion-spinner,prop,duration,number | undefined,undefined,false,false
ion-spinner,prop,mode,"ios" | "md",undefined,false,false
ion-spinner,prop,name,"bubbles" | "circles" | "circular" | "crescent" | "dots" | "lines" | "lines-sharp" | "lines-sharp-small" | "lines-small" | undefined,undefined,false,false
ion-spinner,prop,paused,boolean,false,false,false
ion-spinner,prop,size,"large" | "medium" | "small" | "xlarge" | "xsmall" | undefined,undefined,false,false
ion-spinner,prop,theme,"ios" | "md" | "ionic",undefined,false,false
ion-spinner,css-prop,--color
ion-spinner,css-prop,--color,ionic
ion-spinner,css-prop,--color,ios
ion-spinner,css-prop,--color,md
ion-split-pane,shadow
ion-split-pane,prop,contentId,string | undefined,undefined,false,true
@@ -2229,7 +2276,8 @@ ion-textarea,prop,placeholder,string | undefined,undefined,false,false
ion-textarea,prop,readonly,boolean,false,false,false
ion-textarea,prop,required,boolean,false,false,false
ion-textarea,prop,rows,number | undefined,undefined,false,false
ion-textarea,prop,shape,"round" | undefined,undefined,false,false
ion-textarea,prop,shape,"rectangular" | "round" | "soft" | undefined,undefined,false,false
ion-textarea,prop,size,"large" | "medium" | "small" | undefined,'medium',false,false
ion-textarea,prop,spellcheck,boolean,false,false,false
ion-textarea,prop,theme,"ios" | "md" | "ionic",undefined,false,false
ion-textarea,prop,value,null | string | undefined,'',false,false

View File

@@ -67,4 +67,5 @@ const ASYNC_PLAYWRIGHT_ASSERTS = [
'toHaveTitle',
'toHaveURL',
'toBeOK',
'click'
];

12546
core/package-lock.json generated
View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "@ionic/core",
"version": "8.2.2",
"version": "8.2.7",
"description": "Base components for Ionic",
"keywords": [
"ionic",
@@ -32,12 +32,12 @@
],
"dependencies": {
"@phosphor-icons/core": "^2.1.1",
"@stencil/core": "^4.17.2",
"@stencil/core": "^4.19.2",
"ionicons": "^7.2.2",
"tslib": "^2.1.0"
},
"devDependencies": {
"@axe-core/playwright": "^4.8.5",
"@axe-core/playwright": "^4.9.1",
"@capacitor/core": "^6.0.0",
"@capacitor/haptics": "^6.0.0",
"@capacitor/keyboard": "^6.0.0",
@@ -45,15 +45,15 @@
"@clack/prompts": "^0.7.0",
"@ionic/eslint-config": "^0.3.0",
"@ionic/prettier-config": "^2.0.0",
"@playwright/test": "^1.39.0",
"@playwright/test": "^1.46.0",
"@rollup/plugin-node-resolve": "^8.4.0",
"@rollup/plugin-virtual": "^2.0.3",
"@stencil/angular-output-target": "^0.8.4",
"@stencil/react-output-target": "^0.5.3",
"@stencil/react-output-target": "^0.6.0",
"@stencil/sass": "^3.0.9",
"@stencil/vue-output-target": "^0.8.7",
"@stencil/vue-output-target": "^0.8.9",
"@types/jest": "^29.5.6",
"@types/node": "^14.6.0",
"@types/node": "^18.19.47",
"@typescript-eslint/eslint-plugin": "^6.7.2",
"@typescript-eslint/parser": "^6.7.2",
"chalk": "^5.3.0",

View File

@@ -28,6 +28,27 @@
document.head.appendChild(linkTag);
}
/**
* The `ionic` theme uses a different stylesheet than the `iOS` and `md` themes.
* This is to ensure that the `ionic` theme is loaded when the `ionic:theme=ionic`
* or when the HTML tag has the `theme="ionic"` attribute. This is useful for
* the snapshot tests, where the `ionic` theme is not loaded by default.
*/
const themeQuery = window.location.search.match(/ionic:theme=([a-z]+)/);
const themeAttr = document.documentElement.getAttribute('theme');
if ((themeQuery && themeQuery[1] === 'ionic') || themeAttr === 'ionic') {
const ionicThemeLinkTag = document.querySelector('link[href*="css/ionic/bundle.ionic.css"]');
if (!ionicThemeLinkTag) {
const linkTag = document.createElement('link');
linkTag.setAttribute('rel', 'stylesheet');
linkTag.setAttribute('type', 'text/css');
linkTag.setAttribute('href', '/css/ionic/bundle.ionic.css');
document.head.appendChild(linkTag);
}
}
window.Ionic = window.Ionic || {};
window.Ionic.config = window.Ionic.config || {};

View File

@@ -340,9 +340,9 @@ export namespace Components {
*/
"shape"?: 'soft' | 'round' | 'rectangular';
/**
* Set to `"xsmall"` for the smallest size, `"small"` for a compact size, `"medium"` for the default height and width, `"large"` for a larger size, or `"xlarge"` for the largest dimensions. Defaults to `"medium"` for the `ionic` theme, undefined for all other themes.
* Set to `"xxsmall"` for the smallest size. Set to `"xsmall"` for a very small size. Set to `"small"` for a compact size. Set to `"medium"` for the default height and width. Set to `"large"` for a larger size. Set to `"xlarge"` for the largest dimensions. Defaults to `"medium"` for the `ionic` theme, undefined for all other themes.
*/
"size"?: `xsmall` | 'small' | 'medium' | 'large' | 'xlarge';
"size"?: 'xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
/**
* The theme determines the visual appearance of the component.
*/
@@ -3346,6 +3346,10 @@ export namespace Components {
* If `true`, the spinner's animation will be paused.
*/
"paused": boolean;
/**
* Set to `"xsmall"` for the smallest size. Set to `"small"` for a smaller size. Set to `"medium"` for a medium size. Set to `"large"` for a large size. Set to `"xlarge"` for the largest size. Defaults to `"xsmall"` for the `ionic` theme, undefined for all other themes.
*/
"size"?: 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
/**
* The theme determines the visual appearance of the component.
*/
@@ -3613,9 +3617,13 @@ export namespace Components {
*/
"setFocus": () => Promise<void>;
/**
* The shape of the textarea. If "round" it will have an increased border radius.
* Set to `"soft"` for a textarea with slightly rounded corners, `"round"` for a textarea with fully rounded corners, or `"rectangular"` for a textarea without rounded corners. Defaults to `"round"` for the `ionic` theme, undefined for all other themes.
*/
"shape"?: 'round';
"shape"?: 'soft' | 'round' | 'rectangular';
/**
* The size of the textarea. If "large" it will increase the height of the textarea, while "small" and "medium" provide progressively smaller heights. The default size is "medium". This property only applies to the `"ionic"` theme.
*/
"size"?: 'small' | 'medium' | 'large';
/**
* If `true`, the element will have its spelling and grammar checked.
*/
@@ -5596,9 +5604,9 @@ declare namespace LocalJSX {
*/
"shape"?: 'soft' | 'round' | 'rectangular';
/**
* Set to `"xsmall"` for the smallest size, `"small"` for a compact size, `"medium"` for the default height and width, `"large"` for a larger size, or `"xlarge"` for the largest dimensions. Defaults to `"medium"` for the `ionic` theme, undefined for all other themes.
* Set to `"xxsmall"` for the smallest size. Set to `"xsmall"` for a very small size. Set to `"small"` for a compact size. Set to `"medium"` for the default height and width. Set to `"large"` for a larger size. Set to `"xlarge"` for the largest dimensions. Defaults to `"medium"` for the `ionic` theme, undefined for all other themes.
*/
"size"?: `xsmall` | 'small' | 'medium' | 'large' | 'xlarge';
"size"?: 'xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
/**
* The theme determines the visual appearance of the component.
*/
@@ -8689,6 +8697,10 @@ declare namespace LocalJSX {
* If `true`, the spinner's animation will be paused.
*/
"paused"?: boolean;
/**
* Set to `"xsmall"` for the smallest size. Set to `"small"` for a smaller size. Set to `"medium"` for a medium size. Set to `"large"` for a large size. Set to `"xlarge"` for the largest size. Defaults to `"xsmall"` for the `ionic` theme, undefined for all other themes.
*/
"size"?: 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
/**
* The theme determines the visual appearance of the component.
*/
@@ -8965,9 +8977,13 @@ declare namespace LocalJSX {
*/
"rows"?: number;
/**
* The shape of the textarea. If "round" it will have an increased border radius.
* Set to `"soft"` for a textarea with slightly rounded corners, `"round"` for a textarea with fully rounded corners, or `"rectangular"` for a textarea without rounded corners. Defaults to `"round"` for the `ionic` theme, undefined for all other themes.
*/
"shape"?: 'round';
"shape"?: 'soft' | 'round' | 'rectangular';
/**
* The size of the textarea. If "large" it will increase the height of the textarea, while "small" and "medium" provide progressively smaller heights. The default size is "medium". This property only applies to the `"ionic"` theme.
*/
"size"?: 'small' | 'medium' | 'large';
/**
* If `true`, the element will have its spelling and grammar checked.
*/

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 88 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 88 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 88 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 89 KiB

View File

@@ -48,7 +48,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ config, title }) => {
await expect(accordion).toHaveClass(/accordion-collapsed/);
accordion.click();
await accordion.click();
await page.waitForChanges();
await expect(accordion).toHaveClass(/accordion-collapsed/);
@@ -71,7 +71,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ config, title }) => {
await expect(accordion).toHaveClass(/accordion-collapsed/);
accordion.click();
await accordion.click();
await page.waitForChanges();
await expect(accordion).toHaveClass(/accordion-collapsed/);

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -48,7 +48,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ config, title }) => {
await expect(accordion).toHaveClass(/accordion-collapsed/);
accordion.click();
await accordion.click();
await page.waitForChanges();
await expect(accordion).toHaveClass(/accordion-collapsed/);
@@ -71,7 +71,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ config, title }) => {
await expect(accordion).toHaveClass(/accordion-collapsed/);
accordion.click();
await accordion.click();
await page.waitForChanges();
await expect(accordion).toHaveClass(/accordion-collapsed/);

View File

@@ -312,7 +312,9 @@ export class ActionSheet implements ComponentInterface, OverlayInterface {
}
componentWillLoad() {
setOverlayId(this.el);
if (!this.htmlAttributes?.id) {
setOverlayId(this.el);
}
}
componentDidLoad() {

View File

@@ -1,41 +0,0 @@
import { newSpecPage } from '@stencil/core/testing';
import { ActionSheet } from '../action-sheet';
it('action sheet should be assigned an incrementing id', async () => {
const page = await newSpecPage({
components: [ActionSheet],
html: `<ion-action-sheet is-open="true"></ion-action-sheet>`,
});
let actionSheet: HTMLIonActionSheetElement;
actionSheet = page.body.querySelector('ion-action-sheet')!;
expect(actionSheet).not.toBe(null);
expect(actionSheet.getAttribute('id')).toBe('ion-overlay-1');
// Remove the action sheet from the DOM
actionSheet.remove();
await page.waitForChanges();
// Create a new action sheet to verify the id is incremented
actionSheet = document.createElement('ion-action-sheet');
actionSheet.isOpen = true;
page.body.appendChild(actionSheet);
await page.waitForChanges();
actionSheet = page.body.querySelector('ion-action-sheet')!;
expect(actionSheet.getAttribute('id')).toBe('ion-overlay-2');
// Presenting the same action sheet again should reuse the existing id
actionSheet.isOpen = false;
await page.waitForChanges();
actionSheet.isOpen = true;
await page.waitForChanges();
actionSheet = page.body.querySelector('ion-action-sheet')!;
expect(actionSheet.getAttribute('id')).toBe('ion-overlay-2');
});

View File

@@ -0,0 +1,55 @@
import { newSpecPage } from '@stencil/core/testing';
import { ActionSheet } from '../action-sheet';
import { h } from '@stencil/core';
describe('action-sheet: id', () => {
it('action sheet should be assigned an incrementing id', async () => {
const page = await newSpecPage({
components: [ActionSheet],
html: `<ion-action-sheet is-open="true"></ion-action-sheet>`,
});
let actionSheet: HTMLIonActionSheetElement;
actionSheet = page.body.querySelector('ion-action-sheet')!;
expect(actionSheet).not.toBe(null);
expect(actionSheet.getAttribute('id')).toBe('ion-overlay-1');
// Remove the action sheet from the DOM
actionSheet.remove();
await page.waitForChanges();
// Create a new action sheet to verify the id is incremented
actionSheet = document.createElement('ion-action-sheet');
actionSheet.isOpen = true;
page.body.appendChild(actionSheet);
await page.waitForChanges();
actionSheet = page.body.querySelector('ion-action-sheet')!;
expect(actionSheet.getAttribute('id')).toBe('ion-overlay-2');
// Presenting the same action sheet again should reuse the existing id
actionSheet.isOpen = false;
await page.waitForChanges();
actionSheet.isOpen = true;
await page.waitForChanges();
actionSheet = page.body.querySelector('ion-action-sheet')!;
expect(actionSheet.getAttribute('id')).toBe('ion-overlay-2');
});
it('should not overwrite the id set in htmlAttributes', async () => {
const id = 'custom-id';
const page = await newSpecPage({
components: [ActionSheet],
template: () => <ion-action-sheet htmlAttributes={{ id }} overlayIndex={-1}></ion-action-sheet>,
});
const alert = page.body.querySelector('ion-action-sheet')!;
expect(alert.id).toBe(id);
});
});

View File

@@ -343,7 +343,9 @@ export class Alert implements ComponentInterface, OverlayInterface {
}
componentWillLoad() {
setOverlayId(this.el);
if (!this.htmlAttributes?.id) {
setOverlayId(this.el);
}
this.inputsChanged();
this.buttonsChanged();
}

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -1,41 +0,0 @@
import { newSpecPage } from '@stencil/core/testing';
import { Alert } from '../alert';
it('alert should be assigned an incrementing id', async () => {
const page = await newSpecPage({
components: [Alert],
html: `<ion-alert is-open="true"></ion-alert>`,
});
let alert: HTMLIonAlertElement;
alert = page.body.querySelector('ion-alert')!;
expect(alert).not.toBe(null);
expect(alert.getAttribute('id')).toBe('ion-overlay-1');
// Remove the alert from the DOM
alert.remove();
await page.waitForChanges();
// Create a new alert to verify the id is incremented
alert = document.createElement('ion-alert');
alert.isOpen = true;
page.body.appendChild(alert);
await page.waitForChanges();
alert = page.body.querySelector('ion-alert')!;
expect(alert.getAttribute('id')).toBe('ion-overlay-2');
// Presenting the same alert again should reuse the existing id
alert.isOpen = false;
await page.waitForChanges();
alert.isOpen = true;
await page.waitForChanges();
alert = page.body.querySelector('ion-alert')!;
expect(alert.getAttribute('id')).toBe('ion-overlay-2');
});

View File

@@ -0,0 +1,55 @@
import { newSpecPage } from '@stencil/core/testing';
import { Alert } from '../alert';
import { h } from '@stencil/core';
describe('alert: id', () => {
it('alert should be assigned an incrementing id', async () => {
const page = await newSpecPage({
components: [Alert],
html: `<ion-alert is-open="true"></ion-alert>`,
});
let alert: HTMLIonAlertElement;
alert = page.body.querySelector('ion-alert')!;
expect(alert).not.toBe(null);
expect(alert.getAttribute('id')).toBe('ion-overlay-1');
// Remove the alert from the DOM
alert.remove();
await page.waitForChanges();
// Create a new alert to verify the id is incremented
alert = document.createElement('ion-alert');
alert.isOpen = true;
page.body.appendChild(alert);
await page.waitForChanges();
alert = page.body.querySelector('ion-alert')!;
expect(alert.getAttribute('id')).toBe('ion-overlay-2');
// Presenting the same alert again should reuse the existing id
alert.isOpen = false;
await page.waitForChanges();
alert.isOpen = true;
await page.waitForChanges();
alert = page.body.querySelector('ion-alert')!;
expect(alert.getAttribute('id')).toBe('ion-overlay-2');
});
it('should not overwrite the id set in htmlAttributes', async () => {
const id = 'custom-id';
const page = await newSpecPage({
components: [Alert],
template: () => <ion-alert htmlAttributes={{ id }} overlayIndex={-1}></ion-alert>,
});
const alert = page.body.querySelector('ion-alert')!;
expect(alert.id).toBe(id);
});
});

View File

@@ -1,5 +1,5 @@
@use "../../themes/ionic/ionic.globals.scss" as globals;
@import "./avatar";
@import "./avatar.common";
// Ionic Avatar
// --------------------------------------------------
@@ -30,6 +30,20 @@
// Avatar Sizes
// --------------------------------------------------
/* 2-Extra Small */
:host(.avatar-xxsmall) {
--padding-end: #{globals.$ionic-space-050};
--padding-start: #{globals.$ionic-space-050};
width: globals.$ionic-scale-400;
height: globals.$ionic-scale-400;
font-size: globals.$ionic-font-size-300;
line-height: globals.$ionic-line-height-500;
}
/* Extra Small */
:host(.avatar-xsmall) {
--padding-end: #{globals.$ionic-space-050};
--padding-start: #{globals.$ionic-space-050};
@@ -39,9 +53,10 @@
font-size: globals.$ionic-font-size-300;
line-height: globals.$ionic-line-height-400;
line-height: globals.$ionic-line-height-500;
}
/* Small */
:host(.avatar-small) {
--padding-end: #{globals.$ionic-space-150};
--padding-start: #{globals.$ionic-space-150};
@@ -54,6 +69,7 @@
line-height: globals.$ionic-line-height-600;
}
/* Medium */
:host(.avatar-medium) {
--padding-end: #{globals.$ionic-space-200};
--padding-start: #{globals.$ionic-space-200};
@@ -64,6 +80,7 @@
font-size: globals.$ionic-font-size-450;
}
/* Large */
:host(.avatar-large) {
--padding-end: #{globals.$ionic-space-250};
--padding-start: #{globals.$ionic-space-250};
@@ -74,6 +91,7 @@
font-size: globals.$ionic-font-size-500;
}
/* Extra Large */
:host(.avatar-xlarge) {
--padding-end: #{globals.$ionic-space-300};
--padding-start: #{globals.$ionic-space-300};
@@ -87,6 +105,7 @@
// Avatar Shapes
// --------------------------------------------------
:host(.avatar-xxsmall.avatar-soft),
:host(.avatar-xsmall.avatar-soft),
:host(.avatar-small.avatar-soft) {
--border-radius: #{globals.$ionic-border-radius-100};

View File

@@ -1,4 +1,4 @@
@import "./avatar";
@import "./avatar.common";
@import "./avatar.ios.vars";
// iOS Avatar

View File

@@ -1,4 +1,4 @@
@import "./avatar";
@import "./avatar.common";
@import "./avatar.md.vars";
// Material Design Avatar

View File

@@ -20,13 +20,16 @@ export class Avatar implements ComponentInterface {
@Element() el!: HTMLElement;
/**
* Set to `"xsmall"` for the smallest size, `"small"` for a compact size, `"medium"`
* for the default height and width, `"large"` for a larger size, or `"xlarge"` for
* the largest dimensions.
* Set to `"xxsmall"` for the smallest size.
* Set to `"xsmall"` for a very small size.
* Set to `"small"` for a compact size.
* Set to `"medium"` for the default height and width.
* Set to `"large"` for a larger size.
* Set to `"xlarge"` for the largest dimensions.
*
* Defaults to `"medium"` for the `ionic` theme, undefined for all other themes.
*/
@Prop() size?: `xsmall` | 'small' | 'medium' | 'large' | 'xlarge';
@Prop() size?: 'xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
/**
* Set to `"soft"` for an avatar with slightly rounded corners,

View File

@@ -108,6 +108,7 @@ configs({ directions: ['ltr'], modes: ['ionic-md'] }).forEach(({ config, screens
</style>
<div id="container">
<ion-avatar shape="soft" size="xxsmall">A</ion-avatar>
<ion-avatar shape="soft" size="xsmall">AB</ion-avatar>
<ion-avatar shape="soft" size="small">AB</ion-avatar>
<ion-avatar shape="soft">AB</ion-avatar>
@@ -132,6 +133,9 @@ configs({ directions: ['ltr'], modes: ['ionic-md'] }).forEach(({ config, screens
</style>
<div id="container">
<ion-avatar shape="soft" size="xxsmall">
<ion-icon name="person-outline"></ion-icon>
</ion-avatar>
<ion-avatar shape="soft" size="xsmall">
<ion-icon name="person-outline"></ion-icon>
</ion-avatar>
@@ -162,6 +166,9 @@ configs({ directions: ['ltr'], modes: ['ionic-md'] }).forEach(({ config, screens
</style>
<div id="container">
<ion-avatar shape="soft" size="xxsmall">
<img src="/src/components/avatar/test/avatar.svg"/>
</ion-avatar>
<ion-avatar shape="soft" size="xsmall">
<img src="/src/components/avatar/test/avatar.svg"/>
</ion-avatar>

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -43,6 +43,7 @@
<h2>Soft</h2>
<div class="container">
<ion-avatar shape="soft" size="xxsmall">A</ion-avatar>
<ion-avatar shape="soft" size="xsmall">AB</ion-avatar>
<ion-avatar shape="soft" size="small">AB</ion-avatar>
<ion-avatar shape="soft" size="medium">AB</ion-avatar>
@@ -52,6 +53,7 @@
<h2>Round</h2>
<div class="container">
<ion-avatar shape="round" size="xxsmall">A</ion-avatar>
<ion-avatar shape="round" size="xsmall">AB</ion-avatar>
<ion-avatar shape="round" size="small">AB</ion-avatar>
<ion-avatar shape="round" size="medium">AB</ion-avatar>
@@ -61,6 +63,7 @@
<h2>Rectangular</h2>
<div class="container">
<ion-avatar shape="rectangular" size="xxsmall">A</ion-avatar>
<ion-avatar shape="rectangular" size="xsmall">AB</ion-avatar>
<ion-avatar shape="rectangular" size="small">AB</ion-avatar>
<ion-avatar shape="rectangular" size="medium">AB</ion-avatar>

View File

@@ -6,6 +6,51 @@ import { configs, test } from '@utils/test/playwright';
*/
configs({ directions: ['ltr'], modes: ['ionic-md'] }).forEach(({ config, screenshot, title }) => {
test.describe(title('avatar: size'), () => {
test.describe('xxsmall', () => {
test('should not have visual regressions when containing text', async ({ page }) => {
await page.setContent(
`
<ion-avatar size="xxsmall">A</ion-avatar>
`,
config
);
const avatar = page.locator('ion-avatar');
await expect(avatar).toHaveScreenshot(screenshot(`avatar-size-xxsmall-text`));
});
test('should not have visual regressions when containing an icon', async ({ page }) => {
await page.setContent(
`
<ion-avatar size="xxsmall">
<ion-icon name="person-outline"></ion-icon>
</ion-avatar>
`,
config
);
const avatar = page.locator('ion-avatar');
await expect(avatar).toHaveScreenshot(screenshot(`avatar-size-xxsmall-icon`));
});
test('should not have visual regressions when containing an image', async ({ page }) => {
await page.setContent(
`
<ion-avatar size="xxsmall">
<img src="/src/components/avatar/test/avatar.svg"/>
</ion-avatar>
`,
config
);
const avatar = page.locator('ion-avatar');
await expect(avatar).toHaveScreenshot(screenshot(`avatar-size-xxsmall-image`));
});
});
test.describe('xsmall', () => {
test('should not have visual regressions when containing text', async ({ page }) => {
await page.setContent(

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 644 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 541 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 B

View File

@@ -43,6 +43,7 @@
<h2>Text</h2>
<div class="container">
<ion-avatar size="xxsmall">A</ion-avatar>
<ion-avatar size="xsmall">AB</ion-avatar>
<ion-avatar size="small">AB</ion-avatar>
<ion-avatar size="medium">AB</ion-avatar>
@@ -52,6 +53,9 @@
<h2>Icons</h2>
<div class="container">
<ion-avatar size="xxsmall">
<ion-icon name="person-outline"></ion-icon>
</ion-avatar>
<ion-avatar size="xsmall">
<ion-icon name="person-outline"></ion-icon>
</ion-avatar>
@@ -71,6 +75,9 @@
<h2>Images</h2>
<div class="container">
<ion-avatar size="xxsmall">
<img src="/src/components/avatar/test/avatar.svg" />
</ion-avatar>
<ion-avatar size="xsmall">
<img src="/src/components/avatar/test/avatar.svg" />
</ion-avatar>

View File

@@ -1,4 +1,6 @@
@import "./badge.vars";
@use "../../themes/functions.color" as color;
@import "../../themes/mixins";
@import "./badge.common.vars";
// Badge
// --------------------------------------------------
@@ -13,8 +15,6 @@
* @prop --padding-bottom: Bottom padding of the badge
* @prop --padding-start: Left padding if direction is left-to-right, and right padding if direction is right-to-left of the badge
*/
--background: #{ion-color(primary, base)};
--color: #{ion-color(primary, contrast)};
--padding-top: #{$badge-padding-top};
--padding-end: #{$badge-padding-end};
--padding-bottom: #{$badge-padding-bottom};
@@ -30,7 +30,6 @@
background: var(--background);
color: var(--color);
font-family: $font-family-base;
font-size: $badge-font-size;
font-weight: $badge-font-weight;
@@ -45,8 +44,8 @@
}
:host(.ion-color) {
background: #{current-color(base)};
color: #{current-color(contrast)};
background: #{color.current-color(base)};
color: #{color.current-color(contrast)};
}
:host(:empty) {

View File

@@ -1,4 +1,4 @@
@import "../../themes/native/native.globals";
@import "../../themes/functions.font";
// Badge
// --------------------------------------------------

View File

@@ -1,12 +1,14 @@
@use "../../themes/ionic/ionic.globals.scss" as globals;
@import "./badge";
@use "./badge.common";
// Ionic Badge
// --------------------------------------------------
:host {
--padding-start: #{globals.$ionic-space-100};
--padding-end: #{globals.$ionic-space-100};
--background: #{globals.ion-color(primary, base)};
--color: #{globals.ion-color(primary, contrast)};
--padding-start: #{globals.$ionic-space-200};
--padding-end: #{globals.$ionic-space-200};
--padding-top: #{globals.$ionic-space-0};
--padding-bottom: #{globals.$ionic-space-0};
@@ -23,23 +25,23 @@
/* Soft Badge */
:host(.badge-soft) {
@include border-radius(globals.$ionic-border-radius-200);
@include globals.border-radius(globals.$ionic-border-radius-200);
}
:host(.badge-xxsmall.badge-soft),
:host(.badge-xsmall.badge-soft),
:host(.badge-small.badge-soft) {
@include border-radius(globals.$ionic-border-radius-100);
@include globals.border-radius(globals.$ionic-border-radius-100);
}
/* Round Badge */
:host(.badge-round) {
@include border-radius(globals.$ionic-border-radius-full);
@include globals.border-radius(globals.$ionic-border-radius-full);
}
/* Rectangular Badge */
:host(.badge-rectangular) {
@include border-radius(globals.$ionic-border-radius-0);
@include globals.border-radius(globals.$ionic-border-radius-0);
}
// Badge Sizes
@@ -47,6 +49,9 @@
/* 2-Extra Small Badge */
:host(.badge-xxsmall) {
--padding-start: #{globals.$ionic-space-050};
--padding-end: #{globals.$ionic-space-050};
min-width: globals.$ionic-scale-400;
height: globals.$ionic-scale-400;
@@ -57,6 +62,9 @@
/* Extra Small Badge */
:host(.badge-xsmall) {
--padding-start: #{globals.$ionic-space-100};
--padding-end: #{globals.$ionic-space-100};
min-width: globals.$ionic-scale-600;
height: globals.$ionic-scale-600;
@@ -67,6 +75,9 @@
/* Small Badge */
:host(.badge-small) {
--padding-start: #{globals.$ionic-space-100};
--padding-end: #{globals.$ionic-space-100};
min-width: globals.$ionic-scale-800;
height: globals.$ionic-scale-800;
@@ -87,9 +98,6 @@
/* Large Badge */
:host(.badge-large) {
--padding-start: #{globals.$ionic-space-200};
--padding-end: #{globals.$ionic-space-200};
min-width: globals.$ionic-scale-1200;
height: globals.$ionic-scale-1200;
@@ -100,9 +108,6 @@
/* Extra Large Badge */
:host(.badge-xlarge) {
--padding-start: #{globals.$ionic-space-200};
--padding-end: #{globals.$ionic-space-200};
min-width: globals.$ionic-scale-1400;
height: globals.$ionic-scale-1400;

View File

@@ -1,4 +1,4 @@
@import "./badge";
@import "./badge.native";
@import "./badge.ios.vars";
// iOS Badge

View File

@@ -1,4 +1,4 @@
@import "./badge";
@import "./badge.native";
@import "./badge.md.vars";
// Material Design Badge

View File

@@ -0,0 +1,13 @@
@import "../../themes/native/native.globals.md";
@import "./badge.common";
@import "./badge.common.vars";
// Badge
// --------------------------------------------------
:host {
--background: #{ion-color(primary, base)};
--color: #{ion-color(primary, contrast)};
font-family: $font-family-base;
}

View File

@@ -1,7 +1,7 @@
import { expect } from '@playwright/test';
import { configs, test } from '@utils/test/playwright';
configs().forEach(({ config, screenshot, title }) => {
configs({ modes: ['md', 'ios', 'ionic-md'] }).forEach(({ config, screenshot, title }) => {
test.describe(title('badge: rendering'), () => {
test('should not have visual regressions', async ({ page }) => {
await page.goto('/src/components/badge/test/basic', config);

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 715 B

After

Width:  |  Height:  |  Size: 653 B

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 835 B

After

Width:  |  Height:  |  Size: 790 B

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 701 B

After

Width:  |  Height:  |  Size: 684 B

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 186 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

After

Width:  |  Height:  |  Size: 188 KiB

View File

@@ -51,8 +51,6 @@
color: var(--color);
font-family: $font-family-base;
text-align: center;
text-decoration: none;
@@ -217,18 +215,9 @@
// --------------------------------------------------
::slotted(ion-icon) {
font-size: 1.35em;
pointer-events: none;
}
::slotted(ion-icon[slot="start"]) {
@include margin(0, 0.3em, 0, -0.3em);
}
::slotted(ion-icon[slot="end"]) {
@include margin(0, -0.2em, 0, 0.3em);
}
// Button Ripple effect
// --------------------------------------------------

View File

@@ -1,48 +1,23 @@
@use "../../themes/ionic/ionic.globals.scss" as globals;
@use "./button.common";
// Ionic Button
// -------------------------------------------------------------------------------
:host {
--overflow: hidden;
--border-width: initial;
--border-color: initial;
--border-style: initial;
--color-activated: var(--color);
--color-focused: var(--color);
--color-hover: var(--color);
--box-shadow: none;
--padding-bottom: var(--padding-top);
--padding-end: #{globals.$ionic-space-400};
--padding-end: #{globals.$ionic-space-500};
--padding-start: var(--padding-end);
--padding-top: #{globals.$ionic-space-300};
--padding-top: #{globals.$ionic-space-0};
--focus-ring-color: #{globals.$ionic-state-focus-1};
--focus-ring-width: #{globals.$ionic-border-size-050};
display: inline-block;
position: relative;
width: auto;
min-height: globals.$ionic-scale-1000;
color: var(--color);
font-family: globals.$ionic-font-family;
font-size: globals.$ionic-font-size-350;
text-align: center;
text-decoration: none;
white-space: normal;
user-select: none;
vertical-align: top; // the better option for most scenarios
vertical-align: -webkit-baseline-middle; // the best for those that support it
font-kerning: none;
// Target area
&::after {
@include globals.position(50%, 0, null, 0);
@@ -59,14 +34,60 @@
z-index: 1;
}
}
::slotted(ion-icon[slot="start"]) {
@include globals.margin-horizontal(null, globals.$ionic-space-200);
}
// Button Fills
// -------------------------------------------------------------------------------
::slotted(ion-icon[slot="end"]) {
@include globals.margin-horizontal(globals.$ionic-space-200, null);
}
// Solid Button
// --------------------------------------------------
:host(.button-solid) {
--background-activated: #{globals.ion-color(primary, shade)};
--background-hover: #{globals.ion-color(primary, contrast)};
--background-focused: #{globals.ion-color(primary, contrast)};
--background-focused-opacity: 0.24;
--background-hover-opacity: 0.08;
--ripple-opacity: var(--background-activated-opacity, 1);
--ripple-color: var(--background-activated);
}
// Outline Button
// --------------------------------------------------
:host(.button-outline) {
--border-width: #{globals.$ionic-border-size-025};
--border-style: #{globals.$ionic-border-style-solid};
--background-activated: #{globals.$ionic-color-neutral-200};
--background-focused: transparent;
--background-hover: #{globals.ion-color(primary, base)};
--background-hover-opacity: 0.04;
--ripple-opacity: var(--background-activated-opacity, 1);
--ripple-color: var(--background-activated);
}
// Clear Button
// --------------------------------------------------
:host(.button-clear) {
--background-activated: #{globals.$ionic-color-neutral-200};
--background-focused: transparent;
--background-hover: #{globals.ion-color(primary, base)};
--background-hover-opacity: 0.04;
--ripple-opacity: var(--background-activated-opacity, 1);
--ripple-color: var(--background-activated);
}
// Ripple Effect
// -------------------------------------------------------------------------------
:host(.button-solid.ion-color) ion-ripple-effect {
color: globals.current-color(shade);
}
:host(.button-outline.ion-color) ion-ripple-effect,
:host(.button-clear.ion-color) ion-ripple-effect {
color: globals.$ionic-color-neutral-200;
}
// Button Sizes
@@ -154,6 +175,9 @@
// Button Shapes
// -------------------------------------------------------------------------------
// Soft Button
// --------------------------------------------------
:host(.button-soft) {
--border-radius: #{globals.$ionic-border-radius-200};
}
@@ -163,15 +187,21 @@
--border-radius: #{globals.$ionic-border-radius-100};
}
// Round Button
// --------------------------------------------------
:host(.button-round) {
--border-radius: #{globals.$ionic-border-radius-full};
}
// Rectangular Button
// --------------------------------------------------
:host(.button-rectangular) {
--border-radius: #{globals.$ionic-border-radius-0};
}
// Button Focused
// Button: Focus
// -------------------------------------------------------------------------------
// Only show the focus ring when the button is focused
@@ -180,209 +210,33 @@
outline-offset: globals.$ionic-border-size-050;
}
// Fill Solid Button
// -------------------------------------------------------------------------------
/**
* Only allow overriding of opacity here
* as developers should not be overriding
* colors when using the color prop.
*/
:host(.button-solid) {
--background-activated: #{globals.$ionic-color-primary-base};
:host(.button-solid.ion-color.ion-focused) .button-native::after {
background: globals.current-color(contrast);
}
:host(.button-solid.ion-activated) .button-native::after {
background: #{globals.$ionic-color-primary-900};
}
// Fill Outline Button
// Button: Activated
// --------------------------------------------------
:host(.button-outline) {
--border-width: #{globals.$ionic-border-size-025};
--border-style: #{globals.$ionic-border-style-solid};
--background-activated: #{globals.$ionic-color-neutral-200};
--background-activated-opacity: 1;
--background-focused: transparent;
--background-hover: transparent;
--background-focused-opacity: 0.1;
--color-activated: #{globals.$ionic-color-primary-base};
:host(.button-solid.ion-color.ion-activated) .button-native::after {
background: globals.current-color(shade);
}
:host(.button-outline.ion-focused) {
--border-color: transparent;
}
// Fill Clear Button
// --------------------------------------------------
:host(.button-clear) {
--background-activated: #{globals.$ionic-color-neutral-200};
--background-activated-opacity: 1;
--background-focused: transparent;
--background-hover: transparent;
}
// Button Hover
// --------------------------------------------------
:host(.button-solid) {
--background-hover: #{globals.$ionic-color-primary-800};
}
:host(.button-outline),
:host(.button-clear) {
--background-hover: #{globals.$ionic-color-neutral-100};
:host(.ion-activated) .button-native:has(ion-ripple-effect)::after,
:host(.button-solid.ion-color.ion-activated) .button-native:has(ion-ripple-effect)::after {
background: transparent;
}
// Button: Disabled
// --------------------------------------------------
:host(.button-disabled) {
--background: #{globals.$ionic-state-disabled};
--border-color: var(--color);
cursor: default;
opacity: 0.5;
pointer-events: none;
}
// Solid Button
// --------------------------------------------------
// Default Solid Color
:host(.button-solid) {
--background: #{globals.$ionic-color-primary-base};
--color: #{globals.$ionic-color-base-white};
}
// Outline Button
// --------------------------------------------------
// Default Outline Color
:host(.button-outline) {
--border-color: #{globals.$ionic-color-primary-base};
--background: #{globals.$ionic-color-base-white};
--color: #{globals.$ionic-color-primary-base};
}
// Clear Button
// --------------------------------------------------
// Default Clear Color
:host(.button-clear) {
--border-width: #{globals.$ionic-border-size-0};
--background: transparent;
--color: #{globals.$ionic-color-primary-base};
}
// Block Button
// --------------------------------------------------
:host(.button-block) {
display: block;
}
:host(.button-block) .button-native {
@include globals.margin-horizontal(0);
width: 100%;
clear: both;
contain: content;
}
:host(.button-block) .button-native::after {
clear: both;
}
// Full Button
// --------------------------------------------------
:host(.button-full) {
display: block;
}
:host(.button-full) .button-native {
@include globals.margin-horizontal(0);
width: 100%;
contain: content;
}
:host(.button-full:not(.button-round)) .button-native {
@include globals.border-radius(0);
border-right-width: 0;
border-left-width: 0;
}
.button-native {
@include globals.border-radius(var(--border-radius));
@include globals.font-smoothing();
@include globals.margin(0);
@include globals.padding(var(--padding-top), var(--padding-end), var(--padding-bottom), var(--padding-start));
@include globals.text-inherit();
display: flex;
position: relative;
align-items: center;
width: 100%;
height: 100%;
min-height: inherit;
transition: var(--transition);
border-width: var(--border-width);
border-style: var(--border-style);
border-color: var(--border-color);
outline: none;
background: var(--background);
line-height: 1;
box-shadow: var(--box-shadow);
contain: layout style;
cursor: pointer;
opacity: var(--opacity);
overflow: var(--overflow);
z-index: 0;
box-sizing: border-box;
appearance: none;
}
.button-native::-moz-focus-inner {
border: 0;
}
.button-inner {
display: flex;
position: relative;
flex-flow: row nowrap;
flex-shrink: 0;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
z-index: 1;
}
// Button Slots
// --------------------------------------------------
::slotted([slot="start"]),
::slotted([slot="end"]) {
flex-shrink: 0;
opacity: 0.6;
}
// Button Icons
@@ -390,47 +244,28 @@
::slotted(ion-icon) {
font-size: globals.$ionic-font-size-500;
pointer-events: none;
}
// Button: States
// --------------------------------------------------
.button-native::after {
@include globals.button-state();
:host(.button-small) ::slotted(ion-icon[slot="start"]) {
@include globals.margin-horizontal(null, globals.$ionic-space-200);
}
// Button Focused
:host(.ion-focused) {
color: var(--color-focused);
::slotted(ion-icon[slot="start"]) {
@include globals.margin-horizontal(null, globals.$ionic-space-250);
}
:host(.ion-focused) .button-native::after {
background: var(--background-focused);
opacity: var(--background-focused-opacity);
:host(.button-large) ::slotted(ion-icon[slot="start"]) {
@include globals.margin-horizontal(null, globals.$ionic-space-300);
}
// Button Hover
@media (any-hover: hover) {
:host(:hover) {
color: var(--color-hover);
}
:host(:hover) .button-native::after {
background: var(--background-hover);
opacity: var(--background-hover-opacity);
}
:host(.button-small) ::slotted(ion-icon[slot="end"]) {
@include globals.margin-horizontal(globals.$ionic-space-200, null);
}
// Button Activated
:host(.ion-activated) {
color: var(--color-activated);
::slotted(ion-icon[slot="end"]) {
@include globals.margin-horizontal(globals.$ionic-space-250, null);
}
:host(.ion-activated) .button-native::after {
background: var(--background-activated);
opacity: var(--background-activated-opacity);
:host(.button-large) ::slotted(ion-icon[slot="end"]) {
@include globals.margin-horizontal(globals.$ionic-space-300, null);
}

View File

@@ -1,4 +1,4 @@
@import "./button";
@import "./button.native";
@import "./button.ios.vars";
@import "../toolbar/toolbar.ios.vars";

View File

@@ -1,4 +1,4 @@
@import "./button";
@import "./button.native";
@import "./button.md.vars";
// Material Design Button

View File

@@ -0,0 +1,24 @@
@use "../../themes/native/native.globals.md" as globals;
@use "./button.common";
// Button - iOS and Material Design
// --------------------------------------------------
:host {
font-family: globals.$font-family-base;
}
// Button Icons
// --------------------------------------------------
::slotted(ion-icon) {
font-size: 1.35em;
}
::slotted(ion-icon[slot="start"]) {
@include globals.margin(0, 0.3em, 0, -0.3em);
}
::slotted(ion-icon[slot="end"]) {
@include globals.margin(0, -0.2em, 0, 0.3em);
}

View File

@@ -6,7 +6,7 @@ import { inheritAriaAttributes, hasShadowDom } from '@utils/helpers';
import { printIonWarning } from '@utils/logging';
import { createColorClasses, hostContext, openURL } from '@utils/theme';
import { getIonTheme } from '../../global/ionic-global';
import { getIonTheme, getIonMode } from '../../global/ionic-global';
import type { AnimationBuilder, Color } from '../../interface';
import type { RouterDirection } from '../router/utils/interface';
@@ -353,6 +353,7 @@ export class Button implements ComponentInterface, AnchorInterface, ButtonInterf
this;
const theme = getIonTheme(this);
const mode = getIonMode(this);
const size = this.getSize();
const shape = this.getShape();
const TagType = href === undefined ? 'button' : ('a' as any);
@@ -421,7 +422,7 @@ export class Button implements ComponentInterface, AnchorInterface, ButtonInterf
<slot></slot>
<slot name="end"></slot>
</span>
{theme === 'md' && <ion-ripple-effect type={this.rippleType}></ion-ripple-effect>}
{mode === 'md' && <ion-ripple-effect type={this.rippleType}></ion-ripple-effect>}
</TagType>
</Host>
);

View File

@@ -1,7 +1,7 @@
import { expect } from '@playwright/test';
import { configs, test } from '@utils/test/playwright';
configs().forEach(({ config, screenshot, title }) => {
configs({ modes: ['ios', 'md', 'ionic-md', 'ionic-ios'] }).forEach(({ config, screenshot, title }) => {
test.describe(title('button: basic'), () => {
test('should not have visual regressions', async ({ page }) => {
await page.goto(`/src/components/button/test/basic`, config);
@@ -39,9 +39,9 @@ configs({ directions: ['ltr'], modes: ['md'] }).forEach(({ config, title }) => {
});
/**
* Ripple effect is only available in MD mode.
* Ripple effect is only available in MD and Ionic mode.
*/
configs({ modes: ['md'] }).forEach(({ config, screenshot, title }) => {
configs({ modes: ['md', 'ionic-md'] }).forEach(({ config, screenshot, title }) => {
test.describe(title('button: ripple effect'), () => {
test('should not have visual regressions', async ({ page }) => {
await page.goto(`/src/components/button/test/basic?ionic:_testing=false`, config);

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

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