This commit is contained in:
Tom Moor
2023-06-07 22:40:01 +03:00
parent b9844472b9
commit ffbf138748
2 changed files with 15 additions and 7 deletions

View File

@@ -62,7 +62,7 @@ const NavLink = ({
to,
...rest
}: Props) => {
const linkRef = React.useRef(null);
const linkRef = React.useRef<HTMLAnchorElement>(null);
const context = React.useContext(RouterContext);
const [preActive, setPreActive] = React.useState<boolean | undefined>(
undefined
@@ -93,10 +93,18 @@ const NavLink = ({
React.useLayoutEffect(() => {
if (isActive && linkRef.current && scrollIntoViewIfNeeded !== false) {
scrollIntoView(linkRef.current, {
scrollMode: "if-needed",
behavior: "auto",
});
// If the page has an anchor hash then this means we're linking to an
// anchor in the document generally smooth scrolling the sidebar may
// interrupt the scrolling to the anchor of the document so we jump
// directly to the anchor instead.
if (window.location.hash) {
linkRef.current.scrollIntoView();
} else {
scrollIntoView(linkRef.current, {
scrollMode: "if-needed",
behavior: "auto",
});
}
}
}, [linkRef, scrollIntoViewIfNeeded, isActive]);

View File

@@ -166,7 +166,7 @@ function SuggestionsMenu<T extends MenuItem>(props: Props<T>) {
const handleClearSearch = React.useCallback(() => {
const { state, dispatch } = view;
const poss = state.doc.cut(
state.selection.from - (props.search ?? "").length - 1,
state.selection.from - (props.search ?? "").length - props.trigger.length,
state.selection.from
);
const trimTrigger = poss.textContent.startsWith(props.trigger);
@@ -181,7 +181,7 @@ function SuggestionsMenu<T extends MenuItem>(props: Props<T>) {
"",
state.selection.from -
(props.search ?? "").length -
(trimTrigger ? 1 : 0),
(trimTrigger ? props.trigger.length : 0),
state.selection.to
)
);