@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
59 lines (58 loc) • 2.12 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.js"));
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 FlexItem(props) {
const {
element = 'div',
className,
grow,
shrink,
alignSelf,
size,
style,
children,
...rest
} = props;
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 isValidSize = _react.default.useCallback(size => {
return typeof size === 'number' || size === 'auto';
}, []);
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);
}
FlexItem._supportsSpacingProps = true;
var _default = exports.default = FlexItem;
//# sourceMappingURL=Item.js.map