diff --git a/src/components/floor-plan/modal/roofShape/type/Direction.jsx b/src/components/floor-plan/modal/roofShape/type/Direction.jsx
index 5ea8e635..7c3cf809 100644
--- a/src/components/floor-plan/modal/roofShape/type/Direction.jsx
+++ b/src/components/floor-plan/modal/roofShape/type/Direction.jsx
@@ -1,5 +1,6 @@
import { useMessage } from '@/hooks/useMessage'
import { normalizeDecimalLimit, normalizeDigits } from '@/util/input-utils'
+import { CalculatorInput } from '@/components/common/input/CalcInput'
export default function Direction({ pitch, setPitch, eavesOffset, setEavesOffset, gableOffset, setGableOffset, shedWidth, setShedWidth, pitchText }) {
const { getMessage } = useMessage()
@@ -10,12 +11,24 @@ export default function Direction({ pitch, setPitch, eavesOffset, setEavesOffset
{getMessage('slope')}
- setPitch(normalizeDecimalLimit(e.target.value, 2))}*/}
+ {/*/>*/}
+ setPitch(normalizeDecimalLimit(e.target.value, 2))}
- />
+ onChange={(value) => setPitch(value)}
+ options={{
+ allowNegative: false,
+ allowDecimal: true //(index !== 0),
+ }}
+ >
{pitchText}
@@ -24,12 +37,24 @@ export default function Direction({ pitch, setPitch, eavesOffset, setEavesOffset
{getMessage('eaves.offset')}
- setEavesOffset(normalizeDigits(e.target.value))}*/}
+ {/*/>*/}
+ setEavesOffset(normalizeDigits(e.target.value))}
- />
+ onChange={(value) => setEavesOffset(value)}
+ options={{
+ allowNegative: false,
+ allowDecimal: false //(index !== 0),
+ }}
+ >
mm
@@ -38,12 +63,24 @@ export default function Direction({ pitch, setPitch, eavesOffset, setEavesOffset
{getMessage('gable.offset')}
- setGableOffset(normalizeDigits(e.target.value))}*/}
+ {/*/>*/}
+ setGableOffset(normalizeDigits(e.target.value))}
- />
+ onChange={(value) => setGableOffset(value)}
+ options={{
+ allowNegative: false,
+ allowDecimal: false //(index !== 0),
+ }}
+ >
mm
@@ -52,12 +89,24 @@ export default function Direction({ pitch, setPitch, eavesOffset, setEavesOffset
{getMessage('windage.width')}
- setShedWidth(normalizeDigits(e.target.value))}*/}
+ {/*/>*/}
+ setShedWidth(normalizeDigits(e.target.value))}
- />
+ onChange={(value) => setShedWidth(value)}
+ options={{
+ allowNegative: false,
+ allowDecimal: false //(index !== 0),
+ }}
+ >
mm
diff --git a/src/components/floor-plan/modal/roofShape/type/Pattern.jsx b/src/components/floor-plan/modal/roofShape/type/Pattern.jsx
index 269cac58..46631b5c 100644
--- a/src/components/floor-plan/modal/roofShape/type/Pattern.jsx
+++ b/src/components/floor-plan/modal/roofShape/type/Pattern.jsx
@@ -1,5 +1,6 @@
import { useMessage } from '@/hooks/useMessage'
import { normalizeDecimalLimit, normalizeDigits } from '@/util/input-utils'
+import { CalculatorInput } from '@/components/common/input/CalcInput'
export default function Pattern(props) {
const { getMessage } = useMessage()
@@ -11,7 +12,20 @@ export default function Pattern(props) {
{getMessage('slope')}
- setPitch(normalizeDecimalLimit(e.target.value, 2))} />
+ {/* setPitch(normalizeDecimalLimit(e.target.value, 2))} />*/}
+ setPitch(value)}
+ options={{
+ allowNegative: false,
+ allowDecimal: true //(index !== 0),
+ }}
+ >
{pitchText}
@@ -20,7 +34,20 @@ export default function Pattern(props) {
{getMessage('eaves.offset')}
- setEavesOffset(normalizeDigits(e.target.value))} />
+ {/* setEavesOffset(normalizeDigits(e.target.value))} />*/}
+ setEavesOffset(value)}
+ options={{
+ allowNegative: false,
+ allowDecimal: false //(index !== 0),
+ }}
+ >
mm
@@ -29,7 +56,20 @@ export default function Pattern(props) {
{getMessage('gable.offset')}
- setGableOffset(normalizeDigits(e.target.value))} />
+ {/* setGableOffset(normalizeDigits(e.target.value))} />*/}
+ setGableOffset(value)}
+ options={{
+ allowNegative: false,
+ allowDecimal: false //(index !== 0),
+ }}
+ >
mm
diff --git a/src/components/floor-plan/modal/roofShape/type/Ridge.jsx b/src/components/floor-plan/modal/roofShape/type/Ridge.jsx
index fb0f016f..03f22936 100644
--- a/src/components/floor-plan/modal/roofShape/type/Ridge.jsx
+++ b/src/components/floor-plan/modal/roofShape/type/Ridge.jsx
@@ -1,6 +1,7 @@
import { useMessage } from '@/hooks/useMessage'
import { useEffect } from 'react'
import { normalizeDecimalLimit, normalizeDigits } from '@/util/input-utils'
+import { CalculatorInput } from '@/components/common/input/CalcInput'
export default function Ridge(props) {
const { getMessage } = useMessage()
@@ -13,7 +14,20 @@ export default function Ridge(props) {
{getMessage('slope')}
- setPitch(normalizeDecimalLimit(e.target.value, 2))} />
+ {/* setPitch(normalizeDecimalLimit(e.target.value, 2))} />*/}
+ setPitch(value)}
+ options={{
+ allowNegative: false,
+ allowDecimal: true //(index !== 0),
+ }}
+ >
{pitchText}
@@ -22,7 +36,20 @@ export default function Ridge(props) {
{getMessage('eaves.offset')}
- setEavesOffset(normalizeDigits(e.target.value))} />
+ {/* setEavesOffset(normalizeDigits(e.target.value))} />*/}
+ setEavesOffset(value)}
+ options={{
+ allowNegative: false,
+ allowDecimal: false //(index !== 0),
+ }}
+ >
mm
diff --git a/src/components/floor-plan/modal/roofShape/type/option/Eaves.jsx b/src/components/floor-plan/modal/roofShape/type/option/Eaves.jsx
index 8e231c7e..9477adae 100644
--- a/src/components/floor-plan/modal/roofShape/type/option/Eaves.jsx
+++ b/src/components/floor-plan/modal/roofShape/type/option/Eaves.jsx
@@ -1,5 +1,6 @@
import { useMessage } from '@/hooks/useMessage'
import { normalizeDecimalLimit, normalizeDigits } from '@/util/input-utils'
+import { CalculatorInput } from '@/components/common/input/CalcInput'
export default function Eaves({ pitch, setPitch, eavesOffset, setEavesOffset, pitchText }) {
const { getMessage } = useMessage()
@@ -10,7 +11,21 @@ export default function Eaves({ pitch, setPitch, eavesOffset, setEavesOffset, pi
{getMessage('slope')}
- setPitch(normalizeDecimalLimit(e.target.value, 2))} />
+ {/* setPitch(normalizeDecimalLimit(e.target.value, 2))} />*/}
+ setPitch(value)}
+ options={{
+ allowNegative: false,
+ allowDecimal: true //(index !== 0),
+ }}
+ >
+
{pitchText}
@@ -19,7 +34,20 @@ export default function Eaves({ pitch, setPitch, eavesOffset, setEavesOffset, pi
{getMessage('eaves.offset')}
- setEavesOffset(normalizeDigits(e.target.value))} />
+ {/* setEavesOffset(normalizeDigits(e.target.value))} />*/}
+ setEavesOffset(value)}
+ options={{
+ allowNegative: false,
+ allowDecimal: false //(index !== 0),
+ }}
+ >
mm
diff --git a/src/components/floor-plan/modal/roofShape/type/option/Gable.jsx b/src/components/floor-plan/modal/roofShape/type/option/Gable.jsx
index 173c12f4..1b6c1c7f 100644
--- a/src/components/floor-plan/modal/roofShape/type/option/Gable.jsx
+++ b/src/components/floor-plan/modal/roofShape/type/option/Gable.jsx
@@ -1,6 +1,7 @@
import { useMessage } from '@/hooks/useMessage'
import { useEffect } from 'react'
import { normalizeDigits } from '@/util/input-utils'
+import { CalculatorInput } from '@/components/common/input/CalcInput'
export default function Gable({ gableOffset, setGableOffset }) {
const { getMessage } = useMessage()
@@ -10,7 +11,20 @@ export default function Gable({ gableOffset, setGableOffset }) {
diff --git a/src/components/floor-plan/modal/roofShape/type/option/HipAndGable.jsx b/src/components/floor-plan/modal/roofShape/type/option/HipAndGable.jsx
index 787dd0e8..674525a8 100644
--- a/src/components/floor-plan/modal/roofShape/type/option/HipAndGable.jsx
+++ b/src/components/floor-plan/modal/roofShape/type/option/HipAndGable.jsx
@@ -1,5 +1,6 @@
import { useMessage } from '@/hooks/useMessage'
import { normalizeDecimalLimit, normalizeDigits } from '@/util/input-utils'
+import { CalculatorInput } from '@/components/common/input/CalcInput'
export default function HipAndGable({ pitch, setPitch, eavesOffset, setEavesOffset, hipAndGableWidth, setHipAndGableWidth, pitchText }) {
const { getMessage } = useMessage()
@@ -10,7 +11,8 @@ export default function HipAndGable({ pitch, setPitch, eavesOffset, setEavesOffs
{getMessage('slope')}
- setPitch(normalizeDecimalLimit(e.target.value, 2))} />
+ setPitch(normalizeDecimalLimit(e.target.value, 2))} />
{pitchText}
@@ -19,7 +21,8 @@ export default function HipAndGable({ pitch, setPitch, eavesOffset, setEavesOffs
{getMessage('eaves.offset')}
- setEavesOffset(normalizeDigits(e.target.value))} />
+ setEavesOffset(normalizeDigits(e.target.value))} />
mm
@@ -28,12 +31,24 @@ export default function HipAndGable({ pitch, setPitch, eavesOffset, setEavesOffs
{getMessage('hipandgable.width')}
- setHipAndGableWidth(normalizeDigits(e.target.value))}*/}
+ {/*/>*/}
+ setHipAndGableWidth(normalizeDigits(e.target.value))}
- />
+ onChange={(value) => setHipAndGableWidth(value)}
+ options={{
+ allowNegative: false,
+ allowDecimal: false //(index !== 0),
+ }}
+ >
mm
diff --git a/src/components/floor-plan/modal/roofShape/type/option/Jerkinhead.jsx b/src/components/floor-plan/modal/roofShape/type/option/Jerkinhead.jsx
index 22f0607e..c4f8736f 100644
--- a/src/components/floor-plan/modal/roofShape/type/option/Jerkinhead.jsx
+++ b/src/components/floor-plan/modal/roofShape/type/option/Jerkinhead.jsx
@@ -1,5 +1,6 @@
import { useMessage } from '@/hooks/useMessage'
import { normalizeDecimalLimit, normalizeDigits } from '@/util/input-utils'
+import { CalculatorInput } from '@/components/common/input/CalcInput'
export default function Jerkinhead({
gableOffset,
@@ -18,7 +19,20 @@ export default function Jerkinhead({
{getMessage('gable.offset')}
- setGableOffset(normalizeDigits(e.target.value))} />
+ setGableOffset(normalizeDigits(e.target.value))} />
+ setGableOffset(value)}
+ options={{
+ allowNegative: false,
+ allowDecimal: false //(index !== 0),
+ }}
+ >
mm
@@ -27,7 +41,21 @@ export default function Jerkinhead({
{getMessage('jerkinhead.width')}
- setJerkinHeadWidth(normalizeDigits(e.target.value))} />
+ {/* setJerkinHeadWidth(normalizeDigits(e.target.value))} />*/}
+
+ setJerkinHeadWidth(value)}
+ options={{
+ allowNegative: false,
+ allowDecimal: false //(index !== 0),
+ }}
+ >
mm
@@ -36,12 +64,24 @@ export default function Jerkinhead({
{getMessage('jerkinhead.slope')}
- setJerkinHeadPitch(normalizeDecimalLimit(e.target.value, 2))}*/}
+ {/*/>*/}
+ setJerkinHeadPitch(normalizeDecimalLimit(e.target.value, 2))}
- />
+ onChange={(value) => jerkinHeadPitch(value)}
+ options={{
+ allowNegative: false,
+ allowDecimal: true //(index !== 0),
+ }}
+ >
{pitchText}
diff --git a/src/components/floor-plan/modal/roofShape/type/option/Shed.jsx b/src/components/floor-plan/modal/roofShape/type/option/Shed.jsx
index daacea56..7326204e 100644
--- a/src/components/floor-plan/modal/roofShape/type/option/Shed.jsx
+++ b/src/components/floor-plan/modal/roofShape/type/option/Shed.jsx
@@ -8,14 +8,16 @@ export default function Shed({ shedWidth, setShedWidth, shedPitch, setShedPitch,
diff --git a/src/components/floor-plan/modal/roofShape/type/option/Wall.jsx b/src/components/floor-plan/modal/roofShape/type/option/Wall.jsx
index dfdff20d..bee6e9bb 100644
--- a/src/components/floor-plan/modal/roofShape/type/option/Wall.jsx
+++ b/src/components/floor-plan/modal/roofShape/type/option/Wall.jsx
@@ -1,6 +1,7 @@
import { useState } from 'react'
import { useMessage } from '@/hooks/useMessage'
import { normalizeDigits } from '@/util/input-utils'
+import { CalculatorInput } from '@/components/common/input/CalcInput'
export default function Wall({ sleeveOffset, setSleeveOffset, hasSleeve, setHasSleeve }) {
const { getMessage } = useMessage()
@@ -10,7 +11,8 @@ export default function Wall({ sleeveOffset, setSleeveOffset, hasSleeve, setHasS
@@ -18,20 +20,34 @@ export default function Wall({ sleeveOffset, setSleeveOffset, hasSleeve, setHasS