@gdjiami/jm-mrc-components
Version:
移动端可复用组件库
51 lines (50 loc) • 1.89 kB
JavaScript
import { __assign, __rest } from "tslib";
/**
* button组件
* TODO: 完善props
*/
import classNames from 'classnames';
import React, { useEffect } from 'react';
import { tuple } from '../_util/common';
import { ConfigConsumer } from '../provider';
import './style/index.css';
var ButtonTypes = tuple('default', 'primary', 'dashed', 'danger');
var ButtonSizes = tuple('large', 'default', 'small');
var ButtonHTMLTypes = tuple('submit', 'button', 'reset');
var Button = function (props) {
var type = props.type, loading = props.loading, size = props.size, children = props.children, block = props.block, onClick = props.onClick, htmlType = props.htmlType, other = __rest(props, ["type", "loading", "size", "children", "block", "onClick", "htmlType"]);
var handleClick = function (e) {
if (!!loading)
return;
if (onClick)
onClick(e);
};
useEffect(function () {
if (loading) {
// tslint:disable-next-line: return-undefined
return;
}
}, [loading]);
var renderButton = function () {
var _a;
var sizeCls = '';
switch (size) {
case 'large':
sizeCls = 'lg';
break;
case 'small':
sizeCls = 'sm';
// tslint:disable-next-line: no-switch-case-fall-through
default:
break;
}
var classes = classNames('btn', (_a = {},
_a["btn-" + type] = type,
_a["btn-" + sizeCls] = sizeCls,
_a["btn-block"] = block,
_a));
return (React.createElement("button", __assign({ className: classes, onClick: handleClick, type: htmlType }, other), children));
};
return React.createElement(ConfigConsumer, null, renderButton);
};
export default Button;