mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-23 14:55:44 +00:00
refactor(FE): Exclude selected products from product options
This commit is contained in:
@@ -467,7 +467,7 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
formik.setFieldValue('products', newProducts);
|
formik.setFieldValue('products', newProducts);
|
||||||
}, []);
|
}, [formik.values.products]);
|
||||||
|
|
||||||
const removeProduct = useCallback(
|
const removeProduct = useCallback(
|
||||||
(i: number) => {
|
(i: number) => {
|
||||||
@@ -476,12 +476,14 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
);
|
);
|
||||||
formik.setFieldValue('products', updatedProducts);
|
formik.setFieldValue('products', updatedProducts);
|
||||||
|
|
||||||
|
setSelectedProducts([]);
|
||||||
|
|
||||||
if (productQtyErrorShown) {
|
if (productQtyErrorShown) {
|
||||||
toast.dismiss();
|
toast.dismiss();
|
||||||
setProductQtyErrorShown(false);
|
setProductQtyErrorShown(false);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[formik.values.products, productQtyErrorShown]
|
[formik.values.products, productQtyErrorShown, setSelectedProducts]
|
||||||
);
|
);
|
||||||
|
|
||||||
const bulkRemoveProduct = useCallback(() => {
|
const bulkRemoveProduct = useCallback(() => {
|
||||||
@@ -725,7 +727,20 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
[handleDeliveryCostPerItemChange]
|
[handleDeliveryCostPerItemChange]
|
||||||
);
|
);
|
||||||
|
|
||||||
// UTILITY FUNCTIONS
|
const getAvailableProductOptions = useCallback(
|
||||||
|
(currentIdx: number) => {
|
||||||
|
const selectedProductIds =
|
||||||
|
formik.values.products
|
||||||
|
?.filter((p, idx) => idx !== currentIdx && p.product_id !== 0)
|
||||||
|
.map((p) => p.product_id) || [];
|
||||||
|
|
||||||
|
return productWarehouseOptions.filter(
|
||||||
|
(pw) => !selectedProductIds.includes(pw.product_id)
|
||||||
|
);
|
||||||
|
},
|
||||||
|
[formik.values.products, productWarehouseOptions]
|
||||||
|
);
|
||||||
|
|
||||||
const getFilteredProductWarehouseOptions = useCallback(() => {
|
const getFilteredProductWarehouseOptions = useCallback(() => {
|
||||||
return (
|
return (
|
||||||
formik.values.products
|
formik.values.products
|
||||||
@@ -1468,7 +1483,7 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
required
|
required
|
||||||
value={product.product ?? undefined}
|
value={product.product ?? undefined}
|
||||||
onChange={(val) => handleProductChange(idx, val)}
|
onChange={(val) => handleProductChange(idx, val)}
|
||||||
options={productWarehouseOptions}
|
options={getAvailableProductOptions(idx)}
|
||||||
onInputChange={setProductWarehouseSelectInputValue}
|
onInputChange={setProductWarehouseSelectInputValue}
|
||||||
onMenuScrollToBottom={loadMoreProductWarehouses}
|
onMenuScrollToBottom={loadMoreProductWarehouses}
|
||||||
isLoading={isLoadingProductWarehouses}
|
isLoading={isLoadingProductWarehouses}
|
||||||
|
|||||||
Reference in New Issue
Block a user