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.34 kB
JavaScript
'use client';
import { useState } from 'react';
import { liveDataHandler } from '../util/general/general.util';
const useRenderIf = ({ elementRenderIf }) => {
const [render, setRender] = useState(() => {
return elementRenderIf === undefined;
});
const checkRender = async (formData, { name }) => {
const targetFieldData = formData[name];
// if (
// targetFieldData === undefined ||
// targetFieldData === '' ||
// targetFieldData === null
// )
// return false;
const renderIfConfig = elementRenderIf;
const isLiveRender = !!renderIfConfig?.action && !!renderIfConfig?.condition;
if (isLiveRender && renderIfConfig.condition.includes(name)) {
const renderStatus = await liveDataHandler(targetFieldData, formData, renderIfConfig.action);
return renderStatus;
}
else {
const renderConditionList = Object.keys(elementRenderIf);
if (renderConditionList.includes(name)) {
const renderStatus = renderIfConfig[name].includes(targetFieldData) || renderIfConfig[name].includes('*');
return renderStatus;
}
}
};
return {
render,
checkRender,
setRender,
};
};
export default useRenderIf;