{"version":3,"sources":["webpack:///./src/components/datatable/datatable.vue?8781","webpack:///./src/views/configuration/users.vue?1919","webpack:///src/views/configuration/users.vue","webpack:///./src/views/configuration/users.vue?326c","webpack:///./src/views/configuration/users.vue","webpack:///./src/assets/document.svg","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./src/components/datatable/datatable.vue?b7bd","webpack:///src/components/datatable/datatable.vue","webpack:///./src/components/datatable/datatable.vue?aa5f","webpack:///./src/components/datatable/datatable.vue","webpack:///./src/assets/red_x.svg","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./src/utils/toast.js","webpack:///./node_modules/lodash/isSymbol.js"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","isPageLoading","on","$event","_e","_v","directives","name","rawName","value","searchCriteria","expression","domProps","target","composing","$set","$permissions","newUser","searchResults","results","columns","total","isDataLoading","scopedSlots","_u","key","fn","ref","row","_s","firstName","lastName","email","_l","company","index","companies","length","preventDefault","editUser","id","deleteUser","proxy","onUserSave","staticRenderFns","page","pageSize","components","data","watch","oldValue","newValue","getSearchResults","methods","resetUser","then","fetchUser","beforeMount","mounted","Promise","all","component","module","exports","root","now","Date","reWhitespace","trimmedEndIndex","string","test","charAt","_t","localDatasetTotal","isFirstPage","turnPage","currentPage","isLastPage","query","$$selectedVal","Array","prototype","filter","call","options","o","selected","map","val","_value","multiple","onPageSizeChange","size","column","field","isVisible","handleColumnSelection","checked","display","applyColumnVisibility","class","hasData","isAllCurrentPageRecordsSelected","checkAll","handleSortColumn","getSortDirection","isLocalData","filterable","item","handleFilterSelection","filterOptions","onFilter","visibleColumns","onRowClass","onRowClick","onRowDblClick","isSelected","selectRecord","props","pageSizeOptions","selectedRows","selectable","Boolean","isLoading","columnFilter","rowClass","isOpen","columnChanges","filterChanges","localDataset","values","forEach","computed","availableRecords","selectableColumns","contentColumns","$emit","getItemValue","columnSplit","shift","parentColumn","join","sortOrder","fieldName","sortDirection","push","document","querySelector","scrollTo","sort","value1","value2","find","records","pos","splice","isAllChecked","uncheckedItems","toggleColumnDropdown","i","generateColumnFilters","created","Object","keys","q","reTrimStart","baseTrim","slice","replace","isObject","toNumber","FUNC_ERROR_TEXT","nativeMax","Math","max","nativeMin","min","debounce","func","wait","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","leadingEdge","setTimeout","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","clearTimeout","flush","debounced","isInvoking","arguments","isSymbol","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","defaultOptions","noCloseButton","autoHideDelay","toaster","isStatus","success","context","message","overrideOptions","variant","$root","$bvToast","toast","danger","baseGetTag","isObjectLike","symbolTag"],"mappings":"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","file":"js/chunk-4de0a820.a009b85b.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./datatable.vue?vue&type=style&index=0&id=4a015229&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('fragment',[_c('div',{staticClass:\"main_page\"},[_c('app-navbar'),_c('div',{staticClass:\"page\"},[_c('loading',{attrs:{\"active\":_vm.isPageLoading,\"is-full-page\":\"\"},on:{\"update:active\":function($event){_vm.isPageLoading=$event}}}),(!_vm.isPageLoading)?_c('div',[_c('div',{staticClass:\"page-title\"},[_c('h1',[_vm._v(\"Users\")])]),_c('div',{staticClass:\"page-content\"},[_c('div',{staticClass:\"form-group row\"},[_c('label',{staticClass:\"col-sm-2 col-form-label\",attrs:{\"for\":\"searchKeyword\"}},[_vm._v(\"Search by Keyword\")]),_c('div',{staticClass:\"col-sm-8\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchCriteria.keyword),expression:\"searchCriteria.keyword\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"searchKeyword\",\"name\":\"searchKeyword\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.searchCriteria.keyword)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.searchCriteria, \"keyword\", $event.target.value)}}}),_c('small',{staticClass:\"form-text text-muted\",attrs:{\"id\":\"passwordHelpBlock\"}},[_vm._v(\" Default search will check against first/last name; provide @ to instead search against email address. \")])]),_c('div',{staticClass:\"col-sm-2\"},[(_vm.$permissions().hasEditUserPermission)?_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.newUser}},[_c('i',{staticClass:\"fas fa-plus-circle\"}),_vm._v(\" Add New \")]):_vm._e()])]),_c('data-table',{attrs:{\"data\":_vm.searchResults.results,\"columns\":_vm.columns,\"total\":_vm.searchResults.total,\"query\":_vm.searchCriteria,\"isLoading\":_vm.isDataLoading,\"column-filter\":false},scopedSlots:_vm._u([{key:\"firstName\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.firstName))]}},{key:\"lastName\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.lastName))]}},{key:\"email\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.email))]}},{key:\"company\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._l((row.companies),function(company,index){return _c('span',{key:'user-search-company-' + index},[_vm._v(\" \"+_vm._s(company.name)+\" \"),_c('br')])}),(row.companies.length === 0)?_c('span',[_vm._v(\"---\")]):_vm._e()]}},{key:\"edit\",fn:function(ref){\nvar row = ref.row;\nreturn [(_vm.$permissions().hasEditUserPermission)?_c('a',{staticClass:\"d-flex justify-content-between align-items-center flex-column\",attrs:{\"href\":\"#\",\"role\":\"button\",\"title\":\"Edit\"},on:{\"click\":function($event){$event.preventDefault();return _vm.editUser(row.id)}}},[_c('img',{staticClass:\"mb-1\",attrs:{\"src\":require(\"@/assets/document.svg\"),\"alt\":\"\"}}),_c('span',{staticClass:\"small-grey\"},[_vm._v(\"Edit\")])]):_vm._e()]}},{key:\"delete\",fn:function(ref){\nvar row = ref.row;\nreturn [(_vm.$permissions().hasDeleteUserPermission)?_c('a',{staticClass:\"d-flex justify-content-between align-items-center flex-column\",attrs:{\"href\":\"#\",\"role\":\"button\",\"title\":\"Delete\"},on:{\"click\":function($event){$event.preventDefault();return _vm.deleteUser(row.id)}}},[_c('img',{staticClass:\"mb-1\",attrs:{\"src\":require(\"@/assets/red_x.svg\"),\"alt\":\"\"}}),_c('span',{staticClass:\"small-grey\"},[_vm._v(\"Delete\")])]):_vm._e()]}},{key:\"loading\",fn:function(){return [_c('loading',{attrs:{\"active\":_vm.isDataLoading,\"is-full-page\":false},on:{\"update:active\":function($event){_vm.isDataLoading=$event}}})]},proxy:true},{key:\"no-records\",fn:function(){return [_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\"No records found.\")])]},proxy:true}],null,false,2707520200)})],1)]):_vm._e()],1)],1),_c('b-modal',{attrs:{\"id\":\"bv-modal-user\",\"size\":\"lg\",\"hide-header\":\"\",\"hide-footer\":\"\",\"no-close-on-backdrop\":true}},[_c('user',{on:{\"save-action\":_vm.onUserSave}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <fragment>\r\n    <div class=\"main_page\">\r\n      <app-navbar></app-navbar>\r\n      <div class=\"page\">\r\n        <loading :active.sync=\"isPageLoading\" is-full-page></loading>\r\n        <div v-if=\"!isPageLoading\">\r\n          <div class=\"page-title\">\r\n            <h1>Users</h1>\r\n          </div>\r\n          <div class=\"page-content\">\r\n            <div class=\"form-group row\">\r\n              <label for=\"searchKeyword\" class=\"col-sm-2 col-form-label\">Search by Keyword</label>\r\n              <div class=\"col-sm-8\">\r\n                <input type=\"text\" id=\"searchKeyword\" name=\"searchKeyword\" class=\"form-control\" autocomplete=\"off\" v-model=\"searchCriteria.keyword\" />\r\n                <small id=\"passwordHelpBlock\" class=\"form-text text-muted\">\r\n                  Default search will check against first/last name; provide @ to instead search against email address.\r\n                </small>\r\n              </div>\r\n              <div class=\"col-sm-2\">\r\n                <button v-if=\"$permissions().hasEditUserPermission\" type=\"button\" class=\"btn btn-primary\" @click=\"newUser\">\r\n                  <i class=\"fas fa-plus-circle\"></i> Add New\r\n                </button>\r\n              </div>\r\n            </div>\r\n            <data-table :data=\"searchResults.results\" :columns=\"columns\" :total=\"searchResults.total\" :query=\"searchCriteria\"\r\n                :isLoading=\"isDataLoading\" :column-filter=\"false\">\r\n              <template v-slot:firstName=\"{ row }\">{{ row.firstName }}</template>\r\n              <template v-slot:lastName=\"{ row }\">{{ row.lastName }}</template>\r\n              <template v-slot:email=\"{ row }\">{{ row.email }}</template>\r\n              <template v-slot:company=\"{ row }\">\r\n                <span v-for=\"(company, index) in row.companies\" :key=\"'user-search-company-' + index\">\r\n                  {{ company.name }} <br />\r\n                </span>\r\n                <span v-if=\"row.companies.length === 0\">---</span>\r\n              </template>\r\n              <template v-slot:edit=\"{ row }\">\r\n                <a href=\"#\" role=\"button\" class=\"d-flex justify-content-between align-items-center flex-column\" title=\"Edit\"\r\n                    v-if=\"$permissions().hasEditUserPermission\" @click.prevent=\"editUser(row.id)\">\r\n                  <img class=\"mb-1\" src=\"@/assets/document.svg\" alt />\r\n                  <span class=\"small-grey\">Edit</span>\r\n                </a>\r\n              </template>\r\n              <template v-slot:delete=\"{ row }\">\r\n                <a href=\"#\" role=\"button\" class=\"d-flex justify-content-between align-items-center flex-column\" title=\"Delete\"\r\n                    v-if=\"$permissions().hasDeleteUserPermission\" @click.prevent=\"deleteUser(row.id)\">\r\n                  <img class=\"mb-1\" src=\"@/assets/red_x.svg\" alt />\r\n                  <span class=\"small-grey\">Delete</span>\r\n                </a>\r\n              </template>\r\n              <template v-slot:loading>\r\n                <loading :active.sync=\"isDataLoading\" :is-full-page=\"false\"></loading>\r\n              </template>\r\n              <template v-slot:no-records>\r\n                <div class=\"alert alert-warning\" role=\"alert\">No records found.</div>\r\n              </template>\r\n            </data-table>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <b-modal id=\"bv-modal-user\" size=\"lg\" hide-header hide-footer :no-close-on-backdrop=\"true\">\r\n      <user @save-action=\"onUserSave\"></user>\r\n    </b-modal>\r\n  </fragment>\r\n</template>\r\n\r\n<script>\r\nimport { mapActions } from \"vuex\";\r\nimport MessageBox from \"@/utils/messagebox\";\r\nimport Toast from \"@/utils/toast\";\r\nimport { UserService } from \"@/services/\";\r\nimport debounce from \"lodash/debounce\";\r\n\r\nimport { DataTable } from \"@/components/datatable/\";\r\n\r\nconst defaultSearchCriteria = {\r\n  page: 1,\r\n  pageSize: 20\r\n};\r\n\r\nexport default {\r\n  name: \"configuration-users\",\r\n  components: {\r\n    'app-navbar': () => import('@/components/app-navbar.vue'),\r\n    'data-table': DataTable,\r\n    'user': () => import('@/views/configuration/components/user.vue')\r\n  },\r\n  data: function() {\r\n    return {\r\n      isPageLoading: true,\r\n      isDataLoading: false,\r\n      searchResults: { total: 0, results: [] },\r\n      searchCriteria: null,\r\n      columns: [\r\n        { display: \"First Name\", field: \"firstName\", sortable: true },\r\n        { display: \"Last Name\", field: \"lastName\", sortable: true },\r\n        { display: \"Email\", field: \"email\", sortable: false },\r\n        { display: \"Company\", field: \"company\", sortable: false },\r\n        { field: 'edit' },\r\n        { field: 'delete' }\r\n      ],\r\n    };\r\n  },\r\n  watch: {\r\n    \"searchCriteria.page\": function(newValue, oldValue) {\r\n      if (typeof oldValue !== 'undefined' && newValue !== oldValue) {\r\n        this.getSearchResults();\r\n      }\r\n    },\r\n    \"searchCriteria.pageSize\": function(newValue, oldValue) {\r\n      if (typeof oldValue !== 'undefined' && newValue !== oldValue) {\r\n        this.searchCriteria.page = 1;\r\n        this.getSearchResults();\r\n      }\r\n    },\r\n    \"searchCriteria.sortDirection\": function(newValue, oldValue) {\r\n      if (typeof oldValue !== 'undefined' && newValue !== oldValue) {\r\n        this.getSearchResults();\r\n      }\r\n    },\r\n    \"searchCriteria.sortOrder\": function(newValue, oldValue) {\r\n      if (typeof oldValue !== 'undefined' && newValue !== oldValue) {\r\n        this.getSearchResults();\r\n      }\r\n    },\r\n    \"searchCriteria.keyword\": debounce(function() { this.getSearchResults() }, 500, false)\r\n  },\r\n  methods: {\r\n    newUser() {\r\n      this.resetUser().then(() => {\r\n        this.$bvModal.show(\"bv-modal-user\");\r\n      });\r\n    },\r\n    editUser(id) {\r\n      this.fetchUser(id).then(() => {\r\n        this.$bvModal.show(\"bv-modal-user\");\r\n      });\r\n    },\r\n    async deleteUser(id) {\r\n      let confirm = await MessageBox.confirm(this, \"Remove User\", \"Are you sure you want to remove user?\");\r\n\r\n      if (confirm) {\r\n        this.removeUser(id).then(() => {\r\n          Toast.success(this, \"Successfully removed user!\");\r\n        });\r\n      }\r\n    },\r\n    getSearchResults() {\r\n      if (!this.isPageLoading) {\r\n        this.isDataLoading = true;\r\n      }\r\n\r\n      return UserService.search(this.searchCriteria).then(response => {\r\n        this.searchResults = response.data;\r\n        this.isDataLoading = false;\r\n      });\r\n    },\r\n    onUserSave () {\r\n      this.getSearchResults();\r\n    },\r\n    ...mapActions([ \"fetchRoles\", \"fetchUser\", \"fetchUsers\", \"fetchZones\", \"removeUser\", \"resetUser\" ])\r\n  },\r\n  beforeMount() {\r\n    this.searchCriteria = { ...defaultSearchCriteria };\r\n  },\r\n  mounted: function() {\r\n    Promise.all([\r\n      this.fetchRoles(),\r\n      this.fetchZones(),\r\n      this.getSearchResults()\r\n    ])\r\n    .then(() => {\r\n        this.isPageLoading = false;\r\n      }\r\n    );\r\n  }\r\n};\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./users.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./users.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./users.vue?vue&type=template&id=3ff3d950&\"\nimport script from \"./users.vue?vue&type=script&lang=js&\"\nexport * from \"./users.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","module.exports = __webpack_public_path__ + \"img/document.fac8cbfe.svg\";","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('fragment',[_c('div',{staticClass:\"row align-items-center btn-toolbar mt-3\",attrs:{\"role\":\"toolbar\"}},[_c('div',{staticClass:\"col-lg-auto d-flex justify-content-center justify-content-lg-start\"},[_c('div',{staticClass:\"btn-group mb-0 d-print-none\",attrs:{\"role\":\"group\"}},[_vm._t(\"header-custom-btns\")],2)]),_c('div',{staticClass:\"col py-3 text-center\"},[_vm._v(_vm._s(_vm.localDatasetTotal)+\" record(s) found\")]),_c('div',{staticClass:\"col-lg-auto d-flex flex-column flex-sm-row align-items-center justify-content-center justify-content-lg-end d-print-none\"},[_c('div',{staticClass:\"btn-group mr-2 mb-0 p-1\",attrs:{\"role\":\"group\"}},[_c('button',{staticClass:\"btn btn-link\",attrs:{\"type\":\"button\",\"disabled\":_vm.isFirstPage,\"aria-label\":\"Previous page\"},on:{\"click\":function($event){return _vm.turnPage(-1)}}},[_c('i',{staticClass:\"fa fa-angle-left fa-lg\"})]),_c('span',{staticClass:\"btn\"},[_vm._v(\"Page \"+_vm._s(_vm.currentPage))]),_c('button',{staticClass:\"btn btn-link\",attrs:{\"type\":\"button\",\"disabled\":_vm.isLastPage,\"aria-label\":\"Next page\"},on:{\"click\":function($event){return _vm.turnPage(1)}}},[_c('i',{staticClass:\"fa fa-angle-right fa-lg\"})])]),_c('div',{staticClass:\"mr-2 p-1\"},[_c('label',{staticClass:\"sr-only\",attrs:{\"for\":\"PageSize\"}},[_vm._v(\"Results per page\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.query.pageSize),expression:\"query.pageSize\"}],staticClass:\"form-control border-primary\",attrs:{\"id\":\"PageSize\",\"name\":\"PageSize\"},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.query, \"pageSize\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])},function($event){return _vm.onPageSizeChange()}]}},_vm._l((_vm.pageSizeOptions),function(size){return _c('option',{key:size,domProps:{\"value\":size}},[_vm._v(_vm._s(size)+\" / Page\")])}),0)]),(_vm.columnFilter)?_c('div',{staticClass:\"dropdown p-1\"},[_c('button',{staticClass:\"btn btn-outline-dark dropdown-toggle\",attrs:{\"type\":\"button\",\"id\":\"dropdownMenuButton\",\"data-toggle\":\"dropdown\",\"aria-label\":\"Edit columns\",\"aria-haspopup\":\"true\",\"aria-expanded\":\"false\"}},[_c('i',{staticClass:\"fa fa-columns\"}),_c('span',{staticClass:\"caret\"})]),_c('div',{staticClass:\"dropdown-menu dropdown-menu-right\"},[_c('h6',{staticClass:\"dropdown-header\"},[_vm._v(\"Toggle columns\")]),_vm._l((_vm.selectableColumns),function(column){return _c('div',{key:column.field,staticClass:\"dropdown-item\"},[_c('div',{staticClass:\"form-check\"},[_c('input',{staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":'-col-' + column.field,\"name\":'-col-' + column.field},domProps:{\"checked\":column.isVisible},on:{\"change\":function($event){return _vm.handleColumnSelection(column, $event.target.checked)}}}),_c('label',{staticClass:\"form-check-label\",attrs:{\"for\":'-col-' + column.field}},[_vm._v(_vm._s(column.display))])])])}),_c('div',{staticClass:\"dropdown-item\"},[_c('button',{staticClass:\"btn btn-primary btn-block\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.applyColumnVisibility}},[_vm._v(\"Apply\")])])],2)]):_vm._e()])]),_c('div',{staticClass:\"table-responsive mt-3 d-print-none\"},[_c('table',{class:['table', { 'table-hover': _vm.hasData }]},[_c('thead',[(_vm.selectable)?_c('th',{staticClass:\"check-all\"},[_c('label',{staticClass:\"control control-checkbox\",attrs:{\"for\":\"checkall\"}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Select all rows\")]),_c('input',{attrs:{\"id\":\"checkall\",\"type\":\"checkbox\",\"name\":\"checkall\"},domProps:{\"checked\":_vm.isAllCurrentPageRecordsSelected},on:{\"click\":_vm.checkAll}}),_c('div',{staticClass:\"control_indicator\"})])]):_vm._e(),_vm._l((_vm.visibleColumns),function(column){return _c('th',{key:column.field},[_vm._v(\" \"+_vm._s(column.display || ' ')+\" \"),(column.sortable)?_c('a',{attrs:{\"href\":\"#\",\"role\":\"button\",\"aria-label\":\"Sort\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleSortColumn(column.field)}}},[_c('i',{class:_vm.getSortDirection(column.field)})]):_vm._e(),(_vm.isLocalData && column.filterable)?_c('button',{staticClass:\"btn btn-link dropdown-toggle\",attrs:{\"id\":((column.field) + \"-filter\"),\"type\":\"button\",\"data-toggle\":\"dropdown\",\"aria-haspopup\":\"true\",\"aria-expanded\":\"false\"}},[_c('i',{staticClass:\"fas fa-filter\",attrs:{\"aria-label\":\"Filter\"}})]):_vm._e(),(_vm.isLocalData && column.filterable)?_c('div',{staticClass:\"dropdown-menu\",attrs:{\"aria-labelledby\":((column.field) + \"-filter\")}},[_vm._l((column.filterOptions),function(item){return _c('div',{key:(\"filter-\" + (column.field) + \"-\" + item),staticClass:\"dropdown-item\"},[_c('div',{staticClass:\"form-check\"},[_c('input',{staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":(\"filter-\" + (column.field) + \"-\" + item)},on:{\"change\":function($event){return _vm.handleFilterSelection(column.field, item, $event.target.checked)}}}),_c('label',{staticClass:\"form-check-label\",attrs:{\"for\":(\"filter-\" + (column.field) + \"-\" + item)}},[_vm._v(_vm._s(item))])])])}),(!column.filterOptions.length)?_c('div',{staticClass:\"dropdown-item\"},[_vm._v(\" No Filters \")]):_vm._e(),_c('div',{staticClass:\"dropdown-item\"},[_c('button',{staticClass:\"btn btn-primary btn-block\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.onFilter()}}},[_vm._v(\"Apply\")])])],2):_vm._e()])})],2),(_vm.isLoading)?_c('tbody',[_c('tr',[_c('td',{attrs:{\"colspan\":_vm.visibleColumns.length + 1}},[_vm._t(\"loading\",[_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\"Loading...\")])])],2)])]):(_vm.hasData)?_c('tbody',[_vm._l((_vm.availableRecords),function(item){return [_c('tr',{key:item.id,class:_vm.onRowClass(item),on:{\"click\":function($event){if (_vm.onRowClick) { _vm.onRowClick(item) }},\"dblclick\":function($event){if (_vm.onRowDblClick) { _vm.onRowDblClick(item) }}}},[(_vm.selectable)?_c('th',{attrs:{\"scope\":\"row\"}},[_c('label',{staticClass:\"control control-checkbox\",attrs:{\"for\":(\"check-\" + (item.id))}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Select row\")]),_c('input',{attrs:{\"id\":(\"check-\" + (item.id)),\"type\":\"checkbox\",\"name\":\"category\"},domProps:{\"value\":item.id,\"checked\":_vm.isSelected(item.id)},on:{\"change\":function($event){return _vm.selectRecord($event.target.value)}}}),_c('div',{staticClass:\"control_indicator\"})])]):_vm._e(),_vm._l((_vm.contentColumns),function(column){return _c('td',{key:column.field},[_vm._t(column.field,null,{\"row\":item})],2)}),_vm._t(\"default\",null,{\"row\":item})],2)]})],2):_c('tbody',[_c('tr',[_c('td',{attrs:{\"colspan\":_vm.visibleColumns.length + 1}},[_vm._t(\"no-records\",[_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\"No records found.\")])])],2)])])])]),(_vm.hasData)?_c('div',{staticClass:\"mt-3 d-none d-print-block\"},[_vm._l((_vm.availableRecords),function(item){return [_c('dl',{key:item.id,class:_vm.onRowClass(item)},_vm._l((_vm.columns),function(column){return _c('fragment',{key:column.field},[_c('dt',[_vm._v(_vm._s(column.display || ' '))]),_c('dd',[_vm._t(column.field,null,{\"row\":item})],2)])}),1)]})],2):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <fragment>\r\n    <div class=\"row align-items-center btn-toolbar mt-3\" role=\"toolbar\">\r\n      <div class=\"col-lg-auto d-flex justify-content-center justify-content-lg-start\">\r\n        <div class=\"btn-group mb-0 d-print-none\" role=\"group\">\r\n          <slot name=\"header-custom-btns\"></slot>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col py-3 text-center\">{{ localDatasetTotal }} record(s) found</div>\r\n\r\n      <div class=\"col-lg-auto d-flex flex-column flex-sm-row align-items-center justify-content-center justify-content-lg-end d-print-none\">\r\n        <div class=\"btn-group mr-2 mb-0 p-1\" role=\"group\">\r\n          <button\r\n            type=\"button\"\r\n            class=\"btn btn-link\"\r\n            @click=\"turnPage(-1)\"\r\n            :disabled=\"isFirstPage\"\r\n            aria-label=\"Previous page\"\r\n          >\r\n            <i class=\"fa fa-angle-left fa-lg\"></i>\r\n          </button>\r\n\r\n          <span class=\"btn\">Page {{ currentPage }}</span>\r\n\r\n          <button\r\n            type=\"button\"\r\n            class=\"btn btn-link\"\r\n            @click=\"turnPage(1)\"\r\n            :disabled=\"isLastPage\"\r\n            aria-label=\"Next page\"\r\n          >\r\n            <i class=\"fa fa-angle-right fa-lg\"></i>\r\n          </button>\r\n        </div>\r\n\r\n        <div class=\"mr-2 p-1\">\r\n          <label class=\"sr-only\" for=\"PageSize\">Results per page</label>\r\n          <select\r\n            id=\"PageSize\"\r\n            name=\"PageSize\"\r\n            class=\"form-control border-primary\"\r\n            v-model=\"query.pageSize\"\r\n            @change=\"onPageSizeChange()\"\r\n          >\r\n            <option v-for=\"size in pageSizeOptions\" :key=\"size\" :value=\"size\">{{ size }} / Page</option>\r\n          </select>\r\n        </div>\r\n\r\n        <div class=\"dropdown p-1\" v-if=\"columnFilter\">\r\n          <button\r\n            class=\"btn btn-outline-dark dropdown-toggle\"\r\n            type=\"button\"\r\n            id=\"dropdownMenuButton\"\r\n            data-toggle=\"dropdown\"\r\n            aria-label=\"Edit columns\"\r\n            aria-haspopup=\"true\"\r\n            aria-expanded=\"false\"\r\n          >\r\n            <i class=\"fa fa-columns\"></i>\r\n            <span class=\"caret\"></span>\r\n          </button>\r\n\r\n          <div class=\"dropdown-menu dropdown-menu-right\">\r\n            <h6 class=\"dropdown-header\">Toggle columns</h6>\r\n            <div class=\"dropdown-item\" v-for=\"column in selectableColumns\" :key=\"column.field\">\r\n              <div class=\"form-check\">\r\n                <input\r\n                  class=\"form-check-input\"\r\n                  type=\"checkbox\"\r\n                  :id=\"'-col-' + column.field\"\r\n                  :name=\"'-col-' + column.field\"\r\n                  :checked=\"column.isVisible\"\r\n                  @change=\"handleColumnSelection(column, $event.target.checked)\"\r\n                />\r\n                <label class=\"form-check-label\" :for=\"'-col-' + column.field\">{{ column.display }}</label>\r\n              </div>\r\n            </div>\r\n\r\n            <div class=\"dropdown-item\">\r\n              <button type=\"button\" class=\"btn btn-primary btn-block\" @click=\"applyColumnVisibility\">Apply</button>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Search results (hidden on print) -->\r\n    <div class=\"table-responsive mt-3 d-print-none\">\r\n      <table :class=\"['table', { 'table-hover': hasData }]\">\r\n        <thead>\r\n          <th v-if=\"selectable\" class=\"check-all\">\r\n            <label class=\"control control-checkbox\" for=\"checkall\">\r\n              <span class=\"sr-only\">Select all rows</span>\r\n              <input id=\"checkall\" type=\"checkbox\" name=\"checkall\" :checked=\"isAllCurrentPageRecordsSelected\" @click=\"checkAll\" />\r\n              <div class=\"control_indicator\"></div>\r\n            </label>\r\n          </th>\r\n          <th v-for=\"column in visibleColumns\" :key=\"column.field\">\r\n            {{ column.display || '&nbsp;' }}\r\n            <a\r\n              v-if=\"column.sortable\"\r\n              href=\"#\"\r\n              role=\"button\"\r\n              aria-label=\"Sort\"\r\n              @click.prevent=\"handleSortColumn(column.field)\"\r\n            >\r\n              <i :class=\"getSortDirection(column.field)\"></i>\r\n            </a>\r\n            <!-- filter start -->\r\n            <button\r\n              v-if=\"isLocalData && column.filterable\"\r\n              :id=\"`${column.field}-filter`\"\r\n              class=\"btn btn-link dropdown-toggle\"\r\n              type=\"button\"\r\n              data-toggle=\"dropdown\"\r\n              aria-haspopup=\"true\"\r\n              aria-expanded=\"false\"\r\n            >\r\n              <i class=\"fas fa-filter\" aria-label=\"Filter\"></i>\r\n            </button>\r\n            <div v-if=\"isLocalData && column.filterable\" class=\"dropdown-menu\" :aria-labelledby=\"`${column.field}-filter`\">\r\n              <!-- for each unique value in column -->\r\n              <div v-for=\"item in column.filterOptions\" :key=\"`filter-${column.field}-${item}`\" class=\"dropdown-item\">\r\n                <div class=\"form-check\">\r\n                  <input type=\"checkbox\" class=\"form-check-input\" :id=\"`filter-${column.field}-${item}`\" @change=\"handleFilterSelection(column.field, item, $event.target.checked)\">\r\n                  <label class=\"form-check-label\" :for=\"`filter-${column.field}-${item}`\">{{ item }}</label>\r\n                </div>\r\n              </div>\r\n              <div v-if=\"!column.filterOptions.length\" class=\"dropdown-item\">\r\n                No Filters\r\n              </div>\r\n              <!-- /for -->\r\n              <div class=\"dropdown-item\">\r\n                <button class=\"btn btn-primary btn-block\" type=\"button\" @click=\"onFilter()\">Apply</button>\r\n              </div>\r\n            </div>\r\n            <!-- filter end -->\r\n          </th>\r\n        </thead>\r\n\r\n        <tbody v-if=\"isLoading\">\r\n          <tr>\r\n            <td :colspan=\"visibleColumns.length + 1\">\r\n              <slot name=\"loading\">\r\n                <div class=\"alert alert-warning\" role=\"alert\">Loading...</div>\r\n              </slot>\r\n            </td>\r\n          </tr>\r\n        </tbody>\r\n        <tbody v-else-if=\"hasData\">\r\n          <template v-for=\"item in availableRecords\">\r\n            <tr :key=\"item.id\" :class=\"onRowClass(item)\" @click=\"if (onRowClick) onRowClick(item)\" @dblclick=\"if (onRowDblClick) onRowDblClick(item)\">\r\n              <th scope=\"row\" v-if=\"selectable\">\r\n                <label class=\"control control-checkbox\" :for=\"`check-${item.id}`\">\r\n                  <span class=\"sr-only\">Select row</span>\r\n                  <input\r\n                    :id=\"`check-${item.id}`\"\r\n                    type=\"checkbox\"\r\n                    name=\"category\"\r\n                    :value=\"item.id\"\r\n                    :checked=\"isSelected(item.id)\"\r\n                    @change=\"selectRecord($event.target.value)\"\r\n                  />\r\n                  <div class=\"control_indicator\"></div>\r\n                </label>\r\n              </th>\r\n              <td v-for=\"column in contentColumns\" :key=\"column.field\">\r\n                <slot :name=\"column.field\" v-bind:row=\"item\">\r\n                  <!-- {{ getItemValue(item, column.field) }} -->\r\n                </slot>\r\n              </td>\r\n              <slot v-bind:row=\"item\"></slot>\r\n            </tr>\r\n          </template>\r\n        </tbody>\r\n        <tbody v-else>\r\n          <tr>\r\n            <td :colspan=\"visibleColumns.length + 1\">\r\n              <slot name=\"no-records\">\r\n                <div class=\"alert alert-warning\" role=\"alert\">No records found.</div>\r\n              </slot>\r\n            </td>\r\n          </tr>\r\n        </tbody>\r\n      </table>\r\n    </div>\r\n\r\n    <!-- Search results (print only) -->\r\n    <div class=\"mt-3 d-none d-print-block\" v-if=\"hasData\">\r\n      <template v-for=\"item in availableRecords\">\r\n        <dl :key=\"item.id\" :class=\"onRowClass(item)\">\r\n          <fragment v-for=\"column in columns\" :key=\"column.field\">\r\n            <dt>{{ column.display || '&nbsp;' }}</dt>\r\n            <dd>\r\n              <slot :name=\"column.field\" v-bind:row=\"item\"></slot>\r\n            </dd>\r\n          </fragment>\r\n        </dl>\r\n      </template>\r\n    </div>\r\n  </fragment>\r\n</template>\r\n\r\n<style scoped>\r\n.check-all {\r\n  vertical-align: baseline;\r\n}\r\n</style>\r\n\r\n<script>\r\nexport default {\r\n  name: \"data-table\",\r\n  props: {\r\n    columns: { type: Array, required: true },\r\n    data: { type: Array, required: true },\r\n    query: { type: Object, required: true },\r\n    total: { type: Number, required: true },\r\n    pageSizeOptions: { type: Array, default: () => [10, 20, 50, 100] },\r\n    selectedRows: Array,\r\n    selectable: Boolean,\r\n    isLoading: { type: Boolean, default: () => false },\r\n    columnFilter: { type: Boolean, default: true },\r\n    onRowClick: { type: Function },\r\n    onRowDblClick: { type: Function },\r\n    rowClass: { type: [String, Function], default: '' },\r\n    isLocalData: { type: Boolean, default: false }\r\n  },\r\n  data: function() {\r\n    return {\r\n      isOpen: false,\r\n      columnChanges: [],\r\n      filterChanges: [],\r\n      localDataset: [],\r\n      localDatasetTotal: 0,\r\n    };\r\n  },\r\n  watch: {\r\n    data: function(values) {\r\n      this.localDataset = values;\r\n      this.localDatasetTotal = this.total;\r\n\r\n      if (this.isLocalData) {\r\n        this.query.page = 1;\r\n        this.localDatasetTotal = values.length;\r\n\r\n        this.columns.forEach(column => {\r\n          if (column.filterable) {\r\n            this.$set(column, \"filterOptions\", this.generateColumnFilters(column));\r\n          }\r\n        });\r\n      }\r\n    },\r\n  },\r\n  computed: {\r\n    isAllCurrentPageRecordsSelected() {\r\n      return this.availableRecords.length && this.availableRecords.map(i => i.id).filter(i => !this.selectedRows.includes(i)).length === 0;\r\n    },\r\n    availableRecords () {\r\n      if (this.isLocalData) {\r\n        return [...this.localDataset].splice((+this.query.page - 1) * +this.query.pageSize, +this.query.pageSize);\r\n      }\r\n      return this.localDataset;\r\n    },\r\n    currentPage() {\r\n      return this.query.page;\r\n    },\r\n    hasData () {\r\n      return this.data.length > 0;\r\n    },\r\n    isFirstPage() {\r\n      return +this.query.page === 1;\r\n    },\r\n    isLastPage() {\r\n      return +this.query.page * +this.query.pageSize >= this.localDatasetTotal;\r\n    },\r\n    selectableColumns() {\r\n      return this.columns.filter(column => !column.ignore);\r\n    },\r\n    visibleColumns() {\r\n      return this.columns.filter(column => column.isVisible);\r\n    },\r\n    contentColumns() {\r\n      return this.columns.filter(column => column.isVisible && !column.ignore);\r\n    }\r\n  },\r\n  methods: {\r\n    applyColumnVisibility() {\r\n      this.columnChanges.forEach(({ column, isChecked }) => {\r\n        this.$set(column, \"isVisible\", isChecked);\r\n      });\r\n      this.columnChanges = []; // don't forget to clear the stack\r\n      this.$emit('selected-columns-changed', this.columns);\r\n    },\r\n    getItemValue(item, columnField) {\r\n      let columnSplit = columnField.split(\".\");\r\n      let parentColumn = columnSplit[0];\r\n\r\n      if (columnSplit.length > 1) {\r\n        columnSplit.shift();\r\n        return this.getItemValue(item[parentColumn], columnSplit.join(\".\"));\r\n      }\r\n      return item[parentColumn];\r\n    },\r\n    getSortDirection(fieldName) {\r\n      let { sortOrder, sortDirection } = this.query;\r\n\r\n      if (sortOrder === fieldName) {\r\n        if (sortDirection === \"asc\") return \"fa fa-sort-up\";\r\n        if (sortDirection === \"desc\") return \"fa fa-sort-down\";\r\n      }\r\n      return \"fa fa-sort text-muted\";\r\n    },\r\n    handleColumnSelection(column, isChecked) {\r\n      this.columnChanges.push({ column, isChecked });\r\n    },\r\n    handleFilterSelection(field, value, isChecked) {\r\n      this.filterChanges = [...this.filterChanges.filter(i => i.field !== field || i.value !== value), { field, value, isChecked }];\r\n    },\r\n    handleSortColumn(fieldName) {\r\n      // reset the direction of new column is selected\r\n      if (this.query.sortOrder !== fieldName) {\r\n        this.query.sortDirection = null;\r\n      }\r\n\r\n      this.query.sortDirection = this.query.sortDirection === null ? \"asc\" : this.query.sortDirection === \"asc\" ? \"desc\" : null;\r\n      this.query.sortOrder = this.query.sortDirection === null ? null : fieldName;\r\n      this.query.page = 1;\r\n      document.querySelector(\".table-responsive.mt-3.d-print-none\").scrollTo(0,0)\r\n      this.$emit('column-sort-changed', { sortOrder: this.query.sortOrder, sortDirection: this.query.sortDirection });\r\n\r\n      if (this.isLocalData) {\r\n        this.localDataset.sort((cat1, cat2) => {\r\n          let value1 = (cat1[this.query.sortOrder] || '').toLowerCase();\r\n          let value2 = (cat2[this.query.sortOrder] || '').toLowerCase();\r\n\r\n          if (value1 < value2) {\r\n            return this.query.sortDirection === \"asc\" ? -1 : 1;\r\n          }\r\n          else if (value1 > value2) {\r\n            return this.query.sortDirection === \"asc\" ? 1 : -1;\r\n          }\r\n          else {\r\n            return 0;\r\n          }\r\n        });\r\n      }\r\n    },\r\n    isSelected(id) {\r\n      return !!this.selectedRows.find(row => row === id);\r\n    },\r\n    onFilter () {\r\n      let activeFilters = this.filterChanges\r\n        .filter(i => i.isChecked)\r\n        .reduce((acc, curr) => { acc[curr.field] = acc[curr.field] || []; acc[curr.field].push(curr.value); return acc; }, {});\r\n\r\n      let filterItems = (data, filters) => data.filter(value => Object.keys(filters).every(key => filters[key].includes(value[key])));\r\n      let records = filterItems(this.data, activeFilters);\r\n\r\n      this.localDataset = records;\r\n      this.localDatasetTotal = records.length;\r\n      this.query.page = 1; // reset the paging\r\n    },\r\n    onPageSizeChange () {\r\n      this.$emit('page-size-changed', { pageSize: this.query.pageSize });\r\n    },\r\n    onRowClass (item) {\r\n      if (typeof(this.rowClass) === 'function') {\r\n        return this.rowClass(item)\r\n      }\r\n      return this.rowClass\r\n    },\r\n    selectRecord(id) {\r\n      let pos = this.selectedRows.indexOf(id);\r\n      if (pos === -1) this.selectedRows.push(id);\r\n      if (pos >= 0) this.selectedRows.splice(pos, 1);\r\n    },\r\n    checkAll() {\r\n      let selectedItems = this.availableRecords;\r\n\r\n      let uncheckedItems = selectedItems.map(i => i.id).filter(i => !this.selectedRows.includes(i));\r\n      let isAllChecked = uncheckedItems.length === 0\r\n\r\n      if (isAllChecked) {\r\n        for (let record of selectedItems) {\r\n          let pos = this.selectedRows.indexOf(record.id);\r\n          this.selectedRows.splice(pos, 1)\r\n        }\r\n      }\r\n      else {\r\n        uncheckedItems.forEach(i => this.selectedRows.push(i));\r\n      }\r\n    },\r\n    toggleColumnDropdown() {\r\n      this.isOpen = !this.isOpen;\r\n    },\r\n    turnPage(i) {\r\n      this.query.page = +this.query.page + i;\r\n    },\r\n    generateColumnFilters(column) {\r\n      return this.data\r\n        .map(r => r[column.field])\r\n        .filter((value, index, self) => { if (!value) return false; return self.indexOf(value) === index })\r\n        .sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\r\n    }\r\n  },\r\n  created() {\r\n    const q = { }; // add values if need to default/set values on the component level\r\n    Object.keys(q).forEach(key => this.$set(this.query, key, q[key]));\r\n\r\n    this.columns.forEach(column => {\r\n      this.$set(column, \"isVisible\", typeof column.isVisible === \"boolean\" ? column.isVisible : true);\r\n\r\n      if (this.isLocalData && column.filterable) {\r\n        this.$set(column, \"filterOptions\", this.generateColumnFilters(column));\r\n      }\r\n    });\r\n  },\r\n  mounted () {\r\n    this.localDataset = this.data;\r\n    this.localDatasetTotal = this.total;\r\n  }\r\n};\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-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--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-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=4a015229&scoped=true&\"\nimport script from \"./datatable.vue?vue&type=script&lang=js&\"\nexport * from \"./datatable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./datatable.vue?vue&type=style&index=0&id=4a015229&scoped=true&lang=css&\"\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  \"4a015229\",\n  null\n  \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"img/red_x.d0ed53ac.svg\";","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nmodule.exports = baseTrim;\n","var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nmodule.exports = debounce;\n","var baseTrim = require('./_baseTrim'),\n    isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","const defaultOptions = {\r\n  noCloseButton: true,\r\n  autoHideDelay: 3000,\r\n  toaster: \"b-toaster-top-right\",\r\n  isStatus: true\r\n};\r\n\r\nconst success = function (context, message, overrideOptions) {\r\n  let options = { variant: 'success', ...defaultOptions, ...overrideOptions };\r\n  context.$root.$bvToast.toast(message, options);\r\n}\r\n\r\nconst danger = function (context, message, overrideOptions) {\r\n  let options = { variant: 'danger', ...defaultOptions, ...overrideOptions };\r\n  context.$root.$bvToast.toast(message, options);\r\n}\r\n\r\nexport default { success, danger }\r\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n"],"sourceRoot":""}