diff --git a/app/client/src/IDE/Structure/Toolbar.tsx b/app/client/src/IDE/Structure/Toolbar.tsx
new file mode 100644
index 00000000000..bd2f4f0ce7a
--- /dev/null
+++ b/app/client/src/IDE/Structure/Toolbar.tsx
@@ -0,0 +1,52 @@
+import React from "react";
+import { Flex } from "@appsmith/ads";
+
+interface ToolbarProps {
+ children?: React.ReactNode[] | React.ReactNode;
+}
+
+const Toolbar = (props: ToolbarProps) => {
+ return (
+
+ {props.children}
+
+ );
+};
+
+const Left = (props: ToolbarProps) => {
+ return (
+
+ {props.children}
+
+ );
+};
+
+const Right = (props: ToolbarProps) => {
+ return (
+
+ {props.children}
+
+ );
+};
+
+Toolbar.Left = Left;
+Toolbar.Right = Right;
+
+export default Toolbar;
diff --git a/app/client/src/IDE/index.ts b/app/client/src/IDE/index.ts
index 8a12a855b8e..c57c8ea1872 100644
--- a/app/client/src/IDE/index.ts
+++ b/app/client/src/IDE/index.ts
@@ -12,6 +12,14 @@
export { IDE_HEADER_HEIGHT } from "./Structure/constants";
export { default as IDEHeader } from "./Structure/Header";
+/**
+ * The IDEToolbar gets exported with 2 layout subsections.
+ * IDEToolbar.Left and IDEToolbar.Right
+ * These are composable components that you can use to spread the content of the toolbar
+ * It is possible to use the Toolbar without using these subsections
+ */
+export { default as IDEToolbar } from "./Structure/Toolbar";
+
/* ====================================================
**** UI Components ****
Components that are smaller UI abstractions for easy use and standardisation within the IDE
diff --git a/app/client/src/PluginActionEditor/components/PluginActionToolbar.tsx b/app/client/src/PluginActionEditor/components/PluginActionToolbar.tsx
index 64542de3c66..ee90ecc960b 100644
--- a/app/client/src/PluginActionEditor/components/PluginActionToolbar.tsx
+++ b/app/client/src/PluginActionEditor/components/PluginActionToolbar.tsx
@@ -1,7 +1,43 @@
import React from "react";
+import { IDEToolbar } from "IDE";
+import { Button, Tooltip } from "@appsmith/ads";
+import { modText } from "../../utils/helpers";
-const PluginActionToolbar = () => {
- return
;
+interface PluginActionToolbarProps {
+ runOptions?: React.ReactNode;
+ children?: React.ReactNode[] | React.ReactNode;
+}
+
+const PluginActionToolbar = (props: PluginActionToolbarProps) => {
+ return (
+
+ {props.children}
+
+ {props.runOptions}
+
+
+
+
+
+
+
+ );
};
export default PluginActionToolbar;
diff --git a/app/client/src/pages/Editor/IDE/EditorPane/components/ActionDrawer.tsx b/app/client/src/pages/Editor/IDE/EditorPane/components/ActionDrawer.tsx
deleted file mode 100644
index af612152be8..00000000000
--- a/app/client/src/pages/Editor/IDE/EditorPane/components/ActionDrawer.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import React, { useEffect, useRef, useState } from "react";
-import styled from "styled-components";
-import { ResizerCSS } from "components/editorComponents/Debugger/Resizer";
-import Resizable from "components/editorComponents/Debugger/Resizer";
-import { ActionExecutionResizerHeight } from "pages/Editor/APIEditor/constants";
-import type { BottomTab } from "components/editorComponents/EntityBottomTabs";
-import EntityBottomTabs from "components/editorComponents/EntityBottomTabs";
-
-const Container = styled.div`
- ${ResizerCSS};
- height: ${ActionExecutionResizerHeight}px;
- // Minimum height of bottom tabs as it can be resized
- min-height: 36px;
- width: 100%;
- background-color: var(--ads-v2-color-bg);
- border-top: 1px solid var(--ads-v2-color-border);
- z-index: 6;
-`;
-
-interface Props {
- onResizeComplete: (height: number) => void;
- isRunning: boolean;
- tabs: BottomTab[];
- height?: number;
-}
-
-const ActionDrawer = (props: Props) => {
- const panelRef = useRef(null);
- const [selectedTab, setSelectedTab] = useState("");
- useEffect(() => {
- if (props.tabs.length) {
- setSelectedTab(props.tabs[0].key);
- }
- }, []);
-
- return (
-
-
-
-
- );
-};
-
-export default ActionDrawer;
diff --git a/app/client/src/pages/Editor/IDE/EditorPane/components/ActionEditor.tsx b/app/client/src/pages/Editor/IDE/EditorPane/components/ActionEditor.tsx
deleted file mode 100644
index e8335837bba..00000000000
--- a/app/client/src/pages/Editor/IDE/EditorPane/components/ActionEditor.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import { Flex } from "@appsmith/ads";
-import React, { useCallback, useState } from "react";
-import ActionToolbar from "./ActionToolbar";
-import ActionDrawer from "./ActionDrawer";
-import { useDispatch } from "react-redux";
-import type { BottomTab } from "components/editorComponents/EntityBottomTabs";
-
-interface Props {
- children: React.ReactNode;
- onRunClick: () => void;
- onDocsClick?: () => void;
- isRunning: boolean;
- tabs: BottomTab[];
- runOptionsSelector?: React.ReactNode;
- settingsRender: React.ReactNode;
- height?: number;
- onSetHeight?: (height: number) => void;
-}
-
-const ActionEditor = (props: Props) => {
- const dispatch = useDispatch();
- const setDrawerHeight = useCallback((height: number) => {
- if (props.onSetHeight) {
- dispatch(props.onSetHeight(height));
- }
- }, []);
- const [settingsOpen, setSettingsOpen] = useState(false);
-
- return (
-
-
-
- {settingsOpen ? props.settingsRender : props.children}
-
- setSettingsOpen(!settingsOpen)}
- runOptionSelector={props.runOptionsSelector}
- />
-
-
-
- );
-};
-
-export default ActionEditor;
diff --git a/app/client/src/pages/Editor/IDE/EditorPane/components/ActionToolbar.tsx b/app/client/src/pages/Editor/IDE/EditorPane/components/ActionToolbar.tsx
deleted file mode 100644
index 3d2be46ca6b..00000000000
--- a/app/client/src/pages/Editor/IDE/EditorPane/components/ActionToolbar.tsx
+++ /dev/null
@@ -1,73 +0,0 @@
-import { Button, Flex, Tooltip } from "@appsmith/ads";
-import React from "react";
-import styled from "styled-components";
-import { useFeatureFlag } from "utils/hooks/useFeatureFlag";
-import { FEATURE_FLAG } from "ee/entities/FeatureFlag";
-import { createMessage, DOCUMENTATION_TOOLTIP } from "ee/constants/messages";
-
-const MutedText = styled.span`
- opacity: 70%;
-`;
-
-interface Props {
- onSettingsClick: () => void;
- onRunClick: () => void;
- runOptionSelector?: React.ReactNode;
- onDocsClick?: () => void;
-}
-
-const ActionToolbar = (props: Props) => {
- const isActionRedesignEnabled = useFeatureFlag(
- FEATURE_FLAG.release_actions_redesign_enabled,
- );
- if (!isActionRedesignEnabled) return null;
- return (
-
-
-
- {props.onDocsClick ? (
-
-
-
- ) : null}
-
-
-
- {props.runOptionSelector}
-
-
-
- );
-};
-
-export default ActionToolbar;
diff --git a/app/client/src/pages/Editor/QueryEditor/EditorJSONtoForm.tsx b/app/client/src/pages/Editor/QueryEditor/EditorJSONtoForm.tsx
index a3c97d624f1..0721f3ae295 100644
--- a/app/client/src/pages/Editor/QueryEditor/EditorJSONtoForm.tsx
+++ b/app/client/src/pages/Editor/QueryEditor/EditorJSONtoForm.tsx
@@ -11,7 +11,6 @@ import styled from "styled-components";
import FormRow from "components/editorComponents/FormRow";
import {
createMessage,
- DEBUGGER_RESPONSE,
DOCUMENTATION,
DOCUMENTATION_TOOLTIP,
} from "ee/constants/messages";
@@ -29,17 +28,12 @@ import { setQueryPaneConfigSelectedTabIndex } from "actions/queryPaneActions";
import type { SourceEntity } from "entities/AppsmithConsole";
import { ENTITY_TYPE as SOURCE_ENTITY_TYPE } from "ee/entities/AppsmithConsole/utils";
import { DocsLink, openDoc } from "../../../constants/DocumentationLinks";
-import { useFeatureFlag } from "utils/hooks/useFeatureFlag";
-import { FEATURE_FLAG } from "ee/entities/FeatureFlag";
import { QueryEditorContext } from "./QueryEditorContext";
import QueryDebuggerTabs from "./QueryDebuggerTabs";
import useShowSchema from "components/editorComponents/ActionRightPane/useShowSchema";
import { doesPluginRequireDatasource } from "ee/entities/Engine/actionHelpers";
import FormRender from "./FormRender";
import QueryEditorHeader from "./QueryEditorHeader";
-import ActionEditor from "../IDE/EditorPane/components/ActionEditor";
-import QueryResponseTab from "./QueryResponseTab";
-import DatasourceSelector from "./DatasourceSelector";
import RunHistory from "ee/components/RunHistory";
const QueryFormContainer = styled.form`
@@ -227,10 +221,6 @@ export function EditorJSONtoForm(props: Props) {
useShowSchema(currentActionConfig?.pluginId || "") &&
pluginRequireDatasource;
- const isActionRedesignEnabled = useFeatureFlag(
- FEATURE_FLAG.release_actions_redesign_enabled,
- );
-
const dispatch = useDispatch();
const handleDocumentationClick = () => {
@@ -256,59 +246,6 @@ export function EditorJSONtoForm(props: Props) {
return null;
}
- if (isActionRedesignEnabled && plugin) {
- const responseTabs = [];
- if (currentActionConfig) {
- responseTabs.push({
- key: "response",
- title: createMessage(DEBUGGER_RESPONSE),
- panelComponent: (
-
- ),
- });
- }
- return (
-
- }
- settingsRender={
-
-
-
- }
- tabs={responseTabs}
- >
-
-
- );
- }
-
return (
<>
{closeEditorLink}