Skip to content

Commit 5ed5d56

Browse files
author
Abhijit Kar
committed
Fixed issue with Command Palette focus retention.
1 parent 7021f13 commit 5ed5d56

File tree

2 files changed

+42
-40
lines changed

2 files changed

+42
-40
lines changed

assets/js/command_palette.js

Lines changed: 40 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -11,56 +11,58 @@ const CommandPalette = {
1111
this.highlightSelection(this.search_results[this.selected]);
1212
};
1313

14-
document.addEventListener("keydown", (e) => {
15-
if (e.key === "k" && e.metaKey) {
16-
e.preventDefault();
17-
liveSocket.execJS(this.el, this.el.getAttribute("data-show-modal"));
14+
const handleKeyDown = (e) => {
15+
switch (e.key) {
16+
case "ArrowUp":
17+
e.preventDefault();
1818

19-
fetchDomNodes();
20-
} else {
21-
switch (e.key) {
22-
case "ArrowUp":
23-
e.preventDefault();
19+
this.removeHighlight(this.search_results[this.selected]);
20+
this.selected =
21+
(this.selected - 1 + this.search_results.length) %
22+
this.search_results.length;
2423

25-
this.removeHighlight(this.search_results[this.selected]);
26-
this.selected =
27-
(this.selected - 1 + this.search_results.length) %
28-
this.search_results.length;
24+
this.highlightSelection(this.search_results[this.selected]);
2925

30-
this.highlightSelection(this.search_results[this.selected]);
26+
break;
27+
case "ArrowDown":
28+
e.preventDefault();
3129

32-
break;
33-
case "ArrowDown":
34-
e.preventDefault();
30+
this.removeHighlight(this.search_results[this.selected]);
31+
this.selected = (this.selected + 1) % this.search_results.length;
3532

36-
this.removeHighlight(this.search_results[this.selected]);
37-
this.selected = (this.selected + 1) % this.search_results.length;
33+
this.highlightSelection(this.search_results[this.selected]);
3834

39-
this.highlightSelection(this.search_results[this.selected]);
35+
break;
36+
case "Enter":
37+
e.preventDefault();
38+
const target = this.search_results[this.selected];
39+
clickableTarget = target.querySelector("a, button, [data-clickable]");
4040

41-
break;
42-
case "Enter":
43-
e.preventDefault();
44-
const target = this.search_results[this.selected];
45-
clickableTarget = target.querySelector(
46-
"a, button, [data-clickable]"
47-
);
41+
clickableTarget && clickableTarget.click();
42+
break;
43+
case "Tab":
44+
e.preventDefault();
45+
console.log("Do something on tab");
46+
break;
47+
default:
48+
this.selected &&
49+
this.removeHighlight(this.search_results[this.selected]);
50+
}
51+
};
52+
53+
document.addEventListener("keydown", (e) => {
54+
if (e.key === "k" && e.metaKey) {
55+
e.preventDefault();
56+
liveSocket.execJS(this.el, this.el.getAttribute("data-show-modal"));
4857

49-
clickableTarget && clickableTarget.click();
50-
break;
51-
case "Tab":
52-
e.preventDefault();
53-
console.log("Do something on tab");
54-
break;
55-
default:
56-
this.selected &&
57-
this.removeHighlight(this.search_results[this.selected]);
58-
}
58+
!this.search_results && fetchDomNodes();
59+
} else {
60+
this.el.addEventListener("keydown", handleKeyDown);
5961
}
6062
});
63+
6164
this.handleEvent("search-results-ready", fetchDomNodes);
6265
},
63-
destroyed() {},
6466
highlightSelection(target) {
6567
if (!target) return;
6668
target.setAttribute("aria-selected", true);

lib/derpy_tools_web/live/tools/metadata_analyzer_live.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ defmodule DerpyToolsWeb.MetadataAnalyzerLive do
140140
"""
141141
end
142142

143-
def handle_event("validate", %{"metadata" => params}, socket) do
143+
def handle_event("validate", %{"metadata_schema" => params}, socket) do
144144
changeset =
145145
%MetadataSchema{}
146146
|> MetadataSchema.change_metadata(params)
@@ -151,7 +151,7 @@ defmodule DerpyToolsWeb.MetadataAnalyzerLive do
151151
{:noreply, socket}
152152
end
153153

154-
def handle_event("save", %{"metadata" => params}, socket) do
154+
def handle_event("save", %{"metadata_schema" => params}, socket) do
155155
case MetadataSchema.update(params) do
156156
{:ok, %{id: _, url: url}} ->
157157
changeset = MetadataSchema.change_metadata(%MetadataSchema{}, params)

0 commit comments

Comments
 (0)