From e388d9097653ea98bda7379548da8673e353f139 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tha=C3=AFs?= Date: Wed, 6 Dec 2023 12:06:46 +0100 Subject: [PATCH] fix: fix Pipeline Step title and color update in board (#2849) Fixes a bug where editing a pipeline step's title or color in the board changes the column's label to the column's uuid and the color to gray. --- .../record-board/components/RecordBoard.tsx | 6 +++++- .../components/RecordBoardColumn.tsx | 13 ++++++------ .../RecordBoardColumnDropdownMenu.tsx | 3 --- .../RecordBoardColumnEditTitleMenu.tsx | 13 ++++++------ .../components/RecordBoardColumnHeader.tsx | 7 ------- .../contexts/BoardColumnContext.ts | 7 +++++-- .../src/pages/opportunities/Opportunities.tsx | 21 ++++++++++--------- 7 files changed, 35 insertions(+), 35 deletions(-) diff --git a/front/src/modules/ui/object/record-board/components/RecordBoard.tsx b/front/src/modules/ui/object/record-board/components/RecordBoard.tsx index 5db4ffe58..6a7458051 100644 --- a/front/src/modules/ui/object/record-board/components/RecordBoard.tsx +++ b/front/src/modules/ui/object/record-board/components/RecordBoard.tsx @@ -28,7 +28,11 @@ export type RecordBoardProps = { boardOptions: BoardOptions; onColumnAdd?: (boardColumn: BoardColumnDefinition) => void; onColumnDelete?: (boardColumnId: string) => void; - onEditColumnTitle: (columnId: string, title: string, color: string) => void; + onEditColumnTitle: (params: { + columnId: string; + title: string; + color: string; + }) => void; }; const StyledBoard = styled.div` diff --git a/front/src/modules/ui/object/record-board/components/RecordBoardColumn.tsx b/front/src/modules/ui/object/record-board/components/RecordBoardColumn.tsx index 25671a4a1..3460c3bf4 100644 --- a/front/src/modules/ui/object/record-board/components/RecordBoardColumn.tsx +++ b/front/src/modules/ui/object/record-board/components/RecordBoardColumn.tsx @@ -51,7 +51,11 @@ type RecordBoardColumnProps = { recordBoardOptions: BoardOptions; recordBoardColumnTotal: number; onDelete?: (columnId: string) => void; - onTitleEdit: (columnId: string, title: string, color: string) => void; + onTitleEdit: (params: { + columnId: string; + title: string; + color: string; + }) => void; }; const BoardColumnCardsContainer = ({ @@ -82,10 +86,6 @@ export const RecordBoardColumn = ({ recordBoardCardIdsByColumnIdFamilyState(recordBoardColumnId), ); - const handleTitleEdit = (title: string, color: string) => { - onTitleEdit(recordBoardColumnId, title, color); - }; - const isFirstColumn = columnDefinition.position === 0; return ( @@ -95,6 +95,8 @@ export const RecordBoardColumn = ({ columnDefinition: columnDefinition, isFirstColumn: columnDefinition.position === 0, isLastColumn: columnDefinition.position === recordBoardColumnTotal - 1, + onTitleEdit: ({ title, color }) => + onTitleEdit({ columnId: recordBoardColumnId, title, color }), }} > @@ -104,7 +106,6 @@ export const RecordBoardColumn = ({ recordBoardColumnId={recordBoardColumnId} columnDefinition={columnDefinition} onDelete={onDelete} - onTitleEdit={handleTitleEdit} /> {cardIds.map((cardId, index) => ( diff --git a/front/src/modules/ui/object/record-board/components/RecordBoardColumnDropdownMenu.tsx b/front/src/modules/ui/object/record-board/components/RecordBoardColumnDropdownMenu.tsx index 1920b3359..8411c568b 100644 --- a/front/src/modules/ui/object/record-board/components/RecordBoardColumnDropdownMenu.tsx +++ b/front/src/modules/ui/object/record-board/components/RecordBoardColumnDropdownMenu.tsx @@ -26,7 +26,6 @@ const StyledMenuContainer = styled.div` type RecordBoardColumnDropdownMenuProps = { onClose: () => void; onDelete?: (id: string) => void; - onTitleEdit: (title: string, color: string) => void; stageId: string; }; @@ -35,7 +34,6 @@ type Menu = 'actions' | 'add' | 'title'; export const RecordBoardColumnDropdownMenu = ({ onClose, onDelete, - onTitleEdit, stageId, }: RecordBoardColumnDropdownMenuProps) => { const [currentMenu, setCurrentMenu] = useState('actions'); @@ -127,7 +125,6 @@ export const RecordBoardColumnDropdownMenu = ({ theme.spacing(1)}; @@ -42,7 +44,6 @@ type RecordBoardColumnEditTitleMenuProps = { onClose: () => void; onDelete?: (id: string) => void; title: string; - onTitleEdit: (title: string, color: string) => void; color: ThemeColor; stageId: string; }; @@ -51,16 +52,16 @@ export const RecordBoardColumnEditTitleMenu = ({ onClose, onDelete, stageId, - onTitleEdit, title, color, }: RecordBoardColumnEditTitleMenuProps) => { const [internalValue, setInternalValue] = useState(title); + const { onTitleEdit } = useContext(BoardColumnContext) || {}; const { setBoardColumns } = useRecordBoard(); const debouncedOnUpdateTitle = debounce( - (newTitle) => onTitleEdit(newTitle, color), + (newTitle) => onTitleEdit?.({ title: newTitle, color }), 200, ); const handleChange = (event: ChangeEvent) => { @@ -76,7 +77,7 @@ export const RecordBoardColumnEditTitleMenu = ({ }; const handleColorChange = (newColor: ThemeColor) => { - onTitleEdit(title, newColor); + onTitleEdit?.({ title, color: newColor }); onClose(); setBoardColumns((previousBoardColumns) => previousBoardColumns.map((column) => diff --git a/front/src/modules/ui/object/record-board/components/RecordBoardColumnHeader.tsx b/front/src/modules/ui/object/record-board/components/RecordBoardColumnHeader.tsx index 2337a1400..9a8eff923 100644 --- a/front/src/modules/ui/object/record-board/components/RecordBoardColumnHeader.tsx +++ b/front/src/modules/ui/object/record-board/components/RecordBoardColumnHeader.tsx @@ -52,14 +52,12 @@ type RecordBoardColumnHeaderProps = { recordBoardColumnId: string; columnDefinition: BoardColumnDefinition; onDelete?: (columnId: string) => void; - onTitleEdit: (columnId: string, title: string, color: string) => void; }; export const RecordBoardColumnHeader = ({ recordBoardColumnId, columnDefinition, onDelete, - onTitleEdit, }: RecordBoardColumnHeaderProps) => { const [isBoardColumnMenuOpen, setIsBoardColumnMenuOpen] = useState(false); const [isHeaderHovered, setIsHeaderHovered] = useState(false); @@ -89,10 +87,6 @@ export const RecordBoardColumnHeader = ({ recordBoardCardIdsByColumnIdFamilyState(recordBoardColumnId), ); - const handleTitleEdit = (title: string, color: string) => { - onTitleEdit(recordBoardColumnId, title, color); - }; - return ( <> )} diff --git a/front/src/modules/ui/object/record-board/contexts/BoardColumnContext.ts b/front/src/modules/ui/object/record-board/contexts/BoardColumnContext.ts index 2a01e79de..d1b3b57cb 100644 --- a/front/src/modules/ui/object/record-board/contexts/BoardColumnContext.ts +++ b/front/src/modules/ui/object/record-board/contexts/BoardColumnContext.ts @@ -2,11 +2,14 @@ import { createContext } from 'react'; import { BoardColumnDefinition } from '../types/BoardColumnDefinition'; -type BoardColumn = { +type BoardColumnContextProps = { id: string; columnDefinition: BoardColumnDefinition; isFirstColumn: boolean; isLastColumn: boolean; + onTitleEdit: (params: { title: string; color: string }) => void; }; -export const BoardColumnContext = createContext(null); +export const BoardColumnContext = createContext( + null, +); diff --git a/front/src/pages/opportunities/Opportunities.tsx b/front/src/pages/opportunities/Opportunities.tsx index 0a4146a8c..1cfb6790a 100644 --- a/front/src/pages/opportunities/Opportunities.tsx +++ b/front/src/pages/opportunities/Opportunities.tsx @@ -25,17 +25,18 @@ export const Opportunities = () => { objectNameSingular: 'pipelineStep', }); - const handleEditColumnTitle = ( - boardColumnId: string, - newTitle: string, - newColor: string, - ) => { + const handleEditColumnTitle = ({ + columnId, + title, + color, + }: { + columnId: string; + title: string; + color: string; + }) => { updateOnePipelineStep?.({ - idToUpdate: boardColumnId, - input: { - name: newTitle, - color: newColor, - }, + idToUpdate: columnId, + input: { name: title, color }, }); };