From 244df345f4f01352a89fbef911624645d0c36537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20B=C3=BCchele?= Date: Thu, 5 Sep 2019 04:40:39 -0700 Subject: [PATCH] Tabs Summary: fixing ts-strict errors Reviewed By: passy Differential Revision: D17181149 fbshipit-source-id: 43b12336e6467e0b134087fdabfd21f414741188 --- src/ui/components/Tabs.tsx | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/ui/components/Tabs.tsx b/src/ui/components/Tabs.tsx index 6739004c9..3c45bbab9 100644 --- a/src/ui/components/Tabs.tsx +++ b/src/ui/components/Tabs.tsx @@ -139,16 +139,20 @@ export default function Tabs(props: { const after = props.after || []; // - const tabs = {}; + const tabs: { + [key: string]: React.ReactNode; + } = {}; // a list of keys const keys = props.order ? props.order.slice() : []; - const tabContents = []; - const tabSiblings = []; + const tabContents: React.ReactNode[] = []; + const tabSiblings: React.ReactNode[] = []; function add(comps: React.ReactElement | React.ReactElement[]) { - const compsArray: React.ReactElement[] = [].concat(comps || []); + const compsArray: React.ReactElement[] = Array.isArray(comps) + ? comps + : [comps]; for (const comp of compsArray) { if (Array.isArray(comp)) { add(comp); @@ -189,7 +193,7 @@ export default function Tabs(props: { continue; } - let closeButton; + let closeButton: HTMLDivElement | undefined; tabs[key] = ( { - if (event.target !== closeButton) { - onActive(key); - } - }) + !isActive && onActive + ? (event: React.MouseEvent) => { + if (event.target !== closeButton) { + onActive(key); + } + } + : undefined }> {comp.props.label} {closable && ( @@ -215,8 +219,9 @@ export default function Tabs(props: { const newActive = keys[index + 1] || keys[index - 1] || null; onActive(newActive); } - - onClose(); + if (onClose) { + onClose(); + } }}> X @@ -226,7 +231,9 @@ export default function Tabs(props: { } } - add(props.children); + if (props.children) { + add(props.children); + } let tabList; if (props.orderable === true) {