@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
3 lines (2 loc) • 7.12 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
import{a as p,b as $,c as S}from"./DNYAPW4C.js";import{a as v}from"./LHBACKJ5.js";import{c as m}from"./RRXOB3GM.js";import{c as M}from"./G52BPUIA.js";import{a as x}from"./D7Q3AXKP.js";import"./RH6ZIP65.js";import"./YJF4NBEX.js";import"./TQRVWHPS.js";import{t as b}from"./KDWR7M23.js";import"./OAOQ5BXS.js";import{G as g,H as A,S as y,g as f,h,p as l}from"./C4ZX7VYR.js";var a=(n,e,t)=>(t.configurable=!0,t.enumerable=!0,Reflect.decorate&&typeof e!="object"&&Object.defineProperty(n,e,t),t);function C(n){return(e,t)=>{let{slot:i,selector:o}=n??{},s="slot"+(i?`[name=${i}]`:":not([name])");return a(e,t,{get(){let r=this.renderRoot?.querySelector(s),c=r?.assignedElements(n)??[];return o===void 0?c:c.filter((d=>d.matches(o)))}})}}var E=f`:host{box-sizing:border-box;background-color:var(--calcite-color-foreground-1);color:var(--calcite-color-text-2);font-size:var(--calcite-font-size--1)}:host *{box-sizing:border-box}:host([scale=s]){--calcite-internal-action-group-gap: var(--calcite-spacing-xxs)}:host([scale=m]){--calcite-internal-action-group-gap: var(--calcite-spacing-sm)}:host([scale=l]){--calcite-internal-action-group-gap: var(--calcite-spacing-sm-plus)}:host{display:flex;flex-direction:column;padding:0;background-color:transparent;border-color:var(--calcite-action-group-border-color, var(--calcite-color-border-3));border-style:solid;border-width:0;gap:var(--calcite-internal-action-group-gap)}.container{display:flex;flex-grow:1;flex-direction:column;gap:inherit}:host([columns="1"]){--calcite-internal-action-group-columns: 1}:host([columns="2"]){--calcite-internal-action-group-columns: 2}:host([columns="3"]){--calcite-internal-action-group-columns: 3}:host([columns="4"]){--calcite-internal-action-group-columns: 4}:host([columns="5"]){--calcite-internal-action-group-columns: 5}:host([columns="6"]){--calcite-internal-action-group-columns: 6}:host(:first-child){padding-block-start:0px}:host([layout=horizontal]),:host([layout=horizontal]) .container{flex-direction:row}:host([layout=grid]){display:grid}:host([layout=grid]) .container{display:grid;place-content:stretch;background-color:transparent;gap:var(--calcite-action-group-gap, var(--calcite-internal-action-group-gap));grid-template-columns:repeat(var(--calcite-action-group-columns, var(--calcite-internal-action-group-columns, 3)),auto);padding:var(--calcite-action-group-gap, 1px)}:host([layout=horizontal]) ::slotted(calcite-action-group){border-inline-end:var(--calcite-size-px)}:host([hidden]){display:none}[hidden]{display:none}`,k=Object.defineProperty,P=(n,e,t,i)=>{for(var o=void 0,s=n.length-1,r;s>=0;s--)(r=n[s])&&(o=r(e,t,o)||o);return o&&k(e,t,o),o},u=class extends g{constructor(){super(),this.messages=v(),this.focusSetter=x()(this),this.hasMenuActions=!1,this.expanded=!1,this.layout="vertical",this.menuOpen=!1,this.overlayPositioning="absolute",this.scale="m",this.selectionMode="none",this.topLayerDisabled=!1,this.selectedActions=[],this.calciteActionGroupCollapse=l({cancelable:!1}),this.calciteActionGroupExpand=l({cancelable:!1}),this.calciteActionGroupChange=l({cancelable:!1}),this.listen("click",this.handleActionClick)}static{this.properties={hasMenuActions:[16,{},{state:!0}],columns:[11,{},{type:Number,reflect:!0}],expanded:[7,{},{reflect:!0,type:Boolean}],label:1,layout:[3,{},{reflect:!0}],menuFlipPlacements:[0,{},{attribute:!1}],menuOpen:[7,{},{reflect:!0,type:Boolean}],menuPlacement:[3,{},{reflect:!0}],messageOverrides:[0,{},{attribute:!1}],overlayPositioning:[3,{},{reflect:!0}],scale:[3,{},{reflect:!0}],selectionMode:[3,{},{reflect:!0}],topLayerDisabled:[7,{},{reflect:!0,type:Boolean}],selectedActions:[0,{},{attribute:!1}]}}static{this.shadowRootOptions={mode:"open",delegatesFocus:!0}}static{this.styles=E}async setFocus(e){return this.focusSetter(()=>this.el,e)}willUpdate(e){if(this.hasUpdated||e.has("selectionMode")){if(this.selectionMode!=="none"?this.setRoleOnActions():this.selectionMode==="none"&&this.clearActionAriaAttributes(),this.selectionMode==="single"||this.selectionMode==="single-persist"){let t=this.actions?.filter(i=>i.active)??[];t.length>1&&this.actions.forEach(i=>this.updateAction(i,i===t[t.length-1]))}this.updateSelectedActions(this.selectionMode==="none"?[]:this.actions?.filter(t=>t.active)??[])}e.has("expanded")&&((this.hasUpdated||this.expanded!==!1)&&(this.menuOpen=!1),this.hasUpdated&&(this.expanded?this.calciteActionGroupExpand.emit():this.calciteActionGroupCollapse.emit()))}setActiveAction(e,t){if(this.selectionMode==="multiple"){let i=!t.active;this.updateAction(t,i),this.updateSelectedActions(this.actions.filter(o=>o.active)),this.calciteActionGroupChange.emit();return}if(this.selectionMode==="single"){let i=!t.active;this.actions.forEach((o,s)=>this.updateAction(o,s===e&&i)),this.updateSelectedActions(this.actions.filter(o=>o.active)),this.calciteActionGroupChange.emit();return}if(this.selectionMode==="single-persist"){this.actions[e].active||(this.actions.forEach((i,o)=>this.updateAction(i,o===e)),this.updateSelectedActions([t]),this.calciteActionGroupChange.emit());return}}setMenuOpen(e){this.menuOpen=!!e.currentTarget.open}handleMenuActionsSlotChange(e){this.hasMenuActions=b(e)}handleActionClick(e){let t=e.composedPath().find(o=>M(o));if(!t||t.disabled)return;let i=this.actions.indexOf(t);i===-1||this.selectionMode==="none"||this.setActiveAction(i,t)}setRoleOnActions(){this.actions.forEach(e=>{e.aria={...e.aria,role:this.selectionMode==="single"||this.selectionMode==="single-persist"?"radio":"checkbox"},this.setActionAriaChecked(e,e.active)})}setActionAriaChecked(e,t){e.aria={...e.aria,checked:t?"true":"false"}}clearActionAriaAttributes(){this.selectionMode==="none"&&this.actions.forEach(e=>{e.aria&&(e.aria.checked=void 0,e.aria.role=void 0,e.aria={...e.aria})})}updateAction(e,t){e.active=t,this.setActionAriaChecked(e,t)}updateSelectedActions(e){let t=this.selectedActions;t.length===e.length&&t.every((o,s)=>o===e[s])||(this.selectedActions=e)}renderMenu(){let{expanded:e,menuOpen:t,scale:i,layout:o,messages:s,overlayPositioning:r,hasMenuActions:c,menuFlipPlacements:d,menuPlacement:O}=this;return h`<calcite-action-menu .expanded=${e} .flipPlacements=${d??(o==="horizontal"?["top","bottom"]:["left","right"])} .hidden=${!c} .label=${s.more} =${this.setMenuOpen} .open=${t} .overlayPositioning=${r} .placement=${O??(o==="horizontal"?"bottom-start":"leading-start")} .scale=${i} .topLayerDisabled=${this.topLayerDisabled}><calcite-action .aria=${{expanded:e}} .icon=${$.menu} .scale=${i} slot=${m.trigger} .text=${s.more} .textEnabled=${e}></calcite-action><slot name=${p.menuActions} =${this.handleMenuActionsSlotChange}></slot><slot name=${p.menuTooltip} slot=${m.tooltip}></slot></calcite-action-menu>`}render(){return h`<div .ariaLabel=${this.label} class=${A(S.container)} .role=${this.selectionMode==="multiple"||this.selectionMode==="none"?"group":"radiogroup"}><slot></slot>${this.renderMenu()}</div>`}};P([C({selector:"calcite-action"})],u.prototype,"actions");y("calcite-action-group",u);export{u as ActionGroup};