UNPKG

@coreui/react-pro

Version:

UI Components Library for React.js

34 lines (31 loc) 1.45 kB
import { __rest, __assign } from '../../node_modules/tslib/tslib.es6.js'; import React, { forwardRef, useRef, useContext, useEffect } from 'react'; import PropTypes from 'prop-types'; import classNames from '../../_virtual/index.js'; import { CLink } from '../link/CLink.js'; import { CSidebarNavContext } from '../sidebar/CSidebarNavContext.js'; import '@popperjs/core'; import { useForkedRef } from '../../hooks/useForkedRef.js'; var CNavLink = forwardRef(function (_a, ref) { var children = _a.children, className = _a.className, idx = _a.idx, rest = __rest(_a, ["children", "className", "idx"]); var navLinkRef = useRef(null); var forkedRef = useForkedRef(ref, navLinkRef); var setVisibleGroup = useContext(CSidebarNavContext).setVisibleGroup; useEffect(function () { var _a; rest.active = (_a = navLinkRef.current) === null || _a === void 0 ? void 0 : _a.classList.contains('active'); idx && rest.active && setVisibleGroup(idx); }, [rest.active, className]); return (React.createElement(CLink, __assign({ className: classNames('nav-link', className) }, rest, { ref: forkedRef }), children)); }); CNavLink.propTypes = { active: PropTypes.bool, as: PropTypes.elementType, children: PropTypes.node, className: PropTypes.string, disabled: PropTypes.bool, idx: PropTypes.string, }; CNavLink.displayName = 'CNavLink'; export { CNavLink }; //# sourceMappingURL=CNavLink.js.map