fix: prevent negative numeric inputs in rental forms by enforcing positive constraints and sanitizing user entries
This commit is contained in:
@@ -609,8 +609,9 @@ export default function RentalDetailPage() {
|
|||||||
<label className="text-sm text-slate-600">Due Amount (৳)</label>
|
<label className="text-sm text-slate-600">Due Amount (৳)</label>
|
||||||
<input
|
<input
|
||||||
type="number"
|
type="number"
|
||||||
|
min={0}
|
||||||
value={dueAmount}
|
value={dueAmount}
|
||||||
onChange={(e) => setDueAmount(Number(e.target.value))}
|
onChange={(e) => setDueAmount(Math.max(0, Number(e.target.value)))}
|
||||||
className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm mt-1"
|
className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm mt-1"
|
||||||
placeholder="Enter amount..."
|
placeholder="Enter amount..."
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -492,19 +492,27 @@ const generateInvoice = () => {
|
|||||||
<div>
|
<div>
|
||||||
<label className="text-sm text-slate-600">Daily Rate (৳)</label>
|
<label className="text-sm text-slate-600">Daily Rate (৳)</label>
|
||||||
<input
|
<input
|
||||||
type="number"
|
type="text"
|
||||||
value={newRental.dailyRate}
|
value={newRental.dailyRate || ''}
|
||||||
onChange={(e) => setNewRental({ ...newRental, dailyRate: Number(e.target.value) })}
|
onChange={(e) => {
|
||||||
|
const val = e.target.value.replace(/[^0-9]/g, '');
|
||||||
|
setNewRental({ ...newRental, dailyRate: val ? Number(val) : 0 });
|
||||||
|
}}
|
||||||
className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm mt-1"
|
className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm mt-1"
|
||||||
|
placeholder="150"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label className="text-sm text-slate-600">Deposit (৳)</label>
|
<label className="text-sm text-slate-600">Deposit (৳)</label>
|
||||||
<input
|
<input
|
||||||
type="number"
|
type="text"
|
||||||
value={newRental.deposit}
|
value={newRental.deposit || ''}
|
||||||
onChange={(e) => setNewRental({ ...newRental, deposit: Number(e.target.value) })}
|
onChange={(e) => {
|
||||||
|
const val = e.target.value.replace(/[^0-9]/g, '');
|
||||||
|
setNewRental({ ...newRental, deposit: val ? Number(val) : 0 });
|
||||||
|
}}
|
||||||
className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm mt-1"
|
className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm mt-1"
|
||||||
|
placeholder="0"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
Reference in New Issue
Block a user