-
Notifications
You must be signed in to change notification settings - Fork 3.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: added an ads entity context menu template component (#39358)
## Description Extracted EntityContextMenu, used in EntityItems, into ADS templates. Fixes #39355 ## Automation /ok-to-test tags="@tag.Sanity" ### 🔍 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/13408405832> > Commit: 7296773 > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=13408405832&attempt=1" target="_blank">Cypress dashboard</a>. > Tags: `@tag.Sanity` > Spec: > <hr>Wed, 19 Feb 2025 09:11:12 UTC <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [ ] No <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced an interactive context menu component featuring options such as Rename, Copy, and Delete with a tooltip display. - Added a demonstration story to preview the new component in an interactive development environment. - Enhanced styling to provide a refined and consistent user interface for the context menu. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
- Loading branch information
1 parent
8d4f616
commit 0fdac20
Showing
9 changed files
with
118 additions
and
6 deletions.
There are no files selected for viewing
34 changes: 34 additions & 0 deletions
34
.../packages/design-system/ads/src/Templates/EntityContextMenu/EntityContextMenu.stories.tsx
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,34 @@ | ||
/* eslint-disable no-console */ | ||
import React from "react"; | ||
import type { Meta, StoryObj } from "@storybook/react"; | ||
|
||
import { MenuItem } from "../../Menu"; | ||
import { EntityContextMenu } from "./EntityContextMenu"; | ||
|
||
const meta: Meta<typeof EntityContextMenu> = { | ||
title: "ADS/Templates/Entity Context Menu", | ||
component: EntityContextMenu, | ||
}; | ||
|
||
export default meta; | ||
|
||
type Story = StoryObj<typeof EntityContextMenu>; | ||
|
||
export const Basic: Story = { | ||
args: { | ||
tooltipContent: "More actions", | ||
children: ( | ||
<> | ||
<MenuItem onClick={console.log} startIcon="edit-line"> | ||
Rename | ||
</MenuItem> | ||
<MenuItem onClick={console.log} startIcon="copy-control"> | ||
Copy | ||
</MenuItem> | ||
<MenuItem onClick={console.log} startIcon="delete"> | ||
Delete | ||
</MenuItem> | ||
</> | ||
), | ||
}, | ||
}; |
12 changes: 12 additions & 0 deletions
12
...nt/packages/design-system/ads/src/Templates/EntityContextMenu/EntityContextMenu.styles.ts
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,12 @@ | ||
import styled from "styled-components"; | ||
|
||
import { MenuContent as ADSMenuContent } from "../../Menu"; | ||
|
||
export const MenuContent = styled(ADSMenuContent)` | ||
width: 220px; | ||
max-height: unset; | ||
`; | ||
|
||
export const ButtonContainer = styled.div` | ||
position: relative; | ||
`; |
60 changes: 60 additions & 0 deletions
60
app/client/packages/design-system/ads/src/Templates/EntityContextMenu/EntityContextMenu.tsx
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,60 @@ | ||
import React from "react"; | ||
import { useToggle } from "usehooks-ts"; | ||
|
||
import { Button } from "../../Button"; | ||
import { Menu, MenuTrigger } from "../../Menu"; | ||
import { Tooltip } from "../../Tooltip"; | ||
|
||
import { | ||
EntityClassNames, | ||
DEFAULT_DATA_TEST_ID, | ||
DEFAULT_TOOLTIP_CONTENT, | ||
} from "./constants"; | ||
|
||
import * as Styled from "./EntityContextMenu.styles"; | ||
|
||
interface Props { | ||
dataTestid?: string; | ||
children?: React.ReactNode[] | React.ReactNode; | ||
tooltipContent?: React.ReactNode; | ||
} | ||
|
||
export const EntityContextMenu = (props: Props) => { | ||
const { | ||
children, | ||
dataTestid = DEFAULT_DATA_TEST_ID, | ||
tooltipContent = DEFAULT_TOOLTIP_CONTENT, | ||
} = props; | ||
|
||
const [isMenuOpen, toggleMenuOpen] = useToggle(); | ||
|
||
return ( | ||
<Menu onOpenChange={toggleMenuOpen} open={isMenuOpen}> | ||
<MenuTrigger className="t--context-menu"> | ||
<Styled.ButtonContainer> | ||
<Tooltip | ||
content={tooltipContent} | ||
isDisabled={isMenuOpen} | ||
mouseLeaveDelay={0} | ||
placement="right" | ||
> | ||
<Button | ||
className={EntityClassNames.CONTEXT_MENU} | ||
data-testid={dataTestid} | ||
isIconButton | ||
kind="tertiary" | ||
startIcon="more-2-fill" | ||
/> | ||
</Tooltip> | ||
</Styled.ButtonContainer> | ||
</MenuTrigger> | ||
<Styled.MenuContent | ||
align="start" | ||
className={`t--entity-context-menu ${EntityClassNames.CONTEXT_MENU_CONTENT}`} | ||
side="right" | ||
> | ||
{children} | ||
</Styled.MenuContent> | ||
</Menu> | ||
); | ||
}; |
7 changes: 7 additions & 0 deletions
7
app/client/packages/design-system/ads/src/Templates/EntityContextMenu/constants.ts
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,7 @@ | ||
export enum EntityClassNames { | ||
CONTEXT_MENU = "entity-context-menu", | ||
CONTEXT_MENU_CONTENT = "entity-context-menu-content", | ||
} | ||
|
||
export const DEFAULT_DATA_TEST_ID = "t--more-action-trigger"; | ||
export const DEFAULT_TOOLTIP_CONTENT = "More actions"; |
1 change: 1 addition & 0 deletions
1
app/client/packages/design-system/ads/src/Templates/EntityContextMenu/index.ts
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 @@ | ||
export { EntityContextMenu } from "./EntityContextMenu"; |
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