From 7c5722586c916617812cdcec1342ee3f7c84378c Mon Sep 17 00:00:00 2001 From: Andrew Bastin Date: Wed, 5 Jul 2023 11:51:15 +0530 Subject: [PATCH] refactor: move shortcuts to use minisearch --- .../hoppscotch-common/src/components.d.ts | 1 - .../src/components/app/Shortcuts.vue | 79 ++- .../src/components/app/ShortcutsEntry.vue | 11 +- .../src/helpers/shortcuts.ts | 453 ++++++------------ 4 files changed, 180 insertions(+), 364 deletions(-) diff --git a/packages/hoppscotch-common/src/components.d.ts b/packages/hoppscotch-common/src/components.d.ts index a9d66d3d9..7b3dc31d2 100644 --- a/packages/hoppscotch-common/src/components.d.ts +++ b/packages/hoppscotch-common/src/components.d.ts @@ -131,7 +131,6 @@ declare module '@vue/runtime-core' { IconLucideLayers: typeof import('~icons/lucide/layers')['default'] IconLucideListEnd: typeof import('~icons/lucide/list-end')['default'] IconLucideMinus: typeof import('~icons/lucide/minus')['default'] - IconLucideRefreshCcw: typeof import('~icons/lucide/refresh-ccw')['default'] IconLucideRefreshCw: typeof import('~icons/lucide/refresh-cw')['default'] IconLucideSearch: typeof import('~icons/lucide/search')['default'] IconLucideUsers: typeof import('~icons/lucide/users')['default'] diff --git a/packages/hoppscotch-common/src/components/app/Shortcuts.vue b/packages/hoppscotch-common/src/components/app/Shortcuts.vue index 0f367416b..4d8006b00 100644 --- a/packages/hoppscotch-common/src/components/app/Shortcuts.vue +++ b/packages/hoppscotch-common/src/components/app/Shortcuts.vue @@ -14,46 +14,18 @@ /> -
-
- - - - {{ t(map.item.section) }} - - -
- -
-
- +
+ {{ t("state.nothing_found") }} "{{ filterText }}" -
-
@@ -64,13 +36,13 @@ - {{ t(map.section) }} + {{ sectionTitle }}
@@ -81,10 +53,11 @@ diff --git a/packages/hoppscotch-common/src/helpers/shortcuts.ts b/packages/hoppscotch-common/src/helpers/shortcuts.ts index 67c31d2b7..73af38270 100644 --- a/packages/hoppscotch-common/src/helpers/shortcuts.ts +++ b/packages/hoppscotch-common/src/helpers/shortcuts.ts @@ -1,315 +1,146 @@ -import IconLifeBuoy from "~icons/lucide/life-buoy" -import IconZap from "~icons/lucide/zap" -import IconArrowRight from "~icons/lucide/arrow-right" -import IconGift from "~icons/lucide/gift" -import IconMonitor from "~icons/lucide/monitor" -import IconSun from "~icons/lucide/sun" -import IconCloud from "~icons/lucide/cloud" -import IconMoon from "~icons/lucide/moon" import { getPlatformAlternateKey, getPlatformSpecialKey } from "./platformutils" -export default [ - { - section: "shortcut.general.title", - shortcuts: [ - { - keys: ["?"], - label: "shortcut.general.help_menu", - }, - { - keys: ["/"], - label: "shortcut.general.command_menu", - }, - { - keys: [getPlatformSpecialKey(), "K"], - label: "shortcut.general.show_all", - }, - { - keys: ["ESC"], - label: "shortcut.general.close_current_menu", - }, - ], - }, - { - section: "shortcut.request.title", - shortcuts: [ - { - keys: [getPlatformSpecialKey(), "↩"], - label: "shortcut.request.send_request", - }, - { - keys: [getPlatformSpecialKey(), "S"], - label: "shortcut.request.save_to_collections", - }, - { - keys: [getPlatformSpecialKey(), "U"], - label: "shortcut.request.copy_request_link", - }, - { - keys: [getPlatformSpecialKey(), "I"], - label: "shortcut.request.reset_request", - }, - { - keys: [getPlatformAlternateKey(), "↑"], - label: "shortcut.request.next_method", - }, - { - keys: [getPlatformAlternateKey(), "↓"], - label: "shortcut.request.previous_method", - }, - { - keys: [getPlatformAlternateKey(), "G"], - label: "shortcut.request.get_method", - }, - { - keys: [getPlatformAlternateKey(), "H"], - label: "shortcut.request.head_method", - }, - { - keys: [getPlatformAlternateKey(), "P"], - label: "shortcut.request.post_method", - }, - { - keys: [getPlatformAlternateKey(), "U"], - label: "shortcut.request.put_method", - }, - { - keys: [getPlatformAlternateKey(), "X"], - label: "shortcut.request.delete_method", - }, - ], - }, - { - section: "shortcut.response.title", - shortcuts: [ - { - keys: [getPlatformSpecialKey(), "J"], - label: "shortcut.response.download", - }, - { - keys: [getPlatformSpecialKey(), "."], - label: "shortcut.response.copy", - }, - ], - }, - { - section: "shortcut.navigation.title", - shortcuts: [ - { - keys: [getPlatformSpecialKey(), "←"], - label: "shortcut.navigation.back", - }, - { - keys: [getPlatformSpecialKey(), "→"], - label: "shortcut.navigation.forward", - }, - { - keys: [getPlatformAlternateKey(), "R"], - label: "shortcut.navigation.rest", - }, - { - keys: [getPlatformAlternateKey(), "Q"], - label: "shortcut.navigation.graphql", - }, - { - keys: [getPlatformAlternateKey(), "W"], - label: "shortcut.navigation.realtime", - }, - { - keys: [getPlatformAlternateKey(), "S"], - label: "shortcut.navigation.settings", - }, - { - keys: [getPlatformAlternateKey(), "M"], - label: "shortcut.navigation.profile", - }, - ], - }, - { - section: "shortcut.miscellaneous.title", - shortcuts: [ - { - keys: [getPlatformSpecialKey(), "M"], - label: "shortcut.miscellaneous.invite", - }, - ], - }, -] +export type ShortcutDef = { + label: string + keys: string[] + section: string +} -export const spotlight = [ - { - section: "app.spotlight", - shortcuts: [ - { - keys: ["?"], - label: "shortcut.general.help_menu", - action: "modals.support.toggle", - icon: IconLifeBuoy, - }, - { - keys: [getPlatformSpecialKey(), "K"], - label: "shortcut.general.show_all", - action: "flyouts.keybinds.toggle", - icon: IconZap, - }, - ], - }, - { - section: "shortcut.navigation.title", - shortcuts: [ - { - keys: [getPlatformAlternateKey(), "R"], - label: "shortcut.navigation.rest", - action: "navigation.jump.rest", - icon: IconArrowRight, - }, - { - keys: [getPlatformAlternateKey(), "Q"], - label: "shortcut.navigation.graphql", - action: "navigation.jump.graphql", - icon: IconArrowRight, - }, - { - keys: [getPlatformAlternateKey(), "W"], - label: "shortcut.navigation.realtime", - action: "navigation.jump.realtime", - icon: IconArrowRight, - }, - { - keys: [getPlatformAlternateKey(), "S"], - label: "shortcut.navigation.settings", - action: "navigation.jump.settings", - icon: IconArrowRight, - }, - { - keys: [getPlatformAlternateKey(), "M"], - label: "shortcut.navigation.profile", - action: "navigation.jump.profile", - icon: IconArrowRight, - }, - ], - }, - { - section: "shortcut.miscellaneous.title", - shortcuts: [ - { - keys: [getPlatformSpecialKey(), "M"], - label: "shortcut.miscellaneous.invite", - action: "modals.share.toggle", - icon: IconGift, - }, - ], - }, -] +export function getShortcuts(t: (x: string) => string): ShortcutDef[] { + // General + return [ + { + label: t("shortcut.general.help_menu"), + keys: ["?"], + section: t("shortcut.general.title"), + }, + { + label: t("shortcut.general.command_menu"), + keys: ["/"], + section: t("shortcut.general.title"), + }, + { + label: t("shortcut.general.show_all"), + keys: [getPlatformSpecialKey(), "K"], + section: t("shortcut.general.title"), + }, + { + label: t("shortcut.general.close_current_menu"), + keys: ["ESC"], + section: t("shortcut.general.title"), + }, -export const fuse = [ - { - keys: ["?"], - label: "shortcut.general.help_menu", - action: "modals.support.toggle", - icon: IconLifeBuoy, - tags: [ - "help", - "support", - "menu", - "discord", - "twitter", - "documentation", - "troubleshooting", - "chat", - "community", - "feedback", - "report", - "bug", - "issue", - "ticket", - ], - }, - { - keys: [getPlatformSpecialKey(), "K"], - label: "shortcut.general.show_all", - action: "flyouts.keybinds.toggle", - icon: IconZap, - tags: ["keyboard", "shortcuts"], - }, - { - keys: [getPlatformAlternateKey(), "R"], - label: "shortcut.navigation.rest", - action: "navigation.jump.rest", - icon: IconArrowRight, - tags: ["rest", "jump", "page", "navigation", "go"], - }, - { - keys: [getPlatformAlternateKey(), "Q"], - label: "shortcut.navigation.graphql", - action: "navigation.jump.graphql", - icon: IconArrowRight, - tags: ["graphql", "jump", "page", "navigation", "go"], - }, - { - keys: [getPlatformAlternateKey(), "W"], - label: "shortcut.navigation.realtime", - action: "navigation.jump.realtime", - icon: IconArrowRight, - tags: [ - "realtime", - "jump", - "page", - "navigation", - "websocket", - "socket", - "mqtt", - "sse", - "go", - ], - }, - { - keys: [getPlatformAlternateKey(), "S"], - label: "shortcut.navigation.settings", - action: "navigation.jump.settings", - icon: IconArrowRight, - tags: ["settings", "jump", "page", "navigation", "account", "theme", "go"], - }, - { - keys: [getPlatformAlternateKey(), "M"], - label: "shortcut.navigation.profile", - action: "navigation.jump.profile", - icon: IconArrowRight, - tags: ["profile", "jump", "page", "navigation", "account", "theme", "go"], - }, - { - keys: [getPlatformSpecialKey(), "M"], - label: "shortcut.miscellaneous.invite", - action: "modals.share.toggle", - icon: IconGift, - tags: ["invite", "share", "app", "friends", "people", "social"], - }, - { - keys: [getPlatformAlternateKey(), "0"], - label: "shortcut.theme.system", - action: "settings.theme.system", - icon: IconMonitor, - tags: ["theme", "system"], - }, - { - keys: [getPlatformAlternateKey(), "1"], - label: "shortcut.theme.light", - action: "settings.theme.light", - icon: IconSun, - tags: ["theme", "light"], - }, - { - keys: [getPlatformAlternateKey(), "2"], - label: "shortcut.theme.dark", - action: "settings.theme.dark", - icon: IconCloud, - tags: ["theme", "dark"], - }, - { - keys: [getPlatformAlternateKey(), "3"], - label: "shortcut.theme.black", - action: "settings.theme.black", - icon: IconMoon, - tags: ["theme", "black"], - }, -] + // Request + { + label: t("shortcut.request.send_request"), + keys: [getPlatformSpecialKey(), "↩"], + section: t("shortcut.request.title"), + }, + { + keys: [getPlatformSpecialKey(), "S"], + label: t("shortcut.request.save_to_collections"), + section: t("shortcut.request.title"), + }, + { + keys: [getPlatformSpecialKey(), "U"], + label: t("shortcut.request.copy_request_link"), + section: t("shortcut.request.title"), + }, + { + keys: [getPlatformSpecialKey(), "I"], + label: t("shortcut.request.reset_request"), + section: t("shortcut.request.title"), + }, + { + keys: [getPlatformAlternateKey(), "↑"], + label: t("shortcut.request.next_method"), + section: t("shortcut.request.title"), + }, + { + keys: [getPlatformAlternateKey(), "↓"], + label: t("shortcut.request.previous_method"), + section: t("shortcut.request.title"), + }, + { + keys: [getPlatformAlternateKey(), "G"], + label: t("shortcut.request.get_method"), + section: t("shortcut.request.title"), + }, + { + keys: [getPlatformAlternateKey(), "H"], + label: t("shortcut.request.head_method"), + section: t("shortcut.request.title"), + }, + { + keys: [getPlatformAlternateKey(), "P"], + label: t("shortcut.request.post_method"), + section: t("shortcut.request.title"), + }, + { + keys: [getPlatformAlternateKey(), "U"], + label: t("shortcut.request.put_method"), + section: t("shortcut.request.title"), + }, + { + keys: [getPlatformAlternateKey(), "X"], + label: t("shortcut.request.delete_method"), + section: t("shortcut.request.title"), + }, + + // Response + { + keys: [getPlatformSpecialKey(), "J"], + label: t("shortcut.response.download"), + section: t("shortcut.response.title"), + }, + { + keys: [getPlatformSpecialKey(), "."], + label: t("shortcut.response.copy"), + section: t("shortcut.response.title"), + }, + + // Navigation + { + keys: [getPlatformSpecialKey(), "←"], + label: t("shortcut.navigation.back"), + section: t("shortcut.navigation.title"), + }, + { + keys: [getPlatformSpecialKey(), "→"], + label: t("shortcut.navigation.forward"), + section: t("shortcut.navigation.title"), + }, + { + keys: [getPlatformAlternateKey(), "R"], + label: t("shortcut.navigation.rest"), + section: t("shortcut.navigation.title"), + }, + { + keys: [getPlatformAlternateKey(), "Q"], + label: t("shortcut.navigation.graphql"), + section: t("shortcut.navigation.title"), + }, + { + keys: [getPlatformAlternateKey(), "W"], + label: t("shortcut.navigation.realtime"), + section: t("shortcut.navigation.title"), + }, + { + keys: [getPlatformAlternateKey(), "S"], + label: t("shortcut.navigation.settings"), + section: t("shortcut.navigation.title"), + }, + { + keys: [getPlatformAlternateKey(), "M"], + label: t("shortcut.navigation.profile"), + section: t("shortcut.navigation.title"), + }, + + // Miscellaneous + { + keys: [getPlatformSpecialKey(), "M"], + label: t("shortcut.miscellaneous.invite"), + section: t("shortcut.miscellaneous.title"), + }, + ] +}