Skip to content

Commit d2de3d4

Browse files
askinslack: fix ocassional broken scroll (#1514)
1 parent 8d23966 commit d2de3d4

3 files changed

Lines changed: 11 additions & 2 deletions

File tree

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
* Fix: "Ask In Slack" and "Generate Link" no longer break scroll when switch to a different page from longer pager after
2+
selecting text at the bottom of a longer page

znai-reactjs/src/doc-elements/text-selection/TextSelectionMenu.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import { fetchWithCredentials } from "../../utils/fetchWithCredentials";
2525
import { buildContext } from "./markdownContextBuilder";
2626
import { Notification } from "../../components/Notification";
2727
import { currentPageIdWithDocId } from "../../structure/DocumentationNavigation";
28+
import { TocItem } from "../../structure/TocItem";
2829
import "./TextSelectionMenu.css";
2930

3031
export interface TextMenuListener {
@@ -42,7 +43,7 @@ export function removeTextMenuListener(listener: TextMenuListener) {
4243
textMenuListeners.splice(textMenuListeners.indexOf(listener), 1);
4344
}
4445

45-
export function TextSelectionMenu({ containerNode }: { containerNode: HTMLDivElement }) {
46+
export function TextSelectionMenu({ containerNode, tocItem }: { containerNode: HTMLDivElement; tocItem: TocItem }) {
4647
const menuRef = useRef<HTMLDivElement>(null);
4748
const expandedPanelRef = useRef<HTMLDivElement>(null);
4849
const slackQuestionInputRef = useRef<HTMLTextAreaElement>(null);
@@ -67,6 +68,10 @@ export function TextSelectionMenu({ containerNode }: { containerNode: HTMLDivEle
6768
};
6869
}, [panelData]);
6970

71+
useEffect(() => {
72+
hideMenu();
73+
}, [tocItem]);
74+
7075
function menuItems() {
7176
if (panelData) {
7277
return null;
@@ -290,6 +295,8 @@ export function TextSelectionMenu({ containerNode }: { containerNode: HTMLDivEle
290295
function hideMenu() {
291296
if (menuRef.current) {
292297
menuRef.current.style.visibility = "hidden";
298+
menuRef.current.style.top = "0";
299+
menuRef.current.style.left = "0";
293300
}
294301
setPanelData(null);
295302
if (slackQuestionInputRef.current) {

znai-reactjs/src/layout/DocumentationLayout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ export function DocumentationLayout({
106106
function renderPageContent() {
107107
return (
108108
<div ref={contentRef} className={panelFullClassName}>
109-
{contentRef.current && <TextSelectionMenu containerNode={contentRef.current} />}
109+
{contentRef.current && <TextSelectionMenu containerNode={contentRef.current} tocItem={tocItem} />}
110110
{contentRef.current && <AllTextHighlights containerNode={contentRef.current} tocItem={tocItem} />}
111111
<div ref={contentRef} style={{ display: "contents" }}>
112112
{renderedPage}

0 commit comments

Comments
 (0)