#11: Fix ID input.
This commit is contained in:
parent
9b52470f6b
commit
0dc5c28060
3 changed files with 67 additions and 7 deletions
|
|
@ -10,6 +10,7 @@ import {
|
|||
import styles from "./input-form.module.css";
|
||||
import "./input-form.css";
|
||||
import {State} from "@/app/state/state.ts";
|
||||
import ValidatingInputBigIntField from "@/app/validating-input-bigint-field.tsx";
|
||||
|
||||
export default function InputForm({state, dispatch}: {
|
||||
state: State,
|
||||
|
|
@ -17,7 +18,7 @@ export default function InputForm({state, dispatch}: {
|
|||
}) {
|
||||
const [width, setWidth] = useState(10);
|
||||
const [height, setHeight] = useState(10);
|
||||
const [id, setId] = useState<number>();
|
||||
const [id, setId] = useState<bigint>();
|
||||
const [algorithm, setAlgorithm] = useState('wilson');
|
||||
|
||||
const handleSubmit = (e: FormEvent) => {
|
||||
|
|
@ -54,15 +55,14 @@ export default function InputForm({state, dispatch}: {
|
|||
value: numberValue
|
||||
};
|
||||
};
|
||||
const validateIdInput: ValidatorFunction<string, number> = value => {
|
||||
const validateIdInput: ValidatorFunction<string, bigint> = value => {
|
||||
if ("" === value) {
|
||||
return {
|
||||
valid: true
|
||||
};
|
||||
}
|
||||
const numberValue = Number(value);
|
||||
// FIXME doesn't handle strings with characters correctly (e.g. "asdf" yields an empty value, due to "type=number").
|
||||
if (isNaN(numberValue) || Math.floor(numberValue) !== numberValue) {
|
||||
const numberValue = BigInt(value);
|
||||
if (numberValue.toString() !== value.trim()) {
|
||||
return {
|
||||
valid: false,
|
||||
message: "Must be empty or an integer"
|
||||
|
|
@ -96,7 +96,7 @@ export default function InputForm({state, dispatch}: {
|
|||
disabled={state.loading}
|
||||
onChange={setHeight}
|
||||
/>
|
||||
<ValidatingInputNumberField id={"id"}
|
||||
<ValidatingInputBigIntField id={"id"}
|
||||
label={"ID (optional)"}
|
||||
value={id}
|
||||
validatorFn={validateIdInput}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue