@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
67 lines (66 loc) • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _clsx = _interopRequireDefault(require("clsx"));
var _Space = _interopRequireDefault(require("../space/Space.js"));
var _withComponentMarkers = _interopRequireDefault(require("../../shared/helpers/withComponentMarkers.js"));
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function FlexItem(props) {
const {
element = 'div',
className,
grow,
shrink,
alignSelf,
span,
style,
children,
...rest
} = props;
const cn = (0, _clsx.default)('dnb-flex-item', grow && 'dnb-flex-item--grow', shrink && 'dnb-flex-item--shrink', alignSelf && `dnb-flex-item--align-self-${alignSelf}`, span && 'dnb-flex-item--responsive');
const isValidSpan = _react.default.useCallback(span => {
return typeof span === 'number' || span === 'auto';
}, []);
const spaceStyles = {};
if (span) {
if (isValidSpan(span)) {
spaceStyles['--span--default'] = span;
} else {
const spans = span;
for (const key in spans) {
if (isValidSpan(span[key])) {
spaceStyles[`--${key}`] = span[key];
}
}
}
}
if (Object.keys(spaceStyles).length) {
return (0, _jsxRuntime.jsx)(_Space.default, {
element: element,
className: cn,
style: spaceStyles,
children: (0, _jsxRuntime.jsx)(_Space.default, {
className: (0, _clsx.default)('dnb-flex-item__spacer', className),
style: style,
...rest,
children: children
})
});
}
return (0, _jsxRuntime.jsx)(_Space.default, {
element: element,
className: (0, _clsx.default)(cn, className),
style: style,
...rest,
children: children
});
}
(0, _withComponentMarkers.default)(FlexItem, {
_supportsSpacingProps: true
});
var _default = exports.default = FlexItem;
//# sourceMappingURL=Item.js.map