Fix board column title edit optimistic rendering #1745 (#1780)

adding update of state as well

Co-authored-by: kramer <david.kramer@gmail.com>
This commit is contained in:
David Kramer
2023-09-30 18:29:41 +02:00
committed by GitHub
parent 6871cd0df3
commit e12e7754e4

View File

@ -76,15 +76,34 @@ export const BoardColumnEditTitleMenu = ({
color, color,
}: BoardColumnEditTitleMenuProps) => { }: BoardColumnEditTitleMenuProps) => {
const [internalValue, setInternalValue] = useState(title); const [internalValue, setInternalValue] = useState(title);
const [, setBoardColumns] = useRecoilState(boardColumnsState);
const debouncedOnUpdateTitle = debounce( const debouncedOnUpdateTitle = debounce(
(newTitle) => onTitleEdit(newTitle, color), (newTitle) => onTitleEdit(newTitle, color),
200, 200,
); );
const handleChange = (event: ChangeEvent<HTMLInputElement>) => { const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
setInternalValue(event.target.value); const title = event.target.value;
debouncedOnUpdateTitle(event.target.value); setInternalValue(title);
debouncedOnUpdateTitle(title);
setBoardColumns((previousBoardColumns) =>
previousBoardColumns.map((column) =>
column.id === stageId ? { ...column, title: title } : column,
),
);
};
const handleColorChange = (newColor: ThemeColor) => {
onTitleEdit(title, newColor);
onClose();
setBoardColumns((previousBoardColumns) =>
previousBoardColumns.map((column) =>
column.id === stageId
? { ...column, colorCode: newColor ? newColor : 'gray' }
: column,
),
);
}; };
const [, setBoardColumns] = useRecoilState(boardColumnsState);
const handleDelete = useCallback(() => { const handleDelete = useCallback(() => {
setBoardColumns((previousBoardColumns) => setBoardColumns((previousBoardColumns) =>
@ -109,8 +128,7 @@ export const BoardColumnEditTitleMenu = ({
<MenuItemSelectColor <MenuItemSelectColor
key={colorOption.name} key={colorOption.name}
onClick={() => { onClick={() => {
onTitleEdit(title, colorOption.id); handleColorChange(colorOption.id);
onClose();
}} }}
color={colorOption.id} color={colorOption.id}
selected={colorOption.id === color} selected={colorOption.id === color}