Skip to content

Commit

Permalink
Vertically center form elements
Browse files Browse the repository at this point in the history
  • Loading branch information
Erikvv committed Dec 7, 2023
1 parent 5969778 commit 7a9cc01
Show file tree
Hide file tree
Showing 14 changed files with 60 additions and 62 deletions.
3 changes: 0 additions & 3 deletions frontend/src/components/company-survey-v2/address.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
import {UseFormReturn} from 'react-hook-form'
import {FormRow} from './generic/form-row'
import {LabelRow} from './generic/label-row'
import {NumberInput} from './generic/number-input'
import {NumberRow} from './generic/number-row'
import {OldNumberInput} from './generic/old-number-input'
import {TextInput} from './generic/text-input'

export const Address = ({form, prefix}: { form: UseFormReturn , prefix: string }) => {
Expand Down
2 changes: 0 additions & 2 deletions frontend/src/components/company-survey-v2/cars.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import {UseFormReturn} from 'react-hook-form'
import {LabelRow} from './generic/label-row'
import {NumberRow} from './generic/number-row'
import {OldNumberInput} from './generic/old-number-input'

export const Cars = ({form, prefix}: { form: UseFormReturn, prefix: string}) => {
const {register, watch} = form
Expand Down
44 changes: 31 additions & 13 deletions frontend/src/components/company-survey-v2/generic/form-row.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import {css} from '@emotion/react'
import {get} from 'lodash'
import {FunctionComponent, ReactNode} from 'react'
import {FunctionComponent, ReactElement, ReactNode} from 'react'
import {FieldError, UseFormReturn} from 'react-hook-form'
import {RegisterOptions} from 'react-hook-form/dist/types/validator'
import {LabelRow} from './label-row'

export type WrappedInputProps = {
name: string,
Expand Down Expand Up @@ -30,30 +31,47 @@ export const FormRow = ({label, InputComponent, WrappedInput, suffix, name, opti
const errorMessage = getErrorMessage(error)
options = setValidationMessage(options)

let labelElement: ReactNode
if (options?.required) {
labelElement = (
<div>
{options?.required && <span css={{color: 'red'}}>* </span>}
{label}
</div>
)
} else if (typeof label === 'string') {
labelElement = <div>{label}</div>
} else {
labelElement = label
}

return (
<label css={css`
display: flex;
& > div:nth-of-type(1) {
`}>
<div css={css`
text-align: right;
width: 50%;
padding: 0.3rem;
}
& > div:nth-of-type(2) {
display: flex;
flex-direction: column;
justify-content: center;
`}>
{labelElement}
</div>
<div css={css`
width: 50%;
padding: 0.3rem;
}
`}>
<div>
{options?.required && <span css={{color: 'red'}}>* </span>}
{label}
</div>
<div>
display: flex;
flex-direction: column;
justify-content: center;
`}>
<div>
{InputComponent && <InputComponent {...form.register(name, options)} />}
{WrappedInput && <WrappedInput name={name} form={form} options={options} />}
&nbsp;&nbsp;{suffix}
{suffix && <>&nbsp;&nbsp;{suffix}</>}
</div>
{errorMessage && <div css={{color: 'red'}}>{errorMessage}</div>}
</div>
Expand Down
32 changes: 17 additions & 15 deletions frontend/src/components/company-survey-v2/generic/label-row.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,31 @@ import {css} from '@emotion/react'
import {FunctionComponent, PropsWithChildren, ReactElement, ReactNode} from 'react'

export const LabelRow = ({label, children}: PropsWithChildren<{label: any}>) => {
let labelElement: ReactElement | undefined
if (typeof label === "string") {
labelElement = <div>{label}</div>
} else {
labelElement = label
}

return (
<label css={css`
display: flex;
& > *:nth-of-type(1) {
`}>
<div css={css`
text-align: right;
width: 50%;
padding: 0.3rem;
}
& > *:nth-of-type(2) {
display: flex;
flex-direction: column;
justify-content: center;
`}>
{label}
</div>
<div css={css`
width: 50%;
padding: 0.3rem;
}
`}>
{labelElement}
<div>{children}</div>
display: flex;
flex-direction: column;
justify-content: center;
`}>
{children}
</div>
</label>
)
}

This file was deleted.

3 changes: 0 additions & 3 deletions frontend/src/components/company-survey-v2/heat.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@ import {UseFormReturn} from 'react-hook-form'
import {BooleanInput} from './generic/boolean-input'
import {FormRow} from './generic/form-row'
import {NumberRow} from './generic/number-row'
import {TextInput} from './generic/text-input'
import {HeatingType, HeatingTypeCheckboxes} from './heating-type-checkboxes'
import {LabelRow} from './generic/label-row'
import {OldNumberInput} from './generic/old-number-input'
import {TextAreaRow} from "./generic/text-area-row";

export const Heat = ({form, prefix}: { form: UseFormReturn, prefix: string }) => {
Expand Down
2 changes: 0 additions & 2 deletions frontend/src/components/company-survey-v2/natural-gas.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@ import {UseFormReturn} from 'react-hook-form'
import {BooleanInput} from './generic/boolean-input'
import {FormRow} from './generic/form-row'
import {LabelRow} from './generic/label-row'
import {NumberInput} from './generic/number-input'
import {NumberRow} from './generic/number-row'
import {OldNumberInput} from './generic/old-number-input'
import {Purpose, Upload} from './generic/upload'

export const NaturalGas = ({form, prefix, project}: { form: UseFormReturn , prefix: string, project: string }) => {
Expand Down
3 changes: 0 additions & 3 deletions frontend/src/components/company-survey-v2/storage.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
import {UseFormReturn} from 'react-hook-form'
import {BooleanInput} from './generic/boolean-input'
import {FormRow} from './generic/form-row'
import {LabelRow} from './generic/label-row'
import {NumberRow} from './generic/number-row'
import {OldNumberInput} from './generic/old-number-input'
import {TextInput} from './generic/text-input'
import {TextAreaRow} from "./generic/text-area-row"

export const Storage = ({form, prefix}: { form: UseFormReturn, prefix: string }) => {
Expand Down
3 changes: 0 additions & 3 deletions frontend/src/components/company-survey-v2/supply.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@ import {UseFormReturn} from 'react-hook-form'
import {BooleanInput} from './generic/boolean-input'
import {FormRow} from './generic/form-row'
import {NumberRow} from './generic/number-row'
import {TextInput} from './generic/text-input'
import {PVOrientation} from './pv-orientation'
import {LabelRow} from './generic/label-row'
import {OldNumberInput} from './generic/old-number-input'
import {TextAreaRow} from "./generic/text-area-row";

export const Supply = ({form, prefix, hasSupplyName}: {form: UseFormReturn, prefix: string, hasSupplyName: string}) => {
Expand Down
3 changes: 3 additions & 0 deletions frontend/src/components/company-survey-v2/survey.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,9 @@ export const Survey: FunctionComponent<{project: Project}> = ({project}) => {
},
'& h2, & h3': {
padding: '.2rem 1rem',
},
'input[type="text"], input[type="email"], input[type="number"], textarea': {
padding: '.3rem',
}
}}>
<Intro project={project} />
Expand Down
13 changes: 5 additions & 8 deletions frontend/src/components/company-survey-v2/transport.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@ import {UseFormReturn} from 'react-hook-form'
import {BooleanInput} from './generic/boolean-input'
import {Cars} from './cars'
import {FormRow} from './generic/form-row'
import {LabelRow} from './generic/label-row'
import {NumberInput} from './generic/number-input'
import {OldNumberInput} from './generic/old-number-input'
import {TextInput} from './generic/text-input'
import {Trucks} from './trucks'
import {Vans} from './vans'

Expand All @@ -22,18 +19,18 @@ export const Transport = ({form, prefix}: { form: UseFormReturn, prefix: string
WrappedInput={BooleanInput}
name={`${prefix}.hasVehicles`}
form={form} />
<FormRow
label="Aantal personenauto's voor woon-werk verkeer per dag?"
WrappedInput={NumberInput}
name={`${prefix}.numDailyCarCommuters`}
form={form} />
{hasVehicles && (
<>
<Trucks form={form} prefix={`${prefix}.trucks`} />
<Vans form={form} prefix={`${prefix}.vans`} />
<Cars form={form} prefix={`${prefix}.cars`} />
</>
)}
<FormRow
label="Aantal personenauto's voor woon-werk verkeer per dag?"
WrappedInput={NumberInput}
name={`${prefix}.numDailyCarCommuters`}
form={form} />
</>
)
}
2 changes: 0 additions & 2 deletions frontend/src/components/company-survey-v2/trucks.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import {UseFormReturn} from 'react-hook-form'
import {LabelRow} from './generic/label-row'
import {NumberRow} from './generic/number-row'
import {OldNumberInput} from './generic/old-number-input'

export const Trucks = ({form, prefix}: { form: UseFormReturn, prefix: string}) => {
const {register, watch} = form
Expand Down
2 changes: 0 additions & 2 deletions frontend/src/components/company-survey-v2/vans.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import {UseFormReturn} from 'react-hook-form'
import {LabelRow} from './generic/label-row'
import {NumberRow} from './generic/number-row'
import {OldNumberInput} from './generic/old-number-input'

export const Vans = ({form, prefix}: { form: UseFormReturn, prefix: string}) => {
const {register, watch} = form
Expand Down
4 changes: 4 additions & 0 deletions frontend/src/index.css
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ body {
-moz-osx-font-smoothing: grayscale;
}

textarea {
font-family: inherit;
}

code {
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
monospace;
Expand Down

0 comments on commit 7a9cc01

Please sign in to comment.