1 line
No EOL
7.6 KiB
JavaScript
1 line
No EOL
7.6 KiB
JavaScript
import layoutManager from"./../layoutmanager.js";import globalize from"./../common/globalize.js";import textEncoding from"./../common/textencoding.js";import dialogHelper from"./../dialoghelper/dialoghelper.js";import focusManager from"./../focusmanager.js";import dom from"./../dom.js";import AlphaPicker from"./../alphapicker/alphapicker.js";import cardBuilder from"./../cardbuilder/cardbuilder.js";import keyboardManager from"./../input/keyboard.js";import"./../emby-elements/emby-button/emby-button.js";import"./../emby-elements/emby-input/emby-input.js";import"./../emby-elements/emby-scroller/emby-scroller.js";import"./../emby-elements/emby-button/paper-icon-button-light.js";import"./../emby-elements/emby-dialogclosebutton/emby-dialogclosebutton.js";function getImageItems(){var item=this.options.user,items=[];return item&&items.push(item),Promise.resolve({Items:items,TotalRecordCount:items.length})}function getImageContainerListOptionsFn(){return function(items){return{renderer:cardBuilder,options:{overlayText:!0,fields:[],action:"none",multiSelect:!1,contextMenu:!1,ratingButton:!1,playedButton:!1,defaultIcon:!0,typeIndicator:!1,playedIndicator:!1,syncIndicator:!1,timerIndicator:!1,randomDefaultBackground:!1,staticElement:!0,enableUserData:!1,draggable:!1,moreButton:!1,programIndicators:!1,keepImageAnimation:!0,cardClass:"profilePinImageCard",cardBoxClass:"profilePinImageCardBox",round:!0},virtualScrollLayout:"vertical-grid"}}}function initUserImage(instance){var itemsContainer=instance.dlg.querySelector(".profilePinImageContainer");itemsContainer.fetchData=getImageItems.bind(instance),itemsContainer.getListOptions=getImageContainerListOptionsFn()}function moveFocusToTextInput(txt){focusManager.focus(txt,{}),txt.select()}function onFormKeyDown(e){var input=e.target.closest(".txtProfilePinInput");input&&"Backspace"===keyboardManager.normalizeKeyFromEvent(e)&&""===input.value&&(e=input.closest("form").querySelectorAll(".txtProfilePinInput"),0<(input=Array.prototype.indexOf.call(e,input)))&&moveFocusToTextInput(e[input-1])}function onFormInput(e){var form,inputs,index,e=e.target.closest(".txtProfilePinInput");e&&(1<e.value.length&&(e.value=e.value.slice(0,1)),inputs=(form=e.closest("form")).querySelectorAll(".txtProfilePinInput"),index=Array.prototype.indexOf.call(inputs,e),""!==e.value)&&(index<inputs.length-1?layoutManager.tv||moveFocusToTextInput(inputs[index+1]):form.requestSubmit())}function onFormSubmit(e){e.preventDefault(),e.stopPropagation();let dlg=this.dlg;var e=this.getCurrentPinValue()===this.options.user.Configuration.ProfilePin,inputContainer=dlg.querySelector(".profilePinPromptInputContainer");inputContainer.classList.remove("profilePinPromptInputContainer-invalid"),inputContainer.offsetWidth,e?(this.pinResult="validated",dlg.querySelector(".invalidHeader").classList.add("hide"),dlg.querySelector(".mainHeader").classList.remove("hide"),setTimeout(function(){dialogHelper.close(dlg)},100)):(inputContainer.classList.add("profilePinPromptInputContainer-invalid"),this.pinResult=null,dlg.querySelector(".mainHeader").classList.add("hide"),dlg.querySelector(".invalidHeader").classList.remove("hide"))}function onDialogClick(e){var dlg=this.dlg,btnCloseWithResult=e.target.closest(".btnCloseWithResult");btnCloseWithResult&&btnCloseWithResult.href&&!btnCloseWithResult.getAttribute("target")&&(e.stopPropagation(),e.preventDefault(),this.pinResult=btnCloseWithResult.getAttribute("data-result"),dialogHelper.close(dlg))}function dispatchInput(txt){txt.dispatchEvent(new CustomEvent("input",{bubbles:!0}))}function onAlphaValueClicked(e){var value=e.detail.value,txtFields=this.dlg.querySelectorAll(".txtProfilePinInput");if("backspace"===value){for(let i=txtFields.length-1;0<=i;i--)if(""!==txtFields[i].value){txtFields[i].value="",dispatchInput(txtFields[i]);break}}else for(let i=0,length=txtFields.length;i<length;i++)if(""===txtFields[i].value){txtFields[i].value=value,dispatchInput(txtFields[i]);break}}function initAlphaPicker(alphaPickerElement,instance){instance.alphaPicker=new AlphaPicker({element:alphaPickerElement,mode:"keyboard",type:"numeric"}),alphaPickerElement.addEventListener("alphavalueclicked",onAlphaValueClicked.bind(instance))}function onItemsContainerUpgraded(){this.resume({refresh:!0})}function getError(name,message){message=new Error(message);return message.name=name,message}function dispatchInputAfterTimeout(field){setTimeout(function(){dispatchInput(field)},10)}function onDialogKeyDown(e){var target=e.target;if(!target.closest("input")){e=keyboardManager.normalizeKeyFromEvent(e);if(e){var value=parseInt(e);if(null!=value&&!isNaN(value)){var txtFields=target.closest("form").querySelectorAll(".txtProfilePinInput");for(let i=0,length=txtFields.length;i<length;i++){var field=txtFields[i];if(!field.value){field.value=value,dispatchInputAfterTimeout(field);break}}}}}}function showDialog(instance,options,template){var dialogOptions={removeOnClose:!0,scrollY:!1,autoFocus:!0},dialogOptions=(layoutManager.tv&&(dialogOptions.size="fullscreen"),dialogHelper.createDialog(dialogOptions));if(dialogOptions.classList.add("formDialog"),dialogOptions.innerHTML=globalize.translateHtml(template),dialogOptions.querySelector(".pinMustBe").innerHTML=globalize.translate("YourPinMustBe",4),layoutManager.tv){var txtFields=dialogOptions.querySelectorAll(".txtProfilePinInput");for(let i=0,length=txtFields.length;i<length;i++)txtFields[i].setAttribute("readonly","readonly");for(let i=0,length=txtFields.length;i<length;i++)txtFields[i].setAttribute("virtualkeyboardpolicy","manual"),txtFields[i].setAttribute("inputmode","none"),txtFields[i].classList.add("searchfields-txtSearch-clear"),txtFields[i].setAttribute("tabindex","-1");template=dialogOptions.querySelector(".alphaPicker");dialogOptions.querySelector(".alphaPicker").classList.remove("hide"),initAlphaPicker(template,instance)}else dialogOptions.querySelector(".profilePinScroller").classList.add("profilePinScroller-autoabsolute");dialogOptions.querySelector(".profilePinPromptInputContainer").addEventListener("input",onFormInput),dialogOptions.querySelector(".profilePinPromptInputContainer").addEventListener("keydown",onFormKeyDown),dom.addEventListener(dialogOptions,"click",onDialogClick.bind(instance),{capture:!0}),dialogOptions.querySelector("form").addEventListener("submit",onFormSubmit.bind(instance)),(instance.dlg=dialogOptions).querySelector(".username").innerHTML=textEncoding.htmlEncode(options.user.Name),initUserImage(instance);template=dialogOptions.querySelector(".profilePinImageContainer");return template.waitForCustomElementUpgrade().then(onItemsContainerUpgraded.bind(template)),dialogOptions.addEventListener("keydown",onDialogKeyDown.bind(instance)),dialogHelper.open(dialogOptions).then(function(){var pinResult=instance.pinResult;return instance.destroy(),"validated"===pinResult?Promise.resolve():pinResult?Promise.reject(getError(pinResult,"AbortError")):Promise.reject(getError("AbortError","AbortError"))})}function PinPrompt(){}require(["formDialogStyle","material-icons","css!modules/profilepinprompt/profilepinprompt.css"]),PinPrompt.prototype.getCurrentPinValue=function(){let value="";var txtFields=this.dlg.querySelectorAll(".txtProfilePinInput");for(let i=0,length=txtFields.length;i<length;i++){var val=txtFields[i].value;if(""===val)break;value+=val}return value},PinPrompt.prototype.show=function(options){let instance=this;return instance.options=options,require(["text!modules/profilepinprompt/profilepinprompt.template.html"]).then(function(responses){responses=responses[0];return showDialog(instance,options,responses)})},PinPrompt.prototype.destroy=function(){var alphaPicker=this.alphaPicker;alphaPicker&&alphaPicker.destroy(),this.alphaPicker=null,this.dlg=null,this.pinValidated=null,this.options=null};export default PinPrompt; |