@fluentui/react-northstar
Version:
A themable React component library.
79 lines (78 loc) • 3.07 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _map from "lodash/map";
import _isNil from "lodash/isNil";
import * as customPropTypes from '@fluentui/react-proptypes';
import * as React from 'react';
import { childrenExist, commonPropTypes, rtlTextContainer, createShorthandFactory } from '../../utils';
import { Reaction } from './Reaction';
import { getElementType, useUnhandledProps, useFluentContext, useAccessibility, useTelemetry, useStyles } from '@fluentui/react-bindings';
export var reactionGroupClassName = 'ui-reactions';
/**
* A ReactionGroup groups multiple Reaction elements.
*/
export var ReactionGroup = /*#__PURE__*/function () {
var ReactionGroup = /*#__PURE__*/React.forwardRef(function (props, ref) {
var context = useFluentContext();
var _useTelemetry = useTelemetry(ReactionGroup.displayName, context.telemetry),
setStart = _useTelemetry.setStart,
setEnd = _useTelemetry.setEnd;
setStart();
var children = props.children,
items = props.items,
content = props.content,
className = props.className,
design = props.design,
styles = props.styles,
variables = props.variables;
var ElementType = getElementType(props);
var unhandledProps = useUnhandledProps(ReactionGroup.handledProps, props);
var getA11yProps = useAccessibility(props.accessibility, {
debugName: ReactionGroup.displayName,
rtl: context.rtl
});
var _useStyles = useStyles(ReactionGroup.displayName, {
className: reactionGroupClassName,
mapPropsToInlineStyles: function mapPropsToInlineStyles() {
return {
className: className,
design: design,
styles: styles,
variables: variables
};
},
rtl: context.rtl
}),
classes = _useStyles.classes,
resolvedStyles = _useStyles.styles;
var element = _isNil(items) ? /*#__PURE__*/React.createElement(ElementType, _extends({}, getA11yProps('root', Object.assign({
className: classes.root,
ref: ref
}, unhandledProps)), rtlTextContainer.getAttributes({
forElements: [children, content]
})), childrenExist(children) ? children : content) : /*#__PURE__*/React.createElement(ElementType, _extends({}, unhandledProps, {
className: classes.root
}), _map(items, function (reaction) {
return Reaction.create(reaction, {
defaultProps: function defaultProps() {
return {
styles: resolvedStyles.reaction
};
}
});
}));
setEnd();
return element;
});
ReactionGroup.displayName = 'ReactionGroup';
ReactionGroup.propTypes = Object.assign({}, commonPropTypes.createCommon(), {
items: customPropTypes.collectionShorthand
});
ReactionGroup.handledProps = Object.keys(ReactionGroup.propTypes);
ReactionGroup.create = createShorthandFactory({
Component: ReactionGroup,
mappedProp: 'content',
mappedArrayProp: 'items'
});
return ReactionGroup;
}();
//# sourceMappingURL=ReactionGroup.js.map