UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

3 lines (2 loc) • 20.7 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0/LICENSE.txt */ import{a as j}from"./WFDBL3VW.js";import{a as I,b as K}from"./RBAOI25E.js";import{a as _}from"./UKGEOJUZ.js";import{a as D}from"./GB3AU64V.js";import{a as F}from"./7IMDQ6AR.js";import{a as U}from"./5LQLL6F3.js";import{a as L}from"./HXIMHC6U.js";import{a as H}from"./WAA77FNZ.js";import{a as P}from"./SQ6RHDDF.js";import{a as M}from"./3XLPUKLV.js";import"./3YEM2IPT.js";import"./QUTTHRH3.js";import"./MNIRD7Q7.js";import{D as d,b as A,e as z}from"./ZQBZ5QPB.js";import"./CIYXQ5G6.js";import{C as S,D as u,E as O,F as c,I as R,K as $,M as E,N as T,Q as V,g as B,h as y,p}from"./G7AHLVJ5.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"},W={sheetContent:"sheet-content"},N={dragVertical:"drag-resize-vertical",dragHorizontal:"drag-resize-horizontal"},Y=B`: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) cubic-bezier(.215,.44,.42,.88)}: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) 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)}: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) 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: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}`,C=class extends O{constructor(){super(),this.contentRef=S(),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=P(),this.mutationObserver=H("mutation",()=>this.handleMutationObserver()),this._open=!1,this.openProp="opened",this.transitionProp="opacity",this.transitionRef=S(),this.focusSetter=M()(this),this.keyDownHandler=e=>{let{defaultPrevented:i,key:n}=e;!i&&!this.escapeDisabled&&this.focusTrapDisabled&&this.open&&n==="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}})}),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=p({cancelable:!1}),this.calciteSheetBeforeOpen=p({cancelable:!1}),this.calciteSheetClose=p({cancelable:!1}),this.calciteSheetOpen=p({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=Y}get preventDocumentScroll(){return!this.embedded}get open(){return this._open}set open(e){let i=this._open;e!==i&&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=A(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:i,defaultPrevented:n,shiftKey:a}=e,{contentRef:s,position:t,resizable:f,el:v,resizeValues:{maxBlockSize:x,maxInlineSize:k,minBlockSize:g,minInlineSize:w}}=this,b=[...t==="block-end"||t==="block-start"?["ArrowUp","ArrowDown"]:["ArrowLeft","ArrowRight"],"Home","End"];if(!f||!s.value||n||!b.includes(i))return;let l=this.getContentRefDOMRect(),m=z(v)==="rtl"?-1:1,o=a?T:E;switch(i){case"ArrowUp":this.updateSizeInternal({block:l.height+(t==="block-end"?o:-o)}),e.preventDefault();break;case"ArrowDown":this.updateSizeInternal({block:l.height+(t==="block-end"?-o:o)}),e.preventDefault();break;case"ArrowLeft":this.updateSizeInternal({inline:l.width+(t==="inline-end"?o:-o)*m}),e.preventDefault();break;case"ArrowRight":this.updateSizeInternal({inline:l.width+(t==="inline-end"?-o:o)*m}),e.preventDefault();break;case"Home":this.updateSizeInternal(t==="block-start"||t==="block-end"?{block:g}:{inline:w}),e.preventDefault();break;case"End":this.updateSizeInternal(t==="block-start"||t==="block-end"?{block:x}:{inline:k}),e.preventDefault();break}}updateSizeInternal(e){if(!this.contentRef.value)return;let i=this.sizeOverride.resize(e);this.resizeValues={...this.resizeValues,...i.inline!==void 0&&{inlineSize:i.inline},...i.block!==void 0&&{blockSize:i.block}}}cleanupInteractions(){this.interaction?.unset(),this.updateSizeInternal({inline:null,block:null})}async setupInteractions(){this.cleanupInteractions();let{contentRef:e,el:i,resizable:n,position:a,open:s,resizeHandleEl:t}=this;if(!e.value||!s||!n||!t)return;await this.el.componentOnReady();let{inlineSize:f,minInlineSize:v,blockSize:x,minBlockSize:k,maxInlineSize:g,maxBlockSize:w}=window.getComputedStyle(e.value),h={inlineSize:d(f),blockSize:d(x),minInlineSize:d(v),minBlockSize:d(k),maxInlineSize:d(g)||window.innerWidth,maxBlockSize:d(w)||window.innerHeight};this.resizeValues=h;let b=z(i)==="rtl";this.interaction=I(e.value,{context:i.ownerDocument}).resizable({edges:{top:a==="block-end"?t:!1,right:a===(b?"inline-end":"inline-start")?t:!1,bottom:a==="block-start"?t:!1,left:a===(b?"inline-start":"inline-end")?t:!1},modifiers:[I.modifiers.restrictSize({min:{width:h.minInlineSize,height:h.minBlockSize},max:{width:h.maxInlineSize,height:h.maxBlockSize}})],listeners:{move:({rect:l})=>{let m=a==="block-start"||a==="block-end";this.updateSizeInternal(m?{block:l.height}:{inline:l.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:i,resizeValues:n}=this,a=z(this.el),s=i==="block-start"||i==="block-end";return R(this.el,"aria-describedby",this.contentId),this.el.ariaLabel=this.label,this.el.ariaModal="true",this.el.role="dialog",y`<div class=${c({[r.container]:!0,[r.containerOpen]:this.opened,[r.containerEmbedded]:this.embedded,[$.rtl]:a==="rtl",[D("width",this.width,this.widthScale)]:!!(this.width||this.widthScale),[D("height",this.height,this.heightScale)]:!!(this.height||this.heightScale)})} .popover=${this.embedded?null:"manual"} ${u(this.transitionRef)}><calcite-scrim class=${c(r.scrim)} @click=${this.handleOutsideClose}></calcite-scrim><div class=${c(r.content)} id=${W.sheetContent} ${u(this.contentRef)}><div class=${c(r.contentContainer)}><slot></slot></div>${e?L("resize-handle",y`<div .ariaLabel=${this.messages.resizeEnabled} .ariaOrientation=${s?"vertical":"horizontal"} .ariaValueMax=${s?n.maxBlockSize:n.maxInlineSize} .ariaValueMin=${s?n.minBlockSize:n.minInlineSize} .ariaValueNow=${s?n.blockSize:n.inlineSize} class=${c(r.resizeHandle)} @keydown=${this.handleKeyDown} role=separator tabindex=0 touch-action=none ${u(this.setResizeHandleEl)}><div class=${c(r.resizeHandleBar)}><calcite-icon .icon=${this.getResizeIcon()} scale=s></calcite-icon></div></div>`):null}</div></div>`}};V("calcite-sheet",C);export{C as Sheet};