import { Head } from '@inertiajs/react'; import { format } from 'date-fns'; import { useMemo } from 'react'; import { DataTable, FilterPopover } from '@/components/data-display'; import { DatePicker } from '@/components/inputs'; import { PageHeader } from '@/components/layout'; import { Combobox, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList, } from '@/components/ui/combobox'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { useServerTable } from '@/hooks/use-server-table'; import { index as stockMutationsIndex } from '@/routes/admin/manage/stock-mutations'; import { columns } from './columns'; import type { StockMutation } from './columns'; type FilterOption = { id: number; name: string; }; type SelectOption = { value: string; label: string; }; type Props = { mutations: { data: StockMutation[]; current_page: number; last_page: number; per_page: number; total: number; }; filters: { product_id?: string; type?: string; stock_quality?: string; date_from?: string; date_to?: string; }; filterOptions: { products: FilterOption[]; typeOptions: SelectOption[]; stockQualityOptions: SelectOption[]; }; }; export default function StockMutationIndex({ mutations, filters, filterOptions, }: Props) { const pagination = { current_page: mutations.current_page, last_page: mutations.last_page, per_page: mutations.per_page, total: mutations.total, }; const { search, filterOpen, setFilterOpen, handlePageChange, handlePerPageChange, handleSearchChange, applyFilter, clearFilters, } = useServerTable({ route: () => stockMutationsIndex.url(), pagination, filters, }); const selectedProduct = useMemo( () => filterOptions.products.find( (p) => String(p.id) === filters.product_id, ) ?? null, [filterOptions.products, filters.product_id], ); const filterToolbar = (
p.name} value={selectedProduct} onValueChange={(value) => applyFilter('product_id', value ? String(value.id) : '') } > Tidak ada produk ditemukan. {(product) => ( {product.name} )}
applyFilter( 'date_from', date ? format(date, 'yyyy-MM-dd') : '', ) } placeholder="Pilih tanggal mulai" />
applyFilter( 'date_to', date ? format(date, 'yyyy-MM-dd') : '', ) } placeholder="Pilih tanggal akhir" />
); return ( <>
Catatan seluruh pergerakan stok produk: restock, penjualan, stok opname, transfer kualitas, dan penyesuaian varian.

} />
); }