diff --git a/src/package.json b/src/package.json index 53fb5bca..fafca483 100644 --- a/src/package.json +++ b/src/package.json @@ -1,29 +1,34 @@ { "private": true, "scripts": { "dev": "npm run development", "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", "watch": "npm run development -- --watch", "watch-poll": "npm run watch -- --watch-poll", "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", "prod": "npm run production", - "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" + "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", + "lint": "eslint --ext .js,.vue resources && stylelint \"resources/sass/*.scss\" \"resources/vue/components/*.vue\"" }, "devDependencies": { + "@deveodk/vue-toastr": "^1.1.0", "axios": "^0.19", "bootstrap": "^4.3.1", "cross-env": "^5.1", + "eslint": "^6.8.0", + "eslint-plugin-vue": "^6.1.1", "jquery": "^3.4.1", "laravel-mix": "^4.0.7", "lodash": "^4.17.13", "popper.js": "^1.12", "resolve-url-loader": "^2.3.1", "sass": "^1.15.2", "sass-loader": "^7.1.0", + "stylelint": "^12.0.1", + "stylelint-config-standard": "^19.0.0", "vue": "^2.5.17", "vue-router": "^3.1.3", "vue-template-compiler": "^2.6.10", - "vuex": "^3.1.1", - "@deveodk/vue-toastr": "^1.1.0" + "vuex": "^3.1.1" } } diff --git a/src/resources/js/app.js b/src/resources/js/app.js index 226f6ff5..732780a2 100644 --- a/src/resources/js/app.js +++ b/src/resources/js/app.js @@ -1,85 +1,85 @@ /** * First we will load all of this project's JavaScript dependencies which * includes Vue and other libraries. It is a great starting point when * building robust, powerful web applications using Vue and Laravel. */ require('./bootstrap') window.Vue = require('vue') import AppComponent from '../vue/components/App' import MenuComponent from '../vue/components/Menu' import router from '../vue/js/routes.js' import VueToastr from '@deveodk/vue-toastr' // Add a response interceptor for general/validation error handler // This have to be before Vue and Router setup. Otherwise we would // not be able to handle axios responses initiated from inside // components created/mounted handlers (e.g. signup code verification link) window.axios.interceptors.response.use( response => { // Do nothing return response }, error => { var error_msg if (error.response && error.response.status == 422) { error_msg = "Form validation error" $.each(error.response.data.errors || {}, (idx, msg) => { $('form').each((i, form) => { const input_name = ($(form).data('validation-prefix') || '') + idx const input = $('#' + input_name) if (input.length) { input.addClass('is-invalid') .parent().append($('
') .text($.type(msg) === 'string' ? msg : msg.join('
'))) return false } }); }) $('form .is-invalid').first().focus() } else if (error.response && error.response.data) { error_msg = error.response.data.message } else { error_msg = error.request ? error.request.statusText : error.message } app.$toastr('error', error_msg || "Server Error", 'Error') // Pass the error as-is return Promise.reject(error) } ) const app = new Vue({ el: '#app', components: { 'app-component': AppComponent, 'menu-component': MenuComponent }, router, + mounted() { + this.$root.$on('clearFormValidation', (form) => { + this.clearFormValidation(form) + }) + }, methods: { clearFormValidation: form => { $(form).find('.is-invalid').removeClass('is-invalid') $(form).find('.invalid-feedback').remove() } - }, - mounted() { - this.$root.$on('clearFormValidation', (form) => { - this.clearFormValidation(form) - }) } }) Vue.use(VueToastr, { defaultPosition: 'toast-bottom-right', defaultTimeout: 50000 }) diff --git a/src/resources/sass/menu.scss b/src/resources/sass/menu.scss index 10318fa5..8f8b7a61 100644 --- a/src/resources/sass/menu.scss +++ b/src/resources/sass/menu.scss @@ -1,85 +1,84 @@ #primary-menu { - background-color: #F6F5F3; + background-color: #f6f5f3; padding: 0; line-height: 85px; .navbar-brand { padding: 0; > img { display: inline; vertical-align: middle; } } .nav-link { color: #202020; line-height: 85px; padding: 0 0 0 25px; background: transparent; &:focus { text-decoration: underline; outline: 0; } - &:hover, &:hover { - color: #F1A539; + color: #f1a539; text-decoration: underline; } &.active:not(.menulogin) { font-weight: bold; } } } @include media-breakpoint-up(lg) { #primary-menu { a.menulogin { text-transform: uppercase; - border: 2px solid #F1A539; + border: 2px solid #f1a539; border-radius: 21px; line-height: 21px; letter-spacing: 1px; padding: 6px 34px; margin: 25px 0 25px 25px; &:focus, &:hover { text-decoration: none; - background-color: #F1A539; + background-color: #f1a539; color: #fff; font-weight: normal; } } } } @include media-breakpoint-down(md) { #primary-menu { .navbar-nav { - padding-bottom: 1em + padding-bottom: 1em; } .nav-link { line-height: 45px; padding: 0; } } } @include media-breakpoint-down(sm) { #primary-menu { padding: 0 1em; } } @media (max-width: 340px) { #primary-menu { .navbar-brand img { width: 160px; } } } diff --git a/src/resources/vue/components/Login.vue b/src/resources/vue/components/Login.vue index 358dd24e..56e693fa 100644 --- a/src/resources/vue/components/Login.vue +++ b/src/resources/vue/components/Login.vue @@ -1,81 +1,86 @@ diff --git a/src/resources/vue/components/Logout.vue b/src/resources/vue/components/Logout.vue index f7dcde90..2699dd5e 100644 --- a/src/resources/vue/components/Logout.vue +++ b/src/resources/vue/components/Logout.vue @@ -1,14 +1,10 @@ - - diff --git a/src/resources/vue/components/PasswordReset.vue b/src/resources/vue/components/PasswordReset.vue index 156c079e..03537de7 100644 --- a/src/resources/vue/components/PasswordReset.vue +++ b/src/resources/vue/components/PasswordReset.vue @@ -1,161 +1,161 @@ diff --git a/src/resources/vue/components/Signup.vue b/src/resources/vue/components/Signup.vue index 1aba7e8c..70ace083 100644 --- a/src/resources/vue/components/Signup.vue +++ b/src/resources/vue/components/Signup.vue @@ -1,183 +1,183 @@