Skip to content

Commit

Permalink
fix(styling): add Dark Mode CSS class to Header Menu (#1589)
Browse files Browse the repository at this point in the history
* fix(styling): add Dark Mode CSS class to Header Menu
- Header Menu wasn't always picking up dark mode styling especially when having multiple dark themes like in Slickgrid-Universal Material/Salesforce
  • Loading branch information
ghiscoding authored Jul 1, 2024
1 parent 44fd11b commit 3399ae8
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 3 deletions.
6 changes: 3 additions & 3 deletions examples/vite-demo-vanilla-bundle/src/material-styles.scss
Original file line number Diff line number Diff line change
Expand Up @@ -118,10 +118,10 @@
}
}

[data-theme="dark"] .slick-submenu,
.ms-dark-mode,
.ms-drop.ms-dark-mode,
.slick-dark-mode .ms-dark-mode,
.slick-dark-mode .slick-submenu,
.slick-dark-mode .icon-checkbox-container,
.ms-dark-mode .icon-checkbox-container,
.slick-dark-mode {
Expand Down Expand Up @@ -177,11 +177,11 @@
}
}

body.material-theme[data-theme="dark"] .slick-submenu,
body.material-theme .ms-dark-mode,
body.material-theme .ms-drop.ms-dark-mode,
body.material-theme .slick-dark-mode .ms-dark-mode,
body.material-theme .slick-dark-mode,
body.material-theme .slick-dark-mode .ms-dark-mode,
body.material-theme .slick-dark-mode .slick-submenu,
body.material-theme .dark-mode .text-color-primary {
--slick-primary-color: #66bb6a;
--slick-menu-color: #ededed;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -748,6 +748,10 @@ describe('HeaderMenu Plugin', () => {
const onCommandMock = jest.fn();
Object.defineProperty(document.documentElement, 'clientWidth', { writable: true, configurable: true, value: 50 });
jest.spyOn(gridStub, 'getColumns').mockReturnValueOnce(columnsMock);
jest.spyOn(SharedService.prototype, 'gridOptions', 'get').mockReturnValueOnce({
...gridOptionsMock,
darkMode: true,
});

plugin.init({ autoAlign: true });
plugin.addonOptions.onCommand = onCommandMock;
Expand Down Expand Up @@ -785,6 +789,7 @@ describe('HeaderMenu Plugin', () => {

expect(headerMenu2Elm2.classList.contains('dropup')).toBeTruthy();
expect(headerMenu2Elm2.classList.contains('dropdown')).toBeFalsy();
expect(headerMenu2Elm2.classList.contains('slick-dark-mode')).toBeTruthy();

// cell click should close it
gridStub.onClick.notify({ row: 1, cell: 2, grid: gridStub }, eventData as any, gridStub);
Expand Down
5 changes: 5 additions & 0 deletions packages/common/src/extensions/slickHeaderMenu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -620,11 +620,16 @@ export class SlickHeaderMenu extends MenuBaseClass<HeaderMenu> {
className: menuClasses,
style: { minWidth: `${this.addonOptions.minWidth}px` },
});

if (level > 0) {
menuElm.classList.add('slick-submenu');
if (subMenuId) {
menuElm.dataset.subMenuParent = subMenuId;
}
// add dark mode CSS class when enabled
if (this.gridOptions?.darkMode) {
menuElm.classList.add('slick-dark-mode');
}
}

const commandMenuElm = createDomElement('div', { className: `${this._menuCssPrefix}-command-list`, role: 'menu' }, menuElm);
Expand Down
1 change: 1 addition & 0 deletions packages/common/src/styles/_variables-theme-material.scss
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ $slick-dark-text-color: #d4d4d4;
.ms-dark-mode,
.ms-drop.ms-dark-mode,
.slick-dark-mode .ms-dark-mode,
.slick-dark-mode .slick-submenu,
.slick-dark-mode .icon-checkbox-container,
.slick-dark-mode {
--slick-base-dark-menu-bg-color: #212121;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ $slick-dark-base-dark-menu-bg-color: #212121;
.ms-dark-mode,
.ms-drop.ms-dark-mode,
.slick-dark-mode .ms-dark-mode,
.slick-dark-mode .slick-submenu,
.slick-dark-mode .icon-checkbox-container,
.slick-dark-mode {
--ms-checkbox-color: #66b8ff;
Expand Down
1 change: 1 addition & 0 deletions packages/common/src/styles/_variables.scss
Original file line number Diff line number Diff line change
Expand Up @@ -971,6 +971,7 @@ $slick-dark-text-color: #d4d4d4;
.ms-dark-mode,
.ms-drop.ms-dark-mode,
.slick-dark-mode .ms-dark-mode,
.slick-dark-mode .slick-submenu,
.slick-dark-mode {
// local common CSS vars for dark mode
--slick-primary-color: #{$slick-dark-primary-color};
Expand Down

0 comments on commit 3399ae8

Please sign in to comment.