@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
3 lines (2 loc) • 7.05 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
import{a as B}from"./IQZVCTFW.js";import{a as D,b as O}from"./I3D4XCLD.js";import{a as w}from"./S5D4KC2T.js";import{c as d,e as E,f as z,g as C,h as L,i as f}from"./D26KXFR4.js";import{a as x}from"./DCQRXTMY.js";import{a as y}from"./H5BLSEZ3.js";import"./AP2LDRUV.js";import"./WKR7R7AZ.js";import"./YGX7CUXN.js";import{e as k}from"./YJF4NBEX.js";import"./TQRVWHPS.js";import"./KDWR7M23.js";import"./OAOQ5BXS.js";import{E as g,F as p,G as v,H as o,S as b,g as m,h as u,p as t}from"./C4ZX7VYR.js";var F={positionContainer:"position-container",container:"container"},S=m`:host{display:contents;--calcite-internal-tooltip-padding-block: var(--calcite-spacing-sm);--calcite-internal-tooltip-padding-inline: var(--calcite-spacing-md)}:host([top-layer-disabled]){--calcite-floating-ui-z-index: var(--calcite-z-index-tooltip)}.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-tooltip-max-size-x, 20rem);max-block-size:20rem}.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]){--calcite-internal-tooltip-padding-block: var(--calcite-spacing-xxs);--calcite-internal-tooltip-padding-inline: var(--calcite-spacing-sm)}:host([scale=s]) .container{font-size:var(--calcite-font-size-relative-xs);line-height:var(--calcite-font-line-height-relative-snug)}:host([scale=l]) .container{font-size:var(--calcite-font-size-relative-base);line-height:var(--calcite-font-line-height-relative-snug)}.container{position:relative;overflow:hidden;font-size:var(--calcite-font-size-relative-sm);line-height:var(--calcite-font-line-height-relative-snug);font-weight:var(--calcite-font-weight-medium);word-wrap:break-word;word-break:break-word;padding-block:var(--calcite-internal-tooltip-padding-block);padding-inline:var(--calcite-internal-tooltip-padding-inline);border-radius:var(--calcite-tooltip-corner-radius, var(--calcite-corner-radius-round));color:var(--calcite-tooltip-text-color, var(--calcite-color-text-1));text-align:start}.position-container .calcite-floating-ui-anim{border-width:1px;border-style:solid;background-color:var(--calcite-tooltip-background-color, var(--calcite-color-foreground-1));border-color:var(--calcite-tooltip-border-color, var(--calcite-color-border-3));border-radius:var(--calcite-tooltip-corner-radius, var(--calcite-corner-radius-round))}.calcite-floating-ui-arrow{fill:var(--calcite-tooltip-background-color, var(--calcite-color-foreground-1))}.calcite-floating-ui-arrow__stroke{stroke:var(--calcite-tooltip-border-color, var(--calcite-color-border-3))}:host([hidden]){display:none}[hidden]{display:none}`,T=O({hover:!0}),h=class extends v{constructor(){super(...arguments),this.direction=k(),this.referenceElementType="hover",this.referenceElementController=D({manager:T})(this),this.transitionProp="opacity",this.transitionRef=g(),this.topLayer=w({disabledOverride:()=>this.open&&!this.referenceEl,target:()=>this.floatingEl})(this),this.floatingLayout="vertical",this.closeOnClick=!1,this.offsetDistance=f,this.offsetSkidding=0,this.open=!1,this.overlayPositioning="absolute",this.placement="auto",this.pointerDisabled=!1,this.scale="m",this.topLayerDisabled=!1,this.calciteTooltipBeforeClose=t({cancelable:!1}),this.calciteTooltipBeforeOpen=t({cancelable:!1}),this.calciteTooltipClose=t({cancelable:!1}),this.calciteTooltipOpen=t({cancelable:!1})}static{this.properties={floatingLayout:[16,{},{state:!0}],referenceEl:[16,{},{state:!0}],closeOnClick:[7,{},{reflect:!0,type:Boolean}],label: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}]}}static{this.styles=S}async reposition(e=!1){let{referenceEl:a,placement:n,overlayPositioning:r,offsetDistance:l,offsetSkidding:i,arrowEl:s,floatingEl:c}=this;return E(this,{direction:this.direction,floatingEl:c,referenceEl:a,overlayPositioning:r,placement:n,offsetDistance:l,offsetSkidding:i,arrowEl:s,type:"tooltip"},e)}willUpdate(e){(e.has("offsetDistance")&&(this.hasUpdated||this.offsetDistance!==f)||e.has("offsetSkidding")&&(this.hasUpdated||this.offsetSkidding!==0)||e.has("overlayPositioning")&&(this.hasUpdated||this.overlayPositioning!=="absolute")||e.has("placement")&&(this.hasUpdated||this.placement!=="auto"))&&this.reposition(!0),e.has("open")&&(this.hasUpdated||this.open!==!1)&&this.openHandler(),e.has("referenceElement")&&!this.referenceElement&&this.open&&this.topLayer.hide()}updated(e){e.has("referenceEl")&&C(this)}disconnectedCallback(){super.disconnectedCallback(),L(this)}openHandler(){x(this),this.reposition(!0)}onBeforeOpen(){this.calciteTooltipBeforeOpen.emit(),this.topLayer.show()}onOpen(){this.calciteTooltipOpen.emit()}onBeforeClose(){this.calciteTooltipBeforeClose.emit()}onClose(){this.calciteTooltipClose.emit(),z(this),this.topLayer.hide()}setFloatingEl(e){this.floatingEl=e}setArrowEl(e){this.arrowEl=e,this.reposition(!0)}render(){let{referenceEl:e,label:a,open:n,pointerDisabled:r,floatingLayout:l}=this,i=e&&n,s=!i,c=r?null:y("floating-arrow",B({floatingLayout:l,ref:this.setArrowEl}));return this.el.inert=s,this.el.ariaLabel=a,this.el.ariaLive="polite",this.el.role="tooltip",u`<div class=${o(F.positionContainer)} popover=manual ${p(this.setFloatingEl)}><div class=${o({[d.animation]:!0,[d.animationActive]:i})} ${p(this.transitionRef)}>${c}<div class=${o(F.container)}><slot></slot></div></div></div>`}};b("calcite-tooltip",h);export{h as Tooltip};