slim-select 1.27.0 → 1.27.1

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.
Files changed (32) hide show
  1. package/dist/slimselect.js +32 -18
  2. package/dist/slimselect.min.js +1 -1
  3. package/dist/slimselect.min.mjs +1 -1
  4. package/docs/css/chunk-vendors.fa8199af.css +1 -0
  5. package/docs/index.html +2 -2
  6. package/docs/js/app.238ee382.js +2 -0
  7. package/docs/js/app.238ee382.js.map +1 -0
  8. package/docs/js/chunk-vendors.5125e3d8.js +21 -0
  9. package/docs/js/chunk-vendors.5125e3d8.js.map +1 -0
  10. package/docs/js/{home.8bcb44fd.js → home.e7b28581.js} +1 -1
  11. package/docs/js/{home.8bcb44fd.js.map → home.e7b28581.js.map} +1 -1
  12. package/docs/js/install.d4300783.js +2 -0
  13. package/docs/js/install.d4300783.js.map +1 -0
  14. package/docs/js/methods.fa1608f1.js +11 -0
  15. package/docs/js/methods.fa1608f1.js.map +1 -0
  16. package/docs/js/{options.39fe1005.js → options.2c4ceb87.js} +2 -2
  17. package/docs/js/{options.39fe1005.js.map → options.2c4ceb87.js.map} +1 -1
  18. package/docs/js/{selects.f4d0b859.js → selects.1eeba693.js} +1 -1
  19. package/docs/js/{selects.f4d0b859.js.map → selects.1eeba693.js.map} +1 -1
  20. package/package.json +13 -17
  21. package/src/slim-select/index.ts +9 -1
  22. package/src/slim-select/select.ts +1 -0
  23. package/src/slim-select/slim.ts +5 -0
  24. package/docs/css/chunk-vendors.4db6930d.css +0 -1
  25. package/docs/js/app.db13c724.js +0 -2
  26. package/docs/js/app.db13c724.js.map +0 -1
  27. package/docs/js/chunk-vendors.cc40aa28.js +0 -28
  28. package/docs/js/chunk-vendors.cc40aa28.js.map +0 -1
  29. package/docs/js/install.02f31028.js +0 -2
  30. package/docs/js/install.02f31028.js.map +0 -1
  31. package/docs/js/methods.1b31e988.js +0 -11
  32. package/docs/js/methods.1b31e988.js.map +0 -1
package/docs/index.html CHANGED
@@ -1,5 +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.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 || [];
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.e7b28581.js" rel="prefetch"><link href="/js/install.d4300783.js" rel="prefetch"><link href="/js/methods.fa1608f1.js" rel="prefetch"><link href="/js/options.2c4ceb87.js" rel="prefetch"><link href="/js/selects.1eeba693.js" rel="prefetch"><link href="/css/app.d5840d21.css" rel="preload" as="style"><link href="/css/chunk-vendors.fa8199af.css" rel="preload" as="style"><link href="/js/app.238ee382.js" rel="preload" as="script"><link href="/js/chunk-vendors.5125e3d8.js" rel="preload" as="script"><link href="/css/chunk-vendors.fa8199af.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
2
  function gtag(){dataLayer.push(arguments);}
3
3
  gtag('js', new Date());
4
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>
5
+ gtag('config', 'UA-96955238-1');</script><script src="/js/chunk-vendors.5125e3d8.js"></script><script src="/js/app.238ee382.js"></script></body></html>
@@ -0,0 +1,2 @@
1
+ (function(e){function t(t){for(var a,n,o=t[0],c=t[1],r=t[2],d=0,h=[];d<o.length;d++)n=o[d],Object.prototype.hasOwnProperty.call(s,n)&&s[n]&&h.push(s[n][0]),s[n]=0;for(a in c)Object.prototype.hasOwnProperty.call(c,a)&&(e[a]=c[a]);u&&u(t);while(h.length)h.shift()();return l.push.apply(l,r||[]),i()}function i(){for(var e,t=0;t<l.length;t++){for(var i=l[t],a=!0,n=1;n<i.length;n++){var o=i[n];0!==s[o]&&(a=!1)}a&&(l.splice(t--,1),e=c(c.s=i[0]))}return e}var a={},n={app:0},s={app:0},l=[];function o(e){return c.p+"js/"+({home:"home",install:"install",methods:"methods",options:"options",selects:"selects"}[e]||e)+"."+{home:"e7b28581",install:"d4300783",methods:"fa1608f1",options:"2c4ceb87",selects:"1eeba693"}[e]+".js"}function c(t){if(a[t])return a[t].exports;var i=a[t]={i:t,l:!1,exports:{}};return e[t].call(i.exports,i,i.exports,c),i.l=!0,i.exports}c.e=function(e){var t=[],i={home:1,install:1,methods:1,options:1,selects:1};n[e]?t.push(n[e]):0!==n[e]&&i[e]&&t.push(n[e]=new Promise((function(t,i){for(var a="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=c.p+a,l=document.getElementsByTagName("link"),o=0;o<l.length;o++){var r=l[o],d=r.getAttribute("data-href")||r.getAttribute("href");if("stylesheet"===r.rel&&(d===a||d===s))return t()}var h=document.getElementsByTagName("style");for(o=0;o<h.length;o++){r=h[o],d=r.getAttribute("data-href");if(d===a||d===s)return t()}var u=document.createElement("link");u.rel="stylesheet",u.type="text/css",u.onload=t,u.onerror=function(t){var a=t&&t.target&&t.target.src||s,l=new Error("Loading CSS chunk "+e+" failed.\n("+a+")");l.code="CSS_CHUNK_LOAD_FAILED",l.request=a,delete n[e],u.parentNode.removeChild(u),i(l)},u.href=s;var f=document.getElementsByTagName("head")[0];f.appendChild(u)})).then((function(){n[e]=0})));var a=s[e];if(0!==a)if(a)t.push(a[2]);else{var l=new Promise((function(t,i){a=s[e]=[t,i]}));t.push(a[2]=l);var r,d=document.createElement("script");d.charset="utf-8",d.timeout=120,c.nc&&d.setAttribute("nonce",c.nc),d.src=o(e);var h=new Error;r=function(t){d.onerror=d.onload=null,clearTimeout(u);var i=s[e];if(0!==i){if(i){var a=t&&("load"===t.type?"missing":t.type),n=t&&t.target&&t.target.src;h.message="Loading chunk "+e+" failed.\n("+a+": "+n+")",h.name="ChunkLoadError",h.type=a,h.request=n,i[1](h)}s[e]=void 0}};var u=setTimeout((function(){r({type:"timeout",target:d})}),12e4);d.onerror=d.onload=r,document.head.appendChild(d)}return Promise.all(t)},c.m=e,c.c=a,c.d=function(e,t,i){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},c.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(c.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)c.d(i,a,function(t){return e[t]}.bind(null,a));return i},c.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="/",c.oe=function(e){throw console.error(e),e};var r=window["webpackJsonp"]=window["webpackJsonp"]||[],d=r.push.bind(r);r.push=t,r=r.slice();for(var h=0;h<r.length;h++)t(r[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}));var a=i("b85c"),n=i("d4ec"),s=i("bee2"),l=i("ade3"),o=(i("e9c4"),i("a434"),i("ac1f"),i("841c"),i("d3b7"),i("ddb0"),i("1276"),function(){function e(t){Object(n["a"])(this,e),Object(l["a"])(this,"id",""),Object(l["a"])(this,"style",void 0),Object(l["a"])(this,"class",void 0),Object(l["a"])(this,"isMultiple",!1),Object(l["a"])(this,"isAjax",!1),Object(l["a"])(this,"isSearching",!1),Object(l["a"])(this,"showSearch",!0),Object(l["a"])(this,"searchFocus",!0),Object(l["a"])(this,"searchHighlight",!1),Object(l["a"])(this,"closeOnSelect",!0),Object(l["a"])(this,"showContent","auto"),Object(l["a"])(this,"searchPlaceholder","Search"),Object(l["a"])(this,"searchText","No Results"),Object(l["a"])(this,"searchingText","Searching..."),Object(l["a"])(this,"placeholderText","Select Value"),Object(l["a"])(this,"allowDeselect",!1),Object(l["a"])(this,"allowDeselectOption",!1),Object(l["a"])(this,"hideSelectedOption",!1),Object(l["a"])(this,"deselectLabel","x"),Object(l["a"])(this,"isEnabled",!0),Object(l["a"])(this,"valuesUseText",!1),Object(l["a"])(this,"showOptionTooltips",!1),Object(l["a"])(this,"selectByGroup",!1),Object(l["a"])(this,"limit",0),Object(l["a"])(this,"timeoutDelay",200),Object(l["a"])(this,"addToBody",!1),Object(l["a"])(this,"main","ss-main"),Object(l["a"])(this,"singleSelected","ss-single-selected"),Object(l["a"])(this,"arrow","ss-arrow"),Object(l["a"])(this,"multiSelected","ss-multi-selected"),Object(l["a"])(this,"add","ss-add"),Object(l["a"])(this,"plus","ss-plus"),Object(l["a"])(this,"values","ss-values"),Object(l["a"])(this,"value","ss-value"),Object(l["a"])(this,"valueText","ss-value-text"),Object(l["a"])(this,"valueDelete","ss-value-delete"),Object(l["a"])(this,"content","ss-content"),Object(l["a"])(this,"open","ss-open"),Object(l["a"])(this,"openAbove","ss-open-above"),Object(l["a"])(this,"openBelow","ss-open-below"),Object(l["a"])(this,"search","ss-search"),Object(l["a"])(this,"searchHighlighter","ss-search-highlight"),Object(l["a"])(this,"addable","ss-addable"),Object(l["a"])(this,"list","ss-list"),Object(l["a"])(this,"optgroup","ss-optgroup"),Object(l["a"])(this,"optgroupLabel","ss-optgroup-label"),Object(l["a"])(this,"optgroupLabelSelectable","ss-optgroup-label-selectable"),Object(l["a"])(this,"option","ss-option"),Object(l["a"])(this,"optionSelected","ss-option-selected"),Object(l["a"])(this,"highlighted","ss-highlighted"),Object(l["a"])(this,"disabled","ss-disabled"),Object(l["a"])(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}()),c=i("53ca");i("159b"),i("b64b"),i("4d63"),i("c607"),i("2c3e"),i("25f0"),i("498a"),i("466d"),i("5319"),i("99af");function r(e,t){function i(e,t){return t&&e&&e.classList&&e.classList.contains(t)?e:null}function a(e,t){return e&&e!==document?i(e,t)?e:a(e.parentNode,t):null}return i(e,t)||a(e,t)}function d(e,t){var i=e.scrollTop+e.offsetTop,a=i+e.clientHeight,n=t.offsetTop,s=n+t.clientHeight;n<i?e.scrollTop-=i-n:s>a&&(e.scrollTop+=s-a)}function h(e,t,i){var a=e.offsetHeight,n=e.getBoundingClientRect(),s=i?n.top:n.top-a,l=i?n.bottom:n.bottom+a;return s<=0?"below":l>=window.innerHeight?"above":i?t:"below"}function u(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,a=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return function(){for(var n=arguments.length,s=new Array(n),l=0;l<n;l++)s[l]=arguments[l];var o=self,c=function(){t=null,a||e.apply(o,s)},r=a&&!t;clearTimeout(t),t=setTimeout(c,i),r&&e.apply(o,s)}}function f(e,t,i){if(!Array.isArray(e))return e[t]===i;var n,s=Object(a["a"])(e);try{for(s.s();!(n=s.n()).done;){var l=n.value;if(l&&l[t]&&l[t]===i)return!0}}catch(o){s.e(o)}finally{s.f()}return!1}function m(e,t,i){var a=e,n=new RegExp("("+t.trim()+")(?![^<]*>[^<>]*</)","i");if(!e.match(n))return e;var s=e.match(n).index,l=s+e.match(n)[0].toString().length,o=e.substring(s,l);return a=a.replace(n,'<mark class="'.concat(i,'">').concat(o,"</mark>")),a}function v(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 p=function(){function e(t){Object(n["a"])(this,e),Object(l["a"])(this,"element",void 0),Object(l["a"])(this,"main",void 0),Object(l["a"])(this,"mutationObserver",void 0),Object(l["a"])(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,n=Object(a["a"])(i);try{for(n.s();!(e=n.n()).done;){var s=e.value;s.selected=!1;var l,o=Object(a["a"])(t);try{for(o.s();!(l=o.n()).done;){var c=l.value;c.value===s.value&&(s.selected=!0)}}catch(d){o.e(d)}finally{o.f()}}}catch(d){n.e(d)}finally{n.f()}}else{var r=this.main.data.getSelected();this.element.value=r?r.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,this.element.setAttribute("aria-hidden","true")}},{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(a["a"])(e);try{for(i.s();!(t=i.n()).done;){var n=t.value;if(n.hasOwnProperty("options")){var s=n,l=document.createElement("optgroup");if(l.label=s.label,s.options){var o,c=Object(a["a"])(s.options);try{for(c.s();!(o=c.n()).done;){var r=o.value;l.appendChild(this.createOption(r))}}catch(d){c.e(d)}finally{c.f()}}this.element.appendChild(l)}else this.element.appendChild(this.createOption(n))}}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(c["a"])(e.data)&&Object.keys(e.data).forEach((function(i){t.setAttribute("data-"+v(i),e.data[i])})),t}}]),e}(),g=(i("fb6a"),i("d81d"),i("4de4"),function(){function e(t){Object(n["a"])(this,e),Object(l["a"])(this,"main",void 0),Object(l["a"])(this,"searchValue",void 0),Object(l["a"])(this,"data",void 0),Object(l["a"])(this,"filtered",void 0),Object(l["a"])(this,"contentOpen",!1),Object(l["a"])(this,"contentPosition","below"),Object(l["a"])(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(a["a"])(t);try{for(i.s();!(e=i.n()).done;){var n=e.value;if("OPTGROUP"===n.nodeName){var s,l=n,o={label:l.label,options:[]},c=n.childNodes,r=Object(a["a"])(c);try{for(r.s();!(s=r.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){r.e(f)}finally{r.f()}this.data.push(o)}else if("OPTION"===n.nodeName){var u=this.pullOptionData(n);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=[],n=Object(a["a"])(t);try{for(n.s();!(e=n.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){n.e(d)}finally{n.f()}this.setSelected(i,"id")}else{var o=this.main.select.element;if(-1!==o.selectedIndex){var c=o.options[o.selectedIndex],r=c.value;this.setSelected(r,"value")}}}},{key:"setSelected",value:function(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"id",n=Object(a["a"])(this.data);try{for(n.s();!(t=n.n()).done;){var s=t.value;if(s.hasOwnProperty("label")){if(s.hasOwnProperty("options")){var l=s.options;if(l){var o,c=Object(a["a"])(l);try{for(c.s();!(o=c.n()).done;){var r=o.value;r.placeholder||(r.selected=this.shouldBeSelected(r,e,i))}}catch(d){c.e(d)}finally{c.f()}}}}else s.selected=this.shouldBeSelected(s,e,i)}}catch(d){n.e(d)}finally{n.f()}}},{key:"shouldBeSelected",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"id";if(Array.isArray(t)){var n,s=Object(a["a"])(t);try{for(s.s();!(n=s.n()).done;){var l=n.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=[],n=Object(a["a"])(this.data);try{for(n.s();!(e=n.n()).done;){var s=e.value;if(s.hasOwnProperty("label")){if(s.hasOwnProperty("options")){var l=s.options;if(l){var o,c=Object(a["a"])(l);try{for(c.s();!(o=c.n()).done;){var r=o.value;r.selected&&(this.main.config.isMultiple?i.push(r):t=r)}}catch(d){c.e(d)}finally{c.f()}}}}else s.selected&&(this.main.config.isMultiple?i.push(s):t=s)}}catch(d){n.e(d)}finally{n.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=[],n=this.getSelected();if(Array.isArray(n)){var s,l=Object(a["a"])(n);try{for(l.s();!(s=l.n()).done;){var o=s.value;i.push(o[t])}}catch(c){l.e(c)}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,n=[],s=this.getSelected(),l=Object(a["a"])(s);try{for(l.s();!(i=l.n()).done;){var o=i.value;String(o[t])!==String(e)&&n.push(o[t])}}catch(c){l.e(c)}finally{l.f()}this.setSelected(n,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",n=Object(a["a"])(this.data);try{for(n.s();!(t=n.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,c=Object(a["a"])(l.options);try{for(c.s();!(o=c.n()).done;){var r=o.value;if(String(r[i])===String(e))return r}}catch(d){c.e(d)}finally{c.f()}}}}}catch(d){n.e(d)}finally{n.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 a=i.map((function(i){if(i.hasOwnProperty("options")){var a=i,n=[];if(a.options&&(n=a.options.filter((function(i){return t(i,e)}))),0!==n.length){var s=Object.assign({},a);return s.options=n,s}}if(i.hasOwnProperty("text")){var l=i;if(t(l,e))return i}return null}));this.filtered=a.filter((function(e){return e}))}else this.filtered=null}}]),e}());function b(e){if(!e)return console.error("Data must be an array of objects"),!1;var t,i=!1,n=0,s=Object(a["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,c=o.options;if(c){var r,d=Object(a["a"])(c);try{for(d.s();!(r=d.n()).done;){var h=r.value;i=y(h),i||n++}}catch(f){d.e(f)}finally{d.f()}}}}else{var u=l;i=y(u),i||n++}}}catch(f){s.e(f)}finally{s.f()}return 0===n}function y(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 O=function(){function e(t){Object(n["a"])(this,e),Object(l["a"])(this,"main",void 0),Object(l["a"])(this,"container",void 0),Object(l["a"])(this,"singleSelected",void 0),Object(l["a"])(this,"multiSelected",void 0),Object(l["a"])(this,"content",void 0),Object(l["a"])(this,"search",void 0),Object(l["a"])(this,"list",void 0),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(a["a"])(this.main.config.class);try{for(i.s();!(t=i.n()).done;){var n=t.value;""!==n.trim()&&e.classList.add(n)}}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 a=document.createElement("span");a.innerHTML=this.main.config.deselectLabel,a.classList.add("ss-deselect"),a.onclick=function(t){t.stopPropagation(),e.main.config.isEnabled&&e.main.set("")},t.appendChild(a);var n=document.createElement("span");n.classList.add(this.main.config.arrow);var s=document.createElement("span");return s.classList.add("arrow-down"),n.appendChild(s),t.appendChild(n),t.onclick=function(){e.main.config.isEnabled&&(e.main.data.contentOpen?e.main.close():e.main.open())},{container:t,placeholder:i,deselect:a,arrowIcon:{container:n,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 a=document.createElement("div");a.classList.add(this.main.config.add);var n=document.createElement("span");return n.classList.add(this.main.config.plus),n.onclick=function(t){e.main.data.contentOpen&&(e.main.close(),t.stopPropagation())},a.appendChild(n),t.appendChild(a),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:a,plus:n}}},{key:"values",value:function(){if(this.multiSelected){var e,t,i=this.multiSelected.values.childNodes,n=this.main.data.getSelected(),s=[],l=Object(a["a"])(i);try{for(l.s();!(t=l.n()).done;){var o=t.value;e=!0;var c,r=Object(a["a"])(n);try{for(r.s();!(c=r.n()).done;){var d=c.value;String(d.id)===String(o.dataset.id)&&(e=!1)}}catch(y){r.e(y)}finally{r.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<n.length;m++){e=!1;var v,p=Object(a["a"])(i);try{for(p.s();!(v=p.n()).done;){var g=v.value;String(n[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(n[m]),i[m]):i[m-1].insertAdjacentElement("afterend",this.valueDiv(n[m])):this.multiSelected.values.appendChild(this.valueDiv(n[m])))}if(0===n.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 a=document.createElement("span");if(a.classList.add(this.main.config.valueText),a.innerHTML=e.innerHTML&&!0!==this.main.config.valuesUseText?e.innerHTML:e.text,i.appendChild(a),!e.mandatory){var n=document.createElement("span");n.classList.add(this.main.config.valueDelete),n.innerHTML=this.main.config.deselectLabel,n.onclick=function(i){i.preventDefault(),i.stopPropagation();var a=!1;if(t.main.beforeOnChange||(a=!0),t.main.beforeOnChange){for(var n=t.main.data.getSelected(),s=JSON.parse(JSON.stringify(n)),l=0;l<s.length;l++)s[l].id===e.id&&s.splice(l,1);var o=t.main.beforeOnChange(s);!1!==o&&(a=!0)}a&&(t.main.data.removeFromSelected(e.id,"id"),t.main.render(),t.main.select.setValue(),t.main.data.onDataChange())},i.appendChild(n)}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"),a=document.createElement("div");t.classList.add(this.main.config.search);var n={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 n=t.target;if("Enter"===t.key){if(e.main.addable&&t.ctrlKey)return a.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(n.value):i.value="");t.preventDefault(),t.stopPropagation()},i.onfocus=function(){e.main.open()},t.appendChild(i),this.main.addable&&(a.classList.add(this.main.config.addable),a.innerHTML="+",a.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 a=e.main.addable(i),n="";if(!a)return;if("object"===Object(c["a"])(a)){var s=y(a);s&&(e.main.addData(a),n=a.value?a.value:a.text)}else e.main.addData(e.main.data.newOption({text:a,value:a})),n=a;e.main.search(""),setTimeout((function(){e.main.set(n,"value",!1,!1)}),100),e.main.config.closeOnSelect&&setTimeout((function(){e.main.close()}),100)}},t.appendChild(a),n.addable=a),n}},{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 a=e.parentNode;if(a.classList.contains(this.main.config.optgroup)&&a.previousSibling){var n=a.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),d(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 a=i.nextSibling;t=a.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),d(this.list,t))}},{key:"listDiv",value:function(){var e=document.createElement("div");return e.classList.add(this.main.config.list),e.setAttribute("role","listbox"),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 n=document.createElement("div");return n.classList.add(this.main.config.option),n.classList.add(this.main.config.disabled),n.innerHTML=t,void this.list.appendChild(n)}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,c=Object(a["a"])(i);try{for(c.s();!(o=c.n()).done;){var r=o.value;r.hasOwnProperty("label")?function(){var t=r,i=document.createElement("div");i.classList.add(e.main.config.optgroup);var n=document.createElement("div");n.classList.add(e.main.config.optgroupLabel),e.main.config.selectByGroup&&e.main.config.isMultiple&&n.classList.add(e.main.config.optgroupLabelSelectable),n.innerHTML=t.label,i.appendChild(n);var s=t.options;if(s){var l,o=Object(a["a"])(s);try{for(o.s();!(l=o.n()).done;){var c=l.value;i.appendChild(e.option(c))}}catch(h){o.e(h)}finally{o.f()}if(e.main.config.selectByGroup&&e.main.config.isMultiple){var d=e;n.addEventListener("click",(function(e){e.preventDefault(),e.stopPropagation();var t,n=Object(a["a"])(i.children);try{for(n.s();!(t=n.n()).done;){var s=t.value;-1!==s.className.indexOf(d.main.config.option)&&s.click()}}catch(h){n.e(h)}finally{n.f()}}))}}e.list.appendChild(i)}():this.list.appendChild(this.option(r))}}catch(d){c.e(d)}finally{c.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),i.setAttribute("role","option"),e.class&&e.class.split(" ").forEach((function(e){i.classList.add(e)})),e.style&&(i.style.cssText=e.style);var a=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=m(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 n=this;i.addEventListener("click",(function(t){t.preventDefault(),t.stopPropagation();var i=this,s=i.dataset.id;if(!0===e.selected&&n.main.config.allowDeselectOption){var l=!1;if(n.main.beforeOnChange&&n.main.config.isMultiple||(l=!0),n.main.beforeOnChange&&n.main.config.isMultiple){for(var o=n.main.data.getSelected(),c=JSON.parse(JSON.stringify(o)),r=0;r<c.length;r++)c[r].id===s&&c.splice(r,1);var d=n.main.beforeOnChange(c);!1!==d&&(l=!0)}l&&(n.main.config.isMultiple?(n.main.data.removeFromSelected(s,"id"),n.main.render(),n.main.select.setValue(),n.main.data.onDataChange()):n.main.set(""))}else{if(e.disabled||e.selected)return;if(n.main.config.limit&&Array.isArray(a)&&n.main.config.limit<=a.length)return;if(n.main.beforeOnChange){var h,u=JSON.parse(JSON.stringify(n.main.data.getObjectFromData(s)));u.selected=!0,n.main.config.isMultiple?(h=JSON.parse(JSON.stringify(a)),h.push(u)):h=JSON.parse(JSON.stringify(u));var f=n.main.beforeOnChange(h);!1!==f&&n.main.set(s,"id",n.main.config.closeOnSelect)}else n.main.set(s,"id",n.main.config.closeOnSelect)}}));var s=a&&f(a,"id",e.id);return(e.disabled||s)&&(i.onclick=null,n.main.config.allowDeselectOption||i.classList.add(this.main.config.disabled),n.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(n["a"])(this,e),Object(l["a"])(this,"config",void 0),Object(l["a"])(this,"select",void 0),Object(l["a"])(this,"data",void 0),Object(l["a"])(this,"slim",void 0),Object(l["a"])(this,"ajax",null),Object(l["a"])(this,"addable",null),Object(l["a"])(this,"beforeOnChange",null),Object(l["a"])(this,"onChange",null),Object(l["a"])(this,"beforeOpen",null),Object(l["a"])(this,"afterOpen",null),Object(l["a"])(this,"beforeClose",null),Object(l["a"])(this,"afterClose",null),Object(l["a"])(this,"windowScroll",u((function(e){i.data.contentOpen&&("above"===h(i.slim.content,i.data.contentPosition,i.data.contentOpen)?i.moveContentAbove():i.moveContentBelow())}))),Object(l["a"])(this,"documentClick",(function(e){e.target&&!r(e.target,i.config.id)&&i.close()}));var a=this.validate(t);a.dataset.ssid&&this.destroy(a.dataset.ssid),t.ajax&&(this.ajax=t.ajax),t.addable&&(this.addable=t.addable),this.config=new o({select:a,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 p({select:a,main:this}),this.data=new g({main:this}),this.slim=new O({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=[],n=Object(a["a"])(t);try{for(n.s();!(e=n.n()).done;){var s=e.value;i.push(s.value)}}catch(o){n.e(o)}finally{n.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(),this.config.hideSelectedOption&&this.config.isMultiple&&this.data.getSelected().length===this.data.data.length&&(i=!0),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],a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];this.set(e,t,i,a)}},{key:"setData",value:function(e){var t=b(e);if(t){for(var i=JSON.parse(JSON.stringify(e)),n=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&&n)if(this.config.isMultiple){var l,o=n.reverse(),c=Object(a["a"])(o);try{for(c.s();!(l=c.n()).done;){var r=l.value;i.unshift(r)}}catch(f){c.e(f)}finally{c.f()}}else{i.unshift(n);for(var d=0;d<i.length;d++)i[d].placeholder||i[d].value!==n.value||i[d].text!==n.text||i.splice(d,1);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=b([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&&(!this.config.hideSelectedOption||!this.config.isMultiple||this.data.getSelected().length!==this.data.data.length)){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"===h(this.slim.content,this.data.contentPosition,this.data.contentOpen)?this.moveContentAbove():this.moveContentBelow(),!this.config.isMultiple){var i=this.data.getSelected();if(i){var a=i.id,n=this.slim.list.querySelector('[data-id="'+a+'"]');n&&d(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)}}},{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 a=i;if(a.slim=null,t.parentElement&&t.parentElement.removeChild(t),this.config.addToBody){var n=e?document.querySelector("."+e+".ss-content"):this.slim.content;if(!n)return;document.body.removeChild(n)}}}}]),e}()},cd49:function(e,t,i){"use strict";i.r(t);i("e260"),i("e6cf"),i("cca6"),i("a79d");var a=i("2b0e"),n=(i("d3b7"),i("3ca3"),i("ddb0"),i("8c4f"));a["a"].use(n["a"]);var s=new n["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"}})])])}],c=(i("caad"),i("2532"),i("ac1f"),i("5319"),i("ba4b")),r={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 c["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=r,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}),a["a"].mixin({updated:function(){v.a.highlightAll()}}),new a["a"]({router:s,render:function(e){return e(f)}}).$mount("#app")},dc22:function(e,t,i){}});
2
+ //# sourceMappingURL=app.238ee382.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/docs/app.vue?315a","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?67e4","webpack:///src/docs/app.vue","webpack:///./src/docs/app.vue?60e1","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","this","id","Math","floor","random","style","select","cssText","class","className","split","isMultiple","multiple","isAjax","showSearch","searchFocus","searchHighlight","closeOnSelect","showContent","isEnabled","searchPlaceholder","searchText","searchingText","placeholderText","allowDeselect","allowDeselectOption","hideSelectedOption","deselectLabel","valuesUseText","showOptionTooltips","selectByGroup","limit","searchFilter","timeoutDelay","addToBody","opt","search","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","main","disabled","config","addAttributes","addEventListeners","mutationObserver","addMutationObserver","slim","getSelected","options","isOnChangeEnabled","dispatchEvent","tabIndex","display","dataset","ssid","addEventListener","setSelectedFromSelect","render","MutationObserver","mutations","triggerMutationObserver","parseSelectData","forEach","mutation","attributeName","updateContainerDivClass","observeMutationObserver","observe","attributes","childList","characterData","disconnect","innerHTML","optgroupObject","optgroupEl","label","oo","createOption","optionEl","placeholder","mandatory","optionClass","add","keys","searchValue","filtered","String","nodes","childNodes","nodeName","node","optgroup","option","pullOptionData","newSelected","newOption","getObjectFromData","setSelected","selectedIndex","shouldBeSelected","v","values","onChange","JSON","parse","stringify","valuesArray","map","obj","optgroupObj","filter","assign","optionObj","validateData","isValid","errorCount","validateOption","containerDiv","content","contentDiv","searchDiv","list","listDiv","singleSelected","multiSelected","multiSelectedDiv","singleSelectedDiv","body","deselect","onclick","stopPropagation","set","arrowContainer","arrow","arrowIcon","contentOpen","close","open","outerHTML","selectedValue","remove","plus","valueDelete","exists","currentNodes","nodesToRemove","HTMLElement","insertAdjacentElement","insertBefore","valueDiv","valueText","deleteSpan","preventDefault","shouldUpdate","beforeOnChange","currentValues","beforeOnchange","removeFromSelected","setValue","onDataChange","input","addable","searchReturn","hide","readOnly","onkeydown","highlightUp","highlightDown","onkeyup","ctrlKey","click","highlighted","querySelector","onfocus","inputValue","focus","addableValue","addableValueStr","validValue","addData","prev","previousSibling","allOptions","querySelectorAll","optgroupLabel","parent","prevNodes","next","nextSibling","sibling","searching","isSearching","noResults","item","optgroupLabelSelectable","master","children","childEl","dataClass","searchHighlighter","textContent","elementID","selectedValues","objectInfo","isSelected","optionSelected","contentPosition","moveContentAbove","moveContentBelow","selectElement","validate","destroy","ajax","setData","documentClick","windowScroll","beforeOpen","afterOpen","beforeClose","afterClose","disable","tagName","outputSelected","addToSelected","newData","reverseSelected","reverse","unshift","hasPlaceholder","openAbove","openBelow","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.238ee382.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\":\"e7b28581\",\"install\":\"d4300783\",\"methods\":\"fa1608f1\",\"options\":\"2c4ceb87\",\"selects\":\"1eeba693\"}[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--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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 this.element.setAttribute('aria-hidden', 'true')\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 list.setAttribute('role', 'listbox')\n // @todo Link to?\n // list.setAttribute('aria-labelledby', '')\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 // Add WCAG attribute\n optionEl.setAttribute('role', '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 // Close when all options are selected and hidden\n if (this.config.hideSelectedOption && this.config.isMultiple && (this.data.getSelected() as Option[]).length === this.data.data.length) {\n close = true\n }\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 newData.splice(i, 1)\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 // Dont open when all options are selected and hidden\n if (this.config.hideSelectedOption && this.config.isMultiple && (this.data.getSelected() as Option[]).length === this.data.data.length) { 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--13-0!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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":""}