63 lines
1.6 KiB
JavaScript
63 lines
1.6 KiB
JavaScript
import { INVALID_INPUT as INVALID_INPUT_MESSAGE } from 'core/constants/errorMessages';
|
|
import { useEffect, useState } from 'react';
|
|
import { useStores } from '../useStores';
|
|
|
|
export const useValidation = ({ elementName, value }) => {
|
|
const [isValid, setValidation] = useState(undefined);
|
|
const { calculationStore } = useStores();
|
|
|
|
// get value from store
|
|
const validationStatus = calculationStore.validations[elementName];
|
|
useEffect(() => {
|
|
setValidation(validationStatus);
|
|
}, [validationStatus]);
|
|
|
|
useEffect(() => {
|
|
if (value === undefined || value === '') {
|
|
calculationStore.setValidation(elementName, undefined);
|
|
}
|
|
}, [value]);
|
|
|
|
return {
|
|
validateStatus: isValid === false ? 'error' : undefined,
|
|
message: isValid === false ? INVALID_INPUT_MESSAGE : undefined,
|
|
};
|
|
};
|
|
|
|
export const useTableValidation = ({
|
|
tableName,
|
|
rowIndex,
|
|
propName,
|
|
value,
|
|
}) => {
|
|
const [isValid, setValidation] = useState(undefined);
|
|
const { calculationStore } = useStores();
|
|
|
|
const validationStatus =
|
|
calculationStore?.tables?.[tableName]?.rows?.[rowIndex]?.[propName]
|
|
?.validation;
|
|
useEffect(() => {
|
|
setValidation(validationStatus);
|
|
}, [validationStatus]);
|
|
|
|
useEffect(() => {
|
|
if (value === undefined || value === '') {
|
|
calculationStore.setTableRows(
|
|
tableName,
|
|
rowIndex,
|
|
)([
|
|
{
|
|
[propName]: {
|
|
validation: undefined,
|
|
},
|
|
},
|
|
]);
|
|
}
|
|
}, [value]);
|
|
|
|
return {
|
|
validateStatus: isValid === false ? 'error' : undefined,
|
|
message: isValid === false ? INVALID_INPUT_MESSAGE : undefined,
|
|
};
|
|
};
|