From 8d26296248a5fa0e4546b29f1899b6b2c06ed852 Mon Sep 17 00:00:00 2001 From: ogerly Date: Fri, 11 Jun 2021 20:02:52 +0200 Subject: [PATCH] remove base-input, validation from bootstrap --- frontend/src/components/BaseButton.vue | 75 ---------------- frontend/src/components/index.js | 3 - frontend/src/plugins/dashboard-plugin.js | 26 +++--- frontend/src/plugins/globalComponents.js | 3 - frontend/src/views/Pages/Login.vue | 105 ++++++++++++++++------- frontend/test/testSetup.js | 44 ++++++++++ 6 files changed, 133 insertions(+), 123 deletions(-) delete mode 100644 frontend/src/components/BaseButton.vue create mode 100644 frontend/test/testSetup.js diff --git a/frontend/src/components/BaseButton.vue b/frontend/src/components/BaseButton.vue deleted file mode 100644 index 009add59b..000000000 --- a/frontend/src/components/BaseButton.vue +++ /dev/null @@ -1,75 +0,0 @@ - - - diff --git a/frontend/src/components/index.js b/frontend/src/components/index.js index 2eb0be846..6e3e3f01c 100755 --- a/frontend/src/components/index.js +++ b/frontend/src/components/index.js @@ -1,6 +1,5 @@ import BaseInput from './Inputs/BaseInput.vue' import Badge from './Badge' -import BaseButton from './BaseButton.vue' import BaseTable from './BaseTable.vue' @@ -15,7 +14,6 @@ import Collapse from './Collapse/Collapse.vue' import CollapseItem from './Collapse/CollapseItem.vue' import BaseSlider from './BaseSlider.vue' - import SidebarPlugin from './SidebarPlugin' export { @@ -30,7 +28,6 @@ export { TabPane, Tabs, BaseSlider, - BaseButton, Collapse, CollapseItem, } diff --git a/frontend/src/plugins/dashboard-plugin.js b/frontend/src/plugins/dashboard-plugin.js index b7c0ea06c..211b02895 100755 --- a/frontend/src/plugins/dashboard-plugin.js +++ b/frontend/src/plugins/dashboard-plugin.js @@ -3,7 +3,7 @@ import '@/polyfills' // Notifications plugin. Used on Notifications page import Notifications from '@/components/NotificationPlugin' // Validation plugin used to validate forms -import { configure, extend } from 'vee-validate' +import { /* configure, */ extend, localize } from 'vee-validate' // A plugin file where you could register global components used across the app import GlobalComponents from './globalComponents' // A plugin file where you could register global directives @@ -11,14 +11,11 @@ import GlobalDirectives from './globalDirectives' // Sidebar on the right. Used as a local plugin in DashboardLayout.vue import SideBar from '@/components/SidebarPlugin' -// vue-bootstrap -import { BootstrapVue, IconsPlugin } from 'bootstrap-vue' - // asset imports import '@/assets/scss/argon.scss' import '@/assets/vendor/nucleo/css/nucleo.css' import * as rules from 'vee-validate/dist/rules' -import { messages } from 'vee-validate/dist/locale/en.json' +import en, { messages } from 'vee-validate/dist/locale/en.json' import VueQrcodeReader from 'vue-qrcode-reader' import VueQrcode from 'vue-qrcode' @@ -35,6 +32,11 @@ import Loading from 'vue-loading-overlay' // import the styles import 'vue-loading-overlay/dist/vue-loading.css' +// vue-bootstrap +import { BootstrapVue, IconsPlugin } from 'bootstrap-vue' + +localize('en', en) + Object.keys(rules).forEach((rule) => { extend(rule, { ...rules[rule], // copies rule configuration @@ -55,12 +57,12 @@ export default { Vue.use(VueQrcode) Vue.use(VueFlatPickr) Vue.use(Loading) - configure({ - classes: { - valid: 'is-valid', - invalid: 'is-invalid', - dirty: ['is-dirty', 'is-dirty'], // multiple classes per flag! - }, - }) + // configure({ + // classes: { + // valid: 'is-valid', + // invalid: 'is-invalid', + // dirty: ['is-dirty', 'is-dirty'], // multiple classes per flag! + // }, + // }) }, } diff --git a/frontend/src/plugins/globalComponents.js b/frontend/src/plugins/globalComponents.js index 06bf20ae6..bea56050b 100755 --- a/frontend/src/plugins/globalComponents.js +++ b/frontend/src/plugins/globalComponents.js @@ -1,16 +1,13 @@ import BaseInput from '@/components/Inputs/BaseInput.vue' import Card from '@/components/Cards/Card.vue' import StatsCard from '@/components/Cards/StatsCard.vue' -import BaseButton from '@/components/BaseButton.vue' import Badge from '@/components/Badge.vue' import BaseNav from '@/components/Navbar/BaseNav' import { ValidationProvider, ValidationObserver } from 'vee-validate' - const GlobalComponents = { install(Vue) { Vue.component(Badge.name, Badge) - Vue.component(BaseButton.name, BaseButton) Vue.component(BaseInput.name, BaseInput) Vue.component(BaseNav.name, BaseNav) Vue.component(Card.name, Card) diff --git a/frontend/src/views/Pages/Login.vue b/frontend/src/views/Pages/Login.vue index a6d795bb1..ce9d8d247 100755 --- a/frontend/src/views/Pages/Login.vue +++ b/frontend/src/views/Pages/Login.vue @@ -22,34 +22,68 @@
{{ $t('login') }}
- - - + + + v-slot="validationContext" + > + + - - + + {{ validationContext.errors[0] }} + + + - - - - - - + + + + + + + + + + + + + {{ validationContext.errors[0] }} + + + @@ -62,12 +96,9 @@ - - -
- - {{ $t('site.login.signin') }} - +
+ {{ $t('form.reset')}} + {{ $t('form.save')}}
@@ -109,6 +140,20 @@ export default { } }, methods: { + getValidationState({ dirty, validated, valid = null }) { + return dirty || validated ? valid : null + }, + resetForm() { + this.model = { + email: null, + password: null, + } + + this.$nextTick(() => { + this.$refs.observer.reset() + }) + }, + togglePasswordVisibility() { this.passwordVisible = !this.passwordVisible }, diff --git a/frontend/test/testSetup.js b/frontend/test/testSetup.js new file mode 100644 index 000000000..fb3ff5542 --- /dev/null +++ b/frontend/test/testSetup.js @@ -0,0 +1,44 @@ +import { createLocalVue } from '@vue/test-utils' +import { BootstrapVue, IconsPlugin } from 'bootstrap-vue' +import Vuex from 'vuex' +import { ValidationProvider, ValidationObserver, extend } from 'vee-validate' +import * as rules from 'vee-validate/dist/rules' + +import { messages } from 'vee-validate/dist/locale/en.json' +import BaseInput from '@/components/Inputs/BaseInput.vue' +import RegeneratorRuntime from 'regenerator-runtime' +import Notifications from '@/components/NotificationPlugin' +import SideBar from '@/components/SidebarPlugin' +import VueRouter from 'vue-router' +import VueQrcode from 'vue-qrcode' +import StatsCard from '@/components/Cards/StatsCard.vue' + +import VueMoment from 'vue-moment' + +import clickOutside from '@/directives/click-ouside.js' +import { focus } from 'vue-focus' + +global.localVue = createLocalVue() + +Object.keys(rules).forEach((rule) => { + extend(rule, { + ...rules[rule], // copies rule configuration + message: messages[rule], // assign message + }) +}) + +global.localVue.use(BootstrapVue) +global.localVue.use(Vuex) +global.localVue.use(IconsPlugin) +global.localVue.use(RegeneratorRuntime) +global.localVue.use(Notifications) +global.localVue.use(SideBar) +global.localVue.use(VueRouter) +global.localVue.use(VueQrcode) +global.localVue.use(VueMoment) +global.localVue.component(BaseInput.name, BaseInput) +global.localVue.component('validation-provider', ValidationProvider) +global.localVue.component('validation-observer', ValidationObserver) +global.localVue.component(StatsCard.name, StatsCard) +global.localVue.directive('click-outside', clickOutside) +global.localVue.directive('focus', focus)