import React from 'react'; import PropTypes from 'prop-types'; import fs from 'fs'; import classNames from 'classnames'; import { Flexbox, RetinaImg } from 'mailspring-component-kit'; import { Actions, PreferencesUIStore, Utils } from 'mailspring-exports'; class PreferencesTabItem extends React.Component { static displayName = 'PreferencesTabItem'; static propTypes = { selection: PropTypes.shape({ accountId: PropTypes.string, tabId: PropTypes.string, }).isRequired, tabItem: PropTypes.instanceOf(PreferencesUIStore.TabItem).isRequired, }; _onClick = () => { Actions.switchPreferencesTab(this.props.tabItem.tabId); }; _onClickAccount = (event, accountId) => { Actions.switchPreferencesTab(this.props.tabItem.tabId, { accountId }); event.stopPropagation(); }; render() { const { selection, tabItem } = this.props; const { tabId, displayName } = tabItem; const classes = classNames({ item: true, active: tabId === selection.tabId, }); let path = `icon-preferences-${displayName.toLowerCase().replace(' ', '-')}.png`; if (!fs.existsSync(Utils.imageNamed(path))) { path = 'icon-preferences-general.png'; } const icon = ( ); return (
{icon}
{displayName}
); } } class PreferencesTabsBar extends React.Component { static displayName = 'PreferencesTabsBar'; static propTypes = { tabs: PropTypes.array.isRequired, selection: PropTypes.shape({ accountId: PropTypes.string, tabId: PropTypes.string, }).isRequired, }; renderTabs() { return this.props.tabs.map(tabItem => ( )); } render() { return (
{this.renderTabs()}
); } } export default PreferencesTabsBar;