This commit is contained in:
parent
171fbf1927
commit
8bf3e3b705
40 changed files with 1443 additions and 1497 deletions
|
|
@ -8,7 +8,8 @@ interface Props {
|
|||
project: Project;
|
||||
room: Room;
|
||||
flooringOptions: FlooringOptions;
|
||||
changeProject: (fn: (p: Project) => Project) => void;
|
||||
setFlooring: (patch: Partial<FlooringSettings>) => void;
|
||||
setSkirting: (patch: Partial<SkirtingSettings>) => void;
|
||||
changeRoom: (fn: (r: Room) => Room) => void;
|
||||
}
|
||||
|
||||
|
|
@ -19,15 +20,15 @@ export function MaterialsEditor({
|
|||
project,
|
||||
room,
|
||||
flooringOptions,
|
||||
changeProject,
|
||||
setFlooring,
|
||||
setSkirting,
|
||||
changeRoom,
|
||||
}: Props) {
|
||||
const f = project.flooring;
|
||||
const s = project.skirting;
|
||||
const floor = (key: keyof FlooringSettings, value: number | string) =>
|
||||
changeProject((p) => ({ ...p, flooring: { ...p.flooring, [key]: value } }));
|
||||
const skirt = (key: keyof SkirtingSettings, value: number) =>
|
||||
changeProject((p) => ({ ...p, skirting: { ...p.skirting, [key]: value } }));
|
||||
const floor = <K extends keyof FlooringSettings>(key: K, value: FlooringSettings[K]) =>
|
||||
setFlooring({ [key]: value });
|
||||
const skirt = (key: keyof SkirtingSettings, value: number) => setSkirting({ [key]: value });
|
||||
|
||||
return (
|
||||
<>
|
||||
|
|
@ -43,18 +44,8 @@ export function MaterialsEditor({
|
|||
Use the length and width printed on your flooring pack.
|
||||
</p>
|
||||
<div className="field-grid">
|
||||
<NumberField
|
||||
label="Board length"
|
||||
value={f.length}
|
||||
min={1}
|
||||
onChange={(n) => floor('length', n)}
|
||||
/>
|
||||
<NumberField
|
||||
label="Board width"
|
||||
value={f.width}
|
||||
min={1}
|
||||
onChange={(n) => floor('width', n)}
|
||||
/>
|
||||
<NumberField label="Board length" value={f.length} onChange={(n) => floor('length', n)} />
|
||||
<NumberField label="Board width" value={f.width} onChange={(n) => floor('width', n)} />
|
||||
</div>
|
||||
<div className="field">
|
||||
<span>Laying pattern</span>
|
||||
|
|
@ -158,13 +149,11 @@ export function MaterialsEditor({
|
|||
<NumberField
|
||||
label="Shortest end piece"
|
||||
value={f.minLength}
|
||||
min={1}
|
||||
onChange={(n) => floor('minLength', n)}
|
||||
/>
|
||||
<NumberField
|
||||
label="Narrowest edge row"
|
||||
value={f.minWidth}
|
||||
min={1}
|
||||
onChange={(n) => floor('minWidth', n)}
|
||||
/>
|
||||
</div>
|
||||
|
|
@ -181,7 +170,6 @@ export function MaterialsEditor({
|
|||
<NumberField
|
||||
label="Skirting board length"
|
||||
value={s.stockLength}
|
||||
min={1}
|
||||
onChange={(n) => skirt('stockLength', n)}
|
||||
/>
|
||||
<NumberField
|
||||
|
|
@ -196,7 +184,6 @@ export function MaterialsEditor({
|
|||
<NumberField
|
||||
label="Minimum piece"
|
||||
value={s.minLength}
|
||||
min={1}
|
||||
onChange={(n) => skirt('minLength', n)}
|
||||
/>
|
||||
<NumberField
|
||||
|
|
|
|||
Loading…
Reference in a new issue