@coreui/react-pro
Version:
UI Components Library for React.js
34 lines (31 loc) • 1.4 kB
JavaScript
import { __rest } 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';
const CNavLink = forwardRef((_a, ref) => {
var { children, className, idx } = _a, rest = __rest(_a, ["children", "className", "idx"]);
const navLinkRef = useRef(null);
const forkedRef = useForkedRef(ref, navLinkRef);
const { setVisibleGroup } = useContext(CSidebarNavContext);
useEffect(() => {
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, Object.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