From 55a50d37dcab02c77b81f1e4a40220b914e1c4db Mon Sep 17 00:00:00 2001 From: Sam Zhou Date: Sun, 15 Mar 2020 01:47:52 -0400 Subject: [PATCH] feat(v2): support syncing tab choices (#2366) * feat(v2): Support syncing tab choices * Move docs changes to website/docs * Do not import entire React in TabGroupChoiceContext * Store only one tab choice according to discussion in PR * Remove leftover logging code during debugging * Put storage value in separate const outside the hook-level * Use an array to keep track of different tab groups * Revert back to using `groupId` * Update markdown-features.mdx * Update markdown-features.mdx Co-authored-by: Yangshun Tay --- .../src/theme/Layout/index.js | 59 +++++----- .../src/theme/TabGroupChoiceContext.js | 15 +++ .../src/theme/TabGroupChoiceProvider/index.js | 24 ++++ .../src/theme/Tabs/index.js | 26 ++++- .../src/theme/hooks/useTabGroupChoice.js | 47 ++++++++ .../theme/hooks/useTabGroupChoiceContext.js | 16 +++ website/docs/markdown-features.mdx | 109 ++++++++++++++++++ .../markdown-features.mdx | 2 +- 8 files changed, 268 insertions(+), 30 deletions(-) create mode 100644 packages/docusaurus-theme-classic/src/theme/TabGroupChoiceContext.js create mode 100644 packages/docusaurus-theme-classic/src/theme/TabGroupChoiceProvider/index.js create mode 100644 packages/docusaurus-theme-classic/src/theme/hooks/useTabGroupChoice.js create mode 100644 packages/docusaurus-theme-classic/src/theme/hooks/useTabGroupChoiceContext.js diff --git a/packages/docusaurus-theme-classic/src/theme/Layout/index.js b/packages/docusaurus-theme-classic/src/theme/Layout/index.js index c001ed1368..571a10db98 100644 --- a/packages/docusaurus-theme-classic/src/theme/Layout/index.js +++ b/packages/docusaurus-theme-classic/src/theme/Layout/index.js @@ -11,6 +11,7 @@ import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import useBaseUrl from '@docusaurus/useBaseUrl'; import ThemeProvider from '@theme/ThemeProvider'; +import TabGroupChoiceProvider from '@theme/TabGroupChoiceProvider'; import Navbar from '@theme/Navbar'; import Footer from '@theme/Footer'; @@ -41,33 +42,39 @@ function Layout(props) { return ( - - {/* TODO: Do not assume that it is in english language */} - + + + {/* TODO: Do not assume that it is in english language */} + - - {metaTitle && {metaTitle}} - {metaTitle && } - {favicon && } - {description && } - {description && ( - - )} - {version && } - {keywords && keywords.length && ( - - )} - {metaImage && } - {metaImage && } - {metaImage && ( - - )} - {permalink && } - - - -
{children}
- {!noFooter &&