Skip to content

Commit 4b87057

Browse files
committed
fix: toolbar context menu not being styled by themes
1 parent 0782419 commit 4b87057

7 files changed

Lines changed: 44 additions & 21 deletions

File tree

frontend/classes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
import { ClassModule, findClassModule } from '@steambrew/client';
55

66
export const settingsClasses = findClassModule(m => m.SettingsTitleBar && m.SettingsDialogButton) as ClassModule;
7+
export const contextMenuClasses = findClassModule(m => m.contextMenuContents && m.ContextMenuPosition) as ClassModule;

frontend/components/ExtensionBar/ExtensionContextMenu.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export function showExtensionContextMenu(extension: Extension, targetElement: El
5151
bCreateHidden: false,
5252
bRetainOnHide: false,
5353
bNoFocusWhenShown: undefined,
54-
title: `${extension.name} - Context Menu`,
54+
title: 'useBrowserViewContextMenu',
5555
},
5656
);
5757
}

frontend/components/Styles.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
import { constSysfsExpr } from '@steambrew/client';
2+
import { contextMenuClasses } from 'classes';
23
import React from 'react';
34

4-
export const extendiumStyles = constSysfsExpr('extendium.css', { basePath: '../../public' }).content;
5+
export const extendiumStyles = fixInternalStyles(constSysfsExpr('extendium.css', { basePath: '../../public' }).content);
56

67
export function Styles(): React.JSX.Element {
78
return <style>{extendiumStyles}</style>;
89
}
10+
11+
function fixInternalStyles(styleStr: string): string {
12+
for (const [key, value] of Object.entries(contextMenuClasses)) {
13+
styleStr = styleStr.replaceAll(new RegExp(`\\.__${key}\\b`, 'g'), `.${value}`);
14+
}
15+
16+
return styleStr;
17+
}

frontend/components/ToolbarExtensionManager/ToolbarManagerButton.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export function ToolbarManagerButton(): React.JSX.Element {
2020
bCreateHidden: false,
2121
bRetainOnHide: false,
2222
bNoFocusWhenShown: undefined,
23-
title: 'Extensions',
23+
title: 'useBrowserViewContextMenu',
2424
},
2525
);
2626
}

frontend/components/ToolbarExtensionManager/ToolbarManagerContextMenu.tsx

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { DialogHeader, Field } from '@steambrew/client';
1+
import { DialogHeader, Field, Menu } from '@steambrew/client';
2+
import { Styles } from 'components/Styles';
23
import { openExtensionManagerPopup } from 'extensions-manager/ExtensionManagerPopup';
34
import React, { useMemo } from 'react';
45
import { FaCog } from 'react-icons/fa';
@@ -31,22 +32,27 @@ export function ToolbarManagerContextMenu(): React.JSX.Element {
3132
}
3233

3334
return (
34-
<div style={{ padding: '1rem', width: '18rem' }}>
35-
<DialogHeader>Extensions</DialogHeader>
36-
{enabledExtensions
37-
.sort((a, b) => a.name.localeCompare(b.name))
38-
.map(extension => (
39-
<ManagerExtensionItem
40-
key={extension.id}
41-
extension={extension}
42-
pinned={isExtensionPinned(extension.id)}
43-
pinExtension={pinExtension}
44-
unpinExtension={unpinExtension}
45-
/>
46-
))}
47-
<div style={{ cursor: 'pointer' }} onClick={() => { openExtensionManagerPopup(); }}>
48-
<Field icon={<FaCog />} label="Manage extensions" />
35+
<>
36+
<Styles />
37+
<div className="extendium-toolbar-manager-context-menu">
38+
<Menu label="Extension">
39+
<DialogHeader>Extensions</DialogHeader>
40+
{enabledExtensions
41+
.sort((a, b) => a.name.localeCompare(b.name))
42+
.map(extension => (
43+
<ManagerExtensionItem
44+
key={extension.id}
45+
extension={extension}
46+
pinned={isExtensionPinned(extension.id)}
47+
pinExtension={pinExtension}
48+
unpinExtension={unpinExtension}
49+
/>
50+
))}
51+
<div style={{ cursor: 'pointer' }} onClick={() => { openExtensionManagerPopup(); }}>
52+
<Field icon={<FaCog />} label="Manage extensions" />
53+
</div>
54+
</Menu>
4955
</div>
50-
</div>
56+
</>
5157
);
5258
}

frontend/extensions-manager/Settings/ExtendiumSettings.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export function ExtendiumSettings(): React.ReactNode {
4949
</Field>
5050
<ExternalLinksManager />
5151
<Field label="Always open links in current tab on left click (ignores target blank)">
52-
<div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>
52+
<div style={{ display: 'flex', alignItems: 'center', gap: '12px', marginTop: '1rem' }}>
5353
<span>Open in current tab</span>
5454
<Toggle
5555
onChange={(value) => { setSettings({ openLinksInCurrentTab: value }); }}

public/extendium.scss

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,4 +589,11 @@ $externalLinksDefaultBackground: rgba(255, 255, 255, 0.04);
589589
.ext-links-actions {
590590
margin-top: 4px;
591591
}
592+
}
593+
594+
.extendium-toolbar-manager-context-menu {
595+
.__contextMenuContents {
596+
padding: 1rem !important;
597+
width: 18rem;
598+
}
592599
}

0 commit comments

Comments
 (0)