@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.
69 lines (62 loc) • 2.73 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import React, { useCallback, useMemo } 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$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;
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 = useMemo(function () {
return randomID("mobileDialogID");
}, []);
var handleInMobile = useCallback(function (ev) {
ev.preventDefault();
if (stopPropagation) {
ev.stopPropagation();
}
setRender(true);
setshownWithTimeout(true);
clearRenderTimeout();
}, [clearRenderTimeout, setRender, setshownWithTimeout, stopPropagation]);
var handleOutMobile = useCallback(function () {
setshown(false);
setRenderWithTimeout(false);
}, [setRenderWithTimeout, setshown]);
if (!enabled) return children;
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
}, children), enabled && render && /*#__PURE__*/React.createElement(Portal, {
renderInto: "dialogs"
}, /*#__PURE__*/React.createElement(DialogContent, {
dataTest: dataTest,
shown: shown,
dialogId: mobileDialogID,
onClose: handleOutMobile
}, content)));
};
export default MobileDialog;