@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
5 lines • 15.9 kB
JavaScript
var __awaiter=this&&this.__awaiter||function(t,e,a,i){function o(t){return t instanceof a?t:new a((function(e){e(t)}))}return new(a||(a=Promise))((function(a,n){function r(t){try{l(i.next(t))}catch(t){n(t)}}function s(t){try{l(i["throw"](t))}catch(t){n(t)}}function l(t){t.done?a(t.value):o(t.value).then(r,s)}l((i=i.apply(t,e||[])).next())}))};var __generator=this&&this.__generator||function(t,e){var a={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,o,n,r;return r={next:s(0),throw:s(1),return:s(2)},typeof Symbol==="function"&&(r[Symbol.iterator]=function(){return this}),r;function s(t){return function(e){return l([t,e])}}function l(r){if(i)throw new TypeError("Generator is already executing.");while(a)try{if(i=1,o&&(n=r[0]&2?o["return"]:r[0]?o["throw"]||((n=o["return"])&&n.call(o),0):o.next)&&!(n=n.call(o,r[1])).done)return n;if(o=0,n)r=[r[0]&2,n.value];switch(r[0]){case 0:case 1:n=r;break;case 4:a.label++;return{value:r[1],done:false};case 5:a.label++;o=r[1];r=[0];continue;case 7:r=a.ops.pop();a.trys.pop();continue;default:if(!(n=a.trys,n=n.length>0&&n[n.length-1])&&(r[0]===6||r[0]===2)){a=0;continue}if(r[0]===3&&(!n||r[1]>n[0]&&r[1]<n[3])){a.label=r[1];break}if(r[0]===6&&a.label<n[1]){a.label=n[1];n=r;break}if(n&&a.label<n[2]){a.label=n[2];a.ops.push(r);break}if(n[2])a.ops.pop();a.trys.pop();continue}r=e.call(t,a)}catch(t){r=[6,t];o=0}finally{i=n=0}if(r[0]&5)throw r[1];return{value:r[0]?r[1]:void 0,done:true}}};
/*!
* All material copyright ESRI, All Rights Reserved, unless otherwise specified.
* See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
*/import{r as registerInstance,h,H as Host,g as getElement}from"./index-bd94948c.js";import{g as guid}from"./guid-196bd5ea.js";import{a as defaultOffsetDistance,u as updatePopper,c as createPopper,C as CSS$1}from"./popper-da45ec93.js";import{q as queryElementRoots}from"./dom-e7fa77b9.js";var CSS={container:"container",arrow:"arrow"};var TOOLTIP_DELAY_MS=500;var TOOLTIP_REFERENCE="data-calcite-tooltip-reference";var ARIA_DESCRIBED_BY="aria-describedby";var tooltipCss='@-webkit-keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}@keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 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;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:var(--calcite-animation-timing);animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{-webkit-animation-name:in;animation-name:in}.calcite-animate__in-down{-webkit-animation-name:in-down;animation-name:in-down}.calcite-animate__in-up{-webkit-animation-name:in-up;animation-name:in-up}.calcite-animate__in-scale{-webkit-animation-name:in-scale;animation-name:in-scale}:root{--calcite-popper-transition:var(--calcite-animation-timing)}:host([hidden]){display:none}:host{display:block;position:absolute;z-index:999;-webkit-transform:scale(0);transform:scale(0)}.calcite-popper-anim{position:relative;z-index:1;-webkit-transition:var(--calcite-popper-transition);transition:var(--calcite-popper-transition);visibility:hidden;-webkit-transition-property:visibility, opacity, -webkit-transform;transition-property:visibility, opacity, -webkit-transform;transition-property:transform, visibility, opacity;transition-property:transform, visibility, opacity, -webkit-transform;opacity:0;-webkit-box-shadow:0 0 16px 0 rgba(0, 0, 0, 0.16);box-shadow:0 0 16px 0 rgba(0, 0, 0, 0.16);border-radius:0.25rem}:host([data-popper-placement^=bottom]) .calcite-popper-anim{-webkit-transform:translateY(-5px);transform:translateY(-5px)}:host([data-popper-placement^=top]) .calcite-popper-anim{-webkit-transform:translateY(5px);transform:translateY(5px)}:host([data-popper-placement^=left]) .calcite-popper-anim{-webkit-transform:translateX(5px);transform:translateX(5px)}:host([data-popper-placement^=right]) .calcite-popper-anim{-webkit-transform:translateX(-5px);transform:translateX(-5px)}:host([data-popper-placement]) .calcite-popper-anim--active{opacity:1;visibility:visible;-webkit-transform:translate(0);transform:translate(0)}:host([data-popper-placement][data-popper-escaped]),:host([data-popper-placement][data-popper-reference-hidden]){pointer-events:none;opacity:0}.arrow,.arrow::before{position:absolute;width:8px;height:8px;z-index:-1}.arrow::before{content:"";--tw-shadow:0 4px 8px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -1px rgba(0, 0, 0, 0.04);--tw-shadow-colored:0 4px 8px -1px var(--tw-shadow-color), 0 2px 4px -1px var(--tw-shadow-color);-webkit-box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);-webkit-transform:rotate(45deg);transform:rotate(45deg);background:var(--calcite-ui-foreground-1)}:host([data-popper-placement^=top]) .arrow{bottom:-4px}:host([data-popper-placement^=bottom]) .arrow{top:-4px}:host([data-popper-placement^=left]) .arrow{right:-4px}:host([data-popper-placement^=right]) .arrow{left:-4px}.container{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:start;justify-content:flex-start;border-radius:0.25rem;background-color:var(--calcite-ui-foreground-1);padding-top:0.75rem;padding-bottom:0.75rem;padding-left:1rem;padding-right: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);overflow:hidden;max-width:20rem;max-height:20rem}.calcite-popper-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)}';var Tooltip=function(){function t(t){var e=this;registerInstance(this,t);this.offsetDistance=defaultOffsetDistance;this.offsetSkidding=0;this.open=false;this.overlayPositioning="absolute";this.placement="auto";this.guid="calcite-tooltip-".concat(guid());this.setUpReferenceElement=function(){e.removeReferences();e.effectiveReferenceElement=e.getReferenceElement();var t=e,a=t.el,i=t.referenceElement,o=t.effectiveReferenceElement;if(i&&!o){console.warn("".concat(a.tagName,': reference-element id "').concat(i,'" was not found.'),{el:a})}e.addReferences();e.createPopper()};this.getId=function(){return e.el.id||e.guid};this.addReferences=function(){var t=e.effectiveReferenceElement;if(!t){return}var a=e.getId();t.setAttribute(TOOLTIP_REFERENCE,a);t.setAttribute(ARIA_DESCRIBED_BY,a)};this.removeReferences=function(){var t=e.effectiveReferenceElement;if(!t){return}t.removeAttribute(TOOLTIP_REFERENCE);t.removeAttribute(ARIA_DESCRIBED_BY)};this.show=function(){e.open=true};this.hide=function(){e.open=false}}t.prototype.offsetDistanceOffsetHandler=function(){this.reposition()};t.prototype.offsetSkiddingHandler=function(){this.reposition()};t.prototype.openHandler=function(){this.reposition()};t.prototype.placementHandler=function(){this.reposition()};t.prototype.referenceElementHandler=function(){this.setUpReferenceElement()};t.prototype.componentWillLoad=function(){this.setUpReferenceElement()};t.prototype.componentDidLoad=function(){this.reposition()};t.prototype.disconnectedCallback=function(){this.removeReferences();this.destroyPopper()};t.prototype.reposition=function(){return __awaiter(this,void 0,void 0,(function(){var t,e,a,i,o,n;return __generator(this,(function(r){switch(r.label){case 0:t=this,e=t.popper,a=t.el,i=t.placement;o=this.getModifiers();if(!e)return[3,2];return[4,updatePopper({el:a,modifiers:o,placement:i,popper:e})];case 1:n=r.sent();return[3,3];case 2:n=this.createPopper();r.label=3;case 3:n;return[2]}}))}))};t.prototype.getReferenceElement=function(){var t=this,e=t.referenceElement,a=t.el;return(typeof e==="string"?queryElementRoots(a,{id:e}):e)||null};t.prototype.getModifiers=function(){var t=this,e=t.arrowEl,a=t.offsetDistance,i=t.offsetSkidding;var o={name:"arrow",enabled:true,options:{element:e}};var n={name:"offset",enabled:true,options:{offset:[i,a]}};var r={name:"eventListeners",enabled:this.open};return[o,n,r]};t.prototype.createPopper=function(){this.destroyPopper();var t=this,e=t.el,a=t.placement,i=t.effectiveReferenceElement,o=t.overlayPositioning;var n=this.getModifiers();this.popper=createPopper({el:e,modifiers:n,placement:a,overlayPositioning:o,referenceEl:i})};t.prototype.destroyPopper=function(){var t=this.popper;if(t){t.destroy()}this.popper=null};t.prototype.render=function(){var t;var e=this;var a=this,i=a.effectiveReferenceElement,o=a.label,n=a.open;var r=i&&n;var s=!r;return h(Host,{"aria-hidden":s.toString(),"aria-label":o,"calcite-hydrated-hidden":s,id:this.getId(),role:"tooltip"},h("div",{class:(t={},t[CSS$1.animation]=true,t[CSS$1.animationActive]=r,t)},h("div",{class:CSS.arrow,ref:function(t){return e.arrowEl=t}}),h("div",{class:CSS.container},h("slot",null))))};Object.defineProperty(t.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(t,"watchers",{get:function(){return{offsetDistance:["offsetDistanceOffsetHandler"],offsetSkidding:["offsetSkiddingHandler"],open:["openHandler"],placement:["placementHandler"],referenceElement:["referenceElementHandler"]}},enumerable:false,configurable:true});return t}();Tooltip.style=tooltipCss;var tooltipManagerCss="@-webkit-keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}@keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 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;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:var(--calcite-animation-timing);animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{-webkit-animation-name:in;animation-name:in}.calcite-animate__in-down{-webkit-animation-name:in-down;animation-name:in-down}.calcite-animate__in-up{-webkit-animation-name:in-up;animation-name:in-up}.calcite-animate__in-scale{-webkit-animation-name:in-scale;animation-name:in-scale}:root{--calcite-popper-transition:var(--calcite-animation-timing)}:host([hidden]){display:none}:host{position:relative;display:block}";var TooltipManager=function(){function t(t){var e=this;registerInstance(this,t);this.hoverTimeouts=new WeakMap;this.selector="[".concat(TOOLTIP_REFERENCE,"]");this.queryTooltip=function(t){var a=e.el;if(!t.includes(a)){return null}var i=t.find((function(t){var e;return(e=t===null||t===void 0?void 0:t.hasAttribute)===null||e===void 0?void 0:e.call(t,TOOLTIP_REFERENCE)}));if(!i){return null}var o=i.getAttribute(TOOLTIP_REFERENCE);return queryElementRoots(a,{id:o})};this.clearHoverTimeout=function(t){var a=e.hoverTimeouts;if(a.has(t)){window.clearTimeout(a.get(t));a.delete(t)}};this.closeExistingTooltip=function(){var t=e.tooltipEl;if(t){e.toggleTooltip(t,false)}};this.focusTooltip=function(t){var a=t.tooltip,i=t.value;e.closeExistingTooltip();if(i){e.clearHoverTimeout(a)}e.toggleTooltip(a,i)};this.toggleTooltip=function(t,a){t.open=a;if(a){e.tooltipEl=t}};this.hoverToggle=function(t){var a=t.tooltip,i=t.value;var o=e.hoverTimeouts;o.delete(a);if(i){e.closeExistingTooltip()}e.toggleTooltip(a,i)};this.hoverTooltip=function(t){var a=t.tooltip,i=t.value;e.clearHoverTimeout(a);var o=e.hoverTimeouts;var n=window.setTimeout((function(){return e.hoverToggle({tooltip:a,value:i})}),TOOLTIP_DELAY_MS);o.set(a,n)};this.activeTooltipHover=function(t){var a=e,i=a.tooltipEl,o=a.hoverTimeouts;var n=t.type;if(!i){return}if(n==="mouseover"&&t.composedPath().includes(i)){e.clearHoverTimeout(i)}else if(n==="mouseout"&&!o.has(i)){e.hoverTooltip({tooltip:i,value:false})}};this.hoverEvent=function(t,a){var i=e.queryTooltip(t.composedPath());e.activeTooltipHover(t);if(!i){return}e.hoverTooltip({tooltip:i,value:a})};this.focusEvent=function(t,a){var i=e.queryTooltip(t.composedPath());if(!i||i===e.clickedTooltip){e.clickedTooltip=null;return}e.focusTooltip({tooltip:i,value:a})}}t.prototype.render=function(){return h("slot",null)};t.prototype.keyUpHandler=function(t){if(t.key==="Escape"){var e=this.tooltipEl;if(e){this.clearHoverTimeout(e);this.toggleTooltip(e,false)}}};t.prototype.mouseEnterShow=function(t){this.hoverEvent(t,true)};t.prototype.mouseLeaveHide=function(t){this.hoverEvent(t,false)};t.prototype.clickHandler=function(t){var e=this.queryTooltip(t.composedPath());this.clickedTooltip=e;if(e){this.toggleTooltip(e,false)}};t.prototype.focusShow=function(t){this.focusEvent(t,true)};t.prototype.blurHide=function(t){this.focusEvent(t,false)};Object.defineProperty(t.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});return t}();TooltipManager.style=tooltipManagerCss;export{Tooltip as calcite_tooltip,TooltipManager as calcite_tooltip_manager};