🐛 fix(forms): Add step attribute to number inputs for better value control
This commit is contained in:
parent
aa1d42651d
commit
b8f4f1e694
@ -307,6 +307,7 @@ export default function CouponForm<T extends Record<string, any>>({
|
|||||||
<EnhancedInput
|
<EnhancedInput
|
||||||
placeholder={t('form.countPlaceholder')}
|
placeholder={t('form.countPlaceholder')}
|
||||||
type='number'
|
type='number'
|
||||||
|
step={1}
|
||||||
{...field}
|
{...field}
|
||||||
onValueChange={(value) => {
|
onValueChange={(value) => {
|
||||||
form.setValue(field.name, value);
|
form.setValue(field.name, value);
|
||||||
@ -327,6 +328,7 @@ export default function CouponForm<T extends Record<string, any>>({
|
|||||||
<EnhancedInput
|
<EnhancedInput
|
||||||
placeholder={t('form.userLimitPlaceholder')}
|
placeholder={t('form.userLimitPlaceholder')}
|
||||||
type='number'
|
type='number'
|
||||||
|
step={1}
|
||||||
{...field}
|
{...field}
|
||||||
onValueChange={(value) => {
|
onValueChange={(value) => {
|
||||||
form.setValue(field.name, value);
|
form.setValue(field.name, value);
|
||||||
|
|||||||
@ -319,7 +319,8 @@ export default function PaymentForm<T>({
|
|||||||
}}
|
}}
|
||||||
defaultValue={field.value}
|
defaultValue={field.value}
|
||||||
value={field.value}
|
value={field.value}
|
||||||
disabled={isEdit}
|
// @ts-expect-error
|
||||||
|
disabled={isEdit && Boolean(initialValues?.platform)}
|
||||||
>
|
>
|
||||||
<FormControl>
|
<FormControl>
|
||||||
<SelectTrigger>
|
<SelectTrigger>
|
||||||
|
|||||||
@ -298,6 +298,7 @@ export default function SubscribeForm<T extends Record<string, any>>({
|
|||||||
<EnhancedInput
|
<EnhancedInput
|
||||||
placeholder={t('form.noLimit')}
|
placeholder={t('form.noLimit')}
|
||||||
type='number'
|
type='number'
|
||||||
|
step={1}
|
||||||
{...field}
|
{...field}
|
||||||
onValueChange={(value) => {
|
onValueChange={(value) => {
|
||||||
form.setValue(field.name, value);
|
form.setValue(field.name, value);
|
||||||
@ -321,7 +322,8 @@ export default function SubscribeForm<T extends Record<string, any>>({
|
|||||||
<EnhancedInput
|
<EnhancedInput
|
||||||
placeholder={t('form.noLimit')}
|
placeholder={t('form.noLimit')}
|
||||||
type='number'
|
type='number'
|
||||||
value={field.value === -1 ? 0 : field.value}
|
step={1}
|
||||||
|
value={field.value}
|
||||||
min={0}
|
min={0}
|
||||||
onValueChange={(value) => {
|
onValueChange={(value) => {
|
||||||
form.setValue(field.name, value);
|
form.setValue(field.name, value);
|
||||||
@ -343,6 +345,7 @@ export default function SubscribeForm<T extends Record<string, any>>({
|
|||||||
<EnhancedInput
|
<EnhancedInput
|
||||||
placeholder={t('form.noLimit')}
|
placeholder={t('form.noLimit')}
|
||||||
type='number'
|
type='number'
|
||||||
|
step={1}
|
||||||
{...field}
|
{...field}
|
||||||
onValueChange={(value) => {
|
onValueChange={(value) => {
|
||||||
form.setValue(field.name, value);
|
form.setValue(field.name, value);
|
||||||
@ -545,6 +548,7 @@ export default function SubscribeForm<T extends Record<string, any>>({
|
|||||||
{
|
{
|
||||||
name: 'quantity',
|
name: 'quantity',
|
||||||
type: 'number',
|
type: 'number',
|
||||||
|
step: 1,
|
||||||
min: 1,
|
min: 1,
|
||||||
suffix: unit_time && t(`form.${unit_time}`),
|
suffix: unit_time && t(`form.${unit_time}`),
|
||||||
},
|
},
|
||||||
@ -569,7 +573,6 @@ export default function SubscribeForm<T extends Record<string, any>>({
|
|||||||
name: 'price',
|
name: 'price',
|
||||||
placeholder: t('form.discount_price'),
|
placeholder: t('form.discount_price'),
|
||||||
type: 'number',
|
type: 'number',
|
||||||
min: 0,
|
|
||||||
formatInput: (value) => unitConversion('centsToDollars', value),
|
formatInput: (value) => unitConversion('centsToDollars', value),
|
||||||
formatOutput: (value) => unitConversion('dollarsToCents', value),
|
formatOutput: (value) => unitConversion('dollarsToCents', value),
|
||||||
internal: true,
|
internal: true,
|
||||||
@ -586,6 +589,7 @@ export default function SubscribeForm<T extends Record<string, any>>({
|
|||||||
]}
|
]}
|
||||||
value={field.value}
|
value={field.value}
|
||||||
onChange={(value) => {
|
onChange={(value) => {
|
||||||
|
console.log(value);
|
||||||
form.setValue(field.name, value);
|
form.setValue(field.name, value);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@ -33,8 +33,16 @@ export function ObjectInput<T extends Record<string, any>>({
|
|||||||
const [internalState, setInternalState] = useState<T>(value);
|
const [internalState, setInternalState] = useState<T>(value);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setInternalState(value);
|
let updatedState = { ...internalState, ...value };
|
||||||
}, [value]);
|
|
||||||
|
fields.forEach((field) => {
|
||||||
|
if (field.calculateValue) {
|
||||||
|
updatedState = field.calculateValue(updatedState);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
setInternalState(updatedState);
|
||||||
|
}, [value, fields]);
|
||||||
|
|
||||||
const updateField = (key: keyof T, fieldValue: string | number | boolean) => {
|
const updateField = (key: keyof T, fieldValue: string | number | boolean) => {
|
||||||
let updatedInternalState = { ...internalState, [key]: fieldValue };
|
let updatedInternalState = { ...internalState, [key]: fieldValue };
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user