2019-10-21 15:12:45 +00:00
|
|
|
import React from "react";
|
2019-10-25 05:35:20 +00:00
|
|
|
import { Tab, Tabs } from "@blueprintjs/core";
|
2019-10-21 15:12:45 +00:00
|
|
|
import styled from "styled-components";
|
|
|
|
|
|
2019-10-25 05:35:20 +00:00
|
|
|
const TabsWrapper = styled.div`
|
|
|
|
|
padding: 0 5px;
|
|
|
|
|
.bp3-tab-indicator {
|
|
|
|
|
background-color: ${props => props.theme.colors.primary};
|
|
|
|
|
}
|
|
|
|
|
.bp3-tab {
|
|
|
|
|
&[aria-selected="true"] {
|
|
|
|
|
color: ${props => props.theme.colors.primary};
|
|
|
|
|
}
|
|
|
|
|
:hover {
|
|
|
|
|
color: ${props => props.theme.colors.primary};
|
|
|
|
|
}
|
|
|
|
|
:focus {
|
|
|
|
|
outline: none;
|
2019-10-21 15:12:45 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
`;
|
|
|
|
|
|
|
|
|
|
type TabbedViewComponentType = {
|
|
|
|
|
tabs: Array<{
|
|
|
|
|
key: string;
|
|
|
|
|
title: string;
|
2019-10-25 05:35:20 +00:00
|
|
|
panelComponent: JSX.Element;
|
2019-10-21 15:12:45 +00:00
|
|
|
}>;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const BaseTabbedView = (props: TabbedViewComponentType) => {
|
|
|
|
|
return (
|
|
|
|
|
<TabsWrapper>
|
2019-10-25 05:35:20 +00:00
|
|
|
<Tabs>
|
2019-10-21 15:12:45 +00:00
|
|
|
{props.tabs.map(tab => (
|
2019-10-25 05:35:20 +00:00
|
|
|
<Tab
|
|
|
|
|
key={tab.key}
|
|
|
|
|
id={tab.key}
|
|
|
|
|
title={tab.title}
|
|
|
|
|
panel={tab.panelComponent}
|
|
|
|
|
/>
|
2019-10-21 15:12:45 +00:00
|
|
|
))}
|
2019-10-25 05:35:20 +00:00
|
|
|
</Tabs>
|
2019-10-21 15:12:45 +00:00
|
|
|
</TabsWrapper>
|
|
|
|
|
);
|
|
|
|
|
};
|