@zag-js/tooltip
Version:
Core logic for the tooltip widget implemented as a state machine
35 lines (34 loc) • 1.38 kB
JavaScript
// src/tooltip.dom.ts
import { queryAll } from "@zag-js/dom-query";
import { isFunction } from "@zag-js/utils";
var getTriggerId = (scope, value) => {
const customId = scope.ids?.trigger;
if (customId != null) return isFunction(customId) ? customId(value) : customId;
return value ? `tooltip:${scope.id}:trigger:${value}` : `tooltip:${scope.id}:trigger`;
};
var getContentId = (scope) => scope.ids?.content ?? `tooltip:${scope.id}:content`;
var getArrowId = (scope) => scope.ids?.arrow ?? `tooltip:${scope.id}:arrow`;
var getPositionerId = (scope) => scope.ids?.positioner ?? `tooltip:${scope.id}:popper`;
var getTriggerEl = (scope) => scope.getById(getTriggerId(scope));
var getContentEl = (scope) => scope.getById(getContentId(scope));
var getPositionerEl = (scope) => scope.getById(getPositionerId(scope));
var getArrowEl = (scope) => scope.getById(getArrowId(scope));
var getTriggerEls = (scope) => queryAll(scope.getRootNode(), `[data-scope="tooltip"][data-part="trigger"][data-ownedby="${scope.id}"]`);
var getActiveTriggerEl = (scope, value) => {
if (value == null) {
return getTriggerEl(scope) ?? getTriggerEls(scope)[0];
}
return scope.getById(getTriggerId(scope, value));
};
export {
getActiveTriggerEl,
getArrowEl,
getArrowId,
getContentEl,
getContentId,
getPositionerEl,
getPositionerId,
getTriggerEl,
getTriggerEls,
getTriggerId
};