From 678dff25eddfc43319299495556ab9f6029bc719 Mon Sep 17 00:00:00 2001 From: David Luzar <5153846+dwelle@users.noreply.github.com> Date: Tue, 15 Jul 2025 12:59:55 +0200 Subject: [PATCH] fix: ellipsify MainMenu and CommandPalette items (#9743) * fix: ellipsify MainMenu and CommandPalette items * fix lint --- .../CommandPalette/CommandPalette.scss | 1 + .../CommandPalette/CommandPalette.tsx | 4 +- packages/excalidraw/components/Ellipsify.tsx | 18 +++++ packages/excalidraw/components/InlineIcon.tsx | 1 + .../components/dropdownMenu/DropdownMenu.scss | 3 + .../dropdownMenu/DropdownMenuItemContent.tsx | 4 +- packages/excalidraw/index.tsx | 1 + .../__snapshots__/excalidraw.test.tsx.snap | 78 +++++++++++++++---- 8 files changed, 95 insertions(+), 15 deletions(-) create mode 100644 packages/excalidraw/components/Ellipsify.tsx diff --git a/packages/excalidraw/components/CommandPalette/CommandPalette.scss b/packages/excalidraw/components/CommandPalette/CommandPalette.scss index ebb7e4fa5e..90db95db69 100644 --- a/packages/excalidraw/components/CommandPalette/CommandPalette.scss +++ b/packages/excalidraw/components/CommandPalette/CommandPalette.scss @@ -108,6 +108,7 @@ $verticalBreakpoint: 861px; display: flex; align-items: center; gap: 0.25rem; + overflow: hidden; } } diff --git a/packages/excalidraw/components/CommandPalette/CommandPalette.tsx b/packages/excalidraw/components/CommandPalette/CommandPalette.tsx index 740fa01620..3c6f110d27 100644 --- a/packages/excalidraw/components/CommandPalette/CommandPalette.tsx +++ b/packages/excalidraw/components/CommandPalette/CommandPalette.tsx @@ -59,6 +59,8 @@ import { useStableCallback } from "../../hooks/useStableCallback"; import { activeConfirmDialogAtom } from "../ActiveConfirmDialog"; import { useStable } from "../../hooks/useStable"; +import { Ellipsify } from "../Ellipsify"; + import * as defaultItems from "./defaultCommandPaletteItems"; import "./CommandPalette.scss"; @@ -964,7 +966,7 @@ const CommandItem = ({ } /> )} - {command.label} + {command.label} {showShortcut && command.shortcut && ( diff --git a/packages/excalidraw/components/Ellipsify.tsx b/packages/excalidraw/components/Ellipsify.tsx new file mode 100644 index 0000000000..dd21af6f15 --- /dev/null +++ b/packages/excalidraw/components/Ellipsify.tsx @@ -0,0 +1,18 @@ +export const Ellipsify = ({ + children, + ...rest +}: { children: React.ReactNode } & React.HTMLAttributes) => { + return ( + + {children} + + ); +}; diff --git a/packages/excalidraw/components/InlineIcon.tsx b/packages/excalidraw/components/InlineIcon.tsx index 75cc29d08d..c80045e5e8 100644 --- a/packages/excalidraw/components/InlineIcon.tsx +++ b/packages/excalidraw/components/InlineIcon.tsx @@ -7,6 +7,7 @@ export const InlineIcon = ({ icon }: { icon: React.ReactNode }) => { display: "inline-block", lineHeight: 0, verticalAlign: "middle", + flex: "0 0 auto", }} > {icon} diff --git a/packages/excalidraw/components/dropdownMenu/DropdownMenu.scss b/packages/excalidraw/components/dropdownMenu/DropdownMenu.scss index e48f6d71e7..95d258c46b 100644 --- a/packages/excalidraw/components/dropdownMenu/DropdownMenu.scss +++ b/packages/excalidraw/components/dropdownMenu/DropdownMenu.scss @@ -19,6 +19,8 @@ border-radius: var(--border-radius-lg); position: relative; transition: box-shadow 0.5s ease-in-out; + display: flex; + flex-direction: column; &.zen-mode { box-shadow: none; @@ -100,6 +102,7 @@ align-items: center; cursor: pointer; border-radius: var(--border-radius-md); + flex: 1 0 auto; @media screen and (min-width: 1921px) { height: 2.25rem; diff --git a/packages/excalidraw/components/dropdownMenu/DropdownMenuItemContent.tsx b/packages/excalidraw/components/dropdownMenu/DropdownMenuItemContent.tsx index b2f9e7e0a9..aea13230b8 100644 --- a/packages/excalidraw/components/dropdownMenu/DropdownMenuItemContent.tsx +++ b/packages/excalidraw/components/dropdownMenu/DropdownMenuItemContent.tsx @@ -1,5 +1,7 @@ import { useDevice } from "../App"; +import { Ellipsify } from "../Ellipsify"; + import type { JSX } from "react"; const MenuItemContent = ({ @@ -18,7 +20,7 @@ const MenuItemContent = ({ <> {icon &&
{icon}
}
- {children} + {children}
{shortcut && !device.editor.isMobile && (
{shortcut}
diff --git a/packages/excalidraw/index.tsx b/packages/excalidraw/index.tsx index 478ecc42f0..a592e2ea91 100644 --- a/packages/excalidraw/index.tsx +++ b/packages/excalidraw/index.tsx @@ -281,6 +281,7 @@ export { Sidebar } from "./components/Sidebar/Sidebar"; export { Button } from "./components/Button"; export { Footer }; export { MainMenu }; +export { Ellipsify } from "./components/Ellipsify"; export { useDevice } from "./components/App"; export { WelcomeScreen }; export { LiveCollaborationTrigger }; diff --git a/packages/excalidraw/tests/__snapshots__/excalidraw.test.tsx.snap b/packages/excalidraw/tests/__snapshots__/excalidraw.test.tsx.snap index bb87746c0d..ae4728e0c7 100644 --- a/packages/excalidraw/tests/__snapshots__/excalidraw.test.tsx.snap +++ b/packages/excalidraw/tests/__snapshots__/excalidraw.test.tsx.snap @@ -15,7 +15,11 @@ exports[` > > should render main menu with host menu it > > should render main menu with host menu it
> > should render main menu with host menu it