1/*! All material copyright ESRI, All Rights Reserved, unless otherwise specified. 2See https://github.com/Esri/calcite-design-system/blob/dev/LICENSE.md for details. 3v3.0.2 */ 4import{a as h}from"./KKGMEX34.js";import{a as $}from"./R4WJ47LZ.js";import{b as r}from"./FC7N6LLB.js";import{a as u,b as d,c as M,d as B}from"./ARIDWTR6.js";import{l as x,r as b}from"./GO4QOK2G.js";import{b as I}from"./PBIOUIAG.js";import{a as v}from"./P7S34RN4.js";import{J as E,e as m,f as a,j as l,v as f,w as g,x as c}from"./63TOND25.js";var k=m`:host{box-sizing:border-box;display:flex;flex-direction:column;font-size:var(--calcite-font-size-1)}::slotted(calcite-action-group:not(:last-of-type)){border-block-end-width:var(--calcite-border-width-sm)}.default-trigger{position:relative;block-size:100%;flex:0 1 auto;align-self:stretch}slot[name=trigger]::slotted(calcite-action),calcite-action::slotted([slot=trigger]){position:relative;block-size:100%;flex:0 1 auto;align-self:stretch}.menu{display:flex;max-block-size:45vh;flex-direction:column;flex-wrap:nowrap;overflow-y:auto;overflow-x:hidden;outline:2px solid transparent;outline-offset:2px;gap:var(--calcite-action-menu-items-space, 0)}:host([hidden]){display:none}[hidden]{display:none}`,C=["ArrowUp","ArrowDown","End","Home"],p=class extends g{constructor(){super(...arguments),this.guid=`calcite-action-menu-${v()}`,this.actionElements=[],this.menuButtonClick=()=>{this.toggleOpen()},this.menuButtonId=`${this.guid}-menu-button`,this.menuButtonKeyDown=e=>{let{key:t}=e,{actionElements:n,activeMenuItemIndex:i,open:o}=this;if(n.length){if($(t)){if(e.preventDefault(),!o){this.toggleOpen();return}let s=n[i];s?s.click():this.toggleOpen(!1)}if(t==="Tab"){this.open=!1;return}if(t==="Escape"){this.toggleOpen(!1),e.preventDefault();return}this.handleActionNavigation(e,t,n)}},this.menuId=`${this.guid}-menu`,this._open=!1,this.updateAction=(e,t)=>{let{guid:n,activeMenuItemIndex:i}=this,o=`${n}-action-${t}`;e.tabIndex=-1,e.setAttribute("role","menuitem"),e.id||(e.id=o),e.toggleAttribute(B,t===i)},this.activeMenuItemIndex=-1,this.appearance="solid",this.expanded=!1,this.overlayPositioning="absolute",this.placement="auto",this.scale="m",this.calciteActionMenuOpen=f({cancelable:!1})}static{this.properties={activeMenuItemIndex:16,menuButtonEl:16,appearance:3,expanded:7,flipPlacements:0,label:1,open:7,overlayPositioning:3,placement:3,scale:3}}static{this.styles=k}get open(){return this._open}set open(e){let t=this._open;e!==t&&(this._open=e,this.openHandler(e))}async setFocus(){return await I(this),x(this.menuButtonEl)}connectedCallback(){super.connectedCallback(),this.connectMenuButtonEl()}load(){}willUpdate(e){e.has("expanded")&&(this.hasUpdated||this.expanded!==!1)&&this.expandedHandler(),e.has("activeMenuItemIndex")&&(this.hasUpdated||this.activeMenuItemIndex!==-1)&&this.updateActions(this.actionElements)}loaded(){}disconnectedCallback(){super.disconnectedCallback(),this.disconnectMenuButtonEl()}expandedHandler(){this.open=!1,this.setTooltipReferenceElement()}openHandler(e){this.menuButtonEl&&(this.menuButtonEl.active=e),this.popoverEl&&(this.popoverEl.open=e),this.activeMenuItemIndex=this.open?0:-1,this.calciteActionMenuOpen.emit(),this.setTooltipReferenceElement()}connectMenuButtonEl(){let{menuButtonId:e,menuId:t,open:n,label:i}=this,o=this.slottedMenuButtonEl||this.defaultMenuButtonEl;this.menuButtonEl!==o&&(this.disconnectMenuButtonEl(),this.menuButtonEl=o,this.setTooltipReferenceElement(),o&&(o.active=n,o.setAttribute("aria-controls",t),o.setAttribute("aria-expanded",b(n)),o.setAttribute("aria-haspopup","true"),o.id||(o.id=e),o.label||(o.label=i),o.text||(o.text=i),o.addEventListener("click",this.menuButtonClick),o.addEventListener("keydown",this.menuButtonKeyDown)))}disconnectMenuButtonEl(){let{menuButtonEl:e}=this;e&&(e.removeEventListener("click",this.menuButtonClick),e.removeEventListener("keydown",this.menuButtonKeyDown),this.menuButtonEl=null)}setMenuButtonEl(e){let t=e.target.assignedElements({flatten:!0}).filter(n=>n?.matches("calcite-action"));
4this.slottedMenuButtonEl=t[0],this.connectMenuButtonEl()}setDefaultMenuButtonEl(e){this.defaultMenuButtonEl=e,e&&this.connectMenuButtonEl()}setPopoverEl(e){e&&(this.popoverEl=e,e.open=this.open)}handleCalciteActionClick(){this.open=!1,this.setFocus()}updateTooltip(e){let t=e.target.assignedElements({flatten:!0}).filter(n=>n?.matches("calcite-tooltip"));this.tooltipEl=t[0],this.setTooltipReferenceElement()}setTooltipReferenceElement(){let{tooltipEl:e,expanded:t,menuButtonEl:n,open:i}=this;e&&(e.referenceElement=!t&&!i?n:null)}updateActions(e){e?.forEach(this.updateAction)}handleDefaultSlotChange(e){let t=e.target.assignedElements({flatten:!0}).reduce((n,i)=>i?.matches("calcite-action")?(n.push(i),n):i?.matches("calcite-action-group")?n.concat(Array.from(i.querySelectorAll("calcite-action"))):n,[]);this.actionElements=t.filter(n=>!n.disabled&&!n.hidden)}isValidKey(e,t){return!!t.find(n=>n===e)}handleActionNavigation(e,t,n){if(!this.isValidKey(t,C))return;if(e.preventDefault(),!this.open){this.toggleOpen(),(t==="Home"||t==="ArrowDown")&&(this.activeMenuItemIndex=0),(t==="End"||t==="ArrowUp")&&(this.activeMenuItemIndex=n.length-1);return}t==="Home"&&(this.activeMenuItemIndex=0),t==="End"&&(this.activeMenuItemIndex=n.length-1);let i=this.activeMenuItemIndex;t==="ArrowUp"&&(this.activeMenuItemIndex=h(Math.max(i-1,-1),n.length)),t==="ArrowDown"&&(this.activeMenuItemIndex=h(i+1,n.length))}toggleOpen(e=!this.open){this.open=e}handlePopoverOpen(){this.open=!0,this.setFocus()}handlePopoverClose(){this.open=!1}renderMenuButton(){let{appearance:e,label:t,scale:n,expanded:i}=this;return a`<slot name=${d.trigger} @slotchange=${this.setMenuButtonEl}><calcite-action .appearance=${e} class=${c(u.defaultTrigger)} .icon=${M.menu} .scale=${n} .text=${t} .textEnabled=${i} ${r(this.setDefaultMenuButtonEl)}></calcite-action></slot>`}renderMenuItems(){let{actionElements:e,activeMenuItemIndex:t,menuId:n,menuButtonEl:i,label:o,placement:s,overlayPositioning:A,flipPlacements:y}=this,w=e[t]?.id||null;return a`<calcite-popover auto-close .flipPlacements=${y} focus-trap-disabled .label=${o} offset-distance=0 @calcitePopoverClose=${this.handlePopoverClose} @calcitePopoverOpen=${this.handlePopoverOpen} .overlayPositioning=${A} .placement=${s} pointer-disabled .referenceElement=${i} trigger-disabled ${r(this.setPopoverEl)}><div aria-activedescendant=${w??l} aria-labelledby=${i?.id??l} class=${c(u.menu)} id=${n??l} @click=${this.handleCalciteActionClick} role=menu tabindex=-1><slot @slotchange=${this.handleDefaultSlotChange}></slot></div></calcite-popover>`}render(){return a`${this.renderMenuButton()}${this.renderMenuItems()}<slot name=${d.tooltip} @slotchange=${this.updateTooltip}></slot>`}};E("calcite-action-menu",p);export{p as ActionMenu};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.