PromucFlow_constructor/app/client/src/IDE/Components/BottomView.tsx

161 lines
3.6 KiB
TypeScript
Raw Normal View History

feat: Collapsible Bottom View (#33441) ## Description - Creates a new IDE component for `BottomView` that can be either collapsed or closed. - Creates a different view for `EntityTabs` when it is collapsed - Start using the collapsed version for Entity Responses (Query / API / JS) Fixes #33333 Fixes #33336 Fixes #31402 ## Automation /ok-to-test tags="@tag.All" ### :mag: Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!CAUTION] > 🔴 🔴 🔴 Some tests have failed. > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/9175565108> > Commit: 8f3b96eb0b7d18301fb902cddd13755abee38871 > Cypress dashboard: <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9175565108&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail" target="_blank"> Click here!</a> > The following are new failures, please fix them before merging the PR: <ol> > <li>cypress/e2e/Regression/ClientSide/Binding/Button_Text_WithRecaptcha_spec.js > <li>cypress/e2e/Regression/ClientSide/Widgets/Others/IconButton_2_spec.ts </ol> > To know the list of identified flaky tests - <a href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master" target="_blank">Refer here</a> <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [x] Yes - [ ] No
2024-05-22 14:13:07 +00:00
import React, { useEffect, useRef, useState } from "react";
import styled from "styled-components";
import Resizer, {
ResizerCSS,
} from "components/editorComponents/Debugger/Resizer";
chore: Move Sidebar to IDE/Components (#34487) ## Description Separate the Sidebar Component from the various IDEs and move it to the IDE module. Fixes #34554 ## Automation /ok-to-test tags="@tag.IDE" ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [x] No <!-- This is an auto-generated comment: Cypress test results --> > [!TIP] > 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉 > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/9869212078> > Commit: 0b685d46ba18bb98e37fde87a96c930172fc5c15 > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9869212078&attempt=1" target="_blank">Cypress dashboard</a>. > Tags: `@tag.IDE` > Spec: > <hr>Wed, 10 Jul 2024 06:47:16 UTC <!-- end of auto-generated comment: Cypress test results --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced a new sidebar component (`IDESidebar`) managing button states and handling interactions. - Added `Condition` enum for better condition management with icons and colors in the sidebar buttons. - **Enhancements** - Improved click handling for sidebar buttons with a new `handleOnClick` function. - **Tests** - Added test cases for `SidebarButton` component to validate different conditions and click behaviors. - **Components** - New React components and interfaces for managing the IDE's sidebar functionality and state. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-07-10 08:52:58 +00:00
import { CodeEditorWithGutterStyles } from "pages/Editor/JSEditor/styledComponents";
import { ViewDisplayMode, ViewHideBehaviour } from "IDE/Interfaces/View";
import { Button } from "@appsmith/ads";
import classNames from "classnames";
feat: Collapsible Bottom View (#33441) ## Description - Creates a new IDE component for `BottomView` that can be either collapsed or closed. - Creates a different view for `EntityTabs` when it is collapsed - Start using the collapsed version for Entity Responses (Query / API / JS) Fixes #33333 Fixes #33336 Fixes #31402 ## Automation /ok-to-test tags="@tag.All" ### :mag: Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!CAUTION] > 🔴 🔴 🔴 Some tests have failed. > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/9175565108> > Commit: 8f3b96eb0b7d18301fb902cddd13755abee38871 > Cypress dashboard: <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9175565108&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail" target="_blank"> Click here!</a> > The following are new failures, please fix them before merging the PR: <ol> > <li>cypress/e2e/Regression/ClientSide/Binding/Button_Text_WithRecaptcha_spec.js > <li>cypress/e2e/Regression/ClientSide/Widgets/Others/IconButton_2_spec.ts </ol> > To know the list of identified flaky tests - <a href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master" target="_blank">Refer here</a> <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [x] Yes - [ ] No
2024-05-22 14:13:07 +00:00
const VIEW_MIN_HEIGHT = 38;
const Container = styled.div<{ displayMode: ViewDisplayMode }>`
${ResizerCSS};
width: 100%;
background-color: var(--ads-v2-color-bg);
border-top: 1px solid var(--ads-v2-color-border);
${(props) => {
switch (props.displayMode) {
case ViewDisplayMode.OVERLAY:
return `
position: absolute;
bottom: 0;
`;
}
}}
`;
const ViewWrapper = styled.div`
height: 100%;
&&& {
ul.ads-v2-tabs__list {
margin: 0 var(--ads-v2-spaces-8);
height: ${VIEW_MIN_HEIGHT}px;
}
}
& {
.ads-v2-tabs__list {
padding: var(--ads-v2-spaces-1) var(--ads-v2-spaces-7);
}
}
& {
.ads-v2-tabs__panel {
${CodeEditorWithGutterStyles};
overflow-y: auto;
height: 100%;
}
}
`;
const MIN_HEIGHT = {
[ViewHideBehaviour.COLLAPSE]: `${VIEW_MIN_HEIGHT}px`,
[ViewHideBehaviour.CLOSE]: "0px",
};
interface Props {
className?: string;
behaviour: ViewHideBehaviour;
displayMode?: ViewDisplayMode;
height: number;
setHeight: (height: number) => void;
hidden: boolean;
onHideClick: () => void;
children: React.ReactNode;
}
const ViewHideButton = styled(Button)`
&.view-hide-button {
position: absolute;
top: 3px;
right: 0;
padding: 9px 11px;
}
`;
interface ViewHideProps {
hideBehaviour: ViewHideBehaviour;
isHidden: boolean;
onToggle: () => void;
}
const ViewHide = (props: ViewHideProps) => {
const [icon, setIcon] = useState(() => {
return props.hideBehaviour === ViewHideBehaviour.CLOSE
? "close-modal"
: "arrow-down-s-line";
});
useEffect(() => {
if (props.hideBehaviour === ViewHideBehaviour.COLLAPSE) {
if (props.isHidden) {
setIcon("arrow-up-s-line");
} else {
setIcon("arrow-down-s-line");
}
}
}, [props.isHidden]);
return (
<ViewHideButton
className="view-hide-button"
data-testid="t--view-hide-button"
isIconButton
kind="tertiary"
onClick={props.onToggle}
size="md"
startIcon={icon}
/>
);
};
const BottomView = (props: Props) => {
const panelRef = useRef<HTMLDivElement>(null);
const { className = "" } = props;
feat: Collapsible Bottom View (#33441) ## Description - Creates a new IDE component for `BottomView` that can be either collapsed or closed. - Creates a different view for `EntityTabs` when it is collapsed - Start using the collapsed version for Entity Responses (Query / API / JS) Fixes #33333 Fixes #33336 Fixes #31402 ## Automation /ok-to-test tags="@tag.All" ### :mag: Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!CAUTION] > 🔴 🔴 🔴 Some tests have failed. > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/9175565108> > Commit: 8f3b96eb0b7d18301fb902cddd13755abee38871 > Cypress dashboard: <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9175565108&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail" target="_blank"> Click here!</a> > The following are new failures, please fix them before merging the PR: <ol> > <li>cypress/e2e/Regression/ClientSide/Binding/Button_Text_WithRecaptcha_spec.js > <li>cypress/e2e/Regression/ClientSide/Widgets/Others/IconButton_2_spec.ts </ol> > To know the list of identified flaky tests - <a href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master" target="_blank">Refer here</a> <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [x] Yes - [ ] No
2024-05-22 14:13:07 +00:00
// Handle the height of the view when toggling the hidden state
useEffect(() => {
const panel = panelRef.current;
chore: add blank line eslint rule (#36369) ## Description Added ESLint rule to force blank lines between statements. Fixes #`Issue Number` _or_ Fixes `Issue URL` > [!WARNING] > _If no issue exists, please create an issue first, and check with the maintainers if the issue is valid._ ## Automation /ok-to-test tags="@tag.All" ### :mag: Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!CAUTION] > 🔴 🔴 🔴 Some tests have failed. > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/10924926728> > Commit: 34f57714a1575ee04e94e03cbcaf95e57a96c86c > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10924926728&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail" target="_blank">Cypress dashboard</a>. > Tags: @tag.All > Spec: > The following are new failures, please fix them before merging the PR: <ol> > <li>cypress/e2e/Regression/ClientSide/Anvil/AnvilModal_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilCheckboxGroupWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilCurrencyInputWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilIconButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilInlineButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilInputWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilParagraphWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilPhoneInputWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilStatsWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilSwitchGroupWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilSwitchWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilTableWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilToolbarButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilZoneSectionWidgetSnapshot_spec.ts</ol> > <a href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master" target="_blank">List of identified flaky tests</a>. > <hr>Wed, 18 Sep 2024 16:33:36 UTC <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [ ] No --------- Co-authored-by: Valera Melnikov <valera@appsmith.com>
2024-09-18 16:35:28 +00:00
feat: Collapsible Bottom View (#33441) ## Description - Creates a new IDE component for `BottomView` that can be either collapsed or closed. - Creates a different view for `EntityTabs` when it is collapsed - Start using the collapsed version for Entity Responses (Query / API / JS) Fixes #33333 Fixes #33336 Fixes #31402 ## Automation /ok-to-test tags="@tag.All" ### :mag: Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!CAUTION] > 🔴 🔴 🔴 Some tests have failed. > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/9175565108> > Commit: 8f3b96eb0b7d18301fb902cddd13755abee38871 > Cypress dashboard: <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9175565108&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail" target="_blank"> Click here!</a> > The following are new failures, please fix them before merging the PR: <ol> > <li>cypress/e2e/Regression/ClientSide/Binding/Button_Text_WithRecaptcha_spec.js > <li>cypress/e2e/Regression/ClientSide/Widgets/Others/IconButton_2_spec.ts </ol> > To know the list of identified flaky tests - <a href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master" target="_blank">Refer here</a> <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [x] Yes - [ ] No
2024-05-22 14:13:07 +00:00
if (!panel) return;
chore: add blank line eslint rule (#36369) ## Description Added ESLint rule to force blank lines between statements. Fixes #`Issue Number` _or_ Fixes `Issue URL` > [!WARNING] > _If no issue exists, please create an issue first, and check with the maintainers if the issue is valid._ ## Automation /ok-to-test tags="@tag.All" ### :mag: Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!CAUTION] > 🔴 🔴 🔴 Some tests have failed. > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/10924926728> > Commit: 34f57714a1575ee04e94e03cbcaf95e57a96c86c > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10924926728&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail" target="_blank">Cypress dashboard</a>. > Tags: @tag.All > Spec: > The following are new failures, please fix them before merging the PR: <ol> > <li>cypress/e2e/Regression/ClientSide/Anvil/AnvilModal_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilCheckboxGroupWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilCurrencyInputWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilIconButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilInlineButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilInputWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilParagraphWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilPhoneInputWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilStatsWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilSwitchGroupWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilSwitchWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilTableWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilToolbarButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilZoneSectionWidgetSnapshot_spec.ts</ol> > <a href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master" target="_blank">List of identified flaky tests</a>. > <hr>Wed, 18 Sep 2024 16:33:36 UTC <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [ ] No --------- Co-authored-by: Valera Melnikov <valera@appsmith.com>
2024-09-18 16:35:28 +00:00
feat: Collapsible Bottom View (#33441) ## Description - Creates a new IDE component for `BottomView` that can be either collapsed or closed. - Creates a different view for `EntityTabs` when it is collapsed - Start using the collapsed version for Entity Responses (Query / API / JS) Fixes #33333 Fixes #33336 Fixes #31402 ## Automation /ok-to-test tags="@tag.All" ### :mag: Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!CAUTION] > 🔴 🔴 🔴 Some tests have failed. > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/9175565108> > Commit: 8f3b96eb0b7d18301fb902cddd13755abee38871 > Cypress dashboard: <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9175565108&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail" target="_blank"> Click here!</a> > The following are new failures, please fix them before merging the PR: <ol> > <li>cypress/e2e/Regression/ClientSide/Binding/Button_Text_WithRecaptcha_spec.js > <li>cypress/e2e/Regression/ClientSide/Widgets/Others/IconButton_2_spec.ts </ol> > To know the list of identified flaky tests - <a href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master" target="_blank">Refer here</a> <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [x] Yes - [ ] No
2024-05-22 14:13:07 +00:00
if (props.hidden) {
panel.style.height = MIN_HEIGHT[props.behaviour];
} else {
panel.style.height = `${props.height}px`;
}
}, [props.hidden, props.behaviour]);
return (
<Container
className={classNames("select-text", {
[className]: true,
"t--ide-bottom-view": !props.hidden,
})}
feat: Collapsible Bottom View (#33441) ## Description - Creates a new IDE component for `BottomView` that can be either collapsed or closed. - Creates a different view for `EntityTabs` when it is collapsed - Start using the collapsed version for Entity Responses (Query / API / JS) Fixes #33333 Fixes #33336 Fixes #31402 ## Automation /ok-to-test tags="@tag.All" ### :mag: Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!CAUTION] > 🔴 🔴 🔴 Some tests have failed. > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/9175565108> > Commit: 8f3b96eb0b7d18301fb902cddd13755abee38871 > Cypress dashboard: <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9175565108&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail" target="_blank"> Click here!</a> > The following are new failures, please fix them before merging the PR: <ol> > <li>cypress/e2e/Regression/ClientSide/Binding/Button_Text_WithRecaptcha_spec.js > <li>cypress/e2e/Regression/ClientSide/Widgets/Others/IconButton_2_spec.ts </ol> > To know the list of identified flaky tests - <a href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master" target="_blank">Refer here</a> <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [x] Yes - [ ] No
2024-05-22 14:13:07 +00:00
displayMode={props.displayMode || ViewDisplayMode.BLOCK}
ref={panelRef}
>
{!props.hidden && (
<Resizer
initialHeight={props.height}
minHeight={VIEW_MIN_HEIGHT + 50}
onResizeComplete={props.setHeight}
panelRef={panelRef}
/>
)}
<ViewWrapper>
{props.children}
<ViewHide
hideBehaviour={props.behaviour}
isHidden={props.hidden}
onToggle={props.onHideClick}
/>
</ViewWrapper>
</Container>
);
};
export default BottomView;