diff --git a/app/assets/stylesheets/terminals.css b/app/assets/stylesheets/terminals.css
index 7e82d6792..1e2becfaf 100644
--- a/app/assets/stylesheets/terminals.css
+++ b/app/assets/stylesheets/terminals.css
@@ -65,6 +65,14 @@
}
}
+ .terminal__help {
+ display: none;
+
+ .terminal--showing-help & {
+ display: block;
+ }
+ }
+
.terminal__item {
@media (any-hover: hover) {
&:where(:not(:active):hover),
diff --git a/app/javascript/controllers/terminal_controller.js b/app/javascript/controllers/terminal_controller.js
index a4148623c..09a2eea5a 100644
--- a/app/javascript/controllers/terminal_controller.js
+++ b/app/javascript/controllers/terminal_controller.js
@@ -3,7 +3,7 @@ import { HttpStatus } from "helpers/http_helpers"
export default class extends Controller {
static targets = [ "input", "form", "confirmation" ]
- static classes = [ "error", "confirmation" ]
+ static classes = [ "error", "confirmation", "help" ]
// Actions
@@ -12,6 +12,23 @@ export default class extends Controller {
}
executeCommand(event) {
+ if (this.#hasShowHelpMenuCommand) {
+ this.#showHelpMenu()
+ event.preventDefault()
+ event.stopPropagation()
+ } else {
+ this.hideHelpMenu()
+ }
+ }
+
+ hideHelpMenu() {
+ if (this.#isHelpMenuOpened && this.#hasShowHelpMenuCommand) {
+ this.#reset()
+ this.element.classList.remove(this.helpClass)
+ }
+ }
+
+ handleCommandResponse(event) {
if (event.detail.success) {
this.#reset()
} else {
@@ -28,6 +45,18 @@ export default class extends Controller {
}
}
+ get #hasShowHelpMenuCommand() {
+ return this.inputTarget.value == "/help" || this.inputTarget.value == "/?"
+ }
+
+ #showHelpMenu() {
+ this.element.classList.add(this.helpClass)
+ }
+
+ get #isHelpMenuOpened() {
+ return this.element.classList.contains(this.helpClass)
+ }
+
async #handleErrorResponse(response) {
const status = response.status
const message = await response.text()
diff --git a/app/views/commands/_form.html.erb b/app/views/commands/_form.html.erb
index 5a82423ad..e6fec5b76 100644
--- a/app/views/commands/_form.html.erb
+++ b/app/views/commands/_form.html.erb
@@ -4,7 +4,7 @@
data: {
controller: "form",
terminal_target: "form",
- action: "turbo:submit-end->terminal#focus keydown.meta+k@document->terminal#focus turbo:submit-end->terminal#executeCommand"
+ action: "turbo:submit-end->terminal#focus keydown.meta+k@document->terminal#focus keydown.enter->terminal#executeCommand keydown.esc->terminal#hideHelpMenu turbo:submit-end->terminal#handleCommandResponse"
} do %>
diff --git a/app/views/commands/_help.html.erb b/app/views/commands/_help.html.erb
new file mode 100644
index 000000000..597aef5d9
--- /dev/null
+++ b/app/views/commands/_help.html.erb
@@ -0,0 +1,42 @@
+Commands
+
+ Navigation
+
+
+ @username[card id]Filtering
+
+
+ #tag_name[card id 1] [card id 2]...search_termCards
+
+
+ /assign [username 1] [username 2].../close [reason]/tag [tag name]