dynamic-modal
Version:
The dynamic-modal is a solution of creation different modals into project using a json configuration file
37 lines (36 loc) • 1.33 kB
JavaScript
'use client';
import { useState } from 'react';
import { liveDataHandler } from '../util/general/general.util';
const useEnableIf = ({ elementEnableIf }) => {
const [enable, setEnable] = useState(() => {
return elementEnableIf === undefined;
});
const checkEnable = async (formData, { name }) => {
const targetFieldData = formData[name];
// if (
// targetFieldData === undefined ||
// targetFieldData === '' ||
// targetFieldData === null
// )
// return false;
const enableIfConfig = elementEnableIf;
const isLiveEnable = !!enableIfConfig?.action && !!enableIfConfig.condition;
if (isLiveEnable && enableIfConfig.condition.includes(name)) {
const enableStatus = await liveDataHandler(targetFieldData, formData, enableIfConfig.action);
return enableStatus;
}
else {
const enableConditionList = Object.keys(elementEnableIf);
if (enableConditionList.includes(name)) {
const enableStatus = enableIfConfig[name].includes(targetFieldData) || enableIfConfig[name].includes('*');
return enableStatus;
}
}
};
return {
enable,
checkEnable,
setEnable,
};
};
export default useEnableIf;