diff --git a/src/components/masterData/EditBarangModal.tsx b/src/components/masterData/EditBarangModal.tsx index ee6bb04..f482678 100644 --- a/src/components/masterData/EditBarangModal.tsx +++ b/src/components/masterData/EditBarangModal.tsx @@ -51,7 +51,7 @@ export default function EditBarangModal({ itemSelected, onClose, onRefresh }: Ed nama_barang: namaBarang, kategori_id: kategoriMapping[kategoriInput] || itemSelected.kategori_id, lokasi_id: lokasiMapping[lokasiInput] || itemSelected.lokasi_id, - status_barang: kondisiFisik === "Baik / Layak" ? "Baik" : kondisiFisik, + status_barang: kondisiFisik, stok: parseInt(stokInput) || 0 }; @@ -136,8 +136,10 @@ export default function EditBarangModal({ itemSelected, onClose, onRefresh }: Ed onChange={(e) => setKondisiFisik(e.target.value)} className="w-full p-3 rounded-xl border border-gray-300 dark:border-gray-600 dark:bg-gray-700 outline-none" > - - + + + + diff --git a/src/components/masterData/TambahBarang.tsx b/src/components/masterData/TambahBarang.tsx index 12cafb0..b7d1811 100644 --- a/src/components/masterData/TambahBarang.tsx +++ b/src/components/masterData/TambahBarang.tsx @@ -94,7 +94,7 @@ export default function TambahBarang({ onRefresh }: TambahBarangProps) { formData.append("nama_barang", namaBarang.trim()); formData.append("nama_kategori", kategoriSelected.trim()); formData.append("nama_lokasi", lokasiSelected.trim()); - formData.append("status_barang", kondisiFisik === "Baik / Layak" ? "Baik" : "Rusak"); + formData.append("status_barang", kondisiFisik); formData.append("stok", stokAwal); if (tipeUpload === "file" && fotoBarang) { @@ -195,8 +195,10 @@ export default function TambahBarang({ onRefresh }: TambahBarangProps) { className="w-full p-3 text-sm rounded-xl border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-700 text-gray-800 dark:text-white outline-none focus:border-blue-500" > - - + + + + diff --git a/src/components/sidebar/Sidebar.tsx b/src/components/sidebar/Sidebar.tsx index 9b44889..a28f13f 100644 --- a/src/components/sidebar/Sidebar.tsx +++ b/src/components/sidebar/Sidebar.tsx @@ -37,7 +37,7 @@ const menuItems = [ }, { - name: "Transaksi BAST", + name: "BAST", path: "/dashboard/transaksi-bast", icon: , }, diff --git a/src/pages/TransaksiBAST.tsx b/src/pages/TransaksiBAST.tsx index e44e287..1c26aad 100644 --- a/src/pages/TransaksiBAST.tsx +++ b/src/pages/TransaksiBAST.tsx @@ -188,7 +188,7 @@ export default function TransaksiBAST() {

- Transaksi BAST + BAST

Data serah terima barang logistik resmi perusahaan & sekolah. diff --git a/src/routes/MasterData.tsx b/src/routes/MasterData.tsx index 1a58358..9ad55c9 100644 --- a/src/routes/MasterData.tsx +++ b/src/routes/MasterData.tsx @@ -1,7 +1,7 @@ // src/routes/MasterData.tsx import { useState, useEffect } from "react"; import axios from "axios"; -import { Plus, Pencil, Loader2, PackageX } from "lucide-react"; +import { Plus, Pencil, Loader2, PackageX, Search } from "lucide-react"; // COMPONENTS import BarangHero from "../components/masterData/BarangHero"; @@ -27,6 +27,12 @@ export default function MasterData() { const [barangList, setBarangList] = useState([]); const [loading, setLoading] = useState(true); const [selectedQr, setSelectedQr] = useState(null); + const [searchQuery, setSearchQuery] = useState(""); + + const uniqueCategories = [ + "Semua", + ...Array.from(new Set(barangList.map((b) => b.nama_kategori).filter((k): k is string => !!k))), + ]; const muatDataBarang = async () => { setLoading(true); @@ -52,8 +58,10 @@ export default function MasterData() { }, []); const filteredBarang = barangList.filter((barang) => { - if (selectedKategori === "Semua") return true; - return barang.nama_kategori?.toLowerCase() === selectedKategori.toLowerCase(); + const matchKategori = selectedKategori === "Semua" || barang.nama_kategori?.toLowerCase() === selectedKategori.toLowerCase(); + const matchSearch = barang.nama_barang.toLowerCase().includes(searchQuery.toLowerCase()) || + barang.kode_barang.toLowerCase().includes(searchQuery.toLowerCase()); + return matchKategori && matchSearch; }); const handleSaveSuccess = () => { @@ -102,21 +110,38 @@ export default function MasterData() {

)} - {/* 3. FILTER KATEGORI BARANG */} -
- {["Semua", "Elektronik", "Buku dan Modul", "Alat Tulis"].map((kat) => ( - - ))} + {/* 3. FILTER KATEGORI & PENCARIAN BARANG */} +
+ {/* Kategori Filter */} +
+ {uniqueCategories.map((kat) => ( + + ))} +
+ + {/* Search Bar */} +
+
+ +
+ setSearchQuery(e.target.value)} + className="w-full pl-11 pr-4 py-2.5 bg-white border border-gray-200 rounded-xl text-sm outline-none focus:border-blue-500 focus:ring-1 focus:ring-blue-500 transition-all text-gray-800" + /> +
{/* 4. GRID DAFTAR INVENTARIS UTAMA */}