Skip to content

Commit 8373753

Browse files
committed
fix(nui): kb/mouse focus when opening player modal only
1 parent 5e14d38 commit 8373753

5 files changed

Lines changed: 18 additions & 7 deletions

File tree

nui/src/components/MenuRoot.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ import { useServerCtxValue } from "../state/server.state";
99
import { MenuRootContent } from "@nui/src/components/MenuRootContent";
1010

1111

12-
1312
const MenuRoot: React.FC = () => {
1413
// We need to mount this here so we can get access to
1514
// the translation context
1615
useHudListenersService();
1716
const curPage = usePageValue();
1817
const serverCtx = useServerCtxValue()
1918

19+
if (curPage === txAdminMenuPage.PlayerModalOnly) return null;
2020
return (
2121
<>
2222
<Box

nui/src/hooks/useHudListenersService.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { useAnnounceNotiPosValue } from "../state/server.state";
1717
import { useSetPlayerModalVisibility } from "@nui/src/state/playerModal.state";
1818
import cleanPlayerName from "@shared/cleanPlayerName";
1919
import { usePlayerModalContext } from "../provider/PlayerModalProvider";
20+
import { fetchNui } from "../utils/fetchNui";
2021

2122
type SnackbarAlertSeverities = "success" | "error" | "warning" | "info";
2223

@@ -142,14 +143,14 @@ export const useHudListenersService = () => {
142143

143144
//Search by ID
144145
const targetId = parseInt(target);
145-
if (target && !isNaN(targetId)) {
146+
if (!isNaN(targetId)) {
146147
targetPlayer = onlinePlayers.find(
147148
(playerData) => playerData.id === targetId
148149
);
149150
}
150151

151152
//Search by pure name
152-
if (!targetPlayer && target && typeof target === "string") {
153+
if (!targetPlayer && typeof target === "string") {
153154
const searchInput = cleanPlayerName(target).pureName;
154155
const foundPlayers = onlinePlayers.filter((playerData) =>
155156
playerData.pureName?.includes(searchInput)
@@ -166,7 +167,7 @@ export const useHudListenersService = () => {
166167
}
167168

168169
if (targetPlayer) {
169-
setPage(txAdminMenuPage.Main);
170+
setPage(txAdminMenuPage.PlayerModalOnly);
170171
setAssocPlayer(targetPlayer);
171172
setModalOpen(true);
172173
} else {

nui/src/provider/KeyboardNavProvider.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ export const KeyboardNavProvider: React.FC<KeyboardNavProviderProps> = ({
3131
if (!isMenuVisible) return;
3232

3333
if (
34-
curPage === txAdminMenuPage.IFrame ||
35-
curPage === txAdminMenuPage.Players
34+
curPage === txAdminMenuPage.IFrame
35+
|| curPage === txAdminMenuPage.Players
36+
|| curPage === txAdminMenuPage.PlayerModalOnly
3637
) {
3738
return setDisabledKeyNav(true);
3839
}

nui/src/provider/PlayerModalProvider.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
usePlayerModalVisibility,
1616
useSetPlayerModalTab,
1717
} from "@nui/src/state/playerModal.state";
18+
import { txAdminMenuPage, usePageValue } from "../state/page.state";
1819

1920
const PlayerContext = createContext<PlayerProviderCtx>({} as PlayerProviderCtx);
2021

@@ -49,6 +50,7 @@ export const PlayerModalProvider: React.FC<PlayerModalProviderProps> = ({
4950
const [menuVisible, setMenuVisible] = useIsMenuVisible();
5051
const setTab = useSetPlayerModalTab();
5152
const theme = useTheme();
53+
const curPage = usePageValue();
5254

5355
useEffect(() => {
5456
setDisableTabNav(modalOpen);
@@ -87,7 +89,13 @@ export const PlayerModalProvider: React.FC<PlayerModalProviderProps> = ({
8789
<Dialog
8890
open={modalOpen}
8991
fullWidth
90-
onClose={() => setModalOpen(false)}
92+
onClose={() => {
93+
if (curPage === txAdminMenuPage.PlayerModalOnly) {
94+
closeMenu();
95+
} else {
96+
setModalOpen(false);
97+
}
98+
}}
9199
maxWidth="md"
92100
PaperProps={{
93101
style: {

nui/src/state/page.state.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export enum txAdminMenuPage {
99
Main,
1010
Players,
1111
IFrame,
12+
PlayerModalOnly,
1213
}
1314

1415
const pageState = atom<txAdminMenuPage>({

0 commit comments

Comments
 (0)