UNPKG

@coreui/react-pro

Version:

UI Components Library for React.js

55 lines (51 loc) 2.03 kB
'use strict'; var tslib_es6 = require('../../node_modules/tslib/tslib.es6.js'); var React = require('react'); var PropTypes = require('prop-types'); var index = require('../../_virtual/index.js'); var CSidebarNavContext = require('./CSidebarNavContext.js'); const isNavElement = (child) => { if (!React.isValidElement(child)) return false; const type = child.type; return (type.displayName === 'CNavGroup' || type.displayName === 'CNavLink' || type.displayName === 'CNavItem'); }; const recursiveClone = (children, id, updateId) => { return React.Children.map(children, (child, index) => { if (!isNavElement(child)) { return child; } const _id = id ? (updateId ? `${id}.${index}` : `${id}`) : `${index}`; if (child.props.children) { const type = child.type; const shouldUpdateId = type.displayName !== 'CNavItem'; return React.cloneElement(child, { idx: _id, children: recursiveClone(child.props.children, _id, shouldUpdateId), }); } return React.cloneElement(child, { idx: _id, }); }); }; const CSidebarNav = React.forwardRef((_a, ref) => { var { children, as: Component = 'ul', className } = _a, rest = tslib_es6.__rest(_a, ["children", "as", "className"]); const [visibleGroup, setVisibleGroup] = React.useState(''); const CNavContextValues = { visibleGroup, setVisibleGroup, }; return (React.createElement(CSidebarNavContext.CSidebarNavContext.Provider, { value: CNavContextValues }, React.createElement(Component, Object.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.CSidebarNav = CSidebarNav; //# sourceMappingURL=CSidebarNav.js.map