-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Overflow tabs list view (#34150)
## Description This PR implements the new design for the list view. Fixes #33432 ## Automation /ok-to-test tags="@tag.Sanity, @tag.IDE" ### 🔍 Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!TIP] > 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉 > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/9660135881> > Commit: fb8addb > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9660135881&attempt=1" target="_blank">Cypress dashboard</a>. > Tags: `@tag.Sanity, @tag.IDE` <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [x] No <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced `AddTab` component to add new JavaScript or Query tabs. - Added `ScreenModeToggle` for switching between full-screen and split-screen modes. - Added `FileTab` component for improved tab interactions. - Introduced `List` component for conditional rendering based on editor state. - **Bug Fixes** - Corrected test assertions and tab names in `JSRender.test.tsx` and `QueryRender.test.tsx`. - Fixed tab closure and interaction flow in `IDE_Add_Pane_Interactions_spec.ts`. - **Refactor** - Simplified selector functions and updated component imports for better readability and performance. - **Tests** - Updated tests to include `currentEntity` props and use `sanitizeString` for tab titles. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
- Loading branch information
1 parent
d0c2d40
commit 519b53e
Showing
25 changed files
with
492 additions
and
376 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
import React from "react"; | ||
import styled from "styled-components"; | ||
import clsx from "classnames"; | ||
|
||
import { Flex, Icon } from "design-system"; | ||
import { sanitizeString } from "utils/URLUtils"; | ||
|
||
interface FileTabProps { | ||
isActive: boolean; | ||
title: string; | ||
onClick: () => void; | ||
onClose: (e: React.MouseEvent) => void; | ||
icon?: React.ReactNode; | ||
} | ||
|
||
export const StyledTab = styled(Flex)` | ||
position: relative; | ||
height: 100%; | ||
font-size: 12px; | ||
color: var(--ads-v2-colors-text-default); | ||
cursor: pointer; | ||
gap: var(--ads-v2-spaces-2); | ||
border-top: 1px solid transparent; | ||
border-top-left-radius: var(--ads-v2-border-radius); | ||
border-top-right-radius: var(--ads-v2-border-radius); | ||
align-items: center; | ||
justify-content: center; | ||
padding: var(--ads-v2-spaces-3); | ||
border-left: 1px solid transparent; | ||
border-right: 1px solid transparent; | ||
border-top: 2px solid transparent; | ||
&.active { | ||
background: var(--ads-v2-colors-control-field-default-bg); | ||
border-top-color: var(--ads-v2-color-bg-brand); | ||
border-left-color: var(--ads-v2-color-border-muted); | ||
border-right-color: var(--ads-v2-color-border-muted); | ||
} | ||
& > .tab-close { | ||
position: relative; | ||
right: -2px; | ||
visibility: hidden; | ||
} | ||
&:hover > .tab-close { | ||
visibility: visible; | ||
} | ||
&.active > .tab-close { | ||
visibility: visible; | ||
} | ||
`; | ||
|
||
export const TabTextContainer = styled.span` | ||
width: 100%; | ||
text-overflow: ellipsis; | ||
white-space: nowrap; | ||
overflow: hidden; | ||
`; | ||
|
||
export const TabIconContainer = styled.div` | ||
height: 12px; | ||
width: 12px; | ||
display: flex; | ||
align-items: center; | ||
justify-content: center; | ||
flex-shrink: 0; | ||
img { | ||
width: 12px; | ||
} | ||
`; | ||
|
||
export const FileTab = ({ | ||
icon, | ||
isActive, | ||
onClick, | ||
onClose, | ||
title, | ||
}: FileTabProps) => { | ||
return ( | ||
<StyledTab | ||
className={clsx("editor-tab", isActive && "active")} | ||
data-testid={`t--ide-tab-${sanitizeString(title)}`} | ||
onClick={onClick} | ||
> | ||
{icon ? <TabIconContainer>{icon}</TabIconContainer> : null} | ||
<TabTextContainer>{title}</TabTextContainer> | ||
{/* not using button component because of the size not matching design */} | ||
<Icon | ||
className="tab-close rounded-[4px] hover:bg-[var(--ads-v2-colors-action-tertiary-surface-hover-bg)] cursor-pointer p-[2px]" | ||
data-testid="t--tab-close-btn" | ||
name="close-line" | ||
onClick={onClose} | ||
/> | ||
</StyledTab> | ||
); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.