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)