@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
3 lines (2 loc) • 10.1 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
import{a as N}from"./IQZVCTFW.js";import{a as S}from"./32SZ6MKP.js";import{a as H,b as U}from"./I3D4XCLD.js";import{a as z}from"./S5D4KC2T.js";import{c as m,d as F,e as O,f as $,g as L,h as T,i as v}from"./D26KXFR4.js";import{a as D}from"./DCQRXTMY.js";import{a as B}from"./UM7ABEPP.js";import"./265A6AOM.js";import{a as l}from"./H5BLSEZ3.js";import"./AP2LDRUV.js";import"./WKR7R7AZ.js";import"./YGX7CUXN.js";import{a as k}from"./ENDXE7YY.js";import{a as E}from"./LHBACKJ5.js";import{a as P}from"./D7Q3AXKP.js";import"./RH6ZIP65.js";import{e as C}from"./YJF4NBEX.js";import"./TQRVWHPS.js";import"./KDWR7M23.js";import"./OAOQ5BXS.js";import{E as y,F as u,G as x,H as o,S as w,g as b,h as n,p as r}from"./C4ZX7VYR.js";var i={positionContainer:"position-container",container:"container",closeButtonContainer:"close-button-container",closeButton:"close-button",content:"content",hasHeader:"has-header",header:"header",headerContainer:"header-container",heading:"heading"},A="auto",_=b`:host{display:contents}:host([top-layer-disabled]){--calcite-floating-ui-z-index: var(--calcite-z-index-popup)}.position-container{inline-size:max-content;display:none;max-inline-size:100vw;max-block-size:100vh;inset-block-start:0;left:0;z-index:var(--calcite-floating-ui-z-index)}-style{.position-container{opacity:0;inset-block-start:0;left:0}}.position-container{max-inline-size:var(--calcite-popover-max-size-x, 100vw)}.position-container[popover]{padding:0;margin:0;border:none;background-color:transparent;overflow:visible;display:none}.position-container:popover-open{display:block}.position-container .calcite-floating-ui-anim{position:relative;transition-duration:var(--calcite-floating-ui-transition);transition-property:inset-block-start,left,opacity,display;transition-behavior:allow-discrete;opacity:0;box-shadow:0 0 16px #00000029;z-index:var(--calcite-z-index);border-radius:.25rem}.position-container[data-placement^=bottom] .calcite-floating-ui-anim{inset-block-start:-5px}.position-container[data-placement^=top] .calcite-floating-ui-anim{inset-block-start:5px}.position-container[data-placement^=left] .calcite-floating-ui-anim{left:5px}.position-container[data-placement^=right] .calcite-floating-ui-anim{left:-5px}.position-container[data-placement] .calcite-floating-ui-anim--active{opacity:1;inset-block-start:0;left:0}-style{.position-container[data-placement] .calcite-floating-ui-anim--active{opacity:0}}.calcite-floating-ui-arrow{pointer-events:none;position:absolute;z-index:calc(var(--calcite-z-index) * -1);fill:var(--calcite-color-foreground-1)}.calcite-floating-ui-arrow__stroke{stroke:var(--calcite-color-border-3)}:host([scale=s]) .heading{padding:.5rem .75rem;font-size:var(--calcite-font-size-relative-base);line-height:var(--calcite-font-line-height-relative-snug)}:host(:is([scale=s],[scale=m])){--calcite-internal-popover-close-spacing: var(--calcite-spacing-xs)}:host([scale=m]) .heading{padding:.75rem 1rem;font-size:var(--calcite-font-size-relative-md);line-height:var(--calcite-font-line-height-relative-snug)}:host([scale=l]){--calcite-internal-popover-close-spacing: var(--calcite-spacing-sm)}:host([scale=l]) .heading{padding:1rem 1.25rem;font-size:var(--calcite-font-size-relative-lg);line-height:var(--calcite-font-line-height-relative-snug)}.position-container .calcite-floating-ui-anim{border-width:1px;border-style:solid;background-color:var(--calcite-popover-background-color, var(--calcite-color-foreground-1));border-color:var(--calcite-popover-border-color, var(--calcite-color-border-3));border-radius:var(--calcite-popover-corner-radius, var(--calcite-corner-radius-round))}.calcite-floating-ui-arrow{fill:var(--calcite-popover-background-color, var(--calcite-color-foreground-1))}.calcite-floating-ui-arrow__stroke{stroke:var(--calcite-popover-border-color, var(--calcite-color-border-3))}.header{display:flex;flex:1 1 auto;align-items:stretch;justify-content:flex-start;border-width:0px;border-bottom-width:1px;border-style:solid;border-block-end-color:var(--calcite-popover-border-color, var(--calcite-color-border-3))}.heading{margin:0;display:block;flex:1 1 auto;align-self:center;white-space:normal;font-weight:var(--calcite-font-weight-medium);word-wrap:break-word;word-break:break-word;color:var(--calcite-popover-text-color, var(--calcite-color-text-1))}.header-container{position:relative;display:flex;height:100%;flex-direction:row;flex-wrap:nowrap;border-radius:.25rem;color:var(--calcite-popover-text-color, var(--calcite-color-text-1))}.header-container.has-header{flex-direction:column}.content{display:flex;height:100%;width:100%;flex-direction:column;flex-wrap:nowrap;align-self:center;word-wrap:break-word;word-break:break-word}.close-button{margin:auto;margin-inline-end:var(--calcite-internal-popover-close-spacing)}.close-button-container{display:flex;flex:0 0 auto}::slotted(calcite-panel),::slotted(calcite-flow){height:100%}:host([hidden]){display:none}[hidden]{display:none}`,I=U({click:!0}),g=class extends x{constructor(){super(...arguments),this.referenceElementType="click",this.referenceElementController=H({manager:I})(this),this.direction=C(),this.focusTrap=S({triggerProp:"open",focusTrapOptions:{allowOutsideClick:!0,escapeDeactivates:e=>(e.defaultPrevented||(this.open=!1,e.preventDefault()),!1)}})(this),this.mutationObserver=k("mutation",()=>this.focusTrap.updateContainerElements()),this.transitionProp="opacity",this.transitionRef=y(),this.messages=E(),this.focusSetter=P()(this),this.topLayer=z({disabledOverride:()=>this.open&&!this.referenceEl,target:()=>this.floatingEl})(this),this.floatingLayout="vertical",this.autoClose=!1,this.closable=!1,this.flipDisabled=!1,this.focusTrapDisabled=!1,this.offsetDistance=v,this.offsetSkidding=0,this.open=!1,this.overlayPositioning="absolute",this.placement=A,this.pointerDisabled=!1,this.scale="m",this.topLayerDisabled=!1,this.triggerDisabled=!1,this.calcitePopoverBeforeClose=r({cancelable:!1}),this.calcitePopoverBeforeOpen=r({cancelable:!1}),this.calcitePopoverClose=r({cancelable:!1}),this.calcitePopoverOpen=r({cancelable:!1})}static{this.properties={floatingLayout:[16,{},{state:!0}],referenceEl:[16,{},{state:!0}],autoClose:[7,{},{reflect:!0,type:Boolean}],closable:[7,{},{reflect:!0,type:Boolean}],flipDisabled:[7,{},{reflect:!0,type:Boolean}],flipPlacements:[0,{},{attribute:!1}],focusTrapDisabled:[7,{},{reflect:!0,type:Boolean}],focusTrapOptions:[0,{},{attribute:!1}],heading:1,headingLevel:[11,{},{type:Number,reflect:!0}],label:1,messageOverrides:[0,{},{attribute:!1}],offsetDistance:[11,{},{type:Number,reflect:!0}],offsetSkidding:[11,{},{reflect:!0,type:Number}],open:[7,{},{reflect:!0,type:Boolean}],overlayPositioning:[3,{},{reflect:!0}],placement:[3,{},{reflect:!0}],pointerDisabled:[7,{},{reflect:!0,type:Boolean}],referenceElement:1,scale:[3,{},{reflect:!0}],topLayerDisabled:[7,{},{reflect:!0,type:Boolean}],triggerDisabled:[7,{},{reflect:!0,type:Boolean}]}}static{this.styles=_}async reposition(e=!1){let{referenceEl:t,placement:a,overlayPositioning:c,flipDisabled:p,filteredFlipPlacements:d,offsetDistance:s,offsetSkidding:f,arrowEl:h,floatingEl:R}=this;return O(this,{direction:this.direction,floatingEl:R,referenceEl:t,overlayPositioning:c,placement:a,flipDisabled:p,flipPlacements:d,offsetDistance:s,offsetSkidding:f,arrowEl:h,type:"popover"},e)}async setFocus(e){return this.focusSetter(()=>this.el,e)}async updateFocusTrapElements(e){this.focusTrap.setExtraContainers(e),this.focusTrap.updateContainerElements()}connectedCallback(){super.connectedCallback(),this.mutationObserver?.observe(this.el,{childList:!0,subtree:!0}),this.setFilteredPlacements()}willUpdate(e){e.has("flipPlacements")&&this.flipPlacementsHandler(),e.has("open")&&(this.hasUpdated||this.open!==!1)&&this.openHandler(),(e.has("offsetDistance")&&(this.hasUpdated||this.offsetDistance!==v)||e.has("offsetSkidding")&&(this.hasUpdated||this.offsetSkidding!==0)||e.has("overlayPositioning")&&(this.hasUpdated||this.overlayPositioning!=="absolute")||e.has("placement")&&(this.hasUpdated||this.placement!==A))&&this.reposition(!0),e.has("referenceElement")&&!this.referenceElement&&this.open&&this.topLayer.hide()}updated(e){e.has("referenceEl")&&L(this)}disconnectedCallback(){super.disconnectedCallback(),this.mutationObserver?.disconnect(),T(this)}flipPlacementsHandler(){this.setFilteredPlacements(),this.reposition(!0)}openHandler(){D(this),this.reposition(!0)}setFloatingEl(e){this.floatingEl=e}setFilteredPlacements(){let{el:e,flipPlacements:t}=this;this.filteredFlipPlacements=t?F(t,e):null}hide(){this.open=!1}onBeforeOpen(){this.calcitePopoverBeforeOpen.emit(),this.topLayer.show()}onOpen(){this.calcitePopoverOpen.emit(),this.focusTrap.activate()}onBeforeClose(){this.calcitePopoverBeforeClose.emit()}onClose(){this.calcitePopoverClose.emit(),$(this),this.focusTrap.deactivate(),this.topLayer.hide()}setArrowEl(e){this.arrowEl=e,this.reposition(!0)}renderCloseButton(){let{messages:e,closable:t}=this;return t?l(i.closeButtonContainer,n`<div class=${o(i.closeButtonContainer)}><calcite-action class=${o(i.closeButton)} icon=x =${this.hide} .scale=${this.scale} .text=${e.close}></calcite-action></div>`):null}renderHeader(){let{heading:e,headingLevel:t}=this,a=e?B({class:i.heading,level:t,children:e}):null;return a?l(i.header,n`<div class=${o(i.header)}>${a}${this.renderCloseButton()}</div>`):null}render(){let{referenceEl:e,heading:t,label:a,open:c,pointerDisabled:p,floatingLayout:d}=this,s=e&&c,f=!s,h=p?null:l("floating-arrow",N({floatingLayout:d,ref:this.setArrowEl}));return this.el.inert=f,this.el.ariaLabel=a,this.el.ariaLive="polite",this.el.role="dialog",n`<div class=${o(i.positionContainer)} popover=manual ${u(this.setFloatingEl)}><div class=${o({[i.container]:!0,[m.animation]:!0,[m.animationActive]:s})} ${u(this.transitionRef)}>${h}<div class=${o({[i.hasHeader]:!!t,[i.headerContainer]:!0})}>${this.renderHeader()}<div class=${o(i.content)}><slot></slot></div>${t?null:this.renderCloseButton()}</div></div></div>`}};w("calcite-popover",g);export{g as Popover};