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.

180 lines (142 loc) 7.92 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.MobileHeader = exports.StyledModalHeader = exports.ModalHeading = void 0; var React = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireWildcard(require("styled-components")); var _transition = _interopRequireDefault(require("../../utils/transition")); var _Text = _interopRequireDefault(require("../../Text")); var _Heading = require("../../Heading"); var _consts = require("../../Heading/consts"); var _defaultTheme = _interopRequireDefault(require("../../defaultTheme")); var _mediaQuery = _interopRequireDefault(require("../../utils/mediaQuery")); var _ModalSection = require("../ModalSection"); var _rtl = require("../../utils/rtl"); var _ModalContext = require("../ModalContext"); var _useModalContextFunctions = _interopRequireDefault(require("../helpers/useModalContextFunctions")); const getModalHeading = (type, token) => ({ theme }) => { return (0, _Heading.getHeadingToken)(token, type)({ theme }); }; const ModalHeading = _styledComponents.default.h2.withConfig({ displayName: "ModalHeader__ModalHeading", componentId: "sc-1wm3wwv-0" })(["", ""], ({ theme }) => (0, _styledComponents.css)(["margin:0;font-size:", ";font-weight:", ";line-height:", ";color:", ";", ";"], getModalHeading(_consts.TYPE_OPTIONS.TITLE2, _consts.TOKENS.sizeHeading), getModalHeading(_consts.TYPE_OPTIONS.TITLE2, _consts.TOKENS.weightHeading), getModalHeading(_consts.TYPE_OPTIONS.TITLE2, _consts.TOKENS.lineHeight), theme.orbit.colorHeading, _mediaQuery.default.largeMobile((0, _styledComponents.css)(["font-size:", ";font-weight:", ";line-height:", ";"], getModalHeading(_consts.TYPE_OPTIONS.TITLE1, _consts.TOKENS.sizeHeading), getModalHeading(_consts.TYPE_OPTIONS.TITLE1, _consts.TOKENS.weightHeading), getModalHeading(_consts.TYPE_OPTIONS.TITLE1, _consts.TOKENS.lineHeight))))); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 exports.ModalHeading = ModalHeading; ModalHeading.defaultProps = { theme: _defaultTheme.default }; const ModalTitle = _styledComponents.default.div.withConfig({ displayName: "ModalHeader__ModalTitle", componentId: "sc-1wm3wwv-1" })(["", ""], ({ theme, illustration }) => (0, _styledComponents.css)(["margin-top:", ";", "{padding-", ":", ";}", ";"], illustration && theme.orbit.spaceMedium, ModalHeading, _rtl.right, theme.orbit.spaceXLarge, _mediaQuery.default.desktop((0, _styledComponents.css)(["", "{padding:0;}"], ModalHeading)))); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 ModalTitle.defaultProps = { theme: _defaultTheme.default }; const ModalDescription = _styledComponents.default.div.withConfig({ displayName: "ModalHeader__ModalDescription", componentId: "sc-1wm3wwv-2" })(["margin-top:", ";"], ({ theme }) => theme.orbit.spaceXSmall); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 ModalDescription.defaultProps = { theme: _defaultTheme.default }; const getModalHeaderPadding = (desktop = false) => ({ theme, suppressed }) => { if (desktop) { if (suppressed) { return theme.orbit.spaceXLarge; } return `${theme.orbit.spaceXLarge} ${theme.orbit.spaceXLarge} 0 ${theme.orbit.spaceXLarge}`; } if (suppressed) { return `${theme.orbit.spaceXLarge} ${theme.orbit.spaceMedium}`; } return `${theme.orbit.spaceLarge} ${theme.orbit.spaceMedium} 0 ${theme.orbit.spaceMedium}`; }; const StyledModalHeader = _styledComponents.default.div.withConfig({ displayName: "ModalHeader__StyledModalHeader", componentId: "sc-1wm3wwv-3" })(["", ""], ({ theme, suppressed, isMobileFullPage }) => (0, _styledComponents.css)(["width:100%;display:block;padding:", ";border-top-left-radius:", ";border-top-right-radius:", ";box-sizing:border-box;background-color:", ";& ~ ", ":first-of-type{border-top:", ";border-top-left-radius:0;border-top-right-radius:0;margin-top:", ";}", ";"], props => (0, _rtl.rtlSpacing)(getModalHeaderPadding()(props)), !isMobileFullPage && "12px", !isMobileFullPage && "12px", suppressed ? theme.orbit.paletteCloudLight : theme.orbit.paletteWhite, _ModalSection.StyledModalSection, suppressed && `1px solid ${theme.orbit.paletteCloudNormal}`, suppressed && "0!important", _mediaQuery.default.largeMobile((0, _styledComponents.css)(["padding:", ";& ~ ", ":first-of-type{border-top-left-radius:0;border-top-right-radius:0;}"], props => (0, _rtl.rtlSpacing)(getModalHeaderPadding(true)(props)), _ModalSection.StyledModalSection)))); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 exports.StyledModalHeader = StyledModalHeader; StyledModalHeader.defaultProps = { theme: _defaultTheme.default }; const MobileHeader = _styledComponents.default.div.withConfig({ displayName: "ModalHeader__MobileHeader", componentId: "sc-1wm3wwv-4" })(["", ""], ({ theme, isMobileFullPage }) => (0, _styledComponents.css)(["display:inline-block;position:fixed;visibility:hidden;height:52px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;top:", ";", ":48px;", ":0;font-family:", ";font-weight:", ";font-size:18px;color:", ";line-height:52px;box-sizing:border-box;padding:", ";opacity:0;transition:", ";z-index:800;", ";"], isMobileFullPage ? "0" : "16px", _rtl.right, _rtl.left, theme.orbit.fontFamily, theme.orbit.fontWeightHeadingDisplay, theme.orbit.colorHeading, (0, _rtl.rtlSpacing)(`0 0 0 ${theme.orbit.spaceLarge}`), (0, _transition.default)(["top", "opacity", "visibility"], "fast", "ease-in-out"), _mediaQuery.default.largeMobile((0, _styledComponents.css)(["left:auto;right:auto;padding:0;"])))); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 exports.MobileHeader = MobileHeader; MobileHeader.defaultProps = { theme: _defaultTheme.default }; const StyledModalHeaderContent = _styledComponents.default.div.withConfig({ displayName: "ModalHeader__StyledModalHeaderContent", componentId: "sc-1wm3wwv-5" })(["margin-top:", ";"], ({ description }) => description ? "32px" : "16px"); const ModalHeader = ({ illustration, suppressed, children, description, title, dataTest }) => { const { setHasModalTitle, hasMobileHeader, isMobileFullPage, titleID } = React.useContext(_ModalContext.ModalContext); (0, _useModalContextFunctions.default)(); React.useEffect(() => { if (title) setHasModalTitle === null || setHasModalTitle === void 0 ? void 0 : setHasModalTitle(true); return () => { setHasModalTitle === null || setHasModalTitle === void 0 ? void 0 : setHasModalTitle(false); }; }, [title, setHasModalTitle]); const hasHeader = title || description; return /*#__PURE__*/React.createElement(StyledModalHeader, { illustration: !!illustration, suppressed: suppressed, "data-test": dataTest, isMobileFullPage: isMobileFullPage }, illustration, hasHeader && /*#__PURE__*/React.createElement(ModalTitle, { illustration: !!illustration }, title && /*#__PURE__*/React.createElement(ModalHeading, { id: titleID }, title), description && /*#__PURE__*/React.createElement(ModalDescription, null, /*#__PURE__*/React.createElement(_Text.default, { size: "large", as: "div" }, description))), children && /*#__PURE__*/React.createElement(StyledModalHeaderContent, { description: !!description }, children), title && hasMobileHeader && /*#__PURE__*/React.createElement(MobileHeader, { role: "presentation", isMobileFullPage: isMobileFullPage }, title)); }; var _default = ModalHeader; exports.default = _default;