Initial commit
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
<x-master-page title="Tambah Jenis Dokumen" description="Tambahkan kategori dokumen baru untuk kebutuhan data siswa.">
|
||||
<x-master-card title="Form Jenis Dokumen" subtitle="Lengkapi kode, nama, dan aturan dokumen.">
|
||||
<form action="{{ route('document-types.store') }}" method="POST" class="space-y-6">
|
||||
@csrf
|
||||
|
||||
<div class="grid grid-cols-1 gap-6 md:grid-cols-2">
|
||||
<x-form-input name="code" label="Kode Dokumen" placeholder="Contoh: KK" required />
|
||||
<x-form-input name="name" label="Nama Dokumen" placeholder="Contoh: Kartu Keluarga" required />
|
||||
<x-form-input name="max_file_size_kb" label="Maksimal Ukuran File (KB)" type="number" placeholder="Contoh: 2048" />
|
||||
<x-form-input name="allowed_extensions" label="Format File Diizinkan" placeholder="Contoh: jpg,jpeg,png,pdf" />
|
||||
</div>
|
||||
|
||||
<x-form-textarea name="description" label="Deskripsi" placeholder="Deskripsi singkat dokumen (opsional)" />
|
||||
<p class="text-xs text-slate-400">Pisahkan format dengan koma. Contoh: <span class="font-semibold">jpg,jpeg,png,pdf</span></p>
|
||||
|
||||
<div class="flex flex-wrap gap-3">
|
||||
<x-form-checkbox name="is_required" label="Dokumen wajib" :checked="false" />
|
||||
<x-form-checkbox name="is_active" label="Jenis dokumen aktif" :checked="true" />
|
||||
</div>
|
||||
|
||||
<div class="flex flex-wrap items-center gap-3">
|
||||
<button type="submit" class="rounded-2xl bg-indigo-600 px-5 py-3 text-sm font-semibold text-white shadow-lg shadow-indigo-200 transition hover:bg-indigo-700">Simpan</button>
|
||||
<a href="{{ route('document-types.index') }}" class="rounded-2xl border border-slate-200 px-5 py-3 text-sm font-semibold text-slate-700 transition hover:bg-slate-50">Batal</a>
|
||||
</div>
|
||||
</form>
|
||||
</x-master-card>
|
||||
</x-master-page>
|
||||
@@ -0,0 +1,28 @@
|
||||
<x-master-page title="Edit Jenis Dokumen" description="Perbarui data jenis dokumen yang sudah ada.">
|
||||
<x-master-card title="Form Edit Jenis Dokumen" subtitle="Sesuaikan data lalu simpan perubahan.">
|
||||
<form action="{{ route('document-types.update', $documentType) }}" method="POST" class="space-y-6">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
|
||||
<div class="grid grid-cols-1 gap-6 md:grid-cols-2">
|
||||
<x-form-input name="code" label="Kode Dokumen" :value="$documentType->code" placeholder="Contoh: KK" required />
|
||||
<x-form-input name="name" label="Nama Dokumen" :value="$documentType->name" placeholder="Contoh: Kartu Keluarga" required />
|
||||
<x-form-input name="max_file_size_kb" label="Maksimal Ukuran File (KB)" type="number" :value="$documentType->max_file_size_kb" placeholder="Contoh: 2048" />
|
||||
<x-form-input name="allowed_extensions" label="Format File Diizinkan" :value="$documentType->allowed_extensions" placeholder="Contoh: jpg,jpeg,png,pdf" />
|
||||
</div>
|
||||
|
||||
<x-form-textarea name="description" label="Deskripsi" :value="$documentType->description" placeholder="Deskripsi singkat dokumen (opsional)" />
|
||||
<p class="text-xs text-slate-400">Pisahkan format dengan koma. Contoh: <span class="font-semibold">jpg,jpeg,png,pdf</span></p>
|
||||
|
||||
<div class="flex flex-wrap gap-3">
|
||||
<x-form-checkbox name="is_required" label="Dokumen wajib" :checked="$documentType->is_required" />
|
||||
<x-form-checkbox name="is_active" label="Jenis dokumen aktif" :checked="$documentType->is_active" />
|
||||
</div>
|
||||
|
||||
<div class="flex flex-wrap items-center gap-3">
|
||||
<button type="submit" class="rounded-2xl bg-indigo-600 px-5 py-3 text-sm font-semibold text-white shadow-lg shadow-indigo-200 transition hover:bg-indigo-700">Update</button>
|
||||
<a href="{{ route('document-types.index') }}" class="rounded-2xl border border-slate-200 px-5 py-3 text-sm font-semibold text-slate-700 transition hover:bg-slate-50">Batal</a>
|
||||
</div>
|
||||
</form>
|
||||
</x-master-card>
|
||||
</x-master-page>
|
||||
@@ -0,0 +1,77 @@
|
||||
<x-master-page
|
||||
title="Jenis Dokumen"
|
||||
description="Kelola jenis dokumen yang dibutuhkan untuk data siswa."
|
||||
action-label="Tambah Jenis Dokumen"
|
||||
:action-url="route('document-types.create')"
|
||||
>
|
||||
<x-master-card title="Filter Data" subtitle="Cari berdasarkan kode, nama, atau deskripsi dokumen.">
|
||||
<form method="GET" action="{{ route('document-types.index') }}" class="flex flex-col gap-4 md:flex-row md:items-end">
|
||||
<div class="md:flex-1">
|
||||
<x-form-input name="search" label="Pencarian" :value="$search" placeholder="Cari jenis dokumen..." />
|
||||
</div>
|
||||
<div class="flex items-end gap-3">
|
||||
<button type="submit" class="rounded-2xl bg-slate-900 px-5 py-3 text-sm font-semibold text-white transition hover:bg-slate-800">Cari</button>
|
||||
<a href="{{ route('document-types.index') }}" class="rounded-2xl border border-slate-200 px-5 py-3 text-sm font-semibold text-slate-700 transition hover:bg-slate-50">Reset</a>
|
||||
</div>
|
||||
</form>
|
||||
</x-master-card>
|
||||
|
||||
<x-data-table :headers="['Kode', 'Nama', 'Format', 'Maks. File', 'Dipakai', 'Wajib', 'Status', 'Aksi']">
|
||||
@forelse ($documentTypes as $documentType)
|
||||
<tr>
|
||||
<td class="px-6 py-4 text-sm font-semibold text-slate-800">{{ $documentType->code }}</td>
|
||||
<td class="px-6 py-4">
|
||||
<div class="font-semibold text-slate-800">{{ $documentType->name }}</div>
|
||||
<div class="text-xs text-slate-400">{{ $documentType->description ?: 'Tanpa deskripsi' }}</div>
|
||||
</td>
|
||||
<td class="px-6 py-4 text-sm text-slate-600">
|
||||
{{ $documentType->allowed_extensions ?: 'jpg,jpeg,png,pdf,webp' }}
|
||||
</td>
|
||||
<td class="px-6 py-4 text-sm text-slate-600">
|
||||
{{ $documentType->max_file_size_kb ? number_format($documentType->max_file_size_kb / 1024, 2) . ' MB' : 'Default 5 MB' }}
|
||||
</td>
|
||||
<td class="px-6 py-4">
|
||||
<span class="rounded-full bg-indigo-100 px-3 py-1 text-xs font-semibold text-indigo-700">Dokumen: {{ $documentType->student_documents_count }}</span>
|
||||
</td>
|
||||
<td class="px-6 py-4">
|
||||
@if ($documentType->is_required)
|
||||
<span class="rounded-full bg-amber-100 px-3 py-1 text-xs font-semibold text-amber-700">Wajib</span>
|
||||
@else
|
||||
<span class="rounded-full bg-slate-100 px-3 py-1 text-xs font-semibold text-slate-600">Opsional</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="px-6 py-4">
|
||||
@if ($documentType->is_active)
|
||||
<span class="rounded-full bg-emerald-100 px-3 py-1 text-xs font-semibold text-emerald-700">Aktif</span>
|
||||
@else
|
||||
<span class="rounded-full bg-slate-100 px-3 py-1 text-xs font-semibold text-slate-600">Nonaktif</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="px-6 py-4">
|
||||
<div class="flex flex-wrap items-center gap-2">
|
||||
<a href="{{ route('document-types.edit', $documentType) }}" class="rounded-xl border border-slate-200 px-3 py-2 text-xs font-semibold text-slate-700 transition hover:bg-slate-50">Edit</a>
|
||||
@if ($documentType->student_documents_count === 0)
|
||||
<form action="{{ route('document-types.destroy', $documentType) }}" method="POST" class="delete-form" data-entity="jenis dokumen {{ $documentType->name }}">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="rounded-xl border border-rose-200 px-3 py-2 text-xs font-semibold text-rose-600 transition hover:bg-rose-50">Hapus</button>
|
||||
</form>
|
||||
@else
|
||||
<button type="button" disabled class="cursor-not-allowed rounded-xl border border-slate-200 bg-slate-100 px-3 py-2 text-xs font-semibold text-slate-400" title="Tidak bisa dihapus karena masih dipakai data dokumen siswa">
|
||||
Dipakai
|
||||
</button>
|
||||
@endif
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="8" class="px-6 py-10 text-center text-sm text-slate-500">Belum ada data jenis dokumen.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</x-data-table>
|
||||
|
||||
<div>
|
||||
{{ $documentTypes->links() }}
|
||||
</div>
|
||||
</x-master-page>
|
||||
Reference in New Issue
Block a user