dynamic-modal
Version:
The dynamic-modal is a solution of creation different modals into project using a json configuration file
48 lines (37 loc) • 1.2 kB
text/typescript
'use client';
import { IModalLiveDataCondition } from '../interfaces/modal';
import { useState } from 'react';
import { IOption } from '../interfaces/option';
import { liveDataAction } from '../util/general/general.util';
export interface ILiveDataProps {
elementLiveData?: IModalLiveDataCondition;
}
const useLiveData = ({ elementLiveData }: ILiveDataProps) => {
const [liveData, setLiveData] = useState<Array<IOption> | undefined>(
undefined,
);
const checkLiveData = async (
formData: Record<string, unknown>,
{ name }: Record<'name', string> & Record<'type', string | undefined>,
) => {
const targetFieldData = formData[name] as string | number;
const liveDataConfig = elementLiveData;
const isLiveData: boolean =
!!liveDataConfig?.action && !!liveDataConfig.condition;
if (!isLiveData) return null;
if (liveDataConfig!.condition.includes(name)) {
return await liveDataAction(
targetFieldData,
formData,
liveDataConfig!.action,
);
}
return null;
};
return {
liveData,
checkLiveData,
setLiveData,
};
};
export default useLiveData;