diff --git a/packages/ra-core/src/util/FieldTitle.tsx b/packages/ra-core/src/util/FieldTitle.tsx index 2341527f705..e5cf2df744c 100644 --- a/packages/ra-core/src/util/FieldTitle.tsx +++ b/packages/ra-core/src/util/FieldTitle.tsx @@ -7,13 +7,19 @@ export interface FieldTitleProps { isRequired?: boolean; resource?: string; source?: string; - label?: string | ReactElement | false; + label?: string | ReactElement | boolean; } export const FieldTitle = (props: FieldTitleProps) => { const { source, label, resource, isRequired } = props; const translateLabel = useTranslateLabel(); + if (label === true) { + throw new Error( + 'Label parameter must be a string, a ReactElement or false' + ); + } + if (label === false || label === '') { return null; } diff --git a/packages/ra-ui-materialui/src/Labeled.tsx b/packages/ra-ui-materialui/src/Labeled.tsx index d626d22606f..c49029df4c3 100644 --- a/packages/ra-ui-materialui/src/Labeled.tsx +++ b/packages/ra-ui-materialui/src/Labeled.tsx @@ -75,7 +75,7 @@ export interface LabeledProps extends StackProps { fullWidth?: boolean; htmlFor?: string; isRequired?: boolean; - label?: string | ReactElement | false; + label?: string | ReactElement | boolean; resource?: string; source?: string; } diff --git a/packages/ra-ui-materialui/src/list/filter/FilterLiveSearch.tsx b/packages/ra-ui-materialui/src/list/filter/FilterLiveSearch.tsx index 8c2875c09d2..596f543caca 100644 --- a/packages/ra-ui-materialui/src/list/filter/FilterLiveSearch.tsx +++ b/packages/ra-ui-materialui/src/list/filter/FilterLiveSearch.tsx @@ -22,63 +22,61 @@ import { TextInput } from '../../input'; * * ); */ -export const FilterLiveSearch = memo( - (props: { - source?: string; - sx?: SxProps; - variant?: 'filled' | 'outlined'; - }) => { - const { source = 'q', variant, ...rest } = props; - const { filterValues, setFilters } = useListFilterContext(); - const translate = useTranslate(); +export const FilterLiveSearch = memo((props: FilterLiveSearchProps) => { + const { source = 'q', variant, ...rest } = props; + const { filterValues, setFilters } = useListFilterContext(); + const translate = useTranslate(); - const handleChange = (event: ChangeEvent) => { - if (event.target) { - setFilters( - { ...filterValues, [source]: event.target.value }, - null - ); - } else { - const { [source]: _, ...filters } = filterValues; - setFilters(filters, null); - } - }; + const handleChange = (event: ChangeEvent) => { + if (event.target) { + setFilters({ ...filterValues, [source]: event.target.value }, null); + } else { + const { [source]: _, ...filters } = filterValues; + setFilters(filters, null); + } + }; - const initialValues = useMemo( - () => ({ - [source]: filterValues[source], - }), - [filterValues, source] - ); + const initialValues = useMemo( + () => ({ + [source]: filterValues[source], + }), + [filterValues, source] + ); - const onSubmit = () => undefined; - let label = translate('ra.action.search'); + const onSubmit = () => undefined; + let label = translate('ra.action.search'); - return ( -
- - - - ), - }} - onChange={handleChange} - size="small" - {...(variant === 'outlined' - ? { variant: 'outlined', label } - : { - placeholder: label, - label: false, - hiddenLabel: true, - })} - {...rest} - /> - - ); - } -); + return ( +
+ + + + ), + }} + onChange={handleChange} + size="small" + {...(variant === 'outlined' + ? { variant: 'outlined', label } + : { + placeholder: label, + label: false, + hiddenLabel: true, + })} + {...rest} + /> + + ); +}); + +export interface FilterLiveSearchProps { + source?: string; + sx?: SxProps; + fullWidth?: boolean; + variant?: 'filled' | 'outlined'; +}