From 19bffbf3ba2fdf49e8b430ccd0b566bc6043cb21 Mon Sep 17 00:00:00 2001 From: eljefe223 Date: Wed, 18 Mar 2020 12:26:54 -0700 Subject: [PATCH 1/4] fix: preact is not rendering tabpanels --- .../fast-components-react-base/src/tabs/tabs.tsx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/fast-components-react-base/src/tabs/tabs.tsx b/packages/fast-components-react-base/src/tabs/tabs.tsx index 6970a172bd1..096d259d7ad 100644 --- a/packages/fast-components-react-base/src/tabs/tabs.tsx +++ b/packages/fast-components-react-base/src/tabs/tabs.tsx @@ -411,7 +411,9 @@ class Tabs extends Foundation { children: React.ReactNode, slot: TabsSlot | string ): React.ReactNode { - const childBySlot: React.ReactNode = this.withSlot(slot, children); + const childBySlot: React.ReactNode = this.filterChildren( + this.withSlot(slot, children) + ); return slot !== this.getSlot(TabsSlot.tabItem) ? childBySlot @@ -423,6 +425,17 @@ class Tabs extends Foundation { ); } + /** + * Need to filter out none truthy results for Preact. + * Can remove if below gets merged in. + * https://github.com/preactjs/preact-compat/pull/461 + */ + private filterChildren(nodes: any): React.ReactNode { + if (this.props.children || this.props.items) { + return nodes.filter(Boolean); + } + } + /** * Return a tab item if it has a tab and tab panel */ From 40e2db0addfbdf3402e1d76657c935c12cd15c32 Mon Sep 17 00:00:00 2001 From: eljefe223 Date: Wed, 18 Mar 2020 12:55:30 -0700 Subject: [PATCH 2/4] checked nodes instead of props --- packages/fast-components-react-base/src/tabs/tabs.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/fast-components-react-base/src/tabs/tabs.tsx b/packages/fast-components-react-base/src/tabs/tabs.tsx index 096d259d7ad..1b27ee007cb 100644 --- a/packages/fast-components-react-base/src/tabs/tabs.tsx +++ b/packages/fast-components-react-base/src/tabs/tabs.tsx @@ -14,6 +14,7 @@ import React from "react"; import { DisplayNamePrefix } from "../utilities"; import Tab, { TabManagedClasses } from "./tab"; import TabItem from "./tab-item"; +import { isNil } from "lodash-es"; import TabPanel, { TabPanelManagedClasses } from "./tab-panel"; import { TabsHandledProps, TabsItem, TabsProps, TabsUnhandledProps } from "./tabs.props"; @@ -431,7 +432,7 @@ class Tabs extends Foundation { * https://github.com/preactjs/preact-compat/pull/461 */ private filterChildren(nodes: any): React.ReactNode { - if (this.props.children || this.props.items) { + if (!isNil(nodes)) { return nodes.filter(Boolean); } } From d721c0578809659bd8c27d79af4f52f83ebfcbaf Mon Sep 17 00:00:00 2001 From: eljefe223 Date: Wed, 18 Mar 2020 13:11:41 -0700 Subject: [PATCH 3/4] checked if array and otherwise return undefined --- packages/fast-components-react-base/src/tabs/tabs.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/fast-components-react-base/src/tabs/tabs.tsx b/packages/fast-components-react-base/src/tabs/tabs.tsx index 1b27ee007cb..08d1d8f9925 100644 --- a/packages/fast-components-react-base/src/tabs/tabs.tsx +++ b/packages/fast-components-react-base/src/tabs/tabs.tsx @@ -431,9 +431,11 @@ class Tabs extends Foundation { * Can remove if below gets merged in. * https://github.com/preactjs/preact-compat/pull/461 */ - private filterChildren(nodes: any): React.ReactNode { - if (!isNil(nodes)) { + private filterChildren(nodes: React.ReactNode): React.ReactNode { + if (Array.isArray(nodes)) { return nodes.filter(Boolean); + } else { + return undefined; } } From 6822b85baeab532312e7781187d371ca7e51b90a Mon Sep 17 00:00:00 2001 From: eljefe223 Date: Wed, 18 Mar 2020 13:40:14 -0700 Subject: [PATCH 4/4] updated based on commetns --- packages/fast-components-react-base/src/tabs/tabs.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/fast-components-react-base/src/tabs/tabs.tsx b/packages/fast-components-react-base/src/tabs/tabs.tsx index 08d1d8f9925..693c1b89bf3 100644 --- a/packages/fast-components-react-base/src/tabs/tabs.tsx +++ b/packages/fast-components-react-base/src/tabs/tabs.tsx @@ -435,7 +435,7 @@ class Tabs extends Foundation { if (Array.isArray(nodes)) { return nodes.filter(Boolean); } else { - return undefined; + return nodes; } }