Skip to content

Commit df4cd48

Browse files
committed
Move FilterContext to ra-core and introduce useFilterContext
1 parent e850b2e commit df4cd48

File tree

10 files changed

+29
-22
lines changed

10 files changed

+29
-22
lines changed
File renamed without changes.

packages/ra-core/src/controller/list/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
export * from './FilterContext';
12
export * from './InfiniteListBase';
23
export * from './InfinitePaginationContext';
34
export * from './ListBase';
@@ -10,6 +11,7 @@ export * from './ListPaginationContext';
1011
export * from './ListSortContext';
1112
export * from './queryReducer';
1213
export * from './useExpanded';
14+
export * from './useFilterContext';
1315
export * from './useInfiniteListController';
1416
export * from './useInfinitePaginationContext';
1517
export * from './useList';
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { useContext } from 'react';
2+
import { FilterContext, type FilterContextType } from './FilterContext';
3+
4+
export const useFilterContext = (): FilterContextType => {
5+
return useContext(FilterContext);
6+
};

packages/ra-ui-materialui/src/input/DatagridInput.tsx

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { cloneElement, ReactElement, ReactNode, useCallback } from 'react';
33
import clsx from 'clsx';
44
import {
55
ChoicesProps,
6+
FilterContext,
67
Identifier,
78
ListContextProvider,
89
useChoicesContext,
@@ -17,13 +18,7 @@ import {
1718
import { CommonInputProps } from './CommonInputProps';
1819
import { InputHelperText } from './InputHelperText';
1920
import { SupportCreateSuggestionOptions } from './useSupportCreateSuggestion';
20-
import {
21-
Datagrid,
22-
DatagridProps,
23-
FilterButton,
24-
FilterForm,
25-
FilterContext,
26-
} from '../list';
21+
import { Datagrid, DatagridProps, FilterButton, FilterForm } from '../list';
2722
import { Pagination as DefaultPagination } from '../list/pagination';
2823
import { sanitizeInputRestProps } from './sanitizeInputRestProps';
2924

packages/ra-ui-materialui/src/list/ListActions.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
import * as React from 'react';
2-
import { cloneElement, useMemo, useContext, ReactElement } from 'react';
2+
import { cloneElement, useMemo, ReactElement } from 'react';
33
import {
44
sanitizeListRestProps,
55
Exporter,
66
useListContext,
77
useResourceContext,
88
useResourceDefinition,
9+
useFilterContext,
910
} from 'ra-core';
1011
import { ToolbarProps } from '@mui/material';
1112

1213
import TopToolbar from '../layout/TopToolbar';
1314
import { CreateButton, ExportButton } from '../button';
14-
import { FilterContext } from './FilterContext';
1515
import { FilterButton } from './filter';
1616

1717
/**
@@ -49,7 +49,7 @@ export const ListActions = (props: ListActionsProps) => {
4949
useListContext();
5050
const resource = useResourceContext(props);
5151
const { hasCreate } = useResourceDefinition(props);
52-
const filters = useContext(FilterContext) || filtersProp;
52+
const filters = useFilterContext() || filtersProp;
5353
return useMemo(
5454
() => (
5555
<TopToolbar className={className} {...sanitizeListRestProps(rest)}>

packages/ra-ui-materialui/src/list/ListToolbar.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@ import {
66
useThemeProps,
77
} from '@mui/material/styles';
88
import type { ToolbarProps } from '@mui/material';
9-
import type { Exporter } from 'ra-core';
9+
import { type Exporter, FilterContext } from 'ra-core';
1010

1111
import { FilterForm } from './filter';
12-
import { FilterContext } from './FilterContext';
1312

1413
export const ListToolbar: FC<ListToolbarProps> = memo(inProps => {
1514
const props = useThemeProps({

packages/ra-ui-materialui/src/list/filter/Filter.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import * as React from 'react';
22
import { Children, ReactNode } from 'react';
3+
import { FilterContext } from 'ra-core';
34

45
import { FilterForm } from './FilterForm';
56
import { FilterButton } from './FilterButton';
6-
import { FilterContext } from '../FilterContext';
77

88
/**
99
* Filter button/form combo

packages/ra-ui-materialui/src/list/filter/FilterButton.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import {
55
useRef,
66
type ReactNode,
77
type HtmlHTMLAttributes,
8-
useContext,
98
} from 'react';
109
import {
1110
Menu,
@@ -24,13 +23,17 @@ import BookmarkRemoveIcon from '@mui/icons-material/BookmarkRemove';
2423
import BookmarkBorderIcon from '@mui/icons-material/BookmarkBorder';
2524
import ContentFilter from '@mui/icons-material/FilterList';
2625
import isEqual from 'lodash/isEqual';
27-
import { useListContext, useResourceContext, useTranslate } from 'ra-core';
26+
import {
27+
useFilterContext,
28+
useListContext,
29+
useResourceContext,
30+
useTranslate,
31+
} from 'ra-core';
2832
import { stringify } from 'query-string';
2933
import { useNavigate } from 'react-router';
3034

3135
import { FilterButtonMenuItem } from './FilterButtonMenuItem';
3236
import { Button } from '../../button';
33-
import { FilterContext } from '../FilterContext';
3437
import { extractValidSavedQueries, useSavedQueries } from './useSavedQueries';
3538
import { AddSavedQueryDialog } from './AddSavedQueryDialog';
3639
import { RemoveSavedQueryDialog } from './RemoveSavedQueryDialog';
@@ -48,7 +51,7 @@ export const FilterButton = (inProps: FilterButtonProps) => {
4851
variant,
4952
...rest
5053
} = props;
51-
const filters = useContext(FilterContext) || filtersProp;
54+
const filters = useFilterContext() || filtersProp;
5255
const resource = useResourceContext(props);
5356
const translate = useTranslate();
5457
if (!resource && !disableSaveQuery) {

packages/ra-ui-materialui/src/list/filter/FilterForm.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,20 @@ import {
44
useThemeProps,
55
} from '@mui/material/styles';
66
import get from 'lodash/get';
7-
import { FilterLiveForm, useListContext, useResourceContext } from 'ra-core';
7+
import {
8+
FilterLiveForm,
9+
useFilterContext,
10+
useListContext,
11+
useResourceContext,
12+
} from 'ra-core';
813
import * as React from 'react';
914
import {
1015
type HtmlHTMLAttributes,
1116
type ReactNode,
1217
useCallback,
13-
useContext,
1418
useEffect,
1519
} from 'react';
1620

17-
import { FilterContext } from '../FilterContext';
1821
import { FilterFormInput } from './FilterFormInput';
1922

2023
export const FilterForm = (inProps: FilterFormProps) => {
@@ -23,7 +26,7 @@ export const FilterForm = (inProps: FilterFormProps) => {
2326
name: PREFIX,
2427
});
2528
const { filters: filtersProps, ...rest } = props;
26-
const filters = useContext(FilterContext) || filtersProps;
29+
const filters = useFilterContext() || filtersProps;
2730

2831
return (
2932
<FilterLiveForm formComponent={StyledForm} {...sanitizeRestProps(rest)}>

packages/ra-ui-materialui/src/list/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ export * from './datatable';
55
export * from './Empty';
66
export * from './InfiniteList';
77
export * from './filter';
8-
export * from './FilterContext';
98
export * from './List';
109
export * from './ListActions';
1110
export * from './listFieldTypes';

0 commit comments

Comments
 (0)