@coreui/react
Version:
UI Components Library for React.js
49 lines (45 loc) • 2.19 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 props = require('../../props.js');
const CButton = React.forwardRef((_a, ref) => {
var { children, active, as = 'button', className, color, disabled, href, onClick, shape, size, toggle, type = 'button', variant } = _a, rest = tslib_es6.__rest(_a, ["children", "active", "as", "className", "color", "disabled", "href", "onClick", "shape", "size", "toggle", "type", "variant"]);
const Component = href ? 'a' : as;
const [_active, setActive] = React.useState(active);
React.useEffect(() => {
setActive(active);
}, [active]);
return (React.createElement(Component, Object.assign({ className: index.default('btn', {
[`btn-${variant}-${color}`]: variant && color,
[`btn-${variant}`]: variant && !color,
[`btn-${color}`]: !variant && color,
[`btn-${size}`]: size,
active: _active,
disabled,
}, shape, className) }, ((Component === 'button' || Component === 'input') && { type, disabled }), (toggle && { 'aria-pressed': !!_active }), (Component === 'a' && href && { href }), (Component === 'a' && disabled && { 'aria-disabled': true, tabIndex: -1 }), { onClick: (event) => {
if (!disabled) {
if (toggle) {
event.preventDefault();
setActive((prevActive) => !prevActive);
}
onClick === null || onClick === void 0 ? void 0 : onClick(event);
}
} }, rest, { ref: ref }), children));
});
CButton.propTypes = {
active: PropTypes.bool,
as: PropTypes.elementType,
children: PropTypes.node,
className: PropTypes.string,
color: props.colorPropType,
shape: PropTypes.string,
size: PropTypes.oneOf(['sm', 'lg']),
toggle: PropTypes.bool,
type: PropTypes.oneOf(['button', 'submit', 'reset']),
variant: PropTypes.oneOf(['outline', 'ghost']),
};
CButton.displayName = 'CButton';
exports.CButton = CButton;
//# sourceMappingURL=CButton.js.map