UNPKG

test-isc

Version:

An Ionic component similar to Ionic Select, that allows to search items, including async search, group, add, edit, delete items, and much more.

1 lines 29.2 kB
import{r as t,d as i,h as s,H as e,e as h}from"./p-aa742337.js";import"./p-bdcea876.js";import{i as n,g as l,k as o,j as a,f as r,e as d,b as c,a as m,d as p,c as u}from"./p-a6707754.js";import"./p-fa027c1d.js";import{g as b}from"./p-c4042777.js";import"./p-54ff9b40.js";import"./p-1e402e69.js";import"./p-27bbb2b2.js";import"./p-7781e61d.js";import"./p-56dc5d97.js";import"./p-177ede88.js";import"./p-dea53824.js";import"./p-ed3327fa.js";import"./p-f3a0c163.js";import"./p-da415a80.js";import{m as f}from"./p-a894deec.js";const g=t=>{const i=t.closest("ion-item");return i?i.querySelector("ion-label"):null},v=(t,i)=>null!==i.closest(t),I=class{constructor(s){t(this,s),this.id=this.element.id?this.element.id:"ionic-selectable-"+y++,this.isInited=!1,this.isRendered=!1,this.isChangeInternal=!1,this.groups=[],this.filteredGroups=[],this.hasFilteredItems=!1,this.hasObjects=!1,this.hasGroups=!1,this.footerButtonsCount=0,this.isSearching=!1,this.isAddItemTemplateVisible=!1,this.isFooterVisible=!0,this.itemToAdd=null,this.selectedItems=[],this.valueItems=[],this.itemsToConfirm=[],this.isOpened=!1,this.isDisabled=!1,this.closeButtonText="Cancel",this.closeButtonSlot="start",this.itemIconSlot="start",this.confirmButtonText="OK",this.clearButtonText="Clear",this.addButtonText="Add",this.name=this.id,this.isMultiple=!1,this.value=null,this.shouldStoreItemValue=!1,this.items=[],this.disabledItems=[],this.itemValueField=null,this.itemTextField=null,this.modalCssClass=null,this.modalEnterAnimation=null,this.modalLeaveAnimation=null,this.titleText=null,this.groupValueField=null,this.groupTextField=null,this.hasInfiniteScroll=!1,this.infiniteScrollThreshold="100px",this.hasVirtualScroll=!1,this.virtualScrollApproxHeaderHeight=30,this.virtualScrollApproxItemHeight=45,this.hasConfirmButton=!1,this.canAddItem=!1,this.canClear=!1,this.canSearch=!1,this.shouldDelegateSearchToEvent=!1,this.searchDebounce=250,this.searchPlaceholder="Search",this.searchText="",this.searchFailText="No items found.",this.shouldFocusSearchbar=!1,this.searchCancelButtonIcon="arrow-back-sharp",this.searchCancelButtonText="Cancel",this.searchClearIcon="ios"===b()?"close-circle":"close-sharp",this.searchInputmode="none",this.searchIcon="ios"===b()?"search-outline":"search-sharp",this.searchShowCancelButton="never",this.isConfirmButtonEnabled=!0,this.headerColor=null,this.groupColor=null,this.virtualScrollHeaderFn=()=>null,this.onClick=async()=>{this.setFocus(),this.open()},this.onFocus=()=>{this.focused.emit()},this.onBlur=()=>{this.blurred.emit()},this.infiniteScrolled=i(this,"infiniteScrolled",7),this.searching=i(this,"searching",7),this.searchFailed=i(this,"searchFailed",7),this.searchSuccessed=i(this,"searchSuccessed",7),this.itemAdding=i(this,"itemAdding",7),this.cleared=i(this,"cleared",7),this.changed=i(this,"changed",7),this.itemsChanged=i(this,"itemsChanged",7),this.selected=i(this,"selected",7),this.opened=i(this,"opened",7),this.closed=i(this,"closed",7),this.focused=i(this,"focused",7),this.blurred=i(this,"blurred",7),this.ionStyle=i(this,"ionStyle",7)}onShouldStoreItemValueChanged(t){if(!t&&!this.hasObjects)throw new Error("If items contains primitive elements, shouldStoreItemValue must be null or true: "+this.element.id)}onItemValueFieldChanged(t){if(this.hasObjects&&this.isNullOrWhiteSpace(t))throw new Error("If items contains object elements, itemValueField must be non null or non whitespace : "+this.element.id);if(!this.hasObjects&&!this.isNullOrWhiteSpace(t))throw new Error("If items contains primitive elements, itemValueField must be null: "+this.element.id)}onItemTextFieldChanged(t){if(this.hasObjects&&this.isNullOrWhiteSpace(t))throw new Error("If items contains object elements, itemTextField must be non null or non whitespace : "+this.element.id);if(!this.hasObjects&&!this.isNullOrWhiteSpace(t))throw new Error("If items contains primitive elements, itemTextField must be null: "+this.element.id)}onItemsChanged(t){this.setItems(t)}onDisabledChanged(){this.emitStyle()}onValueChanged(t){this.isChangeInternal||(this.emitStyle(),this.isInited&&this.setValue(t,!1)),this.isChangeInternal=!1}onSearchTextChanged(t){this.isChangeInternal||this.isOpened&&(this.startSearch(),this.filterItems(t,!1),this.endSearch()),this.isChangeInternal=!1}onIsMultipleChanged(){this.countFooterButtons()}onDisabledItemsChanged(){var t;null===(t=this.selectableModalComponent)||void 0===t||t.update()}async connectedCallback(){this.emitStyle()}componentWillLoad(){this.setItems(this.items),this.setValue(this.value),this.countFooterButtons(),this.isInited=!0}async hasValue(){return""!==this.parseValue()}async open(){if(this.isDisabled||this.isOpened)return Promise.reject("IonicSelectable is disabled or already opened: "+this.element.id);const t=g(this.element);t&&!this.titleText&&(this.titleText=t.textContent);const i={component:"ionic-selectable-modal",componentProps:{selectableComponent:this},backdropDismiss:this.shouldBackdropClose};return this.modalCssClass&&(i.cssClass=this.modalCssClass),this.modalEnterAnimation&&(i.enterAnimation=this.modalEnterAnimation),this.modalLeaveAnimation&&(i.leaveAnimation=this.modalLeaveAnimation),this.filterItems(this.searchText),this.modalElement=await f.create(i),await this.modalElement.present(),this.isOpened=!0,this.setFocus(),this.whatchModalEvents(),this.emitOpened(),Promise.resolve()}async close(){return this.isDisabled||!this.isOpened?Promise.reject("IonicSelectable is disabled or already closed: "+this.element.id):(await this.modalElement.dismiss(),this.itemToAdd=null,this.hideAddItemTemplate(),this.shouldDelegateSearchToEvent||this.setHasSearchText(""),this.emitClosed(),Promise.resolve())}async getItemsToConfirm(){return this.itemsToConfirm}async confirm(){this.isMultiple?this.setValue(this.selectedItems):(this.hasConfirmButton||this.hasTemplateRender&&this.hasTemplateRender("footer"))&&this.setValue(this.selectedItems[0]||null)}async clear(){this.clearItems()}async enableInfiniteScroll(){this.hasInfiniteScroll&&(this.selectableModalComponent.infiniteScrollElement.disabled=!1)}async disableInfiniteScroll(){this.hasInfiniteScroll&&(this.selectableModalComponent.infiniteScrollElement.disabled=!0)}async endInfiniteScroll(){this.hasInfiniteScroll&&(this.selectableModalComponent.infiniteScrollElement.complete(),this.setItems(this.items))}async scrollToTop(){return this.isOpened?(await this.selectableModalComponent.contentElement.scrollToTop(),Promise.resolve()):Promise.reject("IonicSelectable content cannot be scrolled: "+this.element.id)}async scrollToBottom(){return this.isOpened?(await this.selectableModalComponent.contentElement.scrollToBottom(),Promise.resolve()):Promise.reject("IonicSelectable content cannot be scrolled: "+this.element.id)}async startSearch(){this.isDisabled||this.showLoading()}async endSearch(){this.isDisabled||(this.hideLoading(),this.emitOnSearchSuccessedOrFailed(this.hasFilteredItems))}async showLoading(){var t;this.isDisabled||(this.isSearching=!0,null===(t=this.selectableModalComponent)||void 0===t||t.update())}async hideLoading(){var t;this.isDisabled||(this.isSearching=!1,null===(t=this.selectableModalComponent)||void 0===t||t.update())}async addItem(t){return this.items.push(t),this.setItems(this.items),Promise.resolve()}async deleteItem(t){let i=!1;if(this.selectedItems&&(this.selectedItems=this.selectedItems.filter(i=>this.getItemValue(t)!==this.getStoredItemValue(i))),this.value)if(this.isMultiple){const s=this.value.filter(i=>i.id!==t.id);s.length!==this.value.length&&(this.value=s,i=!0)}else t===this.value&&(this.value=null,i=!0);i&&this.emitChanged();const s=this.items.filter(i=>i.id!==t.id);return this.setItems(s),Promise.resolve()}async toggleItems(t,i){var s;if(t){const t=i&&i.length;let s=this.groups.reduce((t,i)=>t.concat(i.items),[]);this.isMultiple||t||(s=[]),t&&(s=s.filter(t=>void 0!==i.find(i=>this.getItemValue(t)===this.getItemValue(i))),this.isMultiple||s.splice(0,1)),s.forEach(t=>{this.addSelectedItem(t)})}else i&&i.length?i.forEach(t=>{this.deleteSelectedItem(t)}):this.selectedItems=[],null===(s=this.selectableModalComponent)||void 0===s||s.update();this.itemsToConfirm=[...this.selectedItems]}async showAddItemTemplate(){this.toggleAddItemTemplate(!0)}async hideAddItemTemplate(){this.itemToAdd=null,this.toggleAddItemTemplate(!1)}clearItems(){var t;this.setValue(null),null===(t=this.selectableModalComponent)||void 0===t||t.update(),this.emitCleared()}closeModal(){this.close()}addItemClick(){this.hasTemplateRender&&this.hasTemplateRender("addItem")?this.showAddItemTemplate():this.emitItemAdding()}onSearchbarValueChanged(t){this.startSearch(),this.filterItems(t.detail.value),this.endSearch()}isItemSelected(t){return void 0!==this.selectedItems.find(i=>this.getItemValue(t)===this.getStoredItemValue(i))}isItemDisabled(t){if(this.disabledItems)return this.disabledItems.some(i=>this.getItemValue(i)===this.getItemValue(t))}selectItem(t){const i=this.isItemSelected(t);this.isMultiple?(i?this.deleteSelectedItem(t):this.addSelectedItem(t),this.itemsToConfirm=[...this.selectedItems],this.emitSelected(t,!i)):this.hasConfirmButton?(this.selectedItems=[],i?this.deleteSelectedItem(t):this.addSelectedItem(t),this.itemsToConfirm=[...this.selectedItems],this.emitSelected(t,!i)):(i||(this.selectedItems=[],this.addSelectedItem(t),this.emitSelected(t,!0),this.setValue(t)),this.close())}confirmSelection(){this.confirm(),this.close()}getMoreItems(){this.emitIonInfiniteScrolled()}setValue(t,i=!0){var s;if(this.isChangeInternal=i,t){t="string"==typeof t?JSON.parse(t.replace(/\'/gi,'"')):t;const i=Array.isArray(t);if(i||(t=[t]),this.isMultiple&&!i)throw new Error("If isMultiple is set to true, value must be array: "+this.element.id);if(!this.isMultiple&&i)throw new Error("If isMultiple is set to false, value must be object: "+this.element.id);this.valueItems=[],t.forEach(t=>{if(this.shouldStoreItemValue&&"object"==typeof t)throw new Error("If shouldStoreItemValue is set to true, value must be primitive: "+this.element.id);if(!this.shouldStoreItemValue&&"object"!=typeof t)throw new Error("If shouldStoreItemValue is set to false, value must be object: "+this.element.id);const i=this.items.find(i=>this.getItemValue(i)===this.getStoredItemValue(t));i&&this.valueItems.push(this.getItem(i))}),this.isMultiple?this.selectedItems=[...this.valueItems]:(this.valueItems=this.valueItems.pop(),this.selectedItems=[this.valueItems]),this.isChangeInternal&&(this.value=this.valueItems)}else this.valueItems=[],this.selectedItems=[],this.isChangeInternal&&(this.value=this.isMultiple?[]:null);this.itemsToConfirm=[],this.isOpened&&(null===(s=this.selectableModalComponent)||void 0===s||s.update()),this.isInited&&this.emitChanged()}setItems(t){var i,s;if(!Array.isArray(t))throw new Error("items must be array: "+this.element.id);this.items.forEach(t=>{"object"==typeof t&&(this.hasObjects=!0)}),this.hasObjects||(this.shouldStoreItemValue=!0),this.onItemValueFieldChanged(this.itemValueField),this.onItemTextFieldChanged(this.itemTextField),this.onShouldStoreItemValueChanged(this.shouldStoreItemValue),this.hasGroups=Boolean(this.hasObjects&&(this.groupValueField||this.groupTextField)&&!this.hasVirtualScroll);let e=[{items:t||[]}];t&&t.length&&this.hasGroups&&(e=[],t.forEach(t=>{const i=this.getPropertyValue(t,this.groupValueField||this.groupTextField),s=e.find(t=>t.value===i);s?s.items.push(t):e.push({value:i,text:this.getPropertyValue(t,this.groupTextField),items:[t]})})),this.groups=e,this.filteredGroups=this.groups,this.hasFilteredItems=!this.areGroupsEmpty(this.filteredGroups),this.hasVirtualScroll&&(null===(i=this.selectableModalComponent)||void 0===i||i.virtualScrollElement.checkEnd()),null===(s=this.selectableModalComponent)||void 0===s||s.update(),this.isInited&&this.emitItemsChanged()}filterItems(t,i=!0){var s;if(this.isChangeInternal=i,this.setHasSearchText(t),this.shouldDelegateSearchToEvent)this.emitSearching();else{let t=[];""===this.searchText?t=this.groups:(this.groups.forEach(i=>{const s=i.items.filter(t=>-1!==(this.itemTextField?t[this.itemTextField]:t).toString().toLowerCase().indexOf(this.searchText.trim().toLowerCase()));s.length&&t.push({value:i.value,text:i.text,items:s})}),t.length||t.push({items:[]})),this.filteredGroups=t,this.hasFilteredItems=!this.areGroupsEmpty(t),this.emitOnSearchSuccessedOrFailed(this.hasFilteredItems),null===(s=this.selectableModalComponent)||void 0===s||s.update()}}addSelectedItem(t){var i;this.selectedItems.find(i=>this.getItemValue(t)===this.getStoredItemValue(i))||this.selectedItems.push(this.getItem(t)),null===(i=this.selectableModalComponent)||void 0===i||i.update()}deleteSelectedItem(t){var i;let s;this.selectedItems.forEach((i,e)=>{this.getItemValue(t)===this.getStoredItemValue(i)&&(s=e)}),this.selectedItems.splice(s,1),null===(i=this.selectableModalComponent)||void 0===i||i.update()}getItem(t){return this.hasObjects&&this.shouldStoreItemValue?t[this.itemValueField]:t}getItemValue(t){return this.hasObjects?t[this.itemValueField]:t}getStoredItemValue(t){return this.hasObjects?this.shouldStoreItemValue?t:t[this.itemValueField]:t}toggleAddItemTemplate(t){var i;this.hasTemplateRender&&this.hasTemplateRender("addItem")&&(this.isAddItemTemplateVisible=t,this.isFooterVisible=!t,null===(i=this.selectableModalComponent)||void 0===i||i.update())}emitSelected(t,i){this.selected.emit(new n(t,i,this.element))}emitChanged(){this.changed.emit(new l(this.valueItems,this.element))}emitOpened(){this.opened.emit(new o(this.valueItems,this.element))}emitClosed(){this.closed.emit(new a(this.valueItems,this.element))}emitCleared(){this.cleared.emit(new r(this.selectedItems,this.element))}emitItemAdding(){this.itemAdding.emit(new d(this.valueItems,this.element))}emitItemsChanged(){this.itemsChanged.emit({component:this.element,value:this.items})}emitSearching(){this.searching.emit(new c(this.searchText,this.element))}emitIonInfiniteScrolled(){this.infiniteScrolled.emit(new m(this.searchText,this.element))}emitOnSearchSuccessedOrFailed(t){t?this.searchSuccessed.emit(new p(this.searchText,this.element)):this.searchFailed.emit(new u(this.searchText,this.element))}isNullOrWhiteSpace(t){return null==t||t.toString().replace(/\s/g,"").length<1}setHasSearchText(t){this.hasSearchText=!this.isNullOrWhiteSpace(t),this.searchText=this.hasSearchText?t.trim():""}countFooterButtons(){var t;let i=0;this.canClear&&i++,(this.isMultiple||this.hasConfirmButton)&&i++,this.canAddItem&&i++,this.footerButtonsCount=i,null===(t=this.selectableModalComponent)||void 0===t||t.update()}areGroupsEmpty(t){return 0===t.length||t.every(t=>!t.items||0===t.items.length)}getItemText(t){return this.hasObjects?this.getPropertyValue(t,this.itemTextField):null!=t?t:""}getPropertyValue(t,i){return i?i.split(".").reduce((t,i)=>t?t[i]:null,t):""}parseValue(){return JSON.stringify(this.valueItems)}generateText(){if(Array.isArray(this.valueItems))return this.valueItems.map(t=>{const i=this.items.find(i=>this.getItemValue(i)===this.getStoredItemValue(t));return i?this.getItemText(i):""}).filter(t=>null!==t).join(", ");{const t=this.items.find(t=>this.getItemValue(t)===this.getStoredItemValue(this.valueItems));return t?this.getItemText(t):""}}getText(){const t=this.selectedText;return null!=t&&""!==t?t:this.generateText()}async emitStyle(){this.ionStyle.emit({interactive:!0,"ionic-selectable":!0,"has-placeholder":null!=this.placeholder,"has-value":await this.hasValue(),"interactive-disabled":this.isDisabled,"ionic-selectable-is-disabled":this.isDisabled})}whatchModalEvents(){this.modalElement.onDidDismiss().then(t=>{this.isOpened=!1,this.setFocus(),this.itemsToConfirm=[],"backdrop"===t.role&&this.emitClosed()})}setFocus(){this.buttonElement&&this.buttonElement.focus()}render(){const{placeholder:t,name:i,isDisabled:h,isOpened:n,element:l}=this,o=b();this.isRendered||"md"===o&&(t=>{const i=t.closest("ion-item").shadowRoot.querySelector("div.item-native");if(i){const t=i.ownerDocument.createElement("ion-ripple-effect");i.appendChild(t)}})(l);const a=l.closest("ion-item");a&&(a.classList.add("ion-activatable"),n?a.classList.add("item-has-focus"):a.classList.remove("item-has-focus"));const r=this.id+"-lbl";let d="item-label-default";const c=g(l);c&&(c.id=r,d="item-label-"+(c.getAttribute("position")?c.getAttribute("position"):"default")),((t,i,s,e,h)=>{{let t=i.querySelector("input.aux-input");t||(t=i.ownerDocument.createElement("input"),t.type="hidden",t.classList.add("aux-input"),i.appendChild(t)),t.disabled=h,t.name=s,t.value=e||""}})(0,l,i,this.parseValue(),h);let m=!1,p=this.getText();""===p&&(null!=t||this.hasTemplateRender&&this.hasTemplateRender("placeholder"))&&(p=t,m=!0);const u={"ionic-selectable-text":!0,"ionic-selectable-placeholder":m},f=m?"placeholder":"text";let I;return I=m&&this.hasTemplateRender&&this.hasTemplateRender("placeholder")?s("div",{class:u,ref:t=>{this.templateRender(t,{type:"placeholder"})}}):this.hasTemplateRender&&this.hasTemplateRender("value")?s("div",{class:u,ref:t=>{this.templateRender(t,{type:"value",value:this.value})}}):s("div",{class:u,part:f},p),this.isRendered=!0,s(e,{id:this.id,onClick:this.onClick,role:"combobox","aria-haspopup":"dialog","aria-disabled":h?"true":null,"aria-expanded":""+n,"aria-labelledby":r,class:{[o]:!0,"in-item":v("ion-item",l),[d]:!0,"ionic-selectable-is-disabled":h}},I,this.hasTemplateRender&&this.hasTemplateRender("icon")?s("div",{class:"ionic-selectable-icon-template",ref:t=>{this.templateRender(t,{type:"icon"})}}):s("div",{class:"ionic-selectable-icon",role:"presentation",part:"icon"},s("div",{class:"ionic-selectable-icon-inner",part:"icon-inner"})),s("button",{type:"button",onFocus:this.onFocus,onBlur:this.onBlur,disabled:h,ref:t=>this.buttonElement=t}))}get element(){return h(this)}static get watchers(){return{shouldStoreItemValue:["onShouldStoreItemValueChanged"],itemValueField:["onItemValueFieldChanged"],itemTextField:["onItemTextFieldChanged"],items:["onItemsChanged"],isDisabled:["onDisabledChanged"],placeholder:["onDisabledChanged"],value:["onValueChanged"],searchText:["onSearchTextChanged"],isMultiple:["onIsMultipleChanged"],canClear:["onIsMultipleChanged"],canAddItem:["onIsMultipleChanged"],hasConfirmButton:["onIsMultipleChanged"],disabledItems:["onDisabledItemsChanged"]}}};let y=0;I.style={md:":host{--font-family:var(--ion-font-family, inherit)}:host{--placeholder-color:currentColor;--placeholder-opacity:0.33;padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;font-family:var(--font-family, inherit);overflow:hidden;z-index:var(--z-index-item-input)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}:host(.in-item){position:static;max-width:45%}:host(.ionic-selectable-is-disabled){opacity:0.4;pointer-events:none}:host(.ion-focused) button{border:2px solid #5e9ed6}:host(.item-multiple-inputs){position:relative}:host(.item-label-stacked),:host(.item-label-floating){--padding-start:0;-ms-flex-item-align:stretch;align-self:stretch;width:100%;max-width:100%}button{left:0;top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}[dir=rtl] button,:host-context([dir=rtl]) button{left:unset;right:unset;right:0}button::-moz-focus-inner{border:0}.ionic-selectable-placeholder{color:var(--placeholder-color);opacity:var(--placeholder-opacity)}.ionic-selectable-text{-ms-flex:1;flex:1;min-width:16px;font-size:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ionic-selectable-icon{position:relative;opacity:0.33}.ionic-selectable-icon-inner{left:5px;top:50%;margin-top:-3px;position:absolute;width:0;height:0;border-top:5px solid;border-right:5px solid transparent;border-left:5px solid transparent;color:currentColor;pointer-events:none}[dir=rtl] .ionic-selectable-icon-inner,:host-context([dir=rtl]) .ionic-selectable-icon-inner{left:unset;right:unset;right:5px}.ionic-selectable-icon-template{-ms-flex-item-align:center;align-self:center;margin-left:5px}:host{--padding-top:var(--item-md-padding-top, 10px);--padding-end:0;--padding-bottom:var(--item-md-padding-bottom, 11px);--padding-start:var(--item-md-padding-start, 16px)}:host(.item-label-stacked),:host(.item-label-floating){--padding-top:8px;--padding-bottom:8px;--padding-start:0}.ionic-selectable-icon{width:19px;height:19px}"};const x=class{constructor(i){t(this,i),this.toggleUpdate=!1}async update(){this.toggleUpdate=!this.toggleUpdate}connectedCallback(){const t=document.querySelector("ion-modal");this.selectableComponent=t.componentProps.selectableComponent,this.selectableComponent.selectableModalComponent=this}componentDidLoad(){if(this.infiniteScrollElement=this.element.querySelector("ion-infinite-scroll"),this.virtualScrollElement=this.element.querySelector("ion-virtual-scroll"),this.contentElement=this.element.querySelector("ion-content"),this.headerElement=this.element.querySelector("ion-header"),this.selectableComponent.shouldFocusSearchbar){const t=this.element.querySelector("ion-searchbar");t.setFocus(),setTimeout(()=>{t.setFocus()},1e3)}}renderItem(t){return s("ion-item",{button:!0,onClick:()=>this.selectableComponent.selectItem(t),disabled:this.selectableComponent.isItemDisabled(t)},this.selectableComponent.hasTemplateRender&&this.selectableComponent.hasTemplateRender("item")?s("span",{ref:i=>{this.selectableComponent.templateRender(i,{type:"item",value:t,isItemSelected:this.selectableComponent.isItemSelected(t),isItemDisabled:this.selectableComponent.isItemDisabled(t)})}}):s("ion-label",null,this.selectableComponent.getItemText(t)),this.selectableComponent.hasTemplateRender&&this.selectableComponent.hasTemplateRender("itemEnd")&&s("div",{slot:"end",ref:i=>{this.selectableComponent.templateRender(i,{type:"itemEnd",value:t,isItemSelected:this.selectableComponent.isItemSelected(t),isItemDisabled:this.selectableComponent.isItemDisabled(t)})}}),this.selectableComponent.hasTemplateRender&&this.selectableComponent.hasTemplateRender("itemIcon")?s("span",{ref:i=>{this.selectableComponent.templateRender(i,{type:"itemIcon",value:t,isItemSelected:this.selectableComponent.isItemSelected(t),isItemDisabled:this.selectableComponent.isItemDisabled(t)})}}):s("ion-icon",{name:this.selectableComponent.isItemSelected(t)?"checkmark-circle":"radio-button-off",size:"small",slot:this.selectableComponent.itemIconSlot}))}renderHeader(t){return s("ion-item-divider",{color:this.selectableComponent.groupColor},s("ion-label",null,t))}render(){return s(e,{class:{"ionic-selectable-modal-is-add-item-template-visible ":this.selectableComponent.isAddItemTemplateVisible}},s("ion-header",null,this.selectableComponent.hasTemplateRender&&this.selectableComponent.hasTemplateRender("header")?s("div",{ref:t=>{this.selectableComponent.templateRender(t,{type:"header"})}}):s("ion-toolbar",{color:this.selectableComponent.headerColor},s("ion-title",null,this.selectableComponent.hasTemplateRender&&this.selectableComponent.hasTemplateRender("title")?s("span",{ref:t=>{this.selectableComponent.templateRender(t,{type:"title"})}}):s("span",null,this.selectableComponent.titleText)),s("ion-buttons",{slot:this.selectableComponent.closeButtonSlot},s("ion-button",{onClick:()=>this.selectableComponent.closeModal()},this.selectableComponent.hasTemplateRender&&this.selectableComponent.hasTemplateRender("closeButton")?s("span",{ref:t=>{this.selectableComponent.templateRender(t,{type:"closeButton"})}}):s("span",null,this.selectableComponent.closeButtonText)))),this.selectableComponent.canSearch||this.selectableComponent.hasTemplateRender&&this.selectableComponent.hasTemplateRender("message")&&s("ion-toolbar",null,s("ion-searchbar",{value:this.selectableComponent.searchText,placeholder:this.selectableComponent.searchPlaceholder,debounce:this.selectableComponent.searchDebounce,cancelButtonIcon:this.selectableComponent.searchCancelButtonIcon,cancelButtonText:this.selectableComponent.searchCancelButtonText,clearIcon:this.selectableComponent.searchClearIcon,inputmode:this.selectableComponent.searchInputmode,searchIcon:this.selectableComponent.searchIcon,showCancelButton:this.selectableComponent.searchShowCancelButton,onIonChange:t=>this.selectableComponent.onSearchbarValueChanged(t)}),this.selectableComponent.hasTemplateRender&&this.selectableComponent.hasTemplateRender("message")&&s("div",{class:"ionic-selectable-message",ref:t=>{this.selectableComponent.templateRender(t,{type:"message"})}}))),s("ion-content",null,this.selectableComponent.isSearching&&s("div",{class:"ionic-selectable-spinner"},s("div",{class:"ionic-selectable-spinner-background"}),s("ion-spinner",null)),!this.selectableComponent.hasFilteredItems&&this.selectableComponent.hasTemplateRender&&this.selectableComponent.hasTemplateRender("searchFail")&&s("span",{ref:t=>{this.selectableComponent.templateRender(t,{type:"searchFail"})}}),!this.selectableComponent.hasFilteredItems&&(!this.selectableComponent.hasTemplateRender||!this.selectableComponent.hasTemplateRender("searchFail"))&&s("div",{class:"ion-margin ion-text-center"},this.selectableComponent.searchFailText),!this.selectableComponent.hasVirtualScroll&&this.selectableComponent.hasFilteredItems&&s("ion-list",null,this.selectableComponent.filteredGroups.map(t=>s("ion-item-group",null,this.selectableComponent.hasGroups&&s("ion-item-divider",{color:this.selectableComponent.groupColor},this.selectableComponent.hasTemplateRender&&this.selectableComponent.hasTemplateRender("group")?s("span",{ref:t=>{this.selectableComponent.templateRender(t,{type:"group"})}}):s("ion-label",null,t.text),this.selectableComponent.hasTemplateRender&&this.selectableComponent.hasTemplateRender("groupEnd")&&s("div",{ref:i=>{this.selectableComponent.templateRender(i,{type:"groupEnd",value:t})},slot:"end"})),t.items.map(t=>this.renderItem(t))))),this.selectableComponent.hasVirtualScroll&&this.selectableComponent.hasFilteredItems&&s("ion-virtual-scroll",{items:this.selectableComponent.filteredGroups[0].items,approxHeaderHeight:this.selectableComponent.virtualScrollApproxHeaderHeight,approxItemHeight:this.selectableComponent.virtualScrollApproxItemHeight,renderItem:t=>this.renderItem(t),renderHeader:t=>this.renderHeader(t),headerFn:this.selectableComponent.virtualScrollHeaderFn}),this.selectableComponent.hasInfiniteScroll&&s("ion-infinite-scroll",{threshold:this.selectableComponent.infiniteScrollThreshold,onIonInfinite:()=>this.selectableComponent.getMoreItems()},s("ion-infinite-scroll-content",null))),this.selectableComponent.isAddItemTemplateVisible&&s("div",{class:"ionic-selectable-add-item-template",style:{top:this.headerElement.offsetHeight+"px"},ref:t=>{this.selectableComponent.templateRender(t,{type:"addItem",value:this.selectableComponent.itemToAdd,isAdd:null==this.selectableComponent.itemToAdd})}}),(this.selectableComponent.footerButtonsCount>0||this.selectableComponent.hasTemplateRender&&this.selectableComponent.hasTemplateRender("footer"))&&s("ion-footer",{style:{visibility:this.selectableComponent.isFooterVisible?"initial":"hidden"}},this.selectableComponent.hasTemplateRender&&this.selectableComponent.hasTemplateRender("footer")?s("div",{ref:t=>{this.selectableComponent.templateRender(t,{type:"footer"})}}):s("ion-toolbar",null,s("ion-row",null,this.selectableComponent.canClear&&s("ion-col",null,s("ion-button",{onClick:()=>this.selectableComponent.clearItems(),disabled:!(this.selectableComponent.selectedItems.length>0),expand:"full"},this.selectableComponent.clearButtonText)),this.selectableComponent.canAddItem&&s("ion-col",null,s("ion-button",{onClick:()=>this.selectableComponent.addItemClick(),expand:"full"},this.selectableComponent.addButtonText)),(this.selectableComponent.isMultiple||this.selectableComponent.hasConfirmButton||this.selectableComponent.canClear)&&s("ion-col",null,s("ion-button",{onClick:()=>this.selectableComponent.confirmSelection(),disabled:!this.selectableComponent.isConfirmButtonEnabled,expand:"full"},this.selectableComponent.confirmButtonText))))))}get element(){return h(this)}};x.style={md:".sc-ionic-selectable-modal-md-h{--font-family:var(--ion-font-family, inherit)}.ionic-selectable-add-item-template.sc-ionic-selectable-modal-md{position:fixed;bottom:0;left:0;right:0;background-color:var(--ion-background-color, #ffffff)}.ionic-selectable-spinner.sc-ionic-selectable-modal-md{position:fixed;bottom:0;top:0;left:0;right:0;z-index:1}.ionic-selectable-spinner-background.sc-ionic-selectable-modal-md{top:0;bottom:0;left:0;right:0;position:absolute;background-color:#000000;opacity:0.05}.ionic-selectable-spinner.sc-ionic-selectable-modal-md ion-spinner.sc-ionic-selectable-modal-md{position:absolute;top:50%;left:50%;z-index:10;margin-top:-14px;margin-left:-14px}"};export{I as ionic_selectable,x as ionic_selectable_modal}