UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

3 lines (2 loc) 11.2 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0/LICENSE.txt */ import{a as q}from"./LF4YWM37.js";import{a as B}from"./M6OXKYRM.js";import{a as H,b as $,c as I,d as L}from"./PCRTPEKJ.js";import{a as x}from"./WAA77FNZ.js";import"./IT6LC2JX.js";import{a as G}from"./SQ6RHDDF.js";import{c as O}from"./2H6QHI5U.js";import"./ONZUNTVX.js";import{a as T}from"./3XLPUKLV.js";import"./3YEM2IPT.js";import"./QUTTHRH3.js";import"./MNIRD7Q7.js";import{D as c,t as k,u as C,y as g}from"./ZQBZ5QPB.js";import"./CIYXQ5G6.js";import{C as w,D as E,E as z,F as m,L as S,Q as D,g as y,h as v,p as f}from"./G7AHLVJ5.js";var K=({bufferSize:b=0,containerSize:e,itemSizes:t})=>{let a=e-b,n=t.length,i=0;for(let[r,o]of t.entries())if(i=i+o,i>a){n=r;break}else continue;return n},N=({bufferSize:b=0,containerSize:e,itemSizes:t})=>Math.max(t.length-K({bufferSize:b,itemSizes:t,containerSize:e}),0),U={container:"container",actionGroupEnd:"action-group--end"},M={actionsEnd:"actions-end",expandTooltip:"expand-tooltip"},j=y`: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-bar-gap: var(--calcite-action-bar-items-space, var(--calcite-spacing-xxs));--calcite-internal-action-bar-padding: var(--calcite-spacing-xxs)}:host([scale=m]){--calcite-internal-action-bar-gap: var(--calcite-action-bar-items-space, var(--calcite-spacing-sm));--calcite-internal-action-bar-padding: var(--calcite-spacing-sm)}:host([scale=l]){--calcite-internal-action-bar-gap: var(--calcite-action-bar-items-space, var(--calcite-space-sm-plus));--calcite-internal-action-bar-padding: var(--calcite-spacing-sm-plus)}:host{display:inline-flex;align-self:stretch;background:transparent;--calcite-internal-action-group-dividing-border-margin: calc(var(--calcite-spacing-base) + 1px)}.container{display:inline-flex;flex:1 1 auto;flex-direction:column;background-color:var(--calcite-action-bar-background-color, var(--calcite-color-foreground-1));gap:var(--calcite-internal-action-bar-gap);padding:var(--calcite-internal-action-bar-padding)}@keyframes in{0%{opacity:0}to{opacity:1}}:host([floating]) .container{animation:in var(--calcite-internal-animation-timing-slow) ease-in-out;overflow:hidden;border-radius:var(--calcite-action-bar-corner-radius, var(--calcite-corner-radius-round));--tw-shadow: 0 6px 20px -4px rgba(0, 0, 0, .1), 0 4px 12px -2px rgba(0, 0, 0, .08);--tw-shadow-colored: 0 6px 20px -4px var(--tw-shadow-color), 0 4px 12px -2px var(--tw-shadow-color);box-shadow:var(--calcite-action-bar-shadow, var(--tw-ring-offset-shadow, 0 0 rgba(0, 0, 0, 0)), var(--tw-ring-shadow, 0 0 rgba(0, 0, 0, 0)), var(--tw-shadow))}:host([layout=vertical]){flex-direction:column}:host([layout=vertical]):host([overflow-actions-disabled]) .container{overflow-y:auto}:host([layout=vertical]):host([expanded]) .container{max-inline-size:var(--calcite-action-bar-expanded-max-width, auto)}:host([layout=vertical]) .action-group--end{margin-block-start:auto}:host([layout=vertical]) ::slotted(calcite-action-group:not(:last-of-type)){border-block-end-width:var(--calcite-border-width-sm);border-image:linear-gradient(to right,transparent var(--calcite-internal-action-group-dividing-border-margin),var(--calcite-action-group-border-color, var(--calcite-color-border-3)) var(--calcite-internal-action-group-dividing-border-margin),var(--calcite-action-group-border-color, var(--calcite-color-border-3)) calc(100% - var(--calcite-internal-action-group-dividing-border-margin)),transparent var(--calcite-internal-action-group-dividing-border-margin));border-image-slice:1;padding-block-end:var(--calcite-internal-action-bar-padding)}:host([layout=horizontal]){flex-direction:row}:host([layout=horizontal]) .container{flex-direction:row}:host([layout=horizontal]):host([overflow-actions-disabled]) .container{overflow-x:auto}:host([layout=horizontal]) .action-group--end{margin-inline-start:auto}:host([layout=horizontal]) ::slotted(calcite-action-group:not(:last-of-type)){border-image:linear-gradient(transparent var(--calcite-internal-action-group-dividing-border-margin),var(--calcite-action-group-border-color, var(--calcite-color-border-3)) var(--calcite-internal-action-group-dividing-border-margin),var(--calcite-action-group-border-color, var(--calcite-color-border-3)) calc(100% - var(--calcite-internal-action-group-dividing-border-margin)),transparent var(--calcite-internal-action-group-dividing-border-margin));border-image-slice:1;border-inline-end-width:var(--calcite-border-width-sm);padding-inline-end:var(--calcite-internal-action-bar-padding)}.action-group--end{justify-content:flex-end}:host([hidden]){display:none}[hidden]{display:none}`,A=class extends z{constructor(){super(),this.actions=[],this.containerRef=w(),this.mutationObserver=x("mutation",()=>this.mutationObserverHandler()),this.cancelable=q()(this),this.resize=B(({width:e,height:t})=>{let{expanded:a,expandDisabled:n,layout:i,overflowActionsDisabled:r,actionGroups:o}=this;if(r||i==="vertical"&&!t||i==="horizontal"&&!e)return;let d=this.getItemSizes();this.updateGroups();let h=this.hasActionsEnd||!n?o.length+1:o.length,s=h,l=getComputedStyle(this.containerRef.value);if(s+=c(i==="horizontal"?l.paddingInlineStart:l.paddingBlockStart)+c(i==="horizontal"?l.paddingInlineEnd:l.paddingBlockEnd),o.length>0&&o.forEach((p,R)=>{let u=getComputedStyle(p),W=c(u.gap),F=p.childElementCount-1;s+=W*F,R<o.length-1&&(s+=c(i==="horizontal"?u.paddingInlineEnd:u.paddingBlockEnd),s+=c(i==="horizontal"?u.borderInlineEndWidth:u.borderBlockEndWidth))}),h>0)for(let p=1;p<h;p++)s+=c(l.gap);let P=N({bufferSize:s,containerSize:i==="horizontal"?e:t,itemSizes:d});$({actionGroups:o,expanded:a,overflowCount:P})},S.resize),this.resizeHandler=e=>{let{width:t,height:a}=e.contentRect;this.resize({width:t,height:a})},this.resizeObserver=x("resize",e=>this.resizeHandlerEntries(e)),this.toggleExpand=()=>{this.expanded=!this.expanded,this.calciteActionBarToggle.emit()},this.messages=G(),this.focusSetter=T()(this),this.setExpandToggleEl=e=>{this.expandToggleEl=e},this.hasActionsEnd=!1,this.floating=!1,this.expandDisabled=!1,this.expanded=!1,this.layout="vertical",this.overflowActionsDisabled=!1,this.overlayPositioning="absolute",this.scale="m",this.selectionAppearance="neutral",this.calciteActionBarCollapse=f({cancelable:!1}),this.calciteActionBarExpand=f({cancelable:!1}),this.calciteActionBarToggle=f({cancelable:!1}),this.listen("calciteActionMenuOpen",this.actionMenuOpenHandler),this.listen("keydown",this.handleKeyDown)}static{this.properties={expandTooltip:[16,{},{state:!0}],hasActionsEnd:[16,{},{state:!0}],actionsEndGroupLabel:1,floating:[7,{},{reflect:!0,type:Boolean}],expandDisabled:[7,{},{reflect:!0,type:Boolean}],expanded:[7,{},{reflect:!0,type:Boolean}],layout:[3,{},{reflect:!0}],messageOverrides:[0,{},{attribute:!1}],overflowActionsDisabled:[7,{},{reflect:!0,type:Boolean}],overlayPositioning:[3,{},{reflect:!0}],position:[3,{},{reflect:!0}],scale:[3,{},{reflect:!0}],selectionAppearance:[3,{},{reflect:!0}]}}static{this.styles=j}async overflowActions(){this.resize({width:this.el.clientWidth,height:this.el.clientHeight})}async setFocus(e){return this.focusSetter(()=>this.el,e)}connectedCallback(){super.connectedCallback(),this.updateGroups(),this.overflowActions(),this.updateActions(),this.mutationObserver?.observe(this.el,{childList:!0,subtree:!0}),this.overflowActionsDisabledHandler(this.overflowActionsDisabled),this.cancelable.add(this.resize)}willUpdate(e){e.has("expandDisabled")&&(this.hasUpdated||this.expandDisabled!==!1)&&this.overflowActions(),e.has("layout")&&(this.hasUpdated||this.layout!=="vertical")&&this.updateGroups(),e.has("overflowActionsDisabled")&&(this.hasUpdated||this.overflowActionsDisabled!==!1)&&this.overflowActionsDisabledHandler(this.overflowActionsDisabled),e.has("expanded")&&this.hasUpdated&&(this.expandedHandler(),this.expanded?this.calciteActionBarExpand.emit():this.calciteActionBarCollapse.emit()),e.has("selectionAppearance")&&(this.hasUpdated||this.selectionAppearance!=="neutral")&&this.updateActions()}loaded(){this.overflowActions()}disconnectedCallback(){super.disconnectedCallback(),this.mutationObserver?.disconnect(),this.resizeObserver?.disconnect()}getItemSizes(){let{el:e,layout:t,expandToggleEl:a}=this,n=H(e);a&&n.push(a);let i=t==="horizontal"?"clientWidth":"clientHeight",r=Math.max(...n.map(o=>o[i]||0));return n.map(o=>o[i]||r)}expandedHandler(){let{el:e,expanded:t}=this;I({el:e,expanded:t}),this.overflowActions()}overflowActionsDisabledHandler(e){if(e){this.resizeObserver?.disconnect();return}this.resizeObserver?.observe(this.el),this.overflowActions()}actionMenuOpenHandler(e){if(e.target.menuOpen){let t=e.composedPath();this.actionGroups?.forEach(a=>{t.includes(a)||(a.menuOpen=!1)})}}mutationObserverHandler(){this.updateGroups(),this.overflowActions(),this.queryAndStoreActions(),this.updateActions()}resizeHandlerEntries(e){e.forEach(this.resizeHandler)}updateGroups(){let e=Array.from(this.el.querySelectorAll("calcite-action-group"));this.actionGroups=e,e.forEach(t=>{t.layout=this.layout,t.scale=this.scale})}handleDefaultSlotChange(){this.updateGroups(),this.queryAndStoreActions(),this.updateActions()}handleActionsEndSlotChange(e){this.hasActionsEnd=k(e)}handleTooltipSlotChange(e){let t=C(e).filter(a=>a?.matches("calcite-tooltip"));this.expandTooltip=t[0]}updateActions(){this.actions.forEach(e=>{e.selectionAppearance=this.selectionAppearance})}queryAndStoreActions(){this.actions=Array.from(this.el.querySelectorAll("calcite-action"))}handleKeyDown(e){this.queryAndStoreActions();let t=this.actions.filter(n=>!n.disabled),a=document.activeElement;if(O(a))switch(e.key){case"ArrowRight":case"ArrowDown":g(t,a,"next",!0),e.preventDefault();break;case"ArrowLeft":case"ArrowUp":g(t,a,"previous",!0),e.preventDefault();break;case"Home":g(t,a,"first",!0),e.preventDefault();break;case"End":g(t,a,"last",!0),e.preventDefault();break;case"Tab":this.setActionTabIndexes(a);break}}setActionTabIndexes(e){this.actions.forEach(t=>{t.tabIndex=!t.disabled&&t===e?0:-1})}renderBottomActionGroup(){let{expanded:e,expandDisabled:t,el:a,position:n,toggleExpand:i,scale:r,layout:o,messages:d,actionsEndGroupLabel:h,overlayPositioning:s}=this,l=t?null:L({collapseLabel:d.collapseLabel,collapseText:d.collapse,el:a,expandLabel:d.expandLabel,expandText:d.expand,expanded:e,position:n,ref:this.setExpandToggleEl,scale:r,toggle:i,tooltip:this.expandTooltip});return v`<calcite-action-group class=${m(U.actionGroupEnd)} .hidden=${this.expandDisabled&&!this.hasActionsEnd} .label=${h} .layout=${o} .overlayPositioning=${s} .scale=${r}><slot name=${M.actionsEnd} @slotchange=${this.handleActionsEndSlotChange}></slot><slot name=${M.expandTooltip} @slotchange=${this.handleTooltipSlotChange}></slot>${l}</calcite-action-group>`}render(){return v`<div .ariaOrientation=${this.layout==="horizontal"?"horizontal":"vertical"} class=${m(U.container)} role=toolbar ${E(this.containerRef)}><slot @slotchange=${this.handleDefaultSlotChange}></slot>${this.renderBottomActionGroup()}</div>`}};D("calcite-action-bar",A);export{A as ActionBar};