-
- {showActions && (
-
- )}
-
-
- {showActions && (
-
+ <>
+ {newEditor && showReviewPanelHeader && }
+
-
+ >
)
})
diff --git a/services/web/frontend/js/features/source-editor/extensions/breadcrumbs-panel.ts b/services/web/frontend/js/features/source-editor/extensions/breadcrumbs-panel.ts
index 1207f1a54d..a3768a9d5a 100644
--- a/services/web/frontend/js/features/source-editor/extensions/breadcrumbs-panel.ts
+++ b/services/web/frontend/js/features/source-editor/extensions/breadcrumbs-panel.ts
@@ -1,61 +1,41 @@
-import { canUseNewEditor } from '@/features/ide-redesign/utils/new-editor-utils'
-import { Compartment, Extension, TransactionSpec } from '@codemirror/state'
-import { EditorView, showPanel } from '@codemirror/view'
-
-export function createBreadcrumbsPanel() {
- const dom = document.createElement('div')
- dom.classList.add('ol-cm-breadcrumbs-portal')
- return { dom, top: true }
-}
-
-const breadcrumbsTheme = EditorView.baseTheme({
- '.ol-cm-breadcrumbs': {
- display: 'flex',
- alignItems: 'center',
- gap: 'var(--spacing-01)',
- fontSize: 'var(--font-size-01)',
- padding: 'var(--spacing-02)',
- overflow: 'auto',
- scrollbarWidth: 'thin',
- '& > *': {
- flexShrink: '0',
- },
- },
- '&light .ol-cm-breadcrumbs': {
- color: 'var(--content-secondary)',
- backgroundColor: 'var(--bg-light-primary)',
- borderBottom: '1px solid #ddd',
- },
- '&light .ol-cm-breadcrumb-chevron': {
- color: 'var(--neutral-30)',
- },
- '&dark .ol-cm-breadcrumbs': {
- color: 'var(--content-secondary-dark)',
- backgroundColor: 'var(--bg-dark-primary)',
- },
- '&dark .ol-cm-breadcrumb-chevron': {
- color: 'var(--neutral-50)',
- },
-})
-
-const breadcrumbsConf = new Compartment()
-
-const breadcrumbsEnabled: Extension = [
- showPanel.of(createBreadcrumbsPanel),
- breadcrumbsTheme,
-]
-const breadcrumbsDisabled: Extension = []
-
-export const setBreadcrumbsEnabled = (enabled: boolean): TransactionSpec => ({
- effects: breadcrumbsConf.reconfigure(
- enabled ? breadcrumbsEnabled : breadcrumbsDisabled
- ),
-})
+import { EditorView } from '@codemirror/view'
/**
* A panel which contains the editor breadcrumbs
*/
-export const breadcrumbPanel = (enableNewEditor: boolean) => {
- const enabled = canUseNewEditor() && enableNewEditor
- return breadcrumbsConf.of(enabled ? breadcrumbsEnabled : breadcrumbsDisabled)
+export function breadcrumbPanel() {
+ return [
+ EditorView.editorAttributes.of({
+ style: '--breadcrumbs-height: 28px;',
+ }),
+ EditorView.baseTheme({
+ '.ol-cm-breadcrumbs-portal': {
+ display: 'flex',
+ pointerEvents: 'none !important',
+ '& > *': {
+ pointerEvents: 'all',
+ },
+ },
+ '.ol-cm-breadcrumbs': {
+ height: 'var(--breadcrumbs-height)',
+ flex: 1,
+ display: 'flex',
+ alignItems: 'center',
+ gap: 'var(--spacing-01)',
+ fontSize: 'var(--font-size-01)',
+ padding: 'var(--spacing-02)',
+ overflow: 'auto',
+ scrollbarWidth: 'thin',
+ '& > *': {
+ flexShrink: '0',
+ },
+ },
+ '&light .ol-cm-breadcrumb-chevron': {
+ color: 'var(--neutral-30)',
+ },
+ '&dark .ol-cm-breadcrumb-chevron': {
+ color: 'var(--neutral-50)',
+ },
+ }),
+ ]
}
diff --git a/services/web/frontend/js/features/source-editor/extensions/index.ts b/services/web/frontend/js/features/source-editor/extensions/index.ts
index 5daa597df3..0a65739c55 100644
--- a/services/web/frontend/js/features/source-editor/extensions/index.ts
+++ b/services/web/frontend/js/features/source-editor/extensions/index.ts
@@ -148,7 +148,7 @@ export const createExtensions = (options: Record
): Extension[] => [
mathPreview(options.settings.mathPreview),
reviewTooltip(),
toolbarPanel(),
- breadcrumbPanel(options.settings.enableNewEditor),
+ breadcrumbPanel(),
verticalOverflow(),
highlightActiveLine(options.visual.visual),
// The built-in extension that highlights the active line in the gutter.
diff --git a/services/web/frontend/js/features/source-editor/extensions/toolbar/toolbar-panel.ts b/services/web/frontend/js/features/source-editor/extensions/toolbar/toolbar-panel.ts
index ae8dfc8578..e09d9d56d3 100644
--- a/services/web/frontend/js/features/source-editor/extensions/toolbar/toolbar-panel.ts
+++ b/services/web/frontend/js/features/source-editor/extensions/toolbar/toolbar-panel.ts
@@ -23,9 +23,11 @@ export function createToolbarPanel() {
}
const toolbarTheme = EditorView.theme({
- '.ol-cm-toolbar': {
+ '.ol-cm-toolbar-wrapper': {
backgroundColor: 'var(--editor-toolbar-bg)',
color: 'var(--toolbar-btn-color)',
+ },
+ '.ol-cm-toolbar': {
flex: 1,
display: 'flex',
overflowX: 'hidden',
diff --git a/services/web/frontend/js/features/source-editor/hooks/use-codemirror-scope.ts b/services/web/frontend/js/features/source-editor/hooks/use-codemirror-scope.ts
index fac88acc9e..598cd60f15 100644
--- a/services/web/frontend/js/features/source-editor/hooks/use-codemirror-scope.ts
+++ b/services/web/frontend/js/features/source-editor/hooks/use-codemirror-scope.ts
@@ -53,7 +53,6 @@ import { useHunspell } from '@/features/source-editor/hooks/use-hunspell'
import { Permissions } from '@/features/ide-react/types/permissions'
import { useEditorManagerContext } from '@/features/ide-react/context/editor-manager-context'
import { useOnlineUsersContext } from '@/features/ide-react/context/online-users-context'
-import { setBreadcrumbsEnabled } from '../extensions/breadcrumbs-panel'
function useCodeMirrorScope(view: EditorView) {
const { fileTreeData } = useFileTreeData()
@@ -436,13 +435,6 @@ function useCodeMirrorScope(view: EditorView) {
settingsRef.current.referencesSearchMode = referencesSearchMode
}, [referencesSearchMode])
- useEffect(() => {
- settingsRef.current.enableNewEditor = enableNewEditor
- window.setTimeout(() => {
- view.dispatch(setBreadcrumbsEnabled(enableNewEditor))
- })
- }, [view, enableNewEditor])
-
const emitSyncToPdf = useScopeEventEmitter('cursor:editor:syncToPdf')
// select and scroll to position on editor:gotoLine event (from synctex)
diff --git a/services/web/frontend/stylesheets/bootstrap-5/components/panel-heading.scss b/services/web/frontend/stylesheets/bootstrap-5/components/panel-heading.scss
index 22125e36e6..71df17e601 100644
--- a/services/web/frontend/stylesheets/bootstrap-5/components/panel-heading.scss
+++ b/services/web/frontend/stylesheets/bootstrap-5/components/panel-heading.scss
@@ -11,6 +11,7 @@
}
.panel-heading {
+ color: var(--panel-heading-color);
display: flex;
align-items: center;
padding: var(--spacing-03) var(--spacing-02);
diff --git a/services/web/frontend/stylesheets/bootstrap-5/pages/editor/review-panel-new.scss b/services/web/frontend/stylesheets/bootstrap-5/pages/editor/review-panel-new.scss
index f3bb875a02..e62360dbbc 100644
--- a/services/web/frontend/stylesheets/bootstrap-5/pages/editor/review-panel-new.scss
+++ b/services/web/frontend/stylesheets/bootstrap-5/pages/editor/review-panel-new.scss
@@ -16,6 +16,8 @@ $rp-type-blue: #6b7797;
--review-panel-empty-state-bg-color: var(--bg-light-primary);
--review-panel-button-hover-bg-color: var(--bg-light-tertiary);
--review-panel-border-color: var(--border-divider);
+ --review-panel-width: 230px;
+ --review-panel-width-mini: 24px;
@include theme('default') {
.ide-redesign-main {
@@ -32,6 +34,42 @@ $rp-type-blue: #6b7797;
}
}
+.ide-redesign-main {
+ .review-panel-container {
+ order: -1;
+ }
+
+ .review-panel-inner {
+ border-left: none;
+ border-right: 1px solid var(--border-divider);
+ }
+
+ .review-panel-header {
+ border-bottom: none;
+ flex: 0 0 var(--review-panel-width);
+ }
+
+ .review-panel-more-comments-button-container {
+ &.upwards {
+ top: calc(var(--review-panel-top) + 16px);
+ }
+ }
+
+ .review-panel-mini {
+ // This needs to have a higher z-index than the gutter
+ // so that the comment/change hover previews appear in
+ // front of the gutter
+ z-index: 201;
+
+ .review-panel-entry-hover {
+ .review-panel-entry-content {
+ left: auto;
+ right: -200px;
+ }
+ }
+ }
+}
+
.review-panel-container {
height: 100%;
flex-shrink: 0;
@@ -646,7 +684,7 @@ del.review-panel-content-highlight {
overflow: visible !important;
.review-panel-inner {
- width: 24px;
+ width: var(--review-panel-width-mini);
}
.review-panel-entry {
diff --git a/services/web/frontend/stylesheets/bootstrap-5/pages/editor/toolbar.scss b/services/web/frontend/stylesheets/bootstrap-5/pages/editor/toolbar.scss
index d3d2dca6fd..edf523d56a 100644
--- a/services/web/frontend/stylesheets/bootstrap-5/pages/editor/toolbar.scss
+++ b/services/web/frontend/stylesheets/bootstrap-5/pages/editor/toolbar.scss
@@ -32,8 +32,22 @@
--editor-toolbar-bg: var(--bg-dark-primary);
--toolbar-filetree-bg-color: var(--neutral-80);
- .cm-panels-top {
- border-bottom: none;
+ .ol-cm-toolbar-portal {
+ display: flex;
+ align-items: center;
+ background-color: var(--editor-toolbar-bg);
+
+ .review-panel-header {
+ align-self: flex-start;
+ }
+ }
+
+ .ol-cm-toolbar-wrapper {
+ flex: 1;
+ }
+
+ .ol-cm-toolbar-wrapper-indented {
+ width: calc(100% - var(--review-panel-width));
}
}
@@ -64,10 +78,6 @@
--toolbar-btn-hover-color: var(--white);
--editor-toolbar-bg: var(--white);
--toolbar-filetree-bg-color: var(--white);
-
- .ol-cm-toolbar-portal {
- border-bottom: 1px solid #ddd;
- }
}
}