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.

81 lines (73 loc) 3.18 kB
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import * as React from "react"; import randomID from "../../utils/randomID"; import useStateWithTimeout from "../../hooks/useStateWithTimeout"; import Portal from "../../Portal"; import { StyledTooltipChildren } from "../TooltipPrimitive"; import DialogContent from "./components/DialogContent"; var MobileDialog = function MobileDialog(_ref) { var children = _ref.children, _ref$enabled = _ref.enabled, enabled = _ref$enabled === void 0 ? true : _ref$enabled, _ref$renderInPortal = _ref.renderInPortal, renderInPortal = _ref$renderInPortal === void 0 ? true : _ref$renderInPortal, _ref$tabIndex = _ref.tabIndex, tabIndex = _ref$tabIndex === void 0 ? "0" : _ref$tabIndex, dataTest = _ref.dataTest, content = _ref.content, _ref$stopPropagation = _ref.stopPropagation, stopPropagation = _ref$stopPropagation === void 0 ? false : _ref$stopPropagation, removeUnderlinedText = _ref.removeUnderlinedText, _ref$block = _ref.block, block = _ref$block === void 0 ? false : _ref$block, lockScrolling = _ref.lockScrolling; var _useStateWithTimeout = useStateWithTimeout(false, 200), _useStateWithTimeout2 = _slicedToArray(_useStateWithTimeout, 4), render = _useStateWithTimeout2[0], setRender = _useStateWithTimeout2[1], setRenderWithTimeout = _useStateWithTimeout2[2], clearRenderTimeout = _useStateWithTimeout2[3]; var _useStateWithTimeout3 = useStateWithTimeout(false, 200), _useStateWithTimeout4 = _slicedToArray(_useStateWithTimeout3, 3), shown = _useStateWithTimeout4[0], setshown = _useStateWithTimeout4[1], setshownWithTimeout = _useStateWithTimeout4[2]; var mobileDialogID = React.useMemo(function () { return randomID("mobileDialogID"); }, []); var handleInMobile = React.useCallback(function (ev) { ev.preventDefault(); if (stopPropagation) { ev.stopPropagation(); } setRender(true); setshownWithTimeout(true); clearRenderTimeout(); }, [clearRenderTimeout, setRender, setshownWithTimeout, stopPropagation]); var handleOutMobile = React.useCallback(function (ev) { if (stopPropagation) { ev.stopPropagation(); } setshown(false); setRenderWithTimeout(false); }, [setRenderWithTimeout, setshown, stopPropagation]); if (!enabled) return children; var dialog = /*#__PURE__*/React.createElement(DialogContent, { dataTest: dataTest, shown: shown, lockScrolling: lockScrolling, dialogId: mobileDialogID, onClose: handleOutMobile }, content); return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StyledTooltipChildren, { onClick: handleInMobile, "aria-describedby": enabled ? mobileDialogID : undefined, tabIndex: enabled ? tabIndex : undefined, enabled: enabled, removeUnderlinedText: removeUnderlinedText, block: block }, children), enabled && render && (renderInPortal ? /*#__PURE__*/React.createElement(Portal, { renderInto: "dialogs" }, dialog) : dialog)); }; export default MobileDialog;