1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import React, { ReactNode, useEffect, useState } from "react";
6 import { Tabs, Tab } from "@material-ui/core";
7 import { TabsProps } from "@material-ui/core/Tabs";
9 export type TabData = {
15 type ConditionalTabsProps = {
19 export const ConditionalTabs = (props: Omit<TabsProps, 'value' | 'onChange'> & ConditionalTabsProps) => {
20 const [tabState, setTabState] = useState(0);
21 const visibleTabs = props.tabs.filter(tab => tab.show);
22 const activeTab = visibleTabs[tabState];
23 const visibleTabNames = visibleTabs.map(tab => tab.label).join();
25 const handleTabChange = (event: React.MouseEvent<HTMLElement>, value: number) => {
29 // Reset tab to 0 when tab visibility changes
30 // (or if tab set change causes visible set to change)
33 }, [visibleTabNames]);
39 onChange={handleTabChange} >
40 {visibleTabs.map(tab => <Tab key={tab.label} label={tab.label} />)}
42 {activeTab && activeTab.content}