PromucFlow_constructor/app/client/src/components/editorComponents/EntityBottomTabs.tsx
Hetu Nandu fb0472d241
chore: show suggested widgets in response (#31008)
## Description

Show the Suggested widgets panel in the response pane in the bottom
instead of the right side.

This will greatly simplify the Query and Api screens.

- Removes functionality of suggested widgets from the right pane context
- Only renders the right pane if `additionalSections` is passed
- Adds a new Bind Data button in the Response Pane 
- OnClick of button, a menu with suggested widget bindings show up



#### PR fixes following issue(s)
Fixes #30968

#### Media




https://github.com/appsmithorg/appsmith/assets/12022471/20e239ad-dea4-4755-b199-4f0920ae1d46


#### Type of change


- New feature (non-breaking change which adds functionality)
- This change requires a documentation update

## Testing

#### How Has This Been Tested?
> Please describe the tests that you ran to verify your changes. Also
list any relevant details for your test configuration.
> Delete anything that is not relevant
- [ ] Manual
- [ ] JUnit
- [ ] Jest
- [x] Cypress
>
>
#### Test Plan
> Add Testsmith test cases links that relate to this PR
>
>
#### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)
>
>
>
## Checklist:
#### Dev activity
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag


#### QA activity:
- [ ] [Speedbreak
features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-)
have been covered
- [ ] Test plan covers all impacted features and [areas of
interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-)
- [ ] Test plan has been peer reviewed by project stakeholders and other
QA members
- [ ] Manually tested functionality on DP
- [ ] We had an implementation alignment call with stakeholders post QA
Round 2
- [ ] Cypress test cases have been added and approved by SDET/manual QA
- [ ] Added `Test Plan Approved` label after Cypress tests were reviewed
- [ ] Added `Test Plan Approved` label after JUnit tests were reviewed


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit


## Summary by CodeRabbit

- **New Features**
- Introduced a new `BindDataButton` component for easier data binding to
widgets in the visual editor.
- Updated UI elements and interactions in the API and Query editors for
improved usability.
- Added an import statement for `Widgets` from the `DataSources` module.
- Changed the method call from clicking on a suggested table widget to
adding a suggested widget of type `Table`.

- **Refactor**
- Simplified and streamlined the `ActionRightPane` component by removing
outdated functionalities.
- Adjusted UI components and layouts across various editor components
for better consistency and usability.

- **Bug Fixes**
- Fixed text inconsistency in the `CONNECT_EXISTING_WIDGET_LABEL`
constant.
- Removed unnecessary `useEffect` hook in the `EntityBottomTabs`
component to improve performance.

- **Chores**
- Removed deprecated code and unused imports across several files to
clean up the codebase.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-02-13 13:52:04 +05:30

88 lines
2.2 KiB
TypeScript

import React from "react";
import type { CollapsibleTabProps } from "design-system-old";
import AnalyticsUtil from "utils/AnalyticsUtil";
import { DEBUGGER_TAB_KEYS } from "./Debugger/helpers";
import { Tab, TabPanel, Tabs, TabsList } from "design-system";
import styled from "styled-components";
import { LIST_HEADER_HEIGHT } from "./Debugger/DebuggerLogs";
const TabPanelWrapper = styled(TabPanel)`
margin-top: 0;
height: calc(100% - ${LIST_HEADER_HEIGHT});
&.ads-v2-tabs__panel {
overflow: auto;
}
`;
const TabsListWrapper = styled(TabsList)`
padding: calc(var(--ads-v2-spaces-1) + 2px) var(--ads-v2-spaces-7)
var(--ads-v2-spaces-1);
`;
export interface BottomTab {
key: string;
title: string;
count?: number;
panelComponent: React.ReactNode;
}
interface EntityBottomTabsProps {
className?: string;
tabs: Array<BottomTab>;
onSelect?: (tab: string) => void;
selectedTabKey: string;
}
type CollapsibleEntityBottomTabsProps = EntityBottomTabsProps &
CollapsibleTabProps;
// Using this if there are debugger related tabs
function EntityBottomTabs(
props: EntityBottomTabsProps | CollapsibleEntityBottomTabsProps,
) {
const onTabSelect = (key: string) => {
const tab = props.tabs.find((tab) => tab.key === key);
if (tab) {
props.onSelect && props.onSelect(tab.key);
if (Object.values<string>(DEBUGGER_TAB_KEYS).includes(tab.key)) {
AnalyticsUtil.logEvent("DEBUGGER_TAB_SWITCH", {
tabName: tab.key,
});
}
}
};
return (
<Tabs
className="h-full"
defaultValue={props.selectedTabKey}
onValueChange={onTabSelect}
value={props.selectedTabKey}
>
<TabsListWrapper>
{props.tabs.map((tab) => {
return (
<Tab
data-testid={"t--tab-" + tab.key}
id={`debugger-tab-${tab.key}`}
key={tab.key}
notificationCount={tab.count}
value={tab.key}
>
{tab.title}
</Tab>
);
})}
</TabsListWrapper>
{props.tabs.map((tab) => (
<TabPanelWrapper key={tab.key} value={tab.key}>
{tab.panelComponent}
</TabPanelWrapper>
))}
</Tabs>
);
}
export default EntityBottomTabs;