Skip to content

Commit

Permalink
feat(v2): extract site title formatter to theme-common util (#3838)
Browse files Browse the repository at this point in the history
  • Loading branch information
Simek committed Nov 30, 2020
1 parent 821a39b commit 21572cc
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 23 deletions.
1 change: 1 addition & 0 deletions packages/docusaurus-theme-bootstrap/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"@docusaurus/plugin-content-blog": "2.0.0-alpha.69",
"@docusaurus/plugin-content-docs": "2.0.0-alpha.69",
"@docusaurus/plugin-content-pages": "2.0.0-alpha.69",
"@docusaurus/theme-common": "2.0.0-alpha.69",
"@docusaurus/types": "2.0.0-alpha.69",
"@mdx-js/react": "^1.6.21",
"bootstrap": "^4.4.1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import React from 'react';

import Head from '@docusaurus/Head';
import isInternalUrl from '@docusaurus/isInternalUrl';
import {useTitleFormatter} from '@docusaurus/theme-common';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import useBaseUrl from '@docusaurus/useBaseUrl';

Expand All @@ -20,10 +21,8 @@ function Layout(props: Props): JSX.Element {
const {siteConfig = {}} = useDocusaurusContext();
const {
favicon,
title: siteTitle,
themeConfig: {image: defaultImage, metadatas},
url: siteUrl,
titleDelimiter,
} = siteConfig;
const {
children,
Expand All @@ -34,9 +33,7 @@ function Layout(props: Props): JSX.Element {
keywords,
permalink,
} = props;
const metaTitle = title
? `${title} ${titleDelimiter} ${siteTitle}`
: siteTitle;
const metaTitle = useTitleFormatter(title);
const metaImage = image || defaultImage;
let metaImageUrl = siteUrl + useBaseUrl(metaImage);
if (!isInternalUrl(metaImage)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,22 @@ import React from 'react';
import isInternalUrl from '@docusaurus/isInternalUrl';
import Head from '@docusaurus/Head';
import DocPaginator from '@theme/DocPaginator';
import {useTitleFormatter} from '@docusaurus/theme-common';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import useBaseUrl from '@docusaurus/useBaseUrl';
import {Props} from '@theme/DocItem';

function DocItem(props: Props): JSX.Element {
const {siteConfig = {}} = useDocusaurusContext();
const {url: siteUrl, title: siteTitle, titleDelimiter = ' | '} = siteConfig;
const {url: siteUrl} = siteConfig;
const {content: DocContent} = props;
const {metadata} = DocContent;
const {description, title, permalink} = metadata;
const {
frontMatter: {image: metaImage, keywords},
} = DocContent;

const metaTitle = title
? `${title} ${titleDelimiter} ${siteTitle}`
: siteTitle;
const metaTitle = useTitleFormatter(title);
let metaImageUrl: string | undefined = siteUrl + useBaseUrl(metaImage);

if (!isInternalUrl(metaImage)) {
Expand Down
7 changes: 3 additions & 4 deletions packages/docusaurus-theme-classic/src/theme/DocItem/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import React from 'react';

import Head from '@docusaurus/Head';
import {useTitleFormatter} from '@docusaurus/theme-common';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import useBaseUrl from '@docusaurus/useBaseUrl';
import DocPaginator from '@theme/DocPaginator';
Expand All @@ -25,7 +26,7 @@ import {

function DocItem(props: Props): JSX.Element {
const {siteConfig} = useDocusaurusContext();
const {url: siteUrl, title: siteTitle, titleDelimiter} = siteConfig;
const {url: siteUrl} = siteConfig;
const {content: DocContent} = props;
const {metadata} = DocContent;
const {
Expand Down Expand Up @@ -54,9 +55,7 @@ function DocItem(props: Props): JSX.Element {
// See https://github.com/facebook/docusaurus/issues/3362
const showVersionBadge = versions.length > 1;

const metaTitle = title
? `${title} ${titleDelimiter} ${siteTitle}`
: siteTitle;
const metaTitle = useTitleFormatter(title);
const metaImageUrl = useBaseUrl(metaImage, {absolute: true});
return (
<>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import useBaseUrl from '@docusaurus/useBaseUrl';
import type {Props} from '@theme/Layout';
import SearchMetadatas from '@theme/SearchMetadatas';
import {DEFAULT_SEARCH_TAG} from '@docusaurus/theme-common';
import {DEFAULT_SEARCH_TAG, useTitleFormatter} from '@docusaurus/theme-common';

export default function LayoutHead(props: Props): JSX.Element {
const {
Expand All @@ -20,10 +20,8 @@ export default function LayoutHead(props: Props): JSX.Element {
} = useDocusaurusContext();
const {
favicon,
title: siteTitle,
themeConfig: {image: defaultImage, metadatas},
url: siteUrl,
titleDelimiter,
} = siteConfig;
const {
title,
Expand All @@ -33,9 +31,7 @@ export default function LayoutHead(props: Props): JSX.Element {
permalink,
searchMetadatas,
} = props;
const metaTitle = title
? `${title} ${titleDelimiter} ${siteTitle}`
: siteTitle;
const metaTitle = useTitleFormatter(title);
const metaImage = image || defaultImage;
const metaImageUrl = useBaseUrl(metaImage, {absolute: true});
const faviconUrl = useBaseUrl(favicon);
Expand Down
2 changes: 2 additions & 0 deletions packages/docusaurus-theme-common/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ export {isDocsPluginEnabled} from './utils/docsUtils';

export {isSamePath} from './utils/pathUtils';

export {useTitleFormatter} from './utils/generalUtils';

export {
useDocsPreferredVersion,
useDocsPreferredVersionByPluginId,
Expand Down
15 changes: 15 additions & 0 deletions packages/docusaurus-theme-common/src/utils/generalUtils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';

export const useTitleFormatter = (title?: string | undefined) => {
const {siteConfig = {}} = useDocusaurusContext();
const {title: siteTitle, titleDelimiter = '|'} = siteConfig;
return title && title.trim().length
? `${title.trim()} ${titleDelimiter} ${siteTitle}`
: siteTitle;
};
1 change: 1 addition & 0 deletions packages/docusaurus-theme-search-algolia/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
"dependencies": {
"@docsearch/react": "^3.0.0-alpha.31",
"@docusaurus/core": "2.0.0-alpha.69",
"@docusaurus/theme-common": "2.0.0-alpha.69",
"@docusaurus/utils": "2.0.0-alpha.69",
"algoliasearch": "^4.0.0",
"algoliasearch-helper": "^3.1.1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,12 @@ import algoliaSearchHelper from 'algoliasearch-helper';
import clsx from 'clsx';

import Head from '@docusaurus/Head';
import Link from '@docusaurus/Link';
import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';
import {useTitleFormatter} from '@docusaurus/theme-common';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import {useAllDocsData} from '@theme/hooks/useDocs';
import useSearchQuery from '@theme/hooks/useSearchQuery';
import Link from '@docusaurus/Link';
import Layout from '@theme/Layout';

import styles from './styles.module.css';
Expand Down Expand Up @@ -102,8 +103,6 @@ function Search() {
const {
siteConfig: {
themeConfig: {algolia: {appId = 'BH4D9OD16A', apiKey, indexName} = {}},
title: siteTitle,
titleDelimiter,
} = {},
} = useDocusaurusContext();
const docsSearchVersionsHelpers = useDocsSearchVersionsHelpers();
Expand Down Expand Up @@ -298,7 +297,7 @@ function Search() {
return (
<Layout wrapperClassName="search-page-wrapper">
<Head>
<title>{`${getTitle()} ${titleDelimiter} ${siteTitle}`}</title>
<title>{useTitleFormatter(getTitle())}</title>
{/*
We should not index search pages
See https://github.com/facebook/docusaurus/pull/3233
Expand Down

0 comments on commit 21572cc

Please sign in to comment.