Skip to content

Commit c2af834

Browse files
Fix search shortcut in Windows (#1124)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
1 parent 83ca23a commit c2af834

File tree

3 files changed

+27
-16
lines changed

3 files changed

+27
-16
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"@solid-primitives/event-listener": "^2.3.3",
2626
"@solid-primitives/marker": "^0.1.0",
2727
"@solid-primitives/media": "^2.2.9",
28+
"@solid-primitives/platform": "^0.2.0",
2829
"@solidjs/meta": "^0.29.4",
2930
"@solidjs/router": "^0.15.3",
3031
"@solidjs/start": "^1.1.1",

pnpm-lock.yaml

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ui/search.tsx

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@ import {
66
For,
77
Suspense,
88
startTransition,
9-
onCleanup,
109
createMemo,
1110
} from "solid-js";
1211
import { Dialog } from "@kobalte/core/dialog";
1312
import { A, createAsync, useNavigate, usePreloadRoute } from "@solidjs/router";
1413
import { createList } from "solid-list";
1514
import { createMarker, makeSearchRegex } from "@solid-primitives/marker";
15+
import { createEventListener } from "@solid-primitives/event-listener";
16+
import { isAppleDevice } from "@solid-primitives/platform";
1617

1718
function getOramaClient({
1819
endpoint,
@@ -104,18 +105,11 @@ export function Search() {
104105
preload(new URL(path, "https://docs.solidjs.com"), { preloadData: true });
105106
});
106107

107-
createEffect(() => {
108-
const handleKeyDown = (e: KeyboardEvent) => {
109-
if (e.metaKey && e.key === "k") {
110-
e.preventDefault();
111-
setOpen((open) => !open);
112-
}
113-
};
114-
115-
window.addEventListener("keydown", handleKeyDown);
116-
onCleanup(() => {
117-
window.removeEventListener("keydown", handleKeyDown);
118-
});
108+
createEventListener(window, "keydown", (e: KeyboardEvent) => {
109+
if ((e.ctrlKey || e.metaKey) && e.key === "k") {
110+
e.preventDefault();
111+
setOpen((open) => !open);
112+
}
119113
});
120114

121115
const regex = createMemo(() => makeSearchRegex(searchTerm()));
@@ -139,19 +133,23 @@ export function Search() {
139133
setOpen(open);
140134
}}
141135
>
142-
<Dialog.Trigger class="items-center rounded-lg md:border border-black/10 dark:border-white/60 dark:bg-slate-800 md:px-2 md:py-1.5 flex">
136+
<Dialog.Trigger
137+
aria-keyshortcuts={isAppleDevice ? "Meta+K" : "Control+K"}
138+
class="items-center rounded-lg md:border border-black/10 dark:border-white/60 dark:bg-slate-800 md:px-2 md:py-1.5 flex"
139+
>
143140
<svg
144141
xmlns="http://www.w3.org/2000/svg"
145142
fill="currentColor"
146143
viewBox="0 0 256 256"
144+
aria-hidden="true"
147145
class="size-6 md:size-4"
148146
>
149147
<path d="M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z" />
150148
</svg>
151149
<span class="hidden md:block ml-1 text-sm">Search</span>
152150
<kbd class="hidden md:block ml-2 min-w-6 rounded border border-black/5 px-1 pb-px pt-1 text-center font-mono text-xs dark:bg-slate-700">
153-
<span></span>
154-
<span class="ml-0.5">K</span>
151+
<kbd>{isAppleDevice ? "⌘" : "Ctrl"}</kbd>
152+
<kbd class="ml-0.5">K</kbd>
155153
</kbd>
156154
</Dialog.Trigger>
157155
<Dialog.Portal>

0 commit comments

Comments
 (0)