smart-webcomponents-angular
Version:
[](https://jqwidgets.com/license/)
6 lines (4 loc) • 86.9 kB
JavaScript
/* Smart UI v25.0.4 (2025-11-28)
Copyright (c) 2011-2024 jQWidgets.
License: https://htmlelements.com/license/ */ //
Smart("smart-list-item",class extends Smart.ContentElement{static get properties(){return{alternationIndex:{value:-1,type:"int"},color:{value:"",type:"string"},displayMode:{allowedValues:["plain","checkBox","radioButton"],value:"plain",type:"string"},grouped:{value:!1,type:"boolean"},selected:{value:!1,type:"boolean"},indeterminate:{value:!1,type:"boolean"},value:{value:"",type:"any"},valueName:{value:"",type:"any"},label:{value:"",type:"string"},sanitizeHTML:{value:!1,type:"boolean"},details:{value:"",type:"string"},group:{value:"",type:"string"},hidden:{value:!1,type:"boolean"},readonly:{value:!1,type:"boolean"}}}get hasStyleObserver(){return!1}get enableShadowDOM(){return!1}get _focused(){const e=this;return void 0===e.__focused&&(e.__focused=!1),e.__focused}set _focused(e){const t=this;t.__focused=e,e?(t.setAttribute("focus",""),t.ownerListBox&&t.ownerListBox.ownerElement&&Smart.ComboBox&&t.ownerListBox.ownerElement instanceof Smart.ComboBox&&t.ownerListBox.ownerElement.$.input.setAttribute("aria-activedescendant",t.id)):t.removeAttribute("focus")}template(){return'<div id="container">\n <span id=\'itemInput\' class=\'smart-input smart-hidden\'></span>\n <span class="smart-overlay" id="overlay"></span>\n <div id="itemContainer" class="smart-list-item-label-element smart-content smart-list-item-container"><span class="smart-content-label" inner-h-t-m-l=\'[[innerHTML]]\' role="presentation"><content></content></span><span inner-h-t-m-l=\'[[details]]\' id="details" class="smart-content-details"></span></div>\n </div>'}appendChild(e){const t=this;if(!t.isCompleted||e.classList&&e.classList.contains("smart-ripple")){const e=Array.prototype.slice.call(arguments,2);return HTMLElement.prototype.appendChild.apply(t,e.concat(Array.prototype.slice.call(arguments)))}window.smartBlazor?t.$.itemContainer.appendChild(e):(t.$.itemContainer.innerHTML="",e instanceof HTMLElement&&t.$.itemContainer.appendChild(e))}insertBefore(e,t){const i=this;if(!i.isCompleted){const e=Array.prototype.slice.call(arguments,2);return HTMLElement.prototype.insertBefore.apply(i,e.concat(Array.prototype.slice.call(arguments)))}t.parentNode.insertBefore(e,t)}removeChild(e){const t=this;if(!t.isCompleted||e.classList.contains("smart-ripple")){const e=Array.prototype.slice.call(arguments,2);return HTMLElement.prototype.removeChild.apply(t,e.concat(Array.prototype.slice.call(arguments)))}e instanceof HTMLElement&&t.$.itemContainer.removeChild(e)}attached(){const e=this;super.attached(),e.ownerListBox=e.getListBox(),e.ownerListBox&&(e.ownerListBox.onClick&&(e.onpointerdown=t=>{e.ownerListBox.onClick(t)}),e.ownerListBox.onDoubleClick&&(e.ondblclick=t=>{e.ownerListBox.onDoubleClick(t)}))}static get listeners(){return{mouseenter:"_itemOnMouseEnter",mouseleave:"_itemOnMouseLeave"}}ready(){super.ready();const e=this;if(e.setAttribute("role","option"),""!==e.label){let t=e.label;t&&"string"==typeof t&&e.sanitizeHTML&&(t=t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")),e.innerHTML=t}else""!==e.innerHTML&&(e.label=e.innerHTML);e._setDisplayMode(e.displayMode),e._setItemColor(),e.$.container.noRipple=!0;const t=e.closest("smart-list-box");if(t&&t.isRendered){if(cancelAnimationFrame(Smart.ListBox.processTimer),t._inLazyInit||t._isUpdating)return;Smart.ListBox.processTimer=requestAnimationFrame((()=>{t._lazyInitItems()}))}}propertyChangedHandler(e,t,i){const l=this;if(super.propertyChangedHandler(e,t,i),"hidden"===e)i?l.$.addClass("smart-hidden"):l.$.removeClass("smart-hidden");else if("color"===e)l._setItemColor();else if("displayMode"===e)l._setDisplayMode(i);else if("label"===e||"value"===e){const t=l.context;l.context=document,"label"===e&&(l.innerHTML=i);const r=l.getListBox();r&&(r._applyTemplate(l),r.onItemUpdated(l)),l.context=t}else if("details"===e){const e=l.context;l.context=document,l.$.details.innerHTML=i;const t=l.getListBox();t&&t.onItemUpdated(l),l.context=e}else if("innerHTML"===e){const e=l.getListBox();e&&e.onItemUpdated(l)}else if("selected"===e)if(i)l.setAttribute("aria-selected",!0);else{const e=l.getListBox();l.readonly||l.disabled||!e||-1===["oneOrManyExtended","zeroOrMany","oneOrMany","checkBox"].indexOf(e.selectionMode)?l.removeAttribute("aria-selected"):l.setAttribute("aria-selected",!1)}}getListBox(){const e=this;if(!Smart.ListBox)return e.getRootNode().host;let t=e.parentNode;for(;t instanceof Smart.ListBox==0&&null!==t;)t=t.parentNode;return!t&&Smart.EnableShadowDOM?e.getRootNode().host:t}_itemOnMouseEnter(){const e=this;!e.disabled&&e.ownerListBox&&(Smart.ListBox.DragDrop.Dragging&&e.ownerListBox.allowDrop&&(Smart.ListBox.DragDrop.DropDetails={item:e,position:"bottom"}),e.ownerListBox.$.verticalScrollBar.thumbCapture||e.ownerListBox.$.horizontalScrollBar.thumbCapture||(e.ownerListBox&&e.ownerListBox.$.fireEvent("itemHover",{label:e.label,value:e.value,disabled:e.disabled,selected:e.selected}),e.setAttribute("hover","")))}_itemOnMouseMove(e){const t=this;if(t.ownerListBox&&Smart.ListBox.DragDrop.Dragging&&t.ownerListBox.allowDrop&&!Smart.Utilities.Core.isMobile){const i=[].slice.call(t.ownerListBox.getElementsByClassName("smart-list-item-bottom-line-feedback"));for(let e=0;e<i.length;e++)i[e].$.removeClass("smart-list-item-line-feedback"),i[e].$.removeClass("smart-list-item-bottom-line-feedback");if(Smart.ListBox.DragDrop.DropDetails={item:t,position:"top"},!t.ownerListBox._areCSSVarsSupported){if(t.ownerListBox._indexOf(t)===t.ownerListBox._items.length-1||t.parentNode.lastElementChild===t){const i=t.getBoundingClientRect();e.pageY-window.pageYOffset>i.top+i.height/2-1&&(Smart.ListBox.DragDrop.DropDetails={item:t,position:"bottom"})}return}if(t.$.removeClass("smart-list-item-line-feedback"),t.$.removeClass("smart-list-item-bottom-line-feedback"),t.ownerListBox.sorted&&t.ownerListBox.autoSort)return;const l=t.ownerListBox._items.filter((e=>!e.hidden));if(l.indexOf(t)===l.length-1||t.parentNode.lastElementChild===t){const i=t.getBoundingClientRect();e.pageY-window.pageYOffset>i.top+i.height/2-1?(t.$.addClass("smart-list-item-bottom-line-feedback"),Smart.ListBox.DragDrop.DropDetails={item:t,position:"bottom"}):arguments[1]||t.$.addClass("smart-list-item-line-feedback")}else arguments[1]||t.$.addClass("smart-list-item-line-feedback")}}_itemOnMouseLeave(){const e=this;e.ownerListBox&&(Smart.ListBox.DragDrop.Dragging&&(e.$.removeClass("smart-list-item-line-feedback"),e.$.removeClass("smart-list-item-bottom-line-feedback")),e.removeAttribute("hover"))}_setDisplayMode(e){const t=this,i=t.getListBox();if(i){const l="checkBox"===i.selectionMode||"radioButton"===i.selectionMode?i.selectionMode:"plain";t.displayMode=e=l}"plain"!==e?t.$itemInput.removeClass("smart-hidden"):t.$itemInput.addClass("smart-hidden")}_setItemColor(){const e=this,t=e.querySelector(".smart-content-label"),i=/(^#[0-9A-F]{3}$)|(^#[0-9A-F]{6}$)|(^#[0-9A-F]{8}$)/i.test(e.color)?e.color:"";t.style.backgroundColor=i,t.style.color=e._getContrastColor(i)}_getContrastColor(e){if(!e)return"";let t=(i=e.slice(1,3),l=e.slice(3,5),r=e.slice(5,7),[parseInt(i,16),parseInt(l,16),parseInt(r,16)]);var i,l,r;return parseFloat(((.299*t[0]+.61*t[1]+.114*t[2])/255).toFixed(2))>.65?"#000000":"#FFFFFF"}}),Smart("smart-list-items-group",class extends Smart.ContentElement{static get properties(){return{label:{value:"",type:"string"}}}get enableShadowDOM(){return!1}template(){return'<div id="container" role="presentation">\n <span id="itemsLabel" class="smart-list-items-group-label">[[label]]</span>\n <div id="listItemsGroupContainer" inner-h-t-m-l=\'[[innerHTML]]\' class="smart-list-items-group-container" role="presentation">\n <content></content>\n </div>\n </div>'}appendChild(e){const t=this;if(!t.isCompleted){const e=Array.prototype.slice.call(arguments,2);return HTMLElement.prototype.appendChild.apply(t,e.concat(Array.prototype.slice.call(arguments)))}e instanceof HTMLElement&&t.$.listItemsGroupContainer.appendChild(e)}removeChild(e){const t=this;if(!t.isCompleted){const e=Array.prototype.slice.call(arguments,2);return HTMLElement.prototype.removeChild.apply(t,e.concat(Array.prototype.slice.call(arguments)))}e instanceof HTMLElement&&t.$.listItemsGroupContainer.removeChild(e)}getListBox(){let e=this.parentNode;for(;e instanceof Smart.ListBox==0&&null!==e;)e=e.parentNode;return e}attached(){const e=this;super.attached(),e.ownerListBox||(e.ownerListBox=e.getListBox()),e.setAttribute("role","group"),e.$.itemsLabel.id||(e.$.itemsLabel.id=e.id+"Label"),e.setAttribute("aria-labelledby",e.$.itemsLabel.id)}}),Smart("smart-list-box",class extends Smart.ScrollViewer{static get properties(){return{allowDrag:{value:!1,type:"boolean"},allowDrop:{value:!1,type:"boolean"},alternationStart:{value:0,type:"int"},alternationEnd:{value:0,type:"int"},alternationCount:{value:0,type:"int"},autoSort:{value:!0,type:"boolean"},dataSource:{value:null,type:"any?",reflectToAttribute:!1},dragFeedbackFormatFunction:{value:null,type:"function?"},dragOffset:{value:[10,10],type:"array"},displayLoadingIndicator:{value:!1,type:"boolean"},displayMember:{value:"",type:"string"},shadowDomMode:{allowedValues:["light","shadow"],value:"shadow",type:"string"},dropAction:{value:"move",type:"string",allowedValues:["copy","move","none"]},editable:{value:!1,type:"boolean"},filterable:{value:!1,type:"boolean"},filterCallback:{value:null,type:"function?"},filterMode:{value:"containsIgnoreCase",allowedValues:["contains","containsIgnoreCase","doesNotContain","doesNotContainIgnoreCase","equals","equalsIgnoreCase","startsWith","startsWithIgnoreCase","endsWith","endsWithIgnoreCase","custom"],type:"string"},filterInputPlaceholder:{value:"",type:"string"},grouped:{value:!1,type:"boolean"},groupMember:{value:"",type:"string"},itemTemplate:{value:null,type:"any"},itemHeight:{value:null,type:"number?"},incrementalSearchDelay:{value:700,type:"number?"},incrementalSearchMode:{value:"startsWithIgnoreCase",allowedValues:["contains","containsIgnoreCase","doesNotContain","doesNotContainIgnoreCase","equals","equalsIgnoreCase","startsWith","startsWithIgnoreCase","endsWith","endsWithIgnoreCase"],type:"string"},itemMeasureMode:{value:"auto",allowedValues:["auto","precise"],type:"string"},loadingIndicatorPlaceholder:{value:"Loading...",type:"string"},loadingIndicatorPosition:{value:"center",allowedValues:["bottom","center","top"],type:"string"},messages:{extend:!0,value:{en:{selectAll:"(Select All)",overridingProperties:'{{elementType}}: Overriding properties {{property1}} and {{property2}} applied. The "{{property1}}" property is used by default.',invalidIndex:'{{elementType}}: "{{method}}" method accepts an index of type number or an Array of numbers.',indexOutOfBound:'{{elementType}}: Out of bound index/indexes in "{{method}}" method.',invalidItem:'{{elementType}}: "{{method}}" method accepts an object or an array of objects as it\'s second parameter.',invalidSettings:'{{elementType}}: "{{method}}" method accepts a string or an object as it\'s second parameter.'}},type:"object"},name:{value:"",type:"string"},placeholder:{value:"No Items",type:"string"},selectedIndexes:{value:[],type:"array"},selectedValues:{value:[],type:"array"},selectionMode:{value:"oneOrManyExtended",allowedValues:["none","oneOrManyExtended","zeroOrMany","oneOrMany","zeroOrOne","zeroAndOne","one","checkBox","radioButton"],type:"string"},selectAll:{value:!1,type:"boolean"},selectionChangeAction:{value:"release",allowedValues:["press","release"],type:"string"},sorted:{value:!1,type:"boolean"},sortDirection:{value:"asc",type:"string"},topVisibleIndex:{value:-1,type:"int"},type:{value:"list",type:"string",defaultReflectToAttribute:!0,readonly:!0},valueMember:{value:"",type:"string"},virtualized:{value:!1,type:"boolean"},onClick:{value:null,type:"any",reflectToAttribute:!1},onDoubleClick:{value:null,type:"any",reflectToAttribute:!1}}}static get requires(){return{"Smart.ScrollBar":"smart.scrollbar.js"}}static get styleUrls(){return["smart.listbox.css","smart.dropdown.css","smart.scrollbar.css"]}static get listeners(){return{focus:"_focusHandler",blur:"_blurHandler","container.wheel":"_mouseWheelHandler","editInput.change":"_editInputEventHandler","editInput.blur":"_editInputEventHandler","editInput.keydown":"_editInputEventHandler","horizontalScrollBar.change":"_horizontalScrollbarHandler","itemsInnerContainer.down":"_downHandler","itemsInnerContainer.dblclick":"_dblclickEventHandler","itemsInnerContainer.move":"_itemsContainerMoveHandler","itemsContainer.mouseleave":"_mouseLeaveHandler","itemsInnerContainer.touchmove":"_touchmoveHandler","itemsInnerContainer.touchstart":"_touchstartHandler","document.move":"_moveHandler",keydown:"_keyDownHandler",keyup:"_keyUpHandler",resize:"_resizeHandler",selectstart:"_selectStartHandler",styleChanged:"_styleChangedHandler",swipeleft:"_swipeLeftHandler",swiperight:"_swipeRightHandler",touchmove:"_overriddenHandler",touchstart:"_overriddenHandler","verticalScrollBar.change":"_verticalScrollbarHandler"}}template(){return'<div id="container" class="smart-container" role="presentation">\n <div class="smart-list-box-filter-input-container smart-hidden" id="filterInputContainer" role="presentation"><input id="filterInput" disabled="[[disabled]]" placeholder=\'[[filterInputPlaceholder]]\' role="searchbox" aria-label="Filter Input"></div>\n <div id="itemsContainer" class="smart-list-items-container" role="presentation">\n <div id="placeholder" class="smart-placeholder" role="presentation" aria-hidden="true">[[placeholder]]</div>\n <div id="itemsInnerContainer" inner-h-t-m-l=\'[[innerHTML]]\' class="smart-list-items-inner-container" role="presentation">\n <content></content>\n </div>\n <input type="text" id="editInput" class= "smart-hidden"/>\n </div>\n <smart-scroll-bar wait theme="[[theme]]" right-to-left="[[rightToLeft]]" id="verticalScrollBar" disabled="[[disabled]]" orientation="vertical"></smart-scroll-bar>\n <smart-scroll-bar wait theme="[[theme]]" right-to-left="[[rightToLeft]]" id="horizontalScrollBar" disabled="[[disabled]]"></smart-scroll-bar>\n <div id="loadingIndicatorContainer" class="smart-loader-container" role="presentation">\n <span id="loadingIndicator" class="smart-loader" role="img" aria-label="[[loadingIndicatorPlaceholder]]"></span>\n <span id="loadingIndicatorPlaceHolder" class="smart-loader-label smart-hidden">[[loadingIndicatorPlaceholder]]</span>\n </div>\n <input id="hiddenInput" type="hidden" name="[[name]]">\n </div>'}get value(){const e=this;return e.isRendered&&e._selectedItems.length>0?e._selectedItems.map((e=>({label:e.label,value:e.value}))):null}set value(e){const t=this;if(Array.isArray(e)){const i=t.context;t.context=t,t._isUpdating++,t.selectedValues=[],t.clearSelection();for(let i=0;i<e.length;i++){const l=e[i],r=t.getItem(l);r&&("oneOrManyExtended"===t.selectionMode?t._select(r):t.select(r))}return t.context=i,void t._isUpdating--}const i=t.getItem(e);i&&t.select(i)}get _selectedItems(){const e=this,t=[];if(e.isRendered)for(let i=0;i<e._items.length;i++){const l=e._items[i];l.selected&&t.push(l)}return t}_mouseLeaveHandler(){const e=[].slice.call(this.getElementsByClassName("smart-list-item-bottom-line-feedback"));for(let t=0;t<e.length;t++)e[t].$.removeClass("smart-list-item-line-feedback"),e[t].$.removeClass("smart-list-item-bottom-line-feedback")}_downHandler(e){const t=this;if(t.disabled||t.displayLoadingIndicator||t.readonly)return;let i=e.originalEvent.target,l=null;if(!(i instanceof Smart.ListItem)||i.disabled||i.hidden||i instanceof Smart.ListItemsGroup)for(;i.parentElement;){if(i instanceof Smart.ListItem&&!i.disabled&&!i.hidden&&!(i instanceof Smart.ListItemsGroup)){l=i.dataItem;break}i=i.parentElement}else l=i.dataItem;Smart.ListBox.DragDrop.StartTime=new Date,Smart.ListBox.DragDrop.StartPosition={left:e.pageX,top:e.pageY},l&&(e.stopPropagation(),t.hasRippleAnimation&&(l.readonly||l.disabled||Smart.Utilities.Animation.Ripple.animate(i.$.overlay,e.pageX,e.pageY)),Smart.Utilities.Core.isMobile||"press"!==t.selectionChangeAction||(t._focus(l),t.select(l)),!Smart.ListBox.DragDrop.Feedback&&t.allowDrag&&(Smart.ListBox.DragDrop.DraggedFrom=t,Smart.ListBox.DragDrop.Feedback=document.createElement("span"),t.rightToLeft?Smart.ListBox.DragDrop.Feedback.setAttribute("right-to-left",!0):Smart.ListBox.DragDrop.Feedback.removeAttribute("right-to-left"),t.dragFeedbackFormatFunction?Smart.ListBox.DragDrop.Feedback.innerHTML=t.dragFeedbackFormatFunction(l):Smart.ListBox.DragDrop.Feedback.appendChild(l.offsetHeight?l.cloneNode(!0):t._createItem(l)),Smart.ListBox.DragDrop.Item=l,Smart.Utilities.Extend(Smart.ListBox.DragDrop.Feedback).addClass("smart-popup smart-list-item smart-list-item-feedback")))}_dblclickEventHandler(e){const t=this;if(!t.editable)return;const i=e.target.closest("smart-list-item");i instanceof Smart.ListItem&&!i.disabled&&!i.readonly?(t.$.editInput.dir=t.rightToLeft?"rtl":"ltr",t.$.editInput.style.width=t.$.itemsInnerContainer.offsetWidth+"px",t.$.editInput.owner=i,t.$.editInput.value=i.label,t.$.editInput.style.height=i.offsetHeight+"px",t.$.editInput.style.top=i.offsetTop+t.$.itemsInnerContainer.offsetTop+"px",t.$.editInput.setAttribute("aria-label","Edit item "+i.label),t.$editInput.hasClass("smart-hidden")&&t.$editInput.removeClass("smart-hidden"),t.$.editInput.focus({preventScroll:!0})):t.$editInput.addClass("smart-hidden")}_editInputEventHandler(e){const t=this;if("blur"===e.type||"keydown"===e.type&&"Escape"===e.key)return t.$editInput.hasClass("smart-hidden")||t.$editInput.addClass("smart-hidden"),void t.focus();if("keydown"===e.type||t.$editInput.hasClass("smart-hidden"))return;const i=e.target;if(e.stopPropagation(),i.owner.label!==i.value&&(i.owner.label=i.value,t.itemTemplate&&t._applyTemplate(i.owner),t.dataSource)){const e=i.owner.dataIndex,l=t.dataSource[e];l&&(t.displayMember?l[t.displayMember]=i.value:l.label=i.value)}t.$editInput.addClass("smart-hidden"),t.$.fireEvent("itemLabelChange",{selected:i.owner.selected,disabled:i.owner.disabled,index:t._indexOf(i.owner),label:i.owner.label,value:i.owner.value})}_pointerUpHandler(e){const t=this;let i=e.originalEvent,l=i.target;(t.shadowRoot||t.isInShadowDOM)&&(l=i.originalEvent?i.originalEvent.composedPath()[0]:i.composedPath()[0]);const r=e=>{const i=e.ownerListBox;if(!(i.disabled||i!==t||i.displayLoadingIndicator||"none"===i.selectionMode||e.grouped||e.readonly)){if(i._focus(e),"selectAll"===e.value&&(t._propertyChanging=!0),i.select(e),"selectAll"===e.value){t._propertyChanging=!1;const l=t._filteredItems?t._filteredItems:t._items;e.selected?i.checkAll(l.slice(0)):i.uncheckAll(l.slice(1))}t.selectAll&&((t._filteredItems?t._filteredItems:t._items)[0].indeterminate=!1,"selectAll"!==e.value&&t._refreshSelectAll()),Smart.ListBox.DragDrop.StartPosition=null,t.$.fireEvent("itemClick",{selected:l.selected,disabled:l.disabled,index:t._indexOf(l),label:l.label,value:l.value})}};if(!(i.target instanceof Smart.ListItem)||i.target.disabled||i.target instanceof Smart.ListItemsGroup){for(;l&&l.parentElement;){if(l instanceof Smart.ListItem&&!l.disabled&&!(l instanceof Smart.ListItemsGroup))return void r(l.dataItem);l=l.parentElement}if(this.shadowRoot&&"shadow"===this.shadowDomMode){const e=i.composedPath();for(let t=0;t<e.length;t++){const i=e[t];i instanceof Smart.ListItem&&!i.disabled&&r(i.dataItem)}}}else r(l.dataItem)}_upHandler(e){const t=this;if(super._upHandler(),!t.disabled&&!t.readonly&&Smart.ListBox.DragDrop.StartPosition){if(Smart.Utilities.Core.isMobile&&!Smart.ListBox.DragDrop.Dragging){const i=Math.abs(e.pageX-Smart.ListBox.DragDrop.StartPosition.left),l=Math.abs(e.pageY-Smart.ListBox.DragDrop.StartPosition.top);let r=i>=0&&i<=3&&l>=0&&l<=3;if(Smart.Utilities.Core.isMobile&&new Date-Smart.ListBox.DragDrop.StartTime>=300&&(r=!1,Smart.ListBox.DragDrop.StartTime=null),r){const i=e.originalEvent.target.closest("smart-list-box");i?i._pointerUpHandler(e):t._pointerUpHandler(e),Smart.ListBox.DragDrop.StartPosition=null}else{let t=e.originalEvent.target;if(!(e.target instanceof Smart.ListItem)||t.readonly||e.target.disabled||e.target instanceof Smart.ListItemsGroup)for(;t.parentElement;){if(t instanceof Smart.ListItem&&!t.readonly&&!t.disabled&&!(t instanceof Smart.ListItemsGroup)){e.stopPropagation();break}t=t.parentElement}else e.stopPropagation()}}else if(!Smart.Utilities.Core.isMobile&&!Smart.ListBox.DragDrop.Dragging&&"release"===t.selectionChangeAction){const i=(t.shadowRoot||t.isInShadowDOM?e.originalEvent.composedPath()[0]:e.originalEvent.target).closest("smart-list-box");i&&(i.upTimer&&clearTimeout(i.upTimer),t.isInShadowDOM?i?i._pointerUpHandler(e):t._pointerUpHandler(e):i.upTimer=setTimeout((()=>{i?i._pointerUpHandler(e):t._pointerUpHandler(e)})))}if(Smart.ListBox.DragDrop.Feedback){let i;if(Smart.ListBox.DragDrop.Feedback.parentNode&&Smart.ListBox.DragDrop.Feedback.parentNode.removeChild(Smart.ListBox.DragDrop.Feedback),Smart.ListBox.DragDrop.Feedback=null,Smart.Utilities.Core.isMobile&&Smart.ListBox.DragDrop.Dragging)for(let t=0;t<Smart.ListBox.DragDrop.ListBoxes.length;t++){const l=Smart.ListBox.DragDrop.ListBoxes[t],r=l.getBoundingClientRect();if(l.allowDrop&&!l.closest(".smart-visibility-hidden")&&r.left<=e.clientX&&e.clientX<=r.left+r.width&&r.top<=e.clientY&&e.clientY<=r.top+r.height){i=l;const t=l._items.filter((e=>!e.hidden));for(let i=0;i<t.length;i++){const o=t[i],s=o.getBoundingClientRect();if((t.indexOf(o)===t.length-1||o.parentNode.lastElementChild===o)&&e.clientY>=r.top+o.offsetTop-l.scrollTop+s.height/2&&e.clientY<=r.top-l.scrollTop+o.offsetTop+s.height){Smart.ListBox.DragDrop.DropDetails={item:o,position:"bottom"};break}if(e.clientY>=r.top+o.offsetTop-l.scrollTop&&e.clientY<=r.top+o.offsetTop+s.height-l.scrollTop){Smart.ListBox.DragDrop.DropDetails={item:o,position:"top"};break}}}}if(Smart.ListBox.DragDrop.Dragging){if(Smart.ListBox.DragDrop.DropDetails){let l=Smart.ListBox.DragDrop.DropDetails.item,r=Smart.ListBox.DragDrop.Item;const o=r.ownerListBox;let s=e.originalEvent.target;if(t.isInShadowDOM&&(s=e.originalEvent?e.originalEvent.composedPath()[0]:e.composedPath()[0]),i=!i&&s.closest?s.closest("smart-list-box"):i,document.body.classList.remove("smart-dragging"),l.$.removeClass("smart-list-item-line-feedback"),l.$.removeClass("smart-list-item-bottom-line-feedback"),i&&l.ownerListBox!==i&&i.items.length>0&&(l=i.items[i.items.length-1]),Smart.ListBox.DragDrop.Item===l||i!==l.ownerListBox&&!Smart.Utilities.Core.isMobile)i&&0===i._items.length&&"none"!==i.dropAction&&("move"===i.dropAction?Smart.ListBox.DragDrop.Item.ownerListBox.removeChild(Smart.ListBox.DragDrop.Item):"copy"===i.dropAction&&(r=r.cloneNode(!0)),i.appendChild(r));else if("none"!==r.ownerListBox.dropAction){l.ownerListBox!==r.ownerListBox&&"move"===r.ownerListBox.dropAction&&Smart.ListBox.DragDrop.Item.ownerListBox.removeChild(Smart.ListBox.DragDrop.Item),"copy"===r.ownerListBox.dropAction&&(r=r.cloneNode(!0)),Smart.ListBox.DragDrop.Item.group=l.group;const e=l.ownerListBox;"checkBox"!==e.selectionMode&&"radioButton"!==e.selectionMode&&e.clearSelection(),"top"===Smart.ListBox.DragDrop.DropDetails.position?e.insertBefore(r,l):l.parentNode.lastElementChild===l?e.appendChild(r):e.appendChild(r,l),e.ensureVisible(r),"checkBox"===e.selectionMode||"radioButton"===e.selectionMode?(e._focus(r),e._refreshSelection()):(e.clearSelection(),e.select(r))}r.selected&&i!==o&&o._refreshSelection();const n=Smart.ListBox.DragDrop.Item,a=n.ownerListBox;n.displayMode="checkBox"===a.selectionMode||"radioButton"===a.selectionMode?a.selectionMode:"plain",a.$.fireEvent("dragEnd",{item:n,target:l,data:Smart.ListBox.DragDrop,previousContainer:o,container:i,originalEvent:e}),a._focus(n)}else{const t=Smart.ListBox.DragDrop.Item,i=t.ownerListBox;t.displayMode="checkBox"===i.selectionMode||"radioButton"===i.selectionMode?i.selectionMode:"plain",document.body.classList.remove("smart-dragging"),i.$.fireEvent("dragEnd",{item:t,target:null,data:Smart.ListBox.DragDrop,previousContainer:i,container:i,originalEvent:e}),i._focus(t)}e.preventDefault()}delete Smart.ListBox.DragDrop.DraggedFrom,Smart.ListBox.DragDrop.Dragging=!1,Smart.ListBox.DragDrop.Item=null,Smart.ListBox.DragDrop.DropDetails=null}for(let e=0;e<Smart.ListBox.DragDrop.ListBoxes.length;e++){const t=Smart.ListBox.DragDrop.ListBoxes[e];t._dragInterval&&clearInterval(t._dragInterval)}}}_itemsContainerMoveHandler(e){const t=this;if(Smart.ListBox.DragDrop.Dragging)return t._applyItemFeedback(e),t._moveHandler(e),e.originalEvent.preventDefault(),e.originalEvent.stopPropagation(),!1}_touchmoveHandler(e){if(Smart.ListBox.DragDrop.Dragging&&e.cancelable)return e.preventDefault(),void e.stopPropagation();super._touchmoveHandler(e)}_applyItemFeedback(e){const t=this,i=e.originalEvent.target,l=i.closest?i.closest("smart-list-item"):i;Smart.Utilities.Core.isMobile?Smart.ListBox.DragDrop.DropDetails={item:Smart.ListBox.DragDrop.Item,position:"bottom"}:0!==t.items.length&&(l?l._itemOnMouseMove(e):t.items[t.items.length-1]._itemOnMouseMove(e,!0))}_moveHandler(e){const t=this;if(!Smart.ListBox.DragDrop.Feedback||Smart.ListBox.DragDrop.DraggedFrom!==t)return;const i=t.dragOffset;if(Smart.ListBox.DragDrop.Dragging){Smart.ListBox.DragDrop.Feedback.style.left=i[0]+e.pageX+"px",Smart.ListBox.DragDrop.Feedback.style.top=i[1]+e.pageY+"px",t.$.fireEvent("dragging",{item:Smart.ListBox.DragDrop.Item,data:Smart.ListBox.DragDrop,originalEvent:e.originalEvent});for(let t=0;t<Smart.ListBox.DragDrop.ListBoxes.length;t++){const i=Smart.ListBox.DragDrop.ListBoxes[t];i._dragInterval&&clearInterval(i._dragInterval),i._dragInterval=setInterval((function(){const t=i.getBoundingClientRect();t.left<=e.clientX&&t.left+t.width>=e.clientX&&(e.clientY>=t.top&&e.clientY<=t.top+20?i.scrollTop-=2:e.clientY>=t.top+t.height-20&&e.clientY<=t.top+t.height&&(i.scrollTop+=2))}),1)}return e.preventDefault(),e.stopPropagation(),e.originalEvent.preventDefault(),e.originalEvent.stopPropagation(),!1}{const l=Math.abs(e.pageX-Smart.ListBox.DragDrop.StartPosition.left),r=Math.abs(e.pageY-Smart.ListBox.DragDrop.StartPosition.top),o=new Date-Smart.ListBox.DragDrop.StartTime;let s=l>=5&&l<=15||r>=5&&r<=15;if(Smart.Utilities.Core.isMobile&&(o<300||o>1e3)&&(s=!1),s){Smart.ListBox.DragDrop.Dragging=!0,Smart.ListBox.DragDrop.Feedback.style.left=i[0]+e.pageX+"px",Smart.ListBox.DragDrop.Feedback.style.top=i[1]+e.pageY+"px",t.getShadowRootOrBody().appendChild(Smart.ListBox.DragDrop.Feedback),e.preventDefault(),e.stopPropagation(),e.originalEvent.preventDefault(),e.originalEvent.stopPropagation();const l=Smart.ListBox.DragDrop.Item,r=l.ownerListBox;r.$.fireEvent("dragStart",{item:l,data:Smart.ListBox.DragDrop,container:r,previousContainer:r,originalEvent:e.originalEvent}),document.body.classList.add("smart-dragging")}}}_focusHandler(){this._focused=!0,this.setAttribute("focus","")}_blurHandler(){this._focused=!1,this.removeAttribute("focus")}appendChild(e){const t=this;if(!t.isCompleted){const e=Array.prototype.slice.call(arguments,2);return HTMLElement.prototype.appendChild.apply(t,e.concat(Array.prototype.slice.call(arguments)))}t.isVirtualized?(t._items.indexOf(e)>-1&&t._items.splice(t._items.indexOf(e),1),t._items.push(e)):(e.dataItem=e,t.shadowRoot&&"light"===t.shadowDomMode?t.appendChild(e):t.$.itemsInnerContainer.appendChild(e),t._items.indexOf(e)>-1&&t._items.splice(t._items.indexOf(e),1),t._items.push(e)),t._isUpdating||(t._refreshItems(),t._refreshSelection())}insertBefore(e,t){const i=this;if(!i.isCompleted){const e=Array.prototype.slice.call(arguments,2);return HTMLElement.prototype.insertBefore.apply(i,e.concat(Array.prototype.slice.call(arguments)))}i.isVirtualized?(i._items.indexOf(e)>-1&&i._items.splice(i._items.indexOf(e),1),i._items.splice(i._indexOf(t),0,e)):(e.dataItem=e,t.parentNode.insertBefore(e,t),i._items.indexOf(e)>-1&&i._items.splice(i._items.indexOf(e),1),i._items.splice(i._indexOf(t),0,e)),i._refreshItems(),i._refreshSelection()}removeChild(e){const t=this;if(!t.isCompleted){const e=Array.prototype.slice.call(arguments,2);return HTMLElement.prototype.removeChild.apply(t,e.concat(Array.prototype.slice.call(arguments)))}if(t.isVirtualized)t._items.splice(t._indexOf(e),1);else if(e.parentNode){const i=t.selectedIndexes.slice(0),l=t.selectedValues.slice(0),r=i.indexOf(e.dataIndex);e.parentNode.removeChild(e),r>-1&&(i.splice(r,1),l.splice(r,1),t.selectedIndexes=i,t.selectedValues=l)}t._refreshItems()}propertyChangedHandler(e,t,i){if("dataSource"===e&&(!i||i&&Array.isArray(i)&&0===i.length))return void this.clearItems();super.propertyChangedHandler(e,t,i);const l=this;switch(e){case"innerHTML":l.clearSelection(),l._dataBind(),l.innerHTML=l.content=Smart.Utilities.Core.html(l.$.content);break;case"dataSource":case"valueMember":case"groupMember":case"displayMember":l.clearSelection(),l._dataBind(),l._applyDefaultSelection();break;case"disabled":case"unfocusable":l._setFocusable();break;case"displayLoadingIndicator":l._setLoadingIndicatorVisibility();break;case"filterable":l._refreshFilter(),l._refreshLayout();break;case"grouped":if(i?l._group():l._ungroup(),"radioButton"===l.selectionMode){if(l.selectedValues.length>0){const e=l.selectedValues;l.clearSelection(),l.select(e[0])}}else l._refreshSelection();l._refreshLayout();break;case"itemTemplate":{if(null===i||""===i)return l._items.map((e=>e.innerHTML=e.label)),delete l._bindingDetails,void l._refreshLayout();const e=l.querySelectorAll("smart-list-item"),t=function(){l._handleItemTemplate(i)&&(l._items.map((e=>l._applyTemplate(e))),l._refreshLayout()),l.ownerElement&&l.ownerElement._setDropDownSize&&l.ownerElement._setDropDownSize(),l.$.fireEvent("bindingComplete")};0===e.length?t():l._ensureItemsReady(e,t);break}case"selectedIndexes":case"selectedValues":{let r=l.selectedIndexes.slice(0),o=l.selectedValues.slice(0);if(!l._items||0===l._items.length)return l.selectedIndexes=[],l.selectedValues=[],void(l.$.hiddenInput.value=l.selectedValues.toString());if(l._propertyChanging=!0,"selectedIndexes"===e){r=t.slice(0),l.clearSelection();for(let e=0;e<i.length;e++){const t=i[e],r=l._items[t];r&&("oneOrManyExtended"===l.selectionMode||"oneOrMany"===l.selectionMode?(l.selectedIndexes.length>0&&0===e&&l.clearSelection(),l._select(r)):l.select(r))}}else{o=t.slice(0),l.selectedValues=[],l.clearSelection();for(let e=0;e<i.length;e++){const t=i[e],r=l.getItem(t);r&&("oneOrManyExtended"===l.selectionMode?l._select(r):l.select(r))}l._refreshSelectAll()}if(l.selectedIndexes.length>0&&l._focus(l._items[l.selectedIndexes[0]]),l._propertyChanging=!1,JSON.stringify(o)!==JSON.stringify(l.selectedValues.slice(0))){let e=[],t=[];for(let e=0;e<r.length;e++)l.selectedIndexes.indexOf(r[e])<0&&t.push(l._items[r[e]]);for(let t=0;t<l.selectedIndexes.length;t++)r.indexOf(l.selectedIndexes[t])<0&&e.push(l._items[l.selectedIndexes[t]]);let i={addedItems:e,removedItems:t};if(l.selectedIndexes.length>0){const e=l._items[l.selectedIndexes[l.selectedIndexes.length-1]];void 0!==e&&(i.selected=e.selected,i.disabled=e.disabled,i.index=l._indexOf(e),i.label=e.label,i.value=e.value)}else i.selected=!1,i.disabled=!1,i.index=-1,i.label="",i.value="";l.$.fireEvent("change",i),l._updateTargetValue()}break}case"selectionMode":{const e="checkBox"===l.selectionMode||"radioButton"===l.selectionMode?l.selectionMode:"plain",r=l.selectedIndexes.slice(0),o=l.selectedValues.slice(0);l._propertyChanging=!0;const s=l.selectedValues;l.setAttribute("aria-multiselectable",-1!==["oneOrManyExtended","zeroOrMany","oneOrMany","checkBox","radioButton"].indexOf(i)),l.selectedValues=[],l.clearSelection();for(let e=0;e<s.length;e++){const t=s[e],i=l.getItem(t);i&&("oneOrManyExtended"===l.selectionMode?l._select(i):l.select(i))}if(l._items.forEach((t=>t.displayMode=e)),l._recycle(),l._propertyChanging=!1,JSON.stringify(o)!==JSON.stringify(l.selectedValues.slice(0))){let e=[],t=[];for(let e=0;e<r.length;e++)l.selectedIndexes.indexOf(r[e])<0&&t.push(l._items[r[e]]);for(let t=0;t<l.selectedIndexes.length;t++)r.indexOf(l.selectedIndexes[t])<0&&e.push(l._items[l.selectedIndexes[t]]);let i={addedItems:e,removedItems:t};if(r.length>0){const e=l._items[r[r.length-1]];e&&(i.selected=e.selected,i.disabled=e.disabled,i.index=l._indexOf(e),i.label=e.label,i.value=e.value)}l.$.fireEvent("change",i),l._updateTargetValue()}l._applyAriaSelected(),"checkBox"!==i&&"radioButton"!==i&&"checkBox"!==t&&"radioButton"!==t||l._refreshLayout();break}case"topVisibleIndex":l._setTopVisibleIndex(i);break;case"autoSort":l._canSort=i;break;case"alternationStart":case"alternationEnd":case"alternationCount":l._refreshItems(),l._refreshLayout();break;case"sortDirection":case"sorted":{l._canSort=!0,i?l._sort():l._unsort();const e=l.selectedValues;l.selectedValues=[],l._refreshSelection();for(let t=0;t<e.length;t++){const i=e[t],r=l.getItem(i);r&&("oneOrManyExtended"===l.selectionMode?l._select(r):l.select(r))}l._refreshLayout(),l._canSort=l.autoSort;break}}}_refreshSelection(){const e=this;if(!e._items||0===e._items.length)return;const t=e.selectedValues;e.selectedIndexes=[],e.selectedValues=[];for(let i=0;i<e._items.length;i++){const l=e._items[i];l&&"selectAll"===l.value||(l.selected=!1,t.indexOf(l.value)>-1&&e.select(l))}e._recycle()}allChecked(){const e=this;if("checkBox"!==e.selectionMode)return!1;const t=e._filteredItems?e._filteredItems:e._items;if(e.selectAll){for(let e=1;e<t.length;e++)if(!t[e].selected)return!1}else for(let e=0;e<t.length;e++)if(!t[e].selected)return!1;return!0}allUnchecked(){const e=this;if("checkBox"!==e.selectionMode)return!0;const t=e._filteredItems?e._filteredItems:e._items;if(e.selectAll){for(let e=1;e<t.length;e++)if(t[e].selected)return!1}else for(let e=0;e<t.length;e++)if(t[e].selected)return!1;return!0}uncheckAll(e){const t=this;if(e){const i=t.selectedIndexes.slice(0),l=t.selectedValues.slice(0),r=[];for(let r=0;r<t._items.length;r++){const o=t._items[r];if(e){let r=!1;for(let t=0;t<e.length;t++)if(o!==e[t]&&o.value!==e[t]&&o.label!==e[t]||(r=!0),"number"==typeof e[t]&&o.value===e[t]&&(r=!0),"object"==typeof e[t]){const i=e[t];(i.value&&o.value===i.value||i.label&&o.label===i.label)&&(r=!0)}if(r){const e=t._indexOf(o);o.selected=!1,-1!==e&&(i.splice(i.indexOf(e),1),l.splice(l.indexOf(o.value||o.label),1))}}}if(t.selectedIndexes=i,t.selectedValues=l,t._recycle(),t.$.hiddenInput.value=l.toString(),!t.isCompleted||!t.isInitialized||t._propertyChanging)return;let o=[];if(t._previouslySelectedIndexes){for(let e=0;e<t._previouslySelectedIndexes.length;e++)t.selectedIndexes.indexOf(t._previouslySelectedIndexes[e])<0&&o.push(t._items[t._previouslySelectedIndexes[e]]);delete t._previouslySelectedIndexes}t.$.fireEvent("change",{addedItems:r,removedItems:o,selected:!0,disabled:!1,index:i,label:l,value:l}),t._updateTargetValue()}else this.clearSelection()}checkAll(e){const t=this;if("checkBox"!==t.selectionMode)return;const i=t.selectedIndexes.slice(0),l=t.selectedValues.slice(0),r=[];for(let o=0;o<t._items.length;o++){const s=t._items[o];if(e){let t=!1;for(let i=0;i<e.length;i++){if(s===e[i]||s.value===e[i]||s.label===e[i]){t=!0;break}if("number"==typeof e[i]&&s.value===e[i]){t=!0;break}if("object"==typeof e[i]){const l=e[i];if(l.value&&s.value===l.value){t=!0;break}if(l.label&&s.label===l.label){t=!0;break}}}if(!t)continue}const n=t.selectedIndexes.indexOf(t._indexOf(s));s.selected=!0,"selectAll"!==s.value&&(-1===n?(r.push(s),i.push(t._indexOf(s)),l.push(s.value||s.label)):-1===l.indexOf(s.value||s.label)&&l.push(s.value||s.label))}if(t.selectedIndexes=i,t.selectedValues=l,t._recycle(),t._refreshSelectAll(),t.$.hiddenInput.value=l.toString(),!t.isCompleted||!t.isInitialized||t._propertyChanging)return;let o=[];if(t._previouslySelectedIndexes){for(let e=0;e<t._previouslySelectedIndexes.length;e++)t.selectedIndexes.indexOf(t._previouslySelectedIndexes[e])<0&&o.push(t._items[t._previouslySelectedIndexes[e]]);delete t._previouslySelectedIndexes}return t.$.fireEvent("change",{addedItems:r,removedItems:o,selected:!0,disabled:!1,index:i,label:l,value:l}),t._updateTargetValue(),!0}clearSelection(){const e=this;if(!e._items||0===e._items.length)return;let t=[];for(let i=0;i<e._items.length;i++)e._items[i].selected&&t.push(e._items[i]);e._items.map((e=>e.selected=!1)),e.selectedValues.slice(0);const i=e.selectedIndexes.slice(0);if(e.selectedIndexes=[],e.selectedValues=[],e.$.hiddenInput.value=e.selectedValues.toString(),e._recycle(),e.context!==e){let l={addedItems:[],removedItems:t};if(i.length>0){const t=e._items[i[i.length-1]];t&&(l.selected=t.selected,l.disabled=t.disabled,l.index=e._indexOf(t),l.label=t.label,l.value=t.value)}e.$.fireEvent("change",l),e._updateTargetValue()}}ensureVisible(e){const t=this;if(e)return!("string"==typeof e&&!(e=t.getItem(e))||(t.isVirtualized||t.$.itemsContainer.scrollTop===t.scrollTop||(t.scrollTop=t.$.itemsContainer.scrollTop),e.top+e.height>=t.scrollTop+t.offsetHeight&&(t.scrollTop=t.scrollTop+e.height,t.isVirtualized||(t.$.itemsContainer.scrollTop=t.scrollTop)),(e.top<=t.scrollTop||e.top>=t.scrollTop+t.$.itemsContainer.offsetHeight)&&(t.scrollTop=e.top,t.isVirtualized||(t.$.itemsContainer.scrollTop=t.scrollTop)),0===t._indexOf(e)||1===t._indexOf(e)&&t._items.length>1&&t._items[0].grouped?(t.scrollTop=0,t.isVirtualized||(t.$.itemsContainer.scrollTop=t.scrollTop)):t._indexOf(e)===t._items.length-1&&(t.scrollTop=t.scrollHeight,t.isVirtualized||(t.$.itemsContainer.scrollTop=t.scrollTop)),0))}get items(){const e=this;if(!window.__karma__&&!window.karma&&e instanceof Element&&e.isRendered&&e.hasAttribute&&e.hasAttribute("smart-blazor")){let t=[];for(let i=0;i<e._items.length;i++){const l=e._items[i];t.push({label:l.label,value:l.value})}return t}return e._filteredItems?e._filteredItems:e._items}getItems(){const e=this,t=e._filteredItems?e._filteredItems:e._items;let i=[];if(t&&t.length>0)for(let e=0;e<t.length;e++){const l=t[e];"selectAll"!==l.value&&i.push({label:l.label,value:l.value})}return i}ready(){super.ready();const e=this;if(e.shadowRoot&&"light"===e.shadowDomMode){const t=document.createDocumentFragment();[].slice.call(e.$.itemsInnerContainer.children).map((e=>t.appendChild(e))),e.appendChild(t),e.$.itemsInnerContainer.appendChild(document.createElement("slot"))}e._areCSSVarsSupported=Smart.Utilities.Core.CSSVariablesSupport(),e.isUpdating=0,e._scrollView&&(e._scrollView=new Smart.Utilities.Scroll(e,e.$.horizontalScrollBar,e.$.verticalScrollBar),e._scrollView.hScrollBar.$.addClass("smart-hidden"),e._scrollView.vScrollBar.$.addClass("smart-hidden"));const t=e._scrollView.vScrollBar,i=e._scrollView.hScrollBar;t.hasStyleObserver=!1,i.hasStyleObserver=!1,t.hasResizeObserver=!1,i.hasResizeObserver=!1,t.wait=!1,i.wait=!1,e._setFocusable()}render(){const e=this;e.$.itemsInnerContainer.setAttribute("role","listbox"),e.$.itemsInnerContainer.setAttribute("aria-label","List Box Items Container"),e.$.itemsInnerContainer.setAttribute("aria-orientation","vertical"),e.$.verticalScrollBar.setAttribute("aria-controls",e.id),e.$.horizontalScrollBar.setAttribute("aria-controls",e.id),e._keysPressed={},e._incrementalSearchQuery="",e._incrementalSearchItems=[],e._canSort=!0,e._previousEntry="",e._setLoadingIndicatorVisibility(),e._refreshFilter(),e._initializeInnerHTML(),e._dataBind(),e._applyDefaultSelection(),e.enableShadowDOM&&HTMLElement.prototype.appendChild.apply(e,[e.$.hiddenInput]),e.$.itemsInnerContainer.setAttribute("aria-multiselectable",-1!==["oneOrManyExtended","zeroOrMany","oneOrMany","checkBox","radioButton"].indexOf(e.selectionMode)),e.setAttribute("aria-label","List Box"),super.render()}_lazyInitItems(){const e=this;if(e._inLazyInit)return cancelAnimationFrame(Smart.ListBox.processTimer),void delete Smart.ListBox.processTimer;e._inLazyInit=!0,e.dataSource||(e.clearSelection(),e._dataBind(),e._applyDefaultSelection()),cancelAnimationFrame(Smart.ListBox.processTimer),delete Smart.ListBox.processTimer,e._inLazyInit=!1}_applyDefaultSelection(){const e=this;!e._focusedItem&&e._items&&e._items.length>0&&0===e.selectedIndexes.length&&("one"!==e.selectionMode&&"oneOrMany"!==e.selectionMode&&"oneOrManyExtended"!==e.selectionMode||e.select(e._items[0]))}attached(){const e=this;super.attached(),Smart.ListBox.DragDrop||(Smart.ListBox.DragDrop={ListBoxes:[]}),Smart.ListBox.DragDrop.ListBoxes.push(e),e._scrollView||(e._scrollView=new Smart.Utilities.Scroll(e,e.$.horizontalScrollBar,e.$.verticalScrollBar)),e.selectedIndexes.length>0&&e._items&&e.ensureVisible(e._items[e.selectedIndexes[0]])}detached(){const e=this;if(super.detached(),e._scrollView&&(e._scrollView.unlisten(),delete e._scrollView),Smart.ListBox.DragDrop&&Smart.ListBox.DragDrop.ListBoxes){const t=Smart.ListBox.DragDrop.ListBoxes.indexOf(e);Smart.ListBox.DragDrop.ListBoxes.splice(t,1)}}_createItem(e,t,i){const l=this,r="checkBox"===l.selectionMode||"radioButton"===l.selectionMode?l.selectionMode:"plain",o=i?{}:document.createElement("smart-list-item");o.ownerListBox=l,"number"==typeof e&&(e=""+e);const s=function(t,i){return void 0!==e[t]?""+e[t]:e[i]};let n="string"==typeof e?e:s(l.displayMember,"label"),a="string"==typeof e?e:s(l.valueMember,"value"),d=s(l.groupMember,"group");return void 0===n&&(n=void 0!==t?""+t:""),o.label=o.innerHTML=""+n,void 0===a&&(a=void 0!==t?""+t:n),e.color&&(o.color=e.color),o.value=""+a,o.displayMode=r,o.selected=!!e.selected&&e.selected,o.disabled=!!e.disabled&&e.disabled,o.dataItem=o,void 0!==t&&(o.dataIndex=t),l._alternateItem(o),e.title&&(o.title=e.title),d&&(o.group=""+d),o}_alternateItem(e){const t=this,i=t.alternationStart,l=t.alternationEnd>0?t.alternationEnd:1/0;t.alternationCount<=0||(void 0===t._alternationIndexCounter&&(t._alternationIndexCounter=0),e.dataIndex>=i&&e.dataIndex<=l&&(e.alternationIndex=t._alternationIndexCounter++,t._alternationIndexCounter===t.alternationCount&&(t._alternationIndexCounter=0)))}_beginUpdate(){this.isUpdating++}_isUpdating(){return this.isUpdating>0}_endUpdate(){this.isUpdating--}get _scrollHeight(){const e=this;if(0===e._items.length||e._items.filter((e=>!e.hidden)).length<1)return 0;let t=0;if(e.isVirtualized){if(e.__scrollHeight)return e.__scrollHeight;if(0===e._items.length)return 0;e.isUpdating++;const i=e._createItem(e._items[0]);e.$.itemsInnerContainer.appendChild(i);for(let l=0;l<e._items.length;l++){const r=e._items[l];r.hidden?(r.height=0,r.top=t):(e.itemHeight?(e.itemHeight<32&&(e.itemHeight=32),r.height=e.itemHeight):(i.$&&i.$.itemContainer?i.$.itemContainer.firstElementChild.innerHTML=r.label:i.label=r.label,r.height=i.offsetHeight),r.top=t,t+=r.height)}e.$.itemsInnerContainer.removeChild(i),e.__scrollHeight=t-e.$.itemsInnerContainer.offsetHeight,e.filterable,t=e.__scrollHeight,e.isUpdating--}else{for(let i=0;i<e._items.length;i++){const l=e._items[i];l.hidden?(l.height=0,l.top=t):(e.itemHeight?"auto"!==e.itemHeight&&(l.height=e.itemHeight,l.style.height=l.height+"px"):l.height=l.offsetHeight,l.top=l.offsetTop,t+=l.height)}t=e.$.itemsInnerContainer.scrollHeight-e.$.itemsInnerContainer.offsetHeight,e.filterable&&t>0&&(t+=e.$.filterInput.offsetHeight),e.__scrollHeight=t}return t}_initializeRecyclingItems(){const e=this;if(!e.dataSource||e.dataSource&&0===e.dataSource.length||!e.isVirtualized)return;let t=0,i=e.offsetHeight||400;e.$.itemsInnerContainer.innerHTML="",e._recyclingItems=[];const l=function(l){for(let r=0;r<l.length;r++){const o=l[r],s=e._createItem(o);if(e.itemHeight&&"auto"!==e.itemHeight&&(s.style.height=e.itemHeight+"px"),e.$.itemsInnerContainer.appendChild(s),t+=s.offsetHeight,s.dataItem=e._items[r],e._recyclingItems.push(s),t>1.5*i)break}};if("function"==typeof e.dataSource){let e=[];for(let t=0;t<100;t++)e.push("");l(e)}else{l(e.dataSource);let r=0;for(;t<1.5*i&&++r<5;)l(e.dataSource)}}dataBind(){const e=this;e.clearSelection(),e._dataBind(),e._applyDefaultSelection()}_dataBind(){const e=this;if(e._scrollView||(e._scrollView=new Smart.Utilities.Scroll(e,e.$.horizontalScrollBar,e.$.verticalScrollBar)),"function"==typeof e.dataSource){e._items=[],delete e._filteredItems;const t=e.dataSource("",(t=>{e.clearItems(),e.insert(0,t)}));t&&Array.isArray(t)&&(e.clearItems(),e.insert(0,t))}if("string"==typeof e.dataSource&&(e.dataSource=JSON.parse(e.dataSource)),null!==e.dataSource&&Array.isArray(e.dataSource)){e.isUpdating++;const t=t=>{e._items=[],e._groups=[],delete e._filteredItems;let i=e.dataSource;"checkBox"===e.selectionMode&&e.selectAll&&(i=[e._createItem({label:e.localize("selectAll"),value:"selectAll"})].concat(e.dataSource));for(let l=0;l<i.length;l++){const r=i[l],o=e._createItem(r,l,!t);e._items[l]=o,t&&t.appendChild(o)}};if(e.isVirtualized)t(),e._initializeRecyclingItems();else{const i=document.createDocumentFragment();e.$.itemsInnerContainer.innerHTML="",t(i),e.$.itemsInnerContainer.appendChild(i)}e.isUpdating--}const t=e.shadowRoot?e.shadowRoot.querySelectorAll("smart-list-item"):e.querySelectorAll("smart-list-item"),i=function(){e.isUpdating++,e.dataSource||(e._initializeHtmlListItems(),e._initializeHtmlListGroups()),e.grouped&&e._group(),e.sorted&&e._sort(),e._refreshLayout(),e._initializeSelection(),e.isInitialized=!0,e._canSort=e.autoSort,e.isUpdating--,e.itemTemplate&&e._handleItemTemplate(e.itemTemplate)&&(e._items.map((t=>e._applyTemplate(t))),e._refreshLayout()),e.__onCompleted&&(e._onCompleted=e.__onCompleted,e.__onCompleted=null,e._onCompleted()),e.topVisibleIndex>-1&&e._setTopVisibleIndex(e.topVisibleIndex),e.$.fireEvent("bindingComplete"),e._updateTopVisibleIndex(),0===e._items.length&&e.clearItems(),e._applyAriaSelected()};0===t.length?i():(e._onCompleted&&(e.__onCompleted=e._onCompleted,e._onCompleted=null),e._ensureItemsReady(t,i))}_ensureItemsReady(e,t){const i=this,l=function(){const i=function(t){for(let i=0;i<e.length;i++)e[i].context="node"===t?e[i]:document};i("node"),t(),i()};if(0===e.length)l();else{i._nodesReadyListeners=0;for(let t=0;t<e.length;t++){const r=e[t],o=function(){i._nodesReadyListeners--,0===i._nodesReadyListeners&&(l(),delete i._nodesReadyListeners)}.bind(i);r.isCompleted||(i._nodesReadyListeners++,r._onCompleted=o)}0===i._nodesReadyListeners&&l()}}_initializeInnerHTML(){const e=this;e.$.itemsInnerContainer.innerHTML.indexOf("<option")>=0?e.$.itemsInnerContainer.innerHTML=e.$.itemsInnerContainer.innerHTML.replace(/<optgroup/gi,"<smart-list-items-group").replace(/<\/optgroup/gi,"</smart-list-items-group").replace(/<option/gi,"<smart-list-item").replace(/<\/option/gi,"</smart-list-item"):e.$.itemsInnerContainer.innerHTML.indexOf("<ul")>=0&&(e.$.itemsInnerContainer.innerHTML=e.$.itemsInnerContainer.innerHTML.replace(/<ul/gi,"<smart-list-items-group").replace(/<\/ul/gi,"</smart-list-items-group").replace(/<li/gi,"<smart-list-item").replace(/<\/li/gi,"</smart-list-item"))}_initializeHtmlListItems(){const e=this,t=e.shadowRoot&&"shadow"===e.shadowDomMode?e.shadowRoot.querySelectorAll("smart-list-item"):e.querySelectorAll("smart-list-item"),i="checkBox"===e.selectionMode||"radioButton"===e.selectionMode?e.selectionMode:"plain",l=function(e,t,i){return void 0!==e[t]?""+e[t]:e[i]};e._items=[];let r=0;for(let o=0;o<t.length;o++){const s=t[o];s.dataIndex=o,s.label=s.innerHTML,s.dataItem=s,s.top||(s.top=r),s.height||(s.height=s.offsetHeight),r+=s.height,s.value||(s.value=""+o);const n=l(s,e.displayMember,"label"),a=l(s,e.valueMember,"value"),d=l(s,e.groupMember,"group");s.label!==n&&(s.label=n),s.value!==a&&(s.value=a),s.group!==d&&(s.group=d);const c=s.context;s.context=document,s.displayMode=i,s.context=c,e._alternateItem(s),s.selected&&"selectAll"!==s.value&&(e.selectedIndexes.push(o),e.selectedValues.push(s.value)),e._items.push(s)}e.itemTemplate&&e._handleItemTemplate(e.itemTemplate)&&e._items.map((t=>e._applyTemplate(t)))}_group(){const e=this;e.isUpdating++;let t=[],i=[];e._canSort&&e._unsort();for(let i=0;i<e._items.length;i++){const l=e._items[i];let r=l.group?l.group.trim():l.innerHTML.charAt(0)||l.label.charAt(0);r+=" ",t[r]?t[r].items.push(l):t[t.length++]=t[r]={items:[l],label:r}}if(e.isVirtualized){e._groups=[];for(let e=0;e<t.length;e++){const l=t[e];l.dataIndex=e,l.grouped=!0,l.hidden=!1,l.displayMode="plain",i.push(l);for(let r=0;r<t[e].items.length;r++){const e=l.items[r];e.group=l,i.push(e)}}e._groups=t,e._items=i}else{for(;e.$.itemsInnerContainer.firstChild;)e.$.itemsInnerContainer.removeChild(e.$.itemsInnerContainer.firstChild);const l=document.createDocumentFragment();e._groups=[];for(let r=0;r<t.length;r++){const o=t[r],s=document.createElement("smart-list-items-group");s.label=o.label,s.dataIndex=r;for(let e=0;e<t[r].items.length;e++){const t=o.items[e];i.push(t),t.group=o.label,s.appendChild(t)}e._groups.push(s),l.appendChild(s)}e._items=i,/Trident|Edge/.test(navigator.userAgent)?setTimeout((function(){e.$.itemsInnerContainer.appendChild(l)}),50):e.$.itemsInnerContainer.appendChild(l)}e.sorted&&e._sort(),e.isUpdating--}_ungroup(){const e=this;e.isUpdating++,e._groups=[],e._canSort&&e._unsort();let t=[];if(e.isVirtualized)for(let i=0;i<e._items.length;i++){const l=e._items[i];l.grouped||t.push(l)}else{const i=document.createDocumentFragment();for(let l=0;l<e._items.length;l++){const r=e._items[l];i.appendChild(r),t.push(r)}t.length>0&&(e.$.itemsInnerContainer.innerHTML="",e.$.itemsInnerContainer.appendChild(i))}e._items=t,e.sorted&&e._sort(),e.isUpdating--}_initializeHtmlListGroups(){const e=this,t=e.$.itemsInnerContainer.querySelectorAll("smart-list-items-group");e._groups=[];for(let i=0;i<t.length;i++){const l=t[i];l.dataIndex=i,e._groups.push(l)}}_initializeSelection(){const e=this,t=e.selectedIndexes.slice(0),i=e.selectedValues.