diff --git a/app/client/src/ce/constants/messages.ts b/app/client/src/ce/constants/messages.ts
index d236cb0735..14db18d877 100644
--- a/app/client/src/ce/constants/messages.ts
+++ b/app/client/src/ce/constants/messages.ts
@@ -2455,3 +2455,7 @@ export const HEADER_TITLES = {
export const PASTE_FAILED = (str: string): string => `Paste failed! ${str}`;
export const CREATE_A_NEW_ITEM = (item: string) => `Create a new ${item}`;
+
+export const MAXIMIZE_BUTTON_TOOLTIP = () =>
+ `Expand code editor to full-screen`;
+export const MINIMIZE_BUTTON_TOOLTIP = () => `Open code editor next to the UI`;
diff --git a/app/client/src/ce/pages/Editor/IDE/EditorPane/JS/hooks.ts b/app/client/src/ce/pages/Editor/IDE/EditorPane/JS/hooks.ts
index 986972701c..6e5aa8288e 100644
--- a/app/client/src/ce/pages/Editor/IDE/EditorPane/JS/hooks.ts
+++ b/app/client/src/ce/pages/Editor/IDE/EditorPane/JS/hooks.ts
@@ -13,6 +13,7 @@ import JSEditor from "pages/Editor/JSEditor";
import AddJS from "pages/Editor/IDE/EditorPane/JS/Add";
import { ADD_PATH } from "@appsmith/constants/routes/appRoutes";
import ListJS from "pages/Editor/IDE/EditorPane/JS/List";
+import { BlankStateContainer } from "pages/Editor/IDE/EditorPane/JS/BlankStateContainer";
export const useJSAdd = () => {
const pageId = useSelector(getCurrentPageId);
@@ -56,6 +57,12 @@ export const useJSSegmentRoutes = (path: string): UseRoutes => {
component: JSEditor,
path: [path + "/:collectionId"],
},
+ {
+ key: "JSEmpty",
+ component: BlankStateContainer,
+ exact: true,
+ path: [path],
+ },
];
}
return [
diff --git a/app/client/src/ce/pages/Editor/IDE/EditorPane/Query/hooks.ts b/app/client/src/ce/pages/Editor/IDE/EditorPane/Query/hooks.ts
index 31e0fc793a..c57fa80e9c 100644
--- a/app/client/src/ce/pages/Editor/IDE/EditorPane/Query/hooks.ts
+++ b/app/client/src/ce/pages/Editor/IDE/EditorPane/Query/hooks.ts
@@ -34,6 +34,7 @@ import type { AppState } from "@appsmith/reducers";
import keyBy from "lodash/keyBy";
import { getPluginEntityIcon } from "pages/Editor/Explorer/ExplorerIcons";
import type { ListItemProps } from "design-system";
+import { BlankStateContainer } from "pages/Editor/IDE/EditorPane/Query/BlankStateContainer";
export const useQueryAdd = () => {
const location = useLocation();
@@ -96,6 +97,7 @@ export const useGroupedAddQueryOperations = (): GroupedAddOperations => {
export const useQuerySegmentRoutes = (path: string): UseRoutes => {
const isSideBySideEnabled = useSelector(getIsSideBySideEnabled);
const editorMode = useSelector(getIDEViewMode);
+
if (isSideBySideEnabled && editorMode === EditorViewMode.SplitScreen) {
return [
{
@@ -130,6 +132,12 @@ export const useQuerySegmentRoutes = (path: string): UseRoutes => {
exact: true,
path: [path + "/:queryId"],
},
+ {
+ key: "QueryEmpty",
+ component: BlankStateContainer,
+ exact: true,
+ path: [path],
+ },
];
}
return [
diff --git a/app/client/src/pages/Editor/IDE/EditorPane/JS/BlankState.tsx b/app/client/src/pages/Editor/IDE/EditorPane/JS/BlankState.tsx
new file mode 100644
index 0000000000..4ed17367a6
--- /dev/null
+++ b/app/client/src/pages/Editor/IDE/EditorPane/JS/BlankState.tsx
@@ -0,0 +1,32 @@
+import React from "react";
+import { useSelector } from "react-redux";
+
+import { EDITOR_PANE_TEXTS, createMessage } from "@appsmith/constants/messages";
+import { getPagePermissions } from "selectors/editorSelectors";
+import { useFeatureFlag } from "utils/hooks/useFeatureFlag";
+import { getHasCreateActionPermission } from "@appsmith/utils/BusinessFeatures/permissionPageHelpers";
+import { FEATURE_FLAG } from "@appsmith/entities/FeatureFlag";
+import { useJSAdd } from "@appsmith/pages/Editor/IDE/EditorPane/JS/hooks";
+import { EmptyState } from "../components/EmptyState";
+
+const BlankState: React.FC = () => {
+ const pagePermissions = useSelector(getPagePermissions);
+ const isFeatureEnabled = useFeatureFlag(FEATURE_FLAG.license_gac_enabled);
+ const canCreateActions = getHasCreateActionPermission(
+ isFeatureEnabled,
+ pagePermissions,
+ );
+ const addButtonClickHandler = useJSAdd();
+
+ return (
+
+ );
+};
+
+export { BlankState };
diff --git a/app/client/src/pages/Editor/IDE/EditorPane/JS/BlankStateContainer.tsx b/app/client/src/pages/Editor/IDE/EditorPane/JS/BlankStateContainer.tsx
new file mode 100644
index 0000000000..d41f30c568
--- /dev/null
+++ b/app/client/src/pages/Editor/IDE/EditorPane/JS/BlankStateContainer.tsx
@@ -0,0 +1,14 @@
+import React from "react";
+import { Flex } from "design-system";
+
+import { BlankState } from "./BlankState";
+
+const BlankStateContainer: React.FC = () => {
+ return (
+
+
+
+ );
+};
+
+export { BlankStateContainer };
diff --git a/app/client/src/pages/Editor/IDE/EditorPane/JS/List.tsx b/app/client/src/pages/Editor/IDE/EditorPane/JS/List.tsx
index ec199f761e..5630e66a04 100644
--- a/app/client/src/pages/Editor/IDE/EditorPane/JS/List.tsx
+++ b/app/client/src/pages/Editor/IDE/EditorPane/JS/List.tsx
@@ -14,11 +14,11 @@ import { useFeatureFlag } from "utils/hooks/useFeatureFlag";
import { FEATURE_FLAG } from "@appsmith/entities/FeatureFlag";
import { getHasCreateActionPermission } from "@appsmith/utils/BusinessFeatures/permissionPageHelpers";
import { createMessage, EDITOR_PANE_TEXTS } from "@appsmith/constants/messages";
-import { EmptyState } from "../components/EmptyState";
import { ActionParentEntityType } from "@appsmith/entities/Engine/actionHelpers";
import { FilesContextProvider } from "pages/Editor/Explorer/Files/FilesContextProvider";
import { useJSAdd } from "@appsmith/pages/Editor/IDE/EditorPane/JS/hooks";
import { JSListItem } from "@appsmith/pages/Editor/IDE/EditorPane/JS/ListItem";
+import { BlankState } from "./BlankState";
const JSContainer = styled(Flex)`
& .t--entity-item {
@@ -114,17 +114,7 @@ const ListJSObjects = () => {
- {(!jsList || jsList.length === 0) && (
-
- )}
+ {(!jsList || jsList.length === 0) && }
);
};
diff --git a/app/client/src/pages/Editor/IDE/EditorPane/Query/BlankState.tsx b/app/client/src/pages/Editor/IDE/EditorPane/Query/BlankState.tsx
new file mode 100644
index 0000000000..7865e88d05
--- /dev/null
+++ b/app/client/src/pages/Editor/IDE/EditorPane/Query/BlankState.tsx
@@ -0,0 +1,34 @@
+import React from "react";
+import { useSelector } from "react-redux";
+
+import { EDITOR_PANE_TEXTS, createMessage } from "@appsmith/constants/messages";
+import { getHasCreateActionPermission } from "@appsmith/utils/BusinessFeatures/permissionPageHelpers";
+import { getPagePermissions } from "selectors/editorSelectors";
+import { useFeatureFlag } from "utils/hooks/useFeatureFlag";
+import { FEATURE_FLAG } from "@appsmith/entities/FeatureFlag";
+import { EmptyState } from "../components/EmptyState";
+import { useQueryAdd } from "@appsmith/pages/Editor/IDE/EditorPane/Query/hooks";
+
+const BlankState: React.FC = () => {
+ const pagePermissions = useSelector(getPagePermissions);
+ const isFeatureEnabled = useFeatureFlag(FEATURE_FLAG.license_gac_enabled);
+ const canCreateActions = getHasCreateActionPermission(
+ isFeatureEnabled,
+ pagePermissions,
+ );
+ const addButtonClickHandler = useQueryAdd();
+
+ return (
+
+ );
+};
+
+export { BlankState };
diff --git a/app/client/src/pages/Editor/IDE/EditorPane/Query/BlankStateContainer.tsx b/app/client/src/pages/Editor/IDE/EditorPane/Query/BlankStateContainer.tsx
new file mode 100644
index 0000000000..8b097c26b5
--- /dev/null
+++ b/app/client/src/pages/Editor/IDE/EditorPane/Query/BlankStateContainer.tsx
@@ -0,0 +1,20 @@
+import React from "react";
+import { Flex } from "design-system";
+
+import { BlankState } from "./BlankState";
+
+const BlankStateContainer: React.FC = () => {
+ return (
+
+
+
+ );
+};
+
+export { BlankStateContainer };
diff --git a/app/client/src/pages/Editor/IDE/EditorPane/Query/List.tsx b/app/client/src/pages/Editor/IDE/EditorPane/Query/List.tsx
index 3e36b743c8..bb205b956c 100644
--- a/app/client/src/pages/Editor/IDE/EditorPane/Query/List.tsx
+++ b/app/client/src/pages/Editor/IDE/EditorPane/Query/List.tsx
@@ -15,10 +15,10 @@ import { selectQuerySegmentEditorList } from "@appsmith/selectors/appIDESelector
import { ActionParentEntityType } from "@appsmith/entities/Engine/actionHelpers";
import { FilesContextProvider } from "pages/Editor/Explorer/Files/FilesContextProvider";
import { createMessage, EDITOR_PANE_TEXTS } from "@appsmith/constants/messages";
-import { EmptyState } from "../components/EmptyState";
import { useQueryAdd } from "@appsmith/pages/Editor/IDE/EditorPane/Query/hooks";
import { QueryListItem } from "@appsmith/pages/Editor/IDE/EditorPane/Query/ListItem";
import { getShowWorkflowFeature } from "@appsmith/selectors/workflowSelectors";
+import { BlankState } from "./BlankState";
const ListQuery = () => {
const pageId = useSelector(getCurrentPageId) as string;
@@ -98,17 +98,7 @@ const ListQuery = () => {
})}
- {Object.keys(files).length === 0 && (
-
- )}
+ {Object.keys(files).length === 0 && }
);
};
diff --git a/app/client/src/pages/Editor/IDE/EditorPane/components/SegmentedHeader.tsx b/app/client/src/pages/Editor/IDE/EditorPane/components/SegmentedHeader.tsx
index 6ad5cdafe9..c65805f011 100644
--- a/app/client/src/pages/Editor/IDE/EditorPane/components/SegmentedHeader.tsx
+++ b/app/client/src/pages/Editor/IDE/EditorPane/components/SegmentedHeader.tsx
@@ -1,6 +1,10 @@
import React from "react";
-import { Button, Flex, SegmentedControl } from "design-system";
-import { createMessage, EDITOR_PANE_TEXTS } from "@appsmith/constants/messages";
+import { Button, Flex, SegmentedControl, Tooltip } from "design-system";
+import {
+ createMessage,
+ EDITOR_PANE_TEXTS,
+ MAXIMIZE_BUTTON_TOOLTIP,
+} from "@appsmith/constants/messages";
import {
EditorEntityTab,
EditorViewMode,
@@ -82,15 +86,17 @@ const SegmentedHeader = () => {
{isSideBySideEnabled &&
editorMode === EditorViewMode.SplitScreen &&
segment !== EditorEntityTab.UI ? (
-