This repository has been archived on 2025-05-09. You can view files and clone it, but cannot push or open issues or pull requests.
2022-02-03 15:56:32 +03:00

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,
};
};