Vue3 migration: introduce compatibilty with @vue/compat for gitlab-ui
`gitlab-ui` as a component library is one of the key dependencies we should make running with Vue3. # :thinking: What does `compatibility` means for us? Migration will definitely be a long and painful process :smile: Our main idea is to try out an approach, when we are keeping single codebase which is compatible with Vue 2 and Vue 3. In this case we could slowly dogfood migration as long as we need that ~~We could drop and re-consider this approach as soon as we realize that efforts required to maintain compatibility are too big~~ We were able to reach significant results with this strategy Steps to take: * [x] https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1638 Upgrade to latest `@vue/test-utils` 1.x as first step (done by @xanf) * [x] Ensure compatibility of `bootstrap-vue` with `@vue/compat` as our main and only Vue-related dependency (except `portal-vue` which has native implementation in Vue 3) :white_check_mark: done in https://github.com/bootstrap-vue/bootstrap-vue/pull/6905 by @xanf * [x] Discover and fix any upstream inconsistencies which could prevent us from migration :white_check_mark: * [x] Make sure we can run our test suite for `@vue/compat` build. https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/3087+ by @xanf * [x] https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1639 Remove `localVue` usage * [x] https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1640 Remove unneeded `wrapper.destroy` calls * [x] Introduce changes which are forward-compatible with Vue 3 to existing `gitlab-ui` codebase (https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1981 by @xanf) * [x] https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1983+ * [x] Make sure storyshots properly works for vue 3 * [x] https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1984+ * [x] requires https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1719+ to be implemented - this will allow us to automatically verify that vue2 and vue3 snapshots in our tests are identical * [x] https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1985+ Known issues: * :white_check_mark: `bootstrap-vue` failed to release Vue 3 support, so it will require additional effort to have it running * implemented this support from scratch in https://github.com/bootstrap-vue/bootstrap-vue/pull/6905 * :white_check_mark: `@vue/test-utils` 1.x heavily rely on internals of Vue 2.x rendering them unusable with `@vue/compat` * added and maintaining support of @vue/compat to `@vue/test-utils` v2 (>50 PRs https://github.com/vuejs/test-utils/pulls?q=is%3Apr+author%3Axanf+) * created [vue-test-utils-compat](https://www.npmjs.com/package/vue-test-utils-compat) package which allows running tests written for `@vue/test-utils` v1 with v2 * :warning: storybook addon (readme) was not updated to Vue3
epic