From bd634a8db5f5e1eb47f23d698a0745c5ca7245bd Mon Sep 17 00:00:00 2001 From: "sasi.rv" Date: Sun, 24 Apr 2022 15:25:00 +0530 Subject: [PATCH] build files --- dist-archive/virtual-select-1.0.29.min.css | 14 + dist-archive/virtual-select-1.0.29.min.js | 5 + dist/virtual-select.js | 3675 ++++++++++++++++++++ dist/virtual-select.min.css | 4 +- dist/virtual-select.min.js | 4 +- docs/assets/virtual-select.js | 3675 ++++++++++++++++++++ docs/assets/virtual-select.min.css | 4 +- docs/assets/virtual-select.min.js | 4 +- 8 files changed, 7377 insertions(+), 8 deletions(-) create mode 100644 dist-archive/virtual-select-1.0.29.min.css create mode 100644 dist-archive/virtual-select-1.0.29.min.js create mode 100644 dist/virtual-select.js create mode 100644 docs/assets/virtual-select.js diff --git a/dist-archive/virtual-select-1.0.29.min.css b/dist-archive/virtual-select-1.0.29.min.css new file mode 100644 index 0000000..945d144 --- /dev/null +++ b/dist-archive/virtual-select-1.0.29.min.css @@ -0,0 +1,14 @@ +/*! + * Virtual Select v1.0.29 + * https://sa-si-dev.github.io/virtual-select + * Licensed under MIT (https://github.com/sa-si-dev/virtual-select/blob/master/LICENSE) + */ +@-webkit-keyframes vscomp-animation-spin{to{transform:rotateZ(360deg)}}@keyframes vscomp-animation-spin{to{transform:rotateZ(360deg)}}.vscomp-popup-active{overflow:hidden !important}.vscomp-ele{display:inline-block;max-width:250px;width:100%}.vscomp-wrapper{color:#333;display:inline-flex;flex-wrap:wrap;font-family:sans-serif;font-size:14px;position:relative;text-align:left;width:100%}.vscomp-wrapper *,.vscomp-wrapper *::before,.vscomp-wrapper *::after{box-sizing:border-box}.vscomp-wrapper:focus{outline:none}.vscomp-dropbox-wrapper{left:0;position:absolute;top:0}.vscomp-toggle-button{align-items:center;background-color:#fff;border:1px solid #ddd;cursor:pointer;display:flex;padding:7px 30px 7px 10px;position:relative;width:100%}.vscomp-value{height:20px;line-height:20px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vscomp-arrow{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;width:30px}.vscomp-arrow::after{transform:rotate(45deg);border:1px solid transparent;border-bottom-color:#111;border-right-color:#111;content:"";height:8px;margin-top:-6px;width:8px}.vscomp-clear-icon{height:12px;position:relative;width:12px}.vscomp-clear-icon::before,.vscomp-clear-icon::after{background-color:#999;content:"";height:12px;left:5px;position:absolute;top:0;width:2px}.vscomp-clear-icon::before{transform:rotate(45deg)}.vscomp-clear-icon::after{transform:rotate(-45deg)}.vscomp-clear-icon:hover::before,.vscomp-clear-icon:hover::after{background:#333}.vscomp-clear-button{align-items:center;border-radius:50%;display:none;height:24px;justify-content:center;margin-top:-12px;position:absolute;right:30px;top:50%;width:24px}.vscomp-clear-button:hover{background:#ccc}.vscomp-clear-button:hover .vscomp-clear-icon::before,.vscomp-clear-button:hover .vscomp-clear-icon::after{background-color:#333}.vscomp-dropbox-close-button{align-items:center;background-color:#fff;border-radius:50%;bottom:-48px;cursor:pointer;display:none;height:40px;justify-content:center;left:50%;margin-left:-20px;position:absolute;width:40px}.vscomp-value-tag.more-value-count{white-space:nowrap}.vscomp-dropbox-container{width:100%;z-index:2}.vscomp-dropbox{background-color:#fff;width:100%}.vscomp-options-container{max-height:210px;overflow:auto;position:relative}.vscomp-options-bottom-freezer{bottom:0;height:2px;left:0;position:absolute;right:0}.vscomp-option{align-items:center;cursor:pointer;display:flex;flex-wrap:wrap;height:40px;padding:0 15px;position:relative}.vscomp-option.selected{background-color:#eee}.vscomp-option.focused{background-color:#ccc}.vscomp-option.disabled{cursor:default;opacity:.5}.vscomp-option.group-title .vscomp-option-text{cursor:default;opacity:.6}.vscomp-option.group-title.selected{background-color:transparent}.vscomp-option.group-option{padding-left:30px}.vscomp-new-option-icon{height:30px;position:absolute;right:0;top:0;width:30px}.vscomp-new-option-icon::before{border:15px solid #512da8;border-bottom-color:transparent;border-left-color:transparent;content:"";position:absolute;right:0;top:0}.vscomp-new-option-icon::after{align-items:center;color:#fff;content:"+";display:flex;font-size:18px;height:15px;justify-content:center;position:absolute;right:1px;top:0;width:15px}.vscomp-option-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.vscomp-option-description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#666;font-size:13px;line-height:15px;width:100%}.vscomp-search-container{align-items:center;border-bottom:1px solid #ddd;display:flex;height:40px;padding:0 5px 0 15px;position:relative}.vscomp-search-input{background-color:transparent;border:0;color:inherit;font-size:15px;height:38px;padding:10px 0;width:calc(100% - 30px)}.vscomp-search-input:focus{outline:none}.vscomp-search-clear{align-items:center;color:#999;cursor:pointer;display:flex;font-size:25px;height:30px;justify-content:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;visibility:hidden;width:30px}.vscomp-search-clear:hover{color:inherit}.vscomp-no-options,.vscomp-no-search-results{align-items:center;display:none;justify-content:center;padding:20px 10px}.vscomp-options-loader{display:none;padding:20px 0;text-align:center}.vscomp-options-loader::before{-webkit-animation:vscomp-animation-spin .8s infinite linear;animation:vscomp-animation-spin .8s infinite linear;background-color:#fff;border-radius:50%;box-shadow:-4px -5px 3px -3px rgba(0,0,0,.3);content:"";display:inline-block;height:40px;opacity:.7;width:40px}.vscomp-ele[disabled]{cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vscomp-ele[disabled] .vscomp-wrapper{opacity:.7;pointer-events:none}.vscomp-wrapper .checkbox-icon{display:inline-flex;height:15px;margin-right:10px;position:relative;width:15px}.vscomp-wrapper .checkbox-icon::after{transition-duration:.2s;border:2px solid #888;content:"";display:inline-block;height:100%;width:100%}.vscomp-wrapper .checkbox-icon.checked::after{transform:rotate(45deg) translate(1px, -4px);border-color:#512da8;border-left-color:transparent;border-top-color:transparent;width:50%}.vscomp-wrapper.show-as-popup .vscomp-dropbox-container{align-items:center;background-color:rgba(0,0,0,.5);display:flex;height:100vh;justify-content:center;left:0;opacity:1;overflow:auto;padding:0 10px;position:fixed;top:0;width:100vw}.vscomp-wrapper.show-as-popup .vscomp-dropbox{margin-top:-24px;max-height:calc(80% - 48px);max-width:500px;position:relative;width:80%}.vscomp-wrapper.show-as-popup .vscomp-dropbox-close-button{display:flex}.vscomp-wrapper.popup-position-left .vscomp-dropbox-container{justify-content:flex-start}.vscomp-wrapper.popup-position-right .vscomp-dropbox-container{justify-content:flex-end}.vscomp-wrapper.has-select-all .vscomp-toggle-all-button{align-items:center;cursor:pointer;display:flex}.vscomp-wrapper.has-select-all .vscomp-search-input,.vscomp-wrapper.has-select-all .vscomp-toggle-all-label{width:calc(100% - 55px)}.vscomp-wrapper.has-select-all .vscomp-toggle-all-label{display:none}.vscomp-wrapper:not(.has-search-input) .vscomp-toggle-all-button{width:100%}.vscomp-wrapper:not(.has-search-input) .vscomp-toggle-all-label{display:inline-block}.vscomp-wrapper.multiple .vscomp-option .vscomp-option-text{width:calc(100% - 25px)}.vscomp-wrapper.multiple .vscomp-option .vscomp-option-description{padding-left:25px}.vscomp-wrapper.multiple .vscomp-option.selected .checkbox-icon::after{transform:rotate(45deg) translate(1px, -4px);border-color:#512da8;border-left-color:transparent;border-top-color:transparent;width:50%}.vscomp-wrapper.focused .vscomp-toggle-button,.vscomp-wrapper:focus .vscomp-toggle-button{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2)}.vscomp-wrapper.closed .vscomp-dropbox-container,.vscomp-wrapper.closed.vscomp-dropbox-wrapper{display:none}.vscomp-wrapper:not(.has-value) .vscomp-value{opacity:.5}.vscomp-wrapper.has-clear-button.has-value .vscomp-clear-button{display:flex}.vscomp-wrapper.has-clear-button .vscomp-toggle-button{padding-right:54px}.vscomp-wrapper.has-no-options .vscomp-options-container,.vscomp-wrapper.has-no-search-results .vscomp-options-container{display:none}.vscomp-wrapper.has-no-options .vscomp-no-options{display:flex}.vscomp-wrapper.has-no-search-results .vscomp-no-search-results{display:flex}.vscomp-wrapper.has-search-value .vscomp-search-clear{visibility:visible}.vscomp-wrapper.has-no-options .vscomp-toggle-all-button{opacity:.5;pointer-events:none}.vscomp-wrapper.keep-always-open .vscomp-toggle-button{padding-right:24px}.vscomp-wrapper.keep-always-open .vscomp-clear-button{right:5px}.vscomp-wrapper.keep-always-open .vscomp-arrow{display:none}.vscomp-wrapper.keep-always-open .vscomp-dropbox-container{position:relative;z-index:1}.vscomp-wrapper.keep-always-open .vscomp-dropbox{transition-duration:0s;border:1px solid #ddd;box-shadow:none}.vscomp-wrapper.keep-always-open.focused,.vscomp-wrapper.keep-always-open:focus,.vscomp-wrapper.keep-always-open:hover{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2)}.vscomp-wrapper.server-searching .vscomp-options-list{display:none}.vscomp-wrapper.server-searching .vscomp-options-loader{display:block}.vscomp-wrapper.has-error .vscomp-toggle-button{border-color:#b00020}.vscomp-wrapper.show-value-as-tags .vscomp-toggle-button{padding:4px 22px 0 10px}.vscomp-wrapper.show-value-as-tags .vscomp-value{display:flex;flex-wrap:wrap;height:auto;min-height:28px;overflow:auto;text-overflow:unset;white-space:normal}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;align-items:center;border:1px solid #ddd;border-radius:20px;display:inline-flex;font-size:12px;line-height:16px;margin:0 4px 4px 0;max-width:100%;padding:2px 3px 2px 8px}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag.more-value-count{padding-right:8px}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:calc(100% - 20px)}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag-clear-button{align-items:center;display:flex;height:20px;justify-content:center;width:20px}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag-clear-button .vscomp-clear-icon{transform:scale(0.8)}.vscomp-wrapper.show-value-as-tags .vscomp-arrow{height:34px}.vscomp-wrapper.show-value-as-tags .vscomp-clear-button{margin-top:0;top:5px}.vscomp-wrapper.show-value-as-tags.has-value .vscomp-arrow{display:none}.vscomp-wrapper.show-value-as-tags.has-value .vscomp-clear-button{right:2px}.vscomp-wrapper.show-value-as-tags:not(.has-value) .vscomp-toggle-button{padding-bottom:2px}.vscomp-wrapper.show-value-as-tags:not(.has-value) .vscomp-value{align-items:center;padding-bottom:3px}.vscomp-wrapper.text-direction-rtl{direction:rtl}.vscomp-wrapper.text-direction-rtl .vscomp-toggle-button{padding:7px 10px 7px 30px}.vscomp-wrapper.text-direction-rtl .vscomp-arrow{left:0;right:auto}.vscomp-wrapper.text-direction-rtl .vscomp-clear-button{left:30px;right:auto !important}.vscomp-wrapper.text-direction-rtl .checkbox-icon{margin-left:10px;margin-right:0}.vscomp-wrapper.text-direction-rtl .checkbox-icon.checked::after{transform:rotate(45deg) translate(-4px, 1px)}.vscomp-wrapper.text-direction-rtl .vscomp-search-container{padding:0 15px 0 5px}.vscomp-wrapper.text-direction-rtl .vscomp-toggle-all-label{text-align:right}.vscomp-wrapper.text-direction-rtl .vscomp-option{text-align:right}.vscomp-wrapper.text-direction-rtl .vscomp-option.group-option{padding-right:30px}.vscomp-wrapper.text-direction-rtl .vscomp-new-option-icon{left:0;right:auto}.vscomp-wrapper.text-direction-rtl .vscomp-new-option-icon::before{border-left-color:#512da8;border-right-color:transparent}.vscomp-wrapper.text-direction-rtl .vscomp-new-option-icon::after{left:1px;right:auto}.vscomp-wrapper.text-direction-rtl.multiple .vscomp-option.selected .checkbox-icon::after{transform:rotate(45deg) translate(-4px, 1px)}.vscomp-wrapper.text-direction-rtl.has-clear-button .vscomp-toggle-button{padding-left:54px}.vscomp-wrapper.text-direction-rtl.keep-always-open .vscomp-toggle-button{padding-left:24px}.vscomp-wrapper.text-direction-rtl.keep-always-open .vscomp-clear-button{left:5px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags .vscomp-toggle-button{padding:4px 10px 0 22px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags .vscomp-value-tag{margin:0 0 4px 4px;padding:2px 8px 2px 3px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags .vscomp-value-tag.more-value-count{padding-left:8px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags.has-value .vscomp-clear-button{left:2px} +/*! + * Popover v1.0.7 + * https://sa-si-dev.github.io/popover + * Licensed under MIT (https://github.com/sa-si-dev/popover/blob/master/LICENSE) + */ +.pop-comp-wrapper{display:none;position:absolute;top:0;left:0;opacity:0;color:#000;background-color:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.12),0 1px 5px 0 rgba(0,0,0,0.2);text-align:left;flex-wrap:wrap;z-index:1}.pop-comp-arrow{position:absolute;z-index:1;width:16px;height:16px;overflow:hidden}.pop-comp-arrow::before{content:'';position:absolute;top:8px;left:8px;width:16px;height:16px;background-color:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.12),0 1px 5px 0 rgba(0,0,0,0.2);-webkit-transform-origin:left top;transform-origin:left top;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.pop-comp-content{position:relative;z-index:2}.pop-comp-wrapper.position-bottom .pop-comp-arrow{margin-left:-8px;left:0;top:-15px}.pop-comp-wrapper.position-bottom .pop-comp-arrow::before{box-shadow:0px 0px 2px 0 rgba(0,0,0,0.14)}.pop-comp-wrapper.position-top .pop-comp-arrow{margin-left:-8px;left:0;bottom:-15px}.pop-comp-wrapper.position-right .pop-comp-arrow{margin-top:-8px;top:0;left:-15px}.pop-comp-wrapper.position-left .pop-comp-arrow{margin-top:-8px;top:0;right:-15px}.pop-comp-disable-events{pointer-events:none} + + diff --git a/dist-archive/virtual-select-1.0.29.min.js b/dist-archive/virtual-select-1.0.29.min.js new file mode 100644 index 0000000..c2001ea --- /dev/null +++ b/dist-archive/virtual-select-1.0.29.min.js @@ -0,0 +1,5 @@ +/*! + * Virtual Select v1.0.29 + * https://sa-si-dev.github.io/virtual-select + * Licensed under MIT (https://github.com/sa-si-dev/virtual-select/blob/master/LICENSE) + */!function(){"use strict";function e(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,i){if(e){if("string"==typeof e)return t(e,i);var o=Object.prototype.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?t(e,i):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,o=new Array(t);i1&&void 0!==arguments[1]&&arguments[1];return!0===e||"true"===e||!1!==e&&"false"!==e&&t}},{key:"isEmpty",value:function(e){var t=!1;return e?Array.isArray(e)?0===e.length&&(t=!0):"object"===i(e)&&0===Object.keys(e).length&&(t=!0):t=!0,t}},{key:"isNotEmpty",value:function(e){return!this.isEmpty(e)}},{key:"removeItemFromArray",value:function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!Array.isArray(t)||!t.length)return t;var s=o?e(t):t,n=s.indexOf(i);return-1!==n&&s.splice(n,1),s}},{key:"removeArrayEmpty",value:function(e){return Array.isArray(e)&&e.length?e.filter((function(e){return!!e})):[]}},{key:"getRandomInt",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=Math.ceil(t),o=Math.floor(e);return Math.floor(Math.random()*(o-i-1))+i}}],(n=null)&&o(s.prototype,n),r&&o(s,r),Object.defineProperty(s,"prototype",{writable:!1}),t}();function n(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var o,s,n=[],r=!0,a=!1;try{for(i=i.call(e);!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,s=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw s}}return n}}(e,t)||a(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){if(e){if("string"==typeof e)return l(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,o=new Array(t);ie.offsetWidth}},{key:"getData",value:function(e,t,i){if(e){var o=e?e.dataset[t]:"";return"number"===i?o=parseFloat(o)||0:"true"===o?o=!0:"false"===o&&(o=!1),o}}},{key:"setData",value:function(e,t,i){e&&(e.dataset[t]=i)}},{key:"setAttr",value:function(e,t,i){e&&e.setAttribute(t,i)}},{key:"setAttrFromEle",value:function(e,t,i,o){var s={};i.forEach((function(t){s[t]=e.getAttribute(t)})),i.forEach((function(e){var i=s[e];(i||-1!==o.indexOf(e)&&""===i)&&t.setAttribute(e,i)}))}},{key:"setStyle",value:function(e,t,i){e&&(e.style[t]=i)}},{key:"setStyles",value:function(e,t){e&&t&&Object.keys(t).forEach((function(i){e.style[i]=t[i]}))}},{key:"setAria",value:function(e,t,i){var o=t;"role"!==o&&(o="aria-".concat(o)),e.setAttribute(o,i)}},{key:"getElements",value:function(e){return e?void 0===e.forEach?[e]:e:[]}},{key:"addEvent",value:function(t,i,o){t&&s.removeArrayEmpty(i.split(" ")).forEach((function(i){e.getElements(t).forEach((function(e){e.addEventListener(i,o)}))}))}},{key:"dispatchEvent",value:function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(t){var s=e.getElements(t);setTimeout((function(){s.forEach((function(e){e.dispatchEvent(new CustomEvent(i,{bubbles:o}))}))}),0)}}},{key:"getAttributesText",value:function(e){var t="";return e?(Object.entries(e).forEach((function(e){var i=n(e,2),o=i[0],s=i[1];void 0!==s&&(t+=" ".concat(o,'="').concat(s,'" '))})),t):t}},{key:"convertPropToDataAttr",value:function(e){return e?"data-".concat(e).replace(/([A-Z])/g,"-$1").toLowerCase():""}}],(i=null)&&p(t.prototype,i),o&&p(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function h(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var o,s,n=[],r=!0,a=!1;try{for(i=i.call(e);!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,s=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw s}}return n}}(e,t)||v(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||v(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){if(e){if("string"==typeof e)return f(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,o=new Array(t);i\n \n\n
\n
\n ").concat(this.placeholder,'\n
\n\n
\n\n
\n \n
\n
\n\n ').concat(this.renderDropbox({wrapperClasses:t}),"\n ");this.$ele.innerHTML=r,this.$body=document.querySelector("body"),this.$wrapper=this.$ele.querySelector(".vscomp-wrapper"),this.hasDropboxWrapper?(this.$allWrappers=[this.$wrapper,this.$dropboxWrapper],this.$dropboxContainer=this.$dropboxWrapper.querySelector(".vscomp-dropbox-container"),u.addClass(this.$dropboxContainer,"pop-comp-wrapper")):(this.$allWrappers=[this.$wrapper],this.$dropboxContainer=this.$wrapper.querySelector(".vscomp-dropbox-container")),this.$toggleButton=this.$ele.querySelector(".vscomp-toggle-button"),this.$clearButton=this.$ele.querySelector(".vscomp-clear-button"),this.$valueText=this.$ele.querySelector(".vscomp-value"),this.$hiddenInput=this.$ele.querySelector(".vscomp-hidden-input"),this.$dropbox=this.$dropboxContainer.querySelector(".vscomp-dropbox"),this.$dropboxCloseButton=this.$dropboxContainer.querySelector(".vscomp-dropbox-close-button"),this.$search=this.$dropboxContainer.querySelector(".vscomp-search-wrapper"),this.$optionsContainer=this.$dropboxContainer.querySelector(".vscomp-options-container"),this.$optionsList=this.$dropboxContainer.querySelector(".vscomp-options-list"),this.$options=this.$dropboxContainer.querySelector(".vscomp-options"),this.$noOptions=this.$dropboxContainer.querySelector(".vscomp-no-options"),this.$noSearchResults=this.$dropboxContainer.querySelector(".vscomp-no-search-results"),this.afterRenderWrapper()}}},{key:"renderDropbox",value:function(e){var t=e.wrapperClasses,i="self"!==this.dropboxWrapper?document.querySelector(this.dropboxWrapper):null,o='
\n
\n
\n\n
\n
\n\n
\n
\n
\n
\n\n
\n
').concat(this.noOptionsText,'
\n
').concat(this.noSearchResultsText,'
\n\n \n
\n
');if(i){var s=document.createElement("div");return this.$dropboxWrapper=s,this.hasDropboxWrapper=!0,s.innerHTML=o,i.appendChild(s),u.addClass(s,"vscomp-dropbox-wrapper ".concat(t)),""}return this.hasDropboxWrapper=!1,o}},{key:"renderOptions",value:function(){var e,t=this,i="",o=this.getVisibleOptions(),n="",r="",a=!(!this.markSearchResults||!this.searchValue),l=this.labelRenderer,p=this.disableOptionGroupCheckbox,u=this.uniqueId,h=this.searchGroup,c="function"==typeof l,d=s.convertToBoolean;if(a&&(e=new RegExp("(".concat(this.searchValue,")"),"gi")),this.multiple&&(n=''),this.allowNewOption){var v=this.getTooltipAttrText("New Option");r='")}o.forEach((function(o){var s,v=o.index,f="vscomp-option",y=t.getTooltipAttrText("",!0,!0),b=n,g="",m="",O="",S=d(o.isSelected),x="";o.isFocused&&(f+=" focused"),o.isDisabled&&(f+=" disabled",x='aria-disabled="true"'),o.isGroupTitle&&(f+=" group-title",p&&(b="")),S&&(f+=" selected"),o.isGroupOption&&(f+=" group-option",O='data-group-index="'.concat(o.groupIndex,'"')),s=c?l(o):o.label,o.description&&(m='
").concat(o.description,"
")),o.isCurrentNew?(f+=" current-new",g+=r):!a||o.isGroupTitle&&!h||(s=s.replace(e,"$1")),i+='
\n ").concat(b,'\n \n ").concat(s,"\n \n ").concat(m,"\n ").concat(g,"\n
")})),this.$options.innerHTML=i,this.$visibleOptions=this.$options.querySelectorAll(".vscomp-option"),this.afterRenderOptions()}},{key:"renderSearch",value:function(){if(this.hasSearchContainer){var e="",t="";this.multiple&&!this.disableSelectAll&&(e='\n \n '.concat(this.selectAllText,"\n ")),this.hasSearch&&(t='\n ×'));var i='
\n '.concat(e,"\n ").concat(t,"\n
");this.$search.innerHTML=i,this.$searchInput=this.$dropboxContainer.querySelector(".vscomp-search-input"),this.$searchClear=this.$dropboxContainer.querySelector(".vscomp-search-clear"),this.$toggleAllButton=this.$dropboxContainer.querySelector(".vscomp-toggle-all-button"),this.$toggleAllCheckbox=this.$dropboxContainer.querySelector(".vscomp-toggle-all-checkbox"),this.addEvent(this.$searchInput,"keyup change","onSearch"),this.addEvent(this.$searchClear,"click","onSearchClear"),this.addEvent(this.$toggleAllButton,"click","onToggleAllOptions")}}},{key:"addEvents",value:function(){this.addEvent(document,"click","onDocumentClick"),this.addEvent(this.$allWrappers,"keydown","onKeyDown"),this.addEvent(this.$toggleButton,"click","onToggleButtonClick"),this.addEvent(this.$clearButton,"click","onClearButtonClick"),this.addEvent(this.$dropboxContainer,"click","onDropboxContainerClick"),this.addEvent(this.$dropboxCloseButton,"click","onDropboxCloseButtonClick"),this.addEvent(this.$optionsContainer,"scroll","onOptionsScroll"),this.addEvent(this.$options,"click","onOptionsClick"),this.addEvent(this.$options,"mouseover","onOptionsMouseOver"),this.addEvent(this.$options,"touchmove","onOptionsTouchMove"),this.addMutationObserver()}},{key:"addEvent",value:function(e,t,i){var o=this;e&&s.removeArrayEmpty(t.split(" ")).forEach((function(t){var s="".concat(i,"-").concat(t),n=o.events[s];n||(n=o[i].bind(o),o.events[s]=n),u.addEvent(e,t,n)}))}},{key:"onDocumentClick",value:function(e){var t=e.target.closest(".vscomp-wrapper");t!==this.$wrapper&&t!==this.$dropboxWrapper&&this.isOpened()&&this.closeDropbox()}},{key:"onKeyDown",value:function(e){var t=e.which||e.keyCode,i=b[t];i&&this[i](e)}},{key:"onEnterPress",value:function(e){e.preventDefault(),this.isOpened()?this.selectFocusedOption():this.openDropbox()}},{key:"onDownArrowPress",value:function(e){e.preventDefault(),this.isOpened()?this.focusOption({direction:"next"}):this.openDropbox()}},{key:"onUpArrowPress",value:function(e){e.preventDefault(),this.isOpened()?this.focusOption({direction:"previous"}):this.openDropbox()}},{key:"onToggleButtonClick",value:function(e){var t=e.target;t.closest(".vscomp-value-tag-clear-button")?this.removeValue(t.closest(".vscomp-value-tag")):t.closest(".toggle-button-child")||this.toggleDropbox()}},{key:"onClearButtonClick",value:function(){this.reset()}},{key:"onOptionsScroll",value:function(){this.setVisibleOptions()}},{key:"onOptionsClick",value:function(e){var t=e.target.closest(".vscomp-option");t&&!u.hasClass(t,"disabled")&&(u.hasClass(t,"group-title")?this.onGroupTitleClick(t):this.selectOption(t,{event:e}))}},{key:"onGroupTitleClick",value:function(e){if(e&&this.multiple&&!this.disableOptionGroupCheckbox){var t=!u.hasClass(e,"selected");this.toggleGroupTitleCheckbox(e,t),this.toggleGroupOptions(e,t)}}},{key:"onDropboxContainerClick",value:function(e){e.target.closest(".vscomp-dropbox")||this.closeDropbox()}},{key:"onDropboxCloseButtonClick",value:function(){this.closeDropbox()}},{key:"onOptionsMouseOver",value:function(e){var t=e.target.closest(".vscomp-option");t&&this.isOpened()&&(u.hasClass(t,"disabled")||u.hasClass(t,"group-title")?this.removeOptionFocus():this.focusOption({$option:t}))}},{key:"onOptionsTouchMove",value:function(){this.removeOptionFocus()}},{key:"onSearch",value:function(e){e.stopPropagation(),this.setSearchValue(e.target.value,!0)}},{key:"onSearchClear",value:function(){this.setSearchValue(""),this.focusSearchInput()}},{key:"onToggleAllOptions",value:function(){this.toggleAllOptions()}},{key:"onResize",value:function(){this.setOptionsContainerHeight(!0)}},{key:"addMutationObserver",value:function(){var e=this;if(this.hasDropboxWrapper){var t=this.$ele;this.mutationObserver=new MutationObserver((function(i){i.some((function(i){var o=d(i.removedNodes).some((function(e){return!(e!==t&&!e.contains(t))}));return o&&e.destroy(),o}))})),this.mutationObserver.observe(document.querySelector("body"),{childList:!0,subtree:!0})}}},{key:"beforeValueSet",value:function(e){this.toggleAllOptionsClass(!e&&void 0)}},{key:"beforeSelectNewValue",value:function(){var e=this,t=this.getNewOption(),i=t.index;this.newValues.push(t.value),this.setOptionProp(i,"isCurrentNew",!1),this.setOptionProp(i,"isNew",!0),setTimeout((function(){e.setSearchValue(""),e.focusSearchInput()}),0)}},{key:"afterRenderWrapper",value:function(){u.addClass(this.$ele,"vscomp-ele"),this.renderSearch(),this.setEleStyles(),this.setDropboxStyles(),this.setOptionsHeight(),this.setVisibleOptions(),this.setOptionsContainerHeight(),this.addEvents(),this.setEleProps(),this.keepAlwaysOpen||this.showAsPopup||this.initDropboxPopover(),this.initialSelectedValue?this.setValueMethod(this.initialSelectedValue,this.silentInitialValueSet):this.autoSelectFirstOption&&this.visibleOptions.length&&this.setValueMethod(this.visibleOptions[0].value,this.silentInitialValueSet),this.showOptionsOnlyOnSearch&&this.setSearchValue("",!1,!0),this.initialDisabled&&this.disable(),this.autofocus&&this.focus()}},{key:"afterRenderOptions",value:function(){var e=this.getVisibleOptions(),t=!this.options.length&&!this.hasServerSearch,i=!t&&!e.length;(!this.allowNewOption||this.hasServerSearch||this.showOptionsOnlyOnSearch)&&u.toggleClass(this.$allWrappers,"has-no-search-results",i),u.toggleClass(this.$allWrappers,"has-no-options",t),this.setOptionAttr(),this.setOptionsPosition(),this.setOptionsTooltip()}},{key:"afterSetOptionsContainerHeight",value:function(e){e&&this.showAsPopup&&this.setVisibleOptions()}},{key:"afterSetSearchValue",value:function(){this.hasServerSearch?this.serverSearch():this.setVisibleOptionsCount(),this.selectAllOnlyVisible&&this.toggleAllOptionsClass(),this.focusOption({focusFirst:!0})}},{key:"afterSetVisibleOptionsCount",value:function(){this.scrollToTop(),this.setOptionsHeight(),this.setVisibleOptions(),this.updatePosition()}},{key:"afterValueSet",value:function(){this.scrollToTop(),this.setSearchValue(""),this.renderOptions()}},{key:"afterSetOptions",value:function(e){e&&this.setSelectedProp(),this.setOptionsHeight(),this.setVisibleOptions(),this.showOptionsOnlyOnSearch&&this.setSearchValue("",!1,!0),e||this.reset()}},{key:"setProps",value:function(e){var t=this.setDefaultProps(e);this.setPropsFromElementAttr(t);var i=s.convertToBoolean;this.$ele=t.ele,this.dropboxWrapper=t.dropboxWrapper,this.valueKey=t.valueKey,this.labelKey=t.labelKey,this.descriptionKey=t.descriptionKey,this.aliasKey=t.aliasKey,this.optionHeightText=t.optionHeight,this.optionHeight=parseFloat(this.optionHeightText),this.multiple=i(t.multiple),this.hasSearch=i(t.search),this.searchGroup=i(t.searchGroup),this.hideClearButton=i(t.hideClearButton),this.autoSelectFirstOption=i(t.autoSelectFirstOption),this.hasOptionDescription=i(t.hasOptionDescription),this.silentInitialValueSet=i(t.silentInitialValueSet),this.allowNewOption=i(t.allowNewOption),this.markSearchResults=i(t.markSearchResults),this.showSelectedOptionsFirst=i(t.showSelectedOptionsFirst),this.disableSelectAll=i(t.disableSelectAll),this.keepAlwaysOpen=i(t.keepAlwaysOpen),this.showDropboxAsPopup=i(t.showDropboxAsPopup),this.hideValueTooltipOnSelectAll=i(t.hideValueTooltipOnSelectAll),this.showOptionsOnlyOnSearch=i(t.showOptionsOnlyOnSearch),this.selectAllOnlyVisible=i(t.selectAllOnlyVisible),this.alwaysShowSelectedOptionsCount=i(t.alwaysShowSelectedOptionsCount),this.disableAllOptionsSelectedText=i(t.disableAllOptionsSelectedText),this.showValueAsTags=i(t.showValueAsTags),this.disableOptionGroupCheckbox=i(t.disableOptionGroupCheckbox),this.enableSecureText=i(t.enableSecureText),this.setValueAsArray=i(t.setValueAsArray),this.disableValidation=i(t.disableValidation),this.initialDisabled=i(t.disabled),this.required=i(t.required),this.autofocus=i(t.autofocus),this.useGroupValue=i(t.useGroupValue),this.noOptionsText=t.noOptionsText,this.noSearchResultsText=t.noSearchResultsText,this.selectAllText=t.selectAllText,this.searchPlaceholderText=t.searchPlaceholderText,this.optionsSelectedText=t.optionsSelectedText,this.optionSelectedText=t.optionSelectedText,this.allOptionsSelectedText=t.allOptionsSelectedText,this.clearButtonText=t.clearButtonText,this.moreText=t.moreText,this.placeholder=t.placeholder,this.position=t.position,this.textDirection=t.textDirection,this.dropboxWidth=t.dropboxWidth,this.tooltipFontSize=t.tooltipFontSize,this.tooltipAlignment=t.tooltipAlignment,this.tooltipMaxWidth=t.tooltipMaxWidth,this.noOfDisplayValues=parseInt(t.noOfDisplayValues),this.zIndex=parseInt(t.zIndex),this.maxValues=parseInt(t.maxValues),this.name=this.secureText(t.name),this.additionalClasses=t.additionalClasses,this.popupDropboxBreakpoint=t.popupDropboxBreakpoint,this.popupPosition=t.popupPosition,this.onServerSearch=t.onServerSearch,this.labelRenderer=t.labelRenderer,this.initialSelectedValue=0===t.selectedValue?"0":t.selectedValue,this.emptyValue=t.emptyValue,this.ariaLabelledby=t.ariaLabelledby,this.maxWidth=t.maxWidth,this.selectedValues=[],this.selectedOptions=[],this.newValues=[],this.events={},this.tooltipEnterDelay=200,this.searchValue="",this.searchValueOriginal="",this.isAllSelected=!1,(void 0===t.search&&this.multiple||this.allowNewOption||this.showOptionsOnlyOnSearch)&&(this.hasSearch=!0),this.hasServerSearch="function"==typeof this.onServerSearch,(this.maxValues||this.hasServerSearch||this.showOptionsOnlyOnSearch)&&(this.disableSelectAll=!0,this.disableOptionGroupCheckbox=!0),this.keepAlwaysOpen&&(this.dropboxWrapper="self"),this.showAsPopup=this.showDropboxAsPopup&&!this.keepAlwaysOpen&&window.innerWidth<=parseFloat(this.popupDropboxBreakpoint),this.hasSearchContainer=this.hasSearch||this.multiple&&!this.disableSelectAll,this.optionsCount=this.getOptionsCount(t.optionsCount),this.halfOptionsCount=Math.ceil(this.optionsCount/2),this.optionsHeight=this.getOptionsHeight(),this.uniqueId=this.getUniqueId()}},{key:"setDefaultProps",value:function(e){var t={dropboxWrapper:"self",valueKey:"value",labelKey:"label",descriptionKey:"description",aliasKey:"alias",optionsCount:5,noOfDisplayValues:50,optionHeight:"40px",noOptionsText:"No options found",noSearchResultsText:"No results found",selectAllText:"Select All",searchPlaceholderText:"Search...",clearButtonText:"Clear",moreText:"more...",optionsSelectedText:"options selected",optionSelectedText:"option selected",allOptionsSelectedText:"All",placeholder:"Select",position:"bottom left",zIndex:e.keepAlwaysOpen?1:2,tooltipFontSize:"14px",tooltipAlignment:"center",tooltipMaxWidth:"300px",name:"",additionalClasses:"",maxValues:0,showDropboxAsPopup:!0,popupDropboxBreakpoint:"576px",popupPosition:"center",hideValueTooltipOnSelectAll:!0,emptyValue:""};return e.hasOptionDescription&&(t.optionsCount=4,t.optionHeight="50px"),Object.assign(t,e)}},{key:"setPropsFromElementAttr",value:function(e){var t=e.ele;for(var i in x){var o=t.getAttribute(i);-1===g.indexOf(i)||""!==o&&"true"!==o||(o=!0),o&&(e[x[i]]=o)}}},{key:"setEleProps",value:function(){var t=this.$ele;t.virtualSelect=this,t.value=this.multiple?[]:"",t.name=this.name,t.disabled=!1,t.required=this.required,t.autofocus=this.autofocus,t.multiple=this.multiple,t.form=t.closest("form"),t.reset=e.reset,t.setValue=e.setValueMethod,t.setOptions=e.setOptionsMethod,t.setDisabledOptions=e.setDisabledOptionsMethod,t.toggleSelectAll=e.toggleSelectAll,t.isAllSelected=e.isAllSelected,t.addOption=e.addOptionMethod,t.getNewValue=e.getNewValueMethod,t.getDisplayValue=e.getDisplayValueMethod,t.getSelectedOptions=e.getSelectedOptionsMethod,t.open=e.openMethod,t.close=e.closeMethod,t.focus=e.focusMethod,t.enable=e.enableMethod,t.disable=e.disableMethod,t.destroy=e.destroyMethod,t.validate=e.validateMethod,t.toggleRequired=e.toggleRequiredMethod,this.hasDropboxWrapper&&(this.$dropboxWrapper.virtualSelect=this)}},{key:"setValueMethod",value:function(e,t){var i={},o={},s=[],n=this.multiple,r=e;if(r){if(Array.isArray(r)||(r=[r]),n){var a=this.maxValues;a&&r.length>a&&r.splice(a)}else r.length>1&&(r=[r[0]]);r=r.map((function(e){return e||0==e?e.toString():""})),this.useGroupValue&&(r=this.setGroupOptionsValue(r)),r.forEach((function(e,t){i[e]=!0,o[e]=t})),this.allowNewOption&&r&&this.setNewOptionsFromValue(r)}if(this.options.forEach((function(e){!0!==i[e.value]||e.isDisabled||e.isGroupTitle?e.isSelected=!1:(e.isSelected=!0,s.push(e.value))})),n)this.hasOptionGroup&&this.setGroupsSelectedProp(),s.sort((function(e,t){return o[e]-o[t]}));else{var l=c(s,1);s=l[0]}this.beforeValueSet(),this.setValue(s,{disableEvent:t}),this.afterValueSet()}},{key:"setGroupOptionsValue",value:function(e){var t=[],i={},o={};return e.forEach((function(e){o[e]=!0})),this.options.forEach((function(e){var s=e.value,n=!0===o[s];e.isGroupTitle?n&&(i[e.index]=!0):(n||i[e.groupIndex])&&t.push(s)})),t}},{key:"setGroupsSelectedProp",value:function(){var e=this.isAllGroupOptionsSelected.bind(this);this.options.forEach((function(t){t.isGroupTitle&&(t.isSelected=e(t.index))}))}},{key:"setOptionsMethod",value:function(e,t){this.setOptions(e),this.afterSetOptions(t)}},{key:"setDisabledOptionsMethod",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.setDisabledOptions(e,!0),t||(this.setValueMethod(null),this.toggleAllOptionsClass()),this.setVisibleOptions()}},{key:"setDisabledOptions",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=[];if(e)if(!0===e)t&&this.options.forEach((function(e){return e.isDisabled=!0,i.push(e.value),e}));else{i=e.map((function(e){return e.toString()}));var o={};i.forEach((function(e){o[e]=!0})),t&&this.options.forEach((function(e){return e.isDisabled=!0===o[e.value],e}))}else t&&this.options.forEach((function(e){return e.isDisabled=!1,e}));this.disabledOptions=i}},{key:"setOptions",value:function(e){e||(e=[]);var t=[],i=this.disabledOptions.length,o=this.valueKey,n=this.labelKey,r=this.descriptionKey,a=this.aliasKey,l=this.hasOptionDescription,p=s.getString,u=s.convertToBoolean,h=this.secureText.bind(this),c=this.getAlias.bind(this),d=0,v=!1,f={},y=!1;this.disabledOptions.forEach((function(e){f[e]=!0})),e.forEach((function e(s){var b=h(p(s[o])),g=s.options,m=!!g,O={index:d,value:b,label:h(p(s[n])),alias:c(s[a]),isVisible:u(s.isVisible,!0),isNew:s.isNew||!1,isGroupTitle:m};if(y||""!==b||(y=!0),i&&(O.isDisabled=!0===f[b]),s.isGroupOption&&(O.isGroupOption=!0,O.groupIndex=s.groupIndex),l&&(O.description=h(p(s[r]))),s.customData&&(O.customData=s.customData),t.push(O),d+=1,m){var S=O.index;v=!0,g.forEach((function(t){t.isGroupOption=!0,t.groupIndex=S,e(t)}))}}));var b=t.length,g=this.$ele;g.options=t,g.length=b,this.options=t,this.visibleOptionsCount=b,this.lastOptionIndex=b-1,this.newValues=[],this.hasOptionGroup=v,this.hasEmptyValueOption=y,this.setSortedOptions()}},{key:"setServerOptions",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.setOptionsMethod(t,!0);var i=this.selectedOptions,o=this.options,s=!1;if(i.length){var n={};s=!0,o.forEach((function(e){n[e.value]=!0})),i.forEach((function(e){!1===n[e.value]&&(e.isVisible=!1,o.push(e))})),this.setOptionsMethod(o,!0)}if(this.allowNewOption&&this.searchValue){var r=o.some((function(t){return t.label.toLowerCase()===e.searchValue}));r||(s=!0,this.setNewOption())}s?(this.setVisibleOptionsCount(),this.multiple&&this.toggleAllOptionsClass(),this.setValueText()):this.updatePosition(),u.removeClass(this.$allWrappers,"server-searching")}},{key:"setSelectedOptions",value:function(){this.selectedOptions=this.options.filter((function(e){return e.isSelected}))}},{key:"setSortedOptions",value:function(){var e=d(this.options);this.showSelectedOptionsFirst&&this.selectedValues.length&&(e=this.hasOptionGroup?this.sortOptionsGroup(e):this.sortOptions(e)),this.sortedOptions=e}},{key:"setVisibleOptions",value:function(){var e=d(this.sortedOptions),t=2*this.optionsCount,i=this.getVisibleStartIndex(),o=this.getNewOption(),s=i+t-1,n=0;o&&(o.visibleIndex=n,n++),e=e.filter((function(e){var t=!1;return e.isVisible&&!e.isCurrentNew&&(t=n>=i&&n<=s,e.visibleIndex=n,n+=1),t})),o&&(e=[o].concat(d(e))),this.visibleOptions=e,this.renderOptions()}},{key:"setOptionsPosition",value:function(e){void 0===e&&(e=this.getVisibleStartIndex());var t=e*this.optionHeight;this.$options.style.transform="translate3d(0, ".concat(t,"px, 0)"),u.setData(this.$options,"top",t)}},{key:"setOptionsTooltip",value:function(){var e=this,t=this.getVisibleOptions(),i=this.hasOptionDescription;t.forEach((function(t){var o=e.$dropboxContainer.querySelector('.vscomp-option[data-index="'.concat(t.index,'"]'));u.setData(o.querySelector(".vscomp-option-text"),"tooltip",t.label),i&&u.setData(o.querySelector(".vscomp-option-description"),"tooltip",t.description)}))}},{key:"setValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.disableEvent,o=void 0!==i&&i,n=t.disableValidation,r=void 0!==n&&n,a=this.hasEmptyValueOption&&""===e||e;a?Array.isArray(e)?this.selectedValues=d(e):this.selectedValues=[e]:this.selectedValues=[];var l=this.getValue();this.$ele.value=l,this.$hiddenInput.value=this.getInputValue(l),this.isMaxValuesSelected=!!(this.maxValues&&this.maxValues<=this.selectedValues.length),this.toggleAllOptionsClass(),this.setValueText(),u.toggleClass(this.$allWrappers,"has-value",s.isNotEmpty(this.selectedValues)),u.toggleClass(this.$allWrappers,"max-value-selected",this.isMaxValuesSelected),r||this.validate(),o||u.dispatchEvent(this.$ele,"change",!0)}},{key:"setValueText",value:function(){var e=this.multiple,t=this.selectedValues,i=this.noOfDisplayValues,o=this.showValueAsTags,s=this.$valueText,n=[],r=[],a=t.length,l=0,p=this.isAllSelected&&!this.hasServerSearch&&!this.disableAllOptionsSelectedText&&!o;if(p&&this.hideValueTooltipOnSelectAll)s.innerHTML="".concat(this.allOptionsSelectedText," (").concat(a,")");else{var h,c=function(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=v(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var o=0,s=function(){};return{s:s,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,r=!0,a=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return r=e.done,e},e:function(e){a=!0,n=e},f:function(){try{r||null==i.return||i.return()}finally{if(a)throw n}}}}(this.getSelectedOptions({fullDetails:!0,keepSelectionOrder:!0}));try{for(c.s();!(h=c.n()).done;){var d=h.value;if(!d.isCurrentNew){if(l>=i)break;var f=d.label;if(n.push(f),l++,o){var y='\n ').concat(f,'\n \n \n \n ');r.push(y)}else r.push(f)}}}catch(e){c.e(e)}finally{c.f()}var b=a-i;b>0&&r.push('+ '.concat(b," ").concat(this.moreText,""));var g=n.join(", ");if(""===g)s.innerHTML=this.placeholder;else if(s.innerHTML=g,e){var m=this.maxValues;if(u.hasEllipsis(s)||m||this.alwaysShowSelectedOptionsCount||o){var O=''.concat(a,"");if(m&&(O+=' / '.concat(m,"")),p)s.innerHTML="".concat(this.allOptionsSelectedText," (").concat(a,")");else if(o)s.innerHTML=r.join(""),this.$valueTags=s.querySelectorAll(".vscomp-value-tag"),this.setValueTagAttr();else{var S=1===a?this.optionSelectedText:this.optionsSelectedText;s.innerHTML="".concat(O," ").concat(S)}}else r=[]}}var x="";0===a?x=this.placeholder:o||(x=r.join(", ")),u.setData(s,"tooltip",x),e&&(u.setData(s,"tooltipEllipsisOnly",0===a),o&&this.updatePosition())}},{key:"setSearchValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(e!==this.searchValueOriginal||i){t||(this.$searchInput.value=e);var o=e.replace(/\\/g,"").toLowerCase().trim();this.searchValue=o,this.searchValueOriginal=e,u.toggleClass(this.$allWrappers,"has-search-value",e),this.afterSetSearchValue()}}},{key:"setVisibleOptionsCount",value:function(){var e,t=0,i=!1,o=this.searchValue,s=this.searchGroup,n=this.showOptionsOnlyOnSearch,r=this.isOptionVisible.bind(this);this.hasOptionGroup&&(e=this.getVisibleOptionGroupsMapping(o)),this.options.forEach((function(a){var l;a.isCurrentNew||(n&&!o?(a.isVisible=!1,l={isVisible:!1,hasExactOption:!1}):l=r({data:a,searchValue:o,hasExactOption:i,visibleOptionGroupsMapping:e,searchGroup:s}),l.isVisible&&(t+=1),i||(i=l.hasExactOption))})),this.allowNewOption&&(o&&!i?(this.setNewOption(),t++):this.removeNewOption()),this.visibleOptionsCount=t,this.afterSetVisibleOptionsCount()}},{key:"setOptionProp",value:function(e,t,i){this.options[e]&&(this.options[e][t]=i)}},{key:"setOptionsHeight",value:function(){this.$optionsList.style.height=this.optionHeight*this.visibleOptionsCount+"px"}},{key:"setOptionsContainerHeight",value:function(e){var t;e?this.showAsPopup&&(this.optionsCount=this.getOptionsCount(),this.halfOptionsCount=Math.ceil(this.optionsCount/2),t=this.getOptionsHeight(),this.optionsHeight=t):(t=this.optionsHeight,this.keepAlwaysOpen&&(u.setStyle(this.$noOptions,"height",t),u.setStyle(this.$noSearchResults,"height",t))),u.setStyle(this.$optionsContainer,"max-height",t),this.afterSetOptionsContainerHeight(e)}},{key:"setNewOption",value:function(e){var t=e||this.searchValueOriginal.trim();if(t){var i=this.getNewOption();if(i){var o=i.index;this.setOptionProp(o,"value",this.secureText(t)),this.setOptionProp(o,"label",this.secureText(t))}else{var s={value:t,label:t};e?(s.isNew=!0,this.newValues.push(t)):s.isCurrentNew=!0,this.addOption(s)}}}},{key:"setSelectedProp",value:function(){var e={};this.selectedValues.forEach((function(t){e[t]=!0})),this.options.forEach((function(t){!0===e[t.value]&&(t.isSelected=!0)}))}},{key:"setNewOptionsFromValue",value:function(e){if(e){var t=this.setNewOption.bind(this),i={};this.options.forEach((function(e){i[e.value]=!0})),e.forEach((function(e){e&&!0!==i[e]&&t(e)}))}}},{key:"setDropboxWrapperWidth",value:function(){if(!this.showAsPopup){var e=this.dropboxWidth||"".concat(this.$wrapper.offsetWidth,"px");u.setStyle(this.$dropboxContainer,"max-width",e)}}},{key:"setEleStyles",value:function(){var e=this.maxWidth,t={};e&&(t["max-width"]=e),u.setStyles(this.$ele,t)}},{key:"setDropboxStyles",value:function(){var e=this.dropboxWidth,t={},i={"z-index":this.zIndex};e&&(this.showAsPopup?t["max-width"]=e:i.width=e),u.setStyles(this.$dropboxContainer,i),u.setStyles(this.$dropbox,t)}},{key:"setOptionAttr",value:function(){var e=this.$visibleOptions,t=this.options,i="".concat(this.optionHeight,"px"),o=u.setStyle,s=u.getData,n=u.setData;e&&e.length&&e.forEach((function(e){var r=t[s(e,"index")];o(e,"height",i),n(e,"value",r.value)}))}},{key:"setValueTagAttr",value:function(){var e=this.$valueTags;if(e&&e.length){var t=u.getData,i=u.setData,o=this.options;e.forEach((function(e){var s=t(e,"index");if(void 0!==s){var n=o[s];i(e,"value",n.value)}}))}}},{key:"setScrollTop",value:function(){var e=this.selectedValues;if(!this.showSelectedOptionsFirst&&0!==e.length){var t,i={};e.forEach((function(e){i[e]=!0})),this.options.some((function(e){if(i[e.value])return t=e.visibleIndex,!0})),t&&(this.$optionsContainer.scrollTop=this.optionHeight*t)}}},{key:"getVisibleOptions",value:function(){return this.visibleOptions||[]}},{key:"getValue",value:function(){return this.multiple?this.useGroupValue?this.getGroupValue():this.selectedValues:this.selectedValues[0]||""}},{key:"getGroupValue",value:function(){var e=[],t={};return this.options.forEach((function(i){if(i.isSelected){var o=i.value;i.isGroupTitle?o&&(t[i.index]=!0,e.push(o)):!0!==t[i.groupIndex]&&e.push(o)}})),e}},{key:"getInputValue",value:function(e){var t=e;return t&&t.length?this.setValueAsArray&&this.multiple&&(t=JSON.stringify(t)):t=this.emptyValue,t}},{key:"getFirstVisibleOptionIndex",value:function(){return Math.ceil(this.$optionsContainer.scrollTop/this.optionHeight)}},{key:"getVisibleStartIndex",value:function(){var e=this.getFirstVisibleOptionIndex()-this.halfOptionsCount;return e<0&&(e=0),e}},{key:"getTooltipAttrText",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o={"data-tooltip":e||"","data-tooltip-enter-delay":this.tooltipEnterDelay,"data-tooltip-z-index":this.zIndex,"data-tooltip-font-size":this.tooltipFontSize,"data-tooltip-alignment":this.tooltipAlignment,"data-tooltip-max-width":this.tooltipMaxWidth,"data-tooltip-ellipsis-only":t,"data-tooltip-allow-html":i};return u.getAttributesText(o)}},{key:"getOptionObj",value:function(e){if(e){var t=s.getString,i=this.secureText.bind(this);return{index:e.index,value:i(t(e.value)),label:i(t(e.label)),description:i(t(e.description)),alias:this.getAlias(e.alias),isCurrentNew:e.isCurrentNew||!1,isNew:e.isNew||!1,isVisible:!0}}}},{key:"getNewOption",value:function(){var e=this.options[this.lastOptionIndex];if(e&&e.isCurrentNew)return e}},{key:"getOptionIndex",value:function(e){var t;return this.options.some((function(i){if(i.value==e)return t=i.index,!0})),t}},{key:"getNewValue",value:function(){var e={};this.newValues.forEach((function(t){e[t]=!0}));var t=this.selectedValues.filter((function(t){return!0===e[t]}));return this.multiple?t:t[0]}},{key:"getAlias",value:function(e){var t=e;return t&&(t=(t=Array.isArray(t)?t.join(","):t.toString().trim()).toLowerCase()),t||""}},{key:"getDisplayValue",value:function(){var e=[];return this.options.forEach((function(t){t.isSelected&&e.push(t.label)})),this.multiple?e:e[0]||""}},{key:"getSelectedOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.fullDetails,i=void 0!==t&&t,o=e.keepSelectionOrder,s=void 0!==o&&o,n=this.valueKey,r=this.labelKey,a=this.selectedValues,l=[];if(this.options.forEach((function(e){if(e.isSelected&&!e.isGroupTitle)if(i)l.push(e);else{var t,o=(h(t={},n,e.value),h(t,r,e.label),t);e.isNew&&(o.isNew=!0),e.customData&&(o.customData=e.customData),l.push(o)}})),s){var p={};a.forEach((function(e,t){p[e]=t})),l.sort((function(e,t){return p[e.value]-p[t.value]}))}return this.multiple||i?l:l[0]}},{key:"getVisibleOptionGroupsMapping",value:function(e){var t=this.options,i={},o=this.isOptionVisible.bind(this);return(t=this.structureOptionGroup(t)).forEach((function(t){i[t.index]=t.options.some((function(t){return o({data:t,searchValue:e}).isVisible}))})),i}},{key:"getOptionsCount",value:function(e){if(this.showAsPopup){var t=80*window.innerHeight/100-48;this.hasSearchContainer&&(t-=40),e=Math.floor(t/this.optionHeight)}else e=parseInt(e);return e}},{key:"getOptionsHeight",value:function(){return this.optionsCount*this.optionHeight+"px"}},{key:"getSibling",value:function(e,t){var i="next"===t?"nextElementSibling":"previousElementSibling";do{e&&(e=e[i])}while(u.hasClass(e,"disabled")||u.hasClass(e,"group-title"));return e}},{key:"getUniqueId",value:function(){var e=s.getRandomInt(1e4);return document.querySelector("#vscomp-ele-wrapper-".concat(e))?this.getUniqueId():e}},{key:"initDropboxPopover",value:function(){var e={ele:this.$ele,target:this.$dropboxContainer,position:this.position,zIndex:this.zIndex,margin:4,transitionDistance:30,hideArrowIcon:!0,disableManualAction:!0,disableUpdatePosition:!this.hasDropboxWrapper,afterShow:this.afterShowPopper.bind(this),afterHide:this.afterHidePopper.bind(this)};this.dropboxPopover=new PopoverComponent(e)}},{key:"openDropbox",value:function(e){this.isSilentOpen=e,e?u.setStyle(this.$dropboxContainer,"display","inline-flex"):(u.dispatchEvent(this.$ele,"beforeOpen"),u.setAria(this.$wrapper,"expanded",!0)),this.setDropboxWrapperWidth(),u.removeClass(this.$allWrappers,"closed"),this.dropboxPopover&&!e?this.dropboxPopover.show():this.afterShowPopper()}},{key:"afterShowPopper",value:function(){var e=this.isSilentOpen;this.isSilentOpen=!1,e||(this.moveSelectedOptionsFirst(),this.setScrollTop(),u.addClass(this.$allWrappers,"focused"),this.showAsPopup?(u.addClass(this.$body,"vscomp-popup-active"),this.isPopupActive=!0):this.focusSearchInput(),u.dispatchEvent(this.$ele,"afterOpen"))}},{key:"closeDropbox",value:function(e){this.isSilentClose=e,this.keepAlwaysOpen?this.removeOptionFocus():(e?u.setStyle(this.$dropboxContainer,"display",""):(u.dispatchEvent(this.$ele,"beforeClose"),u.setAria(this.$wrapper,"expanded",!1),u.setAria(this.$wrapper,"activedescendant","")),this.dropboxPopover&&!e?this.dropboxPopover.hide():this.afterHidePopper())}},{key:"afterHidePopper",value:function(){var e=this.isSilentClose;this.isSilentClose=!1,u.removeClass(this.$allWrappers,"focused"),this.removeOptionFocus(),e||this.isPopupActive&&(u.removeClass(this.$body,"vscomp-popup-active"),this.isPopupActive=!1),u.addClass(this.$allWrappers,"closed"),e||u.dispatchEvent(this.$ele,"afterClose")}},{key:"moveSelectedOptionsFirst",value:function(){this.showSelectedOptionsFirst&&(this.setSortedOptions(),this.$optionsContainer.scrollTop&&this.selectedValues.length?this.scrollToTop():this.setVisibleOptions())}},{key:"toggleDropbox",value:function(){this.isOpened()?this.closeDropbox():this.openDropbox()}},{key:"updatePosition",value:function(){this.dropboxPopover&&this.$ele.updatePosition()}},{key:"isOpened",value:function(){return!u.hasClass(this.$wrapper,"closed")}},{key:"focusSearchInput",value:function(){var e=this.$searchInput;e&&e.focus()}},{key:"focusOption",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.direction,o=t.$option,s=t.focusFirst,n=this.$dropboxContainer.querySelector(".vscomp-option.focused");if(o)e=o;else if(!n||s){var r=this.getFirstVisibleOptionIndex();e=this.$dropboxContainer.querySelector('.vscomp-option[data-visible-index="'.concat(r,'"]')),(u.hasClass(e,"disabled")||u.hasClass(e,"group-title"))&&(e=this.getSibling(e,"next"))}else e=this.getSibling(n,i);e&&e!==n&&(n&&this.toggleOptionFocusedState(n,!1),this.toggleOptionFocusedState(e,!0),this.toggleFocusedProp(u.getData(e,"index"),!0),this.moveFocusedOptionToView(e))}},{key:"moveFocusedOptionToView",value:function(e){if(e||(e=this.$dropboxContainer.querySelector(".vscomp-option.focused")),e){var t,i=this.$optionsContainer.getBoundingClientRect(),o=e.getBoundingClientRect(),s=i.top,n=i.bottom,r=i.height,a=o.top,l=o.bottom,p=o.height,h=e.offsetTop,c=u.getData(this.$options,"top","number");s>a?t=h+c:n1&&void 0!==arguments[1]?arguments[1]:{},i=t.event;if(e){var o=!u.hasClass(e,"selected");if(o){if(this.multiple&&this.isMaxValuesSelected)return}else if(!this.multiple)return void this.closeDropbox();var n=this.selectedValues,r=u.getData(e,"value"),a=u.getData(e,"index","number"),l=!1,p=this.lastSelectedOptionIndex;if(this.lastSelectedOptionIndex=null,this.toggleSelectedProp(a,o),o){if(this.multiple)n.push(r),this.toggleAllOptionsClass(),this.toggleGroupOptionsParent(e),i&&i.shiftKey&&(l=!0);else{n.length&&this.toggleSelectedProp(this.getOptionIndex(n[0]),!1),n=[r];var h=this.$dropboxContainer.querySelector(".vscomp-option.selected");h&&this.toggleOptionSelectedState(h,!1),this.closeDropbox()}this.lastSelectedOptionIndex=a,this.toggleOptionSelectedState(e)}else this.multiple&&(this.toggleOptionSelectedState(e),s.removeItemFromArray(n,r),this.toggleAllOptionsClass(!1),this.toggleGroupOptionsParent(e,!1));u.hasClass(e,"current-new")&&this.beforeSelectNewValue(),this.setValue(n),l&&this.selectRangeOptions(p,a)}}},{key:"selectFocusedOption",value:function(){this.selectOption(this.$dropboxContainer.querySelector(".vscomp-option.focused"))}},{key:"selectRangeOptions",value:function(e,t){var i=this;if("number"==typeof e&&!this.maxValues){var o,s,n=this.selectedValues,r=this.hasOptionGroup,a={};if(eo&&t1&&void 0!==arguments[1]&&arguments[1];this.focusedOptionIndex&&this.setOptionProp(this.focusedOptionIndex,"isFocused",!1),this.setOptionProp(e,"isFocused",t),this.focusedOptionIndex=e}},{key:"toggleSelectedProp",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.setOptionProp(e,"isSelected",t)}},{key:"scrollToTop",value:function(){var e=!this.isOpened();e&&this.openDropbox(!0),this.$optionsContainer.scrollTop>0&&(this.$optionsContainer.scrollTop=0),e&&this.closeDropbox(!0)}},{key:"reset",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.options.forEach((function(e){e.isSelected=!1})),this.beforeValueSet(!0),this.setValue(null,{disableValidation:e}),this.afterValueSet(),e&&u.removeClass(this.$allWrappers,"has-error"),u.dispatchEvent(this.$ele,"reset")}},{key:"addOption",value:function(e,t){if(e){this.lastOptionIndex++,e.index=this.lastOptionIndex;var i=this.getOptionObj(e);this.options.push(i),this.sortedOptions.push(i),t&&(this.visibleOptionsCount++,this.afterSetOptions())}}},{key:"removeOption",value:function(e){(e||0==e)&&(this.options.splice(e,1),this.lastOptionIndex--)}},{key:"removeNewOption",value:function(){var e=this.getNewOption();e&&this.removeOption(e.index)}},{key:"sortOptions",value:function(e){return e.sort((function(e,t){var i=e.isSelected||e.isAnySelected,o=t.isSelected||t.isAnySelected;return i||o?i&&(!o||e.indexe.length)&&(t=e.length);for(var i=0,o=new Array(t);ii-s-t.width?"left":"right",vertical:n>o-n-t.height?"top":"bottom"}}},{key:"getAbsoluteCoords",value:function(e){if(e){var t=e.getBoundingClientRect(),i=window.pageXOffset,o=window.pageYOffset;return{width:t.width,height:t.height,top:t.top+o,right:t.right+i,bottom:t.bottom+o,left:t.left+i}}}},{key:"getCoords",value:function(e){return e?e.getBoundingClientRect():{}}},{key:"getData",value:function(e,t,i){if(e){var o=e?e.dataset[t]:"";return"number"===i?o=parseFloat(o)||0:"true"===o?o=!0:"false"===o&&(o=!1),o}}},{key:"setData",value:function(e,t,i){e&&(e.dataset[t]=i)}},{key:"setStyle",value:function(e,t,i){e&&(e.style[t]=i)}},{key:"show",value:function(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"block";t.setStyle(e,"display",i)}},{key:"hide",value:function(e){t.setStyle(e,"display","none")}},{key:"getHideableParent",value:function(e){for(var t,i=e.parentElement;i;){var o=getComputedStyle(i).overflow;if(-1!==o.indexOf("scroll")||-1!==o.indexOf("auto")){t=i;break}i=i.parentElement}return t}}])&&function(e,t){for(var i=0;im?m-f:M:k+u>F&&("right"===E?n="left":k=F+fO?O-c:P:C+h>I&&("bottom"===E?n="top":C=I+cu-z&&(L=u-z):"left"!==E&&"right"!==E||((R=b/2+g-B)h-z&&(R=h-z)),i.setStyle(this.$arrowEle,"transform","translate3d(".concat(L,"px, ").concat(R,"px, 0) ").concat(K))}i.hide(this.$popperEle)}},{key:"resetPosition",value:function(){i.setStyle(this.$popperEle,"transform","none"),this.setPosition()}},{key:"show",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=t.resetPosition,s=t.data;clearTimeout(this.exitDelayTimeout),clearTimeout(this.hideDurationTimeout),o&&this.resetPosition(),this.enterDelayTimeout=setTimeout((function(){var t=i.getData(e.$popperEle,"left"),o=i.getData(e.$popperEle,"top"),n="translate3d(".concat(t,"px, ").concat(o,"px, 0)"),r=e.showDuration;i.show(e.$popperEle,"inline-flex"),i.getCoords(e.$popperEle),i.setStyle(e.$popperEle,"transitionDuration",r+"ms"),i.setStyle(e.$popperEle,"transform",n),i.setStyle(e.$popperEle,"opacity",1),e.showDurationTimeout=setTimeout((function(){"function"==typeof e.afterShowCallback&&e.afterShowCallback(s)}),r)}),this.enterDelay)}},{key:"hide",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=t.data;clearTimeout(this.enterDelayTimeout),clearTimeout(this.showDurationTimeout),this.exitDelayTimeout=setTimeout((function(){if(e.$popperEle){var t=i.getData(e.$popperEle,"fromLeft"),s=i.getData(e.$popperEle,"fromTop"),n="translate3d(".concat(t,"px, ").concat(s,"px, 0)"),r=e.hideDuration;i.setStyle(e.$popperEle,"transitionDuration",r+"ms"),i.setStyle(e.$popperEle,"transform",n),i.setStyle(e.$popperEle,"opacity",0),e.hideDurationTimeout=setTimeout((function(){i.hide(e.$popperEle),"function"==typeof e.afterHideCallback&&e.afterHideCallback(o)}),r)}}),this.exitDelay)}},{key:"updatePosition",value:function(){i.setStyle(this.$popperEle,"transitionDuration","0ms"),this.resetPosition();var e=i.getData(this.$popperEle,"left"),t=i.getData(this.$popperEle,"top");i.show(this.$popperEle,"inline-flex"),i.setStyle(this.$popperEle,"transform","translate3d(".concat(e,"px, ").concat(t,"px, 0)"))}}])&&function(e,t){for(var i=0;i1&&void 0!==arguments[1]&&arguments[1];return!0===e||"true"===e||!1!==e&&"false"!==e&&t}},{key:"removeArrayEmpty",value:function(e){return Array.isArray(e)&&e.length?e.filter((function(e){return!!e})):[]}},{key:"throttle",value:function(e,t){var i,o=0;return function(){for(var s=arguments.length,n=new Array(s),r=0;re.length)&&(t=e.length);for(var i=0,o=new Array(t);i'),e=this.$popover.querySelector(".pop-comp-arrow")),this.$arrowEle=e}}},{key:"destory",value:function(){this.removeEvents()}}])&&r(i.prototype,o),s&&r(i,s),e}();window.PopoverComponent=l}(); \ No newline at end of file diff --git a/dist/virtual-select.js b/dist/virtual-select.js new file mode 100644 index 0000000..bc9c882 --- /dev/null +++ b/dist/virtual-select.js @@ -0,0 +1,3675 @@ +/*! + * Virtual Select v1.0.29 + * https://sa-si-dev.github.io/virtual-select + * Licensed under MIT (https://github.com/sa-si-dev/virtual-select/blob/master/LICENSE) + *//******/ (function() { // webpackBootstrap +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +!function() { +"use strict"; + +// UNUSED EXPORTS: VirtualSelect + +;// CONCATENATED MODULE: ./src/utils/utils.js +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +var Utils = /*#__PURE__*/function () { + function Utils() { + _classCallCheck(this, Utils); + } + + _createClass(Utils, null, [{ + key: "getString", + value: + /** + * @param {any} text + * @returns {string} + */ + function getString(text) { + return text || text === 0 ? text.toString() : ''; + } + /** + * @param {any} value + * @param {boolean} defaultValue + * @returns {boolean} + */ + + }, { + key: "convertToBoolean", + value: function convertToBoolean(value) { + var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var result; + + if (value === true || value === 'true') { + result = true; + } else if (value === false || value === 'false') { + result = false; + } else { + result = defaultValue; + } + + return result; + } + /** + * @param {any} value + * @returns {boolean} + */ + + }, { + key: "isEmpty", + value: function isEmpty(value) { + var result = false; + + if (!value) { + result = true; + } else if (Array.isArray(value)) { + if (value.length === 0) { + result = true; + } + } else if (_typeof(value) === 'object') { + if (Object.keys(value).length === 0) { + result = true; + } + } + + return result; + } + /** + * @param {any} value + * @returns {boolean} + */ + + }, { + key: "isNotEmpty", + value: function isNotEmpty(value) { + return !this.isEmpty(value); + } + /** + * @param {any[]} array + * @param {any} value + * @param {boolean} cloneArray + * @returns {any[]} + */ + + }, { + key: "removeItemFromArray", + value: function removeItemFromArray(array, value) { + var cloneArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (!Array.isArray(array) || !array.length) { + return array; + } + + var inputArr = cloneArray ? _toConsumableArray(array) : array; + var index = inputArr.indexOf(value); + + if (index !== -1) { + inputArr.splice(index, 1); + } + + return inputArr; + } + /** + * @param {any[]} array + * @returns {any[]} + */ + + }, { + key: "removeArrayEmpty", + value: function removeArrayEmpty(array) { + if (!Array.isArray(array) || !array.length) { + return []; + } + + return array.filter(function (d) { + return !!d; + }); + } + /** + * @param {number} max + * @param {number} max + * @returns {number} + */ + + }, { + key: "getRandomInt", + value: function getRandomInt(max) { + var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var minN = Math.ceil(min); + var maxN = Math.floor(max); + return Math.floor(Math.random() * (maxN - minN - 1)) + minN; + } + }]); + + return Utils; +}(); +;// CONCATENATED MODULE: ./src/utils/dom-utils.js +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || dom_utils_unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function dom_utils_toConsumableArray(arr) { return dom_utils_arrayWithoutHoles(arr) || dom_utils_iterableToArray(arr) || dom_utils_unsupportedIterableToArray(arr) || dom_utils_nonIterableSpread(); } + +function dom_utils_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function dom_utils_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return dom_utils_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return dom_utils_arrayLikeToArray(o, minLen); } + +function dom_utils_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function dom_utils_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return dom_utils_arrayLikeToArray(arr); } + +function dom_utils_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function dom_utils_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function dom_utils_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function dom_utils_createClass(Constructor, protoProps, staticProps) { if (protoProps) dom_utils_defineProperties(Constructor.prototype, protoProps); if (staticProps) dom_utils_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + + +var DomUtils = /*#__PURE__*/function () { + function DomUtils() { + dom_utils_classCallCheck(this, DomUtils); + } + + dom_utils_createClass(DomUtils, null, [{ + key: "addClass", + value: + /** + * @param {HTMLElement | NodeListOf} $ele + * @param {string} classNames + */ + function addClass($ele, classNames) { + if (!$ele) { + return; + } + + var classNamesArr = classNames.split(' '); + DomUtils.getElements($ele).forEach(function ($this) { + var _$this$classList; + + (_$this$classList = $this.classList).add.apply(_$this$classList, dom_utils_toConsumableArray(classNamesArr)); + }); + } + /** + * @param {HTMLElement | NodeListOf} $ele + * @param {string} classNames + */ + + }, { + key: "removeClass", + value: function removeClass($ele, classNames) { + if (!$ele) { + return; + } + + var classNamesArr = classNames.split(' '); + DomUtils.getElements($ele).forEach(function ($this) { + var _$this$classList2; + + (_$this$classList2 = $this.classList).remove.apply(_$this$classList2, dom_utils_toConsumableArray(classNamesArr)); + }); + } + /** + * @param {HTMLElement | NodeListOf} $ele + * @param {string} classNames + * @param {boolean} [isAdd] + */ + + }, { + key: "toggleClass", + value: function toggleClass($ele, classNames, isAdd) { + if (!$ele) { + return; + } + /** @type {boolean | undefined} */ + + + var isAdding; + + if (isAdd !== undefined) { + isAdding = Boolean(isAdd); + } + + DomUtils.getElements($ele).forEach(function ($this) { + $this.classList.toggle(classNames, isAdding); + }); + } + /** + * @param {HTMLElement} $ele + * @param {string} className + * @returns {boolean} + */ + + }, { + key: "hasClass", + value: function hasClass($ele, className) { + if (!$ele) { + return false; + } + + return $ele.classList.contains(className); + } + /** + * @param {HTMLElement} $ele + * @returns {boolean} + */ + + }, { + key: "hasEllipsis", + value: function hasEllipsis($ele) { + if (!$ele) { + return false; + } + + return $ele.scrollWidth > $ele.offsetWidth; + } + /** + * @param {HTMLElement} $ele + * @param {string} name + * @param {string} [type] + * @returns {any} + */ + + }, { + key: "getData", + value: function getData($ele, name, type) { + if (!$ele) { + return undefined; + } + /** @type {any} */ + + + var value = $ele ? $ele.dataset[name] : ''; + + if (type === 'number') { + value = parseFloat(value) || 0; + } else if (value === 'true') { + value = true; + } else if (value === 'false') { + value = false; + } + + return value; + } + /** + * @param {HTMLElement} $ele + * @param {string} name + * @param {string} value + */ + + }, { + key: "setData", + value: function setData($ele, name, value) { + if (!$ele) { + return; + } // eslint-disable-next-line no-param-reassign + + + $ele.dataset[name] = value; + } + /** + * @param {HTMLElement} $ele + * @param {string} name + * @param {string} value + */ + + }, { + key: "setAttr", + value: function setAttr($ele, name, value) { + if (!$ele) { + return; + } + + $ele.setAttribute(name, value); + } + /** + * @param {HTMLElement} $from + * @param {HTMLElement} $to + * @param {string[]} attrList + * @param {string[]} valueLessProps + */ + + }, { + key: "setAttrFromEle", + value: function setAttrFromEle($from, $to, attrList, valueLessProps) { + /** @type {any} */ + var values = {}; + attrList.forEach(function (attr) { + values[attr] = $from.getAttribute(attr); + }); + attrList.forEach(function (attr) { + var value = values[attr]; + + if (value || valueLessProps.indexOf(attr) !== -1 && value === '') { + $to.setAttribute(attr, value); + } + }); + } + /** + * @param {HTMLElement} $ele + * @param {string} name + * @param {string} value + */ + + }, { + key: "setStyle", + value: function setStyle($ele, name, value) { + if (!$ele) { + return; + } // @ts-ignore + // eslint-disable-next-line no-param-reassign + + + $ele.style[name] = value; + } + /** + * @param {HTMLElement} $ele + * @param {any} props + */ + + }, { + key: "setStyles", + value: function setStyles($ele, props) { + if (!$ele || !props) { + return; + } + + Object.keys(props).forEach(function (name) { + // @ts-ignore + // eslint-disable-next-line no-param-reassign + $ele.style[name] = props[name]; + }); + } + /** + * @param {HTMLElement} $ele + * @param {string} name + * @param {string} value + */ + + }, { + key: "setAria", + value: function setAria($ele, name, value) { + var attrName = name; + + if (attrName !== 'role') { + attrName = "aria-".concat(attrName); + } + + $ele.setAttribute(attrName, value); + } + /** + * @param {any} $ele + * @returns {any[]} + */ + + }, { + key: "getElements", + value: function getElements($ele) { + if (!$ele) { + return []; + } + + return $ele.forEach === undefined ? [$ele] : $ele; + } + /** + * @param {HTMLElement} $ele + * @param {string} events + * @param {Function} callback + */ + + }, { + key: "addEvent", + value: function addEvent($ele, events, callback) { + if (!$ele) { + return; + } + + var eventsArray = Utils.removeArrayEmpty(events.split(' ')); + eventsArray.forEach(function (event) { + var $eleArray = DomUtils.getElements($ele); + $eleArray.forEach(function ($this) { + $this.addEventListener(event, callback); + }); + }); + } + /** + * @param {HTMLElement} $ele + * @param {string} eventName + * @param {boolean} [bubbles] + */ + + }, { + key: "dispatchEvent", + value: function dispatchEvent($ele, eventName) { + var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (!$ele) { + return; + } + + var $eleArray = DomUtils.getElements($ele); + /** using setTimeout to trigger asynchronous event */ + + setTimeout(function () { + $eleArray.forEach(function ($this) { + $this.dispatchEvent(new CustomEvent(eventName, { + bubbles: bubbles + })); + }); + }, 0); + } + /** + * convert object to dom attributes + * @param {any} data + */ + + }, { + key: "getAttributesText", + value: function getAttributesText(data) { + var html = ''; + + if (!data) { + return html; + } + + Object.entries(data).forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + k = _ref2[0], + v = _ref2[1]; + + if (v !== undefined) { + html += " ".concat(k, "=\"").concat(v, "\" "); + } + }); + return html; + } + /** + * convert "maxValue" to "data-max-value" + * @param {string} prop + */ + + }, { + key: "convertPropToDataAttr", + value: function convertPropToDataAttr(prop) { + return prop ? "data-".concat(prop).replace(/([A-Z])/g, '-$1').toLowerCase() : ''; + } + }]); + + return DomUtils; +}(); +;// CONCATENATED MODULE: ./src/virtual-select.js +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = virtual_select_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function virtual_select_slicedToArray(arr, i) { return virtual_select_arrayWithHoles(arr) || virtual_select_iterableToArrayLimit(arr, i) || virtual_select_unsupportedIterableToArray(arr, i) || virtual_select_nonIterableRest(); } + +function virtual_select_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function virtual_select_iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function virtual_select_arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function virtual_select_toConsumableArray(arr) { return virtual_select_arrayWithoutHoles(arr) || virtual_select_iterableToArray(arr) || virtual_select_unsupportedIterableToArray(arr) || virtual_select_nonIterableSpread(); } + +function virtual_select_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function virtual_select_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return virtual_select_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return virtual_select_arrayLikeToArray(o, minLen); } + +function virtual_select_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function virtual_select_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return virtual_select_arrayLikeToArray(arr); } + +function virtual_select_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function virtual_select_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function virtual_select_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function virtual_select_createClass(Constructor, protoProps, staticProps) { if (protoProps) virtual_select_defineProperties(Constructor.prototype, protoProps); if (staticProps) virtual_select_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +/* eslint-disable */ +// @ts-nocheck + +var dropboxCloseButtonFullHeight = 48; +var searchHeight = 40; +var keyDownMethodMapping = { + 13: 'onEnterPress', + 38: 'onUpArrowPress', + 40: 'onDownArrowPress' +}; +var valueLessProps = ['autofocus', 'disabled', 'multiple', 'required']; +var nativeProps = ['autofocus', 'class', 'disabled', 'id', 'multiple', 'name', 'placeholder', 'required']; +var dataProps = ['additionalClasses', 'aliasKey', 'allOptionsSelectedText', 'allowNewOption', 'alwaysShowSelectedOptionsCount', 'ariaLabelledby', 'autoSelectFirstOption', 'clearButtonText', 'descriptionKey', 'disableAllOptionsSelectedText', 'disableOptionGroupCheckbox', 'disableSelectAll', 'disableValidation', 'dropboxWidth', 'dropboxWrapper', 'emptyValue', 'enableSecureText', 'hasOptionDescription', 'hideClearButton', 'hideValueTooltipOnSelectAll', 'keepAlwaysOpen', 'labelKey', 'markSearchResults', 'maxValues', 'maxWidth', 'moreText', 'noOfDisplayValues', 'noOptionsText', 'noSearchResultsText', 'optionHeight', 'optionSelectedText', 'optionsCount', 'optionsSelectedText', 'popupDropboxBreakpoint', 'popupPosition', 'position', 'search', 'searchGroup', 'searchPlaceholderText', 'selectAllOnlyVisible', 'selectAllText', 'setValueAsArray', 'showDropboxAsPopup', 'showOptionsOnlyOnSearch', 'showSelectedOptionsFirst', 'showValueAsTags', 'silentInitialValueSet', 'textDirection', 'tooltipAlignment', 'tooltipFontSize', 'tooltipMaxWidth', 'useGroupValue', 'valueKey', 'zIndex']; +/** Class representing VirtualSelect */ + +var VirtualSelect = /*#__PURE__*/function () { + /** + * @param {virtualSelectOptions} options + */ + function VirtualSelect(options) { + virtual_select_classCallCheck(this, VirtualSelect); + + try { + this.createSecureTextElements(); + this.setProps(options); + this.setDisabledOptions(options.disabledOptions); + this.setOptions(options.options); + this.render(); + } catch (e) { + // eslint-disable-next-line no-console + console.warn("Couldn't initiate Virtual Select"); // eslint-disable-next-line no-console + + console.error(e); + } + } + /** render methods - start */ + + + virtual_select_createClass(VirtualSelect, [{ + key: "render", + value: function render() { + if (!this.$ele) { + return; + } + + var uniqueId = this.uniqueId; + var wrapperClasses = 'vscomp-wrapper'; + var valueTooltip = this.getTooltipAttrText(this.placeholder, true, true); + var clearButtonTooltip = this.getTooltipAttrText(this.clearButtonText); + var ariaLabelledbyText = this.ariaLabelledby ? "aria-labelledby=\"".concat(this.ariaLabelledby, "\"") : ''; + var isExpanded = false; + + if (this.additionalClasses) { + wrapperClasses += " ".concat(this.additionalClasses); + } + + if (this.multiple) { + wrapperClasses += ' multiple'; + + if (!this.disableSelectAll) { + wrapperClasses += ' has-select-all'; + } + } + + if (!this.hideClearButton) { + wrapperClasses += ' has-clear-button'; + } + + if (this.keepAlwaysOpen) { + wrapperClasses += ' keep-always-open'; + isExpanded = true; + } else { + wrapperClasses += ' closed'; + } + + if (this.showAsPopup) { + wrapperClasses += ' show-as-popup'; + } + + if (this.hasSearch) { + wrapperClasses += ' has-search-input'; + } + + if (this.showValueAsTags) { + wrapperClasses += ' show-value-as-tags'; + } + + if (this.textDirection) { + wrapperClasses += " text-direction-".concat(this.textDirection); + } + + if (this.popupPosition) { + wrapperClasses += " popup-position-".concat(this.popupPosition.toLowerCase()); + } + + var html = "
\n \n\n
\n
\n ").concat(this.placeholder, "\n
\n\n
\n\n
\n \n
\n
\n\n ").concat(this.renderDropbox({ + wrapperClasses: wrapperClasses + }), "\n
"); + this.$ele.innerHTML = html; + this.$body = document.querySelector('body'); + this.$wrapper = this.$ele.querySelector('.vscomp-wrapper'); + + if (this.hasDropboxWrapper) { + this.$allWrappers = [this.$wrapper, this.$dropboxWrapper]; + this.$dropboxContainer = this.$dropboxWrapper.querySelector('.vscomp-dropbox-container'); + DomUtils.addClass(this.$dropboxContainer, 'pop-comp-wrapper'); + } else { + this.$allWrappers = [this.$wrapper]; + this.$dropboxContainer = this.$wrapper.querySelector('.vscomp-dropbox-container'); + } + + this.$toggleButton = this.$ele.querySelector('.vscomp-toggle-button'); + this.$clearButton = this.$ele.querySelector('.vscomp-clear-button'); + this.$valueText = this.$ele.querySelector('.vscomp-value'); + this.$hiddenInput = this.$ele.querySelector('.vscomp-hidden-input'); + this.$dropbox = this.$dropboxContainer.querySelector('.vscomp-dropbox'); + this.$dropboxCloseButton = this.$dropboxContainer.querySelector('.vscomp-dropbox-close-button'); + this.$search = this.$dropboxContainer.querySelector('.vscomp-search-wrapper'); + this.$optionsContainer = this.$dropboxContainer.querySelector('.vscomp-options-container'); + this.$optionsList = this.$dropboxContainer.querySelector('.vscomp-options-list'); + this.$options = this.$dropboxContainer.querySelector('.vscomp-options'); + this.$noOptions = this.$dropboxContainer.querySelector('.vscomp-no-options'); + this.$noSearchResults = this.$dropboxContainer.querySelector('.vscomp-no-search-results'); + this.afterRenderWrapper(); + } + }, { + key: "renderDropbox", + value: function renderDropbox(_ref) { + var wrapperClasses = _ref.wrapperClasses; + var $wrapper = this.dropboxWrapper !== 'self' ? document.querySelector(this.dropboxWrapper) : null; + var html = "
\n
\n
\n\n
\n
\n\n
\n
\n
\n
\n\n
\n
").concat(this.noOptionsText, "
\n
").concat(this.noSearchResultsText, "
\n\n \n
\n
"); + + if ($wrapper) { + var $dropboxWrapper = document.createElement('div'); + this.$dropboxWrapper = $dropboxWrapper; + this.hasDropboxWrapper = true; + $dropboxWrapper.innerHTML = html; + $wrapper.appendChild($dropboxWrapper); + DomUtils.addClass($dropboxWrapper, "vscomp-dropbox-wrapper ".concat(wrapperClasses)); + return ''; + } + + this.hasDropboxWrapper = false; + return html; + } + }, { + key: "renderOptions", + value: function renderOptions() { + var _this = this; + + var html = ''; + var visibleOptions = this.getVisibleOptions(); + var checkboxHtml = ''; + var newOptionIconHtml = ''; + var markSearchResults = !!(this.markSearchResults && this.searchValue); + var searchRegex; + var labelRenderer = this.labelRenderer, + disableOptionGroupCheckbox = this.disableOptionGroupCheckbox, + uniqueId = this.uniqueId, + searchGroup = this.searchGroup; + var hasLabelRenderer = typeof labelRenderer === 'function'; + var convertToBoolean = Utils.convertToBoolean; + + if (markSearchResults) { + searchRegex = new RegExp("(".concat(this.searchValue, ")"), 'gi'); + } + + if (this.multiple) { + checkboxHtml = ''; + } + + if (this.allowNewOption) { + var newOptionTooltip = this.getTooltipAttrText('New Option'); + newOptionIconHtml = ""); + } + + visibleOptions.forEach(function (d) { + var index = d.index; + var optionLabel; + var optionClasses = 'vscomp-option'; + + var optionTooltip = _this.getTooltipAttrText('', true, true); + + var leftSection = checkboxHtml; + var rightSection = ''; + var description = ''; + var groupIndexText = ''; + var isSelected = convertToBoolean(d.isSelected); + var ariaDisabledText = ''; + + if (d.isFocused) { + optionClasses += ' focused'; + } + + if (d.isDisabled) { + optionClasses += ' disabled'; + ariaDisabledText = 'aria-disabled="true"'; + } + + if (d.isGroupTitle) { + optionClasses += ' group-title'; + + if (disableOptionGroupCheckbox) { + leftSection = ''; + } + } + + if (isSelected) { + optionClasses += ' selected'; + } + + if (d.isGroupOption) { + optionClasses += ' group-option'; + groupIndexText = "data-group-index=\"".concat(d.groupIndex, "\""); + } + + if (hasLabelRenderer) { + optionLabel = labelRenderer(d); + } else { + optionLabel = d.label; + } + + if (d.description) { + description = "
").concat(d.description, "
"); + } + + if (d.isCurrentNew) { + optionClasses += ' current-new'; + rightSection += newOptionIconHtml; + } else if (markSearchResults && (!d.isGroupTitle || searchGroup)) { + optionLabel = optionLabel.replace(searchRegex, '$1'); + } + + html += "
\n ").concat(leftSection, "\n \n ").concat(optionLabel, "\n \n ").concat(description, "\n ").concat(rightSection, "\n
"); + }); + this.$options.innerHTML = html; + this.$visibleOptions = this.$options.querySelectorAll('.vscomp-option'); + this.afterRenderOptions(); + } + }, { + key: "renderSearch", + value: function renderSearch() { + if (!this.hasSearchContainer) { + return; + } + + var checkboxHtml = ''; + var searchInput = ''; + + if (this.multiple && !this.disableSelectAll) { + checkboxHtml = "\n \n ".concat(this.selectAllText, "\n "); + } + + if (this.hasSearch) { + searchInput = "\n ×"); + } + + var html = "
\n ".concat(checkboxHtml, "\n ").concat(searchInput, "\n
"); + this.$search.innerHTML = html; + this.$searchInput = this.$dropboxContainer.querySelector('.vscomp-search-input'); + this.$searchClear = this.$dropboxContainer.querySelector('.vscomp-search-clear'); + this.$toggleAllButton = this.$dropboxContainer.querySelector('.vscomp-toggle-all-button'); + this.$toggleAllCheckbox = this.$dropboxContainer.querySelector('.vscomp-toggle-all-checkbox'); + this.addEvent(this.$searchInput, 'keyup change', 'onSearch'); + this.addEvent(this.$searchClear, 'click', 'onSearchClear'); + this.addEvent(this.$toggleAllButton, 'click', 'onToggleAllOptions'); + } + /** render methods - end */ + + /** dom event methods - start */ + + }, { + key: "addEvents", + value: function addEvents() { + this.addEvent(document, 'click', 'onDocumentClick'); + this.addEvent(this.$allWrappers, 'keydown', 'onKeyDown'); + this.addEvent(this.$toggleButton, 'click', 'onToggleButtonClick'); + this.addEvent(this.$clearButton, 'click', 'onClearButtonClick'); + this.addEvent(this.$dropboxContainer, 'click', 'onDropboxContainerClick'); + this.addEvent(this.$dropboxCloseButton, 'click', 'onDropboxCloseButtonClick'); + this.addEvent(this.$optionsContainer, 'scroll', 'onOptionsScroll'); + this.addEvent(this.$options, 'click', 'onOptionsClick'); + this.addEvent(this.$options, 'mouseover', 'onOptionsMouseOver'); + this.addEvent(this.$options, 'touchmove', 'onOptionsTouchMove'); + this.addMutationObserver(); + } + }, { + key: "addEvent", + value: function addEvent($ele, events, method) { + var _this2 = this; + + if (!$ele) { + return; + } + + var eventsArray = Utils.removeArrayEmpty(events.split(' ')); + eventsArray.forEach(function (event) { + var eventsKey = "".concat(method, "-").concat(event); + var callback = _this2.events[eventsKey]; + + if (!callback) { + callback = _this2[method].bind(_this2); + _this2.events[eventsKey] = callback; + } + + DomUtils.addEvent($ele, event, callback); + }); + } + }, { + key: "onDocumentClick", + value: function onDocumentClick(e) { + var $eleToKeepOpen = e.target.closest('.vscomp-wrapper'); + + if ($eleToKeepOpen !== this.$wrapper && $eleToKeepOpen !== this.$dropboxWrapper && this.isOpened()) { + this.closeDropbox(); + } + } + }, { + key: "onKeyDown", + value: function onKeyDown(e) { + var key = e.which || e.keyCode; + var method = keyDownMethodMapping[key]; + + if (method) { + this[method](e); + } + } + }, { + key: "onEnterPress", + value: function onEnterPress(e) { + e.preventDefault(); + + if (this.isOpened()) { + this.selectFocusedOption(); + } else { + this.openDropbox(); + } + } + }, { + key: "onDownArrowPress", + value: function onDownArrowPress(e) { + e.preventDefault(); + + if (this.isOpened()) { + this.focusOption({ + direction: 'next' + }); + } else { + this.openDropbox(); + } + } + }, { + key: "onUpArrowPress", + value: function onUpArrowPress(e) { + e.preventDefault(); + + if (this.isOpened()) { + this.focusOption({ + direction: 'previous' + }); + } else { + this.openDropbox(); + } + } + }, { + key: "onToggleButtonClick", + value: function onToggleButtonClick(e) { + var $target = e.target; + + if ($target.closest('.vscomp-value-tag-clear-button')) { + this.removeValue($target.closest('.vscomp-value-tag')); + } else if (!$target.closest('.toggle-button-child')) { + this.toggleDropbox(); + } + } + }, { + key: "onClearButtonClick", + value: function onClearButtonClick() { + this.reset(); + } + }, { + key: "onOptionsScroll", + value: function onOptionsScroll() { + this.setVisibleOptions(); + } + }, { + key: "onOptionsClick", + value: function onOptionsClick(e) { + var $option = e.target.closest('.vscomp-option'); + + if ($option && !DomUtils.hasClass($option, 'disabled')) { + if (DomUtils.hasClass($option, 'group-title')) { + this.onGroupTitleClick($option); + } else { + this.selectOption($option, { + event: e + }); + } + } + } + }, { + key: "onGroupTitleClick", + value: function onGroupTitleClick($ele) { + if (!$ele || !this.multiple || this.disableOptionGroupCheckbox) { + return; + } + + var isAdding = !DomUtils.hasClass($ele, 'selected'); + this.toggleGroupTitleCheckbox($ele, isAdding); + this.toggleGroupOptions($ele, isAdding); + } + }, { + key: "onDropboxContainerClick", + value: function onDropboxContainerClick(e) { + if (!e.target.closest('.vscomp-dropbox')) { + this.closeDropbox(); + } + } + }, { + key: "onDropboxCloseButtonClick", + value: function onDropboxCloseButtonClick() { + this.closeDropbox(); + } + }, { + key: "onOptionsMouseOver", + value: function onOptionsMouseOver(e) { + var $ele = e.target.closest('.vscomp-option'); + + if ($ele && this.isOpened()) { + if (DomUtils.hasClass($ele, 'disabled') || DomUtils.hasClass($ele, 'group-title')) { + this.removeOptionFocus(); + } else { + this.focusOption({ + $option: $ele + }); + } + } + } + }, { + key: "onOptionsTouchMove", + value: function onOptionsTouchMove() { + this.removeOptionFocus(); + } + }, { + key: "onSearch", + value: function onSearch(e) { + e.stopPropagation(); + this.setSearchValue(e.target.value, true); + } + }, { + key: "onSearchClear", + value: function onSearchClear() { + this.setSearchValue(''); + this.focusSearchInput(); + } + }, { + key: "onToggleAllOptions", + value: function onToggleAllOptions() { + this.toggleAllOptions(); + } + }, { + key: "onResize", + value: function onResize() { + this.setOptionsContainerHeight(true); + } + /** to remove dropboxWrapper on removing vscomp-ele when it is rendered outside of vscomp-ele */ + + }, { + key: "addMutationObserver", + value: function addMutationObserver() { + var _this3 = this; + + if (!this.hasDropboxWrapper) { + return; + } + + var $vscompEle = this.$ele; + this.mutationObserver = new MutationObserver(function (mutations) { + mutations.some(function (mutation) { + var $removedNodes = virtual_select_toConsumableArray(mutation.removedNodes); + + var isMatching = $removedNodes.some(function ($ele) { + return !!($ele === $vscompEle || $ele.contains($vscompEle)); + }); + + if (isMatching) { + _this3.destroy(); + } + + return isMatching; + }); + }); + this.mutationObserver.observe(document.querySelector('body'), { + childList: true, + subtree: true + }); + } + /** dom event methods - end */ + + /** before event methods - start */ + + }, { + key: "beforeValueSet", + value: function beforeValueSet(isReset) { + this.toggleAllOptionsClass(isReset ? false : undefined); + } + }, { + key: "beforeSelectNewValue", + value: function beforeSelectNewValue() { + var _this4 = this; + + var newOption = this.getNewOption(); + var newIndex = newOption.index; + this.newValues.push(newOption.value); + this.setOptionProp(newIndex, 'isCurrentNew', false); + this.setOptionProp(newIndex, 'isNew', true); + /** using setTimeout to fix the issue of dropbox getting closed on select */ + + setTimeout(function () { + _this4.setSearchValue(''); + + _this4.focusSearchInput(); + }, 0); + } + /** before event methods - end */ + + /** after event methods - start */ + + }, { + key: "afterRenderWrapper", + value: function afterRenderWrapper() { + DomUtils.addClass(this.$ele, 'vscomp-ele'); + this.renderSearch(); + this.setEleStyles(); + this.setDropboxStyles(); + this.setOptionsHeight(); + this.setVisibleOptions(); + this.setOptionsContainerHeight(); + this.addEvents(); + this.setEleProps(); + + if (!this.keepAlwaysOpen && !this.showAsPopup) { + this.initDropboxPopover(); + } + + if (this.initialSelectedValue) { + this.setValueMethod(this.initialSelectedValue, this.silentInitialValueSet); + } else if (this.autoSelectFirstOption && this.visibleOptions.length) { + this.setValueMethod(this.visibleOptions[0].value, this.silentInitialValueSet); + } + + if (this.showOptionsOnlyOnSearch) { + this.setSearchValue('', false, true); + } + + if (this.initialDisabled) { + this.disable(); + } + + if (this.autofocus) { + this.focus(); + } + } + }, { + key: "afterRenderOptions", + value: function afterRenderOptions() { + var visibleOptions = this.getVisibleOptions(); + var hasNoOptions = !this.options.length && !this.hasServerSearch; + var hasNoSearchResults = !hasNoOptions && !visibleOptions.length; + + if (!this.allowNewOption || this.hasServerSearch || this.showOptionsOnlyOnSearch) { + DomUtils.toggleClass(this.$allWrappers, 'has-no-search-results', hasNoSearchResults); + } + + DomUtils.toggleClass(this.$allWrappers, 'has-no-options', hasNoOptions); + this.setOptionAttr(); + this.setOptionsPosition(); + this.setOptionsTooltip(); + } + }, { + key: "afterSetOptionsContainerHeight", + value: function afterSetOptionsContainerHeight(reset) { + if (reset) { + if (this.showAsPopup) { + this.setVisibleOptions(); + } + } + } + }, { + key: "afterSetSearchValue", + value: function afterSetSearchValue() { + if (this.hasServerSearch) { + this.serverSearch(); + } else { + this.setVisibleOptionsCount(); + } + + if (this.selectAllOnlyVisible) { + this.toggleAllOptionsClass(); + } + + this.focusOption({ + focusFirst: true + }); + } + }, { + key: "afterSetVisibleOptionsCount", + value: function afterSetVisibleOptionsCount() { + this.scrollToTop(); + this.setOptionsHeight(); + this.setVisibleOptions(); + this.updatePosition(); + } + }, { + key: "afterValueSet", + value: function afterValueSet() { + this.scrollToTop(); + this.setSearchValue(''); + this.renderOptions(); + } + }, { + key: "afterSetOptions", + value: function afterSetOptions(keepValue) { + if (keepValue) { + this.setSelectedProp(); + } + + this.setOptionsHeight(); + this.setVisibleOptions(); + + if (this.showOptionsOnlyOnSearch) { + this.setSearchValue('', false, true); + } + + if (!keepValue) { + this.reset(); + } + } + /** after event methods - end */ + + /** set methods - start */ + + /** + * @param {virtualSelectOptions} params + */ + + }, { + key: "setProps", + value: function setProps(params) { + var options = this.setDefaultProps(params); + this.setPropsFromElementAttr(options); + var convertToBoolean = Utils.convertToBoolean; + this.$ele = options.ele; + this.dropboxWrapper = options.dropboxWrapper; + this.valueKey = options.valueKey; + this.labelKey = options.labelKey; + this.descriptionKey = options.descriptionKey; + this.aliasKey = options.aliasKey; + this.optionHeightText = options.optionHeight; + this.optionHeight = parseFloat(this.optionHeightText); + this.multiple = convertToBoolean(options.multiple); + this.hasSearch = convertToBoolean(options.search); + this.searchGroup = convertToBoolean(options.searchGroup); + this.hideClearButton = convertToBoolean(options.hideClearButton); + this.autoSelectFirstOption = convertToBoolean(options.autoSelectFirstOption); + this.hasOptionDescription = convertToBoolean(options.hasOptionDescription); + this.silentInitialValueSet = convertToBoolean(options.silentInitialValueSet); + this.allowNewOption = convertToBoolean(options.allowNewOption); + this.markSearchResults = convertToBoolean(options.markSearchResults); + this.showSelectedOptionsFirst = convertToBoolean(options.showSelectedOptionsFirst); + this.disableSelectAll = convertToBoolean(options.disableSelectAll); + this.keepAlwaysOpen = convertToBoolean(options.keepAlwaysOpen); + this.showDropboxAsPopup = convertToBoolean(options.showDropboxAsPopup); + this.hideValueTooltipOnSelectAll = convertToBoolean(options.hideValueTooltipOnSelectAll); + this.showOptionsOnlyOnSearch = convertToBoolean(options.showOptionsOnlyOnSearch); + this.selectAllOnlyVisible = convertToBoolean(options.selectAllOnlyVisible); + this.alwaysShowSelectedOptionsCount = convertToBoolean(options.alwaysShowSelectedOptionsCount); + this.disableAllOptionsSelectedText = convertToBoolean(options.disableAllOptionsSelectedText); + this.showValueAsTags = convertToBoolean(options.showValueAsTags); + this.disableOptionGroupCheckbox = convertToBoolean(options.disableOptionGroupCheckbox); + this.enableSecureText = convertToBoolean(options.enableSecureText); + this.setValueAsArray = convertToBoolean(options.setValueAsArray); + this.disableValidation = convertToBoolean(options.disableValidation); + this.initialDisabled = convertToBoolean(options.disabled); + this.required = convertToBoolean(options.required); + this.autofocus = convertToBoolean(options.autofocus); + this.useGroupValue = convertToBoolean(options.useGroupValue); + this.noOptionsText = options.noOptionsText; + this.noSearchResultsText = options.noSearchResultsText; + this.selectAllText = options.selectAllText; + this.searchPlaceholderText = options.searchPlaceholderText; + this.optionsSelectedText = options.optionsSelectedText; + this.optionSelectedText = options.optionSelectedText; + this.allOptionsSelectedText = options.allOptionsSelectedText; + this.clearButtonText = options.clearButtonText; + this.moreText = options.moreText; + this.placeholder = options.placeholder; + this.position = options.position; + this.textDirection = options.textDirection; + this.dropboxWidth = options.dropboxWidth; + this.tooltipFontSize = options.tooltipFontSize; + this.tooltipAlignment = options.tooltipAlignment; + this.tooltipMaxWidth = options.tooltipMaxWidth; + this.noOfDisplayValues = parseInt(options.noOfDisplayValues); + this.zIndex = parseInt(options.zIndex); + this.maxValues = parseInt(options.maxValues); + this.name = this.secureText(options.name); + this.additionalClasses = options.additionalClasses; + this.popupDropboxBreakpoint = options.popupDropboxBreakpoint; + this.popupPosition = options.popupPosition; + this.onServerSearch = options.onServerSearch; + this.labelRenderer = options.labelRenderer; + this.initialSelectedValue = options.selectedValue === 0 ? '0' : options.selectedValue; + this.emptyValue = options.emptyValue; + this.ariaLabelledby = options.ariaLabelledby; + this.maxWidth = options.maxWidth; + /** @type {string[]} */ + + this.selectedValues = []; + /** @type {virtualSelectOption[]} */ + + this.selectedOptions = []; + this.newValues = []; + this.events = {}; + this.tooltipEnterDelay = 200; + this.searchValue = ''; + this.searchValueOriginal = ''; + this.isAllSelected = false; + + if (options.search === undefined && this.multiple || this.allowNewOption || this.showOptionsOnlyOnSearch) { + this.hasSearch = true; + } + + this.hasServerSearch = typeof this.onServerSearch === 'function'; + + if (this.maxValues || this.hasServerSearch || this.showOptionsOnlyOnSearch) { + this.disableSelectAll = true; + this.disableOptionGroupCheckbox = true; + } + + if (this.keepAlwaysOpen) { + this.dropboxWrapper = 'self'; + } + + this.showAsPopup = this.showDropboxAsPopup && !this.keepAlwaysOpen && window.innerWidth <= parseFloat(this.popupDropboxBreakpoint); + this.hasSearchContainer = this.hasSearch || this.multiple && !this.disableSelectAll; + this.optionsCount = this.getOptionsCount(options.optionsCount); + this.halfOptionsCount = Math.ceil(this.optionsCount / 2); + this.optionsHeight = this.getOptionsHeight(); + this.uniqueId = this.getUniqueId(); + } + /** + * @param {virtualSelectOptions} options + */ + + }, { + key: "setDefaultProps", + value: function setDefaultProps(options) { + var defaultOptions = { + dropboxWrapper: 'self', + valueKey: 'value', + labelKey: 'label', + descriptionKey: 'description', + aliasKey: 'alias', + optionsCount: 5, + noOfDisplayValues: 50, + optionHeight: '40px', + noOptionsText: 'No options found', + noSearchResultsText: 'No results found', + selectAllText: 'Select All', + searchPlaceholderText: 'Search...', + clearButtonText: 'Clear', + moreText: 'more...', + optionsSelectedText: 'options selected', + optionSelectedText: 'option selected', + allOptionsSelectedText: 'All', + placeholder: 'Select', + position: 'bottom left', + zIndex: options.keepAlwaysOpen ? 1 : 2, + tooltipFontSize: '14px', + tooltipAlignment: 'center', + tooltipMaxWidth: '300px', + name: '', + additionalClasses: '', + maxValues: 0, + showDropboxAsPopup: true, + popupDropboxBreakpoint: '576px', + popupPosition: 'center', + hideValueTooltipOnSelectAll: true, + emptyValue: '' + }; + + if (options.hasOptionDescription) { + defaultOptions.optionsCount = 4; + defaultOptions.optionHeight = '50px'; + } + + return Object.assign(defaultOptions, options); + } + }, { + key: "setPropsFromElementAttr", + value: function setPropsFromElementAttr(options) { + var $ele = options.ele; + + for (var k in attrPropsMapping) { + var value = $ele.getAttribute(k); + + if (valueLessProps.indexOf(k) !== -1 && (value === '' || value === 'true')) { + value = true; + } + + if (value) { + options[attrPropsMapping[k]] = value; + } + } + } + }, { + key: "setEleProps", + value: function setEleProps() { + var $ele = this.$ele; + $ele.virtualSelect = this; + $ele.value = this.multiple ? [] : ''; + $ele.name = this.name; + $ele.disabled = false; + $ele.required = this.required; + $ele.autofocus = this.autofocus; + $ele.multiple = this.multiple; + $ele.form = $ele.closest('form'); + $ele.reset = VirtualSelect.reset; + $ele.setValue = VirtualSelect.setValueMethod; + $ele.setOptions = VirtualSelect.setOptionsMethod; + $ele.setDisabledOptions = VirtualSelect.setDisabledOptionsMethod; + $ele.toggleSelectAll = VirtualSelect.toggleSelectAll; + $ele.isAllSelected = VirtualSelect.isAllSelected; + $ele.addOption = VirtualSelect.addOptionMethod; + $ele.getNewValue = VirtualSelect.getNewValueMethod; + $ele.getDisplayValue = VirtualSelect.getDisplayValueMethod; + $ele.getSelectedOptions = VirtualSelect.getSelectedOptionsMethod; + $ele.open = VirtualSelect.openMethod; + $ele.close = VirtualSelect.closeMethod; + $ele.focus = VirtualSelect.focusMethod; + $ele.enable = VirtualSelect.enableMethod; + $ele.disable = VirtualSelect.disableMethod; + $ele.destroy = VirtualSelect.destroyMethod; + $ele.validate = VirtualSelect.validateMethod; + $ele.toggleRequired = VirtualSelect.toggleRequiredMethod; + + if (this.hasDropboxWrapper) { + this.$dropboxWrapper.virtualSelect = this; + } + } + }, { + key: "setValueMethod", + value: function setValueMethod(newValue, silentChange) { + var valuesMapping = {}; + var valuesOrder = {}; + var validValues = []; + var isMultiSelect = this.multiple; + var value = newValue; + + if (value) { + if (!Array.isArray(value)) { + value = [value]; + } + + if (isMultiSelect) { + var maxValues = this.maxValues; + + if (maxValues && value.length > maxValues) { + value.splice(maxValues); + } + } else { + if (value.length > 1) { + value = [value[0]]; + } + } + + value = value.map(function (v) { + return v || v == 0 ? v.toString() : ''; + }); + + if (this.useGroupValue) { + value = this.setGroupOptionsValue(value); + } + + value.forEach(function (d, i) { + valuesMapping[d] = true; + valuesOrder[d] = i; + }); + + if (this.allowNewOption && value) { + this.setNewOptionsFromValue(value); + } + } + + this.options.forEach(function (d) { + if (valuesMapping[d.value] === true && !d.isDisabled && !d.isGroupTitle) { + // eslint-disable-next-line no-param-reassign + d.isSelected = true; + validValues.push(d.value); + } else { + // eslint-disable-next-line no-param-reassign + d.isSelected = false; + } + }); + + if (isMultiSelect) { + if (this.hasOptionGroup) { + this.setGroupsSelectedProp(); + } + /** sorting validValues in the given values order */ + + + validValues.sort(function (a, b) { + return valuesOrder[a] - valuesOrder[b]; + }); + } else { + /** taking first value for single select */ + var _validValues = validValues; + + var _validValues2 = virtual_select_slicedToArray(_validValues, 1); + + validValues = _validValues2[0]; + } + + this.beforeValueSet(); + this.setValue(validValues, { + disableEvent: silentChange + }); + this.afterValueSet(); + } + }, { + key: "setGroupOptionsValue", + value: function setGroupOptionsValue(preparedValues) { + var selectedValues = []; + var selectedGroups = {}; + var valuesMapping = {}; + preparedValues.forEach(function (d) { + valuesMapping[d] = true; + }); + this.options.forEach(function (d) { + var value = d.value; + var isSelected = valuesMapping[value] === true; + + if (d.isGroupTitle) { + if (isSelected) { + selectedGroups[d.index] = true; + } + } else if (isSelected || selectedGroups[d.groupIndex]) { + selectedValues.push(value); + } + }); + return selectedValues; + } + }, { + key: "setGroupsSelectedProp", + value: function setGroupsSelectedProp() { + var isAllGroupOptionsSelected = this.isAllGroupOptionsSelected.bind(this); + this.options.forEach(function (d) { + if (d.isGroupTitle) { + // eslint-disable-next-line no-param-reassign + d.isSelected = isAllGroupOptionsSelected(d.index); + } + }); + } + }, { + key: "setOptionsMethod", + value: function setOptionsMethod(options, keepValue) { + this.setOptions(options); + this.afterSetOptions(keepValue); + } + }, { + key: "setDisabledOptionsMethod", + value: function setDisabledOptionsMethod(disabledOptions) { + var keepValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + this.setDisabledOptions(disabledOptions, true); + + if (!keepValue) { + this.setValueMethod(null); + this.toggleAllOptionsClass(); + } + + this.setVisibleOptions(); + } + }, { + key: "setDisabledOptions", + value: function setDisabledOptions(disabledOptions) { + var setOptionsProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var disabledOptionsArr = []; + + if (!disabledOptions) { + if (setOptionsProp) { + this.options.forEach(function (d) { + // eslint-disable-next-line no-param-reassign + d.isDisabled = false; + return d; + }); + } + } else if (disabledOptions === true) { + if (setOptionsProp) { + this.options.forEach(function (d) { + // eslint-disable-next-line no-param-reassign + d.isDisabled = true; + disabledOptionsArr.push(d.value); + return d; + }); + } + } else { + disabledOptionsArr = disabledOptions.map(function (d) { + return d.toString(); + }); + var disabledOptionsMapping = {}; + disabledOptionsArr.forEach(function (d) { + disabledOptionsMapping[d] = true; + }); + + if (setOptionsProp) { + this.options.forEach(function (d) { + // eslint-disable-next-line no-param-reassign + d.isDisabled = disabledOptionsMapping[d.value] === true; + return d; + }); + } + } + + this.disabledOptions = disabledOptionsArr; + } + }, { + key: "setOptions", + value: function setOptions(options) { + if (!options) { + options = []; + } + + var preparedOptions = []; + var hasDisabledOptions = this.disabledOptions.length; + var valueKey = this.valueKey, + labelKey = this.labelKey, + descriptionKey = this.descriptionKey, + aliasKey = this.aliasKey, + hasOptionDescription = this.hasOptionDescription; + var getString = Utils.getString, + convertToBoolean = Utils.convertToBoolean; + var secureText = this.secureText.bind(this); + var getAlias = this.getAlias.bind(this); + var index = 0; + var hasOptionGroup = false; + var disabledOptionsMapping = {}; + var hasEmptyValueOption = false; + this.disabledOptions.forEach(function (d) { + disabledOptionsMapping[d] = true; + }); + + var prepareOption = function prepareOption(d) { + var value = secureText(getString(d[valueKey])); + var childOptions = d.options; + var isGroupTitle = childOptions ? true : false; + var option = { + index: index, + value: value, + label: secureText(getString(d[labelKey])), + alias: getAlias(d[aliasKey]), + isVisible: convertToBoolean(d.isVisible, true), + isNew: d.isNew || false, + isGroupTitle: isGroupTitle + }; + + if (!hasEmptyValueOption && value === '') { + hasEmptyValueOption = true; + } + + if (hasDisabledOptions) { + option.isDisabled = disabledOptionsMapping[value] === true; + } + + if (d.isGroupOption) { + option.isGroupOption = true; + option.groupIndex = d.groupIndex; + } + + if (hasOptionDescription) { + option.description = secureText(getString(d[descriptionKey])); + } + + if (d.customData) { + option.customData = d.customData; + } + + preparedOptions.push(option); + index += 1; + + if (isGroupTitle) { + var groupIndex = option.index; + hasOptionGroup = true; + childOptions.forEach(function (d) { + // eslint-disable-next-line no-param-reassign + d.isGroupOption = true; // eslint-disable-next-line no-param-reassign + + d.groupIndex = groupIndex; + prepareOption(d); + }); + } + }; + + options.forEach(prepareOption); + var optionsLength = preparedOptions.length; + var $ele = this.$ele; + $ele.options = preparedOptions; + $ele.length = optionsLength; + this.options = preparedOptions; + this.visibleOptionsCount = optionsLength; + this.lastOptionIndex = optionsLength - 1; + this.newValues = []; + this.hasOptionGroup = hasOptionGroup; + this.hasEmptyValueOption = hasEmptyValueOption; + this.setSortedOptions(); + } + }, { + key: "setServerOptions", + value: function setServerOptions() { + var _this5 = this; + + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + this.setOptionsMethod(options, true); + var selectedOptions = this.selectedOptions; + var newOptions = this.options; + var optionsUpdated = false; + /** merging already seleted options details with new options */ + + if (selectedOptions.length) { + var newOptionsValueMapping = {}; + optionsUpdated = true; + newOptions.forEach(function (d) { + newOptionsValueMapping[d.value] = true; + }); + selectedOptions.forEach(function (d) { + if (newOptionsValueMapping[d.value] === false) { + // eslint-disable-next-line no-param-reassign + d.isVisible = false; + newOptions.push(d); + } + }); + this.setOptionsMethod(newOptions, true); + } + /** merging new search option */ + + + if (this.allowNewOption && this.searchValue) { + var hasExactOption = newOptions.some(function (d) { + return d.label.toLowerCase() === _this5.searchValue; + }); + + if (!hasExactOption) { + optionsUpdated = true; + this.setNewOption(); + } + } + + if (optionsUpdated) { + this.setVisibleOptionsCount(); + + if (this.multiple) { + this.toggleAllOptionsClass(); + } + + this.setValueText(); + } else { + this.updatePosition(); + } + + DomUtils.removeClass(this.$allWrappers, 'server-searching'); + } + }, { + key: "setSelectedOptions", + value: function setSelectedOptions() { + this.selectedOptions = this.options.filter(function (d) { + return d.isSelected; + }); + } + }, { + key: "setSortedOptions", + value: function setSortedOptions() { + var sortedOptions = virtual_select_toConsumableArray(this.options); + + if (this.showSelectedOptionsFirst && this.selectedValues.length) { + if (this.hasOptionGroup) { + sortedOptions = this.sortOptionsGroup(sortedOptions); + } else { + sortedOptions = this.sortOptions(sortedOptions); + } + } + + this.sortedOptions = sortedOptions; + } + }, { + key: "setVisibleOptions", + value: function setVisibleOptions() { + var visibleOptions = virtual_select_toConsumableArray(this.sortedOptions); + + var maxOptionsToShow = this.optionsCount * 2; + var startIndex = this.getVisibleStartIndex(); + var newOption = this.getNewOption(); + var endIndex = startIndex + maxOptionsToShow - 1; + var i = 0; + + if (newOption) { + newOption.visibleIndex = i; + i++; + } + + visibleOptions = visibleOptions.filter(function (d) { + var inView = false; + + if (d.isVisible && !d.isCurrentNew) { + inView = i >= startIndex && i <= endIndex; // eslint-disable-next-line no-param-reassign + + d.visibleIndex = i; + i += 1; + } + + return inView; + }); + + if (newOption) { + visibleOptions = [newOption].concat(virtual_select_toConsumableArray(visibleOptions)); + } + + this.visibleOptions = visibleOptions; + this.renderOptions(); + } + }, { + key: "setOptionsPosition", + value: function setOptionsPosition(startIndex) { + if (startIndex === undefined) { + startIndex = this.getVisibleStartIndex(); + } + + var top = startIndex * this.optionHeight; + this.$options.style.transform = "translate3d(0, ".concat(top, "px, 0)"); + DomUtils.setData(this.$options, 'top', top); + } + }, { + key: "setOptionsTooltip", + value: function setOptionsTooltip() { + var _this6 = this; + + var visibleOptions = this.getVisibleOptions(); + var hasOptionDescription = this.hasOptionDescription; + visibleOptions.forEach(function (d) { + var $optionEle = _this6.$dropboxContainer.querySelector(".vscomp-option[data-index=\"".concat(d.index, "\"]")); + + DomUtils.setData($optionEle.querySelector('.vscomp-option-text'), 'tooltip', d.label); + + if (hasOptionDescription) { + DomUtils.setData($optionEle.querySelector('.vscomp-option-description'), 'tooltip', d.description); + } + }); + } + }, { + key: "setValue", + value: function setValue(value) { + var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref2$disableEvent = _ref2.disableEvent, + disableEvent = _ref2$disableEvent === void 0 ? false : _ref2$disableEvent, + _ref2$disableValidati = _ref2.disableValidation, + disableValidation = _ref2$disableValidati === void 0 ? false : _ref2$disableValidati; + + var isValidValue = this.hasEmptyValueOption && value === '' || value; + + if (!isValidValue) { + this.selectedValues = []; + } else if (Array.isArray(value)) { + this.selectedValues = virtual_select_toConsumableArray(value); + } else { + this.selectedValues = [value]; + } + + var newValue = this.getValue(); + this.$ele.value = newValue; + this.$hiddenInput.value = this.getInputValue(newValue); + this.isMaxValuesSelected = this.maxValues && this.maxValues <= this.selectedValues.length ? true : false; + this.toggleAllOptionsClass(); + this.setValueText(); + DomUtils.toggleClass(this.$allWrappers, 'has-value', Utils.isNotEmpty(this.selectedValues)); + DomUtils.toggleClass(this.$allWrappers, 'max-value-selected', this.isMaxValuesSelected); + + if (!disableValidation) { + this.validate(); + } + + if (!disableEvent) { + DomUtils.dispatchEvent(this.$ele, 'change', true); + } + } + }, { + key: "setValueText", + value: function setValueText() { + var multiple = this.multiple, + selectedValues = this.selectedValues, + noOfDisplayValues = this.noOfDisplayValues, + showValueAsTags = this.showValueAsTags, + $valueText = this.$valueText; + var valueText = []; + var valueTooltip = []; + var selectedLength = selectedValues.length; + var selectedValuesCount = 0; + var showAllText = this.isAllSelected && !this.hasServerSearch && !this.disableAllOptionsSelectedText && !showValueAsTags; + /** show all values selected text without tooltip text */ + + if (showAllText && this.hideValueTooltipOnSelectAll) { + $valueText.innerHTML = "".concat(this.allOptionsSelectedText, " (").concat(selectedLength, ")"); + } else { + var selectedOptions = this.getSelectedOptions({ + fullDetails: true, + keepSelectionOrder: true + }); + + var _iterator = _createForOfIteratorHelper(selectedOptions), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var d = _step.value; + + if (d.isCurrentNew) { + continue; + } + + if (selectedValuesCount >= noOfDisplayValues) { + break; + } + + var label = d.label; + valueText.push(label); + selectedValuesCount++; + + if (showValueAsTags) { + var valueTagHtml = "\n ").concat(label, "\n \n \n \n "); + valueTooltip.push(valueTagHtml); + } else { + valueTooltip.push(label); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + var moreSelectedOptions = selectedLength - noOfDisplayValues; + + if (moreSelectedOptions > 0) { + valueTooltip.push("+ ".concat(moreSelectedOptions, " ").concat(this.moreText, "")); + } + + var aggregatedValueText = valueText.join(', '); + + if (aggregatedValueText === '') { + $valueText.innerHTML = this.placeholder; + } else { + $valueText.innerHTML = aggregatedValueText; + + if (multiple) { + var maxValues = this.maxValues; + + if (DomUtils.hasEllipsis($valueText) || maxValues || this.alwaysShowSelectedOptionsCount || showValueAsTags) { + var countText = "".concat(selectedLength, ""); + + if (maxValues) { + countText += " / ".concat(maxValues, ""); + } + /** show all values selected text with tooltip text */ + + + if (showAllText) { + $valueText.innerHTML = "".concat(this.allOptionsSelectedText, " (").concat(selectedLength, ")"); + } else if (showValueAsTags) { + $valueText.innerHTML = valueTooltip.join(''); + this.$valueTags = $valueText.querySelectorAll('.vscomp-value-tag'); + this.setValueTagAttr(); + } else { + /** replace comma delimitted list of selections with shorter text indicating selection count */ + var optionsSelectedText = selectedLength === 1 ? this.optionSelectedText : this.optionsSelectedText; + $valueText.innerHTML = "".concat(countText, " ").concat(optionsSelectedText); + } + } else { + /** removing tooltip if full value text is visible */ + valueTooltip = []; + } + } + } + } + + var tooltipText = ''; + + if (selectedLength === 0) { + tooltipText = this.placeholder; + } else if (!showValueAsTags) { + tooltipText = valueTooltip.join(', '); + } + + DomUtils.setData($valueText, 'tooltip', tooltipText); + + if (multiple) { + DomUtils.setData($valueText, 'tooltipEllipsisOnly', selectedLength === 0); + + if (showValueAsTags) { + this.updatePosition(); + } + } + } + }, { + key: "setSearchValue", + value: function setSearchValue(value) { + var skipInputSet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var forceSet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (value === this.searchValueOriginal && !forceSet) { + return; + } + + if (!skipInputSet) { + this.$searchInput.value = value; + } + + var searchValue = value.replace(/\\/g, '').toLowerCase().trim(); + this.searchValue = searchValue; + this.searchValueOriginal = value; + DomUtils.toggleClass(this.$allWrappers, 'has-search-value', value); + this.afterSetSearchValue(); + } + }, { + key: "setVisibleOptionsCount", + value: function setVisibleOptionsCount() { + var visibleOptionsCount = 0; + var hasExactOption = false; + var visibleOptionGroupsMapping; + var searchValue = this.searchValue, + searchGroup = this.searchGroup, + showOptionsOnlyOnSearch = this.showOptionsOnlyOnSearch; + var isOptionVisible = this.isOptionVisible.bind(this); + + if (this.hasOptionGroup) { + visibleOptionGroupsMapping = this.getVisibleOptionGroupsMapping(searchValue); + } + + this.options.forEach(function (d) { + if (d.isCurrentNew) { + return; + } + + var result; + + if (showOptionsOnlyOnSearch && !searchValue) { + // eslint-disable-next-line no-param-reassign + d.isVisible = false; + result = { + isVisible: false, + hasExactOption: false + }; + } else { + result = isOptionVisible({ + data: d, + searchValue: searchValue, + hasExactOption: hasExactOption, + visibleOptionGroupsMapping: visibleOptionGroupsMapping, + searchGroup: searchGroup + }); + } + + if (result.isVisible) { + visibleOptionsCount += 1; + } + + if (!hasExactOption) { + hasExactOption = result.hasExactOption; + } + }); + + if (this.allowNewOption) { + if (searchValue && !hasExactOption) { + this.setNewOption(); + visibleOptionsCount++; + } else { + this.removeNewOption(); + } + } + + this.visibleOptionsCount = visibleOptionsCount; + this.afterSetVisibleOptionsCount(); + } + }, { + key: "setOptionProp", + value: function setOptionProp(index, key, value) { + if (!this.options[index]) { + return; + } + + this.options[index][key] = value; + } + }, { + key: "setOptionsHeight", + value: function setOptionsHeight() { + this.$optionsList.style.height = this.optionHeight * this.visibleOptionsCount + 'px'; + } + }, { + key: "setOptionsContainerHeight", + value: function setOptionsContainerHeight(reset) { + var optionsHeight; + + if (reset) { + if (this.showAsPopup) { + this.optionsCount = this.getOptionsCount(); + this.halfOptionsCount = Math.ceil(this.optionsCount / 2); + optionsHeight = this.getOptionsHeight(); + this.optionsHeight = optionsHeight; + } + } else { + optionsHeight = this.optionsHeight; + + if (this.keepAlwaysOpen) { + DomUtils.setStyle(this.$noOptions, 'height', optionsHeight); + DomUtils.setStyle(this.$noSearchResults, 'height', optionsHeight); + } + } + + DomUtils.setStyle(this.$optionsContainer, 'max-height', optionsHeight); + this.afterSetOptionsContainerHeight(reset); + } + }, { + key: "setNewOption", + value: function setNewOption(newValue) { + var value = newValue || this.searchValueOriginal.trim(); + + if (!value) { + return; + } + + var newOption = this.getNewOption(); + + if (newOption) { + var newIndex = newOption.index; + this.setOptionProp(newIndex, 'value', this.secureText(value)); + this.setOptionProp(newIndex, 'label', this.secureText(value)); + } else { + var data = { + value: value, + label: value + }; + + if (newValue) { + data.isNew = true; + this.newValues.push(value); + } else { + data.isCurrentNew = true; + } + + this.addOption(data); + } + } + }, { + key: "setSelectedProp", + value: function setSelectedProp() { + var valuesMapping = {}; + this.selectedValues.forEach(function (d) { + valuesMapping[d] = true; + }); + this.options.forEach(function (d) { + if (valuesMapping[d.value] === true) { + // eslint-disable-next-line no-param-reassign + d.isSelected = true; + } + }); + } + }, { + key: "setNewOptionsFromValue", + value: function setNewOptionsFromValue(values) { + if (!values) { + return; + } + + var setNewOption = this.setNewOption.bind(this); + var availableValuesMapping = {}; + this.options.forEach(function (d) { + availableValuesMapping[d.value] = true; + }); + values.forEach(function (d) { + if (d && availableValuesMapping[d] !== true) { + setNewOption(d); + } + }); + } + }, { + key: "setDropboxWrapperWidth", + value: function setDropboxWrapperWidth() { + if (this.showAsPopup) { + return; + } + + var width = this.dropboxWidth || "".concat(this.$wrapper.offsetWidth, "px"); + DomUtils.setStyle(this.$dropboxContainer, 'max-width', width); + } + }, { + key: "setEleStyles", + value: function setEleStyles() { + var maxWidth = this.maxWidth; + var styles = {}; + + if (maxWidth) { + styles['max-width'] = maxWidth; + } + + DomUtils.setStyles(this.$ele, styles); + } + }, { + key: "setDropboxStyles", + value: function setDropboxStyles() { + var dropboxWidth = this.dropboxWidth; + var styles = {}; + var containerStyles = { + 'z-index': this.zIndex + }; + + if (dropboxWidth) { + if (this.showAsPopup) { + styles['max-width'] = dropboxWidth; + } else { + containerStyles.width = dropboxWidth; + } + } + + DomUtils.setStyles(this.$dropboxContainer, containerStyles); + DomUtils.setStyles(this.$dropbox, styles); + } + }, { + key: "setOptionAttr", + value: function setOptionAttr() { + var $visibleOptions = this.$visibleOptions; + var options = this.options; + var optionHeight = "".concat(this.optionHeight, "px"); + var setStyle = DomUtils.setStyle, + getData = DomUtils.getData, + setData = DomUtils.setData; + + if ($visibleOptions && $visibleOptions.length) { + $visibleOptions.forEach(function ($option) { + var optionDetails = options[getData($option, 'index')]; + setStyle($option, 'height', optionHeight); + setData($option, 'value', optionDetails.value); + }); + } + } + }, { + key: "setValueTagAttr", + value: function setValueTagAttr() { + var $valueTags = this.$valueTags; + + if (!$valueTags || !$valueTags.length) { + return; + } + + var getData = DomUtils.getData, + setData = DomUtils.setData; + var options = this.options; + $valueTags.forEach(function ($valueTag) { + var index = getData($valueTag, 'index'); + + if (typeof index !== 'undefined') { + var optionDetails = options[index]; + setData($valueTag, 'value', optionDetails.value); + } + }); + } + }, { + key: "setScrollTop", + value: function setScrollTop() { + var selectedValues = this.selectedValues; + + if (this.showSelectedOptionsFirst || selectedValues.length === 0) { + return; + } + + var valuesMapping = {}; + var selectedOptionIndex; + selectedValues.forEach(function (d) { + valuesMapping[d] = true; + }); + this.options.some(function (d) { + if (valuesMapping[d.value]) { + selectedOptionIndex = d.visibleIndex; + return true; + } + }); + + if (selectedOptionIndex) { + this.$optionsContainer.scrollTop = this.optionHeight * selectedOptionIndex; + } + } + /** set methods - end */ + + /** get methods - start */ + + }, { + key: "getVisibleOptions", + value: function getVisibleOptions() { + return this.visibleOptions || []; + } + }, { + key: "getValue", + value: function getValue() { + var value; + + if (this.multiple) { + if (this.useGroupValue) { + value = this.getGroupValue(); + } else { + value = this.selectedValues; + } + } else { + value = this.selectedValues[0] || ''; + } + + return value; + } + }, { + key: "getGroupValue", + value: function getGroupValue() { + var selectedValues = []; + var selectedGroups = {}; + this.options.forEach(function (d) { + if (!d.isSelected) { + return; + } + + var value = d.value; + + if (d.isGroupTitle) { + if (value) { + selectedGroups[d.index] = true; + selectedValues.push(value); + } + } else if (selectedGroups[d.groupIndex] !== true) { + selectedValues.push(value); + } + }); + return selectedValues; + } + }, { + key: "getInputValue", + value: function getInputValue(preparedValue) { + var value = preparedValue; + + if (value && value.length) { + if (this.setValueAsArray && this.multiple) { + value = JSON.stringify(value); + } + } else { + value = this.emptyValue; + } + + return value; + } + }, { + key: "getFirstVisibleOptionIndex", + value: function getFirstVisibleOptionIndex() { + return Math.ceil(this.$optionsContainer.scrollTop / this.optionHeight); + } + }, { + key: "getVisibleStartIndex", + value: function getVisibleStartIndex() { + var firstVisibleOptionIndex = this.getFirstVisibleOptionIndex(); + var startIndex = firstVisibleOptionIndex - this.halfOptionsCount; + + if (startIndex < 0) { + startIndex = 0; + } + + return startIndex; + } + }, { + key: "getTooltipAttrText", + value: function getTooltipAttrText(text) { + var ellipsisOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var allowHtml = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var data = { + 'data-tooltip': text || '', + 'data-tooltip-enter-delay': this.tooltipEnterDelay, + 'data-tooltip-z-index': this.zIndex, + 'data-tooltip-font-size': this.tooltipFontSize, + 'data-tooltip-alignment': this.tooltipAlignment, + 'data-tooltip-max-width': this.tooltipMaxWidth, + 'data-tooltip-ellipsis-only': ellipsisOnly, + 'data-tooltip-allow-html': allowHtml + }; + return DomUtils.getAttributesText(data); + } + }, { + key: "getOptionObj", + value: function getOptionObj(data) { + if (!data) { + return; + } + + var getString = Utils.getString; + var secureText = this.secureText.bind(this); + var newOption = { + index: data.index, + value: secureText(getString(data.value)), + label: secureText(getString(data.label)), + description: secureText(getString(data.description)), + alias: this.getAlias(data.alias), + isCurrentNew: data.isCurrentNew || false, + isNew: data.isNew || false, + isVisible: true + }; + return newOption; + } + }, { + key: "getNewOption", + value: function getNewOption() { + var lastOption = this.options[this.lastOptionIndex]; + + if (!lastOption || !lastOption.isCurrentNew) { + return; + } + + return lastOption; + } + }, { + key: "getOptionIndex", + value: function getOptionIndex(value) { + var index; + this.options.some(function (d) { + if (d.value == value) { + index = d.index; + return true; + } + }); + return index; + } + }, { + key: "getNewValue", + value: function getNewValue() { + var valuesMapping = {}; + this.newValues.forEach(function (d) { + valuesMapping[d] = true; + }); + var result = this.selectedValues.filter(function (d) { + return valuesMapping[d] === true; + }); + return this.multiple ? result : result[0]; + } + }, { + key: "getAlias", + value: function getAlias(alias) { + var result = alias; + + if (result) { + if (Array.isArray(result)) { + result = result.join(','); + } else { + result = result.toString().trim(); + } + + result = result.toLowerCase(); + } + + return result || ''; + } + }, { + key: "getDisplayValue", + value: function getDisplayValue() { + var displayValues = []; + this.options.forEach(function (d) { + if (d.isSelected) { + displayValues.push(d.label); + } + }); + return this.multiple ? displayValues : displayValues[0] || ''; + } + }, { + key: "getSelectedOptions", + value: function getSelectedOptions() { + var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref3$fullDetails = _ref3.fullDetails, + fullDetails = _ref3$fullDetails === void 0 ? false : _ref3$fullDetails, + _ref3$keepSelectionOr = _ref3.keepSelectionOrder, + keepSelectionOrder = _ref3$keepSelectionOr === void 0 ? false : _ref3$keepSelectionOr; + + var valueKey = this.valueKey, + labelKey = this.labelKey, + selectedValues = this.selectedValues; + var selectedOptions = []; + this.options.forEach(function (d) { + if (d.isSelected && !d.isGroupTitle) { + if (fullDetails) { + selectedOptions.push(d); + } else { + var _data; + + var data = (_data = {}, _defineProperty(_data, valueKey, d.value), _defineProperty(_data, labelKey, d.label), _data); + + if (d.isNew) { + data.isNew = true; + } + + if (d.customData) { + data.customData = d.customData; + } + + selectedOptions.push(data); + } + } + }); + + if (keepSelectionOrder) { + var valuesOrder = {}; + selectedValues.forEach(function (d, i) { + valuesOrder[d] = i; + }); + selectedOptions.sort(function (a, b) { + return valuesOrder[a.value] - valuesOrder[b.value]; + }); + } + + return this.multiple || fullDetails ? selectedOptions : selectedOptions[0]; + } + }, { + key: "getVisibleOptionGroupsMapping", + value: function getVisibleOptionGroupsMapping(searchValue) { + var options = this.options; + var result = {}; + var isOptionVisible = this.isOptionVisible.bind(this); + options = this.structureOptionGroup(options); + options.forEach(function (d) { + result[d.index] = d.options.some(function (e) { + return isOptionVisible({ + data: e, + searchValue: searchValue + }).isVisible; + }); + }); + return result; + } + }, { + key: "getOptionsCount", + value: function getOptionsCount(count) { + if (this.showAsPopup) { + var availableHeight = window.innerHeight * 80 / 100 - dropboxCloseButtonFullHeight; + + if (this.hasSearchContainer) { + availableHeight -= searchHeight; + } + + count = Math.floor(availableHeight / this.optionHeight); + } else { + count = parseInt(count); + } + + return count; + } + }, { + key: "getOptionsHeight", + value: function getOptionsHeight() { + return this.optionsCount * this.optionHeight + 'px'; + } + }, { + key: "getSibling", + value: function getSibling($ele, direction) { + var propName = direction === 'next' ? 'nextElementSibling' : 'previousElementSibling'; + + do { + if ($ele) { + $ele = $ele[propName]; + } + } while (DomUtils.hasClass($ele, 'disabled') || DomUtils.hasClass($ele, 'group-title')); + + return $ele; + } + }, { + key: "getUniqueId", + value: function getUniqueId() { + var uniqueId = Utils.getRandomInt(10000); + var isAlreadyUsed = document.querySelector("#vscomp-ele-wrapper-".concat(uniqueId)); + + if (isAlreadyUsed) { + return this.getUniqueId(); + } else { + return uniqueId; + } + } + /** get methods - end */ + + }, { + key: "initDropboxPopover", + value: function initDropboxPopover() { + var data = { + ele: this.$ele, + target: this.$dropboxContainer, + position: this.position, + zIndex: this.zIndex, + margin: 4, + transitionDistance: 30, + hideArrowIcon: true, + disableManualAction: true, + disableUpdatePosition: !this.hasDropboxWrapper, + afterShow: this.afterShowPopper.bind(this), + afterHide: this.afterHidePopper.bind(this) + }; + this.dropboxPopover = new PopoverComponent(data); + } + }, { + key: "openDropbox", + value: function openDropbox(isSilent) { + this.isSilentOpen = isSilent; + + if (isSilent) { + DomUtils.setStyle(this.$dropboxContainer, 'display', 'inline-flex'); + } else { + DomUtils.dispatchEvent(this.$ele, 'beforeOpen'); + DomUtils.setAria(this.$wrapper, 'expanded', true); + } + + this.setDropboxWrapperWidth(); + DomUtils.removeClass(this.$allWrappers, 'closed'); + + if (this.dropboxPopover && !isSilent) { + this.dropboxPopover.show(); + } else { + this.afterShowPopper(); + } + } + }, { + key: "afterShowPopper", + value: function afterShowPopper() { + var isSilent = this.isSilentOpen; + this.isSilentOpen = false; + + if (!isSilent) { + this.moveSelectedOptionsFirst(); + this.setScrollTop(); + DomUtils.addClass(this.$allWrappers, 'focused'); + + if (this.showAsPopup) { + DomUtils.addClass(this.$body, 'vscomp-popup-active'); + this.isPopupActive = true; + } else { + this.focusSearchInput(); + } + + DomUtils.dispatchEvent(this.$ele, 'afterOpen'); + } + } + }, { + key: "closeDropbox", + value: function closeDropbox(isSilent) { + this.isSilentClose = isSilent; + + if (this.keepAlwaysOpen) { + this.removeOptionFocus(); + return; + } + + if (isSilent) { + DomUtils.setStyle(this.$dropboxContainer, 'display', ''); + } else { + DomUtils.dispatchEvent(this.$ele, 'beforeClose'); + DomUtils.setAria(this.$wrapper, 'expanded', false); + DomUtils.setAria(this.$wrapper, 'activedescendant', ''); + } + + if (this.dropboxPopover && !isSilent) { + this.dropboxPopover.hide(); + } else { + this.afterHidePopper(); + } + } + }, { + key: "afterHidePopper", + value: function afterHidePopper() { + var isSilent = this.isSilentClose; + this.isSilentClose = false; + DomUtils.removeClass(this.$allWrappers, 'focused'); + this.removeOptionFocus(); + + if (!isSilent) { + if (this.isPopupActive) { + DomUtils.removeClass(this.$body, 'vscomp-popup-active'); + this.isPopupActive = false; + } + } + + DomUtils.addClass(this.$allWrappers, 'closed'); + + if (!isSilent) { + DomUtils.dispatchEvent(this.$ele, 'afterClose'); + } + } + }, { + key: "moveSelectedOptionsFirst", + value: function moveSelectedOptionsFirst() { + if (!this.showSelectedOptionsFirst) { + return; + } + + this.setSortedOptions(); + + if (!this.$optionsContainer.scrollTop || !this.selectedValues.length) { + this.setVisibleOptions(); + } else { + this.scrollToTop(); + } + } + }, { + key: "toggleDropbox", + value: function toggleDropbox() { + if (this.isOpened()) { + this.closeDropbox(); + } else { + this.openDropbox(); + } + } + }, { + key: "updatePosition", + value: function updatePosition() { + if (!this.dropboxPopover) { + return; + } + + this.$ele.updatePosition(); + } + }, { + key: "isOpened", + value: function isOpened() { + return !DomUtils.hasClass(this.$wrapper, 'closed'); + } + }, { + key: "focusSearchInput", + value: function focusSearchInput() { + var $ele = this.$searchInput; + + if ($ele) { + $ele.focus(); + } + } + }, { + key: "focusOption", + value: function focusOption() { + var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + direction = _ref4.direction, + $option = _ref4.$option, + focusFirst = _ref4.focusFirst; + + var $focusedEle = this.$dropboxContainer.querySelector('.vscomp-option.focused'); + var $newFocusedEle; + + if ($option) { + $newFocusedEle = $option; + } else if (!$focusedEle || focusFirst) { + /* if no element on focus choose first visible one */ + var firstVisibleOptionIndex = this.getFirstVisibleOptionIndex(); + $newFocusedEle = this.$dropboxContainer.querySelector(".vscomp-option[data-visible-index=\"".concat(firstVisibleOptionIndex, "\"]")); + + if (DomUtils.hasClass($newFocusedEle, 'disabled') || DomUtils.hasClass($newFocusedEle, 'group-title')) { + $newFocusedEle = this.getSibling($newFocusedEle, 'next'); + } + } else { + $newFocusedEle = this.getSibling($focusedEle, direction); + } + + if ($newFocusedEle && $newFocusedEle !== $focusedEle) { + if ($focusedEle) { + this.toggleOptionFocusedState($focusedEle, false); + } + + this.toggleOptionFocusedState($newFocusedEle, true); + this.toggleFocusedProp(DomUtils.getData($newFocusedEle, 'index'), true); + this.moveFocusedOptionToView($newFocusedEle); + } + } + }, { + key: "moveFocusedOptionToView", + value: function moveFocusedOptionToView($focusedEle) { + if (!$focusedEle) { + $focusedEle = this.$dropboxContainer.querySelector('.vscomp-option.focused'); + } + + if (!$focusedEle) { + return; + } + + var newScrollTop; + var containerRect = this.$optionsContainer.getBoundingClientRect(); + var optionRect = $focusedEle.getBoundingClientRect(); + var containerTop = containerRect.top; + var containerBottom = containerRect.bottom; + var containerHeight = containerRect.height; + var optionTop = optionRect.top; + var optionBottom = optionRect.bottom; + var optionHeight = optionRect.height; + var optionOffsetTop = $focusedEle.offsetTop; + var optionsTop = DomUtils.getData(this.$options, 'top', 'number'); + /* if option hidden on top */ + + if (containerTop > optionTop) { + newScrollTop = optionOffsetTop + optionsTop; + } else if (containerBottom < optionBottom) { + /* if option hidden on bottom */ + newScrollTop = optionOffsetTop - containerHeight + optionHeight + optionsTop; + } + + if (newScrollTop !== undefined) { + this.$optionsContainer.scrollTop = newScrollTop; + } + } + }, { + key: "removeOptionFocus", + value: function removeOptionFocus() { + var $focusedEle = this.$dropboxContainer.querySelector('.vscomp-option.focused'); + + if (!$focusedEle) { + return; + } + + this.toggleOptionFocusedState($focusedEle, false); + this.toggleFocusedProp(null); + } + }, { + key: "selectOption", + value: function selectOption($ele) { + var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + event = _ref5.event; + + if (!$ele) { + return; + } + + var isAdding = !DomUtils.hasClass($ele, 'selected'); + + if (isAdding) { + if (this.multiple && this.isMaxValuesSelected) { + return; + } + } else { + /** on selecting same value in single select */ + if (!this.multiple) { + this.closeDropbox(); + return; + } + } + + var selectedValues = this.selectedValues; + var selectedValue = DomUtils.getData($ele, 'value'); + var selectedIndex = DomUtils.getData($ele, 'index', 'number'); + var shouldSelectRange = false; + var lastSelectedOptionIndex = this.lastSelectedOptionIndex; + this.lastSelectedOptionIndex = null; + this.toggleSelectedProp(selectedIndex, isAdding); + + if (isAdding) { + if (this.multiple) { + selectedValues.push(selectedValue); + this.toggleAllOptionsClass(); + this.toggleGroupOptionsParent($ele); + + if (event && event.shiftKey) { + shouldSelectRange = true; + } + } else { + if (selectedValues.length) { + this.toggleSelectedProp(this.getOptionIndex(selectedValues[0]), false); + } + + selectedValues = [selectedValue]; + var $prevSelectedOption = this.$dropboxContainer.querySelector('.vscomp-option.selected'); + + if ($prevSelectedOption) { + this.toggleOptionSelectedState($prevSelectedOption, false); + } + + this.closeDropbox(); + } + + this.lastSelectedOptionIndex = selectedIndex; + this.toggleOptionSelectedState($ele); + } else { + if (this.multiple) { + this.toggleOptionSelectedState($ele); + Utils.removeItemFromArray(selectedValues, selectedValue); + this.toggleAllOptionsClass(false); + this.toggleGroupOptionsParent($ele, false); + } + } + + if (DomUtils.hasClass($ele, 'current-new')) { + this.beforeSelectNewValue(); + } + + this.setValue(selectedValues); + + if (shouldSelectRange) { + this.selectRangeOptions(lastSelectedOptionIndex, selectedIndex); + } + } + }, { + key: "selectFocusedOption", + value: function selectFocusedOption() { + this.selectOption(this.$dropboxContainer.querySelector('.vscomp-option.focused')); + } + }, { + key: "selectRangeOptions", + value: function selectRangeOptions(lastSelectedOptionIndex, selectedIndex) { + var _this7 = this; + + if (typeof lastSelectedOptionIndex !== 'number' || this.maxValues) { + return; + } + + var selectedValues = this.selectedValues, + hasOptionGroup = this.hasOptionGroup; + var groupIndexes = {}; + var startIndex; + var endIndex; + + if (lastSelectedOptionIndex < selectedIndex) { + startIndex = lastSelectedOptionIndex; + endIndex = selectedIndex; + } else { + startIndex = selectedIndex; + endIndex = lastSelectedOptionIndex; + } + + this.options.forEach(function (d) { + if (d.isDisabled || d.isGroupTitle || !d.isVisible || d.isSelected) { + return; + } + + var index = d.index; + + if (index > startIndex && index < endIndex) { + if (hasOptionGroup) { + var groupIndex = d.groupIndex; + + if (typeof groupIndex === 'number') { + groupIndexes[groupIndex] = true; + } + } // eslint-disable-next-line no-param-reassign + + + d.isSelected = true; + selectedValues.push(d.value); + } + }); + this.toggleAllOptionsClass(); + this.setValue(selectedValues); + groupIndexes = Object.keys(groupIndexes); + + if (groupIndexes.length) { + var toggleGroupTitleProp = this.toggleGroupTitleProp.bind(this); + groupIndexes.forEach(function (i) { + toggleGroupTitleProp(parseInt(i)); + }); + } + /** using setTimeout to fix the issue of dropbox getting closed on select */ + + + setTimeout(function () { + _this7.renderOptions(); + }, 0); + } + }, { + key: "toggleAllOptions", + value: function toggleAllOptions(isSelected) { + if (!this.multiple || this.disableSelectAll) { + return; + } + + if (typeof isSelected !== 'boolean') { + isSelected = !DomUtils.hasClass(this.$toggleAllCheckbox, 'checked'); + } + + var selectedValues = []; + var selectAllOnlyVisible = this.selectAllOnlyVisible; + this.options.forEach(function (d) { + if (d.isDisabled || d.isCurrentNew) { + return; + } + + if (!isSelected || selectAllOnlyVisible && !d.isVisible) { + // eslint-disable-next-line no-param-reassign + d.isSelected = false; + } else { + // eslint-disable-next-line no-param-reassign + d.isSelected = true; + + if (!d.isGroupTitle) { + selectedValues.push(d.value); + } + } + }); + this.toggleAllOptionsClass(isSelected); + this.setValue(selectedValues); + this.renderOptions(); + } + }, { + key: "toggleAllOptionsClass", + value: function toggleAllOptionsClass(isAllSelected) { + if (!this.multiple) { + return; + } + + var valuePassed = typeof isAllSelected === 'boolean'; + + if (!valuePassed) { + isAllSelected = this.isAllOptionsSelected(); + } + + DomUtils.toggleClass(this.$toggleAllCheckbox, 'checked', isAllSelected); + + if (this.selectAllOnlyVisible && valuePassed) { + this.isAllSelected = this.isAllOptionsSelected(); + } else { + this.isAllSelected = isAllSelected; + } + } + }, { + key: "isAllOptionsSelected", + value: function isAllOptionsSelected() { + var isAllSelected = false; + + if (this.options.length && this.selectedValues.length) { + isAllSelected = !this.options.some(function (d) { + return !d.isSelected && !d.isDisabled && !d.isGroupTitle; + }); + } + + return isAllSelected; + } + }, { + key: "isAllGroupOptionsSelected", + value: function isAllGroupOptionsSelected(groupIndex) { + var isAllSelected = false; + + if (this.options.length) { + isAllSelected = !this.options.some(function (d) { + return !d.isSelected && !d.isDisabled && !d.isGroupTitle && d.groupIndex === groupIndex; + }); + } + + return isAllSelected; + } + }, { + key: "toggleGroupOptionsParent", + value: function toggleGroupOptionsParent($option, isSelected) { + if (!this.hasOptionGroup || this.disableOptionGroupCheckbox || !$option) { + return; + } + + var groupIndex = DomUtils.getData($option, 'groupIndex', 'number'); + var $group = this.$options.querySelector(".vscomp-option[data-index=\"".concat(groupIndex, "\"]")); + var isAllSelected = typeof isSelected === 'boolean' ? isSelected : this.isAllGroupOptionsSelected(groupIndex); + this.toggleGroupTitleCheckbox($group, isAllSelected); + } + }, { + key: "toggleGroupTitleProp", + value: function toggleGroupTitleProp(groupIndex, isSelected) { + var isAllSelected = typeof isSelected === 'boolean' ? isSelected : this.isAllGroupOptionsSelected(groupIndex); + this.toggleSelectedProp(groupIndex, isAllSelected); + } + }, { + key: "toggleGroupOptions", + value: function toggleGroupOptions($ele, isSelected) { + var _this8 = this; + + if (!this.hasOptionGroup || this.disableOptionGroupCheckbox || !$ele) { + return; + } + + var groupIndex = DomUtils.getData($ele, 'index', 'number'); + var selectedValues = this.selectedValues, + selectAllOnlyVisible = this.selectAllOnlyVisible; + var valuesMapping = {}; + var removeItemFromArray = Utils.removeItemFromArray; + selectedValues.forEach(function (d) { + valuesMapping[d] = true; + }); + this.options.forEach(function (d) { + if (d.isDisabled || d.groupIndex !== groupIndex) { + return; + } + + var value = d.value; + + if (!isSelected || selectAllOnlyVisible && !d.isVisible) { + // eslint-disable-next-line no-param-reassign + d.isSelected = false; + + if (valuesMapping[value]) { + removeItemFromArray(selectedValues, value); + } + } else { + // eslint-disable-next-line no-param-reassign + d.isSelected = true; + + if (!valuesMapping[value]) { + selectedValues.push(value); + } + } + }); + this.toggleAllOptionsClass(isSelected ? null : false); + this.setValue(selectedValues); + /** using setTimeout to fix the issue of dropbox getting closed on select */ + + setTimeout(function () { + _this8.renderOptions(); + }, 0); + } + }, { + key: "toggleGroupTitleCheckbox", + value: function toggleGroupTitleCheckbox($ele, isSelected) { + if (!$ele) { + return; + } + + var selectedIndex = DomUtils.getData($ele, 'index', 'number'); + this.toggleSelectedProp(selectedIndex, isSelected); + this.toggleOptionSelectedState($ele, isSelected); + } + }, { + key: "toggleFocusedProp", + value: function toggleFocusedProp(index) { + var isFocused = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (this.focusedOptionIndex) { + this.setOptionProp(this.focusedOptionIndex, 'isFocused', false); + } + + this.setOptionProp(index, 'isFocused', isFocused); + this.focusedOptionIndex = index; + } + }, { + key: "toggleSelectedProp", + value: function toggleSelectedProp(index) { + var isSelected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + this.setOptionProp(index, 'isSelected', isSelected); + } + }, { + key: "scrollToTop", + value: function scrollToTop() { + var isClosed = !this.isOpened(); + + if (isClosed) { + this.openDropbox(true); + } + + var scrollTop = this.$optionsContainer.scrollTop; + + if (scrollTop > 0) { + this.$optionsContainer.scrollTop = 0; + } + + if (isClosed) { + this.closeDropbox(true); + } + } + }, { + key: "reset", + value: function reset() { + var formReset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + this.options.forEach(function (d) { + // eslint-disable-next-line no-param-reassign + d.isSelected = false; + }); + this.beforeValueSet(true); + this.setValue(null, { + disableValidation: formReset + }); + this.afterValueSet(); + + if (formReset) { + DomUtils.removeClass(this.$allWrappers, 'has-error'); + } + + DomUtils.dispatchEvent(this.$ele, 'reset'); + } + }, { + key: "addOption", + value: function addOption(data, rerender) { + if (!data) { + return; + } + + this.lastOptionIndex++; + data.index = this.lastOptionIndex; + var newOption = this.getOptionObj(data); + this.options.push(newOption); + this.sortedOptions.push(newOption); + + if (rerender) { + this.visibleOptionsCount++; + this.afterSetOptions(); + } + } + }, { + key: "removeOption", + value: function removeOption(index) { + if (!index && index != 0) { + return; + } + + this.options.splice(index, 1); + this.lastOptionIndex--; + } + }, { + key: "removeNewOption", + value: function removeNewOption() { + var newOption = this.getNewOption(); + + if (newOption) { + this.removeOption(newOption.index); + } + } + }, { + key: "sortOptions", + value: function sortOptions(options) { + return options.sort(function (a, b) { + var aIsSelected = a.isSelected || a.isAnySelected; + var bIsSelected = b.isSelected || b.isAnySelected; + + if (!aIsSelected && !bIsSelected) { + return 0; + } else if (aIsSelected && (!bIsSelected || a.index < b.index)) { + return -1; + } else { + return 1; + } + }); + } + }, { + key: "sortOptionsGroup", + value: function sortOptionsGroup(options) { + var sortOptions = this.sortOptions.bind(this); + options = this.structureOptionGroup(options); + options.forEach(function (d) { + var childOptions = d.options; // eslint-disable-next-line no-param-reassign + + d.isAnySelected = childOptions.some(function (e) { + return e.isSelected; + }); + + if (d.isAnySelected) { + sortOptions(childOptions); + } + }); + sortOptions(options); + return this.destructureOptionGroup(options); + } + }, { + key: "isOptionVisible", + value: function isOptionVisible(_ref6) { + var data = _ref6.data, + searchValue = _ref6.searchValue, + hasExactOption = _ref6.hasExactOption, + visibleOptionGroupsMapping = _ref6.visibleOptionGroupsMapping, + searchGroup = _ref6.searchGroup; + var value = data.value.toLowerCase(); + var label = data.label.toLowerCase(); + var description = data.description, + alias = data.alias; + var isVisible = label.indexOf(searchValue) !== -1; + + if (data.isGroupTitle) { + if (!searchGroup || !isVisible) { + isVisible = visibleOptionGroupsMapping[data.index]; + } + } + + if (alias && !isVisible) { + isVisible = alias.indexOf(searchValue) !== -1; + } + + if (description && !isVisible) { + isVisible = description.toLowerCase().indexOf(searchValue) !== -1; + } + + data.isVisible = isVisible; + + if (!hasExactOption) { + hasExactOption = label === searchValue || value === searchValue; + } + + return { + isVisible: isVisible, + hasExactOption: hasExactOption + }; + } + }, { + key: "structureOptionGroup", + value: function structureOptionGroup(options) { + var result = []; + var childOptions = {}; + /** getting all group title */ + + options.forEach(function (d) { + if (d.isGroupTitle) { + var childArray = []; // eslint-disable-next-line no-param-reassign + + d.options = childArray; + childOptions[d.index] = childArray; + result.push(d); + } + }); + /** getting all group options */ + + options.forEach(function (d) { + if (d.isGroupOption) { + childOptions[d.groupIndex].push(d); + } + }); + return result; + } + }, { + key: "destructureOptionGroup", + value: function destructureOptionGroup(options) { + var result = []; + options.forEach(function (d) { + result.push(d); + result = result.concat(d.options); + }); + return result; + } + }, { + key: "serverSearch", + value: function serverSearch() { + DomUtils.removeClass(this.$allWrappers, 'has-no-search-results'); + DomUtils.addClass(this.$allWrappers, 'server-searching'); + this.setSelectedOptions(); + this.onServerSearch(this.searchValue, this); + } + }, { + key: "removeValue", + value: function removeValue($ele) { + var selectedValues = this.selectedValues; + var selectedValue = DomUtils.getData($ele, 'value'); + Utils.removeItemFromArray(selectedValues, selectedValue); + this.setValueMethod(selectedValues); + } + }, { + key: "focus", + value: function focus() { + this.$wrapper.focus(); + } + }, { + key: "enable", + value: function enable() { + this.$ele.disabled = false; + this.$ele.removeAttribute('disabled'); + this.$hiddenInput.removeAttribute('disabled'); + DomUtils.setAria(this.$wrapper, 'disabled', false); + } + }, { + key: "disable", + value: function disable() { + this.$ele.disabled = true; + this.$ele.setAttribute('disabled', ''); + this.$hiddenInput.setAttribute('disabled', ''); + DomUtils.setAria(this.$wrapper, 'disabled', true); + } + }, { + key: "validate", + value: function validate() { + if (this.disableValidation) { + return true; + } + + var hasError = false; + + if (this.required && Utils.isEmpty(this.selectedValues)) { + hasError = true; + } + + DomUtils.toggleClass(this.$allWrappers, 'has-error', hasError); + return !hasError; + } + }, { + key: "destroy", + value: function destroy() { + var $ele = this.$ele; + $ele.virtualSelect = undefined; + $ele.value = undefined; + $ele.innerHTML = ''; + + if (this.hasDropboxWrapper) { + this.$dropboxWrapper.remove(); + this.mutationObserver.disconnect(); + } + + DomUtils.removeClass($ele, 'vscomp-ele'); + } + }, { + key: "createSecureTextElements", + value: function createSecureTextElements() { + this.$secureDiv = document.createElement('div'); + this.$secureText = document.createTextNode(''); + this.$secureDiv.appendChild(this.$secureText); + } + }, { + key: "secureText", + value: function secureText(text) { + if (!text || !this.enableSecureText) { + return text; + } + + this.$secureText.nodeValue = text; + return this.$secureDiv.innerHTML; + } + }, { + key: "toggleRequired", + value: function toggleRequired(isRequired) { + this.required = Utils.convertToBoolean(isRequired); + this.$ele.required = this.required; + } + }, { + key: "toggleOptionSelectedState", + value: function toggleOptionSelectedState($ele, value) { + var isSelected = value; + + if (typeof isSelected === 'undefined') { + isSelected = !DomUtils.hasClass($ele, 'selected'); + } + + DomUtils.toggleClass($ele, 'selected', isSelected); + DomUtils.setAria($ele, 'selected', isSelected); + } + }, { + key: "toggleOptionFocusedState", + value: function toggleOptionFocusedState($ele, isFocused) { + if (!$ele) { + return; + } + + DomUtils.toggleClass($ele, 'focused', isFocused); + + if (isFocused) { + DomUtils.setAria(this.$wrapper, 'activedescendant', $ele.id); + } + } + /** static methods - start */ + + }], [{ + key: "init", + value: function init(options) { + var $eleArray = options.ele; + + if (!$eleArray) { + return; + } + + var singleEle = false; + + if (typeof $eleArray === 'string') { + $eleArray = document.querySelectorAll($eleArray); + var eleLength = $eleArray.length; + + if (eleLength === 0) { + return; + } else if (eleLength === 1) { + singleEle = true; + } + } + + if ($eleArray.length === undefined || $eleArray.forEach === undefined) { + $eleArray = [$eleArray]; + singleEle = true; + } + + var instances = []; + $eleArray.forEach(function ($ele) { + /** skipping initialization on calling init method multiple times */ + if ($ele.virtualSelect) { + instances.push($ele.virtualSelect); + return; + } + + options.ele = $ele; + + if ($ele.tagName === 'SELECT') { + VirtualSelect.setPropsFromSelect(options); + } + + instances.push(new VirtualSelect(options)); + }); + return singleEle ? instances[0] : instances; + } + }, { + key: "getAttrProps", + value: function getAttrProps() { + var convertPropToDataAttr = DomUtils.convertPropToDataAttr; + var result = {}; + nativeProps.forEach(function (d) { + result[d] = d; + }); + dataProps.forEach(function (d) { + result[convertPropToDataAttr(d)] = d; + }); + return result; + } + }, { + key: "setPropsFromSelect", + value: function setPropsFromSelect(props) { + var $ele = props.ele; + var disabledOptions = []; + var selectedValue = []; + + var getNativeOptions = function getNativeOptions($container) { + var options = []; + var $options = Array.from($container.children); + $options.forEach(function ($option) { + var value = $option.value; + var option = { + value: value + }; + + if ($option.tagName === 'OPTGROUP') { + option.label = $option.getAttribute('label'); + option.options = getNativeOptions($option); + } else { + option.label = $option.innerHTML; + } + + options.push(option); + + if ($option.disabled) { + disabledOptions.push(value); + } + + if ($option.selected) { + selectedValue.push(value); + } + }); + return options; + }; + + var optionsList = getNativeOptions($ele); + /** creating div element to initiate plugin and removing native element */ + + var $newEle = document.createElement('div'); + DomUtils.setAttrFromEle($ele, $newEle, Object.keys(attrPropsMapping), valueLessProps); + $ele.parentNode.insertBefore($newEle, $ele); + $ele.remove(); + props.ele = $newEle; + props.options = optionsList; + props.disabledOptions = disabledOptions; + props.selectedValue = selectedValue; + } + }, { + key: "onFormReset", + value: function onFormReset(e) { + var $form = e.target.closest('form'); + + if (!$form) { + return; + } + + $form.querySelectorAll('.vscomp-ele-wrapper').forEach(function ($ele) { + $ele.parentElement.virtualSelect.reset(true); + }); + } + }, { + key: "onFormSubmit", + value: function onFormSubmit(e) { + if (!VirtualSelect.validate(e.target.closest('form'))) { + e.preventDefault(); + } + } + }, { + key: "validate", + value: function validate($container) { + if (!$container) { + return true; + } + + var hasError = false; + $container.querySelectorAll('.vscomp-ele-wrapper').forEach(function ($ele) { + var result = $ele.parentElement.virtualSelect.validate(); + + if (!hasError && !result) { + hasError = true; + } + }); + return !hasError; + } + }, { + key: "reset", + value: function reset() { + this.virtualSelect.reset(); + } + }, { + key: "setValueMethod", + value: function setValueMethod() { + var _this$virtualSelect; + + (_this$virtualSelect = this.virtualSelect).setValueMethod.apply(_this$virtualSelect, arguments); + } + }, { + key: "setOptionsMethod", + value: function setOptionsMethod() { + var _this$virtualSelect2; + + (_this$virtualSelect2 = this.virtualSelect).setOptionsMethod.apply(_this$virtualSelect2, arguments); + } + }, { + key: "setDisabledOptionsMethod", + value: function setDisabledOptionsMethod() { + var _this$virtualSelect3; + + (_this$virtualSelect3 = this.virtualSelect).setDisabledOptionsMethod.apply(_this$virtualSelect3, arguments); + } + }, { + key: "toggleSelectAll", + value: function toggleSelectAll(isSelected) { + this.virtualSelect.toggleAllOptions(isSelected); + } + }, { + key: "isAllSelected", + value: function isAllSelected() { + return this.virtualSelect.isAllSelected; + } + }, { + key: "addOptionMethod", + value: function addOptionMethod(data) { + this.virtualSelect.addOption(data, true); + } + }, { + key: "getNewValueMethod", + value: function getNewValueMethod() { + return this.virtualSelect.getNewValue(); + } + }, { + key: "getDisplayValueMethod", + value: function getDisplayValueMethod() { + return this.virtualSelect.getDisplayValue(); + } + }, { + key: "getSelectedOptionsMethod", + value: function getSelectedOptionsMethod(params) { + return this.virtualSelect.getSelectedOptions(params); + } + }, { + key: "openMethod", + value: function openMethod() { + return this.virtualSelect.openDropbox(); + } + }, { + key: "closeMethod", + value: function closeMethod() { + return this.virtualSelect.closeDropbox(); + } + }, { + key: "focusMethod", + value: function focusMethod() { + return this.virtualSelect.focus(); + } + }, { + key: "enableMethod", + value: function enableMethod() { + return this.virtualSelect.enable(); + } + }, { + key: "disableMethod", + value: function disableMethod() { + return this.virtualSelect.disable(); + } + }, { + key: "destroyMethod", + value: function destroyMethod() { + return this.virtualSelect.destroy(); + } + }, { + key: "validateMethod", + value: function validateMethod() { + return this.virtualSelect.validate(); + } + }, { + key: "toggleRequiredMethod", + value: function toggleRequiredMethod(isRequired) { + return this.virtualSelect.toggleRequired(isRequired); + } + }, { + key: "onResizeMethod", + value: function onResizeMethod() { + document.querySelectorAll('.vscomp-ele-wrapper').forEach(function ($ele) { + $ele.parentElement.virtualSelect.onResize(); + }); + } + /** static methods - end */ + + }]); + + return VirtualSelect; +}(); +document.addEventListener('reset', VirtualSelect.onFormReset); +document.addEventListener('submit', VirtualSelect.onFormSubmit); +window.addEventListener('resize', VirtualSelect.onResizeMethod); +var attrPropsMapping = VirtualSelect.getAttrProps(); +window.VirtualSelect = VirtualSelect; +/** polyfill to fix an issue in ie browser */ + +if (typeof NodeList !== 'undefined' && NodeList.prototype && !NodeList.prototype.forEach) { + NodeList.prototype.forEach = Array.prototype.forEach; +} +}(); +// This entry need to be wrapped in an IIFE because it need to be isolated against other entry modules. +!function() { +/*! + * Popover v1.0.7 + * https://sa-si-dev.github.io/popover + * Licensed under MIT (https://github.com/sa-si-dev/popover/blob/master/LICENSE) + */!function(){"use strict";function e(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,o){if(e){if("string"==typeof e)return t(e,o);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,o):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,i=new Array(t);oo-n-t.width?"left":"right",vertical:r>i-r-t.height?"top":"bottom"}}},{key:"getAbsoluteCoords",value:function(e){if(e){var t=e.getBoundingClientRect(),o=window.pageXOffset,i=window.pageYOffset;return{width:t.width,height:t.height,top:t.top+i,right:t.right+o,bottom:t.bottom+i,left:t.left+o}}}},{key:"getCoords",value:function(e){return e?e.getBoundingClientRect():{}}},{key:"getData",value:function(e,t,o){if(e){var i=e?e.dataset[t]:"";return"number"===o?i=parseFloat(i)||0:"true"===i?i=!0:"false"===i&&(i=!1),i}}},{key:"setData",value:function(e,t,o){e&&(e.dataset[t]=o)}},{key:"setStyle",value:function(e,t,o){e&&(e.style[t]=o)}},{key:"show",value:function(e){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"block";t.setStyle(e,"display",o)}},{key:"hide",value:function(e){t.setStyle(e,"display","none")}},{key:"getHideableParent",value:function(e){for(var t,o=e.parentElement;o;){var i=getComputedStyle(o).overflow;if(-1!==i.indexOf("scroll")||-1!==i.indexOf("auto")){t=o;break}o=o.parentElement}return t}}])&&o(i,n),t}();function n(e,t){for(var o=0;ow?w-v:F:D+h>M&&("right"===S?o="left":D=M+vE?E-c:H:C+u>I&&("bottom"===S?o="top":C=I+ch-V&&(B=h-V):"left"!==S&&"right"!==S||((q=m/2+g-K)u-V&&(q=u-V)),i.setStyle(this.$arrowEle,"transform","translate3d(".concat(B,"px, ").concat(q,"px, 0) ").concat(X))}i.hide(this.$popperEle)}},{key:"resetPosition",value:function(){i.setStyle(this.$popperEle,"transform","none"),this.setPosition()}},{key:"show",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=t.resetPosition,n=t.data;clearTimeout(this.exitDelayTimeout),clearTimeout(this.hideDurationTimeout),o&&this.resetPosition(),this.enterDelayTimeout=setTimeout((function(){var t=i.getData(e.$popperEle,"left"),o=i.getData(e.$popperEle,"top"),r="translate3d(".concat(t,"px, ").concat(o,"px, 0)"),a=e.showDuration;i.show(e.$popperEle,"inline-flex"),i.getCoords(e.$popperEle),i.setStyle(e.$popperEle,"transitionDuration",a+"ms"),i.setStyle(e.$popperEle,"transform",r),i.setStyle(e.$popperEle,"opacity",1),e.showDurationTimeout=setTimeout((function(){"function"==typeof e.afterShowCallback&&e.afterShowCallback(n)}),a)}),this.enterDelay)}},{key:"hide",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=t.data;clearTimeout(this.enterDelayTimeout),clearTimeout(this.showDurationTimeout),this.exitDelayTimeout=setTimeout((function(){if(e.$popperEle){var t=i.getData(e.$popperEle,"fromLeft"),n=i.getData(e.$popperEle,"fromTop"),r="translate3d(".concat(t,"px, ").concat(n,"px, 0)"),a=e.hideDuration;i.setStyle(e.$popperEle,"transitionDuration",a+"ms"),i.setStyle(e.$popperEle,"transform",r),i.setStyle(e.$popperEle,"opacity",0),e.hideDurationTimeout=setTimeout((function(){i.hide(e.$popperEle),"function"==typeof e.afterHideCallback&&e.afterHideCallback(o)}),a)}}),this.exitDelay)}},{key:"updatePosition",value:function(){i.setStyle(this.$popperEle,"transitionDuration","0ms"),this.resetPosition();var e=i.getData(this.$popperEle,"left"),t=i.getData(this.$popperEle,"top");i.show(this.$popperEle,"inline-flex"),i.setStyle(this.$popperEle,"transform","translate3d(".concat(e,"px, ").concat(t,"px, 0)"))}}])&&n(t.prototype,o),e}();window.PopperComponent=s}(),function(){"use strict";function e(e,t){for(var o=0;o1&&void 0!==arguments[1]&&arguments[1];return e=!0===e||"true"===e||!1!==e&&"false"!==e&&t}},{key:"removeArrayEmpty",value:function(e){return Array.isArray(e)&&e.length?e.filter((function(e){return!!e})):[]}},{key:"throttle",value:function(e,t){var o,i=0;return function(){for(var n=arguments.length,r=new Array(n),a=0;ae.length)&&(t=e.length);for(var o=0,i=new Array(t);o'),e=this.$popover.querySelector(".pop-comp-arrow")),this.$arrowEle=e}}},{key:"destory",value:function(){this.removeEvents()}}])&&a(o.prototype,i),n&&a(o,n),e}();window.PopoverComponent=l}(); +}(); +/******/ })() +; \ No newline at end of file diff --git a/dist/virtual-select.min.css b/dist/virtual-select.min.css index 7fe5ad0..945d144 100644 --- a/dist/virtual-select.min.css +++ b/dist/virtual-select.min.css @@ -1,9 +1,9 @@ /*! - * Virtual Select v1.0.28 + * Virtual Select v1.0.29 * https://sa-si-dev.github.io/virtual-select * Licensed under MIT (https://github.com/sa-si-dev/virtual-select/blob/master/LICENSE) */ -@-webkit-keyframes vscomp-animation-spin{to{transform:rotateZ(360deg)}}@keyframes vscomp-animation-spin{to{transform:rotateZ(360deg)}}body.vscomp-popup-active{overflow:hidden}.vscomp-ele{display:inline-block;width:100%;max-width:250px}.vscomp-wrapper{display:inline-flex;position:relative;width:100%;font-family:sans-serif;font-size:14px;color:#333;text-align:left;flex-wrap:wrap}.vscomp-wrapper *,.vscomp-wrapper *::before,.vscomp-wrapper *::after{box-sizing:border-box}.vscomp-wrapper:focus{outline:none}.vscomp-dropbox-wrapper{position:absolute;top:0;left:0}.vscomp-toggle-button{display:flex;position:relative;align-items:center;width:100%;padding:7px 30px 7px 10px;border:1px solid #ddd;background-color:#fff;cursor:pointer}.vscomp-value{max-width:100%;height:20px;line-height:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.vscomp-arrow{position:absolute;display:flex;top:0;right:0;width:30px;height:100%;align-items:center;justify-content:center}.vscomp-arrow::after{content:"";transform:rotate(45deg);border:1px solid transparent;border-right-color:#111;border-bottom-color:#111;width:8px;height:8px;margin-top:-6px}.vscomp-clear-icon{position:relative;width:12px;height:12px}.vscomp-clear-icon::before,.vscomp-clear-icon::after{content:"";position:absolute;top:0;left:5px;width:2px;height:12px;background-color:#999}.vscomp-clear-icon::before{transform:rotate(45deg)}.vscomp-clear-icon::after{transform:rotate(-45deg)}.vscomp-clear-icon:hover::before,.vscomp-clear-icon:hover::after{background:#333}.vscomp-clear-button{position:absolute;display:none;top:50%;right:30px;width:24px;height:24px;justify-content:center;align-items:center;border-radius:50%;margin-top:-12px}.vscomp-clear-button:hover{background:#ccc}.vscomp-clear-button:hover .vscomp-clear-icon::before,.vscomp-clear-button:hover .vscomp-clear-icon::after{background-color:#333}.vscomp-dropbox-close-button{display:none;align-items:center;justify-content:center;position:absolute;left:50%;margin-left:-20px;bottom:-48px;width:40px;height:40px;background-color:#fff;border-radius:50%;cursor:pointer}.vscomp-value-tag.more-value-count{white-space:nowrap}.vscomp-dropbox-container{width:100%;z-index:2}.vscomp-dropbox{width:100%;background-color:#fff}.vscomp-options-container{position:relative;max-height:210px;overflow:auto}.vscomp-options-bottom-freezer{position:absolute;bottom:0;left:0;right:0;height:2px}.vscomp-option{display:flex;flex-wrap:wrap;position:relative;align-items:center;padding:0 15px;height:40px;align-items:center;cursor:pointer}.vscomp-option.selected{background-color:#eee}.vscomp-option.focused{background-color:#ccc}.vscomp-option.disabled{opacity:.5;cursor:default}.vscomp-option.group-title .vscomp-option-text{opacity:.6;cursor:default}.vscomp-option.group-title.selected{background-color:transparent}.vscomp-option.group-option{padding-left:30px}.vscomp-new-option-icon{position:absolute;top:0;right:0;width:30px;height:30px}.vscomp-new-option-icon::before{content:"";position:absolute;top:0;right:0;border:15px solid #512da8;border-left-color:transparent;border-bottom-color:transparent}.vscomp-new-option-icon::after{content:"+";display:flex;align-items:center;justify-content:center;position:absolute;top:0;right:1px;font-size:18px;color:#fff;width:15px;height:15px}.vscomp-option-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vscomp-option-description{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:100%;line-height:15px;color:#666;font-size:13px}.vscomp-search-container{display:flex;align-items:center;position:relative;height:40px;padding:0 5px 0 15px;border-bottom:1px solid #ddd}.vscomp-search-input{border:none;width:calc(100% - 30px);height:38px;padding:10px 0;font-size:15px;background-color:transparent;color:inherit}.vscomp-search-input:focus{outline:none}.vscomp-search-clear{display:flex;align-items:center;justify-content:center;width:30px;height:30px;font-size:25px;color:#999;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;visibility:hidden}.vscomp-search-clear:hover{color:inherit}.vscomp-no-options,.vscomp-no-search-results{display:none;justify-content:center;align-items:center;padding:20px 10px}.vscomp-options-loader{display:none;text-align:center;padding:20px 0}.vscomp-options-loader::before{content:"";display:inline-block;height:40px;width:40px;opacity:.7;border-radius:50%;background-color:#fff;box-shadow:-4px -5px 3px -3px rgba(0,0,0,.3);-webkit-animation:vscomp-animation-spin .8s infinite linear;animation:vscomp-animation-spin .8s infinite linear}.vscomp-ele[disabled]{cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vscomp-ele[disabled] .vscomp-wrapper{pointer-events:none;opacity:.7}.vscomp-wrapper .checkbox-icon{display:inline-flex;position:relative;width:15px;height:15px;margin-right:10px}.vscomp-wrapper .checkbox-icon::after{content:"";display:inline-block;width:100%;height:100%;border:2px solid #888;transition-duration:.2s}.vscomp-wrapper .checkbox-icon.checked::after{width:50%;border-color:#512da8;border-left-color:transparent;border-top-color:transparent;transform:rotate(45deg) translate(1px, -4px)}.vscomp-wrapper.show-as-popup .vscomp-dropbox-container{display:flex;justify-content:center;align-items:center;position:fixed;top:0;left:0;width:100vw;height:100vh;overflow:auto;opacity:1;background-color:rgba(0,0,0,.5);padding:0 10px}.vscomp-wrapper.show-as-popup .vscomp-dropbox{position:relative;width:80%;max-height:calc(80% - 48px);max-width:500px;margin-top:-24px}.vscomp-wrapper.show-as-popup .vscomp-dropbox-close-button{display:flex}.vscomp-wrapper.popup-position-left .vscomp-dropbox-container{justify-content:flex-start}.vscomp-wrapper.popup-position-right .vscomp-dropbox-container{justify-content:flex-end}.vscomp-wrapper.has-select-all .vscomp-toggle-all-button{display:flex;align-items:center;cursor:pointer}.vscomp-wrapper.has-select-all .vscomp-search-input,.vscomp-wrapper.has-select-all .vscomp-toggle-all-label{width:calc(100% - 55px)}.vscomp-wrapper.has-select-all .vscomp-toggle-all-label{display:none}.vscomp-wrapper:not(.has-search-input) .vscomp-toggle-all-button{width:100%}.vscomp-wrapper:not(.has-search-input) .vscomp-toggle-all-label{display:inline-block}.vscomp-wrapper.multiple .vscomp-option .vscomp-option-text{width:calc(100% - 25px)}.vscomp-wrapper.multiple .vscomp-option .vscomp-option-description{padding-left:25px}.vscomp-wrapper.multiple .vscomp-option.selected .checkbox-icon::after{width:50%;border-color:#512da8;border-left-color:transparent;border-top-color:transparent;transform:rotate(45deg) translate(1px, -4px)}.vscomp-wrapper.focused .vscomp-toggle-button,.vscomp-wrapper:focus .vscomp-toggle-button{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2)}.vscomp-wrapper.closed .vscomp-dropbox-container,.vscomp-wrapper.closed.vscomp-dropbox-wrapper{display:none}.vscomp-wrapper:not(.has-value) .vscomp-value{opacity:.5}.vscomp-wrapper.has-clear-button.has-value .vscomp-clear-button{display:flex}.vscomp-wrapper.has-clear-button .vscomp-toggle-button{padding-right:54px}.vscomp-wrapper.has-no-options .vscomp-options-container,.vscomp-wrapper.has-no-search-results .vscomp-options-container{display:none}.vscomp-wrapper.has-no-options .vscomp-no-options{display:flex}.vscomp-wrapper.has-no-search-results .vscomp-no-search-results{display:flex}.vscomp-wrapper.has-search-value .vscomp-search-clear{visibility:visible}.vscomp-wrapper.has-no-options .vscomp-toggle-all-button{opacity:.5;pointer-events:none}.vscomp-wrapper.keep-always-open .vscomp-toggle-button{padding-right:24px}.vscomp-wrapper.keep-always-open .vscomp-clear-button{right:5px}.vscomp-wrapper.keep-always-open .vscomp-arrow{display:none}.vscomp-wrapper.keep-always-open .vscomp-dropbox-container{position:relative;z-index:1}.vscomp-wrapper.keep-always-open .vscomp-dropbox{transition-duration:0s;box-shadow:none;border:1px solid #ddd}.vscomp-wrapper.keep-always-open.focused,.vscomp-wrapper.keep-always-open:focus,.vscomp-wrapper.keep-always-open:hover{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2)}.vscomp-wrapper.server-searching .vscomp-options-list{display:none}.vscomp-wrapper.server-searching .vscomp-options-loader{display:block}.vscomp-wrapper.has-error .vscomp-toggle-button{border-color:#b00020}.vscomp-wrapper.show-value-as-tags .vscomp-toggle-button{padding:4px 22px 0 10px}.vscomp-wrapper.show-value-as-tags .vscomp-value{display:flex;flex-wrap:wrap;height:auto;min-height:28px;overflow:auto;white-space:normal;text-overflow:unset}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-flex;align-items:center;max-width:100%;border:1px solid #ddd;margin:0 4px 4px 0;padding:2px 3px 2px 8px;font-size:12px;line-height:16px;border-radius:20px}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag.more-value-count{padding-right:8px}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag-content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:calc(100% - 20px)}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag-clear-button{display:flex;align-items:center;justify-content:center;width:20px;height:20px}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag-clear-button .vscomp-clear-icon{transform:scale(0.8)}.vscomp-wrapper.show-value-as-tags .vscomp-arrow{height:34px}.vscomp-wrapper.show-value-as-tags .vscomp-clear-button{margin-top:0;top:5px}.vscomp-wrapper.show-value-as-tags.has-value .vscomp-arrow{display:none}.vscomp-wrapper.show-value-as-tags.has-value .vscomp-clear-button{right:2px}.vscomp-wrapper.show-value-as-tags:not(.has-value) .vscomp-toggle-button{padding-bottom:2px}.vscomp-wrapper.show-value-as-tags:not(.has-value) .vscomp-value{align-items:center;padding-bottom:3px}.vscomp-wrapper.text-direction-rtl{direction:rtl}.vscomp-wrapper.text-direction-rtl .vscomp-toggle-button{padding:7px 10px 7px 30px}.vscomp-wrapper.text-direction-rtl .vscomp-arrow{right:auto;left:0}.vscomp-wrapper.text-direction-rtl .vscomp-clear-button{right:auto !important;left:30px}.vscomp-wrapper.text-direction-rtl .checkbox-icon{margin-right:0;margin-left:10px}.vscomp-wrapper.text-direction-rtl .checkbox-icon.checked::after{transform:rotate(45deg) translate(-4px, 1px)}.vscomp-wrapper.text-direction-rtl .vscomp-search-container{padding:0 15px 0 5px}.vscomp-wrapper.text-direction-rtl .vscomp-toggle-all-label{text-align:right}.vscomp-wrapper.text-direction-rtl .vscomp-option{text-align:right}.vscomp-wrapper.text-direction-rtl .vscomp-option.group-option{padding-right:30px}.vscomp-wrapper.text-direction-rtl .vscomp-new-option-icon{right:auto;left:0}.vscomp-wrapper.text-direction-rtl .vscomp-new-option-icon::before{border-left-color:#512da8;border-right-color:transparent}.vscomp-wrapper.text-direction-rtl .vscomp-new-option-icon::after{right:auto;left:1px}.vscomp-wrapper.text-direction-rtl.multiple .vscomp-option.selected .checkbox-icon::after{transform:rotate(45deg) translate(-4px, 1px)}.vscomp-wrapper.text-direction-rtl.has-clear-button .vscomp-toggle-button{padding-left:54px}.vscomp-wrapper.text-direction-rtl.keep-always-open .vscomp-toggle-button{padding-left:24px}.vscomp-wrapper.text-direction-rtl.keep-always-open .vscomp-clear-button{left:5px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags .vscomp-toggle-button{padding:4px 10px 0 22px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags .vscomp-value-tag{margin:0 0 4px 4px;padding:2px 8px 2px 3px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags .vscomp-value-tag.more-value-count{padding-left:8px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags.has-value .vscomp-clear-button{left:2px} +@-webkit-keyframes vscomp-animation-spin{to{transform:rotateZ(360deg)}}@keyframes vscomp-animation-spin{to{transform:rotateZ(360deg)}}.vscomp-popup-active{overflow:hidden !important}.vscomp-ele{display:inline-block;max-width:250px;width:100%}.vscomp-wrapper{color:#333;display:inline-flex;flex-wrap:wrap;font-family:sans-serif;font-size:14px;position:relative;text-align:left;width:100%}.vscomp-wrapper *,.vscomp-wrapper *::before,.vscomp-wrapper *::after{box-sizing:border-box}.vscomp-wrapper:focus{outline:none}.vscomp-dropbox-wrapper{left:0;position:absolute;top:0}.vscomp-toggle-button{align-items:center;background-color:#fff;border:1px solid #ddd;cursor:pointer;display:flex;padding:7px 30px 7px 10px;position:relative;width:100%}.vscomp-value{height:20px;line-height:20px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vscomp-arrow{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;width:30px}.vscomp-arrow::after{transform:rotate(45deg);border:1px solid transparent;border-bottom-color:#111;border-right-color:#111;content:"";height:8px;margin-top:-6px;width:8px}.vscomp-clear-icon{height:12px;position:relative;width:12px}.vscomp-clear-icon::before,.vscomp-clear-icon::after{background-color:#999;content:"";height:12px;left:5px;position:absolute;top:0;width:2px}.vscomp-clear-icon::before{transform:rotate(45deg)}.vscomp-clear-icon::after{transform:rotate(-45deg)}.vscomp-clear-icon:hover::before,.vscomp-clear-icon:hover::after{background:#333}.vscomp-clear-button{align-items:center;border-radius:50%;display:none;height:24px;justify-content:center;margin-top:-12px;position:absolute;right:30px;top:50%;width:24px}.vscomp-clear-button:hover{background:#ccc}.vscomp-clear-button:hover .vscomp-clear-icon::before,.vscomp-clear-button:hover .vscomp-clear-icon::after{background-color:#333}.vscomp-dropbox-close-button{align-items:center;background-color:#fff;border-radius:50%;bottom:-48px;cursor:pointer;display:none;height:40px;justify-content:center;left:50%;margin-left:-20px;position:absolute;width:40px}.vscomp-value-tag.more-value-count{white-space:nowrap}.vscomp-dropbox-container{width:100%;z-index:2}.vscomp-dropbox{background-color:#fff;width:100%}.vscomp-options-container{max-height:210px;overflow:auto;position:relative}.vscomp-options-bottom-freezer{bottom:0;height:2px;left:0;position:absolute;right:0}.vscomp-option{align-items:center;cursor:pointer;display:flex;flex-wrap:wrap;height:40px;padding:0 15px;position:relative}.vscomp-option.selected{background-color:#eee}.vscomp-option.focused{background-color:#ccc}.vscomp-option.disabled{cursor:default;opacity:.5}.vscomp-option.group-title .vscomp-option-text{cursor:default;opacity:.6}.vscomp-option.group-title.selected{background-color:transparent}.vscomp-option.group-option{padding-left:30px}.vscomp-new-option-icon{height:30px;position:absolute;right:0;top:0;width:30px}.vscomp-new-option-icon::before{border:15px solid #512da8;border-bottom-color:transparent;border-left-color:transparent;content:"";position:absolute;right:0;top:0}.vscomp-new-option-icon::after{align-items:center;color:#fff;content:"+";display:flex;font-size:18px;height:15px;justify-content:center;position:absolute;right:1px;top:0;width:15px}.vscomp-option-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.vscomp-option-description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#666;font-size:13px;line-height:15px;width:100%}.vscomp-search-container{align-items:center;border-bottom:1px solid #ddd;display:flex;height:40px;padding:0 5px 0 15px;position:relative}.vscomp-search-input{background-color:transparent;border:0;color:inherit;font-size:15px;height:38px;padding:10px 0;width:calc(100% - 30px)}.vscomp-search-input:focus{outline:none}.vscomp-search-clear{align-items:center;color:#999;cursor:pointer;display:flex;font-size:25px;height:30px;justify-content:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;visibility:hidden;width:30px}.vscomp-search-clear:hover{color:inherit}.vscomp-no-options,.vscomp-no-search-results{align-items:center;display:none;justify-content:center;padding:20px 10px}.vscomp-options-loader{display:none;padding:20px 0;text-align:center}.vscomp-options-loader::before{-webkit-animation:vscomp-animation-spin .8s infinite linear;animation:vscomp-animation-spin .8s infinite linear;background-color:#fff;border-radius:50%;box-shadow:-4px -5px 3px -3px rgba(0,0,0,.3);content:"";display:inline-block;height:40px;opacity:.7;width:40px}.vscomp-ele[disabled]{cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vscomp-ele[disabled] .vscomp-wrapper{opacity:.7;pointer-events:none}.vscomp-wrapper .checkbox-icon{display:inline-flex;height:15px;margin-right:10px;position:relative;width:15px}.vscomp-wrapper .checkbox-icon::after{transition-duration:.2s;border:2px solid #888;content:"";display:inline-block;height:100%;width:100%}.vscomp-wrapper .checkbox-icon.checked::after{transform:rotate(45deg) translate(1px, -4px);border-color:#512da8;border-left-color:transparent;border-top-color:transparent;width:50%}.vscomp-wrapper.show-as-popup .vscomp-dropbox-container{align-items:center;background-color:rgba(0,0,0,.5);display:flex;height:100vh;justify-content:center;left:0;opacity:1;overflow:auto;padding:0 10px;position:fixed;top:0;width:100vw}.vscomp-wrapper.show-as-popup .vscomp-dropbox{margin-top:-24px;max-height:calc(80% - 48px);max-width:500px;position:relative;width:80%}.vscomp-wrapper.show-as-popup .vscomp-dropbox-close-button{display:flex}.vscomp-wrapper.popup-position-left .vscomp-dropbox-container{justify-content:flex-start}.vscomp-wrapper.popup-position-right .vscomp-dropbox-container{justify-content:flex-end}.vscomp-wrapper.has-select-all .vscomp-toggle-all-button{align-items:center;cursor:pointer;display:flex}.vscomp-wrapper.has-select-all .vscomp-search-input,.vscomp-wrapper.has-select-all .vscomp-toggle-all-label{width:calc(100% - 55px)}.vscomp-wrapper.has-select-all .vscomp-toggle-all-label{display:none}.vscomp-wrapper:not(.has-search-input) .vscomp-toggle-all-button{width:100%}.vscomp-wrapper:not(.has-search-input) .vscomp-toggle-all-label{display:inline-block}.vscomp-wrapper.multiple .vscomp-option .vscomp-option-text{width:calc(100% - 25px)}.vscomp-wrapper.multiple .vscomp-option .vscomp-option-description{padding-left:25px}.vscomp-wrapper.multiple .vscomp-option.selected .checkbox-icon::after{transform:rotate(45deg) translate(1px, -4px);border-color:#512da8;border-left-color:transparent;border-top-color:transparent;width:50%}.vscomp-wrapper.focused .vscomp-toggle-button,.vscomp-wrapper:focus .vscomp-toggle-button{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2)}.vscomp-wrapper.closed .vscomp-dropbox-container,.vscomp-wrapper.closed.vscomp-dropbox-wrapper{display:none}.vscomp-wrapper:not(.has-value) .vscomp-value{opacity:.5}.vscomp-wrapper.has-clear-button.has-value .vscomp-clear-button{display:flex}.vscomp-wrapper.has-clear-button .vscomp-toggle-button{padding-right:54px}.vscomp-wrapper.has-no-options .vscomp-options-container,.vscomp-wrapper.has-no-search-results .vscomp-options-container{display:none}.vscomp-wrapper.has-no-options .vscomp-no-options{display:flex}.vscomp-wrapper.has-no-search-results .vscomp-no-search-results{display:flex}.vscomp-wrapper.has-search-value .vscomp-search-clear{visibility:visible}.vscomp-wrapper.has-no-options .vscomp-toggle-all-button{opacity:.5;pointer-events:none}.vscomp-wrapper.keep-always-open .vscomp-toggle-button{padding-right:24px}.vscomp-wrapper.keep-always-open .vscomp-clear-button{right:5px}.vscomp-wrapper.keep-always-open .vscomp-arrow{display:none}.vscomp-wrapper.keep-always-open .vscomp-dropbox-container{position:relative;z-index:1}.vscomp-wrapper.keep-always-open .vscomp-dropbox{transition-duration:0s;border:1px solid #ddd;box-shadow:none}.vscomp-wrapper.keep-always-open.focused,.vscomp-wrapper.keep-always-open:focus,.vscomp-wrapper.keep-always-open:hover{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2)}.vscomp-wrapper.server-searching .vscomp-options-list{display:none}.vscomp-wrapper.server-searching .vscomp-options-loader{display:block}.vscomp-wrapper.has-error .vscomp-toggle-button{border-color:#b00020}.vscomp-wrapper.show-value-as-tags .vscomp-toggle-button{padding:4px 22px 0 10px}.vscomp-wrapper.show-value-as-tags .vscomp-value{display:flex;flex-wrap:wrap;height:auto;min-height:28px;overflow:auto;text-overflow:unset;white-space:normal}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;align-items:center;border:1px solid #ddd;border-radius:20px;display:inline-flex;font-size:12px;line-height:16px;margin:0 4px 4px 0;max-width:100%;padding:2px 3px 2px 8px}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag.more-value-count{padding-right:8px}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:calc(100% - 20px)}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag-clear-button{align-items:center;display:flex;height:20px;justify-content:center;width:20px}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag-clear-button .vscomp-clear-icon{transform:scale(0.8)}.vscomp-wrapper.show-value-as-tags .vscomp-arrow{height:34px}.vscomp-wrapper.show-value-as-tags .vscomp-clear-button{margin-top:0;top:5px}.vscomp-wrapper.show-value-as-tags.has-value .vscomp-arrow{display:none}.vscomp-wrapper.show-value-as-tags.has-value .vscomp-clear-button{right:2px}.vscomp-wrapper.show-value-as-tags:not(.has-value) .vscomp-toggle-button{padding-bottom:2px}.vscomp-wrapper.show-value-as-tags:not(.has-value) .vscomp-value{align-items:center;padding-bottom:3px}.vscomp-wrapper.text-direction-rtl{direction:rtl}.vscomp-wrapper.text-direction-rtl .vscomp-toggle-button{padding:7px 10px 7px 30px}.vscomp-wrapper.text-direction-rtl .vscomp-arrow{left:0;right:auto}.vscomp-wrapper.text-direction-rtl .vscomp-clear-button{left:30px;right:auto !important}.vscomp-wrapper.text-direction-rtl .checkbox-icon{margin-left:10px;margin-right:0}.vscomp-wrapper.text-direction-rtl .checkbox-icon.checked::after{transform:rotate(45deg) translate(-4px, 1px)}.vscomp-wrapper.text-direction-rtl .vscomp-search-container{padding:0 15px 0 5px}.vscomp-wrapper.text-direction-rtl .vscomp-toggle-all-label{text-align:right}.vscomp-wrapper.text-direction-rtl .vscomp-option{text-align:right}.vscomp-wrapper.text-direction-rtl .vscomp-option.group-option{padding-right:30px}.vscomp-wrapper.text-direction-rtl .vscomp-new-option-icon{left:0;right:auto}.vscomp-wrapper.text-direction-rtl .vscomp-new-option-icon::before{border-left-color:#512da8;border-right-color:transparent}.vscomp-wrapper.text-direction-rtl .vscomp-new-option-icon::after{left:1px;right:auto}.vscomp-wrapper.text-direction-rtl.multiple .vscomp-option.selected .checkbox-icon::after{transform:rotate(45deg) translate(-4px, 1px)}.vscomp-wrapper.text-direction-rtl.has-clear-button .vscomp-toggle-button{padding-left:54px}.vscomp-wrapper.text-direction-rtl.keep-always-open .vscomp-toggle-button{padding-left:24px}.vscomp-wrapper.text-direction-rtl.keep-always-open .vscomp-clear-button{left:5px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags .vscomp-toggle-button{padding:4px 10px 0 22px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags .vscomp-value-tag{margin:0 0 4px 4px;padding:2px 8px 2px 3px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags .vscomp-value-tag.more-value-count{padding-left:8px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags.has-value .vscomp-clear-button{left:2px} /*! * Popover v1.0.7 * https://sa-si-dev.github.io/popover diff --git a/dist/virtual-select.min.js b/dist/virtual-select.min.js index 6f2f1de..c2001ea 100644 --- a/dist/virtual-select.min.js +++ b/dist/virtual-select.min.js @@ -1,5 +1,5 @@ /*! - * Virtual Select v1.0.28 + * Virtual Select v1.0.29 * https://sa-si-dev.github.io/virtual-select * Licensed under MIT (https://github.com/sa-si-dev/virtual-select/blob/master/LICENSE) - */!function(){"use strict";function e(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,i){if(e){if("string"==typeof e)return t(e,i);var o=Object.prototype.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?t(e,i):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,o=new Array(t);i1&&void 0!==arguments[1]&&arguments[1];return!0===e||"true"===e||!1!==e&&"false"!==e&&t}},{key:"isEmpty",value:function(e){var t=!1;return e?Array.isArray(e)?0===e.length&&(t=!0):"object"===i(e)&&0===Object.keys(e).length&&(t=!0):t=!0,t}},{key:"isNotEmpty",value:function(e){return!this.isEmpty(e)}},{key:"removeItemFromArray",value:function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!Array.isArray(t)||!t.length)return t;var s=o?e(t):t,n=s.indexOf(i);return-1!==n&&s.splice(n,1),s}},{key:"removeArrayEmpty",value:function(e){return Array.isArray(e)&&e.length?e.filter((function(e){return!!e})):[]}},{key:"getRandomInt",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=Math.ceil(t),o=Math.floor(e);return Math.floor(Math.random()*(o-i-1))+i}}],(n=null)&&o(s.prototype,n),r&&o(s,r),Object.defineProperty(s,"prototype",{writable:!1}),t}();function n(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var o,s,n=[],r=!0,a=!1;try{for(i=i.call(e);!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,s=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw s}}return n}}(e,t)||a(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){if(e){if("string"==typeof e)return l(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,o=new Array(t);ie.offsetWidth}},{key:"getData",value:function(e,t,i){if(e){var o=e?e.dataset[t]:"";return"number"===i?o=parseFloat(o)||0:"true"===o?o=!0:"false"===o&&(o=!1),o}}},{key:"setData",value:function(e,t,i){e&&(e.dataset[t]=i)}},{key:"setAttr",value:function(e,t,i){e&&e.setAttribute(t,i)}},{key:"setAttrFromEle",value:function(e,t,i,o){var s={};i.forEach((function(t){s[t]=e.getAttribute(t)})),i.forEach((function(e){var i=s[e];(i||-1!==o.indexOf(e)&&""===i)&&t.setAttribute(e,i)}))}},{key:"setStyle",value:function(e,t,i){e&&(e.style[t]=i)}},{key:"setStyles",value:function(e,t){e&&t&&Object.keys(t).forEach((function(i){e.style[i]=t[i]}))}},{key:"setAria",value:function(e,t,i){var o=t;"role"!==o&&(o="aria-".concat(o)),e.setAttribute(o,i)}},{key:"getElements",value:function(e){return e?void 0===e.forEach?[e]:e:[]}},{key:"addEvent",value:function(t,i,o){t&&(i=s.removeArrayEmpty(i.split(" "))).forEach((function(i){(t=e.getElements(t)).forEach((function(e){e.addEventListener(i,o)}))}))}},{key:"dispatchEvent",value:function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];t&&(t=e.getElements(t),setTimeout((function(){t.forEach((function(e){e.dispatchEvent(new CustomEvent(i,{bubbles:o}))}))}),0))}},{key:"getAttributesText",value:function(e){var t="";return e?(Object.entries(e).forEach((function(e){var i=n(e,2),o=i[0],s=i[1];void 0!==s&&(t+=" ".concat(o,'="').concat(s,'" '))})),t):t}},{key:"convertPropToDataAttr",value:function(e){return e?"data-".concat(e).replace(/([A-Z])/g,"-$1").toLowerCase():""}}],(i=null)&&p(t.prototype,i),o&&p(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function h(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function c(e){return function(e){if(Array.isArray(e))return v(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||d(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){if(e){if("string"==typeof e)return v(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?v(e,t):void 0}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,o=new Array(t);i\n \n\n
\n
\n ").concat(this.placeholder,'\n
\n\n
\n\n
\n \n
\n
\n\n ').concat(this.renderDropbox({wrapperClasses:t}),"\n ");this.$ele.innerHTML=r,this.$body=document.querySelector("body"),this.$wrapper=this.$ele.querySelector(".vscomp-wrapper"),this.hasDropboxWrapper?(this.$allWrappers=[this.$wrapper,this.$dropboxWrapper],this.$dropboxContainer=this.$dropboxWrapper.querySelector(".vscomp-dropbox-container"),u.addClass(this.$dropboxContainer,"pop-comp-wrapper")):(this.$allWrappers=[this.$wrapper],this.$dropboxContainer=this.$wrapper.querySelector(".vscomp-dropbox-container")),this.$toggleButton=this.$ele.querySelector(".vscomp-toggle-button"),this.$clearButton=this.$ele.querySelector(".vscomp-clear-button"),this.$valueText=this.$ele.querySelector(".vscomp-value"),this.$hiddenInput=this.$ele.querySelector(".vscomp-hidden-input"),this.$dropbox=this.$dropboxContainer.querySelector(".vscomp-dropbox"),this.$dropboxCloseButton=this.$dropboxContainer.querySelector(".vscomp-dropbox-close-button"),this.$search=this.$dropboxContainer.querySelector(".vscomp-search-wrapper"),this.$optionsContainer=this.$dropboxContainer.querySelector(".vscomp-options-container"),this.$optionsList=this.$dropboxContainer.querySelector(".vscomp-options-list"),this.$options=this.$dropboxContainer.querySelector(".vscomp-options"),this.$noOptions=this.$dropboxContainer.querySelector(".vscomp-no-options"),this.$noSearchResults=this.$dropboxContainer.querySelector(".vscomp-no-search-results"),this.afterRenderWrapper()}}},{key:"renderDropbox",value:function(e){var t=e.wrapperClasses,i="self"!==this.dropboxWrapper?document.querySelector(this.dropboxWrapper):null,o='
\n
\n
\n\n
\n
\n\n
\n
\n
\n
\n\n
\n
').concat(this.noOptionsText,'
\n
').concat(this.noSearchResultsText,'
\n\n \n
\n
');if(i){var s=document.createElement("div");return this.$dropboxWrapper=s,this.hasDropboxWrapper=!0,s.innerHTML=o,i.appendChild(s),u.addClass(s,"vscomp-dropbox-wrapper ".concat(t)),""}return this.hasDropboxWrapper=!1,o}},{key:"renderOptions",value:function(){var e,t=this,i="",o=this.getVisibleOptions(),n="",r="",a=!(!this.markSearchResults||!this.searchValue),l=this.labelRenderer,p=this.disableOptionGroupCheckbox,u="function"==typeof l,h=this.uniqueId,c=this.searchGroup,d=s.convertToBoolean;if(a&&(e=new RegExp("(".concat(this.searchValue,")"),"gi")),this.multiple&&(n=''),this.allowNewOption){var v=this.getTooltipAttrText("New Option");r='")}o.forEach((function(o){var s,v=o.index,f="vscomp-option",y=t.getTooltipAttrText("",!0,!0),b=n,g="",m="",O="",S=d(o.isSelected),x="";o.isFocused&&(f+=" focused"),o.isDisabled&&(f+=" disabled",x='aria-disabled="true"'),o.isGroupTitle&&(f+=" group-title",p&&(b="")),S&&(f+=" selected"),o.isGroupOption&&(f+=" group-option",O='data-group-index="'.concat(o.groupIndex,'"')),s=u?l(o):o.label,o.description&&(m='
").concat(o.description,"
")),o.isCurrentNew?(f+=" current-new",g+=r):!a||o.isGroupTitle&&!c||(s=s.replace(e,"$1")),i+='
\n ").concat(b,'\n \n ").concat(s,"\n \n ").concat(m,"\n ").concat(g,"\n
")})),this.$options.innerHTML=i,this.$visibleOptions=this.$options.querySelectorAll(".vscomp-option"),this.afterRenderOptions()}},{key:"renderSearch",value:function(){if(this.hasSearchContainer){var e="",t="";this.multiple&&!this.disableSelectAll&&(e='\n \n '.concat(this.selectAllText,"\n ")),this.hasSearch&&(t='\n ×'));var i='
\n '.concat(e,"\n ").concat(t,"\n
");this.$search.innerHTML=i,this.$searchInput=this.$dropboxContainer.querySelector(".vscomp-search-input"),this.$searchClear=this.$dropboxContainer.querySelector(".vscomp-search-clear"),this.$toggleAllButton=this.$dropboxContainer.querySelector(".vscomp-toggle-all-button"),this.$toggleAllCheckbox=this.$dropboxContainer.querySelector(".vscomp-toggle-all-checkbox"),this.addEvent(this.$searchInput,"keyup change","onSearch"),this.addEvent(this.$searchClear,"click","onSearchClear"),this.addEvent(this.$toggleAllButton,"click","onToggleAllOptions")}}},{key:"addEvents",value:function(){this.addEvent(document,"click","onDocumentClick"),this.addEvent(this.$allWrappers,"keydown","onKeyDown"),this.addEvent(this.$toggleButton,"click","onToggleButtonClick"),this.addEvent(this.$clearButton,"click","onClearButtonClick"),this.addEvent(this.$dropboxContainer,"click","onDropboxContainerClick"),this.addEvent(this.$dropboxCloseButton,"click","onDropboxCloseButtonClick"),this.addEvent(this.$optionsContainer,"scroll","onOptionsScroll"),this.addEvent(this.$options,"click","onOptionsClick"),this.addEvent(this.$options,"mouseover","onOptionsMouseOver"),this.addEvent(this.$options,"touchmove","onOptionsTouchMove"),this.addMutationObserver()}},{key:"addEvent",value:function(e,t,i){var o=this;e&&(t=s.removeArrayEmpty(t.split(" "))).forEach((function(t){var s="".concat(i,"-").concat(t),n=o.events[s];n||(n=o[i].bind(o),o.events[s]=n),u.addEvent(e,t,n)}))}},{key:"onDocumentClick",value:function(e){var t=e.target.closest(".vscomp-wrapper");t!==this.$wrapper&&t!==this.$dropboxWrapper&&this.isOpened()&&this.closeDropbox()}},{key:"onKeyDown",value:function(e){var t=e.which||e.keyCode,i=y[t];i&&this[i](e)}},{key:"onEnterPress",value:function(e){e.preventDefault(),this.isOpened()?this.selectFocusedOption():this.openDropbox()}},{key:"onDownArrowPress",value:function(e){e.preventDefault(),this.isOpened()?this.focusOption("next"):this.openDropbox()}},{key:"onUpArrowPress",value:function(e){e.preventDefault(),this.isOpened()?this.focusOption("previous"):this.openDropbox()}},{key:"onToggleButtonClick",value:function(e){var t=e.target;t.closest(".vscomp-value-tag-clear-button")?this.removeValue(t.closest(".vscomp-value-tag")):t.closest(".toggle-button-child")||this.toggleDropbox()}},{key:"onClearButtonClick",value:function(){this.reset()}},{key:"onOptionsScroll",value:function(){this.setVisibleOptions()}},{key:"onOptionsClick",value:function(e){var t=e.target.closest(".vscomp-option");t&&!u.hasClass(t,"disabled")&&(u.hasClass(t,"group-title")?this.onGroupTitleClick(t):this.selectOption(t,{event:e}))}},{key:"onGroupTitleClick",value:function(e){if(e&&this.multiple&&!this.disableOptionGroupCheckbox){var t=!u.hasClass(e,"selected");this.toggleGroupTitleCheckbox(e,t),this.toggleGroupOptions(e,t)}}},{key:"onDropboxContainerClick",value:function(e){e.target.closest(".vscomp-dropbox")||this.closeDropbox()}},{key:"onDropboxCloseButtonClick",value:function(){this.closeDropbox()}},{key:"onOptionsMouseOver",value:function(e){var t=e.target.closest(".vscomp-option");t&&this.isOpened()&&(u.hasClass(t,"disabled")||u.hasClass(t,"group-title")?this.removeOptionFocus():this.focusOption(null,t))}},{key:"onOptionsTouchMove",value:function(){this.removeOptionFocus()}},{key:"onSearch",value:function(e){e.stopPropagation(),this.setSearchValue(e.target.value,!0)}},{key:"onSearchClear",value:function(){this.setSearchValue(""),this.focusSearchInput()}},{key:"onToggleAllOptions",value:function(){this.toggleAllOptions()}},{key:"onResize",value:function(){this.setOptionsContainerHeight(!0)}},{key:"addMutationObserver",value:function(){var e=this;if(this.hasDropboxWrapper){var t=this.$ele;this.mutationObserver=new MutationObserver((function(i){i.some((function(i){var o=c(i.removedNodes).some((function(e){if(e===t||e.contains(t))return!0}));return o&&e.destroy(),o}))})),this.mutationObserver.observe(document.querySelector("body"),{childList:!0,subtree:!0})}}},{key:"beforeValueSet",value:function(e){this.toggleAllOptionsClass(!e&&void 0)}},{key:"beforeSelectNewValue",value:function(){var e=this,t=this.getNewOption(),i=t.index;this.newValues.push(t.value),this.setOptionProp(i,"isCurrentNew",!1),this.setOptionProp(i,"isNew",!0),setTimeout((function(){e.setSearchValue(""),e.focusSearchInput()}),0)}},{key:"afterRenderWrapper",value:function(){u.addClass(this.$ele,"vscomp-ele"),this.renderSearch(),this.setEleStyles(),this.setDropboxStyles(),this.setOptionsHeight(),this.setVisibleOptions(),this.setOptionsContainerHeight(),this.addEvents(),this.setEleProps(),this.keepAlwaysOpen||this.showAsPopup||this.initDropboxPopover(),this.initialSelectedValue?this.setValueMethod(this.initialSelectedValue,this.silentInitialValueSet):this.autoSelectFirstOption&&this.visibleOptions.length&&this.setValueMethod(this.visibleOptions[0].value,this.silentInitialValueSet),this.showOptionsOnlyOnSearch&&this.setSearchValue("",!1,!0),this.initialDisabled&&this.disable(),this.autofocus&&this.focus()}},{key:"afterRenderOptions",value:function(){var e=this.getVisibleOptions(),t=!this.options.length&&!this.hasServerSearch,i=!t&&!e.length;(!this.allowNewOption||this.hasServerSearch||this.showOptionsOnlyOnSearch)&&u.toggleClass(this.$allWrappers,"has-no-search-results",i),u.toggleClass(this.$allWrappers,"has-no-options",t),this.setOptionAttr(),this.setOptionsPosition(),this.setOptionsTooltip()}},{key:"afterSetOptionsContainerHeight",value:function(e){e&&this.showAsPopup&&this.setVisibleOptions()}},{key:"afterSetSearchValue",value:function(){this.hasServerSearch?this.serverSearch():this.setVisibleOptionsCount(),this.selectAllOnlyVisible&&this.toggleAllOptionsClass()}},{key:"afterSetVisibleOptionsCount",value:function(){this.scrollToTop(),this.setOptionsHeight(),this.setVisibleOptions(),this.updatePosition()}},{key:"afterValueSet",value:function(){this.scrollToTop(),this.setSearchValue(""),this.renderOptions()}},{key:"afterSetOptions",value:function(e){e&&this.setSelectedProp(),this.setOptionsHeight(),this.setVisibleOptions(),this.showOptionsOnlyOnSearch&&this.setSearchValue("",!1,!0),e||this.reset()}},{key:"setProps",value:function(e){e=this.setDefaultProps(e),this.setPropsFromElementAttr(e);var t=s.convertToBoolean;this.$ele=e.ele,this.dropboxWrapper=e.dropboxWrapper,this.valueKey=e.valueKey,this.labelKey=e.labelKey,this.descriptionKey=e.descriptionKey,this.aliasKey=e.aliasKey,this.optionHeightText=e.optionHeight,this.optionHeight=parseFloat(this.optionHeightText),this.multiple=t(e.multiple),this.hasSearch=t(e.search),this.searchGroup=t(e.searchGroup),this.hideClearButton=t(e.hideClearButton),this.autoSelectFirstOption=t(e.autoSelectFirstOption),this.hasOptionDescription=t(e.hasOptionDescription),this.silentInitialValueSet=t(e.silentInitialValueSet),this.allowNewOption=t(e.allowNewOption),this.markSearchResults=t(e.markSearchResults),this.showSelectedOptionsFirst=t(e.showSelectedOptionsFirst),this.disableSelectAll=t(e.disableSelectAll),this.keepAlwaysOpen=t(e.keepAlwaysOpen),this.showDropboxAsPopup=t(e.showDropboxAsPopup),this.hideValueTooltipOnSelectAll=t(e.hideValueTooltipOnSelectAll),this.showOptionsOnlyOnSearch=t(e.showOptionsOnlyOnSearch),this.selectAllOnlyVisible=t(e.selectAllOnlyVisible),this.alwaysShowSelectedOptionsCount=t(e.alwaysShowSelectedOptionsCount),this.disableAllOptionsSelectedText=t(e.disableAllOptionsSelectedText),this.showValueAsTags=t(e.showValueAsTags),this.disableOptionGroupCheckbox=t(e.disableOptionGroupCheckbox),this.enableSecureText=t(e.enableSecureText),this.setValueAsArray=t(e.setValueAsArray),this.disableValidation=t(e.disableValidation),this.initialDisabled=t(e.disabled),this.required=t(e.required),this.autofocus=t(e.autofocus),this.useGroupValue=t(e.useGroupValue),this.noOptionsText=e.noOptionsText,this.noSearchResultsText=e.noSearchResultsText,this.selectAllText=e.selectAllText,this.searchPlaceholderText=e.searchPlaceholderText,this.optionsSelectedText=e.optionsSelectedText,this.optionSelectedText=e.optionSelectedText,this.allOptionsSelectedText=e.allOptionsSelectedText,this.clearButtonText=e.clearButtonText,this.moreText=e.moreText,this.placeholder=e.placeholder,this.position=e.position,this.textDirection=e.textDirection,this.dropboxWidth=e.dropboxWidth,this.tooltipFontSize=e.tooltipFontSize,this.tooltipAlignment=e.tooltipAlignment,this.tooltipMaxWidth=e.tooltipMaxWidth,this.noOfDisplayValues=parseInt(e.noOfDisplayValues),this.zIndex=parseInt(e.zIndex),this.maxValues=parseInt(e.maxValues),this.name=this.secureText(e.name),this.additionalClasses=e.additionalClasses,this.popupDropboxBreakpoint=e.popupDropboxBreakpoint,this.popupPosition=e.popupPosition,this.onServerSearch=e.onServerSearch,this.labelRenderer=e.labelRenderer,this.initialSelectedValue=0===e.selectedValue?"0":e.selectedValue,this.emptyValue=e.emptyValue,this.ariaLabelledby=e.ariaLabelledby,this.maxWidth=e.maxWidth,this.selectedValues=[],this.selectedOptions=[],this.newValues=[],this.events={},this.tooltipEnterDelay=200,this.searchValue="",this.searchValueOriginal="",this.isAllSelected=!1,(void 0===e.search&&this.multiple||this.allowNewOption||this.showOptionsOnlyOnSearch)&&(this.hasSearch=!0),this.hasServerSearch="function"==typeof this.onServerSearch,(this.maxValues||this.hasServerSearch||this.showOptionsOnlyOnSearch)&&(this.disableSelectAll=!0,this.disableOptionGroupCheckbox=!0),this.keepAlwaysOpen&&(this.dropboxWrapper="self"),this.showAsPopup=this.showDropboxAsPopup&&!this.keepAlwaysOpen&&window.innerWidth<=parseFloat(this.popupDropboxBreakpoint),this.hasSearchContainer=this.hasSearch||this.multiple&&!this.disableSelectAll,this.optionsCount=this.getOptionsCount(e.optionsCount),this.halfOptionsCount=Math.ceil(this.optionsCount/2),this.optionsHeight=this.getOptionsHeight(),this.uniqueId=this.getUniqueId()}},{key:"setDefaultProps",value:function(e){var t={dropboxWrapper:"self",valueKey:"value",labelKey:"label",descriptionKey:"description",aliasKey:"alias",optionsCount:5,noOfDisplayValues:50,optionHeight:"40px",noOptionsText:"No options found",noSearchResultsText:"No results found",selectAllText:"Select All",searchPlaceholderText:"Search...",clearButtonText:"Clear",moreText:"more...",optionsSelectedText:"options selected",optionSelectedText:"option selected",allOptionsSelectedText:"All",placeholder:"Select",position:"bottom left",zIndex:e.keepAlwaysOpen?1:2,tooltipFontSize:"14px",tooltipAlignment:"center",tooltipMaxWidth:"300px",name:"",additionalClasses:"",maxValues:0,showDropboxAsPopup:!0,popupDropboxBreakpoint:"576px",popupPosition:"center",hideValueTooltipOnSelectAll:!0,emptyValue:""};return e.hasOptionDescription&&(t.optionsCount=4,t.optionHeight="50px"),Object.assign(t,e)}},{key:"setPropsFromElementAttr",value:function(e){var t=e.ele;for(var i in S){var o=t.getAttribute(i);-1===b.indexOf(i)||""!==o&&"true"!==o||(o=!0),o&&(e[S[i]]=o)}}},{key:"setEleProps",value:function(){var t=this.$ele;t.virtualSelect=this,t.value=this.multiple?[]:"",t.name=this.name,t.disabled=!1,t.required=this.required,t.autofocus=this.autofocus,t.multiple=this.multiple,t.form=t.closest("form"),t.reset=e.reset,t.setValue=e.setValueMethod,t.setOptions=e.setOptionsMethod,t.setDisabledOptions=e.setDisabledOptionsMethod,t.toggleSelectAll=e.toggleSelectAll,t.isAllSelected=e.isAllSelected,t.addOption=e.addOptionMethod,t.getNewValue=e.getNewValueMethod,t.getDisplayValue=e.getDisplayValueMethod,t.getSelectedOptions=e.getSelectedOptionsMethod,t.open=e.openMethod,t.close=e.closeMethod,t.focus=e.focusMethod,t.enable=e.enableMethod,t.disable=e.disableMethod,t.destroy=e.destroyMethod,t.validate=e.validateMethod,t.toggleRequired=e.toggleRequiredMethod,this.hasDropboxWrapper&&(this.$dropboxWrapper.virtualSelect=this)}},{key:"setValueMethod",value:function(e,t){var i={},o={},s=[],n=this.multiple;if(e){if(Array.isArray(e)||(e=[e]),n){var r=this.maxValues;r&&e.length>r&&e.splice(r)}else e.length>1&&(e=[e[0]]);e=e.map((function(e){return e||0==e?e.toString():""})),this.useGroupValue&&(e=this.setGroupOptionsValue(e)),e.forEach((function(e,t){i[e]=!0,o[e]=t})),this.allowNewOption&&e&&this.setNewOptionsFromValue(e)}this.options.forEach((function(e){!0!==i[e.value]||e.isDisabled||e.isGroupTitle?e.isSelected=!1:(e.isSelected=!0,s.push(e.value))})),n?(this.hasOptionGroup&&this.setGroupsSelectedProp(),s.sort((function(e,t){return o[e]-o[t]}))):s=s[0],this.beforeValueSet(),this.setValue(s,{disableEvent:t}),this.afterValueSet()}},{key:"setGroupOptionsValue",value:function(e){var t=[],i={},o={};return e.forEach((function(e){o[e]=!0})),this.options.forEach((function(e){var s=e.value,n=!0===o[s];e.isGroupTitle?n&&(i[e.index]=!0):(n||i[e.groupIndex])&&t.push(s)})),t}},{key:"setGroupsSelectedProp",value:function(){var e=this.isAllGroupOptionsSelected.bind(this);this.options.forEach((function(t){t.isGroupTitle&&(t.isSelected=e(t.index))}))}},{key:"setOptionsMethod",value:function(e,t){this.setOptions(e),this.afterSetOptions(t)}},{key:"setDisabledOptionsMethod",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.setDisabledOptions(e,!0),t||(this.setValueMethod(null),this.toggleAllOptionsClass()),this.setVisibleOptions()}},{key:"setDisabledOptions",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=[];if(e)if(!0===e)t&&this.options.forEach((function(e){return e.isDisabled=!0,i.push(e.value),e}));else{i=e.map((function(e){return e.toString()}));var o={};i.forEach((function(e){o[e]=!0})),t&&this.options.forEach((function(e){return e.isDisabled=!0===o[e.value],e}))}else t&&this.options.forEach((function(e){return e.isDisabled=!1,e}));this.disabledOptions=i}},{key:"setOptions",value:function(e){e||(e=[]);var t=[],i=this.disabledOptions.length,o=this.valueKey,n=this.labelKey,r=this.descriptionKey,a=this.aliasKey,l=this.hasOptionDescription,p=s.getString,u=this.secureText.bind(this),h=s.convertToBoolean,c=this.getAlias.bind(this),d=0,v=!1,f={};this.disabledOptions.forEach((function(e){f[e]=!0})),e.forEach((function e(s){var y=u(p(s[o])),b=s.options,g=!!b,m={index:d,value:y,label:u(p(s[n])),alias:c(s[a]),isVisible:h(s.isVisible,!0),isNew:s.isNew||!1,isGroupTitle:g};if(i&&(m.isDisabled=!0===f[y]),s.isGroupOption&&(m.isGroupOption=!0,m.groupIndex=s.groupIndex),l&&(m.description=u(p(s[r]))),s.customData&&(m.customData=s.customData),t.push(m),d++,g){var O=m.index;v=!0,b.forEach((function(t){t.isGroupOption=!0,t.groupIndex=O,e(t)}))}}));var y=t.length,b=this.$ele;b.options=t,b.length=y,this.options=t,this.visibleOptionsCount=y,this.lastOptionIndex=y-1,this.newValues=[],this.hasOptionGroup=v,this.setSortedOptions()}},{key:"setServerOptions",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.setOptionsMethod(t,!0);var i=this.selectedOptions,o=this.options,s=!1;if(i.length){var n={};s=!0,o.forEach((function(e){n[e.value]=!0})),i.forEach((function(e){!1===n[e.value]&&(e.isVisible=!1,o.push(e))})),this.setOptionsMethod(o,!0)}if(this.allowNewOption&&this.searchValue){var r=o.some((function(t){return t.label.toLowerCase()===e.searchValue}));r||(s=!0,this.setNewOption())}s?(this.setVisibleOptionsCount(),this.multiple&&this.toggleAllOptionsClass(),this.setValueText()):this.updatePosition(),u.removeClass(this.$allWrappers,"server-searching")}},{key:"setSelectedOptions",value:function(){this.selectedOptions=this.options.filter((function(e){return e.isSelected}))}},{key:"setSortedOptions",value:function(){var e=c(this.options);this.showSelectedOptionsFirst&&this.selectedValues.length&&(e=this.hasOptionGroup?this.sortOptionsGroup(e):this.sortOptions(e)),this.sortedOptions=e}},{key:"setVisibleOptions",value:function(){var e=c(this.sortedOptions),t=2*this.optionsCount,i=this.getVisibleStartIndex(),o=this.getNewOption(),s=i+t-1,n=0;o&&(o.visibleIndex=n,n++),e=e.filter((function(e){var t=!1;return e.isVisible&&!e.isCurrentNew&&(t=n>=i&&n<=s,e.visibleIndex=n,n++),t})),o&&(e=[o].concat(c(e))),this.visibleOptions=e,this.renderOptions()}},{key:"setOptionsPosition",value:function(e){void 0===e&&(e=this.getVisibleStartIndex());var t=e*this.optionHeight;this.$options.style.transform="translate3d(0, ".concat(t,"px, 0)"),u.setData(this.$options,"top",t)}},{key:"setOptionsTooltip",value:function(){var e=this,t=this.getVisibleOptions(),i=this.hasOptionDescription;t.forEach((function(t){var o=e.$dropboxContainer.querySelector('.vscomp-option[data-index="'.concat(t.index,'"]'));u.setData(o.querySelector(".vscomp-option-text"),"tooltip",t.label),i&&u.setData(o.querySelector(".vscomp-option-description"),"tooltip",t.description)}))}},{key:"setValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.disableEvent,o=void 0!==i&&i,n=t.disableValidation,r=void 0!==n&&n;e?Array.isArray(e)?this.selectedValues=c(e):this.selectedValues=[e]:this.selectedValues=[];var a=this.getValue();this.$ele.value=a,this.$hiddenInput.value=this.getInputValue(a),this.isMaxValuesSelected=!!(this.maxValues&&this.maxValues<=this.selectedValues.length),this.toggleAllOptionsClass(),this.setValueText(),u.toggleClass(this.$allWrappers,"has-value",s.isNotEmpty(this.selectedValues)),u.toggleClass(this.$allWrappers,"max-value-selected",this.isMaxValuesSelected),r||this.validate(),o||u.dispatchEvent(this.$ele,"change",!0)}},{key:"setValueText",value:function(){var e=this.multiple,t=[],i=[],o=this.selectedValues.length,s=this.noOfDisplayValues,n=this.showValueAsTags,r=this.$valueText,a=0,l=this.isAllSelected&&!this.hasServerSearch&&!this.disableAllOptionsSelectedText&&!n;if(l&&this.hideValueTooltipOnSelectAll)r.innerHTML="".concat(this.allOptionsSelectedText," (").concat(o,")");else{var p,h=function(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=d(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var o=0,s=function(){};return{s:s,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,r=!0,a=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return r=e.done,e},e:function(e){a=!0,n=e},f:function(){try{r||null==i.return||i.return()}finally{if(a)throw n}}}}(this.getSelectedOptions({fullDetails:!0,keepSelectionOrder:!0}));try{for(h.s();!(p=h.n()).done;){var c=p.value;if(!c.isCurrentNew){if(a>=s)break;var v=c.label;if(t.push(v),a++,n){var f='\n ').concat(v,'\n \n \n \n ');i.push(f)}else i.push(v)}}}catch(e){h.e(e)}finally{h.f()}var y=o-s;y>0&&i.push('+ '.concat(y," ").concat(this.moreText,""));var b=t.join(", ");if(""===b)r.innerHTML=this.placeholder;else if(r.innerHTML=b,e){var g=this.maxValues;if(u.hasEllipsis(r)||g||this.alwaysShowSelectedOptionsCount||n){var m=''.concat(o,"");if(g&&(m+=' / '.concat(g,"")),l)r.innerHTML="".concat(this.allOptionsSelectedText," (").concat(o,")");else if(n)r.innerHTML=i.join(""),this.$valueTags=r.querySelectorAll(".vscomp-value-tag"),this.setValueTagAttr();else{var O=1===o?this.optionSelectedText:this.optionsSelectedText;r.innerHTML="".concat(m," ").concat(O)}}else i=[]}}var S="";0===o?S=this.placeholder:n||(S=i.join(", ")),u.setData(r,"tooltip",S),e&&(u.setData(r,"tooltipEllipsisOnly",0===o),n&&this.updatePosition())}},{key:"setSearchValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(e!==this.searchValueOriginal||i){t||(this.$searchInput.value=e);var o=e.replace(/\\/g,"").toLowerCase().trim();this.searchValue=o,this.searchValueOriginal=e,u.toggleClass(this.$allWrappers,"has-search-value",e),this.afterSetSearchValue()}}},{key:"setVisibleOptionsCount",value:function(){var e,t=0,i=!1,o=this.searchValue,s=this.searchGroup,n=this.showOptionsOnlyOnSearch,r=this.isOptionVisible.bind(this);this.hasOptionGroup&&(e=this.getVisibleOptionGroupsMapping(o)),this.options.forEach((function(a){var l;a.isCurrentNew||(n&&!o?(a.isVisible=!1,l={isVisible:!1,hasExactOption:!1}):l=r({data:a,searchValue:o,hasExactOption:i,visibleOptionGroupsMapping:e,searchGroup:s}),l.isVisible&&t++,i||(i=l.hasExactOption))})),this.allowNewOption&&(o&&!i?(this.setNewOption(),t++):this.removeNewOption()),this.visibleOptionsCount=t,this.afterSetVisibleOptionsCount()}},{key:"setOptionProp",value:function(e,t,i){this.options[e]&&(this.options[e][t]=i)}},{key:"setOptionsHeight",value:function(){this.$optionsList.style.height=this.optionHeight*this.visibleOptionsCount+"px"}},{key:"setOptionsContainerHeight",value:function(e){var t;e?this.showAsPopup&&(this.optionsCount=this.getOptionsCount(),this.halfOptionsCount=Math.ceil(this.optionsCount/2),t=this.getOptionsHeight(),this.optionsHeight=t):(t=this.optionsHeight,this.keepAlwaysOpen&&(u.setStyle(this.$noOptions,"height",t),u.setStyle(this.$noSearchResults,"height",t))),u.setStyle(this.$optionsContainer,"max-height",t),this.afterSetOptionsContainerHeight(e)}},{key:"setNewOption",value:function(e){var t=e||this.searchValueOriginal.trim();if(t){var i=this.getNewOption();if(i){var o=i.index;this.setOptionProp(o,"value",this.secureText(t)),this.setOptionProp(o,"label",this.secureText(t))}else{var s={value:t,label:t};e?(s.isNew=!0,this.newValues.push(t)):s.isCurrentNew=!0,this.addOption(s)}}}},{key:"setSelectedProp",value:function(){var e={};this.selectedValues.forEach((function(t){e[t]=!0})),this.options.forEach((function(t){!0===e[t.value]&&(t.isSelected=!0)}))}},{key:"setNewOptionsFromValue",value:function(e){if(e){var t=this.setNewOption.bind(this),i={};this.options.forEach((function(e){i[e.value]=!0})),e.forEach((function(e){e&&!0!==i[e]&&t(e)}))}}},{key:"setDropboxWrapperWidth",value:function(){if(!this.showAsPopup){var e=this.dropboxWidth||"".concat(this.$wrapper.offsetWidth,"px");u.setStyle(this.$dropboxContainer,"max-width",e)}}},{key:"setEleStyles",value:function(){var e=this.maxWidth,t={};e&&(t["max-width"]=e),u.setStyles(this.$ele,t)}},{key:"setDropboxStyles",value:function(){var e=this.dropboxWidth,t={},i={"z-index":this.zIndex};e&&(this.showAsPopup?t["max-width"]=e:i.width=e),u.setStyles(this.$dropboxContainer,i),u.setStyles(this.$dropbox,t)}},{key:"setOptionAttr",value:function(){var e=this.$visibleOptions,t=this.options,i=this.optionHeight+"px",o=u.setStyle,s=u.getData,n=u.setData;e&&e.length&&e.forEach((function(e){var r=t[s(e,"index")];o(e,"height",i),n(e,"value",r.value)}))}},{key:"setValueTagAttr",value:function(){var e=this.$valueTags;if(e&&e.length){var t=u.getData,i=u.setData,o=this.options;e.forEach((function(e){var s=t(e,"index");if(void 0!==s){var n=o[s];i(e,"value",n.value)}}))}}},{key:"getVisibleOptions",value:function(){return this.visibleOptions||[]}},{key:"getValue",value:function(){return this.multiple?this.useGroupValue?this.getGroupValue():this.selectedValues:this.selectedValues[0]||""}},{key:"getGroupValue",value:function(){var e=[],t={};return this.options.forEach((function(i){if(i.isSelected){var o=i.value;i.isGroupTitle?o&&(t[i.index]=!0,e.push(o)):!0!==t[i.groupIndex]&&e.push(o)}})),e}},{key:"getInputValue",value:function(e){var t=e;return t&&t.length?this.setValueAsArray&&this.multiple&&(t=JSON.stringify(t)):t=this.emptyValue,t}},{key:"getFirstVisibleOptionIndex",value:function(){return Math.ceil(this.$optionsContainer.scrollTop/this.optionHeight)}},{key:"getVisibleStartIndex",value:function(){var e=this.getFirstVisibleOptionIndex()-this.halfOptionsCount;return e<0&&(e=0),e}},{key:"getTooltipAttrText",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o={"data-tooltip":e||"","data-tooltip-enter-delay":this.tooltipEnterDelay,"data-tooltip-z-index":this.zIndex,"data-tooltip-font-size":this.tooltipFontSize,"data-tooltip-alignment":this.tooltipAlignment,"data-tooltip-max-width":this.tooltipMaxWidth,"data-tooltip-ellipsis-only":t,"data-tooltip-allow-html":i};return u.getAttributesText(o)}},{key:"getOptionObj",value:function(e){if(e){var t=s.getString,i=this.secureText.bind(this);return{index:e.index,value:i(t(e.value)),label:i(t(e.label)),description:i(t(e.description)),alias:this.getAlias(e.alias),isCurrentNew:e.isCurrentNew||!1,isNew:e.isNew||!1,isVisible:!0}}}},{key:"getNewOption",value:function(){var e=this.options[this.lastOptionIndex];if(e&&e.isCurrentNew)return e}},{key:"getOptionIndex",value:function(e){var t;return this.options.some((function(i){if(i.value==e)return t=i.index,!0})),t}},{key:"getNewValue",value:function(){var e={};this.newValues.forEach((function(t){e[t]=!0}));var t=this.selectedValues.filter((function(t){return!0===e[t]}));return this.multiple?t:t[0]}},{key:"getAlias",value:function(e){return e=e?(e=Array.isArray(e)?e.join(","):e.toString().trim()).toLowerCase():""}},{key:"getDisplayValue",value:function(){var e=[];return this.options.forEach((function(t){t.isSelected&&e.push(t.label)})),this.multiple?e:e[0]||""}},{key:"getSelectedOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.fullDetails,i=void 0!==t&&t,o=e.keepSelectionOrder,s=void 0!==o&&o,n=this.valueKey,r=this.labelKey,a=this.selectedValues,l=[];if(this.options.forEach((function(e){if(e.isSelected)if(i)l.push(e);else{var t,o=(h(t={},n,e.value),h(t,r,e.label),t);e.isNew&&(o.isNew=!0),e.customData&&(o.customData=e.customData),l.push(o)}})),s){var p={};a.forEach((function(e,t){p[e]=t})),l.sort((function(e,t){return p[e.value]-p[t.value]}))}return this.multiple||i?l:l[0]}},{key:"getVisibleOptionGroupsMapping",value:function(e){var t=this.options,i={},o=this.isOptionVisible.bind(this);return(t=this.structureOptionGroup(t)).forEach((function(t){i[t.index]=t.options.some((function(t){return o({data:t,searchValue:e}).isVisible}))})),i}},{key:"getOptionsCount",value:function(e){if(this.showAsPopup){var t=80*window.innerHeight/100-48;this.hasSearchContainer&&(t-=40),e=Math.floor(t/this.optionHeight)}else e=parseInt(e);return e}},{key:"getOptionsHeight",value:function(){return this.optionsCount*this.optionHeight+"px"}},{key:"getSibling",value:function(e,t){var i="next"===t?"nextElementSibling":"previousElementSibling";do{e&&(e=e[i])}while(u.hasClass(e,"disabled")||u.hasClass(e,"group-title"));return e}},{key:"getUniqueId",value:function(){var e=s.getRandomInt(1e4);return document.querySelector("#vscomp-ele-wrapper-".concat(e))?this.getUniqueId():e}},{key:"initDropboxPopover",value:function(){var e={ele:this.$ele,target:this.$dropboxContainer,position:this.position,zIndex:this.zIndex,margin:4,transitionDistance:30,hideArrowIcon:!0,disableManualAction:!0,disableUpdatePosition:!this.hasDropboxWrapper,afterShow:this.afterShowPopper.bind(this),afterHide:this.afterHidePopper.bind(this)};this.dropboxPopover=new PopoverComponent(e)}},{key:"openDropbox",value:function(e){this.isSilentOpen=e,e?u.setStyle(this.$dropboxContainer,"display","inline-flex"):(u.dispatchEvent(this.$ele,"beforeOpen"),u.setAria(this.$wrapper,"expanded",!0)),this.setDropboxWrapperWidth(),u.removeClass(this.$allWrappers,"closed"),this.dropboxPopover&&!e?this.dropboxPopover.show():this.afterShowPopper()}},{key:"afterShowPopper",value:function(){var e=this.isSilentOpen;this.isSilentOpen=!1,e||(this.moveSelectedOptionsFirst(),u.addClass(this.$allWrappers,"focused"),this.showAsPopup?(u.addClass(this.$body,"vscomp-popup-active"),this.isPopupActive=!0):this.focusSearchInput(),u.dispatchEvent(this.$ele,"afterOpen"))}},{key:"closeDropbox",value:function(e){this.isSilentClose=e,this.keepAlwaysOpen?this.removeOptionFocus():(e?u.setStyle(this.$dropboxContainer,"display",""):(u.dispatchEvent(this.$ele,"beforeClose"),u.setAria(this.$wrapper,"expanded",!1),u.setAria(this.$wrapper,"activedescendant","")),this.dropboxPopover&&!e?this.dropboxPopover.hide():this.afterHidePopper())}},{key:"afterHidePopper",value:function(){var e=this.isSilentClose;this.isSilentClose=!1,u.removeClass(this.$allWrappers,"focused"),this.removeOptionFocus(),e||this.isPopupActive&&(u.removeClass(this.$body,"vscomp-popup-active"),this.isPopupActive=!1),u.addClass(this.$allWrappers,"closed"),e||u.dispatchEvent(this.$ele,"afterClose")}},{key:"moveSelectedOptionsFirst",value:function(){this.showSelectedOptionsFirst&&(this.setSortedOptions(),this.$optionsContainer.scrollTop&&this.selectedValues.length?this.scrollToTop():this.setVisibleOptions())}},{key:"toggleDropbox",value:function(){this.isOpened()?this.closeDropbox():this.openDropbox()}},{key:"updatePosition",value:function(){this.$ele.updatePosition()}},{key:"isOpened",value:function(){return!u.hasClass(this.$wrapper,"closed")}},{key:"focusSearchInput",value:function(){var e=this.$searchInput;e&&e.focus()}},{key:"focusOption",value:function(e,t){var i,o=this.$dropboxContainer.querySelector(".vscomp-option.focused");if(t)i=t;else if(o)i=this.getSibling(o,e);else{var s=this.getFirstVisibleOptionIndex();i=this.$dropboxContainer.querySelector('.vscomp-option[data-visible-index="'.concat(s,'"]')),(u.hasClass(i,"disabled")||u.hasClass(i,"group-title"))&&(i=this.getSibling(i,"next"))}i&&i!==o&&(o&&this.toggleOptionFocusedState(o,!1),this.toggleOptionFocusedState(i,!0),this.toggleFocusedProp(u.getData(i,"index"),!0),this.moveFocusedOptionToView(i))}},{key:"moveFocusedOptionToView",value:function(e){if(e||(e=this.$dropboxContainer.querySelector(".vscomp-option.focused")),e){var t,i=this.$optionsContainer.getBoundingClientRect(),o=e.getBoundingClientRect(),s=i.top,n=i.bottom,r=i.height,a=o.top,l=o.bottom,p=o.height,h=e.offsetTop,c=u.getData(this.$options,"top","number");s>a?t=h+c:n1&&void 0!==arguments[1]?arguments[1]:{},i=t.event;if(e){var o=!u.hasClass(e,"selected");if(o){if(this.multiple&&this.isMaxValuesSelected)return}else if(!this.multiple)return void this.closeDropbox();var n=this.selectedValues,r=u.getData(e,"value"),a=u.getData(e,"index","number"),l=!1,p=this.lastSelectedOptionIndex;if(this.lastSelectedOptionIndex=null,this.toggleSelectedProp(a,o),o){if(this.multiple)n.push(r),this.toggleAllOptionsClass(),this.toggleGroupOptionsParent(e),i&&i.shiftKey&&(l=!0);else{n.length&&this.toggleSelectedProp(this.getOptionIndex(n[0]),!1),n=[r];var h=this.$dropboxContainer.querySelector(".vscomp-option.selected");h&&this.toggleOptionSelectedState(h,!1),this.closeDropbox()}this.lastSelectedOptionIndex=a,this.toggleOptionSelectedState(e)}else this.multiple&&(this.toggleOptionSelectedState(e),s.removeItemFromArray(n,r),this.toggleAllOptionsClass(!1),this.toggleGroupOptionsParent(e,!1));u.hasClass(e,"current-new")&&this.beforeSelectNewValue(),this.setValue(n),l&&this.selectRangeOptions(p,a)}}},{key:"selectFocusedOption",value:function(){this.selectOption(this.$dropboxContainer.querySelector(".vscomp-option.focused"))}},{key:"selectRangeOptions",value:function(e,t){var i=this;if("number"==typeof e&&!this.maxValues){var o,s,n=this.selectedValues,r=this.hasOptionGroup,a={};if(eo&&t1&&void 0!==arguments[1]&&arguments[1];this.focusedOptionIndex&&this.setOptionProp(this.focusedOptionIndex,"isFocused",!1),this.setOptionProp(e,"isFocused",t),this.focusedOptionIndex=e}},{key:"toggleSelectedProp",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.setOptionProp(e,"isSelected",t)}},{key:"scrollToTop",value:function(){var e=!this.isOpened();e&&this.openDropbox(!0),this.$optionsContainer.scrollTop>0&&(this.$optionsContainer.scrollTop=0),e&&this.closeDropbox(!0)}},{key:"reset",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.options.forEach((function(e){e.isSelected=!1})),this.beforeValueSet(!0),this.setValue(null,{disableValidation:e}),this.afterValueSet(),e&&u.removeClass(this.$allWrappers,"has-error"),u.dispatchEvent(this.$ele,"reset")}},{key:"addOption",value:function(e,t){if(e){this.lastOptionIndex++,e.index=this.lastOptionIndex;var i=this.getOptionObj(e);this.options.push(i),this.sortedOptions.push(i),t&&(this.visibleOptionsCount++,this.afterSetOptions())}}},{key:"removeOption",value:function(e){(e||0==e)&&(this.options.splice(e,1),this.lastOptionIndex--)}},{key:"removeNewOption",value:function(){var e=this.getNewOption();e&&this.removeOption(e.index)}},{key:"sortOptions",value:function(e){return e.sort((function(e,t){var i=e.isSelected||e.isAnySelected,o=t.isSelected||t.isAnySelected;return i||o?i&&(!o||e.indexe.length)&&(t=e.length);for(var i=0,o=new Array(t);ii-s-t.width?"left":"right",vertical:n>o-n-t.height?"top":"bottom"}}},{key:"getAbsoluteCoords",value:function(e){if(e){var t=e.getBoundingClientRect(),i=window.pageXOffset,o=window.pageYOffset;return{width:t.width,height:t.height,top:t.top+o,right:t.right+i,bottom:t.bottom+o,left:t.left+i}}}},{key:"getCoords",value:function(e){return e?e.getBoundingClientRect():{}}},{key:"getData",value:function(e,t,i){if(e){var o=e?e.dataset[t]:"";return"number"===i?o=parseFloat(o)||0:"true"===o?o=!0:"false"===o&&(o=!1),o}}},{key:"setData",value:function(e,t,i){e&&(e.dataset[t]=i)}},{key:"setStyle",value:function(e,t,i){e&&(e.style[t]=i)}},{key:"show",value:function(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"block";t.setStyle(e,"display",i)}},{key:"hide",value:function(e){t.setStyle(e,"display","none")}},{key:"getHideableParent",value:function(e){for(var t,i=e.parentElement;i;){var o=getComputedStyle(i).overflow;if(-1!==o.indexOf("scroll")||-1!==o.indexOf("auto")){t=i;break}i=i.parentElement}return t}}])&&function(e,t){for(var i=0;im?m-f:M:w+u>F&&("right"===E?n="left":w=F+fO?O-c:P:C+h>I&&("bottom"===E?n="top":C=I+cu-z&&(L=u-z):"left"!==E&&"right"!==E||((R=b/2+g-B)h-z&&(R=h-z)),i.setStyle(this.$arrowEle,"transform","translate3d(".concat(L,"px, ").concat(R,"px, 0) ").concat(K))}i.hide(this.$popperEle)}},{key:"resetPosition",value:function(){i.setStyle(this.$popperEle,"transform","none"),this.setPosition()}},{key:"show",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=t.resetPosition,s=t.data;clearTimeout(this.exitDelayTimeout),clearTimeout(this.hideDurationTimeout),o&&this.resetPosition(),this.enterDelayTimeout=setTimeout((function(){var t=i.getData(e.$popperEle,"left"),o=i.getData(e.$popperEle,"top"),n="translate3d(".concat(t,"px, ").concat(o,"px, 0)"),r=e.showDuration;i.show(e.$popperEle,"inline-flex"),i.getCoords(e.$popperEle),i.setStyle(e.$popperEle,"transitionDuration",r+"ms"),i.setStyle(e.$popperEle,"transform",n),i.setStyle(e.$popperEle,"opacity",1),e.showDurationTimeout=setTimeout((function(){"function"==typeof e.afterShowCallback&&e.afterShowCallback(s)}),r)}),this.enterDelay)}},{key:"hide",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=t.data;clearTimeout(this.enterDelayTimeout),clearTimeout(this.showDurationTimeout),this.exitDelayTimeout=setTimeout((function(){if(e.$popperEle){var t=i.getData(e.$popperEle,"fromLeft"),s=i.getData(e.$popperEle,"fromTop"),n="translate3d(".concat(t,"px, ").concat(s,"px, 0)"),r=e.hideDuration;i.setStyle(e.$popperEle,"transitionDuration",r+"ms"),i.setStyle(e.$popperEle,"transform",n),i.setStyle(e.$popperEle,"opacity",0),e.hideDurationTimeout=setTimeout((function(){i.hide(e.$popperEle),"function"==typeof e.afterHideCallback&&e.afterHideCallback(o)}),r)}}),this.exitDelay)}},{key:"updatePosition",value:function(){i.setStyle(this.$popperEle,"transitionDuration","0ms"),this.resetPosition();var e=i.getData(this.$popperEle,"left"),t=i.getData(this.$popperEle,"top");i.show(this.$popperEle,"inline-flex"),i.setStyle(this.$popperEle,"transform","translate3d(".concat(e,"px, ").concat(t,"px, 0)"))}}])&&function(e,t){for(var i=0;i1&&void 0!==arguments[1]&&arguments[1];return!0===e||"true"===e||!1!==e&&"false"!==e&&t}},{key:"removeArrayEmpty",value:function(e){return Array.isArray(e)&&e.length?e.filter((function(e){return!!e})):[]}},{key:"throttle",value:function(e,t){var i,o=0;return function(){for(var s=arguments.length,n=new Array(s),r=0;re.length)&&(t=e.length);for(var i=0,o=new Array(t);i'),e=this.$popover.querySelector(".pop-comp-arrow")),this.$arrowEle=e}}},{key:"destory",value:function(){this.removeEvents()}}])&&r(i.prototype,o),s&&r(i,s),e}();window.PopoverComponent=l}(); \ No newline at end of file + */!function(){"use strict";function e(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,i){if(e){if("string"==typeof e)return t(e,i);var o=Object.prototype.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?t(e,i):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,o=new Array(t);i1&&void 0!==arguments[1]&&arguments[1];return!0===e||"true"===e||!1!==e&&"false"!==e&&t}},{key:"isEmpty",value:function(e){var t=!1;return e?Array.isArray(e)?0===e.length&&(t=!0):"object"===i(e)&&0===Object.keys(e).length&&(t=!0):t=!0,t}},{key:"isNotEmpty",value:function(e){return!this.isEmpty(e)}},{key:"removeItemFromArray",value:function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!Array.isArray(t)||!t.length)return t;var s=o?e(t):t,n=s.indexOf(i);return-1!==n&&s.splice(n,1),s}},{key:"removeArrayEmpty",value:function(e){return Array.isArray(e)&&e.length?e.filter((function(e){return!!e})):[]}},{key:"getRandomInt",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=Math.ceil(t),o=Math.floor(e);return Math.floor(Math.random()*(o-i-1))+i}}],(n=null)&&o(s.prototype,n),r&&o(s,r),Object.defineProperty(s,"prototype",{writable:!1}),t}();function n(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var o,s,n=[],r=!0,a=!1;try{for(i=i.call(e);!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,s=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw s}}return n}}(e,t)||a(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){if(e){if("string"==typeof e)return l(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,o=new Array(t);ie.offsetWidth}},{key:"getData",value:function(e,t,i){if(e){var o=e?e.dataset[t]:"";return"number"===i?o=parseFloat(o)||0:"true"===o?o=!0:"false"===o&&(o=!1),o}}},{key:"setData",value:function(e,t,i){e&&(e.dataset[t]=i)}},{key:"setAttr",value:function(e,t,i){e&&e.setAttribute(t,i)}},{key:"setAttrFromEle",value:function(e,t,i,o){var s={};i.forEach((function(t){s[t]=e.getAttribute(t)})),i.forEach((function(e){var i=s[e];(i||-1!==o.indexOf(e)&&""===i)&&t.setAttribute(e,i)}))}},{key:"setStyle",value:function(e,t,i){e&&(e.style[t]=i)}},{key:"setStyles",value:function(e,t){e&&t&&Object.keys(t).forEach((function(i){e.style[i]=t[i]}))}},{key:"setAria",value:function(e,t,i){var o=t;"role"!==o&&(o="aria-".concat(o)),e.setAttribute(o,i)}},{key:"getElements",value:function(e){return e?void 0===e.forEach?[e]:e:[]}},{key:"addEvent",value:function(t,i,o){t&&s.removeArrayEmpty(i.split(" ")).forEach((function(i){e.getElements(t).forEach((function(e){e.addEventListener(i,o)}))}))}},{key:"dispatchEvent",value:function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(t){var s=e.getElements(t);setTimeout((function(){s.forEach((function(e){e.dispatchEvent(new CustomEvent(i,{bubbles:o}))}))}),0)}}},{key:"getAttributesText",value:function(e){var t="";return e?(Object.entries(e).forEach((function(e){var i=n(e,2),o=i[0],s=i[1];void 0!==s&&(t+=" ".concat(o,'="').concat(s,'" '))})),t):t}},{key:"convertPropToDataAttr",value:function(e){return e?"data-".concat(e).replace(/([A-Z])/g,"-$1").toLowerCase():""}}],(i=null)&&p(t.prototype,i),o&&p(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function h(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var o,s,n=[],r=!0,a=!1;try{for(i=i.call(e);!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,s=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw s}}return n}}(e,t)||v(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||v(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){if(e){if("string"==typeof e)return f(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,o=new Array(t);i\n \n\n
\n
\n ").concat(this.placeholder,'\n
\n\n
\n\n
\n \n
\n
\n\n ').concat(this.renderDropbox({wrapperClasses:t}),"\n ");this.$ele.innerHTML=r,this.$body=document.querySelector("body"),this.$wrapper=this.$ele.querySelector(".vscomp-wrapper"),this.hasDropboxWrapper?(this.$allWrappers=[this.$wrapper,this.$dropboxWrapper],this.$dropboxContainer=this.$dropboxWrapper.querySelector(".vscomp-dropbox-container"),u.addClass(this.$dropboxContainer,"pop-comp-wrapper")):(this.$allWrappers=[this.$wrapper],this.$dropboxContainer=this.$wrapper.querySelector(".vscomp-dropbox-container")),this.$toggleButton=this.$ele.querySelector(".vscomp-toggle-button"),this.$clearButton=this.$ele.querySelector(".vscomp-clear-button"),this.$valueText=this.$ele.querySelector(".vscomp-value"),this.$hiddenInput=this.$ele.querySelector(".vscomp-hidden-input"),this.$dropbox=this.$dropboxContainer.querySelector(".vscomp-dropbox"),this.$dropboxCloseButton=this.$dropboxContainer.querySelector(".vscomp-dropbox-close-button"),this.$search=this.$dropboxContainer.querySelector(".vscomp-search-wrapper"),this.$optionsContainer=this.$dropboxContainer.querySelector(".vscomp-options-container"),this.$optionsList=this.$dropboxContainer.querySelector(".vscomp-options-list"),this.$options=this.$dropboxContainer.querySelector(".vscomp-options"),this.$noOptions=this.$dropboxContainer.querySelector(".vscomp-no-options"),this.$noSearchResults=this.$dropboxContainer.querySelector(".vscomp-no-search-results"),this.afterRenderWrapper()}}},{key:"renderDropbox",value:function(e){var t=e.wrapperClasses,i="self"!==this.dropboxWrapper?document.querySelector(this.dropboxWrapper):null,o='
\n
\n
\n\n
\n
\n\n
\n
\n
\n
\n\n
\n
').concat(this.noOptionsText,'
\n
').concat(this.noSearchResultsText,'
\n\n \n
\n
');if(i){var s=document.createElement("div");return this.$dropboxWrapper=s,this.hasDropboxWrapper=!0,s.innerHTML=o,i.appendChild(s),u.addClass(s,"vscomp-dropbox-wrapper ".concat(t)),""}return this.hasDropboxWrapper=!1,o}},{key:"renderOptions",value:function(){var e,t=this,i="",o=this.getVisibleOptions(),n="",r="",a=!(!this.markSearchResults||!this.searchValue),l=this.labelRenderer,p=this.disableOptionGroupCheckbox,u=this.uniqueId,h=this.searchGroup,c="function"==typeof l,d=s.convertToBoolean;if(a&&(e=new RegExp("(".concat(this.searchValue,")"),"gi")),this.multiple&&(n=''),this.allowNewOption){var v=this.getTooltipAttrText("New Option");r='")}o.forEach((function(o){var s,v=o.index,f="vscomp-option",y=t.getTooltipAttrText("",!0,!0),b=n,g="",m="",O="",S=d(o.isSelected),x="";o.isFocused&&(f+=" focused"),o.isDisabled&&(f+=" disabled",x='aria-disabled="true"'),o.isGroupTitle&&(f+=" group-title",p&&(b="")),S&&(f+=" selected"),o.isGroupOption&&(f+=" group-option",O='data-group-index="'.concat(o.groupIndex,'"')),s=c?l(o):o.label,o.description&&(m='
").concat(o.description,"
")),o.isCurrentNew?(f+=" current-new",g+=r):!a||o.isGroupTitle&&!h||(s=s.replace(e,"$1")),i+='
\n ").concat(b,'\n \n ").concat(s,"\n \n ").concat(m,"\n ").concat(g,"\n
")})),this.$options.innerHTML=i,this.$visibleOptions=this.$options.querySelectorAll(".vscomp-option"),this.afterRenderOptions()}},{key:"renderSearch",value:function(){if(this.hasSearchContainer){var e="",t="";this.multiple&&!this.disableSelectAll&&(e='\n \n '.concat(this.selectAllText,"\n ")),this.hasSearch&&(t='\n ×'));var i='
\n '.concat(e,"\n ").concat(t,"\n
");this.$search.innerHTML=i,this.$searchInput=this.$dropboxContainer.querySelector(".vscomp-search-input"),this.$searchClear=this.$dropboxContainer.querySelector(".vscomp-search-clear"),this.$toggleAllButton=this.$dropboxContainer.querySelector(".vscomp-toggle-all-button"),this.$toggleAllCheckbox=this.$dropboxContainer.querySelector(".vscomp-toggle-all-checkbox"),this.addEvent(this.$searchInput,"keyup change","onSearch"),this.addEvent(this.$searchClear,"click","onSearchClear"),this.addEvent(this.$toggleAllButton,"click","onToggleAllOptions")}}},{key:"addEvents",value:function(){this.addEvent(document,"click","onDocumentClick"),this.addEvent(this.$allWrappers,"keydown","onKeyDown"),this.addEvent(this.$toggleButton,"click","onToggleButtonClick"),this.addEvent(this.$clearButton,"click","onClearButtonClick"),this.addEvent(this.$dropboxContainer,"click","onDropboxContainerClick"),this.addEvent(this.$dropboxCloseButton,"click","onDropboxCloseButtonClick"),this.addEvent(this.$optionsContainer,"scroll","onOptionsScroll"),this.addEvent(this.$options,"click","onOptionsClick"),this.addEvent(this.$options,"mouseover","onOptionsMouseOver"),this.addEvent(this.$options,"touchmove","onOptionsTouchMove"),this.addMutationObserver()}},{key:"addEvent",value:function(e,t,i){var o=this;e&&s.removeArrayEmpty(t.split(" ")).forEach((function(t){var s="".concat(i,"-").concat(t),n=o.events[s];n||(n=o[i].bind(o),o.events[s]=n),u.addEvent(e,t,n)}))}},{key:"onDocumentClick",value:function(e){var t=e.target.closest(".vscomp-wrapper");t!==this.$wrapper&&t!==this.$dropboxWrapper&&this.isOpened()&&this.closeDropbox()}},{key:"onKeyDown",value:function(e){var t=e.which||e.keyCode,i=b[t];i&&this[i](e)}},{key:"onEnterPress",value:function(e){e.preventDefault(),this.isOpened()?this.selectFocusedOption():this.openDropbox()}},{key:"onDownArrowPress",value:function(e){e.preventDefault(),this.isOpened()?this.focusOption({direction:"next"}):this.openDropbox()}},{key:"onUpArrowPress",value:function(e){e.preventDefault(),this.isOpened()?this.focusOption({direction:"previous"}):this.openDropbox()}},{key:"onToggleButtonClick",value:function(e){var t=e.target;t.closest(".vscomp-value-tag-clear-button")?this.removeValue(t.closest(".vscomp-value-tag")):t.closest(".toggle-button-child")||this.toggleDropbox()}},{key:"onClearButtonClick",value:function(){this.reset()}},{key:"onOptionsScroll",value:function(){this.setVisibleOptions()}},{key:"onOptionsClick",value:function(e){var t=e.target.closest(".vscomp-option");t&&!u.hasClass(t,"disabled")&&(u.hasClass(t,"group-title")?this.onGroupTitleClick(t):this.selectOption(t,{event:e}))}},{key:"onGroupTitleClick",value:function(e){if(e&&this.multiple&&!this.disableOptionGroupCheckbox){var t=!u.hasClass(e,"selected");this.toggleGroupTitleCheckbox(e,t),this.toggleGroupOptions(e,t)}}},{key:"onDropboxContainerClick",value:function(e){e.target.closest(".vscomp-dropbox")||this.closeDropbox()}},{key:"onDropboxCloseButtonClick",value:function(){this.closeDropbox()}},{key:"onOptionsMouseOver",value:function(e){var t=e.target.closest(".vscomp-option");t&&this.isOpened()&&(u.hasClass(t,"disabled")||u.hasClass(t,"group-title")?this.removeOptionFocus():this.focusOption({$option:t}))}},{key:"onOptionsTouchMove",value:function(){this.removeOptionFocus()}},{key:"onSearch",value:function(e){e.stopPropagation(),this.setSearchValue(e.target.value,!0)}},{key:"onSearchClear",value:function(){this.setSearchValue(""),this.focusSearchInput()}},{key:"onToggleAllOptions",value:function(){this.toggleAllOptions()}},{key:"onResize",value:function(){this.setOptionsContainerHeight(!0)}},{key:"addMutationObserver",value:function(){var e=this;if(this.hasDropboxWrapper){var t=this.$ele;this.mutationObserver=new MutationObserver((function(i){i.some((function(i){var o=d(i.removedNodes).some((function(e){return!(e!==t&&!e.contains(t))}));return o&&e.destroy(),o}))})),this.mutationObserver.observe(document.querySelector("body"),{childList:!0,subtree:!0})}}},{key:"beforeValueSet",value:function(e){this.toggleAllOptionsClass(!e&&void 0)}},{key:"beforeSelectNewValue",value:function(){var e=this,t=this.getNewOption(),i=t.index;this.newValues.push(t.value),this.setOptionProp(i,"isCurrentNew",!1),this.setOptionProp(i,"isNew",!0),setTimeout((function(){e.setSearchValue(""),e.focusSearchInput()}),0)}},{key:"afterRenderWrapper",value:function(){u.addClass(this.$ele,"vscomp-ele"),this.renderSearch(),this.setEleStyles(),this.setDropboxStyles(),this.setOptionsHeight(),this.setVisibleOptions(),this.setOptionsContainerHeight(),this.addEvents(),this.setEleProps(),this.keepAlwaysOpen||this.showAsPopup||this.initDropboxPopover(),this.initialSelectedValue?this.setValueMethod(this.initialSelectedValue,this.silentInitialValueSet):this.autoSelectFirstOption&&this.visibleOptions.length&&this.setValueMethod(this.visibleOptions[0].value,this.silentInitialValueSet),this.showOptionsOnlyOnSearch&&this.setSearchValue("",!1,!0),this.initialDisabled&&this.disable(),this.autofocus&&this.focus()}},{key:"afterRenderOptions",value:function(){var e=this.getVisibleOptions(),t=!this.options.length&&!this.hasServerSearch,i=!t&&!e.length;(!this.allowNewOption||this.hasServerSearch||this.showOptionsOnlyOnSearch)&&u.toggleClass(this.$allWrappers,"has-no-search-results",i),u.toggleClass(this.$allWrappers,"has-no-options",t),this.setOptionAttr(),this.setOptionsPosition(),this.setOptionsTooltip()}},{key:"afterSetOptionsContainerHeight",value:function(e){e&&this.showAsPopup&&this.setVisibleOptions()}},{key:"afterSetSearchValue",value:function(){this.hasServerSearch?this.serverSearch():this.setVisibleOptionsCount(),this.selectAllOnlyVisible&&this.toggleAllOptionsClass(),this.focusOption({focusFirst:!0})}},{key:"afterSetVisibleOptionsCount",value:function(){this.scrollToTop(),this.setOptionsHeight(),this.setVisibleOptions(),this.updatePosition()}},{key:"afterValueSet",value:function(){this.scrollToTop(),this.setSearchValue(""),this.renderOptions()}},{key:"afterSetOptions",value:function(e){e&&this.setSelectedProp(),this.setOptionsHeight(),this.setVisibleOptions(),this.showOptionsOnlyOnSearch&&this.setSearchValue("",!1,!0),e||this.reset()}},{key:"setProps",value:function(e){var t=this.setDefaultProps(e);this.setPropsFromElementAttr(t);var i=s.convertToBoolean;this.$ele=t.ele,this.dropboxWrapper=t.dropboxWrapper,this.valueKey=t.valueKey,this.labelKey=t.labelKey,this.descriptionKey=t.descriptionKey,this.aliasKey=t.aliasKey,this.optionHeightText=t.optionHeight,this.optionHeight=parseFloat(this.optionHeightText),this.multiple=i(t.multiple),this.hasSearch=i(t.search),this.searchGroup=i(t.searchGroup),this.hideClearButton=i(t.hideClearButton),this.autoSelectFirstOption=i(t.autoSelectFirstOption),this.hasOptionDescription=i(t.hasOptionDescription),this.silentInitialValueSet=i(t.silentInitialValueSet),this.allowNewOption=i(t.allowNewOption),this.markSearchResults=i(t.markSearchResults),this.showSelectedOptionsFirst=i(t.showSelectedOptionsFirst),this.disableSelectAll=i(t.disableSelectAll),this.keepAlwaysOpen=i(t.keepAlwaysOpen),this.showDropboxAsPopup=i(t.showDropboxAsPopup),this.hideValueTooltipOnSelectAll=i(t.hideValueTooltipOnSelectAll),this.showOptionsOnlyOnSearch=i(t.showOptionsOnlyOnSearch),this.selectAllOnlyVisible=i(t.selectAllOnlyVisible),this.alwaysShowSelectedOptionsCount=i(t.alwaysShowSelectedOptionsCount),this.disableAllOptionsSelectedText=i(t.disableAllOptionsSelectedText),this.showValueAsTags=i(t.showValueAsTags),this.disableOptionGroupCheckbox=i(t.disableOptionGroupCheckbox),this.enableSecureText=i(t.enableSecureText),this.setValueAsArray=i(t.setValueAsArray),this.disableValidation=i(t.disableValidation),this.initialDisabled=i(t.disabled),this.required=i(t.required),this.autofocus=i(t.autofocus),this.useGroupValue=i(t.useGroupValue),this.noOptionsText=t.noOptionsText,this.noSearchResultsText=t.noSearchResultsText,this.selectAllText=t.selectAllText,this.searchPlaceholderText=t.searchPlaceholderText,this.optionsSelectedText=t.optionsSelectedText,this.optionSelectedText=t.optionSelectedText,this.allOptionsSelectedText=t.allOptionsSelectedText,this.clearButtonText=t.clearButtonText,this.moreText=t.moreText,this.placeholder=t.placeholder,this.position=t.position,this.textDirection=t.textDirection,this.dropboxWidth=t.dropboxWidth,this.tooltipFontSize=t.tooltipFontSize,this.tooltipAlignment=t.tooltipAlignment,this.tooltipMaxWidth=t.tooltipMaxWidth,this.noOfDisplayValues=parseInt(t.noOfDisplayValues),this.zIndex=parseInt(t.zIndex),this.maxValues=parseInt(t.maxValues),this.name=this.secureText(t.name),this.additionalClasses=t.additionalClasses,this.popupDropboxBreakpoint=t.popupDropboxBreakpoint,this.popupPosition=t.popupPosition,this.onServerSearch=t.onServerSearch,this.labelRenderer=t.labelRenderer,this.initialSelectedValue=0===t.selectedValue?"0":t.selectedValue,this.emptyValue=t.emptyValue,this.ariaLabelledby=t.ariaLabelledby,this.maxWidth=t.maxWidth,this.selectedValues=[],this.selectedOptions=[],this.newValues=[],this.events={},this.tooltipEnterDelay=200,this.searchValue="",this.searchValueOriginal="",this.isAllSelected=!1,(void 0===t.search&&this.multiple||this.allowNewOption||this.showOptionsOnlyOnSearch)&&(this.hasSearch=!0),this.hasServerSearch="function"==typeof this.onServerSearch,(this.maxValues||this.hasServerSearch||this.showOptionsOnlyOnSearch)&&(this.disableSelectAll=!0,this.disableOptionGroupCheckbox=!0),this.keepAlwaysOpen&&(this.dropboxWrapper="self"),this.showAsPopup=this.showDropboxAsPopup&&!this.keepAlwaysOpen&&window.innerWidth<=parseFloat(this.popupDropboxBreakpoint),this.hasSearchContainer=this.hasSearch||this.multiple&&!this.disableSelectAll,this.optionsCount=this.getOptionsCount(t.optionsCount),this.halfOptionsCount=Math.ceil(this.optionsCount/2),this.optionsHeight=this.getOptionsHeight(),this.uniqueId=this.getUniqueId()}},{key:"setDefaultProps",value:function(e){var t={dropboxWrapper:"self",valueKey:"value",labelKey:"label",descriptionKey:"description",aliasKey:"alias",optionsCount:5,noOfDisplayValues:50,optionHeight:"40px",noOptionsText:"No options found",noSearchResultsText:"No results found",selectAllText:"Select All",searchPlaceholderText:"Search...",clearButtonText:"Clear",moreText:"more...",optionsSelectedText:"options selected",optionSelectedText:"option selected",allOptionsSelectedText:"All",placeholder:"Select",position:"bottom left",zIndex:e.keepAlwaysOpen?1:2,tooltipFontSize:"14px",tooltipAlignment:"center",tooltipMaxWidth:"300px",name:"",additionalClasses:"",maxValues:0,showDropboxAsPopup:!0,popupDropboxBreakpoint:"576px",popupPosition:"center",hideValueTooltipOnSelectAll:!0,emptyValue:""};return e.hasOptionDescription&&(t.optionsCount=4,t.optionHeight="50px"),Object.assign(t,e)}},{key:"setPropsFromElementAttr",value:function(e){var t=e.ele;for(var i in x){var o=t.getAttribute(i);-1===g.indexOf(i)||""!==o&&"true"!==o||(o=!0),o&&(e[x[i]]=o)}}},{key:"setEleProps",value:function(){var t=this.$ele;t.virtualSelect=this,t.value=this.multiple?[]:"",t.name=this.name,t.disabled=!1,t.required=this.required,t.autofocus=this.autofocus,t.multiple=this.multiple,t.form=t.closest("form"),t.reset=e.reset,t.setValue=e.setValueMethod,t.setOptions=e.setOptionsMethod,t.setDisabledOptions=e.setDisabledOptionsMethod,t.toggleSelectAll=e.toggleSelectAll,t.isAllSelected=e.isAllSelected,t.addOption=e.addOptionMethod,t.getNewValue=e.getNewValueMethod,t.getDisplayValue=e.getDisplayValueMethod,t.getSelectedOptions=e.getSelectedOptionsMethod,t.open=e.openMethod,t.close=e.closeMethod,t.focus=e.focusMethod,t.enable=e.enableMethod,t.disable=e.disableMethod,t.destroy=e.destroyMethod,t.validate=e.validateMethod,t.toggleRequired=e.toggleRequiredMethod,this.hasDropboxWrapper&&(this.$dropboxWrapper.virtualSelect=this)}},{key:"setValueMethod",value:function(e,t){var i={},o={},s=[],n=this.multiple,r=e;if(r){if(Array.isArray(r)||(r=[r]),n){var a=this.maxValues;a&&r.length>a&&r.splice(a)}else r.length>1&&(r=[r[0]]);r=r.map((function(e){return e||0==e?e.toString():""})),this.useGroupValue&&(r=this.setGroupOptionsValue(r)),r.forEach((function(e,t){i[e]=!0,o[e]=t})),this.allowNewOption&&r&&this.setNewOptionsFromValue(r)}if(this.options.forEach((function(e){!0!==i[e.value]||e.isDisabled||e.isGroupTitle?e.isSelected=!1:(e.isSelected=!0,s.push(e.value))})),n)this.hasOptionGroup&&this.setGroupsSelectedProp(),s.sort((function(e,t){return o[e]-o[t]}));else{var l=c(s,1);s=l[0]}this.beforeValueSet(),this.setValue(s,{disableEvent:t}),this.afterValueSet()}},{key:"setGroupOptionsValue",value:function(e){var t=[],i={},o={};return e.forEach((function(e){o[e]=!0})),this.options.forEach((function(e){var s=e.value,n=!0===o[s];e.isGroupTitle?n&&(i[e.index]=!0):(n||i[e.groupIndex])&&t.push(s)})),t}},{key:"setGroupsSelectedProp",value:function(){var e=this.isAllGroupOptionsSelected.bind(this);this.options.forEach((function(t){t.isGroupTitle&&(t.isSelected=e(t.index))}))}},{key:"setOptionsMethod",value:function(e,t){this.setOptions(e),this.afterSetOptions(t)}},{key:"setDisabledOptionsMethod",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.setDisabledOptions(e,!0),t||(this.setValueMethod(null),this.toggleAllOptionsClass()),this.setVisibleOptions()}},{key:"setDisabledOptions",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=[];if(e)if(!0===e)t&&this.options.forEach((function(e){return e.isDisabled=!0,i.push(e.value),e}));else{i=e.map((function(e){return e.toString()}));var o={};i.forEach((function(e){o[e]=!0})),t&&this.options.forEach((function(e){return e.isDisabled=!0===o[e.value],e}))}else t&&this.options.forEach((function(e){return e.isDisabled=!1,e}));this.disabledOptions=i}},{key:"setOptions",value:function(e){e||(e=[]);var t=[],i=this.disabledOptions.length,o=this.valueKey,n=this.labelKey,r=this.descriptionKey,a=this.aliasKey,l=this.hasOptionDescription,p=s.getString,u=s.convertToBoolean,h=this.secureText.bind(this),c=this.getAlias.bind(this),d=0,v=!1,f={},y=!1;this.disabledOptions.forEach((function(e){f[e]=!0})),e.forEach((function e(s){var b=h(p(s[o])),g=s.options,m=!!g,O={index:d,value:b,label:h(p(s[n])),alias:c(s[a]),isVisible:u(s.isVisible,!0),isNew:s.isNew||!1,isGroupTitle:m};if(y||""!==b||(y=!0),i&&(O.isDisabled=!0===f[b]),s.isGroupOption&&(O.isGroupOption=!0,O.groupIndex=s.groupIndex),l&&(O.description=h(p(s[r]))),s.customData&&(O.customData=s.customData),t.push(O),d+=1,m){var S=O.index;v=!0,g.forEach((function(t){t.isGroupOption=!0,t.groupIndex=S,e(t)}))}}));var b=t.length,g=this.$ele;g.options=t,g.length=b,this.options=t,this.visibleOptionsCount=b,this.lastOptionIndex=b-1,this.newValues=[],this.hasOptionGroup=v,this.hasEmptyValueOption=y,this.setSortedOptions()}},{key:"setServerOptions",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.setOptionsMethod(t,!0);var i=this.selectedOptions,o=this.options,s=!1;if(i.length){var n={};s=!0,o.forEach((function(e){n[e.value]=!0})),i.forEach((function(e){!1===n[e.value]&&(e.isVisible=!1,o.push(e))})),this.setOptionsMethod(o,!0)}if(this.allowNewOption&&this.searchValue){var r=o.some((function(t){return t.label.toLowerCase()===e.searchValue}));r||(s=!0,this.setNewOption())}s?(this.setVisibleOptionsCount(),this.multiple&&this.toggleAllOptionsClass(),this.setValueText()):this.updatePosition(),u.removeClass(this.$allWrappers,"server-searching")}},{key:"setSelectedOptions",value:function(){this.selectedOptions=this.options.filter((function(e){return e.isSelected}))}},{key:"setSortedOptions",value:function(){var e=d(this.options);this.showSelectedOptionsFirst&&this.selectedValues.length&&(e=this.hasOptionGroup?this.sortOptionsGroup(e):this.sortOptions(e)),this.sortedOptions=e}},{key:"setVisibleOptions",value:function(){var e=d(this.sortedOptions),t=2*this.optionsCount,i=this.getVisibleStartIndex(),o=this.getNewOption(),s=i+t-1,n=0;o&&(o.visibleIndex=n,n++),e=e.filter((function(e){var t=!1;return e.isVisible&&!e.isCurrentNew&&(t=n>=i&&n<=s,e.visibleIndex=n,n+=1),t})),o&&(e=[o].concat(d(e))),this.visibleOptions=e,this.renderOptions()}},{key:"setOptionsPosition",value:function(e){void 0===e&&(e=this.getVisibleStartIndex());var t=e*this.optionHeight;this.$options.style.transform="translate3d(0, ".concat(t,"px, 0)"),u.setData(this.$options,"top",t)}},{key:"setOptionsTooltip",value:function(){var e=this,t=this.getVisibleOptions(),i=this.hasOptionDescription;t.forEach((function(t){var o=e.$dropboxContainer.querySelector('.vscomp-option[data-index="'.concat(t.index,'"]'));u.setData(o.querySelector(".vscomp-option-text"),"tooltip",t.label),i&&u.setData(o.querySelector(".vscomp-option-description"),"tooltip",t.description)}))}},{key:"setValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.disableEvent,o=void 0!==i&&i,n=t.disableValidation,r=void 0!==n&&n,a=this.hasEmptyValueOption&&""===e||e;a?Array.isArray(e)?this.selectedValues=d(e):this.selectedValues=[e]:this.selectedValues=[];var l=this.getValue();this.$ele.value=l,this.$hiddenInput.value=this.getInputValue(l),this.isMaxValuesSelected=!!(this.maxValues&&this.maxValues<=this.selectedValues.length),this.toggleAllOptionsClass(),this.setValueText(),u.toggleClass(this.$allWrappers,"has-value",s.isNotEmpty(this.selectedValues)),u.toggleClass(this.$allWrappers,"max-value-selected",this.isMaxValuesSelected),r||this.validate(),o||u.dispatchEvent(this.$ele,"change",!0)}},{key:"setValueText",value:function(){var e=this.multiple,t=this.selectedValues,i=this.noOfDisplayValues,o=this.showValueAsTags,s=this.$valueText,n=[],r=[],a=t.length,l=0,p=this.isAllSelected&&!this.hasServerSearch&&!this.disableAllOptionsSelectedText&&!o;if(p&&this.hideValueTooltipOnSelectAll)s.innerHTML="".concat(this.allOptionsSelectedText," (").concat(a,")");else{var h,c=function(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=v(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var o=0,s=function(){};return{s:s,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,r=!0,a=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return r=e.done,e},e:function(e){a=!0,n=e},f:function(){try{r||null==i.return||i.return()}finally{if(a)throw n}}}}(this.getSelectedOptions({fullDetails:!0,keepSelectionOrder:!0}));try{for(c.s();!(h=c.n()).done;){var d=h.value;if(!d.isCurrentNew){if(l>=i)break;var f=d.label;if(n.push(f),l++,o){var y='\n ').concat(f,'\n \n \n \n ');r.push(y)}else r.push(f)}}}catch(e){c.e(e)}finally{c.f()}var b=a-i;b>0&&r.push('+ '.concat(b," ").concat(this.moreText,""));var g=n.join(", ");if(""===g)s.innerHTML=this.placeholder;else if(s.innerHTML=g,e){var m=this.maxValues;if(u.hasEllipsis(s)||m||this.alwaysShowSelectedOptionsCount||o){var O=''.concat(a,"");if(m&&(O+=' / '.concat(m,"")),p)s.innerHTML="".concat(this.allOptionsSelectedText," (").concat(a,")");else if(o)s.innerHTML=r.join(""),this.$valueTags=s.querySelectorAll(".vscomp-value-tag"),this.setValueTagAttr();else{var S=1===a?this.optionSelectedText:this.optionsSelectedText;s.innerHTML="".concat(O," ").concat(S)}}else r=[]}}var x="";0===a?x=this.placeholder:o||(x=r.join(", ")),u.setData(s,"tooltip",x),e&&(u.setData(s,"tooltipEllipsisOnly",0===a),o&&this.updatePosition())}},{key:"setSearchValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(e!==this.searchValueOriginal||i){t||(this.$searchInput.value=e);var o=e.replace(/\\/g,"").toLowerCase().trim();this.searchValue=o,this.searchValueOriginal=e,u.toggleClass(this.$allWrappers,"has-search-value",e),this.afterSetSearchValue()}}},{key:"setVisibleOptionsCount",value:function(){var e,t=0,i=!1,o=this.searchValue,s=this.searchGroup,n=this.showOptionsOnlyOnSearch,r=this.isOptionVisible.bind(this);this.hasOptionGroup&&(e=this.getVisibleOptionGroupsMapping(o)),this.options.forEach((function(a){var l;a.isCurrentNew||(n&&!o?(a.isVisible=!1,l={isVisible:!1,hasExactOption:!1}):l=r({data:a,searchValue:o,hasExactOption:i,visibleOptionGroupsMapping:e,searchGroup:s}),l.isVisible&&(t+=1),i||(i=l.hasExactOption))})),this.allowNewOption&&(o&&!i?(this.setNewOption(),t++):this.removeNewOption()),this.visibleOptionsCount=t,this.afterSetVisibleOptionsCount()}},{key:"setOptionProp",value:function(e,t,i){this.options[e]&&(this.options[e][t]=i)}},{key:"setOptionsHeight",value:function(){this.$optionsList.style.height=this.optionHeight*this.visibleOptionsCount+"px"}},{key:"setOptionsContainerHeight",value:function(e){var t;e?this.showAsPopup&&(this.optionsCount=this.getOptionsCount(),this.halfOptionsCount=Math.ceil(this.optionsCount/2),t=this.getOptionsHeight(),this.optionsHeight=t):(t=this.optionsHeight,this.keepAlwaysOpen&&(u.setStyle(this.$noOptions,"height",t),u.setStyle(this.$noSearchResults,"height",t))),u.setStyle(this.$optionsContainer,"max-height",t),this.afterSetOptionsContainerHeight(e)}},{key:"setNewOption",value:function(e){var t=e||this.searchValueOriginal.trim();if(t){var i=this.getNewOption();if(i){var o=i.index;this.setOptionProp(o,"value",this.secureText(t)),this.setOptionProp(o,"label",this.secureText(t))}else{var s={value:t,label:t};e?(s.isNew=!0,this.newValues.push(t)):s.isCurrentNew=!0,this.addOption(s)}}}},{key:"setSelectedProp",value:function(){var e={};this.selectedValues.forEach((function(t){e[t]=!0})),this.options.forEach((function(t){!0===e[t.value]&&(t.isSelected=!0)}))}},{key:"setNewOptionsFromValue",value:function(e){if(e){var t=this.setNewOption.bind(this),i={};this.options.forEach((function(e){i[e.value]=!0})),e.forEach((function(e){e&&!0!==i[e]&&t(e)}))}}},{key:"setDropboxWrapperWidth",value:function(){if(!this.showAsPopup){var e=this.dropboxWidth||"".concat(this.$wrapper.offsetWidth,"px");u.setStyle(this.$dropboxContainer,"max-width",e)}}},{key:"setEleStyles",value:function(){var e=this.maxWidth,t={};e&&(t["max-width"]=e),u.setStyles(this.$ele,t)}},{key:"setDropboxStyles",value:function(){var e=this.dropboxWidth,t={},i={"z-index":this.zIndex};e&&(this.showAsPopup?t["max-width"]=e:i.width=e),u.setStyles(this.$dropboxContainer,i),u.setStyles(this.$dropbox,t)}},{key:"setOptionAttr",value:function(){var e=this.$visibleOptions,t=this.options,i="".concat(this.optionHeight,"px"),o=u.setStyle,s=u.getData,n=u.setData;e&&e.length&&e.forEach((function(e){var r=t[s(e,"index")];o(e,"height",i),n(e,"value",r.value)}))}},{key:"setValueTagAttr",value:function(){var e=this.$valueTags;if(e&&e.length){var t=u.getData,i=u.setData,o=this.options;e.forEach((function(e){var s=t(e,"index");if(void 0!==s){var n=o[s];i(e,"value",n.value)}}))}}},{key:"setScrollTop",value:function(){var e=this.selectedValues;if(!this.showSelectedOptionsFirst&&0!==e.length){var t,i={};e.forEach((function(e){i[e]=!0})),this.options.some((function(e){if(i[e.value])return t=e.visibleIndex,!0})),t&&(this.$optionsContainer.scrollTop=this.optionHeight*t)}}},{key:"getVisibleOptions",value:function(){return this.visibleOptions||[]}},{key:"getValue",value:function(){return this.multiple?this.useGroupValue?this.getGroupValue():this.selectedValues:this.selectedValues[0]||""}},{key:"getGroupValue",value:function(){var e=[],t={};return this.options.forEach((function(i){if(i.isSelected){var o=i.value;i.isGroupTitle?o&&(t[i.index]=!0,e.push(o)):!0!==t[i.groupIndex]&&e.push(o)}})),e}},{key:"getInputValue",value:function(e){var t=e;return t&&t.length?this.setValueAsArray&&this.multiple&&(t=JSON.stringify(t)):t=this.emptyValue,t}},{key:"getFirstVisibleOptionIndex",value:function(){return Math.ceil(this.$optionsContainer.scrollTop/this.optionHeight)}},{key:"getVisibleStartIndex",value:function(){var e=this.getFirstVisibleOptionIndex()-this.halfOptionsCount;return e<0&&(e=0),e}},{key:"getTooltipAttrText",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o={"data-tooltip":e||"","data-tooltip-enter-delay":this.tooltipEnterDelay,"data-tooltip-z-index":this.zIndex,"data-tooltip-font-size":this.tooltipFontSize,"data-tooltip-alignment":this.tooltipAlignment,"data-tooltip-max-width":this.tooltipMaxWidth,"data-tooltip-ellipsis-only":t,"data-tooltip-allow-html":i};return u.getAttributesText(o)}},{key:"getOptionObj",value:function(e){if(e){var t=s.getString,i=this.secureText.bind(this);return{index:e.index,value:i(t(e.value)),label:i(t(e.label)),description:i(t(e.description)),alias:this.getAlias(e.alias),isCurrentNew:e.isCurrentNew||!1,isNew:e.isNew||!1,isVisible:!0}}}},{key:"getNewOption",value:function(){var e=this.options[this.lastOptionIndex];if(e&&e.isCurrentNew)return e}},{key:"getOptionIndex",value:function(e){var t;return this.options.some((function(i){if(i.value==e)return t=i.index,!0})),t}},{key:"getNewValue",value:function(){var e={};this.newValues.forEach((function(t){e[t]=!0}));var t=this.selectedValues.filter((function(t){return!0===e[t]}));return this.multiple?t:t[0]}},{key:"getAlias",value:function(e){var t=e;return t&&(t=(t=Array.isArray(t)?t.join(","):t.toString().trim()).toLowerCase()),t||""}},{key:"getDisplayValue",value:function(){var e=[];return this.options.forEach((function(t){t.isSelected&&e.push(t.label)})),this.multiple?e:e[0]||""}},{key:"getSelectedOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.fullDetails,i=void 0!==t&&t,o=e.keepSelectionOrder,s=void 0!==o&&o,n=this.valueKey,r=this.labelKey,a=this.selectedValues,l=[];if(this.options.forEach((function(e){if(e.isSelected&&!e.isGroupTitle)if(i)l.push(e);else{var t,o=(h(t={},n,e.value),h(t,r,e.label),t);e.isNew&&(o.isNew=!0),e.customData&&(o.customData=e.customData),l.push(o)}})),s){var p={};a.forEach((function(e,t){p[e]=t})),l.sort((function(e,t){return p[e.value]-p[t.value]}))}return this.multiple||i?l:l[0]}},{key:"getVisibleOptionGroupsMapping",value:function(e){var t=this.options,i={},o=this.isOptionVisible.bind(this);return(t=this.structureOptionGroup(t)).forEach((function(t){i[t.index]=t.options.some((function(t){return o({data:t,searchValue:e}).isVisible}))})),i}},{key:"getOptionsCount",value:function(e){if(this.showAsPopup){var t=80*window.innerHeight/100-48;this.hasSearchContainer&&(t-=40),e=Math.floor(t/this.optionHeight)}else e=parseInt(e);return e}},{key:"getOptionsHeight",value:function(){return this.optionsCount*this.optionHeight+"px"}},{key:"getSibling",value:function(e,t){var i="next"===t?"nextElementSibling":"previousElementSibling";do{e&&(e=e[i])}while(u.hasClass(e,"disabled")||u.hasClass(e,"group-title"));return e}},{key:"getUniqueId",value:function(){var e=s.getRandomInt(1e4);return document.querySelector("#vscomp-ele-wrapper-".concat(e))?this.getUniqueId():e}},{key:"initDropboxPopover",value:function(){var e={ele:this.$ele,target:this.$dropboxContainer,position:this.position,zIndex:this.zIndex,margin:4,transitionDistance:30,hideArrowIcon:!0,disableManualAction:!0,disableUpdatePosition:!this.hasDropboxWrapper,afterShow:this.afterShowPopper.bind(this),afterHide:this.afterHidePopper.bind(this)};this.dropboxPopover=new PopoverComponent(e)}},{key:"openDropbox",value:function(e){this.isSilentOpen=e,e?u.setStyle(this.$dropboxContainer,"display","inline-flex"):(u.dispatchEvent(this.$ele,"beforeOpen"),u.setAria(this.$wrapper,"expanded",!0)),this.setDropboxWrapperWidth(),u.removeClass(this.$allWrappers,"closed"),this.dropboxPopover&&!e?this.dropboxPopover.show():this.afterShowPopper()}},{key:"afterShowPopper",value:function(){var e=this.isSilentOpen;this.isSilentOpen=!1,e||(this.moveSelectedOptionsFirst(),this.setScrollTop(),u.addClass(this.$allWrappers,"focused"),this.showAsPopup?(u.addClass(this.$body,"vscomp-popup-active"),this.isPopupActive=!0):this.focusSearchInput(),u.dispatchEvent(this.$ele,"afterOpen"))}},{key:"closeDropbox",value:function(e){this.isSilentClose=e,this.keepAlwaysOpen?this.removeOptionFocus():(e?u.setStyle(this.$dropboxContainer,"display",""):(u.dispatchEvent(this.$ele,"beforeClose"),u.setAria(this.$wrapper,"expanded",!1),u.setAria(this.$wrapper,"activedescendant","")),this.dropboxPopover&&!e?this.dropboxPopover.hide():this.afterHidePopper())}},{key:"afterHidePopper",value:function(){var e=this.isSilentClose;this.isSilentClose=!1,u.removeClass(this.$allWrappers,"focused"),this.removeOptionFocus(),e||this.isPopupActive&&(u.removeClass(this.$body,"vscomp-popup-active"),this.isPopupActive=!1),u.addClass(this.$allWrappers,"closed"),e||u.dispatchEvent(this.$ele,"afterClose")}},{key:"moveSelectedOptionsFirst",value:function(){this.showSelectedOptionsFirst&&(this.setSortedOptions(),this.$optionsContainer.scrollTop&&this.selectedValues.length?this.scrollToTop():this.setVisibleOptions())}},{key:"toggleDropbox",value:function(){this.isOpened()?this.closeDropbox():this.openDropbox()}},{key:"updatePosition",value:function(){this.dropboxPopover&&this.$ele.updatePosition()}},{key:"isOpened",value:function(){return!u.hasClass(this.$wrapper,"closed")}},{key:"focusSearchInput",value:function(){var e=this.$searchInput;e&&e.focus()}},{key:"focusOption",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.direction,o=t.$option,s=t.focusFirst,n=this.$dropboxContainer.querySelector(".vscomp-option.focused");if(o)e=o;else if(!n||s){var r=this.getFirstVisibleOptionIndex();e=this.$dropboxContainer.querySelector('.vscomp-option[data-visible-index="'.concat(r,'"]')),(u.hasClass(e,"disabled")||u.hasClass(e,"group-title"))&&(e=this.getSibling(e,"next"))}else e=this.getSibling(n,i);e&&e!==n&&(n&&this.toggleOptionFocusedState(n,!1),this.toggleOptionFocusedState(e,!0),this.toggleFocusedProp(u.getData(e,"index"),!0),this.moveFocusedOptionToView(e))}},{key:"moveFocusedOptionToView",value:function(e){if(e||(e=this.$dropboxContainer.querySelector(".vscomp-option.focused")),e){var t,i=this.$optionsContainer.getBoundingClientRect(),o=e.getBoundingClientRect(),s=i.top,n=i.bottom,r=i.height,a=o.top,l=o.bottom,p=o.height,h=e.offsetTop,c=u.getData(this.$options,"top","number");s>a?t=h+c:n1&&void 0!==arguments[1]?arguments[1]:{},i=t.event;if(e){var o=!u.hasClass(e,"selected");if(o){if(this.multiple&&this.isMaxValuesSelected)return}else if(!this.multiple)return void this.closeDropbox();var n=this.selectedValues,r=u.getData(e,"value"),a=u.getData(e,"index","number"),l=!1,p=this.lastSelectedOptionIndex;if(this.lastSelectedOptionIndex=null,this.toggleSelectedProp(a,o),o){if(this.multiple)n.push(r),this.toggleAllOptionsClass(),this.toggleGroupOptionsParent(e),i&&i.shiftKey&&(l=!0);else{n.length&&this.toggleSelectedProp(this.getOptionIndex(n[0]),!1),n=[r];var h=this.$dropboxContainer.querySelector(".vscomp-option.selected");h&&this.toggleOptionSelectedState(h,!1),this.closeDropbox()}this.lastSelectedOptionIndex=a,this.toggleOptionSelectedState(e)}else this.multiple&&(this.toggleOptionSelectedState(e),s.removeItemFromArray(n,r),this.toggleAllOptionsClass(!1),this.toggleGroupOptionsParent(e,!1));u.hasClass(e,"current-new")&&this.beforeSelectNewValue(),this.setValue(n),l&&this.selectRangeOptions(p,a)}}},{key:"selectFocusedOption",value:function(){this.selectOption(this.$dropboxContainer.querySelector(".vscomp-option.focused"))}},{key:"selectRangeOptions",value:function(e,t){var i=this;if("number"==typeof e&&!this.maxValues){var o,s,n=this.selectedValues,r=this.hasOptionGroup,a={};if(eo&&t1&&void 0!==arguments[1]&&arguments[1];this.focusedOptionIndex&&this.setOptionProp(this.focusedOptionIndex,"isFocused",!1),this.setOptionProp(e,"isFocused",t),this.focusedOptionIndex=e}},{key:"toggleSelectedProp",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.setOptionProp(e,"isSelected",t)}},{key:"scrollToTop",value:function(){var e=!this.isOpened();e&&this.openDropbox(!0),this.$optionsContainer.scrollTop>0&&(this.$optionsContainer.scrollTop=0),e&&this.closeDropbox(!0)}},{key:"reset",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.options.forEach((function(e){e.isSelected=!1})),this.beforeValueSet(!0),this.setValue(null,{disableValidation:e}),this.afterValueSet(),e&&u.removeClass(this.$allWrappers,"has-error"),u.dispatchEvent(this.$ele,"reset")}},{key:"addOption",value:function(e,t){if(e){this.lastOptionIndex++,e.index=this.lastOptionIndex;var i=this.getOptionObj(e);this.options.push(i),this.sortedOptions.push(i),t&&(this.visibleOptionsCount++,this.afterSetOptions())}}},{key:"removeOption",value:function(e){(e||0==e)&&(this.options.splice(e,1),this.lastOptionIndex--)}},{key:"removeNewOption",value:function(){var e=this.getNewOption();e&&this.removeOption(e.index)}},{key:"sortOptions",value:function(e){return e.sort((function(e,t){var i=e.isSelected||e.isAnySelected,o=t.isSelected||t.isAnySelected;return i||o?i&&(!o||e.indexe.length)&&(t=e.length);for(var i=0,o=new Array(t);ii-s-t.width?"left":"right",vertical:n>o-n-t.height?"top":"bottom"}}},{key:"getAbsoluteCoords",value:function(e){if(e){var t=e.getBoundingClientRect(),i=window.pageXOffset,o=window.pageYOffset;return{width:t.width,height:t.height,top:t.top+o,right:t.right+i,bottom:t.bottom+o,left:t.left+i}}}},{key:"getCoords",value:function(e){return e?e.getBoundingClientRect():{}}},{key:"getData",value:function(e,t,i){if(e){var o=e?e.dataset[t]:"";return"number"===i?o=parseFloat(o)||0:"true"===o?o=!0:"false"===o&&(o=!1),o}}},{key:"setData",value:function(e,t,i){e&&(e.dataset[t]=i)}},{key:"setStyle",value:function(e,t,i){e&&(e.style[t]=i)}},{key:"show",value:function(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"block";t.setStyle(e,"display",i)}},{key:"hide",value:function(e){t.setStyle(e,"display","none")}},{key:"getHideableParent",value:function(e){for(var t,i=e.parentElement;i;){var o=getComputedStyle(i).overflow;if(-1!==o.indexOf("scroll")||-1!==o.indexOf("auto")){t=i;break}i=i.parentElement}return t}}])&&function(e,t){for(var i=0;im?m-f:M:k+u>F&&("right"===E?n="left":k=F+fO?O-c:P:C+h>I&&("bottom"===E?n="top":C=I+cu-z&&(L=u-z):"left"!==E&&"right"!==E||((R=b/2+g-B)h-z&&(R=h-z)),i.setStyle(this.$arrowEle,"transform","translate3d(".concat(L,"px, ").concat(R,"px, 0) ").concat(K))}i.hide(this.$popperEle)}},{key:"resetPosition",value:function(){i.setStyle(this.$popperEle,"transform","none"),this.setPosition()}},{key:"show",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=t.resetPosition,s=t.data;clearTimeout(this.exitDelayTimeout),clearTimeout(this.hideDurationTimeout),o&&this.resetPosition(),this.enterDelayTimeout=setTimeout((function(){var t=i.getData(e.$popperEle,"left"),o=i.getData(e.$popperEle,"top"),n="translate3d(".concat(t,"px, ").concat(o,"px, 0)"),r=e.showDuration;i.show(e.$popperEle,"inline-flex"),i.getCoords(e.$popperEle),i.setStyle(e.$popperEle,"transitionDuration",r+"ms"),i.setStyle(e.$popperEle,"transform",n),i.setStyle(e.$popperEle,"opacity",1),e.showDurationTimeout=setTimeout((function(){"function"==typeof e.afterShowCallback&&e.afterShowCallback(s)}),r)}),this.enterDelay)}},{key:"hide",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=t.data;clearTimeout(this.enterDelayTimeout),clearTimeout(this.showDurationTimeout),this.exitDelayTimeout=setTimeout((function(){if(e.$popperEle){var t=i.getData(e.$popperEle,"fromLeft"),s=i.getData(e.$popperEle,"fromTop"),n="translate3d(".concat(t,"px, ").concat(s,"px, 0)"),r=e.hideDuration;i.setStyle(e.$popperEle,"transitionDuration",r+"ms"),i.setStyle(e.$popperEle,"transform",n),i.setStyle(e.$popperEle,"opacity",0),e.hideDurationTimeout=setTimeout((function(){i.hide(e.$popperEle),"function"==typeof e.afterHideCallback&&e.afterHideCallback(o)}),r)}}),this.exitDelay)}},{key:"updatePosition",value:function(){i.setStyle(this.$popperEle,"transitionDuration","0ms"),this.resetPosition();var e=i.getData(this.$popperEle,"left"),t=i.getData(this.$popperEle,"top");i.show(this.$popperEle,"inline-flex"),i.setStyle(this.$popperEle,"transform","translate3d(".concat(e,"px, ").concat(t,"px, 0)"))}}])&&function(e,t){for(var i=0;i1&&void 0!==arguments[1]&&arguments[1];return!0===e||"true"===e||!1!==e&&"false"!==e&&t}},{key:"removeArrayEmpty",value:function(e){return Array.isArray(e)&&e.length?e.filter((function(e){return!!e})):[]}},{key:"throttle",value:function(e,t){var i,o=0;return function(){for(var s=arguments.length,n=new Array(s),r=0;re.length)&&(t=e.length);for(var i=0,o=new Array(t);i'),e=this.$popover.querySelector(".pop-comp-arrow")),this.$arrowEle=e}}},{key:"destory",value:function(){this.removeEvents()}}])&&r(i.prototype,o),s&&r(i,s),e}();window.PopoverComponent=l}(); \ No newline at end of file diff --git a/docs/assets/virtual-select.js b/docs/assets/virtual-select.js new file mode 100644 index 0000000..bc9c882 --- /dev/null +++ b/docs/assets/virtual-select.js @@ -0,0 +1,3675 @@ +/*! + * Virtual Select v1.0.29 + * https://sa-si-dev.github.io/virtual-select + * Licensed under MIT (https://github.com/sa-si-dev/virtual-select/blob/master/LICENSE) + *//******/ (function() { // webpackBootstrap +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +!function() { +"use strict"; + +// UNUSED EXPORTS: VirtualSelect + +;// CONCATENATED MODULE: ./src/utils/utils.js +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +var Utils = /*#__PURE__*/function () { + function Utils() { + _classCallCheck(this, Utils); + } + + _createClass(Utils, null, [{ + key: "getString", + value: + /** + * @param {any} text + * @returns {string} + */ + function getString(text) { + return text || text === 0 ? text.toString() : ''; + } + /** + * @param {any} value + * @param {boolean} defaultValue + * @returns {boolean} + */ + + }, { + key: "convertToBoolean", + value: function convertToBoolean(value) { + var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var result; + + if (value === true || value === 'true') { + result = true; + } else if (value === false || value === 'false') { + result = false; + } else { + result = defaultValue; + } + + return result; + } + /** + * @param {any} value + * @returns {boolean} + */ + + }, { + key: "isEmpty", + value: function isEmpty(value) { + var result = false; + + if (!value) { + result = true; + } else if (Array.isArray(value)) { + if (value.length === 0) { + result = true; + } + } else if (_typeof(value) === 'object') { + if (Object.keys(value).length === 0) { + result = true; + } + } + + return result; + } + /** + * @param {any} value + * @returns {boolean} + */ + + }, { + key: "isNotEmpty", + value: function isNotEmpty(value) { + return !this.isEmpty(value); + } + /** + * @param {any[]} array + * @param {any} value + * @param {boolean} cloneArray + * @returns {any[]} + */ + + }, { + key: "removeItemFromArray", + value: function removeItemFromArray(array, value) { + var cloneArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (!Array.isArray(array) || !array.length) { + return array; + } + + var inputArr = cloneArray ? _toConsumableArray(array) : array; + var index = inputArr.indexOf(value); + + if (index !== -1) { + inputArr.splice(index, 1); + } + + return inputArr; + } + /** + * @param {any[]} array + * @returns {any[]} + */ + + }, { + key: "removeArrayEmpty", + value: function removeArrayEmpty(array) { + if (!Array.isArray(array) || !array.length) { + return []; + } + + return array.filter(function (d) { + return !!d; + }); + } + /** + * @param {number} max + * @param {number} max + * @returns {number} + */ + + }, { + key: "getRandomInt", + value: function getRandomInt(max) { + var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var minN = Math.ceil(min); + var maxN = Math.floor(max); + return Math.floor(Math.random() * (maxN - minN - 1)) + minN; + } + }]); + + return Utils; +}(); +;// CONCATENATED MODULE: ./src/utils/dom-utils.js +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || dom_utils_unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function dom_utils_toConsumableArray(arr) { return dom_utils_arrayWithoutHoles(arr) || dom_utils_iterableToArray(arr) || dom_utils_unsupportedIterableToArray(arr) || dom_utils_nonIterableSpread(); } + +function dom_utils_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function dom_utils_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return dom_utils_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return dom_utils_arrayLikeToArray(o, minLen); } + +function dom_utils_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function dom_utils_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return dom_utils_arrayLikeToArray(arr); } + +function dom_utils_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function dom_utils_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function dom_utils_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function dom_utils_createClass(Constructor, protoProps, staticProps) { if (protoProps) dom_utils_defineProperties(Constructor.prototype, protoProps); if (staticProps) dom_utils_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + + +var DomUtils = /*#__PURE__*/function () { + function DomUtils() { + dom_utils_classCallCheck(this, DomUtils); + } + + dom_utils_createClass(DomUtils, null, [{ + key: "addClass", + value: + /** + * @param {HTMLElement | NodeListOf} $ele + * @param {string} classNames + */ + function addClass($ele, classNames) { + if (!$ele) { + return; + } + + var classNamesArr = classNames.split(' '); + DomUtils.getElements($ele).forEach(function ($this) { + var _$this$classList; + + (_$this$classList = $this.classList).add.apply(_$this$classList, dom_utils_toConsumableArray(classNamesArr)); + }); + } + /** + * @param {HTMLElement | NodeListOf} $ele + * @param {string} classNames + */ + + }, { + key: "removeClass", + value: function removeClass($ele, classNames) { + if (!$ele) { + return; + } + + var classNamesArr = classNames.split(' '); + DomUtils.getElements($ele).forEach(function ($this) { + var _$this$classList2; + + (_$this$classList2 = $this.classList).remove.apply(_$this$classList2, dom_utils_toConsumableArray(classNamesArr)); + }); + } + /** + * @param {HTMLElement | NodeListOf} $ele + * @param {string} classNames + * @param {boolean} [isAdd] + */ + + }, { + key: "toggleClass", + value: function toggleClass($ele, classNames, isAdd) { + if (!$ele) { + return; + } + /** @type {boolean | undefined} */ + + + var isAdding; + + if (isAdd !== undefined) { + isAdding = Boolean(isAdd); + } + + DomUtils.getElements($ele).forEach(function ($this) { + $this.classList.toggle(classNames, isAdding); + }); + } + /** + * @param {HTMLElement} $ele + * @param {string} className + * @returns {boolean} + */ + + }, { + key: "hasClass", + value: function hasClass($ele, className) { + if (!$ele) { + return false; + } + + return $ele.classList.contains(className); + } + /** + * @param {HTMLElement} $ele + * @returns {boolean} + */ + + }, { + key: "hasEllipsis", + value: function hasEllipsis($ele) { + if (!$ele) { + return false; + } + + return $ele.scrollWidth > $ele.offsetWidth; + } + /** + * @param {HTMLElement} $ele + * @param {string} name + * @param {string} [type] + * @returns {any} + */ + + }, { + key: "getData", + value: function getData($ele, name, type) { + if (!$ele) { + return undefined; + } + /** @type {any} */ + + + var value = $ele ? $ele.dataset[name] : ''; + + if (type === 'number') { + value = parseFloat(value) || 0; + } else if (value === 'true') { + value = true; + } else if (value === 'false') { + value = false; + } + + return value; + } + /** + * @param {HTMLElement} $ele + * @param {string} name + * @param {string} value + */ + + }, { + key: "setData", + value: function setData($ele, name, value) { + if (!$ele) { + return; + } // eslint-disable-next-line no-param-reassign + + + $ele.dataset[name] = value; + } + /** + * @param {HTMLElement} $ele + * @param {string} name + * @param {string} value + */ + + }, { + key: "setAttr", + value: function setAttr($ele, name, value) { + if (!$ele) { + return; + } + + $ele.setAttribute(name, value); + } + /** + * @param {HTMLElement} $from + * @param {HTMLElement} $to + * @param {string[]} attrList + * @param {string[]} valueLessProps + */ + + }, { + key: "setAttrFromEle", + value: function setAttrFromEle($from, $to, attrList, valueLessProps) { + /** @type {any} */ + var values = {}; + attrList.forEach(function (attr) { + values[attr] = $from.getAttribute(attr); + }); + attrList.forEach(function (attr) { + var value = values[attr]; + + if (value || valueLessProps.indexOf(attr) !== -1 && value === '') { + $to.setAttribute(attr, value); + } + }); + } + /** + * @param {HTMLElement} $ele + * @param {string} name + * @param {string} value + */ + + }, { + key: "setStyle", + value: function setStyle($ele, name, value) { + if (!$ele) { + return; + } // @ts-ignore + // eslint-disable-next-line no-param-reassign + + + $ele.style[name] = value; + } + /** + * @param {HTMLElement} $ele + * @param {any} props + */ + + }, { + key: "setStyles", + value: function setStyles($ele, props) { + if (!$ele || !props) { + return; + } + + Object.keys(props).forEach(function (name) { + // @ts-ignore + // eslint-disable-next-line no-param-reassign + $ele.style[name] = props[name]; + }); + } + /** + * @param {HTMLElement} $ele + * @param {string} name + * @param {string} value + */ + + }, { + key: "setAria", + value: function setAria($ele, name, value) { + var attrName = name; + + if (attrName !== 'role') { + attrName = "aria-".concat(attrName); + } + + $ele.setAttribute(attrName, value); + } + /** + * @param {any} $ele + * @returns {any[]} + */ + + }, { + key: "getElements", + value: function getElements($ele) { + if (!$ele) { + return []; + } + + return $ele.forEach === undefined ? [$ele] : $ele; + } + /** + * @param {HTMLElement} $ele + * @param {string} events + * @param {Function} callback + */ + + }, { + key: "addEvent", + value: function addEvent($ele, events, callback) { + if (!$ele) { + return; + } + + var eventsArray = Utils.removeArrayEmpty(events.split(' ')); + eventsArray.forEach(function (event) { + var $eleArray = DomUtils.getElements($ele); + $eleArray.forEach(function ($this) { + $this.addEventListener(event, callback); + }); + }); + } + /** + * @param {HTMLElement} $ele + * @param {string} eventName + * @param {boolean} [bubbles] + */ + + }, { + key: "dispatchEvent", + value: function dispatchEvent($ele, eventName) { + var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (!$ele) { + return; + } + + var $eleArray = DomUtils.getElements($ele); + /** using setTimeout to trigger asynchronous event */ + + setTimeout(function () { + $eleArray.forEach(function ($this) { + $this.dispatchEvent(new CustomEvent(eventName, { + bubbles: bubbles + })); + }); + }, 0); + } + /** + * convert object to dom attributes + * @param {any} data + */ + + }, { + key: "getAttributesText", + value: function getAttributesText(data) { + var html = ''; + + if (!data) { + return html; + } + + Object.entries(data).forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + k = _ref2[0], + v = _ref2[1]; + + if (v !== undefined) { + html += " ".concat(k, "=\"").concat(v, "\" "); + } + }); + return html; + } + /** + * convert "maxValue" to "data-max-value" + * @param {string} prop + */ + + }, { + key: "convertPropToDataAttr", + value: function convertPropToDataAttr(prop) { + return prop ? "data-".concat(prop).replace(/([A-Z])/g, '-$1').toLowerCase() : ''; + } + }]); + + return DomUtils; +}(); +;// CONCATENATED MODULE: ./src/virtual-select.js +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = virtual_select_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function virtual_select_slicedToArray(arr, i) { return virtual_select_arrayWithHoles(arr) || virtual_select_iterableToArrayLimit(arr, i) || virtual_select_unsupportedIterableToArray(arr, i) || virtual_select_nonIterableRest(); } + +function virtual_select_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function virtual_select_iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function virtual_select_arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function virtual_select_toConsumableArray(arr) { return virtual_select_arrayWithoutHoles(arr) || virtual_select_iterableToArray(arr) || virtual_select_unsupportedIterableToArray(arr) || virtual_select_nonIterableSpread(); } + +function virtual_select_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function virtual_select_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return virtual_select_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return virtual_select_arrayLikeToArray(o, minLen); } + +function virtual_select_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function virtual_select_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return virtual_select_arrayLikeToArray(arr); } + +function virtual_select_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function virtual_select_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function virtual_select_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function virtual_select_createClass(Constructor, protoProps, staticProps) { if (protoProps) virtual_select_defineProperties(Constructor.prototype, protoProps); if (staticProps) virtual_select_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +/* eslint-disable */ +// @ts-nocheck + +var dropboxCloseButtonFullHeight = 48; +var searchHeight = 40; +var keyDownMethodMapping = { + 13: 'onEnterPress', + 38: 'onUpArrowPress', + 40: 'onDownArrowPress' +}; +var valueLessProps = ['autofocus', 'disabled', 'multiple', 'required']; +var nativeProps = ['autofocus', 'class', 'disabled', 'id', 'multiple', 'name', 'placeholder', 'required']; +var dataProps = ['additionalClasses', 'aliasKey', 'allOptionsSelectedText', 'allowNewOption', 'alwaysShowSelectedOptionsCount', 'ariaLabelledby', 'autoSelectFirstOption', 'clearButtonText', 'descriptionKey', 'disableAllOptionsSelectedText', 'disableOptionGroupCheckbox', 'disableSelectAll', 'disableValidation', 'dropboxWidth', 'dropboxWrapper', 'emptyValue', 'enableSecureText', 'hasOptionDescription', 'hideClearButton', 'hideValueTooltipOnSelectAll', 'keepAlwaysOpen', 'labelKey', 'markSearchResults', 'maxValues', 'maxWidth', 'moreText', 'noOfDisplayValues', 'noOptionsText', 'noSearchResultsText', 'optionHeight', 'optionSelectedText', 'optionsCount', 'optionsSelectedText', 'popupDropboxBreakpoint', 'popupPosition', 'position', 'search', 'searchGroup', 'searchPlaceholderText', 'selectAllOnlyVisible', 'selectAllText', 'setValueAsArray', 'showDropboxAsPopup', 'showOptionsOnlyOnSearch', 'showSelectedOptionsFirst', 'showValueAsTags', 'silentInitialValueSet', 'textDirection', 'tooltipAlignment', 'tooltipFontSize', 'tooltipMaxWidth', 'useGroupValue', 'valueKey', 'zIndex']; +/** Class representing VirtualSelect */ + +var VirtualSelect = /*#__PURE__*/function () { + /** + * @param {virtualSelectOptions} options + */ + function VirtualSelect(options) { + virtual_select_classCallCheck(this, VirtualSelect); + + try { + this.createSecureTextElements(); + this.setProps(options); + this.setDisabledOptions(options.disabledOptions); + this.setOptions(options.options); + this.render(); + } catch (e) { + // eslint-disable-next-line no-console + console.warn("Couldn't initiate Virtual Select"); // eslint-disable-next-line no-console + + console.error(e); + } + } + /** render methods - start */ + + + virtual_select_createClass(VirtualSelect, [{ + key: "render", + value: function render() { + if (!this.$ele) { + return; + } + + var uniqueId = this.uniqueId; + var wrapperClasses = 'vscomp-wrapper'; + var valueTooltip = this.getTooltipAttrText(this.placeholder, true, true); + var clearButtonTooltip = this.getTooltipAttrText(this.clearButtonText); + var ariaLabelledbyText = this.ariaLabelledby ? "aria-labelledby=\"".concat(this.ariaLabelledby, "\"") : ''; + var isExpanded = false; + + if (this.additionalClasses) { + wrapperClasses += " ".concat(this.additionalClasses); + } + + if (this.multiple) { + wrapperClasses += ' multiple'; + + if (!this.disableSelectAll) { + wrapperClasses += ' has-select-all'; + } + } + + if (!this.hideClearButton) { + wrapperClasses += ' has-clear-button'; + } + + if (this.keepAlwaysOpen) { + wrapperClasses += ' keep-always-open'; + isExpanded = true; + } else { + wrapperClasses += ' closed'; + } + + if (this.showAsPopup) { + wrapperClasses += ' show-as-popup'; + } + + if (this.hasSearch) { + wrapperClasses += ' has-search-input'; + } + + if (this.showValueAsTags) { + wrapperClasses += ' show-value-as-tags'; + } + + if (this.textDirection) { + wrapperClasses += " text-direction-".concat(this.textDirection); + } + + if (this.popupPosition) { + wrapperClasses += " popup-position-".concat(this.popupPosition.toLowerCase()); + } + + var html = "
\n \n\n
\n
\n ").concat(this.placeholder, "\n
\n\n
\n\n
\n \n
\n
\n\n ").concat(this.renderDropbox({ + wrapperClasses: wrapperClasses + }), "\n
"); + this.$ele.innerHTML = html; + this.$body = document.querySelector('body'); + this.$wrapper = this.$ele.querySelector('.vscomp-wrapper'); + + if (this.hasDropboxWrapper) { + this.$allWrappers = [this.$wrapper, this.$dropboxWrapper]; + this.$dropboxContainer = this.$dropboxWrapper.querySelector('.vscomp-dropbox-container'); + DomUtils.addClass(this.$dropboxContainer, 'pop-comp-wrapper'); + } else { + this.$allWrappers = [this.$wrapper]; + this.$dropboxContainer = this.$wrapper.querySelector('.vscomp-dropbox-container'); + } + + this.$toggleButton = this.$ele.querySelector('.vscomp-toggle-button'); + this.$clearButton = this.$ele.querySelector('.vscomp-clear-button'); + this.$valueText = this.$ele.querySelector('.vscomp-value'); + this.$hiddenInput = this.$ele.querySelector('.vscomp-hidden-input'); + this.$dropbox = this.$dropboxContainer.querySelector('.vscomp-dropbox'); + this.$dropboxCloseButton = this.$dropboxContainer.querySelector('.vscomp-dropbox-close-button'); + this.$search = this.$dropboxContainer.querySelector('.vscomp-search-wrapper'); + this.$optionsContainer = this.$dropboxContainer.querySelector('.vscomp-options-container'); + this.$optionsList = this.$dropboxContainer.querySelector('.vscomp-options-list'); + this.$options = this.$dropboxContainer.querySelector('.vscomp-options'); + this.$noOptions = this.$dropboxContainer.querySelector('.vscomp-no-options'); + this.$noSearchResults = this.$dropboxContainer.querySelector('.vscomp-no-search-results'); + this.afterRenderWrapper(); + } + }, { + key: "renderDropbox", + value: function renderDropbox(_ref) { + var wrapperClasses = _ref.wrapperClasses; + var $wrapper = this.dropboxWrapper !== 'self' ? document.querySelector(this.dropboxWrapper) : null; + var html = "
\n
\n
\n\n
\n
\n\n
\n
\n
\n
\n\n
\n
").concat(this.noOptionsText, "
\n
").concat(this.noSearchResultsText, "
\n\n \n
\n
"); + + if ($wrapper) { + var $dropboxWrapper = document.createElement('div'); + this.$dropboxWrapper = $dropboxWrapper; + this.hasDropboxWrapper = true; + $dropboxWrapper.innerHTML = html; + $wrapper.appendChild($dropboxWrapper); + DomUtils.addClass($dropboxWrapper, "vscomp-dropbox-wrapper ".concat(wrapperClasses)); + return ''; + } + + this.hasDropboxWrapper = false; + return html; + } + }, { + key: "renderOptions", + value: function renderOptions() { + var _this = this; + + var html = ''; + var visibleOptions = this.getVisibleOptions(); + var checkboxHtml = ''; + var newOptionIconHtml = ''; + var markSearchResults = !!(this.markSearchResults && this.searchValue); + var searchRegex; + var labelRenderer = this.labelRenderer, + disableOptionGroupCheckbox = this.disableOptionGroupCheckbox, + uniqueId = this.uniqueId, + searchGroup = this.searchGroup; + var hasLabelRenderer = typeof labelRenderer === 'function'; + var convertToBoolean = Utils.convertToBoolean; + + if (markSearchResults) { + searchRegex = new RegExp("(".concat(this.searchValue, ")"), 'gi'); + } + + if (this.multiple) { + checkboxHtml = ''; + } + + if (this.allowNewOption) { + var newOptionTooltip = this.getTooltipAttrText('New Option'); + newOptionIconHtml = ""); + } + + visibleOptions.forEach(function (d) { + var index = d.index; + var optionLabel; + var optionClasses = 'vscomp-option'; + + var optionTooltip = _this.getTooltipAttrText('', true, true); + + var leftSection = checkboxHtml; + var rightSection = ''; + var description = ''; + var groupIndexText = ''; + var isSelected = convertToBoolean(d.isSelected); + var ariaDisabledText = ''; + + if (d.isFocused) { + optionClasses += ' focused'; + } + + if (d.isDisabled) { + optionClasses += ' disabled'; + ariaDisabledText = 'aria-disabled="true"'; + } + + if (d.isGroupTitle) { + optionClasses += ' group-title'; + + if (disableOptionGroupCheckbox) { + leftSection = ''; + } + } + + if (isSelected) { + optionClasses += ' selected'; + } + + if (d.isGroupOption) { + optionClasses += ' group-option'; + groupIndexText = "data-group-index=\"".concat(d.groupIndex, "\""); + } + + if (hasLabelRenderer) { + optionLabel = labelRenderer(d); + } else { + optionLabel = d.label; + } + + if (d.description) { + description = "
").concat(d.description, "
"); + } + + if (d.isCurrentNew) { + optionClasses += ' current-new'; + rightSection += newOptionIconHtml; + } else if (markSearchResults && (!d.isGroupTitle || searchGroup)) { + optionLabel = optionLabel.replace(searchRegex, '$1'); + } + + html += "
\n ").concat(leftSection, "\n \n ").concat(optionLabel, "\n \n ").concat(description, "\n ").concat(rightSection, "\n
"); + }); + this.$options.innerHTML = html; + this.$visibleOptions = this.$options.querySelectorAll('.vscomp-option'); + this.afterRenderOptions(); + } + }, { + key: "renderSearch", + value: function renderSearch() { + if (!this.hasSearchContainer) { + return; + } + + var checkboxHtml = ''; + var searchInput = ''; + + if (this.multiple && !this.disableSelectAll) { + checkboxHtml = "\n \n ".concat(this.selectAllText, "\n "); + } + + if (this.hasSearch) { + searchInput = "\n ×"); + } + + var html = "
\n ".concat(checkboxHtml, "\n ").concat(searchInput, "\n
"); + this.$search.innerHTML = html; + this.$searchInput = this.$dropboxContainer.querySelector('.vscomp-search-input'); + this.$searchClear = this.$dropboxContainer.querySelector('.vscomp-search-clear'); + this.$toggleAllButton = this.$dropboxContainer.querySelector('.vscomp-toggle-all-button'); + this.$toggleAllCheckbox = this.$dropboxContainer.querySelector('.vscomp-toggle-all-checkbox'); + this.addEvent(this.$searchInput, 'keyup change', 'onSearch'); + this.addEvent(this.$searchClear, 'click', 'onSearchClear'); + this.addEvent(this.$toggleAllButton, 'click', 'onToggleAllOptions'); + } + /** render methods - end */ + + /** dom event methods - start */ + + }, { + key: "addEvents", + value: function addEvents() { + this.addEvent(document, 'click', 'onDocumentClick'); + this.addEvent(this.$allWrappers, 'keydown', 'onKeyDown'); + this.addEvent(this.$toggleButton, 'click', 'onToggleButtonClick'); + this.addEvent(this.$clearButton, 'click', 'onClearButtonClick'); + this.addEvent(this.$dropboxContainer, 'click', 'onDropboxContainerClick'); + this.addEvent(this.$dropboxCloseButton, 'click', 'onDropboxCloseButtonClick'); + this.addEvent(this.$optionsContainer, 'scroll', 'onOptionsScroll'); + this.addEvent(this.$options, 'click', 'onOptionsClick'); + this.addEvent(this.$options, 'mouseover', 'onOptionsMouseOver'); + this.addEvent(this.$options, 'touchmove', 'onOptionsTouchMove'); + this.addMutationObserver(); + } + }, { + key: "addEvent", + value: function addEvent($ele, events, method) { + var _this2 = this; + + if (!$ele) { + return; + } + + var eventsArray = Utils.removeArrayEmpty(events.split(' ')); + eventsArray.forEach(function (event) { + var eventsKey = "".concat(method, "-").concat(event); + var callback = _this2.events[eventsKey]; + + if (!callback) { + callback = _this2[method].bind(_this2); + _this2.events[eventsKey] = callback; + } + + DomUtils.addEvent($ele, event, callback); + }); + } + }, { + key: "onDocumentClick", + value: function onDocumentClick(e) { + var $eleToKeepOpen = e.target.closest('.vscomp-wrapper'); + + if ($eleToKeepOpen !== this.$wrapper && $eleToKeepOpen !== this.$dropboxWrapper && this.isOpened()) { + this.closeDropbox(); + } + } + }, { + key: "onKeyDown", + value: function onKeyDown(e) { + var key = e.which || e.keyCode; + var method = keyDownMethodMapping[key]; + + if (method) { + this[method](e); + } + } + }, { + key: "onEnterPress", + value: function onEnterPress(e) { + e.preventDefault(); + + if (this.isOpened()) { + this.selectFocusedOption(); + } else { + this.openDropbox(); + } + } + }, { + key: "onDownArrowPress", + value: function onDownArrowPress(e) { + e.preventDefault(); + + if (this.isOpened()) { + this.focusOption({ + direction: 'next' + }); + } else { + this.openDropbox(); + } + } + }, { + key: "onUpArrowPress", + value: function onUpArrowPress(e) { + e.preventDefault(); + + if (this.isOpened()) { + this.focusOption({ + direction: 'previous' + }); + } else { + this.openDropbox(); + } + } + }, { + key: "onToggleButtonClick", + value: function onToggleButtonClick(e) { + var $target = e.target; + + if ($target.closest('.vscomp-value-tag-clear-button')) { + this.removeValue($target.closest('.vscomp-value-tag')); + } else if (!$target.closest('.toggle-button-child')) { + this.toggleDropbox(); + } + } + }, { + key: "onClearButtonClick", + value: function onClearButtonClick() { + this.reset(); + } + }, { + key: "onOptionsScroll", + value: function onOptionsScroll() { + this.setVisibleOptions(); + } + }, { + key: "onOptionsClick", + value: function onOptionsClick(e) { + var $option = e.target.closest('.vscomp-option'); + + if ($option && !DomUtils.hasClass($option, 'disabled')) { + if (DomUtils.hasClass($option, 'group-title')) { + this.onGroupTitleClick($option); + } else { + this.selectOption($option, { + event: e + }); + } + } + } + }, { + key: "onGroupTitleClick", + value: function onGroupTitleClick($ele) { + if (!$ele || !this.multiple || this.disableOptionGroupCheckbox) { + return; + } + + var isAdding = !DomUtils.hasClass($ele, 'selected'); + this.toggleGroupTitleCheckbox($ele, isAdding); + this.toggleGroupOptions($ele, isAdding); + } + }, { + key: "onDropboxContainerClick", + value: function onDropboxContainerClick(e) { + if (!e.target.closest('.vscomp-dropbox')) { + this.closeDropbox(); + } + } + }, { + key: "onDropboxCloseButtonClick", + value: function onDropboxCloseButtonClick() { + this.closeDropbox(); + } + }, { + key: "onOptionsMouseOver", + value: function onOptionsMouseOver(e) { + var $ele = e.target.closest('.vscomp-option'); + + if ($ele && this.isOpened()) { + if (DomUtils.hasClass($ele, 'disabled') || DomUtils.hasClass($ele, 'group-title')) { + this.removeOptionFocus(); + } else { + this.focusOption({ + $option: $ele + }); + } + } + } + }, { + key: "onOptionsTouchMove", + value: function onOptionsTouchMove() { + this.removeOptionFocus(); + } + }, { + key: "onSearch", + value: function onSearch(e) { + e.stopPropagation(); + this.setSearchValue(e.target.value, true); + } + }, { + key: "onSearchClear", + value: function onSearchClear() { + this.setSearchValue(''); + this.focusSearchInput(); + } + }, { + key: "onToggleAllOptions", + value: function onToggleAllOptions() { + this.toggleAllOptions(); + } + }, { + key: "onResize", + value: function onResize() { + this.setOptionsContainerHeight(true); + } + /** to remove dropboxWrapper on removing vscomp-ele when it is rendered outside of vscomp-ele */ + + }, { + key: "addMutationObserver", + value: function addMutationObserver() { + var _this3 = this; + + if (!this.hasDropboxWrapper) { + return; + } + + var $vscompEle = this.$ele; + this.mutationObserver = new MutationObserver(function (mutations) { + mutations.some(function (mutation) { + var $removedNodes = virtual_select_toConsumableArray(mutation.removedNodes); + + var isMatching = $removedNodes.some(function ($ele) { + return !!($ele === $vscompEle || $ele.contains($vscompEle)); + }); + + if (isMatching) { + _this3.destroy(); + } + + return isMatching; + }); + }); + this.mutationObserver.observe(document.querySelector('body'), { + childList: true, + subtree: true + }); + } + /** dom event methods - end */ + + /** before event methods - start */ + + }, { + key: "beforeValueSet", + value: function beforeValueSet(isReset) { + this.toggleAllOptionsClass(isReset ? false : undefined); + } + }, { + key: "beforeSelectNewValue", + value: function beforeSelectNewValue() { + var _this4 = this; + + var newOption = this.getNewOption(); + var newIndex = newOption.index; + this.newValues.push(newOption.value); + this.setOptionProp(newIndex, 'isCurrentNew', false); + this.setOptionProp(newIndex, 'isNew', true); + /** using setTimeout to fix the issue of dropbox getting closed on select */ + + setTimeout(function () { + _this4.setSearchValue(''); + + _this4.focusSearchInput(); + }, 0); + } + /** before event methods - end */ + + /** after event methods - start */ + + }, { + key: "afterRenderWrapper", + value: function afterRenderWrapper() { + DomUtils.addClass(this.$ele, 'vscomp-ele'); + this.renderSearch(); + this.setEleStyles(); + this.setDropboxStyles(); + this.setOptionsHeight(); + this.setVisibleOptions(); + this.setOptionsContainerHeight(); + this.addEvents(); + this.setEleProps(); + + if (!this.keepAlwaysOpen && !this.showAsPopup) { + this.initDropboxPopover(); + } + + if (this.initialSelectedValue) { + this.setValueMethod(this.initialSelectedValue, this.silentInitialValueSet); + } else if (this.autoSelectFirstOption && this.visibleOptions.length) { + this.setValueMethod(this.visibleOptions[0].value, this.silentInitialValueSet); + } + + if (this.showOptionsOnlyOnSearch) { + this.setSearchValue('', false, true); + } + + if (this.initialDisabled) { + this.disable(); + } + + if (this.autofocus) { + this.focus(); + } + } + }, { + key: "afterRenderOptions", + value: function afterRenderOptions() { + var visibleOptions = this.getVisibleOptions(); + var hasNoOptions = !this.options.length && !this.hasServerSearch; + var hasNoSearchResults = !hasNoOptions && !visibleOptions.length; + + if (!this.allowNewOption || this.hasServerSearch || this.showOptionsOnlyOnSearch) { + DomUtils.toggleClass(this.$allWrappers, 'has-no-search-results', hasNoSearchResults); + } + + DomUtils.toggleClass(this.$allWrappers, 'has-no-options', hasNoOptions); + this.setOptionAttr(); + this.setOptionsPosition(); + this.setOptionsTooltip(); + } + }, { + key: "afterSetOptionsContainerHeight", + value: function afterSetOptionsContainerHeight(reset) { + if (reset) { + if (this.showAsPopup) { + this.setVisibleOptions(); + } + } + } + }, { + key: "afterSetSearchValue", + value: function afterSetSearchValue() { + if (this.hasServerSearch) { + this.serverSearch(); + } else { + this.setVisibleOptionsCount(); + } + + if (this.selectAllOnlyVisible) { + this.toggleAllOptionsClass(); + } + + this.focusOption({ + focusFirst: true + }); + } + }, { + key: "afterSetVisibleOptionsCount", + value: function afterSetVisibleOptionsCount() { + this.scrollToTop(); + this.setOptionsHeight(); + this.setVisibleOptions(); + this.updatePosition(); + } + }, { + key: "afterValueSet", + value: function afterValueSet() { + this.scrollToTop(); + this.setSearchValue(''); + this.renderOptions(); + } + }, { + key: "afterSetOptions", + value: function afterSetOptions(keepValue) { + if (keepValue) { + this.setSelectedProp(); + } + + this.setOptionsHeight(); + this.setVisibleOptions(); + + if (this.showOptionsOnlyOnSearch) { + this.setSearchValue('', false, true); + } + + if (!keepValue) { + this.reset(); + } + } + /** after event methods - end */ + + /** set methods - start */ + + /** + * @param {virtualSelectOptions} params + */ + + }, { + key: "setProps", + value: function setProps(params) { + var options = this.setDefaultProps(params); + this.setPropsFromElementAttr(options); + var convertToBoolean = Utils.convertToBoolean; + this.$ele = options.ele; + this.dropboxWrapper = options.dropboxWrapper; + this.valueKey = options.valueKey; + this.labelKey = options.labelKey; + this.descriptionKey = options.descriptionKey; + this.aliasKey = options.aliasKey; + this.optionHeightText = options.optionHeight; + this.optionHeight = parseFloat(this.optionHeightText); + this.multiple = convertToBoolean(options.multiple); + this.hasSearch = convertToBoolean(options.search); + this.searchGroup = convertToBoolean(options.searchGroup); + this.hideClearButton = convertToBoolean(options.hideClearButton); + this.autoSelectFirstOption = convertToBoolean(options.autoSelectFirstOption); + this.hasOptionDescription = convertToBoolean(options.hasOptionDescription); + this.silentInitialValueSet = convertToBoolean(options.silentInitialValueSet); + this.allowNewOption = convertToBoolean(options.allowNewOption); + this.markSearchResults = convertToBoolean(options.markSearchResults); + this.showSelectedOptionsFirst = convertToBoolean(options.showSelectedOptionsFirst); + this.disableSelectAll = convertToBoolean(options.disableSelectAll); + this.keepAlwaysOpen = convertToBoolean(options.keepAlwaysOpen); + this.showDropboxAsPopup = convertToBoolean(options.showDropboxAsPopup); + this.hideValueTooltipOnSelectAll = convertToBoolean(options.hideValueTooltipOnSelectAll); + this.showOptionsOnlyOnSearch = convertToBoolean(options.showOptionsOnlyOnSearch); + this.selectAllOnlyVisible = convertToBoolean(options.selectAllOnlyVisible); + this.alwaysShowSelectedOptionsCount = convertToBoolean(options.alwaysShowSelectedOptionsCount); + this.disableAllOptionsSelectedText = convertToBoolean(options.disableAllOptionsSelectedText); + this.showValueAsTags = convertToBoolean(options.showValueAsTags); + this.disableOptionGroupCheckbox = convertToBoolean(options.disableOptionGroupCheckbox); + this.enableSecureText = convertToBoolean(options.enableSecureText); + this.setValueAsArray = convertToBoolean(options.setValueAsArray); + this.disableValidation = convertToBoolean(options.disableValidation); + this.initialDisabled = convertToBoolean(options.disabled); + this.required = convertToBoolean(options.required); + this.autofocus = convertToBoolean(options.autofocus); + this.useGroupValue = convertToBoolean(options.useGroupValue); + this.noOptionsText = options.noOptionsText; + this.noSearchResultsText = options.noSearchResultsText; + this.selectAllText = options.selectAllText; + this.searchPlaceholderText = options.searchPlaceholderText; + this.optionsSelectedText = options.optionsSelectedText; + this.optionSelectedText = options.optionSelectedText; + this.allOptionsSelectedText = options.allOptionsSelectedText; + this.clearButtonText = options.clearButtonText; + this.moreText = options.moreText; + this.placeholder = options.placeholder; + this.position = options.position; + this.textDirection = options.textDirection; + this.dropboxWidth = options.dropboxWidth; + this.tooltipFontSize = options.tooltipFontSize; + this.tooltipAlignment = options.tooltipAlignment; + this.tooltipMaxWidth = options.tooltipMaxWidth; + this.noOfDisplayValues = parseInt(options.noOfDisplayValues); + this.zIndex = parseInt(options.zIndex); + this.maxValues = parseInt(options.maxValues); + this.name = this.secureText(options.name); + this.additionalClasses = options.additionalClasses; + this.popupDropboxBreakpoint = options.popupDropboxBreakpoint; + this.popupPosition = options.popupPosition; + this.onServerSearch = options.onServerSearch; + this.labelRenderer = options.labelRenderer; + this.initialSelectedValue = options.selectedValue === 0 ? '0' : options.selectedValue; + this.emptyValue = options.emptyValue; + this.ariaLabelledby = options.ariaLabelledby; + this.maxWidth = options.maxWidth; + /** @type {string[]} */ + + this.selectedValues = []; + /** @type {virtualSelectOption[]} */ + + this.selectedOptions = []; + this.newValues = []; + this.events = {}; + this.tooltipEnterDelay = 200; + this.searchValue = ''; + this.searchValueOriginal = ''; + this.isAllSelected = false; + + if (options.search === undefined && this.multiple || this.allowNewOption || this.showOptionsOnlyOnSearch) { + this.hasSearch = true; + } + + this.hasServerSearch = typeof this.onServerSearch === 'function'; + + if (this.maxValues || this.hasServerSearch || this.showOptionsOnlyOnSearch) { + this.disableSelectAll = true; + this.disableOptionGroupCheckbox = true; + } + + if (this.keepAlwaysOpen) { + this.dropboxWrapper = 'self'; + } + + this.showAsPopup = this.showDropboxAsPopup && !this.keepAlwaysOpen && window.innerWidth <= parseFloat(this.popupDropboxBreakpoint); + this.hasSearchContainer = this.hasSearch || this.multiple && !this.disableSelectAll; + this.optionsCount = this.getOptionsCount(options.optionsCount); + this.halfOptionsCount = Math.ceil(this.optionsCount / 2); + this.optionsHeight = this.getOptionsHeight(); + this.uniqueId = this.getUniqueId(); + } + /** + * @param {virtualSelectOptions} options + */ + + }, { + key: "setDefaultProps", + value: function setDefaultProps(options) { + var defaultOptions = { + dropboxWrapper: 'self', + valueKey: 'value', + labelKey: 'label', + descriptionKey: 'description', + aliasKey: 'alias', + optionsCount: 5, + noOfDisplayValues: 50, + optionHeight: '40px', + noOptionsText: 'No options found', + noSearchResultsText: 'No results found', + selectAllText: 'Select All', + searchPlaceholderText: 'Search...', + clearButtonText: 'Clear', + moreText: 'more...', + optionsSelectedText: 'options selected', + optionSelectedText: 'option selected', + allOptionsSelectedText: 'All', + placeholder: 'Select', + position: 'bottom left', + zIndex: options.keepAlwaysOpen ? 1 : 2, + tooltipFontSize: '14px', + tooltipAlignment: 'center', + tooltipMaxWidth: '300px', + name: '', + additionalClasses: '', + maxValues: 0, + showDropboxAsPopup: true, + popupDropboxBreakpoint: '576px', + popupPosition: 'center', + hideValueTooltipOnSelectAll: true, + emptyValue: '' + }; + + if (options.hasOptionDescription) { + defaultOptions.optionsCount = 4; + defaultOptions.optionHeight = '50px'; + } + + return Object.assign(defaultOptions, options); + } + }, { + key: "setPropsFromElementAttr", + value: function setPropsFromElementAttr(options) { + var $ele = options.ele; + + for (var k in attrPropsMapping) { + var value = $ele.getAttribute(k); + + if (valueLessProps.indexOf(k) !== -1 && (value === '' || value === 'true')) { + value = true; + } + + if (value) { + options[attrPropsMapping[k]] = value; + } + } + } + }, { + key: "setEleProps", + value: function setEleProps() { + var $ele = this.$ele; + $ele.virtualSelect = this; + $ele.value = this.multiple ? [] : ''; + $ele.name = this.name; + $ele.disabled = false; + $ele.required = this.required; + $ele.autofocus = this.autofocus; + $ele.multiple = this.multiple; + $ele.form = $ele.closest('form'); + $ele.reset = VirtualSelect.reset; + $ele.setValue = VirtualSelect.setValueMethod; + $ele.setOptions = VirtualSelect.setOptionsMethod; + $ele.setDisabledOptions = VirtualSelect.setDisabledOptionsMethod; + $ele.toggleSelectAll = VirtualSelect.toggleSelectAll; + $ele.isAllSelected = VirtualSelect.isAllSelected; + $ele.addOption = VirtualSelect.addOptionMethod; + $ele.getNewValue = VirtualSelect.getNewValueMethod; + $ele.getDisplayValue = VirtualSelect.getDisplayValueMethod; + $ele.getSelectedOptions = VirtualSelect.getSelectedOptionsMethod; + $ele.open = VirtualSelect.openMethod; + $ele.close = VirtualSelect.closeMethod; + $ele.focus = VirtualSelect.focusMethod; + $ele.enable = VirtualSelect.enableMethod; + $ele.disable = VirtualSelect.disableMethod; + $ele.destroy = VirtualSelect.destroyMethod; + $ele.validate = VirtualSelect.validateMethod; + $ele.toggleRequired = VirtualSelect.toggleRequiredMethod; + + if (this.hasDropboxWrapper) { + this.$dropboxWrapper.virtualSelect = this; + } + } + }, { + key: "setValueMethod", + value: function setValueMethod(newValue, silentChange) { + var valuesMapping = {}; + var valuesOrder = {}; + var validValues = []; + var isMultiSelect = this.multiple; + var value = newValue; + + if (value) { + if (!Array.isArray(value)) { + value = [value]; + } + + if (isMultiSelect) { + var maxValues = this.maxValues; + + if (maxValues && value.length > maxValues) { + value.splice(maxValues); + } + } else { + if (value.length > 1) { + value = [value[0]]; + } + } + + value = value.map(function (v) { + return v || v == 0 ? v.toString() : ''; + }); + + if (this.useGroupValue) { + value = this.setGroupOptionsValue(value); + } + + value.forEach(function (d, i) { + valuesMapping[d] = true; + valuesOrder[d] = i; + }); + + if (this.allowNewOption && value) { + this.setNewOptionsFromValue(value); + } + } + + this.options.forEach(function (d) { + if (valuesMapping[d.value] === true && !d.isDisabled && !d.isGroupTitle) { + // eslint-disable-next-line no-param-reassign + d.isSelected = true; + validValues.push(d.value); + } else { + // eslint-disable-next-line no-param-reassign + d.isSelected = false; + } + }); + + if (isMultiSelect) { + if (this.hasOptionGroup) { + this.setGroupsSelectedProp(); + } + /** sorting validValues in the given values order */ + + + validValues.sort(function (a, b) { + return valuesOrder[a] - valuesOrder[b]; + }); + } else { + /** taking first value for single select */ + var _validValues = validValues; + + var _validValues2 = virtual_select_slicedToArray(_validValues, 1); + + validValues = _validValues2[0]; + } + + this.beforeValueSet(); + this.setValue(validValues, { + disableEvent: silentChange + }); + this.afterValueSet(); + } + }, { + key: "setGroupOptionsValue", + value: function setGroupOptionsValue(preparedValues) { + var selectedValues = []; + var selectedGroups = {}; + var valuesMapping = {}; + preparedValues.forEach(function (d) { + valuesMapping[d] = true; + }); + this.options.forEach(function (d) { + var value = d.value; + var isSelected = valuesMapping[value] === true; + + if (d.isGroupTitle) { + if (isSelected) { + selectedGroups[d.index] = true; + } + } else if (isSelected || selectedGroups[d.groupIndex]) { + selectedValues.push(value); + } + }); + return selectedValues; + } + }, { + key: "setGroupsSelectedProp", + value: function setGroupsSelectedProp() { + var isAllGroupOptionsSelected = this.isAllGroupOptionsSelected.bind(this); + this.options.forEach(function (d) { + if (d.isGroupTitle) { + // eslint-disable-next-line no-param-reassign + d.isSelected = isAllGroupOptionsSelected(d.index); + } + }); + } + }, { + key: "setOptionsMethod", + value: function setOptionsMethod(options, keepValue) { + this.setOptions(options); + this.afterSetOptions(keepValue); + } + }, { + key: "setDisabledOptionsMethod", + value: function setDisabledOptionsMethod(disabledOptions) { + var keepValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + this.setDisabledOptions(disabledOptions, true); + + if (!keepValue) { + this.setValueMethod(null); + this.toggleAllOptionsClass(); + } + + this.setVisibleOptions(); + } + }, { + key: "setDisabledOptions", + value: function setDisabledOptions(disabledOptions) { + var setOptionsProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var disabledOptionsArr = []; + + if (!disabledOptions) { + if (setOptionsProp) { + this.options.forEach(function (d) { + // eslint-disable-next-line no-param-reassign + d.isDisabled = false; + return d; + }); + } + } else if (disabledOptions === true) { + if (setOptionsProp) { + this.options.forEach(function (d) { + // eslint-disable-next-line no-param-reassign + d.isDisabled = true; + disabledOptionsArr.push(d.value); + return d; + }); + } + } else { + disabledOptionsArr = disabledOptions.map(function (d) { + return d.toString(); + }); + var disabledOptionsMapping = {}; + disabledOptionsArr.forEach(function (d) { + disabledOptionsMapping[d] = true; + }); + + if (setOptionsProp) { + this.options.forEach(function (d) { + // eslint-disable-next-line no-param-reassign + d.isDisabled = disabledOptionsMapping[d.value] === true; + return d; + }); + } + } + + this.disabledOptions = disabledOptionsArr; + } + }, { + key: "setOptions", + value: function setOptions(options) { + if (!options) { + options = []; + } + + var preparedOptions = []; + var hasDisabledOptions = this.disabledOptions.length; + var valueKey = this.valueKey, + labelKey = this.labelKey, + descriptionKey = this.descriptionKey, + aliasKey = this.aliasKey, + hasOptionDescription = this.hasOptionDescription; + var getString = Utils.getString, + convertToBoolean = Utils.convertToBoolean; + var secureText = this.secureText.bind(this); + var getAlias = this.getAlias.bind(this); + var index = 0; + var hasOptionGroup = false; + var disabledOptionsMapping = {}; + var hasEmptyValueOption = false; + this.disabledOptions.forEach(function (d) { + disabledOptionsMapping[d] = true; + }); + + var prepareOption = function prepareOption(d) { + var value = secureText(getString(d[valueKey])); + var childOptions = d.options; + var isGroupTitle = childOptions ? true : false; + var option = { + index: index, + value: value, + label: secureText(getString(d[labelKey])), + alias: getAlias(d[aliasKey]), + isVisible: convertToBoolean(d.isVisible, true), + isNew: d.isNew || false, + isGroupTitle: isGroupTitle + }; + + if (!hasEmptyValueOption && value === '') { + hasEmptyValueOption = true; + } + + if (hasDisabledOptions) { + option.isDisabled = disabledOptionsMapping[value] === true; + } + + if (d.isGroupOption) { + option.isGroupOption = true; + option.groupIndex = d.groupIndex; + } + + if (hasOptionDescription) { + option.description = secureText(getString(d[descriptionKey])); + } + + if (d.customData) { + option.customData = d.customData; + } + + preparedOptions.push(option); + index += 1; + + if (isGroupTitle) { + var groupIndex = option.index; + hasOptionGroup = true; + childOptions.forEach(function (d) { + // eslint-disable-next-line no-param-reassign + d.isGroupOption = true; // eslint-disable-next-line no-param-reassign + + d.groupIndex = groupIndex; + prepareOption(d); + }); + } + }; + + options.forEach(prepareOption); + var optionsLength = preparedOptions.length; + var $ele = this.$ele; + $ele.options = preparedOptions; + $ele.length = optionsLength; + this.options = preparedOptions; + this.visibleOptionsCount = optionsLength; + this.lastOptionIndex = optionsLength - 1; + this.newValues = []; + this.hasOptionGroup = hasOptionGroup; + this.hasEmptyValueOption = hasEmptyValueOption; + this.setSortedOptions(); + } + }, { + key: "setServerOptions", + value: function setServerOptions() { + var _this5 = this; + + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + this.setOptionsMethod(options, true); + var selectedOptions = this.selectedOptions; + var newOptions = this.options; + var optionsUpdated = false; + /** merging already seleted options details with new options */ + + if (selectedOptions.length) { + var newOptionsValueMapping = {}; + optionsUpdated = true; + newOptions.forEach(function (d) { + newOptionsValueMapping[d.value] = true; + }); + selectedOptions.forEach(function (d) { + if (newOptionsValueMapping[d.value] === false) { + // eslint-disable-next-line no-param-reassign + d.isVisible = false; + newOptions.push(d); + } + }); + this.setOptionsMethod(newOptions, true); + } + /** merging new search option */ + + + if (this.allowNewOption && this.searchValue) { + var hasExactOption = newOptions.some(function (d) { + return d.label.toLowerCase() === _this5.searchValue; + }); + + if (!hasExactOption) { + optionsUpdated = true; + this.setNewOption(); + } + } + + if (optionsUpdated) { + this.setVisibleOptionsCount(); + + if (this.multiple) { + this.toggleAllOptionsClass(); + } + + this.setValueText(); + } else { + this.updatePosition(); + } + + DomUtils.removeClass(this.$allWrappers, 'server-searching'); + } + }, { + key: "setSelectedOptions", + value: function setSelectedOptions() { + this.selectedOptions = this.options.filter(function (d) { + return d.isSelected; + }); + } + }, { + key: "setSortedOptions", + value: function setSortedOptions() { + var sortedOptions = virtual_select_toConsumableArray(this.options); + + if (this.showSelectedOptionsFirst && this.selectedValues.length) { + if (this.hasOptionGroup) { + sortedOptions = this.sortOptionsGroup(sortedOptions); + } else { + sortedOptions = this.sortOptions(sortedOptions); + } + } + + this.sortedOptions = sortedOptions; + } + }, { + key: "setVisibleOptions", + value: function setVisibleOptions() { + var visibleOptions = virtual_select_toConsumableArray(this.sortedOptions); + + var maxOptionsToShow = this.optionsCount * 2; + var startIndex = this.getVisibleStartIndex(); + var newOption = this.getNewOption(); + var endIndex = startIndex + maxOptionsToShow - 1; + var i = 0; + + if (newOption) { + newOption.visibleIndex = i; + i++; + } + + visibleOptions = visibleOptions.filter(function (d) { + var inView = false; + + if (d.isVisible && !d.isCurrentNew) { + inView = i >= startIndex && i <= endIndex; // eslint-disable-next-line no-param-reassign + + d.visibleIndex = i; + i += 1; + } + + return inView; + }); + + if (newOption) { + visibleOptions = [newOption].concat(virtual_select_toConsumableArray(visibleOptions)); + } + + this.visibleOptions = visibleOptions; + this.renderOptions(); + } + }, { + key: "setOptionsPosition", + value: function setOptionsPosition(startIndex) { + if (startIndex === undefined) { + startIndex = this.getVisibleStartIndex(); + } + + var top = startIndex * this.optionHeight; + this.$options.style.transform = "translate3d(0, ".concat(top, "px, 0)"); + DomUtils.setData(this.$options, 'top', top); + } + }, { + key: "setOptionsTooltip", + value: function setOptionsTooltip() { + var _this6 = this; + + var visibleOptions = this.getVisibleOptions(); + var hasOptionDescription = this.hasOptionDescription; + visibleOptions.forEach(function (d) { + var $optionEle = _this6.$dropboxContainer.querySelector(".vscomp-option[data-index=\"".concat(d.index, "\"]")); + + DomUtils.setData($optionEle.querySelector('.vscomp-option-text'), 'tooltip', d.label); + + if (hasOptionDescription) { + DomUtils.setData($optionEle.querySelector('.vscomp-option-description'), 'tooltip', d.description); + } + }); + } + }, { + key: "setValue", + value: function setValue(value) { + var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref2$disableEvent = _ref2.disableEvent, + disableEvent = _ref2$disableEvent === void 0 ? false : _ref2$disableEvent, + _ref2$disableValidati = _ref2.disableValidation, + disableValidation = _ref2$disableValidati === void 0 ? false : _ref2$disableValidati; + + var isValidValue = this.hasEmptyValueOption && value === '' || value; + + if (!isValidValue) { + this.selectedValues = []; + } else if (Array.isArray(value)) { + this.selectedValues = virtual_select_toConsumableArray(value); + } else { + this.selectedValues = [value]; + } + + var newValue = this.getValue(); + this.$ele.value = newValue; + this.$hiddenInput.value = this.getInputValue(newValue); + this.isMaxValuesSelected = this.maxValues && this.maxValues <= this.selectedValues.length ? true : false; + this.toggleAllOptionsClass(); + this.setValueText(); + DomUtils.toggleClass(this.$allWrappers, 'has-value', Utils.isNotEmpty(this.selectedValues)); + DomUtils.toggleClass(this.$allWrappers, 'max-value-selected', this.isMaxValuesSelected); + + if (!disableValidation) { + this.validate(); + } + + if (!disableEvent) { + DomUtils.dispatchEvent(this.$ele, 'change', true); + } + } + }, { + key: "setValueText", + value: function setValueText() { + var multiple = this.multiple, + selectedValues = this.selectedValues, + noOfDisplayValues = this.noOfDisplayValues, + showValueAsTags = this.showValueAsTags, + $valueText = this.$valueText; + var valueText = []; + var valueTooltip = []; + var selectedLength = selectedValues.length; + var selectedValuesCount = 0; + var showAllText = this.isAllSelected && !this.hasServerSearch && !this.disableAllOptionsSelectedText && !showValueAsTags; + /** show all values selected text without tooltip text */ + + if (showAllText && this.hideValueTooltipOnSelectAll) { + $valueText.innerHTML = "".concat(this.allOptionsSelectedText, " (").concat(selectedLength, ")"); + } else { + var selectedOptions = this.getSelectedOptions({ + fullDetails: true, + keepSelectionOrder: true + }); + + var _iterator = _createForOfIteratorHelper(selectedOptions), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var d = _step.value; + + if (d.isCurrentNew) { + continue; + } + + if (selectedValuesCount >= noOfDisplayValues) { + break; + } + + var label = d.label; + valueText.push(label); + selectedValuesCount++; + + if (showValueAsTags) { + var valueTagHtml = "\n ").concat(label, "\n \n \n \n "); + valueTooltip.push(valueTagHtml); + } else { + valueTooltip.push(label); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + var moreSelectedOptions = selectedLength - noOfDisplayValues; + + if (moreSelectedOptions > 0) { + valueTooltip.push("+ ".concat(moreSelectedOptions, " ").concat(this.moreText, "")); + } + + var aggregatedValueText = valueText.join(', '); + + if (aggregatedValueText === '') { + $valueText.innerHTML = this.placeholder; + } else { + $valueText.innerHTML = aggregatedValueText; + + if (multiple) { + var maxValues = this.maxValues; + + if (DomUtils.hasEllipsis($valueText) || maxValues || this.alwaysShowSelectedOptionsCount || showValueAsTags) { + var countText = "".concat(selectedLength, ""); + + if (maxValues) { + countText += " / ".concat(maxValues, ""); + } + /** show all values selected text with tooltip text */ + + + if (showAllText) { + $valueText.innerHTML = "".concat(this.allOptionsSelectedText, " (").concat(selectedLength, ")"); + } else if (showValueAsTags) { + $valueText.innerHTML = valueTooltip.join(''); + this.$valueTags = $valueText.querySelectorAll('.vscomp-value-tag'); + this.setValueTagAttr(); + } else { + /** replace comma delimitted list of selections with shorter text indicating selection count */ + var optionsSelectedText = selectedLength === 1 ? this.optionSelectedText : this.optionsSelectedText; + $valueText.innerHTML = "".concat(countText, " ").concat(optionsSelectedText); + } + } else { + /** removing tooltip if full value text is visible */ + valueTooltip = []; + } + } + } + } + + var tooltipText = ''; + + if (selectedLength === 0) { + tooltipText = this.placeholder; + } else if (!showValueAsTags) { + tooltipText = valueTooltip.join(', '); + } + + DomUtils.setData($valueText, 'tooltip', tooltipText); + + if (multiple) { + DomUtils.setData($valueText, 'tooltipEllipsisOnly', selectedLength === 0); + + if (showValueAsTags) { + this.updatePosition(); + } + } + } + }, { + key: "setSearchValue", + value: function setSearchValue(value) { + var skipInputSet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var forceSet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (value === this.searchValueOriginal && !forceSet) { + return; + } + + if (!skipInputSet) { + this.$searchInput.value = value; + } + + var searchValue = value.replace(/\\/g, '').toLowerCase().trim(); + this.searchValue = searchValue; + this.searchValueOriginal = value; + DomUtils.toggleClass(this.$allWrappers, 'has-search-value', value); + this.afterSetSearchValue(); + } + }, { + key: "setVisibleOptionsCount", + value: function setVisibleOptionsCount() { + var visibleOptionsCount = 0; + var hasExactOption = false; + var visibleOptionGroupsMapping; + var searchValue = this.searchValue, + searchGroup = this.searchGroup, + showOptionsOnlyOnSearch = this.showOptionsOnlyOnSearch; + var isOptionVisible = this.isOptionVisible.bind(this); + + if (this.hasOptionGroup) { + visibleOptionGroupsMapping = this.getVisibleOptionGroupsMapping(searchValue); + } + + this.options.forEach(function (d) { + if (d.isCurrentNew) { + return; + } + + var result; + + if (showOptionsOnlyOnSearch && !searchValue) { + // eslint-disable-next-line no-param-reassign + d.isVisible = false; + result = { + isVisible: false, + hasExactOption: false + }; + } else { + result = isOptionVisible({ + data: d, + searchValue: searchValue, + hasExactOption: hasExactOption, + visibleOptionGroupsMapping: visibleOptionGroupsMapping, + searchGroup: searchGroup + }); + } + + if (result.isVisible) { + visibleOptionsCount += 1; + } + + if (!hasExactOption) { + hasExactOption = result.hasExactOption; + } + }); + + if (this.allowNewOption) { + if (searchValue && !hasExactOption) { + this.setNewOption(); + visibleOptionsCount++; + } else { + this.removeNewOption(); + } + } + + this.visibleOptionsCount = visibleOptionsCount; + this.afterSetVisibleOptionsCount(); + } + }, { + key: "setOptionProp", + value: function setOptionProp(index, key, value) { + if (!this.options[index]) { + return; + } + + this.options[index][key] = value; + } + }, { + key: "setOptionsHeight", + value: function setOptionsHeight() { + this.$optionsList.style.height = this.optionHeight * this.visibleOptionsCount + 'px'; + } + }, { + key: "setOptionsContainerHeight", + value: function setOptionsContainerHeight(reset) { + var optionsHeight; + + if (reset) { + if (this.showAsPopup) { + this.optionsCount = this.getOptionsCount(); + this.halfOptionsCount = Math.ceil(this.optionsCount / 2); + optionsHeight = this.getOptionsHeight(); + this.optionsHeight = optionsHeight; + } + } else { + optionsHeight = this.optionsHeight; + + if (this.keepAlwaysOpen) { + DomUtils.setStyle(this.$noOptions, 'height', optionsHeight); + DomUtils.setStyle(this.$noSearchResults, 'height', optionsHeight); + } + } + + DomUtils.setStyle(this.$optionsContainer, 'max-height', optionsHeight); + this.afterSetOptionsContainerHeight(reset); + } + }, { + key: "setNewOption", + value: function setNewOption(newValue) { + var value = newValue || this.searchValueOriginal.trim(); + + if (!value) { + return; + } + + var newOption = this.getNewOption(); + + if (newOption) { + var newIndex = newOption.index; + this.setOptionProp(newIndex, 'value', this.secureText(value)); + this.setOptionProp(newIndex, 'label', this.secureText(value)); + } else { + var data = { + value: value, + label: value + }; + + if (newValue) { + data.isNew = true; + this.newValues.push(value); + } else { + data.isCurrentNew = true; + } + + this.addOption(data); + } + } + }, { + key: "setSelectedProp", + value: function setSelectedProp() { + var valuesMapping = {}; + this.selectedValues.forEach(function (d) { + valuesMapping[d] = true; + }); + this.options.forEach(function (d) { + if (valuesMapping[d.value] === true) { + // eslint-disable-next-line no-param-reassign + d.isSelected = true; + } + }); + } + }, { + key: "setNewOptionsFromValue", + value: function setNewOptionsFromValue(values) { + if (!values) { + return; + } + + var setNewOption = this.setNewOption.bind(this); + var availableValuesMapping = {}; + this.options.forEach(function (d) { + availableValuesMapping[d.value] = true; + }); + values.forEach(function (d) { + if (d && availableValuesMapping[d] !== true) { + setNewOption(d); + } + }); + } + }, { + key: "setDropboxWrapperWidth", + value: function setDropboxWrapperWidth() { + if (this.showAsPopup) { + return; + } + + var width = this.dropboxWidth || "".concat(this.$wrapper.offsetWidth, "px"); + DomUtils.setStyle(this.$dropboxContainer, 'max-width', width); + } + }, { + key: "setEleStyles", + value: function setEleStyles() { + var maxWidth = this.maxWidth; + var styles = {}; + + if (maxWidth) { + styles['max-width'] = maxWidth; + } + + DomUtils.setStyles(this.$ele, styles); + } + }, { + key: "setDropboxStyles", + value: function setDropboxStyles() { + var dropboxWidth = this.dropboxWidth; + var styles = {}; + var containerStyles = { + 'z-index': this.zIndex + }; + + if (dropboxWidth) { + if (this.showAsPopup) { + styles['max-width'] = dropboxWidth; + } else { + containerStyles.width = dropboxWidth; + } + } + + DomUtils.setStyles(this.$dropboxContainer, containerStyles); + DomUtils.setStyles(this.$dropbox, styles); + } + }, { + key: "setOptionAttr", + value: function setOptionAttr() { + var $visibleOptions = this.$visibleOptions; + var options = this.options; + var optionHeight = "".concat(this.optionHeight, "px"); + var setStyle = DomUtils.setStyle, + getData = DomUtils.getData, + setData = DomUtils.setData; + + if ($visibleOptions && $visibleOptions.length) { + $visibleOptions.forEach(function ($option) { + var optionDetails = options[getData($option, 'index')]; + setStyle($option, 'height', optionHeight); + setData($option, 'value', optionDetails.value); + }); + } + } + }, { + key: "setValueTagAttr", + value: function setValueTagAttr() { + var $valueTags = this.$valueTags; + + if (!$valueTags || !$valueTags.length) { + return; + } + + var getData = DomUtils.getData, + setData = DomUtils.setData; + var options = this.options; + $valueTags.forEach(function ($valueTag) { + var index = getData($valueTag, 'index'); + + if (typeof index !== 'undefined') { + var optionDetails = options[index]; + setData($valueTag, 'value', optionDetails.value); + } + }); + } + }, { + key: "setScrollTop", + value: function setScrollTop() { + var selectedValues = this.selectedValues; + + if (this.showSelectedOptionsFirst || selectedValues.length === 0) { + return; + } + + var valuesMapping = {}; + var selectedOptionIndex; + selectedValues.forEach(function (d) { + valuesMapping[d] = true; + }); + this.options.some(function (d) { + if (valuesMapping[d.value]) { + selectedOptionIndex = d.visibleIndex; + return true; + } + }); + + if (selectedOptionIndex) { + this.$optionsContainer.scrollTop = this.optionHeight * selectedOptionIndex; + } + } + /** set methods - end */ + + /** get methods - start */ + + }, { + key: "getVisibleOptions", + value: function getVisibleOptions() { + return this.visibleOptions || []; + } + }, { + key: "getValue", + value: function getValue() { + var value; + + if (this.multiple) { + if (this.useGroupValue) { + value = this.getGroupValue(); + } else { + value = this.selectedValues; + } + } else { + value = this.selectedValues[0] || ''; + } + + return value; + } + }, { + key: "getGroupValue", + value: function getGroupValue() { + var selectedValues = []; + var selectedGroups = {}; + this.options.forEach(function (d) { + if (!d.isSelected) { + return; + } + + var value = d.value; + + if (d.isGroupTitle) { + if (value) { + selectedGroups[d.index] = true; + selectedValues.push(value); + } + } else if (selectedGroups[d.groupIndex] !== true) { + selectedValues.push(value); + } + }); + return selectedValues; + } + }, { + key: "getInputValue", + value: function getInputValue(preparedValue) { + var value = preparedValue; + + if (value && value.length) { + if (this.setValueAsArray && this.multiple) { + value = JSON.stringify(value); + } + } else { + value = this.emptyValue; + } + + return value; + } + }, { + key: "getFirstVisibleOptionIndex", + value: function getFirstVisibleOptionIndex() { + return Math.ceil(this.$optionsContainer.scrollTop / this.optionHeight); + } + }, { + key: "getVisibleStartIndex", + value: function getVisibleStartIndex() { + var firstVisibleOptionIndex = this.getFirstVisibleOptionIndex(); + var startIndex = firstVisibleOptionIndex - this.halfOptionsCount; + + if (startIndex < 0) { + startIndex = 0; + } + + return startIndex; + } + }, { + key: "getTooltipAttrText", + value: function getTooltipAttrText(text) { + var ellipsisOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var allowHtml = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var data = { + 'data-tooltip': text || '', + 'data-tooltip-enter-delay': this.tooltipEnterDelay, + 'data-tooltip-z-index': this.zIndex, + 'data-tooltip-font-size': this.tooltipFontSize, + 'data-tooltip-alignment': this.tooltipAlignment, + 'data-tooltip-max-width': this.tooltipMaxWidth, + 'data-tooltip-ellipsis-only': ellipsisOnly, + 'data-tooltip-allow-html': allowHtml + }; + return DomUtils.getAttributesText(data); + } + }, { + key: "getOptionObj", + value: function getOptionObj(data) { + if (!data) { + return; + } + + var getString = Utils.getString; + var secureText = this.secureText.bind(this); + var newOption = { + index: data.index, + value: secureText(getString(data.value)), + label: secureText(getString(data.label)), + description: secureText(getString(data.description)), + alias: this.getAlias(data.alias), + isCurrentNew: data.isCurrentNew || false, + isNew: data.isNew || false, + isVisible: true + }; + return newOption; + } + }, { + key: "getNewOption", + value: function getNewOption() { + var lastOption = this.options[this.lastOptionIndex]; + + if (!lastOption || !lastOption.isCurrentNew) { + return; + } + + return lastOption; + } + }, { + key: "getOptionIndex", + value: function getOptionIndex(value) { + var index; + this.options.some(function (d) { + if (d.value == value) { + index = d.index; + return true; + } + }); + return index; + } + }, { + key: "getNewValue", + value: function getNewValue() { + var valuesMapping = {}; + this.newValues.forEach(function (d) { + valuesMapping[d] = true; + }); + var result = this.selectedValues.filter(function (d) { + return valuesMapping[d] === true; + }); + return this.multiple ? result : result[0]; + } + }, { + key: "getAlias", + value: function getAlias(alias) { + var result = alias; + + if (result) { + if (Array.isArray(result)) { + result = result.join(','); + } else { + result = result.toString().trim(); + } + + result = result.toLowerCase(); + } + + return result || ''; + } + }, { + key: "getDisplayValue", + value: function getDisplayValue() { + var displayValues = []; + this.options.forEach(function (d) { + if (d.isSelected) { + displayValues.push(d.label); + } + }); + return this.multiple ? displayValues : displayValues[0] || ''; + } + }, { + key: "getSelectedOptions", + value: function getSelectedOptions() { + var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref3$fullDetails = _ref3.fullDetails, + fullDetails = _ref3$fullDetails === void 0 ? false : _ref3$fullDetails, + _ref3$keepSelectionOr = _ref3.keepSelectionOrder, + keepSelectionOrder = _ref3$keepSelectionOr === void 0 ? false : _ref3$keepSelectionOr; + + var valueKey = this.valueKey, + labelKey = this.labelKey, + selectedValues = this.selectedValues; + var selectedOptions = []; + this.options.forEach(function (d) { + if (d.isSelected && !d.isGroupTitle) { + if (fullDetails) { + selectedOptions.push(d); + } else { + var _data; + + var data = (_data = {}, _defineProperty(_data, valueKey, d.value), _defineProperty(_data, labelKey, d.label), _data); + + if (d.isNew) { + data.isNew = true; + } + + if (d.customData) { + data.customData = d.customData; + } + + selectedOptions.push(data); + } + } + }); + + if (keepSelectionOrder) { + var valuesOrder = {}; + selectedValues.forEach(function (d, i) { + valuesOrder[d] = i; + }); + selectedOptions.sort(function (a, b) { + return valuesOrder[a.value] - valuesOrder[b.value]; + }); + } + + return this.multiple || fullDetails ? selectedOptions : selectedOptions[0]; + } + }, { + key: "getVisibleOptionGroupsMapping", + value: function getVisibleOptionGroupsMapping(searchValue) { + var options = this.options; + var result = {}; + var isOptionVisible = this.isOptionVisible.bind(this); + options = this.structureOptionGroup(options); + options.forEach(function (d) { + result[d.index] = d.options.some(function (e) { + return isOptionVisible({ + data: e, + searchValue: searchValue + }).isVisible; + }); + }); + return result; + } + }, { + key: "getOptionsCount", + value: function getOptionsCount(count) { + if (this.showAsPopup) { + var availableHeight = window.innerHeight * 80 / 100 - dropboxCloseButtonFullHeight; + + if (this.hasSearchContainer) { + availableHeight -= searchHeight; + } + + count = Math.floor(availableHeight / this.optionHeight); + } else { + count = parseInt(count); + } + + return count; + } + }, { + key: "getOptionsHeight", + value: function getOptionsHeight() { + return this.optionsCount * this.optionHeight + 'px'; + } + }, { + key: "getSibling", + value: function getSibling($ele, direction) { + var propName = direction === 'next' ? 'nextElementSibling' : 'previousElementSibling'; + + do { + if ($ele) { + $ele = $ele[propName]; + } + } while (DomUtils.hasClass($ele, 'disabled') || DomUtils.hasClass($ele, 'group-title')); + + return $ele; + } + }, { + key: "getUniqueId", + value: function getUniqueId() { + var uniqueId = Utils.getRandomInt(10000); + var isAlreadyUsed = document.querySelector("#vscomp-ele-wrapper-".concat(uniqueId)); + + if (isAlreadyUsed) { + return this.getUniqueId(); + } else { + return uniqueId; + } + } + /** get methods - end */ + + }, { + key: "initDropboxPopover", + value: function initDropboxPopover() { + var data = { + ele: this.$ele, + target: this.$dropboxContainer, + position: this.position, + zIndex: this.zIndex, + margin: 4, + transitionDistance: 30, + hideArrowIcon: true, + disableManualAction: true, + disableUpdatePosition: !this.hasDropboxWrapper, + afterShow: this.afterShowPopper.bind(this), + afterHide: this.afterHidePopper.bind(this) + }; + this.dropboxPopover = new PopoverComponent(data); + } + }, { + key: "openDropbox", + value: function openDropbox(isSilent) { + this.isSilentOpen = isSilent; + + if (isSilent) { + DomUtils.setStyle(this.$dropboxContainer, 'display', 'inline-flex'); + } else { + DomUtils.dispatchEvent(this.$ele, 'beforeOpen'); + DomUtils.setAria(this.$wrapper, 'expanded', true); + } + + this.setDropboxWrapperWidth(); + DomUtils.removeClass(this.$allWrappers, 'closed'); + + if (this.dropboxPopover && !isSilent) { + this.dropboxPopover.show(); + } else { + this.afterShowPopper(); + } + } + }, { + key: "afterShowPopper", + value: function afterShowPopper() { + var isSilent = this.isSilentOpen; + this.isSilentOpen = false; + + if (!isSilent) { + this.moveSelectedOptionsFirst(); + this.setScrollTop(); + DomUtils.addClass(this.$allWrappers, 'focused'); + + if (this.showAsPopup) { + DomUtils.addClass(this.$body, 'vscomp-popup-active'); + this.isPopupActive = true; + } else { + this.focusSearchInput(); + } + + DomUtils.dispatchEvent(this.$ele, 'afterOpen'); + } + } + }, { + key: "closeDropbox", + value: function closeDropbox(isSilent) { + this.isSilentClose = isSilent; + + if (this.keepAlwaysOpen) { + this.removeOptionFocus(); + return; + } + + if (isSilent) { + DomUtils.setStyle(this.$dropboxContainer, 'display', ''); + } else { + DomUtils.dispatchEvent(this.$ele, 'beforeClose'); + DomUtils.setAria(this.$wrapper, 'expanded', false); + DomUtils.setAria(this.$wrapper, 'activedescendant', ''); + } + + if (this.dropboxPopover && !isSilent) { + this.dropboxPopover.hide(); + } else { + this.afterHidePopper(); + } + } + }, { + key: "afterHidePopper", + value: function afterHidePopper() { + var isSilent = this.isSilentClose; + this.isSilentClose = false; + DomUtils.removeClass(this.$allWrappers, 'focused'); + this.removeOptionFocus(); + + if (!isSilent) { + if (this.isPopupActive) { + DomUtils.removeClass(this.$body, 'vscomp-popup-active'); + this.isPopupActive = false; + } + } + + DomUtils.addClass(this.$allWrappers, 'closed'); + + if (!isSilent) { + DomUtils.dispatchEvent(this.$ele, 'afterClose'); + } + } + }, { + key: "moveSelectedOptionsFirst", + value: function moveSelectedOptionsFirst() { + if (!this.showSelectedOptionsFirst) { + return; + } + + this.setSortedOptions(); + + if (!this.$optionsContainer.scrollTop || !this.selectedValues.length) { + this.setVisibleOptions(); + } else { + this.scrollToTop(); + } + } + }, { + key: "toggleDropbox", + value: function toggleDropbox() { + if (this.isOpened()) { + this.closeDropbox(); + } else { + this.openDropbox(); + } + } + }, { + key: "updatePosition", + value: function updatePosition() { + if (!this.dropboxPopover) { + return; + } + + this.$ele.updatePosition(); + } + }, { + key: "isOpened", + value: function isOpened() { + return !DomUtils.hasClass(this.$wrapper, 'closed'); + } + }, { + key: "focusSearchInput", + value: function focusSearchInput() { + var $ele = this.$searchInput; + + if ($ele) { + $ele.focus(); + } + } + }, { + key: "focusOption", + value: function focusOption() { + var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + direction = _ref4.direction, + $option = _ref4.$option, + focusFirst = _ref4.focusFirst; + + var $focusedEle = this.$dropboxContainer.querySelector('.vscomp-option.focused'); + var $newFocusedEle; + + if ($option) { + $newFocusedEle = $option; + } else if (!$focusedEle || focusFirst) { + /* if no element on focus choose first visible one */ + var firstVisibleOptionIndex = this.getFirstVisibleOptionIndex(); + $newFocusedEle = this.$dropboxContainer.querySelector(".vscomp-option[data-visible-index=\"".concat(firstVisibleOptionIndex, "\"]")); + + if (DomUtils.hasClass($newFocusedEle, 'disabled') || DomUtils.hasClass($newFocusedEle, 'group-title')) { + $newFocusedEle = this.getSibling($newFocusedEle, 'next'); + } + } else { + $newFocusedEle = this.getSibling($focusedEle, direction); + } + + if ($newFocusedEle && $newFocusedEle !== $focusedEle) { + if ($focusedEle) { + this.toggleOptionFocusedState($focusedEle, false); + } + + this.toggleOptionFocusedState($newFocusedEle, true); + this.toggleFocusedProp(DomUtils.getData($newFocusedEle, 'index'), true); + this.moveFocusedOptionToView($newFocusedEle); + } + } + }, { + key: "moveFocusedOptionToView", + value: function moveFocusedOptionToView($focusedEle) { + if (!$focusedEle) { + $focusedEle = this.$dropboxContainer.querySelector('.vscomp-option.focused'); + } + + if (!$focusedEle) { + return; + } + + var newScrollTop; + var containerRect = this.$optionsContainer.getBoundingClientRect(); + var optionRect = $focusedEle.getBoundingClientRect(); + var containerTop = containerRect.top; + var containerBottom = containerRect.bottom; + var containerHeight = containerRect.height; + var optionTop = optionRect.top; + var optionBottom = optionRect.bottom; + var optionHeight = optionRect.height; + var optionOffsetTop = $focusedEle.offsetTop; + var optionsTop = DomUtils.getData(this.$options, 'top', 'number'); + /* if option hidden on top */ + + if (containerTop > optionTop) { + newScrollTop = optionOffsetTop + optionsTop; + } else if (containerBottom < optionBottom) { + /* if option hidden on bottom */ + newScrollTop = optionOffsetTop - containerHeight + optionHeight + optionsTop; + } + + if (newScrollTop !== undefined) { + this.$optionsContainer.scrollTop = newScrollTop; + } + } + }, { + key: "removeOptionFocus", + value: function removeOptionFocus() { + var $focusedEle = this.$dropboxContainer.querySelector('.vscomp-option.focused'); + + if (!$focusedEle) { + return; + } + + this.toggleOptionFocusedState($focusedEle, false); + this.toggleFocusedProp(null); + } + }, { + key: "selectOption", + value: function selectOption($ele) { + var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + event = _ref5.event; + + if (!$ele) { + return; + } + + var isAdding = !DomUtils.hasClass($ele, 'selected'); + + if (isAdding) { + if (this.multiple && this.isMaxValuesSelected) { + return; + } + } else { + /** on selecting same value in single select */ + if (!this.multiple) { + this.closeDropbox(); + return; + } + } + + var selectedValues = this.selectedValues; + var selectedValue = DomUtils.getData($ele, 'value'); + var selectedIndex = DomUtils.getData($ele, 'index', 'number'); + var shouldSelectRange = false; + var lastSelectedOptionIndex = this.lastSelectedOptionIndex; + this.lastSelectedOptionIndex = null; + this.toggleSelectedProp(selectedIndex, isAdding); + + if (isAdding) { + if (this.multiple) { + selectedValues.push(selectedValue); + this.toggleAllOptionsClass(); + this.toggleGroupOptionsParent($ele); + + if (event && event.shiftKey) { + shouldSelectRange = true; + } + } else { + if (selectedValues.length) { + this.toggleSelectedProp(this.getOptionIndex(selectedValues[0]), false); + } + + selectedValues = [selectedValue]; + var $prevSelectedOption = this.$dropboxContainer.querySelector('.vscomp-option.selected'); + + if ($prevSelectedOption) { + this.toggleOptionSelectedState($prevSelectedOption, false); + } + + this.closeDropbox(); + } + + this.lastSelectedOptionIndex = selectedIndex; + this.toggleOptionSelectedState($ele); + } else { + if (this.multiple) { + this.toggleOptionSelectedState($ele); + Utils.removeItemFromArray(selectedValues, selectedValue); + this.toggleAllOptionsClass(false); + this.toggleGroupOptionsParent($ele, false); + } + } + + if (DomUtils.hasClass($ele, 'current-new')) { + this.beforeSelectNewValue(); + } + + this.setValue(selectedValues); + + if (shouldSelectRange) { + this.selectRangeOptions(lastSelectedOptionIndex, selectedIndex); + } + } + }, { + key: "selectFocusedOption", + value: function selectFocusedOption() { + this.selectOption(this.$dropboxContainer.querySelector('.vscomp-option.focused')); + } + }, { + key: "selectRangeOptions", + value: function selectRangeOptions(lastSelectedOptionIndex, selectedIndex) { + var _this7 = this; + + if (typeof lastSelectedOptionIndex !== 'number' || this.maxValues) { + return; + } + + var selectedValues = this.selectedValues, + hasOptionGroup = this.hasOptionGroup; + var groupIndexes = {}; + var startIndex; + var endIndex; + + if (lastSelectedOptionIndex < selectedIndex) { + startIndex = lastSelectedOptionIndex; + endIndex = selectedIndex; + } else { + startIndex = selectedIndex; + endIndex = lastSelectedOptionIndex; + } + + this.options.forEach(function (d) { + if (d.isDisabled || d.isGroupTitle || !d.isVisible || d.isSelected) { + return; + } + + var index = d.index; + + if (index > startIndex && index < endIndex) { + if (hasOptionGroup) { + var groupIndex = d.groupIndex; + + if (typeof groupIndex === 'number') { + groupIndexes[groupIndex] = true; + } + } // eslint-disable-next-line no-param-reassign + + + d.isSelected = true; + selectedValues.push(d.value); + } + }); + this.toggleAllOptionsClass(); + this.setValue(selectedValues); + groupIndexes = Object.keys(groupIndexes); + + if (groupIndexes.length) { + var toggleGroupTitleProp = this.toggleGroupTitleProp.bind(this); + groupIndexes.forEach(function (i) { + toggleGroupTitleProp(parseInt(i)); + }); + } + /** using setTimeout to fix the issue of dropbox getting closed on select */ + + + setTimeout(function () { + _this7.renderOptions(); + }, 0); + } + }, { + key: "toggleAllOptions", + value: function toggleAllOptions(isSelected) { + if (!this.multiple || this.disableSelectAll) { + return; + } + + if (typeof isSelected !== 'boolean') { + isSelected = !DomUtils.hasClass(this.$toggleAllCheckbox, 'checked'); + } + + var selectedValues = []; + var selectAllOnlyVisible = this.selectAllOnlyVisible; + this.options.forEach(function (d) { + if (d.isDisabled || d.isCurrentNew) { + return; + } + + if (!isSelected || selectAllOnlyVisible && !d.isVisible) { + // eslint-disable-next-line no-param-reassign + d.isSelected = false; + } else { + // eslint-disable-next-line no-param-reassign + d.isSelected = true; + + if (!d.isGroupTitle) { + selectedValues.push(d.value); + } + } + }); + this.toggleAllOptionsClass(isSelected); + this.setValue(selectedValues); + this.renderOptions(); + } + }, { + key: "toggleAllOptionsClass", + value: function toggleAllOptionsClass(isAllSelected) { + if (!this.multiple) { + return; + } + + var valuePassed = typeof isAllSelected === 'boolean'; + + if (!valuePassed) { + isAllSelected = this.isAllOptionsSelected(); + } + + DomUtils.toggleClass(this.$toggleAllCheckbox, 'checked', isAllSelected); + + if (this.selectAllOnlyVisible && valuePassed) { + this.isAllSelected = this.isAllOptionsSelected(); + } else { + this.isAllSelected = isAllSelected; + } + } + }, { + key: "isAllOptionsSelected", + value: function isAllOptionsSelected() { + var isAllSelected = false; + + if (this.options.length && this.selectedValues.length) { + isAllSelected = !this.options.some(function (d) { + return !d.isSelected && !d.isDisabled && !d.isGroupTitle; + }); + } + + return isAllSelected; + } + }, { + key: "isAllGroupOptionsSelected", + value: function isAllGroupOptionsSelected(groupIndex) { + var isAllSelected = false; + + if (this.options.length) { + isAllSelected = !this.options.some(function (d) { + return !d.isSelected && !d.isDisabled && !d.isGroupTitle && d.groupIndex === groupIndex; + }); + } + + return isAllSelected; + } + }, { + key: "toggleGroupOptionsParent", + value: function toggleGroupOptionsParent($option, isSelected) { + if (!this.hasOptionGroup || this.disableOptionGroupCheckbox || !$option) { + return; + } + + var groupIndex = DomUtils.getData($option, 'groupIndex', 'number'); + var $group = this.$options.querySelector(".vscomp-option[data-index=\"".concat(groupIndex, "\"]")); + var isAllSelected = typeof isSelected === 'boolean' ? isSelected : this.isAllGroupOptionsSelected(groupIndex); + this.toggleGroupTitleCheckbox($group, isAllSelected); + } + }, { + key: "toggleGroupTitleProp", + value: function toggleGroupTitleProp(groupIndex, isSelected) { + var isAllSelected = typeof isSelected === 'boolean' ? isSelected : this.isAllGroupOptionsSelected(groupIndex); + this.toggleSelectedProp(groupIndex, isAllSelected); + } + }, { + key: "toggleGroupOptions", + value: function toggleGroupOptions($ele, isSelected) { + var _this8 = this; + + if (!this.hasOptionGroup || this.disableOptionGroupCheckbox || !$ele) { + return; + } + + var groupIndex = DomUtils.getData($ele, 'index', 'number'); + var selectedValues = this.selectedValues, + selectAllOnlyVisible = this.selectAllOnlyVisible; + var valuesMapping = {}; + var removeItemFromArray = Utils.removeItemFromArray; + selectedValues.forEach(function (d) { + valuesMapping[d] = true; + }); + this.options.forEach(function (d) { + if (d.isDisabled || d.groupIndex !== groupIndex) { + return; + } + + var value = d.value; + + if (!isSelected || selectAllOnlyVisible && !d.isVisible) { + // eslint-disable-next-line no-param-reassign + d.isSelected = false; + + if (valuesMapping[value]) { + removeItemFromArray(selectedValues, value); + } + } else { + // eslint-disable-next-line no-param-reassign + d.isSelected = true; + + if (!valuesMapping[value]) { + selectedValues.push(value); + } + } + }); + this.toggleAllOptionsClass(isSelected ? null : false); + this.setValue(selectedValues); + /** using setTimeout to fix the issue of dropbox getting closed on select */ + + setTimeout(function () { + _this8.renderOptions(); + }, 0); + } + }, { + key: "toggleGroupTitleCheckbox", + value: function toggleGroupTitleCheckbox($ele, isSelected) { + if (!$ele) { + return; + } + + var selectedIndex = DomUtils.getData($ele, 'index', 'number'); + this.toggleSelectedProp(selectedIndex, isSelected); + this.toggleOptionSelectedState($ele, isSelected); + } + }, { + key: "toggleFocusedProp", + value: function toggleFocusedProp(index) { + var isFocused = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (this.focusedOptionIndex) { + this.setOptionProp(this.focusedOptionIndex, 'isFocused', false); + } + + this.setOptionProp(index, 'isFocused', isFocused); + this.focusedOptionIndex = index; + } + }, { + key: "toggleSelectedProp", + value: function toggleSelectedProp(index) { + var isSelected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + this.setOptionProp(index, 'isSelected', isSelected); + } + }, { + key: "scrollToTop", + value: function scrollToTop() { + var isClosed = !this.isOpened(); + + if (isClosed) { + this.openDropbox(true); + } + + var scrollTop = this.$optionsContainer.scrollTop; + + if (scrollTop > 0) { + this.$optionsContainer.scrollTop = 0; + } + + if (isClosed) { + this.closeDropbox(true); + } + } + }, { + key: "reset", + value: function reset() { + var formReset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + this.options.forEach(function (d) { + // eslint-disable-next-line no-param-reassign + d.isSelected = false; + }); + this.beforeValueSet(true); + this.setValue(null, { + disableValidation: formReset + }); + this.afterValueSet(); + + if (formReset) { + DomUtils.removeClass(this.$allWrappers, 'has-error'); + } + + DomUtils.dispatchEvent(this.$ele, 'reset'); + } + }, { + key: "addOption", + value: function addOption(data, rerender) { + if (!data) { + return; + } + + this.lastOptionIndex++; + data.index = this.lastOptionIndex; + var newOption = this.getOptionObj(data); + this.options.push(newOption); + this.sortedOptions.push(newOption); + + if (rerender) { + this.visibleOptionsCount++; + this.afterSetOptions(); + } + } + }, { + key: "removeOption", + value: function removeOption(index) { + if (!index && index != 0) { + return; + } + + this.options.splice(index, 1); + this.lastOptionIndex--; + } + }, { + key: "removeNewOption", + value: function removeNewOption() { + var newOption = this.getNewOption(); + + if (newOption) { + this.removeOption(newOption.index); + } + } + }, { + key: "sortOptions", + value: function sortOptions(options) { + return options.sort(function (a, b) { + var aIsSelected = a.isSelected || a.isAnySelected; + var bIsSelected = b.isSelected || b.isAnySelected; + + if (!aIsSelected && !bIsSelected) { + return 0; + } else if (aIsSelected && (!bIsSelected || a.index < b.index)) { + return -1; + } else { + return 1; + } + }); + } + }, { + key: "sortOptionsGroup", + value: function sortOptionsGroup(options) { + var sortOptions = this.sortOptions.bind(this); + options = this.structureOptionGroup(options); + options.forEach(function (d) { + var childOptions = d.options; // eslint-disable-next-line no-param-reassign + + d.isAnySelected = childOptions.some(function (e) { + return e.isSelected; + }); + + if (d.isAnySelected) { + sortOptions(childOptions); + } + }); + sortOptions(options); + return this.destructureOptionGroup(options); + } + }, { + key: "isOptionVisible", + value: function isOptionVisible(_ref6) { + var data = _ref6.data, + searchValue = _ref6.searchValue, + hasExactOption = _ref6.hasExactOption, + visibleOptionGroupsMapping = _ref6.visibleOptionGroupsMapping, + searchGroup = _ref6.searchGroup; + var value = data.value.toLowerCase(); + var label = data.label.toLowerCase(); + var description = data.description, + alias = data.alias; + var isVisible = label.indexOf(searchValue) !== -1; + + if (data.isGroupTitle) { + if (!searchGroup || !isVisible) { + isVisible = visibleOptionGroupsMapping[data.index]; + } + } + + if (alias && !isVisible) { + isVisible = alias.indexOf(searchValue) !== -1; + } + + if (description && !isVisible) { + isVisible = description.toLowerCase().indexOf(searchValue) !== -1; + } + + data.isVisible = isVisible; + + if (!hasExactOption) { + hasExactOption = label === searchValue || value === searchValue; + } + + return { + isVisible: isVisible, + hasExactOption: hasExactOption + }; + } + }, { + key: "structureOptionGroup", + value: function structureOptionGroup(options) { + var result = []; + var childOptions = {}; + /** getting all group title */ + + options.forEach(function (d) { + if (d.isGroupTitle) { + var childArray = []; // eslint-disable-next-line no-param-reassign + + d.options = childArray; + childOptions[d.index] = childArray; + result.push(d); + } + }); + /** getting all group options */ + + options.forEach(function (d) { + if (d.isGroupOption) { + childOptions[d.groupIndex].push(d); + } + }); + return result; + } + }, { + key: "destructureOptionGroup", + value: function destructureOptionGroup(options) { + var result = []; + options.forEach(function (d) { + result.push(d); + result = result.concat(d.options); + }); + return result; + } + }, { + key: "serverSearch", + value: function serverSearch() { + DomUtils.removeClass(this.$allWrappers, 'has-no-search-results'); + DomUtils.addClass(this.$allWrappers, 'server-searching'); + this.setSelectedOptions(); + this.onServerSearch(this.searchValue, this); + } + }, { + key: "removeValue", + value: function removeValue($ele) { + var selectedValues = this.selectedValues; + var selectedValue = DomUtils.getData($ele, 'value'); + Utils.removeItemFromArray(selectedValues, selectedValue); + this.setValueMethod(selectedValues); + } + }, { + key: "focus", + value: function focus() { + this.$wrapper.focus(); + } + }, { + key: "enable", + value: function enable() { + this.$ele.disabled = false; + this.$ele.removeAttribute('disabled'); + this.$hiddenInput.removeAttribute('disabled'); + DomUtils.setAria(this.$wrapper, 'disabled', false); + } + }, { + key: "disable", + value: function disable() { + this.$ele.disabled = true; + this.$ele.setAttribute('disabled', ''); + this.$hiddenInput.setAttribute('disabled', ''); + DomUtils.setAria(this.$wrapper, 'disabled', true); + } + }, { + key: "validate", + value: function validate() { + if (this.disableValidation) { + return true; + } + + var hasError = false; + + if (this.required && Utils.isEmpty(this.selectedValues)) { + hasError = true; + } + + DomUtils.toggleClass(this.$allWrappers, 'has-error', hasError); + return !hasError; + } + }, { + key: "destroy", + value: function destroy() { + var $ele = this.$ele; + $ele.virtualSelect = undefined; + $ele.value = undefined; + $ele.innerHTML = ''; + + if (this.hasDropboxWrapper) { + this.$dropboxWrapper.remove(); + this.mutationObserver.disconnect(); + } + + DomUtils.removeClass($ele, 'vscomp-ele'); + } + }, { + key: "createSecureTextElements", + value: function createSecureTextElements() { + this.$secureDiv = document.createElement('div'); + this.$secureText = document.createTextNode(''); + this.$secureDiv.appendChild(this.$secureText); + } + }, { + key: "secureText", + value: function secureText(text) { + if (!text || !this.enableSecureText) { + return text; + } + + this.$secureText.nodeValue = text; + return this.$secureDiv.innerHTML; + } + }, { + key: "toggleRequired", + value: function toggleRequired(isRequired) { + this.required = Utils.convertToBoolean(isRequired); + this.$ele.required = this.required; + } + }, { + key: "toggleOptionSelectedState", + value: function toggleOptionSelectedState($ele, value) { + var isSelected = value; + + if (typeof isSelected === 'undefined') { + isSelected = !DomUtils.hasClass($ele, 'selected'); + } + + DomUtils.toggleClass($ele, 'selected', isSelected); + DomUtils.setAria($ele, 'selected', isSelected); + } + }, { + key: "toggleOptionFocusedState", + value: function toggleOptionFocusedState($ele, isFocused) { + if (!$ele) { + return; + } + + DomUtils.toggleClass($ele, 'focused', isFocused); + + if (isFocused) { + DomUtils.setAria(this.$wrapper, 'activedescendant', $ele.id); + } + } + /** static methods - start */ + + }], [{ + key: "init", + value: function init(options) { + var $eleArray = options.ele; + + if (!$eleArray) { + return; + } + + var singleEle = false; + + if (typeof $eleArray === 'string') { + $eleArray = document.querySelectorAll($eleArray); + var eleLength = $eleArray.length; + + if (eleLength === 0) { + return; + } else if (eleLength === 1) { + singleEle = true; + } + } + + if ($eleArray.length === undefined || $eleArray.forEach === undefined) { + $eleArray = [$eleArray]; + singleEle = true; + } + + var instances = []; + $eleArray.forEach(function ($ele) { + /** skipping initialization on calling init method multiple times */ + if ($ele.virtualSelect) { + instances.push($ele.virtualSelect); + return; + } + + options.ele = $ele; + + if ($ele.tagName === 'SELECT') { + VirtualSelect.setPropsFromSelect(options); + } + + instances.push(new VirtualSelect(options)); + }); + return singleEle ? instances[0] : instances; + } + }, { + key: "getAttrProps", + value: function getAttrProps() { + var convertPropToDataAttr = DomUtils.convertPropToDataAttr; + var result = {}; + nativeProps.forEach(function (d) { + result[d] = d; + }); + dataProps.forEach(function (d) { + result[convertPropToDataAttr(d)] = d; + }); + return result; + } + }, { + key: "setPropsFromSelect", + value: function setPropsFromSelect(props) { + var $ele = props.ele; + var disabledOptions = []; + var selectedValue = []; + + var getNativeOptions = function getNativeOptions($container) { + var options = []; + var $options = Array.from($container.children); + $options.forEach(function ($option) { + var value = $option.value; + var option = { + value: value + }; + + if ($option.tagName === 'OPTGROUP') { + option.label = $option.getAttribute('label'); + option.options = getNativeOptions($option); + } else { + option.label = $option.innerHTML; + } + + options.push(option); + + if ($option.disabled) { + disabledOptions.push(value); + } + + if ($option.selected) { + selectedValue.push(value); + } + }); + return options; + }; + + var optionsList = getNativeOptions($ele); + /** creating div element to initiate plugin and removing native element */ + + var $newEle = document.createElement('div'); + DomUtils.setAttrFromEle($ele, $newEle, Object.keys(attrPropsMapping), valueLessProps); + $ele.parentNode.insertBefore($newEle, $ele); + $ele.remove(); + props.ele = $newEle; + props.options = optionsList; + props.disabledOptions = disabledOptions; + props.selectedValue = selectedValue; + } + }, { + key: "onFormReset", + value: function onFormReset(e) { + var $form = e.target.closest('form'); + + if (!$form) { + return; + } + + $form.querySelectorAll('.vscomp-ele-wrapper').forEach(function ($ele) { + $ele.parentElement.virtualSelect.reset(true); + }); + } + }, { + key: "onFormSubmit", + value: function onFormSubmit(e) { + if (!VirtualSelect.validate(e.target.closest('form'))) { + e.preventDefault(); + } + } + }, { + key: "validate", + value: function validate($container) { + if (!$container) { + return true; + } + + var hasError = false; + $container.querySelectorAll('.vscomp-ele-wrapper').forEach(function ($ele) { + var result = $ele.parentElement.virtualSelect.validate(); + + if (!hasError && !result) { + hasError = true; + } + }); + return !hasError; + } + }, { + key: "reset", + value: function reset() { + this.virtualSelect.reset(); + } + }, { + key: "setValueMethod", + value: function setValueMethod() { + var _this$virtualSelect; + + (_this$virtualSelect = this.virtualSelect).setValueMethod.apply(_this$virtualSelect, arguments); + } + }, { + key: "setOptionsMethod", + value: function setOptionsMethod() { + var _this$virtualSelect2; + + (_this$virtualSelect2 = this.virtualSelect).setOptionsMethod.apply(_this$virtualSelect2, arguments); + } + }, { + key: "setDisabledOptionsMethod", + value: function setDisabledOptionsMethod() { + var _this$virtualSelect3; + + (_this$virtualSelect3 = this.virtualSelect).setDisabledOptionsMethod.apply(_this$virtualSelect3, arguments); + } + }, { + key: "toggleSelectAll", + value: function toggleSelectAll(isSelected) { + this.virtualSelect.toggleAllOptions(isSelected); + } + }, { + key: "isAllSelected", + value: function isAllSelected() { + return this.virtualSelect.isAllSelected; + } + }, { + key: "addOptionMethod", + value: function addOptionMethod(data) { + this.virtualSelect.addOption(data, true); + } + }, { + key: "getNewValueMethod", + value: function getNewValueMethod() { + return this.virtualSelect.getNewValue(); + } + }, { + key: "getDisplayValueMethod", + value: function getDisplayValueMethod() { + return this.virtualSelect.getDisplayValue(); + } + }, { + key: "getSelectedOptionsMethod", + value: function getSelectedOptionsMethod(params) { + return this.virtualSelect.getSelectedOptions(params); + } + }, { + key: "openMethod", + value: function openMethod() { + return this.virtualSelect.openDropbox(); + } + }, { + key: "closeMethod", + value: function closeMethod() { + return this.virtualSelect.closeDropbox(); + } + }, { + key: "focusMethod", + value: function focusMethod() { + return this.virtualSelect.focus(); + } + }, { + key: "enableMethod", + value: function enableMethod() { + return this.virtualSelect.enable(); + } + }, { + key: "disableMethod", + value: function disableMethod() { + return this.virtualSelect.disable(); + } + }, { + key: "destroyMethod", + value: function destroyMethod() { + return this.virtualSelect.destroy(); + } + }, { + key: "validateMethod", + value: function validateMethod() { + return this.virtualSelect.validate(); + } + }, { + key: "toggleRequiredMethod", + value: function toggleRequiredMethod(isRequired) { + return this.virtualSelect.toggleRequired(isRequired); + } + }, { + key: "onResizeMethod", + value: function onResizeMethod() { + document.querySelectorAll('.vscomp-ele-wrapper').forEach(function ($ele) { + $ele.parentElement.virtualSelect.onResize(); + }); + } + /** static methods - end */ + + }]); + + return VirtualSelect; +}(); +document.addEventListener('reset', VirtualSelect.onFormReset); +document.addEventListener('submit', VirtualSelect.onFormSubmit); +window.addEventListener('resize', VirtualSelect.onResizeMethod); +var attrPropsMapping = VirtualSelect.getAttrProps(); +window.VirtualSelect = VirtualSelect; +/** polyfill to fix an issue in ie browser */ + +if (typeof NodeList !== 'undefined' && NodeList.prototype && !NodeList.prototype.forEach) { + NodeList.prototype.forEach = Array.prototype.forEach; +} +}(); +// This entry need to be wrapped in an IIFE because it need to be isolated against other entry modules. +!function() { +/*! + * Popover v1.0.7 + * https://sa-si-dev.github.io/popover + * Licensed under MIT (https://github.com/sa-si-dev/popover/blob/master/LICENSE) + */!function(){"use strict";function e(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,o){if(e){if("string"==typeof e)return t(e,o);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,o):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,i=new Array(t);oo-n-t.width?"left":"right",vertical:r>i-r-t.height?"top":"bottom"}}},{key:"getAbsoluteCoords",value:function(e){if(e){var t=e.getBoundingClientRect(),o=window.pageXOffset,i=window.pageYOffset;return{width:t.width,height:t.height,top:t.top+i,right:t.right+o,bottom:t.bottom+i,left:t.left+o}}}},{key:"getCoords",value:function(e){return e?e.getBoundingClientRect():{}}},{key:"getData",value:function(e,t,o){if(e){var i=e?e.dataset[t]:"";return"number"===o?i=parseFloat(i)||0:"true"===i?i=!0:"false"===i&&(i=!1),i}}},{key:"setData",value:function(e,t,o){e&&(e.dataset[t]=o)}},{key:"setStyle",value:function(e,t,o){e&&(e.style[t]=o)}},{key:"show",value:function(e){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"block";t.setStyle(e,"display",o)}},{key:"hide",value:function(e){t.setStyle(e,"display","none")}},{key:"getHideableParent",value:function(e){for(var t,o=e.parentElement;o;){var i=getComputedStyle(o).overflow;if(-1!==i.indexOf("scroll")||-1!==i.indexOf("auto")){t=o;break}o=o.parentElement}return t}}])&&o(i,n),t}();function n(e,t){for(var o=0;ow?w-v:F:D+h>M&&("right"===S?o="left":D=M+vE?E-c:H:C+u>I&&("bottom"===S?o="top":C=I+ch-V&&(B=h-V):"left"!==S&&"right"!==S||((q=m/2+g-K)u-V&&(q=u-V)),i.setStyle(this.$arrowEle,"transform","translate3d(".concat(B,"px, ").concat(q,"px, 0) ").concat(X))}i.hide(this.$popperEle)}},{key:"resetPosition",value:function(){i.setStyle(this.$popperEle,"transform","none"),this.setPosition()}},{key:"show",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=t.resetPosition,n=t.data;clearTimeout(this.exitDelayTimeout),clearTimeout(this.hideDurationTimeout),o&&this.resetPosition(),this.enterDelayTimeout=setTimeout((function(){var t=i.getData(e.$popperEle,"left"),o=i.getData(e.$popperEle,"top"),r="translate3d(".concat(t,"px, ").concat(o,"px, 0)"),a=e.showDuration;i.show(e.$popperEle,"inline-flex"),i.getCoords(e.$popperEle),i.setStyle(e.$popperEle,"transitionDuration",a+"ms"),i.setStyle(e.$popperEle,"transform",r),i.setStyle(e.$popperEle,"opacity",1),e.showDurationTimeout=setTimeout((function(){"function"==typeof e.afterShowCallback&&e.afterShowCallback(n)}),a)}),this.enterDelay)}},{key:"hide",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=t.data;clearTimeout(this.enterDelayTimeout),clearTimeout(this.showDurationTimeout),this.exitDelayTimeout=setTimeout((function(){if(e.$popperEle){var t=i.getData(e.$popperEle,"fromLeft"),n=i.getData(e.$popperEle,"fromTop"),r="translate3d(".concat(t,"px, ").concat(n,"px, 0)"),a=e.hideDuration;i.setStyle(e.$popperEle,"transitionDuration",a+"ms"),i.setStyle(e.$popperEle,"transform",r),i.setStyle(e.$popperEle,"opacity",0),e.hideDurationTimeout=setTimeout((function(){i.hide(e.$popperEle),"function"==typeof e.afterHideCallback&&e.afterHideCallback(o)}),a)}}),this.exitDelay)}},{key:"updatePosition",value:function(){i.setStyle(this.$popperEle,"transitionDuration","0ms"),this.resetPosition();var e=i.getData(this.$popperEle,"left"),t=i.getData(this.$popperEle,"top");i.show(this.$popperEle,"inline-flex"),i.setStyle(this.$popperEle,"transform","translate3d(".concat(e,"px, ").concat(t,"px, 0)"))}}])&&n(t.prototype,o),e}();window.PopperComponent=s}(),function(){"use strict";function e(e,t){for(var o=0;o1&&void 0!==arguments[1]&&arguments[1];return e=!0===e||"true"===e||!1!==e&&"false"!==e&&t}},{key:"removeArrayEmpty",value:function(e){return Array.isArray(e)&&e.length?e.filter((function(e){return!!e})):[]}},{key:"throttle",value:function(e,t){var o,i=0;return function(){for(var n=arguments.length,r=new Array(n),a=0;ae.length)&&(t=e.length);for(var o=0,i=new Array(t);o'),e=this.$popover.querySelector(".pop-comp-arrow")),this.$arrowEle=e}}},{key:"destory",value:function(){this.removeEvents()}}])&&a(o.prototype,i),n&&a(o,n),e}();window.PopoverComponent=l}(); +}(); +/******/ })() +; \ No newline at end of file diff --git a/docs/assets/virtual-select.min.css b/docs/assets/virtual-select.min.css index 7fe5ad0..945d144 100644 --- a/docs/assets/virtual-select.min.css +++ b/docs/assets/virtual-select.min.css @@ -1,9 +1,9 @@ /*! - * Virtual Select v1.0.28 + * Virtual Select v1.0.29 * https://sa-si-dev.github.io/virtual-select * Licensed under MIT (https://github.com/sa-si-dev/virtual-select/blob/master/LICENSE) */ -@-webkit-keyframes vscomp-animation-spin{to{transform:rotateZ(360deg)}}@keyframes vscomp-animation-spin{to{transform:rotateZ(360deg)}}body.vscomp-popup-active{overflow:hidden}.vscomp-ele{display:inline-block;width:100%;max-width:250px}.vscomp-wrapper{display:inline-flex;position:relative;width:100%;font-family:sans-serif;font-size:14px;color:#333;text-align:left;flex-wrap:wrap}.vscomp-wrapper *,.vscomp-wrapper *::before,.vscomp-wrapper *::after{box-sizing:border-box}.vscomp-wrapper:focus{outline:none}.vscomp-dropbox-wrapper{position:absolute;top:0;left:0}.vscomp-toggle-button{display:flex;position:relative;align-items:center;width:100%;padding:7px 30px 7px 10px;border:1px solid #ddd;background-color:#fff;cursor:pointer}.vscomp-value{max-width:100%;height:20px;line-height:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.vscomp-arrow{position:absolute;display:flex;top:0;right:0;width:30px;height:100%;align-items:center;justify-content:center}.vscomp-arrow::after{content:"";transform:rotate(45deg);border:1px solid transparent;border-right-color:#111;border-bottom-color:#111;width:8px;height:8px;margin-top:-6px}.vscomp-clear-icon{position:relative;width:12px;height:12px}.vscomp-clear-icon::before,.vscomp-clear-icon::after{content:"";position:absolute;top:0;left:5px;width:2px;height:12px;background-color:#999}.vscomp-clear-icon::before{transform:rotate(45deg)}.vscomp-clear-icon::after{transform:rotate(-45deg)}.vscomp-clear-icon:hover::before,.vscomp-clear-icon:hover::after{background:#333}.vscomp-clear-button{position:absolute;display:none;top:50%;right:30px;width:24px;height:24px;justify-content:center;align-items:center;border-radius:50%;margin-top:-12px}.vscomp-clear-button:hover{background:#ccc}.vscomp-clear-button:hover .vscomp-clear-icon::before,.vscomp-clear-button:hover .vscomp-clear-icon::after{background-color:#333}.vscomp-dropbox-close-button{display:none;align-items:center;justify-content:center;position:absolute;left:50%;margin-left:-20px;bottom:-48px;width:40px;height:40px;background-color:#fff;border-radius:50%;cursor:pointer}.vscomp-value-tag.more-value-count{white-space:nowrap}.vscomp-dropbox-container{width:100%;z-index:2}.vscomp-dropbox{width:100%;background-color:#fff}.vscomp-options-container{position:relative;max-height:210px;overflow:auto}.vscomp-options-bottom-freezer{position:absolute;bottom:0;left:0;right:0;height:2px}.vscomp-option{display:flex;flex-wrap:wrap;position:relative;align-items:center;padding:0 15px;height:40px;align-items:center;cursor:pointer}.vscomp-option.selected{background-color:#eee}.vscomp-option.focused{background-color:#ccc}.vscomp-option.disabled{opacity:.5;cursor:default}.vscomp-option.group-title .vscomp-option-text{opacity:.6;cursor:default}.vscomp-option.group-title.selected{background-color:transparent}.vscomp-option.group-option{padding-left:30px}.vscomp-new-option-icon{position:absolute;top:0;right:0;width:30px;height:30px}.vscomp-new-option-icon::before{content:"";position:absolute;top:0;right:0;border:15px solid #512da8;border-left-color:transparent;border-bottom-color:transparent}.vscomp-new-option-icon::after{content:"+";display:flex;align-items:center;justify-content:center;position:absolute;top:0;right:1px;font-size:18px;color:#fff;width:15px;height:15px}.vscomp-option-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vscomp-option-description{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:100%;line-height:15px;color:#666;font-size:13px}.vscomp-search-container{display:flex;align-items:center;position:relative;height:40px;padding:0 5px 0 15px;border-bottom:1px solid #ddd}.vscomp-search-input{border:none;width:calc(100% - 30px);height:38px;padding:10px 0;font-size:15px;background-color:transparent;color:inherit}.vscomp-search-input:focus{outline:none}.vscomp-search-clear{display:flex;align-items:center;justify-content:center;width:30px;height:30px;font-size:25px;color:#999;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;visibility:hidden}.vscomp-search-clear:hover{color:inherit}.vscomp-no-options,.vscomp-no-search-results{display:none;justify-content:center;align-items:center;padding:20px 10px}.vscomp-options-loader{display:none;text-align:center;padding:20px 0}.vscomp-options-loader::before{content:"";display:inline-block;height:40px;width:40px;opacity:.7;border-radius:50%;background-color:#fff;box-shadow:-4px -5px 3px -3px rgba(0,0,0,.3);-webkit-animation:vscomp-animation-spin .8s infinite linear;animation:vscomp-animation-spin .8s infinite linear}.vscomp-ele[disabled]{cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vscomp-ele[disabled] .vscomp-wrapper{pointer-events:none;opacity:.7}.vscomp-wrapper .checkbox-icon{display:inline-flex;position:relative;width:15px;height:15px;margin-right:10px}.vscomp-wrapper .checkbox-icon::after{content:"";display:inline-block;width:100%;height:100%;border:2px solid #888;transition-duration:.2s}.vscomp-wrapper .checkbox-icon.checked::after{width:50%;border-color:#512da8;border-left-color:transparent;border-top-color:transparent;transform:rotate(45deg) translate(1px, -4px)}.vscomp-wrapper.show-as-popup .vscomp-dropbox-container{display:flex;justify-content:center;align-items:center;position:fixed;top:0;left:0;width:100vw;height:100vh;overflow:auto;opacity:1;background-color:rgba(0,0,0,.5);padding:0 10px}.vscomp-wrapper.show-as-popup .vscomp-dropbox{position:relative;width:80%;max-height:calc(80% - 48px);max-width:500px;margin-top:-24px}.vscomp-wrapper.show-as-popup .vscomp-dropbox-close-button{display:flex}.vscomp-wrapper.popup-position-left .vscomp-dropbox-container{justify-content:flex-start}.vscomp-wrapper.popup-position-right .vscomp-dropbox-container{justify-content:flex-end}.vscomp-wrapper.has-select-all .vscomp-toggle-all-button{display:flex;align-items:center;cursor:pointer}.vscomp-wrapper.has-select-all .vscomp-search-input,.vscomp-wrapper.has-select-all .vscomp-toggle-all-label{width:calc(100% - 55px)}.vscomp-wrapper.has-select-all .vscomp-toggle-all-label{display:none}.vscomp-wrapper:not(.has-search-input) .vscomp-toggle-all-button{width:100%}.vscomp-wrapper:not(.has-search-input) .vscomp-toggle-all-label{display:inline-block}.vscomp-wrapper.multiple .vscomp-option .vscomp-option-text{width:calc(100% - 25px)}.vscomp-wrapper.multiple .vscomp-option .vscomp-option-description{padding-left:25px}.vscomp-wrapper.multiple .vscomp-option.selected .checkbox-icon::after{width:50%;border-color:#512da8;border-left-color:transparent;border-top-color:transparent;transform:rotate(45deg) translate(1px, -4px)}.vscomp-wrapper.focused .vscomp-toggle-button,.vscomp-wrapper:focus .vscomp-toggle-button{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2)}.vscomp-wrapper.closed .vscomp-dropbox-container,.vscomp-wrapper.closed.vscomp-dropbox-wrapper{display:none}.vscomp-wrapper:not(.has-value) .vscomp-value{opacity:.5}.vscomp-wrapper.has-clear-button.has-value .vscomp-clear-button{display:flex}.vscomp-wrapper.has-clear-button .vscomp-toggle-button{padding-right:54px}.vscomp-wrapper.has-no-options .vscomp-options-container,.vscomp-wrapper.has-no-search-results .vscomp-options-container{display:none}.vscomp-wrapper.has-no-options .vscomp-no-options{display:flex}.vscomp-wrapper.has-no-search-results .vscomp-no-search-results{display:flex}.vscomp-wrapper.has-search-value .vscomp-search-clear{visibility:visible}.vscomp-wrapper.has-no-options .vscomp-toggle-all-button{opacity:.5;pointer-events:none}.vscomp-wrapper.keep-always-open .vscomp-toggle-button{padding-right:24px}.vscomp-wrapper.keep-always-open .vscomp-clear-button{right:5px}.vscomp-wrapper.keep-always-open .vscomp-arrow{display:none}.vscomp-wrapper.keep-always-open .vscomp-dropbox-container{position:relative;z-index:1}.vscomp-wrapper.keep-always-open .vscomp-dropbox{transition-duration:0s;box-shadow:none;border:1px solid #ddd}.vscomp-wrapper.keep-always-open.focused,.vscomp-wrapper.keep-always-open:focus,.vscomp-wrapper.keep-always-open:hover{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2)}.vscomp-wrapper.server-searching .vscomp-options-list{display:none}.vscomp-wrapper.server-searching .vscomp-options-loader{display:block}.vscomp-wrapper.has-error .vscomp-toggle-button{border-color:#b00020}.vscomp-wrapper.show-value-as-tags .vscomp-toggle-button{padding:4px 22px 0 10px}.vscomp-wrapper.show-value-as-tags .vscomp-value{display:flex;flex-wrap:wrap;height:auto;min-height:28px;overflow:auto;white-space:normal;text-overflow:unset}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-flex;align-items:center;max-width:100%;border:1px solid #ddd;margin:0 4px 4px 0;padding:2px 3px 2px 8px;font-size:12px;line-height:16px;border-radius:20px}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag.more-value-count{padding-right:8px}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag-content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:calc(100% - 20px)}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag-clear-button{display:flex;align-items:center;justify-content:center;width:20px;height:20px}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag-clear-button .vscomp-clear-icon{transform:scale(0.8)}.vscomp-wrapper.show-value-as-tags .vscomp-arrow{height:34px}.vscomp-wrapper.show-value-as-tags .vscomp-clear-button{margin-top:0;top:5px}.vscomp-wrapper.show-value-as-tags.has-value .vscomp-arrow{display:none}.vscomp-wrapper.show-value-as-tags.has-value .vscomp-clear-button{right:2px}.vscomp-wrapper.show-value-as-tags:not(.has-value) .vscomp-toggle-button{padding-bottom:2px}.vscomp-wrapper.show-value-as-tags:not(.has-value) .vscomp-value{align-items:center;padding-bottom:3px}.vscomp-wrapper.text-direction-rtl{direction:rtl}.vscomp-wrapper.text-direction-rtl .vscomp-toggle-button{padding:7px 10px 7px 30px}.vscomp-wrapper.text-direction-rtl .vscomp-arrow{right:auto;left:0}.vscomp-wrapper.text-direction-rtl .vscomp-clear-button{right:auto !important;left:30px}.vscomp-wrapper.text-direction-rtl .checkbox-icon{margin-right:0;margin-left:10px}.vscomp-wrapper.text-direction-rtl .checkbox-icon.checked::after{transform:rotate(45deg) translate(-4px, 1px)}.vscomp-wrapper.text-direction-rtl .vscomp-search-container{padding:0 15px 0 5px}.vscomp-wrapper.text-direction-rtl .vscomp-toggle-all-label{text-align:right}.vscomp-wrapper.text-direction-rtl .vscomp-option{text-align:right}.vscomp-wrapper.text-direction-rtl .vscomp-option.group-option{padding-right:30px}.vscomp-wrapper.text-direction-rtl .vscomp-new-option-icon{right:auto;left:0}.vscomp-wrapper.text-direction-rtl .vscomp-new-option-icon::before{border-left-color:#512da8;border-right-color:transparent}.vscomp-wrapper.text-direction-rtl .vscomp-new-option-icon::after{right:auto;left:1px}.vscomp-wrapper.text-direction-rtl.multiple .vscomp-option.selected .checkbox-icon::after{transform:rotate(45deg) translate(-4px, 1px)}.vscomp-wrapper.text-direction-rtl.has-clear-button .vscomp-toggle-button{padding-left:54px}.vscomp-wrapper.text-direction-rtl.keep-always-open .vscomp-toggle-button{padding-left:24px}.vscomp-wrapper.text-direction-rtl.keep-always-open .vscomp-clear-button{left:5px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags .vscomp-toggle-button{padding:4px 10px 0 22px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags .vscomp-value-tag{margin:0 0 4px 4px;padding:2px 8px 2px 3px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags .vscomp-value-tag.more-value-count{padding-left:8px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags.has-value .vscomp-clear-button{left:2px} +@-webkit-keyframes vscomp-animation-spin{to{transform:rotateZ(360deg)}}@keyframes vscomp-animation-spin{to{transform:rotateZ(360deg)}}.vscomp-popup-active{overflow:hidden !important}.vscomp-ele{display:inline-block;max-width:250px;width:100%}.vscomp-wrapper{color:#333;display:inline-flex;flex-wrap:wrap;font-family:sans-serif;font-size:14px;position:relative;text-align:left;width:100%}.vscomp-wrapper *,.vscomp-wrapper *::before,.vscomp-wrapper *::after{box-sizing:border-box}.vscomp-wrapper:focus{outline:none}.vscomp-dropbox-wrapper{left:0;position:absolute;top:0}.vscomp-toggle-button{align-items:center;background-color:#fff;border:1px solid #ddd;cursor:pointer;display:flex;padding:7px 30px 7px 10px;position:relative;width:100%}.vscomp-value{height:20px;line-height:20px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vscomp-arrow{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;width:30px}.vscomp-arrow::after{transform:rotate(45deg);border:1px solid transparent;border-bottom-color:#111;border-right-color:#111;content:"";height:8px;margin-top:-6px;width:8px}.vscomp-clear-icon{height:12px;position:relative;width:12px}.vscomp-clear-icon::before,.vscomp-clear-icon::after{background-color:#999;content:"";height:12px;left:5px;position:absolute;top:0;width:2px}.vscomp-clear-icon::before{transform:rotate(45deg)}.vscomp-clear-icon::after{transform:rotate(-45deg)}.vscomp-clear-icon:hover::before,.vscomp-clear-icon:hover::after{background:#333}.vscomp-clear-button{align-items:center;border-radius:50%;display:none;height:24px;justify-content:center;margin-top:-12px;position:absolute;right:30px;top:50%;width:24px}.vscomp-clear-button:hover{background:#ccc}.vscomp-clear-button:hover .vscomp-clear-icon::before,.vscomp-clear-button:hover .vscomp-clear-icon::after{background-color:#333}.vscomp-dropbox-close-button{align-items:center;background-color:#fff;border-radius:50%;bottom:-48px;cursor:pointer;display:none;height:40px;justify-content:center;left:50%;margin-left:-20px;position:absolute;width:40px}.vscomp-value-tag.more-value-count{white-space:nowrap}.vscomp-dropbox-container{width:100%;z-index:2}.vscomp-dropbox{background-color:#fff;width:100%}.vscomp-options-container{max-height:210px;overflow:auto;position:relative}.vscomp-options-bottom-freezer{bottom:0;height:2px;left:0;position:absolute;right:0}.vscomp-option{align-items:center;cursor:pointer;display:flex;flex-wrap:wrap;height:40px;padding:0 15px;position:relative}.vscomp-option.selected{background-color:#eee}.vscomp-option.focused{background-color:#ccc}.vscomp-option.disabled{cursor:default;opacity:.5}.vscomp-option.group-title .vscomp-option-text{cursor:default;opacity:.6}.vscomp-option.group-title.selected{background-color:transparent}.vscomp-option.group-option{padding-left:30px}.vscomp-new-option-icon{height:30px;position:absolute;right:0;top:0;width:30px}.vscomp-new-option-icon::before{border:15px solid #512da8;border-bottom-color:transparent;border-left-color:transparent;content:"";position:absolute;right:0;top:0}.vscomp-new-option-icon::after{align-items:center;color:#fff;content:"+";display:flex;font-size:18px;height:15px;justify-content:center;position:absolute;right:1px;top:0;width:15px}.vscomp-option-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.vscomp-option-description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#666;font-size:13px;line-height:15px;width:100%}.vscomp-search-container{align-items:center;border-bottom:1px solid #ddd;display:flex;height:40px;padding:0 5px 0 15px;position:relative}.vscomp-search-input{background-color:transparent;border:0;color:inherit;font-size:15px;height:38px;padding:10px 0;width:calc(100% - 30px)}.vscomp-search-input:focus{outline:none}.vscomp-search-clear{align-items:center;color:#999;cursor:pointer;display:flex;font-size:25px;height:30px;justify-content:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;visibility:hidden;width:30px}.vscomp-search-clear:hover{color:inherit}.vscomp-no-options,.vscomp-no-search-results{align-items:center;display:none;justify-content:center;padding:20px 10px}.vscomp-options-loader{display:none;padding:20px 0;text-align:center}.vscomp-options-loader::before{-webkit-animation:vscomp-animation-spin .8s infinite linear;animation:vscomp-animation-spin .8s infinite linear;background-color:#fff;border-radius:50%;box-shadow:-4px -5px 3px -3px rgba(0,0,0,.3);content:"";display:inline-block;height:40px;opacity:.7;width:40px}.vscomp-ele[disabled]{cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vscomp-ele[disabled] .vscomp-wrapper{opacity:.7;pointer-events:none}.vscomp-wrapper .checkbox-icon{display:inline-flex;height:15px;margin-right:10px;position:relative;width:15px}.vscomp-wrapper .checkbox-icon::after{transition-duration:.2s;border:2px solid #888;content:"";display:inline-block;height:100%;width:100%}.vscomp-wrapper .checkbox-icon.checked::after{transform:rotate(45deg) translate(1px, -4px);border-color:#512da8;border-left-color:transparent;border-top-color:transparent;width:50%}.vscomp-wrapper.show-as-popup .vscomp-dropbox-container{align-items:center;background-color:rgba(0,0,0,.5);display:flex;height:100vh;justify-content:center;left:0;opacity:1;overflow:auto;padding:0 10px;position:fixed;top:0;width:100vw}.vscomp-wrapper.show-as-popup .vscomp-dropbox{margin-top:-24px;max-height:calc(80% - 48px);max-width:500px;position:relative;width:80%}.vscomp-wrapper.show-as-popup .vscomp-dropbox-close-button{display:flex}.vscomp-wrapper.popup-position-left .vscomp-dropbox-container{justify-content:flex-start}.vscomp-wrapper.popup-position-right .vscomp-dropbox-container{justify-content:flex-end}.vscomp-wrapper.has-select-all .vscomp-toggle-all-button{align-items:center;cursor:pointer;display:flex}.vscomp-wrapper.has-select-all .vscomp-search-input,.vscomp-wrapper.has-select-all .vscomp-toggle-all-label{width:calc(100% - 55px)}.vscomp-wrapper.has-select-all .vscomp-toggle-all-label{display:none}.vscomp-wrapper:not(.has-search-input) .vscomp-toggle-all-button{width:100%}.vscomp-wrapper:not(.has-search-input) .vscomp-toggle-all-label{display:inline-block}.vscomp-wrapper.multiple .vscomp-option .vscomp-option-text{width:calc(100% - 25px)}.vscomp-wrapper.multiple .vscomp-option .vscomp-option-description{padding-left:25px}.vscomp-wrapper.multiple .vscomp-option.selected .checkbox-icon::after{transform:rotate(45deg) translate(1px, -4px);border-color:#512da8;border-left-color:transparent;border-top-color:transparent;width:50%}.vscomp-wrapper.focused .vscomp-toggle-button,.vscomp-wrapper:focus .vscomp-toggle-button{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2)}.vscomp-wrapper.closed .vscomp-dropbox-container,.vscomp-wrapper.closed.vscomp-dropbox-wrapper{display:none}.vscomp-wrapper:not(.has-value) .vscomp-value{opacity:.5}.vscomp-wrapper.has-clear-button.has-value .vscomp-clear-button{display:flex}.vscomp-wrapper.has-clear-button .vscomp-toggle-button{padding-right:54px}.vscomp-wrapper.has-no-options .vscomp-options-container,.vscomp-wrapper.has-no-search-results .vscomp-options-container{display:none}.vscomp-wrapper.has-no-options .vscomp-no-options{display:flex}.vscomp-wrapper.has-no-search-results .vscomp-no-search-results{display:flex}.vscomp-wrapper.has-search-value .vscomp-search-clear{visibility:visible}.vscomp-wrapper.has-no-options .vscomp-toggle-all-button{opacity:.5;pointer-events:none}.vscomp-wrapper.keep-always-open .vscomp-toggle-button{padding-right:24px}.vscomp-wrapper.keep-always-open .vscomp-clear-button{right:5px}.vscomp-wrapper.keep-always-open .vscomp-arrow{display:none}.vscomp-wrapper.keep-always-open .vscomp-dropbox-container{position:relative;z-index:1}.vscomp-wrapper.keep-always-open .vscomp-dropbox{transition-duration:0s;border:1px solid #ddd;box-shadow:none}.vscomp-wrapper.keep-always-open.focused,.vscomp-wrapper.keep-always-open:focus,.vscomp-wrapper.keep-always-open:hover{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2)}.vscomp-wrapper.server-searching .vscomp-options-list{display:none}.vscomp-wrapper.server-searching .vscomp-options-loader{display:block}.vscomp-wrapper.has-error .vscomp-toggle-button{border-color:#b00020}.vscomp-wrapper.show-value-as-tags .vscomp-toggle-button{padding:4px 22px 0 10px}.vscomp-wrapper.show-value-as-tags .vscomp-value{display:flex;flex-wrap:wrap;height:auto;min-height:28px;overflow:auto;text-overflow:unset;white-space:normal}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;align-items:center;border:1px solid #ddd;border-radius:20px;display:inline-flex;font-size:12px;line-height:16px;margin:0 4px 4px 0;max-width:100%;padding:2px 3px 2px 8px}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag.more-value-count{padding-right:8px}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:calc(100% - 20px)}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag-clear-button{align-items:center;display:flex;height:20px;justify-content:center;width:20px}.vscomp-wrapper.show-value-as-tags .vscomp-value-tag-clear-button .vscomp-clear-icon{transform:scale(0.8)}.vscomp-wrapper.show-value-as-tags .vscomp-arrow{height:34px}.vscomp-wrapper.show-value-as-tags .vscomp-clear-button{margin-top:0;top:5px}.vscomp-wrapper.show-value-as-tags.has-value .vscomp-arrow{display:none}.vscomp-wrapper.show-value-as-tags.has-value .vscomp-clear-button{right:2px}.vscomp-wrapper.show-value-as-tags:not(.has-value) .vscomp-toggle-button{padding-bottom:2px}.vscomp-wrapper.show-value-as-tags:not(.has-value) .vscomp-value{align-items:center;padding-bottom:3px}.vscomp-wrapper.text-direction-rtl{direction:rtl}.vscomp-wrapper.text-direction-rtl .vscomp-toggle-button{padding:7px 10px 7px 30px}.vscomp-wrapper.text-direction-rtl .vscomp-arrow{left:0;right:auto}.vscomp-wrapper.text-direction-rtl .vscomp-clear-button{left:30px;right:auto !important}.vscomp-wrapper.text-direction-rtl .checkbox-icon{margin-left:10px;margin-right:0}.vscomp-wrapper.text-direction-rtl .checkbox-icon.checked::after{transform:rotate(45deg) translate(-4px, 1px)}.vscomp-wrapper.text-direction-rtl .vscomp-search-container{padding:0 15px 0 5px}.vscomp-wrapper.text-direction-rtl .vscomp-toggle-all-label{text-align:right}.vscomp-wrapper.text-direction-rtl .vscomp-option{text-align:right}.vscomp-wrapper.text-direction-rtl .vscomp-option.group-option{padding-right:30px}.vscomp-wrapper.text-direction-rtl .vscomp-new-option-icon{left:0;right:auto}.vscomp-wrapper.text-direction-rtl .vscomp-new-option-icon::before{border-left-color:#512da8;border-right-color:transparent}.vscomp-wrapper.text-direction-rtl .vscomp-new-option-icon::after{left:1px;right:auto}.vscomp-wrapper.text-direction-rtl.multiple .vscomp-option.selected .checkbox-icon::after{transform:rotate(45deg) translate(-4px, 1px)}.vscomp-wrapper.text-direction-rtl.has-clear-button .vscomp-toggle-button{padding-left:54px}.vscomp-wrapper.text-direction-rtl.keep-always-open .vscomp-toggle-button{padding-left:24px}.vscomp-wrapper.text-direction-rtl.keep-always-open .vscomp-clear-button{left:5px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags .vscomp-toggle-button{padding:4px 10px 0 22px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags .vscomp-value-tag{margin:0 0 4px 4px;padding:2px 8px 2px 3px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags .vscomp-value-tag.more-value-count{padding-left:8px}.vscomp-wrapper.text-direction-rtl.show-value-as-tags.has-value .vscomp-clear-button{left:2px} /*! * Popover v1.0.7 * https://sa-si-dev.github.io/popover diff --git a/docs/assets/virtual-select.min.js b/docs/assets/virtual-select.min.js index 6f2f1de..c2001ea 100644 --- a/docs/assets/virtual-select.min.js +++ b/docs/assets/virtual-select.min.js @@ -1,5 +1,5 @@ /*! - * Virtual Select v1.0.28 + * Virtual Select v1.0.29 * https://sa-si-dev.github.io/virtual-select * Licensed under MIT (https://github.com/sa-si-dev/virtual-select/blob/master/LICENSE) - */!function(){"use strict";function e(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,i){if(e){if("string"==typeof e)return t(e,i);var o=Object.prototype.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?t(e,i):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,o=new Array(t);i1&&void 0!==arguments[1]&&arguments[1];return!0===e||"true"===e||!1!==e&&"false"!==e&&t}},{key:"isEmpty",value:function(e){var t=!1;return e?Array.isArray(e)?0===e.length&&(t=!0):"object"===i(e)&&0===Object.keys(e).length&&(t=!0):t=!0,t}},{key:"isNotEmpty",value:function(e){return!this.isEmpty(e)}},{key:"removeItemFromArray",value:function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!Array.isArray(t)||!t.length)return t;var s=o?e(t):t,n=s.indexOf(i);return-1!==n&&s.splice(n,1),s}},{key:"removeArrayEmpty",value:function(e){return Array.isArray(e)&&e.length?e.filter((function(e){return!!e})):[]}},{key:"getRandomInt",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=Math.ceil(t),o=Math.floor(e);return Math.floor(Math.random()*(o-i-1))+i}}],(n=null)&&o(s.prototype,n),r&&o(s,r),Object.defineProperty(s,"prototype",{writable:!1}),t}();function n(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var o,s,n=[],r=!0,a=!1;try{for(i=i.call(e);!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,s=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw s}}return n}}(e,t)||a(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){if(e){if("string"==typeof e)return l(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,o=new Array(t);ie.offsetWidth}},{key:"getData",value:function(e,t,i){if(e){var o=e?e.dataset[t]:"";return"number"===i?o=parseFloat(o)||0:"true"===o?o=!0:"false"===o&&(o=!1),o}}},{key:"setData",value:function(e,t,i){e&&(e.dataset[t]=i)}},{key:"setAttr",value:function(e,t,i){e&&e.setAttribute(t,i)}},{key:"setAttrFromEle",value:function(e,t,i,o){var s={};i.forEach((function(t){s[t]=e.getAttribute(t)})),i.forEach((function(e){var i=s[e];(i||-1!==o.indexOf(e)&&""===i)&&t.setAttribute(e,i)}))}},{key:"setStyle",value:function(e,t,i){e&&(e.style[t]=i)}},{key:"setStyles",value:function(e,t){e&&t&&Object.keys(t).forEach((function(i){e.style[i]=t[i]}))}},{key:"setAria",value:function(e,t,i){var o=t;"role"!==o&&(o="aria-".concat(o)),e.setAttribute(o,i)}},{key:"getElements",value:function(e){return e?void 0===e.forEach?[e]:e:[]}},{key:"addEvent",value:function(t,i,o){t&&(i=s.removeArrayEmpty(i.split(" "))).forEach((function(i){(t=e.getElements(t)).forEach((function(e){e.addEventListener(i,o)}))}))}},{key:"dispatchEvent",value:function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];t&&(t=e.getElements(t),setTimeout((function(){t.forEach((function(e){e.dispatchEvent(new CustomEvent(i,{bubbles:o}))}))}),0))}},{key:"getAttributesText",value:function(e){var t="";return e?(Object.entries(e).forEach((function(e){var i=n(e,2),o=i[0],s=i[1];void 0!==s&&(t+=" ".concat(o,'="').concat(s,'" '))})),t):t}},{key:"convertPropToDataAttr",value:function(e){return e?"data-".concat(e).replace(/([A-Z])/g,"-$1").toLowerCase():""}}],(i=null)&&p(t.prototype,i),o&&p(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function h(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function c(e){return function(e){if(Array.isArray(e))return v(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||d(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){if(e){if("string"==typeof e)return v(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?v(e,t):void 0}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,o=new Array(t);i\n \n\n
\n
\n ").concat(this.placeholder,'\n
\n\n
\n\n
\n \n
\n
\n\n ').concat(this.renderDropbox({wrapperClasses:t}),"\n ");this.$ele.innerHTML=r,this.$body=document.querySelector("body"),this.$wrapper=this.$ele.querySelector(".vscomp-wrapper"),this.hasDropboxWrapper?(this.$allWrappers=[this.$wrapper,this.$dropboxWrapper],this.$dropboxContainer=this.$dropboxWrapper.querySelector(".vscomp-dropbox-container"),u.addClass(this.$dropboxContainer,"pop-comp-wrapper")):(this.$allWrappers=[this.$wrapper],this.$dropboxContainer=this.$wrapper.querySelector(".vscomp-dropbox-container")),this.$toggleButton=this.$ele.querySelector(".vscomp-toggle-button"),this.$clearButton=this.$ele.querySelector(".vscomp-clear-button"),this.$valueText=this.$ele.querySelector(".vscomp-value"),this.$hiddenInput=this.$ele.querySelector(".vscomp-hidden-input"),this.$dropbox=this.$dropboxContainer.querySelector(".vscomp-dropbox"),this.$dropboxCloseButton=this.$dropboxContainer.querySelector(".vscomp-dropbox-close-button"),this.$search=this.$dropboxContainer.querySelector(".vscomp-search-wrapper"),this.$optionsContainer=this.$dropboxContainer.querySelector(".vscomp-options-container"),this.$optionsList=this.$dropboxContainer.querySelector(".vscomp-options-list"),this.$options=this.$dropboxContainer.querySelector(".vscomp-options"),this.$noOptions=this.$dropboxContainer.querySelector(".vscomp-no-options"),this.$noSearchResults=this.$dropboxContainer.querySelector(".vscomp-no-search-results"),this.afterRenderWrapper()}}},{key:"renderDropbox",value:function(e){var t=e.wrapperClasses,i="self"!==this.dropboxWrapper?document.querySelector(this.dropboxWrapper):null,o='
\n
\n
\n\n
\n
\n\n
\n
\n
\n
\n\n
\n
').concat(this.noOptionsText,'
\n
').concat(this.noSearchResultsText,'
\n\n \n
\n
');if(i){var s=document.createElement("div");return this.$dropboxWrapper=s,this.hasDropboxWrapper=!0,s.innerHTML=o,i.appendChild(s),u.addClass(s,"vscomp-dropbox-wrapper ".concat(t)),""}return this.hasDropboxWrapper=!1,o}},{key:"renderOptions",value:function(){var e,t=this,i="",o=this.getVisibleOptions(),n="",r="",a=!(!this.markSearchResults||!this.searchValue),l=this.labelRenderer,p=this.disableOptionGroupCheckbox,u="function"==typeof l,h=this.uniqueId,c=this.searchGroup,d=s.convertToBoolean;if(a&&(e=new RegExp("(".concat(this.searchValue,")"),"gi")),this.multiple&&(n=''),this.allowNewOption){var v=this.getTooltipAttrText("New Option");r='")}o.forEach((function(o){var s,v=o.index,f="vscomp-option",y=t.getTooltipAttrText("",!0,!0),b=n,g="",m="",O="",S=d(o.isSelected),x="";o.isFocused&&(f+=" focused"),o.isDisabled&&(f+=" disabled",x='aria-disabled="true"'),o.isGroupTitle&&(f+=" group-title",p&&(b="")),S&&(f+=" selected"),o.isGroupOption&&(f+=" group-option",O='data-group-index="'.concat(o.groupIndex,'"')),s=u?l(o):o.label,o.description&&(m='
").concat(o.description,"
")),o.isCurrentNew?(f+=" current-new",g+=r):!a||o.isGroupTitle&&!c||(s=s.replace(e,"$1")),i+='
\n ").concat(b,'\n \n ").concat(s,"\n \n ").concat(m,"\n ").concat(g,"\n
")})),this.$options.innerHTML=i,this.$visibleOptions=this.$options.querySelectorAll(".vscomp-option"),this.afterRenderOptions()}},{key:"renderSearch",value:function(){if(this.hasSearchContainer){var e="",t="";this.multiple&&!this.disableSelectAll&&(e='\n \n '.concat(this.selectAllText,"\n ")),this.hasSearch&&(t='\n ×'));var i='
\n '.concat(e,"\n ").concat(t,"\n
");this.$search.innerHTML=i,this.$searchInput=this.$dropboxContainer.querySelector(".vscomp-search-input"),this.$searchClear=this.$dropboxContainer.querySelector(".vscomp-search-clear"),this.$toggleAllButton=this.$dropboxContainer.querySelector(".vscomp-toggle-all-button"),this.$toggleAllCheckbox=this.$dropboxContainer.querySelector(".vscomp-toggle-all-checkbox"),this.addEvent(this.$searchInput,"keyup change","onSearch"),this.addEvent(this.$searchClear,"click","onSearchClear"),this.addEvent(this.$toggleAllButton,"click","onToggleAllOptions")}}},{key:"addEvents",value:function(){this.addEvent(document,"click","onDocumentClick"),this.addEvent(this.$allWrappers,"keydown","onKeyDown"),this.addEvent(this.$toggleButton,"click","onToggleButtonClick"),this.addEvent(this.$clearButton,"click","onClearButtonClick"),this.addEvent(this.$dropboxContainer,"click","onDropboxContainerClick"),this.addEvent(this.$dropboxCloseButton,"click","onDropboxCloseButtonClick"),this.addEvent(this.$optionsContainer,"scroll","onOptionsScroll"),this.addEvent(this.$options,"click","onOptionsClick"),this.addEvent(this.$options,"mouseover","onOptionsMouseOver"),this.addEvent(this.$options,"touchmove","onOptionsTouchMove"),this.addMutationObserver()}},{key:"addEvent",value:function(e,t,i){var o=this;e&&(t=s.removeArrayEmpty(t.split(" "))).forEach((function(t){var s="".concat(i,"-").concat(t),n=o.events[s];n||(n=o[i].bind(o),o.events[s]=n),u.addEvent(e,t,n)}))}},{key:"onDocumentClick",value:function(e){var t=e.target.closest(".vscomp-wrapper");t!==this.$wrapper&&t!==this.$dropboxWrapper&&this.isOpened()&&this.closeDropbox()}},{key:"onKeyDown",value:function(e){var t=e.which||e.keyCode,i=y[t];i&&this[i](e)}},{key:"onEnterPress",value:function(e){e.preventDefault(),this.isOpened()?this.selectFocusedOption():this.openDropbox()}},{key:"onDownArrowPress",value:function(e){e.preventDefault(),this.isOpened()?this.focusOption("next"):this.openDropbox()}},{key:"onUpArrowPress",value:function(e){e.preventDefault(),this.isOpened()?this.focusOption("previous"):this.openDropbox()}},{key:"onToggleButtonClick",value:function(e){var t=e.target;t.closest(".vscomp-value-tag-clear-button")?this.removeValue(t.closest(".vscomp-value-tag")):t.closest(".toggle-button-child")||this.toggleDropbox()}},{key:"onClearButtonClick",value:function(){this.reset()}},{key:"onOptionsScroll",value:function(){this.setVisibleOptions()}},{key:"onOptionsClick",value:function(e){var t=e.target.closest(".vscomp-option");t&&!u.hasClass(t,"disabled")&&(u.hasClass(t,"group-title")?this.onGroupTitleClick(t):this.selectOption(t,{event:e}))}},{key:"onGroupTitleClick",value:function(e){if(e&&this.multiple&&!this.disableOptionGroupCheckbox){var t=!u.hasClass(e,"selected");this.toggleGroupTitleCheckbox(e,t),this.toggleGroupOptions(e,t)}}},{key:"onDropboxContainerClick",value:function(e){e.target.closest(".vscomp-dropbox")||this.closeDropbox()}},{key:"onDropboxCloseButtonClick",value:function(){this.closeDropbox()}},{key:"onOptionsMouseOver",value:function(e){var t=e.target.closest(".vscomp-option");t&&this.isOpened()&&(u.hasClass(t,"disabled")||u.hasClass(t,"group-title")?this.removeOptionFocus():this.focusOption(null,t))}},{key:"onOptionsTouchMove",value:function(){this.removeOptionFocus()}},{key:"onSearch",value:function(e){e.stopPropagation(),this.setSearchValue(e.target.value,!0)}},{key:"onSearchClear",value:function(){this.setSearchValue(""),this.focusSearchInput()}},{key:"onToggleAllOptions",value:function(){this.toggleAllOptions()}},{key:"onResize",value:function(){this.setOptionsContainerHeight(!0)}},{key:"addMutationObserver",value:function(){var e=this;if(this.hasDropboxWrapper){var t=this.$ele;this.mutationObserver=new MutationObserver((function(i){i.some((function(i){var o=c(i.removedNodes).some((function(e){if(e===t||e.contains(t))return!0}));return o&&e.destroy(),o}))})),this.mutationObserver.observe(document.querySelector("body"),{childList:!0,subtree:!0})}}},{key:"beforeValueSet",value:function(e){this.toggleAllOptionsClass(!e&&void 0)}},{key:"beforeSelectNewValue",value:function(){var e=this,t=this.getNewOption(),i=t.index;this.newValues.push(t.value),this.setOptionProp(i,"isCurrentNew",!1),this.setOptionProp(i,"isNew",!0),setTimeout((function(){e.setSearchValue(""),e.focusSearchInput()}),0)}},{key:"afterRenderWrapper",value:function(){u.addClass(this.$ele,"vscomp-ele"),this.renderSearch(),this.setEleStyles(),this.setDropboxStyles(),this.setOptionsHeight(),this.setVisibleOptions(),this.setOptionsContainerHeight(),this.addEvents(),this.setEleProps(),this.keepAlwaysOpen||this.showAsPopup||this.initDropboxPopover(),this.initialSelectedValue?this.setValueMethod(this.initialSelectedValue,this.silentInitialValueSet):this.autoSelectFirstOption&&this.visibleOptions.length&&this.setValueMethod(this.visibleOptions[0].value,this.silentInitialValueSet),this.showOptionsOnlyOnSearch&&this.setSearchValue("",!1,!0),this.initialDisabled&&this.disable(),this.autofocus&&this.focus()}},{key:"afterRenderOptions",value:function(){var e=this.getVisibleOptions(),t=!this.options.length&&!this.hasServerSearch,i=!t&&!e.length;(!this.allowNewOption||this.hasServerSearch||this.showOptionsOnlyOnSearch)&&u.toggleClass(this.$allWrappers,"has-no-search-results",i),u.toggleClass(this.$allWrappers,"has-no-options",t),this.setOptionAttr(),this.setOptionsPosition(),this.setOptionsTooltip()}},{key:"afterSetOptionsContainerHeight",value:function(e){e&&this.showAsPopup&&this.setVisibleOptions()}},{key:"afterSetSearchValue",value:function(){this.hasServerSearch?this.serverSearch():this.setVisibleOptionsCount(),this.selectAllOnlyVisible&&this.toggleAllOptionsClass()}},{key:"afterSetVisibleOptionsCount",value:function(){this.scrollToTop(),this.setOptionsHeight(),this.setVisibleOptions(),this.updatePosition()}},{key:"afterValueSet",value:function(){this.scrollToTop(),this.setSearchValue(""),this.renderOptions()}},{key:"afterSetOptions",value:function(e){e&&this.setSelectedProp(),this.setOptionsHeight(),this.setVisibleOptions(),this.showOptionsOnlyOnSearch&&this.setSearchValue("",!1,!0),e||this.reset()}},{key:"setProps",value:function(e){e=this.setDefaultProps(e),this.setPropsFromElementAttr(e);var t=s.convertToBoolean;this.$ele=e.ele,this.dropboxWrapper=e.dropboxWrapper,this.valueKey=e.valueKey,this.labelKey=e.labelKey,this.descriptionKey=e.descriptionKey,this.aliasKey=e.aliasKey,this.optionHeightText=e.optionHeight,this.optionHeight=parseFloat(this.optionHeightText),this.multiple=t(e.multiple),this.hasSearch=t(e.search),this.searchGroup=t(e.searchGroup),this.hideClearButton=t(e.hideClearButton),this.autoSelectFirstOption=t(e.autoSelectFirstOption),this.hasOptionDescription=t(e.hasOptionDescription),this.silentInitialValueSet=t(e.silentInitialValueSet),this.allowNewOption=t(e.allowNewOption),this.markSearchResults=t(e.markSearchResults),this.showSelectedOptionsFirst=t(e.showSelectedOptionsFirst),this.disableSelectAll=t(e.disableSelectAll),this.keepAlwaysOpen=t(e.keepAlwaysOpen),this.showDropboxAsPopup=t(e.showDropboxAsPopup),this.hideValueTooltipOnSelectAll=t(e.hideValueTooltipOnSelectAll),this.showOptionsOnlyOnSearch=t(e.showOptionsOnlyOnSearch),this.selectAllOnlyVisible=t(e.selectAllOnlyVisible),this.alwaysShowSelectedOptionsCount=t(e.alwaysShowSelectedOptionsCount),this.disableAllOptionsSelectedText=t(e.disableAllOptionsSelectedText),this.showValueAsTags=t(e.showValueAsTags),this.disableOptionGroupCheckbox=t(e.disableOptionGroupCheckbox),this.enableSecureText=t(e.enableSecureText),this.setValueAsArray=t(e.setValueAsArray),this.disableValidation=t(e.disableValidation),this.initialDisabled=t(e.disabled),this.required=t(e.required),this.autofocus=t(e.autofocus),this.useGroupValue=t(e.useGroupValue),this.noOptionsText=e.noOptionsText,this.noSearchResultsText=e.noSearchResultsText,this.selectAllText=e.selectAllText,this.searchPlaceholderText=e.searchPlaceholderText,this.optionsSelectedText=e.optionsSelectedText,this.optionSelectedText=e.optionSelectedText,this.allOptionsSelectedText=e.allOptionsSelectedText,this.clearButtonText=e.clearButtonText,this.moreText=e.moreText,this.placeholder=e.placeholder,this.position=e.position,this.textDirection=e.textDirection,this.dropboxWidth=e.dropboxWidth,this.tooltipFontSize=e.tooltipFontSize,this.tooltipAlignment=e.tooltipAlignment,this.tooltipMaxWidth=e.tooltipMaxWidth,this.noOfDisplayValues=parseInt(e.noOfDisplayValues),this.zIndex=parseInt(e.zIndex),this.maxValues=parseInt(e.maxValues),this.name=this.secureText(e.name),this.additionalClasses=e.additionalClasses,this.popupDropboxBreakpoint=e.popupDropboxBreakpoint,this.popupPosition=e.popupPosition,this.onServerSearch=e.onServerSearch,this.labelRenderer=e.labelRenderer,this.initialSelectedValue=0===e.selectedValue?"0":e.selectedValue,this.emptyValue=e.emptyValue,this.ariaLabelledby=e.ariaLabelledby,this.maxWidth=e.maxWidth,this.selectedValues=[],this.selectedOptions=[],this.newValues=[],this.events={},this.tooltipEnterDelay=200,this.searchValue="",this.searchValueOriginal="",this.isAllSelected=!1,(void 0===e.search&&this.multiple||this.allowNewOption||this.showOptionsOnlyOnSearch)&&(this.hasSearch=!0),this.hasServerSearch="function"==typeof this.onServerSearch,(this.maxValues||this.hasServerSearch||this.showOptionsOnlyOnSearch)&&(this.disableSelectAll=!0,this.disableOptionGroupCheckbox=!0),this.keepAlwaysOpen&&(this.dropboxWrapper="self"),this.showAsPopup=this.showDropboxAsPopup&&!this.keepAlwaysOpen&&window.innerWidth<=parseFloat(this.popupDropboxBreakpoint),this.hasSearchContainer=this.hasSearch||this.multiple&&!this.disableSelectAll,this.optionsCount=this.getOptionsCount(e.optionsCount),this.halfOptionsCount=Math.ceil(this.optionsCount/2),this.optionsHeight=this.getOptionsHeight(),this.uniqueId=this.getUniqueId()}},{key:"setDefaultProps",value:function(e){var t={dropboxWrapper:"self",valueKey:"value",labelKey:"label",descriptionKey:"description",aliasKey:"alias",optionsCount:5,noOfDisplayValues:50,optionHeight:"40px",noOptionsText:"No options found",noSearchResultsText:"No results found",selectAllText:"Select All",searchPlaceholderText:"Search...",clearButtonText:"Clear",moreText:"more...",optionsSelectedText:"options selected",optionSelectedText:"option selected",allOptionsSelectedText:"All",placeholder:"Select",position:"bottom left",zIndex:e.keepAlwaysOpen?1:2,tooltipFontSize:"14px",tooltipAlignment:"center",tooltipMaxWidth:"300px",name:"",additionalClasses:"",maxValues:0,showDropboxAsPopup:!0,popupDropboxBreakpoint:"576px",popupPosition:"center",hideValueTooltipOnSelectAll:!0,emptyValue:""};return e.hasOptionDescription&&(t.optionsCount=4,t.optionHeight="50px"),Object.assign(t,e)}},{key:"setPropsFromElementAttr",value:function(e){var t=e.ele;for(var i in S){var o=t.getAttribute(i);-1===b.indexOf(i)||""!==o&&"true"!==o||(o=!0),o&&(e[S[i]]=o)}}},{key:"setEleProps",value:function(){var t=this.$ele;t.virtualSelect=this,t.value=this.multiple?[]:"",t.name=this.name,t.disabled=!1,t.required=this.required,t.autofocus=this.autofocus,t.multiple=this.multiple,t.form=t.closest("form"),t.reset=e.reset,t.setValue=e.setValueMethod,t.setOptions=e.setOptionsMethod,t.setDisabledOptions=e.setDisabledOptionsMethod,t.toggleSelectAll=e.toggleSelectAll,t.isAllSelected=e.isAllSelected,t.addOption=e.addOptionMethod,t.getNewValue=e.getNewValueMethod,t.getDisplayValue=e.getDisplayValueMethod,t.getSelectedOptions=e.getSelectedOptionsMethod,t.open=e.openMethod,t.close=e.closeMethod,t.focus=e.focusMethod,t.enable=e.enableMethod,t.disable=e.disableMethod,t.destroy=e.destroyMethod,t.validate=e.validateMethod,t.toggleRequired=e.toggleRequiredMethod,this.hasDropboxWrapper&&(this.$dropboxWrapper.virtualSelect=this)}},{key:"setValueMethod",value:function(e,t){var i={},o={},s=[],n=this.multiple;if(e){if(Array.isArray(e)||(e=[e]),n){var r=this.maxValues;r&&e.length>r&&e.splice(r)}else e.length>1&&(e=[e[0]]);e=e.map((function(e){return e||0==e?e.toString():""})),this.useGroupValue&&(e=this.setGroupOptionsValue(e)),e.forEach((function(e,t){i[e]=!0,o[e]=t})),this.allowNewOption&&e&&this.setNewOptionsFromValue(e)}this.options.forEach((function(e){!0!==i[e.value]||e.isDisabled||e.isGroupTitle?e.isSelected=!1:(e.isSelected=!0,s.push(e.value))})),n?(this.hasOptionGroup&&this.setGroupsSelectedProp(),s.sort((function(e,t){return o[e]-o[t]}))):s=s[0],this.beforeValueSet(),this.setValue(s,{disableEvent:t}),this.afterValueSet()}},{key:"setGroupOptionsValue",value:function(e){var t=[],i={},o={};return e.forEach((function(e){o[e]=!0})),this.options.forEach((function(e){var s=e.value,n=!0===o[s];e.isGroupTitle?n&&(i[e.index]=!0):(n||i[e.groupIndex])&&t.push(s)})),t}},{key:"setGroupsSelectedProp",value:function(){var e=this.isAllGroupOptionsSelected.bind(this);this.options.forEach((function(t){t.isGroupTitle&&(t.isSelected=e(t.index))}))}},{key:"setOptionsMethod",value:function(e,t){this.setOptions(e),this.afterSetOptions(t)}},{key:"setDisabledOptionsMethod",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.setDisabledOptions(e,!0),t||(this.setValueMethod(null),this.toggleAllOptionsClass()),this.setVisibleOptions()}},{key:"setDisabledOptions",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=[];if(e)if(!0===e)t&&this.options.forEach((function(e){return e.isDisabled=!0,i.push(e.value),e}));else{i=e.map((function(e){return e.toString()}));var o={};i.forEach((function(e){o[e]=!0})),t&&this.options.forEach((function(e){return e.isDisabled=!0===o[e.value],e}))}else t&&this.options.forEach((function(e){return e.isDisabled=!1,e}));this.disabledOptions=i}},{key:"setOptions",value:function(e){e||(e=[]);var t=[],i=this.disabledOptions.length,o=this.valueKey,n=this.labelKey,r=this.descriptionKey,a=this.aliasKey,l=this.hasOptionDescription,p=s.getString,u=this.secureText.bind(this),h=s.convertToBoolean,c=this.getAlias.bind(this),d=0,v=!1,f={};this.disabledOptions.forEach((function(e){f[e]=!0})),e.forEach((function e(s){var y=u(p(s[o])),b=s.options,g=!!b,m={index:d,value:y,label:u(p(s[n])),alias:c(s[a]),isVisible:h(s.isVisible,!0),isNew:s.isNew||!1,isGroupTitle:g};if(i&&(m.isDisabled=!0===f[y]),s.isGroupOption&&(m.isGroupOption=!0,m.groupIndex=s.groupIndex),l&&(m.description=u(p(s[r]))),s.customData&&(m.customData=s.customData),t.push(m),d++,g){var O=m.index;v=!0,b.forEach((function(t){t.isGroupOption=!0,t.groupIndex=O,e(t)}))}}));var y=t.length,b=this.$ele;b.options=t,b.length=y,this.options=t,this.visibleOptionsCount=y,this.lastOptionIndex=y-1,this.newValues=[],this.hasOptionGroup=v,this.setSortedOptions()}},{key:"setServerOptions",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.setOptionsMethod(t,!0);var i=this.selectedOptions,o=this.options,s=!1;if(i.length){var n={};s=!0,o.forEach((function(e){n[e.value]=!0})),i.forEach((function(e){!1===n[e.value]&&(e.isVisible=!1,o.push(e))})),this.setOptionsMethod(o,!0)}if(this.allowNewOption&&this.searchValue){var r=o.some((function(t){return t.label.toLowerCase()===e.searchValue}));r||(s=!0,this.setNewOption())}s?(this.setVisibleOptionsCount(),this.multiple&&this.toggleAllOptionsClass(),this.setValueText()):this.updatePosition(),u.removeClass(this.$allWrappers,"server-searching")}},{key:"setSelectedOptions",value:function(){this.selectedOptions=this.options.filter((function(e){return e.isSelected}))}},{key:"setSortedOptions",value:function(){var e=c(this.options);this.showSelectedOptionsFirst&&this.selectedValues.length&&(e=this.hasOptionGroup?this.sortOptionsGroup(e):this.sortOptions(e)),this.sortedOptions=e}},{key:"setVisibleOptions",value:function(){var e=c(this.sortedOptions),t=2*this.optionsCount,i=this.getVisibleStartIndex(),o=this.getNewOption(),s=i+t-1,n=0;o&&(o.visibleIndex=n,n++),e=e.filter((function(e){var t=!1;return e.isVisible&&!e.isCurrentNew&&(t=n>=i&&n<=s,e.visibleIndex=n,n++),t})),o&&(e=[o].concat(c(e))),this.visibleOptions=e,this.renderOptions()}},{key:"setOptionsPosition",value:function(e){void 0===e&&(e=this.getVisibleStartIndex());var t=e*this.optionHeight;this.$options.style.transform="translate3d(0, ".concat(t,"px, 0)"),u.setData(this.$options,"top",t)}},{key:"setOptionsTooltip",value:function(){var e=this,t=this.getVisibleOptions(),i=this.hasOptionDescription;t.forEach((function(t){var o=e.$dropboxContainer.querySelector('.vscomp-option[data-index="'.concat(t.index,'"]'));u.setData(o.querySelector(".vscomp-option-text"),"tooltip",t.label),i&&u.setData(o.querySelector(".vscomp-option-description"),"tooltip",t.description)}))}},{key:"setValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.disableEvent,o=void 0!==i&&i,n=t.disableValidation,r=void 0!==n&&n;e?Array.isArray(e)?this.selectedValues=c(e):this.selectedValues=[e]:this.selectedValues=[];var a=this.getValue();this.$ele.value=a,this.$hiddenInput.value=this.getInputValue(a),this.isMaxValuesSelected=!!(this.maxValues&&this.maxValues<=this.selectedValues.length),this.toggleAllOptionsClass(),this.setValueText(),u.toggleClass(this.$allWrappers,"has-value",s.isNotEmpty(this.selectedValues)),u.toggleClass(this.$allWrappers,"max-value-selected",this.isMaxValuesSelected),r||this.validate(),o||u.dispatchEvent(this.$ele,"change",!0)}},{key:"setValueText",value:function(){var e=this.multiple,t=[],i=[],o=this.selectedValues.length,s=this.noOfDisplayValues,n=this.showValueAsTags,r=this.$valueText,a=0,l=this.isAllSelected&&!this.hasServerSearch&&!this.disableAllOptionsSelectedText&&!n;if(l&&this.hideValueTooltipOnSelectAll)r.innerHTML="".concat(this.allOptionsSelectedText," (").concat(o,")");else{var p,h=function(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=d(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var o=0,s=function(){};return{s:s,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,r=!0,a=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return r=e.done,e},e:function(e){a=!0,n=e},f:function(){try{r||null==i.return||i.return()}finally{if(a)throw n}}}}(this.getSelectedOptions({fullDetails:!0,keepSelectionOrder:!0}));try{for(h.s();!(p=h.n()).done;){var c=p.value;if(!c.isCurrentNew){if(a>=s)break;var v=c.label;if(t.push(v),a++,n){var f='\n ').concat(v,'\n \n \n \n ');i.push(f)}else i.push(v)}}}catch(e){h.e(e)}finally{h.f()}var y=o-s;y>0&&i.push('+ '.concat(y," ").concat(this.moreText,""));var b=t.join(", ");if(""===b)r.innerHTML=this.placeholder;else if(r.innerHTML=b,e){var g=this.maxValues;if(u.hasEllipsis(r)||g||this.alwaysShowSelectedOptionsCount||n){var m=''.concat(o,"");if(g&&(m+=' / '.concat(g,"")),l)r.innerHTML="".concat(this.allOptionsSelectedText," (").concat(o,")");else if(n)r.innerHTML=i.join(""),this.$valueTags=r.querySelectorAll(".vscomp-value-tag"),this.setValueTagAttr();else{var O=1===o?this.optionSelectedText:this.optionsSelectedText;r.innerHTML="".concat(m," ").concat(O)}}else i=[]}}var S="";0===o?S=this.placeholder:n||(S=i.join(", ")),u.setData(r,"tooltip",S),e&&(u.setData(r,"tooltipEllipsisOnly",0===o),n&&this.updatePosition())}},{key:"setSearchValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(e!==this.searchValueOriginal||i){t||(this.$searchInput.value=e);var o=e.replace(/\\/g,"").toLowerCase().trim();this.searchValue=o,this.searchValueOriginal=e,u.toggleClass(this.$allWrappers,"has-search-value",e),this.afterSetSearchValue()}}},{key:"setVisibleOptionsCount",value:function(){var e,t=0,i=!1,o=this.searchValue,s=this.searchGroup,n=this.showOptionsOnlyOnSearch,r=this.isOptionVisible.bind(this);this.hasOptionGroup&&(e=this.getVisibleOptionGroupsMapping(o)),this.options.forEach((function(a){var l;a.isCurrentNew||(n&&!o?(a.isVisible=!1,l={isVisible:!1,hasExactOption:!1}):l=r({data:a,searchValue:o,hasExactOption:i,visibleOptionGroupsMapping:e,searchGroup:s}),l.isVisible&&t++,i||(i=l.hasExactOption))})),this.allowNewOption&&(o&&!i?(this.setNewOption(),t++):this.removeNewOption()),this.visibleOptionsCount=t,this.afterSetVisibleOptionsCount()}},{key:"setOptionProp",value:function(e,t,i){this.options[e]&&(this.options[e][t]=i)}},{key:"setOptionsHeight",value:function(){this.$optionsList.style.height=this.optionHeight*this.visibleOptionsCount+"px"}},{key:"setOptionsContainerHeight",value:function(e){var t;e?this.showAsPopup&&(this.optionsCount=this.getOptionsCount(),this.halfOptionsCount=Math.ceil(this.optionsCount/2),t=this.getOptionsHeight(),this.optionsHeight=t):(t=this.optionsHeight,this.keepAlwaysOpen&&(u.setStyle(this.$noOptions,"height",t),u.setStyle(this.$noSearchResults,"height",t))),u.setStyle(this.$optionsContainer,"max-height",t),this.afterSetOptionsContainerHeight(e)}},{key:"setNewOption",value:function(e){var t=e||this.searchValueOriginal.trim();if(t){var i=this.getNewOption();if(i){var o=i.index;this.setOptionProp(o,"value",this.secureText(t)),this.setOptionProp(o,"label",this.secureText(t))}else{var s={value:t,label:t};e?(s.isNew=!0,this.newValues.push(t)):s.isCurrentNew=!0,this.addOption(s)}}}},{key:"setSelectedProp",value:function(){var e={};this.selectedValues.forEach((function(t){e[t]=!0})),this.options.forEach((function(t){!0===e[t.value]&&(t.isSelected=!0)}))}},{key:"setNewOptionsFromValue",value:function(e){if(e){var t=this.setNewOption.bind(this),i={};this.options.forEach((function(e){i[e.value]=!0})),e.forEach((function(e){e&&!0!==i[e]&&t(e)}))}}},{key:"setDropboxWrapperWidth",value:function(){if(!this.showAsPopup){var e=this.dropboxWidth||"".concat(this.$wrapper.offsetWidth,"px");u.setStyle(this.$dropboxContainer,"max-width",e)}}},{key:"setEleStyles",value:function(){var e=this.maxWidth,t={};e&&(t["max-width"]=e),u.setStyles(this.$ele,t)}},{key:"setDropboxStyles",value:function(){var e=this.dropboxWidth,t={},i={"z-index":this.zIndex};e&&(this.showAsPopup?t["max-width"]=e:i.width=e),u.setStyles(this.$dropboxContainer,i),u.setStyles(this.$dropbox,t)}},{key:"setOptionAttr",value:function(){var e=this.$visibleOptions,t=this.options,i=this.optionHeight+"px",o=u.setStyle,s=u.getData,n=u.setData;e&&e.length&&e.forEach((function(e){var r=t[s(e,"index")];o(e,"height",i),n(e,"value",r.value)}))}},{key:"setValueTagAttr",value:function(){var e=this.$valueTags;if(e&&e.length){var t=u.getData,i=u.setData,o=this.options;e.forEach((function(e){var s=t(e,"index");if(void 0!==s){var n=o[s];i(e,"value",n.value)}}))}}},{key:"getVisibleOptions",value:function(){return this.visibleOptions||[]}},{key:"getValue",value:function(){return this.multiple?this.useGroupValue?this.getGroupValue():this.selectedValues:this.selectedValues[0]||""}},{key:"getGroupValue",value:function(){var e=[],t={};return this.options.forEach((function(i){if(i.isSelected){var o=i.value;i.isGroupTitle?o&&(t[i.index]=!0,e.push(o)):!0!==t[i.groupIndex]&&e.push(o)}})),e}},{key:"getInputValue",value:function(e){var t=e;return t&&t.length?this.setValueAsArray&&this.multiple&&(t=JSON.stringify(t)):t=this.emptyValue,t}},{key:"getFirstVisibleOptionIndex",value:function(){return Math.ceil(this.$optionsContainer.scrollTop/this.optionHeight)}},{key:"getVisibleStartIndex",value:function(){var e=this.getFirstVisibleOptionIndex()-this.halfOptionsCount;return e<0&&(e=0),e}},{key:"getTooltipAttrText",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o={"data-tooltip":e||"","data-tooltip-enter-delay":this.tooltipEnterDelay,"data-tooltip-z-index":this.zIndex,"data-tooltip-font-size":this.tooltipFontSize,"data-tooltip-alignment":this.tooltipAlignment,"data-tooltip-max-width":this.tooltipMaxWidth,"data-tooltip-ellipsis-only":t,"data-tooltip-allow-html":i};return u.getAttributesText(o)}},{key:"getOptionObj",value:function(e){if(e){var t=s.getString,i=this.secureText.bind(this);return{index:e.index,value:i(t(e.value)),label:i(t(e.label)),description:i(t(e.description)),alias:this.getAlias(e.alias),isCurrentNew:e.isCurrentNew||!1,isNew:e.isNew||!1,isVisible:!0}}}},{key:"getNewOption",value:function(){var e=this.options[this.lastOptionIndex];if(e&&e.isCurrentNew)return e}},{key:"getOptionIndex",value:function(e){var t;return this.options.some((function(i){if(i.value==e)return t=i.index,!0})),t}},{key:"getNewValue",value:function(){var e={};this.newValues.forEach((function(t){e[t]=!0}));var t=this.selectedValues.filter((function(t){return!0===e[t]}));return this.multiple?t:t[0]}},{key:"getAlias",value:function(e){return e=e?(e=Array.isArray(e)?e.join(","):e.toString().trim()).toLowerCase():""}},{key:"getDisplayValue",value:function(){var e=[];return this.options.forEach((function(t){t.isSelected&&e.push(t.label)})),this.multiple?e:e[0]||""}},{key:"getSelectedOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.fullDetails,i=void 0!==t&&t,o=e.keepSelectionOrder,s=void 0!==o&&o,n=this.valueKey,r=this.labelKey,a=this.selectedValues,l=[];if(this.options.forEach((function(e){if(e.isSelected)if(i)l.push(e);else{var t,o=(h(t={},n,e.value),h(t,r,e.label),t);e.isNew&&(o.isNew=!0),e.customData&&(o.customData=e.customData),l.push(o)}})),s){var p={};a.forEach((function(e,t){p[e]=t})),l.sort((function(e,t){return p[e.value]-p[t.value]}))}return this.multiple||i?l:l[0]}},{key:"getVisibleOptionGroupsMapping",value:function(e){var t=this.options,i={},o=this.isOptionVisible.bind(this);return(t=this.structureOptionGroup(t)).forEach((function(t){i[t.index]=t.options.some((function(t){return o({data:t,searchValue:e}).isVisible}))})),i}},{key:"getOptionsCount",value:function(e){if(this.showAsPopup){var t=80*window.innerHeight/100-48;this.hasSearchContainer&&(t-=40),e=Math.floor(t/this.optionHeight)}else e=parseInt(e);return e}},{key:"getOptionsHeight",value:function(){return this.optionsCount*this.optionHeight+"px"}},{key:"getSibling",value:function(e,t){var i="next"===t?"nextElementSibling":"previousElementSibling";do{e&&(e=e[i])}while(u.hasClass(e,"disabled")||u.hasClass(e,"group-title"));return e}},{key:"getUniqueId",value:function(){var e=s.getRandomInt(1e4);return document.querySelector("#vscomp-ele-wrapper-".concat(e))?this.getUniqueId():e}},{key:"initDropboxPopover",value:function(){var e={ele:this.$ele,target:this.$dropboxContainer,position:this.position,zIndex:this.zIndex,margin:4,transitionDistance:30,hideArrowIcon:!0,disableManualAction:!0,disableUpdatePosition:!this.hasDropboxWrapper,afterShow:this.afterShowPopper.bind(this),afterHide:this.afterHidePopper.bind(this)};this.dropboxPopover=new PopoverComponent(e)}},{key:"openDropbox",value:function(e){this.isSilentOpen=e,e?u.setStyle(this.$dropboxContainer,"display","inline-flex"):(u.dispatchEvent(this.$ele,"beforeOpen"),u.setAria(this.$wrapper,"expanded",!0)),this.setDropboxWrapperWidth(),u.removeClass(this.$allWrappers,"closed"),this.dropboxPopover&&!e?this.dropboxPopover.show():this.afterShowPopper()}},{key:"afterShowPopper",value:function(){var e=this.isSilentOpen;this.isSilentOpen=!1,e||(this.moveSelectedOptionsFirst(),u.addClass(this.$allWrappers,"focused"),this.showAsPopup?(u.addClass(this.$body,"vscomp-popup-active"),this.isPopupActive=!0):this.focusSearchInput(),u.dispatchEvent(this.$ele,"afterOpen"))}},{key:"closeDropbox",value:function(e){this.isSilentClose=e,this.keepAlwaysOpen?this.removeOptionFocus():(e?u.setStyle(this.$dropboxContainer,"display",""):(u.dispatchEvent(this.$ele,"beforeClose"),u.setAria(this.$wrapper,"expanded",!1),u.setAria(this.$wrapper,"activedescendant","")),this.dropboxPopover&&!e?this.dropboxPopover.hide():this.afterHidePopper())}},{key:"afterHidePopper",value:function(){var e=this.isSilentClose;this.isSilentClose=!1,u.removeClass(this.$allWrappers,"focused"),this.removeOptionFocus(),e||this.isPopupActive&&(u.removeClass(this.$body,"vscomp-popup-active"),this.isPopupActive=!1),u.addClass(this.$allWrappers,"closed"),e||u.dispatchEvent(this.$ele,"afterClose")}},{key:"moveSelectedOptionsFirst",value:function(){this.showSelectedOptionsFirst&&(this.setSortedOptions(),this.$optionsContainer.scrollTop&&this.selectedValues.length?this.scrollToTop():this.setVisibleOptions())}},{key:"toggleDropbox",value:function(){this.isOpened()?this.closeDropbox():this.openDropbox()}},{key:"updatePosition",value:function(){this.$ele.updatePosition()}},{key:"isOpened",value:function(){return!u.hasClass(this.$wrapper,"closed")}},{key:"focusSearchInput",value:function(){var e=this.$searchInput;e&&e.focus()}},{key:"focusOption",value:function(e,t){var i,o=this.$dropboxContainer.querySelector(".vscomp-option.focused");if(t)i=t;else if(o)i=this.getSibling(o,e);else{var s=this.getFirstVisibleOptionIndex();i=this.$dropboxContainer.querySelector('.vscomp-option[data-visible-index="'.concat(s,'"]')),(u.hasClass(i,"disabled")||u.hasClass(i,"group-title"))&&(i=this.getSibling(i,"next"))}i&&i!==o&&(o&&this.toggleOptionFocusedState(o,!1),this.toggleOptionFocusedState(i,!0),this.toggleFocusedProp(u.getData(i,"index"),!0),this.moveFocusedOptionToView(i))}},{key:"moveFocusedOptionToView",value:function(e){if(e||(e=this.$dropboxContainer.querySelector(".vscomp-option.focused")),e){var t,i=this.$optionsContainer.getBoundingClientRect(),o=e.getBoundingClientRect(),s=i.top,n=i.bottom,r=i.height,a=o.top,l=o.bottom,p=o.height,h=e.offsetTop,c=u.getData(this.$options,"top","number");s>a?t=h+c:n1&&void 0!==arguments[1]?arguments[1]:{},i=t.event;if(e){var o=!u.hasClass(e,"selected");if(o){if(this.multiple&&this.isMaxValuesSelected)return}else if(!this.multiple)return void this.closeDropbox();var n=this.selectedValues,r=u.getData(e,"value"),a=u.getData(e,"index","number"),l=!1,p=this.lastSelectedOptionIndex;if(this.lastSelectedOptionIndex=null,this.toggleSelectedProp(a,o),o){if(this.multiple)n.push(r),this.toggleAllOptionsClass(),this.toggleGroupOptionsParent(e),i&&i.shiftKey&&(l=!0);else{n.length&&this.toggleSelectedProp(this.getOptionIndex(n[0]),!1),n=[r];var h=this.$dropboxContainer.querySelector(".vscomp-option.selected");h&&this.toggleOptionSelectedState(h,!1),this.closeDropbox()}this.lastSelectedOptionIndex=a,this.toggleOptionSelectedState(e)}else this.multiple&&(this.toggleOptionSelectedState(e),s.removeItemFromArray(n,r),this.toggleAllOptionsClass(!1),this.toggleGroupOptionsParent(e,!1));u.hasClass(e,"current-new")&&this.beforeSelectNewValue(),this.setValue(n),l&&this.selectRangeOptions(p,a)}}},{key:"selectFocusedOption",value:function(){this.selectOption(this.$dropboxContainer.querySelector(".vscomp-option.focused"))}},{key:"selectRangeOptions",value:function(e,t){var i=this;if("number"==typeof e&&!this.maxValues){var o,s,n=this.selectedValues,r=this.hasOptionGroup,a={};if(eo&&t1&&void 0!==arguments[1]&&arguments[1];this.focusedOptionIndex&&this.setOptionProp(this.focusedOptionIndex,"isFocused",!1),this.setOptionProp(e,"isFocused",t),this.focusedOptionIndex=e}},{key:"toggleSelectedProp",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.setOptionProp(e,"isSelected",t)}},{key:"scrollToTop",value:function(){var e=!this.isOpened();e&&this.openDropbox(!0),this.$optionsContainer.scrollTop>0&&(this.$optionsContainer.scrollTop=0),e&&this.closeDropbox(!0)}},{key:"reset",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.options.forEach((function(e){e.isSelected=!1})),this.beforeValueSet(!0),this.setValue(null,{disableValidation:e}),this.afterValueSet(),e&&u.removeClass(this.$allWrappers,"has-error"),u.dispatchEvent(this.$ele,"reset")}},{key:"addOption",value:function(e,t){if(e){this.lastOptionIndex++,e.index=this.lastOptionIndex;var i=this.getOptionObj(e);this.options.push(i),this.sortedOptions.push(i),t&&(this.visibleOptionsCount++,this.afterSetOptions())}}},{key:"removeOption",value:function(e){(e||0==e)&&(this.options.splice(e,1),this.lastOptionIndex--)}},{key:"removeNewOption",value:function(){var e=this.getNewOption();e&&this.removeOption(e.index)}},{key:"sortOptions",value:function(e){return e.sort((function(e,t){var i=e.isSelected||e.isAnySelected,o=t.isSelected||t.isAnySelected;return i||o?i&&(!o||e.indexe.length)&&(t=e.length);for(var i=0,o=new Array(t);ii-s-t.width?"left":"right",vertical:n>o-n-t.height?"top":"bottom"}}},{key:"getAbsoluteCoords",value:function(e){if(e){var t=e.getBoundingClientRect(),i=window.pageXOffset,o=window.pageYOffset;return{width:t.width,height:t.height,top:t.top+o,right:t.right+i,bottom:t.bottom+o,left:t.left+i}}}},{key:"getCoords",value:function(e){return e?e.getBoundingClientRect():{}}},{key:"getData",value:function(e,t,i){if(e){var o=e?e.dataset[t]:"";return"number"===i?o=parseFloat(o)||0:"true"===o?o=!0:"false"===o&&(o=!1),o}}},{key:"setData",value:function(e,t,i){e&&(e.dataset[t]=i)}},{key:"setStyle",value:function(e,t,i){e&&(e.style[t]=i)}},{key:"show",value:function(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"block";t.setStyle(e,"display",i)}},{key:"hide",value:function(e){t.setStyle(e,"display","none")}},{key:"getHideableParent",value:function(e){for(var t,i=e.parentElement;i;){var o=getComputedStyle(i).overflow;if(-1!==o.indexOf("scroll")||-1!==o.indexOf("auto")){t=i;break}i=i.parentElement}return t}}])&&function(e,t){for(var i=0;im?m-f:M:w+u>F&&("right"===E?n="left":w=F+fO?O-c:P:C+h>I&&("bottom"===E?n="top":C=I+cu-z&&(L=u-z):"left"!==E&&"right"!==E||((R=b/2+g-B)h-z&&(R=h-z)),i.setStyle(this.$arrowEle,"transform","translate3d(".concat(L,"px, ").concat(R,"px, 0) ").concat(K))}i.hide(this.$popperEle)}},{key:"resetPosition",value:function(){i.setStyle(this.$popperEle,"transform","none"),this.setPosition()}},{key:"show",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=t.resetPosition,s=t.data;clearTimeout(this.exitDelayTimeout),clearTimeout(this.hideDurationTimeout),o&&this.resetPosition(),this.enterDelayTimeout=setTimeout((function(){var t=i.getData(e.$popperEle,"left"),o=i.getData(e.$popperEle,"top"),n="translate3d(".concat(t,"px, ").concat(o,"px, 0)"),r=e.showDuration;i.show(e.$popperEle,"inline-flex"),i.getCoords(e.$popperEle),i.setStyle(e.$popperEle,"transitionDuration",r+"ms"),i.setStyle(e.$popperEle,"transform",n),i.setStyle(e.$popperEle,"opacity",1),e.showDurationTimeout=setTimeout((function(){"function"==typeof e.afterShowCallback&&e.afterShowCallback(s)}),r)}),this.enterDelay)}},{key:"hide",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=t.data;clearTimeout(this.enterDelayTimeout),clearTimeout(this.showDurationTimeout),this.exitDelayTimeout=setTimeout((function(){if(e.$popperEle){var t=i.getData(e.$popperEle,"fromLeft"),s=i.getData(e.$popperEle,"fromTop"),n="translate3d(".concat(t,"px, ").concat(s,"px, 0)"),r=e.hideDuration;i.setStyle(e.$popperEle,"transitionDuration",r+"ms"),i.setStyle(e.$popperEle,"transform",n),i.setStyle(e.$popperEle,"opacity",0),e.hideDurationTimeout=setTimeout((function(){i.hide(e.$popperEle),"function"==typeof e.afterHideCallback&&e.afterHideCallback(o)}),r)}}),this.exitDelay)}},{key:"updatePosition",value:function(){i.setStyle(this.$popperEle,"transitionDuration","0ms"),this.resetPosition();var e=i.getData(this.$popperEle,"left"),t=i.getData(this.$popperEle,"top");i.show(this.$popperEle,"inline-flex"),i.setStyle(this.$popperEle,"transform","translate3d(".concat(e,"px, ").concat(t,"px, 0)"))}}])&&function(e,t){for(var i=0;i1&&void 0!==arguments[1]&&arguments[1];return!0===e||"true"===e||!1!==e&&"false"!==e&&t}},{key:"removeArrayEmpty",value:function(e){return Array.isArray(e)&&e.length?e.filter((function(e){return!!e})):[]}},{key:"throttle",value:function(e,t){var i,o=0;return function(){for(var s=arguments.length,n=new Array(s),r=0;re.length)&&(t=e.length);for(var i=0,o=new Array(t);i'),e=this.$popover.querySelector(".pop-comp-arrow")),this.$arrowEle=e}}},{key:"destory",value:function(){this.removeEvents()}}])&&r(i.prototype,o),s&&r(i,s),e}();window.PopoverComponent=l}(); \ No newline at end of file + */!function(){"use strict";function e(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,i){if(e){if("string"==typeof e)return t(e,i);var o=Object.prototype.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?t(e,i):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,o=new Array(t);i1&&void 0!==arguments[1]&&arguments[1];return!0===e||"true"===e||!1!==e&&"false"!==e&&t}},{key:"isEmpty",value:function(e){var t=!1;return e?Array.isArray(e)?0===e.length&&(t=!0):"object"===i(e)&&0===Object.keys(e).length&&(t=!0):t=!0,t}},{key:"isNotEmpty",value:function(e){return!this.isEmpty(e)}},{key:"removeItemFromArray",value:function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!Array.isArray(t)||!t.length)return t;var s=o?e(t):t,n=s.indexOf(i);return-1!==n&&s.splice(n,1),s}},{key:"removeArrayEmpty",value:function(e){return Array.isArray(e)&&e.length?e.filter((function(e){return!!e})):[]}},{key:"getRandomInt",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=Math.ceil(t),o=Math.floor(e);return Math.floor(Math.random()*(o-i-1))+i}}],(n=null)&&o(s.prototype,n),r&&o(s,r),Object.defineProperty(s,"prototype",{writable:!1}),t}();function n(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var o,s,n=[],r=!0,a=!1;try{for(i=i.call(e);!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,s=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw s}}return n}}(e,t)||a(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){if(e){if("string"==typeof e)return l(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,o=new Array(t);ie.offsetWidth}},{key:"getData",value:function(e,t,i){if(e){var o=e?e.dataset[t]:"";return"number"===i?o=parseFloat(o)||0:"true"===o?o=!0:"false"===o&&(o=!1),o}}},{key:"setData",value:function(e,t,i){e&&(e.dataset[t]=i)}},{key:"setAttr",value:function(e,t,i){e&&e.setAttribute(t,i)}},{key:"setAttrFromEle",value:function(e,t,i,o){var s={};i.forEach((function(t){s[t]=e.getAttribute(t)})),i.forEach((function(e){var i=s[e];(i||-1!==o.indexOf(e)&&""===i)&&t.setAttribute(e,i)}))}},{key:"setStyle",value:function(e,t,i){e&&(e.style[t]=i)}},{key:"setStyles",value:function(e,t){e&&t&&Object.keys(t).forEach((function(i){e.style[i]=t[i]}))}},{key:"setAria",value:function(e,t,i){var o=t;"role"!==o&&(o="aria-".concat(o)),e.setAttribute(o,i)}},{key:"getElements",value:function(e){return e?void 0===e.forEach?[e]:e:[]}},{key:"addEvent",value:function(t,i,o){t&&s.removeArrayEmpty(i.split(" ")).forEach((function(i){e.getElements(t).forEach((function(e){e.addEventListener(i,o)}))}))}},{key:"dispatchEvent",value:function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(t){var s=e.getElements(t);setTimeout((function(){s.forEach((function(e){e.dispatchEvent(new CustomEvent(i,{bubbles:o}))}))}),0)}}},{key:"getAttributesText",value:function(e){var t="";return e?(Object.entries(e).forEach((function(e){var i=n(e,2),o=i[0],s=i[1];void 0!==s&&(t+=" ".concat(o,'="').concat(s,'" '))})),t):t}},{key:"convertPropToDataAttr",value:function(e){return e?"data-".concat(e).replace(/([A-Z])/g,"-$1").toLowerCase():""}}],(i=null)&&p(t.prototype,i),o&&p(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function h(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var o,s,n=[],r=!0,a=!1;try{for(i=i.call(e);!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,s=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw s}}return n}}(e,t)||v(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||v(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){if(e){if("string"==typeof e)return f(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,o=new Array(t);i\n \n\n
\n
\n ").concat(this.placeholder,'\n
\n\n
\n\n
\n \n
\n
\n\n ').concat(this.renderDropbox({wrapperClasses:t}),"\n ");this.$ele.innerHTML=r,this.$body=document.querySelector("body"),this.$wrapper=this.$ele.querySelector(".vscomp-wrapper"),this.hasDropboxWrapper?(this.$allWrappers=[this.$wrapper,this.$dropboxWrapper],this.$dropboxContainer=this.$dropboxWrapper.querySelector(".vscomp-dropbox-container"),u.addClass(this.$dropboxContainer,"pop-comp-wrapper")):(this.$allWrappers=[this.$wrapper],this.$dropboxContainer=this.$wrapper.querySelector(".vscomp-dropbox-container")),this.$toggleButton=this.$ele.querySelector(".vscomp-toggle-button"),this.$clearButton=this.$ele.querySelector(".vscomp-clear-button"),this.$valueText=this.$ele.querySelector(".vscomp-value"),this.$hiddenInput=this.$ele.querySelector(".vscomp-hidden-input"),this.$dropbox=this.$dropboxContainer.querySelector(".vscomp-dropbox"),this.$dropboxCloseButton=this.$dropboxContainer.querySelector(".vscomp-dropbox-close-button"),this.$search=this.$dropboxContainer.querySelector(".vscomp-search-wrapper"),this.$optionsContainer=this.$dropboxContainer.querySelector(".vscomp-options-container"),this.$optionsList=this.$dropboxContainer.querySelector(".vscomp-options-list"),this.$options=this.$dropboxContainer.querySelector(".vscomp-options"),this.$noOptions=this.$dropboxContainer.querySelector(".vscomp-no-options"),this.$noSearchResults=this.$dropboxContainer.querySelector(".vscomp-no-search-results"),this.afterRenderWrapper()}}},{key:"renderDropbox",value:function(e){var t=e.wrapperClasses,i="self"!==this.dropboxWrapper?document.querySelector(this.dropboxWrapper):null,o='
\n
\n
\n\n
\n
\n\n
\n
\n
\n
\n\n
\n
').concat(this.noOptionsText,'
\n
').concat(this.noSearchResultsText,'
\n\n \n
\n
');if(i){var s=document.createElement("div");return this.$dropboxWrapper=s,this.hasDropboxWrapper=!0,s.innerHTML=o,i.appendChild(s),u.addClass(s,"vscomp-dropbox-wrapper ".concat(t)),""}return this.hasDropboxWrapper=!1,o}},{key:"renderOptions",value:function(){var e,t=this,i="",o=this.getVisibleOptions(),n="",r="",a=!(!this.markSearchResults||!this.searchValue),l=this.labelRenderer,p=this.disableOptionGroupCheckbox,u=this.uniqueId,h=this.searchGroup,c="function"==typeof l,d=s.convertToBoolean;if(a&&(e=new RegExp("(".concat(this.searchValue,")"),"gi")),this.multiple&&(n=''),this.allowNewOption){var v=this.getTooltipAttrText("New Option");r='")}o.forEach((function(o){var s,v=o.index,f="vscomp-option",y=t.getTooltipAttrText("",!0,!0),b=n,g="",m="",O="",S=d(o.isSelected),x="";o.isFocused&&(f+=" focused"),o.isDisabled&&(f+=" disabled",x='aria-disabled="true"'),o.isGroupTitle&&(f+=" group-title",p&&(b="")),S&&(f+=" selected"),o.isGroupOption&&(f+=" group-option",O='data-group-index="'.concat(o.groupIndex,'"')),s=c?l(o):o.label,o.description&&(m='
").concat(o.description,"
")),o.isCurrentNew?(f+=" current-new",g+=r):!a||o.isGroupTitle&&!h||(s=s.replace(e,"$1")),i+='
\n ").concat(b,'\n \n ").concat(s,"\n \n ").concat(m,"\n ").concat(g,"\n
")})),this.$options.innerHTML=i,this.$visibleOptions=this.$options.querySelectorAll(".vscomp-option"),this.afterRenderOptions()}},{key:"renderSearch",value:function(){if(this.hasSearchContainer){var e="",t="";this.multiple&&!this.disableSelectAll&&(e='\n \n '.concat(this.selectAllText,"\n ")),this.hasSearch&&(t='\n ×'));var i='
\n '.concat(e,"\n ").concat(t,"\n
");this.$search.innerHTML=i,this.$searchInput=this.$dropboxContainer.querySelector(".vscomp-search-input"),this.$searchClear=this.$dropboxContainer.querySelector(".vscomp-search-clear"),this.$toggleAllButton=this.$dropboxContainer.querySelector(".vscomp-toggle-all-button"),this.$toggleAllCheckbox=this.$dropboxContainer.querySelector(".vscomp-toggle-all-checkbox"),this.addEvent(this.$searchInput,"keyup change","onSearch"),this.addEvent(this.$searchClear,"click","onSearchClear"),this.addEvent(this.$toggleAllButton,"click","onToggleAllOptions")}}},{key:"addEvents",value:function(){this.addEvent(document,"click","onDocumentClick"),this.addEvent(this.$allWrappers,"keydown","onKeyDown"),this.addEvent(this.$toggleButton,"click","onToggleButtonClick"),this.addEvent(this.$clearButton,"click","onClearButtonClick"),this.addEvent(this.$dropboxContainer,"click","onDropboxContainerClick"),this.addEvent(this.$dropboxCloseButton,"click","onDropboxCloseButtonClick"),this.addEvent(this.$optionsContainer,"scroll","onOptionsScroll"),this.addEvent(this.$options,"click","onOptionsClick"),this.addEvent(this.$options,"mouseover","onOptionsMouseOver"),this.addEvent(this.$options,"touchmove","onOptionsTouchMove"),this.addMutationObserver()}},{key:"addEvent",value:function(e,t,i){var o=this;e&&s.removeArrayEmpty(t.split(" ")).forEach((function(t){var s="".concat(i,"-").concat(t),n=o.events[s];n||(n=o[i].bind(o),o.events[s]=n),u.addEvent(e,t,n)}))}},{key:"onDocumentClick",value:function(e){var t=e.target.closest(".vscomp-wrapper");t!==this.$wrapper&&t!==this.$dropboxWrapper&&this.isOpened()&&this.closeDropbox()}},{key:"onKeyDown",value:function(e){var t=e.which||e.keyCode,i=b[t];i&&this[i](e)}},{key:"onEnterPress",value:function(e){e.preventDefault(),this.isOpened()?this.selectFocusedOption():this.openDropbox()}},{key:"onDownArrowPress",value:function(e){e.preventDefault(),this.isOpened()?this.focusOption({direction:"next"}):this.openDropbox()}},{key:"onUpArrowPress",value:function(e){e.preventDefault(),this.isOpened()?this.focusOption({direction:"previous"}):this.openDropbox()}},{key:"onToggleButtonClick",value:function(e){var t=e.target;t.closest(".vscomp-value-tag-clear-button")?this.removeValue(t.closest(".vscomp-value-tag")):t.closest(".toggle-button-child")||this.toggleDropbox()}},{key:"onClearButtonClick",value:function(){this.reset()}},{key:"onOptionsScroll",value:function(){this.setVisibleOptions()}},{key:"onOptionsClick",value:function(e){var t=e.target.closest(".vscomp-option");t&&!u.hasClass(t,"disabled")&&(u.hasClass(t,"group-title")?this.onGroupTitleClick(t):this.selectOption(t,{event:e}))}},{key:"onGroupTitleClick",value:function(e){if(e&&this.multiple&&!this.disableOptionGroupCheckbox){var t=!u.hasClass(e,"selected");this.toggleGroupTitleCheckbox(e,t),this.toggleGroupOptions(e,t)}}},{key:"onDropboxContainerClick",value:function(e){e.target.closest(".vscomp-dropbox")||this.closeDropbox()}},{key:"onDropboxCloseButtonClick",value:function(){this.closeDropbox()}},{key:"onOptionsMouseOver",value:function(e){var t=e.target.closest(".vscomp-option");t&&this.isOpened()&&(u.hasClass(t,"disabled")||u.hasClass(t,"group-title")?this.removeOptionFocus():this.focusOption({$option:t}))}},{key:"onOptionsTouchMove",value:function(){this.removeOptionFocus()}},{key:"onSearch",value:function(e){e.stopPropagation(),this.setSearchValue(e.target.value,!0)}},{key:"onSearchClear",value:function(){this.setSearchValue(""),this.focusSearchInput()}},{key:"onToggleAllOptions",value:function(){this.toggleAllOptions()}},{key:"onResize",value:function(){this.setOptionsContainerHeight(!0)}},{key:"addMutationObserver",value:function(){var e=this;if(this.hasDropboxWrapper){var t=this.$ele;this.mutationObserver=new MutationObserver((function(i){i.some((function(i){var o=d(i.removedNodes).some((function(e){return!(e!==t&&!e.contains(t))}));return o&&e.destroy(),o}))})),this.mutationObserver.observe(document.querySelector("body"),{childList:!0,subtree:!0})}}},{key:"beforeValueSet",value:function(e){this.toggleAllOptionsClass(!e&&void 0)}},{key:"beforeSelectNewValue",value:function(){var e=this,t=this.getNewOption(),i=t.index;this.newValues.push(t.value),this.setOptionProp(i,"isCurrentNew",!1),this.setOptionProp(i,"isNew",!0),setTimeout((function(){e.setSearchValue(""),e.focusSearchInput()}),0)}},{key:"afterRenderWrapper",value:function(){u.addClass(this.$ele,"vscomp-ele"),this.renderSearch(),this.setEleStyles(),this.setDropboxStyles(),this.setOptionsHeight(),this.setVisibleOptions(),this.setOptionsContainerHeight(),this.addEvents(),this.setEleProps(),this.keepAlwaysOpen||this.showAsPopup||this.initDropboxPopover(),this.initialSelectedValue?this.setValueMethod(this.initialSelectedValue,this.silentInitialValueSet):this.autoSelectFirstOption&&this.visibleOptions.length&&this.setValueMethod(this.visibleOptions[0].value,this.silentInitialValueSet),this.showOptionsOnlyOnSearch&&this.setSearchValue("",!1,!0),this.initialDisabled&&this.disable(),this.autofocus&&this.focus()}},{key:"afterRenderOptions",value:function(){var e=this.getVisibleOptions(),t=!this.options.length&&!this.hasServerSearch,i=!t&&!e.length;(!this.allowNewOption||this.hasServerSearch||this.showOptionsOnlyOnSearch)&&u.toggleClass(this.$allWrappers,"has-no-search-results",i),u.toggleClass(this.$allWrappers,"has-no-options",t),this.setOptionAttr(),this.setOptionsPosition(),this.setOptionsTooltip()}},{key:"afterSetOptionsContainerHeight",value:function(e){e&&this.showAsPopup&&this.setVisibleOptions()}},{key:"afterSetSearchValue",value:function(){this.hasServerSearch?this.serverSearch():this.setVisibleOptionsCount(),this.selectAllOnlyVisible&&this.toggleAllOptionsClass(),this.focusOption({focusFirst:!0})}},{key:"afterSetVisibleOptionsCount",value:function(){this.scrollToTop(),this.setOptionsHeight(),this.setVisibleOptions(),this.updatePosition()}},{key:"afterValueSet",value:function(){this.scrollToTop(),this.setSearchValue(""),this.renderOptions()}},{key:"afterSetOptions",value:function(e){e&&this.setSelectedProp(),this.setOptionsHeight(),this.setVisibleOptions(),this.showOptionsOnlyOnSearch&&this.setSearchValue("",!1,!0),e||this.reset()}},{key:"setProps",value:function(e){var t=this.setDefaultProps(e);this.setPropsFromElementAttr(t);var i=s.convertToBoolean;this.$ele=t.ele,this.dropboxWrapper=t.dropboxWrapper,this.valueKey=t.valueKey,this.labelKey=t.labelKey,this.descriptionKey=t.descriptionKey,this.aliasKey=t.aliasKey,this.optionHeightText=t.optionHeight,this.optionHeight=parseFloat(this.optionHeightText),this.multiple=i(t.multiple),this.hasSearch=i(t.search),this.searchGroup=i(t.searchGroup),this.hideClearButton=i(t.hideClearButton),this.autoSelectFirstOption=i(t.autoSelectFirstOption),this.hasOptionDescription=i(t.hasOptionDescription),this.silentInitialValueSet=i(t.silentInitialValueSet),this.allowNewOption=i(t.allowNewOption),this.markSearchResults=i(t.markSearchResults),this.showSelectedOptionsFirst=i(t.showSelectedOptionsFirst),this.disableSelectAll=i(t.disableSelectAll),this.keepAlwaysOpen=i(t.keepAlwaysOpen),this.showDropboxAsPopup=i(t.showDropboxAsPopup),this.hideValueTooltipOnSelectAll=i(t.hideValueTooltipOnSelectAll),this.showOptionsOnlyOnSearch=i(t.showOptionsOnlyOnSearch),this.selectAllOnlyVisible=i(t.selectAllOnlyVisible),this.alwaysShowSelectedOptionsCount=i(t.alwaysShowSelectedOptionsCount),this.disableAllOptionsSelectedText=i(t.disableAllOptionsSelectedText),this.showValueAsTags=i(t.showValueAsTags),this.disableOptionGroupCheckbox=i(t.disableOptionGroupCheckbox),this.enableSecureText=i(t.enableSecureText),this.setValueAsArray=i(t.setValueAsArray),this.disableValidation=i(t.disableValidation),this.initialDisabled=i(t.disabled),this.required=i(t.required),this.autofocus=i(t.autofocus),this.useGroupValue=i(t.useGroupValue),this.noOptionsText=t.noOptionsText,this.noSearchResultsText=t.noSearchResultsText,this.selectAllText=t.selectAllText,this.searchPlaceholderText=t.searchPlaceholderText,this.optionsSelectedText=t.optionsSelectedText,this.optionSelectedText=t.optionSelectedText,this.allOptionsSelectedText=t.allOptionsSelectedText,this.clearButtonText=t.clearButtonText,this.moreText=t.moreText,this.placeholder=t.placeholder,this.position=t.position,this.textDirection=t.textDirection,this.dropboxWidth=t.dropboxWidth,this.tooltipFontSize=t.tooltipFontSize,this.tooltipAlignment=t.tooltipAlignment,this.tooltipMaxWidth=t.tooltipMaxWidth,this.noOfDisplayValues=parseInt(t.noOfDisplayValues),this.zIndex=parseInt(t.zIndex),this.maxValues=parseInt(t.maxValues),this.name=this.secureText(t.name),this.additionalClasses=t.additionalClasses,this.popupDropboxBreakpoint=t.popupDropboxBreakpoint,this.popupPosition=t.popupPosition,this.onServerSearch=t.onServerSearch,this.labelRenderer=t.labelRenderer,this.initialSelectedValue=0===t.selectedValue?"0":t.selectedValue,this.emptyValue=t.emptyValue,this.ariaLabelledby=t.ariaLabelledby,this.maxWidth=t.maxWidth,this.selectedValues=[],this.selectedOptions=[],this.newValues=[],this.events={},this.tooltipEnterDelay=200,this.searchValue="",this.searchValueOriginal="",this.isAllSelected=!1,(void 0===t.search&&this.multiple||this.allowNewOption||this.showOptionsOnlyOnSearch)&&(this.hasSearch=!0),this.hasServerSearch="function"==typeof this.onServerSearch,(this.maxValues||this.hasServerSearch||this.showOptionsOnlyOnSearch)&&(this.disableSelectAll=!0,this.disableOptionGroupCheckbox=!0),this.keepAlwaysOpen&&(this.dropboxWrapper="self"),this.showAsPopup=this.showDropboxAsPopup&&!this.keepAlwaysOpen&&window.innerWidth<=parseFloat(this.popupDropboxBreakpoint),this.hasSearchContainer=this.hasSearch||this.multiple&&!this.disableSelectAll,this.optionsCount=this.getOptionsCount(t.optionsCount),this.halfOptionsCount=Math.ceil(this.optionsCount/2),this.optionsHeight=this.getOptionsHeight(),this.uniqueId=this.getUniqueId()}},{key:"setDefaultProps",value:function(e){var t={dropboxWrapper:"self",valueKey:"value",labelKey:"label",descriptionKey:"description",aliasKey:"alias",optionsCount:5,noOfDisplayValues:50,optionHeight:"40px",noOptionsText:"No options found",noSearchResultsText:"No results found",selectAllText:"Select All",searchPlaceholderText:"Search...",clearButtonText:"Clear",moreText:"more...",optionsSelectedText:"options selected",optionSelectedText:"option selected",allOptionsSelectedText:"All",placeholder:"Select",position:"bottom left",zIndex:e.keepAlwaysOpen?1:2,tooltipFontSize:"14px",tooltipAlignment:"center",tooltipMaxWidth:"300px",name:"",additionalClasses:"",maxValues:0,showDropboxAsPopup:!0,popupDropboxBreakpoint:"576px",popupPosition:"center",hideValueTooltipOnSelectAll:!0,emptyValue:""};return e.hasOptionDescription&&(t.optionsCount=4,t.optionHeight="50px"),Object.assign(t,e)}},{key:"setPropsFromElementAttr",value:function(e){var t=e.ele;for(var i in x){var o=t.getAttribute(i);-1===g.indexOf(i)||""!==o&&"true"!==o||(o=!0),o&&(e[x[i]]=o)}}},{key:"setEleProps",value:function(){var t=this.$ele;t.virtualSelect=this,t.value=this.multiple?[]:"",t.name=this.name,t.disabled=!1,t.required=this.required,t.autofocus=this.autofocus,t.multiple=this.multiple,t.form=t.closest("form"),t.reset=e.reset,t.setValue=e.setValueMethod,t.setOptions=e.setOptionsMethod,t.setDisabledOptions=e.setDisabledOptionsMethod,t.toggleSelectAll=e.toggleSelectAll,t.isAllSelected=e.isAllSelected,t.addOption=e.addOptionMethod,t.getNewValue=e.getNewValueMethod,t.getDisplayValue=e.getDisplayValueMethod,t.getSelectedOptions=e.getSelectedOptionsMethod,t.open=e.openMethod,t.close=e.closeMethod,t.focus=e.focusMethod,t.enable=e.enableMethod,t.disable=e.disableMethod,t.destroy=e.destroyMethod,t.validate=e.validateMethod,t.toggleRequired=e.toggleRequiredMethod,this.hasDropboxWrapper&&(this.$dropboxWrapper.virtualSelect=this)}},{key:"setValueMethod",value:function(e,t){var i={},o={},s=[],n=this.multiple,r=e;if(r){if(Array.isArray(r)||(r=[r]),n){var a=this.maxValues;a&&r.length>a&&r.splice(a)}else r.length>1&&(r=[r[0]]);r=r.map((function(e){return e||0==e?e.toString():""})),this.useGroupValue&&(r=this.setGroupOptionsValue(r)),r.forEach((function(e,t){i[e]=!0,o[e]=t})),this.allowNewOption&&r&&this.setNewOptionsFromValue(r)}if(this.options.forEach((function(e){!0!==i[e.value]||e.isDisabled||e.isGroupTitle?e.isSelected=!1:(e.isSelected=!0,s.push(e.value))})),n)this.hasOptionGroup&&this.setGroupsSelectedProp(),s.sort((function(e,t){return o[e]-o[t]}));else{var l=c(s,1);s=l[0]}this.beforeValueSet(),this.setValue(s,{disableEvent:t}),this.afterValueSet()}},{key:"setGroupOptionsValue",value:function(e){var t=[],i={},o={};return e.forEach((function(e){o[e]=!0})),this.options.forEach((function(e){var s=e.value,n=!0===o[s];e.isGroupTitle?n&&(i[e.index]=!0):(n||i[e.groupIndex])&&t.push(s)})),t}},{key:"setGroupsSelectedProp",value:function(){var e=this.isAllGroupOptionsSelected.bind(this);this.options.forEach((function(t){t.isGroupTitle&&(t.isSelected=e(t.index))}))}},{key:"setOptionsMethod",value:function(e,t){this.setOptions(e),this.afterSetOptions(t)}},{key:"setDisabledOptionsMethod",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.setDisabledOptions(e,!0),t||(this.setValueMethod(null),this.toggleAllOptionsClass()),this.setVisibleOptions()}},{key:"setDisabledOptions",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=[];if(e)if(!0===e)t&&this.options.forEach((function(e){return e.isDisabled=!0,i.push(e.value),e}));else{i=e.map((function(e){return e.toString()}));var o={};i.forEach((function(e){o[e]=!0})),t&&this.options.forEach((function(e){return e.isDisabled=!0===o[e.value],e}))}else t&&this.options.forEach((function(e){return e.isDisabled=!1,e}));this.disabledOptions=i}},{key:"setOptions",value:function(e){e||(e=[]);var t=[],i=this.disabledOptions.length,o=this.valueKey,n=this.labelKey,r=this.descriptionKey,a=this.aliasKey,l=this.hasOptionDescription,p=s.getString,u=s.convertToBoolean,h=this.secureText.bind(this),c=this.getAlias.bind(this),d=0,v=!1,f={},y=!1;this.disabledOptions.forEach((function(e){f[e]=!0})),e.forEach((function e(s){var b=h(p(s[o])),g=s.options,m=!!g,O={index:d,value:b,label:h(p(s[n])),alias:c(s[a]),isVisible:u(s.isVisible,!0),isNew:s.isNew||!1,isGroupTitle:m};if(y||""!==b||(y=!0),i&&(O.isDisabled=!0===f[b]),s.isGroupOption&&(O.isGroupOption=!0,O.groupIndex=s.groupIndex),l&&(O.description=h(p(s[r]))),s.customData&&(O.customData=s.customData),t.push(O),d+=1,m){var S=O.index;v=!0,g.forEach((function(t){t.isGroupOption=!0,t.groupIndex=S,e(t)}))}}));var b=t.length,g=this.$ele;g.options=t,g.length=b,this.options=t,this.visibleOptionsCount=b,this.lastOptionIndex=b-1,this.newValues=[],this.hasOptionGroup=v,this.hasEmptyValueOption=y,this.setSortedOptions()}},{key:"setServerOptions",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.setOptionsMethod(t,!0);var i=this.selectedOptions,o=this.options,s=!1;if(i.length){var n={};s=!0,o.forEach((function(e){n[e.value]=!0})),i.forEach((function(e){!1===n[e.value]&&(e.isVisible=!1,o.push(e))})),this.setOptionsMethod(o,!0)}if(this.allowNewOption&&this.searchValue){var r=o.some((function(t){return t.label.toLowerCase()===e.searchValue}));r||(s=!0,this.setNewOption())}s?(this.setVisibleOptionsCount(),this.multiple&&this.toggleAllOptionsClass(),this.setValueText()):this.updatePosition(),u.removeClass(this.$allWrappers,"server-searching")}},{key:"setSelectedOptions",value:function(){this.selectedOptions=this.options.filter((function(e){return e.isSelected}))}},{key:"setSortedOptions",value:function(){var e=d(this.options);this.showSelectedOptionsFirst&&this.selectedValues.length&&(e=this.hasOptionGroup?this.sortOptionsGroup(e):this.sortOptions(e)),this.sortedOptions=e}},{key:"setVisibleOptions",value:function(){var e=d(this.sortedOptions),t=2*this.optionsCount,i=this.getVisibleStartIndex(),o=this.getNewOption(),s=i+t-1,n=0;o&&(o.visibleIndex=n,n++),e=e.filter((function(e){var t=!1;return e.isVisible&&!e.isCurrentNew&&(t=n>=i&&n<=s,e.visibleIndex=n,n+=1),t})),o&&(e=[o].concat(d(e))),this.visibleOptions=e,this.renderOptions()}},{key:"setOptionsPosition",value:function(e){void 0===e&&(e=this.getVisibleStartIndex());var t=e*this.optionHeight;this.$options.style.transform="translate3d(0, ".concat(t,"px, 0)"),u.setData(this.$options,"top",t)}},{key:"setOptionsTooltip",value:function(){var e=this,t=this.getVisibleOptions(),i=this.hasOptionDescription;t.forEach((function(t){var o=e.$dropboxContainer.querySelector('.vscomp-option[data-index="'.concat(t.index,'"]'));u.setData(o.querySelector(".vscomp-option-text"),"tooltip",t.label),i&&u.setData(o.querySelector(".vscomp-option-description"),"tooltip",t.description)}))}},{key:"setValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.disableEvent,o=void 0!==i&&i,n=t.disableValidation,r=void 0!==n&&n,a=this.hasEmptyValueOption&&""===e||e;a?Array.isArray(e)?this.selectedValues=d(e):this.selectedValues=[e]:this.selectedValues=[];var l=this.getValue();this.$ele.value=l,this.$hiddenInput.value=this.getInputValue(l),this.isMaxValuesSelected=!!(this.maxValues&&this.maxValues<=this.selectedValues.length),this.toggleAllOptionsClass(),this.setValueText(),u.toggleClass(this.$allWrappers,"has-value",s.isNotEmpty(this.selectedValues)),u.toggleClass(this.$allWrappers,"max-value-selected",this.isMaxValuesSelected),r||this.validate(),o||u.dispatchEvent(this.$ele,"change",!0)}},{key:"setValueText",value:function(){var e=this.multiple,t=this.selectedValues,i=this.noOfDisplayValues,o=this.showValueAsTags,s=this.$valueText,n=[],r=[],a=t.length,l=0,p=this.isAllSelected&&!this.hasServerSearch&&!this.disableAllOptionsSelectedText&&!o;if(p&&this.hideValueTooltipOnSelectAll)s.innerHTML="".concat(this.allOptionsSelectedText," (").concat(a,")");else{var h,c=function(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=v(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var o=0,s=function(){};return{s:s,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,r=!0,a=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return r=e.done,e},e:function(e){a=!0,n=e},f:function(){try{r||null==i.return||i.return()}finally{if(a)throw n}}}}(this.getSelectedOptions({fullDetails:!0,keepSelectionOrder:!0}));try{for(c.s();!(h=c.n()).done;){var d=h.value;if(!d.isCurrentNew){if(l>=i)break;var f=d.label;if(n.push(f),l++,o){var y='\n ').concat(f,'\n \n \n \n ');r.push(y)}else r.push(f)}}}catch(e){c.e(e)}finally{c.f()}var b=a-i;b>0&&r.push('+ '.concat(b," ").concat(this.moreText,""));var g=n.join(", ");if(""===g)s.innerHTML=this.placeholder;else if(s.innerHTML=g,e){var m=this.maxValues;if(u.hasEllipsis(s)||m||this.alwaysShowSelectedOptionsCount||o){var O=''.concat(a,"");if(m&&(O+=' / '.concat(m,"")),p)s.innerHTML="".concat(this.allOptionsSelectedText," (").concat(a,")");else if(o)s.innerHTML=r.join(""),this.$valueTags=s.querySelectorAll(".vscomp-value-tag"),this.setValueTagAttr();else{var S=1===a?this.optionSelectedText:this.optionsSelectedText;s.innerHTML="".concat(O," ").concat(S)}}else r=[]}}var x="";0===a?x=this.placeholder:o||(x=r.join(", ")),u.setData(s,"tooltip",x),e&&(u.setData(s,"tooltipEllipsisOnly",0===a),o&&this.updatePosition())}},{key:"setSearchValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(e!==this.searchValueOriginal||i){t||(this.$searchInput.value=e);var o=e.replace(/\\/g,"").toLowerCase().trim();this.searchValue=o,this.searchValueOriginal=e,u.toggleClass(this.$allWrappers,"has-search-value",e),this.afterSetSearchValue()}}},{key:"setVisibleOptionsCount",value:function(){var e,t=0,i=!1,o=this.searchValue,s=this.searchGroup,n=this.showOptionsOnlyOnSearch,r=this.isOptionVisible.bind(this);this.hasOptionGroup&&(e=this.getVisibleOptionGroupsMapping(o)),this.options.forEach((function(a){var l;a.isCurrentNew||(n&&!o?(a.isVisible=!1,l={isVisible:!1,hasExactOption:!1}):l=r({data:a,searchValue:o,hasExactOption:i,visibleOptionGroupsMapping:e,searchGroup:s}),l.isVisible&&(t+=1),i||(i=l.hasExactOption))})),this.allowNewOption&&(o&&!i?(this.setNewOption(),t++):this.removeNewOption()),this.visibleOptionsCount=t,this.afterSetVisibleOptionsCount()}},{key:"setOptionProp",value:function(e,t,i){this.options[e]&&(this.options[e][t]=i)}},{key:"setOptionsHeight",value:function(){this.$optionsList.style.height=this.optionHeight*this.visibleOptionsCount+"px"}},{key:"setOptionsContainerHeight",value:function(e){var t;e?this.showAsPopup&&(this.optionsCount=this.getOptionsCount(),this.halfOptionsCount=Math.ceil(this.optionsCount/2),t=this.getOptionsHeight(),this.optionsHeight=t):(t=this.optionsHeight,this.keepAlwaysOpen&&(u.setStyle(this.$noOptions,"height",t),u.setStyle(this.$noSearchResults,"height",t))),u.setStyle(this.$optionsContainer,"max-height",t),this.afterSetOptionsContainerHeight(e)}},{key:"setNewOption",value:function(e){var t=e||this.searchValueOriginal.trim();if(t){var i=this.getNewOption();if(i){var o=i.index;this.setOptionProp(o,"value",this.secureText(t)),this.setOptionProp(o,"label",this.secureText(t))}else{var s={value:t,label:t};e?(s.isNew=!0,this.newValues.push(t)):s.isCurrentNew=!0,this.addOption(s)}}}},{key:"setSelectedProp",value:function(){var e={};this.selectedValues.forEach((function(t){e[t]=!0})),this.options.forEach((function(t){!0===e[t.value]&&(t.isSelected=!0)}))}},{key:"setNewOptionsFromValue",value:function(e){if(e){var t=this.setNewOption.bind(this),i={};this.options.forEach((function(e){i[e.value]=!0})),e.forEach((function(e){e&&!0!==i[e]&&t(e)}))}}},{key:"setDropboxWrapperWidth",value:function(){if(!this.showAsPopup){var e=this.dropboxWidth||"".concat(this.$wrapper.offsetWidth,"px");u.setStyle(this.$dropboxContainer,"max-width",e)}}},{key:"setEleStyles",value:function(){var e=this.maxWidth,t={};e&&(t["max-width"]=e),u.setStyles(this.$ele,t)}},{key:"setDropboxStyles",value:function(){var e=this.dropboxWidth,t={},i={"z-index":this.zIndex};e&&(this.showAsPopup?t["max-width"]=e:i.width=e),u.setStyles(this.$dropboxContainer,i),u.setStyles(this.$dropbox,t)}},{key:"setOptionAttr",value:function(){var e=this.$visibleOptions,t=this.options,i="".concat(this.optionHeight,"px"),o=u.setStyle,s=u.getData,n=u.setData;e&&e.length&&e.forEach((function(e){var r=t[s(e,"index")];o(e,"height",i),n(e,"value",r.value)}))}},{key:"setValueTagAttr",value:function(){var e=this.$valueTags;if(e&&e.length){var t=u.getData,i=u.setData,o=this.options;e.forEach((function(e){var s=t(e,"index");if(void 0!==s){var n=o[s];i(e,"value",n.value)}}))}}},{key:"setScrollTop",value:function(){var e=this.selectedValues;if(!this.showSelectedOptionsFirst&&0!==e.length){var t,i={};e.forEach((function(e){i[e]=!0})),this.options.some((function(e){if(i[e.value])return t=e.visibleIndex,!0})),t&&(this.$optionsContainer.scrollTop=this.optionHeight*t)}}},{key:"getVisibleOptions",value:function(){return this.visibleOptions||[]}},{key:"getValue",value:function(){return this.multiple?this.useGroupValue?this.getGroupValue():this.selectedValues:this.selectedValues[0]||""}},{key:"getGroupValue",value:function(){var e=[],t={};return this.options.forEach((function(i){if(i.isSelected){var o=i.value;i.isGroupTitle?o&&(t[i.index]=!0,e.push(o)):!0!==t[i.groupIndex]&&e.push(o)}})),e}},{key:"getInputValue",value:function(e){var t=e;return t&&t.length?this.setValueAsArray&&this.multiple&&(t=JSON.stringify(t)):t=this.emptyValue,t}},{key:"getFirstVisibleOptionIndex",value:function(){return Math.ceil(this.$optionsContainer.scrollTop/this.optionHeight)}},{key:"getVisibleStartIndex",value:function(){var e=this.getFirstVisibleOptionIndex()-this.halfOptionsCount;return e<0&&(e=0),e}},{key:"getTooltipAttrText",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o={"data-tooltip":e||"","data-tooltip-enter-delay":this.tooltipEnterDelay,"data-tooltip-z-index":this.zIndex,"data-tooltip-font-size":this.tooltipFontSize,"data-tooltip-alignment":this.tooltipAlignment,"data-tooltip-max-width":this.tooltipMaxWidth,"data-tooltip-ellipsis-only":t,"data-tooltip-allow-html":i};return u.getAttributesText(o)}},{key:"getOptionObj",value:function(e){if(e){var t=s.getString,i=this.secureText.bind(this);return{index:e.index,value:i(t(e.value)),label:i(t(e.label)),description:i(t(e.description)),alias:this.getAlias(e.alias),isCurrentNew:e.isCurrentNew||!1,isNew:e.isNew||!1,isVisible:!0}}}},{key:"getNewOption",value:function(){var e=this.options[this.lastOptionIndex];if(e&&e.isCurrentNew)return e}},{key:"getOptionIndex",value:function(e){var t;return this.options.some((function(i){if(i.value==e)return t=i.index,!0})),t}},{key:"getNewValue",value:function(){var e={};this.newValues.forEach((function(t){e[t]=!0}));var t=this.selectedValues.filter((function(t){return!0===e[t]}));return this.multiple?t:t[0]}},{key:"getAlias",value:function(e){var t=e;return t&&(t=(t=Array.isArray(t)?t.join(","):t.toString().trim()).toLowerCase()),t||""}},{key:"getDisplayValue",value:function(){var e=[];return this.options.forEach((function(t){t.isSelected&&e.push(t.label)})),this.multiple?e:e[0]||""}},{key:"getSelectedOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.fullDetails,i=void 0!==t&&t,o=e.keepSelectionOrder,s=void 0!==o&&o,n=this.valueKey,r=this.labelKey,a=this.selectedValues,l=[];if(this.options.forEach((function(e){if(e.isSelected&&!e.isGroupTitle)if(i)l.push(e);else{var t,o=(h(t={},n,e.value),h(t,r,e.label),t);e.isNew&&(o.isNew=!0),e.customData&&(o.customData=e.customData),l.push(o)}})),s){var p={};a.forEach((function(e,t){p[e]=t})),l.sort((function(e,t){return p[e.value]-p[t.value]}))}return this.multiple||i?l:l[0]}},{key:"getVisibleOptionGroupsMapping",value:function(e){var t=this.options,i={},o=this.isOptionVisible.bind(this);return(t=this.structureOptionGroup(t)).forEach((function(t){i[t.index]=t.options.some((function(t){return o({data:t,searchValue:e}).isVisible}))})),i}},{key:"getOptionsCount",value:function(e){if(this.showAsPopup){var t=80*window.innerHeight/100-48;this.hasSearchContainer&&(t-=40),e=Math.floor(t/this.optionHeight)}else e=parseInt(e);return e}},{key:"getOptionsHeight",value:function(){return this.optionsCount*this.optionHeight+"px"}},{key:"getSibling",value:function(e,t){var i="next"===t?"nextElementSibling":"previousElementSibling";do{e&&(e=e[i])}while(u.hasClass(e,"disabled")||u.hasClass(e,"group-title"));return e}},{key:"getUniqueId",value:function(){var e=s.getRandomInt(1e4);return document.querySelector("#vscomp-ele-wrapper-".concat(e))?this.getUniqueId():e}},{key:"initDropboxPopover",value:function(){var e={ele:this.$ele,target:this.$dropboxContainer,position:this.position,zIndex:this.zIndex,margin:4,transitionDistance:30,hideArrowIcon:!0,disableManualAction:!0,disableUpdatePosition:!this.hasDropboxWrapper,afterShow:this.afterShowPopper.bind(this),afterHide:this.afterHidePopper.bind(this)};this.dropboxPopover=new PopoverComponent(e)}},{key:"openDropbox",value:function(e){this.isSilentOpen=e,e?u.setStyle(this.$dropboxContainer,"display","inline-flex"):(u.dispatchEvent(this.$ele,"beforeOpen"),u.setAria(this.$wrapper,"expanded",!0)),this.setDropboxWrapperWidth(),u.removeClass(this.$allWrappers,"closed"),this.dropboxPopover&&!e?this.dropboxPopover.show():this.afterShowPopper()}},{key:"afterShowPopper",value:function(){var e=this.isSilentOpen;this.isSilentOpen=!1,e||(this.moveSelectedOptionsFirst(),this.setScrollTop(),u.addClass(this.$allWrappers,"focused"),this.showAsPopup?(u.addClass(this.$body,"vscomp-popup-active"),this.isPopupActive=!0):this.focusSearchInput(),u.dispatchEvent(this.$ele,"afterOpen"))}},{key:"closeDropbox",value:function(e){this.isSilentClose=e,this.keepAlwaysOpen?this.removeOptionFocus():(e?u.setStyle(this.$dropboxContainer,"display",""):(u.dispatchEvent(this.$ele,"beforeClose"),u.setAria(this.$wrapper,"expanded",!1),u.setAria(this.$wrapper,"activedescendant","")),this.dropboxPopover&&!e?this.dropboxPopover.hide():this.afterHidePopper())}},{key:"afterHidePopper",value:function(){var e=this.isSilentClose;this.isSilentClose=!1,u.removeClass(this.$allWrappers,"focused"),this.removeOptionFocus(),e||this.isPopupActive&&(u.removeClass(this.$body,"vscomp-popup-active"),this.isPopupActive=!1),u.addClass(this.$allWrappers,"closed"),e||u.dispatchEvent(this.$ele,"afterClose")}},{key:"moveSelectedOptionsFirst",value:function(){this.showSelectedOptionsFirst&&(this.setSortedOptions(),this.$optionsContainer.scrollTop&&this.selectedValues.length?this.scrollToTop():this.setVisibleOptions())}},{key:"toggleDropbox",value:function(){this.isOpened()?this.closeDropbox():this.openDropbox()}},{key:"updatePosition",value:function(){this.dropboxPopover&&this.$ele.updatePosition()}},{key:"isOpened",value:function(){return!u.hasClass(this.$wrapper,"closed")}},{key:"focusSearchInput",value:function(){var e=this.$searchInput;e&&e.focus()}},{key:"focusOption",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.direction,o=t.$option,s=t.focusFirst,n=this.$dropboxContainer.querySelector(".vscomp-option.focused");if(o)e=o;else if(!n||s){var r=this.getFirstVisibleOptionIndex();e=this.$dropboxContainer.querySelector('.vscomp-option[data-visible-index="'.concat(r,'"]')),(u.hasClass(e,"disabled")||u.hasClass(e,"group-title"))&&(e=this.getSibling(e,"next"))}else e=this.getSibling(n,i);e&&e!==n&&(n&&this.toggleOptionFocusedState(n,!1),this.toggleOptionFocusedState(e,!0),this.toggleFocusedProp(u.getData(e,"index"),!0),this.moveFocusedOptionToView(e))}},{key:"moveFocusedOptionToView",value:function(e){if(e||(e=this.$dropboxContainer.querySelector(".vscomp-option.focused")),e){var t,i=this.$optionsContainer.getBoundingClientRect(),o=e.getBoundingClientRect(),s=i.top,n=i.bottom,r=i.height,a=o.top,l=o.bottom,p=o.height,h=e.offsetTop,c=u.getData(this.$options,"top","number");s>a?t=h+c:n1&&void 0!==arguments[1]?arguments[1]:{},i=t.event;if(e){var o=!u.hasClass(e,"selected");if(o){if(this.multiple&&this.isMaxValuesSelected)return}else if(!this.multiple)return void this.closeDropbox();var n=this.selectedValues,r=u.getData(e,"value"),a=u.getData(e,"index","number"),l=!1,p=this.lastSelectedOptionIndex;if(this.lastSelectedOptionIndex=null,this.toggleSelectedProp(a,o),o){if(this.multiple)n.push(r),this.toggleAllOptionsClass(),this.toggleGroupOptionsParent(e),i&&i.shiftKey&&(l=!0);else{n.length&&this.toggleSelectedProp(this.getOptionIndex(n[0]),!1),n=[r];var h=this.$dropboxContainer.querySelector(".vscomp-option.selected");h&&this.toggleOptionSelectedState(h,!1),this.closeDropbox()}this.lastSelectedOptionIndex=a,this.toggleOptionSelectedState(e)}else this.multiple&&(this.toggleOptionSelectedState(e),s.removeItemFromArray(n,r),this.toggleAllOptionsClass(!1),this.toggleGroupOptionsParent(e,!1));u.hasClass(e,"current-new")&&this.beforeSelectNewValue(),this.setValue(n),l&&this.selectRangeOptions(p,a)}}},{key:"selectFocusedOption",value:function(){this.selectOption(this.$dropboxContainer.querySelector(".vscomp-option.focused"))}},{key:"selectRangeOptions",value:function(e,t){var i=this;if("number"==typeof e&&!this.maxValues){var o,s,n=this.selectedValues,r=this.hasOptionGroup,a={};if(eo&&t1&&void 0!==arguments[1]&&arguments[1];this.focusedOptionIndex&&this.setOptionProp(this.focusedOptionIndex,"isFocused",!1),this.setOptionProp(e,"isFocused",t),this.focusedOptionIndex=e}},{key:"toggleSelectedProp",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.setOptionProp(e,"isSelected",t)}},{key:"scrollToTop",value:function(){var e=!this.isOpened();e&&this.openDropbox(!0),this.$optionsContainer.scrollTop>0&&(this.$optionsContainer.scrollTop=0),e&&this.closeDropbox(!0)}},{key:"reset",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.options.forEach((function(e){e.isSelected=!1})),this.beforeValueSet(!0),this.setValue(null,{disableValidation:e}),this.afterValueSet(),e&&u.removeClass(this.$allWrappers,"has-error"),u.dispatchEvent(this.$ele,"reset")}},{key:"addOption",value:function(e,t){if(e){this.lastOptionIndex++,e.index=this.lastOptionIndex;var i=this.getOptionObj(e);this.options.push(i),this.sortedOptions.push(i),t&&(this.visibleOptionsCount++,this.afterSetOptions())}}},{key:"removeOption",value:function(e){(e||0==e)&&(this.options.splice(e,1),this.lastOptionIndex--)}},{key:"removeNewOption",value:function(){var e=this.getNewOption();e&&this.removeOption(e.index)}},{key:"sortOptions",value:function(e){return e.sort((function(e,t){var i=e.isSelected||e.isAnySelected,o=t.isSelected||t.isAnySelected;return i||o?i&&(!o||e.indexe.length)&&(t=e.length);for(var i=0,o=new Array(t);ii-s-t.width?"left":"right",vertical:n>o-n-t.height?"top":"bottom"}}},{key:"getAbsoluteCoords",value:function(e){if(e){var t=e.getBoundingClientRect(),i=window.pageXOffset,o=window.pageYOffset;return{width:t.width,height:t.height,top:t.top+o,right:t.right+i,bottom:t.bottom+o,left:t.left+i}}}},{key:"getCoords",value:function(e){return e?e.getBoundingClientRect():{}}},{key:"getData",value:function(e,t,i){if(e){var o=e?e.dataset[t]:"";return"number"===i?o=parseFloat(o)||0:"true"===o?o=!0:"false"===o&&(o=!1),o}}},{key:"setData",value:function(e,t,i){e&&(e.dataset[t]=i)}},{key:"setStyle",value:function(e,t,i){e&&(e.style[t]=i)}},{key:"show",value:function(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"block";t.setStyle(e,"display",i)}},{key:"hide",value:function(e){t.setStyle(e,"display","none")}},{key:"getHideableParent",value:function(e){for(var t,i=e.parentElement;i;){var o=getComputedStyle(i).overflow;if(-1!==o.indexOf("scroll")||-1!==o.indexOf("auto")){t=i;break}i=i.parentElement}return t}}])&&function(e,t){for(var i=0;im?m-f:M:k+u>F&&("right"===E?n="left":k=F+fO?O-c:P:C+h>I&&("bottom"===E?n="top":C=I+cu-z&&(L=u-z):"left"!==E&&"right"!==E||((R=b/2+g-B)h-z&&(R=h-z)),i.setStyle(this.$arrowEle,"transform","translate3d(".concat(L,"px, ").concat(R,"px, 0) ").concat(K))}i.hide(this.$popperEle)}},{key:"resetPosition",value:function(){i.setStyle(this.$popperEle,"transform","none"),this.setPosition()}},{key:"show",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=t.resetPosition,s=t.data;clearTimeout(this.exitDelayTimeout),clearTimeout(this.hideDurationTimeout),o&&this.resetPosition(),this.enterDelayTimeout=setTimeout((function(){var t=i.getData(e.$popperEle,"left"),o=i.getData(e.$popperEle,"top"),n="translate3d(".concat(t,"px, ").concat(o,"px, 0)"),r=e.showDuration;i.show(e.$popperEle,"inline-flex"),i.getCoords(e.$popperEle),i.setStyle(e.$popperEle,"transitionDuration",r+"ms"),i.setStyle(e.$popperEle,"transform",n),i.setStyle(e.$popperEle,"opacity",1),e.showDurationTimeout=setTimeout((function(){"function"==typeof e.afterShowCallback&&e.afterShowCallback(s)}),r)}),this.enterDelay)}},{key:"hide",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=t.data;clearTimeout(this.enterDelayTimeout),clearTimeout(this.showDurationTimeout),this.exitDelayTimeout=setTimeout((function(){if(e.$popperEle){var t=i.getData(e.$popperEle,"fromLeft"),s=i.getData(e.$popperEle,"fromTop"),n="translate3d(".concat(t,"px, ").concat(s,"px, 0)"),r=e.hideDuration;i.setStyle(e.$popperEle,"transitionDuration",r+"ms"),i.setStyle(e.$popperEle,"transform",n),i.setStyle(e.$popperEle,"opacity",0),e.hideDurationTimeout=setTimeout((function(){i.hide(e.$popperEle),"function"==typeof e.afterHideCallback&&e.afterHideCallback(o)}),r)}}),this.exitDelay)}},{key:"updatePosition",value:function(){i.setStyle(this.$popperEle,"transitionDuration","0ms"),this.resetPosition();var e=i.getData(this.$popperEle,"left"),t=i.getData(this.$popperEle,"top");i.show(this.$popperEle,"inline-flex"),i.setStyle(this.$popperEle,"transform","translate3d(".concat(e,"px, ").concat(t,"px, 0)"))}}])&&function(e,t){for(var i=0;i1&&void 0!==arguments[1]&&arguments[1];return!0===e||"true"===e||!1!==e&&"false"!==e&&t}},{key:"removeArrayEmpty",value:function(e){return Array.isArray(e)&&e.length?e.filter((function(e){return!!e})):[]}},{key:"throttle",value:function(e,t){var i,o=0;return function(){for(var s=arguments.length,n=new Array(s),r=0;re.length)&&(t=e.length);for(var i=0,o=new Array(t);i'),e=this.$popover.querySelector(".pop-comp-arrow")),this.$arrowEle=e}}},{key:"destory",value:function(){this.removeEvents()}}])&&r(i.prototype,o),s&&r(i,s),e}();window.PopoverComponent=l}(); \ No newline at end of file