/* eslint-disable @typescript-eslint/no-explicit-any */ import { ToolbarOptions } from "../../../type"; import { getCustomViewFields } from "./getCustomViewFields"; import _ from "lodash"; /** * Checks if there are unsaved changes in fields with enableCustomView=true * Compares current uiElementGroupData with saved state */ export const hasUnsavedChanges = ( currentData: Record, savedData: Record | null, toolBarOptions: ToolbarOptions, ): boolean => { if (!currentData) return false; // Get the filter fields for the active widget type const filterFields: Array> = getCustomViewFields( currentData, toolBarOptions, ); let unsavedChangesFound = false; filterFields.forEach((filterField) => { if (filterField.enableCustomView) { const newValue = filterField.applicableValueProperty ? currentData[filterField.field] ? currentData[filterField.field][filterField.applicableValueProperty] : currentData[filterField.field] : currentData[filterField.field]; const oldData = savedData ? savedData[filterField.field] : null; if (!_.isEqual(newValue ?? null, oldData ?? null)) { unsavedChangesFound = true; return; } } }); return unsavedChangesFound; };