Skip to content

Commit 713dd63

Browse files
committed
fix(web): staking-input-behaviour
1 parent 955a35d commit 713dd63

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

web/src/components/NumberInputField.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ interface INumberInputField extends Omit<React.ComponentProps<typeof Field>, "on
3535
onChange?: (value: string) => void;
3636
formatter?: (value: string) => string;
3737
className?: string;
38-
min?: number;
3938
}
4039

4140
export const NumberInputField: React.FC<INumberInputField> = ({
@@ -46,7 +45,6 @@ export const NumberInputField: React.FC<INumberInputField> = ({
4645
formatter,
4746
className,
4847
variant = "info",
49-
min,
5048
}) => {
5149
const [isEditing, setIsEditing] = useState(false);
5250

@@ -58,19 +56,26 @@ export const NumberInputField: React.FC<INumberInputField> = ({
5856
<Container {...{ className }}>
5957
{isEditing ? (
6058
<StyledField
61-
type="number"
59+
type="text"
60+
onInput={(e) => {
61+
const value = e.currentTarget.value.replace(/[^0-9.]/g, "");
62+
63+
e.currentTarget.value = formatter ? formatter(value) : value;
64+
return e;
65+
}}
6266
onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
6367
onChange?.(event.target.value);
6468
}}
6569
onBlur={toggleEditing}
66-
{...{ value, placeholder, message, variant, min }}
70+
value={formatter ? formatter(value ?? "0") : value}
71+
{...{ placeholder, message, variant }}
6772
/>
6873
) : (
6974
<StyledField
7075
type="text"
7176
value={formatter ? formatter(value ?? "0") : value}
7277
onFocus={toggleEditing}
73-
{...{ placeholder, message, variant, min }}
78+
{...{ placeholder, message, variant }}
7479
readOnly
7580
/>
7681
)}

web/src/pages/Courts/CourtDetails/StakePanel/InputDisplay.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ const InputDisplay: React.FC<IInputDisplay> = ({
8989
const isStaking = useMemo(() => action === ActionType.stake, [action]);
9090

9191
useEffect(() => {
92-
if (parsedAmount === 0n && balance === 0n && isStaking) {
92+
if (parsedAmount > 0n && balance === 0n && isStaking) {
9393
setErrorMsg("You need a non-zero PNK balance to stake");
9494
} else if (isStaking && balance && parsedAmount > balance) {
9595
setErrorMsg("Insufficient balance to stake this amount");
@@ -123,8 +123,7 @@ const InputDisplay: React.FC<IInputDisplay> = ({
123123
placeholder={isStaking ? "Amount to stake" : "Amount to withdraw"}
124124
message={errorMsg ?? undefined}
125125
variant={!isUndefined(errorMsg) ? "error" : "info"}
126-
formatter={(number: string) => commify(roundNumberDown(Number(number)))}
127-
min="0"
126+
formatter={(number: string) => (number !== "" ? commify(roundNumberDown(Number(number))) : "")}
128127
/>
129128
<EnsureChainContainer>
130129
<StakeWithdrawButton

0 commit comments

Comments
 (0)