Compare commits

...

43 Commits

Author SHA1 Message Date
Marta Carlos
7cad51a03c feat(radio): make radio buttons full width for ionic theme 2025-05-06 11:08:16 +01:00
Shane
3b643a75d1 refactor(toolbar): improve slot layout and visibility handling (#30371)
Co-authored-by: ionitron <hi@ionicframework.com>
Co-authored-by: Brandy Smith <brandyscarney@users.noreply.github.com>
2025-04-30 16:32:41 -07:00
Bernardo Cardoso
b2f6b8c67e fix(link): improve ionic theme links styles and dev experience (#30375)
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. -->

- Adjust link styles to match latest Figma UI and tokens.
- For default link, make it work without the need of adding a class.
- Change `ionic` to `ion` on the class names.
- Adjusted tests to reflect the changes.

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

- [Ionic
Link](https://ionic-framework-git-rou-11850-ionic1.vercel.app/src/css/test/link/basic?ionic:theme=ionic)

---------

Co-authored-by: ionitron <hi@ionicframework.com>
2025-04-30 16:22:59 +01:00
Bernardo Cardoso
d3165fc229 fix(modal): fix color tokens on ionic theme (#30379)
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. -->

- Fixed the tokens used on background and text.

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

- [Ionic Custom
Dialog](https://ionic-framework-git-rou-11900-ionic1.vercel.app/src/components/modal/test/custom-dialog?ionic:theme=ionic)
2025-04-30 14:38:11 +01:00
Bernardo Cardoso
02c138802a fix(tokens): fix usage on components and review scss architecture (#30368)
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. -->

Added improvements on scss architecture, as identified on past
assessment, on multiple components.

Some of these changes resulted in snapshots differences, all reviewed
and expected:

- Button spinner - pics with no visual differences/false-positive.
- Item slider -  difference due to updated typography token.
- Item - difference as is now using correct disabled styles tokens.
- searchbar: 1px difference on horizontal margin - expected - to start
using a more rounded value from a token.
- Tab/tab-button - difference as is now using correct typography token.
- Spinner/loading - this looks like a false positive, saw no visible
differences.
- Textarea - this looks like a false positive, saw no visible
differences.
- Typography - this looks like a false positive, saw no visible
differences.

## Does this introduce a breaking change?

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

---------

Co-authored-by: ionitron <hi@ionicframework.com>
2025-04-23 18:41:19 +01:00
Bernardo Cardoso
1e7a84f9bd fix(css): improve tokens support on global css ionic files (#30364)
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. -->

- Add tokens usage on global css files for Ionic theme.
- Removed global background an text variables and fixed variables names
used on `body`. This resulted in some changes on test pages colors,
hence the snapshots differences.

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

---------

Co-authored-by: ionitron <hi@ionicframework.com>
2025-04-16 17:29:58 +01:00
Bernardo Cardoso
7d98a87302 chore(tokens): update design-tokens dependency to 1.2.6 (#30363)
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. -->

Update tokens dependency to 1.2.6.
This version fixes values of transition tokens.

## 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. -->
2025-04-16 12:35:14 +01:00
Bernardo Cardoso
33de8255f4 chore(tokens): update design-tokens dependency to 1.2.5 (#30353)
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. -->

- Update tokens dependency to 1.2.5.
- This version fixes values of some colors, to improve a11y compliance.
- Added new extended colors.

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

---------

Co-authored-by: Brandy Smith <brandyscarney@users.noreply.github.com>
Co-authored-by: ionitron <hi@ionicframework.com>
2025-04-14 16:50:39 +01:00
Brandy Smith
07ac3db1ff merge main (#30354) 2025-04-11 16:04:38 -04:00
Brandy Smith
b3917600cc refactor(checkbox): remove unused style 2025-04-11 15:39:40 -04:00
Brandy Smith
56be987881 Merge branch 'main' into merge-main-into-next 2025-04-11 15:33:29 -04:00
Brandy Smith
5da939d330 fix(button): use proper colors for the button states in the ionic theme (#30339)
Issue number: internal

---------

## What is the current behavior?
The focused and hover states are appearing as an overlay of the contrast
color on the buttons.

## What is the new behavior?
- Updates hover and focus states to match Figma designs
- Focus background should not change from the default
- Hover background should be the shade for solid buttons, and use
neutral subtlest for clear and outline buttons
- Updates the clear button to use the new `foreground` variant

## Does this introduce a breaking change?

- [ ] Yes
- [x] No
2025-04-11 14:15:14 -04:00
Brandy Smith
2a1addc190 feat(toast): add hue property for the ionic theme (#30333)
Issue number: internal

---------

## What is the current behavior?
The toast component does not support the `hue` property.

## What is the new behavior?
Adds support for the `subtle` hue for the toast. Defaults to `subtle`.

## Does this introduce a breaking change?
- [ ] Yes
- [x] No
2025-04-11 13:52:38 -04:00
Brandy Smith
52fba11db5 feat(item-option): add hue property for the ionic theme (#30332)
Issue number: internal

---------

## What is the current behavior?
The item option component does not support the `hue` property.

## What is the new behavior?
Adds support for the `subtle` hue for the item option. Defaults to
`subtle`.

## Does this introduce a breaking change?
- [ ] Yes
- [x] No
2025-04-11 13:39:14 -04:00
Brandy Smith
b31e0efcbf feat(chip): add hue property for the ionic theme (#30308)
Issue number: internal

---------

## What is the current behavior?
The chip component does not support the `hue` property.

## What is the new behavior?
Adds support for the `bold` and `subtle` hue for the chip. Defaults to
`subtle`.

## Does this introduce a breaking change?
- [ ] Yes
- [x] No
2025-04-11 13:19:32 -04:00
Shane
b1bc58f1c8 fix(toggle): ensure proper visual selection when navigating via VoiceOver in Safari (#30349)
Issue number: resolves 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. -->
Currently, MacOS voice over on Safari does not recognize ion-toggle
correctly and fails to highlight the element properly

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

By adding the role property to the host element, we're correctly
identifying the toggle so Safari knows how to handle it.

## 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. -->
2025-04-11 17:18:35 +00:00
Brandy Smith
a9aa59bc36 feat(badge): add hue property for the ionic theme (#30307)
Issue number: internal

---------

## What is the current behavior?
The badge component does not support the `hue` property.

## What is the new behavior?
Adds support for the `subtle` hue for the badge. Defaults to `subtle`
when the badge contains icon or text. Defaults to `bold` when the badge
is empty or when it is inside of a button or tab button.

## Does this introduce a breaking change?
- [ ] Yes
- [x] No
2025-04-11 13:07:01 -04:00
Brandy Smith
207d4858a6 feat(css): add support for the subtle color map (#30306)
Issue number: internal

---------

## What is the current behavior?
The colors are only available in bold colors.

## What is the new behavior?
Adds support for a `subtle` hue to the colors map, generating all of the
same variants but in more subtle colors. This only applies for the
`ionic` theme. Adds an additional variant, `foreground` to be used by
components when the color is being used for text.

The `ios` and `md` themes do not add the `foreground` variant because
this would be a breaking change, requiring all color overrides,
palettes, and new colors to include this variant. I have added tests to
make sure they still work without it.

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

No changes are made to the existing colors.
2025-04-11 12:32:38 -04:00
Brandy Smith
1bc4f59f61 merge release-8.5.4 (#30347)
v8.5.4
2025-04-09 13:47:15 -04:00
Brandy Smith
51de007854 chore(): update package lock files 2025-04-09 13:28:43 -04:00
ionitron
fd4ffdd9d1 chore(): update package lock files 2025-04-09 17:23:20 +00:00
ionitron
d1974894a9 v8.5.4 2025-04-09 17:22:30 +00:00
Marta Carlos
97f96b4528 fix(input): apply position to .cloned-input only for native themes (#30337)
Issue number: resolves internal

---------

## What is the current behavior?
Using the ionic theme, `ion-input` inside an `ion-accordion` , that
require a scroll to focus, when clicked , it's text would shift

![Screenshot 2025-04-04 at 12 32
22](https://github.com/user-attachments/assets/94152b22-4dcf-47bc-a911-03b4270e6f9f)

After some troubleshooting, we identified this visual bug came from
logic of `addClone`, which creates a clone of the input , in order for
it to be focusable and working on iOS/Android (code
[here](4317da080c/core/src/utils/input-shims/hacks/common.ts (L34))
)

The cloned input has an additional class, `cloned-input` and, for the
ionic theme, the `@position` mixin was causing the cloned input
`inset-inline-start` to be 0, which meant it was not being placed
_exactly_ on top of the "OG" input
 
## What is the new behavior?
There's no longer a visual bug on inputs inside accordions, when using
the ionic theme

To fix it, we split the `cloned-input` class between the `input.native`
and `input.common` scss files, where the `@position` mixin is only used
in `input.native`

## 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

- Bug reproduction
[here](https://github.com/OutSystems/ui-comp-ionic-sandboxes/tree/ROU-11748-bug)
- With this fix
[here](https://github.com/OutSystems/ui-comp-ionic-sandboxes/tree/ROU-11748)
2025-04-07 15:37:41 +01:00
Brandy Smith
835ad52c29 fix(config): properly export LogLevel (#30335)
Issue number: resolves #30255

---------

## What is the current behavior?
`LogLevel` is not properly exported

## What is the new behavior?
Exports `LogLevel` in core

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

## Other information

Dev build: `8.5.4-dev.11743715474.1eadbd25`

Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
2025-04-04 18:45:53 +00:00
Bernardo Cardoso
9016cc6f06 chore(tokens): update design-tokens dependency to 1.2.4 (#30338)
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. -->

- Update tokens dependency to 1.2.4.
- This version fixes the semantic warning tokens values.

## 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. -->
2025-04-04 16:32:11 +01:00
Brandy Smith
4317da080c merge release-8.5.3 (#30330)
v8.5.3
2025-04-02 12:09:34 -04:00
Brandy Smith
37fb269246 chore(): update package lock files 2025-04-02 11:57:25 -04:00
ionitron
3213bf40c7 chore(): update package lock files 2025-04-02 15:51:12 +00:00
ionitron
28e29c38b4 v8.5.3 2025-04-02 15:50:34 +00:00
Maria Hutt
105796f6bc fix(segment-view): prevent vertical scroll while scrolling horizontally (#30276)
Issue number: resolves #30001 

---------

<!-- 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 segment view has content that is long enough to render outside of
the viewport, then a user can scroll vertically and horizontally when
the user scrolled down to see the content at the bottom. This causes
disorientation as scrolling should only be in one direction.

This only happens on a mobile device, specifically Android. It can be
reproduce with a browser simulator.

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

- Updated styling to take into account that content might be outside of
the viewport.

## 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.5.2-dev.11743531350.19e040aa`
2025-04-02 15:08:11 +00:00
Bernardo Cardoso
54597a312c chore(tokens): update design-tokens dependency to 1.2.3 (#30327)
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. -->

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

- Update tokens dependency to 1.2.3.
- This version fixes the generation of the z-index tokens.

## 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. -->
2025-04-02 09:59:01 +01:00
Tobi
7f9df7a894 fix(overlays): exclude backdrop-no-scroll class when toast is presented (#30123)
Issue number: resolves #30112 

---------

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

When toast is presented, the `backdrop-no-scroll` class is added to the
body when using Frameworks like Angular. It should not add this class as
toast does not be setting focus trap as mentioned in the
[comments](1cfa915e8f/core/src/utils/overlays.ts (L514-L520)).

## What is the new behavior?

- Class is only added when the overlay that is presented is not a toast
component.
- Test was added.

## 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

---------

Co-authored-by: Maria Hutt <thetaPC@users.noreply.github.com>
2025-04-01 23:05:12 +00:00
Shane
bb40a1efe7 fix(checkbox): ensure proper visual selection when navigating via VoiceOver in Safari (#30300)
Issue number: resolves 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. -->
Currently, MacOS voice over on Safari does not recognize ion-checkbox
correctly and fails to highlight the element properly


## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->
By adding the role property to the host element, we're correctly
identifying ion-checkbox as a checkbox so Safari knows how to handle it.

## 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: Brandy Smith <brandyscarney@users.noreply.github.com>
Co-authored-by: Maria Hutt <thetaPC@users.noreply.github.com>
2025-03-28 16:15:03 +00:00
Brandy Smith
23b7a29b27 merge release-8.5.2 (#30314)
v8.5.2
2025-03-26 17:52:53 -04:00
Brandy Smith
27816d17d8 chore(): update package lock files 2025-03-26 17:42:45 -04:00
ionitron
ca51d64557 chore(): update package lock files 2025-03-26 21:34:31 +00:00
ionitron
4fb15feb0c v8.5.2 2025-03-26 21:33:58 +00:00
Brandy Smith
0893703769 test(angular): add a landing page to go between lazy and standalone apps (#30286)
## What is the new behavior?
Adds a landing page to the Angular test app to make it easier to get to
and debug standalone.

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

Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
2025-03-26 20:55:04 +00:00
Victoria Unizhona
ac6e6a0317 fix(datetime): support typing time values in a 24-hour format (#30147)
- Adjusted the `selectMultiColumn` logic to handle keyboard values like
20 and 22 dynamically.
- Introduced checks for the maximum column value to enable flexible
input behavior.
- Added e2e tests to verify correct value selection for both 12-hour and
24-hour formats.

Issue number: resolves #28877

---------

## What is the current behavior?

In the ion-datetime component, when typing 2000 in the keyboard the
resulted time value is 02:00 (in 24-hour format)

Examples:
https://forum.ionicframework.com/t/ion-datetime-disable-opening-keyboard/224558/6?u=dennisskylegs

## What is the new behavior?
In the ion-datetime component, when typing 2000 in the keyboard the
resulted time value is 20:00 (in 24-hour format)

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

---------

Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
Co-authored-by: ShaneK <shane@shanessite.net>
2025-03-26 19:06:04 +00:00
Maria Hutt
1cfa915e8f fix(segment-button): ensure consistent disabled state for segment-content error handling (#30288)
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. -->

Segment buttons do not consistently set themselves to a disabled state.
When disabling them and rapidly refreshing the page, their state may
vary—sometimes they appear disabled, and other times they do not.

This was due to this
[PR](https://github.com/ionic-team/ionic-framework/pull/30138). The
reason that this PR was created was due to the console errors being
shown too early when segment buttons and contents were dynamically
rendered.

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

- I reverted the changes added through the other PR since the
`setTimeout` was causing the inconsistency.
- By moving the console errors to `componentWillLoad`, it provides
`ion-segment-content` time to render before the console errors are
thrown.

## 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.5.2-dev.11742514102.1b51674d`

How to test:
1. Run the server locally
2. Navigate to the [segment view
disabled](http://localhost:3333/src/components/segment-view/test/disabled)
page
3. Verify that the "Paid", "Free", and "Top" buttons disabled
4. Rapid fire some hard refreshes
5.  Verify that the "Paid", "Free", and "Top" buttons disabled
6. Navigate to this StackBlitz
[repro](https://stackblitz.com/edit/yhktpj19-wxmxpmw7?file=src%2Fmain.tsx)
7. Install the dev build: `npm i
@ionic/react@8.5.2-dev.11742514102.1b51674d
@ionic/react-router@8.5.2-dev.11742514102.1b51674d`
8. Open the console log
9. Click on the "Add last child" button
10. Verify that there are no console errors like `Segment Button: Unable
to find Segment Content with id="content3".`
2025-03-25 18:21:31 +00:00
Maria Hutt
7789bb59ee fix(range): emit ionInput when value changes (#30293)
Issue number: resolves #29619 

---------

<!-- 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 `ionInput` emits for range even when the value hasn't changed. This
does not match our documentation. It should only emit when the value
changes (and continuously while the user is dragging the knob).

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

- Moved the emitter to the value watch function, to determine if the
value has changed.
- Added a test
-

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

How to test:
1. Navigate to the [range basic HTML
file](8ed08fcba5/core/src/components/range/test/basic/index.html (L77))
2. Add the following script
```
const ionicRanges = document.querySelectorAll('ion-range');

ionicRanges.forEach(range => {  
  range.addEventListener('ionInput', function(ev) {
    console.log('ionInput', ev.currentTarget.value);
  });
});
```
3. Navigate to the [range test
page](http://localhost:3333/src/components/range/test/basic)
4. Open the console
5. Move the single knob range (let go when you're done)
6. Verify that the value is shown in the console
7. Tap as close to the middle of the knob. The goal is to tap it without
the value moving.
8. Verify that the value does not show in the console

---------

Co-authored-by: Brandy Smith <brandyscarney@users.noreply.github.com>
2025-03-24 21:06:08 +00:00
renovate[bot]
0f23526224 chore(deps): update dependency @playwright/test to ^1.51.1 (#30289)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@playwright/test](https://playwright.dev)
([source](https://redirect.github.com/microsoft/playwright)) |
[`^1.51.0` ->
`^1.51.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.51.0/1.51.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.51.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.51.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.51.0/1.51.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.51.0/1.51.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

###
[`v1.51.1`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.51.1)

[Compare
Source](https://redirect.github.com/microsoft/playwright/compare/v1.51.0...v1.51.1)

##### Highlights


[https://github.com/microsoft/playwright/issues/35093](https://redirect.github.com/microsoft/playwright/issues/35093)
- \[Regression]: TimeoutOverflowWarning:
[`2149630`](https://redirect.github.com/microsoft/playwright/commit/2149630296).634
does not fit into a 32-bit signed integer

[https://github.com/microsoft/playwright/issues/35138](https://redirect.github.com/microsoft/playwright/issues/35138)
- \[Regression]: TypeError: Cannot read properties of undefined (reading
'expectInfo')

#### Browser Versions

-   Chromium 134.0.6998.35
-   Mozilla Firefox 135.0
-   WebKit 18.4

This version was also tested against the following stable channels:

-   Google Chrome 133
-   Microsoft Edge 133

</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://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/ionic-team/ionic-framework).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-24 18:53:18 +00:00
Shane
9e11fcb2bb test(angular): fixing over-import of RouterModule in the standalone router-link test (#30285)
Issue number: resolves 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. -->
Currently the standalone test app for router-link in Angular imports all
of `RouterModule` when it only needs to import `RouterLink` from
`@angular/router`

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

Now, the Angular test app will import only what it needs from router
instead of over-importing.

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

This PR helps align our Angular test apps with a more real-world
implementation expectation
2025-03-20 20:17:25 +00:00
1088 changed files with 5308 additions and 1748 deletions

View File

@@ -3,6 +3,43 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [8.5.4](https://github.com/ionic-team/ionic-framework/compare/v8.5.3...v8.5.4) (2025-04-09)
### Bug Fixes
* **config:** properly export LogLevel ([#30335](https://github.com/ionic-team/ionic-framework/issues/30335)) ([835ad52](https://github.com/ionic-team/ionic-framework/commit/835ad52c290a3687dc9e9c6bf4326948a9c3fe0d)), closes [#30255](https://github.com/ionic-team/ionic-framework/issues/30255)
## [8.5.3](https://github.com/ionic-team/ionic-framework/compare/v8.5.2...v8.5.3) (2025-04-02)
### Bug Fixes
* **checkbox:** ensure proper visual selection when navigating via VoiceOver in Safari ([#30300](https://github.com/ionic-team/ionic-framework/issues/30300)) ([bb40a1e](https://github.com/ionic-team/ionic-framework/commit/bb40a1efe71237075db2f3a536eddeb1d7c400fc))
* **overlays:** exclude backdrop-no-scroll class when toast is presented ([#30123](https://github.com/ionic-team/ionic-framework/issues/30123)) ([7f9df7a](https://github.com/ionic-team/ionic-framework/commit/7f9df7a89447e51eec0b1516069a1e0c9c9722e5)), closes [#30112](https://github.com/ionic-team/ionic-framework/issues/30112)
* **segment-view:** prevent vertical scroll while scrolling horizontally ([#30276](https://github.com/ionic-team/ionic-framework/issues/30276)) ([105796f](https://github.com/ionic-team/ionic-framework/commit/105796f6bc8f961f58ecbb101285097cc86891c0)), closes [#30001](https://github.com/ionic-team/ionic-framework/issues/30001)
## [8.5.2](https://github.com/ionic-team/ionic-framework/compare/v8.5.1...v8.5.2) (2025-03-26)
### Bug Fixes
* **datetime:** support typing time values in a 24-hour format ([#30147](https://github.com/ionic-team/ionic-framework/issues/30147)) ([ac6e6a0](https://github.com/ionic-team/ionic-framework/commit/ac6e6a03174263d09ec55c9742a026862a3df444)), closes [#28877](https://github.com/ionic-team/ionic-framework/issues/28877)
* **range:** emit ionInput when value changes ([#30293](https://github.com/ionic-team/ionic-framework/issues/30293)) ([7789bb5](https://github.com/ionic-team/ionic-framework/commit/7789bb59ee5c76074ff4872dc6a50ae2d83df8f5)), closes [#29619](https://github.com/ionic-team/ionic-framework/issues/29619)
* **segment-button:** ensure consistent disabled state for segment-content error handling ([#30288](https://github.com/ionic-team/ionic-framework/issues/30288)) ([1cfa915](https://github.com/ionic-team/ionic-framework/commit/1cfa915e8fe362951c521bce970a9f5f10918ab2))
## [8.5.1](https://github.com/ionic-team/ionic-framework/compare/v8.5.0...v8.5.1) (2025-03-19)

View File

@@ -3,6 +3,43 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [8.5.4](https://github.com/ionic-team/ionic-framework/compare/v8.5.3...v8.5.4) (2025-04-09)
### Bug Fixes
* **config:** properly export LogLevel ([#30335](https://github.com/ionic-team/ionic-framework/issues/30335)) ([835ad52](https://github.com/ionic-team/ionic-framework/commit/835ad52c290a3687dc9e9c6bf4326948a9c3fe0d)), closes [#30255](https://github.com/ionic-team/ionic-framework/issues/30255)
## [8.5.3](https://github.com/ionic-team/ionic-framework/compare/v8.5.2...v8.5.3) (2025-04-02)
### Bug Fixes
* **checkbox:** ensure proper visual selection when navigating via VoiceOver in Safari ([#30300](https://github.com/ionic-team/ionic-framework/issues/30300)) ([bb40a1e](https://github.com/ionic-team/ionic-framework/commit/bb40a1efe71237075db2f3a536eddeb1d7c400fc))
* **overlays:** exclude backdrop-no-scroll class when toast is presented ([#30123](https://github.com/ionic-team/ionic-framework/issues/30123)) ([7f9df7a](https://github.com/ionic-team/ionic-framework/commit/7f9df7a89447e51eec0b1516069a1e0c9c9722e5)), closes [#30112](https://github.com/ionic-team/ionic-framework/issues/30112)
* **segment-view:** prevent vertical scroll while scrolling horizontally ([#30276](https://github.com/ionic-team/ionic-framework/issues/30276)) ([105796f](https://github.com/ionic-team/ionic-framework/commit/105796f6bc8f961f58ecbb101285097cc86891c0)), closes [#30001](https://github.com/ionic-team/ionic-framework/issues/30001)
## [8.5.2](https://github.com/ionic-team/ionic-framework/compare/v8.5.1...v8.5.2) (2025-03-26)
### Bug Fixes
* **datetime:** support typing time values in a 24-hour format ([#30147](https://github.com/ionic-team/ionic-framework/issues/30147)) ([ac6e6a0](https://github.com/ionic-team/ionic-framework/commit/ac6e6a03174263d09ec55c9742a026862a3df444)), closes [#28877](https://github.com/ionic-team/ionic-framework/issues/28877)
* **range:** emit ionInput when value changes ([#30293](https://github.com/ionic-team/ionic-framework/issues/30293)) ([7789bb5](https://github.com/ionic-team/ionic-framework/commit/7789bb59ee5c76074ff4872dc6a50ae2d83df8f5)), closes [#29619](https://github.com/ionic-team/ionic-framework/issues/29619)
* **segment-button:** ensure consistent disabled state for segment-content error handling ([#30288](https://github.com/ionic-team/ionic-framework/issues/30288)) ([1cfa915](https://github.com/ionic-team/ionic-framework/commit/1cfa915e8fe362951c521bce970a9f5f10918ab2))
## [8.5.1](https://github.com/ionic-team/ionic-framework/compare/v8.5.0...v8.5.1) (2025-03-19)

View File

@@ -314,6 +314,7 @@ ion-backdrop,event,ionBackdropTap,void,true
ion-badge,shadow
ion-badge,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record<never, never> | undefined,undefined,false,true
ion-badge,prop,hue,"bold" | "subtle" | undefined,undefined,false,false
ion-badge,prop,mode,"ios" | "md",undefined,false,false
ion-badge,prop,shape,"round | rectangular" | "soft" | undefined,undefined,false,false
ion-badge,prop,size,"large" | "medium" | "small" | "xlarge" | "xsmall" | "xxsmall" | undefined,undefined,false,false
@@ -595,17 +596,23 @@ ion-checkbox,part,supporting-text
ion-chip,shadow
ion-chip,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record<never, never> | undefined,undefined,false,true
ion-chip,prop,disabled,boolean,false,false,false
ion-chip,prop,hue,"bold" | "subtle" | undefined,'subtle',false,false
ion-chip,prop,mode,"ios" | "md",undefined,false,false
ion-chip,prop,outline,boolean,false,false,false
ion-chip,prop,shape,"rectangular" | "round" | "soft" | undefined,undefined,false,false
ion-chip,prop,size,"large" | "small" | undefined,undefined,false,false
ion-chip,prop,theme,"ios" | "md" | "ionic",undefined,false,false
ion-chip,css-prop,--background,ionic
ion-chip,css-prop,--background,ios
ion-chip,css-prop,--background,md
ion-chip,css-prop,--border-radius,ionic
ion-chip,css-prop,--border-radius,ios
ion-chip,css-prop,--border-radius,md
ion-chip,css-prop,--color,ionic
ion-chip,css-prop,--color,ios
ion-chip,css-prop,--color,md
ion-chip,css-prop,--focus-ring-color,ionic
ion-chip,css-prop,--focus-ring-width,ionic
ion-col,shadow
ion-col,prop,mode,"ios" | "md",undefined,false,false
@@ -1183,6 +1190,7 @@ ion-item-option,prop,disabled,boolean,false,false,false
ion-item-option,prop,download,string | undefined,undefined,false,false
ion-item-option,prop,expandable,boolean,false,false,false
ion-item-option,prop,href,string | undefined,undefined,false,false
ion-item-option,prop,hue,"bold" | "subtle" | undefined,'subtle',false,false
ion-item-option,prop,mode,"ios" | "md",undefined,false,false
ion-item-option,prop,rel,string | undefined,undefined,false,false
ion-item-option,prop,shape,"rectangular" | "round" | "soft" | undefined,undefined,false,false
@@ -1699,10 +1707,8 @@ ion-progress-bar,prop,shape,"rectangular" | "round" | undefined,undefined,false,
ion-progress-bar,prop,theme,"ios" | "md" | "ionic",undefined,false,false
ion-progress-bar,prop,type,"determinate" | "indeterminate",'determinate',false,false
ion-progress-bar,prop,value,number,0,false,false
ion-progress-bar,css-prop,--background,ionic
ion-progress-bar,css-prop,--background,ios
ion-progress-bar,css-prop,--background,md
ion-progress-bar,css-prop,--progress-background,ionic
ion-progress-bar,css-prop,--progress-background,ios
ion-progress-bar,css-prop,--progress-background,md
ion-progress-bar,part,progress
@@ -2428,6 +2434,7 @@ ion-toast,prop,duration,number,config.getNumber('toastDuration', 0),false,false
ion-toast,prop,enterAnimation,((baseEl: any, opts?: any) => Animation) | undefined,undefined,false,false
ion-toast,prop,header,string | undefined,undefined,false,false
ion-toast,prop,htmlAttributes,undefined | { [key: string]: any; },undefined,false,false
ion-toast,prop,hue,"bold" | "subtle" | undefined,'subtle',false,false
ion-toast,prop,icon,string | undefined,undefined,false,false
ion-toast,prop,isOpen,boolean,false,false,false
ion-toast,prop,keyboardClose,boolean,false,false,false

42
core/package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "@ionic/core",
"version": "8.5.1",
"version": "8.5.4",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@ionic/core",
"version": "8.5.1",
"version": "8.5.4",
"license": "MIT",
"dependencies": {
"@phosphor-icons/core": "^2.1.1",
@@ -23,7 +23,7 @@
"@clack/prompts": "^0.10.0",
"@ionic/eslint-config": "^0.3.0",
"@ionic/prettier-config": "^2.0.0",
"@playwright/test": "^1.51.0",
"@playwright/test": "^1.51.1",
"@rollup/plugin-node-resolve": "^8.4.0",
"@rollup/plugin-virtual": "^2.0.3",
"@stencil/angular-output-target": "^0.10.0",
@@ -44,7 +44,7 @@
"fs-extra": "^9.0.1",
"jest": "^29.7.0",
"jest-cli": "^29.7.0",
"outsystems-design-tokens": "^1.2.2",
"outsystems-design-tokens": "^1.2.6",
"prettier": "^2.8.8",
"rollup": "^2.26.4",
"sass": "^1.33.0",
@@ -1952,12 +1952,12 @@
}
},
"node_modules/@playwright/test": {
"version": "1.51.0",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.51.0.tgz",
"integrity": "sha512-dJ0dMbZeHhI+wb77+ljx/FeC8VBP6j/rj9OAojO08JI80wTZy6vRk9KvHKiDCUh4iMpEiseMgqRBIeW+eKX6RA==",
"version": "1.51.1",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.51.1.tgz",
"integrity": "sha512-nM+kEaTSAoVlXmMPH10017vn3FSiFqr/bh4fKg9vmAdMfd9SDqRZNvPSiAHADc/itWak+qPvMPZQOPwCBW7k7Q==",
"dev": true,
"dependencies": {
"playwright": "1.51.0"
"playwright": "1.51.1"
},
"bin": {
"playwright": "cli.js"
@@ -9181,9 +9181,9 @@
}
},
"node_modules/outsystems-design-tokens": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/outsystems-design-tokens/-/outsystems-design-tokens-1.2.2.tgz",
"integrity": "sha512-QDarAeJQl1C3uCvRvutpK6Vj8J75bFh8fA3UApZxkvtOTKYc5wzhbrz2w0bGm9CV8VVojftl/+2yuwe5I4APZA==",
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/outsystems-design-tokens/-/outsystems-design-tokens-1.2.6.tgz",
"integrity": "sha512-Wqv7vR1nB6G8WfwKVMqpifhugT+iz5dh25QMWW/XFkblIm2e+mQcUqQw0W9lPSihWKH8wgJfe7zY0mT5G5h3VA==",
"dev": true,
"dependencies": {
"glob": "^11.0.0",
@@ -9665,12 +9665,12 @@
}
},
"node_modules/playwright": {
"version": "1.51.0",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.51.0.tgz",
"integrity": "sha512-442pTfGM0xxfCYxuBa/Pu6B2OqxqqaYq39JS8QDMGThUvIOCd6s0ANDog3uwA0cHavVlnTQzGCN7Id2YekDSXA==",
"version": "1.51.1",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.51.1.tgz",
"integrity": "sha512-kkx+MB2KQRkyxjYPc3a0wLZZoDczmppyGJIvQ43l+aZihkaVvmu/21kiyaHeHjiFxjxNNFnUncKmcGIyOojsaw==",
"dev": true,
"dependencies": {
"playwright-core": "1.51.0"
"playwright-core": "1.51.1"
},
"bin": {
"playwright": "cli.js"
@@ -9683,9 +9683,9 @@
}
},
"node_modules/playwright-core": {
"version": "1.51.0",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.51.0.tgz",
"integrity": "sha512-x47yPE3Zwhlil7wlNU/iktF7t2r/URR3VLbH6EknJd/04Qc/PSJ0EY3CMXipmglLG+zyRxW6HNo2EGbKLHPWMg==",
"version": "1.51.1",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.51.1.tgz",
"integrity": "sha512-/crRMj8+j/Nq5s8QcvegseuyeZPxpQCZb6HNk3Sos3BlZyAknRjoyJPFWkpNn8v0+P3WiwqFF8P+zQo4eqiNuw==",
"dev": true,
"bin": {
"playwright-core": "cli.js"
@@ -11517,9 +11517,9 @@
}
},
"node_modules/typescript": {
"version": "5.8.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
"integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
"version": "5.8.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"dev": true,
"license": "Apache-2.0",
"peer": true,

View File

@@ -1,6 +1,6 @@
{
"name": "@ionic/core",
"version": "8.5.1",
"version": "8.5.4",
"description": "Base components for Ionic",
"keywords": [
"ionic",
@@ -45,7 +45,7 @@
"@clack/prompts": "^0.10.0",
"@ionic/eslint-config": "^0.3.0",
"@ionic/prettier-config": "^2.0.0",
"@playwright/test": "^1.51.0",
"@playwright/test": "^1.51.1",
"@rollup/plugin-node-resolve": "^8.4.0",
"@rollup/plugin-virtual": "^2.0.3",
"@stencil/angular-output-target": "^0.10.0",
@@ -66,7 +66,7 @@
"fs-extra": "^9.0.1",
"jest": "^29.7.0",
"jest-cli": "^29.7.0",
"outsystems-design-tokens": "^1.2.2",
"outsystems-design-tokens": "^1.2.6",
"prettier": "^2.8.8",
"rollup": "^2.26.4",
"sass": "^1.33.0",

View File

@@ -56,7 +56,7 @@ html.ios.ios {
html.ionic,
html.ionic.ios,
html.ionic.md {
--ionic-global-background-color: var(--background);
--ion-background-color: var(--background);
--ion-font-family: initial;
}

View File

@@ -429,6 +429,10 @@ export namespace Components {
* The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics).
*/
"color"?: Color;
/**
* Set to `"bold"` for a badge with vibrant, bold colors or to `"subtle"` for a badge with muted, subtle colors. Only applies to the `ionic` theme.
*/
"hue"?: 'bold' | 'subtle';
/**
* The mode determines the platform behaviors of the component.
*/
@@ -803,6 +807,10 @@ export namespace Components {
* If `true`, the user cannot interact with the chip.
*/
"disabled": boolean;
/**
* Set to `"bold"` for a chip with vibrant, bold colors or to `"subtle"` for a chip with muted, subtle colors. Only applies to the `ionic` theme.
*/
"hue"?: 'bold' | 'subtle';
/**
* The mode determines the platform behaviors of the component.
*/
@@ -1696,6 +1704,10 @@ export namespace Components {
* Contains a URL or a URL fragment that the hyperlink points to. If this property is set, an anchor tag will be rendered.
*/
"href": string | undefined;
/**
* Set to `"bold"` for an option with vibrant, bold colors or to `"subtle"` for an option with muted, subtle colors. Only applies to the `ionic` theme.
*/
"hue"?: 'bold' | 'subtle';
/**
* The mode determines the platform behaviors of the component.
*/
@@ -3832,6 +3844,10 @@ export namespace Components {
* Additional attributes to pass to the toast.
*/
"htmlAttributes"?: { [key: string]: any };
/**
* Set to `"bold"` for a toast with vibrant, bold colors or to `"subtle"` for a toast with muted, subtle colors. Only applies to the `ionic` theme.
*/
"hue"?: 'bold' | 'subtle';
/**
* The name of the icon to display, or the path to a valid SVG file. See `ion-icon`. https://ionic.io/ionicons
*/
@@ -5870,6 +5886,10 @@ declare namespace LocalJSX {
* The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics).
*/
"color"?: Color;
/**
* Set to `"bold"` for a badge with vibrant, bold colors or to `"subtle"` for a badge with muted, subtle colors. Only applies to the `ionic` theme.
*/
"hue"?: 'bold' | 'subtle';
/**
* The mode determines the platform behaviors of the component.
*/
@@ -6279,6 +6299,10 @@ declare namespace LocalJSX {
* If `true`, the user cannot interact with the chip.
*/
"disabled"?: boolean;
/**
* Set to `"bold"` for a chip with vibrant, bold colors or to `"subtle"` for a chip with muted, subtle colors. Only applies to the `ionic` theme.
*/
"hue"?: 'bold' | 'subtle';
/**
* The mode determines the platform behaviors of the component.
*/
@@ -7188,6 +7212,10 @@ declare namespace LocalJSX {
* Contains a URL or a URL fragment that the hyperlink points to. If this property is set, an anchor tag will be rendered.
*/
"href"?: string | undefined;
/**
* Set to `"bold"` for an option with vibrant, bold colors or to `"subtle"` for an option with muted, subtle colors. Only applies to the `ionic` theme.
*/
"hue"?: 'bold' | 'subtle';
/**
* The mode determines the platform behaviors of the component.
*/
@@ -9360,6 +9388,10 @@ declare namespace LocalJSX {
* Additional attributes to pass to the toast.
*/
"htmlAttributes"?: { [key: string]: any };
/**
* Set to `"bold"` for a toast with vibrant, bold colors or to `"subtle"` for a toast with muted, subtle colors. Only applies to the `ionic` theme.
*/
"hue"?: 'bold' | 'subtle';
/**
* The name of the icon to display, or the path to a valid SVG file. See `ion-icon`. https://ionic.io/ionicons
*/

View File

@@ -5,9 +5,9 @@
// --------------------------------------------------
:host {
min-width: 272px;
min-width: calc(#{globals.$ion-scale-6200} + #{globals.$ion-space-600});
background-color: globals.$ion-primitives-base-white;
background-color: globals.$ion-bg-neutral-subtlest-default;
}
// Inset Accordion Group

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -21,7 +21,7 @@
height: globals.$ion-border-size-025;
background-color: globals.$ion-primitives-neutral-300;
background-color: globals.$ion-border-default;
content: "";
@@ -43,9 +43,9 @@
// we are adding a border to the ::after element of the accordion.
::slotted(ion-item[slot="header"]) {
--border-radius: inherit;
--color: #{globals.$ion-primitives-neutral-1200};
--border-width: 0;
--inner-border-width: 0;
--color: #{globals.$ion-text-default};
--border-width: #{globals.$ion-border-size-0};
--inner-border-width: #{globals.$ion-scale-0};
--min-height: #{globals.$ion-scale-700};
--padding-top: #{globals.$ion-space-300};
--padding-end: #{globals.$ion-space-400};
@@ -62,7 +62,7 @@
@include globals.padding(null, globals.$ion-space-400, globals.$ion-space-300, globals.$ion-space-400);
@include globals.typography(globals.$ion-body-md-regular);
color: globals.$ion-primitives-neutral-1000;
color: globals.$ion-text-default;
}
// Disabled Accordion

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 21 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: 25 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -1,4 +1,4 @@
@import "../../themes/native/native.globals";
@import "../../themes/mixins.scss";
// Avatar
// --------------------------------------------------

View File

@@ -1,5 +1,5 @@
@use "../../themes/ionic/ionic.globals.scss" as globals;
@import "./avatar.common";
@use "./avatar.common";
// Ionic Avatar
// --------------------------------------------------
@@ -8,21 +8,19 @@
--padding-top: #{globals.$ion-space-0};
--padding-bottom: #{globals.$ion-space-0};
@include globals.typography(globals.$ion-heading-h6-medium);
display: flex;
align-items: center;
justify-content: center;
background: globals.$ion-primitives-neutral-100;
color: globals.$ion-primitives-neutral-800;
font-weight: globals.$ion-font-weight-medium;
line-height: globals.$ion-font-line-height-700;
background: globals.$ion-bg-neutral-subtlest-default;
color: globals.$ion-text-subtlest;
}
:host(:not(.avatar-image)) {
@include padding(var(--padding-top), var(--padding-end), var(--padding-bottom), var(--padding-start));
@include globals.padding(var(--padding-top), var(--padding-end), var(--padding-bottom), var(--padding-start));
}
// Avatar Sizes
@@ -33,12 +31,10 @@
--padding-end: #{globals.$ion-space-050};
--padding-start: #{globals.$ion-space-050};
@include globals.typography(globals.$ion-body-sm-medium);
width: globals.$ion-scale-400;
height: globals.$ion-scale-400;
font-size: globals.$ion-font-size-300;
line-height: globals.$ion-font-line-height-500;
}
/* Extra Small */
@@ -46,12 +42,10 @@
--padding-end: #{globals.$ion-space-050};
--padding-start: #{globals.$ion-space-050};
@include globals.typography(globals.$ion-body-sm-medium);
width: globals.$ion-scale-600;
height: globals.$ion-scale-600;
font-size: globals.$ion-font-size-300;
line-height: globals.$ion-font-line-height-500;
}
/* Small */
@@ -59,12 +53,10 @@
--padding-end: #{globals.$ion-space-150};
--padding-start: #{globals.$ion-space-150};
@include globals.typography(globals.$ion-body-lg-medium);
width: globals.$ion-scale-800;
height: globals.$ion-scale-800;
font-size: globals.$ion-font-size-400;
line-height: globals.$ion-font-line-height-600;
}
/* Medium */
@@ -74,8 +66,6 @@
width: globals.$ion-scale-1000;
height: globals.$ion-scale-1000;
font-size: globals.$ion-font-size-450;
}
/* Large */
@@ -83,10 +73,10 @@
--padding-end: #{globals.$ion-space-250};
--padding-start: #{globals.$ion-space-250};
@include globals.typography(globals.$ion-heading-h5-medium);
width: globals.$ion-scale-1200;
height: globals.$ion-scale-1200;
font-size: globals.$ion-font-size-500;
}
/* Extra Large */
@@ -94,10 +84,10 @@
--padding-end: #{globals.$ion-space-300};
--padding-start: #{globals.$ion-space-300};
@include globals.typography(globals.$ion-heading-h4-medium);
width: globals.$ion-scale-1400;
height: globals.$ion-scale-1400;
font-size: globals.$ion-font-size-550;
}
// Avatar Shapes
@@ -125,7 +115,7 @@
// --------------------------------------------------
:host(.avatar-icon) {
@include padding(0);
@include globals.padding(0);
}
:host(.avatar-xsmall) ::slotted(ion-icon) {

View File

@@ -1,4 +1,4 @@
@import "./backdrop.vars";
@import "../../themes/mixins.scss";
// Backdrop
// --------------------------------------------------
@@ -15,7 +15,6 @@
cursor: pointer;
opacity: 0.01;
touch-action: none;
z-index: $z-index-backdrop;
}
:host(.backdrop-hide) {

View File

@@ -1,6 +1,8 @@
@use "../../themes/ionic/ionic.globals.scss" as globals;
@import "./backdrop";
@use "./backdrop.common";
:host {
background-color: rgba(globals.$ion-primitives-base-black-rgb, 0.7);
z-index: 2;
}

View File

@@ -1,5 +1,5 @@
@import "./backdrop";
@import "./backdrop.ios.vars";
@import "./backdrop.native";
@import "../../themes/native/native.globals.ios";
:host {
background-color: $backdrop-ios-color;

View File

@@ -1 +0,0 @@
@import "../../themes/native/native.globals.ios";

View File

@@ -1,5 +1,5 @@
@import "./backdrop";
@import "./backdrop.md.vars";
@import "./backdrop.native";
@import "../../themes/native/native.globals.md.scss";
:host {
background-color: $backdrop-md-color;

View File

@@ -1 +0,0 @@
@import "../../themes/native/native.globals.md";

View File

@@ -1,7 +1,9 @@
@import "./backdrop.common";
@import "../../themes/native/native.globals";
// Button
// Backdrop
// --------------------------------------------------
/// @prop - Badge padding inside button
$button-badge-padding: 2px;
:host {
z-index: $z-index-backdrop;
}

View File

@@ -1 +0,0 @@
@import "../../themes/native/native.globals";

View File

@@ -1,6 +1,5 @@
@use "../../themes/functions.color" as color;
@import "../../themes/mixins";
@import "./badge.common.vars";
// Badge
// --------------------------------------------------
@@ -15,26 +14,14 @@
* @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
*/
--padding-top: #{$badge-padding-top};
--padding-end: #{$badge-padding-end};
--padding-bottom: #{$badge-padding-bottom};
--padding-start: #{$badge-padding-start};
@include font-smoothing();
@include padding(var(--padding-top), var(--padding-end), var(--padding-bottom), var(--padding-start));
display: inline-block;
min-width: $badge-min-width;
background: var(--background);
color: var(--color);
font-size: $badge-font-size;
font-weight: $badge-font-weight;
line-height: 1;
text-align: center;
white-space: nowrap;
@@ -43,11 +30,6 @@
vertical-align: baseline;
}
:host(.ion-color) {
background: #{color.current-color(base)};
color: #{color.current-color(contrast)};
}
// Badge (hint)
// --------------------------------------------------

View File

@@ -1,28 +0,0 @@
@import "../../themes/functions.font";
// Badge
// --------------------------------------------------
/// @prop - Padding top of the badge
$badge-padding-top: 3px;
/// @prop - Padding end of the badge
$badge-padding-end: 8px;
/// @prop - Padding bottom of the badge
$badge-padding-bottom: $badge-padding-top;
/// @prop - Padding start of the badge
$badge-padding-start: $badge-padding-end;
/// @prop - Minimum width of the badge
$badge-min-width: 10px;
/// @prop - Baseline font size of the badge
$badge-baseline-font-size: 13px;
/// @prop - Font size of the badge
$badge-font-size: dynamic-font($badge-baseline-font-size);
/// @prop - Font weight of the badge
$badge-font-weight: bold;

View File

@@ -5,19 +5,45 @@
// --------------------------------------------------
:host {
--background: #{globals.ion-color(primary, base)};
--color: #{globals.ion-color(primary, contrast)};
--padding-start: #{globals.$ion-space-200};
--padding-end: #{globals.$ion-space-200};
--padding-top: #{globals.$ion-space-0};
--padding-bottom: #{globals.$ion-space-0};
@include globals.typography(globals.$ion-body-sm-medium);
display: inline-flex;
align-items: center;
justify-content: center;
font-weight: globals.$ion-font-weight-medium;
min-width: globals.$ion-scale-250;
}
// Bold Badge
// --------------------------------------------------
:host(.badge-bold) {
--background: #{globals.ion-color(primary, base)};
--color: #{globals.ion-color(primary, contrast)};
}
:host(.badge-bold.ion-color) {
background: globals.current-color(base);
color: globals.current-color(contrast);
}
// Subtle Badge
// --------------------------------------------------
:host(.badge-subtle) {
--background: #{globals.ion-color(primary, base, $subtle: true)};
--color: #{globals.ion-color(primary, contrast, $subtle: true)};
}
:host(.badge-subtle.ion-color) {
background: globals.current-color(base, $subtle: true);
color: globals.current-color(contrast, $subtle: true);
}
// Badge Shapes
@@ -90,10 +116,6 @@
min-width: globals.$ion-scale-800;
height: globals.$ion-scale-800;
font-size: globals.$ion-font-size-400;
line-height: globals.$ion-font-line-height-600;
}
:host(.badge-small) ::slotted(ion-icon) {
@@ -103,12 +125,9 @@
/* Medium Badge */
:host(.badge-medium) {
@include globals.typography(globals.$ion-body-md-medium);
min-width: globals.$ion-scale-1000;
height: globals.$ion-scale-1000;
font-size: globals.$ion-font-size-450;
line-height: globals.$ion-font-line-height-700;
}
:host(.badge-medium) ::slotted(ion-icon) {
@@ -118,12 +137,9 @@
/* Large Badge */
:host(.badge-large) {
@include globals.typography(globals.$ion-body-lg-medium);
min-width: globals.$ion-scale-1200;
height: globals.$ion-scale-1200;
font-size: globals.$ion-font-size-500;
line-height: globals.$ion-font-line-height-700;
}
:host(.badge-large) ::slotted(ion-icon) {
@@ -133,12 +149,9 @@
/* Extra Large Badge */
:host(.badge-xlarge) {
@include globals.typography(globals.$ion-heading-h4-medium);
min-width: globals.$ion-scale-1400;
height: globals.$ion-scale-1400;
font-size: globals.$ion-font-size-550;
line-height: globals.$ion-font-line-height-700;
}
:host(.badge-xlarge) ::slotted(ion-icon) {
@@ -215,13 +228,10 @@
}
:host(:not(:empty).in-button) {
@include globals.typography(globals.$ion-body-action-xs);
min-width: globals.$ion-scale-400;
height: globals.$ion-scale-400;
font-size: globals.$ion-font-size-300;
line-height: globals.$ion-font-line-height-500;
::slotted(ion-icon) {
width: globals.$ion-scale-300;
height: globals.$ion-scale-300;

View File

@@ -6,10 +6,26 @@
// --------------------------------------------------
:host {
--padding-top: #{$badge-padding-top};
--padding-end: #{$badge-padding-end};
--padding-bottom: #{$badge-padding-bottom};
--padding-start: #{$badge-padding-start};
--background: #{ion-color(primary, base)};
--color: #{ion-color(primary, contrast)};
min-width: $badge-min-width;
font-family: $font-family-base;
font-size: $badge-font-size;
font-weight: $badge-font-weight;
line-height: 1;
}
:host(.ion-color) {
background: current-color(base);
color: current-color(contrast);
}
// TODO(ROU-10747): Review size styles when sizes are defined for native themes.

View File

@@ -21,3 +21,27 @@ $badge-line-height-in-button: 20px;
/// @prop - Size of of the badge icon when inside button
$badge-icon-size-in-button: 12px;
/// @prop - Padding top of the badge
$badge-padding-top: 3px;
/// @prop - Padding end of the badge
$badge-padding-end: 8px;
/// @prop - Padding bottom of the badge
$badge-padding-bottom: $badge-padding-top;
/// @prop - Padding start of the badge
$badge-padding-start: $badge-padding-end;
/// @prop - Minimum width of the badge
$badge-min-width: 10px;
/// @prop - Baseline font size of the badge
$badge-baseline-font-size: 13px;
/// @prop - Font size of the badge
$badge-font-size: dynamic-font($badge-baseline-font-size);
/// @prop - Font weight of the badge
$badge-font-weight: bold;

View File

@@ -28,6 +28,14 @@ export class Badge implements ComponentInterface {
*/
@Prop({ reflect: true }) color?: Color;
/**
* Set to `"bold"` for a badge with vibrant, bold colors or to `"subtle"` for
* a badge with muted, subtle colors.
*
* Only applies to the `ionic` theme.
*/
@Prop() hue?: 'bold' | 'subtle';
/**
* Set to `"rectangular"` for non-rounded corners.
* Set to `"soft"` for slightly rounded corners.
@@ -87,7 +95,33 @@ export class Badge implements ComponentInterface {
return size;
}
// The 'subtle' hue is the default for badges containing text or icons
// The 'bold' hue is used when inside of an avatar, button, tab button,
// or when the badge is empty (no text or icon).
private getHue(): string | undefined {
const { hue } = this;
if (hue !== undefined) {
return hue;
}
const inAvatar = hostContext('ion-avatar', this.el);
const inButton = hostContext('ion-button', this.el);
const inTabButton = hostContext('ion-tab-button', this.el);
const hasContent = this.el.textContent?.trim() !== '' || this.el.querySelector('ion-icon') !== null;
// Return 'bold' if the badge is inside an avatar, button, tab button,
// or has no content
if (inAvatar || inButton || inTabButton || !hasContent) {
return 'bold';
}
// Return 'subtle' if the badge contains visible text or an icon
return 'subtle';
}
render() {
const hue = this.getHue();
const shape = this.getShape();
const size = this.getSize();
const theme = getIonTheme(this);
@@ -96,6 +130,7 @@ export class Badge implements ComponentInterface {
<Host
class={createColorClasses(this.color, {
[theme]: true,
[`badge-${hue}`]: hue !== undefined,
[`badge-${shape}`]: shape !== undefined,
[`badge-${size}`]: size !== undefined,
[`badge-vertical-${this.vertical}`]: this.vertical !== undefined,

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 77 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 100 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 99 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 77 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 101 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 99 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

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