mirror of
https://github.com/CommunityOx/ox_lib.git
synced 2026-08-18 23:46:03 +01:00
fix(web/menu): don't call onSideScroll when opening the menu (#123)
* fix(web/features/menu/list): don't call onSideScroll when opening the menu * refactor(web/menu): use conventional ref naming Conventional ref variable names contain the word `ref` or `refs` if it's an array Co-authored-by: Luke <sabolukas03@gmail.com>
This commit is contained in:
@@ -36,6 +36,7 @@ const ListMenu: React.FC = () => {
|
|||||||
const [visible, setVisible] = useState(false);
|
const [visible, setVisible] = useState(false);
|
||||||
const [indexStates, setIndexStates] = useState<Record<number, number>>({});
|
const [indexStates, setIndexStates] = useState<Record<number, number>>({});
|
||||||
const listRefs = useRef<Array<HTMLDivElement | null>>([]);
|
const listRefs = useRef<Array<HTMLDivElement | null>>([]);
|
||||||
|
const firstRenderRef = useRef(false);
|
||||||
|
|
||||||
const closeMenu = (ignoreFetch?: boolean, keyPressed?: string, forceClose?: boolean) => {
|
const closeMenu = (ignoreFetch?: boolean, keyPressed?: string, forceClose?: boolean) => {
|
||||||
if (menu.canClose === false && !forceClose) return;
|
if (menu.canClose === false && !forceClose) return;
|
||||||
@@ -87,6 +88,10 @@ const ListMenu: React.FC = () => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!menu.items[selected]?.values) return;
|
if (!menu.items[selected]?.values) return;
|
||||||
|
if (firstRenderRef.current) {
|
||||||
|
firstRenderRef.current = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
const timer = setTimeout(() => {
|
const timer = setTimeout(() => {
|
||||||
fetchNui('changeIndex', [selected, indexStates[selected]]).catch();
|
fetchNui('changeIndex', [selected, indexStates[selected]]).catch();
|
||||||
}, 100);
|
}, 100);
|
||||||
@@ -122,6 +127,7 @@ const ListMenu: React.FC = () => {
|
|||||||
useNuiEvent('closeMenu', () => closeMenu(true, undefined, true));
|
useNuiEvent('closeMenu', () => closeMenu(true, undefined, true));
|
||||||
|
|
||||||
useNuiEvent('setMenu', (data: MenuSettings) => {
|
useNuiEvent('setMenu', (data: MenuSettings) => {
|
||||||
|
firstRenderRef.current = true;
|
||||||
if (!data.startItemIndex || data.startItemIndex < 0) data.startItemIndex = 0;
|
if (!data.startItemIndex || data.startItemIndex < 0) data.startItemIndex = 0;
|
||||||
else if (data.startItemIndex >= data.items.length) data.startItemIndex = data.items.length - 1;
|
else if (data.startItemIndex >= data.items.length) data.startItemIndex = data.items.length - 1;
|
||||||
setSelected(data.startItemIndex);
|
setSelected(data.startItemIndex);
|
||||||
|
|||||||
Reference in New Issue
Block a user