diff --git a/src/components/pages/inventory/product/detail/InventoryProductDetail.tsx b/src/components/pages/inventory/product/detail/InventoryProductDetail.tsx index 715a7a43..428a0953 100644 --- a/src/components/pages/inventory/product/detail/InventoryProductDetail.tsx +++ b/src/components/pages/inventory/product/detail/InventoryProductDetail.tsx @@ -1,9 +1,16 @@ +'use client'; + import Card from '@/components/Card'; +import { OptionType } from '@/components/input/SelectInput'; import { FormHeader } from '@/components/helper/form/FormHeader'; +import ButtonFilter from '@/components/helper/ButtonFilter'; import RequirePermission from '@/components/helper/RequirePermission'; +import { useModal } from '@/components/Modal'; +import StockLogFilterModal from '@/components/pages/inventory/product/detail/StockLogFilterModal'; import StockLogTable from '@/components/pages/inventory/product/detail/StockLogTable'; import StockProductWarehouseTable from '@/components/pages/inventory/product/detail/StockProductWarehouseTable'; import { formatCurrency, formatNumber } from '@/lib/helper'; +import { useTableFilter } from '@/services/hooks/useTableFilter'; import { InventoryProduct } from '@/types/api/inventory/product'; import { useMemo } from 'react'; @@ -12,6 +19,35 @@ const InventoryProductDetail = ({ }: { inventoryProduct?: InventoryProduct; }) => { + const filterModal = useModal(); + + const { state: filterState, updateFilter } = useTableFilter<{ + warehouse_ids: OptionType[]; + }>({ + initial: { + warehouse_ids: [], + }, + persist: true, + storeName: 'inventory-product-stock-log-filter', + }); + + const filteredProductWarehouses = useMemo(() => { + const warehouses = inventoryProduct?.product_warehouses ?? []; + if (!filterState.warehouse_ids?.length) return warehouses; + const selectedIds = new Set(filterState.warehouse_ids.map((w) => w.value)); + return warehouses.filter((pw) => selectedIds.has(pw.warehouse_id)); + }, [inventoryProduct?.product_warehouses, filterState.warehouse_ids]); + + const filterSubmitHandler = (values: { + warehouse_ids: OptionType[]; + }) => { + updateFilter('warehouse_ids', values.warehouse_ids, true); + }; + + const filterResetHandler = () => { + updateFilter('warehouse_ids', [], true); + }; + return (
- {inventoryProduct?.product_warehouses?.map((productWarehouse) => ( +
+ +
+ {filteredProductWarehouses.map((productWarehouse) => ( ))}
+ +
); };