UNPKG

@kiwicom/orbit-components

Version:

Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.

124 lines (104 loc) 4.77 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.StyledTooltipChildren = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireWildcard(require("styled-components")); var _consts = require("./consts"); var _Text = require("../../Text"); var _Portal = _interopRequireDefault(require("../../Portal")); var _randomID = _interopRequireDefault(require("../../utils/randomID")); var _TooltipContent = _interopRequireDefault(require("./components/TooltipContent")); var _useStateWithTimeout3 = _interopRequireDefault(require("../../hooks/useStateWithTimeout")); var StyledTooltipChildren = _styledComponents.default.span.withConfig({ displayName: "TooltipPrimitive__StyledTooltipChildren", componentId: "sc-1xrafc8-0" })(["display:inline-flex;&:focus:active{outline:none;}", ";[disabled]{pointer-events:none;}"], function (_ref) { var enabled = _ref.enabled, removeUnderlinedText = _ref.removeUnderlinedText; return enabled && !removeUnderlinedText && (0, _styledComponents.css)(["", "{display:inline-block;text-decoration:underline;text-decoration:underline currentColor dotted;}"], _Text.StyledText); }); exports.StyledTooltipChildren = StyledTooltipChildren; var TooltipPrimitive = function TooltipPrimitive(_ref2) { var children = _ref2.children, _ref2$enabled = _ref2.enabled, enabled = _ref2$enabled === void 0 ? true : _ref2$enabled, _ref2$tabIndex = _ref2.tabIndex, tabIndex = _ref2$tabIndex === void 0 ? "0" : _ref2$tabIndex, dataTest = _ref2.dataTest, _ref2$size = _ref2.size, size = _ref2$size === void 0 ? _consts.SIZE_OPTIONS.SMALL : _ref2$size, content = _ref2.content, preferredPosition = _ref2.preferredPosition, preferredAlign = _ref2.preferredAlign, _ref2$stopPropagation = _ref2.stopPropagation, stopPropagation = _ref2$stopPropagation === void 0 ? false : _ref2$stopPropagation, removeUnderlinedText = _ref2.removeUnderlinedText; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), shown = _useState2[0], setShown = _useState2[1]; var _useStateWithTimeout = (0, _useStateWithTimeout3.default)(false, 200), _useStateWithTimeout2 = (0, _slicedToArray2.default)(_useStateWithTimeout, 4), render = _useStateWithTimeout2[0], setRender = _useStateWithTimeout2[1], setRenderWithTimeout = _useStateWithTimeout2[2], clearRenderTimeout = _useStateWithTimeout2[3]; var tooltipId = (0, _react.useMemo)(function () { return (0, _randomID.default)("TooltipID"); }, []); var container = (0, _react.useRef)(null); var handleIn = (0, _react.useCallback)(function () { setRender(true); setShown(true); clearRenderTimeout(); }, [clearRenderTimeout, setRender]); var handleOut = (0, _react.useCallback)(function () { setShown(false); setRenderWithTimeout(false); }, [setRenderWithTimeout]); var handleInMobile = (0, _react.useCallback)(function (ev) { if (stopPropagation) { ev.stopPropagation(); } ev.preventDefault(); setRender(true); clearRenderTimeout(); }, [clearRenderTimeout, setRender, stopPropagation]); var handleOutMobile = (0, _react.useCallback)(function () { setRenderWithTimeout(false); }, [setRenderWithTimeout]); if (!enabled) return children; return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(StyledTooltipChildren, { onMouseEnter: handleIn, onMouseLeave: handleOut, onClick: handleInMobile, onFocus: handleIn, onBlur: handleOut, ref: container, "aria-describedby": enabled ? tooltipId : undefined, tabIndex: enabled ? tabIndex : undefined, enabled: enabled, removeUnderlinedText: removeUnderlinedText }, children), enabled && render && /*#__PURE__*/_react.default.createElement(_Portal.default, { renderInto: "tooltips" }, /*#__PURE__*/_react.default.createElement(_TooltipContent.default, { parent: children, dataTest: dataTest, shown: shown, size: size, tooltipId: tooltipId, onClose: handleOut, onCloseMobile: handleOutMobile, onEnter: handleIn, preferredPosition: preferredPosition, preferredAlign: preferredAlign, containerRef: container }, content))); }; var _default = TooltipPrimitive; exports.default = _default;