Skip to content

Commit c46b673

Browse files
refactor(number input demo): add more andvanced use case
1 parent 3d17717 commit c46b673

File tree

1 file changed

+47
-1
lines changed

1 file changed

+47
-1
lines changed
Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,58 @@
1+
import type { JSX } from "solid-js"
12
import { NumberInputS } from "~ui/input/number/NumberInputS"
23
import { PageWrapper } from "~ui/static/page/PageWrapper"
34
import { createSignalObject } from "~ui/utils/createSignalObject"
45

56
export function DemoNumberInput() {
67
const valueSignal = createSignalObject(0)
8+
const derivedSignal = createSignalObject("")
9+
const budgetSignal = createSignalObject(50000)
10+
11+
const handleInput: JSX.InputEventHandlerUnion<HTMLInputElement, InputEvent> = (e) => {
12+
console.log("Custom onInput called:", e)
13+
const currentValue = Number(e.currentTarget.value)
14+
const derivedValue = currentValue * 2
15+
derivedSignal.set("Double: " + derivedValue)
16+
}
17+
18+
const handleBudgetChange = (value: number) => {
19+
budgetSignal.set(value)
20+
console.log("Budget changed to:", value)
21+
}
22+
723
return (
824
<PageWrapper>
9-
<NumberInputS valueSignal={valueSignal} />
25+
<div class="space-y-8">
26+
<div class="space-y-4">
27+
<h2 class="text-lg font-semibold">NumberInputS with onInput prop</h2>
28+
<p>
29+
Type in the number input below and check console - the signal should be updated even when onInput is
30+
provided
31+
</p>
32+
33+
<NumberInputS valueSignal={valueSignal} onInput={handleInput} />
34+
35+
<p>Current signal value: {valueSignal.get()}</p>
36+
<p>Derived signal value: {derivedSignal.get()}</p>
37+
</div>
38+
39+
<div class="space-y-4">
40+
<h2 class="text-lg font-semibold">NumberInputS with advanced configuration</h2>
41+
<p>Example with min, step, increment/decrement amounts, and custom styling</p>
42+
43+
<NumberInputS
44+
valueSignal={budgetSignal}
45+
onValueChange={handleBudgetChange}
46+
min={0}
47+
step={1000}
48+
incrDecrAmount={1000}
49+
incrDecrAmountMajor={1_000_000}
50+
inputClass="w-[18ch]"
51+
/>
52+
53+
<p>Budget value: ${budgetSignal.get().toLocaleString()}</p>
54+
</div>
55+
</div>
1056
</PageWrapper>
1157
)
1258
}

0 commit comments

Comments
 (0)