From 597e075511908f2a1cedea19fac825e095a9315a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?nicole=20miko=C5=82ajczyk?= Date: Sat, 13 Sep 2025 13:18:20 +0200 Subject: [PATCH] pl-fe: add keyboard shortcuts link to sidebar navigation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: nicole mikołajczyk --- .../dropdown-menu/dropdown-menu.tsx | 15 ++++++---- .../src/components/sidebar-navigation.tsx | 28 ++++++++++++++++++- .../compose/components/privacy-dropdown.tsx | 2 +- packages/pl-fe/src/locales/en.json | 2 ++ 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/packages/pl-fe/src/components/dropdown-menu/dropdown-menu.tsx b/packages/pl-fe/src/components/dropdown-menu/dropdown-menu.tsx index d55ba6e1a..56942b962 100644 --- a/packages/pl-fe/src/components/dropdown-menu/dropdown-menu.tsx +++ b/packages/pl-fe/src/components/dropdown-menu/dropdown-menu.tsx @@ -25,6 +25,7 @@ interface IDropdownMenuContent { items?: Menu; component?: React.FC<{ handleClose: () => any }>; touchscreen?: boolean; + width?: React.CSSProperties['width']; } interface IDropdownMenu { @@ -38,11 +39,14 @@ interface IDropdownMenu { placement?: Placement; src?: string; title?: string; + width?: React.CSSProperties['width']; } const listenerOptions = supportsPassiveEvents ? { passive: true } : false; -const DropdownMenuContent: React.FC = ({ handleClose, items, component: Component, touchscreen }) => { +const DropdownMenuContent: React.FC = ({ handleClose, items, component: Component, touchscreen, width }) => { + if (touchscreen) width = undefined; + const intl = useIntl(); const [tab, setTab] = useState(); @@ -149,12 +153,12 @@ const DropdownMenuContent: React.FC = ({ handleClose, item return (
{items?.some(item => item?.items?.length) ? ( - -
+ +
{Component && } {(items?.length || touchscreen) && renderItems(items)}
-
+
{tab !== undefined && ( <> @@ -195,6 +199,7 @@ const DropdownMenu = (props: IDropdownMenu) => { placement: initialPlacement = 'top', src = require('@tabler/icons/outline/dots.svg'), title = 'Menu', + width, } = props; const { openDropdownMenu, closeDropdownMenu } = useUiStore(); @@ -381,7 +386,7 @@ const DropdownMenu = (props: IDropdownMenu) => { }} >
- + {/* Arrow */}
= React.memo(({ shrink }) => { const intl = useIntl(); const { unreadChatsCount } = useStatContext(); + const { openModal } = useModalsStore(); const instance = useInstance(); const features = useFeatures(); @@ -166,6 +172,26 @@ const SidebarNavigation: React.FC = React.memo(({ shrink }) count: draftCount, }); } + + menu.push(null); + + menu.push({ + icon: require('@tabler/icons/outline/help-circle.svg'), + text: intl.formatMessage(messages.help), + items: [ + { + action: () => openModal('HOTKEYS'), + icon: require('@tabler/icons/outline/keyboard.svg'), + text: intl.formatMessage(messages.keyboardShortcuts), + }, + { + href: sourceCode.url, + target: '_blank', + icon: require('@tabler/icons/outline/code.svg'), + text: intl.formatMessage(messages.sourceCode), + }, + ], + }); } return menu; @@ -326,7 +352,7 @@ const SidebarNavigation: React.FC = React.memo(({ shrink }) )} {menu.length > 0 && ( - + } diff --git a/packages/pl-fe/src/features/compose/components/privacy-dropdown.tsx b/packages/pl-fe/src/features/compose/components/privacy-dropdown.tsx index 013a9b89a..d222f8b45 100644 --- a/packages/pl-fe/src/features/compose/components/privacy-dropdown.tsx +++ b/packages/pl-fe/src/features/compose/components/privacy-dropdown.tsx @@ -164,7 +164,7 @@ const PrivacyDropdown: React.FC = ({ } return ( - +