51 Commits

Author SHA1 Message Date
eb725fce6e fix(vue): update Stencil Vue output target (#30159)
This patch includes some necessary updates for
`@stencil/vue-output-target@v0.9.0`:

- we started to export Stencils helpers as runtime via
`@stencil/vue-output-target/runtime` similar to what we did in React
- this version requires some updates to Vue and TypeScript as well
- adjustments related to that update
2025-01-29 16:31:31 +00:00
5bc439961f fix(vue): tabs and parameterized routes work with latest vue (#28846)
Issue number: resolves #28774

---------

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

There are two issues causing Ionic Vue apps to not behave as intended
with certain versions of Vue:

1. In Vue 3.3 a [breaking change
shipped](https://github.com/vuejs/core/issues/9916) that changes the
default behavior of the `watch` inside of IonRouterOutlet to be a
shallow watcher instead of a deep watcher. This caused the router outlet
to not consistent re-render. While the change was later reverted by the
Vue team, they expressed that the change [may re-land in a future minor
release](https://github.com/vuejs/core/issues/9965#issuecomment-1875067499).
As a result, we will need to account for this inside of Ionic.
2. In Vue 3.2 a [custom elements improvement
shipped](https://github.com/vuejs/core/blob/main/changelogs/CHANGELOG-3.2.md#3238-2022-08-30)
that changed how custom elements are referred to in VNodes.

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

- The affected `watch` call now is now explicitly a deep watcher. This
change is backwards compatible as well as forward compatible with
upcoming Vue changes.
- Updated IonTabs to account for the new VNode behavior for custom
elements. Ionic still supports version of Vue that do not have this
improvement, so we need to account for both behaviors for now. I also
added a tech debt ticket to remove the old checks when we drop support
for older versions of Vue.
- Updated E2E test dependencies. During this update some of our tests
needed to be updated to account for newer versions of Vue/Vitest.
Overall I was able to simplify a lot of our tests as a result.

I plan to add renovatebot to these E2E test apps, but I will handle that
in a separate PR.

## 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.
  4. Update the BREAKING.md file with the breaking change.
5. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/.github/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: `7.6.6-dev.11705526292.1bc0acb5`

Note: Both of the issues cause tests to fail when using the latest
dependencies in the Vue E2E test app. However, I need to use the latest
dependencies so I can demonstrate that my changes do fix the reported
issues. As a result, I have both fixes in the same PR.
2024-01-19 21:29:56 +00:00
e8fb9e7328 chore(): sync with main 2023-01-23 13:38:16 -05:00
dc27736bd5 chore(vue): add eslint and prettier (#26635) 2023-01-18 18:29:25 -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
c149b42d0b Merge remote-tracking branch 'origin/main' into sync-7-11-15-22 2022-11-15 15:40:21 -05:00
e3ef932ae1 chore(many): add tech debt tickets and remove unnecessary todos (#26266) 2022-11-14 14:49:08 -06:00
30e3a1485d perf(many): reduce delay when performing overlay or page transitions (#26189)
resolves #24346
2022-11-01 13:08:27 -04:00
d60973b244 fix(vue): routing components define child components (#26107) 2022-10-13 13:35:15 -04:00
2d3661ae38 fix(vue): custom animation plays when replacing (#25863)
resolves #25831
2022-09-06 09:07:33 -04:00
30200051bb fix(vue): lifecycles now fire on tabs pages (#25786)
resolves #25784
2022-08-23 13:17:45 -04:00
cbaa9711f0 fix(vue): adding class to IonPage no longer hides component (#25490) 2022-06-21 12:42:50 -04:00
5e23fb1ce4 fix(vue): correct views are now unmounted in tabs (#25270)
resolves #25255
2022-05-18 10:10:02 -04:00
6d7b1444b6 fix(vue): going back to a tabs outlet no loger causes classList error (#24665)
resolves #24654
2022-01-27 14:37:35 -05:00
bf8e436ee3 fix(vue): tabs no longer get unmounted when navigating back to a tabs context (#24337)
resolves #24332

Co-authored-by: Liam DeBeasi <liamdebeasi@icloud.com>
2021-12-15 09:50:00 -05:00
7ab50dda83 chore(): sync with main 2021-10-22 15:24:34 -04:00
24659a527a fix(vue): mount correct views when navigating (#24056)
resolves #23914
2021-10-14 11:28:36 -04:00
b211cf0236 chore(): sync with main for beta 5 release 2021-09-01 10:14:58 -04:00
3c442228ff fix(vue): router guards are now fired correctly when written in a component (#23821)
resolves #23820
2021-08-26 10:40:48 -04:00
4c06814494 chore(): resolve merge conflict in vue 2021-08-18 09:43:32 -04:00
c8cbe9c1f3 chore(): sync with main for beta 4 2021-08-18 09:42:03 -04:00
621f4faa1a fix(vue): using router.go now shows correct view (#23773)
resolves #22563
2021-08-17 08:53:55 -04:00
fffef8acd2 chore(): sync with main
chore(): sync with main
2021-07-23 11:27:33 -04:00
fb260a9e09 fix(vue): improve accuracy of ion-page dev warning (#23677)
resolves #23675
2021-07-23 09:42:06 -04:00
d749d583e7 chore(): sync with main 2021-07-20 12:50:52 -04:00
3cebcb0883 chore(): warn if developer forgot to use ionpage component in view (#23625) 2021-07-14 08:59:31 -04:00
dc48a9f1a2 feat(vue): add custom elements bundle (#23458) 2021-06-17 14:10:50 -04:00
aede8e686f chore(): resolve merge conflicts 2021-04-23 11:41:46 -04:00
35c8802c22 fix(vue): update props when navigating to new parameterized route (#23189) 2021-04-15 12:37:50 -04:00
75458ac7fb refactor(vue): remove support for child routes nested inside of tabs (#22919)
BREAKING CHANGE: Support for child routes nested inside of tabs has been removed to better conform to Vue Router's best practices. Additional routes should be written as sibling routes with the parent tab as the path prefix.
2021-02-12 14:43:29 -05:00
2a3ce9a74e fix(vue): improve path matching with tabs (#22807)
resolves #22519
2021-01-22 10:19:38 -05:00
e3a05bfeb5 fix(vue): correctly determine leaving view when transitioning to a new instance of a previous page (#22655)
resolves #22654 resolves #22658
2020-12-16 16:45:28 -05:00
01afdc42e5 fix(vue): pass in correct route to props function (#22605)
resolves #22602
2020-12-07 10:33:22 -05:00
4f4f31b65e fix(vue): correctly remove old view when replacing route (#22566)
resolves #22492
2020-11-30 11:00:14 -05:00
9d04c127e8 fix(vue): swipe back gesture is properly disabled when swipeBackEnabled config is false (#22568)
resolves #22567
2020-11-30 10:59:00 -05:00
8002114e72 fix(vue): onBeforeRouteLeave and onBeforeRouteUpdate hooks now fire properly (#22542)
resolves #22540
2020-11-23 10:22:03 -05:00
0956f8bc55 fix(vue): correctly pass route props to components (#22476)
resolves #22472
2020-11-11 12:12:12 -05:00
f5b0299729 feat(vue): composition api lifecycle methods (#22241) 2020-11-10 09:14:24 -05:00
6fad0fe428 fix(vue): improve handling of parameterized urls (#22360)
resolves #22359
2020-10-22 11:37:17 -04:00
bcef804dea fix(vue): lifecycle events are correctly fired in component context (#22348)
resolves #22338
2020-10-21 11:22:52 -04:00
c5ab562eaa fix(vue): ion-page component is properly shown with HMR (#22319) 2020-10-14 18:45:46 -04:00
b06ae16591 fix(vue): improve path matching when going back (#22275)
resolves #22258
2020-10-13 16:04:55 -04:00
52f655c9d4 fix(vue): pages now render in correct outlet when using multiple nested outlets (#22301)
resolves #22286
2020-10-13 14:22:51 -04:00
fff82d0bdc fix(vue): do not hide page content when using ion-page in non-routing contexts (#22302)
resolves #22300
2020-10-13 10:29:37 -04:00
c74fd4147b fix(vue): improve swipe to go back reliability (#22288)
resolves #22237
2020-10-12 11:32:28 -04:00
39d2530427 fix(vue): correctly show ion-back-button when going back (#22260)
resolves #22217
2020-10-07 14:58:41 -04:00
2bad1bb82e fix(vue): hide layout shift on ion-page components (#22254)
resolves #22052
2020-10-06 15:00:48 -04:00
6849dd3483 fix(vue): correctly handle query params (#22253)
resolves #22229
2020-10-06 14:12:40 -04:00
7e449a1ca6 fix(vue): correctly render child pages in tabs (#22141) 2020-09-22 14:41:26 -04:00
6ac6810148 fix(vue): pushing a non-tabs page inside of tabs no longer renders it inside of the tabs outlet (#22112)
resolves #22066
2020-09-22 11:55:22 -04:00