-
Couldn't load subscription status.
- Fork 1.1k
Vue3? #20787
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Vue3? #20787
Conversation
|
Very exciting stuff - thank you so much! Would you be okay if I wrote a wrapper Vue test mount that would allow us to use either of these patterns based on what version is available? I feel like we can start migrating all the tests without the upgrade that way. We an use the new paradigms now and it would simplify this branch a lot of getting using paradigms that will reduce conflicts in the future. Also I think the upgrade of prettier in the middle there seems like it is a causing a lot of unrelated changes. Is it possible we can pull that out and apply to our current codebase or that we can remove it and apply it after the Vue 3 migration is done? |
Update render functions in provider and content components to use Vue 3 compatible slot syntax. This fixes the runtime error '(destructured parameter) is undefined' by properly checking and calling slot functions.
Add error handling and cleaner slot function calls to diagnose and prevent runtime errors
Simplify slot handling to use the Vue 3 unified slots API where this.$slots.default is always a function that returns VNodes. This should work correctly with @vue/compat.
template tries to attach event modifiers (like .stop) to handler functions that are sometimes undefined
- Convert SimpleProviderMixin to useSimpleProvider composable - Migrate all store providers (DbKey, Datatypes, etc.) to setup() - Update SingleQueryProvider factory to return setup-based components - Convert DebouncedInput with proper RxJS subscription cleanup - Keep backward compatibility with SimpleProviderMixin temporarily - Add proper emits declarations and cleanup lifecycle hooks
- Remove unused 'computed' import from storeProviders.js - Remove unused 'update' function and 'exposed' variable from SingleQueryProvider.js
Use toRaw() to unwrap reactive proxy objects before sending to web worker
Add deepToRaw helper to totally unwrap proxies before sending to web worker. This should still be reactive, since it's sent on query.
- Add 'as any' casting for findComponent() calls to fix TypeScript errors - Use await with vm.$emit() for consistency - These changes are necessary for TypeScript compilation with Vue Test Utils v2
The test migration is still a giant pain, there are warnings, but the app builds, runs, and much of it does work. Very obviously still a work in progress, but I'm making this into a PR for at least a little more visibility, hoping to reduce conflicts and recruit folks to help test manually, fix tests, etc.
I will try to keep this rebased frequently so the branch doesn't slip away into the darkness yet again. (and, I rebased yesterday and it's already got 6 conflicted files)
Also, I have separated this from the vite branch as that actually (somewhat unexpectedly) had evenmore blockers than this one did. We still want to swap over, but we can push this one first at this point. The previous perceived dependency on the vite migration was primarily typescript errors we have for the most part now addressed in the build.
Unit test status (~10% failing, which is still a lot.)

Notes:
How to test the changes?
(Select all options that apply)
License