/* eslint-disable react/require-default-props */ /* eslint-disable @typescript-eslint/no-explicit-any */ import classNames from 'classnames'; import PropTypes from 'prop-types'; import React from 'react'; import CLink from '../link/CLink'; import { tagPropType } from '../utils/helper'; // component - CoreUI / CButton const CButton = (props: any) => { const { tag: Tag, className, // innerRef, onClick, disabled, active, block, color, size, pressed, shape, variant, ...attributes } = props; const click = (e: any) => !disabled && onClick && onClick(e); const isLink = attributes.to || attributes.href; // render const classes = classNames( className, 'btn', variant || color ? `btn${variant ? `-${variant}` : ''}-${color}` : false, size ? `btn-${size}` : false, block ? 'btn-block' : false, shape ? `btn-${shape}` : false, pressed ? 'btn-pressed' : false, { active: active && !isLink, disabled: disabled && !isLink } ); if (isLink) { return ( <> ); } return ( <> ); }; CButton.propTypes = { tag: tagPropType, className: PropTypes.oneOfType([ PropTypes.string, PropTypes.array, PropTypes.object, ]), // innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func]), active: PropTypes.bool, block: PropTypes.bool, shape: PropTypes.string, variant: PropTypes.oneOf(['', 'ghost', 'outline']), color: PropTypes.string, disabled: PropTypes.bool, onClick: PropTypes.func, size: PropTypes.string, pressed: PropTypes.bool, children: PropTypes.node, type: PropTypes.string, tabIndex: PropTypes.number, }; CButton.defaultProps = { tag: 'button', }; // export export default CButton;