@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.
97 lines (79 loc) • 3.7 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var React = _interopRequireWildcard(require("react"));
var _useRandomId = _interopRequireDefault(require("../../hooks/useRandomId"));
var _useStateWithTimeout5 = _interopRequireDefault(require("../../hooks/useStateWithTimeout"));
var _Portal = _interopRequireDefault(require("../../Portal"));
var _TooltipPrimitive = require("../TooltipPrimitive");
var _DialogContent = _interopRequireDefault(require("./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 = (0, _useStateWithTimeout5.default)(false, 200),
_useStateWithTimeout2 = (0, _slicedToArray2.default)(_useStateWithTimeout, 4),
render = _useStateWithTimeout2[0],
setRender = _useStateWithTimeout2[1],
setRenderWithTimeout = _useStateWithTimeout2[2],
clearRenderTimeout = _useStateWithTimeout2[3];
var _useStateWithTimeout3 = (0, _useStateWithTimeout5.default)(false, 200),
_useStateWithTimeout4 = (0, _slicedToArray2.default)(_useStateWithTimeout3, 3),
shown = _useStateWithTimeout4[0],
setshown = _useStateWithTimeout4[1],
setshownWithTimeout = _useStateWithTimeout4[2];
var mobileDialogID = (0, _useRandomId.default)();
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.default, {
dataTest: dataTest,
shown: shown,
lockScrolling: lockScrolling,
dialogId: mobileDialogID,
onClose: handleOutMobile
}, content);
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_TooltipPrimitive.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.default, {
renderInto: "dialogs"
}, dialog) : dialog));
};
var _default = MobileDialog;
exports.default = _default;