feat: allows main menu to be hidden

This commit is contained in:
Mark Mankarious
2023-10-10 14:45:44 +01:00
parent cfb60f37cf
commit 3b02ae1f22
4 changed files with 32 additions and 12 deletions

View File

@@ -29,6 +29,7 @@ interface Props {
width?: number | string;
height?: number | string;
debugMode?: boolean;
hideMainMenu?: boolean;
}
const App = ({
@@ -37,7 +38,8 @@ const App = ({
height = '100%',
disableInteractions: disableInteractionsProp,
onSceneUpdated,
debugMode = false
debugMode = false,
hideMainMenu = false
}: Props) => {
const prevInitialScene = useRef<SceneInput>(INITIAL_SCENE);
const [isReady, setIsReady] = useState(false);
@@ -57,9 +59,16 @@ const App = ({
const { setIconCategoriesState } = useIconCategories();
useEffect(() => {
uiActions.setHideMainMenu(hideMainMenu);
uiActions.setZoom(initialScene?.zoom ?? 1);
uiActions.setDisableInteractions(Boolean(disableInteractionsProp));
}, [initialScene?.zoom, disableInteractionsProp, sceneActions, uiActions]);
}, [
initialScene?.zoom,
disableInteractionsProp,
sceneActions,
uiActions,
hideMainMenu
]);
useEffect(() => {
if (!initialScene || prevInitialScene.current === initialScene) return;

View File

@@ -35,6 +35,9 @@ export const UiOverlay = () => {
const sceneTitle = useSceneStore((state) => {
return state.title;
});
const hideMainMenu = useUiStateStore((state) => {
return state.hideMainMenu;
});
if (disableInteractions) return null;
@@ -46,7 +49,7 @@ export const UiOverlay = () => {
position: 'absolute',
top: appPadding.y * 2 + spacing(2),
left: appPadding.x,
width: '345px',
width: '360px',
maxHeight: `calc(100% - ${toPx(appPadding.y * 6)})`,
overflowY: 'scroll',
'&::-webkit-scrollbar': {
@@ -84,15 +87,17 @@ export const UiOverlay = () => {
<ZoomControls />
</Box>
<Box
sx={{
position: 'absolute',
top: appPadding.y,
left: appPadding.x
}}
>
<MainMenu />
</Box>
{!hideMainMenu && (
<Box
sx={{
position: 'absolute',
top: appPadding.y,
left: appPadding.x
}}
>
<MainMenu />
</Box>
)}
<UiElement
sx={{

View File

@@ -8,6 +8,7 @@ const initialState = () => {
return {
iconCategoriesState: [],
disableInteractions: false,
hideMainMenu: false,
mode: {
type: 'CURSOR',
showCursor: true,
@@ -51,6 +52,9 @@ const initialState = () => {
setMode: (mode) => {
set({ mode });
},
setHideMainMenu: (state) => {
set({ hideMainMenu: state });
},
setIsMainMenuOpen: (isMainMenuOpen) => {
set({ isMainMenuOpen, itemControls: null });
},

View File

@@ -156,6 +156,7 @@ export type IconCollectionStateWithIcons = IconCollectionState & {
export interface UiState {
iconCategoriesState: IconCollectionState[];
disableInteractions: boolean;
hideMainMenu: boolean;
mode: Mode;
isMainMenuOpen: boolean;
itemControls: ItemControls;
@@ -171,6 +172,7 @@ export interface UiStateActions {
setIconCategoriesState: (iconCategoriesState: IconCollectionState[]) => void;
resetUiState: () => void;
setMode: (mode: Mode) => void;
setHideMainMenu: (state: boolean) => void;
incrementZoom: () => void;
decrementZoom: () => void;
setIsMainMenuOpen: (isOpen: boolean) => void;