From a0a9b0c4e65398f3d3966660d2576149f8362b3a Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Thu, 27 Jul 2023 18:39:09 +1000 Subject: [PATCH] Handle date type fields --- src/frontend/src/components/forms/ApiForm.tsx | 21 +++++++++ src/frontend/src/pages/Index/Home.tsx | 46 ++++++++++++++++--- 2 files changed, 60 insertions(+), 7 deletions(-) diff --git a/src/frontend/src/components/forms/ApiForm.tsx b/src/frontend/src/components/forms/ApiForm.tsx index 42897c94ae..d13d434c82 100644 --- a/src/frontend/src/components/forms/ApiForm.tsx +++ b/src/frontend/src/components/forms/ApiForm.tsx @@ -10,6 +10,7 @@ import { TextInput } from '@mantine/core'; import { Button, Center, Group, Loader, Stack, Text } from '@mantine/core'; +import { DateInput } from '@mantine/dates'; import { UseFormReturnType, useForm } from '@mantine/form'; import { useDebouncedValue } from '@mantine/hooks'; import { IconAlertCircle } from '@tabler/icons-react'; @@ -77,6 +78,17 @@ function constructField({ def.value = value; } + // Change value to a date object if required + switch (def.fieldType) { + case 'date': + if (def.value) { + def.value = new Date(def.value); + } + break; + default: + break; + } + return def; } @@ -189,6 +201,15 @@ function ApiFormField({ onChange={(event) => onChange(event.currentTarget.checked)} /> ); + case 'date': + return ( + onChange(value)} + /> + ); case 'integer': case 'decimal': case 'float': diff --git a/src/frontend/src/pages/Index/Home.tsx b/src/frontend/src/pages/Index/Home.tsx index 6c7a70e0df..1873ca9a85 100644 --- a/src/frontend/src/pages/Index/Home.tsx +++ b/src/frontend/src/pages/Index/Home.tsx @@ -8,9 +8,10 @@ import { PlaceholderPill } from '../../components/items/Placeholder'; import { StylishText } from '../../components/items/StylishText'; export default function Home() { - const [formOpened, setFormOpened] = useState(false); + const [partFormOpened, setPartFormOpened] = useState(false); + const [poFormOpened, setPoFormOpened] = useState(false); - const fields: ApiFormFieldType[] = [ + const partFields: ApiFormFieldType[] = [ { name: 'name' }, @@ -37,6 +38,18 @@ export default function Home() { } ]; + const poFields: ApiFormFieldType[] = [ + { + name: 'reference' + }, + { + name: 'supplier' + }, + { + name: 'target_date' + } + ]; + return ( <> @@ -47,21 +60,40 @@ export default function Home() { setFormOpened(false)} + opened={partFormOpened} + onClose={() => setPartFormOpened(false)} + fetchInitialData={true} + /> + setPoFormOpened(false)} fetchInitialData={true} /> + ); }