yantd
Version:
React component library
60 lines (59 loc) • 2.72 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
import React, { useContext, useState } from "react";
import classNames from "classnames";
import { tuple } from "../_util/type";
import { ConfigContext } from '../config-provider';
import { defaultGetPrefixCls } from "../config-provider/context";
export var ButtonSize;
(function (ButtonSize) {
ButtonSize["Large"] = "lg";
ButtonSize["Small"] = "sm";
})(ButtonSize || (ButtonSize = {}));
var ButtonTypes = tuple('default', 'primary', 'danger', 'dashed', 'link', 'text');
var ButtonShapes = tuple('circle', 'round');
var ButtonHTMLTypes = tuple('submit', 'button', 'reset');
export var Button = function (props) {
var _a;
var _b = useState(false), loading = _b[0], setLoading = _b[1];
var getPrefixCls = useContext(ConfigContext).getPrefixCls;
var type = props.type, className = props.className, disabled = props.disabled, size = props.size, href = props.href, children = props.children, htmlType = props.htmlType, shape = props.shape, customizePrefixCls = props.prefixCls, restProps = __rest(props, ["type", "className", "disabled", "size", "href", "children", "htmlType", "shape", "prefixCls"]);
var prefixCls = defaultGetPrefixCls('btn', customizePrefixCls);
var classes = classNames(prefixCls, className, (_a = {},
_a[prefixCls + "-" + type] = type,
_a[prefixCls + "-" + size] = size,
_a[prefixCls + "-" + shape] = shape,
_a.disabled = disabled,
_a));
if (type === "link" && href) {
return (React.createElement("a", __assign({ href: href, className: classes }, restProps), children));
}
return React.createElement("button", __assign({ type: htmlType, className: classes, disabled: disabled }, restProps), children);
};
Button.defaultProps = {
disabled: false,
type: "default",
shape: "circle",
htmlType: 'button'
};
export default Button;