503 Commits

Author SHA1 Message Date
c98ad6f16a fix(modal, popover): wait for contents to mount (#27344)
Issue number: resolves #27343

---------

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

In
30e3a1485d
I removed the `deepWait` call from popover/modal in custom element
bundle environments (React and Vue as of writing). This had an
unintended side effect where WebKit/iOS would not play the modal enter
animation correctly because the inner contents are mounted
mid-animation. This does not impact other mobile platforms.

This only impacted the modal because popover had a patch in
be9a399eee
which causes it to wait for the JS Framework to finish mounting before
proceeding with the transition.

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

- Modal now emits `ionMount` event and waits 2 frames before proceeding
with the animation.

Note 1: The JS Framework overlay components were already updated to
support this `ionMount` event in
be9a399eee.

I also updated the modal Angular component to listen for `ionMount`. It
is not needed right now because Angular does not use the custom elements
bundle and therefore does not call `ionMount` (it runs the `deepReady`
function though). However, if we move Angular to support the custom
elements bundle in the future this may become an issue. This behavior
currently exists in the popover component for Angular too.

Note 2: This does appear to be a WebKit bug since it does not happen on
Android. However, this patch seems fairly safe which is why I've opted
to try and fix it internally instead of waiting for a patch from Apple.


| before | after |
| - | - |
| <video
src="https://user-images.githubusercontent.com/2721089/235495325-2f258526-0c43-422b-84c3-ac4f5e228bbd.MP4"></video>
| <video
src="https://user-images.githubusercontent.com/2721089/235495362-9b3bb35d-782c-4a8f-ac13-8aaa8f17729b.MP4"></video>
|


## Does this introduce a breaking change?

- [ ] Yes
- [x] No

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


## Other information

<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->
2023-05-03 14:32:25 +00:00
77b9e11c2b chore(): sync with main 2023-03-08 09:35:37 -05:00
8d184c8c1b fix(angular): keepContentsMounted modal is sized correctly (#26917)
resolves #26916
2023-03-07 09:25:09 -05:00
708ccbf808 chore(): sync with main 2023-03-01 11:22:56 -05:00
865f8de9dc feat(searchbar): ionInput now emits value payload (#26831)
resolves #26828

BREAKING CHANGE:

The `detail` payload for the `ionInput` event now on `ion-searchbar` contains an object with the current `value` as well as the native event that triggered `ionInput`.
2023-02-23 12:15:43 -05:00
1dee16f3a2 feat(angular,angular-server): angular v14 minimum support (#26822)
BREAKING CHANGE:

Angular v14 is now required to use `@ionic/angular` and `@ionic/angular-server`. Upgrade your project to Angular v14 by following the [Angular v14 update guide](https://update.angular.io/?l=3&v=13.0-14.0).

The dev-preview `environmentInjector` property has been removed from `ion-tabs` and `ion-router-outlet`. Standalone component routing is now available without additional custom configuration. Remove the `environmentInjector` property from your `ion-tabs` and `ion-router-outlet` components.
2023-02-22 12:33:49 -05:00
2a761afd5a feat(datetime): add ability to specify custom colors for specific dates (#26775) 2023-02-22 09:01:33 -06:00
fc5fcc064d feat(toast): add stacked buttons functionality (#26790) 2023-02-15 09:56:02 -05:00
f7f6f1d9f9 feat(textarea): add legacy prop (#26783) 2023-02-10 11:53:47 -05:00
e71dc912fe chore(): sync with main 2023-02-01 09:37:33 -05:00
1a8bd6d8c6 chore(deps): update to stencil v3 (#26663) 2023-01-31 18:07:22 -05:00
69d89eae94 fix(popover): popover opens on chrome 109 (#26672)
resolves #26643
2023-01-30 11:55:20 -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
8d3edd049d feat(textarea): component can be used outside of ion-item (#26674) 2023-01-24 20:57:53 -05:00
e0f610e470 chore(): run build (#26675) 2023-01-24 19:17:12 -05:00
18f109c7da feat(base-components): add ability to remove ios and md theme (#26669) 2023-01-24 16:18:35 -05:00
08da920683 chore(angular): update value accessor method 2023-01-23 13:48:12 -05:00
e8fb9e7328 chore(): sync with main 2023-01-23 13:38:16 -05:00
02640b5795 feat(select): component can be used outside ion-item (#26572) 2023-01-11 11:21:30 -05:00
9761b0a092 feat(radio): component can be used outside of ion-item (#26582) 2023-01-10 21:19:21 -05:00
c2e1ad385d chore(many): replace any types and add tech debt tickets (#26293)
Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
2023-01-06 09:34:55 -06:00
9d52e70361 feat(checkbox): component can be used outside ion-item (#26518) 2023-01-05 13:49:04 -06:00
49baad8ee6 feat(range): component can be used outside of ion-item (#26479) 2022-12-15 15:52:56 -05:00
1278a292f3 feat(input, toggle): add escape hatch property (#26416) 2022-12-05 13:43:07 -05:00
c74901c973 feat(toggle): component can be used outside of ion-item (#26357)
resolves #25570, resolves #23213

BREAKING CHANGE:

The `--background` and `--background-checked` variables have been renamed to `--track-background` and `--track-background-checked`, respectively.
2022-11-29 12:54:31 -05:00
ce2e37b1a1 fix(angular): null values are not converted to falsy value (#26341)
BREAKING CHANGE:

Datetime:

Passing the empty string to the `value` property will now error as it is not a valid ISO-8601 value.

Angular:

`null` values on form components will no longer be converted to the empty string (`''`) or `false`. This impacts `ion-checkbox`, `ion-datetime`, `ion-input`, `ion-radio`, `ion-radio-group`, ion-range`, `ion-searchbar`, `ion-segment`, `ion-select`, `ion-textarea`, and `ion-toggle`.
2022-11-23 13:03:13 -05:00
c0a8501657 feat(picker): add ability to use picker inline (#26336) 2022-11-22 15:33:47 -05:00
f23fb342b2 fix(angular): inline overlays are exported (#26333) 2022-11-22 14:14:04 -05:00
c149b42d0b Merge remote-tracking branch 'origin/main' into sync-7-11-15-22 2022-11-15 15:40:21 -05:00
44472aeb9f feat(input): component can be used outside of ion-item (#26283)
resolves #20153, resolves #19084, resolves #22736
2022-11-15 11:46:44 -05:00
e3ef932ae1 chore(many): add tech debt tickets and remove unnecessary todos (#26266) 2022-11-14 14:49:08 -06:00
0a8a958cba fix(popover): inline popover positioning with fit-content or auto width (#26230)
Resolves #24716
2022-11-10 16:17:43 -05:00
30e3a1485d perf(many): reduce delay when performing overlay or page transitions (#26189)
resolves #24346
2022-11-01 13:08:27 -04:00
eea6ba996c feat(input, textarea): ionInput and ionChange pass event and value (#26176)
BREAKING CHANGE:

The `detail` payload for the `ionInput` event on `ion-input` and `ion-textarea` now contains an object with the current `value` as well as the native event that triggered `ionInput`.
2022-11-01 12:30:58 -04:00
322a1dbcd0 refactor(types): remove overlay attribute interfaces (#26181)
BREAKING CHANGE:

`ActionSheetAttributes`, `AlertAttributes`, `AlertTextareaAttributes`, `AlertInputAttributes`, `LoadingAttributes`, `ModalAttributes`, `PickerAttributes`, `PopoverAttributes`, and `ToastAttributes` have been removed. Developers should use `{ [key: string]: any }` instead.
2022-10-28 16:12:28 -04:00
d1fb7b039b feat(range): ionChange will only emit from user committed changes (#26089) 2022-10-24 16:13:48 -04:00
92d7bd5d7d Merge remote-tracking branch 'origin/main' into sync-feature-10-21 2022-10-21 14:36:30 -04:00
51ab5f67b5 fix(datetime): empty string is treated as no value (#26131)
resolves #26116
2022-10-17 15:01:27 -04:00
5d77fde503 chore(): update package lock files 2022-10-17 14:15:29 +00:00
c0c1e3ab01 chore(): build and lint 2022-10-11 15:58:18 +00:00
f1cdf18316 chore(): sync with main: 2022-10-11 11:38:27 -04:00
f7176bbb44 fix(textarea): clearOnEdit clears textarea when user initially types (#26006) 2022-10-10 14:20:50 -04:00
bf5e118313 fix(input): clearOnEdit clears input when user initially types (#26005) 2022-10-10 14:00:10 -04:00
85d3bd99be feat(toggle): ionChange will only emit from user committed changes (#26078)
Co-authored-by: Sean Perkins <sean@ionic.io>
2022-10-10 09:55:58 -05:00
b052d3b262 feat(searchbar): ionChange will only emit from user committed changes (#26026) 2022-10-03 15:08:43 -05:00
b13983848c feat(button): submit from outside of form (#25913)
Resolves #21194

Co-authored-by: Sean Perkins <sean@ionic.io>
2022-09-30 14:10:40 -04:00
fffc729e57 chore(): sync with main 2022-09-30 12:27:17 -04:00
1f3ddf2370 refactor(modal): remove swipeToClose in favor of canDismiss (#26050)
BREAKING CHANGE:

- The `swipeToClose` property has been removed in favor of `canDismiss`.
- The `canDismiss` property now defaults to `true` and can no longer be set to `undefined`.
2022-09-29 17:19:53 -04:00
68bae80a51 feat(textarea): ionChange will only emit from user committed changes (#25953) 2022-09-23 13:26:21 -04:00
c0f287e525 chore(): sync with main 2022-09-16 15:24:24 -04:00