press-next
Version:
Vue3 组件库,支持 Composition API
54 lines (39 loc) • 1.2 kB
text/typescript
import { initFunctionalDialog } from 'press-ui/common/component-handler/init-functional-dialog';
import { addFunctionForDialog } from 'press-ui/press-dialog-plus/handler-helper';
import { DIALOG_PROPS, DEFAULT_GP_DIALOG_ID } from './computed';
// #ifdef H5
import VueDialog from './press-gp-dialog.vue';
// #endif
import type { IOptions, IDialog } from './types';
let queue: any[] = [];
const defaultOptions = Object.keys(DIALOG_PROPS).reduce((acc: Record<string, any>, item) => {
acc[item] = DIALOG_PROPS[item as keyof typeof DIALOG_PROPS].default;
return acc;
}, {
selector: `#${DEFAULT_GP_DIALOG_ID}`,
});
let currentOptions = Object.assign({}, defaultOptions);
const Dialog = (options: IOptions) => initFunctionalDialog({
options,
currentOptions,
id: DEFAULT_GP_DIALOG_ID,
// #ifdef H5
dialogComponent: VueDialog,
// #endif
});
function updateQueue(arg: any) {
queue = arg;
}
function updateCurrentOptions(arg: IOptions) {
currentOptions = arg;
}
Dialog.show = (options: IOptions) => Dialog(options);
addFunctionForDialog({
Dialog,
queue,
currentOptions,
defaultOptions,
updateQueue,
updateCurrentOptions,
});
export default (Dialog as IDialog);