Skip to content

Commit b2249c7

Browse files
committed
fix timezone issue with time fields in editable grid
1 parent aeb1057 commit b2249c7

2 files changed

Lines changed: 14 additions & 4 deletions

File tree

packages/components/src/internal/components/editable/DateInputCell.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@ import React, { FC, memo, useCallback } from 'react';
33
import { QueryColumn } from '../../../public/QueryColumn';
44

55
import { DatePickerInput } from '../forms/input/DatePickerInput';
6-
import { formatDate, formatDateTime, formatTime, isDateTimeCol } from '../../util/Date';
6+
import {
7+
formatDate,
8+
formatDateTime,
9+
getTimeValueFromDatePickerInput,
10+
isDateTimeCol
11+
} from '../../util/Date';
712

813
import { MODIFICATION_TYPES, SELECTION_TYPES } from './constants';
914
import { ValueDescriptor } from './models';
@@ -40,14 +45,14 @@ export const DateInputCell: FC<DateInputCellProps> = memo(props => {
4045
if (newDate && typeof newDate === 'string') display = newDate;
4146
else if (newDate && newDate instanceof Date) {
4247
display = col.isTimeColumn
43-
? formatTime(newDate)
48+
? getTimeValueFromDatePickerInput(newDate, col)
4449
: isDateTimeCol(col)
4550
? formatDateTime(newDate)
4651
: formatDate(newDate);
4752
}
4853
}
4954

50-
modifyCell(colIdx, rowIdx, [{ raw: newDate, display }], MODIFICATION_TYPES.REPLACE, col);
55+
modifyCell(colIdx, rowIdx, [{ raw: col.isTimeColumn ? display : newDate, display }], MODIFICATION_TYPES.REPLACE, col);
5156
},
5257
[col, colIdx, modifyCell, rowIdx]
5358
);

packages/components/src/internal/util/Date.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,13 +199,18 @@ export function getDateFromISO(
199199

200200
export function formatDateTimeDisplayValueForUpdate(vd: ValueDescriptor, queryColumn: QueryColumn): string {
201201
const isoValue = vd?.raw;
202-
if (!isoValue) return null;
202+
if (!isoValue || typeof isoValue !== 'string') return null;
203203
const date = getDateFromISO(isoValue, queryColumn);
204204
const { dateFormat, timeFormat } = getPickerDateAndTimeFormat(queryColumn, false, date);
205205
if (queryColumn.isTimeColumn) return formatTime(isoValue, timeFormat);
206206
return formatDate(date, null, dateFormat);
207207
}
208208

209+
export function getTimeValueFromDatePickerInput(date: Date, queryColumn: QueryColumn): string {
210+
const { timeFormat } = getPickerDateAndTimeFormat(queryColumn, false, date);
211+
return formatTime(date, timeFormat);
212+
}
213+
209214
export function getColDateFormat(column: QueryColumn, dateFormat?: string, dateOnly?: boolean): string {
210215
let rawFormat = dateFormat || column?.format;
211216
if (!rawFormat) {

0 commit comments

Comments
 (0)