slim-select 1.26.2 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ var exports = {};!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SlimSelect=t():e.SlimSelect=t()}(window,function(){return s={},n.m=i=[function(e,t,i){"use strict";function s(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var i=document.createEvent("CustomEvent");return i.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i}var n;t.__esModule=!0,t.hasClassInTree=function(e,t){function s(e,t){return t&&e&&e.classList&&e.classList.contains(t)?e:null}return s(e,t)||function e(t,i){return t&&t!==document?s(t,i)?t:e(t.parentNode,i):null}(e,t)},t.ensureElementInView=function(e,t){var i=e.scrollTop+e.offsetTop,s=i+e.clientHeight,n=t.offsetTop,a=n+t.clientHeight;n<i?e.scrollTop-=i-n:s<a&&(e.scrollTop+=a-s)},t.putContent=function(e,t,i){var s=e.offsetHeight,n=e.getBoundingClientRect(),a=i?n.top:n.top-s,o=i?n.bottom:n.bottom+s;return a<=0?"below":o>=window.innerHeight?"above":i?t:"below"},t.debounce=function(n,a,o){var l;return void 0===a&&(a=100),void 0===o&&(o=!1),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var i=self,s=o&&!l;clearTimeout(l),l=setTimeout(function(){l=null,o||n.apply(i,e)},a),s&&n.apply(i,e)}},t.isValueInArrayOfObjects=function(e,t,i){if(!Array.isArray(e))return e[t]===i;for(var s=0,n=e;s<n.length;s++){var a=n[s];if(a&&a[t]&&a[t]===i)return!0}return!1},t.highlight=function(e,t,i){var s=e,n=new RegExp("("+t.trim()+")(?![^<]*>[^<>]*</)","i");if(!e.match(n))return e;var a=e.match(n).index,o=a+e.match(n)[0].toString().length,l=e.substring(a,o);return s=s.replace(n,'<mark class="'+i+'">'+l+"</mark>")},t.kebabCase=function(e){var t=e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,function(e){return"-"+e.toLowerCase()});return e[0]===e[0].toUpperCase()?t.substring(1):t},"function"!=typeof(n=window).CustomEvent&&(s.prototype=n.Event.prototype,n.CustomEvent=s)},function(e,t,i){"use strict";t.__esModule=!0;var s=(n.prototype.newOption=function(e){return{id:e.id?e.id:String(Math.floor(1e8*Math.random())),value:e.value?e.value:"",text:e.text?e.text:"",innerHTML:e.innerHTML?e.innerHTML:"",selected:!!e.selected&&e.selected,display:void 0===e.display||e.display,disabled:!!e.disabled&&e.disabled,placeholder:!!e.placeholder&&e.placeholder,class:e.class?e.class:void 0,data:e.data?e.data:{},mandatory:!!e.mandatory&&e.mandatory}},n.prototype.add=function(e){this.data.push({id:String(Math.floor(1e8*Math.random())),value:e.value,text:e.text,innerHTML:"",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,mandatory:e.mandatory,data:{}})},n.prototype.parseSelectData=function(){this.data=[];for(var e=0,t=this.main.select.element.childNodes;e<t.length;e++){var i=t[e];if("OPTGROUP"===i.nodeName){for(var s={label:i.label,options:[]},n=0,a=i.childNodes;n<a.length;n++){var o=a[n];if("OPTION"===o.nodeName){var l=this.pullOptionData(o);s.options.push(l),l.placeholder&&""!==l.text.trim()&&(this.main.config.placeholderText=l.text)}}this.data.push(s)}else"OPTION"===i.nodeName&&(l=this.pullOptionData(i),this.data.push(l),l.placeholder&&""!==l.text.trim()&&(this.main.config.placeholderText=l.text))}},n.prototype.pullOptionData=function(e){return{id:!!e.dataset&&e.dataset.id||String(Math.floor(1e8*Math.random())),value:e.value,text:e.text,innerHTML:e.innerHTML,selected:e.selected,disabled:e.disabled,placeholder:"true"===e.dataset.placeholder,class:e.className,style:e.style.cssText,data:e.dataset,mandatory:!!e.dataset&&"true"===e.dataset.mandatory}},n.prototype.setSelectedFromSelect=function(){if(this.main.config.isMultiple){for(var e=[],t=0,i=this.main.select.element.options;t<i.length;t++){var s=i[t];if(s.selected){var n=this.getObjectFromData(s.value,"value");n&&n.id&&e.push(n.id)}}this.setSelected(e,"id")}else{var a=this.main.select.element;if(-1!==a.selectedIndex){var o=a.options[a.selectedIndex].value;this.setSelected(o,"value")}}},n.prototype.setSelected=function(e,t){void 0===t&&(t="id");for(var i=0,s=this.data;i<s.length;i++){var n=s[i];if(n.hasOwnProperty("label")){if(n.hasOwnProperty("options")){var a=n.options;if(a)for(var o=0,l=a;o<l.length;o++){var r=l[o];r.placeholder||(r.selected=this.shouldBeSelected(r,e,t))}}}else n.selected=this.shouldBeSelected(n,e,t)}},n.prototype.shouldBeSelected=function(e,t,i){if(void 0===i&&(i="id"),Array.isArray(t))for(var s=0,n=t;s<n.length;s++){var a=n[s];if(i in e&&String(e[i])===String(a))return!0}else if(i in e&&String(e[i])===String(t))return!0;return!1},n.prototype.getSelected=function(){for(var e={text:"",placeholder:this.main.config.placeholderText},t=[],i=0,s=this.data;i<s.length;i++){var n=s[i];if(n.hasOwnProperty("label")){if(n.hasOwnProperty("options")){var a=n.options;if(a)for(var o=0,l=a;o<l.length;o++){var r=l[o];r.selected&&(this.main.config.isMultiple?t.push(r):e=r)}}}else n.selected&&(this.main.config.isMultiple?t.push(n):e=n)}return this.main.config.isMultiple?t:e},n.prototype.addToSelected=function(e,t){if(void 0===t&&(t="id"),this.main.config.isMultiple){var i=[],s=this.getSelected();if(Array.isArray(s))for(var n=0,a=s;n<a.length;n++){var o=a[n];i.push(o[t])}i.push(e),this.setSelected(i,t)}},n.prototype.removeFromSelected=function(e,t){if(void 0===t&&(t="id"),this.main.config.isMultiple){for(var i=[],s=0,n=this.getSelected();s<n.length;s++){var a=n[s];String(a[t])!==String(e)&&i.push(a[t])}this.setSelected(i,t)}},n.prototype.onDataChange=function(){this.main.onChange&&this.isOnChangeEnabled&&this.main.onChange(JSON.parse(JSON.stringify(this.getSelected())))},n.prototype.getObjectFromData=function(e,t){void 0===t&&(t="id");for(var i=0,s=this.data;i<s.length;i++){var n=s[i];if(t in n&&String(n[t])===String(e))return n;if(n.hasOwnProperty("options")&&n.options)for(var a=0,o=n.options;a<o.length;a++){var l=o[a];if(String(l[t])===String(e))return l}}return null},n.prototype.search=function(n){if(""!==(this.searchValue=n).trim()){var a=this.main.config.searchFilter,e=this.data.slice(0);n=n.trim();var t=e.map(function(e){if(e.hasOwnProperty("options")){var t=e,i=[];if(t.options&&(i=t.options.filter(function(e){return a(e,n)})),0!==i.length){var s=Object.assign({},t);return s.options=i,s}}return e.hasOwnProperty("text")&&a(e,n)?e:null});this.filtered=t.filter(function(e){return e})}else this.filtered=null},n);function n(e){this.contentOpen=!1,this.contentPosition="below",this.isOnChangeEnabled=!0,this.main=e.main,this.searchValue="",this.data=[],this.filtered=null,this.parseSelectData(),this.setSelectedFromSelect()}function r(e){return void 0!==e.text||(console.error("Data object option must have at least have a text value. Check object: "+JSON.stringify(e)),!1)}t.Data=s,t.validateData=function(e){if(!e)return console.error("Data must be an array of objects"),!1;for(var t=0,i=0,s=e;i<s.length;i++){var n=s[i];if(n.hasOwnProperty("label")){if(n.hasOwnProperty("options")){var a=n.options;if(a)for(var o=0,l=a;o<l.length;o++){r(l[o])||t++}}}else r(n)||t++}return 0===t},t.validateOption=r},function(e,t,i){"use strict";t.__esModule=!0;var s=i(3),n=i(4),a=i(5),r=i(1),o=i(0),l=(c.prototype.validate=function(e){var t="string"==typeof e.select?document.querySelector(e.select):e.select;if(!t)throw new Error("Could not find select element");if("SELECT"!==t.tagName)throw new Error("Element isnt of type select");return t},c.prototype.selected=function(){if(this.config.isMultiple){for(var e=[],t=0,i=n=this.data.getSelected();t<i.length;t++){var s=i[t];e.push(s.value)}return e}var n;return(n=this.data.getSelected())?n.value:""},c.prototype.set=function(e,t,i,s){void 0===t&&(t="value"),void 0===i&&(i=!0),void 0===s&&(s=!0),this.config.isMultiple&&!Array.isArray(e)?this.data.addToSelected(e,t):this.data.setSelected(e,t),this.select.setValue(),this.data.onDataChange(),this.render(),i&&this.close()},c.prototype.setSelected=function(e,t,i,s){void 0===t&&(t="value"),void 0===i&&(i=!0),void 0===s&&(s=!0),this.set(e,t,i,s)},c.prototype.setData=function(e){if(r.validateData(e)){for(var t=JSON.parse(JSON.stringify(e)),i=this.data.getSelected(),s=0;s<t.length;s++)t[s].value||t[s].placeholder||(t[s].value=t[s].text);if(this.config.isAjax&&i)if(this.config.isMultiple)for(var n=0,a=i.reverse();n<a.length;n++){var o=a[n];t.unshift(o)}else{for(t.unshift(i),s=0;s<t.length;s++)t[s].placeholder||t[s].value!==i.value||t[s].text!==i.text||delete t[s];var l=!1;for(s=0;s<t.length;s++)t[s].placeholder&&(l=!0);l||t.unshift({text:"",placeholder:!0})}this.select.create(t),this.data.parseSelectData(),this.data.setSelectedFromSelect()}else console.error("Validation problem on: #"+this.select.element.id)},c.prototype.addData=function(e){r.validateData([e])?(this.data.add(this.data.newOption(e)),this.select.create(this.data.data),this.data.parseSelectData(),this.data.setSelectedFromSelect(),this.render()):console.error("Validation problem on: #"+this.select.element.id)},c.prototype.open=function(){var e=this;if(this.config.isEnabled&&!this.data.contentOpen){if(this.beforeOpen&&this.beforeOpen(),this.config.isMultiple&&this.slim.multiSelected?this.slim.multiSelected.plus.classList.add("ss-cross"):this.slim.singleSelected&&(this.slim.singleSelected.arrowIcon.arrow.classList.remove("arrow-down"),this.slim.singleSelected.arrowIcon.arrow.classList.add("arrow-up")),this.slim[this.config.isMultiple?"multiSelected":"singleSelected"].container.classList.add("above"===this.data.contentPosition?this.config.openAbove:this.config.openBelow),this.config.addToBody){var t=this.slim.container.getBoundingClientRect();this.slim.content.style.top=t.top+t.height+window.scrollY+"px",this.slim.content.style.left=t.left+window.scrollX+"px",this.slim.content.style.width=t.width+"px"}if(this.slim.content.classList.add(this.config.open),"up"===this.config.showContent.toLowerCase()||"down"!==this.config.showContent.toLowerCase()&&"above"===o.putContent(this.slim.content,this.data.contentPosition,this.data.contentOpen)?this.moveContentAbove():this.moveContentBelow(),!this.config.isMultiple){var i=this.data.getSelected();if(i){var s=i.id,n=this.slim.list.querySelector('[data-id="'+s+'"]');n&&o.ensureElementInView(this.slim.list,n)}}setTimeout(function(){e.data.contentOpen=!0,e.config.searchFocus&&e.slim.search.input.focus(),e.afterOpen&&e.afterOpen()},this.config.timeoutDelay)}},c.prototype.close=function(){var e=this;this.data.contentOpen&&(this.beforeClose&&this.beforeClose(),this.config.isMultiple&&this.slim.multiSelected?(this.slim.multiSelected.container.classList.remove(this.config.openAbove),this.slim.multiSelected.container.classList.remove(this.config.openBelow),this.slim.multiSelected.plus.classList.remove("ss-cross")):this.slim.singleSelected&&(this.slim.singleSelected.container.classList.remove(this.config.openAbove),this.slim.singleSelected.container.classList.remove(this.config.openBelow),this.slim.singleSelected.arrowIcon.arrow.classList.add("arrow-down"),this.slim.singleSelected.arrowIcon.arrow.classList.remove("arrow-up")),this.slim.content.classList.remove(this.config.open),this.data.contentOpen=!1,this.search(""),setTimeout(function(){e.slim.content.removeAttribute("style"),e.data.contentPosition="below",e.config.isMultiple&&e.slim.multiSelected?(e.slim.multiSelected.container.classList.remove(e.config.openAbove),e.slim.multiSelected.container.classList.remove(e.config.openBelow)):e.slim.singleSelected&&(e.slim.singleSelected.container.classList.remove(e.config.openAbove),e.slim.singleSelected.container.classList.remove(e.config.openBelow)),e.slim.search.input.blur(),e.afterClose&&e.afterClose()},this.config.timeoutDelay))},c.prototype.moveContentAbove=function(){var e=0;this.config.isMultiple&&this.slim.multiSelected?e=this.slim.multiSelected.container.offsetHeight:this.slim.singleSelected&&(e=this.slim.singleSelected.container.offsetHeight);var t=e+this.slim.content.offsetHeight-1;this.slim.content.style.margin="-"+t+"px 0 0 0",this.slim.content.style.height=t-e+1+"px",this.slim.content.style.transformOrigin="center bottom",this.data.contentPosition="above",this.config.isMultiple&&this.slim.multiSelected?(this.slim.multiSelected.container.classList.remove(this.config.openBelow),this.slim.multiSelected.container.classList.add(this.config.openAbove)):this.slim.singleSelected&&(this.slim.singleSelected.container.classList.remove(this.config.openBelow),this.slim.singleSelected.container.classList.add(this.config.openAbove))},c.prototype.moveContentBelow=function(){this.data.contentPosition="below",this.config.isMultiple&&this.slim.multiSelected?(this.slim.multiSelected.container.classList.remove(this.config.openAbove),this.slim.multiSelected.container.classList.add(this.config.openBelow)):this.slim.singleSelected&&(this.slim.singleSelected.container.classList.remove(this.config.openAbove),this.slim.singleSelected.container.classList.add(this.config.openBelow))},c.prototype.enable=function(){this.config.isEnabled=!0,this.config.isMultiple&&this.slim.multiSelected?this.slim.multiSelected.container.classList.remove(this.config.disabled):this.slim.singleSelected&&this.slim.singleSelected.container.classList.remove(this.config.disabled),this.select.triggerMutationObserver=!1,this.select.element.disabled=!1,this.slim.search.input.disabled=!1,this.select.triggerMutationObserver=!0},c.prototype.disable=function(){this.config.isEnabled=!1,this.config.isMultiple&&this.slim.multiSelected?this.slim.multiSelected.container.classList.add(this.config.disabled):this.slim.singleSelected&&this.slim.singleSelected.container.classList.add(this.config.disabled),this.select.triggerMutationObserver=!1,this.select.element.disabled=!0,this.slim.search.input.disabled=!0,this.select.triggerMutationObserver=!0},c.prototype.search=function(t){if(this.data.searchValue!==t)if(this.slim.search.input.value=t,this.config.isAjax){var i=this;this.config.isSearching=!0,this.render(),this.ajax&&this.ajax(t,function(e){i.config.isSearching=!1,Array.isArray(e)?(e.unshift({text:"",placeholder:!0}),i.setData(e),i.data.search(t),i.render()):"string"==typeof e?i.slim.options(e):i.render()})}else this.data.search(t),this.render()},c.prototype.setSearchText=function(e){this.config.searchText=e},c.prototype.render=function(){this.config.isMultiple?this.slim.values():(this.slim.placeholder(),this.slim.deselect()),this.slim.options()},c.prototype.destroy=function(e){void 0===e&&(e=null);var t=e?document.querySelector("."+e+".ss-main"):this.slim.container,i=e?document.querySelector("[data-ssid="+e+"]"):this.select.element;if(t&&i&&(document.removeEventListener("click",this.documentClick),"auto"===this.config.showContent&&window.removeEventListener("scroll",this.windowScroll,!1),i.style.display="",delete i.dataset.ssid,i.slim=null,t.parentElement&&t.parentElement.removeChild(t),this.config.addToBody)){var s=e?document.querySelector("."+e+".ss-content"):this.slim.content;if(!s)return;document.body.removeChild(s)}},c);function c(e){var t=this;this.ajax=null,this.addable=null,this.beforeOnChange=null,this.onChange=null,this.beforeOpen=null,this.afterOpen=null,this.beforeClose=null,this.afterClose=null,this.windowScroll=o.debounce(function(e){t.data.contentOpen&&("above"===o.putContent(t.slim.content,t.data.contentPosition,t.data.contentOpen)?t.moveContentAbove():t.moveContentBelow())}),this.documentClick=function(e){e.target&&!o.hasClassInTree(e.target,t.config.id)&&t.close()};var i=this.validate(e);i.dataset.ssid&&this.destroy(i.dataset.ssid),e.ajax&&(this.ajax=e.ajax),e.addable&&(this.addable=e.addable),this.config=new s.Config({select:i,isAjax:!!e.ajax,showSearch:e.showSearch,searchPlaceholder:e.searchPlaceholder,searchText:e.searchText,searchingText:e.searchingText,searchFocus:e.searchFocus,searchHighlight:e.searchHighlight,searchFilter:e.searchFilter,closeOnSelect:e.closeOnSelect,showContent:e.showContent,placeholderText:e.placeholder,allowDeselect:e.allowDeselect,allowDeselectOption:e.allowDeselectOption,hideSelectedOption:e.hideSelectedOption,deselectLabel:e.deselectLabel,isEnabled:e.isEnabled,valuesUseText:e.valuesUseText,showOptionTooltips:e.showOptionTooltips,selectByGroup:e.selectByGroup,limit:e.limit,timeoutDelay:e.timeoutDelay,addToBody:e.addToBody}),this.select=new n.Select({select:i,main:this}),this.data=new r.Data({main:this}),this.slim=new a.Slim({main:this}),this.select.element.parentNode&&this.select.element.parentNode.insertBefore(this.slim.container,this.select.element.nextSibling),e.data?this.setData(e.data):this.render(),document.addEventListener("click",this.documentClick),"auto"===this.config.showContent&&window.addEventListener("scroll",this.windowScroll,!1),e.beforeOnChange&&(this.beforeOnChange=e.beforeOnChange),e.onChange&&(this.onChange=e.onChange),e.beforeOpen&&(this.beforeOpen=e.beforeOpen),e.afterOpen&&(this.afterOpen=e.afterOpen),e.beforeClose&&(this.beforeClose=e.beforeClose),e.afterClose&&(this.afterClose=e.afterClose),this.config.isEnabled||this.disable()}t.default=l},function(e,t,i){"use strict";t.__esModule=!0;var s=(n.prototype.searchFilter=function(e,t){return-1!==e.text.toLowerCase().indexOf(t.toLowerCase())},n);function n(e){this.id="",this.isMultiple=!1,this.isAjax=!1,this.isSearching=!1,this.showSearch=!0,this.searchFocus=!0,this.searchHighlight=!1,this.closeOnSelect=!0,this.showContent="auto",this.searchPlaceholder="Search",this.searchText="No Results",this.searchingText="Searching...",this.placeholderText="Select Value",this.allowDeselect=!1,this.allowDeselectOption=!1,this.hideSelectedOption=!1,this.deselectLabel="x",this.isEnabled=!0,this.valuesUseText=!1,this.showOptionTooltips=!1,this.selectByGroup=!1,this.limit=0,this.timeoutDelay=200,this.addToBody=!1,this.main="ss-main",this.singleSelected="ss-single-selected",this.arrow="ss-arrow",this.multiSelected="ss-multi-selected",this.add="ss-add",this.plus="ss-plus",this.values="ss-values",this.value="ss-value",this.valueText="ss-value-text",this.valueDelete="ss-value-delete",this.content="ss-content",this.open="ss-open",this.openAbove="ss-open-above",this.openBelow="ss-open-below",this.search="ss-search",this.searchHighlighter="ss-search-highlight",this.addable="ss-addable",this.list="ss-list",this.optgroup="ss-optgroup",this.optgroupLabel="ss-optgroup-label",this.optgroupLabelSelectable="ss-optgroup-label-selectable",this.option="ss-option",this.optionSelected="ss-option-selected",this.highlighted="ss-highlighted",this.disabled="ss-disabled",this.hide="ss-hide",this.id="ss-"+Math.floor(1e5*Math.random()),this.style=e.select.style.cssText,this.class=e.select.className.split(" "),this.isMultiple=e.select.multiple,this.isAjax=e.isAjax,this.showSearch=!1!==e.showSearch,this.searchFocus=!1!==e.searchFocus,this.searchHighlight=!0===e.searchHighlight,this.closeOnSelect=!1!==e.closeOnSelect,e.showContent&&(this.showContent=e.showContent),this.isEnabled=!1!==e.isEnabled,e.searchPlaceholder&&(this.searchPlaceholder=e.searchPlaceholder),e.searchText&&(this.searchText=e.searchText),e.searchingText&&(this.searchingText=e.searchingText),e.placeholderText&&(this.placeholderText=e.placeholderText),this.allowDeselect=!0===e.allowDeselect,this.allowDeselectOption=!0===e.allowDeselectOption,this.hideSelectedOption=!0===e.hideSelectedOption,e.deselectLabel&&(this.deselectLabel=e.deselectLabel),e.valuesUseText&&(this.valuesUseText=e.valuesUseText),e.showOptionTooltips&&(this.showOptionTooltips=e.showOptionTooltips),e.selectByGroup&&(this.selectByGroup=e.selectByGroup),e.limit&&(this.limit=e.limit),e.searchFilter&&(this.searchFilter=e.searchFilter),null!=e.timeoutDelay&&(this.timeoutDelay=e.timeoutDelay),this.addToBody=!0===e.addToBody}t.Config=s},function(e,t,i){"use strict";t.__esModule=!0;var s=i(0),n=(a.prototype.setValue=function(){if(this.main.data.getSelected()){if(this.main.config.isMultiple)for(var e=this.main.data.getSelected(),t=0,i=this.element.options;t<i.length;t++){var s=i[t];s.selected=!1;for(var n=0,a=e;n<a.length;n++)a[n].value===s.value&&(s.selected=!0)}else e=this.main.data.getSelected(),this.element.value=e?e.value:"";this.main.data.isOnChangeEnabled=!1,this.element.dispatchEvent(new CustomEvent("change",{bubbles:!0})),this.main.data.isOnChangeEnabled=!0}},a.prototype.addAttributes=function(){this.element.tabIndex=-1,this.element.style.display="none",this.element.dataset.ssid=this.main.config.id},a.prototype.addEventListeners=function(){var t=this;this.element.addEventListener("change",function(e){t.main.data.setSelectedFromSelect(),t.main.render()})},a.prototype.addMutationObserver=function(){var t=this;this.main.config.isAjax||(this.mutationObserver=new MutationObserver(function(e){t.triggerMutationObserver&&(t.main.data.parseSelectData(),t.main.data.setSelectedFromSelect(),t.main.render(),e.forEach(function(e){"class"===e.attributeName&&t.main.slim.updateContainerDivClass(t.main.slim.container)}))}),this.observeMutationObserver())},a.prototype.observeMutationObserver=function(){this.mutationObserver&&this.mutationObserver.observe(this.element,{attributes:!0,childList:!0,characterData:!0})},a.prototype.disconnectMutationObserver=function(){this.mutationObserver&&this.mutationObserver.disconnect()},a.prototype.create=function(e){this.element.innerHTML="";for(var t=0,i=e;t<i.length;t++){var s=i[t];if(s.hasOwnProperty("options")){var n=s,a=document.createElement("optgroup");if(a.label=n.label,n.options)for(var o=0,l=n.options;o<l.length;o++){var r=l[o];a.appendChild(this.createOption(r))}this.element.appendChild(a)}else this.element.appendChild(this.createOption(s))}},a.prototype.createOption=function(t){var i=document.createElement("option");return i.value=""!==t.value?t.value:t.text,i.innerHTML=t.innerHTML||t.text,t.selected&&(i.selected=t.selected),!1===t.display&&(i.style.display="none"),t.disabled&&(i.disabled=!0),t.placeholder&&i.setAttribute("data-placeholder","true"),t.mandatory&&i.setAttribute("data-mandatory","true"),t.class&&t.class.split(" ").forEach(function(e){i.classList.add(e)}),t.data&&"object"==typeof t.data&&Object.keys(t.data).forEach(function(e){i.setAttribute("data-"+s.kebabCase(e),t.data[e])}),i},a);function a(e){this.triggerMutationObserver=!0,this.element=e.select,this.main=e.main,this.element.disabled&&(this.main.config.isEnabled=!1),this.addAttributes(),this.addEventListeners(),this.mutationObserver=null,this.addMutationObserver(),this.element.slim=e.main}t.Select=n},function(e,t,i){"use strict";t.__esModule=!0;var a=i(0),o=i(1),s=(n.prototype.containerDiv=function(){var e=document.createElement("div");return e.style.cssText=this.main.config.style,this.updateContainerDivClass(e),e},n.prototype.updateContainerDivClass=function(e){this.main.config.class=this.main.select.element.className.split(" "),e.className="",e.classList.add(this.main.config.id),e.classList.add(this.main.config.main);for(var t=0,i=this.main.config.class;t<i.length;t++){var s=i[t];""!==s.trim()&&e.classList.add(s)}},n.prototype.singleSelectedDiv=function(){var t=this,e=document.createElement("div");e.classList.add(this.main.config.singleSelected);var i=document.createElement("span");i.classList.add("placeholder"),e.appendChild(i);var s=document.createElement("span");s.innerHTML=this.main.config.deselectLabel,s.classList.add("ss-deselect"),s.onclick=function(e){e.stopPropagation(),t.main.config.isEnabled&&t.main.set("")},e.appendChild(s);var n=document.createElement("span");n.classList.add(this.main.config.arrow);var a=document.createElement("span");return a.classList.add("arrow-down"),n.appendChild(a),e.appendChild(n),e.onclick=function(){t.main.config.isEnabled&&(t.main.data.contentOpen?t.main.close():t.main.open())},{container:e,placeholder:i,deselect:s,arrowIcon:{container:n,arrow:a}}},n.prototype.placeholder=function(){var e=this.main.data.getSelected();if(null===e||e&&e.placeholder){var t=document.createElement("span");t.classList.add(this.main.config.disabled),t.innerHTML=this.main.config.placeholderText,this.singleSelected&&(this.singleSelected.placeholder.innerHTML=t.outerHTML)}else{var i="";e&&(i=e.innerHTML&&!0!==this.main.config.valuesUseText?e.innerHTML:e.text),this.singleSelected&&(this.singleSelected.placeholder.innerHTML=e?i:"")}},n.prototype.deselect=function(){if(this.singleSelected){if(!this.main.config.allowDeselect)return void this.singleSelected.deselect.classList.add("ss-hide");""===this.main.selected()?this.singleSelected.deselect.classList.add("ss-hide"):this.singleSelected.deselect.classList.remove("ss-hide")}},n.prototype.multiSelectedDiv=function(){var t=this,e=document.createElement("div");e.classList.add(this.main.config.multiSelected);var i=document.createElement("div");i.classList.add(this.main.config.values),e.appendChild(i);var s=document.createElement("div");s.classList.add(this.main.config.add);var n=document.createElement("span");return n.classList.add(this.main.config.plus),n.onclick=function(e){t.main.data.contentOpen&&(t.main.close(),e.stopPropagation())},s.appendChild(n),e.appendChild(s),e.onclick=function(e){t.main.config.isEnabled&&(e.target.classList.contains(t.main.config.valueDelete)||(t.main.data.contentOpen?t.main.close():t.main.open()))},{container:e,values:i,add:s,plus:n}},n.prototype.values=function(){if(this.multiSelected){for(var e,t=this.multiSelected.values.childNodes,i=this.main.data.getSelected(),s=[],n=0,a=t;n<a.length;n++){var o=a[n];e=!0;for(var l=0,r=i;l<r.length;l++){var c=r[l];String(c.id)===String(o.dataset.id)&&(e=!1)}e&&s.push(o)}for(var d=0,h=s;d<h.length;d++){var u=h[d];u.classList.add("ss-out"),this.multiSelected.values.removeChild(u)}for(t=this.multiSelected.values.childNodes,c=0;c<i.length;c++){e=!1;for(var p=0,m=t;p<m.length;p++)o=m[p],String(i[c].id)===String(o.dataset.id)&&(e=!0);e||(0!==t.length&&HTMLElement.prototype.insertAdjacentElement?0===c?this.multiSelected.values.insertBefore(this.valueDiv(i[c]),t[c]):t[c-1].insertAdjacentElement("afterend",this.valueDiv(i[c])):this.multiSelected.values.appendChild(this.valueDiv(i[c])))}if(0===i.length){var f=document.createElement("span");f.classList.add(this.main.config.disabled),f.innerHTML=this.main.config.placeholderText,this.multiSelected.values.innerHTML=f.outerHTML}}},n.prototype.valueDiv=function(a){var o=this,e=document.createElement("div");e.classList.add(this.main.config.value),e.dataset.id=a.id;var t=document.createElement("span");if(t.classList.add(this.main.config.valueText),t.innerHTML=a.innerHTML&&!0!==this.main.config.valuesUseText?a.innerHTML:a.text,e.appendChild(t),!a.mandatory){var i=document.createElement("span");i.classList.add(this.main.config.valueDelete),i.innerHTML=this.main.config.deselectLabel,i.onclick=function(e){e.preventDefault(),e.stopPropagation();var t=!1;if(o.main.beforeOnChange||(t=!0),o.main.beforeOnChange){for(var i=o.main.data.getSelected(),s=JSON.parse(JSON.stringify(i)),n=0;n<s.length;n++)s[n].id===a.id&&s.splice(n,1);!1!==o.main.beforeOnChange(s)&&(t=!0)}t&&(o.main.data.removeFromSelected(a.id,"id"),o.main.render(),o.main.select.setValue(),o.main.data.onDataChange())},e.appendChild(i)}return e},n.prototype.contentDiv=function(){var e=document.createElement("div");return e.classList.add(this.main.config.content),e},n.prototype.searchDiv=function(){var n=this,e=document.createElement("div"),s=document.createElement("input"),a=document.createElement("div");e.classList.add(this.main.config.search);var t={container:e,input:s};return this.main.config.showSearch||(e.classList.add(this.main.config.hide),s.readOnly=!0),s.type="search",s.placeholder=this.main.config.searchPlaceholder,s.tabIndex=0,s.setAttribute("aria-label",this.main.config.searchPlaceholder),s.setAttribute("autocapitalize","off"),s.setAttribute("autocomplete","off"),s.setAttribute("autocorrect","off"),s.onclick=function(e){setTimeout(function(){""===e.target.value&&n.main.search("")},10)},s.onkeydown=function(e){"ArrowUp"===e.key?(n.main.open(),n.highlightUp(),e.preventDefault()):"ArrowDown"===e.key?(n.main.open(),n.highlightDown(),e.preventDefault()):"Tab"===e.key?n.main.data.contentOpen?n.main.close():setTimeout(function(){n.main.close()},n.main.config.timeoutDelay):"Enter"===e.key&&e.preventDefault()},s.onkeyup=function(e){var t=e.target;if("Enter"===e.key){if(n.main.addable&&e.ctrlKey)return a.click(),e.preventDefault(),void e.stopPropagation();var i=n.list.querySelector("."+n.main.config.highlighted);i&&i.click()}else"ArrowUp"===e.key||"ArrowDown"===e.key||("Escape"===e.key?n.main.close():n.main.config.showSearch&&n.main.data.contentOpen?n.main.search(t.value):s.value="");e.preventDefault(),e.stopPropagation()},s.onfocus=function(){n.main.open()},e.appendChild(s),this.main.addable&&(a.classList.add(this.main.config.addable),a.innerHTML="+",a.onclick=function(e){if(n.main.addable){e.preventDefault(),e.stopPropagation();var t=n.search.input.value;if(""===t.trim())return void n.search.input.focus();var i=n.main.addable(t),s="";if(!i)return;"object"==typeof i?o.validateOption(i)&&(n.main.addData(i),s=i.value?i.value:i.text):(n.main.addData(n.main.data.newOption({text:i,value:i})),s=i),n.main.search(""),setTimeout(function(){n.main.set(s,"value",!1,!1)},100),n.main.config.closeOnSelect&&setTimeout(function(){n.main.close()},100)}},e.appendChild(a),t.addable=a),t},n.prototype.highlightUp=function(){var e=this.list.querySelector("."+this.main.config.highlighted),t=null;if(e)for(t=e.previousSibling;null!==t&&t.classList.contains(this.main.config.disabled);)t=t.previousSibling;else{var i=this.list.querySelectorAll("."+this.main.config.option+":not(."+this.main.config.disabled+")");t=i[i.length-1]}if(t&&t.classList.contains(this.main.config.optgroupLabel)&&(t=null),null===t){var s=e.parentNode;if(s.classList.contains(this.main.config.optgroup)&&s.previousSibling){var n=s.previousSibling.querySelectorAll("."+this.main.config.option+":not(."+this.main.config.disabled+")");n.length&&(t=n[n.length-1])}}t&&(e&&e.classList.remove(this.main.config.highlighted),t.classList.add(this.main.config.highlighted),a.ensureElementInView(this.list,t))},n.prototype.highlightDown=function(){var e=this.list.querySelector("."+this.main.config.highlighted),t=null;if(e)for(t=e.nextSibling;null!==t&&t.classList.contains(this.main.config.disabled);)t=t.nextSibling;else t=this.list.querySelector("."+this.main.config.option+":not(."+this.main.config.disabled+")");if(null===t&&null!==e){var i=e.parentNode;i.classList.contains(this.main.config.optgroup)&&i.nextSibling&&(t=i.nextSibling.querySelector("."+this.main.config.option+":not(."+this.main.config.disabled+")"))}t&&(e&&e.classList.remove(this.main.config.highlighted),t.classList.add(this.main.config.highlighted),a.ensureElementInView(this.list,t))},n.prototype.listDiv=function(){var e=document.createElement("div");return e.classList.add(this.main.config.list),e},n.prototype.options=function(e){void 0===e&&(e="");var t,i=this.main.data.filtered||this.main.data.data;if((this.list.innerHTML="")!==e)return(t=document.createElement("div")).classList.add(this.main.config.option),t.classList.add(this.main.config.disabled),t.innerHTML=e,void this.list.appendChild(t);if(this.main.config.isAjax&&this.main.config.isSearching)return(t=document.createElement("div")).classList.add(this.main.config.option),t.classList.add(this.main.config.disabled),t.innerHTML=this.main.config.searchingText,void this.list.appendChild(t);if(0===i.length){var s=document.createElement("div");return s.classList.add(this.main.config.option),s.classList.add(this.main.config.disabled),s.innerHTML=this.main.config.searchText,void this.list.appendChild(s)}for(var n=function(e){if(e.hasOwnProperty("label")){var t=e,n=document.createElement("div");n.classList.add(c.main.config.optgroup);var i=document.createElement("div");i.classList.add(c.main.config.optgroupLabel),c.main.config.selectByGroup&&c.main.config.isMultiple&&i.classList.add(c.main.config.optgroupLabelSelectable),i.innerHTML=t.label,n.appendChild(i);var s=t.options;if(s){for(var a=0,o=s;a<o.length;a++){var l=o[a];n.appendChild(c.option(l))}if(c.main.config.selectByGroup&&c.main.config.isMultiple){var r=c;i.addEventListener("click",function(e){e.preventDefault(),e.stopPropagation();for(var t=0,i=n.children;t<i.length;t++){var s=i[t];-1!==s.className.indexOf(r.main.config.option)&&s.click()}})}}c.list.appendChild(n)}else c.list.appendChild(c.option(e))},c=this,a=0,o=i;a<o.length;a++)n(o[a])},n.prototype.option=function(r){if(r.placeholder){var e=document.createElement("div");return e.classList.add(this.main.config.option),e.classList.add(this.main.config.hide),e}var t=document.createElement("div");t.classList.add(this.main.config.option),r.class&&r.class.split(" ").forEach(function(e){t.classList.add(e)}),r.style&&(t.style.cssText=r.style);var c=this.main.data.getSelected();t.dataset.id=r.id,this.main.config.searchHighlight&&this.main.slim&&r.innerHTML&&""!==this.main.slim.search.input.value.trim()?t.innerHTML=a.highlight(r.innerHTML,this.main.slim.search.input.value,this.main.config.searchHighlighter):r.innerHTML&&(t.innerHTML=r.innerHTML),this.main.config.showOptionTooltips&&t.textContent&&t.setAttribute("title",t.textContent);var d=this;t.addEventListener("click",function(e){e.preventDefault(),e.stopPropagation();var t=this.dataset.id;if(!0===r.selected&&d.main.config.allowDeselectOption){var i=!1;if(d.main.beforeOnChange&&d.main.config.isMultiple||(i=!0),d.main.beforeOnChange&&d.main.config.isMultiple){for(var s=d.main.data.getSelected(),n=JSON.parse(JSON.stringify(s)),a=0;a<n.length;a++)n[a].id===t&&n.splice(a,1);!1!==d.main.beforeOnChange(n)&&(i=!0)}i&&(d.main.config.isMultiple?(d.main.data.removeFromSelected(t,"id"),d.main.render(),d.main.select.setValue(),d.main.data.onDataChange()):d.main.set(""))}else{if(r.disabled||r.selected)return;if(d.main.config.limit&&Array.isArray(c)&&d.main.config.limit<=c.length)return;if(d.main.beforeOnChange){var o=void 0,l=JSON.parse(JSON.stringify(d.main.data.getObjectFromData(t)));l.selected=!0,d.main.config.isMultiple?(o=JSON.parse(JSON.stringify(c))).push(l):o=JSON.parse(JSON.stringify(l)),!1!==d.main.beforeOnChange(o)&&d.main.set(t,"id",d.main.config.closeOnSelect)}else d.main.set(t,"id",d.main.config.closeOnSelect)}});var i=c&&a.isValueInArrayOfObjects(c,"id",r.id);return(r.disabled||i)&&(t.onclick=null,d.main.config.allowDeselectOption||t.classList.add(this.main.config.disabled),d.main.config.hideSelectedOption&&t.classList.add(this.main.config.hide)),i?t.classList.add(this.main.config.optionSelected):t.classList.remove(this.main.config.optionSelected),t},n);function n(e){this.main=e.main,this.container=this.containerDiv(),this.content=this.contentDiv(),this.search=this.searchDiv(),this.list=this.listDiv(),this.options(),this.singleSelected=null,this.multiSelected=null,this.main.config.isMultiple?(this.multiSelected=this.multiSelectedDiv(),this.multiSelected&&this.container.appendChild(this.multiSelected.container)):(this.singleSelected=this.singleSelectedDiv(),this.container.appendChild(this.singleSelected.container)),this.main.config.addToBody?(this.content.classList.add(this.main.config.id),document.body.appendChild(this.content)):this.container.appendChild(this.content),this.content.appendChild(this.search.container),this.content.appendChild(this.list)}t.Slim=s}],n.c=s,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var s in t)n.d(i,s,function(e){return t[e]}.bind(null,s));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2).default;function n(e){if(s[e])return s[e].exports;var t=s[e]={i:e,l:!1,exports:{}};return i[e].call(t.exports,t,t.exports,n),t.l=!0,t.exports}var i,s});export default exports.SlimSelect
package/docs/index.html CHANGED
@@ -1 +1,5 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Slim Select</title><link rel="shortcut icon" href="favicon.ico"><meta name="description" content="Slim vanilla javascript select dropdown"><meta property="og:type" content="article"><meta property="og:title" content="Slim Select"><meta property="og:description" content="Slim vanilla javascript select dropdown"><link href="/css/home.57020178.css" rel="prefetch"><link href="/css/install.baa5d3fb.css" rel="prefetch"><link href="/css/methods.728c742a.css" rel="prefetch"><link href="/css/options.b28a32ef.css" rel="prefetch"><link href="/css/selects.1a7e1e6a.css" rel="prefetch"><link href="/js/home.f1e4d715.js" rel="prefetch"><link href="/js/install.1fa0a10d.js" rel="prefetch"><link href="/js/methods.5509dcd6.js" rel="prefetch"><link href="/js/options.4ec7783b.js" rel="prefetch"><link href="/js/selects.8b4f7ad4.js" rel="prefetch"><link href="/css/app.d5840d21.css" rel="preload" as="style"><link href="/css/chunk-vendors.4db6930d.css" rel="preload" as="style"><link href="/js/app.8f2b833e.js" rel="preload" as="script"><link href="/js/chunk-vendors.ccce1549.js" rel="preload" as="script"><link href="/css/chunk-vendors.4db6930d.css" rel="stylesheet"><link href="/css/app.d5840d21.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but slim2 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script async src="https://www.google-analytics.com/analytics.js"></script><script async src="/autotrack.js"></script><script src="/js/chunk-vendors.ccce1549.js"></script><script src="/js/app.8f2b833e.js"></script></body></html>
1
+ <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Slim Select</title><link rel="shortcut icon" href="favicon.ico"><meta name="description" content="Slim vanilla javascript select dropdown"><meta property="og:type" content="article"><meta property="og:title" content="Slim Select"><meta property="og:description" content="Slim vanilla javascript select dropdown"><link href="/css/home.57020178.css" rel="prefetch"><link href="/css/install.baa5d3fb.css" rel="prefetch"><link href="/css/methods.728c742a.css" rel="prefetch"><link href="/css/options.b28a32ef.css" rel="prefetch"><link href="/css/selects.1a7e1e6a.css" rel="prefetch"><link href="/js/home.8bcb44fd.js" rel="prefetch"><link href="/js/install.02f31028.js" rel="prefetch"><link href="/js/methods.1b31e988.js" rel="prefetch"><link href="/js/options.39fe1005.js" rel="prefetch"><link href="/js/selects.f4d0b859.js" rel="prefetch"><link href="/css/app.d5840d21.css" rel="preload" as="style"><link href="/css/chunk-vendors.4db6930d.css" rel="preload" as="style"><link href="/js/app.db13c724.js" rel="preload" as="script"><link href="/js/chunk-vendors.cc40aa28.js" rel="preload" as="script"><link href="/css/chunk-vendors.4db6930d.css" rel="stylesheet"><link href="/css/app.d5840d21.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but slim select doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script async src="https://www.googletagmanager.com/gtag/js?id=UA-96955238-1"></script><script>window.dataLayer = window.dataLayer || [];
2
+ function gtag(){dataLayer.push(arguments);}
3
+ gtag('js', new Date());
4
+
5
+ gtag('config', 'UA-96955238-1');</script><script src="/js/chunk-vendors.cc40aa28.js"></script><script src="/js/app.db13c724.js"></script></body></html>
@@ -0,0 +1,2 @@
1
+ (function(e){function t(t){for(var n,a,o=t[0],r=t[1],c=t[2],d=0,h=[];d<o.length;d++)a=o[d],Object.prototype.hasOwnProperty.call(s,a)&&s[a]&&h.push(s[a][0]),s[a]=0;for(n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n]);u&&u(t);while(h.length)h.shift()();return l.push.apply(l,c||[]),i()}function i(){for(var e,t=0;t<l.length;t++){for(var i=l[t],n=!0,a=1;a<i.length;a++){var o=i[a];0!==s[o]&&(n=!1)}n&&(l.splice(t--,1),e=r(r.s=i[0]))}return e}var n={},a={app:0},s={app:0},l=[];function o(e){return r.p+"js/"+({home:"home",install:"install",methods:"methods",options:"options",selects:"selects"}[e]||e)+"."+{home:"8bcb44fd",install:"02f31028",methods:"1b31e988",options:"39fe1005",selects:"f4d0b859"}[e]+".js"}function r(t){if(n[t])return n[t].exports;var i=n[t]={i:t,l:!1,exports:{}};return e[t].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.e=function(e){var t=[],i={home:1,install:1,methods:1,options:1,selects:1};a[e]?t.push(a[e]):0!==a[e]&&i[e]&&t.push(a[e]=new Promise((function(t,i){for(var n="css/"+({home:"home",install:"install",methods:"methods",options:"options",selects:"selects"}[e]||e)+"."+{home:"57020178",install:"baa5d3fb",methods:"728c742a",options:"b28a32ef",selects:"1a7e1e6a"}[e]+".css",s=r.p+n,l=document.getElementsByTagName("link"),o=0;o<l.length;o++){var c=l[o],d=c.getAttribute("data-href")||c.getAttribute("href");if("stylesheet"===c.rel&&(d===n||d===s))return t()}var h=document.getElementsByTagName("style");for(o=0;o<h.length;o++){c=h[o],d=c.getAttribute("data-href");if(d===n||d===s)return t()}var u=document.createElement("link");u.rel="stylesheet",u.type="text/css",u.onload=t,u.onerror=function(t){var n=t&&t.target&&t.target.src||s,l=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");l.code="CSS_CHUNK_LOAD_FAILED",l.request=n,delete a[e],u.parentNode.removeChild(u),i(l)},u.href=s;var f=document.getElementsByTagName("head")[0];f.appendChild(u)})).then((function(){a[e]=0})));var n=s[e];if(0!==n)if(n)t.push(n[2]);else{var l=new Promise((function(t,i){n=s[e]=[t,i]}));t.push(n[2]=l);var c,d=document.createElement("script");d.charset="utf-8",d.timeout=120,r.nc&&d.setAttribute("nonce",r.nc),d.src=o(e);var h=new Error;c=function(t){d.onerror=d.onload=null,clearTimeout(u);var i=s[e];if(0!==i){if(i){var n=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;h.message="Loading chunk "+e+" failed.\n("+n+": "+a+")",h.name="ChunkLoadError",h.type=n,h.request=a,i[1](h)}s[e]=void 0}};var u=setTimeout((function(){c({type:"timeout",target:d})}),12e4);d.onerror=d.onload=c,document.head.appendChild(d)}return Promise.all(t)},r.m=e,r.c=n,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(i,n,function(t){return e[t]}.bind(null,n));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/",r.oe=function(e){throw console.error(e),e};var c=window["webpackJsonp"]=window["webpackJsonp"]||[],d=c.push.bind(c);c.push=t,c=c.slice();for(var h=0;h<c.length;h++)t(c[h]);var u=d;l.push([0,"chunk-vendors"]),i()})({0:function(e,t,i){e.exports=i("cd49")},"517e":function(e,t,i){"use strict";i("692c")},"692c":function(e,t,i){},"9d16":function(e,t,i){},ba4b:function(e,t,i){"use strict";i.d(t,"a",(function(){return S}));i("d3b7"),i("ac1f"),i("841c"),i("ddb0");var n=i("b85c"),a=i("d4ec"),s=i("bee2"),l=(i("c975"),i("1276"),function(){function e(t){Object(a["a"])(this,e),this.id="",this.isMultiple=!1,this.isAjax=!1,this.isSearching=!1,this.showSearch=!0,this.searchFocus=!0,this.searchHighlight=!1,this.closeOnSelect=!0,this.showContent="auto",this.searchPlaceholder="Search",this.searchText="No Results",this.searchingText="Searching...",this.placeholderText="Select Value",this.allowDeselect=!1,this.allowDeselectOption=!1,this.hideSelectedOption=!1,this.deselectLabel="x",this.isEnabled=!0,this.valuesUseText=!1,this.showOptionTooltips=!1,this.selectByGroup=!1,this.limit=0,this.timeoutDelay=200,this.addToBody=!1,this.main="ss-main",this.singleSelected="ss-single-selected",this.arrow="ss-arrow",this.multiSelected="ss-multi-selected",this.add="ss-add",this.plus="ss-plus",this.values="ss-values",this.value="ss-value",this.valueText="ss-value-text",this.valueDelete="ss-value-delete",this.content="ss-content",this.open="ss-open",this.openAbove="ss-open-above",this.openBelow="ss-open-below",this.search="ss-search",this.searchHighlighter="ss-search-highlight",this.addable="ss-addable",this.list="ss-list",this.optgroup="ss-optgroup",this.optgroupLabel="ss-optgroup-label",this.optgroupLabelSelectable="ss-optgroup-label-selectable",this.option="ss-option",this.optionSelected="ss-option-selected",this.highlighted="ss-highlighted",this.disabled="ss-disabled",this.hide="ss-hide",this.id="ss-"+Math.floor(1e5*Math.random()),this.style=t.select.style.cssText,this.class=t.select.className.split(" "),this.isMultiple=t.select.multiple,this.isAjax=t.isAjax,this.showSearch=!1!==t.showSearch,this.searchFocus=!1!==t.searchFocus,this.searchHighlight=!0===t.searchHighlight,this.closeOnSelect=!1!==t.closeOnSelect,t.showContent&&(this.showContent=t.showContent),this.isEnabled=!1!==t.isEnabled,t.searchPlaceholder&&(this.searchPlaceholder=t.searchPlaceholder),t.searchText&&(this.searchText=t.searchText),t.searchingText&&(this.searchingText=t.searchingText),t.placeholderText&&(this.placeholderText=t.placeholderText),this.allowDeselect=!0===t.allowDeselect,this.allowDeselectOption=!0===t.allowDeselectOption,this.hideSelectedOption=!0===t.hideSelectedOption,t.deselectLabel&&(this.deselectLabel=t.deselectLabel),t.valuesUseText&&(this.valuesUseText=t.valuesUseText),t.showOptionTooltips&&(this.showOptionTooltips=t.showOptionTooltips),t.selectByGroup&&(this.selectByGroup=t.selectByGroup),t.limit&&(this.limit=t.limit),t.searchFilter&&(this.searchFilter=t.searchFilter),null!=t.timeoutDelay&&(this.timeoutDelay=t.timeoutDelay),this.addToBody=!0===t.addToBody}return Object(s["a"])(e,[{key:"searchFilter",value:function(e,t){return-1!==e.text.toLowerCase().indexOf(t.toLowerCase())}}]),e}()),o=(i("4160"),i("b64b"),i("159b"),i("53ca"));i("99af"),i("4d63"),i("25f0"),i("466d"),i("5319"),i("498a");function r(e,t){function i(e,t){return t&&e&&e.classList&&e.classList.contains(t)?e:null}function n(e,t){return e&&e!==document?i(e,t)?e:n(e.parentNode,t):null}return i(e,t)||n(e,t)}function c(e,t){var i=e.scrollTop+e.offsetTop,n=i+e.clientHeight,a=t.offsetTop,s=a+t.clientHeight;a<i?e.scrollTop-=i-a:s>n&&(e.scrollTop+=s-n)}function d(e,t,i){var n=e.offsetHeight,a=e.getBoundingClientRect(),s=i?a.top:a.top-n,l=i?a.bottom:a.bottom+n;return s<=0?"below":l>=window.innerHeight?"above":i?t:"below"}function h(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return function(){for(var a=arguments.length,s=new Array(a),l=0;l<a;l++)s[l]=arguments[l];var o=self,r=function(){t=null,n||e.apply(o,s)},c=n&&!t;clearTimeout(t),t=setTimeout(r,i),c&&e.apply(o,s)}}function u(e,t,i){if(!Array.isArray(e))return e[t]===i;var a,s=Object(n["a"])(e);try{for(s.s();!(a=s.n()).done;){var l=a.value;if(l&&l[t]&&l[t]===i)return!0}}catch(o){s.e(o)}finally{s.f()}return!1}function f(e,t,i){var n=e,a=new RegExp("("+t.trim()+")(?![^<]*>[^<>]*</)","i");if(!e.match(a))return e;var s=e.match(a).index,l=s+e.match(a)[0].toString().length,o=e.substring(s,l);return n=n.replace(a,'<mark class="'.concat(i,'">').concat(o,"</mark>")),n}function m(e){var t=e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(function(e){return"-"+e.toLowerCase()}));return e[0]===e[0].toUpperCase()?t.substring(1):t}(function(){var e=window;function t(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var i=document.createEvent("CustomEvent");return i.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i}"function"!==typeof e.CustomEvent&&(t.prototype=e.Event.prototype,e.CustomEvent=t)})();var v=function(){function e(t){Object(a["a"])(this,e),this.triggerMutationObserver=!0,this.element=t.select,this.main=t.main,this.element.disabled&&(this.main.config.isEnabled=!1),this.addAttributes(),this.addEventListeners(),this.mutationObserver=null,this.addMutationObserver();var i=this.element;i.slim=t.main}return Object(s["a"])(e,[{key:"setValue",value:function(){if(this.main.data.getSelected()){if(this.main.config.isMultiple){var e,t=this.main.data.getSelected(),i=this.element.options,a=Object(n["a"])(i);try{for(a.s();!(e=a.n()).done;){var s=e.value;s.selected=!1;var l,o=Object(n["a"])(t);try{for(o.s();!(l=o.n()).done;){var r=l.value;r.value===s.value&&(s.selected=!0)}}catch(d){o.e(d)}finally{o.f()}}}catch(d){a.e(d)}finally{a.f()}}else{var c=this.main.data.getSelected();this.element.value=c?c.value:""}this.main.data.isOnChangeEnabled=!1,this.element.dispatchEvent(new CustomEvent("change",{bubbles:!0})),this.main.data.isOnChangeEnabled=!0}}},{key:"addAttributes",value:function(){this.element.tabIndex=-1,this.element.style.display="none",this.element.dataset.ssid=this.main.config.id}},{key:"addEventListeners",value:function(){var e=this;this.element.addEventListener("change",(function(t){e.main.data.setSelectedFromSelect(),e.main.render()}))}},{key:"addMutationObserver",value:function(){var e=this;this.main.config.isAjax||(this.mutationObserver=new MutationObserver((function(t){e.triggerMutationObserver&&(e.main.data.parseSelectData(),e.main.data.setSelectedFromSelect(),e.main.render(),t.forEach((function(t){"class"===t.attributeName&&e.main.slim.updateContainerDivClass(e.main.slim.container)})))})),this.observeMutationObserver())}},{key:"observeMutationObserver",value:function(){this.mutationObserver&&this.mutationObserver.observe(this.element,{attributes:!0,childList:!0,characterData:!0})}},{key:"disconnectMutationObserver",value:function(){this.mutationObserver&&this.mutationObserver.disconnect()}},{key:"create",value:function(e){this.element.innerHTML="";var t,i=Object(n["a"])(e);try{for(i.s();!(t=i.n()).done;){var a=t.value;if(a.hasOwnProperty("options")){var s=a,l=document.createElement("optgroup");if(l.label=s.label,s.options){var o,r=Object(n["a"])(s.options);try{for(r.s();!(o=r.n()).done;){var c=o.value;l.appendChild(this.createOption(c))}}catch(d){r.e(d)}finally{r.f()}}this.element.appendChild(l)}else this.element.appendChild(this.createOption(a))}}catch(d){i.e(d)}finally{i.f()}}},{key:"createOption",value:function(e){var t=document.createElement("option");return t.value=""!==e.value?e.value:e.text,t.innerHTML=e.innerHTML||e.text,e.selected&&(t.selected=e.selected),!1===e.display&&(t.style.display="none"),e.disabled&&(t.disabled=!0),e.placeholder&&t.setAttribute("data-placeholder","true"),e.mandatory&&t.setAttribute("data-mandatory","true"),e.class&&e.class.split(" ").forEach((function(e){t.classList.add(e)})),e.data&&"object"===Object(o["a"])(e.data)&&Object.keys(e.data).forEach((function(i){t.setAttribute("data-"+m(i),e.data[i])})),t}}]),e}(),p=(i("a434"),i("4de4"),i("d81d"),i("fb6a"),function(){function e(t){Object(a["a"])(this,e),this.contentOpen=!1,this.contentPosition="below",this.isOnChangeEnabled=!0,this.main=t.main,this.searchValue="",this.data=[],this.filtered=null,this.parseSelectData(),this.setSelectedFromSelect()}return Object(s["a"])(e,[{key:"newOption",value:function(e){return{id:e.id?e.id:String(Math.floor(1e8*Math.random())),value:e.value?e.value:"",text:e.text?e.text:"",innerHTML:e.innerHTML?e.innerHTML:"",selected:!!e.selected&&e.selected,display:void 0===e.display||e.display,disabled:!!e.disabled&&e.disabled,placeholder:!!e.placeholder&&e.placeholder,class:e.class?e.class:void 0,data:e.data?e.data:{},mandatory:!!e.mandatory&&e.mandatory}}},{key:"add",value:function(e){this.data.push({id:String(Math.floor(1e8*Math.random())),value:e.value,text:e.text,innerHTML:"",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,mandatory:e.mandatory,data:{}})}},{key:"parseSelectData",value:function(){this.data=[];var e,t=this.main.select.element.childNodes,i=Object(n["a"])(t);try{for(i.s();!(e=i.n()).done;){var a=e.value;if("OPTGROUP"===a.nodeName){var s,l=a,o={label:l.label,options:[]},r=a.childNodes,c=Object(n["a"])(r);try{for(c.s();!(s=c.n()).done;){var d=s.value;if("OPTION"===d.nodeName){var h=this.pullOptionData(d);o.options.push(h),h.placeholder&&""!==h.text.trim()&&(this.main.config.placeholderText=h.text)}}}catch(f){c.e(f)}finally{c.f()}this.data.push(o)}else if("OPTION"===a.nodeName){var u=this.pullOptionData(a);this.data.push(u),u.placeholder&&""!==u.text.trim()&&(this.main.config.placeholderText=u.text)}}}catch(f){i.e(f)}finally{i.f()}}},{key:"pullOptionData",value:function(e){return{id:!!e.dataset&&e.dataset.id||String(Math.floor(1e8*Math.random())),value:e.value,text:e.text,innerHTML:e.innerHTML,selected:e.selected,disabled:e.disabled,placeholder:"true"===e.dataset.placeholder,class:e.className,style:e.style.cssText,data:e.dataset,mandatory:!!e.dataset&&"true"===e.dataset.mandatory}}},{key:"setSelectedFromSelect",value:function(){if(this.main.config.isMultiple){var e,t=this.main.select.element.options,i=[],a=Object(n["a"])(t);try{for(a.s();!(e=a.n()).done;){var s=e.value;if(s.selected){var l=this.getObjectFromData(s.value,"value");l&&l.id&&i.push(l.id)}}}catch(d){a.e(d)}finally{a.f()}this.setSelected(i,"id")}else{var o=this.main.select.element;if(-1!==o.selectedIndex){var r=o.options[o.selectedIndex],c=r.value;this.setSelected(c,"value")}}}},{key:"setSelected",value:function(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"id",a=Object(n["a"])(this.data);try{for(a.s();!(t=a.n()).done;){var s=t.value;if(s.hasOwnProperty("label")){if(s.hasOwnProperty("options")){var l=s.options;if(l){var o,r=Object(n["a"])(l);try{for(r.s();!(o=r.n()).done;){var c=o.value;c.placeholder||(c.selected=this.shouldBeSelected(c,e,i))}}catch(d){r.e(d)}finally{r.f()}}}}else s.selected=this.shouldBeSelected(s,e,i)}}catch(d){a.e(d)}finally{a.f()}}},{key:"shouldBeSelected",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"id";if(Array.isArray(t)){var a,s=Object(n["a"])(t);try{for(s.s();!(a=s.n()).done;){var l=a.value;if(i in e&&String(e[i])===String(l))return!0}}catch(o){s.e(o)}finally{s.f()}}else if(i in e&&String(e[i])===String(t))return!0;return!1}},{key:"getSelected",value:function(){var e,t={text:"",placeholder:this.main.config.placeholderText},i=[],a=Object(n["a"])(this.data);try{for(a.s();!(e=a.n()).done;){var s=e.value;if(s.hasOwnProperty("label")){if(s.hasOwnProperty("options")){var l=s.options;if(l){var o,r=Object(n["a"])(l);try{for(r.s();!(o=r.n()).done;){var c=o.value;c.selected&&(this.main.config.isMultiple?i.push(c):t=c)}}catch(d){r.e(d)}finally{r.f()}}}}else s.selected&&(this.main.config.isMultiple?i.push(s):t=s)}}catch(d){a.e(d)}finally{a.f()}return this.main.config.isMultiple?i:t}},{key:"addToSelected",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"id";if(this.main.config.isMultiple){var i=[],a=this.getSelected();if(Array.isArray(a)){var s,l=Object(n["a"])(a);try{for(l.s();!(s=l.n()).done;){var o=s.value;i.push(o[t])}}catch(r){l.e(r)}finally{l.f()}}i.push(e),this.setSelected(i,t)}}},{key:"removeFromSelected",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"id";if(this.main.config.isMultiple){var i,a=[],s=this.getSelected(),l=Object(n["a"])(s);try{for(l.s();!(i=l.n()).done;){var o=i.value;String(o[t])!==String(e)&&a.push(o[t])}}catch(r){l.e(r)}finally{l.f()}this.setSelected(a,t)}}},{key:"onDataChange",value:function(){this.main.onChange&&this.isOnChangeEnabled&&this.main.onChange(JSON.parse(JSON.stringify(this.getSelected())))}},{key:"getObjectFromData",value:function(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"id",a=Object(n["a"])(this.data);try{for(a.s();!(t=a.n()).done;){var s=t.value;if(i in s&&String(s[i])===String(e))return s;if(s.hasOwnProperty("options")){var l=s;if(l.options){var o,r=Object(n["a"])(l.options);try{for(r.s();!(o=r.n()).done;){var c=o.value;if(String(c[i])===String(e))return c}}catch(d){r.e(d)}finally{r.f()}}}}}catch(d){a.e(d)}finally{a.f()}return null}},{key:"search",value:function(e){if(this.searchValue=e,""!==e.trim()){var t=this.main.config.searchFilter,i=this.data.slice(0);e=e.trim();var n=i.map((function(i){if(i.hasOwnProperty("options")){var n=i,a=[];if(n.options&&(a=n.options.filter((function(i){return t(i,e)}))),0!==a.length){var s=Object.assign({},n);return s.options=a,s}}if(i.hasOwnProperty("text")){var l=i;if(t(l,e))return i}return null}));this.filtered=n.filter((function(e){return e}))}else this.filtered=null}}]),e}());function g(e){if(!e)return console.error("Data must be an array of objects"),!1;var t,i=!1,a=0,s=Object(n["a"])(e);try{for(s.s();!(t=s.n()).done;){var l=t.value;if(l.hasOwnProperty("label")){if(l.hasOwnProperty("options")){var o=l,r=o.options;if(r){var c,d=Object(n["a"])(r);try{for(d.s();!(c=d.n()).done;){var h=c.value;i=b(h),i||a++}}catch(f){d.e(f)}finally{d.f()}}}}else{var u=l;i=b(u),i||a++}}}catch(f){s.e(f)}finally{s.f()}return 0===a}function b(e){return void 0!==e.text||(console.error("Data object option must have at least have a text value. Check object: "+JSON.stringify(e)),!1)}var y=function(){function e(t){Object(a["a"])(this,e),this.main=t.main,this.container=this.containerDiv(),this.content=this.contentDiv(),this.search=this.searchDiv(),this.list=this.listDiv(),this.options(),this.singleSelected=null,this.multiSelected=null,this.main.config.isMultiple?(this.multiSelected=this.multiSelectedDiv(),this.multiSelected&&this.container.appendChild(this.multiSelected.container)):(this.singleSelected=this.singleSelectedDiv(),this.container.appendChild(this.singleSelected.container)),this.main.config.addToBody?(this.content.classList.add(this.main.config.id),document.body.appendChild(this.content)):this.container.appendChild(this.content),this.content.appendChild(this.search.container),this.content.appendChild(this.list)}return Object(s["a"])(e,[{key:"containerDiv",value:function(){var e=document.createElement("div");return e.style.cssText=this.main.config.style,this.updateContainerDivClass(e),e}},{key:"updateContainerDivClass",value:function(e){this.main.config.class=this.main.select.element.className.split(" "),e.className="",e.classList.add(this.main.config.id),e.classList.add(this.main.config.main);var t,i=Object(n["a"])(this.main.config.class);try{for(i.s();!(t=i.n()).done;){var a=t.value;""!==a.trim()&&e.classList.add(a)}}catch(s){i.e(s)}finally{i.f()}}},{key:"singleSelectedDiv",value:function(){var e=this,t=document.createElement("div");t.classList.add(this.main.config.singleSelected);var i=document.createElement("span");i.classList.add("placeholder"),t.appendChild(i);var n=document.createElement("span");n.innerHTML=this.main.config.deselectLabel,n.classList.add("ss-deselect"),n.onclick=function(t){t.stopPropagation(),e.main.config.isEnabled&&e.main.set("")},t.appendChild(n);var a=document.createElement("span");a.classList.add(this.main.config.arrow);var s=document.createElement("span");return s.classList.add("arrow-down"),a.appendChild(s),t.appendChild(a),t.onclick=function(){e.main.config.isEnabled&&(e.main.data.contentOpen?e.main.close():e.main.open())},{container:t,placeholder:i,deselect:n,arrowIcon:{container:a,arrow:s}}}},{key:"placeholder",value:function(){var e=this.main.data.getSelected();if(null===e||e&&e.placeholder){var t=document.createElement("span");t.classList.add(this.main.config.disabled),t.innerHTML=this.main.config.placeholderText,this.singleSelected&&(this.singleSelected.placeholder.innerHTML=t.outerHTML)}else{var i="";e&&(i=e.innerHTML&&!0!==this.main.config.valuesUseText?e.innerHTML:e.text),this.singleSelected&&(this.singleSelected.placeholder.innerHTML=e?i:"")}}},{key:"deselect",value:function(){if(this.singleSelected){if(!this.main.config.allowDeselect)return void this.singleSelected.deselect.classList.add("ss-hide");""===this.main.selected()?this.singleSelected.deselect.classList.add("ss-hide"):this.singleSelected.deselect.classList.remove("ss-hide")}}},{key:"multiSelectedDiv",value:function(){var e=this,t=document.createElement("div");t.classList.add(this.main.config.multiSelected);var i=document.createElement("div");i.classList.add(this.main.config.values),t.appendChild(i);var n=document.createElement("div");n.classList.add(this.main.config.add);var a=document.createElement("span");return a.classList.add(this.main.config.plus),a.onclick=function(t){e.main.data.contentOpen&&(e.main.close(),t.stopPropagation())},n.appendChild(a),t.appendChild(n),t.onclick=function(t){if(e.main.config.isEnabled){var i=t.target;i.classList.contains(e.main.config.valueDelete)||(e.main.data.contentOpen?e.main.close():e.main.open())}},{container:t,values:i,add:n,plus:a}}},{key:"values",value:function(){if(this.multiSelected){var e,t,i=this.multiSelected.values.childNodes,a=this.main.data.getSelected(),s=[],l=Object(n["a"])(i);try{for(l.s();!(t=l.n()).done;){var o=t.value;e=!0;var r,c=Object(n["a"])(a);try{for(c.s();!(r=c.n()).done;){var d=r.value;String(d.id)===String(o.dataset.id)&&(e=!1)}}catch(y){c.e(y)}finally{c.f()}e&&s.push(o)}}catch(y){l.e(y)}finally{l.f()}for(var h=0,u=s;h<u.length;h++){var f=u[h];f.classList.add("ss-out"),this.multiSelected.values.removeChild(f)}i=this.multiSelected.values.childNodes;for(var m=0;m<a.length;m++){e=!1;var v,p=Object(n["a"])(i);try{for(p.s();!(v=p.n()).done;){var g=v.value;String(a[m].id)===String(g.dataset.id)&&(e=!0)}}catch(y){p.e(y)}finally{p.f()}e||(0!==i.length&&HTMLElement.prototype.insertAdjacentElement?0===m?this.multiSelected.values.insertBefore(this.valueDiv(a[m]),i[m]):i[m-1].insertAdjacentElement("afterend",this.valueDiv(a[m])):this.multiSelected.values.appendChild(this.valueDiv(a[m])))}if(0===a.length){var b=document.createElement("span");b.classList.add(this.main.config.disabled),b.innerHTML=this.main.config.placeholderText,this.multiSelected.values.innerHTML=b.outerHTML}}}},{key:"valueDiv",value:function(e){var t=this,i=document.createElement("div");i.classList.add(this.main.config.value),i.dataset.id=e.id;var n=document.createElement("span");if(n.classList.add(this.main.config.valueText),n.innerHTML=e.innerHTML&&!0!==this.main.config.valuesUseText?e.innerHTML:e.text,i.appendChild(n),!e.mandatory){var a=document.createElement("span");a.classList.add(this.main.config.valueDelete),a.innerHTML=this.main.config.deselectLabel,a.onclick=function(i){i.preventDefault(),i.stopPropagation();var n=!1;if(t.main.beforeOnChange||(n=!0),t.main.beforeOnChange){for(var a=t.main.data.getSelected(),s=JSON.parse(JSON.stringify(a)),l=0;l<s.length;l++)s[l].id===e.id&&s.splice(l,1);var o=t.main.beforeOnChange(s);!1!==o&&(n=!0)}n&&(t.main.data.removeFromSelected(e.id,"id"),t.main.render(),t.main.select.setValue(),t.main.data.onDataChange())},i.appendChild(a)}return i}},{key:"contentDiv",value:function(){var e=document.createElement("div");return e.classList.add(this.main.config.content),e}},{key:"searchDiv",value:function(){var e=this,t=document.createElement("div"),i=document.createElement("input"),n=document.createElement("div");t.classList.add(this.main.config.search);var a={container:t,input:i};return this.main.config.showSearch||(t.classList.add(this.main.config.hide),i.readOnly=!0),i.type="search",i.placeholder=this.main.config.searchPlaceholder,i.tabIndex=0,i.setAttribute("aria-label",this.main.config.searchPlaceholder),i.setAttribute("autocapitalize","off"),i.setAttribute("autocomplete","off"),i.setAttribute("autocorrect","off"),i.onclick=function(t){setTimeout((function(){var i=t.target;""===i.value&&e.main.search("")}),10)},i.onkeydown=function(t){"ArrowUp"===t.key?(e.main.open(),e.highlightUp(),t.preventDefault()):"ArrowDown"===t.key?(e.main.open(),e.highlightDown(),t.preventDefault()):"Tab"===t.key?e.main.data.contentOpen?e.main.close():setTimeout((function(){e.main.close()}),e.main.config.timeoutDelay):"Enter"===t.key&&t.preventDefault()},i.onkeyup=function(t){var a=t.target;if("Enter"===t.key){if(e.main.addable&&t.ctrlKey)return n.click(),t.preventDefault(),void t.stopPropagation();var s=e.list.querySelector("."+e.main.config.highlighted);s&&s.click()}else"ArrowUp"===t.key||"ArrowDown"===t.key||("Escape"===t.key?e.main.close():e.main.config.showSearch&&e.main.data.contentOpen?e.main.search(a.value):i.value="");t.preventDefault(),t.stopPropagation()},i.onfocus=function(){e.main.open()},t.appendChild(i),this.main.addable&&(n.classList.add(this.main.config.addable),n.innerHTML="+",n.onclick=function(t){if(e.main.addable){t.preventDefault(),t.stopPropagation();var i=e.search.input.value;if(""===i.trim())return void e.search.input.focus();var n=e.main.addable(i),a="";if(!n)return;if("object"===Object(o["a"])(n)){var s=b(n);s&&(e.main.addData(n),a=n.value?n.value:n.text)}else e.main.addData(e.main.data.newOption({text:n,value:n})),a=n;e.main.search(""),setTimeout((function(){e.main.set(a,"value",!1,!1)}),100),e.main.config.closeOnSelect&&setTimeout((function(){e.main.close()}),100)}},t.appendChild(n),a.addable=n),a}},{key:"highlightUp",value:function(){var e=this.list.querySelector("."+this.main.config.highlighted),t=null;if(e){t=e.previousSibling;while(null!==t){if(!t.classList.contains(this.main.config.disabled))break;t=t.previousSibling}}else{var i=this.list.querySelectorAll("."+this.main.config.option+":not(."+this.main.config.disabled+")");t=i[i.length-1]}if(t&&t.classList.contains(this.main.config.optgroupLabel)&&(t=null),null===t){var n=e.parentNode;if(n.classList.contains(this.main.config.optgroup)&&n.previousSibling){var a=n.previousSibling.querySelectorAll("."+this.main.config.option+":not(."+this.main.config.disabled+")");a.length&&(t=a[a.length-1])}}t&&(e&&e.classList.remove(this.main.config.highlighted),t.classList.add(this.main.config.highlighted),c(this.list,t))}},{key:"highlightDown",value:function(){var e=this.list.querySelector("."+this.main.config.highlighted),t=null;if(e){t=e.nextSibling;while(null!==t){if(!t.classList.contains(this.main.config.disabled))break;t=t.nextSibling}}else t=this.list.querySelector("."+this.main.config.option+":not(."+this.main.config.disabled+")");if(null===t&&null!==e){var i=e.parentNode;if(i.classList.contains(this.main.config.optgroup)&&i.nextSibling){var n=i.nextSibling;t=n.querySelector("."+this.main.config.option+":not(."+this.main.config.disabled+")")}}t&&(e&&e.classList.remove(this.main.config.highlighted),t.classList.add(this.main.config.highlighted),c(this.list,t))}},{key:"listDiv",value:function(){var e=document.createElement("div");return e.classList.add(this.main.config.list),e}},{key:"options",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",i=this.main.data.filtered||this.main.data.data;if(this.list.innerHTML="",""!==t){var a=document.createElement("div");return a.classList.add(this.main.config.option),a.classList.add(this.main.config.disabled),a.innerHTML=t,void this.list.appendChild(a)}if(this.main.config.isAjax&&this.main.config.isSearching){var s=document.createElement("div");return s.classList.add(this.main.config.option),s.classList.add(this.main.config.disabled),s.innerHTML=this.main.config.searchingText,void this.list.appendChild(s)}if(0===i.length){var l=document.createElement("div");return l.classList.add(this.main.config.option),l.classList.add(this.main.config.disabled),l.innerHTML=this.main.config.searchText,void this.list.appendChild(l)}var o,r=Object(n["a"])(i);try{for(r.s();!(o=r.n()).done;){var c=o.value;c.hasOwnProperty("label")?function(){var t=c,i=document.createElement("div");i.classList.add(e.main.config.optgroup);var a=document.createElement("div");a.classList.add(e.main.config.optgroupLabel),e.main.config.selectByGroup&&e.main.config.isMultiple&&a.classList.add(e.main.config.optgroupLabelSelectable),a.innerHTML=t.label,i.appendChild(a);var s=t.options;if(s){var l,o=Object(n["a"])(s);try{for(o.s();!(l=o.n()).done;){var r=l.value;i.appendChild(e.option(r))}}catch(h){o.e(h)}finally{o.f()}if(e.main.config.selectByGroup&&e.main.config.isMultiple){var d=e;a.addEventListener("click",(function(e){e.preventDefault(),e.stopPropagation();var t,a=Object(n["a"])(i.children);try{for(a.s();!(t=a.n()).done;){var s=t.value;-1!==s.className.indexOf(d.main.config.option)&&s.click()}}catch(h){a.e(h)}finally{a.f()}}))}}e.list.appendChild(i)}():this.list.appendChild(this.option(c))}}catch(d){r.e(d)}finally{r.f()}}},{key:"option",value:function(e){if(e.placeholder){var t=document.createElement("div");return t.classList.add(this.main.config.option),t.classList.add(this.main.config.hide),t}var i=document.createElement("div");i.classList.add(this.main.config.option),e.class&&e.class.split(" ").forEach((function(e){i.classList.add(e)})),e.style&&(i.style.cssText=e.style);var n=this.main.data.getSelected();i.dataset.id=e.id,this.main.config.searchHighlight&&this.main.slim&&e.innerHTML&&""!==this.main.slim.search.input.value.trim()?i.innerHTML=f(e.innerHTML,this.main.slim.search.input.value,this.main.config.searchHighlighter):e.innerHTML&&(i.innerHTML=e.innerHTML),this.main.config.showOptionTooltips&&i.textContent&&i.setAttribute("title",i.textContent);var a=this;i.addEventListener("click",(function(t){t.preventDefault(),t.stopPropagation();var i=this,s=i.dataset.id;if(!0===e.selected&&a.main.config.allowDeselectOption){var l=!1;if(a.main.beforeOnChange&&a.main.config.isMultiple||(l=!0),a.main.beforeOnChange&&a.main.config.isMultiple){for(var o=a.main.data.getSelected(),r=JSON.parse(JSON.stringify(o)),c=0;c<r.length;c++)r[c].id===s&&r.splice(c,1);var d=a.main.beforeOnChange(r);!1!==d&&(l=!0)}l&&(a.main.config.isMultiple?(a.main.data.removeFromSelected(s,"id"),a.main.render(),a.main.select.setValue(),a.main.data.onDataChange()):a.main.set(""))}else{if(e.disabled||e.selected)return;if(a.main.config.limit&&Array.isArray(n)&&a.main.config.limit<=n.length)return;if(a.main.beforeOnChange){var h,u=JSON.parse(JSON.stringify(a.main.data.getObjectFromData(s)));u.selected=!0,a.main.config.isMultiple?(h=JSON.parse(JSON.stringify(n)),h.push(u)):h=JSON.parse(JSON.stringify(u));var f=a.main.beforeOnChange(h);!1!==f&&a.main.set(s,"id",a.main.config.closeOnSelect)}else a.main.set(s,"id",a.main.config.closeOnSelect)}}));var s=n&&u(n,"id",e.id);return(e.disabled||s)&&(i.onclick=null,a.main.config.allowDeselectOption||i.classList.add(this.main.config.disabled),a.main.config.hideSelectedOption&&i.classList.add(this.main.config.hide)),s?i.classList.add(this.main.config.optionSelected):i.classList.remove(this.main.config.optionSelected),i}}]),e}(),S=function(){function e(t){var i=this;Object(a["a"])(this,e),this.ajax=null,this.addable=null,this.beforeOnChange=null,this.onChange=null,this.beforeOpen=null,this.afterOpen=null,this.beforeClose=null,this.afterClose=null,this.windowScroll=h((function(e){i.data.contentOpen&&("above"===d(i.slim.content,i.data.contentPosition,i.data.contentOpen)?i.moveContentAbove():i.moveContentBelow())})),this.documentClick=function(e){e.target&&!r(e.target,i.config.id)&&i.close()};var n=this.validate(t);n.dataset.ssid&&this.destroy(n.dataset.ssid),t.ajax&&(this.ajax=t.ajax),t.addable&&(this.addable=t.addable),this.config=new l({select:n,isAjax:!!t.ajax,showSearch:t.showSearch,searchPlaceholder:t.searchPlaceholder,searchText:t.searchText,searchingText:t.searchingText,searchFocus:t.searchFocus,searchHighlight:t.searchHighlight,searchFilter:t.searchFilter,closeOnSelect:t.closeOnSelect,showContent:t.showContent,placeholderText:t.placeholder,allowDeselect:t.allowDeselect,allowDeselectOption:t.allowDeselectOption,hideSelectedOption:t.hideSelectedOption,deselectLabel:t.deselectLabel,isEnabled:t.isEnabled,valuesUseText:t.valuesUseText,showOptionTooltips:t.showOptionTooltips,selectByGroup:t.selectByGroup,limit:t.limit,timeoutDelay:t.timeoutDelay,addToBody:t.addToBody}),this.select=new v({select:n,main:this}),this.data=new p({main:this}),this.slim=new y({main:this}),this.select.element.parentNode&&this.select.element.parentNode.insertBefore(this.slim.container,this.select.element.nextSibling),t.data?this.setData(t.data):this.render(),document.addEventListener("click",this.documentClick),"auto"===this.config.showContent&&window.addEventListener("scroll",this.windowScroll,!1),t.beforeOnChange&&(this.beforeOnChange=t.beforeOnChange),t.onChange&&(this.onChange=t.onChange),t.beforeOpen&&(this.beforeOpen=t.beforeOpen),t.afterOpen&&(this.afterOpen=t.afterOpen),t.beforeClose&&(this.beforeClose=t.beforeClose),t.afterClose&&(this.afterClose=t.afterClose),this.config.isEnabled||this.disable()}return Object(s["a"])(e,[{key:"validate",value:function(e){var t="string"===typeof e.select?document.querySelector(e.select):e.select;if(!t)throw new Error("Could not find select element");if("SELECT"!==t.tagName)throw new Error("Element isnt of type select");return t}},{key:"selected",value:function(){if(this.config.isMultiple){var e,t=this.data.getSelected(),i=[],a=Object(n["a"])(t);try{for(a.s();!(e=a.n()).done;){var s=e.value;i.push(s.value)}}catch(o){a.e(o)}finally{a.f()}return i}var l=this.data.getSelected();return l?l.value:""}},{key:"set",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"value",i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];this.config.isMultiple&&!Array.isArray(e)?this.data.addToSelected(e,t):this.data.setSelected(e,t),this.select.setValue(),this.data.onDataChange(),this.render(),i&&this.close()}},{key:"setSelected",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"value",i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];this.set(e,t,i,n)}},{key:"setData",value:function(e){var t=g(e);if(t){for(var i=JSON.parse(JSON.stringify(e)),a=this.data.getSelected(),s=0;s<i.length;s++)i[s].value||i[s].placeholder||(i[s].value=i[s].text);if(this.config.isAjax&&a)if(this.config.isMultiple){var l,o=a.reverse(),r=Object(n["a"])(o);try{for(r.s();!(l=r.n()).done;){var c=l.value;i.unshift(c)}}catch(f){r.e(f)}finally{r.f()}}else{i.unshift(a);for(var d=0;d<i.length;d++)i[d].placeholder||i[d].value!==a.value||i[d].text!==a.text||delete i[d];for(var h=!1,u=0;u<i.length;u++)i[u].placeholder&&(h=!0);h||i.unshift({text:"",placeholder:!0})}this.select.create(i),this.data.parseSelectData(),this.data.setSelectedFromSelect()}else console.error("Validation problem on: #"+this.select.element.id)}},{key:"addData",value:function(e){var t=g([e]);t?(this.data.add(this.data.newOption(e)),this.select.create(this.data.data),this.data.parseSelectData(),this.data.setSelectedFromSelect(),this.render()):console.error("Validation problem on: #"+this.select.element.id)}},{key:"open",value:function(){var e=this;if(this.config.isEnabled&&!this.data.contentOpen){if(this.beforeOpen&&this.beforeOpen(),this.config.isMultiple&&this.slim.multiSelected?this.slim.multiSelected.plus.classList.add("ss-cross"):this.slim.singleSelected&&(this.slim.singleSelected.arrowIcon.arrow.classList.remove("arrow-down"),this.slim.singleSelected.arrowIcon.arrow.classList.add("arrow-up")),this.slim[this.config.isMultiple?"multiSelected":"singleSelected"].container.classList.add("above"===this.data.contentPosition?this.config.openAbove:this.config.openBelow),this.config.addToBody){var t=this.slim.container.getBoundingClientRect();this.slim.content.style.top=t.top+t.height+window.scrollY+"px",this.slim.content.style.left=t.left+window.scrollX+"px",this.slim.content.style.width=t.width+"px"}if(this.slim.content.classList.add(this.config.open),"up"===this.config.showContent.toLowerCase()?this.moveContentAbove():"down"===this.config.showContent.toLowerCase()?this.moveContentBelow():"above"===d(this.slim.content,this.data.contentPosition,this.data.contentOpen)?this.moveContentAbove():this.moveContentBelow(),!this.config.isMultiple){var i=this.data.getSelected();if(i){var n=i.id,a=this.slim.list.querySelector('[data-id="'+n+'"]');a&&c(this.slim.list,a)}}setTimeout((function(){e.data.contentOpen=!0,e.config.searchFocus&&e.slim.search.input.focus(),e.afterOpen&&e.afterOpen()}),this.config.timeoutDelay)}}},{key:"close",value:function(){var e=this;this.data.contentOpen&&(this.beforeClose&&this.beforeClose(),this.config.isMultiple&&this.slim.multiSelected?(this.slim.multiSelected.container.classList.remove(this.config.openAbove),this.slim.multiSelected.container.classList.remove(this.config.openBelow),this.slim.multiSelected.plus.classList.remove("ss-cross")):this.slim.singleSelected&&(this.slim.singleSelected.container.classList.remove(this.config.openAbove),this.slim.singleSelected.container.classList.remove(this.config.openBelow),this.slim.singleSelected.arrowIcon.arrow.classList.add("arrow-down"),this.slim.singleSelected.arrowIcon.arrow.classList.remove("arrow-up")),this.slim.content.classList.remove(this.config.open),this.data.contentOpen=!1,this.search(""),setTimeout((function(){e.slim.content.removeAttribute("style"),e.data.contentPosition="below",e.config.isMultiple&&e.slim.multiSelected?(e.slim.multiSelected.container.classList.remove(e.config.openAbove),e.slim.multiSelected.container.classList.remove(e.config.openBelow)):e.slim.singleSelected&&(e.slim.singleSelected.container.classList.remove(e.config.openAbove),e.slim.singleSelected.container.classList.remove(e.config.openBelow)),e.slim.search.input.blur(),e.afterClose&&e.afterClose()}),this.config.timeoutDelay))}},{key:"moveContentAbove",value:function(){var e=0;this.config.isMultiple&&this.slim.multiSelected?e=this.slim.multiSelected.container.offsetHeight:this.slim.singleSelected&&(e=this.slim.singleSelected.container.offsetHeight);var t=this.slim.content.offsetHeight,i=e+t-1;this.slim.content.style.margin="-"+i+"px 0 0 0",this.slim.content.style.height=i-e+1+"px",this.slim.content.style.transformOrigin="center bottom",this.data.contentPosition="above",this.config.isMultiple&&this.slim.multiSelected?(this.slim.multiSelected.container.classList.remove(this.config.openBelow),this.slim.multiSelected.container.classList.add(this.config.openAbove)):this.slim.singleSelected&&(this.slim.singleSelected.container.classList.remove(this.config.openBelow),this.slim.singleSelected.container.classList.add(this.config.openAbove))}},{key:"moveContentBelow",value:function(){this.data.contentPosition="below",this.config.isMultiple&&this.slim.multiSelected?(this.slim.multiSelected.container.classList.remove(this.config.openAbove),this.slim.multiSelected.container.classList.add(this.config.openBelow)):this.slim.singleSelected&&(this.slim.singleSelected.container.classList.remove(this.config.openAbove),this.slim.singleSelected.container.classList.add(this.config.openBelow))}},{key:"enable",value:function(){this.config.isEnabled=!0,this.config.isMultiple&&this.slim.multiSelected?this.slim.multiSelected.container.classList.remove(this.config.disabled):this.slim.singleSelected&&this.slim.singleSelected.container.classList.remove(this.config.disabled),this.select.triggerMutationObserver=!1,this.select.element.disabled=!1,this.slim.search.input.disabled=!1,this.select.triggerMutationObserver=!0}},{key:"disable",value:function(){this.config.isEnabled=!1,this.config.isMultiple&&this.slim.multiSelected?this.slim.multiSelected.container.classList.add(this.config.disabled):this.slim.singleSelected&&this.slim.singleSelected.container.classList.add(this.config.disabled),this.select.triggerMutationObserver=!1,this.select.element.disabled=!0,this.slim.search.input.disabled=!0,this.select.triggerMutationObserver=!0}},{key:"search",value:function(e){if(this.data.searchValue!==e)if(this.slim.search.input.value=e,this.config.isAjax){var t=this;this.config.isSearching=!0,this.render(),this.ajax&&this.ajax(e,(function(i){t.config.isSearching=!1,Array.isArray(i)?(i.unshift({text:"",placeholder:!0}),t.setData(i),t.data.search(e),t.render()):"string"===typeof i?t.slim.options(i):t.render()}))}else this.data.search(e),this.render()}},{key:"setSearchText",value:function(e){this.config.searchText=e}},{key:"render",value:function(){this.config.isMultiple?this.slim.values():(this.slim.placeholder(),this.slim.deselect()),this.slim.options()}},{key:"destroy",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=e?document.querySelector("."+e+".ss-main"):this.slim.container,i=e?document.querySelector("[data-ssid=".concat(e,"]")):this.select.element;if(t&&i){document.removeEventListener("click",this.documentClick),"auto"===this.config.showContent&&window.removeEventListener("scroll",this.windowScroll,!1),i.style.display="",delete i.dataset.ssid;var n=i;if(n.slim=null,t.parentElement&&t.parentElement.removeChild(t),this.config.addToBody){var a=e?document.querySelector("."+e+".ss-content"):this.slim.content;if(!a)return;document.body.removeChild(a)}}}}]),e}()},cd49:function(e,t,i){"use strict";i.r(t);i("e260"),i("e6cf"),i("cca6"),i("a79d");var n=i("2b0e"),a=(i("d3b7"),i("8c4f"));n["a"].use(a["a"]);var s=new a["a"]({mode:"history",base:"/",linkActiveClass:"active",routes:[{path:"/",component:function(){return i.e("home").then(i.bind(null,"badb"))}},{path:"/install",component:function(){return i.e("install").then(i.bind(null,"b467"))}},{path:"/selects",component:function(){return i.e("selects").then(i.bind(null,"60e0"))}},{path:"/options",component:function(){return i.e("options").then(i.bind(null,"832f"))}},{path:"/methods",component:function(){return i.e("methods").then(i.bind(null,"cded"))}}]}),l=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"app"}},[e._m(0),i("div",{staticClass:"main"},[i("transition",{attrs:{name:"fade",mode:"out-in",appear:""}},[i("router-view")],1)],1),i("div",{staticClass:"footer"},[e._v(" © "+e._s(e.year)+" "),i("a",{staticStyle:{color:"#ffffff"},attrs:{href:"http://webiswhatido.com",target:"_blank"}},[e._v("Brian Voelker")]),e._v(". Slim Select is under the MIT license. ")])])},o=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"header"},[i("div",{staticClass:"text"},[i("div",{staticClass:"logo"},[e._v(" Slim Select ")]),i("div",{staticClass:"tagline"},[e._v(" Slim advanced select dropdown ")])]),i("div",{staticClass:"select-nav"},[i("a",{attrs:{href:"https://github.com/brianvoe/slim-select",target:"_blank"}},[i("img",{attrs:{src:"images/github.png"}})]),i("a",{attrs:{href:"https://www.npmjs.com/package/slim-select",target:"_blank"}},[i("img",{attrs:{src:"images/npm.png"}})]),i("select",{attrs:{id:"select-nav"}})])])}],r=(i("caad"),i("ac1f"),i("2532"),i("5319"),i("ba4b")),c={data:function(){var e=this.$route.path;return{year:(new Date).getFullYear(),navData:[{text:"Home",value:"/",selected:"/"===e},{text:"Installation",value:"install",selected:"/install"===e},{text:"Select Types",value:"selects",selected:"/selects"===e},{text:"Options",value:"options",selected:"/options"===e},{text:"Methods",value:"methods",selected:"/methods"===e}]}},mounted:function(){var e=this;this.$route.query.p&&this.$router.push({path:this.$route.query.p});var t=new r["a"]({select:"#select-nav",showSearch:!1,onChange:function(t){e.$route.path.includes(t.value)||e.$router.push({path:t.value})}});t.setData(this.navData),this.$router.onReady((function(){var i=e.$route.path.replace("/","");""!==i&&t.setSelected(i)}))}},d=c,h=(i("517e"),i("2877")),u=Object(h["a"])(d,l,o,!1,null,null,null),f=u.exports,m=i("c197"),v=i.n(m),p=i("6f35"),g=i.n(p);i("e391"),i("7362"),i("dc22"),i("9d16");new g.a({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),n["a"].mixin({updated:function(){v.a.highlightAll()}}),new n["a"]({router:s,render:function(e){return e(f)}}).$mount("#app")},dc22:function(e,t,i){}});
2
+ //# sourceMappingURL=app.db13c724.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/docs/app.vue?9661","webpack:///./src/slim-select/config.ts","webpack:///./src/slim-select/helper.ts","webpack:///./src/slim-select/select.ts","webpack:///./src/slim-select/data.ts","webpack:///./src/slim-select/slim.ts","webpack:///./src/slim-select/index.ts","webpack:///./src/docs/router.ts","webpack:///./src/docs/app.vue?c2a0","webpack:///src/docs/app.vue","webpack:///./src/docs/app.vue?6f3b","webpack:///./src/docs/app.vue","webpack:///./src/main.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","info","id","isMultiple","isAjax","isSearching","showSearch","searchFocus","searchHighlight","closeOnSelect","showContent","searchPlaceholder","searchText","searchingText","placeholderText","allowDeselect","allowDeselectOption","hideSelectedOption","deselectLabel","isEnabled","valuesUseText","showOptionTooltips","selectByGroup","limit","timeoutDelay","addToBody","main","singleSelected","arrow","multiSelected","add","plus","values","valueText","valueDelete","content","open","openAbove","openBelow","search","searchHighlighter","addable","list","optgroup","optgroupLabel","optgroupLabelSelectable","option","optionSelected","highlighted","disabled","hide","this","Math","floor","random","style","select","cssText","class","className","split","multiple","searchFilter","opt","text","toLowerCase","indexOf","hasClassInTree","element","hasClass","classList","contains","parentByClass","ensureElementInView","container","cTop","scrollTop","offsetTop","cBottom","clientHeight","eTop","eBottom","putContent","el","currentPosition","isOpen","height","offsetHeight","rect","getBoundingClientRect","elemTop","top","elemBottom","bottom","innerHeight","debounce","func","wait","immediate","args","context","self","later","callNow","isValueInArrayOfObjects","selected","Array","isArray","highlight","str","completedString","regex","RegExp","trim","match","matchStartPosition","index","matchEndPosition","toString","originalTextFoundByRegex","substring","replace","kebabCase","toUpperCase","w","CustomEvent","params","bubbles","cancelable","detail","evt","createEvent","initCustomEvent","Event","triggerMutationObserver","config","addAttributes","addEventListeners","mutationObserver","addMutationObserver","slim","getSelected","options","isOnChangeEnabled","dispatchEvent","tabIndex","display","dataset","ssid","addEventListener","setSelectedFromSelect","render","MutationObserver","mutations","parseSelectData","forEach","mutation","attributeName","updateContainerDivClass","observeMutationObserver","observe","attributes","childList","characterData","disconnect","innerHTML","optgroupObject","optgroupEl","label","oo","createOption","optionEl","placeholder","mandatory","optionClass","keys","contentOpen","contentPosition","searchValue","filtered","String","nodes","childNodes","nodeName","node","pullOptionData","newSelected","newOption","getObjectFromData","setSelected","selectedIndex","shouldBeSelected","v","onChange","JSON","parse","stringify","valuesArray","map","obj","optgroupObj","filter","assign","optionObj","validateData","isValid","errorCount","validateOption","containerDiv","contentDiv","searchDiv","listDiv","multiSelectedDiv","singleSelectedDiv","body","deselect","onclick","stopPropagation","set","arrowContainer","arrowIcon","close","outerHTML","selectedValue","remove","exists","currentNodes","nodesToRemove","HTMLElement","insertAdjacentElement","insertBefore","valueDiv","deleteSpan","preventDefault","shouldUpdate","beforeOnChange","currentValues","beforeOnchange","removeFromSelected","setValue","onDataChange","input","searchReturn","readOnly","onkeydown","highlightUp","highlightDown","onkeyup","ctrlKey","click","querySelector","onfocus","inputValue","focus","addableValue","addableValueStr","validValue","addData","prev","previousSibling","allOptions","querySelectorAll","parent","prevNodes","next","nextSibling","sibling","searching","noResults","item","master","children","childEl","dataClass","textContent","elementID","selectedValues","objectInfo","isSelected","ajax","beforeOpen","afterOpen","beforeClose","afterClose","windowScroll","moveContentAbove","moveContentBelow","documentClick","selectElement","validate","destroy","setData","disable","tagName","outputSelected","addToSelected","newData","reverseSelected","reverse","unshift","hasPlaceholder","containerRect","scrollY","left","scrollX","width","selectedId","selectedOption","removeAttribute","blur","selectHeight","contentHeight","margin","transformOrigin","removeEventListener","parentElement","slimContent","use","base","linkActiveClass","routes","path","component","_vm","_h","$createElement","_c","_self","attrs","_m","staticClass","_v","_s","year","staticStyle","staticRenderFns","mixin","updated","highlightAll","router","h","app","$mount"],"mappings":"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","file":"js/app.db13c724.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"home\":\"home\",\"install\":\"install\",\"methods\":\"methods\",\"options\":\"options\",\"selects\":\"selects\"}[chunkId]||chunkId) + \".\" + {\"home\":\"8bcb44fd\",\"install\":\"02f31028\",\"methods\":\"1b31e988\",\"options\":\"39fe1005\",\"selects\":\"f4d0b859\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"home\":1,\"install\":1,\"methods\":1,\"options\":1,\"selects\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"home\":\"home\",\"install\":\"install\",\"methods\":\"methods\",\"options\":\"options\",\"selects\":\"selects\"}[chunkId]||chunkId) + \".\" + {\"home\":\"57020178\",\"install\":\"baa5d3fb\",\"methods\":\"728c742a\",\"options\":\"b28a32ef\",\"selects\":\"1a7e1e6a\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=style&index=0&lang=scss&\"","import { Option } from './data'\n\ninterface Constructor {\n select: HTMLSelectElement\n isAjax: boolean\n showSearch?: boolean\n searchPlaceholder?: string\n searchText?: string\n searchingText?: string\n searchFocus?: boolean\n searchHighlight?: boolean\n searchFilter?: (opt: Option, search: string) => boolean\n closeOnSelect?: boolean\n showContent?: string\n placeholderText?: string\n allowDeselect?: boolean\n allowDeselectOption?: boolean\n hideSelectedOption?: boolean\n deselectLabel?: string\n isEnabled?: boolean\n valuesUseText?: boolean\n showOptionTooltips?: boolean\n selectByGroup?: boolean\n limit?: number\n timeoutDelay?: number\n addToBody?: boolean\n}\n\nexport class Config {\n public id: string = ''\n public style: string\n public class: string[]\n public isMultiple: boolean = false\n public isAjax: boolean = false\n public isSearching: boolean = false\n public showSearch: boolean = true\n public searchFocus: boolean = true\n public searchHighlight: boolean = false\n public closeOnSelect: boolean = true\n public showContent: string = 'auto' // options: auto, up, down\n public searchPlaceholder: string = 'Search'\n public searchText: string = 'No Results'\n public searchingText: string = 'Searching...'\n public placeholderText: string = 'Select Value'\n public allowDeselect: boolean = false\n public allowDeselectOption: boolean = false\n public hideSelectedOption: boolean = false\n public deselectLabel: string = 'x'\n public isEnabled: boolean = true\n public valuesUseText: boolean = false\n public showOptionTooltips: boolean = false\n public selectByGroup: boolean = false\n public limit: number = 0\n public timeoutDelay: number = 200\n public addToBody: boolean = false\n\n // Classes\n public readonly main: string = 'ss-main'\n public readonly singleSelected: string = 'ss-single-selected'\n public readonly arrow: string = 'ss-arrow'\n public readonly multiSelected: string = 'ss-multi-selected'\n public readonly add: string = 'ss-add'\n public readonly plus: string = 'ss-plus'\n public readonly values: string = 'ss-values'\n public readonly value: string = 'ss-value'\n public readonly valueText: string = 'ss-value-text'\n public readonly valueDelete: string = 'ss-value-delete'\n public readonly content: string = 'ss-content'\n public readonly open: string = 'ss-open'\n public readonly openAbove: string = 'ss-open-above'\n public readonly openBelow: string = 'ss-open-below'\n public readonly search: string = 'ss-search'\n public readonly searchHighlighter: string = 'ss-search-highlight'\n public readonly addable: string = 'ss-addable'\n public readonly list: string = 'ss-list'\n public readonly optgroup: string = 'ss-optgroup'\n public readonly optgroupLabel: string = 'ss-optgroup-label'\n public readonly optgroupLabelSelectable: string = 'ss-optgroup-label-selectable'\n public readonly option: string = 'ss-option'\n public readonly optionSelected: string = 'ss-option-selected'\n public readonly highlighted: string = 'ss-highlighted'\n public readonly disabled: string = 'ss-disabled'\n public readonly hide: string = 'ss-hide'\n\n constructor(info: Constructor) {\n this.id = 'ss-' + Math.floor(Math.random() * 100000)\n this.style = info.select.style.cssText\n this.class = info.select.className.split(' ')\n\n this.isMultiple = info.select.multiple\n this.isAjax = info.isAjax\n this.showSearch = (info.showSearch === false ? false : true)\n this.searchFocus = (info.searchFocus === false ? false : true)\n this.searchHighlight = (info.searchHighlight === true ? true : false)\n this.closeOnSelect = (info.closeOnSelect === false ? false : true)\n if (info.showContent) { this.showContent = info.showContent }\n this.isEnabled = (info.isEnabled === false ? false : true)\n if (info.searchPlaceholder) { this.searchPlaceholder = info.searchPlaceholder }\n if (info.searchText) { this.searchText = info.searchText }\n if (info.searchingText) { this.searchingText = info.searchingText }\n if (info.placeholderText) { this.placeholderText = info.placeholderText }\n this.allowDeselect = (info.allowDeselect === true ? true : false)\n this.allowDeselectOption = (info.allowDeselectOption === true ? true : false)\n this.hideSelectedOption = (info.hideSelectedOption === true ? true : false)\n if (info.deselectLabel) { this.deselectLabel = info.deselectLabel }\n if (info.valuesUseText) { this.valuesUseText = info.valuesUseText }\n if (info.showOptionTooltips) { this.showOptionTooltips = info.showOptionTooltips }\n if (info.selectByGroup) { this.selectByGroup = info.selectByGroup }\n if (info.limit) { this.limit = info.limit }\n if (info.searchFilter) { this.searchFilter = info.searchFilter }\n if (info.timeoutDelay != null) { this.timeoutDelay = info.timeoutDelay }\n this.addToBody = (info.addToBody === true ? true : false)\n }\n\n public searchFilter(opt: Option, search: string): boolean {\n return opt.text.toLowerCase().indexOf(search.toLowerCase()) !== -1\n }\n}\n","export function hasClassInTree(element: HTMLElement, className: string) {\n function hasClass(e: HTMLElement, c: string) {\n if (!(!c || !e || !e.classList || !e.classList.contains(c))) { return e }\n return null\n }\n\n function parentByClass(e: any, c: string): any {\n if (!e || e === document as any) {\n return null\n } else if (hasClass(e, c)) {\n return e\n } else {\n return parentByClass(e.parentNode, c)\n }\n }\n\n return hasClass(element, className) || parentByClass(element, className)\n}\n\nexport function ensureElementInView(container: HTMLElement, element: HTMLElement): void {\n // Determine container top and bottom\n const cTop = container.scrollTop + container.offsetTop // Make sure to have offsetTop\n const cBottom = cTop + container.clientHeight\n\n // Determine element top and bottom\n const eTop = element.offsetTop\n const eBottom = eTop + element.clientHeight\n\n // Check if out of view\n if (eTop < cTop) {\n container.scrollTop -= (cTop - eTop)\n } else if (eBottom > cBottom) {\n container.scrollTop += (eBottom - cBottom)\n }\n}\n\nexport function putContent(el: HTMLElement, currentPosition: string, isOpen: boolean): string {\n const height = el.offsetHeight\n const rect = el.getBoundingClientRect()\n const elemTop = (isOpen ? rect.top : rect.top - height)\n const elemBottom = (isOpen ? rect.bottom : rect.bottom + height)\n\n if (elemTop <= 0) { return 'below' }\n if (elemBottom >= window.innerHeight) { return 'above' }\n return (isOpen ? currentPosition : 'below')\n}\n\nexport function debounce(func: (...params: any[]) => void, wait = 100, immediate = false): () => void {\n let timeout: any\n return function(this: any, ...args: any[]) {\n const context = self\n const later = () => {\n timeout = null\n if (!immediate) { func.apply(context, args) }\n }\n const callNow = immediate && !timeout\n clearTimeout(timeout)\n timeout = setTimeout(later, wait)\n if (callNow) { func.apply(context, args) }\n }\n}\n\nexport function isValueInArrayOfObjects(selected: any, key: string, value: string): boolean {\n if (!Array.isArray(selected)) {\n return selected[key] === value\n }\n\n for (const s of selected) {\n if (s && s[key] && s[key] === value) {\n return true\n }\n }\n\n return false\n}\n\nexport function highlight(str: string, search: any, className: string) {\n // the completed string will be itself if already set, otherwise, the string that was passed in\n let completedString: any = str\n const regex = new RegExp('(' + search.trim() + ')(?![^<]*>[^<>]*</)', 'i')\n\n // If the regex doesn't match the string just exit\n if (!str.match(regex)) { return str }\n\n // Otherwise, get to highlighting\n const matchStartPosition = (str.match(regex) as any).index\n const matchEndPosition = matchStartPosition + (str.match(regex) as any)[0].toString().length\n const originalTextFoundByRegex = str.substring(matchStartPosition, matchEndPosition)\n completedString = completedString.replace(regex, `<mark class=\"${className}\">${originalTextFoundByRegex}</mark>`)\n return completedString\n}\n\nexport function kebabCase(str: string) {\n const result = str.replace(\n /[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g,\n (match) => '-' + match.toLowerCase()\n )\n return (str[0] === str[0].toUpperCase())\n ? result.substring(1)\n : result\n}\n\n// Custom events\n(() => {\n const w = (window as any)\n if (typeof w.CustomEvent === 'function') { return }\n\n function CustomEvent(event: any, params: any) {\n params = params || { bubbles: false, cancelable: false, detail: undefined }\n const evt = document.createEvent('CustomEvent')\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail)\n return evt\n }\n\n CustomEvent.prototype = w.Event.prototype\n w.CustomEvent = CustomEvent\n})()\n","import SlimSelect from './index'\nimport { Option, Optgroup, dataArray } from './data'\nimport { kebabCase } from './helper'\n\ninterface Constructor {\n select: HTMLSelectElement\n main: SlimSelect\n}\n\nexport class Select {\n public element: HTMLSelectElement\n public main: SlimSelect\n public mutationObserver: MutationObserver | null\n public triggerMutationObserver: boolean = true\n constructor(info: Constructor) {\n this.element = info.select\n this.main = info.main\n\n // If original select is set to disabled lets make sure slim is too\n if (this.element.disabled) { this.main.config.isEnabled = false }\n\n this.addAttributes()\n this.addEventListeners()\n this.mutationObserver = null\n this.addMutationObserver()\n\n // Add slim to original select dropdown\n const el = this.element as any\n el.slim = info.main\n }\n\n public setValue(): void {\n if (!this.main.data.getSelected()) { return }\n\n if (this.main.config.isMultiple) {\n // If multiple loop through options and set selected\n const selected = this.main.data.getSelected() as Option[]\n const options = this.element.options as any as HTMLOptionElement[]\n for (const o of options) {\n o.selected = false\n for (const s of selected) {\n if (s.value === o.value) {\n o.selected = true\n }\n }\n }\n } else {\n // If single select simply set value\n const selected = this.main.data.getSelected() as any\n this.element.value = (selected ? selected.value : '')\n }\n\n // Do not trigger onChange callbacks for this event listener\n this.main.data.isOnChangeEnabled = false\n this.element.dispatchEvent(new CustomEvent('change', { bubbles: true }))\n this.main.data.isOnChangeEnabled = true\n }\n\n public addAttributes() {\n this.element.tabIndex = -1\n this.element.style.display = 'none'\n\n // Add slim select id\n this.element.dataset.ssid = this.main.config.id\n }\n\n // Add onChange listener to original select\n public addEventListeners() {\n this.element.addEventListener('change', (e: Event) => {\n this.main.data.setSelectedFromSelect()\n this.main.render()\n })\n }\n\n // Add MutationObserver to select\n public addMutationObserver(): void {\n // Only add if not in ajax mode\n if (this.main.config.isAjax) { return }\n\n this.mutationObserver = new MutationObserver((mutations) => {\n if (!this.triggerMutationObserver) {return}\n\n this.main.data.parseSelectData()\n this.main.data.setSelectedFromSelect()\n this.main.render()\n\n mutations.forEach((mutation) => {\n if (mutation.attributeName === 'class') {\n this.main.slim.updateContainerDivClass(this.main.slim.container)\n }\n })\n })\n\n this.observeMutationObserver()\n }\n\n public observeMutationObserver(): void {\n if (!this.mutationObserver) { return }\n\n this.mutationObserver.observe(this.element, {\n attributes: true,\n childList: true,\n characterData: true\n })\n }\n\n public disconnectMutationObserver(): void {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect()\n }\n }\n\n // Create select element and optgroup/options\n public create(data: dataArray): void {\n // Clear out select\n this.element.innerHTML = ''\n\n for (const d of data) {\n if (d.hasOwnProperty('options')) {\n const optgroupObject = d as Optgroup\n const optgroupEl = document.createElement('optgroup') as HTMLOptGroupElement\n optgroupEl.label = optgroupObject.label\n if (optgroupObject.options) {\n for (const oo of optgroupObject.options) {\n optgroupEl.appendChild(this.createOption(oo))\n }\n }\n this.element.appendChild(optgroupEl)\n } else {\n this.element.appendChild(this.createOption(d))\n }\n }\n }\n\n public createOption(info: any): HTMLOptionElement {\n const optionEl = document.createElement('option')\n optionEl.value = info.value !== '' ? info.value : info.text\n optionEl.innerHTML = info.innerHTML || info.text\n if (info.selected) { optionEl.selected = info.selected }\n if (info.display === false) {\n optionEl.style.display = 'none'\n }\n if (info.disabled) { optionEl.disabled = true }\n if (info.placeholder) { optionEl.setAttribute('data-placeholder', 'true') }\n if (info.mandatory) { optionEl.setAttribute('data-mandatory', 'true') }\n if (info.class) {\n info.class.split(' ').forEach((optionClass: string) => {\n optionEl.classList.add(optionClass)\n })\n }\n if (info.data && typeof info.data === 'object') {\n Object.keys(info.data).forEach((key) => {\n optionEl.setAttribute('data-' + kebabCase(key), info.data[key])\n })\n }\n\n return optionEl\n }\n}\n","import SlimSelect from './index'\n\ninterface Constructor { main: SlimSelect }\n\nexport type dataArray = dataObject[]\nexport type dataObject = Optgroup | Option\nexport interface Optgroup {\n label: string\n options?: Option[]\n}\n\nexport interface Option {\n id?: string\n value?: string\n text: string\n innerHTML?: string\n selected?: boolean\n display?: boolean\n disabled?: boolean\n placeholder?: boolean|string\n class?: string\n style?: string\n data?: object\n mandatory?: boolean\n}\n\n// Class is responsible for managing the data\nexport class Data {\n public main: SlimSelect\n public searchValue: string\n public data: dataObject[]\n public filtered: dataObject[] | null\n public contentOpen: boolean = false\n public contentPosition: string = 'below'\n public isOnChangeEnabled: boolean = true\n constructor(info: Constructor) {\n this.main = info.main\n this.searchValue = ''\n this.data = []\n this.filtered = null\n\n this.parseSelectData()\n this.setSelectedFromSelect()\n }\n\n public newOption(info: any): Option {\n return {\n id: (info.id ? info.id : String(Math.floor(Math.random() * 100000000))),\n value: (info.value ? info.value : ''),\n text: (info.text ? info.text : ''),\n innerHTML: (info.innerHTML ? info.innerHTML : ''),\n selected: (info.selected ? info.selected : false),\n display: (info.display !== undefined ? info.display : true),\n disabled: (info.disabled ? info.disabled : false),\n placeholder: (info.placeholder ? info.placeholder : false),\n class: (info.class ? info.class : undefined),\n data: (info.data ? info.data : {}),\n mandatory: (info.mandatory ? info.mandatory : false)\n }\n }\n\n // Add to the current data array\n public add(data: Option) {\n this.data.push({\n id: String(Math.floor(Math.random() * 100000000)),\n value: data.value,\n text: data.text,\n innerHTML: '',\n selected: false,\n display: true,\n disabled: false,\n placeholder: false,\n class: undefined,\n mandatory: data.mandatory,\n data: {}\n })\n }\n\n // From passed in select element pull optgroup and options into data\n public parseSelectData() {\n this.data = []\n // Loop through nodes and create data\n const nodes = (this.main.select.element as HTMLSelectElement).childNodes as any as HTMLOptGroupElement[] | HTMLOptionElement[]\n for (const n of nodes) {\n if (n.nodeName === 'OPTGROUP') {\n const node = n as HTMLOptGroupElement\n const optgroup = {\n label: node.label,\n options: [] as Option[]\n }\n const options = n.childNodes as any as HTMLOptionElement[]\n for (const o of options) {\n if (o.nodeName === 'OPTION') {\n const option = this.pullOptionData(o as HTMLOptionElement)\n optgroup.options.push(option)\n\n // If option has placeholder set to true set placeholder text\n if (option.placeholder && option.text.trim() !== '') {\n this.main.config.placeholderText = option.text\n }\n }\n }\n this.data.push(optgroup)\n } else if (n.nodeName === 'OPTION') {\n const option = this.pullOptionData(n as HTMLOptionElement)\n this.data.push(option)\n\n // If option has placeholder set to true set placeholder text\n if (option.placeholder && option.text.trim() !== '') {\n this.main.config.placeholderText = option.text\n }\n }\n }\n }\n\n // From passed in option pull pieces of usable information\n public pullOptionData(option: HTMLOptionElement): Option {\n return {\n id: (option.dataset ? option.dataset.id : false) || String(Math.floor(Math.random() * 100000000)),\n value: option.value,\n text: option.text,\n innerHTML: option.innerHTML,\n selected: option.selected,\n disabled: option.disabled,\n placeholder: option.dataset.placeholder === 'true',\n class: option.className,\n style: option.style.cssText,\n data: option.dataset,\n mandatory: (option.dataset ? option.dataset.mandatory === 'true' : false)\n }\n }\n\n // From select element get current selected and set selected\n public setSelectedFromSelect(): void {\n if (this.main.config.isMultiple) {\n const options = this.main.select.element.options as any as HTMLOptionElement[]\n const newSelected: string[] = []\n for (const o of options) {\n if (o.selected) {\n const newOption = this.getObjectFromData(o.value, 'value')\n if (newOption && newOption.id) {\n newSelected.push(newOption.id)\n }\n }\n }\n this.setSelected(newSelected, 'id')\n } else {\n const element = this.main.select.element\n\n // Single select element\n if (element.selectedIndex !== -1) {\n const option = element.options[element.selectedIndex] as HTMLOptionElement\n const value = option.value\n this.setSelected(value, 'value')\n }\n }\n }\n\n // From value set the selected value\n public setSelected(value: string | string[], type = 'id'): void {\n // Loop through data and set selected values\n for (const d of this.data) {\n // Deal with optgroups\n if (d.hasOwnProperty('label')) {\n if (d.hasOwnProperty('options')) {\n const options = (d as Optgroup).options\n if (options) {\n for (const o of options) {\n // Do not select if its a placeholder\n if (o.placeholder) {continue}\n\n o.selected = this.shouldBeSelected(o, value, type)\n }\n }\n }\n } else {\n (d as Option).selected = this.shouldBeSelected((d as Option), value, type)\n }\n }\n }\n\n // Determines whether or not passed in option should be selected based upon possible values\n public shouldBeSelected(option: Option, value: string | string[], type: string = 'id'): boolean {\n if (Array.isArray(value)) {\n for (const v of value) {\n if (type in option && String((option as any)[type]) === String(v)) {\n return true\n }\n }\n } else {\n if (type in option && String((option as any)[type]) === String(value)) {\n return true\n }\n }\n\n return false\n }\n\n // From data get option | option[] of selected values\n // If single select return last selected value\n public getSelected(): Option | Option[] {\n let value: Option = { text: '', placeholder: this.main.config.placeholderText } // Dont worry about setting this(make typescript happy). If single a value will be selected\n const values: Option[] = []\n for (const d of this.data) {\n // Deal with optgroups\n if (d.hasOwnProperty('label')) {\n if (d.hasOwnProperty('options')) {\n const options = (d as Optgroup).options\n if (options) {\n for (const o of options) {\n if (o.selected) {\n // If single return option\n if (!this.main.config.isMultiple) {\n value = o\n } else {\n // Push to multiple array\n values.push(o)\n }\n }\n }\n }\n }\n } else {\n // Push options to array\n if ((d as Option).selected) {\n // If single return option\n if (!this.main.config.isMultiple) {\n value = d as Option\n } else {\n // Push to multiple array\n values.push(d as Option)\n }\n }\n }\n }\n\n // Either return array or object or null\n if (this.main.config.isMultiple) {\n return values\n }\n return value\n }\n\n // If select type is multiple append value and set selected\n public addToSelected(value: string, type = 'id') {\n if (this.main.config.isMultiple) {\n const values = []\n const selected = this.getSelected()\n if (Array.isArray(selected)) {\n for (const s of selected) {\n values.push((s as any)[type])\n }\n }\n values.push(value)\n\n this.setSelected(values, type)\n }\n }\n\n // Remove object from selected\n public removeFromSelected(value: string, type = 'id') {\n if (this.main.config.isMultiple) {\n const values = []\n const selected = this.getSelected() as Option[]\n for (const s of selected) {\n if (String((s as any)[type]) !== String(value)) {\n values.push((s as any)[type])\n }\n }\n\n this.setSelected(values, type)\n }\n }\n\n // Trigger onChange callback\n public onDataChange(): void {\n if (this.main.onChange && this.isOnChangeEnabled) {\n this.main.onChange(JSON.parse(JSON.stringify(this.getSelected())))\n }\n }\n\n // Take in a value loop through the data till you find it and return it\n public getObjectFromData(value: string, type = 'id'): Option | null {\n for (const d of this.data) {\n // If option check if value is the same\n if (type in d && String((d as any)[type]) === String(value)) {\n return d as Option\n }\n // If optgroup loop through options\n if (d.hasOwnProperty('options')) {\n const optgroupObject = d as Optgroup\n if (optgroupObject.options) {\n for (const oo of optgroupObject.options) {\n if (String((oo as any)[type]) === String(value)) {\n return oo\n }\n }\n }\n }\n }\n\n return null\n }\n\n // Take in search string and return filtered list of values\n public search(search: string) {\n this.searchValue = search\n if (search.trim() === '') { this.filtered = null; return }\n\n const searchFilter = this.main.config.searchFilter\n const valuesArray = this.data.slice(0)\n search = search.trim()\n const filtered = valuesArray.map((obj) => {\n // If optgroup\n if (obj.hasOwnProperty('options')) {\n const optgroupObj = obj as Optgroup\n let options: Option[] = []\n if (optgroupObj.options) {\n options = optgroupObj.options.filter((opt) => {\n return searchFilter(opt, search)\n })\n }\n if (options.length !== 0) {\n const optgroup = (Object as any).assign({}, optgroupObj) // Break pointer\n optgroup.options = options\n return optgroup\n }\n }\n\n // If single option\n if (obj.hasOwnProperty('text')) {\n const optionObj = obj as Option\n if (searchFilter(optionObj, search)) { return obj }\n }\n\n return null\n })\n\n // Filter out false values\n this.filtered = filtered.filter((info) => info)\n }\n}\n\nexport function validateData(data: dataArray): boolean {\n if (!data) { console.error('Data must be an array of objects'); return false }\n let isValid = false\n let errorCount = 0\n\n for (const d of data) {\n if (d.hasOwnProperty('label')) {\n if (d.hasOwnProperty('options')) {\n const optgroup = d as Optgroup\n const options = optgroup.options\n if (options) {\n for (const o of options) {\n isValid = validateOption(o)\n if (!isValid) { errorCount++ }\n }\n }\n }\n } else {\n const option = d as Option\n isValid = validateOption(option)\n if (!isValid) { errorCount++ }\n }\n }\n\n return errorCount === 0\n}\n\nexport function validateOption(option: Option): boolean {\n if (option.text === undefined) {\n console.error('Data object option must have at least have a text value. Check object: ' + JSON.stringify(option))\n return false\n }\n return true\n}\n","import SlimSelect from './index'\nimport { ensureElementInView, isValueInArrayOfObjects, highlight } from './helper'\nimport { Option, Optgroup, validateOption } from './data'\n\ninterface SingleSelected {\n container: HTMLDivElement\n placeholder: HTMLSpanElement\n deselect: HTMLSpanElement\n arrowIcon: {\n container: HTMLSpanElement\n arrow: HTMLSpanElement\n }\n}\n\ninterface MultiSelected {\n container: HTMLDivElement\n values: HTMLDivElement\n add: HTMLDivElement\n plus: HTMLSpanElement\n}\n\ninterface Search {\n container: HTMLDivElement\n input: HTMLInputElement\n addable?: HTMLDivElement\n}\n\n// Class is responsible for creating all the elements\nexport class Slim {\n public main: SlimSelect\n public container: HTMLDivElement\n public singleSelected: SingleSelected | null\n public multiSelected: MultiSelected | null\n public content: HTMLDivElement\n public search: Search\n public list: HTMLDivElement\n constructor(info: { main: SlimSelect }) {\n this.main = info.main\n\n // Create elements in order of appending\n this.container = this.containerDiv()\n this.content = this.contentDiv()\n this.search = this.searchDiv()\n this.list = this.listDiv()\n this.options()\n\n this.singleSelected = null\n this.multiSelected = null\n if (this.main.config.isMultiple) {\n this.multiSelected = this.multiSelectedDiv()\n if (this.multiSelected) {\n this.container.appendChild(this.multiSelected.container)\n }\n } else {\n this.singleSelected = this.singleSelectedDiv()\n this.container.appendChild(this.singleSelected.container)\n }\n if (this.main.config.addToBody) {\n // add the id to the content as a class as well\n // this is important on touch devices as the close method is\n // triggered when clicks on the document body occur\n this.content.classList.add(this.main.config.id)\n document.body.appendChild(this.content)\n } else {\n this.container.appendChild(this.content)\n }\n this.content.appendChild(this.search.container)\n this.content.appendChild(this.list)\n }\n\n // Create main container\n public containerDiv(): HTMLDivElement {\n // Create main container\n const container = document.createElement('div') as HTMLDivElement\n\n // Add style and classes\n container.style.cssText = this.main.config.style\n\n this.updateContainerDivClass(container)\n\n return container\n }\n\n // Will look at the original select and pull classes from it\n public updateContainerDivClass(container: HTMLDivElement) {\n // Set config class\n this.main.config.class = this.main.select.element.className.split(' ')\n\n // Clear out classlist\n container.className = ''\n\n // Loop through config class and add\n container.classList.add(this.main.config.id)\n container.classList.add(this.main.config.main)\n for (const c of this.main.config.class) {\n if (c.trim() !== '') {\n container.classList.add(c)\n }\n }\n }\n\n public singleSelectedDiv(): SingleSelected {\n const container: HTMLDivElement = document.createElement('div')\n container.classList.add(this.main.config.singleSelected)\n\n // Placeholder text\n const placeholder: HTMLSpanElement = document.createElement('span')\n placeholder.classList.add('placeholder')\n container.appendChild(placeholder)\n\n // Deselect\n const deselect = document.createElement('span')\n deselect.innerHTML = this.main.config.deselectLabel\n deselect.classList.add('ss-deselect')\n deselect.onclick = (e) => {\n e.stopPropagation()\n\n // Dont do anything if disabled\n if (!this.main.config.isEnabled) {return}\n\n this.main.set('')\n }\n container.appendChild(deselect)\n\n // Arrow\n const arrowContainer: HTMLSpanElement = document.createElement('span')\n arrowContainer.classList.add(this.main.config.arrow)\n const arrowIcon = document.createElement('span')\n arrowIcon.classList.add('arrow-down')\n arrowContainer.appendChild(arrowIcon)\n container.appendChild(arrowContainer)\n\n // Add onclick for main selector div\n container.onclick = () => {\n if (!this.main.config.isEnabled) { return }\n\n this.main.data.contentOpen ? this.main.close() : this.main.open()\n }\n\n return {\n container,\n placeholder,\n deselect,\n arrowIcon: {\n container: arrowContainer,\n arrow: arrowIcon\n }\n }\n }\n\n // Based upon current selection set placeholder text\n public placeholder(): void {\n const selected = this.main.data.getSelected() as Option\n\n // Placeholder display\n if (selected === null || (selected && selected.placeholder)) {\n const placeholder = document.createElement('span')\n placeholder.classList.add(this.main.config.disabled)\n placeholder.innerHTML = this.main.config.placeholderText\n if (this.singleSelected) {\n this.singleSelected.placeholder.innerHTML = placeholder.outerHTML\n }\n } else {\n let selectedValue = ''\n if (selected) {\n selectedValue = selected.innerHTML && this.main.config.valuesUseText !== true ? selected.innerHTML : selected.text\n }\n if (this.singleSelected) {\n this.singleSelected.placeholder.innerHTML = (selected ? selectedValue : '')\n }\n }\n }\n\n // Based upon current selection/settings hide/show deselect\n public deselect(): void {\n if (this.singleSelected) {\n // if allowDeselect is false just hide it\n if (!this.main.config.allowDeselect) {\n this.singleSelected.deselect.classList.add('ss-hide')\n return\n }\n\n if (this.main.selected() === '') {\n this.singleSelected.deselect.classList.add('ss-hide')\n } else {\n this.singleSelected.deselect.classList.remove('ss-hide')\n }\n }\n }\n\n public multiSelectedDiv(): MultiSelected {\n const container = document.createElement('div')\n container.classList.add(this.main.config.multiSelected)\n\n const values = document.createElement('div')\n values.classList.add(this.main.config.values)\n container.appendChild(values)\n\n const add = document.createElement('div')\n add.classList.add(this.main.config.add)\n const plus = document.createElement('span')\n plus.classList.add(this.main.config.plus)\n plus.onclick = (e) => {\n if (this.main.data.contentOpen) {\n this.main.close()\n e.stopPropagation()\n }\n }\n add.appendChild(plus)\n container.appendChild(add)\n\n container.onclick = (e) => {\n if (!this.main.config.isEnabled) { return }\n\n // Open only if you are not clicking on x text\n const target = e.target as Element\n if (!target.classList.contains(this.main.config.valueDelete)) {\n this.main.data.contentOpen ? this.main.close() : this.main.open()\n }\n }\n\n return {\n container,\n values,\n add,\n plus\n }\n }\n\n // Get selected values and append to multiSelected values container\n // and remove those who shouldnt exist\n public values(): void {\n if (!this.multiSelected) { return }\n let currentNodes = this.multiSelected.values.childNodes as any as HTMLDivElement[]\n const selected = this.main.data.getSelected() as Option[]\n\n // Remove nodes that shouldnt be there\n let exists\n const nodesToRemove = []\n for (const c of currentNodes) {\n exists = true\n for (const s of selected) {\n if (String(s.id) === String(c.dataset.id)) {\n exists = false\n }\n }\n\n if (exists) { nodesToRemove.push(c) }\n }\n\n for (const n of nodesToRemove) {\n n.classList.add('ss-out')\n this.multiSelected.values.removeChild(n)\n }\n\n // Add values that dont currently exist\n currentNodes = this.multiSelected.values.childNodes as any as HTMLDivElement[]\n for (let s = 0; s < selected.length; s++) {\n exists = false\n for (const c of currentNodes) {\n if (String(selected[s].id) === String(c.dataset.id)) {\n exists = true\n }\n }\n\n if (!exists) {\n if (currentNodes.length === 0 || !HTMLElement.prototype.insertAdjacentElement) {\n this.multiSelected.values.appendChild(this.valueDiv(selected[s]))\n } else if (s === 0) {\n this.multiSelected.values.insertBefore(this.valueDiv(selected[s]), (currentNodes[s] as any))\n } else {\n (currentNodes[s - 1] as any).insertAdjacentElement('afterend', this.valueDiv(selected[s]))\n }\n }\n }\n\n // If there are no values set placeholder\n if (selected.length === 0) {\n const placeholder = document.createElement('span')\n placeholder.classList.add(this.main.config.disabled)\n placeholder.innerHTML = this.main.config.placeholderText\n this.multiSelected.values.innerHTML = placeholder.outerHTML\n }\n }\n\n public valueDiv(optionObj: Option): HTMLDivElement {\n const value = document.createElement('div')\n value.classList.add(this.main.config.value)\n value.dataset.id = optionObj.id\n\n const text = document.createElement('span')\n text.classList.add(this.main.config.valueText)\n text.innerHTML = (optionObj.innerHTML && this.main.config.valuesUseText !== true ? optionObj.innerHTML : optionObj.text)\n value.appendChild(text)\n\n if (!optionObj.mandatory) {\n const deleteSpan = document.createElement('span')\n deleteSpan.classList.add(this.main.config.valueDelete)\n deleteSpan.innerHTML = this.main.config.deselectLabel\n deleteSpan.onclick = (e) => {\n e.preventDefault()\n e.stopPropagation()\n let shouldUpdate = false\n\n // If no beforeOnChange is set automatically update at end\n if (!this.main.beforeOnChange) {shouldUpdate = true}\n\n if (this.main.beforeOnChange) {\n const selected = this.main.data.getSelected() as Option\n const currentValues = JSON.parse(JSON.stringify(selected))\n\n // Remove from current selection\n for (let i = 0; i < currentValues.length; i++) {\n if (currentValues[i].id === optionObj.id) {\n currentValues.splice(i, 1)\n }\n }\n\n const beforeOnchange = this.main.beforeOnChange(currentValues)\n if (beforeOnchange !== false) { shouldUpdate = true }\n }\n\n if (shouldUpdate) {\n this.main.data.removeFromSelected((optionObj.id as any), 'id')\n this.main.render()\n this.main.select.setValue()\n this.main.data.onDataChange() // Trigger on change callback\n }\n }\n\n\n value.appendChild(deleteSpan)\n }\n\n return value\n }\n\n // Create content container\n public contentDiv(): HTMLDivElement {\n const container = document.createElement('div')\n container.classList.add(this.main.config.content)\n return container\n }\n\n public searchDiv(): Search {\n const container = document.createElement('div')\n const input = document.createElement('input')\n const addable = document.createElement('div')\n container.classList.add(this.main.config.search)\n\n // Setup search return object\n const searchReturn: Search = {\n container,\n input\n }\n\n // We still want the search to be tabable but not shown\n if (!this.main.config.showSearch) {\n container.classList.add(this.main.config.hide)\n input.readOnly = true\n }\n\n input.type = 'search'\n input.placeholder = this.main.config.searchPlaceholder\n input.tabIndex = 0\n input.setAttribute('aria-label', this.main.config.searchPlaceholder)\n input.setAttribute('autocapitalize', 'off')\n input.setAttribute('autocomplete', 'off')\n input.setAttribute('autocorrect', 'off')\n input.onclick = (e) => {\n setTimeout(() => {\n const target = e.target as HTMLInputElement\n if (target.value === '') { this.main.search('') }\n }, 10)\n }\n input.onkeydown = (e) => {\n if (e.key === 'ArrowUp') {\n this.main.open()\n this.highlightUp()\n e.preventDefault()\n } else if (e.key === 'ArrowDown') {\n this.main.open()\n this.highlightDown()\n e.preventDefault()\n } else if (e.key === 'Tab') {\n if (!this.main.data.contentOpen) {\n setTimeout(() => { this.main.close() }, this.main.config.timeoutDelay)\n } else {\n this.main.close()\n }\n } else if (e.key === 'Enter') {\n e.preventDefault()\n }\n }\n input.onkeyup = (e) => {\n const target = e.target as HTMLInputElement\n if (e.key === 'Enter') {\n if (this.main.addable && e.ctrlKey) {\n addable.click()\n e.preventDefault()\n e.stopPropagation()\n return\n }\n const highlighted = this.list.querySelector('.' + this.main.config.highlighted) as HTMLDivElement\n if (highlighted) { highlighted.click() }\n } else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n // Cancel out to leave for onkeydown to handle\n } else if (e.key === 'Escape') {\n this.main.close()\n } else {\n if (this.main.config.showSearch && this.main.data.contentOpen) {\n this.main.search(target.value)\n } else {\n input.value = ''\n }\n }\n e.preventDefault()\n e.stopPropagation()\n }\n input.onfocus = () => { this.main.open() }\n container.appendChild(input)\n\n if (this.main.addable) {\n addable.classList.add(this.main.config.addable)\n addable.innerHTML = '+'\n addable.onclick = (e) => {\n if (this.main.addable) {\n e.preventDefault()\n e.stopPropagation()\n\n const inputValue = this.search.input.value\n if (inputValue.trim() === '') { this.search.input.focus(); return }\n\n const addableValue = this.main.addable(inputValue)\n let addableValueStr = ''\n if (!addableValue) { return }\n\n if (typeof addableValue === 'object') {\n const validValue = validateOption(addableValue)\n if (validValue) {\n this.main.addData(addableValue)\n addableValueStr = (addableValue.value ? addableValue.value : addableValue.text)\n }\n } else {\n this.main.addData(this.main.data.newOption({\n text: addableValue,\n value: addableValue\n }))\n addableValueStr = addableValue\n }\n\n this.main.search('')\n setTimeout(() => { // Temp fix to solve multi render issue\n this.main.set(addableValueStr, 'value', false, false)\n }, 100)\n\n // Close it only if closeOnSelect = true\n if (this.main.config.closeOnSelect) {\n setTimeout(() => { // Give it a little padding for a better looking animation\n this.main.close()\n }, 100)\n }\n }\n }\n container.appendChild(addable)\n\n searchReturn.addable = addable\n }\n\n return searchReturn\n }\n\n public highlightUp(): void {\n const highlighted = this.list.querySelector('.' + this.main.config.highlighted) as HTMLDivElement\n let prev: HTMLDivElement | null = null\n if (highlighted) {\n prev = highlighted.previousSibling as HTMLDivElement\n while (prev !== null) {\n if (prev.classList.contains(this.main.config.disabled)) {\n prev = prev.previousSibling as HTMLDivElement\n continue\n } else {\n break\n }\n }\n } else {\n const allOptions = this.list.querySelectorAll('.' + this.main.config.option + ':not(.' + this.main.config.disabled + ')')\n prev = allOptions[allOptions.length - 1] as HTMLDivElement\n }\n\n // Do not select if optgroup label\n if (prev && prev.classList.contains(this.main.config.optgroupLabel)) { prev = null }\n\n // Check if parent is optgroup\n if (prev === null) {\n const parent = highlighted.parentNode as HTMLDivElement\n if (parent.classList.contains(this.main.config.optgroup)) {\n if (parent.previousSibling) {\n const prevNodes = (parent.previousSibling as HTMLDivElement).querySelectorAll('.' + this.main.config.option + ':not(.' + this.main.config.disabled + ')')\n if (prevNodes.length) {\n prev = prevNodes[prevNodes.length - 1] as HTMLDivElement\n }\n }\n }\n }\n\n // If previous element exists highlight it\n if (prev) {\n if (highlighted) { highlighted.classList.remove(this.main.config.highlighted) }\n prev.classList.add(this.main.config.highlighted)\n ensureElementInView(this.list, prev)\n }\n }\n\n public highlightDown(): void {\n const highlighted = this.list.querySelector('.' + this.main.config.highlighted) as HTMLDivElement\n let next = null\n\n if (highlighted) {\n next = highlighted.nextSibling as HTMLDivElement\n while (next !== null) {\n if (next.classList.contains(this.main.config.disabled)) {\n next = next.nextSibling as HTMLDivElement\n continue\n } else {\n break\n }\n }\n } else {\n next = this.list.querySelector('.' + this.main.config.option + ':not(.' + this.main.config.disabled + ')') as HTMLDivElement\n }\n\n // Check if parent is optgroup\n if (next === null && highlighted !== null) {\n const parent = highlighted.parentNode as HTMLDivElement\n if (parent.classList.contains(this.main.config.optgroup)) {\n if (parent.nextSibling) {\n const sibling = parent.nextSibling as HTMLDivElement\n next = sibling.querySelector('.' + this.main.config.option + ':not(.' + this.main.config.disabled + ')') as HTMLDivElement\n }\n }\n }\n\n // If previous element exists highlight it\n if (next) {\n if (highlighted) { highlighted.classList.remove(this.main.config.highlighted) }\n next.classList.add(this.main.config.highlighted)\n ensureElementInView(this.list, next)\n }\n }\n\n // Create main container that options will reside\n public listDiv(): HTMLDivElement {\n const list = document.createElement('div')\n list.classList.add(this.main.config.list)\n return list\n }\n\n // Loop through data || filtered data and build options and append to list container\n public options(content: string = ''): void {\n const data = this.main.data.filtered || this.main.data.data\n\n // Clear out innerHtml\n this.list.innerHTML = ''\n\n // If content is being passed just use that text\n if (content !== '') {\n const searching = document.createElement('div')\n searching.classList.add(this.main.config.option)\n searching.classList.add(this.main.config.disabled)\n searching.innerHTML = content\n this.list.appendChild(searching)\n return\n }\n\n // If ajax and isSearching\n if (this.main.config.isAjax && this.main.config.isSearching) {\n const searching = document.createElement('div')\n searching.classList.add(this.main.config.option)\n searching.classList.add(this.main.config.disabled)\n searching.innerHTML = this.main.config.searchingText\n this.list.appendChild(searching)\n return\n }\n\n // If no results show no results text\n if (data.length === 0) {\n const noResults = document.createElement('div')\n noResults.classList.add(this.main.config.option)\n noResults.classList.add(this.main.config.disabled)\n noResults.innerHTML = this.main.config.searchText\n this.list.appendChild(noResults)\n return\n }\n\n // Append individual options to div container\n for (const d of data) {\n // Create optgroup\n if (d.hasOwnProperty('label')) {\n const item = d as Optgroup\n const optgroupEl = document.createElement('div')\n optgroupEl.classList.add(this.main.config.optgroup)\n\n // Create label\n const optgroupLabel = document.createElement('div')\n optgroupLabel.classList.add(this.main.config.optgroupLabel)\n if (this.main.config.selectByGroup && this.main.config.isMultiple) {\n optgroupLabel.classList.add(this.main.config.optgroupLabelSelectable)\n }\n optgroupLabel.innerHTML = item.label\n optgroupEl.appendChild(optgroupLabel)\n\n const options = item.options\n if (options) {\n for (const o of options) {\n optgroupEl.appendChild(this.option(o))\n }\n\n // Selecting all values by clicking the group label\n if (this.main.config.selectByGroup && this.main.config.isMultiple) {\n const master = this\n optgroupLabel.addEventListener('click', (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n\n for (const childEl of optgroupEl.children as any as HTMLDivElement[]) {\n if (childEl.className.indexOf(master.main.config.option) !== -1) {\n childEl.click()\n }\n }\n })\n }\n }\n this.list.appendChild(optgroupEl)\n } else {\n this.list.appendChild(this.option(d as Option))\n }\n }\n }\n\n // Create single option\n public option(data: Option): HTMLDivElement {\n // Add hidden placeholder\n if (data.placeholder) {\n const placeholder = document.createElement('div')\n placeholder.classList.add(this.main.config.option)\n placeholder.classList.add(this.main.config.hide)\n return placeholder\n }\n\n const optionEl = document.createElement('div')\n\n // Add class to div element\n optionEl.classList.add(this.main.config.option)\n if (data.class) {\n data.class.split(' ').forEach((dataClass: string) => {\n optionEl.classList.add(dataClass)\n })\n }\n\n // Add style to div element\n if (data.style) {\n optionEl.style.cssText = data.style\n }\n\n const selected = this.main.data.getSelected() as Option\n\n optionEl.dataset.id = data.id\n if (this.main.config.searchHighlight && this.main.slim && data.innerHTML && this.main.slim.search.input.value.trim() !== '') {\n optionEl.innerHTML = highlight(data.innerHTML, this.main.slim.search.input.value, this.main.config.searchHighlighter)\n } else if (data.innerHTML) {\n optionEl.innerHTML = data.innerHTML\n }\n if (this.main.config.showOptionTooltips && optionEl.textContent) {\n optionEl.setAttribute('title', optionEl.textContent)\n }\n const master = this\n optionEl.addEventListener('click', function(e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n const element = this\n const elementID = element.dataset.id\n\n if (data.selected === true && master.main.config.allowDeselectOption) {\n let shouldUpdate = false\n\n // If no beforeOnChange is set automatically update at end\n if (!master.main.beforeOnChange || !master.main.config.isMultiple) {shouldUpdate = true}\n\n if (master.main.beforeOnChange && master.main.config.isMultiple) {\n const selectedValues = master.main.data.getSelected() as Option\n const currentValues = JSON.parse(JSON.stringify(selectedValues))\n\n // Remove from current selection\n\n for (let i = 0; i < currentValues.length; i++) {\n if (currentValues[i].id === elementID) {\n currentValues.splice(i, 1)\n }\n }\n\n const beforeOnchange = master.main.beforeOnChange(currentValues)\n if (beforeOnchange !== false) { shouldUpdate = true }\n }\n\n if (shouldUpdate) {\n if (master.main.config.isMultiple) {\n master.main.data.removeFromSelected((elementID as any), 'id')\n master.main.render()\n master.main.select.setValue()\n master.main.data.onDataChange() // Trigger on change callback\n } else {\n master.main.set('')\n }\n\n }\n } else {\n // Check if option is disabled or is already selected, do nothing\n if (data.disabled || data.selected) {\n return\n }\n\n // Check if hit limit\n if (master.main.config.limit && Array.isArray(selected) && master.main.config.limit <= selected.length) {\n return\n }\n\n if (master.main.beforeOnChange) {\n let value\n const objectInfo = JSON.parse(JSON.stringify(master.main.data.getObjectFromData(elementID as string)))\n objectInfo.selected = true\n\n if (master.main.config.isMultiple) {\n value = JSON.parse(JSON.stringify(selected))\n value.push(objectInfo)\n } else {\n value = JSON.parse(JSON.stringify(objectInfo))\n }\n\n const beforeOnchange = master.main.beforeOnChange(value)\n if (beforeOnchange !== false) {\n master.main.set((elementID as string), 'id', master.main.config.closeOnSelect)\n }\n } else {\n master.main.set((elementID as string), 'id', master.main.config.closeOnSelect)\n }\n }\n })\n\n const isSelected = selected && isValueInArrayOfObjects(selected, 'id', (data.id as string))\n if (data.disabled || isSelected) {\n optionEl.onclick = null\n if (!master.main.config.allowDeselectOption) {\n optionEl.classList.add(this.main.config.disabled)\n }\n if (master.main.config.hideSelectedOption) {\n optionEl.classList.add(this.main.config.hide)\n }\n }\n\n if (isSelected) {\n optionEl.classList.add(this.main.config.optionSelected)\n } else {\n optionEl.classList.remove(this.main.config.optionSelected)\n }\n\n return optionEl\n }\n}\n","import { Config } from './config'\nimport { Select } from './select'\nimport { Slim } from './slim'\nimport { Data, dataArray, Option, validateData } from './data'\nimport { hasClassInTree, putContent, debounce, ensureElementInView } from './helper'\n\ninterface Constructor {\n select: string | Element\n data?: dataArray\n showSearch?: boolean\n searchPlaceholder?: string\n searchText?: string\n searchingText?: string\n searchFocus?: boolean\n searchHighlight?: boolean\n searchFilter?: (opt: Option, search: string) => boolean\n closeOnSelect?: boolean\n showContent?: string\n placeholder?: string\n allowDeselect?: boolean\n allowDeselectOption?: boolean\n hideSelectedOption?: boolean\n deselectLabel?: string\n isEnabled?: boolean\n valuesUseText?: boolean // Use text value when showing selected value\n showOptionTooltips?: boolean\n selectByGroup?: boolean\n limit?: number\n timeoutDelay?: number\n addToBody?: boolean\n\n // Events\n ajax?: (value: string, func: (info: any) => void) => void\n addable?: (value: string) => Option | string\n beforeOnChange?: (info: Option | Option[]) => void | boolean\n onChange?: (info: Option | Option[]) => void\n beforeOpen?: () => void\n afterOpen?: () => void\n beforeClose?: () => void\n afterClose?: () => void\n}\n\nexport default class SlimSelect {\n public config: Config\n public select: Select\n public data: Data\n public slim: Slim\n public ajax: ((value: string, func: (info: any) => void) => void) | null = null\n public addable: ((value: string) => Option | string) | null = null\n public beforeOnChange: ((info: Option) => void | boolean) | null = null\n public onChange: ((info: Option) => void) | null = null\n public beforeOpen: (() => void) | null = null\n public afterOpen: (() => void) | null = null\n public beforeClose: (() => void) | null = null\n public afterClose: (() => void) | null = null\n\n private windowScroll: (e: Event) => void = debounce((e: Event) => {\n if (this.data.contentOpen) {\n if (putContent(this.slim.content, this.data.contentPosition, this.data.contentOpen) === 'above') {\n this.moveContentAbove()\n } else {\n this.moveContentBelow()\n }\n }\n })\n\n constructor(info: Constructor) {\n const selectElement = this.validate(info)\n\n // If select already has a slim select id on it lets destroy it first\n if (selectElement.dataset.ssid) { this.destroy(selectElement.dataset.ssid) }\n\n // Set ajax function if passed in\n if (info.ajax) { this.ajax = info.ajax }\n\n // Add addable if option is passed in\n if (info.addable) { this.addable = info.addable }\n\n this.config = new Config({\n select: selectElement,\n isAjax: (info.ajax ? true : false),\n showSearch: info.showSearch,\n searchPlaceholder: info.searchPlaceholder,\n searchText: info.searchText,\n searchingText: info.searchingText,\n searchFocus: info.searchFocus,\n searchHighlight: info.searchHighlight,\n searchFilter: info.searchFilter,\n closeOnSelect: info.closeOnSelect,\n showContent: info.showContent,\n placeholderText: info.placeholder,\n allowDeselect: info.allowDeselect,\n allowDeselectOption: info.allowDeselectOption,\n hideSelectedOption: info.hideSelectedOption,\n deselectLabel: info.deselectLabel,\n isEnabled: info.isEnabled,\n valuesUseText: info.valuesUseText,\n showOptionTooltips: info.showOptionTooltips,\n selectByGroup: info.selectByGroup,\n limit: info.limit,\n timeoutDelay: info.timeoutDelay,\n addToBody: info.addToBody\n })\n\n this.select = new Select({\n select: selectElement,\n main: this\n })\n\n this.data = new Data({ main: this })\n this.slim = new Slim({ main: this })\n\n // Add after original select element\n if (this.select.element.parentNode) {\n this.select.element.parentNode.insertBefore(this.slim.container, this.select.element.nextSibling)\n }\n\n // If data is passed in lets set it\n // and thus will start the render\n if (info.data) {\n this.setData(info.data)\n } else {\n // Do an initial render on startup\n this.render()\n }\n\n // Add onclick listener to document to closeContent if clicked outside\n document.addEventListener('click', this.documentClick)\n\n // If the user wants to show the content forcibly on a specific side,\n // there is no need to listen for scroll events\n if (this.config.showContent === 'auto') {\n window.addEventListener('scroll', this.windowScroll, false)\n }\n\n // Add event callbacks after everthing has been created\n if (info.beforeOnChange) { this.beforeOnChange = info.beforeOnChange }\n if (info.onChange) { this.onChange = info.onChange }\n if (info.beforeOpen) { this.beforeOpen = info.beforeOpen }\n if (info.afterOpen) { this.afterOpen = info.afterOpen }\n if (info.beforeClose) { this.beforeClose = info.beforeClose }\n if (info.afterClose) { this.afterClose = info.afterClose }\n\n // If disabled lets call it\n if (!this.config.isEnabled) { this.disable() }\n }\n\n public validate(info: Constructor) {\n const select = (typeof info.select === 'string' ? document.querySelector(info.select) : info.select) as HTMLSelectElement\n if (!select) { throw new Error('Could not find select element') }\n if (select.tagName !== 'SELECT') { throw new Error('Element isnt of type select') }\n return select\n }\n\n public selected(): string | string[] {\n if (this.config.isMultiple) {\n const selected = this.data.getSelected() as Option[]\n const outputSelected: string[] = []\n for (const s of selected) {\n outputSelected.push(s.value as string)\n }\n return outputSelected\n } else {\n const selected = this.data.getSelected() as Option\n return (selected ? selected.value as string : '')\n }\n }\n\n // Sets value of the select, adds it to data and original select\n public set(value: string | string[], type: string = 'value', close: boolean = true, render: boolean = true) {\n if (this.config.isMultiple && !Array.isArray(value)) {\n this.data.addToSelected(value, type)\n } else {\n this.data.setSelected(value, type)\n }\n this.select.setValue()\n this.data.onDataChange() // Trigger on change callback\n this.render()\n\n if (close) { this.close() }\n }\n\n // setSelected is just mapped to the set method\n public setSelected(value: string | string[], type: string = 'value', close: boolean = true, render: boolean = true) {\n this.set(value, type, close, render)\n }\n\n public setData(data: dataArray) {\n // Validate data if passed in\n const isValid = validateData(data)\n if (!isValid) { console.error('Validation problem on: #' + this.select.element.id); return } // If data passed in is not valid DO NOT parse, set and render\n\n const newData = JSON.parse(JSON.stringify(data))\n const selected = this.data.getSelected()\n\n // Check newData to make sure value is set\n // If not set from text\n for (let i = 0; i < newData.length; i++) {\n if (!newData[i].value && !newData[i].placeholder) {\n newData[i].value = newData[i].text\n }\n }\n\n // If its an ajax type keep selected values\n if (this.config.isAjax && selected) {\n if (this.config.isMultiple) {\n const reverseSelected = (selected as Option[]).reverse()\n for (const r of reverseSelected) {\n newData.unshift(r)\n }\n } else {\n newData.unshift(selected)\n\n // Look for duplicate selected if so remove it\n for (let i = 0; i < newData.length; i++) {\n if (!newData[i].placeholder && newData[i].value === (selected as Option).value && newData[i].text === (selected as Option).text) {\n delete newData[i]\n }\n }\n\n // Add placeholder if it doesnt already have one\n let hasPlaceholder = false\n for (let i = 0; i < newData.length; i++) {\n if (newData[i].placeholder) {\n hasPlaceholder = true\n }\n }\n if (!hasPlaceholder) {\n newData.unshift({ text: '', placeholder: true })\n }\n }\n }\n\n this.select.create(newData)\n this.data.parseSelectData()\n this.data.setSelectedFromSelect()\n }\n\n // addData will append to the current data set\n public addData(data: Option) {\n // Validate data if passed in\n const isValid = validateData([data])\n if (!isValid) { console.error('Validation problem on: #' + this.select.element.id); return } // If data passed in is not valid DO NOT parse, set and render\n\n this.data.add(this.data.newOption(data))\n this.select.create(this.data.data)\n this.data.parseSelectData()\n this.data.setSelectedFromSelect()\n this.render()\n }\n\n // Open content section\n public open(): void {\n // Dont open if disabled\n if (!this.config.isEnabled) { return }\n\n // Dont do anything if the content is already open\n if (this.data.contentOpen) { return }\n\n // Run beforeOpen callback\n if (this.beforeOpen) { this.beforeOpen() }\n\n if (this.config.isMultiple && this.slim.multiSelected) {\n this.slim.multiSelected.plus.classList.add('ss-cross')\n } else if (this.slim.singleSelected) {\n this.slim.singleSelected.arrowIcon.arrow.classList.remove('arrow-down')\n this.slim.singleSelected.arrowIcon.arrow.classList.add('arrow-up')\n }\n (this.slim as any)[(this.config.isMultiple ? 'multiSelected' : 'singleSelected')].container.classList.add((this.data.contentPosition === 'above' ? this.config.openAbove : this.config.openBelow))\n\n if (this.config.addToBody) {\n // move the content in to the right location\n const containerRect = this.slim.container.getBoundingClientRect()\n this.slim.content.style.top = (containerRect.top + containerRect.height + window.scrollY) + 'px'\n this.slim.content.style.left = (containerRect.left + window.scrollX) + 'px'\n this.slim.content.style.width = containerRect.width + 'px'\n }\n this.slim.content.classList.add(this.config.open)\n\n // Check showContent to see if they want to specifically show in a certain direction\n if (this.config.showContent.toLowerCase() === 'up') {\n this.moveContentAbove()\n } else if (this.config.showContent.toLowerCase() === 'down') {\n this.moveContentBelow()\n } else {\n // Auto identify where to put it\n if (putContent(this.slim.content, this.data.contentPosition, this.data.contentOpen) === 'above') {\n this.moveContentAbove()\n } else {\n this.moveContentBelow()\n }\n }\n\n // Move to selected option for single option\n if (!this.config.isMultiple) {\n const selected = this.data.getSelected() as Option\n if (selected) {\n const selectedId = selected.id\n const selectedOption = this.slim.list.querySelector('[data-id=\"' + selectedId + '\"]') as HTMLElement\n if (selectedOption) {\n ensureElementInView(this.slim.list, selectedOption)\n }\n }\n }\n\n // setTimeout is for animation completion\n setTimeout(() => {\n this.data.contentOpen = true\n\n // Focus on input field\n if (this.config.searchFocus) {\n this.slim.search.input.focus()\n }\n\n // Run afterOpen callback\n if (this.afterOpen) {\n this.afterOpen()\n }\n }, this.config.timeoutDelay)\n }\n\n // Close content section\n public close(): void {\n // Dont do anything if the content is already closed\n if (!this.data.contentOpen) { return }\n\n // Run beforeClose calback\n if (this.beforeClose) { this.beforeClose() }\n\n // this.slim.search.input.blur() // Removed due to safari quirk\n if (this.config.isMultiple && this.slim.multiSelected) {\n this.slim.multiSelected.container.classList.remove(this.config.openAbove)\n this.slim.multiSelected.container.classList.remove(this.config.openBelow)\n this.slim.multiSelected.plus.classList.remove('ss-cross')\n } else if (this.slim.singleSelected) {\n this.slim.singleSelected.container.classList.remove(this.config.openAbove)\n this.slim.singleSelected.container.classList.remove(this.config.openBelow)\n this.slim.singleSelected.arrowIcon.arrow.classList.add('arrow-down')\n this.slim.singleSelected.arrowIcon.arrow.classList.remove('arrow-up')\n }\n this.slim.content.classList.remove(this.config.open)\n this.data.contentOpen = false\n\n this.search('') // Clear search\n\n // Reset the content below\n setTimeout(() => {\n this.slim.content.removeAttribute('style')\n this.data.contentPosition = 'below'\n\n if (this.config.isMultiple && this.slim.multiSelected) {\n this.slim.multiSelected.container.classList.remove(this.config.openAbove)\n this.slim.multiSelected.container.classList.remove(this.config.openBelow)\n } else if (this.slim.singleSelected) {\n this.slim.singleSelected.container.classList.remove(this.config.openAbove)\n this.slim.singleSelected.container.classList.remove(this.config.openBelow)\n }\n\n // After content is closed lets blur on the input field\n this.slim.search.input.blur()\n\n // Run afterClose callback\n if (this.afterClose) { this.afterClose() }\n }, this.config.timeoutDelay)\n }\n\n public moveContentAbove(): void {\n let selectHeight: number = 0\n if (this.config.isMultiple && this.slim.multiSelected) {\n selectHeight = this.slim.multiSelected.container.offsetHeight\n } else if (this.slim.singleSelected) {\n selectHeight = this.slim.singleSelected.container.offsetHeight\n }\n const contentHeight = this.slim.content.offsetHeight\n const height = selectHeight + contentHeight - 1\n this.slim.content.style.margin = '-' + height + 'px 0 0 0'\n this.slim.content.style.height = (height - selectHeight + 1) + 'px'\n this.slim.content.style.transformOrigin = 'center bottom'\n this.data.contentPosition = 'above'\n\n if (this.config.isMultiple && this.slim.multiSelected) {\n this.slim.multiSelected.container.classList.remove(this.config.openBelow)\n this.slim.multiSelected.container.classList.add(this.config.openAbove)\n } else if (this.slim.singleSelected) {\n this.slim.singleSelected.container.classList.remove(this.config.openBelow)\n this.slim.singleSelected.container.classList.add(this.config.openAbove)\n }\n }\n\n public moveContentBelow(): void {\n this.data.contentPosition = 'below'\n\n if (this.config.isMultiple && this.slim.multiSelected) {\n this.slim.multiSelected.container.classList.remove(this.config.openAbove)\n this.slim.multiSelected.container.classList.add(this.config.openBelow)\n } else if (this.slim.singleSelected) {\n this.slim.singleSelected.container.classList.remove(this.config.openAbove)\n this.slim.singleSelected.container.classList.add(this.config.openBelow)\n }\n }\n\n // Set to enabled, remove disabled classes and removed disabled from original select\n public enable(): void {\n this.config.isEnabled = true\n if (this.config.isMultiple && this.slim.multiSelected) {\n this.slim.multiSelected.container.classList.remove(this.config.disabled)\n } else if (this.slim.singleSelected) {\n this.slim.singleSelected.container.classList.remove(this.config.disabled)\n }\n\n // Disable original select but dont trigger observer\n this.select.triggerMutationObserver = false\n this.select.element.disabled = false\n this.slim.search.input.disabled = false\n this.select.triggerMutationObserver = true\n }\n\n // Set to disabled, add disabled classes and add disabled to original select\n public disable(): void {\n this.config.isEnabled = false\n if (this.config.isMultiple && this.slim.multiSelected) {\n this.slim.multiSelected.container.classList.add(this.config.disabled)\n } else if (this.slim.singleSelected) {\n this.slim.singleSelected.container.classList.add(this.config.disabled)\n }\n\n // Enable original select but dont trigger observer\n this.select.triggerMutationObserver = false\n this.select.element.disabled = true\n this.slim.search.input.disabled = true\n this.select.triggerMutationObserver = true\n }\n\n // Take in string value and search current options\n public search(value: string): void {\n // Only filter data and rerender if value has changed\n if (this.data.searchValue === value) { return }\n\n this.slim.search.input.value = value\n if (this.config.isAjax) {\n const master = this\n this.config.isSearching = true\n this.render()\n\n // If ajax call it\n if (this.ajax) {\n this.ajax(value, (info: any) => {\n // Only process if return callback is not false\n master.config.isSearching = false\n if (Array.isArray(info)) {\n info.unshift({ text: '', placeholder: true })\n master.setData(info)\n master.data.search(value)\n master.render()\n } else if (typeof info === 'string') {\n master.slim.options(info)\n } else {\n master.render()\n }\n })\n }\n } else {\n this.data.search(value)\n this.render()\n }\n }\n\n public setSearchText(text: string): void {\n this.config.searchText = text\n }\n\n public render(): void {\n if (this.config.isMultiple) {\n this.slim.values()\n } else {\n this.slim.placeholder()\n this.slim.deselect()\n }\n this.slim.options()\n }\n\n // Display original select again and remove slim\n public destroy(id: string | null = null): void {\n const slim = (id ? document.querySelector('.' + id + '.ss-main') : this.slim.container)\n const select = (id ? document.querySelector(`[data-ssid=${id}]`) as HTMLSelectElement : this.select.element)\n // If there is no slim dont do anything\n if (!slim || !select) { return }\n\n\n document.removeEventListener('click', this.documentClick)\n\n if (this.config.showContent === 'auto') {\n window.removeEventListener('scroll', this.windowScroll, false)\n }\n\n // Show original select\n select.style.display = ''\n delete select.dataset.ssid\n\n // Remove slim from original select dropdown\n const el = select as any\n el.slim = null\n\n // Remove slim select\n if (slim.parentElement) {\n slim.parentElement.removeChild(slim)\n }\n\n // remove the content if it was added to the document body\n if (this.config.addToBody) {\n const slimContent = (id ? document.querySelector('.' + id + '.ss-content') : this.slim.content)\n if (!slimContent) { return }\n document.body.removeChild(slimContent)\n }\n }\n\n private documentClick: (e: Event) => void = (e: Event) => {\n if (e.target && !hasClassInTree(e.target as HTMLElement, this.config.id)) {\n this.close()\n }\n }\n\n}\n","import Vue from 'vue'\nimport Router from 'vue-router'\n\nVue.use(Router)\n\nexport default new Router({\n mode: 'history',\n base: '/',\n linkActiveClass: 'active',\n routes: [\n { path: '/', component: () => import(/* webpackChunkName: \"home\" */ './pages/home.vue') },\n { path: '/install', component: () => import(/* webpackChunkName: \"install\" */ './pages/install.vue') },\n { path: '/selects', component: () => import(/* webpackChunkName: \"selects\" */ './pages/selects.vue') },\n { path: '/options', component: () => import(/* webpackChunkName: \"options\" */ './pages/options.vue') },\n { path: '/methods', component: () => import(/* webpackChunkName: \"methods\" */ './pages/methods.vue') }\n ]\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_vm._m(0),_c('div',{staticClass:\"main\"},[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\",\"appear\":\"\"}},[_c('router-view')],1)],1),_c('div',{staticClass:\"footer\"},[_vm._v(\" © \"+_vm._s(_vm.year)+\" \"),_c('a',{staticStyle:{\"color\":\"#ffffff\"},attrs:{\"href\":\"http://webiswhatido.com\",\"target\":\"_blank\"}},[_vm._v(\"Brian Voelker\")]),_vm._v(\". Slim Select is under the MIT license. \")])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"header\"},[_c('div',{staticClass:\"text\"},[_c('div',{staticClass:\"logo\"},[_vm._v(\" Slim Select \")]),_c('div',{staticClass:\"tagline\"},[_vm._v(\" Slim advanced select dropdown \")])]),_c('div',{staticClass:\"select-nav\"},[_c('a',{attrs:{\"href\":\"https://github.com/brianvoe/slim-select\",\"target\":\"_blank\"}},[_c('img',{attrs:{\"src\":\"images/github.png\"}})]),_c('a',{attrs:{\"href\":\"https://www.npmjs.com/package/slim-select\",\"target\":\"_blank\"}},[_c('img',{attrs:{\"src\":\"images/npm.png\"}})]),_c('select',{attrs:{\"id\":\"select-nav\"}})])])}]\n\nexport { render, staticRenderFns }","<script>\n import SlimSelect from '@/slim-select'\n\n export default {\n data() {\n const path = this.$route.path\n return {\n year: new Date().getFullYear(),\n navData: [\n {text: 'Home', value: '/', selected: (path === '/')},\n {text: 'Installation', value: 'install', selected: (path === '/install')},\n {text: 'Select Types', value: 'selects', selected: (path === '/selects')},\n {text: 'Options', value: 'options', selected: (path === '/options')},\n {text: 'Methods', value: 'methods', selected: (path === '/methods')}\n ]\n }\n },\n mounted() {\n // Lets redirect to path\n if (this.$route.query.p) {\n this.$router.push({ path: this.$route.query.p })\n }\n\n const slim = new SlimSelect({\n select: '#select-nav',\n showSearch: false,\n onChange: (info) => {\n if (!this.$route.path.includes(info.value)) {\n this.$router.push({ path: info.value })\n }\n }\n })\n slim.setData(this.navData)\n\n this.$router.onReady(() => {\n const urlPathValue = this.$route.path.replace('/', '')\n if (urlPathValue !== '') {\n slim.setSelected(urlPathValue)\n }\n })\n }\n }\n</script>\n\n<style lang=\"scss\">\n #app {\n .select-nav {\n .ss-single-selected {\n position: relative;\n z-index: 2000;\n\n .placeholder {\n font-weight: bold;\n }\n }\n\n .ss-content {\n box-shadow: 0px 5px 10px 5px rgba(0, 0, 0, 0.2);\n\n .ss-option {\n font-weight: bold;\n }\n }\n }\n }\n</style>\n\n<template>\n <div id=\"app\">\n <div class=\"header\">\n <div class=\"text\">\n <div class=\"logo\">\n Slim Select\n </div>\n <div class=\"tagline\">\n Slim advanced select dropdown\n </div>\n </div>\n <div class=\"select-nav\">\n <a href=\"https://github.com/brianvoe/slim-select\" target=\"_blank\">\n <img src=\"images/github.png\" />\n </a>\n <a href=\"https://www.npmjs.com/package/slim-select\" target=\"_blank\">\n <img src=\"images/npm.png\" />\n </a>\n <select id=\"select-nav\"></select>\n </div>\n </div>\n <div class=\"main\">\n <transition name=\"fade\" mode=\"out-in\" appear>\n <router-view></router-view>\n </transition>\n </div>\n <div class=\"footer\">\n © {{year}} <a href=\"http://webiswhatido.com\" style=\"color: #ffffff;\" target=\"_blank\">Brian Voelker</a>. Slim Select is under the MIT license.\n </div>\n </div>\n</template>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./app.vue?vue&type=template&id=24795f46&\"\nimport script from \"./app.vue?vue&type=script&lang=js&\"\nexport * from \"./app.vue?vue&type=script&lang=js&\"\nimport style0 from \"./app.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport router from '@/docs/router'\n\nimport app from '@/docs/app.vue'\nimport Prism from 'prismjs'\nimport Normalizer from 'prismjs/plugins/normalize-whitespace/prism-normalize-whitespace'\nimport 'prismjs/plugins/toolbar/prism-toolbar'\nimport 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard'\n\nimport '@/docs/assets/scss/index.scss'\nimport '@/slim-select/slimselect.scss'\n\nnew Normalizer({\n 'remove-trailing': true,\n 'remove-indent': true,\n 'left-trim': true,\n 'right-trim': true\n})\n\nVue.mixin({\n updated() {\n Prism.highlightAll()\n }\n})\n\nnew Vue({\n router,\n render: (h) => h(app)\n}).$mount('#app')\n"],"sourceRoot":""}