91 lines
2.6 KiB
JavaScript
91 lines
2.6 KiB
JavaScript
import props from './props';
|
|
import { getInstance } from '../common/utils';
|
|
|
|
|
|
const defaultOptions = {
|
|
actions: [],
|
|
buttonLayout: props.buttonLayout.default,
|
|
cancelBtn: props.cancelBtn.default,
|
|
closeOnOverlayClick: props.closeOnOverlayClick.default,
|
|
confirmBtn: props.confirmBtn.value,
|
|
content: '',
|
|
preventScrollThrough: props.preventScrollThrough.default,
|
|
showOverlay: props.showOverlay.default,
|
|
title: '',
|
|
visible: props.visible.default,
|
|
};
|
|
|
|
export default {
|
|
alert(options) {
|
|
const { context, selector = '#t-dialog', ...otherOptions } = { ...options };
|
|
const instance = getInstance(context, selector);
|
|
if (!instance) return Promise.reject();
|
|
|
|
return new Promise((resolve) => {
|
|
const mergedOptions = {
|
|
...defaultOptions,
|
|
...instance.properties,
|
|
...otherOptions,
|
|
};
|
|
instance.setData({
|
|
cancelBtn: '',
|
|
...mergedOptions,
|
|
visible: true,
|
|
});
|
|
instance._onConfirm = resolve;
|
|
});
|
|
},
|
|
confirm(options) {
|
|
const { context, selector = '#t-dialog', ...otherOptions } = { ...options };
|
|
const instance = getInstance(context, selector);
|
|
if (!instance) return Promise.reject();
|
|
|
|
return new Promise((resolve, reject) => {
|
|
const mergedOptions = {
|
|
...defaultOptions,
|
|
...instance.properties,
|
|
...otherOptions,
|
|
};
|
|
instance.setData({
|
|
...mergedOptions,
|
|
visible: true,
|
|
});
|
|
instance._onConfirm = resolve;
|
|
instance._onCancel = reject;
|
|
});
|
|
},
|
|
close(options) {
|
|
const { context, selector = '#t-dialog' } = { ...options };
|
|
const instance = getInstance(context, selector);
|
|
if (instance) {
|
|
instance.close();
|
|
return Promise.resolve();
|
|
}
|
|
return Promise.reject();
|
|
},
|
|
action(options) {
|
|
const { context, selector = '#t-dialog', ...otherOptions } = { ...options };
|
|
const instance = getInstance(context, selector);
|
|
if (!instance) return Promise.reject();
|
|
const { buttonLayout = 'vertical', actions = instance.properties.actions } = options;
|
|
const maxLengthSuggestion = buttonLayout === 'vertical' ? 7 : 3;
|
|
if (!actions || (typeof actions === 'object' && (actions.length === 0 || actions.length > maxLengthSuggestion))) {
|
|
console.warn(`action 数量建议控制在1至${maxLengthSuggestion}个`);
|
|
}
|
|
|
|
return new Promise((resolve) => {
|
|
const mergedOptions = {
|
|
...defaultOptions,
|
|
...instance.properties,
|
|
...otherOptions,
|
|
};
|
|
instance.setData({
|
|
...mergedOptions,
|
|
buttonLayout,
|
|
visible: true,
|
|
});
|
|
instance._onAction = resolve;
|
|
});
|
|
},
|
|
};
|