@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
3 lines (2 loc) • 17.2 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0/LICENSE.txt */
import{a as D}from"./2UQMTBIW.js";import{a as P}from"./DXO7R7JP.js";import{b as I}from"./VNGNPJ2I.js";import{a as z}from"./5LQLL6F3.js";import{a as O}from"./AZJW5LNO.js";import"./DNVOLHYG.js";import{a as w}from"./77EQHO2G.js";import{a as h}from"./HXIMHC6U.js";import"./M6OXKYRM.js";import{a as m}from"./DPU3UW4H.js";import{a as B}from"./SQ6RHDDF.js";import{a as E}from"./3XLPUKLV.js";import{a as p}from"./3YEM2IPT.js";import"./QUTTHRH3.js";import"./MNIRD7Q7.js";import{t as r,u as H}from"./ZQBZ5QPB.js";import"./CIYXQ5G6.js";import{D as S,E as C,F as a,Q as y,g as x,h as n,l as f,p as c}from"./G7AHLVJ5.js";var s={content:"content",toggle:"toggle",header:"header"},t={actionsEnd:"actions-end",container:"container",content:"content",contentEnd:"content-end",contentStart:"content-start",description:"description",header:"header",headerContainer:"header-container",headerHasContent:"header--has-content",headerDraggable:"header--draggable",heading:"heading",icon:"icon",iconStart:"icon--start",iconEnd:"icon--end",iconEndContainer:"icon-end-container",invalid:"invalid",statusIcon:"status-icon",title:"title",toggle:"toggle",toggleIcon:"toggle-icon",valid:"valid"},g={actionsEnd:"actions-end",contentEnd:"content-end",contentStart:"content-start",headerMenuActions:"header-menu-actions"},u={expanded:"chevron-up",collapsed:"chevron-down",valid:"check-circle",invalid:"exclamation-mark-triangle"},X=x`: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([disabled]){cursor:default;-webkit-user-select:none;user-select:none;opacity:var(--calcite-opacity-disabled)}:host([disabled]) *,:host([disabled]) ::slotted(*){pointer-events:none}:host([scale=s]) .header{gap:var(--calcite-spacing-sm)}:host([scale=s]) .icon-end-container{gap:var(--calcite-spacing-sm);padding-inline-end:var(--calcite-spacing-sm)}:host([scale=s]) .heading{font-size:var(--calcite-font-size-sm)}:host([scale=s]) .description{font-size:var(--calcite-font-size-xs)}:host([scale=s]){--calcite-internal-block-actions-spacing: var(--calcite-spacing-xxs);--calcite-internal-block-header-content-padding: var(--calcite-spacing-sm);--calcite-internal-block-padding-block: var( --calcite-block-content-space, var(--calcite-block-padding, var(--calcite-spacing-xxs)) );--calcite-internal-block-padding-inline: var( --calcite-block-content-space, var(--calcite-block-padding, var(--calcite-spacing-sm)) )}:host([scale=m]) .header{gap:var(--calcite-spacing-md)}:host([scale=m]) .icon-end-container{gap:var(--calcite-spacing-md);padding-inline-end:var(--calcite-spacing-md)}:host([scale=m]) .heading{font-size:var(--calcite-font-size)}:host([scale=m]) .description{font-size:var(--calcite-font-size-sm)}:host([scale=m]){--calcite-internal-block-actions-spacing: var(--calcite-spacing-xxs);--calcite-internal-block-header-content-padding: var(--calcite-spacing-md);--calcite-internal-block-padding-block: var( --calcite-block-content-space, var(--calcite-block-padding, var(--calcite-spacing-sm)) );--calcite-internal-block-padding-inline: var( --calcite-block-content-space, var(--calcite-block-padding, var(--calcite-spacing-md)) )}:host([scale=l]) .header{gap:var(--calcite-spacing-lg)}:host([scale=l]) .icon-end-container{gap:var(--calcite-spacing-lg);padding-inline-end:var(--calcite-spacing-lg)}:host([scale=l]) .heading{font-size:var(--calcite-font-size-md)}:host([scale=l]) .description{font-size:var(--calcite-font-size)}:host([scale=l]){--calcite-internal-block-actions-spacing: var(--calcite-spacing-xs);--calcite-internal-block-header-content-padding: var(--calcite-spacing-lg);--calcite-internal-block-padding-block: var( --calcite-block-content-space, var(--calcite-block-padding, var(--calcite-spacing-md)) );--calcite-internal-block-padding-inline: var( --calcite-block-content-space, var(--calcite-block-padding, var(--calcite-spacing-lg)) )}:host{display:flex;flex-shrink:0;flex-grow:0;flex-direction:column;border-width:0px;border-block-end-width:1px;border-style:solid;padding:0;transition-property:margin;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:var(--calcite-animation-timing);transition-timing-function:cubic-bezier(.215,.44,.42,.88);flex-basis:auto;border-color:var(--calcite-block-border-color, var(--calcite-color-border-3))}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}.interaction-container{display:contents}.header{justify-content:flex-start}.header--has-content{padding:var(--calcite-internal-block-header-content-padding)}.header--draggable{padding-inline-start:var(--calcite-spacing-xxs)}.header,.toggle{grid-area:header}.header-container{display:grid;align-items:stretch;grid-template:auto/auto 1fr auto auto auto auto;grid-template-areas:"handle header icon-end menu actions-end"}.icon--start,.icon--end{color:var(--calcite-block-icon-color, var(--calcite-color-text-3))}.actions-end{align-items:center;display:flex;gap:var(--calcite-internal-block-actions-spacing);grid-area:actions-end;padding-block:var(--calcite-internal-block-actions-spacing);padding-inline-end:var(--calcite-internal-block-actions-spacing)}.toggle{margin:0;display:flex;cursor:pointer;flex-wrap:nowrap;align-items:center;justify-content:space-between;border-style:none;padding:0;outline-color:transparent;font-family:inherit;text-align:initial;background-color:var(--calcite-block-header-background-color, transparent)}.toggle:hover{background-color:var(--calcite-block-header-background-color-hover, var(--calcite-color-foreground-2))}.toggle:focus{outline:var(--calcite-border-width-md) solid var(--calcite-color-focus, var(--calcite-ui-focus-color, var(--calcite-color-brand)));outline-offset:calc(calc(-1 * var(--calcite-spacing-base)) * calc(1 - (2*clamp(0,var(--calcite-offset-invert-focus),1))))}.toggle:active{background-color:var(--calcite-block-header-background-color-press, var(--calcite-color-foreground-3))}calcite-loader[inline]{align-self:center}calcite-sort-handle{align-self:center;grid-area:handle;margin-block:var(--calcite-internal-block-actions-spacing);padding-inline-start:var(--calcite-spacing-xxs)}.title{display:flex;flex-direction:column}.header .title .heading{padding:0;word-wrap:break-word;word-break:break-word;color:var(--calcite-block-heading-text-color, var(--calcite-color-text-1));font-weight:var(--calcite-font-weight-normal);line-height:var(--calcite-font-line-height-relative-snug)}.description{padding:0;word-wrap:break-word;word-break:break-word;color:var(--calcite-block-description-text-color, var(--calcite-color-text-3));font-weight:var(--calcite-font-weight-regular);line-height:var(--calcite-font-line-height-relative-snug)}.icon{display:flex}.status-icon.valid{color:var(--calcite-color-status-success)}.status-icon.invalid{color:var(--calcite-color-status-danger)} spin{0%{transform:rotate(0)}50%{transform:rotate(180deg)}to{transform:rotate(360deg)}}.icon-end-container{display:flex;align-items:center;grid-area:icon-end}.toggle-icon{align-self:center;justify-self:end;transition-property:color;transition-duration:var(--calcite-animation-timing);transition-timing-function:cubic-bezier(.4,0,.2,1);color:var(--calcite-block-icon-color, var(--calcite-color-text-3))}.toggle:hover .toggle-icon{color:var(--calcite-block-icon-color-hover, var(--calcite-color-text-1))}.container{position:relative;display:flex;block-size:100%;flex-direction:column}.content{position:relative;min-block-size:0px;flex:1 1 0%} in{0%{opacity:0}to{opacity:1}}.content{animation:in var(--calcite-internal-animation-timing-slow) ease-in-out;padding-block:var(--calcite-internal-block-padding-block);padding-inline:var(--calcite-internal-block-padding-inline)}.content-end,.content-start{display:flex;align-items:center;color:var(--calcite-block-text-color, var(--calcite-color-text-3))}calcite-action-menu{align-self:center;grid-area:menu;margin-inline-end:var(--calcite-internal-block-actions-spacing)}:host([expanded]){margin-block:.5rem}:host([expanded]) .header .title .heading{color:var(--calcite-block-heading-text-color, var(--calcite-block-heading-text-color-press, var(--calcite-color-text-1)));font-weight:var(--calcite-font-weight-medium)}:host([expanded]) .description{color:var(--calcite-block-description-text-color, var(--calcite-color-text-2))}:host([expanded]) .icon--start,:host([expanded]) .icon--end{color:var(--calcite-block-icon-color, var(--calcite-color-text-1))}:host([expanded][scale=s]){margin-block:var(--calcite-spacing-xxs)}:host([expanded][scale=l]){margin-block:var(--calcite-spacing-md)}:host([hidden]){display:none}[hidden]{display:none}`,v=class extends C{constructor(){super(...arguments),this.transitionProp="margin-top",this.blockSectionChildren=[],this.messages=B(),this.focusSetter=E()(this),this.interactiveContainer=w(this),this.hasContentEnd=!1,this.hasContentStart=!1,this.hasEndActions=!1,this.hasMenuActions=!1,this.collapsible=!1,this.disabled=!1,this.dragDisabled=!1,this.dragHandle=!1,this.expanded=!1,this.loading=!1,this.menuPlacement=I,this.addToItems=[],this.moveToItems=[],this.sortDisabled=!1,this.overlayPositioning="absolute",this.scale="m",this.setPosition=null,this.setSize=null,this.sortHandleOpen=!1,this.topLayerDisabled=!1,this.calciteBlockBeforeClose=c({cancelable:!1}),this.calciteBlockBeforeOpen=c({cancelable:!1}),this.calciteBlockClose=c({cancelable:!1}),this.calciteBlockCollapse=c({cancelable:!1}),this.calciteBlockExpand=c({cancelable:!1}),this.calciteBlockOpen=c({cancelable:!1}),this.calciteBlockSortHandleBeforeClose=c({cancelable:!1}),this.calciteBlockSortHandleBeforeOpen=c({cancelable:!1}),this.calciteBlockSortHandleClose=c({cancelable:!1}),this.calciteBlockSortHandleOpen=c({cancelable:!1}),this.calciteBlockToggle=c({cancelable:!1}),this.calciteInternalBlockUpdateSortMenuItems=c({cancelable:!1})}static{this.properties={hasContentEnd:[16,{},{state:!0}],hasContentStart:[16,{},{state:!0}],hasEndActions:[16,{},{state:!0}],hasMenuActions:[16,{},{state:!0}],collapsible:[7,{},{reflect:!0,type:Boolean}],description:1,disabled:[7,{},{reflect:!0,type:Boolean}],dragDisabled:[7,{},{reflect:!0,type:Boolean}],dragHandle:[7,{},{reflect:!0,type:Boolean}],expanded:[7,{},{reflect:!0,type:Boolean}],heading:1,headingLevel:[11,{},{type:Number,reflect:!0}],iconEnd:[3,{type:String},{reflect:!0}],iconFlipRtl:[3,{},{reflect:!0}],iconStart:[3,{type:String},{reflect:!0}],loading:[7,{},{reflect:!0,type:Boolean}],label:1,menuFlipPlacements:[0,{},{attribute:!1}],menuPlacement:[3,{},{reflect:!0}],messageOverrides:[0,{},{attribute:!1}],addToItems:[0,{},{attribute:!1}],moveToItems:[0,{},{attribute:!1}],sortDisabled:[5,{},{type:Boolean}],open:[7,{},{reflect:!0,type:Boolean}],overlayPositioning:[3,{},{reflect:!0}],scale:[3,{},{reflect:!0}],setPosition:[9,{},{type:Number}],setSize:[9,{},{type:Number}],sortHandleOpen:[7,{},{reflect:!0,type:Boolean}],status:[3,{},{reflect:!0}],topLayerDisabled:[7,{},{reflect:!0,type:Boolean}]}}static{this.styles=[D,X,P]}get open(){return this.expanded}set open(e){m.deprecated("property",{component:this,name:"open",removalVersion:5,suggested:"expanded"}),this.expanded=e}async setFocus(e){return this.focusSetter(()=>this.el,e)}connectedCallback(){super.connectedCallback(),this.transitionEl=this.el}load(){!this.heading&&!this.label&&m.warn(`${this.el.tagName} is missing both heading & label. Please provide a heading or label for the component to be accessible.`)}willUpdate(e){e.has("expanded")&&(this.hasUpdated||this.expanded!==!1)&&z(this),e.has("sortHandleOpen")&&(this.hasUpdated||this.sortHandleOpen!==!1)&&this.sortHandleOpenHandler(),e.has("expanded")&&this.hasUpdated&&(this.expanded?this.calciteBlockExpand.emit():this.calciteBlockCollapse.emit()),e.has("scale")&&this.hasUpdated&&this.updateBlockSectionScale()}onBeforeOpen(){this.calciteBlockBeforeOpen.emit()}onOpen(){this.calciteBlockOpen.emit()}onBeforeClose(){this.calciteBlockBeforeClose.emit()}onClose(){this.calciteBlockClose.emit()}sortHandleOpenHandler(){this.sortHandleEl&&(this.sortHandleEl.open=this.sortHandleOpen)}setSortHandleEl(e){this.sortHandleEl=e,this.sortHandleOpenHandler()}handleSortHandleBeforeOpen(e){e.stopPropagation(),this.calciteBlockSortHandleBeforeOpen.emit()}handleSortHandleBeforeClose(e){e.stopPropagation(),this.calciteBlockSortHandleBeforeClose.emit()}handleSortHandleClose(e){e.stopPropagation(),this.sortHandleOpen=!1,this.calciteBlockSortHandleClose.emit()}handleSortHandleOpen(e){e.stopPropagation(),this.sortHandleOpen=!0,this.calciteBlockSortHandleOpen.emit()}onHeaderClick(){this.expanded=!this.expanded,this.calciteBlockToggle.emit()}menuActionsSlotChangeHandler(e){this.hasMenuActions=r(e)}actionsEndSlotChangeHandler(e){this.hasEndActions=r(e)}handleContentEndSlotChange(e){this.hasContentEnd=r(e)}handleContentStartSlotChange(e){this.hasContentStart=r(e)}handleDefaultSlotChange(e){this.blockSectionChildren=H(e,"calcite-block-section"),this.updateBlockSectionScale()}updateBlockSectionScale(){this.blockSectionChildren.forEach(e=>{e.scale=this.scale})}renderScrim(){let{loading:e}=this,l=n`<slot =${this.handleDefaultSlotChange}></slot>`;return[e?n`<calcite-scrim .loading=${e}></calcite-scrim>`:null,l]}renderLoaderStatusIcon(){let{loading:e,messages:l,status:i}=this;return e?h("loader",n`<div class=${a(t.icon)}><calcite-loader inline .label=${l.loading} .scale=${this.scale}></calcite-loader></div>`):i?h("status-icon",n`<div class=${a(t.icon)}><calcite-icon class=${a({[t.statusIcon]:!0,[t.valid]:i=="valid",[t.invalid]:i=="invalid"})} .icon=${u[i]} .scale=${p(this.scale)}></calcite-icon></div>`):null}renderActionsEnd(){return n`<div class=${a(t.actionsEnd)} .hidden=${!this.hasEndActions}><slot name=${g.actionsEnd} =${this.actionsEndSlotChangeHandler}></slot></div>`}renderContentEnd(){return n`<div class=${a({[t.iconEndContainer]:!this.iconEnd&&!this.collapsible})} .hidden=${!this.hasContentEnd}><div class=${a(t.contentEnd)}><slot name=${g.contentEnd} =${this.handleContentEndSlotChange}></slot></div></div>`}renderContentStart(){return n`<div class=${a(t.contentStart)} .hidden=${!this.hasContentStart}><slot name=${g.contentStart} =${this.handleContentStartSlotChange}></slot></div>`}renderTitle(){let{heading:e,headingLevel:l,description:i}=this;return e||i?n`<div class=${a(t.title)}>${O({class:t.heading,level:l,children:e})}${i?n`<div class=${a(t.description)}>${i}</div>`:null}</div>`:null}renderIcon(e){let{iconFlipRtl:l}=this,i=l==="both"||e==="start"?l==="start":l==="end",o=e==="start"?this.iconStart:this.iconEnd,d=e==="start"?t.iconStart:t.iconEnd;if(o)return h(o,n`<calcite-icon class=${a(d)} .flipRtl=${i} .icon=${o} .scale=${p(this.scale)}></calcite-icon>`)}render(){let{collapsible:e,loading:l,expanded:i,label:o,heading:d,messages:b,description:A,menuFlipPlacements:T,menuPlacement:L,moveToItems:M,addToItems:F,setPosition:N,setSize:U,dragDisabled:R,sortDisabled:j,iconEnd:k,hasContentEnd:V,hasContentStart:G,iconStart:q}=this,J=i?b.collapse:b.expand,K=!!(d||A||V||G||q||l||status),$=n`<header class=${a({[t.header]:!0,[t.headerHasContent]:K,[t.headerDraggable]:this.dragHandle})} id=${s.header}>${this.renderIcon("start")}${this.renderContentStart()}${this.renderLoaderStatusIcon()}${this.renderTitle()}</header>`,Q=i?u.expanded:u.collapsed,W=n`<div class=${a(t.headerContainer)}>${this.dragHandle?n`<calcite-sort-handle .addToItems=${F} .disabled=${R} .label=${d||o} .moveToItems=${M} =${this.handleSortHandleBeforeClose} =${this.handleSortHandleBeforeOpen} =${this.handleSortHandleClose} =${this.handleSortHandleOpen} overlay-positioning=fixed .scale=${this.scale} .setPosition=${N} .setSize=${U} .sortDisabled=${j} .topLayerDisabled=${this.topLayerDisabled} ${S(this.setSortHandleEl)}></calcite-sort-handle>`:null}${e?n`<button aria-controls=${s.content} aria-describedby=${s.header} .ariaExpanded=${e?i:null} class=${a(t.toggle)} id=${s.toggle} =${this.onHeaderClick} title=${J??f}>${$}<div class=${a(t.iconEndContainer)}>${this.renderContentEnd()}${this.renderIcon("end")}<calcite-icon class=${a(t.toggleIcon)} .icon=${Q} .scale=${p(this.scale)}></calcite-icon></div></button>`:$}${k&&!e?n`<div class=${a(t.iconEndContainer)}>${this.renderContentEnd()}${this.renderIcon("end")}</div>`:!k&&!e?this.renderContentEnd():null}<calcite-action-menu .flipPlacements=${T??["top","bottom"]} .hidden=${!this.hasMenuActions} .label=${b.options} .overlayPositioning=${this.overlayPositioning} .placement=${L} .scale=${this.scale} .topLayerDisabled=${this.topLayerDisabled}><slot name=${g.headerMenuActions} =${this.menuActionsSlotChangeHandler}></slot></calcite-action-menu>${this.renderActionsEnd()}</div>`;return this.interactiveContainer({disabled:this.disabled,children:n`<article aria-label=${o??f} .ariaBusy=${l} class=${a({[t.container]:!0})}>${W}<section aria-labelledby=${s.toggle} class=${a(t.content)} .hidden=${!i} id=${s.content}>${this.renderScrim()}</section></article>`})}};y("calcite-block",v);export{v as Block};