virtual-select-plugin
Version:
A javascript plugin for dropdown with virtual scroll
5 lines • 96.7 kB
JavaScript
/*!
* Virtual Select v1.1.0
* 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,o){if(e){if("string"==typeof e)return t(e,o);var i={}.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=Array(t);o<t;o++)i[o]=e[o];return i}function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t){for(var o=0;o<t.length;o++){var i=t[o];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,s(i.key),i)}}function s(e){var t=function(e,t){if("object"!=o(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var s=i.call(e,t||"default");if("object"!=o(s))return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==o(t)?t:t+""}var n=function(){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t)}return s=t,r=[{key:"getString",value:function(e){return e||0===e?e.toString():""}},{key:"convertToBoolean",value:function(e){return!0===e||"true"===e||!1!==e&&"false"!==e&&arguments.length>1&&void 0!==arguments[1]&&arguments[1]}},{key:"isEmpty",value:function(e){var t=!1;return e?Array.isArray(e)?0===e.length&&(t=!0):"object"===o(e)&&0===Object.keys(e).length&&(t=!0):t=!0,t}},{key:"isNotEmpty",value:function(e){return!t.isEmpty(e)}},{key:"normalizeValues",value:function(e){if(Array.isArray(e)){for(var t=new Array(e.length),o=0;o<e.length;o+=1){var i=e[o];t[o]=!0===i?"true":!1===i?"false":i}return t}return!0===e?"true":!1===e?"false":e}},{key:"removeItemFromArray",value:function(t,o){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!Array.isArray(t)||!t.length)return t;var s=i?e(t):t,n=s.indexOf(o);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,o=Math.ceil(t),i=Math.floor(e);return Math.floor(Math.random()*(i-o-1))+o}},{key:"regexEscape",value:function(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}},{key:"normalizeString",value:function(e){return e.normalize("NFD").replace(/[^\w]/g,"")}},{key:"willTextOverflow",value:function(e,t){var o=document.createElement("div");o.style.position="absolute",o.style.visibility="hidden",o.style.whiteSpace="nowrap",o.style.fontSize=window.getComputedStyle(e).fontSize,o.style.fontFamily=window.getComputedStyle(e).fontFamily,o.textContent=t,document.body.appendChild(o);var i=o.clientWidth;return document.body.removeChild(o),i>e.clientWidth}},{key:"replaceDoubleQuotesWithHTML",value:function(e){return e.replace(/"/g,""")}},{key:"containsHTML",value:function(e){return/<[a-z][\s\S]*>/i.test(e)}},{key:"containsHTMLorJS",value:function(e){return/<([a-z]+)[\s\S]*?>|on\w+="[^"]*"/i.test(e)}}],(n=null)&&i(s.prototype,n),r&&i(s,r),Object.defineProperty(s,"prototype",{writable:!1}),s;var s,n,r}();function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function a(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i,s,n,r,a=[],l=!0,u=!1;try{if(n=(o=o.call(e)).next,0===t){if(Object(o)!==o)return;l=!1}else for(;!(l=(i=n.call(o)).done)&&(a.push(i.value),a.length!==t);l=!0);}catch(e){u=!0,s=e}finally{try{if(!l&&null!=o.return&&(r=o.return(),Object(r)!==r))return}finally{if(u)throw s}}return a}}(e,t)||u(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 l(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||u(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 u(e,t){if(e){if("string"==typeof e)return c(e,t);var o={}.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)?c(e,t):void 0}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,i=Array(t);o<t;o++)i[o]=e[o];return i}function p(e,t){for(var o=0;o<t.length;o++){var i=t[o];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,h(i.key),i)}}function h(e){var t=function(e,t){if("object"!=r(e)||!e)return e;var o=e[Symbol.toPrimitive];if(void 0!==o){var i=o.call(e,t||"default");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==r(t)?t:t+""}var d=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return t=e,i=[{key:"addClass",value:function(t,o){if(t){var i=o.split(" ");e.getElements(t).forEach((function(e){var t;(t=e.classList).add.apply(t,l(i))}))}}},{key:"removeClass",value:function(t,o){if(t){var i=o.split(" ");e.getElements(t).forEach((function(e){var t;(t=e.classList).remove.apply(t,l(i))}))}}},{key:"toggleClass",value:function(t,o,i){var s;t&&(void 0!==i&&(s=Boolean(i)),e.getElements(t).forEach((function(e){e.classList.toggle(o,s)})))}},{key:"hasClass",value:function(e,t){return!!e&&e.classList.contains(t)}},{key:"hasEllipsis",value:function(e){return!!e&&e.scrollWidth>e.offsetWidth}},{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:"setAttr",value:function(e,t,o){e&&e.setAttribute(t,o)}},{key:"setAttrFromEle",value:function(e,t,o,i){var s={};o.forEach((function(t){s[t]=e.getAttribute(t)})),o.forEach((function(e){var o=s[e];(o||-1!==i.indexOf(e)&&""===o)&&t.setAttribute(e,o)}))}},{key:"setStyle",value:function(e,t,o){e&&(e.style[t]=o)}},{key:"setStyles",value:function(e,t){e&&t&&Object.keys(t).forEach((function(o){e.style[o]=t[o]}))}},{key:"setAria",value:function(e,t,o){if(e){var i=t;"role"!==i&&(i="aria-".concat(i)),e.setAttribute(i,o)}}},{key:"getElements",value:function(e){return e?void 0===e.forEach?[e]:e:[]}},{key:"getElementsBySelector",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=void 0!==o?o:document;return""!==t&&(e=i.querySelectorAll(t)),void 0!==e?Array.from(e):[]}},{key:"addEvent",value:function(t,o,i){t&&n.removeArrayEmpty(o.split(" ")).forEach((function(o){e.getElements(t).forEach((function(e){e.addEventListener(o,i)}))}))}},{key:"dispatchEvent",value:function(t,o){var i=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(o,{bubbles:i}))}))}),0)}}},{key:"getAttributesText",value:function(e){var t="";return e?(Object.entries(e).forEach((function(e){var o=a(e,2),i=o[0],s=o[1];void 0!==s&&(t+=" ".concat(i,'="').concat(s,'" '))})),t):t}},{key:"convertPropToDataAttr",value:function(e){return e?"data-".concat(e).replace(/([A-Z])/g,"-$1").toLowerCase():""}},{key:"changeTabIndex",value:function(t,o){t?e.getElements(t).forEach((function(e){e.tabIndex=o})):console.log(t,"Invalid element provided.")}},{key:"removeEvent",value:function(t,o,i){t&&e.getElements(t).forEach((function(e){e.removeEventListener(o,i)}))}}],(o=null)&&p(t.prototype,o),i&&p(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,o,i}();function v(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,i)}return o}function f(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?v(Object(o),!0).forEach((function(t){y(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):v(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function y(e,t,o){return(t=w(t))in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function b(e){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},b(e)}function m(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i,s,n,r,a=[],l=!0,u=!1;try{if(n=(o=o.call(e)).next,0===t){if(Object(o)!==o)return;l=!1}else for(;!(l=(i=n.call(o)).done)&&(a.push(i.value),a.length!==t);l=!0);}catch(e){u=!0,s=e}finally{try{if(!l&&null!=o.return&&(r=o.return(),Object(r)!==r))return}finally{if(u)throw s}}return a}}(e,t)||O(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 g(e){return function(e){if(Array.isArray(e))return S(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||O(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 O(e,t){if(e){if("string"==typeof e)return S(e,t);var o={}.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)?S(e,t):void 0}}function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,i=Array(t);o<t;o++)i[o]=e[o];return i}function x(e,t){for(var o=0;o<t.length;o++){var i=t[o];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,w(i.key),i)}}function w(e){var t=function(e,t){if("object"!=b(e)||!e)return e;var o=e[Symbol.toPrimitive];if(void 0!==o){var i=o.call(e,t||"default");if("object"!=b(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==b(t)?t:t+""}var k,C={13:"onEnterPress",38:"onUpArrowPress",40:"onDownArrowPress",46:"onBackspaceOrDeletePress",8:"onBackspaceOrDeletePress"},E=["autofocus","disabled","multiple","required"],$=["autofocus","class","disabled","id","multiple","name","placeholder","required"],A=["additionalClasses","additionalDropboxClasses","additionalDropboxContainerClasses","additionalToggleButtonClasses","aliasKey","allOptionsSelectedText","allowNewOption","alwaysShowSelectedOptionsCount","alwaysShowSelectedOptionsLabel","ariaLabelledby","ariaLabelText","ariaLabelClearButtonText","ariaLabelTagClearButtonText","ariaLabelSearchClearButtonText","autoSelectFirstOption","clearButtonText","descriptionKey","disableAllOptionsSelectedText","disableOptionGroupCheckbox","disableSelectAll","disableValidation","dropboxWidth","dropboxWrapper","emptyValue","enableSecureText","focusSelectedOptionOnOpen","hasOptionDescription","hideClearButton","hideValueTooltipOnSelectAll","keepAlwaysOpen","labelKey","markSearchResults","maxValues","maxWidth","minValues","moreText","noOfDisplayValues","noOptionsText","noSearchResultsText","optionHeight","optionSelectedText","optionsCount","optionsSelectedText","popupDropboxBreakpoint","popupPosition","position","search","searchByStartsWith","searchDelay","searchFormLabel","searchGroup","searchNormalize","searchPlaceholderText","selectAllOnlyVisible","selectAllText","setValueAsArray","showDropboxAsPopup","showOptionsOnlyOnSearch","showSelectedOptionsFirst","showValueAsTags","silentInitialValueSet","textDirection","tooltipAlignment","tooltipFontSize","tooltipMaxWidth","updatePositionThrottle","useGroupValue","valueKey","zIndex"],T=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);try{this.createSecureTextElements(),this.setProps(t),this.setDisabledOptions(t.disabledOptions),this.setOptions(t.options),this.render()}catch(e){console.warn("Couldn't initiate Virtual Select"),console.error(e)}}return t=e,o=[{key:"render",value:function(){if(this.$ele){var e=this.uniqueId,t="vscomp-wrapper",o="vscomp-toggle-button",i=this.showValueAsTags?"":this.getTooltipAttrText(this.placeholder,!0,!0),s=this.getTooltipAttrText(this.clearButtonText),n=this.ariaLabelledby?'aria-labelledby="'.concat(this.ariaLabelledby,'"'):"",r=this.ariaLabelText?'aria-label="'.concat(this.ariaLabelText,'"'):"",a=this.ariaLabelClearButtonText?'aria-label="'.concat(this.ariaLabelClearButtonText,'"'):"",l=!1;this.additionalClasses&&(t+=" ".concat(this.additionalClasses)),this.additionalToggleButtonClasses&&(o+=" ".concat(this.additionalToggleButtonClasses)),this.multiple&&(t+=" multiple",this.disableSelectAll||(t+=" has-select-all")),this.hideClearButton||(t+=" has-clear-button"),this.keepAlwaysOpen?(t+=" keep-always-open",l=!0):t+=" closed",this.showAsPopup&&(t+=" show-as-popup"),this.hasSearch&&(t+=" has-search-input"),this.showValueAsTags&&(t+=" show-value-as-tags"),this.textDirection&&(t+=" text-direction-".concat(this.textDirection)),this.popupPosition&&(t+=" popup-position-".concat(this.popupPosition.toLowerCase()));var u='<div id="vscomp-ele-wrapper-'.concat(e,'" class="vscomp-ele-wrapper ').concat(t,'" tabindex="0"\n role="combobox" aria-haspopup="listbox" aria-controls="vscomp-dropbox-container-').concat(e,'"\n aria-expanded="').concat(l,'" ').concat(n," ").concat(r,'>\n <input type="hidden" name="').concat(this.name,'" class="vscomp-hidden-input">\n <div class="').concat(o,'">\n <div class="vscomp-value" ').concat(i,">\n ").concat(this.placeholder,'\n </div>\n <div class="vscomp-arrow"></div>\n <div class="vscomp-clear-button toggle-button-child" ').concat(s,' \n tabindex="-1" role="button" ').concat(a,'>\n <i class="vscomp-clear-icon"></i>\n </div>\n </div>\n\n ').concat(this.renderDropbox({wrapperClasses:t}),"\n </div>");this.$ele.innerHTML=u,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"),d.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.$dropboxContainerBottom=this.$dropboxContainer.querySelector(".vscomp-dropbox-container-bottom"),this.$dropboxContainerTop=this.$dropboxContainer.querySelector(".vscomp-dropbox-container-top"),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,o="self"!==this.dropboxWrapper?document.querySelector(this.dropboxWrapper):null,i="vscomp-dropbox";this.additionalDropboxClasses&&(i+=" ".concat(this.additionalDropboxClasses));var s="vscomp-dropbox-container";this.additionalDropboxContainerClasses&&(s+=" ".concat(this.additionalDropboxContainerClasses));var n='<div id="vscomp-dropbox-container-'.concat(this.uniqueId,'" role="listbox" class="').concat(s,'">\n <div class="vscomp-dropbox-container-top" aria-hidden="true" tabindex="-1"> </div>\n <div class="').concat(i,'">\n <div class="vscomp-search-wrapper"></div>\n\n <div class="vscomp-options-container">\n <div class="vscomp-options-loader"></div>\n\n <div class="vscomp-options-list">\n <div class="vscomp-options"></div>\n </div>\n </div>\n\n <div class="vscomp-options-bottom-freezer"></div>\n <div class="vscomp-no-options">').concat(this.noOptionsText,'</div>\n <div class="vscomp-no-search-results">').concat(this.noSearchResultsText,'</div>\n\n <span class="vscomp-dropbox-close-button"><i class="vscomp-clear-icon"></i></span>\n </div>\n <div class="vscomp-dropbox-container-bottom" aria-hidden="true" tabindex="-1"> </div>\n </div>');if(o){var r=document.createElement("div");return this.$dropboxWrapper=r,this.hasDropboxWrapper=!0,r.innerHTML=n,o.appendChild(r),d.addClass(r,"vscomp-dropbox-wrapper ".concat(t)),this.keepAlwaysOpen||(d.setAttr(r,"tabindex","-1"),d.setAria(r,"hidden",!0)),""}return this.hasDropboxWrapper=!1,n}},{key:"renderOptions",value:function(){var e,t=this,o=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i="",s=this.getVisibleOptions(),r="",a="",l=!(!this.markSearchResults||!this.searchValue),u=this.labelRenderer,c=this.disableOptionGroupCheckbox,p=this.uniqueId,h=this.searchGroup,d="function"==typeof u,v=n.convertToBoolean,f="";if(l&&(e=new RegExp("(".concat(n.regexEscape(this.searchValue),")(?!([^<]+)?>)"),"gi")),this.multiple&&(r='<span class="checkbox-icon"></span>'),this.allowNewOption){var y=this.getTooltipAttrText("New Option");a='<span class="vscomp-new-option-icon" '.concat(y,"></span>")}s.forEach((function(o){var s,n=o.index,y="vscomp-option",b=t.getTooltipAttrText("",!0,!0),m=r,g="",O="",S="",x="",w="-1",k=v(o.isSelected),C="";if(o.classNames&&(y+=" ".concat(o.classNames)),o.isFocused&&(w="0",y+=" focused"),o.isDisabled&&(y+=" disabled",C='aria-disabled="true"'),o.isGroupTitle&&(f=o.label,y+=" group-title",c&&(m="")),k&&(y+=" selected"),o.isGroupOption){var E="";y+=" group-option",S='data-group-index="'.concat(o.groupIndex,'"'),o.customData?(f=void 0!==o.customData.group_name?"".concat(o.customData.group_name,", "):"",E=void 0!==o.customData.description?" ".concat(o.customData.description,","):"",x='aria-label="'.concat(f," ").concat(o.label,", ").concat(E,'"')):x='aria-label="'.concat(f,", ").concat(o.label,'"')}s=d?u(o):o.label,o.description&&(O='<div class="vscomp-option-description" '.concat(b,">").concat(o.description,"</div>")),o.isCurrentNew?(y+=" current-new",g+=a):!l||o.isGroupTitle&&!h||(s=s.replace(e,"<mark>$1</mark>")),i+='<div role="option" aria-selected="'.concat(k,'" id="vscomp-option-').concat(p,"-").concat(n,'"\n class="').concat(y,'" data-value="').concat(o.value,'" data-index="').concat(n,'" data-visible-index="').concat(o.visibleIndex,'"\n tabindex=').concat(w," ").concat(S," ").concat(C," ").concat(x,"\n >\n ").concat(m,'\n <span class="vscomp-option-text" ').concat(b,">\n ").concat(s,"\n </span>\n ").concat(O,"\n ").concat(g,"\n </div>")})),f="",this.$options.innerHTML=i,this.$visibleOptions=this.$options.querySelectorAll(".vscomp-option"),this.afterRenderOptions(o)}},{key:"renderSearch",value:function(){if(this.hasSearchContainer){var e="",t="";if(this.multiple&&!this.disableSelectAll&&(e='<span class="vscomp-toggle-all-button" tabindex="0" aria-label="'.concat(this.selectAllText,'">\n <span class="checkbox-icon vscomp-toggle-all-checkbox"></span>\n <span class="vscomp-toggle-all-label">').concat(this.selectAllText,"</span>\n </span>")),this.hasSearch){var o=this.ariaLabelSearchClearButtonText?'aria-label="'.concat(this.ariaLabelSearchClearButtonText,'"'):"";t='<label for="vscomp-search-input-'.concat(this.uniqueId,'" class="vscomp-search-label"\n id="vscomp-search-label-').concat(this.uniqueId,'"\n >\n ').concat(this.searchFormLabel,'\n </label>\n <input type="text" class="vscomp-search-input" placeholder="').concat(this.searchPlaceholderText,'"\n id="vscomp-search-input-').concat(this.uniqueId,'">\n <span class="vscomp-search-clear" role="button" ').concat(o,">×</span>")}var i='<div class="vscomp-search-container">\n '.concat(e,"\n ").concat(t,"\n </div>");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,"input","onSearch"),this.addEvent(this.$searchInput,"change","preventPropagation"),this.addEvent(this.$searchClear,"click keydown","onSearchClear"),this.addEvent(this.$toggleAllButton,"click","onToggleAllOptions"),this.addEvent(this.$dropboxContainerBottom,"focus","onDropboxContainerTopOrBottomFocus"),this.addEvent(this.$dropboxContainerTop,"focus","onDropboxContainerTopOrBottomFocus")}}},{key:"addEvents",value:function(){this.addEvent(document,"click","onDocumentClick"),this.addEvent(this.$allWrappers,"keydown","onKeyDown"),this.addEvent(this.$toggleButton,"click keydown","onToggleButtonPress"),this.addEvent(this.$clearButton,"click keydown","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,o){var i=this;e&&n.removeArrayEmpty(t.split(" ")).forEach((function(t){var s="".concat(o,"-").concat(t),n=i.events[s];n||(n=i[o].bind(i),i.events[s]=n),d.addEvent(e,t,n)}))}},{key:"removeEvents",value:function(){this.removeEvent(document,"click","onDocumentClick"),this.removeEvent(this.$allWrappers,"keydown","onKeyDown"),this.removeEvent(this.$toggleButton,"click keydown","onToggleButtonPress"),this.removeEvent(this.$clearButton,"click keydown","onClearButtonClick"),this.removeEvent(this.$dropboxContainer,"click","onDropboxContainerClick"),this.removeEvent(this.$dropboxCloseButton,"click","onDropboxCloseButtonClick"),this.removeEvent(this.$optionsContainer,"scroll","onOptionsScroll"),this.removeEvent(this.$options,"click","onOptionsClick"),this.removeEvent(this.$options,"mouseover","onOptionsMouseOver"),this.removeEvent(this.$options,"touchmove","onOptionsTouchMove"),this.removeMutationObserver()}},{key:"removeEvent",value:function(e,t,o){var i=this;e&&n.removeArrayEmpty(t.split(" ")).forEach((function(t){var s="".concat(o,"-").concat(t),n=i.events[s];n&&d.removeEvent(e,t,n)}))}},{key:"onDocumentClick",value:function(t){var o=t.target.closest(".vscomp-wrapper");if(o){var i=o.parentElement.virtualSelect;i&&i!==this&&this.isOpened()&&!this.keepAlwaysOpen&&(this.shouldFocusWrapperOnClose=!1,this.closeDropbox())}else e.openInstances.forEach((function(e){var t=e;t.shouldFocusWrapperOnClose=!1,t.closeDropbox()}))}},{key:"onKeyDown",value:function(e){var t=e.which||e.keyCode,o=C[t];if(document.activeElement!==this.$searchInput||e.shiftKey||9!==t||this.multiple||(e.preventDefault(),this.focusFirstVisibleOption()),document.activeElement!==this.$toggleAllButton||13!==t){if(27===t||"Escape"===e.key){var i=this.showAsPopup?this.$wrapper:this.$dropboxWrapper;if(i&&(document.activeElement===i||i.contains(document.activeElement))&&!this.keepAlwaysOpen)return void this.closeDropbox()}o&&this[o](e)}else this.toggleAllOptions()}},{key:"onEnterPress",value:function(e){e.preventDefault(),this.isOpened()?this.selectFocusedOption():!1===this.$ele.disabled&&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:"onBackspaceOrDeletePress",value:function(e){e.target===this.$wrapper&&(e.preventDefault(),this.selectedValues.length>0&&this.reset())}},{key:"onToggleButtonPress",value:function(e){if("keydown"!==e.type||(e.preventDefault(),"Enter"===e.code||"Space"===e.code)){var t=e.target;if(t.closest(".vscomp-value-tag-clear-button"))return e.stopPropagation(),void this.removeValue(t.closest(".vscomp-value-tag"));t.closest(".toggle-button-child")||this.toggleDropbox()}}},{key:"onClearButtonClick",value:function(e){"click"===e.type?this.reset():"keydown"!==e.type||"Enter"!==e.code&&"Space"!==e.code||(e.stopPropagation(),this.reset())}},{key:"onOptionsScroll",value:function(){this.setVisibleOptions(!0)}},{key:"onOptionsClick",value:function(e){var t=e.target.closest(".vscomp-option");t&&!d.hasClass(t,"disabled")&&(d.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=!d.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()&&(d.hasClass(t,"disabled")||d.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:"preventPropagation",value:function(e){e.stopPropagation()}},{key:"onSearchClear",value:function(e){e.stopPropagation(),"Enter"!==e.code&&"Space"!==e.code&&"click"!==e.type||(this.setSearchValue(""),this.focusSearchInput())}},{key:"onToggleAllOptions",value:function(){this.toggleAllOptions()}},{key:"onDropboxContainerTopOrBottomFocus",value:function(){this.closeDropbox()}},{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(o){var i=!1,s=!1;o.forEach((function(e){i||(i=g(e.addedNodes).some((function(e){return!(e!==t&&!e.contains(t))}))),s||(s=g(e.removedNodes).some((function(e){return!(e!==t&&!e.contains(t))})))})),s&&!i&&e.destroy()})),this.mutationObserver.observe(document.querySelector("body"),{childList:!0,subtree:!0})}}},{key:"removeMutationObserver",value:function(){this.hasDropboxWrapper&&this.mutationObserver.disconnect()}},{key:"beforeValueSet",value:function(e){this.toggleAllOptionsClass(!e&&void 0)}},{key:"beforeSelectNewValue",value:function(){var e=this,t=this.getNewOption(),o=t.index;this.newValues.push(t.value),this.setOptionProp(o,"isCurrentNew",!1),this.setOptionProp(o,"isNew",!0),setTimeout((function(){e.setSearchValue(""),e.focusSearchInput()}),0)}},{key:"afterRenderWrapper",value:function(){d.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=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.getVisibleOptions(),o=!this.options.length&&!this.hasServerSearch,i=!o&&!t.length;if((!this.allowNewOption||this.hasServerSearch||this.showOptionsOnlyOnSearch)&&(d.toggleClass(this.$allWrappers,"has-no-search-results",i),i?(d.setAttr(this.$noSearchResults,"tabindex","0"),d.setAttr(this.$noSearchResults,"aria-hidden","false")):(d.setAttr(this.$noSearchResults,"tabindex","-1"),d.setAttr(this.$noSearchResults,"aria-hidden","true"))),d.toggleClass(this.$allWrappers,"has-no-options",o),o?(d.setAttr(this.$noOptions,"tabindex","0"),d.setAttr(this.$noOptions,"aria-hidden","false")):(d.setAttr(this.$noOptions,"tabindex","-1"),d.setAttr(this.$noOptions,"aria-hidden","true")),this.setOptionAttr(),this.setOptionsPosition(),this.setOptionsTooltip(),document.activeElement!==this.$searchInput&&!1===e){var s=d.getElementsBySelector(".focused",this.$dropboxContainer)[0];void 0!==s&&s.focus()}}},{key:"afterSetOptionsContainerHeight",value:function(e){e&&this.showAsPopup&&this.setVisibleOptions()}},{key:"afterSetSearchValue",value:function(){var e=this;this.hasServerSearch?(clearInterval(this.serverSearchTimeout),this.serverSearchTimeout=setTimeout((function(){e.serverSearch()}),this.searchDelay)):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 o=n.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=o(t.multiple),this.hasSearch=o(t.search),this.searchByStartsWith=o(t.searchByStartsWith),this.searchGroup=o(t.searchGroup),this.hideClearButton=o(t.hideClearButton),this.autoSelectFirstOption=o(t.autoSelectFirstOption),this.hasOptionDescription=o(t.hasOptionDescription),this.silentInitialValueSet=o(t.silentInitialValueSet),this.allowNewOption=o(t.allowNewOption),this.markSearchResults=o(t.markSearchResults),this.showSelectedOptionsFirst=o(t.showSelectedOptionsFirst),this.disableSelectAll=o(t.disableSelectAll),this.keepAlwaysOpen=o(t.keepAlwaysOpen),this.showDropboxAsPopup=o(t.showDropboxAsPopup),this.hideValueTooltipOnSelectAll=o(t.hideValueTooltipOnSelectAll),this.showOptionsOnlyOnSearch=o(t.showOptionsOnlyOnSearch),this.selectAllOnlyVisible=o(t.selectAllOnlyVisible),this.alwaysShowSelectedOptionsCount=o(t.alwaysShowSelectedOptionsCount),this.alwaysShowSelectedOptionsLabel=o(t.alwaysShowSelectedOptionsLabel),this.disableAllOptionsSelectedText=o(t.disableAllOptionsSelectedText),this.showValueAsTags=o(t.showValueAsTags),this.disableOptionGroupCheckbox=o(t.disableOptionGroupCheckbox),this.enableSecureText=o(t.enableSecureText),this.setValueAsArray=o(t.setValueAsArray),this.disableValidation=o(t.disableValidation),this.initialDisabled=o(t.disabled),this.required=o(t.required),this.autofocus=o(t.autofocus),this.useGroupValue=o(t.useGroupValue),this.focusSelectedOptionOnOpen=o(t.focusSelectedOptionOnOpen),this.noOptionsText=t.noOptionsText,this.noSearchResultsText=t.noSearchResultsText,this.selectAllText=t.selectAllText,this.searchNormalize=t.searchNormalize,this.searchPlaceholderText=t.searchPlaceholderText,this.searchFormLabel=t.searchFormLabel,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.updatePositionThrottle=t.updatePositionThrottle,this.noOfDisplayValues=parseInt(t.noOfDisplayValues),this.zIndex=parseInt(t.zIndex),this.maxValues=parseInt(t.maxValues),this.minValues=parseInt(t.minValues),this.name=this.secureText(t.name),this.additionalClasses=t.additionalClasses,this.additionalDropboxClasses=t.additionalDropboxClasses,this.additionalDropboxContainerClasses=t.additionalDropboxContainerClasses,this.additionalToggleButtonClasses=t.additionalToggleButtonClasses,this.popupDropboxBreakpoint=t.popupDropboxBreakpoint,this.popupPosition=t.popupPosition,this.onServerSearch=t.onServerSearch,this.labelRenderer=t.labelRenderer,this.selectedLabelRenderer=t.selectedLabelRenderer,this.initialSelectedValue=0===t.selectedValue?"0":t.selectedValue,this.emptyValue=t.emptyValue,this.ariaLabelText=t.ariaLabelText,this.ariaLabelledby=t.ariaLabelledby,this.ariaLabelClearButtonText=t.ariaLabelClearButtonText,this.ariaLabelTagClearButtonText=t.ariaLabelTagClearButtonText,this.ariaLabelSearchClearButtonText=t.ariaLabelSearchClearButtonText,this.maxWidth=t.maxWidth,this.searchDelay=t.searchDelay,this.showDuration=parseInt(t.showDuration),this.hideDuration=parseInt(t.hideDuration),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(),this.shouldFocusWrapperOnClose=!0}},{key:"setDefaultProps",value:function(e){var t={dropboxWrapper:"self",valueKey:"value",labelKey:"label",descriptionKey:"description",aliasKey:"alias",ariaLabelText:"Options list",ariaLabelClearButtonText:"Clear button",ariaLabelTagClearButtonText:"Remove option",ariaLabelSearchClearButtonText:"Clear search input",optionsCount:5,noOfDisplayValues:50,optionHeight:"40px",noOptionsText:"No options found",noSearchResultsText:"No results found",selectAllText:"Select All",searchNormalize:!1,searchPlaceholderText:"Search...",searchFormLabel:"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",updatePositionThrottle:100,name:"",additionalClasses:"",additionalDropboxClasses:"",additionalDropboxContainerClasses:"",additionalToggleButtonClasses:"",maxValues:0,showDropboxAsPopup:!0,popupDropboxBreakpoint:"576px",popupPosition:"center",hideValueTooltipOnSelectAll:!0,emptyValue:"",searchDelay:300,focusSelectedOptionOnOpen:!0,showDuration:300,hideDuration:200};return e.hasOptionDescription&&(t.optionsCount=4,t.optionHeight="50px"),Object.assign(t,e)}},{key:"setPropsFromElementAttr",value:function(e){var t=e.ele;Object.keys(k).forEach((function(o){var i=t.getAttribute(o);-1===E.indexOf(o)||""!==i&&"true"!==i||(i=!0),i&&(e[k[o]]=i)}))}},{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.setEnabledOptions=e.setEnabledOptionsMethod,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.getDisabledOptions=e.getDisabledOptionsMethod,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 o={},i={},s=[],r=this.multiple,a=n.normalizeValues(e);if(a){if(Array.isArray(a)||(a=[a]),r){var l=this.maxValues;l&&a.length>l&&a.splice(l)}else a.length>1&&(a=[a[0]]);this.useGroupValue&&(a=this.setGroupOptionsValue(a)),a.forEach((function(e,t){o[e]=!0,i[e]=t})),this.allowNewOption&&a&&this.setNewOptionsFromValue(a)}if(this.options.forEach((function(e){var t=n.normalizeValues(e.value);!0!==o[t]||e.isDisabled||e.isGroupTitle?e.isSelected=!1:(e.isSelected=!0,s.push(e.value))})),r)this.hasOptionGroup&&this.setGroupsSelectedProp(),s.sort((function(e,t){return i[n.normalizeValues(e)]-i[n.normalizeValues(t)]}));else{var u=m(s,1);s=u[0]}this.beforeValueSet(),this.setValue(s,{disableEvent:t}),this.afterValueSet()}},{key:"setGroupOptionsValue",value:function(e){var t=[],o={},i={};return e.forEach((function(e){i[e]=!0})),this.options.forEach((function(e){var s=e.value,n=!0===i[s];e.isGroupTitle?n&&(o[e.index]=!0):(n||o[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],o=[];if(e)if(!0===e)t&&this.options.forEach((function(e){return e.isDisabled=!0,o.push(e.value),e}));else{o=e.map((function(e){return e.toString()}));var i={};o.forEach((function(e){i[e]=!0})),t&&this.options.forEach((function(e){return e.isDisabled=!0===i[e.value],e}))}else t&&this.options.forEach((function(e){return e.isDisabled=!1,e}));this.disabledOptions=o}},{key:"setEnabledOptionsMethod",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.setEnabledOptions(e),t||(this.setValueMethod(null),this.toggleAllOptionsClass()),this.setVisibleOptions()}},{key:"setEnabledOptions",value:function(e){if(void 0!==e){var t=[];if(!0===e)this.options.forEach((function(e){return e.isDisabled=!1,e}));else{var o={};e.forEach((function(e){o[e]=!0})),this.options.forEach((function(e){var i=!0!==o[e.value];return e.isDisabled=i,i&&t.push(e.value),e}))}this.disabledOptions=t}}},{key:"setOptions",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],o=[],i=this.disabledOptions.length,s=this.valueKey,r=this.labelKey,a=this.descriptionKey,l=this.aliasKey,u=this.hasOptionDescription,c=n.getString,p=n.convertToBoolean,h=this.secureText.bind(this),d=this.getAlias.bind(this),v=0,f=!1,m={},g=!1;this.disabledOptions.forEach((function(e){m[e]=!0}));var O=function(t){"object"!==b(t)&&(t=y(y({},s,t),r,t));var S=h(c(t[s])),x=h(c(t[r])),w=t.options,k=!!w,C={index:v,value:S,label:x,labelNormalized:e.searchNormalize&&""!==x.trim()?n.normalizeString(x).toLowerCase():x.toLowerCase(),alias:d(t[l]),isVisible:p(t.isVisible,!0),isNew:t.isNew||!1,isGroupTitle:k,classNames:t.classNames};if(g||""!==S||(g=!0),i&&(C.isDisabled=!0===m[S]),t.isGroupOption&&(C.isGroupOption=!0,C.groupIndex=t.groupIndex),u&&(C.description=h(c(t[a]))),t.customData&&(C.customData=t.customData),o.push(C),v+=1,k){var E=C.index;f=!0,w.forEach((function(e){e.isGroupOption=!0,e.groupIndex=E,O(e)}))}};Array.isArray(t)&&t.forEach(O);var S=o.length,x=this.$ele;x.options=o,x.length=S,this.options=o,this.visibleOptionsCount=S,this.lastOptionIndex=S-1,this.newValues=[],this.hasOptionGroup=f,this.hasEmptyValueOption=g,this.setSortedOptions()}},{key:"setServerOptions",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.setOptionsMethod(t,!0);var o=this.selectedOptions,i=this.options,s=!1;if(o.length){var n={};s=!0,i.forEach((function(e){n[e.value]=!0})),o.forEach((function(e){!0!==n[e.value]&&(e.isVisible=!1,i.push(e))})),this.setOptionsMethod(i,!0)}this.allowNewOption&&this.searchValue&&(i.some((function(t){return t.label.toLowerCase()===e.searchValue}))||(s=!0,this.setNewOption())),s?(this.setVisibleOptionsCount(),this.multiple&&this.toggleAllOptionsClass(),this.setValueText()):this.updatePosition(),this.setVisibleOptionsCount(),d.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=g(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=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=g(this.sortedOptions),o=2*this.optionsCount,i=this.getVisibleStartIndex(),s=this.getNewOption(),n=i+o-1,r=0;s&&(s.visibleIndex=r,r+=1),t=t.filter((function(e){var t=!1;return e.isVisible&&!e.isCurrentNew&&(t=r>=i&&r<=n,e.visibleIndex=r,r+=1),t})),s&&(t=[s].concat(g(t))),this.visibleOptions=t,this.visibleOptionsCount=t.length,this.renderOptions(e)}},{key:"setOptionsPosition",value:function(e){var t=parseInt((e||this.getVisibleStartIndex())*this.optionHeight);this.$options.style.transform="translate3d(0, ".concat(t,"px, 0)"),d.setData(this.$options,"top",t)}},{key:"setOptionsTooltip",value:function(){var e=this,t=this.getVisibleOptions(),o=this.hasOptionDescription;t.forEach((function(t){var i=e.$dropboxContainer.querySelector('.vscomp-option[data-index="'.concat(t.index,'"]'));d.setData(i.querySelector(".vscomp-option-text"),"tooltip",t.label),o&&d.setData(i.querySelector(".vscomp-option-description"),"tooltip",t.description)}))}},{key:"setValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=t.disableEvent,i=void 0!==o&&o,s=t.disableValidation,r=void 0!==s&&s,a=n.normalizeValues(e);this.hasEmptyValueOption&&""===a||a?Array.isArray(a)?this.selectedValues=g(a):this.selectedValues=[a]: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();var u=n.isNotEmpty(this.selectedValues);d.toggleClass(this.$allWrappers,"has-value",u),d.toggleClass(this.$allWrappers,"max-value-selected",this.isMaxValuesSelected),d.setAttr(this.$clearButton,"tabindex",u?"0":"-1"),d.setAria(this.$clearButton,"hidden",!1===u),r||this.validate(),i||d.dispatchEvent(this.$ele,"change",!0)}},{key:"setValueText",value:function(){var e=this,t=this.multiple,o=this.selectedValues,i=this.noOfDisplayValues,s=this.showValueAsTags,r=this.$valueText,a=this.selectedLabelRenderer,l=[],u=[],c=o.length,p=0,h=this.isAllSelected&&!this.hasServerSearch&&!this.disableAllOptionsSelectedText&&!s;if(h&&this.hideValueTooltipOnSelectAll)r.innerHTML="".concat(this.allOptionsSelectedText," (").concat(c,")");else{this.getSelectedOptions({fullDetails:!0,keepSelectionOrder:!0}).some((function(t){if(t.isCurrentNew)return!1;if(p>=i)return!0;var o=t.label;if("function"==typeof a&&(o=a(t)),l.push(o),p+=1,s){var c=n.willTextOverflow(r.parentElement,o)?e.getTooltipAttrText(o,!1,!0):"",h="";if(e.ariaLabelTagClearButtonText){var d=o.replace(/<[^>]+>/gi,"").trim();h='aria-label="'.concat(d,", ").concat(e.ariaLabelTagClearButtonText,'"')}var v='<span class="vscomp-value-tag" data-index="'.concat(t.index,'" ').concat(c,'>\n <span class="vscomp-value-tag-content">').concat(o,'</span>\n <span \n class="vscomp-value-tag-clear-button" \n role="button" \n ').concat(h,'\n tabindex="0">\n <i class="vscomp-clear-icon"></i>\n </span>\n </span>');u.push(v)}else u.push(o);return!1}));var v=c-i;v>0&&u.push('<span class="vscomp-value-tag more-value-count">+ '.concat(v," ").concat(this.moreText,"</span>"));var f=l.join(", ");if(""===f)r.innerHTML=this.placeholder;else if(r.innerHTML=f,t){var y=this.maxValues;if(this.alwaysShowSelectedOptionsCount||d.hasEllipsis(r)||y||s){var b='<span class="vscomp-selected-value-count">'.concat(c,"</span>");if(y&&(b+=' / <span class="vscomp-max-value-count">'.concat(y,"</span>")),h)r.innerHTML="".concat(this.allOptionsSelectedText," (").concat(c,")");else if(s)r.innerHTML=u.join(""),this.$valueTags=r.querySelectorAll(".vscomp-value-tag"),this.setValueTagAttr();else if(!this.alwaysShowSelectedOptionsLabel){var m=1===c?this.optionSelectedText:this.optionsSelectedText;r.innerHTML="".concat(b," ").concat(m)}}else u=[]}}var g="";0===c?g=this.placeholder:s||(g=u.join(", ")),s||d.setData(r,"tooltip",g),t&&(s?this.updatePosition():d.setData(r,"tooltipEllipsisOnly",0===c))}},{key:"setSearchValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(e!==this.searchValueOriginal||o){t||(this.$searchInput.value=e);var i=e.replace(/\\/g,"").toLowerCase().trim();this.searchValue=i,this.searchValueOriginal=e,d.toggleClass(this.$allWrappers,"has-search-value",e),d.setAttr(this.$searchClear,"tabindex",""!==e?"0":"-1"),d.setAria(this.$searchClear,"hidden",""===e),this.afterSetSearchValue()}}},{key:"setVisibleOptionsCount",value:function(){var e,t=0,o=!1,i=this.searchGroup,s=this.showOptionsOnlyOnSearch,r=this.searchByStartsWith,a=this.searchValue;a=this.searchNormalize&&""!==a.trim()?n.normalizeString(a):a;var l=this.isOptionVisible.bind(this);this.hasOptionGroup&&(e=this.getVisibleOptionGroupsMapping(a)),this.options.forEach((function(n){var u;n.isCurrentNew||(s&&!a?(n.isVisible=!1,u={isVisible:!1,hasExactOption:!1}):u=l({data:n,searchValue:a,hasExactOption:o,visibleOptionGroupsMapping:e,searchGroup:i,searchByStartsWith:r}),u.isVisible&&(t+=1),o||(o=u.hasExactOption))})),this.allowNewOption&&(a&&!o?(this.setNewOption(),t+=1):this.removeNewOption()),this.visibleOptionsCount=t,this.afterSetVisibleOptionsCount()}},{key:"setOptionProp",value:function(e,t,o){this.options[e]&&(this.options[e][t]=o)}},{key:"setOptionsHeight",value:function(){this.$optionsList.style.height="".concat(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&&(d.setStyle(this.$noOptions,"height",t),d.setStyle(this.$noSearchResults,"height",t))),d.setStyle(this.$optionsContainer,"max-height",t),this.afterSetOptionsContainerHeight(e)}},{key:"setNewOption",value:function(e){var t=e||this.searchValueOriginal.trim();if(t){var o=this.getNewOption();if(o){var i=o.index;this.setOptionProp(i,"value",this.secureText(t)),this.setOptionProp(i,"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