[bugfix] Config Page: To reset scroll position to top when the tabs are changed.

This commit is contained in:
Sakamoto Shiina
2024-12-28 05:49:30 +09:00
parent 0f226da217
commit 9e057d4395
2 changed files with 17 additions and 3 deletions

View File

@@ -2,14 +2,22 @@ import { useRef, useLayoutEffect, useEffect } from "react";
import styles from "./SettingSection.module.scss";
import { SettingBox } from "./setting_box/SettingBox";
import { store } from "@store";
import { store, useStore_SelectedConfigTabId } from "@store";
import { useSettingBoxScrollPosition } from "@logics_configs";
export const SettingSection = () => {
const { currentSelectedConfigTabId } = useStore_SelectedConfigTabId();
const { resetScrollPosition } = useSettingBoxScrollPosition();
const scrollContainerRef = useRef(null);
useLayoutEffect(() => {
store.setting_box_scroll_container = scrollContainerRef;
}, []);
useEffect(() => {
resetScrollPosition();
}, [currentSelectedConfigTabId.data]);
return (
<div ref={scrollContainerRef} className={styles.scroll_container}>
<div className={styles.container}>

View File

@@ -9,19 +9,25 @@ export const useSettingBoxScrollPosition = () => {
}
};
const restoreScrollPosition = () => {
if (store.setting_box_scroll_container.current) {
updateSettingBoxScrollPosition((pre) => {
store.setting_box_scroll_container.current.scrollTop = pre.data;
return pre.data;
})
}
};
const resetScrollPosition = () => {
if (store.setting_box_scroll_container.current) {
store.setting_box_scroll_container.current.scrollTop = 0;
updateSettingBoxScrollPosition(0);
}
}
return {
saveScrollPosition,
restoreScrollPosition,
resetScrollPosition,
currentSettingBoxScrollPosition,
updateSettingBoxScrollPosition,
};