-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Is your feature request related to a problem? Please describe.
I can see when I add page title using useDocumentTitle, Sometimes, it is not available in i18n JSON file. So I suggest to use fallback/default title for page.
Also sometime I use different namespace files for each pages. I unable to set namespace for useDocumentTitle.
I use below code when have useDocumentTitle hook.
const translate= useTranslate();
useEffect(() => {
document.title = translate("pages.login.title", "Login") ;
}, [t]);Describe alternatives you've considered
No response
Additional context
No response
Describe the thing to improve
I can see same implementation use in useDocumentTitle hook -
| export const useDocumentTitle = (title?: Title) => { |
So I suggest to add fallback/default title and namespace.
I suggest code:
import { useTranslate } from "@refinedev/core";
import { useCallback, useEffect } from "react";
type Title = string | { i18nKey: string };
type UseDocumentTitleOptions = {
namespace?: string;
defaultTitle?: string;
};
export const useDocumentTitle = (
title?: Title,
options?: UseDocumentTitleOptions
) => {
const translate = useTranslate();
const getTitle = useCallback(
(title: Title) => {
const key = typeof title === "string" ? title : title.i18nKey;
return translate(
key,
{
ns: options?.namespace,
},
options?.defaultTitle
);
},
[translate, options?.defaultTitle, options?.namespace]
);
useEffect(() => {
if (!title) return;
document.title = getTitle(title);
}, [title, getTitle]);
return (title: Title) => {
document.title = getTitle(title);
};
};Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request