diff --git a/assets/icons/chevronlefticon.svg b/assets/icons/chevronlefticon.svg new file mode 100644 index 00000000..d81c9ddd --- /dev/null +++ b/assets/icons/chevronlefticon.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/App.jsx b/src/App.jsx index fc55d159..8dc98e86 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -19,6 +19,7 @@ import { } from './components/Dashboard/context/SpotlightContext.jsx' import { ActionsModalProvider } from './components/Dashboard/context/ActionsModalContext.jsx' import { ActionsProvider } from './components/Dashboard/context/ActionsContext.jsx' +import { DashboardObjectToolsProvider } from './components/Dashboard/context/DashboardObjectToolsContext.jsx' import MissingPlaceholder from './components/Dashboard/common/MissingPlaceholder.jsx' import { @@ -93,6 +94,7 @@ const AppContent = () => { + { } /> + diff --git a/src/components/Dashboard/Layout.jsx b/src/components/Dashboard/Layout.jsx index d4cac784..adf0353d 100644 --- a/src/components/Dashboard/Layout.jsx +++ b/src/components/Dashboard/Layout.jsx @@ -13,6 +13,7 @@ import DeveloperSidebar from './Developer/DeveloperSidebar' import DashboardSidebarSplitter from './common/DashboardSidebarSplitter' import { useThemeContext } from './context/ThemeContext' import { MessageProvider } from './context/MessageContext' +import { useDashboardObjectToolsContext } from './context/DashboardObjectToolsContext' const { Content } = Layout @@ -26,6 +27,7 @@ const DashboardLayout = ({ children }) => { const isDeveloper = location.pathname.startsWith('/dashboard/developer') const { isDarkMode } = useThemeContext() + const { currentObjectTools } = useDashboardObjectToolsContext() const sidebar = isProduction ? ( @@ -57,8 +59,9 @@ const DashboardLayout = ({ children }) => { > - + + {currentObjectTools} {children} diff --git a/src/components/Dashboard/common/KeyboardShortcut.jsx b/src/components/Dashboard/common/KeyboardShortcut.jsx index c371541e..abd8fd41 100644 --- a/src/components/Dashboard/common/KeyboardShortcut.jsx +++ b/src/components/Dashboard/common/KeyboardShortcut.jsx @@ -1,4 +1,4 @@ -import { useEffect, useRef, cloneElement, useMemo } from 'react' +import { useEffect, useRef, useMemo } from 'react' import PropTypes from 'prop-types' import loglevel from 'loglevel' import config from '../../../config' @@ -50,7 +50,6 @@ const KeyboardShortcut = ({ onTrigger, log = false }) => { - const childRef = useRef() const pressedKeysRef = useRef(new Set()) const shortcutKeys = useMemo(() => parseShortcut(shortcut), [shortcut]) @@ -94,8 +93,6 @@ const KeyboardShortcut = ({ } }, [shortcutKeys, onTrigger, log]) - const element = cloneElement(children, { ref: childRef }) - if (hint) { var osSpecificHint = hint.replaceAll('ALT', '⌥') @@ -104,11 +101,11 @@ const KeyboardShortcut = ({ hideBorder title={{osSpecificHint}} > - {element} + {children} ) } - return element + return children } KeyboardShortcut.propTypes = { diff --git a/src/components/Dashboard/common/ObjectTableNavigationButtons.jsx b/src/components/Dashboard/common/ObjectTableNavigationButtons.jsx index 4109c641..a8798e00 100644 --- a/src/components/Dashboard/common/ObjectTableNavigationButtons.jsx +++ b/src/components/Dashboard/common/ObjectTableNavigationButtons.jsx @@ -1,8 +1,7 @@ import { useContext, useEffect, useState, useCallback, useRef } from 'react' import { Button, Divider, Flex, Space } from 'antd' import { useSearchParams } from 'react-router-dom' -import ArrowLeftIcon from '../../Icons/ArrowLeftIcon.jsx' -import ArrowRightIcon from '../../Icons/ArrowRightIcon.jsx' + import PropTypes from 'prop-types' import { ApiServerContext } from '../context/ApiServerContext' import { AuthContext } from '../context/AuthContext' @@ -11,6 +10,8 @@ import { useTableStatePersistence } from '../context/TableStateContext' import KeyboardShortcut from './KeyboardShortcut.jsx' +import ChevronLeftIcon from '../../Icons/ChevronLeftIcon.jsx' +import ChevronRightIcon from '../../Icons/ChevronRightIcon.jsx' const ObjectTableNavigationButtons = ({ disabled, @@ -25,10 +26,10 @@ const ObjectTableNavigationButtons = ({ const [loading, setLoading] = useState(false) const { getPersistedFilter, getPersistedSorter } = useTableStatePersistence({ - scope: objectType, - useFilterInSession: true, - useSortInSession: true - }) + scope: objectType, + useFilterInSession: true, + useSortInSession: true + }) const getObjectNeighborsRef = useRef(getObjectNeighbors) getObjectNeighborsRef.current = getObjectNeighbors @@ -114,15 +115,21 @@ const ObjectTableNavigationButtons = ({ {showEndingDivider && ( )} - +