From a0ebec5877f2f881e40a869f003d5527f11663e3 Mon Sep 17 00:00:00 2001 From: Luke <39926192+LukeWasTakenn@users.noreply.github.com> Date: Sun, 26 Feb 2023 12:10:51 +0100 Subject: [PATCH] refactor(web/context): move inline styling to createStyles --- web/src/features/menu/context/ContextMenu.tsx | 48 ++++++++++++++++--- .../menu/context/components/ContextButton.tsx | 45 +++++++++++++---- 2 files changed, 77 insertions(+), 16 deletions(-) diff --git a/web/src/features/menu/context/ContextMenu.tsx b/web/src/features/menu/context/ContextMenu.tsx index 79e59d5..2cd0a4a 100644 --- a/web/src/features/menu/context/ContextMenu.tsx +++ b/web/src/features/menu/context/ContextMenu.tsx @@ -1,5 +1,5 @@ import { useNuiEvent } from '../../../hooks/useNuiEvent'; -import { Box, Stack, Text, Flex } from '@mantine/core'; +import { Box, Stack, Text, Flex, createStyles } from '@mantine/core'; import { useEffect, useState } from 'react'; import { ContextMenuProps } from '../../../typings'; import ContextButton from './components/ContextButton'; @@ -12,7 +12,41 @@ const openMenu = (id: string | undefined) => { fetchNui('openContext', { id: id, back: true }); }; +const useStyles = createStyles((theme) => ({ + container: { + position: 'absolute', + top: '15%', + right: '25%', + width: 320, + height: 580, + }, + header: { + justifyContent: 'center', + alignItems: 'center', + marginBottom: 10, + gap: 6, + }, + titleContainer: { + borderRadius: 4, + flex: '1 85%', + backgroundColor: theme.colors.dark[6], + }, + titleText: { + color: theme.colors.dark[0], + padding: 6, + textAlign: 'center', + }, + buttonsContainer: { + height: 560, + overflowY: 'scroll', + }, + buttonsFlexWrapper: { + gap: 3, + }, +})); + const ContextMenu: React.FC = () => { + const { classes } = useStyles(); const [visible, setVisible] = useState(false); const [contextMenu, setContextMenu] = useState({ title: '', @@ -50,21 +84,21 @@ const ContextMenu: React.FC = () => { }); return ( - + - + {contextMenu.menu && ( openMenu(contextMenu.menu)} /> )} - - + + {contextMenu.title} - - + + {Object.entries(contextMenu.options).map((option, index) => ( ))} diff --git a/web/src/features/menu/context/components/ContextButton.tsx b/web/src/features/menu/context/components/ContextButton.tsx index 64ddd72..49858d0 100644 --- a/web/src/features/menu/context/components/ContextButton.tsx +++ b/web/src/features/menu/context/components/ContextButton.tsx @@ -23,11 +23,17 @@ const useStyles = createStyles((theme, params: { disabled?: boolean }) => ({ color: params.disabled ? theme.colors.dark[3] : theme.colors.dark[0], whiteSpace: 'pre-wrap', }, + button: { + height: 'fit-content', + width: '100%', + padding: 10, + }, iconImage: { maxWidth: '25px', }, description: { color: params.disabled ? theme.colors.dark[3] : theme.colors.dark[2], + fontSize: 12, }, dropdown: { padding: 10, @@ -37,6 +43,29 @@ const useStyles = createStyles((theme, params: { disabled?: boolean }) => ({ width: 'fit-content', border: 'none', }, + buttonStack: { + gap: 4, + flex: '1', + }, + buttonGroup: { + gap: 4, + flexWrap: 'nowrap', + }, + buttonIconContainer: { + width: 25, + height: 25, + justifyContent: 'center', + alignItems: 'center', + }, + buttonTitleText: { + overflowWrap: 'break-word', + }, + buttonArrowContainer: { + justifyContent: 'center', + alignItems: 'center', + width: 25, + height: 25, + }, })); const ContextButton: React.FC<{ @@ -58,16 +87,14 @@ const ContextButton: React.FC<{ classNames={{ inner: classes.inner, label: classes.label }} onClick={() => (!button.disabled ? (button.menu ? openMenu(button.menu) : clickContext(buttonKey)) : null)} variant="default" - h="fit-content" - p={10} - fullWidth + className={classes.button} disabled={button.disabled} > - - + + {button?.icon && ( - + {typeof button.icon === 'string' && isIconUrl(button.icon) ? ( Missing img ) : ( @@ -80,12 +107,12 @@ const ContextButton: React.FC<{ )} )} - + {button.title || buttonKey} {button.description && ( - + {button.description} )} @@ -94,7 +121,7 @@ const ContextButton: React.FC<{ )} {(button.menu || button.arrow) && button.arrow !== false && ( - + )}