diff --git a/src/components/pages/inventory/product/detail/StockLogFilterModal.tsx b/src/components/pages/inventory/product/detail/StockLogFilterModal.tsx new file mode 100644 index 00000000..db93236f --- /dev/null +++ b/src/components/pages/inventory/product/detail/StockLogFilterModal.tsx @@ -0,0 +1,115 @@ +'use client'; + +import Button from '@/components/Button'; +import SelectInputCheckbox from '@/components/input/SelectInputCheckbox'; +import { OptionType } from '@/components/input/SelectInput'; +import Modal from '@/components/Modal'; +import { ProductWarehouseStock } from '@/types/api/inventory/product'; +import { Icon } from '@iconify/react'; +import { useFormik } from 'formik'; +import { RefObject, useCallback } from 'react'; + +interface StockLogFilterModalProps { + ref: RefObject; + productWarehouses: ProductWarehouseStock[]; + initialValues: { + warehouse_ids: OptionType[]; + }; + onSubmit: (values: { warehouse_ids: OptionType[] }) => void; + onReset: () => void; +} + +const StockLogFilterModal = ({ + ref, + productWarehouses, + initialValues, + onSubmit, + onReset, +}: StockLogFilterModalProps) => { + const closeModalHandler = () => { + ref.current?.close(); + }; + + const warehouseOptions: OptionType[] = productWarehouses.map( + (pw) => ({ + label: pw.warehouse_name, + value: pw.warehouse_id, + }) + ); + + const formik = useFormik({ + initialValues, + enableReinitialize: true, + onSubmit: (values) => { + onSubmit(values); + closeModalHandler(); + }, + }); + + const { resetForm } = formik; + + const formikResetHandler = useCallback(() => { + resetForm({ values: { warehouse_ids: [] } }); + onReset(); + closeModalHandler(); + }, [resetForm, onReset]); + + return ( + +
+
+
+ +

Filter Stock Log

+
+ +
+ +
+ + formik.setFieldValue('warehouse_ids', val as OptionType[]) + } + isMulti + /> +
+ +
+ + +
+
+
+ ); +}; + +export default StockLogFilterModal;