UNPKG

antd

Version:

An enterprise-class UI design language and React-based implementation

87 lines (78 loc) 2.97 kB
import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; import _createClass from 'babel-runtime/helpers/createClass'; import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; import _inherits from 'babel-runtime/helpers/inherits'; import * as React from 'react'; import * as ReactDOM from 'react-dom'; import Button from '../button'; var ActionButton = function (_React$Component) { _inherits(ActionButton, _React$Component); function ActionButton(props) { _classCallCheck(this, ActionButton); var _this = _possibleConstructorReturn(this, (ActionButton.__proto__ || Object.getPrototypeOf(ActionButton)).call(this, props)); _this.onClick = function () { var _this$props = _this.props, actionFn = _this$props.actionFn, closeModal = _this$props.closeModal; if (actionFn) { var ret = void 0; if (actionFn.length) { ret = actionFn(closeModal); } else { ret = actionFn(); if (!ret) { closeModal(); } } if (ret && ret.then) { _this.setState({ loading: true }); ret.then(function () { // It's unnecessary to set loading=false, for the Modal will be unmounted after close. // this.setState({ loading: false }); closeModal.apply(undefined, arguments); }, function () { // See: https://github.com/ant-design/ant-design/issues/6183 _this.setState({ loading: false }); }); } } else { closeModal(); } }; _this.state = { loading: false }; return _this; } _createClass(ActionButton, [{ key: 'componentDidMount', value: function componentDidMount() { if (this.props.autoFocus) { var $this = ReactDOM.findDOMNode(this); this.timeoutId = setTimeout(function () { return $this.focus(); }); } } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { clearTimeout(this.timeoutId); } }, { key: 'render', value: function render() { var _props = this.props, type = _props.type, children = _props.children; var loading = this.state.loading; return React.createElement( Button, { type: type, onClick: this.onClick, loading: loading }, children ); } }]); return ActionButton; }(React.Component); export default ActionButton;