Trigger submenu instead of omni-bar when "Add Query/JS" button in the explorer is clicked. (#13774)
This commit is contained in:
parent
c60f102e45
commit
9381eeaea7
|
|
@ -52,11 +52,19 @@ const SubMenuContainer = styled.div`
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
type SubMenuProps = { className: string };
|
type SubMenuProps = {
|
||||||
|
className: string;
|
||||||
|
openMenu: boolean;
|
||||||
|
onMenuClose: () => void;
|
||||||
|
};
|
||||||
|
|
||||||
export default function ExplorerSubMenu({ className }: SubMenuProps) {
|
export default function ExplorerSubMenu({
|
||||||
|
className,
|
||||||
|
onMenuClose,
|
||||||
|
openMenu,
|
||||||
|
}: SubMenuProps) {
|
||||||
const [query, setQuery] = useState("");
|
const [query, setQuery] = useState("");
|
||||||
const [show, setShow] = useState(false);
|
const [show, setShow] = useState(openMenu);
|
||||||
const fileOperations = useFilteredFileOperations(query);
|
const fileOperations = useFilteredFileOperations(query);
|
||||||
const pageId = useSelector(getCurrentPageId);
|
const pageId = useSelector(getCurrentPageId);
|
||||||
const applicationSlug = useSelector(selectCurrentApplicationSlug);
|
const applicationSlug = useSelector(selectCurrentApplicationSlug);
|
||||||
|
|
@ -68,6 +76,8 @@ export default function ExplorerSubMenu({ className }: SubMenuProps) {
|
||||||
const pluginGroups = useMemo(() => keyBy(plugins, "id"), [plugins]);
|
const pluginGroups = useMemo(() => keyBy(plugins, "id"), [plugins]);
|
||||||
const [activeItemIdx, setActiveItemIdx] = useState(0);
|
const [activeItemIdx, setActiveItemIdx] = useState(0);
|
||||||
|
|
||||||
|
useEffect(() => setShow(openMenu), [openMenu]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setQuery("");
|
setQuery("");
|
||||||
}, [show]);
|
}, [show]);
|
||||||
|
|
@ -207,7 +217,10 @@ export default function ExplorerSubMenu({ className }: SubMenuProps) {
|
||||||
}
|
}
|
||||||
isOpen={show}
|
isOpen={show}
|
||||||
minimal
|
minimal
|
||||||
onClose={() => setShow(false)}
|
onClose={() => {
|
||||||
|
setShow(false);
|
||||||
|
onMenuClose();
|
||||||
|
}}
|
||||||
placement="right-start"
|
placement="right-start"
|
||||||
>
|
>
|
||||||
<TooltipComponent
|
<TooltipComponent
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import React, { useCallback, useEffect, useMemo } from "react";
|
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
||||||
import { useActiveAction } from "../hooks";
|
import { useActiveAction } from "../hooks";
|
||||||
import { Entity, EntityClassNames } from "../Entity/index";
|
import { Entity, EntityClassNames } from "../Entity/index";
|
||||||
import {
|
import {
|
||||||
|
|
@ -14,16 +14,10 @@ import {
|
||||||
} from "selectors/editorSelectors";
|
} from "selectors/editorSelectors";
|
||||||
import { ExplorerActionEntity } from "../Actions/ActionEntity";
|
import { ExplorerActionEntity } from "../Actions/ActionEntity";
|
||||||
import ExplorerJSCollectionEntity from "../JSActions/JSActionEntity";
|
import ExplorerJSCollectionEntity from "../JSActions/JSActionEntity";
|
||||||
import { setGlobalSearchCategory } from "actions/globalSearchActions";
|
|
||||||
import { Colors } from "constants/Colors";
|
import { Colors } from "constants/Colors";
|
||||||
import {
|
|
||||||
filterCategories,
|
|
||||||
SEARCH_CATEGORY_ID,
|
|
||||||
} from "components/editorComponents/GlobalSearch/utils";
|
|
||||||
import { selectFilesForExplorer } from "selectors/entitiesSelector";
|
import { selectFilesForExplorer } from "selectors/entitiesSelector";
|
||||||
import { getExplorerStatus, saveExplorerStatus } from "../helpers";
|
import { getExplorerStatus, saveExplorerStatus } from "../helpers";
|
||||||
import Icon from "components/ads/Icon";
|
import Icon from "components/ads/Icon";
|
||||||
import { noop } from "lodash";
|
|
||||||
import { AddEntity, EmptyComponent } from "../common";
|
import { AddEntity, EmptyComponent } from "../common";
|
||||||
import ExplorerSubMenu from "./Submenu";
|
import ExplorerSubMenu from "./Submenu";
|
||||||
|
|
||||||
|
|
@ -33,14 +27,11 @@ function Files() {
|
||||||
const files = useSelector(selectFilesForExplorer);
|
const files = useSelector(selectFilesForExplorer);
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
const isFilesOpen = getExplorerStatus(applicationId, "queriesAndJs");
|
const isFilesOpen = getExplorerStatus(applicationId, "queriesAndJs");
|
||||||
|
const [isMenuOpen, openMenu] = useState(false);
|
||||||
|
|
||||||
const onCreate = useCallback(() => {
|
const onCreate = useCallback(() => {
|
||||||
dispatch(
|
openMenu(true);
|
||||||
setGlobalSearchCategory(
|
}, [dispatch, openMenu]);
|
||||||
filterCategories[SEARCH_CATEGORY_ID.ACTION_OPERATION],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}, [dispatch]);
|
|
||||||
|
|
||||||
const activeActionId = useActiveAction();
|
const activeActionId = useActiveAction();
|
||||||
|
|
||||||
|
|
@ -59,6 +50,8 @@ function Files() {
|
||||||
[applicationId],
|
[applicationId],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const onMenuClose = useCallback(() => openMenu(false), [openMenu]);
|
||||||
|
|
||||||
const fileEntities = useMemo(
|
const fileEntities = useMemo(
|
||||||
() =>
|
() =>
|
||||||
files.map(({ entity, type }: any) => {
|
files.map(({ entity, type }: any) => {
|
||||||
|
|
@ -105,12 +98,14 @@ function Files() {
|
||||||
customAddButton={
|
customAddButton={
|
||||||
<ExplorerSubMenu
|
<ExplorerSubMenu
|
||||||
className={`${EntityClassNames.ADD_BUTTON} group files`}
|
className={`${EntityClassNames.ADD_BUTTON} group files`}
|
||||||
|
onMenuClose={onMenuClose}
|
||||||
|
openMenu={isMenuOpen}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
disabled={false}
|
disabled={false}
|
||||||
entityId={pageId + "_widgets"}
|
entityId={pageId + "_widgets"}
|
||||||
icon={null}
|
icon={null}
|
||||||
isDefaultExpanded={isFilesOpen === null ? true : isFilesOpen}
|
isDefaultExpanded={isFilesOpen ?? true}
|
||||||
isSticky
|
isSticky
|
||||||
key={pageId + "_widgets"}
|
key={pageId + "_widgets"}
|
||||||
name="QUERIES/JS"
|
name="QUERIES/JS"
|
||||||
|
|
@ -124,7 +119,7 @@ function Files() {
|
||||||
) : (
|
) : (
|
||||||
<EmptyComponent
|
<EmptyComponent
|
||||||
addBtnText={createMessage(EMPTY_QUERY_JS_BUTTON_TEXT)}
|
addBtnText={createMessage(EMPTY_QUERY_JS_BUTTON_TEXT)}
|
||||||
addFunction={onCreate || noop}
|
addFunction={onCreate}
|
||||||
mainText={createMessage(EMPTY_QUERY_JS_MAIN_TEXT)}
|
mainText={createMessage(EMPTY_QUERY_JS_MAIN_TEXT)}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user