Skip to content

Commit e4d8405

Browse files
Use (KeyboardEvent.metaKey) with Pagefind search toggle on macOS (#647)
* Allow `⌘` to be used when searching * Prevent default actions before search toggle * Rename button title * Fix prettier linter stuff * Add an ID to the search button * Check for Apple devices * Swap order of `metaKey`/`ctrlKey` and `K`
1 parent e5fb3d5 commit e4d8405

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

assets/js/search.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@
22

33
window.addEventListener("DOMContentLoaded", () => {
44
let searchDialog = document.querySelector(".search-dialog");
5+
let searchButton = document.getElementById("search-button");
56

67
// Do nothing here if search is not enabled.
7-
if (!searchDialog) return;
8+
if (!searchDialog || !searchButton) return;
9+
10+
const isMac = /(Mac|iPhone|iPod|iPad)/i.test(navigator.userAgent);
11+
searchButton.title = `Search (${isMac ? "⌘" : "Ctrl"} + K)`;
812

913
new PagefindUI({
1014
element: ".search-dialog",
@@ -45,7 +49,11 @@ window.addEventListener("DOMContentLoaded", () => {
4549
});
4650

4751
window.addEventListener("keydown", (evt) => {
48-
if (evt.key === "k" && evt.ctrlKey) {
52+
if (
53+
((isMac && evt.metaKey) || (!isMac && evt.ctrlKey)) &&
54+
evt.key === "k"
55+
) {
56+
evt.preventDefault(); // prevents default browser behaviour
4957
toggleSearch();
5058
}
5159
});

layouts/partials/navbar.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
<div class="navbar-end">
2828
{{- if .Site.Params.search }}
29-
<button class="search-button" title="Search (Ctrl+k)">
29+
<button id="search-button" class="search-button" title="Search">
3030
<i class="fa-solid fa-magnifying-glass fa-lg"></i>
3131
</button>
3232
{{- end }}

0 commit comments

Comments
 (0)