diff --git a/web/src/features/dialog/InputDialog.tsx b/web/src/features/dialog/InputDialog.tsx
index 72ce1bd..8666faf 100644
--- a/web/src/features/dialog/InputDialog.tsx
+++ b/web/src/features/dialog/InputDialog.tsx
@@ -59,10 +59,12 @@ const InputDialog: React.FC = () => {
{
value:
row.type !== 'checkbox'
- ? row.type === 'date'
+ ? row.type === 'date' || row.type === 'date-range'
? // Set date to current one if default is set to true
row.default === true
? new Date()
+ : Array.isArray(row.default)
+ ? row.default.map((date) => new Date(date))
: row.default && new Date(row.default)
: row.default
: row.checked,
@@ -140,7 +142,8 @@ const InputDialog: React.FC = () => {
{row.type === 'number' && }
{row.type === 'slider' && }
{row.type === 'color' && }
- {row.type === 'date' && }
+ {row.type === 'date' ||
+ (row.type === 'date-range' && )}
);
})}
diff --git a/web/src/features/dialog/components/fields/date.tsx b/web/src/features/dialog/components/fields/date.tsx
index c323046..0a3ea74 100644
--- a/web/src/features/dialog/components/fields/date.tsx
+++ b/web/src/features/dialog/components/fields/date.tsx
@@ -1,7 +1,7 @@
import { IDateInput } from '../../../../interfaces/dialog';
import { Control, useController } from 'react-hook-form';
import { FormValues } from '../../InputDialog';
-import { DatePicker } from '@mantine/dates';
+import { DatePicker, DateRangePicker } from '@mantine/dates';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
interface Props {
@@ -14,28 +14,55 @@ const DateField: React.FC = (props) => {
const controller = useController({
name: `test.${props.index}.value`,
control: props.control,
- defaultValue: props.row.default === true ? new Date() : props.row.default ? new Date(props.row.default) : undefined,
+ defaultValue:
+ props.row.default === true
+ ? new Date()
+ : Array.isArray(props.row.default)
+ ? props.row.default.map((date) => new Date(date))
+ : props.row.default && new Date(props.row.default),
rules: { required: props.row.required },
});
return (
- }
- minDate={props.row.min ? new Date(props.row.min) : undefined}
- maxDate={props.row.max ? new Date(props.row.max) : undefined}
- />
+ <>
+ {props.row.type === 'date' ? (
+ }
+ minDate={props.row.min ? new Date(props.row.min) : undefined}
+ maxDate={props.row.max ? new Date(props.row.max) : undefined}
+ />
+ ) : (
+ }
+ minDate={props.row.min ? new Date(props.row.min) : undefined}
+ maxDate={props.row.max ? new Date(props.row.max) : undefined}
+ />
+ )}
+ >
);
};
diff --git a/web/src/interfaces/dialog.ts b/web/src/interfaces/dialog.ts
index 46175f0..2978934 100644
--- a/web/src/interfaces/dialog.ts
+++ b/web/src/interfaces/dialog.ts
@@ -69,9 +69,9 @@ export interface IColorInput {
}
export interface IDateInput {
- type: 'date';
+ type: 'date' | 'date-range';
label: string;
- default?: string | true;
+ default?: string | [string, string] | true;
disabled?: boolean;
description?: string;
required?: boolean;