@momentum-ui/react-collaboration
Version:
Cisco Momentum UI Framework for React Collaboration Applications
49 lines • 2.29 kB
JavaScript
/* eslint-disable @typescript-eslint/ban-types */
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
import React, { useCallback } from 'react';
import { STYLE } from './MenuSection.constants';
import './MenuSection.style.scss';
import MenuItem from '../MenuItem';
import { useMenuSection } from '@react-aria/menu';
import ContentSeparator from '../ContentSeparator';
/**
* @deprecated Use the equivalent from momentum.design (NPM: `@momentum-design/components/dist/react`)
*/
var MenuSection = function (props) {
var item = props.item, state = props.state, onAction = props.onAction;
var _a = useMenuSection({
heading: item.rendered,
'aria-label': item['aria-label'],
}), itemProps = _a.itemProps, headingProps = _a.headingProps, groupProps = _a.groupProps;
var renderItems = useCallback(function () {
return Array.from(item.childNodes).map(function (node) {
var _a;
if ((_a = node.props) === null || _a === void 0 ? void 0 : _a._isSeparator) {
var props_1 = __assign({}, node.props);
delete props_1._isSeparator;
return React.createElement(ContentSeparator, __assign({}, props_1));
}
return React.createElement(MenuItem, { key: node.key, item: node, state: state, onAction: onAction });
});
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [state]);
return (React.createElement("div", __assign({}, itemProps),
!React.isValidElement(item.rendered) && item.rendered ? (React.createElement("span", __assign({ className: STYLE.header }, headingProps), item.rendered)) : (item.rendered && React.cloneElement(item.rendered, __assign({}, headingProps))),
React.createElement("ul", __assign({}, groupProps, { className: STYLE.wrapper }), renderItems())));
};
/**
* @internal
* The MenuSection component.
*/
export default MenuSection;
//# sourceMappingURL=MenuSection.js.map