@coreui/react
Version:
UI Components Library for React.js
36 lines (32 loc) • 1.51 kB
JavaScript
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 CLink = require('../link/CLink.js');
var CSidebarNavContext = require('../sidebar/CSidebarNavContext.js');
var useForkedRef = require('../../hooks/useForkedRef.js');
require('@popperjs/core');
var CNavLink = React.forwardRef(function (_a, ref) {
var children = _a.children, className = _a.className, idx = _a.idx, rest = tslib_es6.__rest(_a, ["children", "className", "idx"]);
var navLinkRef = React.useRef(null);
var forkedRef = useForkedRef.useForkedRef(ref, navLinkRef);
var setVisibleGroup = React.useContext(CSidebarNavContext.CSidebarNavContext).setVisibleGroup;
React.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.CLink, tslib_es6.__assign({ className: index.default('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';
exports.CNavLink = CNavLink;
//# sourceMappingURL=CNavLink.js.map
;