diff options
Diffstat (limited to 'frontend/src/components/PluginView.tsx')
| -rw-r--r-- | frontend/src/components/PluginView.tsx | 58 |
1 files changed, 34 insertions, 24 deletions
diff --git a/frontend/src/components/PluginView.tsx b/frontend/src/components/PluginView.tsx index 0d0a52cf..2ae0b555 100644 --- a/frontend/src/components/PluginView.tsx +++ b/frontend/src/components/PluginView.tsx @@ -1,5 +1,6 @@ import { ButtonItem, + Focusable, PanelSection, PanelSectionRow, joinClassNames, @@ -10,38 +11,47 @@ import { VFC } from 'react'; import { useDeckyState } from './DeckyState'; import NotificationBadge from './NotificationBadge'; +import { useQuickAccessVisible } from './QuickAccessVisibleState'; +import TitleView from './TitleView'; const PluginView: VFC = () => { - const { plugins, updates, activePlugin, setActivePlugin } = useDeckyState(); + const { plugins, updates, activePlugin, setActivePlugin, closeActivePlugin } = useDeckyState(); + const visible = useQuickAccessVisible(); if (activePlugin) { return ( - <div - className={joinClassNames(staticClasses.TabGroupPanel, scrollClasses.ScrollPanel, scrollClasses.ScrollY)} - style={{ height: '100%' }} - > - {activePlugin.content} - </div> + <Focusable onCancelButton={closeActivePlugin}> + <TitleView /> + <div + className={joinClassNames(staticClasses.TabGroupPanel, scrollClasses.ScrollPanel, scrollClasses.ScrollY)} + style={{ height: '100%' }} + > + {visible && activePlugin.content} + </div> + </Focusable> ); } return ( - <div className={joinClassNames(staticClasses.TabGroupPanel, scrollClasses.ScrollPanel, scrollClasses.ScrollY)}> - <PanelSection> - {plugins - .filter((p) => p.content) - .map(({ name, icon }) => ( - <PanelSectionRow key={name}> - <ButtonItem layout="below" onClick={() => setActivePlugin(name)}> - <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}> - {icon} - <div>{name}</div> - <NotificationBadge show={updates?.has(name)} style={{ top: '-5px', right: '-5px' }} /> - </div> - </ButtonItem> - </PanelSectionRow> - ))} - </PanelSection> - </div> + <> + <TitleView /> + <div className={joinClassNames(staticClasses.TabGroupPanel, scrollClasses.ScrollPanel, scrollClasses.ScrollY)}> + <PanelSection> + {plugins + .filter((p) => p.content) + .map(({ name, icon }) => ( + <PanelSectionRow key={name}> + <ButtonItem layout="below" onClick={() => setActivePlugin(name)}> + <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}> + {icon} + <div>{name}</div> + <NotificationBadge show={updates?.has(name)} style={{ top: '-5px', right: '-5px' }} /> + </div> + </ButtonItem> + </PanelSectionRow> + ))} + </PanelSection> + </div> + </> ); }; |
