diff --git a/web/sidebar/left-layout-aside.css b/web/sidebar/left-layout-aside.css index 065a74e5c..84b2749fe 100644 --- a/web/sidebar/left-layout-aside.css +++ b/web/sidebar/left-layout-aside.css @@ -1,68 +1,68 @@ .container { grid-area: sBar; background: var(--bg); color: var(--color); border-right: 1px solid var(--border-color); display: flex; } -.appSwitcherContainer { +.navigationPanelContainer { width: 160px; } .container ul { list-style-type: none; padding-top: 24px; padding-left: 28px; } .container ul li { cursor: pointer; padding-bottom: 24px; line-height: 0; } .container p { display: flex; align-content: center; } .container ul a { color: var(--color-disabled); } .container svg { color: var(--color-disabled); padding-right: 12px; } .chatIconWrapper { position: relative; } div.chatBadge { position: absolute; top: -4px; left: 13px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; width: 16px; height: 16px; color: var(--fg); background: var(--unread-bg); border-radius: 13px; font-size: 8px; line-height: 1.25; } p.current-tab svg { color: var(--fg); } p.current-tab a, p.current-tab svg { fill: var(--fg); color: var(--fg); } diff --git a/web/sidebar/left-layout-aside.react.js b/web/sidebar/left-layout-aside.react.js index 790c7ba9c..024b2339f 100644 --- a/web/sidebar/left-layout-aside.react.js +++ b/web/sidebar/left-layout-aside.react.js @@ -1,18 +1,18 @@ // @flow import * as React from 'react'; -import AppSwitcher from './app-switcher.react'; import CommunityPicker from './community-picker.react'; import css from './left-layout-aside.css'; +import NavigationPanel from './navigation-panel.react'; function LeftLayoutAside(): React.Node { return ( ); } export default LeftLayoutAside; diff --git a/web/sidebar/app-switcher.css b/web/sidebar/navigation-panel.css similarity index 100% rename from web/sidebar/app-switcher.css rename to web/sidebar/navigation-panel.css diff --git a/web/sidebar/app-switcher.react.js b/web/sidebar/navigation-panel.react.js similarity index 96% rename from web/sidebar/app-switcher.react.js rename to web/sidebar/navigation-panel.react.js index b11dececf..c464ebca7 100644 --- a/web/sidebar/app-switcher.react.js +++ b/web/sidebar/navigation-panel.react.js @@ -1,138 +1,138 @@ // @flow import classNames from 'classnames'; import invariant from 'invariant'; import * as React from 'react'; import { useDispatch } from 'react-redux'; import { mostRecentReadThreadSelector, unreadCount, } from 'lib/selectors/thread-selectors'; import { useSelector } from '../redux/redux-utils'; import SWMansionIcon from '../SWMansionIcon.react'; import { updateNavInfoActionType } from '../types/nav-types'; import css from './left-layout-aside.css'; -function AppSwitcher(): React.Node { +function NavigationPanel(): React.Node { const activeChatThreadID = useSelector( state => state.navInfo.activeChatThreadID, ); const navInfo = useSelector(state => state.navInfo); const mostRecentReadThread = useSelector(mostRecentReadThreadSelector); const activeThreadCurrentlyUnread = useSelector( state => !activeChatThreadID || !!state.threadStore.threadInfos[activeChatThreadID]?.currentUser.unread, ); const viewerID = useSelector( state => state.currentUserInfo && state.currentUserInfo.id, ); const isCalendarEnabled = useSelector(state => state.enabledApps.calendar); const dispatch = useDispatch(); const onClickCalendar = React.useCallback( (event: SyntheticEvent) => { event.preventDefault(); dispatch({ type: updateNavInfoActionType, payload: { tab: 'calendar' }, }); }, [dispatch], ); const onClickChat = React.useCallback( (event: SyntheticEvent) => { event.preventDefault(); dispatch({ type: updateNavInfoActionType, payload: { tab: 'chat', activeChatThreadID: activeThreadCurrentlyUnread ? mostRecentReadThread : activeChatThreadID, }, }); }, [ dispatch, activeThreadCurrentlyUnread, mostRecentReadThread, activeChatThreadID, ], ); const onClickApps = React.useCallback( (event: SyntheticEvent) => { event.preventDefault(); dispatch({ type: updateNavInfoActionType, payload: { tab: 'apps', }, }); }, [dispatch], ); const boundUnreadCount = useSelector(unreadCount); invariant(viewerID, 'should be set'); let chatBadge = null; if (boundUnreadCount > 0) { chatBadge =
{boundUnreadCount}
; } const chatNavClasses = classNames({ [css['current-tab']]: navInfo.tab === 'chat', }); const appsNavClasses = classNames({ [css['current-tab']]: navInfo.tab === 'apps', }); const calendarLink = React.useMemo(() => { if (!isCalendarEnabled) { return null; } const calendarNavClasses = classNames({ [css['current-tab']]: navInfo.tab === 'calendar', }); return (
  • Calendar

  • ); }, [isCalendarEnabled, navInfo.tab, onClickCalendar]); return ( -
    +
    ); } -export default AppSwitcher; +export default NavigationPanel;