import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { observer } from 'mobx-react'; import injectSheet from 'react-jss'; import { defineMessages, FormattedHTMLMessage, intlShape } from 'react-intl'; import { H1, Icon, ProBadge } from '@meetfranz/ui'; import { Button } from '@meetfranz/forms/lib'; import ReactTooltip from 'react-tooltip'; import { mdiPlusBox, mdiSettings, mdiStar } from '@mdi/js'; import WorkspaceDrawerItem from './WorkspaceDrawerItem'; import { workspaceActions } from '../actions'; import { GA_CATEGORY_WORKSPACES, workspaceStore } from '../index'; import { gaEvent } from '../../../lib/analytics'; const messages = defineMessages({ headline: { id: 'workspaceDrawer.headline', defaultMessage: '!!!Workspaces', }, allServices: { id: 'workspaceDrawer.allServices', defaultMessage: '!!!All services', }, workspacesSettingsTooltip: { id: 'workspaceDrawer.workspacesSettingsTooltip', defaultMessage: '!!!Workspaces settings', }, workspaceFeatureInfo: { id: 'workspaceDrawer.workspaceFeatureInfo', defaultMessage: '!!!Info about workspace feature', }, premiumCtaButtonLabel: { id: 'workspaceDrawer.premiumCtaButtonLabel', defaultMessage: '!!!Create your first workspace', }, reactivatePremiumAccount: { id: 'workspaceDrawer.reactivatePremiumAccountLabel', defaultMessage: '!!!Reactivate premium account', }, addNewWorkspaceLabel: { id: 'workspaceDrawer.addNewWorkspaceLabel', defaultMessage: '!!!add new workspace', }, premiumFeatureBadge: { id: 'workspaceDrawer.proFeatureBadge', defaultMessage: '!!!Premium feature', }, }); const styles = theme => ({ drawer: { background: theme.workspaces.drawer.background, width: `${theme.workspaces.drawer.width}px`, display: 'flex', flexDirection: 'column', }, headline: { fontSize: '24px', marginTop: '38px', marginBottom: '25px', marginLeft: theme.workspaces.drawer.padding, }, headlineProBadge: { marginRight: 15, }, workspacesSettingsButton: { float: 'right', marginRight: theme.workspaces.drawer.padding, marginTop: '2px', }, workspacesSettingsButtonIcon: { fill: theme.workspaces.drawer.buttons.color, '&:hover': { fill: theme.workspaces.drawer.buttons.hoverColor, }, }, workspaces: { height: 'auto', overflowY: 'scroll', }, premiumAnnouncement: { padding: '20px', paddingTop: '0', height: 'auto', }, premiumCtaButton: { marginTop: '20px', width: '100%', color: 'white !important', }, addNewWorkspaceLabel: { height: 'auto', color: theme.workspaces.drawer.buttons.color, margin: [40, 0], textAlign: 'center', '& > svg': { fill: theme.workspaces.drawer.buttons.color, }, '& > span': { fontSize: '13px', marginLeft: 10, position: 'relative', top: -3, }, '&:hover': { color: theme.workspaces.drawer.buttons.hoverColor, '& > svg': { fill: theme.workspaces.drawer.buttons.hoverColor, }, }, }, }); @injectSheet(styles) @observer class WorkspaceDrawer extends Component { static propTypes = { classes: PropTypes.object.isRequired, getServicesForWorkspace: PropTypes.func.isRequired, onUpgradeAccountClick: PropTypes.func.isRequired, }; static contextTypes = { intl: intlShape, }; componentDidMount() { ReactTooltip.rebuild(); } render() { const { classes, getServicesForWorkspace, onUpgradeAccountClick, } = this.props; const { intl } = this.context; const { activeWorkspace, isSwitchingWorkspace, nextWorkspace, workspaces, } = workspaceStore; const actualWorkspace = isSwitchingWorkspace ? nextWorkspace : activeWorkspace; return (

{workspaceStore.isPremiumUpgradeRequired && ( )} {intl.formatMessage(messages.headline)} { workspaceActions.openWorkspaceSettings(); gaEvent(GA_CATEGORY_WORKSPACES, 'settings', 'drawerHeadline'); }} data-tip={`${intl.formatMessage(messages.workspacesSettingsTooltip)}`} >

{workspaceStore.isPremiumUpgradeRequired ? (
{workspaceStore.userHasWorkspaces ? (
) : (
{ workspaceActions.deactivate(); workspaceActions.toggleWorkspaceDrawer(); gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer'); }} services={getServicesForWorkspace(null)} isActive={actualWorkspace == null} shortcutIndex={0} /> {workspaces.map((workspace, index) => ( { if (actualWorkspace === workspace) return; workspaceActions.activate({ workspace }); workspaceActions.toggleWorkspaceDrawer(); gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer'); }} onContextMenuEditClick={() => workspaceActions.edit({ workspace })} services={getServicesForWorkspace(workspace)} shortcutIndex={index + 1} /> ))}
{ workspaceActions.openWorkspaceSettings(); gaEvent(GA_CATEGORY_WORKSPACES, 'add', 'drawerAddLabel'); }} > {intl.formatMessage(messages.addNewWorkspaceLabel)}
)}
); } } export default WorkspaceDrawer;