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.

117 lines (99 loc) 4.16 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var React = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireWildcard(require("styled-components")); var _defaultTheme = _interopRequireDefault(require("../defaultTheme")); var _mediaQuery = _interopRequireDefault(require("../utils/mediaQuery")); var _consts = require("./consts"); var _consts2 = require("../utils/mediaQuery/consts"); var _isDefined = _interopRequireDefault(require("./helpers/isDefined")); var _shouldUseFlex = _interopRequireDefault(require("./helpers/shouldUseFlex")); var _getViewportFlexStyles = _interopRequireDefault(require("./helpers/getViewportFlexStyles")); var _getChildrenMargin = _interopRequireDefault(require("./helpers/getChildrenMargin")); var StyledStack = (0, _styledComponents.default)(function (_ref) { var className = _ref.className, Element = _ref.element, children = _ref.children, dataTest = _ref.dataTest; return /*#__PURE__*/React.createElement(Element, { className: className, "data-test": dataTest }, children); }).withConfig({ displayName: "Stack__StyledStack", componentId: "sc-1t576ow-0" })(["", ";"], function (props) { return _consts2.DEVICES.map(function (viewport, index, devices) { return viewport in _mediaQuery.default ? _mediaQuery.default[viewport]((0, _styledComponents.css)(["", ";", ""], (0, _isDefined.default)(props[viewport]) && (0, _getViewportFlexStyles.default)(viewport), (0, _getChildrenMargin.default)({ viewport: viewport, index: index, devices: devices }))) : viewport === "smallMobile" && (0, _styledComponents.css)(["", ";", ""], (0, _getViewportFlexStyles.default)(viewport), (0, _getChildrenMargin.default)({ viewport: viewport, index: index, devices: devices })); }); }); StyledStack.defaultProps = { theme: _defaultTheme.default }; var Stack = function Stack(props) { var dataTest = props.dataTest, _props$inline = props.inline, inline = _props$inline === void 0 ? false : _props$inline, _props$spacing = props.spacing, spacing = _props$spacing === void 0 ? _consts.SPACINGS.NATURAL : _props$spacing, _props$align = props.align, align = _props$align === void 0 ? _consts.ALIGNS.START : _props$align, _props$justify = props.justify, justify = _props$justify === void 0 ? _consts.JUSTIFY.START : _props$justify, _props$grow = props.grow, grow = _props$grow === void 0 ? true : _props$grow, _props$wrap = props.wrap, wrap = _props$wrap === void 0 ? false : _props$wrap, _props$shrink = props.shrink, shrink = _props$shrink === void 0 ? false : _props$shrink, basis = props.basis, spaceAfter = props.spaceAfter, children = props.children, mediumMobile = props.mediumMobile, largeMobile = props.largeMobile, tablet = props.tablet, desktop = props.desktop, largeDesktop = props.largeDesktop, _props$as = props.as, as = _props$as === void 0 ? "div" : _props$as; // turn on FLEX automatically or manually with prop flex var flex = (0, _shouldUseFlex.default)(props); // when flex - use direction, otherwise column because it's block element var direction = props.direction || (flex ? _consts.DIRECTIONS.ROW : _consts.DIRECTIONS.COLUMN); var smallMobile = { direction: direction, align: align, justify: justify, wrap: wrap, grow: grow, basis: basis, inline: inline, shrink: shrink, spacing: spacing, spaceAfter: spaceAfter }; return /*#__PURE__*/React.createElement(StyledStack, { dataTest: dataTest, flex: flex, smallMobile: smallMobile, mediumMobile: mediumMobile, largeMobile: largeMobile, tablet: tablet, desktop: desktop, largeDesktop: largeDesktop, element: as }, children); }; var _default = Stack; exports.default = _default;