diff --git a/admin/package.json b/admin/package.json index 96015e1c0..0288f725b 100644 --- a/admin/package.json +++ b/admin/package.json @@ -23,7 +23,9 @@ "@babel/core": "^7.15.8", "@babel/node": "^7.15.8", "@babel/preset-env": "^7.15.8", - "@vue/cli-plugin-unit-jest": "^4.5.14", + "@vue/apollo-option": "^4.0.0", + "@vue/cli-plugin-unit-jest": "~5.0.8", + "@vue/compat": "3.4.31", "@vue/eslint-config-prettier": "^6.0.0", "@vue/test-utils": "^1.2.2", "apollo-boost": "^0.4.9", @@ -32,8 +34,8 @@ "babel-plugin-component": "^1.1.1", "babel-preset-env": "^1.7.0", "babel-preset-vue": "^2.0.2", - "bootstrap": "4.3.1", - "bootstrap-vue": "^2.21.2", + "bootstrap": "^5.3.3", + "bootstrap-vue-next": "^0.23.2", "core-js": "^3.6.5", "date-fns": "^2.29.3", "dotenv-webpack": "^7.0.3", @@ -43,25 +45,26 @@ "jest": "26.6.3", "jest-canvas-mock": "^2.3.1", "jest-environment-jsdom-sixteen": "^2.0.0", - "portal-vue": "^2.1.7", + "portal-vue": "3.0.0", "qrcanvas-vue": "2.1.1", "regenerator-runtime": "^0.13.9", "stats-webpack-plugin": "^0.7.0", - "vue": "^2.6.11", - "vue-apollo": "^3.0.8", - "vue-i18n": "^8.26.5", - "vue-jest": "^3.0.7", - "vue-router": "^3.5.3", - "vuex": "^3.6.2", - "vuex-persistedstate": "^4.1.0" + "vue": "3.4.31", + "vue-apollo": "3.1.2", + "vue-i18n": "9.13.1", + "vue-jest": "3.0.7", + "vue-router": "4.4.0", + "vuex": "4.1.0", + "vuex-persistedstate": "4.1.0" }, "devDependencies": { - "@apollo/client": "^3.7.1", + "@apollo/client": "^3.10.8", "@babel/eslint-parser": "^7.15.8", "@intlify/eslint-plugin-vue-i18n": "^1.4.0", - "@vue/cli-plugin-babel": "~4.5.0", - "@vue/cli-plugin-eslint": "~4.5.0", - "@vue/cli-service": "~4.5.0", + "@vue/cli-plugin-babel": "~5.0.8", + "@vue/cli-plugin-eslint": "~5.0.8", + "@vue/cli-service": "~5.0.8", + "@vue/compiler-sfc": "3.4.31", "babel-eslint": "^10.1.0", "babel-plugin-transform-require-context": "^0.1.1", "cross-env": "^7.0.3", @@ -75,6 +78,7 @@ "eslint-plugin-prettier": "3.3.1", "eslint-plugin-promise": "^5.1.1", "eslint-plugin-vue": "^7.20.0", + "jest": "^27.1.0", "mock-apollo-client": "^1.2.1", "postcss": "^8.4.8", "postcss-html": "^1.3.0", @@ -82,8 +86,8 @@ "stylelint": "^14.5.3", "stylelint-config-recommended-vue": "^1.3.0", "stylelint-config-standard-scss": "^3.0.0", - "vue-cli-plugin-i18n": "^2.3.1", - "vue-template-compiler": "^2.6.11" + "unplugin-vue-components": "^0.27.2", + "vue-cli-plugin-i18n": "~2.3.2" }, "browserslist": [ "> 1%", diff --git a/admin/src/components/NavBar.vue b/admin/src/components/NavBar.vue index 4191290f3..3bec6ee68 100644 --- a/admin/src/components/NavBar.vue +++ b/admin/src/components/NavBar.vue @@ -1,41 +1,42 @@ diff --git a/admin/src/i18n.js b/admin/src/i18n.js index b2bb08074..c0e6ffedb 100644 --- a/admin/src/i18n.js +++ b/admin/src/i18n.js @@ -1,7 +1,4 @@ -import Vue from 'vue' -import VueI18n from 'vue-i18n' - -Vue.use(VueI18n) +import { createI18n } from 'vue-i18n' const loadLocaleMessages = () => { const locales = require.context('./locales/', true, /[A-Za-z0-9-_,\s]+\.json$/i) @@ -45,7 +42,7 @@ const numberFormats = { }, } -const dateTimeFormats = { +const datetimeFormats = { en: { short: { year: 'numeric', @@ -96,12 +93,13 @@ const dateTimeFormats = { }, } -const i18n = new VueI18n({ +const i18n = createI18n({ locale: 'en', + legacy: false, fallbackLocale: 'en', messages: loadLocaleMessages(), numberFormats, - dateTimeFormats, + datetimeFormats, }) export default i18n diff --git a/admin/src/main.js b/admin/src/main.js index 6a8b017c5..d9bfebe9e 100644 --- a/admin/src/main.js +++ b/admin/src/main.js @@ -1,5 +1,5 @@ -import Vue from 'vue' -import App from './App' +import { createApp } from 'vue' +import App from './App.vue' // without this async calls are not working import 'regenerator-runtime' @@ -15,32 +15,32 @@ import VueApollo from 'vue-apollo' import PortalVue from 'portal-vue' -import { BootstrapVue, IconsPlugin } from 'bootstrap-vue' +import { createBootstrap } from 'bootstrap-vue-next' + +// Add the necessary CSS import 'bootstrap/dist/css/bootstrap.css' -import 'bootstrap-vue/dist/bootstrap-vue.css' +import 'bootstrap-vue-next/dist/bootstrap-vue-next.css' import { toasters } from './mixins/toaster' import { apolloProvider } from './plugins/apolloProvider' -Vue.use(PortalVue) -Vue.use(BootstrapVue) +const app = createApp(App) -Vue.use(IconsPlugin) +app.use(router) +app.use(store) +app.use(i18n) +app.use(PortalVue) +app.use(createBootstrap()) -Vue.use(VueApollo) +app.use(VueApollo) +app.use(apolloProvider) -Vue.mixin(toasters) +app.mixin(toasters) addNavigationGuards(router, store, apolloProvider.defaultClient, i18n) i18n.locale = store.state.moderator && store.state.moderator.language ? store.state.moderator.language : 'en' -new Vue({ - router, - store, - i18n, - apolloProvider, - render: (h) => h(App), -}).$mount('#app') +app.mount('#app') diff --git a/admin/src/pages/Overview.vue b/admin/src/pages/Overview.vue index f921d2bc3..1e72f6a3b 100644 --- a/admin/src/pages/Overview.vue +++ b/admin/src/pages/Overview.vue @@ -1,6 +1,6 @@