Skip to content

Commit 42c8bb1

Browse files
committed
date/time formatting priority fixes
1 parent ddeee1e commit 42c8bb1

7 files changed

Lines changed: 42 additions & 11 deletions

File tree

packages/devextreme/js/__internal/filter_builder/m_utils.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import formatHelper from '@js/format_helper';
1515
import type { CustomOperation, DataType, Field } from '@js/ui/filter_builder';
1616
import filterUtils from '@js/ui/shared/filtering';
1717
import errors from '@js/ui/widget/ui.errors';
18+
import { getGlobalFormatByDataType } from '@ts/core/m_global_format_config';
1819

1920
import { getConfig } from './m_between';
2021
import filterOperationsDictionary from './m_filter_operations_dictionary';
@@ -62,7 +63,8 @@ const FILTER_BUILDER_ITEM_TEXT_SEPARATOR_CLASS = `${FILTER_BUILDER_ITEM_TEXT_CLA
6263
const FILTER_BUILDER_ITEM_TEXT_SEPARATOR_EMPTY_CLASS = `${FILTER_BUILDER_ITEM_TEXT_SEPARATOR_CLASS}-empty`;
6364

6465
function getDateFormat(dataType: DataType | undefined): Format | undefined {
65-
return dataType ? DEFAULT_FORMAT[dataType] : undefined;
66+
if (!dataType) return undefined;
67+
return getGlobalFormatByDataType(dataType) ?? DEFAULT_FORMAT[dataType];
6668
}
6769

6870
function getFormattedValueText(field: Field, value: FieldValue): string {

packages/devextreme/js/__internal/grids/pivot_grid/m_widget_utils.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { extend } from '@js/core/utils/extend';
1010
import { each, map } from '@js/core/utils/iterator';
1111
import { isDefined, isNumeric, type } from '@js/core/utils/type';
1212
import formatHelper from '@js/format_helper';
13+
import { getGlobalFormatByDataType } from '@ts/core/m_global_format_config';
1314

1415
import { CLASSES } from './const';
1516

@@ -297,7 +298,8 @@ const DATE_INTERVAL_FORMATS = {
297298
function setDefaultFieldValueFormatting(field) {
298299
if (field.dataType === 'date') {
299300
if (!field.format) {
300-
setFieldProperty(field, 'format', DATE_INTERVAL_FORMATS[field.groupInterval]);
301+
const dateIntervalFormat = DATE_INTERVAL_FORMATS[field.groupInterval];
302+
setFieldProperty(field, 'format', dateIntervalFormat ?? getGlobalFormatByDataType('date'));
301303
}
302304
} else if (field.dataType === 'number') {
303305
const groupInterval = isNumeric(field.groupInterval)

packages/devextreme/js/__internal/ui/chat/chat.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import type {
2323
TypingEndEvent,
2424
TypingStartEvent,
2525
} from '@js/ui/chat';
26+
import { getGlobalFormatByDataType } from '@ts/core/m_global_format_config';
2627
import { invokeConditionally } from '@ts/core/utils/conditional_invoke';
2728
import type { OptionChanged } from '@ts/core/widget/types';
2829
import Widget from '@ts/core/widget/widget';
@@ -92,7 +93,7 @@ class Chat extends Widget<ChatProperties> {
9293
activeStateEnabled: true,
9394
alerts: [],
9495
dataSource: null,
95-
dayHeaderFormat: 'shortdate',
96+
dayHeaderFormat: getGlobalFormatByDataType('date') ?? 'shortdate',
9697
editing: {
9798
allowUpdating: false,
9899
allowDeleting: false,
@@ -104,7 +105,7 @@ class Chat extends Widget<ChatProperties> {
104105
inputFieldText: '',
105106
items: [],
106107
messageTemplate: null,
107-
messageTimestampFormat: 'shorttime',
108+
messageTimestampFormat: getGlobalFormatByDataType('time') ?? 'shorttime',
108109
reloadOnChange: true,
109110
showAvatar: true,
110111
showDayHeaders: true,

packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.list.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { getWindow } from '@js/core/utils/window';
1010
import type { DxEvent } from '@js/events';
1111
import type { Format } from '@js/localization';
1212
import type { ItemClickEvent } from '@js/ui/list';
13+
import { getGlobalFormatByDataType } from '@ts/core/m_global_format_config';
1314
import { getSizeValue } from '@ts/ui/drop_down_editor/m_utils';
1415
import List from '@ts/ui/list/list.edit.search';
1516

@@ -59,8 +60,9 @@ class ListStrategy extends DateBoxStrategy {
5960
}
6061

6162
getDisplayFormat(displayFormat?: Format): Format {
63+
const globalTimeFormat = getGlobalFormatByDataType('time');
6264
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
63-
return displayFormat || 'shorttime';
65+
return displayFormat || globalTimeFormat || 'shorttime';
6466
}
6567

6668
popupConfig(popupConfig: PopupProperties): PopupProperties {

packages/devextreme/js/__internal/ui/gantt/ui.gantt.dialogs.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import '@ts/ui/list/modules/deleting';
66

77
import dateLocalization from '@js/common/core/localization/date';
88
import messageLocalization from '@js/common/core/localization/message';
9+
import { getGlobalFormatByDataType } from '@ts/core/m_global_format_config';
910
import Form from '@ts/ui/form/form';
1011
import Popup from '@ts/ui/popup/m_popup';
1112

@@ -335,7 +336,9 @@ class TaskEditDialogInfo extends DialogInfoBase {
335336

336337
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
337338
_getFormattedDateText(date) {
338-
return date ? dateLocalization.format(date, 'shortDateShortTime') : '';
339+
if (!date) return '';
340+
const globalFormat = getGlobalFormatByDataType('datetime');
341+
return dateLocalization.format(date, globalFormat ?? 'shortDateShortTime');
339342
}
340343

341344
_isReadOnlyField(field): boolean {

packages/devextreme/js/__internal/ui/gantt/ui.gantt.view.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import messageLocalization from '@js/common/core/localization/message';
99
import $ from '@js/core/renderer';
1010
import { format } from '@js/core/utils/string';
1111
import { isDefined } from '@js/core/utils/type';
12+
import { getGlobalFormatByDataType } from '@ts/core/m_global_format_config';
1213
import type { WidgetProperties } from '@ts/core/widget/widget';
1314
import Widget from '@ts/core/widget/widget';
1415
import { getGanttViewCore } from '@ts/ui/gantt/gantt_importer';
@@ -565,10 +566,15 @@ export class GanttView extends Widget<GanttViewProperties> {
565566
getFormattedDateText(date): string {
566567
let result = '';
567568
if (date) {
568-
const datePart = dateLocalization.format(date, 'shortDate');
569-
const timeFormat = this._hasAmPM() ? 'hh:mm a' : 'HH:mm';
570-
const timePart = dateLocalization.format(date, timeFormat);
571-
result = `${datePart} ${timePart}`;
569+
const globalDateTimeFormat = getGlobalFormatByDataType('datetime');
570+
if (globalDateTimeFormat) {
571+
result = dateLocalization.format(date, globalDateTimeFormat);
572+
} else {
573+
const datePart = dateLocalization.format(date, 'shortDate');
574+
const timeFormat = this._hasAmPM() ? 'hh:mm a' : 'HH:mm';
575+
const timePart = dateLocalization.format(date, timeFormat);
576+
result = `${datePart} ${timePart}`;
577+
}
572578
}
573579
return result;
574580
}

packages/devextreme/js/__internal/ui/number_box/m_number_box.base.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
addNamespace, getChar, isCommandKeyPressed, normalizeKeyName,
44
} from '@js/common/core/events/utils/index';
55
import messageLocalization from '@js/common/core/localization/message';
6+
import numberLocalization from '@js/common/core/localization/number';
67
import devices from '@js/core/devices';
78
import domAdapter from '@js/core/dom_adapter';
89
import type { DefaultOptionsRule } from '@js/core/options/utils';
@@ -17,6 +18,7 @@ import {
1718
import { Deferred } from '@js/core/utils/deferred';
1819
import { fitIntoRange, inRange } from '@js/core/utils/math';
1920
import { isDefined } from '@js/core/utils/type';
21+
import { getGlobalFormatByDataType } from '@ts/core/m_global_format_config';
2022
import TextEditor from '@ts/ui/text_box/m_text_editor';
2123

2224
import type { TextEditorBaseProperties } from '../text_box/m_text_editor.base';
@@ -218,12 +220,25 @@ class NumberBoxBase<
218220
_forceValueRender(): void {
219221
const value = this.option('value');
220222
const number = Number(value);
221-
const formattedValue = isNaN(number) ? '' : this._applyDisplayValueFormatter(value);
223+
const formattedValue = isNaN(number)
224+
? ''
225+
: this._applyDisplayValueFormatter(value);
222226

223227
this._renderDisplayText(formattedValue);
224228
}
225229

226230
_applyDisplayValueFormatter(value): string | undefined {
231+
if (!this.option('format')) {
232+
const globalNumberFormat = getGlobalFormatByDataType('number');
233+
234+
if (globalNumberFormat) {
235+
return numberLocalization.format(
236+
Number(value),
237+
globalNumberFormat,
238+
) as string;
239+
}
240+
}
241+
227242
const { displayValueFormatter } = this.option();
228243

229244
return displayValueFormatter?.(value);

0 commit comments

Comments
 (0)