Skip to content

Commit 42682ad

Browse files
atrakhConvex, Inc.
authored andcommitted
dashboard: fix CellEditor not allowing to clear inferred dates (#42961)
GitOrigin-RevId: 64ee37b6c8691bbad30b9dc9fb8e9a1585db045a
1 parent 1f20196 commit 42682ad

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

npm-packages/dashboard-common/src/features/data/components/FilterEditor/DateTimePicker.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ type DateTimePickerProps = {
1919
onError?: (error: string | undefined) => void;
2020
onKeyDown?: (
2121
event: React.KeyboardEvent<HTMLInputElement>,
22-
date: Date,
22+
date: Date | undefined,
2323
) => void;
2424
};
2525

@@ -211,9 +211,13 @@ export function DateTimePicker({
211211
};
212212

213213
const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
214+
if (!onKeyDown) return;
215+
214216
const parsedDate = parse(inputValue, dateTimeFormat, new Date());
215217
if (!Number.isNaN(parsedDate.getTime())) {
216-
onKeyDown?.(event, parsedDate);
218+
onKeyDown(event, parsedDate);
219+
} else if (inputValue.trim() === "" && event.key === "Enter") {
220+
onKeyDown(event, undefined);
217221
}
218222
};
219223

npm-packages/dashboard-common/src/features/data/components/Table/DataCell/CellEditor.tsx

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ export function CellEditor({
8181
unset
8282
</div>
8383
)}
84-
{showAsDate && isTimestampLike ? (
84+
{showAsDate && isTimestampLike && typeof editedValue === "number" ? (
8585
<div className="w-full">
8686
<DateTimePicker
8787
date={new Date(editedValue as number)}
@@ -91,8 +91,18 @@ export function CellEditor({
9191
onError={setError}
9292
onKeyDown={(e, date) => {
9393
if (e.key === "Enter") {
94-
setEditedValue(date.getTime());
95-
void saveEditedValue(date.getTime());
94+
if (date === undefined) {
95+
// User cleared the input - check if undefined is allowed
96+
if (!allowTopLevelUndefined) {
97+
setError("This field is required and cannot be unset");
98+
return;
99+
}
100+
setEditedValue(UNDEFINED_PLACEHOLDER);
101+
void saveEditedValue(UNDEFINED_PLACEHOLDER);
102+
} else {
103+
setEditedValue(date.getTime());
104+
void saveEditedValue(date.getTime());
105+
}
96106
}
97107
}}
98108
/>

0 commit comments

Comments
 (0)