dareway-rui
Version:
107 lines (92 loc) • 3.06 kB
JavaScript
'use strict';
var _interopRequireWildcard = require('@babel/runtime/helpers/interopRequireWildcard');
var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault');
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.default = GridButtonWithPromiseDisabled;
var _slicedToArray2 = _interopRequireDefault(require('@babel/runtime/helpers/slicedToArray'));
var _react = _interopRequireWildcard(require('react'));
var _ruiIcon = _interopRequireDefault(require('rui-icon'));
var _antd = require('antd');
function GridButtonWithPromiseDisabled(props) {
var btn = props.btn,
key = props.key,
defaultOnClick = props.defaultOnClick;
var tagType = btn.tagType,
value = btn.value,
onClick = btn.onClick,
disabled = btn.disabled;
var _useState = (0, _react.useState)(disabled),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
autoDisabled = _useState2[0],
setAutoDisabled = _useState2[1];
var handleClick = function handleClick() {
if (autoDisabled) {
return;
}
if (onClick) {
defaultOnClick();
setAutoDisabled(true);
Promise.resolve(onClick())
.then(function() {
setAutoDisabled(false);
})
.catch(function() {
setAutoDisabled(false);
});
}
};
if (tagType === 'BUTTON') {
return _react.default.createElement(
_antd.Button,
{
key: key,
onClick: handleClick,
style: {
marginLeft: 5
},
disabled: autoDisabled
},
value
);
} else if (tagType === 'PICBUTTON') {
var iconId = btn.iconId,
title = btn.title,
color = btn.color;
var style = {
color: color
};
var iconStyle = {
color: color,
cursor: 'pointer'
};
if (autoDisabled) {
iconStyle.cursor = 'not-allowed';
}
return _react.default.createElement(
'div',
{
style: style,
title: title,
className: 'rui-grid-buttonscolumn-picbutton-wrapper'
},
_react.default.createElement(_ruiIcon.default, {
key: key,
onClick: handleClick,
style: iconStyle,
disabled: autoDisabled,
type: iconId,
theme: 'outlined'
})
);
} else {
throw new Error(
'ButtonsColumns \u6807\u7B7E\u4E0B\u4E0D\u80FD\u653E\u7F6E\u7EC4\u4EF6\u3010'.concat(
tagType,
'\u3011\u53EA\u80FD\u653E Button\u3001PicButton\u3001LinkButton\uFF0C\u8BF7\u68C0\u67E5\uFF01'
)
);
}
}
//@ sourceMappingURL=GridButtonWithPromiseDisabled.js.map