From 8a9297a67e99c551cbda0680d185ab16f63574fd Mon Sep 17 00:00:00 2001 From: David <33458145+davidmcpowell@users.noreply.github.com> Date: Thu, 20 Feb 2025 10:53:51 +0000 Subject: [PATCH] Merge pull request #23697 from overleaf/dp-layout-switcher Add layout switcher button to toolbar GitOrigin-RevId: 33bf664c2e2cb5c2f992b70fd9ca90b5dfe2ee44 --- .../web/frontend/extracted-translations.json | 5 + ...alSymbolsRoundedUnfilledPartialSlice.woff2 | Bin 3916 -> 4032 bytes .../material-symbols/unfilled-symbols.mjs | 1 + .../ide-redesign/components/main-layout.tsx | 44 ++++- .../toolbar/change-layout-button.tsx | 46 +++++ .../toolbar/change-layout-options.tsx | 175 ++++++++++++++++++ .../components/toolbar/menu-bar.tsx | 3 +- .../components/toolbar/toolbar.tsx | 2 + .../ide-redesign/hooks/use-pdf-pane.tsx | 35 ---- .../bootstrap-5/pages/editor/ide.scss | 12 ++ services/web/locales/en.json | 5 + 11 files changed, 282 insertions(+), 46 deletions(-) create mode 100644 services/web/frontend/js/features/ide-redesign/components/toolbar/change-layout-button.tsx create mode 100644 services/web/frontend/js/features/ide-redesign/components/toolbar/change-layout-options.tsx delete mode 100644 services/web/frontend/js/features/ide-redesign/hooks/use-pdf-pane.tsx diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json index 34d8431612..8db302aedb 100644 --- a/services/web/frontend/extracted-translations.json +++ b/services/web/frontend/extracted-translations.json @@ -463,6 +463,7 @@ "editor_and_pdf": "", "editor_disconected_click_to_reconnect": "", "editor_limit_exceeded_in_this_project": "", + "editor_only": "", "editor_only_hide_pdf": "", "editor_settings": "", "editor_theme": "", @@ -858,6 +859,7 @@ "latex_places_figures_according_to_a_special_algorithm": "", "latex_places_tables_according_to_a_special_algorithm": "", "layout": "", + "layout_options": "", "layout_processing": "", "learn_more": "", "learn_more_about_account": "", @@ -1091,6 +1093,7 @@ "open_file": "", "open_link": "", "open_path": "", + "open_pdf_in_separate_tab": "", "open_project": "", "open_survey": "", "open_target": "", @@ -1150,6 +1153,7 @@ "pdf_compile_try_again": "", "pdf_couldnt_compile": "", "pdf_in_separate_tab": "", + "pdf_only": "", "pdf_only_hide_editor": "", "pdf_preview_error": "", "pdf_rendering_error": "", @@ -1531,6 +1535,7 @@ "sort_projects": "", "source": "", "spell_check": "", + "split_view": "", "sso": "", "sso_active": "", "sso_already_setup_good_to_go": "", diff --git a/services/web/frontend/fonts/material-symbols/MaterialSymbolsRoundedUnfilledPartialSlice.woff2 b/services/web/frontend/fonts/material-symbols/MaterialSymbolsRoundedUnfilledPartialSlice.woff2 index bf4ba34c6b0cdf731667ab3e1a79d5d3e42afeb9..a7c79e29a925490dd1f14a04a889e1fa7db057c2 100644 GIT binary patch literal 4032 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 literal 3916 zcmV-S53}%hPew8T0RR9101r$64gdfE03Uz=01ov40RR9100000000000000000000 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 diff --git a/services/web/frontend/fonts/material-symbols/unfilled-symbols.mjs b/services/web/frontend/fonts/material-symbols/unfilled-symbols.mjs index c727e77cf0..9c4a941859 100644 --- a/services/web/frontend/fonts/material-symbols/unfilled-symbols.mjs +++ b/services/web/frontend/fonts/material-symbols/unfilled-symbols.mjs @@ -18,6 +18,7 @@ export default /** @type {const} */ ([ 'rate_review', 'report', 'settings', + 'space_dashboard', 'table_chart', 'upload_file', 'web_asset', diff --git a/services/web/frontend/js/features/ide-redesign/components/main-layout.tsx b/services/web/frontend/js/features/ide-redesign/components/main-layout.tsx index 71bbbe33c3..9d847ee95e 100644 --- a/services/web/frontend/js/features/ide-redesign/components/main-layout.tsx +++ b/services/web/frontend/js/features/ide-redesign/components/main-layout.tsx @@ -7,17 +7,26 @@ import { RailLayout } from './rail' import { Toolbar } from './toolbar/toolbar' import { HorizontalToggler } from '@/features/ide-react/components/resize/horizontal-toggler' import { useTranslation } from 'react-i18next' -import { usePdfPane } from '../hooks/use-pdf-pane' +import { usePdfPane } from '@/features/ide-react/hooks/use-pdf-pane' +import { useLayoutContext } from '@/shared/context/layout-context' +import { useState } from 'react' export default function MainLayout() { + const [resizing, setResizing] = useState(false) const { - isOpen: isPdfOpen, - setIsOpen: setIsPdfOpen, - panelRef: pdfPanelRef, - handlePaneCollapse: handlePdfPaneCollapse, - handlePaneExpand: handlePdfPaneExpand, - togglePane: togglePdfPane, + togglePdfPane, + handlePdfPaneExpand, + handlePdfPaneCollapse, + setPdfIsOpen: setIsPdfOpen, + pdfIsOpen: isPdfOpen, + pdfPanelRef, } = usePdfPane() + + const { view, pdfLayout } = useLayoutContext() + + const editorIsOpen = + view === 'editor' || view === 'file' || pdfLayout === 'sideBySide' + const { t } = useTranslation() return (
@@ -27,19 +36,32 @@ export default function MainLayout() { autoSaveId="ide-redesign-outer-layout" direction="horizontal" className={classNames('ide-redesign-inner', { - 'ide-panel-group-resizing': false, + 'ide-panel-group-resizing': resizing, })} > - +
) => void + } +>(({ onClick }, ref) => { + return ( + } + /> + ) +}) + +LayoutDropdownToggleButton.displayName = 'LayoutDropdownToggleButton' + +export default function ChangeLayoutButton() { + return ( +
+ + + + + + +
+ ) +} diff --git a/services/web/frontend/js/features/ide-redesign/components/toolbar/change-layout-options.tsx b/services/web/frontend/js/features/ide-redesign/components/toolbar/change-layout-options.tsx new file mode 100644 index 0000000000..3c3126e8da --- /dev/null +++ b/services/web/frontend/js/features/ide-redesign/components/toolbar/change-layout-options.tsx @@ -0,0 +1,175 @@ +import { + DropdownItem, + DropdownHeader, +} from '@/features/ui/components/bootstrap-5/dropdown-menu' +import { + IdeLayout, + IdeView, + useLayoutContext, +} from '@/shared/context/layout-context' +import React, { useCallback } from 'react' +import { useTranslation } from 'react-i18next' +import * as eventTracking from '../../../../infrastructure/event-tracking' +import useEventListener from '@/shared/hooks/use-event-listener' +import { DetachRole } from '@/shared/context/detach-context' +import { Spinner } from 'react-bootstrap-5' + +type LayoutOption = 'sideBySide' | 'editorOnly' | 'pdfOnly' | 'detachedPdf' + +const getActiveLayoutOption = ({ + pdfLayout, + view, + detachRole, +}: { + pdfLayout: IdeLayout + view: IdeView | null + detachRole?: DetachRole +}): LayoutOption | null => { + if (view === 'history') { + return null + } + + if (detachRole === 'detacher') { + return 'detachedPdf' + } + + if (pdfLayout === 'flat' && (view === 'editor' || view === 'file')) { + return 'editorOnly' + } + + if (pdfLayout === 'flat' && view === 'pdf') { + return 'pdfOnly' + } + + if (pdfLayout === 'sideBySide') { + return 'sideBySide' + } + + return null +} + +const LayoutDropdownItem = ({ + active, + disabled = false, + processing = false, + leadingIcon, + onClick, + children, +}: { + active: boolean + leadingIcon: string + onClick: () => void + children: React.ReactNode + processing?: boolean + disabled?: boolean +}) => { + let trailingIcon: string | React.ReactNode | null = null + if (processing) { + trailingIcon = ( +
+ {shouldDisplaySubmitButton && } diff --git a/services/web/frontend/js/features/ide-redesign/hooks/use-pdf-pane.tsx b/services/web/frontend/js/features/ide-redesign/hooks/use-pdf-pane.tsx deleted file mode 100644 index 8215af3fdd..0000000000 --- a/services/web/frontend/js/features/ide-redesign/hooks/use-pdf-pane.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { useCallback, useRef, useState } from 'react' -import useCollapsiblePanel from '@/features/ide-react/hooks/use-collapsible-panel' -import { ImperativePanelHandle } from 'react-resizable-panels' - -// FIXME: This is temporary, to avoid clashing with the existing usePdfPane -// which uses the layout context. That's the correct approach. -export const usePdfPane = () => { - const [isOpen, setIsOpen] = useState(true) - const [resizing, setResizing] = useState(false) - const panelRef = useRef(null) - useCollapsiblePanel(isOpen, panelRef) - - const togglePane = useCallback(() => { - setIsOpen(value => !value) - }, []) - - const handlePaneExpand = useCallback(() => { - setIsOpen(true) - }, []) - - const handlePaneCollapse = useCallback(() => { - setIsOpen(false) - }, []) - - return { - isOpen, - setIsOpen, - panelRef, - togglePane, - handlePaneExpand, - handlePaneCollapse, - resizing, - setResizing, - } -} diff --git a/services/web/frontend/stylesheets/bootstrap-5/pages/editor/ide.scss b/services/web/frontend/stylesheets/bootstrap-5/pages/editor/ide.scss index a4649f102f..8513e2fca1 100644 --- a/services/web/frontend/stylesheets/bootstrap-5/pages/editor/ide.scss +++ b/services/web/frontend/stylesheets/bootstrap-5/pages/editor/ide.scss @@ -45,6 +45,18 @@ $editor-toggler-bg-dark-color: color.adjust( } } +.ide-redesign-main { + .ide-panel-group-resizing { + background-color: var(--white); + + // Hide panel contents while resizing + .ide-redesign-editor-content, + .pdf { + display: none !important; + } + } +} + .global-alerts { height: 0; margin-top: var(--spacing-01); diff --git a/services/web/locales/en.json b/services/web/locales/en.json index 5b730599d9..38af911789 100644 --- a/services/web/locales/en.json +++ b/services/web/locales/en.json @@ -598,6 +598,7 @@ "editor_and_pdf": "Editor & PDF", "editor_disconected_click_to_reconnect": "Editor disconnected, click anywhere to reconnect.", "editor_limit_exceeded_in_this_project": "Too many editors in this project", + "editor_only": "Editor only", "editor_only_hide_pdf": "Editor only <0>(hide PDF)", "editor_settings": "Editor settings", "editor_theme": "Editor theme", @@ -1131,6 +1132,7 @@ "latex_templates_for_journal_articles": "LaTeX templates for journal articles, academic papers, CVs and résumés, presentations, and more.", "latex_templates_sentence_case": "LaTeX templates", "layout": "Layout", + "layout_options": "Layout options", "layout_processing": "Layout processing", "ldap": "LDAP", "ldap_create_admin_instructions": "Choose an email address for the first __appName__ admin account. This should correspond to an account in the LDAP system. You will then be asked to log in with this account.", @@ -1448,6 +1450,7 @@ "open_file": "Edit file", "open_link": "Go to page", "open_path": "Open __path__", + "open_pdf_in_separate_tab": "Open PDF in separate tab", "open_project": "Open Project", "open_survey": "Open survey", "open_target": "Go to target", @@ -1537,6 +1540,7 @@ "pdf_compile_try_again": "Please wait for your other compile to finish before trying again.", "pdf_couldnt_compile": "PDF couldn’t compile", "pdf_in_separate_tab": "PDF in separate tab", + "pdf_only": "PDF only", "pdf_only_hide_editor": "PDF only <0>(hide editor)", "pdf_preview_error": "There was a problem displaying the compilation results for this project.", "pdf_rendering_error": "PDF Rendering Error", @@ -2007,6 +2011,7 @@ "sort_projects": "Sort projects", "source": "Source", "spell_check": "Spell check", + "split_view": "Split view", "sso": "SSO", "sso_account_already_linked": "Account already linked to another __appName__ user", "sso_active": "SSO active",