@@ -6,13 +6,14 @@ import {
6
6
For ,
7
7
Suspense ,
8
8
startTransition ,
9
- onCleanup ,
10
9
createMemo ,
11
10
} from "solid-js" ;
12
11
import { Dialog } from "@kobalte/core/dialog" ;
13
12
import { A , createAsync , useNavigate , usePreloadRoute } from "@solidjs/router" ;
14
13
import { createList } from "solid-list" ;
15
14
import { createMarker , makeSearchRegex } from "@solid-primitives/marker" ;
15
+ import { createEventListener } from "@solid-primitives/event-listener" ;
16
+ import { isAppleDevice } from "@solid-primitives/platform" ;
16
17
17
18
function getOramaClient ( {
18
19
endpoint,
@@ -104,18 +105,11 @@ export function Search() {
104
105
preload ( new URL ( path , "https://docs.solidjs.com" ) , { preloadData : true } ) ;
105
106
} ) ;
106
107
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
+ }
119
113
} ) ;
120
114
121
115
const regex = createMemo ( ( ) => makeSearchRegex ( searchTerm ( ) ) ) ;
@@ -139,19 +133,23 @@ export function Search() {
139
133
setOpen ( open ) ;
140
134
} }
141
135
>
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
+ >
143
140
< svg
144
141
xmlns = "http://www.w3.org/2000/svg"
145
142
fill = "currentColor"
146
143
viewBox = "0 0 256 256"
144
+ aria-hidden = "true"
147
145
class = "size-6 md:size-4"
148
146
>
149
147
< 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" />
150
148
</ svg >
151
149
< span class = "hidden md:block ml-1 text-sm" > Search</ span >
152
150
< 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 >
155
153
</ kbd >
156
154
</ Dialog . Trigger >
157
155
< Dialog . Portal >
0 commit comments