UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

3 lines (2 loc) • 20.9 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */ import{a as j}from"./EPC7QGCY.js";import{a as y,b as K}from"./MW7AGGL3.js";import{a as _}from"./32SZ6MKP.js";import{a as S}from"./3PITBECR.js";import{a as F}from"./S5D4KC2T.js";import{a as U}from"./DCQRXTMY.js";import{a as H}from"./H5BLSEZ3.js";import{a as u}from"./WKR7R7AZ.js";import{a as E}from"./ENDXE7YY.js";import{a as A}from"./LHBACKJ5.js";import{a as P}from"./D7Q3AXKP.js";import"./RH6ZIP65.js";import{e as L}from"./YJF4NBEX.js";import"./TQRVWHPS.js";import{D as h,b as M}from"./KDWR7M23.js";import"./OAOQ5BXS.js";import{E as w,F as b,G as C,H as d,K as O,M as R,O as V,P as $,S as T,g as D,h as g,p as m}from"./C4ZX7VYR.js";var l={scrim:"scrim",container:"container",containerOpen:"container--open",content:"content",contentContainer:"content-container",containerEmbedded:"container--embedded",resizeHandle:"resize-handle",resizeHandleBar:"resize-handle-bar"},Y={sheetContent:"sheet-content"},N={dragVertical:"drag-resize-vertical",dragHorizontal:"drag-resize-horizontal"},Z=D`:host{position:absolute;inset:0;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)}:host([embedded]){z-index:var(--calcite-z-index-overlay)}.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;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) ease-in-out}:host([top-layer-disabled]) .container,:host([embedded]) .container{z-index:var(--calcite-z-index-overlay)}: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;z-index:calc(var(--calcite-z-index) * -1)}:host([top-layer-disabled]) .scrim{z-index:unset}[popover]{padding:0;margin:0;border:none;background-color:transparent;position:fixed;display:flex;inline-size:100%;block-size:100%}[popover]:popover-open{display:flex}:host([opened]){visibility:visible!important}.content{position:relative;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) ease-in-out,visibility 0ms linear var(--calcite-internal-animation-timing-medium),opacity var(--calcite-internal-animation-timing-medium) ease-in-out;transform:var(--calcite-sheet-hidden-position-internal)}:host([top-layer-disabled]),:host([top-layer-disabled]) .content,:host([embedded]) .content{z-index:var(--calcite-z-index-modal)}.content-container{position:relative;display:flex;max-block-size:100%;max-inline-size:100%;flex:1 1 0%;overflow:hidden}.content-container ::slotted(*){block-size:auto}.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) ease-in-out,visibility 0ms linear,opacity var(--calcite-internal-animation-timing-medium) ease-in-out,max-inline-size var(--calcite-internal-animation-timing-medium) ease-in-out,max-block-size var(--calcite-internal-animation-timing-medium) ease-in-out;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:var(--calcite-border-width-md) 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}`,I=class extends C{constructor(){super(),this.contentRef=w(),this.direction=L(),this.focusTrap=_({triggerProp:"open",focusTrapOptions:{clickOutsideDeactivates:()=>this.embedded,escapeDeactivates:e=>(!e.defaultPrevented&&!this.escapeDisabled&&(this.open=!1,e.preventDefault()),!1)}})(this),this.usePreventDocumentScroll=j()(this),this.messages=A(),this.mutationObserver=E("mutation",()=>this.handleMutationObserver()),this._open=!1,this.openProp="opened",this.transitionProp="opacity",this.transitionRef=w(),this.focusSetter=P()(this),this.keyDownHandler=e=>{let{defaultPrevented:n,key:t}=e;!n&&!this.escapeDisabled&&this.focusTrapDisabled&&this.open&&t==="Escape"&&(e.preventDefault(),this.open=!1)},this.sizeOverride=K({targetElement:this.contentRef,getBounds:()=>({inline:{min:this.resizeValues.minInlineSize,max:this.resizeValues.maxInlineSize},block:{min:this.resizeValues.minBlockSize,max:this.resizeValues.maxBlockSize}}),onResize:e=>{this.resizeValues={...e}}}),this.topLayer=F({disabledOverride:()=>this.embedded,target:this.transitionRef})(this),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.topLayerDisabled=!1,this.widthScale="m",this.calciteSheetBeforeClose=m({cancelable:!1}),this.calciteSheetBeforeOpen=m({cancelable:!1}),this.calciteSheetClose=m({cancelable:!1}),this.calciteSheetOpen=m({cancelable:!1}),this.listen("keydown",this.keyDownHandler)}static{this.properties={resizeValues:[16,{},{state:!0}],beforeClose:[0,{},{attribute:!1}],displayMode:[3,{},{reflect:!0}],embedded:[7,{},{reflect:!0,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}],topLayerDisabled:[7,{},{reflect:!0,type:Boolean}],widthScale:[3,{},{reflect:!0}],width:[3,{},{reflect:!0}]}}static{this.styles=Z}get preventDocumentScroll(){return!this.embedded}get open(){return this._open}set open(e){let n=this._open;e!==n&&this.setOpenState(e)}async setFocus(e){return this.focusSetter(()=>this.el,e)}async updateFocusTrapElements(e){this.focusTrap.setExtraContainers(e),this.focusTrap.updateContainerElements()}async updateSize(e){this.updateSizeInternal(e)}connectedCallback(){super.connectedCallback(),this.mutationObserver?.observe(this.el,{childList:!0,subtree:!0}),this.setupInteractions()}willUpdate(e){e.has("opened")&&(this.hasUpdated||this.opened!==!1)&&this.transitionRef.value&&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(),this.contentRef.value&&(this.contentId=M(this.contentRef.value))}disconnectedCallback(){super.disconnectedCallback(),this.mutationObserver?.disconnect(),this.embedded=!1,this.cleanupInteractions()}async setOpenState(e){if(this.beforeClose&&!e)try{await this.beforeClose?.(this.el)}catch{return}this._open=e,e&&await this.componentOnReady(),this.opened=e}getResizeIcon(){let{position:e}=this;return e==="block-start"||e==="block-end"?N.dragVertical:N.dragHorizontal}getContentRefDOMRect(){return this.contentRef.value?.getBoundingClientRect()}handleKeyDown(e){let{key:n,defaultPrevented:t,shiftKey:s}=e,{contentRef:r,position:i,resizable:c,resizeValues:{maxBlockSize:z,maxInlineSize:f,minBlockSize:v,minInlineSize:x}}=this,k=[...i==="block-end"||i==="block-start"?["ArrowUp","ArrowDown"]:["ArrowLeft","ArrowRight"],"Home","End"];if(!c||!r.value||t||!k.includes(n))return;let o=this.getContentRefDOMRect(),p=this.direction==="rtl"?-1:1,a=s?$:V;switch(n){case"ArrowUp":this.updateSizeInternal({block:o.height+(i==="block-end"?a:-a)}),e.preventDefault();break;case"ArrowDown":this.updateSizeInternal({block:o.height+(i==="block-end"?-a:a)}),e.preventDefault();break;case"ArrowLeft":this.updateSizeInternal({inline:o.width+(i==="inline-end"?a:-a)*p}),e.preventDefault();break;case"ArrowRight":this.updateSizeInternal({inline:o.width+(i==="inline-end"?-a:a)*p}),e.preventDefault();break;case"Home":this.updateSizeInternal(i==="block-start"||i==="block-end"?{block:v}:{inline:x}),e.preventDefault();break;case"End":this.updateSizeInternal(i==="block-start"||i==="block-end"?{block:z}:{inline:f}),e.preventDefault();break}}updateSizeInternal(e){this.contentRef.value&&this.sizeOverride.resize(e)}cleanupInteractions(){this.interaction?.unset(),this.updateSizeInternal({inline:null,block:null})}async setupInteractions(){this.cleanupInteractions();let{contentRef:e,el:n,resizable:t,position:s,open:r,resizeHandleEl:i}=this;if(!e.value||!r||!t||!i)return;await this.el.componentOnReady();let c=window.getComputedStyle(e.value);this.resizeValues.minInlineSize=parseInt(c.minInlineSize)||0,this.resizeValues.maxInlineSize=parseInt(c.maxInlineSize)||window.innerWidth,this.resizeValues.minBlockSize=parseInt(c.minBlockSize)||0,this.resizeValues.maxBlockSize=parseInt(c.maxBlockSize)||window.innerHeight;let{inlineSize:z,minInlineSize:f,blockSize:v,minBlockSize:x,maxInlineSize:B,maxBlockSize:k}=c,o={inlineSize:h(z),blockSize:h(v),minInlineSize:h(f),minBlockSize:h(x),maxInlineSize:h(B)||window.innerWidth,maxBlockSize:h(k)||window.innerHeight};this.resizeValues=o;let p=this.direction==="rtl";this.interaction=y(e.value,{context:n.ownerDocument}).resizable({edges:{top:s==="block-end"?i:!1,right:s===(p?"inline-end":"inline-start")?i:!1,bottom:s==="block-start"?i:!1,left:s===(p?"inline-start":"inline-end")?i:!1},modifiers:[y.modifiers.restrictSize({min:{width:o.minInlineSize,height:o.minBlockSize},max:{width:o.maxInlineSize,height:o.maxBlockSize}})],listeners:{move:({rect:a})=>{let W=s==="block-start"||s==="block-end";this.updateSizeInternal(W?{block:a.height}:{inline:a.width})}}})}onBeforeOpen(){this.calciteSheetBeforeOpen.emit(),this.topLayer.show()}onOpen(){this.focusTrapDisabled&&this.setFocus(),this.focusTrap.activate(),this.calciteSheetOpen.emit()}onBeforeClose(){this.calciteSheetBeforeClose.emit()}onClose(){this.calciteSheetClose.emit(),this.focusTrap.deactivate(),this.topLayer.hide()}setResizeHandleEl(e){this.resizeHandleEl=e,this.setupInteractions()}handleOutsideClose(){this.outsideCloseDisabled||(this.open=!1)}handleMutationObserver(){this.focusTrap.updateContainerElements()}render(){let{resizable:e,position:n,resizeValues:t}=this,s=this.direction,r=n==="block-start"||n==="block-end";return O(this.el,"aria-describedby",this.contentId),this.el.ariaLabel=this.label,this.el.ariaModal="true",this.el.role="dialog",g`<div class=${d({[l.container]:!0,[l.containerOpen]:this.opened,[l.containerEmbedded]:this.embedded,[R.rtl]:s==="rtl",[S("width",this.width,this.widthScale)]:!!(this.width||this.widthScale),[S("height",this.height,this.heightScale)]:!!(this.height||this.heightScale)})} .popover=${this.embedded?null:"manual"} ${b(this.transitionRef)}><calcite-scrim class=${d(l.scrim)} @click=${this.handleOutsideClose}></calcite-scrim><div class=${d(l.content)} id=${Y.sheetContent} ${b(this.contentRef)}><div class=${d(l.contentContainer)}><slot></slot></div>${e?H("resize-handle",g`<div .ariaLabel=${this.messages.resizeEnabled} .ariaOrientation=${r?"vertical":"horizontal"} .ariaValueMax=${u(r?"block":"inline",t.maxBlockSize,t.maxInlineSize)} .ariaValueMin=${u(r?"block":"inline",t.minBlockSize,t.minInlineSize)} .ariaValueNow=${u(r?"block":"inline",t.blockSize,t.inlineSize)} class=${d(l.resizeHandle)} @keydown=${this.handleKeyDown} role=separator tabindex=0 touch-action=none ${b(this.setResizeHandleEl)}><div class=${d(l.resizeHandleBar)}><calcite-icon .icon=${this.getResizeIcon()} scale=s></calcite-icon></div></div>`):null}</div></div>`}};T("calcite-sheet",I);export{I as Sheet};