From 4f36a7244e4071c7ef53221ee8b647fd1c1a5ddd Mon Sep 17 00:00:00 2001 From: hackerman <3372410+aeneasr@users.noreply.github.com> Date: Thu, 26 Nov 2020 11:45:15 +0100 Subject: [PATCH 1/3] fix(v2): support rendering of singular tabs Closes #3822 --- packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx b/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx index 7616a73c5074..46a3afeaf3cc 100644 --- a/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React, {useState, cloneElement} from 'react'; +import React, {useState, cloneElement, Children} from 'react'; import useUserPreferencesContext from '@theme/hooks/useUserPreferencesContext'; import type {Props} from '@theme/Tabs'; @@ -22,7 +22,6 @@ function Tabs(props: Props): JSX.Element { const { lazy, block, - children, defaultValue, values, groupId, @@ -30,6 +29,7 @@ function Tabs(props: Props): JSX.Element { } = props; const {tabGroupChoices, setTabGroupChoices} = useUserPreferencesContext(); const [selectedValue, setSelectedValue] = useState(defaultValue); + const children = Children.toArray(props.children) if (groupId != null) { const relevantTabGroupChoice = tabGroupChoices[groupId]; From cf3d643ec0c65937ea1dea567e3304cb4b82bc5a Mon Sep 17 00:00:00 2001 From: hackerman <3372410+aeneasr@users.noreply.github.com> Date: Thu, 26 Nov 2020 12:09:43 +0100 Subject: [PATCH 2/3] Update index.tsx --- packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx b/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx index 46a3afeaf3cc..9bbce24f2719 100644 --- a/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React, {useState, cloneElement, Children} from 'react'; +import React, {useState, cloneElement, Children } from 'react'; import useUserPreferencesContext from '@theme/hooks/useUserPreferencesContext'; import type {Props} from '@theme/Tabs'; From f6ea0d569399a72ad871fb36bbea39df4760d042 Mon Sep 17 00:00:00 2001 From: slorber Date: Thu, 26 Nov 2020 16:47:19 +0100 Subject: [PATCH 3/3] fix type --- .../src/theme/Tabs/index.tsx | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx b/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx index 9bbce24f2719..b66eea73204e 100644 --- a/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx @@ -5,9 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -import React, {useState, cloneElement, Children } from 'react'; +import React, {useState, cloneElement, Children, ReactElement} from 'react'; import useUserPreferencesContext from '@theme/hooks/useUserPreferencesContext'; import type {Props} from '@theme/Tabs'; +import type {Props as TabItemProps} from '@theme/TabItem'; import clsx from 'clsx'; @@ -19,17 +20,13 @@ const keys = { }; function Tabs(props: Props): JSX.Element { - const { - lazy, - block, - defaultValue, - values, - groupId, - className, - } = props; + const {lazy, block, defaultValue, values, groupId, className} = props; const {tabGroupChoices, setTabGroupChoices} = useUserPreferencesContext(); const [selectedValue, setSelectedValue] = useState(defaultValue); - const children = Children.toArray(props.children) + + const children = Children.toArray(props.children) as ReactElement< + TabItemProps + >[]; if (groupId != null) { const relevantTabGroupChoice = tabGroupChoices[groupId];