import React, { useState, useEffect, useRef } from "react"; import { ApplicationPayload, PageListPayload, } from "@appsmith/constants/ReduxActionConstants"; import { NavLink } from "react-router-dom"; import { getPageURL } from "utils/AppsmithUtils"; import { getAppMode, showAppInviteUsersDialogSelector, } from "selectors/applicationSelectors"; import { useSelector } from "react-redux"; import classNames from "classnames"; import PrimaryCTA from "./PrimaryCTA"; import Button from "./AppViewerButton"; import AppInviteUsersForm from "pages/organization/AppInviteUsersForm"; import FormDialogComponent from "components/editorComponents/form/FormDialogComponent"; import { getCurrentOrgId } from "selectors/organizationSelectors"; import { getSelectedAppTheme } from "selectors/appThemingSelectors"; import BrandingBadge from "./BrandingBadgeMobile"; import { getAppViewHeaderHeight } from "selectors/appViewSelectors"; import { useOnClickOutside } from "utils/hooks/useOnClickOutside"; type AppViewerHeaderProps = { isOpen?: boolean; application?: ApplicationPayload; pages: PageListPayload; url?: string; setMenuOpen?: (shouldOpen: boolean) => void; headerRef?: React.RefObject; }; export function PageMenu(props: AppViewerHeaderProps) { const { application, headerRef, isOpen, pages, setMenuOpen } = props; const appMode = useSelector(getAppMode); const menuRef = useRef(); const selectedTheme = useSelector(getSelectedAppTheme); const organisationID = useSelector(getCurrentOrgId); const showAppInviteUsersDialog = useSelector( showAppInviteUsersDialogSelector, ); const headerHeight = useSelector(getAppViewHeaderHeight); const [query, setQuery] = useState(""); // hide menu on click outside useOnClickOutside( [menuRef, headerRef as React.RefObject], () => { if (typeof setMenuOpen === "function") { setMenuOpen?.(false); } }, ); useEffect(() => { setQuery(window.location.search); }, [location.search]); // Mark default page as first page const appPages = pages; if (appPages.length > 1) { appPages.forEach((item, i) => { if (item.isDefault) { appPages.splice(i, 1); appPages.unshift(item); } }); } return ( <> {/* BG OVERLAY */}
{/* MAIN CONTAINER */}
{appPages.map((page) => ( {page.pageName} ))}
{application && ( } /> )}
); } export default PageMenu;