UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

6 lines 11.3 kB
/*! * All material copyright ESRI, All Rights Reserved, unless otherwise specified. * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details. * v1.5.0-next.4 */ import{r as t,c as i,h as e,H as a,a as n}from"./p-8789682d.js";import{q as o,i as s,u as r,t as c}from"./p-68f223ec.js";import{c as l,b as h,a as d,r as m,F as f}from"./p-0173dd24.js";import{g as p}from"./p-d2aa9245.js";import{c as u,d as g}from"./p-dcddc7b6.js";import{F as v}from"./p-12b567b9.js";import"./p-9280476e.js";import"./p-7fb6664e.js";import"./p-81620376.js";const y="aria-describedby";function w(t){const{referenceElement:i}=t;return("string"==typeof i?o(t,{id:i}):i)||null}const b=new class{constructor(){this.registeredElements=new WeakMap,this.registeredShadowRootCounts=new WeakMap,this.hoverOpenTimeout=null,this.hoverCloseTimeout=null,this.hoveredTooltip=null,this.clickedTooltip=null,this.activeTooltip=null,this.registeredElementCount=0,this.queryTooltip=t=>{const{registeredElements:i}=this,e=t.find((t=>i.has(t)));return i.get(e)},this.keyDownHandler=t=>{if("Escape"===t.key&&!t.defaultPrevented){const{activeTooltip:i}=this;if(i?.open){this.clearHoverTimeout(),this.closeActiveTooltip();const e=w(i);e instanceof Element&&e.contains(t.target)&&t.preventDefault()}}},this.pointerMoveHandler=t=>{const i=t.composedPath(),{activeTooltip:e}=this;if(e?.open&&i.includes(e))return void this.clearHoverTimeout();const a=this.queryTooltip(i);this.hoveredTooltip=a,this.isClosableClickedTooltip(a)||(this.clickedTooltip=null,a?this.openHoveredTooltip(a):e&&this.closeHoveredTooltip())},this.pointerDownHandler=t=>{if(!s(t))return;const i=this.queryTooltip(t.composedPath());this.clickedTooltip=i,i?.closeOnClick&&(this.toggleTooltip(i,!1),this.clearHoverTimeout())},this.focusInHandler=t=>{this.queryFocusedTooltip(t,!0)},this.focusOutHandler=t=>{this.queryFocusedTooltip(t,!1)},this.openHoveredTooltip=t=>{this.hoverOpenTimeout=window.setTimeout((()=>{null!==this.hoverOpenTimeout&&(this.clearHoverCloseTimeout(),this.closeActiveTooltip(),t===this.hoveredTooltip&&this.toggleTooltip(t,!0))}),this.activeTooltip?0:300)},this.closeHoveredTooltip=()=>{this.hoverCloseTimeout=window.setTimeout((()=>{null!==this.hoverCloseTimeout&&this.closeActiveTooltip()}),500)}}registerElement(t,i){this.registeredElementCount++,this.registeredElements.set(t,i);const e=this.getReferenceElShadowRootNode(t);e&&this.registerShadowRoot(e),1===this.registeredElementCount&&this.addListeners()}unregisterElement(t){const i=this.getReferenceElShadowRootNode(t);i&&this.unregisterShadowRoot(i),this.registeredElements.delete(t)&&this.registeredElementCount--,0===this.registeredElementCount&&this.removeListeners()}addShadowListeners(t){t.addEventListener("focusin",this.focusInHandler,{capture:!0}),t.addEventListener("focusout",this.focusOutHandler,{capture:!0})}removeShadowListeners(t){t.removeEventListener("focusin",this.focusInHandler,{capture:!0}),t.removeEventListener("focusout",this.focusOutHandler,{capture:!0})}addListeners(){document.addEventListener("keydown",this.keyDownHandler,{capture:!0}),document.addEventListener("pointermove",this.pointerMoveHandler,{capture:!0}),document.addEventListener("pointerdown",this.pointerDownHandler,{capture:!0}),document.addEventListener("focusin",this.focusInHandler,{capture:!0}),document.addEventListener("focusout",this.focusOutHandler,{capture:!0})}removeListeners(){document.removeEventListener("keydown",this.keyDownHandler,{capture:!0}),document.removeEventListener("pointermove",this.pointerMoveHandler,{capture:!0}),document.removeEventListener("pointerdown",this.pointerDownHandler,{capture:!0}),document.removeEventListener("focusin",this.focusInHandler,{capture:!0}),document.removeEventListener("focusout",this.focusOutHandler,{capture:!0})}clearHoverOpenTimeout(){window.clearTimeout(this.hoverOpenTimeout),this.hoverOpenTimeout=null}clearHoverCloseTimeout(){window.clearTimeout(this.hoverCloseTimeout),this.hoverCloseTimeout=null}clearHoverTimeout(){this.clearHoverOpenTimeout(),this.clearHoverCloseTimeout()}closeActiveTooltip(){const{activeTooltip:t}=this;t?.open&&this.toggleTooltip(t,!1)}toggleFocusedTooltip(t,i){this.closeActiveTooltip(),i&&this.clearHoverTimeout(),this.toggleTooltip(t,i)}toggleTooltip(t,i){t.open=i,this.activeTooltip=i?t:null}queryFocusedTooltip(t,i){const e=this.queryTooltip(t.composedPath());e&&!this.isClosableClickedTooltip(e)&&this.toggleFocusedTooltip(e,i)}isClosableClickedTooltip(t){return t?.closeOnClick&&t===this.clickedTooltip}registerShadowRoot(t){const{registeredShadowRootCounts:i}=this,e=(i.get(t)??0)+1;1===e&&this.addShadowListeners(t),i.set(t,e)}unregisterShadowRoot(t){const{registeredShadowRootCounts:i}=this,e=i.get(t)-1;0===e&&this.removeShadowListeners(t),i.set(t,e)}getReferenceElShadowRootNode(t){return t instanceof Element?r(t):null}},x=class{constructor(e){t(this,e),this.calciteTooltipBeforeClose=i(this,"calciteTooltipBeforeClose",6),this.calciteTooltipClose=i(this,"calciteTooltipClose",6),this.calciteTooltipBeforeOpen=i(this,"calciteTooltipBeforeOpen",6),this.calciteTooltipOpen=i(this,"calciteTooltipOpen",6),this.guid=`calcite-tooltip-${p()}`,this.hasLoaded=!1,this.openTransitionProp="opacity",this.setTransitionEl=t=>{this.transitionEl=t,u(this)},this.setUpReferenceElement=(t=!0)=>{this.removeReferences(),this.effectiveReferenceElement=w(this.el),l(this,this.effectiveReferenceElement,this.el);const{el:i,referenceElement:e,effectiveReferenceElement:a}=this;t&&e&&!a&&console.warn(`${i.tagName}: reference-element id "${e}" was not found.`,{el:i}),this.addReferences()},this.getId=()=>this.el.id||this.guid,this.addReferences=()=>{const{effectiveReferenceElement:t}=this;if(!t)return;const i=this.getId();"setAttribute"in t&&t.setAttribute(y,i),b.registerElement(t,this.el)},this.removeReferences=()=>{const{effectiveReferenceElement:t}=this;t&&("removeAttribute"in t&&t.removeAttribute(y),b.unregisterElement(t))},this.closeOnClick=!1,this.label=void 0,this.offsetDistance=h,this.offsetSkidding=0,this.open=!1,this.overlayPositioning="absolute",this.placement="auto",this.referenceElement=void 0,this.effectiveReferenceElement=void 0,this.floatingLayout="vertical"}offsetDistanceOffsetHandler(){this.reposition(!0)}offsetSkiddingHandler(){this.reposition(!0)}openHandler(t){t&&this.reposition(!0)}overlayPositioningHandler(){this.reposition(!0)}placementHandler(){this.reposition(!0)}referenceElementHandler(){this.setUpReferenceElement()}connectedCallback(){u(this),this.setUpReferenceElement(this.hasLoaded)}componentDidLoad(){this.referenceElement&&!this.effectiveReferenceElement&&this.setUpReferenceElement(),this.reposition(!0),this.hasLoaded=!0}disconnectedCallback(){this.removeReferences(),d(this,this.effectiveReferenceElement,this.el),g(this)}async reposition(t=!1){const{el:i,effectiveReferenceElement:e,placement:a,overlayPositioning:n,offsetDistance:o,offsetSkidding:s,arrowEl:r}=this;return m(this,{floatingEl:i,referenceEl:e,overlayPositioning:n,placement:a,offsetDistance:o,offsetSkidding:s,arrowEl:r,type:"tooltip"},t)}onBeforeOpen(){this.calciteTooltipBeforeOpen.emit()}onOpen(){this.calciteTooltipOpen.emit()}onBeforeClose(){this.calciteTooltipBeforeClose.emit()}onClose(){this.calciteTooltipClose.emit()}render(){const{effectiveReferenceElement:t,label:i,open:n,floatingLayout:o}=this,s=t&&n,r=!s;return e(a,{"aria-hidden":c(r),"aria-label":i,"aria-live":"polite","calcite-hydrated-hidden":r,id:this.getId(),role:"tooltip"},e("div",{class:{[f.animation]:!0,[f.animationActive]:s},ref:this.setTransitionEl},e(v,{floatingLayout:o,ref:t=>this.arrowEl=t}),e("div",{class:"container"},e("slot",null))))}get el(){return n(this)}static get watchers(){return{offsetDistance:["offsetDistanceOffsetHandler"],offsetSkidding:["offsetSkiddingHandler"],open:["openHandler"],overlayPositioning:["overlayPositioningHandler"],placement:["placementHandler"],referenceElement:["referenceElementHandler"]}}};x.style="@keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in-down{0%{opacity:0;transform:translate3D(0, -5px, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;transform:translate3D(0, 5px, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-right{0%{opacity:0;transform:translate3D(-5px, 0, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-left{0%{opacity:0;transform:translate3D(5px, 0, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-scale{0%{opacity:0;transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;transform:scale3D(1, 1, 1)}}:root{--calcite-animation-timing:calc(150ms * var(--calcite-internal-duration-factor));--calcite-internal-duration-factor:var(--calcite-duration-factor, 1);--calcite-internal-animation-timing-fast:calc(100ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-medium:calc(200ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-slow:calc(300ms * var(--calcite-internal-duration-factor))}.calcite-animate{opacity:0;animation-fill-mode:both;animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{animation-name:in}.calcite-animate__in-down{animation-name:in-down}.calcite-animate__in-up{animation-name:in-up}.calcite-animate__in-right{animation-name:in-right}.calcite-animate__in-left{animation-name:in-left}.calcite-animate__in-scale{animation-name:in-scale}@media (prefers-reduced-motion: reduce){:root{--calcite-internal-duration-factor:0.01}}:root{--calcite-floating-ui-transition:var(--calcite-animation-timing);--calcite-floating-ui-z-index:var(--calcite-app-z-index-dropdown)}:host([hidden]){display:none}:host{--calcite-floating-ui-z-index:var(--calcite-tooltip-z-index, 901);display:block;position:absolute;z-index:var(--calcite-floating-ui-z-index)}.calcite-floating-ui-anim{position:relative;transition:var(--calcite-floating-ui-transition);transition-property:transform, visibility, opacity;opacity:0;box-shadow:0 0 16px 0 rgba(0, 0, 0, 0.16);z-index:var(--calcite-app-z-index);border-radius:0.25rem}:host([data-placement^=bottom]) .calcite-floating-ui-anim{transform:translateY(-5px)}:host([data-placement^=top]) .calcite-floating-ui-anim{transform:translateY(5px)}:host([data-placement^=left]) .calcite-floating-ui-anim{transform:translateX(5px)}:host([data-placement^=right]) .calcite-floating-ui-anim{transform:translateX(-5px)}:host([data-placement]) .calcite-floating-ui-anim--active{opacity:1;transform:translate(0)}:host([calcite-hydrated-hidden]){visibility:hidden !important;pointer-events:none}.calcite-floating-ui-arrow{pointer-events:none;position:absolute;z-index:calc(var(--calcite-app-z-index) * -1);fill:var(--calcite-ui-foreground-1)}.calcite-floating-ui-arrow__stroke{stroke:var(--calcite-ui-border-3)}.container{position:relative;overflow:hidden;border-radius:0.25rem;padding-block:0.75rem;padding-inline:1rem;font-size:var(--calcite-font-size--2);line-height:1.375;font-weight:var(--calcite-font-weight-medium);color:var(--calcite-ui-text-1);max-inline-size:20rem;max-block-size:20rem;text-align:start}.calcite-floating-ui-anim{border-radius:0.25rem;border-width:1px;border-style:solid;border-color:var(--calcite-ui-border-3);background-color:var(--calcite-ui-foreground-1)}.arrow::before{outline:1px solid var(--calcite-ui-border-3)}";export{x as calcite_tooltip}