From c85a7079eb28e81f7bea2e1f14acd034bcebb51b Mon Sep 17 00:00:00 2001 From: jeffvli Date: Thu, 18 May 2023 02:15:03 -0700 Subject: [PATCH] Add handlers to open command palette --- .../features/sidebar/components/action-bar.tsx | 13 ++++++++++--- .../sidebar/components/collapsed-sidebar.tsx | 11 ++++++++++- src/renderer/layouts/default-layout.tsx | 14 +++++++++++++- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/renderer/features/sidebar/components/action-bar.tsx b/src/renderer/features/sidebar/components/action-bar.tsx index 2cd7e03c..c9f4794a 100644 --- a/src/renderer/features/sidebar/components/action-bar.tsx +++ b/src/renderer/features/sidebar/components/action-bar.tsx @@ -1,10 +1,11 @@ -import { Grid, Group, TextInput } from '@mantine/core'; +import { Grid, Group } from '@mantine/core'; import { RiSearchLine, RiMenuFill, RiArrowLeftSLine, RiArrowRightSLine } from 'react-icons/ri'; import { useNavigate } from 'react-router'; import styled from 'styled-components'; -import { Button, DropdownMenu } from '/@/renderer/components'; +import { Button, DropdownMenu, TextInput } from '/@/renderer/components'; import { AppMenu } from '/@/renderer/features/titlebar/components/app-menu'; import { useContainerQuery } from '/@/renderer/hooks'; +import { useCommandPalette } from '/@/renderer/store'; const ActionsContainer = styled(Grid)` display: flex; @@ -21,6 +22,7 @@ const ActionsContainer = styled(Grid)` export const ActionBar = () => { const cq = useContainerQuery({ sm: 300 }); const navigate = useNavigate(); + const { open } = useCommandPalette(); return ( { > } placeholder="Search" size="md" + onClick={open} + onKeyDown={(e) => { + if (e.key === 'Enter' || e.key === ' ') { + open(); + } + }} /> diff --git a/src/renderer/features/sidebar/components/collapsed-sidebar.tsx b/src/renderer/features/sidebar/components/collapsed-sidebar.tsx index 2f7d6462..3026dc8a 100644 --- a/src/renderer/features/sidebar/components/collapsed-sidebar.tsx +++ b/src/renderer/features/sidebar/components/collapsed-sidebar.tsx @@ -16,6 +16,8 @@ import { RiFlag2Fill, RiFolder3Fill, RiPlayListFill, + RiSearchLine, + RiSearchFill, } from 'react-icons/ri'; import { useLocation } from 'react-router'; import { Link } from 'react-router-dom'; @@ -24,7 +26,7 @@ import { DropdownMenu, ScrollArea } from '/@/renderer/components'; import { CollapsedSidebarItem } from '/@/renderer/features/sidebar/components/collapsed-sidebar-item'; import { AppMenu } from '/@/renderer/features/titlebar/components/app-menu'; import { AppRoute } from '/@/renderer/router/routes'; -import { useWindowSettings } from '/@/renderer/store'; +import { useCommandPalette, useWindowSettings } from '/@/renderer/store'; import { Platform } from '/@/renderer/types'; const SidebarContainer = styled(motion.div)<{ windowBarStyle: Platform }>` @@ -41,6 +43,7 @@ const SidebarContainer = styled(motion.div)<{ windowBarStyle: Platform }>` export const CollapsedSidebar = () => { const location = useLocation(); const { windowBarStyle } = useWindowSettings(); + const { open } = useCommandPalette(); return ( @@ -61,6 +64,12 @@ export const CollapsedSidebar = () => { + } + icon={} + label="Search" + onClick={open} + /> } diff --git a/src/renderer/layouts/default-layout.tsx b/src/renderer/layouts/default-layout.tsx index 23abd04b..caf076d7 100644 --- a/src/renderer/layouts/default-layout.tsx +++ b/src/renderer/layouts/default-layout.tsx @@ -1,10 +1,17 @@ import { lazy } from 'react'; import isElectron from 'is-electron'; import styled from 'styled-components'; -import { useWindowSettings, useSettingsStore } from '/@/renderer/store/settings.store'; +import { + useWindowSettings, + useSettingsStore, + useHotkeySettings, +} from '/@/renderer/store/settings.store'; import { Platform, PlaybackType } from '/@/renderer/types'; import { MainContent } from '/@/renderer/layouts/default-layout/main-content'; import { PlayerBar } from '/@/renderer/layouts/default-layout/player-bar'; +import { useHotkeys } from '@mantine/hooks'; +import { CommandPalette } from '/@/renderer/features/search/components/command-palette'; +import { useCommandPalette } from '/@/renderer/store'; if (!isElectron()) { useSettingsStore.getState().actions.setSettings({ @@ -42,6 +49,10 @@ interface DefaultLayoutProps { export const DefaultLayout = ({ shell }: DefaultLayoutProps) => { const { windowBarStyle } = useWindowSettings(); + const { opened, ...handlers } = useCommandPalette(); + const { bindings } = useHotkeySettings(); + + useHotkeys([[bindings.globalSearch.hotkey, () => handlers.open()]]); return ( <> @@ -53,6 +64,7 @@ export const DefaultLayout = ({ shell }: DefaultLayoutProps) => { + ); };