116 Commits

Author SHA1 Message Date
c801e2ada9 chore: remove unused sass variables (#28363)
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. -->

This project has several unused Sass variables still in the code base.
The team would like to remove these.

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

- Removed unused Sass variables


## Does this introduce a breaking change?

- [ ] Yes
- [x] No

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


## Other information

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

The original scope of this ticket was for checkbox only, but many other
components had unused sass variables, so I decided to tackle everything
all at once.

Since these variables are not used anywhere:

1. The build should pass
2. There should be no screenshot diffs
2023-10-19 16:41:10 +00:00
448e63fef0 feat(segment): display segment as a grid and add an ellipsis to overflowing text in a segment button (#27457)
Issue number: resolves #16532

---------

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

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

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

As a result, I made the following updates:

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

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

## Other information

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

| `main` | `FW-3401` |
| ---| ---|
|
![main-ios](https://github.com/ionic-team/ionic-framework/assets/6577830/b245fffa-e09c-4a96-bc6e-c4d2ee68cd16)
|
![branch-ios](https://github.com/ionic-team/ionic-framework/assets/6577830/397d95f5-24d3-4421-b960-1a8a6ace7c26)
|
|
![main-md](https://github.com/ionic-team/ionic-framework/assets/6577830/75c77373-0dde-4e7d-a7fa-fc082fcb5c7a)
|
![branch-md](https://github.com/ionic-team/ionic-framework/assets/6577830/402f8293-8ea5-47fb-bc13-7dc2d85b361a)
|
2023-05-24 11:42:57 -04:00
ec95ae5cd3 feat(segment, segment-button): update segment value property to accept numbers (#27222)
Issue number: resolves #27221

---------

## What is the current behavior?

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

## What is the new behavior?

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

## Does this introduce a breaking change?

- [ ] Yes
- [X] No

## Other information

N/A
2023-05-24 09:07:57 -05:00
0a0345a84a refactor(many): use utils import (#27160) 2023-04-12 13:25:14 -07:00
16aa9770bb fix(segment-button): update checked state on render (#26970)
<!-- Please refer to our contributing documentation for any questions on
submitting a pull request, or let us know here if you need any help:
https://ionicframework.com/docs/building/contributing -->

## Pull request checklist

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


## Pull request type

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

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

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


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

In v7, asynchronously assigning a value to `ion-segment` and
`ion-segment-button` can cause the `ion-segment` to render without an
active value (segment button does not show as checked).

<!-- Issues are required for both bug fixes and features. -->
Issue URL: resolves #26830


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

- The `ion-segment-button` checked state is synced with the parent
`ion-segment`, when the component finishes the initial render.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

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


## Other information

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

Dev-build: `7.0.0-dev.11678736268.18a0beb1` 

---------

Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
2023-04-12 13:19:39 +00:00
ad6b1301cf fix(segment): segment disables segment buttons created asyncronously (#27155)
<!-- Please refer to our contributing documentation for any questions on
submitting a pull request, or let us know here if you need any help:
https://ionicframework.com/docs/building/contributing -->

<!-- Some docs updates need to be made in the `ionic-docs` repo, in a
separate PR. See
https://github.com/ionic-team/ionic-framework/blob/main/.github/CONTRIBUTING.md#modifying-documentation
for details. -->

<!-- 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 are only disabled when the segment's `disabled` property
changes. This means that segment buttons added to the segment async
don't have their `disabled` state inited correctly.

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


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

Segment buttons now check if their parent segment is `disabled` when
added to the DOM.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

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

---------

Co-authored-by: ionitron <hi@ionicframework.com>
2023-04-11 19:00:23 +00:00
1a8bd6d8c6 chore(deps): update to stencil v3 (#26663) 2023-01-31 18:07:22 -05:00
b78b454e08 revert(): revert base components feature (#26692)
The Ionic Framework team would like to re-evaluate our approach to improving customization options when building mobile applications. We are looking at other solutions that a) make customizing an app UI easier and b) are applicable to a broader set of developers.
2023-01-30 11:52:36 -05:00
18f109c7da feat(base-components): add ability to remove ios and md theme (#26669) 2023-01-24 16:18:35 -05:00
77ce9e066e fix(segment): nested interactive is not rendered (#26575) 2023-01-09 13:08:01 -05:00
5a243ccebc fix(segment): segment in toolbar uses correct contrast (#26353)
resolves #26350
2022-11-23 11:53:01 -05:00
15c169043f chore(docs): remove manual documentation (#24984) 2022-04-21 12:31:51 -04:00
9fbaaf95eb chore(): simplify overlay attribute types (#25074) 2022-04-07 14:11:30 -04:00
5676bab316 lint(eslint): migrate to eslint and prettier (#25046) 2022-04-04 11:12:53 -04:00
0ab37b5061 fix(datetime): time picker uses new iOS 15 style (#23996)
resolves #23768
2021-10-05 09:14:52 -04:00
b6c53e539b feat(segment): add keyboard navigation, add selectOnFocus property to control selection follow focus behavior (#23590)
resolves #23520
2021-07-20 16:45:17 -04:00
932d3ca62f feat(datetime): add calendar picker (#23416)
resolves #19423

BREAKING CHANGE: The `ion-datetime` component has been revamped to use a new calendar style. As a result, some APIs have been removed. See https://github.com/ionic-team/ionic-framework/blob/master/BREAKING.md for more details.
2021-06-16 15:54:15 -04:00
91ac340ae7 fix(segment, segment-button): use correct tablist and tab roles for screen readers (#23145)
* fix(segment, segment-button): change aria attributes for segment and segment-button

* add axe test

* Add tests, screen reader doc

* add updated screen reader

* fix(segment-button): move aria tags to host

* verify nvda and talkback behavior

* fix(segment-button): remove outline on focus

* Update core/src/components/segment/test/basic/index.html

Co-authored-by: Liam DeBeasi <liamdebeasi@icloud.com>
2021-04-12 09:20:59 -04:00
dd307b60b6 chore(): revert old segment fix in favor of new one (#22434)
This reverts commit 68afc49e9ed27acffb0b765b7be6b03e8574850d.
2020-11-05 11:38:46 -05:00
04161c9512 fix(segment-button): color property is now reactive if previously undefined (#22405)
resolves #20831
2020-10-30 16:25:52 -04:00
18ad9efa4b chore(): sync vue branch with master 2020-10-08 11:38:58 -04:00
68afc49e9e perf(segment): improve scrolling performance on ios when using segment (#22110)
resolves #22095
2020-09-21 15:39:09 -04:00
9ca8b9de46 chore(): sync with master 2020-09-21 11:36:45 -04:00
db2cac20fb docs(vue): update component usage examples for vue 3 (#22050) 2020-09-11 13:48:21 -04:00
5ffa65f84a feat(vue): add ionic vue beta (#22062) 2020-09-10 15:20:49 -04:00
e32b9afaaa docs(segment-button): add correct usage for checking segment button (#21966)
resolves #21961
2020-08-24 09:48:06 -04:00
88f1828bd8 fix(segment-button): allow min-width to be overridden (#21722)
fixes #21105
2020-07-14 10:58:40 -04:00
a5e4669c4b feat(segment-button, toast): add additional parts docs (#21532) 2020-06-30 10:31:54 -05:00
17375d2325 feat(all): add shadow parts to missing components (#21436) 2020-06-10 09:58:33 -04:00
687122127c docs(stencil): add stencil usage to components (#21261) 2020-05-12 20:35:48 -04:00
85cc35ee91 fix(segment-button): screen readers now announce selected state properly (#21273) 2020-05-12 11:37:56 -04:00
f86c82639f fix(segment): automatically expand width for scrollable segment buttons (#20763)
fixes #20566
2020-03-18 16:14:06 -04:00
44993b7987 fix(segment): iOS mode segment now works on older Android devices (#20673)
fixes #20648
2020-03-05 11:56:54 -05:00
fcf97465f5 docs(segment-button): update usage for v5 (#20612) 2020-02-25 10:30:04 -05:00
714ecaae65 docs(react): updating icon usages 2020-02-20 16:08:23 -07:00
06b828b4ff fix(segment): inner div no longer interferes with click events (#20522)
fixes #20381
2020-02-19 09:40:10 -05:00
4d50064764 fix(segment): only emit ionChange when user releases pointer from screen (#20495)
fixes #20500
fixes #20257
2020-02-18 15:11:28 -05:00
9b5854d797 fix(segment): border radius applies to indicator on ios (#20541)
fixes #20539
2020-02-18 13:58:25 -05:00
e8886e98f1 fix(segment): add activated class directly to segment button (#20400)
this gets around a bug with Safari where the ::slotted css selector was not working properly
2020-02-07 12:13:09 -05:00
628db18a97 fix(components): fix issues with button states (#20278)
- Update action sheet colors to match spec (md)
- Remove activated background on buttons (md - uses ripple)
- Update Segment Button to use proper indicator color when inside of a toolbar
- Add back input highlight on focus

fixes #20276
2020-01-27 16:47:02 -05:00
94159291b2 feat(components): improve button states and add new css properties (#19440)
Before users had to know the exact opacity that the MD/iOS spec called for in order to change the hover or focused background color. This allows them to change the background without having to know the opacity. 

- changes apply to Action Sheet (Buttons), Back Button, Button, FAB Button, Item, Menu Button, Segment Button, Tab Button
- greatly reduces the requirement by users to set the background hover, focused states for dark modes and custom themes, also eliminates the need to know what the hover opacity is for each based on the spec
- updates the MD dark theme per their spec
- adds a component guide for internal use changing Ionic components

references #18279 fixes #20213 fixes #19965

BREAKING CHANGE:

*Activated Class*

The `activated` class that is automatically added to buttons on press has been renamed to `ion-activated`. This will be more consistent with our `ion-focused` class we add and also will reduce conflicts with user's CSS.

*CSS Variables*

The `--background-hover`, `--background-focused` and `--background-activated` CSS variables on components that render native buttons will now have an opacity automatically set. If you are setting any of these like the following:

```
--background-hover: rgba(44, 44, 44, 0.08);
```

You will likely not see a hover state anymore. It should be updated to only set the desired color:

```
--background-hover: rgba(44, 44, 44);
```

If the opacity desired is something other than what the spec asks for, use:

```
--background-hover: rgba(44, 44, 44);
--background-hover-opacity: 1;
```
2020-01-23 16:57:47 -05:00
d76a5031c4 feat(segment-button): add --indicator-height property to segment button (#19653) 2020-01-23 15:55:57 -05:00
a5229d90ca refactor(): remove checked property in favor of parent value (#19449)
BREAKING CHANGE:


The following components have been updated to remove the checked or selected properties:

- Radio
- Segment Button
- Select

Developers should set the value property on the respective parent components in order to managed checked/selected status.

Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
2020-01-17 17:22:26 -05:00
dc66ce48e1 feat(segment): implement iOS 13 segment with animation (#19036)
Changes
Closes #18663

* Converts Segment to shadow
* Enables gesture to swipe between segment buttons
* Adds indicator transition to slide the indicator between buttons
* Updates global theme variables
* Removes activated state, now handled by the gesture
* Updates iOS to latest iOS 13 UI
* Ensures customization is working for the buttons and indicator
* Updates the e2e tests
2020-01-14 11:51:28 -05:00
930b271a4a Master react (#18998)
* chore(): bump to beta 8

* fix(): IonFabButton href fix

* fix(react): support components with href attributes

* fix(): Prep work to break router out

* fix(): breaking react-router and react-core into own packages

* chore(): moving view stuff out of react-core

* chore(): dev build 8-1

* chore(): update to react beta 8

* chore(): fixes to deps

* fix(): removing IonAnchor in favor of IonRouterLink

* chore(): beta 9 release

* refactor(react): treeshake, minify, api

* wip

* fix(): react dev builds

* fix(): fixes to get app builds working again

* fix(): removing tgz file

* feat(): adding platform helper methods

* fix(): don't map attributes to props

* chore(): add test app

* feat(): copy css folder from core

* chore(): move rollup node resolve to devDependencies

* fix(): expose setupConfig()

* perf(): improve treeshaking

* fix(): removing crypto from generateUniqueId

* fix(): adding missing rollup dp

* fix(): test cleanup and fixes to make tests pass

* chore(): moving react to packages folder

* fix(): fixing react build due to move to packages

* feat(): adding missing IonInfiniteScrollContent component

* chore(): add automated testing using cypress

* fix(): adding option onDidDismiss to controller components

* 0.0.10 react

* wip

* fix(): removing deprecated React calls

* fix(): exporting setupConfig from core

* chore(): bump to 4.8.0-rc.0

* chore(): updating test-app deps and fixing test

* chore(): updates to react readme
2019-08-13 14:24:44 -06:00
045bc59b75 fix(theming): update components to use the proper colors for dark themes (#18735)
references #18713
2019-07-12 17:31:42 -04:00
34dfc3ce98 refactor(all): updating to newest stencil apis (#18578)
* chore(): update ionicons

* refactor(all): updating to newest stencil apis

* fix lint issues

* more changes

* moreee

* fix treeshaking

* fix config

* fix checkbox

* fix stuff

* chore(): update ionicons

* fix linting errors
2019-06-23 11:26:42 +02:00
73599c22aa docs(components): document what start and end mean for CSS variables (#18538) 2019-06-21 15:11:07 -04:00
b40f7d36d5 fix(): update to Stencil One 🎉🎊 2019-06-19 21:33:50 +02:00
eca4121dc6 feat(components): add missing button/a props to components that render them (#17883)
Adds the following properties to the components listed under them:

`rel`, `download`, `target`:
- anchor
- button
- card
- fab-button
- item-option
- item
- tab-button

`disabled`:
- back-button
- menu-button

`type`:
- back-button
- item-option
- menu-button
- segment-button

fixes #16848 closes #16889


Co-authored-by: bitflower <matthias.max@bitflower.net>
2019-06-12 14:06:29 -04:00