UNPKG

@coreui/react

Version:

UI Components Library for React.js

49 lines (45 loc) 2.19 kB
'use strict'; 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