pagamio-frontend-commons-lib
Version:
Pagamio library for Frontend reusable components like the form engine and table container
32 lines (31 loc) • 1.47 kB
JavaScript
export const isDefaultFilterValue = (value, key) => {
// Special case for dateRangeType
if (key === 'dateRangeType' && (value === '' || value === 'ALL_TIME')) {
return true;
}
if (!value)
return true;
if (Array.isArray(value) && value.length === 0)
return true;
if (typeof value === 'string' && (value === '' || value === 'all' || value.toLowerCase() === 'all'))
return true;
return false;
};
export const hasFilterChanges = (selectedFilters, appliedFilters) => {
return JSON.stringify(selectedFilters) !== JSON.stringify(appliedFilters);
};
export const hasSelectedFilterChanges = (selectedFilters, appliedFilters) => {
const normalizedSelected = Object.entries(selectedFilters)
.filter(([key, value]) => !isDefaultFilterValue(value, key))
.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});
const normalizedApplied = Object.entries(appliedFilters)
.filter(([key, value]) => !isDefaultFilterValue(value, key))
.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});
return JSON.stringify(normalizedSelected) !== JSON.stringify(normalizedApplied);
};
export const hasActiveFilters = (filters) => {
return Object.entries(filters).some(([key, value]) => !isDefaultFilterValue(value, key));
};
export const hasAppliedFilters = (filters) => {
return Object.entries(filters).some(([key, value]) => !isDefaultFilterValue(value, key));
};