From 2e0dd57d8b8233e1ac6ae945df39cc0a981326a6 Mon Sep 17 00:00:00 2001 From: Connor Bryan Date: Fri, 22 Jun 2018 17:21:55 -0500 Subject: [PATCH] Improve readability and add a condition to invalidity for Input --- common/components/ui/Input.tsx | 2 +- common/libs/validators.ts | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/common/components/ui/Input.tsx b/common/components/ui/Input.tsx index 72e48578..d1578100 100644 --- a/common/components/ui/Input.tsx +++ b/common/components/ui/Input.tsx @@ -50,7 +50,7 @@ class Input extends React.Component { } // Show an error with no value only after blurring. - if (!hasValue && showInvalidWithoutValue && !validDueToBlur) { + if (!isStateless && !validDueToBlur && !hasValue && showInvalidWithoutValue) { validClass = 'invalid'; } diff --git a/common/libs/validators.ts b/common/libs/validators.ts index 0aa00ee0..b6648ce4 100644 --- a/common/libs/validators.ts +++ b/common/libs/validators.ts @@ -130,20 +130,21 @@ export const validNumber = (num: number) => isFinite(num) && num >= 0; export const validPositiveNumber = (num: number) => validNumber(num) && num !== 0; export const validDecimal = (input: string, decimal: number) => { - const decimals: RegExpMatchArray | null = input.match(/\./g); + const arr = input.split('.'); // Only a single decimal can exist. - if (decimals && decimals.length > 1) { + if (arr.length > 2) { return false; } - const arr = input.split('.'); const fractionPortion = arr[1]; if (!fractionPortion || fractionPortion.length === 0) { return true; } + const decimalLength = fractionPortion.length; + return decimalLength <= decimal; };