@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
62 lines (61 loc) • 2.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _classnames = _interopRequireDefault(require("classnames"));
var _Space = _interopRequireDefault(require("../space/Space"));
const _excluded = ["element", "className", "grow", "shrink", "alignSelf", "size", "style", "children"];
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
function FlexItem(props) {
const {
element = 'div',
className,
grow,
shrink,
alignSelf,
size,
style,
children
} = props,
rest = _objectWithoutProperties(props, _excluded);
const cn = (0, _classnames.default)('dnb-flex-item', grow && 'dnb-flex-item--grow', shrink && 'dnb-flex-item--shrink', alignSelf && `dnb-flex-item--align-self-${alignSelf}`, size && 'dnb-flex-item--responsive');
const spaceStyles = {};
if (size) {
if (isValidSize(size)) {
spaceStyles['--size--default'] = size;
} else {
const sizes = size;
for (const key in sizes) {
if (isValidSize(size[key])) {
spaceStyles[`--${key}`] = size[key];
}
}
}
}
if (Object.keys(spaceStyles).length) {
return _react.default.createElement(_Space.default, {
element: element,
className: cn,
style: spaceStyles
}, _react.default.createElement(_Space.default, _extends({
className: (0, _classnames.default)('dnb-flex-item__spacer', className),
style: style
}, rest), children));
}
return _react.default.createElement(_Space.default, _extends({
element: element,
className: (0, _classnames.default)(cn, className),
style: style
}, rest), children);
function isValidSize(size) {
return typeof size === 'number' || size === 'auto';
}
}
FlexItem._supportsSpacingProps = true;
var _default = exports.default = FlexItem;
//# sourceMappingURL=Item.js.map