first commit
This commit is contained in:
90
uni_modules/tdesign-uniapp/components/dialog/index.js
Normal file
90
uni_modules/tdesign-uniapp/components/dialog/index.js
Normal file
@@ -0,0 +1,90 @@
|
||||
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;
|
||||
});
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user