diff --git a/src/components/custom-aggrid/custom-aggrid-filters/custom-aggrid-comparator-filter.tsx b/src/components/custom-aggrid/custom-aggrid-filters/custom-aggrid-comparator-filter.tsx
index 3000c8e4c6..c8ad7fb6b3 100644
--- a/src/components/custom-aggrid/custom-aggrid-filters/custom-aggrid-comparator-filter.tsx
+++ b/src/components/custom-aggrid/custom-aggrid-filters/custom-aggrid-comparator-filter.tsx
@@ -13,7 +13,6 @@ import { CustomAggridFilterParams } from './custom-aggrid-filter.type';
export const CustomAggridComparatorFilter = ({ api, colId, filterParams }: CustomAggridFilterParams) => {
const {
- selectedFilterData,
selectedFilterComparator,
decimalAfterDot,
isNumberInput,
@@ -34,11 +33,12 @@ export const CustomAggridComparatorFilter = ({ api, colId, filterParams }: Custo
options={comparators}
/>
);
diff --git a/src/components/custom-aggrid/custom-aggrid-filters/custom-aggrid-text-filter.tsx b/src/components/custom-aggrid/custom-aggrid-filters/custom-aggrid-text-filter.tsx
index 7affa80fb9..33b1fb6f81 100644
--- a/src/components/custom-aggrid/custom-aggrid-filters/custom-aggrid-text-filter.tsx
+++ b/src/components/custom-aggrid/custom-aggrid-filters/custom-aggrid-text-filter.tsx
@@ -4,13 +4,15 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
-import React, { useMemo } from 'react';
+import { ChangeEvent, useEffect, useMemo, useState } from 'react';
import { Grid, IconButton, InputAdornment, TextField } from '@mui/material';
import ClearIcon from '@mui/icons-material/Clear';
import { DisplayRounding } from '../display-rounding';
import { useIntl } from 'react-intl';
import { mergeSx, type MuiStyles } from '@gridsuite/commons-ui';
import { FILTER_DATA_TYPES } from './custom-aggrid-filter.type';
+import { useFilterSelector } from '../../../hooks/use-filter-selector';
+import { FilterParams } from '../../../types/custom-aggrid-types';
const styles = {
input: {
@@ -28,24 +30,48 @@ const styles = {
} as const satisfies MuiStyles;
interface CustomAggridTextFilterProps {
- value: unknown;
+ colId: string;
onChange: (event: React.ChangeEvent) => void;
onClear: () => void;
isNumberInput: boolean;
decimalAfterDot: number;
+ filterParams: FilterParams;
}
export const CustomAggridTextFilter: React.FC = ({
- value,
+ colId,
onChange,
onClear,
isNumberInput,
+ filterParams,
decimalAfterDot = 0,
}) => {
+ const [value, setValue] = useState('');
const intl = useIntl();
+ const { filters } = useFilterSelector(filterParams.type, filterParams.tab);
+
const isRoundingDisplayed = useMemo(() => !!(isNumberInput && value), [isNumberInput, value]);
+ const handleChange = (event: ChangeEvent) => {
+ const upperCaseValue = event.target.value.toUpperCase();
+ setValue(upperCaseValue);
+ onChange(event);
+ };
+
+ const handleClear = () => {
+ setValue('');
+ onClear();
+ };
+
+ useEffect(() => {
+ const filterObject = filters?.find((filter) => filter.column === colId);
+ if (filterObject) {
+ setValue(String(filterObject.value));
+ }
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, []);
+
return (
@@ -53,7 +79,7 @@ export const CustomAggridTextFilter: React.FC = ({
size={'small'}
fullWidth
value={value || ''}
- onChange={onChange}
+ onChange={handleChange}
placeholder={intl.formatMessage({
id: 'filter.filterOoo',
})}
@@ -64,7 +90,7 @@ export const CustomAggridTextFilter: React.FC = ({
InputProps={{
endAdornment: value ? (
-
+