UNPKG

1.62 kBJavaScriptView Raw
1import _extends from "@babel/runtime/helpers/esm/extends";
2import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3var _excluded = ["bsPrefix", "variant", "size", "active", "className", "block", "type", "as"];
4import classNames from 'classnames';
5import React from 'react';
6import { useBootstrapPrefix } from './ThemeProvider';
7import SafeAnchor from './SafeAnchor';
8var defaultProps = {
9 variant: 'primary',
10 active: false,
11 disabled: false
12};
13var Button = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
14 var bsPrefix = _ref.bsPrefix,
15 variant = _ref.variant,
16 size = _ref.size,
17 active = _ref.active,
18 className = _ref.className,
19 block = _ref.block,
20 type = _ref.type,
21 as = _ref.as,
22 props = _objectWithoutPropertiesLoose(_ref, _excluded);
23
24 var prefix = useBootstrapPrefix(bsPrefix, 'btn');
25 var classes = classNames(className, prefix, active && 'active', variant && prefix + "-" + variant, block && prefix + "-block", size && prefix + "-" + size);
26
27 if (props.href) {
28 return /*#__PURE__*/React.createElement(SafeAnchor, _extends({}, props, {
29 as: as,
30 ref: ref,
31 className: classNames(classes, props.disabled && 'disabled')
32 }));
33 }
34
35 if (ref) {
36 props.ref = ref;
37 }
38
39 if (type) {
40 props.type = type;
41 } else if (!as) {
42 props.type = 'button';
43 }
44
45 var Component = as || 'button';
46 return /*#__PURE__*/React.createElement(Component, _extends({}, props, {
47 className: classes
48 }));
49});
50Button.displayName = 'Button';
51Button.defaultProps = defaultProps;
52export default Button;
\No newline at end of file