fix: prevent negative numeric inputs in rental forms by enforcing positive constraints and sanitizing user entries

This commit is contained in:
sazzadulalambd
2026-04-26 14:59:27 +06:00
parent 7457b997ef
commit f724a00453
2 changed files with 16 additions and 7 deletions

View File

@@ -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..."
/> />

View File

@@ -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>