first commit

This commit is contained in:
brusnitsyn
2026-06-24 17:20:43 +09:00
commit 43499acf1c
165 changed files with 25929 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
<script setup lang="ts">
import {
cleanupDialog,
closeDialog,
dialogQueue
} from '../composables/useAppDialog';
import type {AppDialogItem} from '../composables/useAppDialog';
import AppDialog from './AppDialog.vue';
const handleConfirm = async (dialog: AppDialogItem): Promise<void> => {
dialog.loading = true;
try {
if (typeof dialog.onConfirm === 'function') {
await dialog.onConfirm();
}
closeDialog(dialog.id, true);
} catch (error) {
console.error('Ошибка при подтверждении диалога:', error);
dialog.loading = false; // Оставляем диалог открытым при ошибке.
}
};
</script>
<template>
<Teleport to="body">
<AppDialog
v-for="dialog in dialogQueue"
:key="dialog.id"
:show="dialog.show"
:loading="dialog.loading"
:title="dialog.title"
:content="dialog.content"
:positive-text="dialog.positiveText"
:negative-text="dialog.negativeText"
:positive-props="dialog.positiveProps"
:negative-props="dialog.negativeProps"
:mask-closable="dialog.maskClosable"
@confirm="handleConfirm(dialog)"
@cancel="closeDialog(dialog.id, false)"
@update:show="
(val) =>
!val &&
dialog.show &&
!dialog.loading &&
closeDialog(dialog.id, false)
"
@after-leave="cleanupDialog(dialog.id)"
/>
</Teleport>
</template>