export const numberValue = (value: number) => (isNaN(value) ? '' : value.toString()); export const extractEventValue = (event: React.ChangeEvent) => { switch (event.target.type) { case 'number': return event.target.valueAsNumber; case 'checkbox': return event.target.checked; default: return event.target.value; } }; type UpdateEntity = (state: (prevState: Readonly) => S) => void; export const updateValue = (updateEntity: UpdateEntity) => (event: React.ChangeEvent) => { updateEntity((prevState) => ({ ...prevState, [event.target.name]: extractEventValue(event) })); }; export const updateValueDirty = (origData: any, dirtyFlags: any, setDirtyFlags: any, updateDataValue: any) => (event: React.ChangeEvent) => { const updated_value = extractEventValue(event); const name = event.target.name; updateDataValue((prevState) => ({ ...prevState, [name]: updated_value })); const arr: string[] = dirtyFlags; if (origData[name] !== updated_value) { if (!arr.includes(name)) { arr.push(name); } } else { const startIndex = arr.indexOf(name); if (startIndex !== -1) { arr.splice(startIndex, 1); } } setDirtyFlags(arr); };