♻️(frontend) reduce props drilling
- Reduce proprs drilling - Improve state rerendering with useIsCollaborativeEditable
This commit is contained in:
@@ -54,11 +54,7 @@ export const DocEditor = ({ doc, versionId }: DocEditorProps) => {
|
|||||||
$padding={{ horizontal: isDesktop ? '54px' : 'base' }}
|
$padding={{ horizontal: isDesktop ? '54px' : 'base' }}
|
||||||
className="--docs--doc-editor-header"
|
className="--docs--doc-editor-header"
|
||||||
>
|
>
|
||||||
{isVersion ? (
|
{isVersion ? <DocVersionHeader /> : <DocHeader doc={doc} />}
|
||||||
<DocVersionHeader title={doc.title} />
|
|
||||||
) : (
|
|
||||||
<DocHeader doc={doc} />
|
|
||||||
)}
|
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
<Box
|
<Box
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import {
|
|||||||
KEY_DOC,
|
KEY_DOC,
|
||||||
KEY_LIST_DOC,
|
KEY_LIST_DOC,
|
||||||
KEY_SUB_PAGE,
|
KEY_SUB_PAGE,
|
||||||
|
useDocStore,
|
||||||
useTrans,
|
useTrans,
|
||||||
useUpdateDoc,
|
useUpdateDoc,
|
||||||
} from '@/docs/doc-management';
|
} from '@/docs/doc-management';
|
||||||
@@ -24,18 +25,15 @@ interface DocTitleProps {
|
|||||||
|
|
||||||
export const DocTitle = ({ doc }: DocTitleProps) => {
|
export const DocTitle = ({ doc }: DocTitleProps) => {
|
||||||
if (!doc.abilities.partial_update) {
|
if (!doc.abilities.partial_update) {
|
||||||
return <DocTitleText title={doc.title} />;
|
return <DocTitleText />;
|
||||||
}
|
}
|
||||||
|
|
||||||
return <DocTitleInput doc={doc} />;
|
return <DocTitleInput doc={doc} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
interface DocTitleTextProps {
|
export const DocTitleText = () => {
|
||||||
title?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const DocTitleText = ({ title }: DocTitleTextProps) => {
|
|
||||||
const { isMobile } = useResponsiveStore();
|
const { isMobile } = useResponsiveStore();
|
||||||
|
const { currentDoc } = useDocStore();
|
||||||
const { untitledDocument } = useTrans();
|
const { untitledDocument } = useTrans();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -45,7 +43,7 @@ export const DocTitleText = ({ title }: DocTitleTextProps) => {
|
|||||||
$size={isMobile ? 'h4' : 'h2'}
|
$size={isMobile ? 'h4' : 'h2'}
|
||||||
$variation="1000"
|
$variation="1000"
|
||||||
>
|
>
|
||||||
{title || untitledDocument}
|
{currentDoc?.title || untitledDocument}
|
||||||
</Text>
|
</Text>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -5,11 +5,7 @@ import { useCunninghamTheme } from '@/cunningham';
|
|||||||
|
|
||||||
import { DocTitleText } from './DocTitle';
|
import { DocTitleText } from './DocTitle';
|
||||||
|
|
||||||
interface DocVersionHeaderProps {
|
export const DocVersionHeader = () => {
|
||||||
title?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const DocVersionHeader = ({ title }: DocVersionHeaderProps) => {
|
|
||||||
const { spacingsTokens } = useCunninghamTheme();
|
const { spacingsTokens } = useCunninghamTheme();
|
||||||
|
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -23,7 +19,7 @@ export const DocVersionHeader = ({ title }: DocVersionHeaderProps) => {
|
|||||||
aria-label={t('It is the document title')}
|
aria-label={t('It is the document title')}
|
||||||
className="--docs--doc-version-header"
|
className="--docs--doc-version-header"
|
||||||
>
|
>
|
||||||
<DocTitleText title={title} />
|
<DocTitleText />
|
||||||
<HorizontalSeparator />
|
<HorizontalSeparator />
|
||||||
</Box>
|
</Box>
|
||||||
</>
|
</>
|
||||||
|
|||||||
Reference in New Issue
Block a user