// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("exports ./componentsUtils ./array2 ./dom ./guid ./key ./loadable ./action ./icon ./loader ./popover".split(" "),function(h,f,m,n,r,t,k,u,v,w,x){function p(){"undefined"!==typeof customElements&&["calcite-action-menu","calcite-action","calcite-icon","calcite-loader","calcite-popover"].forEach(a=>{switch(a){case "calcite-action-menu":customElements.get(a)||customElements.define(a,q);break;case "calcite-action":customElements.get(a)||u.defineCustomElement();break;case "calcite-icon":customElements.get(a)|| v.defineCustomElement();break;case "calcite-loader":customElements.get(a)||w.defineCustomElement();break;case "calcite-popover":customElements.get(a)||x.defineCustomElement()}})}const l={tooltip:"tooltip",trigger:"trigger"},y=["ArrowUp","ArrowDown","End","Home"],q=f.proxyCustomElement(class extends f.H{constructor(){super();this.__registerHost();this.__attachShadow();this.calciteActionMenuOpen=f.createEvent(this,"calciteActionMenuOpen",6);this.actionElements=[];this.guid=`calcite-action-menu-${r.guid()}`; this.menuId=`${this.guid}-menu`;this.menuButtonId=`${this.guid}-menu-button`;this.connectMenuButtonEl=()=>{const {menuButtonId:a,menuId:b,open:c,label:e}=this,d=this.slottedMenuButtonEl||this.defaultMenuButtonEl;this.menuButtonEl!==d&&(this.disconnectMenuButtonEl(),this.menuButtonEl=d,this.setTooltipReferenceElement(),d&&(d.active=c,d.setAttribute("aria-controls",b),d.setAttribute("aria-expanded",n.toAriaBoolean(c)),d.setAttribute("aria-haspopup","true"),d.id||(d.id=a),d.label||(d.label=e),d.text|| (d.text=e),d.addEventListener("click",this.menuButtonClick),d.addEventListener("keydown",this.menuButtonKeyDown)))};this.disconnectMenuButtonEl=()=>{const {menuButtonEl:a}=this;a&&(a.removeEventListener("click",this.menuButtonClick),a.removeEventListener("keydown",this.menuButtonKeyDown))};this.setMenuButtonEl=a=>{this.slottedMenuButtonEl=a.target.assignedElements({flatten:!0}).filter(b=>b?.matches("calcite-action"))[0];this.connectMenuButtonEl()};this.setDefaultMenuButtonEl=a=>{this.defaultMenuButtonEl= a;this.connectMenuButtonEl()};this.handleCalciteActionClick=()=>{this.open=!1;this.setFocus()};this.menuButtonClick=()=>{this.toggleOpen()};this.updateTooltip=a=>{this.tooltipEl=a.target.assignedElements({flatten:!0}).filter(b=>b?.matches("calcite-tooltip"))[0];this.setTooltipReferenceElement()};this.setTooltipReferenceElement=()=>{const {tooltipEl:a,expanded:b,menuButtonEl:c,open:e}=this;a&&(a.referenceElement=b||e?null:c)};this.updateAction=(a,b)=>{const {guid:c,activeMenuItemIndex:e}=this,d=`${c}-action-${b}`; a.tabIndex=-1;a.setAttribute("role","menuitem");a.id||(a.id=d);a.toggleAttribute("data-active",b===e)};this.updateActions=a=>{a?.forEach(this.updateAction)};this.handleDefaultSlotChange=a=>{this.actionElements=a.target.assignedElements({flatten:!0}).reduce((b,c)=>c?.matches("calcite-action")?(b.push(c),b):c?.matches("calcite-action-group")?b.concat(Array.from(c.querySelectorAll("calcite-action"))):b,[]).filter(b=>!b.disabled&&!b.hidden)};this.menuButtonKeyDown=a=>{const {key:b}=a,{actionElements:c, activeMenuItemIndex:e,open:d}=this;if(c.length){if(t.isActivationKey(b)){a.preventDefault();if(!d){this.toggleOpen();return}const g=c[e];g?g.click():this.toggleOpen(!1)}"Tab"===b?this.open=!1:"Escape"===b?(this.toggleOpen(!1),a.preventDefault()):this.handleActionNavigation(a,b,c)}};this.handleActionNavigation=(a,b,c)=>{if(this.isValidKey(b,y))if(a.preventDefault(),this.open)"Home"===b&&(this.activeMenuItemIndex=0),"End"===b&&(this.activeMenuItemIndex=c.length-1),a=this.activeMenuItemIndex,"ArrowUp"=== b&&(this.activeMenuItemIndex=m.getRoundRobinIndex(Math.max(a-1,-1),c.length)),"ArrowDown"===b&&(this.activeMenuItemIndex=m.getRoundRobinIndex(a+1,c.length));else{this.toggleOpen();if("Home"===b||"ArrowDown"===b)this.activeMenuItemIndex=0;if("End"===b||"ArrowUp"===b)this.activeMenuItemIndex=c.length-1}};this.toggleOpenEnd=()=>{this.setFocus();this.el.removeEventListener("calcitePopoverOpen",this.toggleOpenEnd)};this.toggleOpen=(a=!this.open)=>{this.el.addEventListener("calcitePopoverOpen",this.toggleOpenEnd); this.open=a};this.handlePopoverOpen=()=>{this.open=!0};this.handlePopoverClose=()=>{this.open=!1};this.appearance="solid";this.expanded=!1;this.label=this.flipPlacements=void 0;this.open=!1;this.overlayPositioning="absolute";this.placement="auto";this.menuButtonEl=this.scale=void 0;this.activeMenuItemIndex=-1}connectedCallback(){this.connectMenuButtonEl()}componentWillLoad(){k.setUpLoadableComponent(this)}componentDidLoad(){k.setComponentLoaded(this)}disconnectedCallback(){this.disconnectMenuButtonEl()}expandedHandler(){this.open= !1;this.setTooltipReferenceElement()}openHandler(a){this.activeMenuItemIndex=this.open?0:-1;this.menuButtonEl&&(this.menuButtonEl.active=a);this.calciteActionMenuOpen.emit();this.setTooltipReferenceElement()}activeMenuItemIndexHandler(){this.updateActions(this.actionElements)}async setFocus(){await k.componentFocusable(this);return n.focusElement(this.menuButtonEl)}renderMenuButton(){const {appearance:a,label:b,scale:c,expanded:e}=this;return f.h("slot",{name:l.trigger,onSlotchange:this.setMenuButtonEl}, f.h("calcite-action",{appearance:a,class:"default-trigger",icon:"ellipsis",scale:c,text:b,textEnabled:e,ref:this.setDefaultMenuButtonEl}))}renderMenuItems(){const {actionElements:a,activeMenuItemIndex:b,open:c,menuId:e,menuButtonEl:d,label:g,placement:z,overlayPositioning:A,flipPlacements:B}=this;return f.h("calcite-popover",{autoClose:!0,flipPlacements:B,focusTrapDisabled:!0,label:g,offsetDistance:0,onCalcitePopoverClose:this.handlePopoverClose,onCalcitePopoverOpen:this.handlePopoverOpen,open:c, overlayPositioning:A,placement:z,pointerDisabled:!0,referenceElement:d},f.h("div",{"aria-activedescendant":a[b]?.id||null,"aria-labelledby":d?.id,class:"menu",id:e,onClick:this.handleCalciteActionClick,role:"menu",tabIndex:-1},f.h("slot",{onSlotchange:this.handleDefaultSlotChange})))}render(){return f.h(f.Fragment,{key:"172df111e58778a1006253a0eb444e767ad2d12b"},this.renderMenuButton(),this.renderMenuItems(),f.h("slot",{key:"1df982aa86cbdd0c2c7d847e9b6f0a4d35b5ba15",name:l.tooltip,onSlotchange:this.updateTooltip}))}isValidKey(a, b){return!!b.find(c=>c===a)}get el(){return this}static get watchers(){return{expanded:["expandedHandler"],open:["openHandler"],activeMenuItemIndex:["activeMenuItemIndexHandler"]}}static get style(){return":host{box-sizing:border-box;display:flex;flex-direction:column;font-size:var(--calcite-font-size-1);color:var(--calcite-color-text-2)}::slotted(calcite-action-group){border-block-end:1px solid var(--calcite-color-border-3)}::slotted(calcite-action-group:last-child){border-block-end:0}.default-trigger{position:relative;block-size:100%;flex:0 1 auto;align-self:stretch}slot[name\x3dtrigger]::slotted(calcite-action),calcite-action::slotted([slot\x3dtrigger]){position:relative;block-size:100%;flex:0 1 auto;align-self:stretch}.menu{max-block-size:45vh;flex-direction:column;flex-wrap:nowrap;overflow-y:auto;overflow-x:hidden;outline:2px solid transparent;outline-offset:2px}:host([hidden]){display:none}[hidden]{display:none}"}}, [1,"calcite-action-menu",{appearance:[513],expanded:[516],flipPlacements:[16],label:[1],open:[1540],overlayPositioning:[513,"overlay-positioning"],placement:[513],scale:[513],menuButtonEl:[32],activeMenuItemIndex:[32],setFocus:[64]},void 0,{expanded:["expandedHandler"],open:["openHandler"],activeMenuItemIndex:["activeMenuItemIndexHandler"]}]);p();h.ActionMenu=q;h.SLOTS=l;h.defineCustomElement=p});