From 1bff83caccf74d6ef41bdb78279b9f61830fd54d Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Thu, 2 Feb 2023 06:19:31 -0500 Subject: [PATCH] fix(theme-classic): allow rendering single tab item (#8593) --- .../src/theme/Tabs/__tests__/index.test.tsx | 12 ++++++++++++ .../src/theme/Tabs/index.tsx | 2 ++ .../docusaurus-theme-common/src/utils/tabsUtils.tsx | 4 +++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/docusaurus-theme-classic/src/theme/Tabs/__tests__/index.test.tsx b/packages/docusaurus-theme-classic/src/theme/Tabs/__tests__/index.test.tsx index f4d59c74091f..90f150b6ef1d 100644 --- a/packages/docusaurus-theme-classic/src/theme/Tabs/__tests__/index.test.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Tabs/__tests__/index.test.tsx @@ -187,4 +187,16 @@ describe('Tabs', () => { ); }).not.toThrow(); }); + + it('accepts a single TabItem', () => { + expect(() => { + renderer.create( + + + Val1 + + , + ); + }).not.toThrow(); + }); }); diff --git a/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx b/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx index 59103c8d0714..e989d082a53e 100644 --- a/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx @@ -109,6 +109,8 @@ function TabContent({ children, selectedValue, }: Props & ReturnType) { + // eslint-disable-next-line no-param-reassign + children = Array.isArray(children) ? children : [children]; if (lazy) { const selectedTabItem = children.find( (tabItem) => tabItem.props.value === selectedValue, diff --git a/packages/docusaurus-theme-common/src/utils/tabsUtils.tsx b/packages/docusaurus-theme-common/src/utils/tabsUtils.tsx index 403e023ef45d..9a1d47ebdba4 100644 --- a/packages/docusaurus-theme-common/src/utils/tabsUtils.tsx +++ b/packages/docusaurus-theme-common/src/utils/tabsUtils.tsx @@ -32,7 +32,9 @@ export interface TabValue { export interface TabsProps { readonly lazy?: boolean; readonly block?: boolean; - readonly children: readonly ReactElement[]; + readonly children: + | readonly ReactElement[] + | ReactElement; readonly defaultValue?: string | null; readonly values?: readonly TabValue[]; readonly groupId?: string;