diff --git a/src/common/utils/enums.ts b/src/common/utils/enums.ts new file mode 100644 index 0000000..f8a613e --- /dev/null +++ b/src/common/utils/enums.ts @@ -0,0 +1,30 @@ +export interface EnumItem { + val: string + txt: string +} + +export type EnhancedEnum = T & { + // @ts-ignore + [key in T[number]['val']]: T[number]['val'] +} & { + // @ts-ignore + [key in `${T[number]['val']}Txt`]: T[number]['txt'] +} & { + // @ts-ignore + of: (val: string) => T[number] | undefined + // @ts-ignore + txt: (val: T[number]['val']) => T[number]['txt'] +} + +export function createEnum(enums: T): EnhancedEnum { + const e = enums as EnhancedEnum + for (let enumItem of enums as EnumItem[]) { + // @ts-ignore + e[enumItem.val] = enumItem.val + // @ts-ignore + e[enumItem.val + 'Txt'] = enumItem.txt + } + // @ts-ignore + e.of = (val: string) => ((enums as EnumItem[]).find((item) => item.val === val)) + return e +} diff --git a/src/components/a-dialog/ADialog.vue b/src/components/a-dialog/ADialog.vue index 0ad6658..c2f63ed 100644 --- a/src/components/a-dialog/ADialog.vue +++ b/src/components/a-dialog/ADialog.vue @@ -45,6 +45,7 @@ const showDialog = computed({ }, }) const submiting = ref(false) +const enableRender = ref(false) let moveHandle = useMove(id) function openedHandler() { @@ -68,6 +69,9 @@ function closedHandler() { .setTriggerArea() } +onMounted(() => { + enableRender.value = true +}) onActivated(() => { moveHandle.enable() }) @@ -79,6 +83,7 @@ onUnmounted(() => {