diff --git a/public/css/app.css b/public/css/app.css
index f73dbd1..3ca8833 100644
--- a/public/css/app.css
+++ b/public/css/app.css
@@ -269,13 +269,106 @@ table.jadual tbody tr:nth-child(even) { background: #f8f9fb; }
.ralat-medan { color: var(--merah); font-size: 0.88rem; margin: -0.5rem 0 0.9rem; }
+/* ===== Jadual: kepala (tajuk + carian), badan, kaki (info + paging) ===== */
+.jadual-kepala {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 0.75rem;
+ flex-wrap: wrap;
+ padding: 1rem 1.25rem;
+}
+
+.tajuk-jadual {
+ margin: 0;
+ font-size: 1.05rem;
+ border-left: 4px solid var(--biru);
+ padding-left: 0.6rem;
+}
+.tajuk-jadual.hijau { border-color: var(--hijau); color: var(--hijau); }
+.tajuk-jadual.merah { border-color: var(--merah); color: var(--merah); }
+
+.jadual-kepala .cari-input {
+ width: auto;
+ flex: 1 1 220px;
+ max-width: 360px;
+ margin: 0;
+ padding: 0.5rem 0.75rem;
+ font-size: 0.95rem;
+}
+
+.jadual-bekas { overflow-x: auto; }
+
+.jadual-kaki {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 0.75rem;
+ flex-wrap: wrap;
+ padding: 0.75rem 1.25rem;
+ border-top: 1px solid var(--kelabu-border);
+}
+
+.paging { display: flex; gap: 0.3rem; flex-wrap: wrap; }
+
+.paging-btn {
+ min-width: 2.2rem;
+ padding: 0.35rem 0.6rem;
+ border: 1px solid var(--kelabu-border);
+ background: #fff;
+ color: var(--teks);
+ border-radius: 6px;
+ font-size: 0.9rem;
+ font-weight: 600;
+ cursor: pointer;
+}
+.paging-btn:hover:not(:disabled) { background: var(--kelabu); }
+.paging-btn.aktif { background: var(--biru); border-color: var(--biru); color: #fff; }
+.paging-btn:disabled { opacity: 0.45; cursor: default; }
+
@media print {
.topbar, .tiada-cetak { display: none !important; }
body { background: #fff; }
.kad { border: none; }
+ /* Cetak semua baris tanpa mengira halaman semasa */
+ tr.baris-data { display: table-row !important; }
}
@media (max-width: 640px) {
.slip-nombor { font-size: 3.5rem; }
table.jadual { font-size: 0.85rem; }
+
+ .jadual-kepala, .jadual-kaki { padding: 0.8rem; }
+ .jadual-kepala .cari-input { max-width: none; }
+
+ /* Jadual responsif: setiap baris jadi kad bertindan dgn label */
+ .jadual-responsif thead { display: none; }
+ .jadual-responsif tbody tr {
+ display: block;
+ border: 1px solid var(--kelabu-border);
+ border-radius: 8px;
+ margin: 0.6rem;
+ padding: 0.3rem 0.6rem;
+ background: #fff !important;
+ }
+ .jadual-responsif tbody td {
+ display: flex;
+ justify-content: space-between;
+ align-items: baseline;
+ gap: 1rem;
+ border: none;
+ padding: 0.35rem 0;
+ text-align: right;
+ }
+ .jadual-responsif tbody td::before {
+ content: attr(data-label);
+ font-weight: 600;
+ color: #5a6172;
+ text-align: left;
+ flex: 0 0 auto;
+ }
+ .jadual-responsif tbody td:last-child { padding-bottom: 0.1rem; }
+ .jadual-responsif .baris-tindakan { justify-content: flex-end; }
+ .jadual-responsif .baris-tiada td { justify-content: center; text-align: center; }
+ .jadual-responsif .baris-tiada td::before { content: ""; }
}
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php
index 0165006..d0e526d 100644
--- a/resources/views/layouts/app.blade.php
+++ b/resources/views/layouts/app.blade.php
@@ -4,7 +4,8 @@
@yield('tajuk', config('app.name'))
-
+ @php $cssVer = @filemtime(public_path('css/app.css')) ?: null; @endphp
+
diff --git a/resources/views/pengurus/senarai.blade.php b/resources/views/pengurus/senarai.blade.php
index 5e80f89..2b6638b 100644
--- a/resources/views/pengurus/senarai.blade.php
+++ b/resources/views/pengurus/senarai.blade.php
@@ -26,105 +26,219 @@
-
-
-
-
- | HADIR ({{ $hadir->count() }}) |
-
-
- | Siri |
- Nama |
- No. Telefon |
- Emel |
- Pusat Mengundi |
- Saluran |
- Jawatan |
- Borang |
-
-
-
- @forelse ($hadir as $p)
- @php
- $penempatan = $p->butiranPenempatan();
- $rekod = $kehadiran->get($p->id);
- @endphp
+ {{-- ===================== HADIR ===================== --}}
+
+
+
HADIR ({{ $hadir->count() }})
+
+
+
+
+
- | {{ $rekod?->nombor_siri_papar }} |
- {{ $p->nama_ic }} |
- {{ $p->no_telefon ?? '-' }} |
- {{ $p->emel ?? '-' }} |
- {{ $penempatan['pusat_mengundi'] }} |
- {{ $penempatan['saluran'] }} |
- {{ $penempatan['jawatan'] }} |
-
- @if ($rekod?->borang_diambil)
- Diambil
- @else
- Belum
- @endif
- |
+ Siri |
+ Nama |
+ No. Telefon |
+ Emel |
+ Pusat Mengundi |
+ Saluran |
+ Jawatan |
+ Borang |
- @empty
- | Tiada petugas hadir lagi. |
- @endforelse
-
-
+
+
+ @forelse ($hadir as $p)
+ @php
+ $penempatan = $p->butiranPenempatan();
+ $rekod = $kehadiran->get($p->id);
+ @endphp
+
+ | {{ $rekod?->nombor_siri_papar }} |
+ {{ $p->nama_ic }} |
+ {{ $p->no_telefon ?? '-' }} |
+ {{ $p->emel ?? '-' }} |
+ {{ $penempatan['pusat_mengundi'] }} |
+ {{ $penempatan['saluran'] }} |
+ {{ $penempatan['jawatan'] }} |
+
+ @if ($rekod?->borang_diambil)
+ Diambil
+ @else
+ Belum
+ @endif
+ |
+
+ @empty
+ | Tiada petugas hadir lagi. |
+ @endforelse
+
+
+
+
-
-
-
-
- | TIDAK / BELUM HADIR ({{ $tidakHadir->count() }}) |
-
-
- | Nama |
- No. Telefon |
- Emel |
- Pusat Mengundi |
- Saluran |
- Jawatan |
- Hubungi |
-
-
-
- @forelse ($tidakHadir as $p)
- @php
- $penempatan = $p->butiranPenempatan();
- $telefon = preg_replace('/[^0-9]/', '', $p->no_telefon ?? '');
- $waNombor = $telefon !== '' ? (str_starts_with($telefon, '60') ? $telefon : '6' . $telefon) : '';
- @endphp
+ {{-- ================ TIDAK / BELUM HADIR ================ --}}
+
+
+
TIDAK / BELUM HADIR ({{ $tidakHadir->count() }})
+
+
+
+
+
- | {{ $p->nama_ic }} |
- {{ $p->no_telefon ?? '-' }} |
- {{ $p->emel ?? '-' }} |
- {{ $penempatan['pusat_mengundi'] }} |
- {{ $penempatan['saluran'] }} |
- {{ $penempatan['jawatan'] }} |
-
- @if ($telefon !== '')
-
- @else
- Tiada no. telefon
- @endif
- |
+ Nama |
+ No. Telefon |
+ Emel |
+ Pusat Mengundi |
+ Saluran |
+ Jawatan |
+ Hubungi |
- @empty
- | Semua petugas telah hadir. |
- @endforelse
-
-
+
+
+ @forelse ($tidakHadir as $p)
+ @php
+ $penempatan = $p->butiranPenempatan();
+ $telefon = preg_replace('/[^0-9]/', '', $p->no_telefon ?? '');
+ $waNombor = $telefon !== '' ? (str_starts_with($telefon, '60') ? $telefon : '6' . $telefon) : '';
+ @endphp
+
+ | {{ $p->nama_ic }} |
+ {{ $p->no_telefon ?? '-' }} |
+ {{ $p->emel ?? '-' }} |
+ {{ $penempatan['pusat_mengundi'] }} |
+ {{ $penempatan['saluran'] }} |
+ {{ $penempatan['jawatan'] }} |
+
+ @if ($telefon !== '')
+
+ @else
+ Tiada no. telefon
+ @endif
+ |
+
+ @empty
+ | Semua petugas telah hadir. |
+ @endforelse
+
+
+
+
+
+
@endsection