Skip to content

Commit

Permalink
wrap forms in form components
Browse files Browse the repository at this point in the history
  • Loading branch information
JensRavens committed Jan 16, 2025
1 parent 1eb4ec7 commit c8823af
Show file tree
Hide file tree
Showing 8 changed files with 104 additions and 67 deletions.
19 changes: 19 additions & 0 deletions app/frontend/components/form/form.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import React, { ReactNode } from 'react';

interface Props {
children: ReactNode;
onSubmit?: () => void;
}

export function Form({ children, onSubmit }: Props): JSX.Element {
return (
<form
onSubmit={(event) => {
event.preventDefault();
onSubmit?.();
}}
>
{children}
</form>
);
}
55 changes: 29 additions & 26 deletions app/views/inventories/edit.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { useReaction } from '../../frontend/sprinkles/reaction';
import { Container } from '../../frontend/components/container/container';
import { useFormatter, useTranslate } from '../../frontend/util/dependencies';
import { DateField } from '../../frontend/components/date_field/date_field';
import { Form } from '../../frontend/components/form/form';

interface Form {
name: string;
Expand Down Expand Up @@ -46,32 +47,34 @@ export default function ({
});
return (
<Container>
<TextField {...fields.name} label={t('inventories.edit.name')} />
<TextField {...fields.details} label={t('inventories.edit.details')} />
<DateField
{...fields.receivedAt}
label={t('inventories.edit.received_at')}
/>
<DateField
{...fields.returnedAt}
label={t('inventories.edit.returned_at')}
/>
<Button
title={t('inventories.edit.save')}
disabled={!valid}
onClick={onSubmit}
/>
<Button
title={t('inventories.edit.delete')}
onClick={async () => {
await reaction.call({
path: `/inventories/${inventory.id}`,
method: 'DELETE',
refresh: true,
});
modal.close();
}}
/>
<Form onSubmit={onSubmit}>
<TextField {...fields.name} label={t('inventories.edit.name')} />
<TextField {...fields.details} label={t('inventories.edit.details')} />
<DateField
{...fields.receivedAt}
label={t('inventories.edit.received_at')}
/>
<DateField
{...fields.returnedAt}
label={t('inventories.edit.returned_at')}
/>
<Button
title={t('inventories.edit.save')}
disabled={!valid}
onClick={onSubmit}
/>
<Button
title={t('inventories.edit.delete')}
onClick={async () => {
await reaction.call({
path: `/inventories/${inventory.id}`,
method: 'DELETE',
refresh: true,
});
modal.close();
}}
/>
</Form>
</Container>
);
}
5 changes: 3 additions & 2 deletions app/views/inventories/new.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { DateField } from '../../frontend/components/date_field/date_field';
import { useModalInfo } from '../../frontend/components/modal/modal';
import { useReaction } from '../../frontend/sprinkles/reaction';
import { useTranslate } from '../../frontend/util/dependencies';
import { Form } from '../../frontend/components/form/form';

interface Form {
userId: string;
Expand Down Expand Up @@ -38,7 +39,7 @@ export default function ({
},
});
return (
<>
<Form onSubmit={onSubmit}>
<TextField {...fields.name} label={t('inventories.new.name')} />
<TextField {...fields.details} label={t('inventories.new.details')} />
<DateField
Expand All @@ -50,6 +51,6 @@ export default function ({
disabled={!valid}
onClick={onSubmit}
/>
</>
</Form>
);
}
5 changes: 3 additions & 2 deletions app/views/leaves/new.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { useForm } from '@nerdgeschoss/react-use-form-library';
import { useModalInfo } from '../../frontend/components/modal/modal';
import { SelectOption } from '../../frontend/components/form_field/form_field';
import { Text } from '../../frontend/components/text/text';
import { Form } from '../../frontend/components/form/form';

interface Form {
userId: string;
Expand Down Expand Up @@ -58,7 +59,7 @@ export default function ({
const someDaysInPast = fields.days.value.some((date) => date < today);

return (
<>
<Form onSubmit={onSubmit}>
<CalendarField {...fields.days} label={t('leaves.new.days')} />
{someDaysInPast && <Text>{t('leaves.new.days_in_past_warning')}</Text>}
{permitUserSelect && (
Expand All @@ -82,6 +83,6 @@ export default function ({
disabled={!valid}
onClick={onSubmit}
/>
</>
</Form>
);
}
5 changes: 3 additions & 2 deletions app/views/payslips/new.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { SelectField } from '../../frontend/components/select_field/select_field
import { FileField } from '../../frontend/components/file_field/file_field';
import { useReaction } from '../../frontend/sprinkles/reaction';
import { useFormatter } from '../../frontend/util/dependencies';
import { Form } from '../../frontend/components/form/form';

interface Form {
userId: string;
Expand Down Expand Up @@ -42,7 +43,7 @@ export default function ({
},
});
return (
<>
<Form onSubmit={onSubmit}>
<SelectField
{...fields.userId}
label="User"
Expand All @@ -54,6 +55,6 @@ export default function ({
<DateField {...fields.month} label="Received at" />
<FileField {...fields.pdf} label="File" />
<Button title="create" disabled={!valid} onClick={onSubmit} />
</>
</Form>
);
}
29 changes: 16 additions & 13 deletions app/views/sessions/edit.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { TextField } from '../../frontend/components/text_field/text_field';
import { Container } from '../../frontend/components/container/container';
import { useForm } from '@nerdgeschoss/react-use-form-library';
import { useReaction } from '../../frontend/sprinkles/reaction';
import { Form } from '../../frontend/components/form/form';

export default function EditSession({
data: { email },
Expand All @@ -30,19 +31,21 @@ export default function EditSession({
});
return (
<Container>
<Stack>
<Text type="headline">Login</Text>
<TextField {...fields.email} label="Email" disabled />
<TextField
{...fields.code}
label="Code"
errors={[
...fields.code.errors,
...(invalidCode ? ['invalid-code'] : []),
]}
/>
<Button title="Login" disabled={!valid} onClick={onSubmit} />
</Stack>
<Form onSubmit={onSubmit}>
<Stack>
<Text type="headline">Login</Text>
<TextField {...fields.email} label="Email" disabled />
<TextField
{...fields.code}
label="Code"
errors={[
...fields.code.errors,
...(invalidCode ? ['invalid-code'] : []),
]}
/>
<Button title="Login" disabled={!valid} onClick={onSubmit} />
</Stack>
</Form>
</Container>
);
}
13 changes: 8 additions & 5 deletions app/views/sessions/new.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { TextField } from '../../frontend/components/text_field/text_field';
import { Container } from '../../frontend/components/container/container';
import { useForm } from '@nerdgeschoss/react-use-form-library';
import { useReaction } from '../../frontend/sprinkles/reaction';
import { Form } from '../../frontend/components/form/form';

export default function NewSession(): JSX.Element {
const reaction = useReaction();
Expand All @@ -23,11 +24,13 @@ export default function NewSession(): JSX.Element {
});
return (
<Container>
<Stack>
<Text type="headline">Login</Text>
<TextField {...fields.email} label="Email" />
<Button title="Login" disabled={!valid} onClick={onSubmit} />
</Stack>
<Form onSubmit={onSubmit}>
<Stack>
<Text type="headline">Login</Text>
<TextField {...fields.email} label="Email" />
<Button title="Login" disabled={!valid} onClick={onSubmit} />
</Stack>
</Form>
</Container>
);
}
40 changes: 23 additions & 17 deletions app/views/sprints/new.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { DateField } from '../../frontend/components/date_field/date_field';
import { useReaction } from '../../frontend/sprinkles/reaction';
import { useModalInfo } from '../../frontend/components/modal/modal';
import { NumberField } from '../../frontend/components/number_field/number_field';
import { Form } from '../../frontend/components/form/form';

export default function ({
data: { sprint },
Expand Down Expand Up @@ -42,22 +43,27 @@ export default function ({
});

return (
<Stack>
<TextField {...fields.title} label={t('sprints.new.title')} />
<DateField {...fields.sprintFrom} label={t('sprints.new.sprint_from')} />
<DateField
{...fields.sprintUntil}
label={t('sprints.new.sprint_until')}
/>
<NumberField
{...fields.workingDays}
label={t('sprints.new.working_days')}
/>
<Button
title={t('sprints.new.save')}
disabled={!valid}
onClick={onSubmit}
/>
</Stack>
<Form onSubmit={onSubmit}>
<Stack>
<TextField {...fields.title} label={t('sprints.new.title')} />
<DateField
{...fields.sprintFrom}
label={t('sprints.new.sprint_from')}
/>
<DateField
{...fields.sprintUntil}
label={t('sprints.new.sprint_until')}
/>
<NumberField
{...fields.workingDays}
label={t('sprints.new.working_days')}
/>
<Button
title={t('sprints.new.save')}
disabled={!valid}
onClick={onSubmit}
/>
</Stack>
</Form>
);
}

0 comments on commit c8823af

Please sign in to comment.