/* eslint-disable jsx-a11y/click-events-have-key-events */
/* eslint-disable jsx-a11y/no-static-element-interactions */
/* eslint-disable jsx-a11y/anchor-is-valid */
/* eslint-disable react/require-default-props */
/* eslint-disable @typescript-eslint/no-explicit-any */
import classNames from 'classnames';
// import { NavLink } from 'react-router-dom'
import Link from 'next/link';
import PropTypes from 'prop-types';
import React from 'react';
// component - CoreUI / CLink
const CLink = (props: any) => {
const {
className,
//
innerRef,
active,
href,
onClick,
disabled,
children,
...rest
} = props;
const to = rest ? rest.to : null;
const click = (e: any) => {
if ((!href && !to) || href === '#') {
e.preventDefault();
}
!disabled && onClick && onClick(e);
};
// render
const classes = classNames(
active && 'active',
disabled && 'disabled',
className
);
if (rest.nextProps) {
delete rest.nextProps;
}
if (to) {
return (
{children !== null && children}
);
}
return (
{children !== null && children}
);
};
CLink.propTypes = {
//
innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),
active: PropTypes.bool,
href: PropTypes.string,
onClick: PropTypes.func,
disabled: PropTypes.bool,
// ...NavLink.propTypes,
className: PropTypes.oneOfType([
PropTypes.string,
PropTypes.array,
PropTypes.object,
]),
to: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func]),
children: PropTypes.node,
rel: PropTypes.string,
target: PropTypes.string,
};
CLink.sortAttributes = (attributesToSort) => {
const attributes = {}
const linkProps = {}
Object.entries(attributesToSort || {}).forEach(([key, value]) => {
if (Object.keys(CLink.propTypes).includes(key)) {
linkProps[key] = value
} else {
attributes[key] = value
}
})
return { linkProps, attributes }
}
export default CLink;