{"version":3,"sources":["webpack:///./src/components/ui/AppModal.vue","webpack:///src/components/ui/AppModal.vue","webpack:///./src/components/ui/AppModal.vue?199a","webpack:///./src/components/ui/AppModal.vue?15d3","webpack:///./src/components/ui/AppAlert.vue?9bd2","webpack:///./src/views/role-view/index.vue?b397","webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./src/views/user-view/index.vue?9d23","webpack:///./src/components/ui/AppModal.vue?aa50","webpack:///./src/components/ui/FloatingField.vue?7b24","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./src/components/ui/AppPager.vue?c5ef","webpack:///./src/components/ui/FloatingField.vue","webpack:///src/components/ui/FloatingField.vue","webpack:///./src/components/ui/FloatingField.vue?c115","webpack:///./src/components/ui/FloatingField.vue?bd45","webpack:///./src/components/ui/AppPager.vue","webpack:///src/components/ui/AppPager.vue","webpack:///./src/components/ui/AppPager.vue?33f4","webpack:///./src/components/ui/AppPager.vue?877a","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./src/views/role-view/index.vue","webpack:///./src/components/role/RoleList.vue","webpack:///src/components/role/RoleList.vue","webpack:///./src/components/role/RoleList.vue?4c08","webpack:///./src/components/role/RoleList.vue?48ea","webpack:///src/views/role-view/index.vue","webpack:///./src/views/role-view/index.vue?6310","webpack:///./src/views/role-view/index.vue?29ce","webpack:///./src/components/ui/AppAlert.vue","webpack:///src/components/ui/AppAlert.vue","webpack:///./src/components/ui/AppAlert.vue?e63b","webpack:///./src/components/ui/AppAlert.vue?7e53","webpack:///./src/components/ui/EmployeeAutocomplete.vue?c4a1","webpack:///./src/components/role/RoleList.vue?7608","webpack:///./src/mixins/AlertMixin.vue","webpack:///src/mixins/AlertMixin.vue","webpack:///./src/mixins/AlertMixin.vue?4644","webpack:///./src/mixins/ErrorMixin.vue","webpack:///src/mixins/ErrorMixin.vue","webpack:///./src/mixins/ErrorMixin.vue?8530","webpack:///./src/views/user-view/index.vue","webpack:///./src/components/ui/EmployeeAutocomplete.vue","webpack:///src/components/ui/EmployeeAutocomplete.vue","webpack:///./src/components/ui/EmployeeAutocomplete.vue?02c6","webpack:///./src/components/ui/EmployeeAutocomplete.vue?ce6d","webpack:///./src/components/user/UserList.vue","webpack:///src/components/user/UserList.vue","webpack:///./src/components/user/UserList.vue?7bf1","webpack:///./src/components/user/UserList.vue?39ad","webpack:///src/views/user-view/index.vue","webpack:///./src/views/user-view/index.vue?c19c","webpack:///./src/views/user-view/index.vue?de68","webpack:///./src/filters/enum/index.js","webpack:///./src/components/user/UserList.vue?ee9d","webpack:///./src/components/ui/DataTable.vue","webpack:///src/components/ui/DataTable.vue","webpack:///./src/components/ui/DataTable.vue?e336","webpack:///./src/components/ui/DataTable.vue?d365"],"names":["render","_vm","this","_c","_self","attrs","directives","name","rawName","value","show","expression","staticClass","on","staticClose","_t","title","_v","_s","_e","staticRenderFns","props","type","Boolean","required","default","closeOnEscape","static","String","inject","methods","close","eventBus","$emit","CLOSE_MODAL_EVENT","evt","target","$el","mounted","_this","document","addEventListener","e","keyCode","component","module","exports","Object","is","x","y","$","uncurryThis","aCallable","toObject","lengthOfArrayLike","deletePropertyOrThrow","toString","fails","internalSort","arrayMethodIsStrict","FF","IE_OR_EDGE","V8","WEBKIT","test","nativeSort","sort","push","FAILS_ON_UNDEFINED","undefined","FAILS_ON_NULL","STRICT_METHOD","STABLE_SORT","code","chr","index","result","fromCharCode","k","v","a","b","length","charAt","FORCED","getSortCompare","comparefn","proto","forced","array","itemsLength","items","arrayLength","id","label","isRequired","FLOATING_FIELD_TEXTAREA","domProps","$event","FLOATING_FIELD_TEXTINPUT","created","setActive","el","active","formField","parentNode","classList","add","remove","forEach","call","querySelectorAll","onblur","onfocus","class","noPointer","currentPage","goToPrevious","paginate","hasLeftEllipses","_l","pages","page","numberOfPages","key","hasRightEllipses","goToNext","totalNumberOfItems","Number","numberOfItemsPerPage","numberOfPagers","data","computed","includes","Math","ceil","totalNumberOfPagers","Array","from","filter","pagesArray","mid","start","to","fixRegExpWellKnownSymbolLogic","anObject","isNullOrUndefined","requireObjectCoercible","sameValue","getMethod","regExpExec","SEARCH","nativeSearch","maybeCallNative","regexp","O","searcher","RegExp","string","rx","S","res","done","previousLastIndex","lastIndex","alert","message","closeMessage","showAddEditModal","role","scopedSlots","_u","fn","isSavingRole","preventDefault","cancelAddOrEdit","apply","arguments","spin","saveRole","proxy","errors","error","model","callback","$$v","$set","status","staticStyle","isArray","_i","$$a","$$el","$$c","checked","$$i","concat","slice","_f","roleRightsList","right","description","isSelected","showDeleteModal","isDeletingRole","cancelDelete","deleteRole","addRole","_m","headers","itemsToDisplay","_ref","item","_ref2","rights","_ref3","editRole","removeRole","numberOfItems","goToPage","components","DataTable","AppPager","_objectSpread","mapState","roles","state","roleModule","watch","filters","toStatusDescription","toRoleRightsDescription","EDIT_ROLE_EVENT","REMOVE_ROLE_EVENT","RoleList","AppAlert","AppModal","FloatingField","mixins","AlertMixin","ErrorMixin","provide","Enums","Status","Active","totalSelectedRoleRights","totalRights","$nextTick","getElementById","focus","righsList","assign","RoleRights","validateAddOrEditForm","self","actionType","UPDATE_ROLE","CREATE_ROLE","store","dispatch","then","showSuccessMessage","catch","handleError","finally","DELETE_ROLE","splice","form","querySelector","reportValidity","beforeRouteEnter","next","FETCH_ROLES","vm","showErrorMessage","$on","stopPropagation","onClose","ALERT_TYPE_ERROR","ALERT_TYPE_SUCCESS","errorMessage","console","log","isActive","ServerValidationError","_toConsumableArray","errorList","user","isNew","isSavingUser","saveUser","searchedEmployees","roleId","$$selectedVal","prototype","options","o","selected","map","val","_value","multiple","activeRoles","addUser","search","isOpen","isLoading","results","i","setResult","isShown","isSearchMode","arrowCounter","filterResults","toLowerCase","indexOf","EMPLOYEE_SELECTED_EVENT","handleClickOutside","contains","oldValue","onSearch","debounce","EMPLOYEE_SEARCH_STARTED_EVENT","destroyed","removeEventListener","editUser","users","userModule","EDIT_USER_EVENT","disableUser","DISABLE_USER_EVENT","UserList","EmployeeAutocomplete","roleName","mapGetters","setUser","employee","CREATE_USER","UPDATE_USER","FETCH_USERS","searchString","employeeService","searchEmployees","beforeDestroy","$off","convertToEnum","rightsDescriptions","join","header","identifierProp"],"mappings":"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","file":"js/adminViews.e3517d2e.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"name\":\"modal\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show),expression:\"show\"}],staticClass:\"modal-mask\",on:{\"click\":_vm.staticClose}},[_c('div',{staticClass:\"modal-container\"},[_c('div',{staticClass:\"modal-header\"},[_vm._t(\"header\",function(){return [(_vm.title)?_c('h3',[_vm._v(_vm._s(_vm.title))]):_vm._e()]})],2),_c('div',{staticClass:\"modal-body\"},[_vm._t(\"default\")],2),_c('div',{staticClass:\"modal-footer text-right\"},[_vm._t(\"footer\")],2)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <transition name=\"modal\">\r\n <div class=\"modal-mask\" v-show=\"show\" @click=\"staticClose\">\r\n <!--<div class=\"modal-container\" @click.stop>-->\r\n <div class=\"modal-container\">\r\n <div class=\"modal-header\">\r\n <slot name=\"header\">\r\n <h3 v-if=\"title\">{{ title }}</h3>\r\n </slot>\r\n </div>\r\n <div class=\"modal-body\">\r\n <slot>\r\n </slot>\r\n </div>\r\n <div class=\"modal-footer text-right\">\r\n <slot name=\"footer\"></slot>\r\n </div>\r\n </div>\r\n </div>\r\n </transition>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n .modal-mask {\r\n position: fixed;\r\n z-index: 9998;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(0, 0, 0, .5);\r\n transition: opacity .3s ease;\r\n }\r\n\r\n .modal-container {\r\n width: 600px;\r\n margin: 40px auto 0;\r\n padding: 20px 30px;\r\n background-color: #fff;\r\n border-radius: 2px;\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, .33);\r\n transition: all .3s ease;\r\n font-family: Helvetica, Arial, sans-serif;\r\n }\r\n\r\n .modal-header h3 {\r\n margin-top: 0;\r\n color: #0066b2;\r\n }\r\n\r\n .modal-body {\r\n margin: 20px 0;\r\n }\r\n\r\n .text-right {\r\n text-align: right;\r\n }\r\n\r\n .modal-enter {\r\n opacity: 0;\r\n }\r\n\r\n .modal-leave-active {\r\n opacity: 0;\r\n }\r\n\r\n .modal-enter .modal-container,\r\n .modal-leave-active .modal-container {\r\n -webkit-transform: scale(1.1);\r\n transform: scale(1.1);\r\n }\r\n</style>\r\n\r\n<script>\r\nimport { CLOSE_MODAL_EVENT } from '@/utils/constants'\r\n\r\nexport default {\r\n name: 'app-modal',\r\n props: {\r\n show: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n closeOnEscape: {\r\n type: Boolean,\r\n required: false,\r\n default: true\r\n },\r\n static: {\r\n type: Boolean,\r\n required: false,\r\n default: true\r\n },\r\n title: {\r\n type: String,\r\n required: false,\r\n default: ''\r\n }\r\n },\r\n inject: ['eventBus'],\r\n methods: {\r\n close () {\r\n this.eventBus.$emit(CLOSE_MODAL_EVENT)\r\n },\r\n staticClose (evt) {\r\n if (evt.target == this.$el && !this.static) {\r\n this.close()\r\n }\r\n }\r\n },\r\n mounted: function () {\r\n document.addEventListener('keydown', (e) => {\r\n if (this.show && this.closeOnEscape && !this.static && e.keyCode == 27) {\r\n this.close()\r\n }\r\n })\r\n }\r\n}\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppModal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppModal.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AppModal.vue?vue&type=template&id=72a61390&scoped=true\"\nimport script from \"./AppModal.vue?vue&type=script&lang=js\"\nexport * from \"./AppModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppModal.vue?vue&type=style&index=0&id=72a61390&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"72a61390\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppAlert.vue?vue&type=style&index=0&id=05d80fa6&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=a73158d6&prod&scoped=true&lang=scss\"","'use strict';\n// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x !== x && y !== y;\n};\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=764a6143&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppModal.vue?vue&type=style&index=0&id=72a61390&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FloatingField.vue?vue&type=style&index=0&id=67d25b86&prod&scoped=true&lang=scss\"","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/environment-ff-version');\nvar IE_OR_EDGE = require('../internals/environment-is-ie-or-edge');\nvar V8 = require('../internals/environment-v8-version');\nvar WEBKIT = require('../internals/environment-webkit-version');\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = lengthOfArrayLike(items);\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n return array;\n }\n});\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppPager.vue?vue&type=style&index=0&id=24125f5d&prod&scoped=true&lang=scss\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"form-field\"},[_c('div',{staticClass:\"form-field__control\"},[_c('label',{staticClass:\"form-field__label\",attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.label)),(_vm.isRequired)?_c('span',{staticClass:\"text-danger font-weight-bold\"},[_vm._v(\"*\")]):_vm._e()]),(_vm.type == _vm.FLOATING_FIELD_TEXTAREA)?_c('textarea',{staticClass:\"form-field__textarea\",attrs:{\"id\":_vm.id,\"name\":_vm.id,\"required\":_vm.isRequired},domProps:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event.target.value)}}}):_c('input',{staticClass:\"form-field__input\",attrs:{\"id\":_vm.id,\"name\":_vm.id,\"type\":_vm.type,\"required\":_vm.isRequired},domProps:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event.target.value)}}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"form-field\">\r\n <div class=\"form-field__control\">\r\n <label :for=\"id\" class=\"form-field__label\">{{ label }}<span v-if=\"isRequired\" class=\"text-danger font-weight-bold\">*</span></label>\r\n <textarea v-if=\"type == FLOATING_FIELD_TEXTAREA\" :id=\"id\" :name=\"id\" class=\"form-field__textarea\" v-bind:value=\"value\" v-on:input=\"$emit('input', $event.target.value)\" v-bind:required=\"isRequired\"></textarea>\r\n <input v-else :id=\"id\" :name=\"id\" v-bind:type=\"type\" class=\"form-field__input\" v-bind:value=\"value\" v-on:input=\"$emit('input', $event.target.value)\" v-bind:required=\"isRequired\" />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n $primary-color: #0066b2;\r\n $animation-duration: 0.4s;\r\n\r\n @mixin label-active() {\r\n font-size: 0.75rem;\r\n transform: translateY(-14px);\r\n }\r\n\r\n .form-field {\r\n display: block;\r\n margin-bottom: 16px;\r\n &--is-active\r\n\r\n {\r\n .form-field__control\r\n\r\n {\r\n &::after\r\n\r\n {\r\n border-bottom: 2px solid $primary-color;\r\n transform: scaleX(150);\r\n }\r\n\r\n }\r\n\r\n .form-field__label {\r\n color: #0066b2;\r\n @include label-active();\r\n }\r\n\r\n }\r\n\r\n &--is-filled {\r\n .form-field__label\r\n\r\n {\r\n @include label-active();\r\n }\r\n\r\n }\r\n }\r\n\r\n .form-field__label {\r\n display: block;\r\n font-size: 1.0rem;\r\n font-weight: normal;\r\n left: 0;\r\n margin: 0;\r\n padding: 18px 12px 0;\r\n position: absolute;\r\n top: 0;\r\n transition: all $animation-duration;\r\n width: 100%;\r\n text-align: left;\r\n }\r\n\r\n .form-field__control {\r\n background: rgba(238, 238, 238, 0.3);\r\n /*border-radius: 8px 8px 0 0;*/\r\n overflow: hidden;\r\n position: relative;\r\n width: 100%;\r\n &::after\r\n\r\n {\r\n border-bottom: 2px solid $primary-color;\r\n bottom: 0;\r\n content: \"\";\r\n display: block;\r\n left: 0;\r\n margin: 0 auto;\r\n position: absolute;\r\n right: 0;\r\n transform: scaleX(0);\r\n transition: all $animation-duration;\r\n width: 1%;\r\n }\r\n\r\n }\r\n\r\n .form-field__input,\r\n .form-field__textarea {\r\n appearance: none;\r\n background: transparent;\r\n border: 0;\r\n border-bottom: 1px solid #999;\r\n color: #333;\r\n display: block;\r\n font-size: 1.2rem;\r\n margin-top: 24px;\r\n outline: 0;\r\n padding: 0 12px 10px 12px;\r\n width: 100%;\r\n }\r\n\r\n .form-field__textarea {\r\n height: 150px;\r\n }\r\n</style>\r\n\r\n<script>\r\nimport { FLOATING_FIELD_TEXTINPUT, FLOATING_FIELD_TEXTAREA } from '@/utils/constants'\r\n\r\nexport default {\r\n name: 'floating-field',\r\n props: {\r\n id: {\r\n type: String,\r\n required: true\r\n },\r\n type: {\r\n type: String,\r\n required: false,\r\n default: FLOATING_FIELD_TEXTINPUT\r\n },\r\n label: {\r\n type: String,\r\n required: true\r\n },\r\n value: {\r\n type: String,\r\n required: true\r\n },\r\n isRequired: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n }\r\n },\r\n inject: ['eventBus'],\r\n methods: {\r\n close () {\r\n // this.eventBus.$emit(CLOSE_MODAL)\r\n },\r\n staticClose () {\r\n if (!this.static) {\r\n this.close()\r\n }\r\n }\r\n },\r\n created () {\r\n this.FLOATING_FIELD_TEXTINPUT = FLOATING_FIELD_TEXTINPUT\r\n this.FLOATING_FIELD_TEXTAREA = FLOATING_FIELD_TEXTAREA\r\n },\r\n mounted: function () {\r\n const setActive = (el, active) => {\r\n const formField = el.parentNode.parentNode\r\n if (active) {\r\n formField.classList.add('form-field--is-active')\r\n } else {\r\n formField.classList.remove('form-field--is-active')\r\n el.value === ''\r\n ? formField.classList.remove('form-field--is-filled')\r\n : formField.classList.add('form-field--is-filled')\r\n }\r\n }\r\n\r\n [].forEach.call(\r\n document.querySelectorAll('.form-field__input, .form-field__textarea'),\r\n (el) => {\r\n el.onblur = () => {\r\n setActive(el, false)\r\n }\r\n el.onfocus = () => {\r\n setActive(el, true)\r\n }\r\n }\r\n )\r\n }\r\n}\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FloatingField.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FloatingField.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FloatingField.vue?vue&type=template&id=67d25b86&scoped=true\"\nimport script from \"./FloatingField.vue?vue&type=script&lang=js\"\nexport * from \"./FloatingField.vue?vue&type=script&lang=js\"\nimport style0 from \"./FloatingField.vue?vue&type=style&index=0&id=67d25b86&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"67d25b86\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{staticClass:\"pageination\"},[_c('li',{staticClass:\"prev\",class:{ noPointer: _vm.currentPage === 1 },on:{\"click\":_vm.goToPrevious}},[_vm._v(\"Previous\")]),_c('li',{class:{ active: _vm.currentPage == 1 },on:{\"click\":function($event){return _vm.paginate(1)}}},[_vm._v(\"1\")]),(_vm.hasLeftEllipses)?_c('li',{staticClass:\"noPointer\"},[_vm._v(\"...\")]):_vm._e(),_vm._l((_vm.pages),function(page){return (_vm.numberOfPages != 1)?_c('li',{key:page,class:{ active: _vm.currentPage == page },on:{\"click\":function($event){return _vm.paginate(page)}}},[_vm._v(_vm._s(page))]):_vm._e()}),(_vm.hasRightEllipses)?_c('li',{staticClass:\"noPointer\"},[_vm._v(\"...\")]):_vm._e(),(_vm.numberOfPages != 1)?_c('li',{class:{ active: _vm.currentPage == _vm.numberOfPages },on:{\"click\":function($event){return _vm.paginate(_vm.numberOfPages)}}},[_vm._v(_vm._s(_vm.numberOfPages))]):_vm._e(),_c('li',{staticClass:\"next\",class:{ noPointer: _vm.currentPage === _vm.numberOfPages },on:{\"click\":_vm.goToNext}},[_vm._v(\"Next\")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <ul class=\"pageination\">\r\n <li class=\"prev\" v-bind:class=\"{ noPointer: currentPage === 1 }\" @click=\"goToPrevious\">Previous</li>\r\n <li :class=\"{ active: currentPage == 1 }\" @click=\"paginate(1)\">1</li>\r\n <li v-if=\"hasLeftEllipses\" class=\"noPointer\">...</li>\r\n <li v-if=\"numberOfPages != 1\" v-for=\"page in pages\" :class=\"{ active: currentPage == page }\" @click=\"paginate(page)\" :key=\"page\">{{ page }}</li>\r\n <li v-if=\"hasRightEllipses\" class=\"noPointer\">...</li>\r\n <li v-if=\"numberOfPages != 1\" :class=\"{ active: currentPage == numberOfPages }\" @click=\"paginate(numberOfPages)\">{{ numberOfPages }}</li>\r\n <li class=\"next\" v-bind:class=\"{ noPointer: currentPage === numberOfPages }\" @click=\"goToNext\">Next</li>\r\n </ul>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n ul.pageination {\r\n list-style: none;\r\n }\r\n\r\n ul.pageination li {\r\n display: inline;\r\n padding: 8px 16px;\r\n font-weight: bold;\r\n cursor: pointer;\r\n }\r\n\r\n ul.pageination li.noPointer, ul.pageination li.active {\r\n cursor: auto;\r\n }\r\n\r\n ul.pageination li.active {\r\n background-color: #0b2d71;\r\n color: white;\r\n border-radius: 5px;\r\n }\r\n\r\n ul.pagination li:hover:not(.active) {\r\n background-color: #ddd;\r\n border-radius: 5px;\r\n }\r\n</style>\r\n\r\n<script>\r\nexport default {\r\n name: 'app-pager',\r\n props: {\r\n totalNumberOfItems: {\r\n type: Number,\r\n required: true,\r\n default: 0\r\n },\r\n numberOfItemsPerPage: {\r\n type: Number,\r\n required: true,\r\n default: 0\r\n },\r\n numberOfPagers: {\r\n type: Number,\r\n required: false,\r\n default: 7\r\n },\r\n currentPage: {\r\n type: Number,\r\n required: true\r\n }\r\n },\r\n data: () => ({\r\n hasLeftEllipses: false,\r\n hasRightEllipses: false\r\n }),\r\n computed: {\r\n numberOfPages () {\r\n return [-1, 0].includes(this.numberOfItemsPerPage) ? 1 : Math.ceil(this.totalNumberOfItems / this.numberOfItemsPerPage)\r\n },\r\n totalNumberOfPagers () {\r\n return this.numberOfPagers / 2 == 0 ? this.numberOfPagers - 1 : this.numberOfPagers\r\n },\r\n pages () {\r\n if (this.numberOfPages <= this.totalNumberOfPagers || this.totalNumberOfPagers < 1) {\r\n return Array.from({ length: this.numberOfPages }, (v, k) => k + 1).filter((value) => {\r\n return value != 1 && value != this.numberOfPages\r\n })\r\n } else {\r\n let pagesArray = []\r\n let mid = Math.ceil(this.totalNumberOfPagers / 2)\r\n this.hasLeftEllipses = this.currentPage >= (mid + 1)\r\n this.hasRightEllipses = this.currentPage <= (this.numberOfPages - mid)\r\n\r\n if (this.hasLeftEllipses && this.hasRightEllipses) {\r\n pagesArray.push(this.currentPage)\r\n let start = 1\r\n while (pagesArray.length < this.totalNumberOfPagers - 4) {\r\n pagesArray.push(this.currentPage - start)\r\n pagesArray.push(this.currentPage + start)\r\n start++\r\n }\r\n } else if (this.hasLeftEllipses) {\r\n let start = 1\r\n while (pagesArray.length < this.totalNumberOfPagers - 3) {\r\n pagesArray.push(this.numberOfPages - start++)\r\n }\r\n } else {\r\n let start = 2\r\n while (pagesArray.length < this.totalNumberOfPagers - 3) {\r\n pagesArray.push(start++)\r\n }\r\n }\r\n return pagesArray.sort()\r\n }\r\n }\r\n },\r\n methods: {\r\n paginate (to) {\r\n if (this.currentPage === to) {\r\n return\r\n }\r\n this.$emit('paginate', to)\r\n },\r\n goToPrevious () {\r\n if (this.currentPage === 1) {\r\n return\r\n }\r\n this.paginate(this.currentPage - 1)\r\n },\r\n goToNext () {\r\n if (this.currentPage === this.numberOfPages) {\r\n return\r\n }\r\n this.paginate(this.currentPage + 1)\r\n }\r\n }\r\n}\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppPager.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppPager.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AppPager.vue?vue&type=template&id=24125f5d&scoped=true\"\nimport script from \"./AppPager.vue?vue&type=script&lang=js\"\nexport * from \"./AppPager.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppPager.vue?vue&type=style&index=0&id=24125f5d&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"24125f5d\",\n null\n \n)\n\nexport default component.exports","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, SEARCH);\n return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeSearch, rx, S);\n\n if (res.done) return res.value;\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"roleView\"}},[_c('transition',{attrs:{\"name\":\"slide-fade\"}},[(_vm.alert.message)?_c('app-alert',{attrs:{\"type\":_vm.alert.type,\"message\":_vm.alert.message},on:{\"alertclose\":_vm.closeMessage}}):_vm._e()],1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('h4',[_vm._v(\"manage application roles\")]),_c('app-modal',{attrs:{\"show\":_vm.showAddEditModal,\"title\":_vm.role.id ? 'edit role': 'add new role'},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c('button',{staticClass:\"btn btn-danger d-inline mr-2\",attrs:{\"disabled\":_vm.isSavingRole},on:{\"click\":function($event){$event.preventDefault();return _vm.cancelAddOrEdit.apply(null, arguments)}}},[_vm._v(\"Cancel\")]),_c('button',{staticClass:\"btn btn-primary d-inline mr-2\",class:{ spin: _vm.isSavingRole },attrs:{\"disabled\":_vm.isSavingRole},on:{\"click\":function($event){$event.preventDefault();return _vm.saveRole.apply(null, arguments)}}},[_vm._v(\"Submit\"),_c('span',{staticClass:\"spinner\"})])]},proxy:true}])},[_c('ul',{staticClass:\"error\"},_vm._l((_vm.errors),function(error,index){return _c('li',{key:index},[_vm._v(\" \"+_vm._s(error.message)+\" \")])}),0),_c('form',{attrs:{\"id\":\"roleForm\"}},[_c('fieldset',{attrs:{\"disabled\":_vm.isSavingRole}},[_c('floating-field',{attrs:{\"type\":\"email\",\"id\":\"roleName\",\"label\":\"name\",\"isRequired\":\"\"},model:{value:(_vm.role.name),callback:function ($$v) {_vm.$set(_vm.role, \"name\", $$v)},expression:\"role.name\"}}),_c('div',{staticClass:\"form-group row mt-4\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.role.status),expression:\"role.status\"}],staticClass:\"form-control col-md-1 my-auto\",staticStyle:{\"margin-left\":\"-15px\"},attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.role.status)?_vm._i(_vm.role.status,null)>-1:(_vm.role.status)},on:{\"change\":function($event){var $$a=_vm.role.status,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.role, \"status\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.role, \"status\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.role, \"status\", $$c)}}}}),_c('label',{staticClass:\"col-md-4 mr-0 mt-2\"},[_vm._v(_vm._s(_vm._f(\"toStatusDescription\")(_vm.role.status)))])]),_c('div',{staticClass:\"mt-4\"},[_c('h5',{staticClass:\"text-left\"},[_vm._v(\"rights\")]),_c('div',{staticClass:\"row\"},_vm._l((_vm.roleRightsList),function(right,index){return _c('div',{key:index,staticClass:\"row col-md-4 mr-0\"},[_c('label',{staticClass:\"col-md-10 mr-0 mt-2 text-left\"},[_vm._v(_vm._s(right.description))]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(right.isSelected),expression:\"right.isSelected\"}],staticClass:\"form-control col-md-2 my-auto\",staticStyle:{\"margin-left\":\"-15px\"},attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(right.isSelected)?_vm._i(right.isSelected,null)>-1:(right.isSelected)},on:{\"change\":function($event){var $$a=right.isSelected,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(right, \"isSelected\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(right, \"isSelected\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(right, \"isSelected\", $$c)}}}})])}),0)])],1)])]),_c('app-modal',{attrs:{\"show\":_vm.showDeleteModal,\"title\":\"remove role\"},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c('button',{staticClass:\"btn btn-danger d-inline mr-2\",attrs:{\"disabled\":_vm.isDeletingRole},on:{\"click\":function($event){$event.preventDefault();return _vm.cancelDelete.apply(null, arguments)}}},[_vm._v(\"Cancel\")]),_c('button',{staticClass:\"btn btn-primary d-inline mr-2\",class:{ spin: _vm.isDeletingRole },attrs:{\"disabled\":_vm.isDeletingRole},on:{\"click\":function($event){$event.preventDefault();return _vm.deleteRole.apply(null, arguments)}}},[_vm._v(\"Delete\"),_c('span',{staticClass:\"spinner\"})])]},proxy:true}])},[_c('form',[_c('fieldset',{attrs:{\"disabled\":_vm.isDeletingRole}},[_vm._v(\" Are you sure you want to remove this role? \")])])]),_c('div',{staticClass:\"d-flex justify-content-end clearfix mb-4\"},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.addRole}},[_c('i',{staticClass:\"icon-expand-plus\",attrs:{\"title\":\"add new role\"}})])]),_vm._m(0),_c('RoleList')],1)])],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"spinner-border text-warning\",attrs:{\"role\":\"status\"}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Loading...\")])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('data-table',{attrs:{\"id\":_vm.id,\"headers\":_vm.headers,\"items\":_vm.itemsToDisplay},scopedSlots:_vm._u([{key:\"item.status\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"toStatusDescription\")(item.status))+\" \")]}},{key:\"item.rights\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"toRoleRightsDescription\")(item.rights))+\" \")]}},{key:\"item.actions\",fn:function({ item }){return [_c('span',{staticClass:\"action-btn mr-2 font-weight-bold h5\",on:{\"click\":function($event){return _vm.editRole(item)}}},[_vm._v(\"✎\")]),_c('span',{staticClass:\"action-btn font-weight-bold h5\",on:{\"click\":function($event){return _vm.removeRole(item)}}},[_vm._v(\"✖\")])]}}])}),_c('app-pager',{attrs:{\"totalNumberOfItems\":_vm.numberOfItems,\"numberOfItemsPerPage\":_vm.numberOfItemsPerPage,\"numberOfPagers\":_vm.numberOfPagers,\"currentPage\":_vm.currentPage},on:{\"paginate\":_vm.goToPage}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <data-table :id='id' :headers='headers' :items='itemsToDisplay'>\r\n <template v-slot:item.status=\"{ item }\">\r\n {{ item.status | toStatusDescription }}\r\n </template>\r\n <template v-slot:item.rights=\"{ item }\">\r\n {{ item.rights | toRoleRightsDescription }}\r\n </template>\r\n <template v-slot:item.actions=\"{ item }\">\r\n <span class=\"action-btn mr-2 font-weight-bold h5\" @click=\"editRole(item)\">✎</span>\r\n <span class=\"action-btn font-weight-bold h5\" @click=\"removeRole(item)\">✖</span>\r\n </template>\r\n </data-table>\r\n <app-pager :totalNumberOfItems=\"numberOfItems\" :numberOfItemsPerPage=numberOfItemsPerPage :numberOfPagers=\"numberOfPagers\" :currentPage=\"currentPage\" @paginate=\"goToPage\" />\r\n </div>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n .action-btn {\r\n cursor: pointer\r\n }\r\n</style>\r\n\r\n<script>\r\nimport { mapState } from 'vuex'\r\n\r\nimport { EDIT_ROLE_EVENT, REMOVE_ROLE_EVENT } from '@/utils/constants'\r\nimport { toStatusDescription, toRoleRightsDescription } from '@/filters/enum'\r\n\r\nimport DataTable from '@/components/ui/DataTable'\r\nimport AppPager from '@/components/ui/AppPager'\r\n\r\nexport default {\r\n name: 'RoleList',\r\n components: {\r\n DataTable,\r\n AppPager\r\n },\r\n inject: ['eventBus'],\r\n props: {\r\n id: {\r\n type: String,\r\n required: false,\r\n default: 'roleList'\r\n }\r\n },\r\n data: () => ({\r\n headers: [\r\n {\r\n name: 'name',\r\n title: 'role name'\r\n },\r\n {\r\n name: 'rights',\r\n title: 'role rights'\r\n },\r\n {\r\n name: 'status',\r\n title: 'status'\r\n },\r\n {\r\n name: 'actions',\r\n title: ''\r\n }\r\n ],\r\n numberOfItemsPerPage: 2,\r\n numberOfPagers: 7,\r\n currentPage: 1\r\n }),\r\n computed: {\r\n ...mapState({\r\n roles: state => state.roleModule.roles\r\n }),\r\n numberOfItems () {\r\n return this.roles.length\r\n },\r\n itemsToDisplay () {\r\n return this.roles.slice((this.currentPage - 1) * this.numberOfItemsPerPage, this.numberOfItemsPerPage * this.currentPage)\r\n }\r\n },\r\n watch: {\r\n itemsToDisplay (value) {\r\n if (!value.length) {\r\n this.currentPage = 1\r\n }\r\n }\r\n },\r\n filters: {\r\n toStatusDescription,\r\n toRoleRightsDescription\r\n },\r\n methods: {\r\n editRole (item) {\r\n this.eventBus.$emit(EDIT_ROLE_EVENT, item)\r\n },\r\n removeRole (item) {\r\n this.eventBus.$emit(REMOVE_ROLE_EVENT, item)\r\n },\r\n goToPage (page) {\r\n this.currentPage = page\r\n }\r\n }\r\n}\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoleList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoleList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./RoleList.vue?vue&type=template&id=02615670&scoped=true\"\nimport script from \"./RoleList.vue?vue&type=script&lang=js\"\nexport * from \"./RoleList.vue?vue&type=script&lang=js\"\nimport style0 from \"./RoleList.vue?vue&type=style&index=0&id=02615670&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"02615670\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div id=\"roleView\">\r\n <transition name=\"slide-fade\">\r\n <app-alert v-if=\"alert.message\" :type=\"alert.type\" :message=\"alert.message\" @alertclose=\"closeMessage\" />\r\n </transition>\r\n <div class=\"row\">\r\n <div class=\"col\">\r\n <h4>manage application roles</h4>\r\n <app-modal :show=\"showAddEditModal\" :title=\"role.id ? 'edit role': 'add new role'\">\r\n <ul class=\"error\">\r\n <li v-for=\"(error, index) in errors\" :key=\"index\">\r\n {{ error.message }}\r\n </li>\r\n </ul>\r\n <form id=\"roleForm\">\r\n <fieldset v-bind:disabled=\"isSavingRole\">\r\n <floating-field type=\"email\" id=\"roleName\" label=\"name\" v-model=\"role.name\" isRequired></floating-field>\r\n <div class=\"form-group row mt-4\">\r\n <input type=\"checkbox\" class=\"form-control col-md-1 my-auto\" style=\"margin-left:-15px\" v-model=\"role.status\" />\r\n <label class=\"col-md-4 mr-0 mt-2\">{{ role.status | toStatusDescription }}</label>\r\n </div>\r\n <div class=\"mt-4\">\r\n <h5 class=\"text-left\">rights</h5>\r\n <div class=\"row\">\r\n <div class=\"row col-md-4 mr-0\" v-for=\"(right, index) of roleRightsList\" :key=\"index\">\r\n <label class=\"col-md-10 mr-0 mt-2 text-left\">{{ right.description }}</label>\r\n <input type=\"checkbox\" class=\"form-control col-md-2 my-auto\" style=\"margin-left:-15px\" v-model=\"right.isSelected\" />\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n </form>\r\n <template v-slot:footer>\r\n <button class=\"btn btn-danger d-inline mr-2\" @click.prevent=\"cancelAddOrEdit\" v-bind:disabled=\"isSavingRole\">Cancel</button>\r\n <button class=\"btn btn-primary d-inline mr-2\" v-bind:class=\"{ spin: isSavingRole }\" @click.prevent=\"saveRole\" v-bind:disabled=\"isSavingRole\">Submit<span class=\"spinner\"></span></button>\r\n </template>\r\n </app-modal>\r\n <app-modal :show=\"showDeleteModal\" title=\"remove role\">\r\n <form>\r\n <fieldset v-bind:disabled=\"isDeletingRole\">\r\n Are you sure you want to remove this role?\r\n </fieldset>\r\n </form>\r\n <template v-slot:footer>\r\n <button class=\"btn btn-danger d-inline mr-2\" @click.prevent=\"cancelDelete\" v-bind:disabled=\"isDeletingRole\">Cancel</button>\r\n <button class=\"btn btn-primary d-inline mr-2\" v-bind:class=\"{ spin: isDeletingRole }\" @click.prevent=\"deleteRole\" v-bind:disabled=\"isDeletingRole\">Delete<span class=\"spinner\"></span></button>\r\n </template>\r\n </app-modal>\r\n <div class=\"d-flex justify-content-end clearfix mb-4\">\r\n <button type=\"button\" class=\"btn btn-primary \" @click=\"addRole\"><i class=\"icon-expand-plus\" title=\"add new role\"></i></button>\r\n </div>\r\n <div class=\"spinner-border text-warning\" role=\"status\">\r\n <span class=\"sr-only\">Loading...</span>\r\n </div>\r\n <RoleList />\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n\r\n .slide-fade-enter-active {\r\n transition: all .5s ease;\r\n }\r\n\r\n .slide-fade-leave-active {\r\n transition: all .5s cubic-bezier(1.0, 0.5, 0.8, 1.0);\r\n }\r\n\r\n .slide-fade-enter, .slide-fade-leave-to\r\n /* .slide-fade-leave-active below version 2.1.8 */ {\r\n transform: translateX(10px);\r\n opacity: 0;\r\n }\r\n\r\n .error {\r\n text-align: left;\r\n color: #ac0c0c;\r\n list-style: none;\r\n }\r\n\r\n fieldset {\r\n border: 0;\r\n }\r\n\r\n button {\r\n position: relative;\r\n transition: all 1s;\r\n }\r\n\r\n .spin {\r\n padding-left: 2.5em;\r\n display: block;\r\n }\r\n\r\n .spin .spinner {\r\n left: -.6em;\r\n top: .4em;\r\n width: 2.5em;\r\n display: block;\r\n position: absolute;\r\n }\r\n\r\n /* spinner animation */\r\n @keyframes spinner {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n /* The actual spinner element is a pseudo-element */\r\n .spin .spinner::before {\r\n content: \"\";\r\n width: 1.5em; /* Size of the spinner */\r\n height: 1.5em; /* Change as desired */\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n border-radius: 50%;\r\n border: solid .35em #000; /* Thickness/color of spinner track */\r\n border-bottom-color: #555; /* Color of variant spinner piece */\r\n animation: .8s linear infinite spinner; /* speed of spinner */\r\n transform: translate(-50%, -50%);\r\n will-change: transform;\r\n }\r\n\r\n /* optional, but it will affect the size if changed */\r\n *, *::before, *::after {\r\n box-sizing: border-box;\r\n }\r\n</style>\r\n\r\n<script>\r\nimport store from '@/store'\r\nimport { toStatusDescription, toRoleRightsDescription } from '@/filters/enum'\r\n\r\nimport { FETCH_ROLES, CREATE_ROLE, UPDATE_ROLE, DELETE_ROLE } from '@/store/action-type'\r\nimport { CLOSE_MODAL_EVENT, EDIT_ROLE_EVENT, REMOVE_ROLE_EVENT } from '@/utils/constants'\r\nimport Enums from '@/utils/enums'\r\n\r\nimport AppAlert from '@/components/ui/AppAlert'\r\nimport AppModal from '@/components/ui/AppModal'\r\nimport FloatingField from '@/components/ui/FloatingField'\r\nimport RoleList from '@/components/role/RoleList'\r\n\r\nimport AlertMixin from '@/mixins/AlertMixin'\r\nimport ErrorMixin from '@/mixins/ErrorMixin'\r\n\r\nexport default {\r\n name: 'RoleView',\r\n components: {\r\n RoleList,\r\n AppAlert,\r\n AppModal,\r\n FloatingField\r\n },\r\n mixins: [AlertMixin, ErrorMixin],\r\n inject: ['eventBus'],\r\n provide () {\r\n return {\r\n eventBus: this.eventBus\r\n }\r\n },\r\n data: () => ({\r\n role: {\r\n id: null,\r\n name: '',\r\n rights: 0,\r\n status: Enums.Status.Active.value\r\n },\r\n roleRightsList: [],\r\n showAddEditModal: false,\r\n showDeleteModal: false,\r\n isSavingRole: false,\r\n isDeletingRole: false\r\n }),\r\n computed: {\r\n totalSelectedRoleRights () {\r\n let totalRights = 0\r\n for (let right in this.roleRightsList) {\r\n if (this.roleRightsList[right].isSelected) {\r\n totalRights = totalRights | this.roleRightsList[right].value\r\n }\r\n }\r\n return totalRights\r\n }\r\n },\r\n watch: {\r\n showAddEditModal (value) {\r\n if (value) {\r\n this.$nextTick(() => {\r\n document.getElementById('roleName').focus()\r\n })\r\n }\r\n }\r\n },\r\n methods: {\r\n addRole () {\r\n var righsList = Object.assign({}, Enums.RoleRights)\r\n for (let right in righsList) {\r\n righsList[right].isSelected = false\r\n }\r\n this.roleRightsList = righsList\r\n this.role.id = null\r\n this.role.name = ''\r\n this.role.rights = 0\r\n this.role.status = Enums.Status.Active.value\r\n this.showAddEditModal = true\r\n },\r\n editRole (role) {\r\n var righsList = Object.assign({}, Enums.RoleRights)\r\n for (let right in righsList) {\r\n righsList[right].isSelected = role.rights & righsList[right].value\r\n }\r\n this.roleRightsList = righsList\r\n this.role.id = role.id\r\n this.role.name = role.name\r\n this.role.rights = role.rights\r\n this.role.status = role.status\r\n this.showAddEditModal = true\r\n },\r\n saveRole () {\r\n if (this.validateAddOrEditForm()) {\r\n const self = this\r\n self.isSavingRole = true\r\n self.closeMessage()\r\n self.role.rights = self.totalSelectedRoleRights\r\n const actionType = self.role.id ? UPDATE_ROLE : CREATE_ROLE\r\n store.dispatch(actionType, self.role).then(() => {\r\n self.showSuccessMessage(`Role ${actionType === UPDATE_ROLE ? 'updated' : 'created'} successfully`)\r\n self.showAddEditModal = false\r\n }).catch((error) => {\r\n self.handleError(error)\r\n }).finally(() => {\r\n self.isSavingRole = false\r\n })\r\n }\r\n },\r\n deleteRole () {\r\n const self = this\r\n self.isDeletingRole = true\r\n self.closeMessage()\r\n store.dispatch(DELETE_ROLE, self.role).then(() => {\r\n self.showSuccessMessage(`Role removed successfully`)\r\n self.showDeleteModal = false\r\n }).catch((error) => {\r\n self.handleError(error)\r\n }).finally(() => {\r\n self.isDeletingRole = false\r\n })\r\n },\r\n cancelAddOrEdit () {\r\n this.showAddEditModal = false\r\n },\r\n cancelDelete () {\r\n this.showDeleteModal = false\r\n },\r\n validateAddOrEditForm () {\r\n this.errors.splice(0, this.errors.length)\r\n let form = document.querySelector('#roleForm')\r\n form.reportValidity()\r\n let errors = []\r\n if (!this.role.name) {\r\n errors.push({ message: 'role name is required' })\r\n }\r\n this.errors = [...errors]\r\n return !errors.length\r\n }\r\n },\r\n beforeRouteEnter (to, from, next) {\r\n store.dispatch(FETCH_ROLES).then(() => {\r\n next()\r\n }).catch((error) => {\r\n next(vm => {\r\n vm.showErrorMessage(error)\r\n })\r\n })\r\n },\r\n filters: {\r\n toStatusDescription,\r\n toRoleRightsDescription\r\n },\r\n mounted () {\r\n const self = this\r\n self.eventBus.$on(EDIT_ROLE_EVENT, self.editRole)\r\n self.eventBus.$on(REMOVE_ROLE_EVENT, (role) => {\r\n this.roleRightsList = []\r\n this.role.id = role.id\r\n this.role.name = role.name\r\n this.role.rights = role.rights\r\n self.showDeleteModal = true\r\n })\r\n self.eventBus.$on(CLOSE_MODAL_EVENT, () => {\r\n self.showAddEditModal = false\r\n self.showDeleteModal = false\r\n })\r\n }\r\n}\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=a73158d6&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=a73158d6&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a73158d6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"alert\",class:{'alert-danger': _vm.type == 'error', 'alert-success' : _vm.type == 'success'}},[_vm._v(\" \"+_vm._s(_vm.message)+\" \"),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"aria-label\":\"Close\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onClose.apply(null, arguments)}}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"×\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <!--<div id=\"alert-shim-wrap\" v-if=\"message\">\r\n <div id=\"alert-shim\" :class=\"{ type }\">\r\n <p>\r\n {{ message }}\r\n </p>\r\n </div>\r\n </div>-->\r\n\r\n <div\r\n class=\"alert\"\r\n v-bind:class=\"{'alert-danger': type == 'error', 'alert-success' : type == 'success'}\"\r\n >\r\n {{ message }}\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\" @click.stop=\"onClose\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n.alert {\r\n position: fixed;\r\n z-index: 9999;\r\n top: 5px;\r\n min-width: 50%;\r\n /*max-width: 56%;*/\r\n}\r\n\r\n/*#alert-shim-wrap #alert-shim.error {\r\n background: #97002e\r\n }\r\n\r\n #alert-shim-wrap #alert-shim.success {\r\n background: #1a2c11\r\n }*/\r\n</style>\r\n\r\n<script>\r\nimport { ALERT_TYPE_ERROR } from '@/utils/constants'\r\n\r\nexport default {\r\n name: 'app-alert',\r\n props: {\r\n type: {\r\n type: String,\r\n required: false,\r\n default: ALERT_TYPE_ERROR\r\n },\r\n message: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n methods: {\r\n onClose () {\r\n this.$emit('alertclose')\r\n }\r\n }\r\n}\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppAlert.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppAlert.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AppAlert.vue?vue&type=template&id=05d80fa6&scoped=true\"\nimport script from \"./AppAlert.vue?vue&type=script&lang=js\"\nexport * from \"./AppAlert.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppAlert.vue?vue&type=style&index=0&id=05d80fa6&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05d80fa6\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmployeeAutocomplete.vue?vue&type=style&index=0&id=20f75bb5&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoleList.vue?vue&type=style&index=0&id=02615670&prod&scoped=true&lang=scss\"","var render, staticRenderFns\nimport script from \"./AlertMixin.vue?vue&type=script&lang=js\"\nexport * from \"./AlertMixin.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<script>\r\nimport { ALERT_TYPE_ERROR, ALERT_TYPE_SUCCESS } from '@/utils/constants'\r\n\r\nexport default {\r\n data () {\r\n return {\r\n alert: {\r\n message: '',\r\n type: ALERT_TYPE_ERROR\r\n }\r\n }\r\n },\r\n methods: {\r\n showSuccessMessage (message) {\r\n this.alert.message = message\r\n this.alert.type = ALERT_TYPE_SUCCESS\r\n },\r\n showErrorMessage (errorMessage) {\r\n console.log(errorMessage)\r\n this.alert.message = errorMessage\r\n this.alert.type = ALERT_TYPE_ERROR\r\n },\r\n closeMessage () {\r\n this.alert.message = ''\r\n this.alert.isActive = false\r\n }\r\n }\r\n}\r\n</script>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertMixin.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertMixin.vue?vue&type=script&lang=js\"","var render, staticRenderFns\nimport script from \"./ErrorMixin.vue?vue&type=script&lang=js\"\nexport * from \"./ErrorMixin.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<script>\r\n\r\nimport { ServerValidationError } from '@/utils/errors'\r\n\r\nexport default {\r\n data () {\r\n return {\r\n errors: []\r\n }\r\n },\r\n methods: {\r\n handleError (error) {\r\n if (error instanceof ServerValidationError) {\r\n var data = {}\r\n this.errors = [...data.errorList]\r\n }\r\n this.showErrorMessage(error.message)\r\n }\r\n }\r\n}; </script>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorMixin.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorMixin.vue?vue&type=script&lang=js\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"userView\"}},[_c('transition',{attrs:{\"name\":\"slide-fade\"}},[(_vm.alert.message)?_c('app-alert',{attrs:{\"type\":_vm.alert.type,\"message\":_vm.alert.message},on:{\"alertclose\":_vm.closeMessage}}):_vm._e()],1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('h4',[_vm._v(\"manage application users\")]),_c('app-modal',{attrs:{\"show\":_vm.showAddEditModal,\"title\":_vm.user.isNew ? 'add new user': 'edit user'},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c('button',{staticClass:\"btn btn-danger d-inline mr-2\",attrs:{\"disabled\":_vm.isSavingUser},on:{\"click\":function($event){$event.preventDefault();return _vm.cancelAddOrEdit.apply(null, arguments)}}},[_vm._v(\"Cancel\")]),_c('button',{staticClass:\"btn btn-primary d-inline mr-2\",class:{ spin: _vm.isSavingUser },attrs:{\"disabled\":_vm.isSavingUser},on:{\"click\":function($event){$event.preventDefault();return _vm.saveUser.apply(null, arguments)}}},[_vm._v(\" Submit \"),_c('span',{staticClass:\"spinner\"})])]},proxy:true}])},[_c('ul',{staticClass:\"error\"},_vm._l((_vm.errors),function(error){return _c('li',{key:error.message},[_vm._v(_vm._s(error.message))])}),0),_c('form',{attrs:{\"id\":\"userForm\"}},[_c('fieldset',{attrs:{\"disabled\":_vm.isSavingUser}},[(_vm.user.isNew)?_c('employee-autocomplete',{attrs:{\"items\":_vm.searchedEmployees,\"id\":\"emp_search\",\"data\":_vm.user.name,\"isShown\":_vm.showAddEditModal,\"isRequired\":\"\"}}):_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.user.name))]),_c('div',{staticClass:\"form-group row mt-4\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.status),expression:\"user.status\"}],staticClass:\"form-control col-md-2 my-auto\",staticStyle:{\"margin-left\":\"-15px\"},attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.user.status)?_vm._i(_vm.user.status,null)>-1:(_vm.user.status)},on:{\"change\":function($event){var $$a=_vm.user.status,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.user, \"status\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.user, \"status\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.user, \"status\", $$c)}}}}),_c('label',{staticClass:\"col-md-4 mr-0 mt-2\"},[_vm._v(_vm._s(_vm._f(\"toStatusDescription\")(_vm.user.status)))])]),_c('div',{staticClass:\"form-group row mt-4\"},[_c('label',{staticClass:\"col-md-2 mr-0 text-left\"},[_vm._v(\" role \"),_c('span',{staticClass:\"text-danger font-weight-bold\"},[_vm._v(\"*\")])]),_c('div',{staticClass:\"col-md-8 mr-0\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.roleId),expression:\"user.roleId\"}],staticClass:\"form-control\",attrs:{\"id\":\"userRole\",\"name\":\"userRole\",\"required\":\"\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.user, \"roleId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.activeRoles),function(role){return _c('option',{key:role.id,domProps:{\"value\":role.id}},[_vm._v(_vm._s(role.name))])}),0)])])],1)])]),_c('div',{staticClass:\"d-flex justify-content-end clearfix mb-4\"},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.addUser}},[_c('i',{staticClass:\"icon-expand-plus\",attrs:{\"title\":\"add new user\"}})])]),_vm._m(0),_c('user-list')],1)])],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"spinner-border text-warning\",attrs:{\"role\":\"status\"}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Loading...\")])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"autocomplete\"},[_c('floating-field',{attrs:{\"type\":\"text\",\"id\":_vm.id,\"label\":\"name\",\"isRequired\":_vm.isRequired},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}}),(_vm.isOpen || _vm.isLoading)?_c('ul',{staticClass:\"autocomplete-results\"},[(_vm.isLoading)?_c('li',{staticClass:\"loading\"},[_vm._v(\"Loading results...\")]):_vm._e(),_vm._l((_vm.results),function(result,i){return _c('li',{key:i,staticClass:\"autocomplete-result\",on:{\"click\":function($event){return _vm.setResult(result)}}},[_vm._v(\" \"+_vm._s(result.name)+\" \")])})],2):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"autocomplete\">\r\n <!--<input type=\"text\" v-model=\"search\" @input=\"onChange\" />-->\r\n <floating-field type=\"text\" :id=\"id\" label=\"name\" v-model=\"search\" :isRequired=\"isRequired\"></floating-field>\r\n <ul class=\"autocomplete-results\" v-if=\"isOpen || isLoading\">\r\n <li class=\"loading\" v-if=\"isLoading\">Loading results...</li>\r\n <li v-for=\"(result, i) in results\" :key=\"i\" class=\"autocomplete-result\" @click=\"setResult(result)\">\r\n {{ result.name }}\r\n </li>\r\n </ul>\r\n </div>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n /*.autocomplete {\r\n position: relative;\r\n width: 130px;\r\n }*/\r\n\r\n .autocomplete-results {\r\n padding: 0;\r\n margin: 0;\r\n border: 1px solid #eeeeee;\r\n max-height: 120px;\r\n overflow: auto;\r\n }\r\n\r\n .autocomplete-result {\r\n list-style: none;\r\n text-align: left;\r\n padding: 4px 2px;\r\n cursor: pointer;\r\n }\r\n\r\n .autocomplete-result:hover {\r\n background-color: #0066b2;\r\n color: white;\r\n }\r\n</style>\r\n\r\n<script>\r\nimport { debounce } from 'lodash'\r\nimport { EMPLOYEE_SEARCH_STARTED_EVENT, EMPLOYEE_SELECTED_EVENT } from '@/utils/constants'\r\n\r\nimport FloatingField from '@/components/ui/FloatingField'\r\n\r\nexport default {\r\n name: 'employee-autocomplete',\r\n inject: ['eventBus'],\r\n components: {\r\n FloatingField\r\n },\r\n props: {\r\n id: {\r\n type: String,\r\n required: false,\r\n default: 'emp_search'\r\n },\r\n items: {\r\n type: Array,\r\n required: false,\r\n default: () => []\r\n },\r\n data: {\r\n type: String,\r\n required: true,\r\n default: ''\r\n },\r\n isShown: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n },\r\n isRequired: {\r\n type: Boolean,\r\n required: false,\r\n default: false\r\n }\r\n },\r\n data () {\r\n return {\r\n search: '',\r\n results: [],\r\n isOpen: false,\r\n isLoading: false,\r\n isSearchMode: true,\r\n arrowCounter: -1\r\n }\r\n },\r\n methods: {\r\n filterResults () {\r\n this.results = this.items.filter(item => item.toLowerCase().indexOf(this.search.toLowerCase()) > -1)\r\n },\r\n setResult (result) {\r\n this.isSearchMode = false\r\n this.search = result.name\r\n this.isOpen = false\r\n this.eventBus.$emit(EMPLOYEE_SELECTED_EVENT, result)\r\n },\r\n handleClickOutside (evt) {\r\n if (!this.$el.contains(evt.target)) {\r\n this.isOpen = false\r\n this.arrowCounter = -1\r\n }\r\n }\r\n },\r\n watch: {\r\n // data (value, oldValue) {\r\n // if (value) {\r\n // this.search = value;\r\n // }\r\n // },\r\n isShown (value, oldValue) {\r\n if (value) {\r\n this.isSearchMode = false\r\n this.search = this.data\r\n }\r\n },\r\n // Once the items content changes, it means the parent component\r\n // provided the needed data\r\n items: function (value, oldValue) {\r\n // we want to make sure we only do this when it's an async request\r\n // this.results = value.map(x => {\r\n // return {\r\n // name: x.employeeName,\r\n // id: x.userID\r\n // }\r\n // })\r\n this.results = value\r\n this.isOpen = true\r\n this.isLoading = false\r\n },\r\n search () {\r\n if (this.isSearchMode) {\r\n this.onSearch()\r\n }\r\n this.isSearchMode = true\r\n }\r\n },\r\n created () {\r\n const self = this\r\n // self.$on(\"input\", ((value) => {\r\n // alert(\"Input\")\r\n // }))\r\n self.onSearch = debounce(function () {\r\n if (self.search && self.search.length >= 4) {\r\n self.isLoading = true\r\n self.eventBus.$emit(EMPLOYEE_SEARCH_STARTED_EVENT, self.search)\r\n }\r\n }, 500)\r\n },\r\n mounted () {\r\n document.addEventListener('click', this.handleClickOutside)\r\n },\r\n destroyed () {\r\n document.removeEventListener('click', this.handleClickOutside)\r\n }\r\n}\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmployeeAutocomplete.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmployeeAutocomplete.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./EmployeeAutocomplete.vue?vue&type=template&id=20f75bb5&scoped=true\"\nimport script from \"./EmployeeAutocomplete.vue?vue&type=script&lang=js\"\nexport * from \"./EmployeeAutocomplete.vue?vue&type=script&lang=js\"\nimport style0 from \"./EmployeeAutocomplete.vue?vue&type=style&index=0&id=20f75bb5&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20f75bb5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('data-table',{attrs:{\"id\":_vm.id,\"headers\":_vm.headers,\"items\":_vm.itemsToDisplay},scopedSlots:_vm._u([{key:\"item.status\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"toStatusDescription\")(item.status))+\" \")]}},{key:\"item.actions\",fn:function({ item }){return [_c('span',{staticClass:\"action-btn mr-2 font-weight-bold h5\",on:{\"click\":function($event){return _vm.editUser(item)}}},[_vm._v(\"✎\")])]}}])}),_c('app-pager',{attrs:{\"totalNumberOfItems\":_vm.numberOfItems,\"numberOfItemsPerPage\":_vm.numberOfItemsPerPage,\"numberOfPagers\":_vm.numberOfPagers,\"currentPage\":_vm.currentPage},on:{\"paginate\":_vm.goToPage}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <data-table :id='id' :headers='headers' :items='itemsToDisplay'>\r\n <template v-slot:item.status=\"{ item }\">\r\n {{ item.status | toStatusDescription }}\r\n </template>\r\n <template v-slot:item.actions=\"{ item }\">\r\n <span class=\"action-btn mr-2 font-weight-bold h5\" @click=\"editUser(item)\">✎</span>\r\n </template>\r\n </data-table>\r\n <app-pager :totalNumberOfItems=\"numberOfItems\" :numberOfItemsPerPage=numberOfItemsPerPage :numberOfPagers=\"numberOfPagers\" :currentPage=\"currentPage\" v-on:paginate=\"goToPage\" />\r\n </div>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n .action-btn {\r\n cursor: pointer\r\n }\r\n</style>\r\n\r\n<script>\r\nimport { mapState } from 'vuex'\r\n\r\nimport { EDIT_USER_EVENT, DISABLE_USER_EVENT } from '@/utils/constants'\r\nimport { toStatusDescription } from '@/filters/enum'\r\n\r\nimport DataTable from '@/components/ui/DataTable'\r\nimport AppPager from '@/components/ui/AppPager'\r\n\r\nexport default {\r\n name: 'user-list',\r\n components: {\r\n DataTable,\r\n AppPager\r\n },\r\n inject: ['eventBus'],\r\n props: {\r\n id: {\r\n type: String,\r\n required: false,\r\n default: 'userList'\r\n }\r\n },\r\n data: () => ({\r\n headers: [\r\n {\r\n name: 'id',\r\n title: 'user id'\r\n },\r\n {\r\n name: 'name',\r\n title: 'user name'\r\n },\r\n {\r\n name: 'roleName',\r\n title: 'role'\r\n },\r\n {\r\n name: 'status',\r\n title: 'status'\r\n },\r\n {\r\n name: 'actions',\r\n title: ''\r\n }\r\n ],\r\n numberOfItemsPerPage: 2,\r\n numberOfPagers: 7,\r\n currentPage: 1\r\n }),\r\n computed: {\r\n ...mapState({\r\n users: state => state.userModule.users\r\n }),\r\n numberOfItems () {\r\n return this.users.length\r\n },\r\n itemsToDisplay () {\r\n return this.users.slice((this.currentPage - 1) * this.numberOfItemsPerPage, this.numberOfItemsPerPage * this.currentPage)\r\n }\r\n },\r\n filters: {\r\n toStatusDescription\r\n },\r\n methods: {\r\n editUser (item) {\r\n this.eventBus.$emit(EDIT_USER_EVENT, item)\r\n },\r\n disableUser (item) {\r\n this.eventBus.$emit(DISABLE_USER_EVENT, item)\r\n },\r\n goToPage (page) {\r\n this.currentPage = page\r\n }\r\n }\r\n}\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UserList.vue?vue&type=template&id=078fa87c&scoped=true\"\nimport script from \"./UserList.vue?vue&type=script&lang=js\"\nexport * from \"./UserList.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserList.vue?vue&type=style&index=0&id=078fa87c&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"078fa87c\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div id=\"userView\">\r\n <transition name=\"slide-fade\">\r\n <app-alert\r\n v-if=\"alert.message\"\r\n :type=\"alert.type\"\r\n :message=\"alert.message\"\r\n @alertclose=\"closeMessage\"\r\n />\r\n </transition>\r\n <div class=\"row\">\r\n <div class=\"col\">\r\n <h4>manage application users</h4>\r\n <app-modal :show=\"showAddEditModal\" :title=\"user.isNew ? 'add new user': 'edit user'\">\r\n <ul class=\"error\">\r\n <li v-for=\"error in errors\" :key=\"error.message\">{{ error.message }}</li>\r\n </ul>\r\n <form id=\"userForm\">\r\n <fieldset v-bind:disabled=\"isSavingUser\">\r\n <employee-autocomplete\r\n v-if=\"user.isNew\"\r\n :items=\"searchedEmployees\"\r\n id=\"emp_search\"\r\n :data=\"user.name\"\r\n :isShown=\"showAddEditModal\"\r\n isRequired\r\n />\r\n <span v-else class=\"font-weight-bold\">{{ user.name }}</span>\r\n <div class=\"form-group row mt-4\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-control col-md-2 my-auto\"\r\n style=\"margin-left:-15px\"\r\n v-model=\"user.status\"\r\n />\r\n <label class=\"col-md-4 mr-0 mt-2\">{{ user.status | toStatusDescription }}</label>\r\n </div>\r\n <div class=\"form-group row mt-4\">\r\n <label class=\"col-md-2 mr-0 text-left\">\r\n role\r\n <span class=\"text-danger font-weight-bold\">*</span>\r\n </label>\r\n <div class=\"col-md-8 mr-0\">\r\n <select\r\n class=\"form-control\"\r\n id=\"userRole\"\r\n name=\"userRole\"\r\n v-model=\"user.roleId\"\r\n required\r\n >\r\n <option\r\n v-for=\"role in activeRoles\"\r\n :value=\"role.id\"\r\n :key=\"role.id\"\r\n >{{ role.name }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </fieldset>\r\n </form>\r\n <template v-slot:footer>\r\n <button\r\n class=\"btn btn-danger d-inline mr-2\"\r\n @click.prevent=\"cancelAddOrEdit\"\r\n v-bind:disabled=\"isSavingUser\"\r\n >Cancel</button>\r\n <button\r\n class=\"btn btn-primary d-inline mr-2\"\r\n v-bind:class=\"{ spin: isSavingUser }\"\r\n @click.prevent=\"saveUser\"\r\n v-bind:disabled=\"isSavingUser\"\r\n >\r\n Submit\r\n <span class=\"spinner\"></span>\r\n </button>\r\n </template>\r\n </app-modal>\r\n <div class=\"d-flex justify-content-end clearfix mb-4\">\r\n <button type=\"button\" class=\"btn btn-primary\" @click=\"addUser\">\r\n <i class=\"icon-expand-plus\" title=\"add new user\"></i>\r\n </button>\r\n </div>\r\n <div class=\"spinner-border text-warning\" role=\"status\">\r\n <span class=\"sr-only\">Loading...</span>\r\n </div>\r\n <user-list />\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n.slide-fade-enter-active {\r\n transition: all 0.5s ease;\r\n}\r\n\r\n.slide-fade-leave-active {\r\n transition: all 0.5s cubic-bezier(1, 0.5, 0.8, 1);\r\n}\r\n\r\n.slide-fade-enter, .slide-fade-leave-to\r\n /* .slide-fade-leave-active below version 2.1.8 */ {\r\n transform: translateX(10px);\r\n opacity: 0;\r\n}\r\n\r\n.error {\r\n text-align: left;\r\n color: #ac0c0c;\r\n list-style: none;\r\n}\r\n\r\nfieldset {\r\n border: 0;\r\n}\r\n\r\nbutton {\r\n position: relative;\r\n transition: all 1s;\r\n}\r\n\r\n.spin {\r\n padding-left: 2.5em;\r\n display: block;\r\n}\r\n\r\n.spin .spinner {\r\n left: -0.6em;\r\n top: 0.4em;\r\n width: 2.5em;\r\n display: block;\r\n position: absolute;\r\n}\r\n\r\n/* spinner animation */\r\n@keyframes spinner {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n}\r\n\r\n/* The actual spinner element is a pseudo-element */\r\n.spin .spinner::before {\r\n content: \"\";\r\n width: 1.5em; /* Size of the spinner */\r\n height: 1.5em; /* Change as desired */\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n border-radius: 50%;\r\n border: solid 0.35em #000; /* Thickness/color of spinner track */\r\n border-bottom-color: #555; /* Color of variant spinner piece */\r\n animation: 0.8s linear infinite spinner; /* speed of spinner */\r\n transform: translate(-50%, -50%);\r\n will-change: transform;\r\n}\r\n\r\n/* optional, but it will affect the size if changed */\r\n*,\r\n*::before,\r\n*::after {\r\n box-sizing: border-box;\r\n}\r\n\r\ninput:invalid {\r\n border: 1px solid red !important;\r\n}\r\n</style>\r\n\r\n<script>\r\nimport store from '@/store'\r\nimport { mapGetters } from 'vuex'\r\nimport { toStatusDescription } from '@/filters/enum'\r\n\r\nimport {\r\n FETCH_USERS,\r\n CREATE_USER,\r\n UPDATE_USER,\r\n FETCH_ROLES\r\n} from '@/store/action-type'\r\nimport {\r\n CLOSE_MODAL_EVENT,\r\n EMPLOYEE_SEARCH_STARTED_EVENT,\r\n EMPLOYEE_SELECTED_EVENT,\r\n EDIT_USER_EVENT\r\n} from '@/utils/constants'\r\nimport Enums from '@/utils/enums'\r\nimport { employeeService } from '@/services'\r\n\r\nimport AppAlert from '@/components/ui/AppAlert'\r\nimport AppModal from '@/components/ui/AppModal'\r\nimport EmployeeAutocomplete from '@/components/ui/EmployeeAutocomplete'\r\nimport UserList from '@/components/user/UserList'\r\n\r\nimport AlertMixin from '@/mixins/AlertMixin'\r\nimport ErrorMixin from '@/mixins/ErrorMixin'\r\n\r\nexport default {\r\n name: 'UserView',\r\n components: {\r\n UserList,\r\n AppAlert,\r\n AppModal,\r\n EmployeeAutocomplete\r\n },\r\n mixins: [AlertMixin, ErrorMixin],\r\n inject: ['eventBus'],\r\n provide () {\r\n return {\r\n eventBus: this.eventBus\r\n }\r\n },\r\n data: () => ({\r\n user: {\r\n id: null,\r\n name: '',\r\n roleId: null,\r\n roleName: '',\r\n status: Enums.Status.Active.value,\r\n isNew: true\r\n },\r\n showAddEditModal: false,\r\n isSavingUser: false,\r\n searchedEmployees: []\r\n }),\r\n computed: {\r\n ...mapGetters(['activeRoles'])\r\n },\r\n watch: {\r\n showAddEditModal (value) {\r\n if (value && this.user.isNew) {\r\n this.$nextTick(() => {\r\n document.getElementById('emp_search').focus()\r\n })\r\n }\r\n }\r\n },\r\n methods: {\r\n setUser (employee) {\r\n this.user.name = employee.name\r\n this.user.id = employee.id\r\n },\r\n addUser () {\r\n this.user.id = null\r\n this.user.name = ''\r\n this.user.roleId = ''\r\n this.user.roleName = ''\r\n this.user.status = Enums.Status.Active.value\r\n this.user.isNew = true\r\n this.showAddEditModal = true\r\n },\r\n editUser (user) {\r\n this.user.id = user.id\r\n this.user.name = user.name\r\n this.user.roleId = user.roleId\r\n this.user.roleName = user.roleName\r\n this.user.status = user.status\r\n this.user.isNew = false\r\n this.showAddEditModal = true\r\n },\r\n saveUser () {\r\n if (this.validateAddOrEditForm()) {\r\n const self = this\r\n self.isSavingUser = true\r\n self.closeMessage()\r\n const actionType = self.user.isNew ? CREATE_USER : UPDATE_USER\r\n store\r\n .dispatch(actionType, self.user)\r\n .then(() => {\r\n self.showSuccessMessage(\r\n `User ${\r\n actionType === UPDATE_USER ? 'updated' : 'created'\r\n } successfully`\r\n )\r\n self.showAddEditModal = false\r\n })\r\n .catch((error) => {\r\n self.handleError(error)\r\n })\r\n .finally(() => {\r\n self.isSavingUser = false\r\n })\r\n }\r\n },\r\n cancelAddOrEdit () {\r\n this.showAddEditModal = false\r\n },\r\n validateAddOrEditForm () {\r\n this.errors.splice(0, this.errors.length)\r\n let form = document.querySelector('#userForm')\r\n form.reportValidity()\r\n let errors = []\r\n if (!this.user.id) {\r\n errors.push({ message: 'No user selected' })\r\n }\r\n if (!this.user.roleId) {\r\n errors.push({ message: 'No role selected' })\r\n }\r\n this.errors = [...errors]\r\n return !errors.length\r\n }\r\n },\r\n beforeRouteEnter (to, from, next) {\r\n store\r\n .dispatch(FETCH_USERS)\r\n .then(() => store.dispatch(FETCH_ROLES))\r\n .then(next)\r\n .catch((error) => {\r\n next((vm) => {\r\n vm.showErrorMessage(error)\r\n })\r\n })\r\n },\r\n filters: {\r\n toStatusDescription\r\n },\r\n mounted () {\r\n const self = this\r\n self.eventBus.$on(EDIT_USER_EVENT, self.editUser)\r\n self.eventBus.$on(CLOSE_MODAL_EVENT, () => {\r\n self.showAddEditModal = false\r\n })\r\n self.eventBus.$on(EMPLOYEE_SEARCH_STARTED_EVENT, (searchString) => {\r\n self.user.name = ''\r\n self.user.id = null\r\n self.searchedEmployees.splice(0, self.searchedEmployees.length)\r\n employeeService.searchEmployees(searchString).then((result) => {\r\n if (result.data && result.data.length) {\r\n self.searchedEmployees = [...result.data]\r\n }\r\n })\r\n })\r\n self.eventBus.$on(EMPLOYEE_SELECTED_EVENT, self.setUser)\r\n },\r\n beforeDestroy () {\r\n this.eventBus.$off(EDIT_USER_EVENT)\r\n this.eventBus.$off(CLOSE_MODAL_EVENT)\r\n this.eventBus.$off(EMPLOYEE_SEARCH_STARTED_EVENT)\r\n this.eventBus.$off(EMPLOYEE_SELECTED_EVENT)\r\n }\r\n}\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=764a6143&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=764a6143&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"764a6143\",\n null\n \n)\n\nexport default component.exports","import Enums from '@/utils/enums'\r\n\r\nexport const toStatusDescription = (status) => {\r\n status = status ? 1 : 0\r\n return Enums.convertToEnum(Enums.Status, status).description\r\n}\r\n\r\nexport const toRoleRightsDescription = (rights) => {\r\n var rightsDescriptions = []\r\n for (let right in Enums.RoleRights) {\r\n if (rights & Enums.RoleRights[right].value) {\r\n rightsDescriptions.push(Enums.RoleRights[right].description)\r\n }\r\n }\r\n return rightsDescriptions.join(', ')\r\n}\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=style&index=0&id=078fa87c&prod&scoped=true&lang=scss\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('table',[_c('thead',[_c('tr',_vm._l((_vm.headers),function(header){return _c('th',{key:header.name},[_vm._v(_vm._s(header.title || header.name))])}),0)]),_c('tbody',_vm._l((_vm.items),function(item){return _c('tr',{key:'item_row_' + item[_vm.identifierProp]},_vm._l((_vm.headers),function(header){return _c('td',{key:'item_column_' + header.name + '_' + item[_vm.identifierProp]},[_vm._t('item.' + header.name,function(){return [_c('span',[_vm._v(_vm._s(item[header.name]))])]},{\"item\":item})],2)}),0)}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <table>\r\n <thead>\r\n <tr>\r\n <th v-for=\"header in headers\" :key=\"header.name\">{{ header.title || header.name }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr v-for=\"item in items\" :key=\"'item_row_' + item[identifierProp]\">\r\n <td v-for=\"header in headers\" :key=\"'item_column_' + header.name + '_' + item[identifierProp]\">\r\n <slot :name=\"'item.' + header.name\" v-bind:item=\"item\">\r\n <span>{{ item[header.name] }}</span>\r\n </slot>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: 'data-table',\r\n props: {\r\n id: {\r\n type: String,\r\n required: false,\r\n default: 'my-data-table'\r\n },\r\n identifierProp: {\r\n type: String,\r\n required: false,\r\n default: 'id'\r\n },\r\n headers: {\r\n type: Array,\r\n required: false\r\n },\r\n items: {\r\n type: Array,\r\n required: false\r\n }\r\n }\r\n}\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DataTable.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DataTable.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DataTable.vue?vue&type=template&id=62258d1c\"\nimport script from \"./DataTable.vue?vue&type=script&lang=js\"\nexport * from \"./DataTable.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}