From 268a58d39f9066856bfef149d0f89baf8db74dc2 Mon Sep 17 00:00:00 2001 From: fakz9 Date: Sun, 19 May 2024 04:07:59 +0300 Subject: [PATCH] feat: deal product services --- .../ServiceWithPriceInput.tsx | 31 +++++++++---------- .../LeadsPage/modals/AddDealProductModal.tsx | 1 + .../LeadsPage/modals/AddDealServiceModal.tsx | 1 + 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/components/ServiceWithPriceInput/ServiceWithPriceInput.tsx b/src/components/ServiceWithPriceInput/ServiceWithPriceInput.tsx index 9337d71..ef5009b 100644 --- a/src/components/ServiceWithPriceInput/ServiceWithPriceInput.tsx +++ b/src/components/ServiceWithPriceInput/ServiceWithPriceInput.tsx @@ -1,10 +1,9 @@ import {ObjectSelectProps} from "../ObjectSelect/ObjectSelect.tsx"; import {ServiceSchema} from "../../client"; -import {ActionIcon, Flex, FlexProps, NumberInput, NumberInputProps, rem} from "@mantine/core"; +import {Flex, FlexProps, NumberInput, NumberInputProps, rem} from "@mantine/core"; import {FC, useEffect, useRef, useState} from "react"; import ServiceSelectNew from "../Selects/ServiceSelectNew/ServiceSelectNew.tsx"; import {ServiceType} from "../../shared/enums/ServiceType.ts"; -import {IconReload, IconTrash, IconUpload} from "@tabler/icons-react"; type ServiceProps = Omit, 'data'>; type PriceProps = NumberInputProps; @@ -14,14 +13,16 @@ type Props = { priceProps: PriceProps, quantity: number, containerProps: FlexProps, - filterType?: ServiceType + filterType?: ServiceType, + lockOnEdit?: boolean } const ServiceWithPriceInput: FC = ({ serviceProps, priceProps, quantity, containerProps, - filterType = ServiceType.PRODUCT_SERVICE + filterType = ServiceType.PRODUCT_SERVICE, + lockOnEdit = true }) => { const [price, setPrice] = useState( typeof priceProps.value === 'number' ? priceProps.value : undefined); @@ -48,23 +49,21 @@ const ServiceWithPriceInput: FC = ({ setPrice(value); } useEffect(() => { - if (isFirstRender.current) return; + if (isFirstRender.current && lockOnEdit) return; setPriceBasedOnQuantity(); }, [quantity]); useEffect(() => { - if (isFirstRender.current) return; + if (isFirstRender.current && lockOnEdit) return; if (!priceProps.onChange || typeof price === 'undefined') return; priceProps.onChange(price); }, [price]); useEffect(() => { - // if (!isFirstRender) setPrice(0); - // if (isFirstRender.current && price) return; if (!serviceProps.onChange || !service) return; - if (price && isFirstRender.current) return; + if (price && isFirstRender.current && lockOnEdit) return; setPriceBasedOnService(); serviceProps.onChange(service); }, [service]); @@ -73,9 +72,7 @@ const ServiceWithPriceInput: FC = ({ isFirstRender.current = false; }, []); - const onReload = () => { - setPriceBasedOnService(); - } + return ( = ({ {...containerProps} > - - onReload()}/> - + {/**/} + {/* onReload()}/>*/} + {/**/} diff --git a/src/pages/LeadsPage/modals/AddDealProductModal.tsx b/src/pages/LeadsPage/modals/AddDealProductModal.tsx index 83165f2..5816027 100644 --- a/src/pages/LeadsPage/modals/AddDealProductModal.tsx +++ b/src/pages/LeadsPage/modals/AddDealProductModal.tsx @@ -55,6 +55,7 @@ const AddDealProductModal = ({ placeholder={"Выберите товар"} label={"Товар"} clientId={innerProps.clientId} + disabled={isEditing} {...form.getInputProps('product')} />