77 Commits

Author SHA1 Message Date
7375dd6aba fix(content): fullscreen offset is computed correctly with tab bar (#28245)
Issue number: resolves #21130

---------

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

IonContent sets `--offset-top` and `--offset-bottom` variables to allow
the content to scroll under headers, footers, and tab bars. This is
essential to creating the translucency effect on these components.

IonContent does this by computing its offsetHeight and offsetTop
coordinates which take into account the dimensions of headers, footers,
and tab bars. Occasionally, this code will run before the IonTabBar has
been hydrated which means that the offset will be wrong because the
IonTabBar will have a dimension of 0x0 prior to hydration.

This impacts Ionic Angular devs who are using the lazy loaded build of
Ionic. React and Vue devs are not impacted because they are using the
dist-custom-elements build of Ionic which does not have hydration.

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

- IonContent will re-run the offset computation code whenever the
`ionTabBarLoaded` event is emitted. This event is emitted at most once
per IonTabBar instance.

## 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.4.2-dev.11695831341.191bdf12`

Note: I did not write a test since this is fixing a race condition. I
wasn't able to find a non-flaky way of testing this. You can test this
in an Ionic Angular Tabs starter application with the dev build. The
`--offset-bottom` variable on `ion-content` should be large enough such
that the content will scroll under the tab bar. The translucency effect
won't work just yet, but that is being fixed in
https://github.com/ionic-team/ionic-framework/pull/28246.
2023-10-04 18:31:11 +00:00
159bffbb5f chore(): sync with main 2023-05-11 14:57:44 -04:00
e9309880d1 fix(content): prevent forceUpdate in SSR (#27440)
Issue number: Resolves #27411,
https://github.com/ionic-team/stencil/issues/2429,
https://github.com/ionic-team/stencil/issues/4076

---------

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

Rendering `<ion-content fullscreen="true">` in an Angular Universal
project will result in a javascript heap exception and the browser tab
timing out.

`forceUpdate` is not a compatible API with pre-rendering and results in
calling itself indefinitely.

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

- Updates the fullscreen implementation of `ion-content` to only call
`forceUpdate` and related functionality when running in a browser
environment.
- `<ion-content fullscreen="true">` is compatible with Angular Universal

## 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.6-dev.11683653232.1ddc5840` 
2023-05-09 21:29:04 +00:00
0a0345a84a refactor(many): use utils import (#27160) 2023-04-12 13:25:14 -07:00
75186d3f83 docs(content): fix typo in forceOverscroll description (#27077) 2023-03-31 10:17:36 -05:00
708ccbf808 chore(): sync with main 2023-03-01 11:22:56 -05:00
6dcd98b26a fix(content): fullscreen values are recomputed on visible content (#26847)
resolves #26844
2023-02-22 15:08:04 -05:00
68e8379fb8 chore(): sync with main 2023-02-15 10:17:17 -05:00
7b879fec3d fix(content): fullscreen works when rotating device (#26782)
resolves #26743
2023-02-13 14:59:42 -05: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
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
e3ef932ae1 chore(many): add tech debt tickets and remove unnecessary todos (#26266) 2022-11-14 14:49:08 -06:00
e750e33616 fix(refresher): refresher is visible with multiple custom scroll targets (#25750)
Resolves #25495
2022-08-15 14:58:38 -04:00
48a3794c16 docs(content): set scrollEvents to true to listen to scroll events (#25314)
Resolves #25308
2022-05-18 22:20:24 -04:00
5676bab316 lint(eslint): migrate to eslint and prettier (#25046) 2022-04-04 11:12:53 -04:00
2ac9105796 fix(ios): swipe to go back now works in rtl mode (#24866)
resolves #19488
2022-03-07 08:59:21 -05:00
c9f7909d62 chore(): sync with main 2021-12-13 11:31:44 -05:00
1bfac52331 perf(content): remove global click listener to improve interaction performance (#24360)
resolves #24359
2021-12-10 10:34:44 -05:00
e4056f7945 chore(): sync with main 2021-12-07 14:57:29 -05:00
f6a00ea954 fix(popover): handle scrolling in content so header can be sticky (#24294) 2021-12-06 10:45:37 -06:00
36a096c9b6 fix(content): ensure scrollEl is always available in scroll methods (#24255) 2021-11-24 08:40:36 -06:00
7d47c91641 chore(): sync next with main branch 2021-05-26 10:14:38 -04:00
dc430af906 fix(all): reflect color property as an attribute for vue (#23345)
resolves #23323
2021-05-21 19:26:53 -04:00
aede8e686f chore(): resolve merge conflicts 2021-04-23 11:41:46 -04:00
2d07d8216a fix(content): change main child element to div when parent is menu (#23160)
* fix(content): change main child element to div when parent is menu

* fix(content): change main child element to div when parent is menu, popover, or modal

Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>

* fix(content): make closest element detector unreactive

Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
2021-04-12 09:22:24 -04:00
6f2cbe6e59 breaking(config): remove experimentalTransitionShadow config option (#22797) 2021-01-20 14:02:56 -05:00
753fd2f910 chore(colorClass): update createColorClasses() for ts4 (#21896)
Change the createColorClasses() fn so the returned type and jsx class property work well with typescript 4
2020-08-10 09:18:41 -05:00
578ab93d29 feat(content): add parts support for background, scroll (#20929) 2020-04-27 16:01:39 -04:00
8680c2e83b fix(content): apply --offset-top and --offset-bottom values correctly (#20790)
fixes #20735
2020-03-24 15:44:56 -04:00
976e68da5b refactor(): minor updates for next stencil version (#20787) 2020-03-24 11:59:07 -04:00
fd1b44a40b fix(content): only emit scroll events if enabled (#20401) 2020-02-07 11:53:11 -05:00
09bef71ccd fix(content): resolve height inheritance issues (#20309)
fixes #20305
2020-01-27 13:00:10 -05:00
04e7c03132 feat(refresher): add iOS native refresher (#20037)
fixes #18664
2019-12-18 10:52:58 -05:00
df1bc1e627 refactor(gesture): update Gesture API to latest (#19671) 2019-10-17 14:18:39 -04:00
bb32cea5c9 fix(content): set overscroll only on iOS (#19470)
fixes #19465
2019-10-08 13:01:38 -04:00
48a27636c7 fix(all): component reusage (#18963)
Use new stencil APIs to allow ionic elements to be reused once removed from the DOM.

fixes #18843
fixes #17344
fixes #16453
fixes #15879
fixes #15788
fixes #15484
fixes #17890
fixes #16364
2019-08-27 16:29:37 +02:00
a5d3c6bcd2 fix(transition): enable ios transition shadow by default (#19051) 2019-08-08 12:30:02 -05:00
a869ca0bba (fix): define top-level ARIA landmark regions to improve accessibility (#18672)
references #18671
2019-07-24 17:35:50 -04:00
9b075ef529 feat(transition): iOS page transition shadow (#18695)
Closes #18661
2019-07-18 14:50:56 -05:00
03c1d19e07 perf(all): minify better by using arrow functions (#18730) 2019-07-10 10:33:33 -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
b40f7d36d5 fix(): update to Stencil One 🎉🎊 2019-06-19 21:33:50 +02:00
464ec3b70a docs(components): update method and parameter descriptions (#18075) 2019-04-23 12:59:25 -04:00
e5c8c10029 fix(components): include mode classes on components for use in shadow (#17838)
- removes mode-less component classes from the internal CSS, use element instead
- adds mode specific classes `md` or `ios` for styling inside of shadow components
- adds e2e test that verifies mode classes exist on all ionic components, plus checks for specific classes that the components need for internal styling

fixes #17608
2019-04-16 17:28:21 -04:00
29f1500e5a docs(): Add documentation for slots (#17441)
* add button slot

* add component slot docs

* update content default slot description

* run npm build

* fix typos

* update md files

* docs(slots): update slot components and the build files

* chore(stencil): updates stencil to build readmes

* chore(build): update the swiper bundle file to match master

* update default slot doc wording

* revert changes

* Revert "update default slot doc wording"

This reverts commit e18401491ede10bb1ee095601d1a0c703721df62.

merge

* docs(slots): update default slot doc wording
2019-02-12 15:51:01 -05:00
5cb7f68ee2 fix(content): tap-click deadlock (#17170)
fixes #17138
fixes #16863
fixes #16191
fixes #16911
2019-01-18 18:53:35 +01:00
d3b866b290 refactor(all): remove ionChange in non-inputs (#17101)
fixes #17071
2019-01-14 21:43:24 +01:00
a72fced6fe fix(all): docs for all missing props 2018-10-11 16:24:08 -05:00