Skip to content

Commit b069713

Browse files
committed
Provide default setter for date columns
1 parent 3af3e7f commit b069713

File tree

2 files changed

+28
-8
lines changed

2 files changed

+28
-8
lines changed

src/components/Grid/ColumnTypes/dateColumn.tsx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
GridValidRowModel as RowModel,
66
GridValueGetter as ValueGetter,
77
} from '@mui/x-data-grid';
8-
import { Nil } from '@seedcompany/common';
8+
import { isObjectLike, Nil } from '@seedcompany/common';
99
import { DateTime } from 'luxon';
1010
import { DateFilter } from '~/api/schema.graphql';
1111
import { CalendarDate, ISOString, unwrapSecured } from '~/common';
@@ -21,6 +21,7 @@ export const dateColumn = <Row extends RowLike>() =>
2121
column<Row>()({
2222
type: 'date',
2323
valueGetter: dateColumn.valueGetter(defaultValueGetter),
24+
valueSetter: defaultValueSetter,
2425
filterOperators,
2526
renderHeaderFilter: GridHeaderAddFilterButton,
2627
});
@@ -59,6 +60,23 @@ dateColumn.valueGetter =
5960
const defaultValueGetter: DateValueGetterInput = (_, row, column) =>
6061
unwrapSecured(row[column.field]);
6162

63+
const defaultValueSetter = <R extends RowModel>(
64+
raw: Date | null,
65+
row: R,
66+
column: ColDef<R>
67+
) => {
68+
const value = raw ? CalendarDate.fromJSDate(raw) : null;
69+
const field = row[column.field];
70+
const wrapSecured =
71+
isObjectLike(field) &&
72+
'__typename' in field &&
73+
typeof field.__typename === 'string' &&
74+
field.__typename.startsWith('Secured')
75+
? { ...field, value }
76+
: value;
77+
return { ...row, [column.field]: wrapSecured };
78+
};
79+
6280
const filterOpNameMap: Record<string, keyof DateFilter> = {
6381
after: 'after',
6482
onOrAfter: 'afterInclusive',

yarn.lock

Lines changed: 9 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)