EmbyCrackedClient/web/modules/emby-elements/emby-toggle/emby-toggle.js

1 line
1.9 KiB
JavaScript
Raw Normal View History

2025-06-25 11:46:04 +08:00
import layoutManager from"./../../layoutmanager.js";import keyboardManager from"./../../input/keyboard.js";function onKeyDown(e){var key=keyboardManager.normalizeKeyFromEvent(e);if("Enter"===key&&(e.preventDefault(),!e.repeat))return this.checked=!this.checked,this.dispatchEvent(new CustomEvent("change",{bubbles:!0})),!1}function onFocus(){this.closest(".emby-toggle-label")?.classList.add("emby-toggle-label-focus")}function onBlur(){this.closest(".emby-toggle-label")?.classList.remove("emby-toggle-label-focus")}function connectedCallback(){this.setAttribute("role","switch"),this.classList.add("emby-toggle");var labelElement=this.parentNode;layoutManager.tv?(this.classList.add("emby-toggle-tv"),labelElement.classList.add("emby-toggle-label-tv")):this.classList.add("emby-toggle-focusring"),labelElement.classList.add("emby-toggle-label");let labelTextElement=labelElement.querySelector(".toggleLabel");labelTextElement||((labelTextElement=document.createElement("span")).innerHTML=this.getAttribute("label")||"",labelElement.appendChild(labelTextElement)),labelTextElement.classList.add("toggleLabel"),layoutManager.tv&&labelTextElement.classList.add("toggleLabel-tv");var toggle=labelElement.querySelector(".toggleSwitch");toggle||((toggle=document.createElement("div")).classList.add("toggleSwitch"),labelElement.appendChild(toggle)),this.addEventListener("keydown",onKeyDown),this.removeEventListener("focus",onFocus),this.addEventListener("focus",onFocus),this.removeEventListener("blur",onBlur),this.addEventListener("blur",onBlur)}function disconnectedCallback(){this.removeEventListener("keydown",onKeyDown)}require(["css!modules/emby-elements/emby-toggle/emby-toggle.css"]);class EmbyToggle extends HTMLInputElement{constructor(){return super()}connectedCallback(){connectedCallback.call(this)}disconnectedCallback(){disconnectedCallback.call(this)}}customElements.define("emby-toggle",EmbyToggle,{extends:"input"});export default EmbyToggle;