Commit Graph

43 Commits

Author SHA1 Message Date
Amanda Johnston
cf9fe315a3 feat(picker-column): add prefix and suffix slots (#28603)
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. -->

The new picker component does not have a counterpart for the `prefix`
and `suffix` properties on the old picker column.

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

- `prefix` and `suffix` slots added.
- Picker items wrapped in a new `.picker-opts` element for positioning
purposes, similar to the legacy picker column. This necessitated
additional changes to functionality and styling, since previously the
items were direct descendants of the host.
- New `setFocus` method added. This gets around a browser bug in Firefox
where calling `focus()` on the column doesn't correctly move focus, as
the nearest focusable element (`.picker-opts`) is in the shadow 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. -->

While you can no longer call `focus()` on the column in Firefox and must
use `setFocus()` instead, this isn't considered a breaking change
because this component isn't public API yet.

## Other information

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

---------

Co-authored-by: ionitron <hi@ionicframework.com>
2023-12-05 13:14:53 -06:00
Shawn Taylor
5e47412e1f refactor(picker): rename internal picker components to ion-picker and ion-picker-column (#28589) 2023-11-28 16:17:28 -05:00
Sean Perkins
4b5e62e60f refactor(datetime): render button for month/year toggle (#28443)
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. -->

`ion-datetime` uses an `ion-item` to render the month/year toggle button
inside of the header.

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

- `ion-datetime` uses a `button` element for the month/year toggle
button

## Does this introduce a breaking change?

- [x] Yes
- [ ] No

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

Impact and migration path is noted in the `BREAKING.md`. 

## Other information

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

- `translucent` is not a valid CSS value for `background`. This was
always intended to be `transparent`.

---------

Co-authored-by: ionitron <hi@ionicframework.com>
Co-authored-by: Brandy Carney <brandyscarney@users.noreply.github.com>
Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>

BREAKING CHANGE: The CSS shadow part for `month-year-button` has been changed to target a `button` element instead of `ion-item`. Developers should verify their UI renders as expected for the month/year toggle button inside of `ion-datetime`.
2023-11-27 10:19:19 -05:00
Shawn Taylor
f6a6877044 fix(datetime): allow calendar navigation in readonly mode; disallow keyboard navigation when disabled (#28336)
Issue number: #28121 

---------

<!-- 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. -->
It is not possible to navigate between months when ion-datetime is in
readonly mode. This means that if there are multiple dates selected, the
user cannot browse to view them all.

Also, keyboard navigation is not prevented in `readonly` or `disabled`
mode where it should be.

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

When `readonly`:
- Clicking the month-year button changes the month & year in readonly
mode
- Clicking the next & prev buttons changes the month in readonly mode
- Left and right arrow keys change the month in readonly mode
- Swiping/scrolling changes the month in readonly mode
- The selected date does not change when doing any of the above
- You cannot clear the value using keyboard navigation of the clear
button in readonly mode

When `disabled`:
- You cannot navigate months via keyboard navigation of the month-year
button in disabled mode
- You cannot navigate months using keyboard navigation of the previous &
next buttons in disabled mode
- You cannot navigate months via the left and right arrow keys in
disabled mode
- The selected date does not change when doing any of the above
- You cannot clear the value using keyboard navigation of the clear
button in disabled mode

Known bug:
- It is still possible to navigate through dates in `prefers-wheel` when
`disabled`. This bug existed prior to this PR. I created FW-5408 to
track this.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

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


## Other information

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

---------

Co-authored-by: ionitron <hi@ionicframework.com>
Co-authored-by: Amanda Johnston <90629384+amandaejohnston@users.noreply.github.com>
2023-10-31 20:12:04 +00:00
Liam DeBeasi
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
Liam DeBeasi
f8067819ee feat(a11y): add dynamic font scaling (#28314)
Issue number: resolves #24638, resolves #18592

---------

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

Developers have requested that Ionic Framework support the dynamic type
feature on iOS for accessibility purposes. Ionic applications do not
respond to font scaling on iOS which can create inaccessible
applications particularly for users with low vision. Ionic apps on
Android devices currently support the Android equivalent due to
functionality in the Chromium webview.

Developers have also requested a way of adjusting the fonts in their
Ionic UI components consistently.

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

- Ionic components now use `rem` instead of `px` where appropriate. This
means devs can change the font size on `html` and the text in supported
Ionic components will scale up/down appropriately
- Add support for Dynamic Type on iOS (the iOS version of Dynamic Font
Scaling)

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

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


## Other information

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

---------

Co-authored-by: Maria Hutt <thetaPC@users.noreply.github.com>
Co-authored-by: Brandy Carney <brandyscarney@users.noreply.github.com>
Co-authored-by: Shawn Taylor <shawn@ionic.io>
Co-authored-by: ionitron <hi@ionicframework.com>
Co-authored-by: Sean Perkins <sean@ionic.io>
Co-authored-by: Sean Perkins <13732623+sean-perkins@users.noreply.github.com>
Co-authored-by: Amanda Johnston <90629384+amandaejohnston@users.noreply.github.com>
2023-10-10 17:38:09 -04:00
Brandy Carney
79b005da70 feat(datetime): add parts for calendar day, active, and today (#27641)
Issue number: resolves #25340

---------

- Exposes the following parts for a calendar day: `calendar-day`,
`today`, and `active`
- Combines the `calendar-day-highlight` element with the `calendar-day`
element so developers don't have to know to style two different elements
& we don't have to expose them as separate parts
- Improves height parity of the calendar day across browsers
- Updates the `custom` e2e test to include an example of styling days
using the newly exposed CSS parts
- Adds tests for the focus states of the calendar day
2023-09-06 11:58:41 -04:00
Amanda Johnston
f2c1845fba feat(datetime): add shadow parts and CSS variables for styling wheel pickers (#27529)
Issue number: resolves #25945

---------

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

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

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

Datetime wheel pickers cannot be styled.

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

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

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

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

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

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


## Other information

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

Dev build: `7.0.7-dev.11685554390.10c2ca9b`
Docs PR: https://github.com/ionic-team/ionic-docs/pull/2982
2023-06-06 11:25:15 -05:00
Amanda Johnston
2a761afd5a feat(datetime): add ability to specify custom colors for specific dates (#26775) 2023-02-22 09:01:33 -06:00
Sean Perkins
fcfbcdbc20 fix(datetime): md highlight does not clip at start or end of month (#26366)
Resolves #24891
2022-12-06 13:43:44 -05:00
Liam DeBeasi
f13ddcaf47 fix(datetime): fonts now render consistently (#26281) 2022-11-14 12:55:14 -05:00
Liam DeBeasi
1cecd3f1b9 chore(): sync with main: 2022-07-20 15:44:38 -04:00
Liam DeBeasi
b7afcb0f0c fix(datetime): use scroll listener to detect month changes (#25586)
resolves #25257, resolves #25608, resolves #24980
2022-07-15 14:58:06 -04:00
Liam DeBeasi
f1f862dcc1 chore(): sync with main 2022-06-27 09:54:57 -04:00
Sean Perkins
1a8d23da81 fix(item): multiple input appearance when using datetime (#25498)
* Revert "fix(item): multiple input appearance when using datetime (#25484)"

This reverts commit 3089f38f4d.

* fix(item): multiple input appearance when using datetime

Resolves #25483
2022-06-17 10:38:19 -04:00
Sean Perkins
3089f38f4d fix(item): multiple input appearance when using datetime (#25484)
Resolves #25479

Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
2022-06-16 16:38:07 -04:00
Liam DeBeasi
3d19771185 feat(datetime): add wheel style picker for dates and times (#25468) 2022-06-14 16:35:47 -04:00
Amanda Johnston
aa5e1b9621 fix(datetime): hide footer when month-year picker is open (#25205) 2022-04-29 14:29:30 -05:00
Liam DeBeasi
16647b2c72 fix(datetime): month and year column order is now locale aware (#24802)
resolves #24548
2022-02-17 11:28:09 -05:00
Sean Perkins
b40fc4632e fix(datetime): prevent navigating to disabled months (#24421)
Resolves #24208, #24482
2022-02-01 12:57:03 -05:00
Liam DeBeasi
3d20959221 fix(datetime): showing calendar grid no longer causes month to switch on ios 15 (#24554)
resolves #24405
2022-01-12 10:24:29 -05:00
Liam DeBeasi
27aef9343c fix(datetime): resolve month and year jumping issue on ios (#24142)
resolves #23910
2021-11-02 16:37:12 -04:00
Liam DeBeasi
71fab0fa12 fix(datetime): default sizing preserves shape of datetime (#24104) 2021-10-21 16:44:35 -04:00
Liam DeBeasi
0ab37b5061 fix(datetime): time picker uses new iOS 15 style (#23996)
resolves #23768
2021-10-05 09:14:52 -04:00
William Martin
18765e7e39 feat(datetime): add clear button (#23920)
resolves #17482 

Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
2021-09-14 22:52:33 -04:00
Liam DeBeasi
4ae44b7a23 feat(datetime): add ability to select only month, year, or month and year (#23913) 2021-09-14 09:10:43 -04:00
William Martin
bc4e8267aa fix(datetime): reduce time presentation min height (#23771)
resolves #23690
2021-08-16 15:58:21 -04:00
William Martin
321341d97d feat(datetime): add size property (#23649)
resolves #23518
2021-07-20 12:31:38 -04:00
Liam DeBeasi
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
Brandy Carney
73599c22aa docs(components): document what start and end mean for CSS variables (#18538) 2019-06-21 15:11:07 -04:00
Abdelaziz Bennouna
17345efb14 fix(datetime): update label direction in rtl (#18340) 2019-05-22 09:18:41 -04:00
Simon Hänisch
d513e8a952 feat(datetime): add readonly prop (#17139) 2019-01-18 17:24:58 +01:00
Adam Bradley
169da3709b fix(datetime): do no change order of formatted dates w/ rtl (#17024) 2019-01-09 17:20:36 -06:00
Manu MA
fd79b57748 fix(inputs): fix aria with shadow-dom (#16329) 2018-11-16 19:26:55 +01:00
Manu Mtz.-Almeida
92ee4efb12 fix(inputs): add z-index for all inputs
fixes #16157
2018-10-31 14:46:46 +01:00
Manu Mtz.-Almeida
f8eafa7a21 fix(all): lint errors 2018-09-24 18:20:52 +02:00
Brandy Carney
fa7701721c fix(datetime): convert to shadow and fix broken styles
- adds shadow
- adds and documents css variables
- gets placeholder color working
- gets multiple datetimes in an item working

fixes #15547 references #14850
2018-09-18 15:45:59 -04:00
Manu Mtz.-Almeida
d12ef78de6 refactor(all): cleanup mode font 2018-08-24 03:33:44 +02:00
Brandy Carney
7a8d5f68d2 chore(stylelint): remove sass-lint/scss-lint in favor of stylelint
- remove scss-lint and sass-lint
- add stylelint and stylelint-order packages and configuration
- update all *.scss files to new syntax

fixes #14805
2018-07-19 15:10:30 -05:00
Brandy Carney
a7f1f4daa7 refactor(components): update to use shadow DOM and work with css variables
- updates components to use shadow DOM or scoped if they require css variables
- moves global styles to an external stylesheet that needs to be imported
- adds support for additional colors and removes the Sass loops to generate colors for each component
- several property renames, bug fixes, and test updates

Co-authored-by: Manu Mtz.-Almeida <manu.mtza@gmail.com>
Co-authored-by: Adam Bradley <adambradley25@gmail.com>
Co-authored-by: Cam Wiegert <cam@camwiegert.com>
2018-07-09 12:57:21 -04:00
Manu Mtz.-Almeida
ce09978eee fix(covers): absolute positioning 2018-03-22 22:17:53 +01:00
Manu Mtz.-Almeida
4fcddadcc9 fix(all): absolute positioning 2018-03-22 17:15:24 +01:00
Brandy Carney
d37623a2ca chore(packages): move the packages to root 2018-03-12 16:02:25 -04:00