@jengaui/tooltip
Version:
Jenga UI Tooltip component in React
22 lines (15 loc) • 2.19 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var focus = require('@react-aria/focus');
var S = require('react');
var overlays = require('@react-aria/overlays');
var tooltip$1 = require('@react-aria/tooltip');
var tooltip = require('@react-stately/tooltip');
var overlays$1 = require('@jengaui/overlays');
var activeZone = require('@jengaui/active-zone');
var core = require('@jengaui/core');
var jsxRuntime = require('react/jsx-runtime');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var S__default = /*#__PURE__*/_interopDefaultLegacy(S);
var c=S__default["default"].createContext({});var H=8,_=0;function B(e){let{children:g,activeWrap:l,crossOffset:f=_,isDisabled:T,isMaterial:u,offset:v=H,trigger:P,delay:a=250,isOpen:b,onOpenChange:O,defaultOpen:y}=e,[t,d]=S.Children.toArray(g),o=tooltip.useTooltipTriggerState({delay:a,...e}),i=S.useRef(null),p=S.useRef(null),{triggerProps:x,tooltipProps:A}=tooltip$1.useTooltipTrigger({isDisabled:T,trigger:P,delay:a,isOpen:b,onOpenChange:O,defaultOpen:y},o,i),{overlayProps:h,arrowProps:C,placement:R}=overlays.useOverlayPosition({placement:e.placement||"top",targetRef:i,overlayRef:p,offset:v,crossOffset:f,isOpen:o.isOpen});if(!l&&typeof t=="string")return console.warn("JengaUIKit: Tooltips are only supported on elements that are both focusable and hoverable. To solve this issue you can: 1) Use active element as a trigger (`Button`, `Link`, etc); 2) Use `activeWrap` attribute to automatically wrap the content; 3) Use `ActiveZone` component to manually wrap the content."),jsxRuntime.jsx(core.Block,{children:t});function E(n){var s;(s=n==null?void 0:n.currentTarget)==null||s.parentNode.click();}return jsxRuntime.jsxs(focus.FocusableProvider,{...x,ref:i,children:[l?jsxRuntime.jsx(activeZone.ActiveZone,{onClick:E,children:t}):t,jsxRuntime.jsx(c.Provider,{value:{state:o,placement:R,ref:p,overlayProps:h,arrowProps:C,minOffset:"var(--gap)",minScale:"1",isMaterial:u,...A},children:jsxRuntime.jsx(overlays$1.OverlayWrapper,{isOpen:o.isOpen,placement:e.placement||"top",children:d})})]})}var te=B;
exports.TooltipTrigger = te;