From 49d9153f723f9288af74f3ad11031334f791d040 Mon Sep 17 00:00:00 2001 From: Nate Kelley Date: Mon, 21 Apr 2025 14:42:48 -0600 Subject: [PATCH] external dropdown links --- .../sidebars/SidebarUserFooter/SidebarUserFooter.tsx | 1 + web/src/components/ui/dropdown/Dropdown.tsx | 8 +++++++- web/src/components/ui/dropdown/DropdownBase.tsx | 7 +++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/web/src/components/features/sidebars/SidebarUserFooter/SidebarUserFooter.tsx b/web/src/components/features/sidebars/SidebarUserFooter/SidebarUserFooter.tsx index 17b9e8789..fa957faff 100644 --- a/web/src/components/features/sidebars/SidebarUserFooter/SidebarUserFooter.tsx +++ b/web/src/components/features/sidebars/SidebarUserFooter/SidebarUserFooter.tsx @@ -77,6 +77,7 @@ const SidebarUserDropdown: React.FC<{ label: 'Docs', value: 'docs', link: BUSTER_DOCS_URL, + linkIcon: 'arrow-external', icon: }, { diff --git a/web/src/components/ui/dropdown/Dropdown.tsx b/web/src/components/ui/dropdown/Dropdown.tsx index b824190f0..0c32600c5 100644 --- a/web/src/components/ui/dropdown/Dropdown.tsx +++ b/web/src/components/ui/dropdown/Dropdown.tsx @@ -41,6 +41,7 @@ export interface DropdownItem { selected?: boolean; items?: DropdownItems; link?: string; + linkTarget?: '_blank' | '_self'; linkIcon?: 'arrow-right' | 'arrow-external' | 'caret-right'; } @@ -408,8 +409,13 @@ const DropdownItem = ({ // Wrap with Link if needed if (!isSelectable && link) { + const isExternal = link.startsWith('http'); + return ( - + {content} ); diff --git a/web/src/components/ui/dropdown/DropdownBase.tsx b/web/src/components/ui/dropdown/DropdownBase.tsx index 78487592c..1974a6c11 100644 --- a/web/src/components/ui/dropdown/DropdownBase.tsx +++ b/web/src/components/ui/dropdown/DropdownBase.tsx @@ -237,7 +237,8 @@ const DropdownMenuLink: React.FC<{ className?: string; link: string | null; linkIcon?: 'arrow-right' | 'arrow-external' | 'caret-right'; -}> = ({ className, link, linkIcon = 'arrow-external', ...props }) => { + linkTarget?: '_blank' | '_self'; +}> = ({ className, link, linkTarget, linkIcon = 'arrow-right', ...props }) => { const icon = React.useMemo(() => { if (linkIcon === 'arrow-right') return ; if (linkIcon === 'arrow-external') return ; @@ -263,9 +264,11 @@ const DropdownMenuLink: React.FC<{ ); + console.log(link, isExternal, linkTarget); + return ( e.stopPropagation()}> - + {content}