You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

15 lines
7.1 KiB

(function(_ds){var window=this;'use strict';var GS=function(){return(0,_ds.V)('<div class="devsite-select"></div>')},HS=function(a){var b=a.ed,c=a.ag;a='<label id="'+_ds.X(a.id)+'-label" style="display:none;"'+(b?' aria-label="'+_ds.X(b)+'"':"")+">";return(0,_ds.V)((c?a+"Select one or more options":a+"Select an option")+"</label>")},IS=function(a){var b=a.label;a=a.id;return(0,_ds.V)('<button type="button" class="devsite-select-toggle" id="'+_ds.X(a)+'-button" aria-haspopup="true" aria-labelledby="'+_ds.X(a)+"-label "+_ds.X(a)+
'-button" aria-controls="'+_ds.X(a)+'-popup">'+_ds.tq(b)+"</button>")},JS=function(){return(0,_ds.V)('<span class="devsite-icon devsite-icon-arrow-drop-down devsite-select-toggle-icon" aria-hidden="true"></span>')},KS=function(a){var b=a.options,c=a.id;a=a.ag;a='<ul class="devsite-select-list" id="'+_ds.X(c)+'-popup" tabindex="-1" role="listbox" scrollbars aria-labelledby="'+_ds.X(c)+'-button"'+(a?' aria-multiselectable="true"':"")+">";for(var d=b.length,e=0;e<d;e++){var g=b[e];a+='<li role="option"';
for(var k=_ds.uu(g.attributes),l=k.length,m=0;m<l;m++){var p=k[m];a+=" "+_ds.Oq(p)+'="'+_ds.X(g.attributes.get(p))+'"'}a+=' id="'+_ds.X(c)+"-"+_ds.X(e)+'" class="devsite-select-item" data-index="'+_ds.X(e)+'"'+(g.defaultSelected?' data-selected aria-selected="true"':' aria-selected="false"')+' aria-label="'+_ds.X(g.ed)+'">'+_ds.tq(g.label)+"</li>"}return(0,_ds.V)(a+"</ul>")},LS=function(){var a=_ds.R.call(this)||this;a.m=null;a.H=null;a.D=new _ds.Qj;a.F=new _ds.Qj;a.K=null;a.L=!1;a.o=!1;a.N="";a.h=
null;a.C=null;a.j=null;a.G=null;a.O=new _ds.Oj;return a},MS=function(a){var b=a.querySelector(".kd-select");b&&(b.classList.remove("kd-select"),Array.from(b.classList).forEach(function(c){a.classList.add(c);b.classList.remove(c)}))},RS=function(a){a.j=a.querySelector("select");var b;(b=a.j.id)||(NS++,b="devsite-select-"+NS+Math.random().toString().substr(2));a.j&&(a.j.options.length&&(a.G=a.j.options),a.j.hasAttribute("multiple")&&(a.o=!0,a.classList.add("devsite-select--multiple")));if(a.G){var c=
_ds.ir(GS),d=a.j.options;d=d[a.j.selectedIndex]||d[0];a.N=a.hasAttribute("label")?a.getAttribute("label"):d.label;d={ed:a.j.getAttribute("aria-label"),id:b,ag:a.o};d=_ds.ir(HS,d);c.appendChild(d);a.C=_ds.ir(IS,{label:a.N,id:b});d=_ds.ir(JS);c.appendChild(a.C);c.appendChild(d);a.h=_ds.ir(KS,{options:Array.from(a.G).map(function(e){for(var g=e.defaultSelected,k=OS(e.label,e.defaultSelected),l=e.label,m=new Map,p=_ds.n(PS),q=p.next();!q.done;q=p.next())q=q.value,e.hasAttribute(q)&&m.set(q,e.getAttribute(q));
return{defaultSelected:g,ed:k,label:l,attributes:m}}),id:b,ag:a.o});c.appendChild(a.h);a.appendChild(c);a.j.hasAttribute("disabled")&&a.querySelector(".devsite-select-toggle").setAttribute("disabled","");QS(a)}a.L=!0},QS=function(a){a.D.listen(a.C,"click",function(b){clearTimeout(a.K);a.dispatchEvent(new CustomEvent("devsite-close-select",{bubbles:!0}));b.preventDefault();b.stopPropagation();a.hasAttribute("menu--open")?SS(a):TS(a)});a.D.listen(a.h,"click",function(b){b.target.classList.contains("devsite-select-item")&&
US(a,b.target)});a.D.listen(a.h,"focusout",function(){a.K=setTimeout(function(){return SS(a)},200)});a.D.listen(a.j,"change",function(){VS(a,WS(a.querySelectorAll("option")))});a.D.listen(a.h,"keydown",function(b){var c=b.which||b.keyCode;switch(c){case 38:case 40:b.preventDefault();if(a.m){if(b=40===c?_ds.eh(a.m):_ds.fh(a.m))a.m.classList.remove("devsite-focused"),a.h.setAttribute("aria-activedescendant",b.id),b.classList.add("devsite-focused"),a.m=b}else XS(a);a.m.scrollIntoView({block:"nearest"});
break;case 13:case 32:b.preventDefault();US(a,a.m);break;case 9:case 27:SS(a)}});a.D.listen(a.C,"keydown",function(b){var c=b.which||b.keyCode;if(38===c||40===c)b.preventDefault(),a.hasAttribute("menu--open")||TS(a)})},TS=function(a){a.setAttribute("menu--open","");a.setAttribute("aria-expanded","true");XS(a);a.h.focus();"scrollIntoViewIfNeeded"in a.m&&a.m.scrollIntoViewIfNeeded()},SS=function(a){a.removeAttribute("menu--open");a.removeAttribute("aria-expanded");a.F.listen(document.body,"click",a.H);
a.F.listen(document.body,"devsite-close-select",a.H);a.m&&a.m.classList.remove("devsite-focused")},US=function(a,b){b&&(YS(a,parseInt(b.dataset.index,10)),a.o||(SS(a),a.C.focus()),a.j.dispatchEvent(new Event("change")))},XS=function(a){if(a.h){var b=Array.from(a.h.children).find(function(c){return c.hasAttribute("data-selected")});a.m=b?b:a.h.children[0];a.h.setAttribute("aria-activedescendant",a.m.id)}},ZS=function(a){a.H=function(b){if("devsite-close-select"!==b.type||b.target!==a)a.o&&"devsite-select-item"===
b.target.className||SS(a)};a.h&&(a.F.listen(document.body,"click",a.H),a.F.listen(document.body,"devsite-close-select",a.H))},$S=function(a){if(a.h&&a.C){a.h.style.removeProperty("left");a.h.style.removeProperty("right");var b=a.h.getBoundingClientRect();0<b.x+b.width-_ds.Pj(a.O).width?a.h.style.right="0":a.h.style.left="0"}},WS=function(a){return Array.from(a).reduce(function(b,c,d){c.selected&&b.push(d);return b},[])},YS=function(a,b){var c=a.querySelectorAll("option");if(c&&c.length){if(!a.o)for(var d=
_ds.n(c),e=d.next();!e.done;e=d.next())e.value.removeAttribute("selected");c[b]&&(b=c[b],a.o&&b.hasAttribute("selected")?b.removeAttribute("selected"):b.setAttribute("selected","true"));VS(a,WS(c))}},VS=function(a,b){var c=a.querySelectorAll(".devsite-select-item");Array.from(c).forEach(function(d,e){d=!1;b.includes(e)?(d=!0,c[e].setAttribute("data-selected",""),c[e].setAttribute("aria-selected","true"),a.h.setAttribute("aria-activedescendant",c[e].id)):(c[e].removeAttribute("data-selected"),c[e].setAttribute("aria-selected",
"false"));c[e].setAttribute("aria-label",OS(c[e].textContent,d))});a.o||(a.C.textContent=a.j.options[b[0]].label);$S(a)},OS=function(a,b){return(void 0===b?0:b)?a+", selected":a},NS=0;var PS=["lang","title","value"];_ds.t(LS,_ds.R);
LS.prototype.attributeChangedCallback=function(a,b,c){var d=this;return _ds.E(function(e){if(1==e.h){if("menu--open"!==a||b===c)return e.J(2);if(!d.hasAttribute("menu--open"))return d.removeAttribute("menu--show"),_ds.Wj(d.F),e.J(2);$S(d);d.removeAttribute("menu-position");if(d.h){var g=d.h.getBoundingClientRect(),k=_ds.Pj(d.O).height,l=parseInt(_ds.dk(d.h,"maxHeight"),10);d.setAttribute("menu-position",g.top+(d.h.scrollHeight>l?l:d.h.scrollHeight)<k?"below":"above")}ZS(d);return _ds.u(e,0,4)}2!=
e.h&&d.setAttribute("menu--show","");"reset"===a&&YS(d,0);_ds.v(e)})};LS.prototype.connectedCallback=function(){this.L||(MS(this),RS(this))};LS.prototype.disconnectedCallback=function(){_ds.Wj(this.F);_ds.Wj(this.D)};_ds.fa.Object.defineProperties(LS.prototype,{value:{configurable:!0,enumerable:!0,get:function(){return this.j.value},set:function(a){US(this,this.h.querySelector('.devsite-select-item[value="'+a+'"]'))}}});
_ds.fa.Object.defineProperties(LS,{observedAttributes:{configurable:!0,enumerable:!0,get:function(){return["label","menu--open","reset"]}}});LS.prototype.disconnectedCallback=LS.prototype.disconnectedCallback;LS.prototype.connectedCallback=LS.prototype.connectedCallback;LS.prototype.attributeChangedCallback=LS.prototype.attributeChangedCallback;try{window.customElements.define("devsite-select",LS)}catch(a){console.warn("devsite.app.customElement.DevsiteSelect",a)};})(_ds_www);