Number picker working

This commit is contained in:
Maxime Lalo 2024-04-05 09:57:54 +02:00
parent bf5691d0d2
commit 52e1da8bd7
2 changed files with 28 additions and 11 deletions

View File

@ -1,2 +1,20 @@
.root { .root {
display: flex;
justify-content: center;
align-items: center;
width: fit-content;
border: 1px solid #e7e7e7;
padding: 24px;
.button {
border: none;
background: none;
cursor: pointer;
}
.input {
width: 50px;
text-align: center;
border: none;
}
} }

View File

@ -1,5 +1,6 @@
import { useState } from "react"; import { useState } from "react";
import classes from "./classes.module.scss"; import classes from "./classes.module.scss";
import { MinusIcon, PlusIcon } from "@heroicons/react/24/outline";
type IProps = { type IProps = {
defaultValue: number; defaultValue: number;
@ -15,12 +16,10 @@ export default function NumberPicker(props: IProps) {
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => { const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
let value = parseInt(e.target.value); let value = parseInt(e.target.value);
if (min && value < min) { if (isNaN(value)) value = 1;
value = min; if (min && value < min) value = min;
} if (max && value > max) value = max;
if (max && value > max) {
value = max;
}
setValue(value); setValue(value);
onChange(value); onChange(value);
}; };
@ -35,12 +34,12 @@ export default function NumberPicker(props: IProps) {
return ( return (
<div className={classes["root"]}> <div className={classes["root"]}>
<button onClick={handleMinus} disabled={min && value <= min ? true : false}> <button onClick={handleMinus} disabled={min && value <= min ? true : false} className={classes["button"]}>
- <MinusIcon width="20" height="20" />
</button> </button>
<input type="number" value={value} onChange={handleChange} disabled={disabled} /> <input type="number" value={value} onChange={handleChange} disabled={disabled} className={classes["input"]} />
<button onClick={handlePlus} disabled={max && value >= max ? true : false}> <button onClick={handlePlus} disabled={max && value >= max ? true : false} className={classes["button"]}>
+ <PlusIcon width="20" height="20" />
</button> </button>
</div> </div>
); );