@coreui/react-pro
Version:
UI Components Library for React.js
54 lines (50 loc) • 2.42 kB
JavaScript
var tslib_es6 = require('../../node_modules/tslib/tslib.es6.js');
var React = require('react');
var PropTypes = require('prop-types');
var index = require('../../node_modules/classnames/index.js');
var CNavContext = React.createContext({});
var recursiveClone = function (children, id, updateId) {
return React.Children.map(children, function (child, index) {
if (!React.isValidElement(child) ||
// @ts-expect-error the `children` exist in each component. TODO: resolve
(child.type.displayName !== 'CNavGroup' &&
// @ts-expect-error the `children` exist in each component. TODO: resolve
child.type.displayName !== 'CNavLink' &&
// @ts-expect-error the `children` exist in each component. TODO: resolve
child.type.displayName !== 'CNavItem')) {
return child;
}
var _id = id ? (updateId ? "".concat(id, ".").concat(index) : "".concat(id)) : "".concat(index);
if (child.props && child.props.children) {
return React.cloneElement(child, {
idx: _id,
children: recursiveClone(child.props.children, _id,
// @ts-expect-error the `displayName` exist in each component. TODO: resolve
child.type.displayName === 'CNavItem' ? false : true),
});
}
return React.cloneElement(child, {
idx: _id,
});
});
};
var CSidebarNav = React.forwardRef(function (_a, ref) {
var children = _a.children, _b = _a.as, Component = _b === void 0 ? 'ul' : _b, className = _a.className, rest = tslib_es6.__rest(_a, ["children", "as", "className"]);
var _c = React.useState(''), visibleGroup = _c[0], setVisibleGroup = _c[1];
var CNavContextValues = {
visibleGroup: visibleGroup,
setVisibleGroup: setVisibleGroup,
};
return (React.createElement(CNavContext.Provider, { value: CNavContextValues },
React.createElement(Component, tslib_es6.__assign({ className: index.default('sidebar-nav', className), ref: ref }, rest), recursiveClone(children))));
});
CSidebarNav.propTypes = {
as: PropTypes.elementType,
children: PropTypes.node,
className: PropTypes.string,
};
CSidebarNav.displayName = 'CSidebarNav';
exports.CNavContext = CNavContext;
exports.CSidebarNav = CSidebarNav;
//# sourceMappingURL=CSidebarNav.js.map
;