NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/ant-design-vue/lib/modal/ActionButton.js
2023-09-14 14:47:11 +08:00

114 lines
2.9 KiB
Java

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _babelHelperVueJsxMergeProps = require('babel-helper-vue-jsx-merge-props');
var _babelHelperVueJsxMergeProps2 = _interopRequireDefault(_babelHelperVueJsxMergeProps);
var _vueTypes = require('../_util/vue-types');
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _button = require('../button');
var _button2 = _interopRequireDefault(_button);
var _BaseMixin = require('../_util/BaseMixin');
var _BaseMixin2 = _interopRequireDefault(_BaseMixin);
var _buttonTypes = require('../button/buttonTypes');
var _buttonTypes2 = _interopRequireDefault(_buttonTypes);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var ButtonType = (0, _buttonTypes2['default'])().type;
var ActionButtonProps = {
type: ButtonType,
actionFn: _vueTypes2['default'].func,
closeModal: _vueTypes2['default'].func,
autoFocus: _vueTypes2['default'].bool,
buttonProps: _vueTypes2['default'].object
};
exports['default'] = {
mixins: [_BaseMixin2['default']],
props: ActionButtonProps,
data: function data() {
return {
loading: false
};
},
mounted: function mounted() {
var _this = this;
if (this.autoFocus) {
this.timeoutId = setTimeout(function () {
return _this.$el.focus();
});
}
},
beforeDestroy: function beforeDestroy() {
clearTimeout(this.timeoutId);
},
methods: {
onClick: function onClick() {
var _this2 = this;
var actionFn = this.actionFn,
closeModal = this.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 (e) {
// Emit error when catch promise reject
// eslint-disable-next-line no-console
console.error(e);
// See: https://github.com/ant-design/ant-design/issues/6183
_this2.setState({ loading: false });
});
}
} else {
closeModal();
}
}
},
render: function render() {
var h = arguments[0];
var type = this.type,
$slots = this.$slots,
loading = this.loading,
buttonProps = this.buttonProps;
return h(
_button2['default'],
(0, _babelHelperVueJsxMergeProps2['default'])([{
attrs: { type: type, loading: loading },
on: {
'click': this.onClick
}
}, buttonProps]),
[$slots['default']]
);
}
};