dareway-rui
Version:
120 lines (98 loc) • 4.96 kB
JavaScript
;
var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault');
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.default = wrapWithPromiseDisabled;
var _extends2 = _interopRequireDefault(require('@babel/runtime/helpers/extends'));
var _objectWithoutProperties2 = _interopRequireDefault(require('@babel/runtime/helpers/objectWithoutProperties'));
var _classCallCheck2 = _interopRequireDefault(require('@babel/runtime/helpers/classCallCheck'));
var _createClass2 = _interopRequireDefault(require('@babel/runtime/helpers/createClass'));
var _possibleConstructorReturn2 = _interopRequireDefault(require('@babel/runtime/helpers/possibleConstructorReturn'));
var _getPrototypeOf2 = _interopRequireDefault(require('@babel/runtime/helpers/getPrototypeOf'));
var _assertThisInitialized2 = _interopRequireDefault(require('@babel/runtime/helpers/assertThisInitialized'));
var _inherits2 = _interopRequireDefault(require('@babel/runtime/helpers/inherits'));
var _defineProperty2 = _interopRequireDefault(require('@babel/runtime/helpers/defineProperty'));
var _react = _interopRequireDefault(require('react'));
var _propTypes = _interopRequireDefault(require('prop-types'));
function wrapWithPromiseDisabled(Component) {
var _class, _temp;
return (
(_temp = _class =
/*#__PURE__*/
(function(_React$Component) {
(0, _inherits2.default)(ComponentWithPromiseDisabled, _React$Component);
function ComponentWithPromiseDisabled(props) {
var _this;
(0, _classCallCheck2.default)(this, ComponentWithPromiseDisabled);
_this = (0, _possibleConstructorReturn2.default)(
this,
(0, _getPrototypeOf2.default)(ComponentWithPromiseDisabled).call(this, props)
);
(0, _defineProperty2.default)(
(0, _assertThisInitialized2.default)(_this),
'handleClick',
function() {
var autoDisabled = _this.state.autoDisabled;
var onClick = _this.props.onClick;
if (autoDisabled) {
return;
}
if (onClick) {
_this.setState({
autoDisabled: true
});
Promise.resolve(onClick())
.then(function() {
_this.setState({
autoDisabled: false
});
})
.catch(function() {
_this.setState({
autoDisabled: false
});
});
}
}
);
var disabled = _this.props.disabled;
_this.state = {
autoDisabled: disabled
};
return _this;
}
(0, _createClass2.default)(ComponentWithPromiseDisabled, [
{
key: 'render',
value: function render() {
var _this$props = this.props,
onClick = _this$props.onClick,
disabled = _this$props.disabled,
rest = (0, _objectWithoutProperties2.default)(_this$props, ['onClick', 'disabled']);
var disabledResult = disabled || this.state.autoDisabled;
return _react.default.createElement(
Component,
(0, _extends2.default)({}, rest, {
onClick: this.handleClick,
disabled: disabledResult
})
);
}
}
]);
return ComponentWithPromiseDisabled;
})(_react.default.Component)),
(0, _defineProperty2.default)(
_class,
'displayName',
'ComponentWithPromiseDisabled('.concat(Component.name || Component.displayName, ')')
),
(0, _defineProperty2.default)(_class, 'propTypes', {
onClick: _propTypes.default.func,
disabled: _propTypes.default.bool
}),
_temp
);
}
//@ sourceMappingURL=wrapWithPromiseDisabled.js.map