UNPKG

@coreui/react-pro

Version:

UI Components Library for React.js

54 lines (50 loc) 2.42 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('../../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