@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
5 lines (4 loc) • 20.1 kB
JavaScript
/*! All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://github.com/Esri/calcite-design-system/blob/dev/LICENSE.md for details.
v3.2.1 */
import{a as y}from"./SLLYAKW2.js";import{a as _}from"./F6VZXZQD.js";import{a as K}from"./LAHMKNMM.js";import{a as C}from"./NRY267XB.js";import{a as F}from"./5VPUXQOI.js";import{a as U}from"./XE72EHW2.js";import{a as R}from"./YXZ62PQO.js";import{a as M}from"./M7EAHGE3.js";import{d as L}from"./CKRTMNFR.js";import{b as f}from"./5RDOSP2E.js";import{D as d,b as V,e as v,n as A}from"./3ADX47DD.js";import{d as P}from"./HPN2C7M6.js";import"./JOSABGK6.js";import"./NNVH7JUI.js";import{E as O,F as c,I as E,K as I,M as T,N as $,R as H,c as B,d as S,q as u}from"./BJZTU5BQ.js";var r={scrim:"scrim",container:"container",containerOpen:"container--open",content:"content",contentContainer:"content-container",containerEmbedded:"container--embedded",resizeHandle:"resize-handle",resizeHandleBar:"resize-handle-bar"},j=B`:host{position:absolute;inset:0;z-index:var(--calcite-z-index-overlay);display:flex;visibility:hidden!important;--calcite-sheet-scrim-background-internal: rgba(0, 0, 0, .85);--calcite-scrim-shadow-block-start-internal: 0 4px 8px -1px rgba(0, 0, 0, .08), 0 2px 4px -1px rgba(0, 0, 0, .04);--calcite-scrim-shadow-block-end-internal: 0 -4px 8px -1px rgba(0, 0, 0, .08), 0 -2px 4px -1px rgba(0, 0, 0, .04);--calcite-scrim-shadow-inline-start-internal: 4px 0 8px -1px rgba(0, 0, 0, .08), 2px 0 4px -1px rgba(0, 0, 0, .04);--calcite-scrim-shadow-inline-end-internal: -4px 0 8px -1px rgba(0, 0, 0, .08), -2px 0 4px -1px rgba(0, 0, 0, .04)}.calcite--rtl{--calcite-scrim-shadow-inline-start-internal: -4px 0 8px -1px rgba(0, 0, 0, .08), -2px 0 4px -1px rgba(0, 0, 0, .04);--calcite-scrim-shadow-inline-end-internal: 4px 0 8px -1px rgba(0, 0, 0, .08), 2px 0 4px -1px rgba(0, 0, 0, .04)}.assistive-text{position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.container{visibility:hidden;position:fixed;z-index:var(--calcite-z-index-overlay);box-sizing:border-box;display:flex;opacity:0;color:var(--calcite-sheet-text-color, var(--calcite-color-text-2));transition:visibility 0ms linear var(--calcite-internal-animation-timing-medium),opacity var(--calcite-internal-animation-timing-medium) cubic-bezier(.215,.44,.42,.88)}:host([position=inline-start]) .container{justify-content:flex-start;inset-block:0;inset-inline:0 auto;--calcite-sheet-hidden-position-internal: translate3d(-1rem, 0, 0)}:host([position=inline-end]) .container{justify-content:flex-end;inset-block:0;inset-inline:auto 0;--calcite-sheet-hidden-position-internal: translate3d(1rem, 0, 0)}:host([position=block-start]) .container{align-items:flex-start;inset-block:0 auto;inset-inline:0;--calcite-sheet-hidden-position-internal: translate3d(0, -1rem, 0)}:host([position=block-end]) .container{align-items:flex-end;inset-block:auto 0;inset-inline:0;--calcite-sheet-hidden-position-internal: translate3d(0, 1rem, 0)}:host([display-mode=float]) .content{--tw-shadow: 0 2px 12px -4px rgba(0, 0, 0, .2), 0 2px 4px -2px rgba(0, 0, 0, .16);--tw-shadow-colored: 0 2px 12px -4px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--calcite-sheet-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([display-mode=overlay][position=inline-start]) .container{box-shadow:var(--calcite-scrim-shadow-inline-start-internal)}:host([display-mode=overlay][position=inline-end]) .container{box-shadow:var(--calcite-scrim-shadow-inline-end-internal)}:host([display-mode=overlay][position=block-start]) .container{box-shadow:var(--calcite-scrim-shadow-block-start-internal)}:host([display-mode=overlay][position=block-end]) .container{box-shadow:var(--calcite-scrim-shadow-block-end-internal)}:host([position^=inline]) .content{inline-size:var(--calcite-sheet-width-internal);max-inline-size:var(--calcite-sheet-max-width-internal);min-inline-size:var(--calcite-sheet-min-width-internal)}:host([position^=block]) .content{block-size:var(--calcite-sheet-height-internal);max-block-size:var(--calcite-sheet-max-height-internal);min-block-size:var(--calcite-sheet-min-height-internal)}:host([position^=inline]) .width-s{--calcite-sheet-width-internal: var(--calcite-sheet-width, 15vw);--calcite-sheet-max-width-internal: var(--calcite-sheet-max-width, 360px);--calcite-sheet-min-width-internal: var(--calcite-sheet-min-width, 260px)}:host([position^=inline]) .width-m{--calcite-sheet-width-internal: var(--calcite-sheet-width, 25vw);--calcite-sheet-max-width-internal: var(--calcite-sheet-max-width, 420px);--calcite-sheet-min-width-internal: var(--calcite-sheet-min-width, 300px)}:host([position^=inline]) .width-l{--calcite-sheet-width-internal: var(--calcite-sheet-width, 45vw);--calcite-sheet-max-width-internal: var(--calcite-sheet-max-width, 680px);--calcite-sheet-min-width-internal: var(--calcite-sheet-min-width, 340px)}:host([position^=block]) .height-s{--calcite-sheet-min-height-internal: var(--calcite-sheet-min-height, 160px);--calcite-sheet-height-internal: var(--calcite-sheet-height, 30vh);--calcite-sheet-max-height-internal: var(--calcite-sheet-max-height, 30vh)}:host([position^=block]) .height-m{--calcite-sheet-min-height-internal: var(--calcite-sheet-min-height, 200px);--calcite-sheet-height-internal: var(--calcite-sheet-height, 45vh);--calcite-sheet-max-height-internal: var(--calcite-sheet-max-height, 50vh)}:host([position^=block]) .height-l{--calcite-sheet-min-height-internal: var(--calcite-sheet-min-height, 240px);--calcite-sheet-height-internal: var(--calcite-sheet-height, 60vh);--calcite-sheet-max-height-internal: var(--calcite-sheet-max-height, 70vh)}.scrim{--calcite-scrim-background: var(--calcite-sheet-scrim-background, var(--calcite-sheet-scrim-background-internal));position:fixed;inset:0;display:flex;overflow:hidden}:host([opened]){visibility:visible!important}.content{position:relative;z-index:var(--calcite-z-index-modal);box-sizing:border-box;display:flex;max-inline-size:100%;padding:0;background-color:var(--calcite-sheet-background-color, var(--calcite-color-foreground-1));max-block-size:100%;visibility:hidden;transition:transform var(--calcite-internal-animation-timing-medium) cubic-bezier(.215,.44,.42,.88),visibility 0ms linear var(--calcite-internal-animation-timing-medium),opacity var(--calcite-internal-animation-timing-medium) cubic-bezier(.215,.44,.42,.88);transform:var(--calcite-sheet-hidden-position-internal)}.content-container{position:relative;display:flex;max-block-size:100%;max-inline-size:100%;flex:1 1 0%;overflow:hidden}.container--open .content{transform:translateZ(0)}:host([display-mode=float]) .content,:host([display-mode=float]) .container,:host([display-mode=float]) .content-container{border-radius:var(--calcite-sheet-corner-radius, var(--calcite-corner-radius-round))}:host([display-mode=float]) .container{padding:var(--calcite-spacing-md)}.container--open{visibility:visible;opacity:1;transition-delay:0ms}.container--open .content{pointer-events:auto;visibility:visible;opacity:1;transition:transform var(--calcite-internal-animation-timing-medium) cubic-bezier(.215,.44,.42,.88),visibility 0ms linear,opacity var(--calcite-internal-animation-timing-medium) cubic-bezier(.215,.44,.42,.88),max-inline-size var(--calcite-internal-animation-timing-medium) cubic-bezier(.215,.44,.42,.88),max-block-size var(--calcite-internal-animation-timing-medium) cubic-bezier(.215,.44,.42,.88);transition-delay:0ms}:host([position=inline-start]) .content,:host([position=inline-end]) .content{block-size:100%}:host([position=inline-start]) .content{flex-direction:row}:host([position=inline-end]) .content{flex-direction:row-reverse}:host([position=block-start]) .content,:host([position=block-end]) .content{inline-size:100%}:host([position=block-start]) .content{flex-direction:column}:host([position=block-end]) .content{flex-direction:column-reverse}:host([resizable][position=inline-start]) .content{padding-inline-end:var(--calcite-size-fixed-sm-plus)}:host([resizable][position=inline-end]) .content{padding-inline-start:var(--calcite-size-fixed-sm-plus)}:host([resizable][position=block-start]) .content{padding-block-end:var(--calcite-size-fixed-sm-plus)}:host([resizable][position=block-end]) .content{padding-block-start:var(--calcite-size-fixed-sm-plus)}.resize-handle{position:absolute;box-sizing:border-box;display:flex;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center;outline:2px solid transparent;outline-offset:2px;--calcite-internal-sheet-resize-handle-offset: calc( (var(--calcite-size-fixed-xxl) - var(--calcite-size-fixed-sm-plus)) / 2 * -1 );z-index:var(--calcite-z-index-header)}.resize-handle:active .resize-handle-bar,.resize-handle:hover .resize-handle-bar{color:var(--calcite-sheet-resize-icon-color, var(--calcite-color-text-1));background-color:var(--calcite-sheet-resize-background-color, var(--calcite-color-foreground-3))}.resize-handle-bar{pointer-events:none;display:flex;align-items:center;justify-content:center;color:var(--calcite-sheet-resize-icon-color, var(--calcite-color-border-input));background-color:var(--calcite-sheet-resize-background-color, var(--calcite-color-background))}.resize-handle:focus .resize-handle-bar{outline-color:transparent;outline:2px solid var(--calcite-color-focus, var(--calcite-ui-focus-color, var(--calcite-color-brand)))}:host([position=inline-start]) .resize-handle{inline-size:var(--calcite-size-fixed-xxl);inset-inline-end:var(--calcite-internal-sheet-resize-handle-offset);block-size:100%}:host([position=inline-start]) .resize-handle-bar{block-size:100%;inline-size:var(--calcite-size-fixed-sm-plus);border-inline-start:var(--calcite-border-width-sm) solid var(--calcite-sheet-border-color, var(--calcite-color-border-3))}:host([position=inline-start]):host([display-mode=float]) .resize-handle-bar{border-start-end-radius:var(--calcite-sheet-corner-radius, var(--calcite-corner-radius-round));border-end-end-radius:var(--calcite-sheet-corner-radius, var(--calcite-corner-radius-round))}:host([position=inline-end]) .resize-handle{inline-size:var(--calcite-size-fixed-xxl);inset-inline-start:var(--calcite-internal-sheet-resize-handle-offset);block-size:100%}:host([position=inline-end]) .resize-handle-bar{block-size:100%;inline-size:var(--calcite-size-fixed-sm-plus);border-inline-end:var(--calcite-border-width-sm) solid var(--calcite-sheet-border-color, var(--calcite-color-border-3))}:host([position=inline-end]):host([display-mode=float]) .resize-handle-bar{border-start-start-radius:.25rem;border-end-start-radius:.25rem}:host([position=block-start]) .resize-handle{block-size:var(--calcite-size-fixed-xxl);inline-size:100%;inset-block-end:var(--calcite-internal-sheet-resize-handle-offset)}:host([position=block-start]) .resize-handle-bar{inline-size:100%;block-size:var(--calcite-size-fixed-sm-plus);border-block-start:var(--calcite-border-width-sm) solid var(--calcite-sheet-border-color, var(--calcite-color-border-3))}:host([position=block-start]):host([display-mode=float]) .resize-handle-bar{border-end-end-radius:.25rem;border-end-start-radius:.25rem}:host([position=block-end]) .resize-handle{block-size:var(--calcite-size-fixed-xxl);inline-size:100%;inset-block-start:var(--calcite-internal-sheet-resize-handle-offset)}:host([position=block-end]) .resize-handle-bar{inline-size:100%;block-size:var(--calcite-size-fixed-sm-plus);border-block-end:var(--calcite-border-width-sm) solid var(--calcite-sheet-border-color, var(--calcite-color-border-3))}:host([position=block-end]):host([display-mode=float]) .resize-handle-bar{border-start-start-radius:var(--calcite-sheet-corner-radius, var(--calcite-corner-radius-round));border-start-end-radius:var(--calcite-sheet-corner-radius, var(--calcite-corner-radius-round))}:host([position]) .container--embedded{pointer-events:auto;position:absolute;inline-size:100%;max-inline-size:100%;min-inline-size:100%;block-size:100%;max-block-size:100%;min-block-size:100%}:host([position]) .container--embedded calcite-scrim{position:absolute}:host([hidden]){display:none}[hidden]{display:none}`,D=class extends O{constructor(){super(),this.focusTrap=K({triggerProp:"open",focusTrapOptions:{clickOutsideDeactivates:()=>this.embedded,escapeDeactivates:e=>(!e.defaultPrevented&&!this.escapeDisabled&&(this.open=!1,e.preventDefault()),!1)}})(this),this.usePreventDocumentScroll=_()(this),this.ignoreOpenChange=!1,this.messages=L(),this.mutationObserver=M("mutation",()=>this.handleMutationObserver()),this._open=!1,this.openProp="opened",this.transitionProp="opacity",this.keyDownHandler=e=>{let{defaultPrevented:t,key:a}=e;!t&&!this.escapeDisabled&&this.focusTrapDisabled&&this.open&&a==="Escape"&&(e.preventDefault(),this.open=!1)},this.resizeValues={inlineSize:null,blockSize:null,minInlineSize:null,minBlockSize:null,maxInlineSize:null,maxBlockSize:null},this.displayMode="overlay",this.embedded=!1,this.escapeDisabled=!1,this.focusTrapDisabled=!1,this.heightScale="m",this.opened=!1,this.outsideCloseDisabled=!1,this.position="inline-start",this.resizable=!1,this.widthScale="m",this.calciteSheetBeforeClose=u({cancelable:!1}),this.calciteSheetBeforeOpen=u({cancelable:!1}),this.calciteSheetClose=u({cancelable:!1}),this.calciteSheetOpen=u({cancelable:!1}),this.listen("keydown",this.keyDownHandler)}static{this.properties={resizeValues:[16,{},{state:!0}],preventDocumentScroll:[16,{},{state:!0}],beforeClose:[0,{},{attribute:!1}],displayMode:[3,{},{reflect:!0}],embedded:[5,{},{type:Boolean}],escapeDisabled:[7,{},{reflect:!0,type:Boolean}],focusTrapDisabled:[7,{},{reflect:!0,type:Boolean}],focusTrapOptions:[0,{},{attribute:!1}],heightScale:[3,{},{reflect:!0}],height:[3,{},{reflect:!0}],label:1,messageOverrides:[0,{},{attribute:!1}],open:[7,{},{reflect:!0,type:Boolean}],opened:[7,{},{reflect:!0,type:Boolean}],outsideCloseDisabled:[7,{},{reflect:!0,type:Boolean}],position:[3,{},{reflect:!0}],resizable:[7,{},{reflect:!0,type:Boolean}],widthScale:[3,{},{reflect:!0}],width:[3,{},{reflect:!0}]}}static{this.styles=j}get preventDocumentScroll(){return!this.embedded}get open(){return this._open}set open(e){let t=this._open;e!==t&&(this._open=e,this.toggleSheet(e))}async setFocus(){await P(this),A(this.el)}async updateFocusTrapElements(e){this.focusTrap.setExtraContainers(e),this.focusTrap.updateContainerElements()}connectedCallback(){super.connectedCallback(),this.mutationObserver?.observe(this.el,{childList:!0,subtree:!0}),this.setupInteractions()}load(){this.open&&this.openSheet()}willUpdate(e){e.has("opened")&&(this.hasUpdated||this.opened!==!1)&&U(this),(e.has("open")&&(this.hasUpdated||this.open!==!1)||e.has("position")&&(this.hasUpdated||this.position!=="inline-start")||e.has("resizable")&&(this.hasUpdated||this.resizable!==!1))&&this.setupInteractions()}disconnectedCallback(){super.disconnectedCallback(),this.mutationObserver?.disconnect(),this.embedded=!1,this.cleanupInteractions()}toggleSheet(e){this.ignoreOpenChange||(e?this.openSheet():this.closeSheet())}getResizeIcon(){let{position:e}=this;return e==="block-start"||e==="block-end"?"drag-resize-vertical":"drag-resize-horizontal"}getContentElDOMRect(){return this.contentEl.getBoundingClientRect()}handleKeyDown(e){let{key:t,defaultPrevented:a,shiftKey:n}=e,{position:i,resizable:s,contentEl:b,el:h,resizeValues:{maxBlockSize:x,maxInlineSize:k,minBlockSize:g,minInlineSize:w}}=this,z=[...i==="block-end"||i==="block-start"?["ArrowUp","ArrowDown"]:["ArrowLeft","ArrowRight"],"Home","End"];if(!s||!b||a||!z.includes(t))return;let l=this.getContentElDOMRect(),m=v(h)==="rtl"?-1:1,o=n?$:T;switch(t){case"ArrowUp":this.updateSize({size:l.height+(i==="block-end"?o:-o),type:"blockSize"}),e.preventDefault();break;case"ArrowDown":this.updateSize({size:l.height+(i==="block-end"?-o:o),type:"blockSize"}),e.preventDefault();break;case"ArrowLeft":this.updateSize({size:l.width+(i==="inline-end"?o:-o)*m,type:"inlineSize"}),e.preventDefault();break;case"ArrowRight":this.updateSize({size:l.width+(i==="inline-end"?-o:o)*m,type:"inlineSize"}),e.preventDefault();break;case"Home":this.updateSize({size:i==="block-start"||i==="block-end"?g:w,type:i==="block-start"||i==="block-end"?"blockSize":"inlineSize"}),e.preventDefault();break;case"End":this.updateSize({size:i==="block-start"||i==="block-end"?x:k,type:i==="block-start"||i==="block-end"?"blockSize":"inlineSize"}),e.preventDefault();break}}updateSize({type:e,size:t}){let{contentEl:a,resizeValues:n}=this;if(!a)return;let i=e==="blockSize"?"minBlockSize":"minInlineSize",s=e==="blockSize"?"maxBlockSize":"maxInlineSize",b=n[i]&&n[s]?F(t,n[i],n[s]):t,h=Math.round(b);this.resizeValues={...n,[e]:h},a.style[e]=t!==null?`${h}px`:null}cleanupInteractions(){this.interaction?.unset(),this.updateSize({size:null,type:"inlineSize"}),this.updateSize({size:null,type:"blockSize"})}async setupInteractions(){this.cleanupInteractions();let{el:e,contentEl:t,resizable:a,position:n,open:i,resizeHandleEl:s}=this;if(!t||!i||!a||!s)return;await this.el.componentOnReady();let{inlineSize:b,minInlineSize:h,blockSize:x,minBlockSize:k,maxInlineSize:g,maxBlockSize:w}=window.getComputedStyle(t),p={inlineSize:d(b),blockSize:d(x),minInlineSize:d(h),minBlockSize:d(k),maxInlineSize:d(g)||window.innerWidth,maxBlockSize:d(w)||window.innerHeight};this.resizeValues=p;let z=v(e)==="rtl";this.interaction=y(t,{context:e.ownerDocument}).resizable({edges:{top:n==="block-end"?s:!1,right:n===(z?"inline-end":"inline-start")?s:!1,bottom:n==="block-start"?s:!1,left:n===(z?"inline-start":"inline-end")?s:!1},modifiers:[y.modifiers.restrictSize({min:{width:p.minInlineSize,height:p.minBlockSize},max:{width:p.maxInlineSize,height:p.maxBlockSize}})],listeners:{move:({rect:l})=>{let m=n==="block-start"||n==="block-end";this.updateSize({size:m?l.height:l.width,type:m?"blockSize":"inlineSize"})}}})}onBeforeOpen(){this.calciteSheetBeforeOpen.emit()}onOpen(){this.focusTrapDisabled&&this.setFocus(),this.focusTrap.activate(),this.calciteSheetOpen.emit()}onBeforeClose(){this.calciteSheetBeforeClose.emit()}onClose(){this.calciteSheetClose.emit(),this.focusTrap.deactivate()}setResizeHandleEl(e){this.resizeHandleEl=e,this.setupInteractions()}setContentEl(e){this.contentEl=e,this.contentId=V(e)}setTransitionEl(e){e&&(this.transitionEl=e)}async openSheet(){await this.componentOnReady(),this.opened=!0}handleOutsideClose(){this.outsideCloseDisabled||(this.open=!1)}async closeSheet(){if(this.beforeClose)try{await this.beforeClose(this.el)}catch{requestAnimationFrame(()=>{this.ignoreOpenChange=!0,this.open=!0,this.ignoreOpenChange=!1});return}this.opened=!1}handleMutationObserver(){this.focusTrap.updateContainerElements()}render(){let{resizable:e,position:t,resizeValues:a}=this,n=v(this.el),i=t==="block-start"||t==="block-end";return E(this.el,"aria-describedby",this.contentId),this.el.ariaLabel=this.label,this.el.ariaModal="true",this.el.role="dialog",S`<div class=${c({[r.container]:!0,[r.containerOpen]:this.opened,[r.containerEmbedded]:this.embedded,[I.rtl]:n==="rtl",[C("width",this.width,this.widthScale)]:!!(this.width||this.widthScale),[C("height",this.height,this.heightScale)]:!!(this.height||this.heightScale)})} ${f(this.setTransitionEl)}><calcite-scrim class=${c(r.scrim)} =${this.handleOutsideClose}></calcite-scrim><div class=${c(r.content)} id=sheet-content ${f(this.setContentEl)}><div class=${c(r.contentContainer)}><slot></slot></div>${e?R("resize-handle",S`<div .ariaLabel=${this.messages.resizeEnabled} .ariaOrientation=${i?"vertical":"horizontal"} .ariaValueMax=${i?a.maxBlockSize:a.maxInlineSize} .ariaValueMin=${i?a.minBlockSize:a.minInlineSize} .ariaValueNow=${i?a.blockSize:a.inlineSize} class=${c(r.resizeHandle)} =${this.handleKeyDown} role=separator tabindex=0 touch-action=none ${f(this.setResizeHandleEl)}><div class=${c(r.resizeHandleBar)}><calcite-icon .icon=${this.getResizeIcon()} scale=s></calcite-icon></div></div>`):null}</div></div>`}};H("calcite-sheet",D);export{D as Sheet};