/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
import{a as m}from"./QUFMR3GW.js";import{a as p}from"./ENDXE7YY.js";import"./EH5Y2TRK.js";import"./UANLRLKZ.js";import{y as i}from"./DVG3NA3H.js";import"./OAOQ5BXS.js";import{F as r,G as n,H as d,S as h,g as l,h as c,p as o}from"./PGOMURMZ.js";var u={container:"container"},f=l`:host([disabled]){cursor:default;-webkit-user-select:none;user-select:none;opacity:var(--calcite-opacity-disabled)}:host([disabled]) *,:host([disabled]) ::slotted(*){pointer-events:none}:host{box-sizing:border-box;display:inline-block}:host ::slotted(calcite-tile){margin-block-end:var(--calcite-spacing-px);margin-inline-end:var(--calcite-spacing-px)}.container{display:grid;grid-auto-rows:minmax(auto,1fr);grid-auto-flow:column}:host([scale=s]) .container{grid-template-columns:repeat(auto-fit,minmax(100px,1fr))}:host([scale=m]) .container{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}:host([scale=l]) .container{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}:host([layout=vertical]) .container{display:flex;flex-direction:column}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}.interaction-container{display:contents}:host([hidden]){display:none}[hidden]{display:none}`,a=class extends n{constructor(){super(),this.items=[],this.mutationObserver=p("mutation",()=>this.updateTiles()),this.interactiveContainer=m(this),this.alignment="start",this.disabled=!1,this.layout="horizontal",this.scale="m",this.selectedItems=[],this.selectionAppearance="icon",this.selectionMode="none",this.calciteTileGroupSelect=o({cancelable:!1}),this.listen("calciteInternalTileKeyEvent",this.calciteInternalTileKeyEventListener),this.listen("calciteTileSelect",this.calciteTileSelectHandler)}static{this.properties={alignment:[3,{},{reflect:!0}],disabled:[7,{},{reflect:!0,type:Boolean}],label:1,layout:[3,{},{reflect:!0}],scale:[3,{},{reflect:!0}],selectedItems:[0,{},{attribute:!1}],selectionAppearance:[3,{},{reflect:!0}],selectionMode:[3,{},{reflect:!0}]}}static{this.styles=f}connectedCallback(){super.connectedCallback(),this.mutationObserver?.observe(this.el,{childList:!0}),this.updateTiles()}willUpdate(e){(e.has("scale")&&(this.hasUpdated||this.scale!=="m")||e.has("selectionMode")&&(this.hasUpdated||this.selectionMode!=="none")||e.has("selectionAppearance")&&(this.hasUpdated||this.selectionAppearance!=="icon"))&&this.updateTiles()}loaded(){this.updateSelectedItems()}disconnectedCallback(){super.disconnectedCallback(),this.mutationObserver?.disconnect()}getSlottedTiles(){return this.slotEl?.assignedElements({flatten:!0}).filter(e=>e?.matches("calcite-tile"))}selectItem(e){e&&(this.items?.forEach(t=>{let s=e===t;switch(this.selectionMode){case"multiple":s&&(t.selected=!t.selected);break;case"single":t.selected=s&&!t.selected;break;case"single-persist":t.selected=!!s;break}}),this.updateSelectedItems(),this.calciteTileGroupSelect.emit())}setSlotEl(e){this.slotEl=e}updateSelectedItems(){let e=this.items?.filter(t=>t.selected);(this.selectionMode==="single"||this.selectionMode==="single-persist")&&e?.length>1?(this.selectedItems=[e.pop()],this.items?.forEach(t=>{this.selectedItems.indexOf(t)===-1&&(t.selected=!1)})):this.selectedItems=e??[]}updateTiles(){this.items=this.getSlottedTiles(),this.items?.forEach(e=>{e.alignment=this.alignment,e.interactive=!0,e.layout=this.layout,e.scale=this.scale,e.selectionAppearance=this.selectionAppearance,e.selectionMode=this.selectionMode}),this.updateSelectedItems()}calciteInternalTileKeyEventListener(e){if(e.composedPath().includes(this.el)){e.preventDefault(),e.stopPropagation();let t=this.items?.filter(s=>!s.disabled);switch(e.detail.key){case"ArrowDown":case"ArrowRight":i(t,e.detail.target,"next",!0,!1);break;case"ArrowUp":case"ArrowLeft":i(t,e.detail.target,"previous",!0,!1);break;case"Home":i(t,e.detail.target,"first",!0,!1);break;case"End":i(t,e.detail.target,"last",!0,!1);break}}}calciteTileSelectHandler(e){e.composedPath().includes(this.el)&&this.selectItem(e.target)}render(){let e=this.selectionMode==="none"||this.selectionMode==="multiple"?"group":"radiogroup";return this.interactiveContainer({disabled:this.disabled,children:c`<div .ariaLabel=${this.label} class=${d(u.container)} .role=${e}><slot @slotchange=${this.updateTiles} ${r(this.setSlotEl)}></slot></div>`})}};h("calcite-tile-group",a);export{a as TileGroup};
