UNPKG

11.1 kBSource Map (JSON)View Raw
1{"version":3,"sources":["button/Button.js"],"names":["React","Children","Component","PropTypes","classNames","omit","Icon","Ripple","Size","getPrefixCls","ProgressType","Progress","Button","props","handleClick","e","clearTimeout","timeout","window","setTimeout","setState","clicked","onClick","state","loading","nextProps","currentLoading","delayTimeout","delay","customizePrefixCls","prefixCls","type","shape","size","className","htmlType","children","icon","ghost","funcType","onMouseEnter","onMouseLeave","disabled","others","sizeCls","large","small","ComponentProp","href","classes","iconNode","createElement","key","kids","map","child","useWrapper","style","otherProps","button","undefined","displayName","__C7N_BUTTON","defaultProps","propTypes","string","oneOf","func","oneOfType","bool","object"],"mappings":"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","sourcesContent":["import React, { Children, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport omit from 'lodash/omit';\nimport Icon from '../icon';\nimport Ripple from '../ripple';\nimport { Size } from '../_util/enum';\nimport { getPrefixCls } from '../configure';\nimport { ProgressType } from '../progress/enum';\nimport Progress from '../progress';\nexport default class Button extends Component {\n constructor(props) {\n super(props);\n this.handleClick = e => {\n clearTimeout(this.timeout);\n this.timeout = window.setTimeout(() => this.setState({ clicked: false }), 500);\n const { onClick } = this.props;\n if (onClick) {\n onClick(e);\n }\n };\n this.state = {\n loading: props.loading,\n clicked: false,\n };\n }\n componentWillReceiveProps(nextProps) {\n const { loading: currentLoading } = this.props;\n const { loading } = nextProps;\n if (currentLoading) {\n clearTimeout(this.delayTimeout);\n }\n if (typeof loading !== 'boolean' && loading && loading.delay) {\n this.delayTimeout = window.setTimeout(() => this.setState({ loading }), loading.delay);\n }\n else {\n this.setState({ loading });\n }\n }\n componentWillUnmount() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n if (this.delayTimeout) {\n clearTimeout(this.delayTimeout);\n }\n }\n render() {\n const { prefixCls: customizePrefixCls, type, shape, size, className, htmlType, children, icon, ghost, funcType, onMouseEnter, onMouseLeave, disabled, ...others } = this.props;\n const { loading, clicked } = this.state;\n const prefixCls = getPrefixCls('btn', customizePrefixCls);\n // large => lg\n // small => sm\n let sizeCls = '';\n switch (size) {\n case Size.large:\n sizeCls = 'lg';\n break;\n case Size.small:\n sizeCls = 'sm';\n break;\n default:\n }\n const ComponentProp = others.href ? 'a' : 'button';\n const classes = classNames(prefixCls, className, {\n [`${prefixCls}-${type}`]: type,\n [`${prefixCls}-${shape}`]: shape,\n [`${prefixCls}-${sizeCls}`]: sizeCls,\n [`${prefixCls}-icon-only`]: !children && icon,\n [`${prefixCls}-loading`]: loading,\n [`${prefixCls}-clicked`]: clicked,\n [`${prefixCls}-background-ghost`]: ghost,\n [`${prefixCls}-${funcType}`]: funcType,\n });\n let iconNode = icon ? React.createElement(Icon, { type: icon }) : null;\n iconNode = loading ? (React.createElement(Progress, { key: \"loading\", type: ProgressType.loading, size: Size.small })) : (iconNode);\n const kids = children || children === 0\n ? Children.map(children, child => {\n if (typeof child === 'string') {\n return React.createElement(\"span\", null, child);\n }\n return child;\n })\n : null;\n const useWrapper = disabled && ComponentProp === 'button' && (onMouseEnter || onMouseLeave);\n const { style, ...otherProps } = others;\n const button = (React.createElement(Ripple, { disabled: disabled },\n React.createElement(ComponentProp, Object.assign({ disabled: disabled, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave }, omit(otherProps, ['loading']), { \n // 如果没有href属性,则表示组件使用button标签,type为'submit' | 'reset' | 'button'\n type: others.href ? undefined : htmlType || 'button', style: useWrapper ? undefined : style, className: useWrapper ? undefined : classes, onClick: this.handleClick }),\n iconNode,\n kids)));\n return useWrapper ? (React.createElement(\"span\", { \n // @ts-ignore\n disabled: true, style: style, className: classNames(classes, `${prefixCls}-disabled-wrapper`), onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave }, button)) : button;\n }\n}\nButton.displayName = 'Button';\nButton.__C7N_BUTTON = true;\nButton.defaultProps = {\n loading: false,\n ghost: false,\n funcType: 'flat',\n};\nButton.propTypes = {\n type: PropTypes.string,\n shape: PropTypes.oneOf(['circle', 'circle-outline']),\n size: PropTypes.oneOf([Size.large, Size.default, Size.small]),\n htmlType: PropTypes.oneOf(['submit', 'button', 'reset']),\n onClick: PropTypes.func,\n loading: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n className: PropTypes.string,\n icon: PropTypes.string,\n ghost: PropTypes.bool,\n funcType: PropTypes.oneOf(['raised', 'flat']),\n};\n"],"file":"Button.js"}
\No newline at end of file