2019-10-03 23:17:04 +07:00
|
|
|
import React, { ChangeEvent, useState, useEffect } from 'react';
|
2019-11-23 19:41:14 +07:00
|
|
|
import styled from '@emotion/styled';
|
2019-10-03 23:17:04 +07:00
|
|
|
|
2019-10-31 14:12:18 +07:00
|
|
|
import { default as MuiTabs } from '../../muiComponents/Tabs';
|
|
|
|
import Tab from '../../muiComponents/Tab';
|
|
|
|
|
2019-10-03 23:17:04 +07:00
|
|
|
import { TabPosition } from './tabs';
|
|
|
|
|
|
|
|
interface Props {
|
|
|
|
tabPosition: TabPosition;
|
|
|
|
onChangeTabPosition: (event: ChangeEvent<{}>) => void;
|
|
|
|
}
|
|
|
|
|
|
|
|
const Tabs = styled(MuiTabs)({
|
|
|
|
marginBottom: 16,
|
|
|
|
});
|
|
|
|
|
2019-10-27 21:49:30 +07:00
|
|
|
const getTabIndex = (tabPosition: TabPosition): number =>
|
|
|
|
Object.keys(TabPosition).findIndex(position => position === String(tabPosition).toUpperCase());
|
2019-10-03 23:17:04 +07:00
|
|
|
|
|
|
|
const DetailContainerTabs: React.FC<Props> = ({ tabPosition, onChangeTabPosition }) => {
|
|
|
|
const [tabPositionIndex, setTabPositionIndex] = useState(0);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
const tabIndex = getTabIndex(tabPosition);
|
|
|
|
setTabPositionIndex(tabIndex);
|
|
|
|
}, [tabPosition]);
|
|
|
|
|
|
|
|
return (
|
2019-10-27 21:49:30 +07:00
|
|
|
<Tabs
|
|
|
|
indicatorColor={'primary'}
|
|
|
|
onChange={onChangeTabPosition}
|
|
|
|
textColor={'primary'}
|
|
|
|
value={tabPositionIndex}
|
|
|
|
variant={'fullWidth'}>
|
2019-10-03 23:17:04 +07:00
|
|
|
<Tab data-testid={'readme-tab'} id={'readme-tab'} label={TabPosition.README} />
|
|
|
|
<Tab data-testid={'dependencies-tab'} id={'dependencies-tab'} label={TabPosition.DEPENDENCIES} />
|
|
|
|
<Tab data-testid={'versions-tab'} id={'versions-tab'} label={TabPosition.VERSIONS} />
|
|
|
|
<Tab data-testid={'uplinks-tab'} id={'uplinks-tab'} label={TabPosition.UPLINKS} />
|
|
|
|
</Tabs>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default DetailContainerTabs;
|