UNPKG

@mescius/wijmo.input

Version:

UI library for pure JS, Angular, React, Vue and more...

14 lines (13 loc) • 235 kB
/*! * * Wijmo Library 5.20252.44 * https://developer.mescius.com/wijmo * * Copyright(c) MESCIUS inc. All rights reserved. * * Licensed under the End-User License Agreement For MESCIUS Wijmo Software. * us.sales@mescius.com * https://developer.mescius.com/wijmo/licensing * */ import{_getModule,_addCultureInfo,culture,setAriaLabel,disableAutoComplete,isIE,isIE9,asBoolean,asString,asEnum,setSelectionRange,contains,getActiveElement,setAttribute,showPopup,hidePopup,hasClass,addClass,removeClass,toggleClass,removeChild,Control,Key,Event,EventArgs,CancelEventArgs,ControlStateClsNames,GlyphClsNames,ControlClsNames,InputFormElementsClsNames,isNullOrUndefined,tryCast,createElement,hasItems,isObject,isString,asArray,asFunction,asNumber,asType,asCollectionView,closest,escapeHtml,toPlainText,setCss,Binding,Rect,DateTime,assert,isFirefox,_CLS_STATE_DISABLED,UtilitesClsNames,_setAriaLabelBy,setInnerHTMLSafe,getUniqueId,isNumber,enable,isFunction,escapeRegExp,isSafari,setText,isDate,isBoolean,asDate,asInt,Globalize,_ClickRepeater,CollectionView,format,uidGenerator,moveFocus,_isMacOS,clamp,Color,roundTo,_getFocusableElements,_MaskProvider,getSpecialCharsRegex,isEmpty,isEdge,isMobile,setChecked,Point,isArray,getElementRect,getSafeUniqueId,PopupPosition,getElement,isUndefined,isiOS,_registerModule}from"@mescius/wijmo";import*as selfModule from"@mescius/wijmo.input";export const AutoCompleteClsNames={hostElement:"wj-autocomplete"};export const CalendarClsNames={buttonsOutside:"wj-btns-outside",calendarHeader:"wj-calendar-header",calendarMonth:"wj-calendar-month",calendarMultiMonth:"wj-calendar-multimonth",calendarOuter:"wj-calendar-outer",calendarYear:"wj-calendar-year",dayOtherMonth:"wj-day-othermonth",dayToday:"wj-day-today",dayWeekend:"wj-day-weekend",header:"wj-header",hostElement:"wj-calendar",monthSelect:"wj-month-select",weekAfter:"wj-week-after",weekBefore:"wj-week-before",yearPicker:"wj-yearpicker",focused:"wj-state-focus",selectedYear:"wj-select-year",confirmationButtonContainer:"wj-calendar-confirmation-button-container",button:"wj-calendar-button"};export const CollectionViewNavigatorClsNames={hostElement:"wj-collectionview-navigator",pager:"wj-pager"};export const ColorPickerClsNames={colorBox:"wj-colorbox",hostElement:"wj-colorpicker"};export const ComboBoxClsNames={hostElement:"wj-combobox",stateMatch:"wj-state-match"};export const DropDownClsNames={dropDownPanel:"wj-dropdown-panel",hostElement:"wj-dropdown"};export const InputClsNames={input:"wj-input",inputBtnVisible:"wj-input-btn-visible",inputGroup:"wj-input-group",inputGroupBtn:"wj-input-group-btn"};export const InputColorClsNames={hostElement:"wj-inputcolor",inputColorBox:"wj-inputcolorbox"};export const InputDateClsNames={hostElement:"wj-inputdate",inputDateDropDown:"wj-inputdate-dropdown",inputDateDropDownContainer:"wj-inputdate-dropdown-container"};export const InputDateRangeClsNames={hostElement:"wj-inputdaterange"};export const InputDateTimeClsNames={hostElement:"wj-inputdatetime",showDropDownButton:"wj-show-dropdown-button"};export const InputMaskClsNames={hostElement:"wj-inputmask"};export const InputNumberClsNames={hostElement:"wj-inputnumber",numeric:"wj-numeric",showSpinner:"wj-input-show-spinner"};export const InputTimeClsNames={hostElement:"wj-inputtime"};export const ListBoxClsNames={header:"wj-header",hostElement:"wj-listbox",listBoxItem:"wj-listbox-item"};export const MenuClsNames={hostElement:"wj-menu",menuItems:"wj-menu-items",subItems:"wj-subitems"};export const MultiAutoCompleteClsNames={hostElement:"wj-multi-autocomplete",token:"wj-token",tokenActive:"wj-token-active",tokenClose:"wj-token-close",tokenHelper:"wj-token-helper",tokenLabel:"wj-token-label",screenReaderOnly:"wj-sr-only"};export const MultiSelectClsNames={hostElement:"wj-multiselect"};export const MultiSelectListBoxClsNames={header:"wj-header",hostElement:"wj-multiselectlistbox",selectAll:"wj-select-all"};export const PopupClsNames={dialogHeader:"wj-dialog-header",hostElement:"wj-popup",popupBackDrop:"wj-popup-backdrop",dialogBody:"wj-dialog-body",dialogFooter:"wj-dialog-footer"};_addCultureInfo("InputNumber",{ariaLabels:{incVal:"Increase Value",decVal:"Decrease Value",inputNumberInput:"InputNumber Input",inputNumber:"Input Number"}});export class InputNumber extends Control{constructor(t,e){super(t);this._value=null;this._min=null;this._max=null;this._format="";this._step=null;this._showBtn=!0;this._readOnly=!1;this._handleWheel=!0;this._oldText="";this._fromKb=!0;this._inputElementAriaLabel=culture.InputNumber.ariaLabels.inputNumberInput;this._ariaLabelledby=null;this.textChanged=new Event;this.valueChanged=new Event;let s=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${InputNumberClsNames.hostElement}`,s,{_tbx:"input",_btnUp:"btn-inc",_btnDn:"btn-dec"},"input");const i=this.inputElement;this.hostElement;setAttribute(i,"role","spinbutton",!0);this._updateInputAriaLabel();let n=culture.InputNumber.ariaLabels;setAriaLabel(this._btnUp.querySelector("button"),n.incVal);setAriaLabel(this._btnDn.querySelector("button"),n.decVal);this._tbx.type.match(/number/i)&&(this.inputType="");let l=this._tbx;l.autocomplete="off";l.spellcheck=!1;this._updateSymbols();let a=this.addEventListener.bind(this);a(l,"keypress",this._keypress.bind(this));a(l,"keydown",this._keydown.bind(this));a(l,"input",this._input.bind(this));isMobile()&&a(l,"beforeinput",this._beforeinput.bind(this));a(l,"blur",()=>{this.text!=this._oldText&&this._setText(this.text)});a(l,"paste",()=>{this._fromKb=!1});a(l,"compositionstart",()=>{this._composing=!0});a(l,"compositionend",()=>{this._composing=!1;setTimeout(()=>{let t=this.text,e=this._oldText,s=this._chrPct;e&&e.indexOf(s)>-1&&t.indexOf(s)<0&&(t+=s);this._setText(t)})});let h=this._clickSpinner.bind(this);a(this._btnUp,"click",h);a(this._btnDn,"click",h);this._rptUp=new _ClickRepeater(this._btnUp.querySelector("button"));this._rptDn=new _ClickRepeater(this._btnDn.querySelector("button"));a(l,"wheel",t=>{if(this.handleWheel&&!t.defaultPrevented&&!t.ctrlKey&&this._isEditable()&&this.containsFocus()){let e=clamp(-t.deltaY,-1,1);this._increment((this.step||1)*e);setTimeout(()=>this.selectAll());t.preventDefault()}});this.value=0;this.isRequired=!0;this.initialize(e)}static get controlTemplate(){InputNumber._ctrlTemplate||(InputNumber._ctrlTemplate=`<div class="${ControlClsNames.template}"><div class="${InputClsNames.input}"><div class="${InputClsNames.inputGroup}"><span wj-part="btn-dec" class="${InputClsNames.inputGroupBtn}" tabindex="-1"><button class="${InputFormElementsClsNames.btn} ${InputFormElementsClsNames.btnDefault}" tabindex="-1">-</button></span><input type="tel" wj-part="input" class="${InputFormElementsClsNames.formControl} ${InputNumberClsNames.numeric}"/><span wj-part="btn-inc" class="${InputClsNames.inputGroupBtn}" tabindex="-1"><button class="${InputFormElementsClsNames.btn} ${InputFormElementsClsNames.btnDefault}" tabindex="-1">+</button></span></div></div></div>`);return InputNumber._ctrlTemplate}static set controlTemplate(t){InputNumber._ctrlTemplate=t}get inputElement(){return this._tbx}get inputType(){return this._tbx.type}set inputType(t){this._tbx.type=asString(t)}get value(){return this._value}set value(t){if(t!=this._value)if(null==(t=asNumber(t,!this.isRequired||null==t&&null==this._value)))this._setText("");else if(!isNaN(t)){let e=Globalize.format(t,this.format);this._setText(e)}}get isRequired(){return this._tbx.required}set isRequired(t){this._tbx.required=asBoolean(t)}get isReadOnly(){return this._readOnly}set isReadOnly(t){this._readOnly=asBoolean(t);this.inputElement.readOnly=this._readOnly;toggleClass(this.hostElement,ControlStateClsNames.readOnly,this.isReadOnly)}get handleWheel(){return this._handleWheel}set handleWheel(t){this._handleWheel=asBoolean(t)}get min(){return this._min}set min(t){if(t!=this._min){this._min=asNumber(t,!0);this._updateAria()}}get max(){return this._max}set max(t){if(t!=this._max){this._max=asNumber(t,!0);this._updateAria()}}get step(){return this._step}set step(t){this._step=asNumber(t,!0);this._updateBtn()}get format(){return this._format}set format(t){if(t!=this.format){this._format=asString(t);this.refresh()}}get text(){return this._tbx.value}set text(t){if(t!=this.text){this._oldText=this.text;this._setText(t)}}get placeholder(){return this._tbx.placeholder}set placeholder(t){this._tbx.placeholder=t}get showSpinner(){return this._showBtn}set showSpinner(t){this._showBtn=asBoolean(t);this._updateBtn()}get repeatButtons(){return!this._rptUp.disabled}set repeatButtons(t){this._rptUp.disabled=this._rptDn.disabled=!asBoolean(t)}get ariaLabelledBy(){return this._ariaLabelledby}set ariaLabelledBy(t){_setAriaLabelBy(this,this._tbx,t,this._updateInputAriaLabel.bind(this))}selectAll(){let t=this._tbx;setSelectionRange(t,0,t.value.length)}clamp(t){return clamp(t,this.min,this.max)}onTextChanged(t){this.textChanged.raise(this,t);this._updateState()}onValueChanged(t){this._updateAria();this.valueChanged.raise(this,t)}dispose(){this._rptUp.element=null;this._rptDn.element=null;super.dispose()}onGotFocus(t){this._oldValue=this.value;if(!this.isTouching){this._tbx.focus();this.selectAll()}super.onGotFocus(t)}onLostFocus(t){if(this._composing){this._composing=!1;this._setText(this.text)}if(this._isEditable()){let t=this.clamp(this.value);if(t==this.value||this.onInvalidInput(new CancelEventArgs)){let e=Globalize.format(t,this.format);this._setText(e)}}super.onLostFocus(t)}refresh(t=!0){super.refresh(t);if(this.hostElement){this._updateSymbols();let t=Globalize.format(this.value,this.format);this._setText(t)}}_isEditable(){return!this.isReadOnly&&!this.isDisabled}_updateSymbols(){let t=culture.Globalize.numberFormat,e=Globalize._parseNumericFormat(this.format);this._chrDec=t["."]||".";this._chrTho=t[","]||",";this._chrNeg=t["-"]||"-";this._chrPls=t["+"]||"+";this._chrPct=t["%"]||"%";this._chrCur=e.curr||t.currency.symbol||"$";this._fmtSpc=e.spec;this._fmtPrc=e.prec;this._rxSym=new RegExp("^[%+\\-() \\"+this._chrDec+"\\"+this._chrCur+"\\"+this._chrNeg+"\\"+this._chrPls+"\\"+this._chrPct+"]*$");this._rxNeg=new RegExp("^\\s*(\\-|\\"+this._chrNeg+")|([^e](\\-|\\"+this._chrNeg+")|\\()")}_isNumeric(t,e){let s=t==this._chrDec||t>="0"&&t<="9",i="x"==this._fmtSpc;!s&&i&&(s=t>="a"&&t<="f"||t>="A"&&t<="F");s||e||i||(s=t==this._chrPls||t==this._chrNeg||"("==t||")"==t);return s}_getInputRange(t){let e=[0,0],s=this.text,i=!1;for(let n=0;n<s.length;n++)if(this._isNumeric(s[n],t)){if(!i){e[0]=n;i=!0}e[1]=n+1}return e}_flipSign(){let t=this._getSelStartDigits();this.value*=-1;this._setSelStartDigits(t)}_getSelStartDigits(){let t=0,e=this._tbx.selectionStart,s=this._tbx.value;for(let i=0;i<s.length&&i<e;i++)this._isNumeric(s[i],!0)&&t++;return t}_setSelStartDigits(t){let e=this._tbx.value;for(let s=0;s<e.length&&t>=0;s++)if(this._isNumeric(e[s],!0)){if(!t){setSelectionRange(this._tbx,s);break}t--}else if(!t){setSelectionRange(this._tbx,s);break}}_increment(t){if(t){let e=this.clamp(isNumber(this.value)?this.value+t:0),s=Globalize.format(e,this.format,!1,!1);this._setText(s)}}_updateBtn(){let t=this.showSpinner&&!!this.step,e=t;setCss([this._btnUp,this._btnDn],{display:t?"":"none"});toggleClass(this.hostElement,InputNumberClsNames.showSpinner,t);enable(this._btnUp,e);enable(this._btnDn,e);this._updateAria()}_setText(t,e=!1,s=!1){if(this._composing)return;let i=this._tbx,n=this._chrDec,l=this._rxNeg.test(t),a=this._delKey,h=this.containsFocus();t&&this._rxSym.test(t)&&h&&(t=this.isRequired||!a?(l?"-0":"0")+(t.indexOf(n)>-1?n:""):"");this._delKey=!1;a&&0==this.value&&!this.isRequired&&(t="");if(!t){if(!this.isRequired||s){i.value="";if(this._oldText){this._oldText=t;this.onTextChanged()}if(null!=this._value){this._value=null;this.onValueChanged()}this._updateBtn();return}t="0"}let r=t.indexOf(n),o=this._format||(r>-1?"n2":"n0"),d=Globalize.parseFloat(t,o);isFinite(d)||(d=this.clamp(d));if(isNaN(d)){if(this.onInvalidInput(new CancelEventArgs))i.value=this._oldText;else{i.value=t;this.focus()}return}let u=h&&r>-1?2:null,c=Globalize.format(d,o,!1,e,u);l&&d>=0&&!a&&(c=this._chrNeg+c);if(h&&r>-1&&"g"==this._fmtSpc&&0!=this._fmtPrc){c=t;c.indexOf(n)<0&&(c+=n)}if(i.value!=c){i.value=c;d=Globalize.parseFloat(c,o)}if(this.text!=this._oldText){this._oldText=this.text;this.onTextChanged()}if(d!=this._value){this._value=d;this.onValueChanged()}this._updateBtn();this._updateState()}_handleDecimalInput(t){if(0===this._fmtPrc){t.preventDefault();return!0}let e=this._tbx,s=e.value.indexOf(this._chrDec);if(s>-1){t.preventDefault();let i=e.selectionStart<=s?s+1:s;setSelectionRange(e,i);return!0}return!1}_beforeinput(t){if(t.defaultPrevented||this._composing||!this._isEditable())return;switch(t.data){case".":case this._chrDec:this._handleDecimalInput(t);return;case"+":case this._chrPls:this._handlePlusSign();t.preventDefault();return;case"-":case this._chrNeg:this._handleMinusSign();t.preventDefault();return}}_keypress(t){if(!t.defaultPrevented&&!this._composing&&this._isEditable()&&t.charCode&&!t.ctrlKey&&!t.metaKey&&t.keyCode!=Key.Enter){let e=this._tbx,s=String.fromCharCode(t.charCode);if(this._isNumeric(s,!1)){let s=e.maxLength;if(s>-1&&e.value.length>=s&&e.selectionEnd==e.selectionStart){t.preventDefault();return}let i=this._getInputRange(!0),n=e.selectionStart,l=e.selectionEnd;if(n<i[0]&&l<e.value.length){l=Math.max(l,i[0]);setSelectionRange(e,i[0],l)}if(n>=i[1]){let s=null!=this._fmtPrc?this._fmtPrc:2,i=e.value.indexOf(this._chrDec);i>-1&&n-i>s&&t.preventDefault()}}else t.preventDefault();switch(s){case"-":case this._chrNeg:this._handleMinusSign();t.preventDefault();break;case"+":case this._chrPls:this._handlePlusSign();t.preventDefault();break;case".":case this._chrDec:this._handleDecimalInput(t)}if(!t.defaultPrevented&&isIE()){let i=e.value,n=e.selectionStart,l=e.selectionEnd;if(n==l){e.value=i.substr(0,n)+s+i.substr(l);setSelectionRange(e,n+1);t.preventDefault();this._input()}}}}_handlePlusSign(){let t=this._tbx;(this.value<0||this._rxNeg.test(t.value))&&this._flipSign()}_handleMinusSign(){let t=this._tbx;if(this.clamp(-1)>=0)this.value<0&&this._flipSign();else if(this.value&&t.selectionStart===t.selectionEnd)this._flipSign();else if(this.clamp(-1)<0){t.value=this._chrNeg;setSelectionRange(t,1)}}_keydown(t){this._delKey=!1;if(t.defaultPrevented||this._composing)return;var e=hasClass(this._tbx,"wj-grid-ime");if(e&&t.keyCode!=Key.Back&&t.keyCode!=Key.Delete)return;let s=this._tbx,i=s.value,n=s.selectionStart,l=s.selectionEnd;switch(t.keyCode){case 65:if(t.ctrlKey){setTimeout(()=>{this.selectAll()});t.preventDefault()}break;case Key.Up:case Key.Down:if(this.step&&this._isEditable()){this._increment(this.step*(t.keyCode==Key.Up?1:-1));setTimeout(()=>{this.selectAll()});t.preventDefault()}break;case Key.Back:this._delKey=!0;if(l-n<2&&this._isEditable()){let e=i[l-1];if(e==this._chrDec||e==this._chrPct||e==this._chrTho||")"==e){setTimeout(()=>{l=e==this._chrPct?this._getInputRange(!0)[1]:l-1;setSelectionRange(s,l)});t.preventDefault()}}break;case Key.Delete:this._delKey=!0;if(l-n<2&&this._isEditable())if("0"==i&&1==n)setSelectionRange(s,0);else{let e=i[n];if(e==this._chrDec||e==this._chrPct){setTimeout(()=>{setSelectionRange(s,n+1)});t.preventDefault()}}break;case Key.Escape:this.value=this._oldValue;this.selectAll()}e&&this._delKey&&this._isEditable()&&this._setText(null,!1,!0)}_input(){this._composing?this._fromKb=!0:setTimeout(()=>{let t=this._tbx,e=t.value,s=e.indexOf(this._chrDec),i=t.selectionStart,n=this._getSelStartDigits();"p"==this._fmtSpc&&e.length&&e.indexOf(this._chrPct)<0&&(e+=this._chrPct);this._setText(e,this._fromKb);this._fromKb=!0;if(this.containsFocus()){let l=t.value,a=l.indexOf(this._chrDec),h=this._getInputRange(!0);if(e==this._chrNeg+this._chrDec&&a>-1){setSelectionRange(t,a+1);return}if(e[0]==this._chrNeg&&l[0]!=this._chrNeg){if(1==l.length)setSelectionRange(t,1);else{"c"===this._fmtSpc&&this._isNegativeCurrencyByParenthesis(e)&&(n-=1);this._setSelStartDigits(n)}return}e?e==this._chrDec&&a>-1?i=a+1:i<=s&&a>-1||s<0&&a<0?i+=l.length-e.length:s<0&&a>-1&&(i=a):i=a>-1?a:h[1];i=clamp(i,h[0],h[1]);setSelectionRange(t,i)}})}_isNegativeCurrencyByParenthesis(t){return t.length>1&&t[1]===this._chrCur}_clickSpinner(t){if(!t.defaultPrevented&&this._isEditable()&&this.step){this._increment(this.step*(contains(this._btnUp,t.target)?1:-1));if(!this.isTouching){Control.sharedState.InvalidScroll=isEdge();setTimeout(()=>this.selectAll())}}}_updateAria(){const t=this.inputElement;if(this.hostElement){setAttribute(t,"aria-valuemin",this.min);setAttribute(t,"aria-valuemax",this.max);setAttribute(t,"aria-valuenow",this.value);setAttribute(t,"aria-valuetext",this.text);setAttribute(t,"step",this.step);enable(this._btnDn,null==this.min||this.value>this.min);enable(this._btnUp,null==this.max||this.value<this.max)}}_updateInputAriaLabel(){const t=this.inputElement;this._ariaLabelledby?setAttribute(t,"aria-label",null):setAttribute(t,"aria-label",this._inputElementAriaLabel)}getAriaLabelForScreenReader(){return culture.InputNumber.ariaLabels.inputNumber}}InputNumber._ctrlTemplate="";_addCultureInfo("InputMask",{ariaLabels:{inputMaskInput:"InputMask Input",inputMask:"Input Mask"}});export class InputMask extends Control{constructor(t,e){super(t);this._fullEdit=!1;this._inputElementAriaLabel=culture.InputMask.ariaLabels.inputMaskInput;this._ariaLabelledby=null;this.valueChanged=new Event;let s=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${InputMaskClsNames.hostElement}`,s,{_tbx:"input"},"input");if("INPUT"==this._orgTag){let t=this._tbx.getAttribute("value");t&&(this.value=t)}this._msk=new _MaskProvider(this._tbx);this.isRequired=!0;this.initialize(e);this.addEventListener(this._tbx,"input",()=>{this.onValueChanged()});this.addEventListener(this._tbx,"blur",this._commitText.bind(this));this.addEventListener(this._tbx,"keydown",t=>{t.keyCode==Key.Enter&&this._commitText()});this._updateInputAriaLabel()}static get controlTemplate(){InputMask._ctrlTemplate||(InputMask._ctrlTemplate=`<div class="${InputClsNames.input}"><div class="${InputClsNames.inputGroup}"><input wj-part="input" class="${InputFormElementsClsNames.formControl}"/></div></div>`);return InputMask._ctrlTemplate}static set controlTemplate(t){InputMask._ctrlTemplate=t}get inputElement(){return this._tbx}get inputType(){return this._tbx.type}set inputType(t){this._tbx.type=asString(t)}get value(){return this._tbx.value}set value(t){if(t!=this.value){this._tbx.value=asString(t);t=this._msk._applyMask();this._tbx.value=t;this.onValueChanged()}}get rawValue(){return this._msk.getRawValue()}set rawValue(t){t!=this.rawValue&&(this.value=asString(t))}get mask(){return this._msk.mask||""}set mask(t){let e=this.value;this._msk.mask=asString(t);this.value!=e&&this.onValueChanged()}get promptChar(){return this._msk.promptChar}set promptChar(t){let e=this.value;this._msk.promptChar=t;this.value!=e&&this.onValueChanged()}get overwriteMode(){return this._msk.overwriteMode}set overwriteMode(t){this._msk.overwriteMode=asBoolean(t)}get placeholder(){return this._tbx.placeholder}set placeholder(t){this._tbx.placeholder=t}get maskFull(){return this._msk.maskFull}get isRequired(){return this._tbx.required}set isRequired(t){this._tbx.required=asBoolean(t)}get isReadOnly(){return this._tbx.readOnly}set isReadOnly(t){this._tbx.readOnly=asBoolean(t);toggleClass(this.hostElement,ControlStateClsNames.readOnly,this.isReadOnly)}selectAll(){let t=this._msk.getMaskRange();setSelectionRange(this._tbx,t[0],t[1]+1)}onValueChanged(t){if(this.value!=this._oldValue){this._oldValue=this.value;this.valueChanged.raise(this,t)}this._updateState()}_commitText(){(this.rawValue||this.isRequired)&&(this.maskFull||this.onInvalidInput(new CancelEventArgs));this._updateState()}dispose(){this._msk.input=null;super.dispose()}refresh(t=!0){super.refresh(t);this.hostElement&&this._msk.refresh()}onGotFocus(t){this.selectAll();super.onGotFocus(t)}get ariaLabelledBy(){return this._ariaLabelledby}set ariaLabelledBy(t){_setAriaLabelBy(this,this._tbx,t,this._updateInputAriaLabel.bind(this))}_updateInputAriaLabel(){const t=this.inputElement;!t||t.id||this._ariaLabelledby?setAttribute(t,"aria-label",null):setAttribute(t,"aria-label",this._inputElementAriaLabel)}getAriaLabelForScreenReader(){return culture.InputMask.ariaLabels.inputMask}}InputMask._ctrlTemplate="";_addCultureInfo("ColorPicker",{ariaLabels:{colorPicker:"Color Picker",satAndBrightnessPanel:"Color saturation and brightness panel",huePanel:"Color hue panel",opacityPanel:"Color opacity panel",palettePanel:"Color palette panel",saturation:"Saturation:",hue:"Hue:",opacity:"Opacity:",degrees:"degrees",brightness:"Brightness:",baseColor:"Base color:",shadeColor:"Shade color:"}});export var ColorPickerTabKeyAction;!function(t){t[t.None=0]="None";t[t.All=1]="All"}(ColorPickerTabKeyAction||(ColorPickerTabKeyAction={}));export class ColorPicker extends Control{constructor(t,e){super(t);this._hsb=[.5,1,1];this._alpha=1;this._ariaLabel=culture.ColorPicker.ariaLabels.colorPicker;this.valueChanged=new Event;this.hostElement.setAttribute("role","application");this.hostElement.setAttribute("aria-label",culture.ColorPicker.ariaLabels.colorPicker);let s=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${ColorPickerClsNames.hostElement}`,s,{_eSB:"div-sb",_eHue:"div-hue",_eAlpha:"div-alpha",_ePreview:"div-pv",_ePal:"div-pal",_eText:"div-text"});this._palette="#FFF,#000,#F00,#FFC000,#FFFF00,#92D050,#00B050,#00B0F0,#0070C0,#7030A0".split(",");this._updatePalette();this._eHue.style.backgroundImage="url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAD4CAIAAACi6hsPAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuM4zml1AAAAGvSURBVDhPXdBPaM9xHMfxz4pWaxcmtoOhpdXSVpiyHWxqmVpDjaU5rK34XfypjTJ/p+ZPay6jhsOsRrKwaJElf9IQq03WIkv4FeMwMq221tfje1ByeFzfvd7PEKWGEKWTQRZLySWfVRRTQjmVbKWGOhLsZT+HaeY0bbTTQSfdXOcWffTzmAFeMcwoYyT5ygS/mA5hNgphip98J8kHRnnNSwZ4yH1uc4OrdHGR87RximYO0cgedlLLdqqoYAPrWMtKVrCcJSxiPmnMJUQp/Bsyk2xyyKOAQooopYwKtlDNDur5G7SBJo7RQiv/B+2hl3s84CkvGGKEOOYnxolj/mYmhBmDJ5ngCx95xxsGecYj4pB3iENeoZMO2mmlhaMcpIE4ZII6aqhmM3HMMkooopB88sghm0wySCeVlCjMCVFIYx4LWUwOeRSwhmLWU84mqqihll3sppEmjnOSs5zjEl1c4yZ99POE5wwxwns+840fTDFLFKaZZIJxkozxlmEGGSC+GF++Sy89dHOZC8Rr4lVnOMERDrCPBPXEX22jko2UEn+/mnxyWUYWC0gnNUQh/AEc0HJs6cex0gAAAABJRU5ErkJggg==)";this._eHue.style.backgroundSize="contain";if(navigator.appVersion.indexOf("MSIE 9")>-1){this._eSB.children[0].style.filter="progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffffff,endColorstr=#00ffffff,GradientType=1)";this._eSB.children[1].style.filter="progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000,endColorstr=#ff000000,GradientType=0)"}s=ColorPicker._tplCursor;this._cSB=createElement(s);this._cHue=createElement(s);this._cHue.style.width="100%";this._cAlpha=createElement(s);this._cAlpha.style.height="100%";this._eSB.appendChild(this._cSB);this._eHue.appendChild(this._cHue);this._eAlpha.appendChild(this._cAlpha);this._keyActionTab=ColorPickerTabKeyAction.None;let i=this.addEventListener.bind(this),n=this.removeEventListener.bind(this),l=document;i(this.hostElement,"mousedown",t=>{i(l,"mousemove",mouseMove);i(l,"mouseup",mouseUp);this._mouseDown(t)});i(this.hostElement,"touchstart",t=>{i(l,"touchmove",mouseMove);i(l,"touchend",mouseUp);this._mouseDown(t)});let mouseMove=t=>{this._mouseMove(t)},mouseUp=t=>{n(l,"mousemove",mouseMove);n(l,"mouseup",mouseUp);n(l,"touchmove",mouseMove);n(l,"touchend",mouseUp);this._mouseUp(t)};i(this.hostElement,"click",t=>{if(this.isDisabled)return;let e=t.target;if(e&&"DIV"==e.tagName&&contains(this._ePal,e)){let t=e.style.backgroundColor;t&&(this.value=new Color(t).toString());e.focus()}});i(this.hostElement,"keydown",t=>{this.isDisabled||this._keydown(t)});this.value="#ffffff";this.initialize(e);this._updatePanels();this._eSB.setAttribute("role","slider");this._eSB.setAttribute("aria-label",culture.ColorPicker.ariaLabels.satAndBrightnessPanel);this._eSB.setAttribute("aria-valuemin","0");this._eSB.setAttribute("aria-valuemax","100");this._eHue.setAttribute("role","slider");this._eHue.setAttribute("aria-label",culture.ColorPicker.ariaLabels.huePanel);this._eHue.setAttribute("aria-valuemin","0");this._eHue.setAttribute("aria-valuemax","360");this._eAlpha.setAttribute("role","slider");this._eAlpha.setAttribute("aria-label",culture.ColorPicker.ariaLabels.opacityPanel);this._eAlpha.setAttribute("aria-valuemin","0");this._eAlpha.setAttribute("aria-valuemax","100");this._ePal.setAttribute("role","grid");this._ePal.setAttribute("aria-label",culture.ColorPicker.ariaLabels.palettePanel);this._updateTabIndex()}static get controlTemplate(){ColorPicker._ctrlTemplate||(ColorPicker._ctrlTemplate=`<div style="position:relative;width:100%;height:100%"><div style="float:left;width:50%;height:100%;box-sizing:border-box;padding:2px"><div wj-part="div-pal"><div style="float:left;width:10%;box-sizing:border-box;padding:2px"><div style="background-color:black;width:100%"></div><div style="height:6px"></div></div></div><div wj-part="div-text" style="position:absolute;bottom:0px;display:none"></div></div><div style="float:left;width:50%;height:100%;box-sizing:border-box;padding:2px"><div wj-part="div-sb" class="${ColorPickerClsNames.colorBox}" style="float:left;width:89%;height:89%"><div style="position:absolute;width:100%;height:100%;background:linear-gradient(to right, white 0%,transparent 100%)"></div><div style="position:absolute;width:100%;height:100%;background:linear-gradient(to top, black 0%,transparent 100%)"></div></div><div style="float:left;width:1%;height:89%"></div><div style="float:left;width:10%;height:89%"><div wj-part="div-hue" class="${ColorPickerClsNames.colorBox}"></div></div><div style="float:left;width:89%;height:1%"></div><div style="float:left;width:89%;height:10%"><div style="width:100%;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuM4zml1AAAAAcSURBVBhXY/iPBBYgAWpKQGkwgMqDAdUk/v8HAM7Mm6GatDUYAAAAAElFTkSuQmCC)"><div wj-part="div-alpha" class="${ColorPickerClsNames.colorBox}"></div></div></div><div style="float:left;width:1%;height:10%"></div><div style="float:left;width:10%;height:10%"><div wj-part="div-pv" class="${ColorPickerClsNames.colorBox}" style="position:static"></div></div></div></div>`);return ColorPicker._ctrlTemplate}static set controlTemplate(t){ColorPicker._ctrlTemplate=t}get showAlphaChannel(){return"none"!=this._eAlpha.parentElement.style.display}set showAlphaChannel(t){this._eAlpha.parentElement.style.display=asBoolean(t)?"":"none"}get showColorString(){return"none"!=this._eText.style.display}set showColorString(t){this._eText.style.display=asBoolean(t)?"":"none";if(asBoolean(t)){this._eText.setAttribute("role","status");this._eText.setAttribute("aria-live","polite")}}get value(){return this._value}set value(t){if(t!=this.value){let e=this.value,s=(t=asString(t)).trim(),i=Color.fromString(s);if(i){let t=i.getHsb();this._value=s;this._eText.innerText=s;if(this._hsb[0]!=t[0]||this._hsb[1]!=t[1]||this._hsb[2]!=t[2]||this._alpha!=i.a){if(0==t[2]){t[0]=this._hsb[0];t[1]=this._hsb[1]}else 0==t[1]&&(t[0]=this._hsb[0]);this._hsb=t;this._alpha=i.a;this.onValueChanged()}else""===e&&this.onValueChanged()}else if(""===s){let e=new Color(t);this._hsb=e.getHsb();this._alpha=e.a;this._value=t;this._eText.innerText=s;this.onValueChanged()}}}get palette(){return this._palette}set palette(t){if((t=(t=asArray(t)).slice(0,10)).every(t=>null!=Color.fromString(t))){this._palette=t;this._updatePalette()}}get ariaLabel(){return this._ariaLabel}set ariaLabel(t){if(t!=this._ariaLabel){this._ariaLabel=t;setAttribute(this.hostElement,"aria-label",this._ariaLabel)}}get keyActionTab(){return this._keyActionTab}set keyActionTab(t){this._keyActionTab=t;if(t==ColorPickerTabKeyAction.All){this.tabOrder=0;this.hostElement.setAttribute("tabindex","-1")}this._updateTabIndex()}_setTabOrder(t){super._setTabOrder(t);this.isDisabled||this._updateTabIndex()}onValueChanged(t){this._refreshSelection();this.valueChanged.raise(this,t)}_mouseDown(t){this._htDown=this._getTargetPanel(t);if(this._htDown){t.preventDefault();this._htDown.focus();this._mouseMove(t)}}_mouseMove(t){if(!this.isDisabled){var e=t.touches?t.touches[0]:t,s=this._htDown;if(s){let t=s.getBoundingClientRect(),i=[...this._hsb],n=this._alpha;if(s==this._eHue)i[0]=clamp((e.clientY-t.top)/t.height,0,.99);else if(s==this._eSB){i[1]=clamp((e.clientX-t.left)/t.width,0,1);i[2]=clamp(1-(e.clientY-t.top)/t.height,0,1)}else s==this._eAlpha&&(n=clamp((e.clientX-t.left)/t.width,0,1));this._updateColor(i,n)}}}_mouseUp(t){this._htDown=null}_updateColor(t=this._hsb,e=this._alpha){let s=this._hsb[0]!==t[0]||this._hsb[1]!==t[1]||this._hsb[2]!==t[2],i=this._alpha!==e;if(s||i){this._hsb=t;this._alpha=e;let s=Color.fromHsb(t[0],t[1],t[2],e);this._value=s.toString();this._eText.innerText=this._value;this.onValueChanged()}}_updatePalette(){const t=new Color("#fff"),e=new Color("#000");this._ePal.innerHTML="";this._ePal.className="palette-grid";const s=Array.from({length:6},()=>{const t=document.createElement("div");t.className="palette-row";t.setAttribute("role","row");return t});let i=this.getActualTabIndex();for(let n=0;n<this._palette.length;n++){let l=new Color(this._palette[n]);const a=l.getHsb(),h=this._makePalEntry(l);h.innerHTML="&#8203";h.setAttribute("role","columnheader");h.setAttribute("aria-label",`${culture.ColorPicker.ariaLabels.baseColor} ${l.toString()}`);if(0===n){this._ePalMainFirst=h;this._ePalMainFirst.setAttribute("tabindex",i)}else h.setAttribute("tabindex","-1");s[0].appendChild(h);for(let l=0;l<5;l++){const h=0===a[1]?Color.interpolate(t,e,.1*l+(a[2]>.5?.05:.55)):Color.fromHsb(a[0],.1+.2*l,1-.1*l),r=this._makePalEntry(h);r.setAttribute("role","gridcell");r.setAttribute("aria-label",`${culture.ColorPicker.ariaLabels.shadeColor} ${h.toString()}`);if(0===n&&0===l){this._ePalShadeFirst=r;this._ePalShadeFirst.setAttribute("tabindex",i)}else setAttribute(r,"tabindex","-1");s[l+1].appendChild(r)}}s.forEach(t=>this._ePal.appendChild(t))}_makePalEntry(t){let e=document.createElement("div");e.className="palette-gridcell";setCss(e,{backgroundColor:t.toString()});return e}_updatePanels(){let t=Color.fromHsb(this._hsb[0],1,1,1),e=Color.fromHsb(this._hsb[0],this._hsb[1],this._hsb[2],1);this._eSB.style.backgroundColor=t.toString();this._eAlpha.style.background="linear-gradient(to right, transparent 0%, "+e.toString()+" 100%)";navigator.appVersion.indexOf("MSIE 9")>-1&&(this._eAlpha.style.filter="progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000,endColorstr="+e.toString()+", GradientType = 1)");let s=this.value.trim();this._ePreview.style.backgroundColor=s;this._cHue.style.top=(100*this._hsb[0]).toFixed(0)+"%";this._cSB.style.left=(100*this._hsb[1]).toFixed(0)+"%";this._cSB.style.top=(100-100*this._hsb[2]).toFixed(0)+"%";this._cAlpha.style.left=(100*this._alpha).toFixed(0)+"%";const i=this.getColorsDiv(),n=getActiveElement();if(this.keyActionTab===ColorPickerTabKeyAction.All&&!this.hostElement.contains(n)){if(this.isDisabled)return;let t=!1;for(let e=0;e<i.length;e++){let n=i[e].style.backgroundColor;if(Color.fromString(s).equals(Color.fromString(n))){i[e].focus();t=!0;break}}t||i[0].focus()}}getColorsDiv(){const t=Array.from(this._ePal.querySelectorAll('[role="columnheader"]')),e=Array.from(this._ePal.querySelectorAll('[role="gridcell"]'));return t.concat(e)}_getTargetPanel(t){let e=t.target;return contains(this._eSB,e)?this._eSB:contains(this._eHue,e)?this._eHue:contains(this._eAlpha,e)?this._eAlpha:null}getActualTabIndex(){const t=this.tabOrder.toString();return this.keyActionTab===ColorPickerTabKeyAction.All&&!0!==this.isDisabled?t:"-1"}_updateTabIndex(){let t=this.getActualTabIndex();this._eSB.setAttribute("tabindex",t);this._eHue.setAttribute("tabindex",t);this._eAlpha.setAttribute("tabindex",t);this._ePalMainFirst.setAttribute("tabindex",t);this._ePalShadeFirst.setAttribute("tabindex",t)}_setIsDisabled(t){super._setIsDisabled(t);this._updateTabIndex()}_updateAriaValues(){const t=this._hsb;this._eSB.setAttribute("aria-valuenow",(100*t[1]).toString());this._eSB.setAttribute("aria-valuetext",`${culture.ColorPicker.ariaLabels.saturation} ${Math.round(100*t[1])}%, ${culture.ColorPicker.ariaLabels.brightness} ${Math.round(100*t[2])}%`);this._eHue.setAttribute("aria-valuenow",(360*t[0]).toString());this._eHue.setAttribute("aria-valuetext",`${culture.ColorPicker.ariaLabels.hue} ${Math.round(360*t[0])} ${culture.ColorPicker.ariaLabels.degrees}`);this._eAlpha.setAttribute("aria-valuenow",(100*this._alpha).toString());this._eAlpha.setAttribute("aria-valuetext",`${culture.ColorPicker.ariaLabels.opacity} ${Math.round(100*this._alpha)}%`)}_keydown(t){const e=t.target;this._isInColorPalette(e)?this._handleColorNavigation(t,e):e!==this._eSB?e!==this._eHue?e!==this._eAlpha||this._handleAlphaNavigation(t):this._handleHSBNavigation(t,"hue"):this._handleHSBNavigation(t,"sb")}_isInColorPalette(t){return t&&"DIV"===t.tagName&&contains(this._ePal,t)}_handleColorNavigation(t,e){const s=this.getColorsDiv(),i=this.palette.length,n=s.findIndex(t=>t===e);let l=null;switch(t.key){case"ArrowDown":n<s.length-1&&(l=s[n+i]);break;case"ArrowUp":n>0&&(l=s[n-i]);break;case"ArrowRight":const t=n+1;t<s.length&&(l=s[t]);break;case"ArrowLeft":const e=n-1;e>=0&&(l=s[e])}if(l){const e=l.style.backgroundColor;e&&(this.value=new Color(e).toString());l.focus();t.preventDefault()}}_handleHSBNavigation(t,e){let s=[...this._hsb];s=s.map(t=>roundTo(t,2));const adjust=(t,e,i)=>{const n=Math.round(100*s[t]);s[t]=clamp((n+e)/100,0,i)};switch(t.key){case"ArrowLeft":"sb"===e&&adjust(1,-1,1);break;case"ArrowRight":"sb"===e&&adjust(1,1,1);break;case"ArrowUp":"sb"===e?adjust(2,1,1):adjust(0,-1,.99);break;case"ArrowDown":"sb"===e?adjust(2,-1,1):adjust(0,1,.99)}if(["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"].includes(t.key)){this._updateColor(s,void 0);t.preventDefault()}}_refreshSelection(){this._updatePanels();this._updateAriaValues()}_handleAlphaNavigation(t){let e=this._alpha;switch(t.key){case"ArrowLeft":e=clamp(e-.01,0,1);break;case"ArrowRight":e=clamp(e+.01,0,1);break;default:return}this._updateColor(void 0,e);t.preventDefault()}}ColorPicker._ctrlTemplate="";ColorPicker._tplCursor='<div class="wj-colorpicker-cursor"></div>';_addCultureInfo("CollectionViewNavigator",{ariaLabels:{byPage:{btnFirst:"Navigate to first page",btnPrev:"Navigate to previous page",btnNext:"Navigate to next page",btnLast:"Navigate to last page"},byItem:{btnFirst:"Navigate to first item",btnPrev:"Navigate to previous item",btnNext:"Navigate to next item",btnLast:"Navigate to last item"}}});export class CollectionViewNavigator extends Control{constructor(t,e){super(t);this._view=null;this._byPage=!1;this._fmt="{current:n0} / {count:n0}";this._liveRegionON=!1;this._ariaLabel="";let s=this.getTemplate();this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${CollectionViewNavigatorClsNames.pager} ${CollectionViewNavigatorClsNames.hostElement}`,s,{_btnFirst:"btn-first",_btnPrev:"btn-prev",_txtCurr:"txt-curr",_btnNext:"btn-next",_btnLast:"btn-last"},"input");this.hostElement.tabIndex=-1;this._updateAriaLabels();const i=uidGenerator();this._txtCurr.id=i;[this._btnFirst,this._btnPrev,this._btnNext,this._btnLast].forEach(t=>{setAttribute(t.firstElementChild,"aria-controls",this._txtCurr.id)});setAttribute(this.hostElement.firstElementChild,"role","group");setAttribute(this._txtCurr,"role","status");this._rptNext=new _ClickRepeater(this._btnNext.querySelector("button"));this._rptPrev=new _ClickRepeater(this._btnPrev.querySelector("button"));this.addEventListener(this.hostElement,"click",this._click.bind(this));this.addEventListener(this.hostElement,"keydown",this._keydown.bind(this));setAttribute(this.hostElement,"role","navigation");this._addA11yRelatedHandlers();this.initialize(e);this._update()}static get controlTemplate(){CollectionViewNavigator._ctrlTemplate||(CollectionViewNavigator._ctrlTemplate=`<div class="${InputClsNames.inputGroup}"><span wj-part="btn-first" class="${InputClsNames.inputGroupBtn}"><button class="${InputFormElementsClsNames.btn} ${InputFormElementsClsNames.btnDefault}"><span class="${GlyphClsNames.stepBackward}"></span></button></span><span wj-part="btn-prev" class="${InputClsNames.inputGroupBtn}"> <button class="${InputFormElementsClsNames.btn} ${InputFormElementsClsNames.btnDefault}"><span class="${GlyphClsNames.left}"></span> </button></span><span wj-part="txt-curr" tabIndex="0"></span><span wj-part="btn-next" class="${InputClsNames.inputGroupBtn}"><button class="${InputFormElementsClsNames.btn} ${InputFormElementsClsNames.btnDefault}"><span class="${GlyphClsNames.right}"></span></button></span><span wj-part="btn-last" class="${InputClsNames.inputGroupBtn}"><button class="${InputFormElementsClsNames.btn} ${InputFormElementsClsNames.btnDefault}"><span class="${GlyphClsNames.stepForward}"></span></button></span></div>`);return CollectionViewNavigator._ctrlTemplate}static set controlTemplate(t){CollectionViewNavigator._ctrlTemplate=t}get cv(){return this._view}set cv(t){if(t!=this._view){let e=this._view;if(e){e.collectionChanged.removeHandler(this._collectionChanged);e.currentChanged.removeHandler(this._currentChanged)}e=this._view=asType(t,"ICollectionView",!0);this._update();if(e){e.collectionChanged.addHandler(this._collectionChanged,this);e.currentChanged.addHandler(this._currentChanged,this)}}}get byPage(){return this._byPage}set byPage(t){if(t!=this._byPage){this._byPage=asBoolean(t);this._update();this._updateAriaLabels()}}get headerFormat(){return this._fmt}set headerFormat(t){if(t!=this._fmt){this._fmt=asString(t);this._update()}}get repeatButtons(){return!this._rptNext.disabled}set repeatButtons(t){this._rptNext.disabled=this._rptPrev.disabled=!asBoolean(t)}get ariaLabel(){if(this.hostElement){const t=this.hostElement.getAttribute("aria-label");if(t)return t}return this._ariaLabel}set ariaLabel(t){if(this.ariaLabel!==t){this._ariaLabel=t;this.hostElement&&setAttribute(this.hostElement,"aria-label",t)}}get isDisabled(){return this._isDisabled}set isDisabled(t){this._setIsDisabled(t)}focus(){let t=this._e;t&&t.offsetHeight&&(this.isDisabled||moveFocus(t,0)||this._txtCurr.tabIndex>=0&&this._txtCurr.focus())}_update(){let t=this._view,e=this._byPage,s=t?e?t.pageIndex:t.currentPosition:0,i=t?e?t.pageCount:t.itemCount:0;if(this.isDisabled)[this._btnFirst,this._btnPrev,this._btnNext,this._btnLast].forEach(t=>{enable(t,!1)});else{enable(this._btnFirst,t&&s>0);enable(this._btnPrev,t&&s>0);enable(this._txtCurr,null!=t);enable(this._btnNext,t&&s<i-1);enable(this._btnLast,t&&s<i-1)}this._updateTabIndex();this._txtCurr.textContent=format(this._fmt,{current:t?s+1:0,count:t?i:0,currentItem:t?t.currentPosition+1:0,itemCount:t?t.itemCount:0,currentPage:t?t.pageIndex+1:0,pageCount:t?t.pageCount:0})}_currentChanged(){this._update()}_collectionChanged(){this._update()}_click(t){let e=t.target,s=this._view,i=this._byPage;if(s){contains(this._btnFirst,e)?i?s.moveToFirstPage():s.moveCurrentToFirst():contains(this._btnPrev,e)?i?s.moveToPreviousPage():s.moveCurrentToPrevious():contains(this._btnNext,e)?i?s.moveToNextPage():s.moveCurrentToNext():contains(this._btnLast,e)&&(i?s.moveToLastPage():s.moveCurrentToLast());(this.byPage?s.pageIndex>=s.pageCount-1||s.pageIndex<=0:s.currentPosition>=s.itemCount-1||s.currentPosition<=0)&&!this.isDisabled&&this._txtCurr.tabIndex>=0&&this._txtCurr.focus();t.preventDefault()}}_updateAriaLabels(){let t=culture.CollectionViewNavigator.ariaLabels[this._byPage?"byPage":"byItem"];setAttribute(this._btnFirst.firstElementChild,"aria-label",t.btnFirst);setAttribute(this._btnPrev.firstElementChild,"aria-label",t.btnPrev);setAttribute(this._btnNext.firstElementChild,"aria-label",t.btnNext);setAttribute(this._btnLast.firstElementChild,"aria-label",t.btnLast)}_addA11yRelatedHandlers(){this.addEventListener(this._txtCurr,"focus",t=>{if(this._txtCurr===document.activeElement){setAttribute(this._txtCurr,"aria-live","off");setAttribute(this._txtCurr,"aria-label",this._txtCurr.textContent);this._liveRegionON=!1}});this.addEventListener(this._txtCurr,"blur",t=>{this._txtCurr!==document.activeElement&&this._txtCurr.removeAttribute("aria-label")});[this._btnFirst.firstElementChild,this._btnPrev.firstElementChild,this._btnNext.firstElementChild,this._btnLast.firstElementChild].forEach(t=>{this.addEventListener(t,"focus",t=>{setTimeout(()=>{if(!this._liveRegionON){const t=_isMacOS()?"polite":"assertive";setAttribute(this._txtCurr,"aria-live",t);this._liveRegionON=!0}})})})}_setTabOrder(t){let e=this._e,s=null!=this._txtCurr.getAttribute("disabled");this._orgTabIndex=t;if(this.isDisabled||s){e.tabIndex=-1;this._txtCurr.tabIndex=-1}else s||(this._txtCurr.tabIndex=this._orgTabIndex)}_keydown(t){if(contains(this._txtCurr,t.target)&&(t.ctrlKey||t.metaKey)&&("A"===t.key||"a"===t.key)){t.preventDefault();const e=document.createRange();e.selectNodeContents(this._txtCurr);const s=window.getSelection();s.removeAllRanges();s.addRange(e)}}_setIsDisabled(t){if((t=!!asBoolean(t,!0))!=this.isDisabled){let e=this._e;if(e){this._isDisabled=t;toggleClass(e,ControlStateClsNames.disabled,t);this._update();this._txtCurr.tabIndex=t?-1:this._orgTabIndex}}}_updateTabIndex(){[this._btnFirst,this._btnPrev,this._btnNext,this._btnLast].forEach(t=>{if(this._isDisabled)t.firstElementChild.setAttribute("tabindex","-1");else{t.firstElementChild.disabled?t.firstElementChild.setAttribute("tabindex","-1"):t.firstElementChild.setAttribute("tabindex",this._orgTabIndex.toString())}})}}CollectionViewNavigator._ctrlTemplate="";_addCultureInfo("Listbox",{ariaLabels:{listBox:"list box"}});export class ListBox extends Control{constructor(t,e){super(t,null,!0);this._cv=null;this._itemFormatter=null;this._pathDisplay=new Binding("");this._pathValue=new Binding("");this._pathChecked=new Binding("");this._html=!1;this._shGroups=!1;this._checkedItems=[];this._itemRole="option";this._caseSensitive=!1;this._addMode=!1;this._isShiftDown=!1;this._shouldClearOnShift=!0;this._vThreshold=ListBox._VTHRESH;this._isVirtual=!1;this._children=[];this._ignoreItemFormatterTextArray=[];this._itemFormatterHelper=document.createElement("div");this._clientHeight=-1;this._itemHeight=30;this._itemsAbove=-1;this._itemsBelow=-1;this._eSizer=document.createElement("div");this._ePadTop=document.createElement("div");this._ePadBot=document.createElement("div");this._checking=!1;this._ignoredItemChangedEvents=!1;this._search="";this._fmtItemHandlers=0;this._itemCount=0;this._oldSel=null;this._container=null;this._oldSelectedIndex=-1;this._ariaLabel=culture.Listbox.ariaLabels.listBox;this._isNeedUpdateBnd=!0;this.selectedIndexChanged=new Event;this.itemsChanged=new Event;this.loadingItems=new Event;this.loadedItems=new Event;this.itemChecked=new Event;this.checkedItemsChanged=new Event;this.formatItem=new Event(()=>{this.invalidate()});this._handleKeyUp=t=>{if("Shift"===t.key){this._isShiftDown=!1;this._shouldClearOnShift=!0}};this.applyTemplate(`${ControlClsNames.hostElement} ${ControlClsNames.content} ${ListBoxClsNames.hostElement}`,null,null);let s=this.hostElement;setAttribute(s,"role","listbox",!0);this._updateAriaLabel();"SELECT"==this._orgTag&&this._initFromSelect(this.hostElement);this.addEventListener(s,"click",this._click.bind(this));this.addEventListener(s,"keydown",this._keydown.bind(this));this.addEventListener(s,"keypress",this._keypress.bind(this));this.addEventListener(s,"keyup",this._handleKeyUp.bind(this));this.addEventListener(s,"wheel",t=>{if(s.scrollHeight>s.offsetHeight&&(t.deltaY<0&&0==s.scrollTop||t.deltaY>0&&s.scrollTop+s.offsetHeight>=s.scrollHeight)){t.preventDefault();t.stopPropagation();t.stopImmediatePropagation()}});[this._eSizer,this._ePadTop,this._ePadBot].forEach(t=>{t.tabIndex=-1;setAttribute(t,"aria-hidden",!0);setCss(t,{pointerEvents:"none",opacity:"0"})});this.initialize(e);this._updateViewRange();this.addEventListener(this.hostElement,"scroll",t=>{this._updateViewRange()})}get ariaLabelledBy(){return this.hostElement.getAttribute("aria-labelledby")}set ariaLabelledBy(t){_setAriaLabelBy(this,this.hostElement,t,this._updateAriaLabel.bind(this))}get itemsSource(){return this._items}set itemsSource(t){if(this._items!=t){if(this._cv){this._cv.currentChanged.removeHandler(this._cvCurrentChanged,this);this._cv.collectionChanged.removeHandler(this._cvCollectionChanged,this);this._cv=null}this._items=t;this._cv=asCollectionView(t);if(null!=this._cv){this._cv.currentChanged.addHandler(this._cvCurrentChanged,this);this._cv.collectionChanged.addHandler(this._cvCollectionChanged,this)}this._populateList();this.onItemsChanged();this.onSelectedIndexChanged()}}get collectionView(){return this._cv}get virtualizationThreshold(){return this._vThreshold}set virtualizationThreshold(t){if(t!=this._vThreshold){let e=this._getVirtual();this._vThreshold=asNumber(t,!1,!0);e!=this._getVirtual()&&this._populateList()}}get showGroups(){return this._shGroups}set showGroups(t){if(t!=this._shGroups){this._shGroups=asBoolean(t);this._populateList()}}get isContentHtml(){return this._html}set isContentHtml(t){if(t!=this._html){this._html=asBoolean(t);this._populateList()}}get itemFormatter(){return this._itemFormatter}set itemFormatter(t){if(t!=this._itemFormatter){this._itemFormatter=asFunction(t);this._populateList()}}get displayMemberPath(){return this._pathDisplay.path}set displayMemberPath(t){if(t!=this.displayMemberPath){this._pathDisplay.path=asString(t);this._populateList()}}get selectedValuePath(){return this._pathValue.path}set selectedValuePath(t){this._pathValue.path=asString(t)}get checkedMemberPath(){return this._pathChecked.path}set checkedMemberPath(t){if(t!=this.checkedMemberPath){this._pathChecked.path=asString(t);setAttribute(this.hostElement,"aria-multiselectable",""!==this.checkedMemberPath?"true":"false");this._populateList()}}get caseSensitiveSearch(){return this._caseSensitive}set caseSensitiveSearch(t){this._caseSensitive=asBoolean(t)}get itemRole(){return this._itemRole}set itemRole(t){if(t!=this.itemRole){this._itemRole=asString(t);this._populateList()}}getDisplayValue(t,e){let s=null;if(t>-1&&hasItems(this._cv)){s=this._cv.items[t];this.displayMemberPath&&(s=this._pathDisplay.getValue(s))}let i=null!=s?s.toString():"";this._itemFormatter&&!e&&(i=this._itemFormatter(t,i));return i}getDisplayText(t){return this._getDisplayText(t)}_getDisplayText(t,e){if(e&&this._ignoreItemFormatterTextArray[t])return this._ignoreItemFormatterTextArray[t];let s=this._getChild(t);return null!=s?s.textContent:""}isItemEnabled(t){var e=this._getChild(t);return null!=e&&!e.hasAttribute("disabled")&&!hasClass(e,ControlStateClsNames.disabled)&&!hasClass(e,UtilitesClsNames.separator)}get selectedIndex(){return this._cv?this._cv.currentPosition:-1}set selectedIndex(t){if(this._cv){this._oldSelectedIndex=this._cv.currentPosition;this._cv.moveCurrentToPosition(asNumber(t))}}get selectedItem(){return this._cv?this._cv.currentItem:null}set selectedItem(t){this._cv&&this._cv.moveCurrentTo(t)}get selectedValue(){let t=this.selectedItem;t&&this.selectedValuePath&&(t=this._pathValue.getValue(t));return t}set selectedValue(t){let e=this._cv,s=e?e.items:null,i=this.selectedValuePath,n=-1;if(s){for(let e=0;e<s.length;e++){let l=s[e],a=i?this._pathValue.getValue(l):l;if(a===t||DateTime.equals(a,t)){n=e;break}if(this.isContentHtml&&isString(a)&&a.indexOf("<")>-1&&toPlainText(a)===t){n=e;break}}this.selectedIndex=n}}get maxHeight(){let t=this.hostElement,e=t?parseFloat(t.style.maxHeight):null;return isNaN(e)?null:e}set maxHeight(t){let e=this.hostElement;if(e){t=asNumber(t,!0);e.style.maxHeight=null==t?"":t+"px"}}showSelection(t=this.containsFocus()){let e=this.hostElement,s=this._children,i=this._getSelectedElement(!1),n=new Rect(0,0,0,0);if(i!=this._oldSel){this._updateItemAttributes(i,!0);this._updateItemAttributes(this._oldSel,!1);this._oldSel=i}i instanceof HTMLElement?n=this._getBoundingClientRect(i):this._children.length>0&&(n=this._getBoundingClientRect(this._getChild(0)));let l=this._getBoundingClientRect(e),a=0;if(this._shGroups){a=this._itemHeight;if(!this._isVirtual){let t=s[0];t&&t.offsetHeight&&hasClass(t,ListBoxClsNames.header)&&(a=t.offsetHeight)}}n.bottom>l.bottom?e.scrollTop+=n.bottom-l.bottom:n.top<l.top+a&&(e.scrollTop-=l.top+a-n.top);this._updateViewRange();i=this._getSelectedElement(!0);setAttribute(e,"aria-activedescendant",i?i.id:null);if(t){(i&&!contains(i,getActiveElement())?i:e).focus()}e.tabIndex=i?-1:this._orgTabIndex}loadList(){this._populateList()}getItemChecked(t){let e=this._cv.items[t],s=this._pathChecked;return isObject(e)&&s.path?s.getValue(e):this._getCheckboxState(t)}setItemChecked(t,e){this._setItemChecked(t,e,!0)}toggleItemChecked(t){this.setItemChecked(t,!this.getItemChecked(t))}get checkedItems(){return this._checkedItems}set checkedItems(t){t=Array.from(new Set(t));let e=asArray(t,!1);if(!this._arrayEquals(e,this._checkedItems)){this._updateCheckedList(e);if(!this._arrayEquals(e,this._checkedItems)){this._checkedItems=e;this.onCheckedItemsChanged()}}}indexOf(t){return(t=closest(t,"."+ListBoxClsNames.listBoxItem))?t[ListBox._DIDX_KEY]:-1}onSelectedIndexChanged(t){this.selectedIndexChanged.raise(this,t)}onItemsChanged(t){this.itemsChanged.raise(this,t)}onLoadingItems(t){this.loadingItems.raise(this,t)}onLoadedItems(t){this.loadedItems.raise(this,t)}onItemChecked(t){this.itemChecked.raise(this,t)}onCheckedItemsChanged(t){this.checkedItemsChanged.raise(this,t)}onFormatItem(t){this.formatItem.raise(this,t)}refresh(t=!0){super.refresh(t);if(this.hostElement){let t=this._cv?this._cv.items.length:0,e=this.formatItem.handlerCount;if(t!=this._itemCount||e!=this._fmtItemHandlers){this._f