Skip to content

Commit bd9c146

Browse files
committed
add dark theme switcher
1 parent c511423 commit bd9c146

File tree

3 files changed

+33
-6
lines changed

3 files changed

+33
-6
lines changed

src/app/AppLayout/AppLayout.tsx

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ import * as React from 'react';
22
import { NavLink, useLocation } from 'react-router-dom';
33
import {
44
Button,
5+
Icon,
56
Masthead,
67
MastheadBrand,
8+
MastheadContent,
79
MastheadMain,
810
MastheadToggle,
911
Nav,
@@ -13,17 +15,30 @@ import {
1315
Page,
1416
PageSidebar,
1517
PageSidebarBody,
16-
SkipToContent
18+
SkipToContent,
19+
ToggleGroup,
20+
ToggleGroupItem,
21+
Toolbar,
22+
ToolbarContent,
23+
ToolbarItem
1724
} from '@patternfly/react-core';
1825
import { IAppRoute, IAppRouteGroup, routes } from '@app/routes';
19-
import { BarsIcon } from '@patternfly/react-icons';
26+
import { BarsIcon, MoonIcon, SunIcon } from '@patternfly/react-icons';
2027

2128
interface IAppLayout {
2229
children: React.ReactNode;
2330
}
2431

2532
const AppLayout: React.FunctionComponent<IAppLayout> = ({ children }) => {
2633
const [sidebarOpen, setSidebarOpen] = React.useState(true);
34+
const [isDarkTheme, setIsDarkTheme] = React.useState(false);
35+
36+
const toggleDarkTheme = (_evt, selected) => {
37+
const darkThemeToggleClicked = !selected === isDarkTheme
38+
document.querySelector('html').classList.toggle('pf-v5-theme-dark', darkThemeToggleClicked);
39+
setIsDarkTheme(darkThemeToggleClicked);
40+
};
41+
2742
const Header = (
2843
<Masthead>
2944
<MastheadToggle>
@@ -63,6 +78,18 @@ const AppLayout: React.FunctionComponent<IAppLayout> = ({ children }) => {
6378
</svg>
6479
</MastheadBrand>
6580
</MastheadMain>
81+
<MastheadContent>
82+
<Toolbar>
83+
<ToolbarContent>
84+
<ToolbarItem align={{ default: 'alignRight' }}>
85+
<ToggleGroup aria-label="Dark theme toggle group">
86+
<ToggleGroupItem aria-label="light theme toggle" icon={<Icon size="md"><SunIcon /></Icon>} isSelected={!isDarkTheme} onChange={toggleDarkTheme} />
87+
<ToggleGroupItem aria-label="dark theme toggle" icon={<Icon size="md"><MoonIcon /></Icon>} isSelected={isDarkTheme} onChange={toggleDarkTheme} />
88+
</ToggleGroup>
89+
</ToolbarItem>
90+
</ToolbarContent>
91+
</Toolbar>
92+
</MastheadContent>
6693
</Masthead>
6794
);
6895

src/app/Inventory/Inventory.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import * as React from "react";
22
import {ISupportProps} from "@app/Resources/Resources";
33
import {
44
EmptyState,
5-
EmptyStateFooter,
65
EmptyStateBody,
6+
EmptyStateFooter,
77
Button,
88
Bullseye,
99
EmptyStateActions,
@@ -20,7 +20,7 @@ import {
2020
ToolbarContent,
2121
ToolbarItem
2222
} from '@patternfly/react-core';
23-
import { Table, Thead, Tr, Th, Tbody, Td } from '@patternfly/react-table';
23+
import { Table, Tbody, Td, Th, Thead, Tr } from '@patternfly/react-table';
2424
import SearchIcon from '@patternfly/react-icons/dist/js/icons/search-icon';
2525
import {MenuToggleElement} from "@patternfly/react-core/dist/esm/components/MenuToggle/MenuToggle";
2626

@@ -170,7 +170,7 @@ const Inventory: React.FunctionComponent<ISupportProps> = () => {
170170
window.removeEventListener('keydown', handleBulkSelectMenuKeys);
171171
window.removeEventListener('click', handleBulkSelectClickOutside);
172172
};
173-
}, [isBulkSelectOpen, bulkSelectMenuRef, handleBulkSelectMenuKeys, handleBulkSelectClickOutside]);
173+
}, [isBulkSelectOpen, bulkSelectMenuRef]);
174174

175175
const onBulkSelectToggleClick = (ev: React.MouseEvent) => {
176176
ev.stopPropagation(); // Stop handleClickOutside from handling

src/app/Resources/Resources.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import {
1616
Gallery,
1717
PageSection,
1818
Tab,
19-
Tabs,
2019
TabTitleText,
20+
Tabs,
2121
Text,
2222
TextContent,
2323
TextVariants,

0 commit comments

Comments
 (0)