@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.
105 lines (86 loc) • 3.12 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
exports.__esModule = 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("../utils/layout/consts");
var _consts2 = require("../utils/mediaQuery/consts");
var _layout = require("../utils/layout");
var _shouldUseFlex = _interopRequireDefault(require("./helpers/shouldUseFlex"));
var _getViewportFlexStyles = _interopRequireDefault(require("./helpers/getViewportFlexStyles"));
var _getChildrenMargin = _interopRequireDefault(require("./helpers/getChildrenMargin"));
const StyledStack = (0, _styledComponents.default)(({
className,
element: Element,
children,
dataTest
}) => /*#__PURE__*/React.createElement(Element, {
className: className,
"data-test": dataTest
}, children)).withConfig({
displayName: "Stack__StyledStack",
componentId: "sc-oaff2v-0"
})(["", ";"], props => _consts2.DEVICES.map((viewport, index, devices) => viewport in _mediaQuery.default ? _mediaQuery.default[viewport]((0, _styledComponents.css)(["", ";", ""], (0, _layout.isDefined)(props[viewport]) && (0, _getViewportFlexStyles.default)(viewport), (0, _getChildrenMargin.default)({
viewport,
index,
devices
}))) : viewport === "smallMobile" && (0, _styledComponents.css)(["", ";", ""], (0, _getViewportFlexStyles.default)(viewport), (0, _getChildrenMargin.default)({
viewport,
index,
devices
})))); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198
StyledStack.defaultProps = {
theme: _defaultTheme.default
};
const Stack = props => {
const {
dataTest,
inline = false,
spacing = _consts.SPACINGS.MEDIUM,
align = _consts.ALIGNS.START,
justify = _consts.JUSTIFY.START,
grow = true,
wrap = false,
shrink = false,
basis,
spaceAfter,
children,
mediumMobile,
largeMobile,
tablet,
desktop,
largeDesktop,
as = "div"
} = props; // turn on FLEX automatically or manually with prop flex
const flex = (0, _shouldUseFlex.default)(props); // when flex - use direction, otherwise column because it's block element
const direction = props.direction || (flex ? _consts.DIRECTIONS.ROW : _consts.DIRECTIONS.COLUMN);
const smallMobile = {
direction,
align,
justify,
wrap,
grow,
basis,
inline,
shrink,
spacing,
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;