Skip to content

Commit 7406615

Browse files
fix: multiselect was not saving values when it had no focus (#401)
1 parent 107556e commit 7406615

2 files changed

Lines changed: 29 additions & 2 deletions

File tree

packages/mantine-react-table/src/components/inputs/MRT_EditCellTextInput.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,12 @@ export const MRT_EditCellTextInput = <TData extends MRT_RowData>({
164164
value={value}
165165
{...(selectProps as MRT_MultiSelectProps)}
166166
onBlur={handleBlur}
167-
onChange={(value) => {
167+
onChange={(newValue) => {
168168
(selectProps as MRT_MultiSelectProps).onChange?.(value as any);
169-
setValue(value);
169+
setValue(newValue);
170+
// Save if not in focus, otherwise it will be handled by onBlur
171+
if (document.activeElement === editInputRefs.current[cell.id]) return;
172+
saveInputValueToRowCache(newValue as any);
170173
}}
171174
onClick={(e) => {
172175
e.stopPropagation();

packages/mantine-react-table/stories/features/Editing.stories.tsx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,30 @@ export const EditMultiSelectVariant = () => {
421421
);
422422
};
423423

424+
export const EditMultiSelectVariantModal = () => {
425+
const [tableData, setTableData] = useState(data);
426+
427+
const handleSaveRow: MRT_TableOptions<Person>['onEditingRowSave'] = ({
428+
exitEditingMode,
429+
row,
430+
values,
431+
}) => {
432+
tableData[+row.index] = values;
433+
setTableData([...tableData]);
434+
exitEditingMode();
435+
};
436+
437+
return (
438+
<MantineReactTable
439+
columns={multiSelectColumns}
440+
data={tableData}
441+
enableEditing
442+
enableRowActions
443+
onEditingRowSave={handleSaveRow}
444+
/>
445+
);
446+
};
447+
424448
export const EditSelectVariant = () => {
425449
const [tableData, setTableData] = useState(data);
426450

0 commit comments

Comments
 (0)