mue/src/components/modals/main/tabs/backend/Tabs.jsx

127 lines
3.8 KiB
JavaScript

import variables from 'modules/variables';
import { PureComponent } from 'react';
import {
MdSettings,
MdOutlineShoppingBasket,
MdOutlineExtension,
MdRefresh,
MdClose,
} from 'react-icons/md';
import Tab from './Tab';
import ErrorBoundary from '../../../ErrorBoundary';
export default class Tabs extends PureComponent {
constructor(props) {
super(props);
this.state = {
currentTab: this.props.children[0].props.label,
currentName: this.props.children[0].props.name,
};
}
onClick = (tab, name) => {
if (name !== this.state.currentName) {
variables.stats.postEvent('tab', `Opened ${name}`);
}
this.setState({
currentTab: tab,
currentName: name,
});
};
render() {
const display = localStorage.getItem('showReminder') === 'true' ? 'flex' : 'none';
const reminderInfo = (
<div className="reminder-info" style={{ display }}>
<div className="shareHeader">
<span className="title">
{variables.getMessage('modals.main.settings.reminder.title')}
</span>
<span className="closeModal" onClick={ () => localStorage.setItem('showReminder', false)}>
<MdClose />
</span>
</div>
<span className="subtitle">
{variables.getMessage('modals.main.settings.reminder.message')}
</span>
<button onClick={() => window.location.reload()}>
<MdRefresh />
{variables.getMessage('modals.main.error_boundary.refresh')}
</button>
</div>
);
let settingsActive = '';
let addonsActive = '';
let marketplaceActive = '';
switch (this.props.current) {
case 'settings':
settingsActive = ' navbar-item-active';
break;
case 'addons':
addonsActive = ' navbar-item-active';
break;
case 'marketplace':
marketplaceActive = ' navbar-item-active';
break;
default:
break;
}
return (
<div style={{ display: 'flex', width: '100%', minHeight: '100%' }}>
<ul className="sidebar">
{this.props.children.map((tab, index) => (
<Tab
currentTab={this.state.currentTab}
key={index}
label={tab.props.label}
onClick={(nextTab) => this.onClick(nextTab, tab.props.name)}
navbarTab={this.props.navbar || false}
/>
))}
{reminderInfo}
</ul>
<div className="tab-content" style={{ width: '100%' }}>
<ErrorBoundary>
<div className="modalNavbar">
<button
className={'navbar-item' + settingsActive}
onClick={() => this.props.changeTab('settings')}
>
<MdSettings />
<span> {variables.getMessage('modals.main.navbar.settings')}</span>
</button>
<button
className={'navbar-item' + addonsActive}
onClick={() => this.props.changeTab('addons')}
>
<MdOutlineExtension />
<span>{variables.getMessage('modals.main.navbar.addons')}</span>
</button>
<button
className={'navbar-item' + marketplaceActive}
onClick={() => this.props.changeTab('marketplace')}
>
<MdOutlineShoppingBasket />
<span>{variables.getMessage('modals.main.navbar.marketplace')}</span>
</button>
</div>
{this.props.children.map((tab) => {
if (tab.props.label !== this.state.currentTab) {
return undefined;
}
return tab.props.children;
})}
</ErrorBoundary>
</div>
</div>
);
}
}