- handleBlur now takes the field value explicitly (was positional guessing that fell through to interestRate for unmapped fields). - Three copy-pasted money validators -> one shared validateNonNegativeMoney in client/lib/money.js; expected-amount copy 'positive' -> 'non-negative' (0 ok). - Removed the save action's duplicate due-day/interest-rate re-validation (validateForm already covers it); kept the parses. - Added err.message fallbacks to save/deactivate/verify-autopay toasts. - Save toasts now name the bill. Test: client/lib/money.test.js. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| components | ||
| contexts | ||
| hooks | ||
| lib | ||
| pages | ||
| public/img | ||
| App.jsx | ||
| api.js | ||
| index.css | ||
| main.jsx | ||