From 1d33ee61d1414a76860e6769caf5f88e94d99741 Mon Sep 17 00:00:00 2001 From: Luke Date: Tue, 18 Jul 2023 02:36:39 +0200 Subject: [PATCH] feat(datepicker): added resolve to UTC switch --- .../src/designer-components/dateField/dateField.tsx | 4 ++-- .../src/designer-components/dateField/interfaces.ts | 1 + .../designer-components/dateField/settingsForm.json | 8 ++++++++ .../src/designer-components/dateField/utils.ts | 12 ++++++++++++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/shesha-reactjs/src/designer-components/dateField/dateField.tsx b/shesha-reactjs/src/designer-components/dateField/dateField.tsx index c5eb15f6c..1f9c5259e 100644 --- a/shesha-reactjs/src/designer-components/dateField/dateField.tsx +++ b/shesha-reactjs/src/designer-components/dateField/dateField.tsx @@ -16,7 +16,7 @@ import { getMoment, getPropertyMetadata } from '../../utils/date'; import { axiosHttp } from '../../utils/fetchers'; import { IDateFieldProps, IRangeInfo, RangePickerChangeEvent, TimePickerChangeEvent } from './interfaces'; import settingsFormJson from './settingsForm.json'; -import { DATE_TIME_FORMATS, disabledDate, getFormat, getRangePickerValues } from './utils'; +import { DATE_TIME_FORMATS, disabledDate, getDefaultFormat, getFormat, getRangePickerValues } from './utils'; const META_DATA_FILTERS: ProperyDataType[] = ['date', 'date-time', 'time']; @@ -116,7 +116,7 @@ export const DatePickerWrapper: FC = (props) => { const dateFormat = props?.dateFormat || getPropertyMetadata(properties, name) || DATE_TIME_FORMATS.date; const timeFormat = props?.timeFormat || DATE_TIME_FORMATS.time; - const defaultFormat = dateOnly ? 'YYYY-MM-DD' : null; + const defaultFormat = getDefaultFormat(props); const { form, formMode, isComponentDisabled, formData } = useForm(); diff --git a/shesha-reactjs/src/designer-components/dateField/interfaces.ts b/shesha-reactjs/src/designer-components/dateField/interfaces.ts index 3fee35fc1..6063843a5 100644 --- a/shesha-reactjs/src/designer-components/dateField/interfaces.ts +++ b/shesha-reactjs/src/designer-components/dateField/interfaces.ts @@ -26,6 +26,7 @@ export interface IDateFieldProps extends IConfigurableFormComponent { weekFormat?: string; range?: boolean; dateOnly?: boolean; + resolveToUTC?: boolean; picker?: 'time' | 'date' | 'week' | 'month' | 'quarter' | 'year'; disablePastDates?: boolean; onChange?: TimePickerChangeEvent | RangePickerChangeEvent; diff --git a/shesha-reactjs/src/designer-components/dateField/settingsForm.json b/shesha-reactjs/src/designer-components/dateField/settingsForm.json index 131553d07..2e8c34def 100644 --- a/shesha-reactjs/src/designer-components/dateField/settingsForm.json +++ b/shesha-reactjs/src/designer-components/dateField/settingsForm.json @@ -54,6 +54,14 @@ "label": "Date Only?", "description": "Send only a date format as a request, otherwise sends a datetime format" }, + { + "id": "e92bcf3c-a70a-4aeb-b6ac-5643eb5b4fe2", + "type": "switch", + "name": "resolveToUTC", + "parentId": "VmAusRlLZo3cYRFk88xnf", + "label": "Resolve to UTC", + "description": "If switched on the selected time will be converted to UTC" + }, { "id": "57a40a33-7e08-4ce4-9f08-a34d24a83338", "type": "dropdown", diff --git a/shesha-reactjs/src/designer-components/dateField/utils.ts b/shesha-reactjs/src/designer-components/dateField/utils.ts index 6bd903256..5f83a478f 100644 --- a/shesha-reactjs/src/designer-components/dateField/utils.ts +++ b/shesha-reactjs/src/designer-components/dateField/utils.ts @@ -25,6 +25,18 @@ export function disabledDate(props: IDateFieldProps, current) { return disabledFunc(current, moment); } +export const getDefaultFormat = ({ dateOnly, resolveToUTC }: IDateFieldProps) => { + if (dateOnly) { + return 'YYYY-MM-DD'; + } + + if (!resolveToUTC) { + return 'YYYY-MM-DDThh:mm:ss'; + } + + return null; +}; + export const getFormat = (props: IDateFieldProps, properties: IPropertyMetadata[]) => { const { name, picker, showTime } = props || {};