UNPKG

@gdjiami/jm-mrc-components

Version:

移动端可复用组件库

51 lines (50 loc) 1.89 kB
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;