From 99f0b2d562bcca3ed9ac4b88a8cbb7d7cf7d0bfe Mon Sep 17 00:00:00 2001 From: Mathias Jakobsen Date: Thu, 13 Aug 2026 09:14:58 +0100 Subject: [PATCH] Merge pull request #36446 from overleaf/mj-themed-keyboard-shortcuts [web] Add theme support to keyboard shortcuts modal GitOrigin-RevId: c92088cbe81a58431627b2343df5d90b68f2bc60 --- .../components/hotkeys-modal.tsx | 10 +++++++- .../stylesheets/pages/editor/hotkeys.scss | 6 ++++- .../components/hotkeys-modal.test.tsx | 24 ++++++++++++------- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/services/web/frontend/js/features/hotkeys-modal/components/hotkeys-modal.tsx b/services/web/frontend/js/features/hotkeys-modal/components/hotkeys-modal.tsx index 00c5222989..cda4c4776b 100644 --- a/services/web/frontend/js/features/hotkeys-modal/components/hotkeys-modal.tsx +++ b/services/web/frontend/js/features/hotkeys-modal/components/hotkeys-modal.tsx @@ -11,6 +11,7 @@ import { import OLButton from '@/shared/components/ol/ol-button' import OLRow from '@/shared/components/ol/ol-row' import OLCol from '@/shared/components/ol/ol-col' +import { useFeatureFlag } from '@/shared/context/split-test-context' export default memo(function HotkeysModal({ animation = true, @@ -26,11 +27,18 @@ export default memo(function HotkeysModal({ trackChangesVisible?: boolean }) { const { t } = useTranslation() + const themed = useFeatureFlag('themed-modals') const ctrl = isMac ? 'Cmd' : 'Ctrl' return ( - + {t('hotkeys')} diff --git a/services/web/frontend/stylesheets/pages/editor/hotkeys.scss b/services/web/frontend/stylesheets/pages/editor/hotkeys.scss index bd628a6317..c311012c5e 100644 --- a/services/web/frontend/stylesheets/pages/editor/hotkeys.scss +++ b/services/web/frontend/stylesheets/pages/editor/hotkeys.scss @@ -1,4 +1,8 @@ .hotkeys-modal { + @include themed-links; + + --bs-code-color: var(--content-secondary-themed); + font-size: var(--font-size-02); h3:first-child { @@ -23,7 +27,7 @@ } .hotkeys-modal-bottom-text { - background-color: var(--bg-light-secondary); + background-color: var(--bg-secondary-themed); padding: var(--spacing-04); border-radius: var(--border-radius-base); } diff --git a/services/web/test/frontend/features/hotkeys-modal/components/hotkeys-modal.test.tsx b/services/web/test/frontend/features/hotkeys-modal/components/hotkeys-modal.test.tsx index 1df3c514b7..f7c3a23537 100644 --- a/services/web/test/frontend/features/hotkeys-modal/components/hotkeys-modal.test.tsx +++ b/services/web/test/frontend/features/hotkeys-modal/components/hotkeys-modal.test.tsx @@ -1,4 +1,6 @@ import { render, screen } from '@testing-library/react' +import { ComponentProps } from 'react' +import { SplitTestProvider } from '@/shared/context/split-test-context' import HotkeysModal from '../../../../../frontend/js/features/hotkeys-modal/components/hotkeys-modal' import { expect } from 'chai' import sinon from 'sinon' @@ -9,9 +11,17 @@ const modalProps = { trackChangesVisible: false, } +function renderModal(props: Partial> = {}) { + return render( + + + + ) +} + describe('', function () { it('renders the translated modal title on cm6', async function () { - const { baseElement } = render() + const { baseElement } = renderModal() expect(baseElement.querySelector('.modal-title')?.textContent).to.equal( 'Hotkeys' @@ -19,14 +29,14 @@ describe('', function () { }) it('renders translated heading with embedded code', function () { - const { baseElement } = render() + const { baseElement } = renderModal() const results = baseElement.querySelectorAll('h3 code') expect(results).to.have.length(1) }) it('renders the hotkey descriptions', function () { - const { baseElement } = render() + const { baseElement } = renderModal() const hotkeys = baseElement.querySelectorAll( '[data-test-selector="hotkey"]' @@ -35,9 +45,7 @@ describe('', function () { }) it('adds extra hotkey descriptions when Track Changes is enabled', function () { - const { baseElement } = render( - - ) + const { baseElement } = renderModal({ trackChangesVisible: true }) const hotkeys = baseElement.querySelectorAll( '[data-test-selector="hotkey"]' @@ -46,14 +54,14 @@ describe('', function () { }) it('uses Ctrl for non-macOS', function () { - render() + renderModal() expect(screen.getAllByText(/Ctrl/)).to.have.length(16) expect(screen.queryByText(/Cmd/)).to.not.exist }) it('uses Cmd for macOS', function () { - render() + renderModal({ isMac: true }) expect(screen.getAllByText(/Cmd/)).to.have.length(12) expect(screen.getAllByText(/Ctrl/)).to.have.length(4)