From 9e4c94d09eddd35bf3143e1b7eec279406ca837e Mon Sep 17 00:00:00 2001 From: Nastya Date: Sun, 16 Jun 2024 13:48:49 +0300 Subject: [PATCH] =?UTF-8?q?amo=20fix=20types,=20=D0=B2=D1=8B=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4=20=D0=BD=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8=D0=B9=20?= =?UTF-8?q?=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20id,=20=D1=83=D0=B4=D0=B0?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=8B=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B2=D0=BE=D0=BF=D1=80=D0=BE=D1=81?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B8=20=D1=82=D0=B5=D0=B3=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/integration.ts | 22 +-- .../CustomRadioGroup/CustomRadioGroup.tsx | 36 ++-- src/components/CustomSelect/CustomSelect.tsx | 16 +- .../IntegrationsModal/AmoCRMModal.tsx | 155 ++++++++++++------ .../AmoQuestions/AmoQuestions.tsx | 19 ++- .../Item/AnswerItem/AnswerItem.tsx | 66 +++++--- .../AmoQuestions/Item/Item.tsx | 27 ++- .../ItemDetailsView/ItemDetailsView.tsx | 12 +- .../ItemsSelectionView/ItemsSelectionView.tsx | 8 +- .../AmoRemoveAccount/AmoDeleteTagQuestion.tsx | 49 ++++++ .../IntegrationsModal/AmoTags/AmoTags.tsx | 24 ++- .../TagsDetailsView/TagsDetailsView.tsx | 10 +- .../DealPerformers/DealPerformers.tsx | 11 +- .../PipelineSteps/PipelineSteps.tsx | 37 +++-- .../IntegrationsModal/Pipelines/Pipelines.tsx | 35 ++-- .../SettingsBlock/SettingItem/SettingItem.tsx | 6 +- .../IntegrationsModal/types.ts | 13 +- .../IntegrationsModal/useAmoIntegration.ts | 42 +++-- 18 files changed, 394 insertions(+), 194 deletions(-) create mode 100644 src/pages/IntegrationsPage/IntegrationsModal/AmoRemoveAccount/AmoDeleteTagQuestion.tsx diff --git a/src/api/integration.ts b/src/api/integration.ts index a23fd89a..09d5b2f5 100644 --- a/src/api/integration.ts +++ b/src/api/integration.ts @@ -1,3 +1,4 @@ +import { QuestionKeys } from "@/pages/IntegrationsPage/IntegrationsModal/types"; import { makeRequest } from "@api/makeRequest"; import { parseAxiosError } from "@utils/parse-error"; @@ -225,29 +226,13 @@ export const getPipelines = async ({ }; //получение настроек интеграции -type QuestionID = Record +export type QuestionID = Record export type IntegrationRules = { PipelineID: number; StepID: number; PerformerID?: number; - FieldsRule: { - Lead: [ - { - QuestionID: QuestionID; - } - ] | null, - Company: [ - { - QuestionID: QuestionID; - } - ] | null, - Customer: [ - { - QuestionID: QuestionID; - } - ] | null, - }; + FieldsRule: FieldsRule; TagsToAdd: { Lead: number[] | null; Contact: number[] | null; @@ -255,6 +240,7 @@ export type IntegrationRules = { Customer: number[] | null; } }; +export type FieldsRule = Record, null | [{QuestionID: QuestionID;}]> export const getIntegrationRules = async ( quizID: string, diff --git a/src/components/CustomRadioGroup/CustomRadioGroup.tsx b/src/components/CustomRadioGroup/CustomRadioGroup.tsx index f7ba0a8c..3de16dd3 100644 --- a/src/components/CustomRadioGroup/CustomRadioGroup.tsx +++ b/src/components/CustomRadioGroup/CustomRadioGroup.tsx @@ -10,18 +10,15 @@ import { RadioGroup, Radio, } from "@mui/material"; +import { MinifiedData, TagKeys } from "@/pages/IntegrationsPage/IntegrationsModal/types"; -type Items = { - id: string; - title: string; - subTitle?: string; -} type CustomRadioGroupProps = { - items: Items[] | []; + items: MinifiedData[] | []; selectedItemId?: string | null; setSelectedItem: (value: string | null) => void; handleScroll: () => void; + activeScope?: TagKeys; }; export const CustomRadioGroup: FC = ({ @@ -29,6 +26,7 @@ export const CustomRadioGroup: FC = ({ selectedItemId = "", setSelectedItem, handleScroll, + activeScope, }) => { const theme = useTheme(); @@ -39,6 +37,14 @@ export const CustomRadioGroup: FC = ({ return null; }, [selectedItemId, items]) + const filteredItems = useMemo(() => { + let newArray = items + if (activeScope !== undefined) newArray =newArray.filter(item => { + return item.entity === activeScope + }) + return newArray + }, items) + const onScroll = React.useCallback((e: React.UIEvent) => { const scrollHeight = e.currentTarget.scrollHeight; const scrollTop = e.currentTarget.scrollTop; @@ -52,9 +58,9 @@ export const CustomRadioGroup: FC = ({ const formControlLabels = useMemo(() => { - if (items.length !== 0) { - return items.map( item => - + = ({ borderRadius: "12px", margin: 0, backgroundColor: - currentItem?.id === item.id + currentItem?.id === item.id ? theme.palette.background.default : theme.palette.common.white, + "&.MuiFormControlLabel-root > .MuiTypography-root": { + width: "200px", + overflow: "hidden", + textOverflow: "ellipsis" + } + }} value={item.id} control={ @@ -100,7 +112,7 @@ export const CustomRadioGroup: FC = ({ Нет элементов ); - }, [items]); + }, [filteredItems, selectedItemId]); return ( = ({ ) => setSelectedItem(target.value)} onScroll={onScroll} > diff --git a/src/components/CustomSelect/CustomSelect.tsx b/src/components/CustomSelect/CustomSelect.tsx index 929ed823..700287c4 100644 --- a/src/components/CustomSelect/CustomSelect.tsx +++ b/src/components/CustomSelect/CustomSelect.tsx @@ -13,22 +13,15 @@ import { } from "@mui/material"; import "./CustomSelect.css"; import arrow_down from "../../assets/icons/arrow_down.svg"; - - -type Items = { - id: string; - title: string; - subTitle: string; -} +import { MinifiedData } from "@/pages/IntegrationsPage/IntegrationsModal/types"; type CustomSelectProps = { - items: Items[] | []; + items: MinifiedData[] | []; selectedItemId: string | null; setSelectedItem: (value: string | null) => void; handleScroll: () => void; }; - export const CustomSelect: FC = ({ items, selectedItemId, @@ -39,7 +32,6 @@ export const CustomSelect: FC = ({ const isMobile = useMediaQuery(theme.breakpoints.down(600)); const ref = useRef(null); - const [opened, setOpened] = useState(false); const toggleOpened = useCallback(() => { @@ -116,7 +108,7 @@ export const CustomSelect: FC = ({ нет данных ); - }, [items]); + }, [items, selectedItemId]); return ( @@ -171,7 +163,7 @@ export const CustomSelect: FC = ({