office-ui-fabric-react
Version:
Reusable React components for building experiences for Microsoft 365.
61 lines • 2.54 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
/** @jsxRuntime classic */
/** @jsx withSlots */
var React = require("react");
var Foundation_1 = require("../../Foundation");
var Utilities_1 = require("../../Utilities");
var Stack_styles_1 = require("./Stack.styles");
var StackItem_1 = require("./StackItem/StackItem");
var StackView = function (props) {
var _a = props.as, RootType = _a === void 0 ? 'div' : _a, disableShrink = props.disableShrink, wrap = props.wrap, rest = tslib_1.__rest(props, ["as", "disableShrink", "wrap"]);
Utilities_1.warnDeprecations('Stack', props, {
gap: 'tokens.childrenGap',
maxHeight: 'tokens.maxHeight',
maxWidth: 'tokens.maxWidth',
padding: 'tokens.padding',
});
var stackChildren = React.Children.map(props.children, function (child, index) {
if (!child) {
return null;
}
if (_isStackItem(child)) {
var defaultItemProps = {
shrink: !disableShrink,
};
return React.cloneElement(child, tslib_1.__assign(tslib_1.__assign({}, defaultItemProps), child.props));
}
return child;
});
var nativeProps = Utilities_1.getNativeProps(rest, Utilities_1.htmlElementProperties);
var Slots = Foundation_1.getSlots(props, {
root: RootType,
inner: 'div',
});
if (wrap) {
return (Foundation_1.withSlots(Slots.root, tslib_1.__assign({}, nativeProps),
Foundation_1.withSlots(Slots.inner, null, stackChildren)));
}
return Foundation_1.withSlots(Slots.root, tslib_1.__assign({}, nativeProps), stackChildren);
};
function _isStackItem(item) {
// In theory, we should be able to just check item.type === StackItem.
// However, under certain unclear circumstances (see https://github.com/microsoft/fluentui/issues/10785),
// the object identity is different despite the function implementation being the same.
return (!!item &&
typeof item === 'object' &&
!!item.type &&
// StackItem is generated by createComponent, so we need to check its displayName instead of name
item.type.displayName === StackItem_1.StackItem.displayName);
}
var StackStatics = {
Item: StackItem_1.StackItem,
};
exports.Stack = Foundation_1.createComponent(StackView, {
displayName: 'Stack',
styles: Stack_styles_1.styles,
statics: StackStatics,
});
exports.default = exports.Stack;
//# sourceMappingURL=Stack.js.map
;