1 line
No EOL
2.7 KiB
JavaScript
1 line
No EOL
2.7 KiB
JavaScript
import layoutManager from"./../../layoutmanager.js";function getLabel(select){let elem=select.parentElement.previousSibling;for(;elem&&"LABEL"!==elem.tagName;)elem=elem.previousSibling;return elem}function onFocus(e){var label=getLabel(this);label&&label.classList.add("selectLabelFocused")}function onBlur(e){var label=getLabel(this);label&&label.classList.remove("selectLabelFocused")}require(["css!modules/emby-elements/emby-multilineselect/emby-multilineselect.css"]);let inputId=0;function onInit(){this.hasInit||(this.hasInit=!0,this.id||(this.id="emby-multilineselect"+inputId,inputId++),this.classList.add("emby-select-withcolor"),this.classList.add("emby-multilineselect-withcolor"),layoutManager.tv&&this.classList.add("emby-multilineselect-tv-withcolor"),layoutManager.tv&&(this.classList.add("emby-multilineselect-focusscale"),this.classList.add("emby-multilineselect-tv"),this.classList.contains("emby-multilineselect-inline"))&&this.classList.add("emby-multilineselect-tv-inline"),this.addEventListener("focus",onFocus),this.addEventListener("blur",onBlur))}function connectedCallback(){if(!this.classList.contains("emby-multilineselect"))if(this.parentElement.classList.contains("emby-select-wrapper")){var wrapper=this.parentElement,container=wrapper.parentElement,labelText=(this.classList.add("emby-multilineselect"),this.getAttribute("label")||"");let label=this.closest("label"),insertLabel,arrowContainerClass=(label?(label.insertAdjacentHTML("afterbegin",'<div class="selectLabelText">'+labelText+"</div>"),label.classList.add("selectLabel")):((label=this.ownerDocument.createElement("label")).classList.add("selectLabel","selectLabelText"),label.innerHTML=labelText,label.htmlFor=this.id,insertLabel=!0),"selectArrowContainer");this.classList.contains("emby-multilineselect-inline")&&(label.classList.add("selectLabel2-inline"),arrowContainerClass+=" selectArrowContainer-inline"),insertLabel&&container.insertBefore(label,wrapper),this.classList.contains("emby-multilineselect-withcolor")&&this.parentNode.insertAdjacentHTML("beforeend",'<div class="'+arrowContainerClass+'"><i class="selectArrow md-icon"></i></div>')}else(labelText=document.createElement("div")).classList.add("emby-select-wrapper"),this.parentNode.replaceChild(labelText,this),labelText.appendChild(this)}function setLabel(text){this.parentNode.parentNode.querySelector("label").innerHTML=text}class EmbyMultiLineSelect extends HTMLSelectElement{constructor(){var self=super();return onInit.call(self),self}connectedCallback(){onInit.call(this),connectedCallback.call(this)}setLabel(){setLabel.apply(this,arguments)}}customElements.define("emby-multilineselect",EmbyMultiLineSelect,{extends:"select"});export default EmbyMultiLineSelect; |