@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
5 lines • 2.82 kB
JavaScript
/*!
* All material copyright ESRI, All Rights Reserved, unless otherwise specified.
* See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
*/
import{q as queryElementRoots,c as closestElementCrossShadowBoundary}from"./dom-e7fa77b9.js";var labelClickEvent="calciteInternalLabelClick";var labelConnectedEvent="calciteInternalLabelConnected";var labelDisconnectedEvent="calciteInternaLabelDisconnected";var labelTagName="calcite-label";var onLabelClickMap=new WeakMap;var unlabeledComponents=new Set;var findLabelForComponent=function(e){var n=e.id;var t=n&&queryElementRoots(e,{selector:"".concat(labelTagName,'[for="').concat(n,'"]')});if(t){return t}var l=closestElementCrossShadowBoundary(e,labelTagName);if(!l||hasAncestorCustomElements(l,e)){return null}return l};function hasAncestorCustomElements(e,n){var t;var l="custom-element-ancestor-check";var a=function(l){l.stopImmediatePropagation();var a=l.composedPath();t=a.slice(a.indexOf(n),a.indexOf(e))};e.addEventListener(l,a,{once:true});n.dispatchEvent(new CustomEvent(l,{composed:true,bubbles:true}));e.removeEventListener(l,a);var o=t.filter((function(t){return t!==n&&t!==e})).filter((function(e){var n;return(n=e.tagName)===null||n===void 0?void 0:n.includes("-")}));return o.length>0}function connectLabel(e){var n=findLabelForComponent(e.el);if(onLabelClickMap.has(n)){return}var t=onLabelConnected.bind(e);var l=onLabelDisconnected.bind(e);if(n){var a=function(){e.labelEl=n;var t=onLabelClick.bind(e);onLabelClickMap.set(e.labelEl,t);e.labelEl.addEventListener(labelClickEvent,t)};a();unlabeledComponents.delete(e);document.removeEventListener(labelConnectedEvent,t);document.addEventListener(labelDisconnectedEvent,l)}else if(!n&&!unlabeledComponents.has(e)){l();document.removeEventListener(labelDisconnectedEvent,l)}}function disconnectLabel(e){var n=onLabelConnected.bind(e);var t=onLabelDisconnected.bind(e);unlabeledComponents.delete(e);document.removeEventListener(labelConnectedEvent,n);document.removeEventListener(labelDisconnectedEvent,t);if(!e.labelEl){return}var l=onLabelClickMap.get(e.labelEl);e.labelEl.removeEventListener(labelClickEvent,l);onLabelClickMap.delete(e.labelEl)}function getLabelText(e){var n,t;return e.label||((t=(n=e.labelEl)===null||n===void 0?void 0:n.textContent)===null||t===void 0?void 0:t.trim())||""}function onLabelClick(e){if(this.disabled){return}var n=this.el.contains(e.detail.sourceEvent.target);if(n){return}this.onLabelClick(e)}function onLabelConnected(){if(unlabeledComponents.has(this)){connectLabel(this)}}function onLabelDisconnected(){unlabeledComponents.add(this);var e=onLabelConnected.bind(this);document.addEventListener(labelConnectedEvent,e)}export{labelDisconnectedEvent as a,connectLabel as c,disconnectLabel as d,getLabelText as g,labelConnectedEvent as l};