UI Bilesenleri
Bu proje, PrimeVue uzerine kurulu birkac ortak UI yardimcisi kullanir.
Global overlay'ler
AdminLayout.vue, admin alani icin su bilesenleri bir kez render eder:
@lvntr/components/ui/ConfirmDialogComponent.vue@lvntr/components/ui/ToastComponent.vue@lvntr/components/ui/AppDialog.vue
Bu bilesenler her sayfada yeniden yazilmak yerine composable ve sayfa mantigi uzerinden tetiklenir.
AppDialog ve useDialog()
AppDialog, useDialog() ile birlikte calisarak dinamik Vue bilesenlerini tek bir ortak dialog icinde gosteren yapidir.
import { useDialog } from '@/composables/useDialog';
import UserForm from '@/pages/Admin/Users/components/UserForm.vue';
const dialog = useDialog();
dialog.open(UserForm, { inDialog: true }, 'Kullaniciyi duzenle', {
refreshKey: 'users-table',
width: '640px',
});
Async mod
tsawait dialog.openAsync(UserForm, '/roles/1/data', 'Kaydi duzenle', {
refreshKey: 'users-table',
mapResponse: (data) => ({ role: data }),
});
ConfirmDialogComponent ve useConfirm()
Onay dialog'u global olarak bir kez mount edilir ve sayfalar sadece useConfirm() cagirir.
import { router } from '@inertiajs/vue3';
import { useConfirm } from '@/composables/useConfirm';
const { confirmDelete } = useConfirm();
confirmDelete(() => {
router.delete('/users/1');
});
ToastComponent
ToastComponent, ortak PrimeVue toast container'idir. Bu projede genellikle su kaynaklardan beslenir:
AdminLayout.vueicindeki flash mesajlariuseApi()hata yonetimi
AvatarUpload
Avatar yukleme icin hazir bir gorsel secici/yukleyici bilesenidir.
vue<AvatarUpload
:avatar-url="user.avatar_url"
upload-url="/user/avatar"
delete-url="/user/avatar"
/>
Dahili davranislar:
FileReaderile anlik onizlemefetchile yuklemeuseConfirm()ile silme onayi- basarili yukleme veya silme sonrasi Inertia reload
PageLoading
PageLoading.vue, Inertia gecisleri sirasinda skeleton overlay gosterir.
<PageLoading>
<template #skeleton>
<SkeletonTable :rows="6" :columns="4" />
</template>
<YourPageContent />
</PageLoading>