UNPKG

office-ui-fabric-react

Version:

Reusable React components for building experiences for Microsoft 365.

61 lines 2.54 kB
"use strict"; 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