@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
JavaScript
"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;