import React from 'react'
import { NumericFormat } from 'react-number-format'
import { hasValue } from '../../services/HelperServiceTyped'
const PercentageCheck = ({
percent = 0,
decimalScale,
lessThanZeroText,
noConversion,
customClass = '',
roundNumber = false,
showLessThanZero,
qaTestId = 'percentage-check',
}: PercentageCheckProps): React.JSX.Element => {
const round =
typeof roundNumber === 'boolean'
? roundNumber
: Math.floor(percent * 100) !== 99
const conversion = noConversion ? 1 : 100
const convertedPercent = percent * conversion
// If the converted percent is between 0 and 1, we would show the < 1% (or custom) unless showLessThanZero is true
if (showLessThanZero || convertedPercent >= 1 || convertedPercent === 0) {
return (
)
} else {
return (
{lessThanZeroText ? lessThanZeroText : '< 1%'}
)
}
}
export default PercentageCheck
export type PercentageCheckProps = {
// The number that will be converted to a percentage
// This was made optional because of some limitation
percent?: number
// The number of decimal places that will be used
decimalScale?: number
// If the converted percentage is between 0 and 1, then this text will be displayed instead of the percentage
lessThanZeroText?: string
// This determines whether the `percent` that is passed will be multiplied by 100
noConversion?: boolean
// This allows us to round our percentage value
roundNumber?: boolean
// Optional classes can be added for styling
customClass?: string
// When the converted percentage is between 0 and 1, we would show `< 1%` (or the `lessThanZeroText` value). If we want to show the actual value instead, then this needs to be true.
showLessThanZero?: boolean
/** Optional prop to add a test id to the PercentageCheck for QA testing */
qaTestId?: string
}