vue-class-component, vue-property-decorator, vuex-class don't support Vue 3 yet
If I remember correctly, we chose to use these libraries because it improved Typescript support with Vue 2. Vue 3 has much better Typescript support out of the box.
After 2 years working on this project, I can say that using a non-official way of declaring components was mostly frustrating. Using classes felt more natural at the beginning, but it turns out that using a different API than 100% of documentation out there means you always have to translate in your head. It's not great.
I would propose to get rid of these libraries and to switch back to the official way to define components. It will cause a bit of work now, but I'm sure it will simplify maintenance in the long run.
[UPDATE] Turns out this is is harder than I anticipated. The official defineCustomElement function of Vue 3 doesn't behave like vue-custom-element:
It adds a shadow DOM, which doesn't let global styles pass through
It doesn't link the component with the current app instance... so it doesn't have access to plugins (this is mostly an issue with Oruga, our UI-components library)
Some notes about libraries before upgrading:
Buefy will not support Vue 3
Proposed solution: switch to Oruga https://github.com/zazuko/cube-creator/pull/1120
vue-class-component, vue-property-decorator, vuex-class don't support Vue 3 yet
If I remember correctly, we chose to use these libraries because it improved Typescript support with Vue 2. Vue 3 has much better Typescript support out of the box.
After 2 years working on this project, I can say that using a non-official way of declaring components was mostly frustrating. Using classes felt more natural at the beginning, but it turns out that using a different API than 100% of documentation out there means you always have to translate in your head. It's not great.
I would propose to get rid of these libraries and to switch back to the official way to define components. It will cause a bit of work now, but I'm sure it will simplify maintenance in the long run.
https://github.com/zazuko/cube-creator/pull/1123
vue-color, vue-markdown and vuex-oidc
Vue 3 support is uncertain for these libraries. We'll need to check and potentially find alternatives.
(I read somewhere in an issue comment that vuex-oidc works with Vue3)
vuex, vue-router and vue-select have a Vue 3 version
We'll need to upgrade/migrate.
vue-custom-element
I don't think it supports Vue 3. But there is now official support for custom elements. We'll need to migrate.
[UPDATE] Turns out this is is harder than I anticipated. The official
defineCustomElement
function of Vue 3 doesn't behave likevue-custom-element
: