- {isAdding ? (
+ {isAddingComment ? (
<>
>
) : (
-
+
)}
diff --git a/services/web/frontend/js/features/source-editor/components/review-panel/review-panel.tsx b/services/web/frontend/js/features/source-editor/components/review-panel/review-panel.tsx
index 6ede53330c..b0994897a7 100644
--- a/services/web/frontend/js/features/source-editor/components/review-panel/review-panel.tsx
+++ b/services/web/frontend/js/features/source-editor/components/review-panel/review-panel.tsx
@@ -1,4 +1,5 @@
import ReactDOM from 'react-dom'
+import EditorWidgets from './editor-widgets/editor-widgets'
import CurrentFileContainer from './current-file-container'
import OverviewContainer from './overview-container'
import { useCodeMirrorViewContext } from '../codemirror-editor'
@@ -17,6 +18,7 @@ function ReviewPanelView({ parentDomNode }: ReviewPanelViewProps) {
return ReactDOM.createPortal(
<>
+
{isCurrentFileView(subView) ? (
) : (
diff --git a/services/web/frontend/js/features/source-editor/context/review-panel/hooks/use-angular-review-panel-state.ts b/services/web/frontend/js/features/source-editor/context/review-panel/hooks/use-angular-review-panel-state.ts
index a7414f9b61..d294787a62 100644
--- a/services/web/frontend/js/features/source-editor/context/review-panel/hooks/use-angular-review-panel-state.ts
+++ b/services/web/frontend/js/features/source-editor/context/review-panel/hooks/use-angular-review-panel-state.ts
@@ -127,6 +127,7 @@ function useAngularReviewPanelState(): ReviewPanelState {
)
const [entryHover, setEntryHover] = useState(false)
+ const [isAddingComment, setIsAddingComment] = useState(false)
const values = useMemo
(
() => ({
@@ -136,6 +137,7 @@ function useAngularReviewPanelState(): ReviewPanelState {
docs,
entries,
entryHover,
+ isAddingComment,
gotoEntry,
handleLayoutChange,
loadingThreads,
@@ -176,6 +178,7 @@ function useAngularReviewPanelState(): ReviewPanelState {
docs,
entries,
entryHover,
+ isAddingComment,
gotoEntry,
handleLayoutChange,
loadingThreads,
@@ -217,8 +220,15 @@ function useAngularReviewPanelState(): ReviewPanelState {
setEntryHover,
setCollapsed,
setShouldCollapse,
+ setIsAddingComment,
}),
- [handleSetSubview, setCollapsed, setEntryHover, setShouldCollapse]
+ [
+ handleSetSubview,
+ setCollapsed,
+ setEntryHover,
+ setShouldCollapse,
+ setIsAddingComment,
+ ]
)
return { values, updaterFns }
diff --git a/services/web/frontend/js/features/source-editor/context/review-panel/types/review-panel-state.ts b/services/web/frontend/js/features/source-editor/context/review-panel/types/review-panel-state.ts
index 4bd1698538..d1bbeb5185 100644
--- a/services/web/frontend/js/features/source-editor/context/review-panel/types/review-panel-state.ts
+++ b/services/web/frontend/js/features/source-editor/context/review-panel/types/review-panel-state.ts
@@ -13,6 +13,7 @@ import {
MainDocument,
} from '../../../../../../../types/project-settings'
+/* eslint-disable no-use-before-define */
export interface ReviewPanelState {
values: {
collapsed: Record
@@ -21,6 +22,7 @@ export interface ReviewPanelState {
docs: MainDocument[] | undefined
entries: ReviewPanelEntries
entryHover: boolean
+ isAddingComment: boolean
gotoEntry: (docId: DocId, entryOffset: number) => void
handleLayoutChange: () => void
loadingThreads: boolean
@@ -66,15 +68,17 @@ export interface ReviewPanelState {
}
updaterFns: {
handleSetSubview: (subView: SubView) => void
- setEntryHover: React.Dispatch>
- setCollapsed: React.Dispatch<
- React.SetStateAction
+ setEntryHover: React.Dispatch>>
+ setIsAddingComment: React.Dispatch<
+ React.SetStateAction>
>
+ setCollapsed: React.Dispatch>>
setShouldCollapse: React.Dispatch<
- React.SetStateAction
+ React.SetStateAction>
>
}
}
+/* eslint-enable no-use-before-define */
// Getter for values
export type Value =
diff --git a/services/web/frontend/stylesheets/app/editor/review-panel.less b/services/web/frontend/stylesheets/app/editor/review-panel.less
index 1d35ac982a..df62d5cb00 100644
--- a/services/web/frontend/stylesheets/app/editor/review-panel.less
+++ b/services/web/frontend/stylesheets/app/editor/review-panel.less
@@ -1304,3 +1304,20 @@ button when (@is-overleaf-light = true) {
}
}
}
+
+.react-rp-in-editor-widgets {
+ position: sticky;
+ font-family: @font-family-sans-serif;
+
+ .rp-in-editor-widgets-inner {
+ position: absolute;
+ top: 0;
+ right: 0;
+ display: flex;
+ flex-direction: column;
+ }
+
+ .rp-track-changes-indicator {
+ border: 0;
+ }
+}
diff --git a/services/web/test/frontend/features/review-panel/review-panel.spec.tsx b/services/web/test/frontend/features/review-panel/review-panel.spec.tsx
index 273c25be18..7196716d7d 100644
--- a/services/web/test/frontend/features/review-panel/review-panel.spec.tsx
+++ b/services/web/test/frontend/features/review-panel/review-panel.spec.tsx
@@ -250,4 +250,18 @@ describe('', function () {
// eslint-disable-next-line mocha/no-skipped-tests
it.skip('renders comments', function () {})
})
+
+ describe('in editor widgets', function () {
+ // eslint-disable-next-line mocha/no-skipped-tests
+ it.skip('toggle review panel', function () {})
+
+ // eslint-disable-next-line mocha/no-skipped-tests
+ it.skip('accepts all changes', function () {})
+
+ // eslint-disable-next-line mocha/no-skipped-tests
+ it.skip('rejects all changes', function () {})
+
+ // eslint-disable-next-line mocha/no-skipped-tests
+ it.skip('add comment', function () {})
+ })
})