ra-core
Version:
Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React
45 lines (39 loc) • 1.29 kB
text/typescript
import { useCallback, ReactNode } from 'react';
import { useTranslate } from './useTranslate';
import { getFieldLabelTranslationArgs } from '../util';
import { useResourceContext, useOptionalSourceContext } from '../core';
export const useTranslateLabel = () => {
const translate = useTranslate();
const resourceFromContext = useResourceContext();
const sourceContext = useOptionalSourceContext();
return useCallback(
({
source,
label,
resource,
}: {
source?: string;
label?: ReactNode;
resource?: string;
}) => {
if (label === false || label === '') {
return null;
}
if (label && typeof label !== 'string') {
return label;
}
return translate(
...getFieldLabelTranslationArgs({
label: label as string,
defaultLabel: source
? sourceContext?.getLabel(source)
: undefined,
resource,
resourceFromContext,
source,
})
);
},
[resourceFromContext, translate, sourceContext]
);
};