Files
Automata/packages/editor-ui/src/composables/useMessage.ts
कारतोफ्फेलस्क्रिप्ट™ 4a0e1b9e02 fix(editor): Fix close and cancel operations on useMessage (no-changelog) (#6260)
2023-05-16 11:00:22 +02:00

71 lines
2.0 KiB
TypeScript

import type { ElMessageBoxOptions } from 'element-ui/types/message-box';
import { Message, MessageBox } from 'element-ui';
export function useMessage() {
const handleCancelOrClose = (e: unknown) => {
if (e instanceof Error) throw e;
else return e;
};
async function alert(
message: string,
configOrTitle?: string | ElMessageBoxOptions,
config?: ElMessageBoxOptions,
) {
const resolvedConfig = {
...(config || (typeof configOrTitle === 'object' ? configOrTitle : {})),
cancelButtonClass: 'btn--cancel',
confirmButtonClass: 'btn--confirm',
};
if (typeof configOrTitle === 'string') {
return MessageBox.alert(message, configOrTitle, resolvedConfig).catch(handleCancelOrClose);
}
return MessageBox.alert(message, resolvedConfig).catch(handleCancelOrClose);
}
async function confirm(
message: string,
configOrTitle?: string | ElMessageBoxOptions,
config?: ElMessageBoxOptions,
) {
const resolvedConfig = {
...(config || (typeof configOrTitle === 'object' ? configOrTitle : {})),
cancelButtonClass: 'btn--cancel',
confirmButtonClass: 'btn--confirm',
distinguishCancelAndClose: true,
showClose: config?.showClose || false,
closeOnClickModal: false,
};
if (typeof configOrTitle === 'string') {
return MessageBox.confirm(message, configOrTitle, resolvedConfig).catch(handleCancelOrClose);
}
return MessageBox.confirm(message, resolvedConfig).catch(handleCancelOrClose);
}
async function prompt(
message: string,
configOrTitle?: string | ElMessageBoxOptions,
config?: ElMessageBoxOptions,
) {
const resolvedConfig = {
...(config || (typeof configOrTitle === 'object' ? configOrTitle : {})),
cancelButtonClass: 'btn--cancel',
confirmButtonClass: 'btn--confirm',
};
if (typeof configOrTitle === 'string') {
return MessageBox.prompt(message, configOrTitle, resolvedConfig).catch(handleCancelOrClose);
}
return MessageBox.prompt(message, resolvedConfig).catch(handleCancelOrClose);
}
return {
alert,
confirm,
prompt,
message: Message,
};
}