From f1060eccac25f78af02b025f3723382eb9dd5201 Mon Sep 17 00:00:00 2001 From: Camden Cheek Date: Fri, 9 Aug 2024 14:24:05 -0600 Subject: [PATCH] Svelte: add support for navigating search results with the keyboard (#64257) This adds support for navigating between search results with keyboard shortcuts. Similar to the React app, `j` or `down` means "next result", and `k` or `up` means previous results. To accompany this change, when a search is submitted, the first result is focused by default to facilitate iterating over results with the keyboard. --- client/web-sveltekit/src/lib/TreeNode.svelte | 2 +- .../[...path]/FileViewModeSwitcher.svelte | 2 +- .../src/routes/search/+page.svelte | 20 ++++ .../routes/search/CommitSearchResult.svelte | 8 +- .../search/FileContentSearchResult.svelte | 11 ++- .../routes/search/FilePathSearchResult.svelte | 23 ++++- .../src/routes/search/RepoSearchResult.svelte | 18 +++- .../src/routes/search/SearchResults.svelte | 56 +++++++++++- .../routes/search/SymbolSearchResult.svelte | 15 ++- .../src/routes/search/page.spec.ts | 91 +++++++++++++++++++ .../src/routes/search/searchResultsFocus.ts | 62 +++++++++++++ client/web-sveltekit/src/routes/styles.scss | 9 +- .../src/routes/svelte-overrides.scss | 1 - .../src/testing/search-testdata.ts | 9 ++ 14 files changed, 306 insertions(+), 21 deletions(-) create mode 100644 client/web-sveltekit/src/routes/search/searchResultsFocus.ts diff --git a/client/web-sveltekit/src/lib/TreeNode.svelte b/client/web-sveltekit/src/lib/TreeNode.svelte index 97edea57589..a029278c65d 100644 --- a/client/web-sveltekit/src/lib/TreeNode.svelte +++ b/client/web-sveltekit/src/lib/TreeNode.svelte @@ -146,7 +146,7 @@ box-shadow: none; > .label { - box-shadow: var(--focus-shadow-inner); + box-shadow: var(--focus-shadow-inset); } } diff --git a/client/web-sveltekit/src/routes/[...repo=reporev]/(validrev)/(code)/-/blob/[...path]/FileViewModeSwitcher.svelte b/client/web-sveltekit/src/routes/[...repo=reporev]/(validrev)/(code)/-/blob/[...path]/FileViewModeSwitcher.svelte index 094c6962a4f..f590caddeb1 100644 --- a/client/web-sveltekit/src/routes/[...repo=reporev]/(validrev)/(code)/-/blob/[...path]/FileViewModeSwitcher.svelte +++ b/client/web-sveltekit/src/routes/[...repo=reporev]/(validrev)/(code)/-/blob/[...path]/FileViewModeSwitcher.svelte @@ -98,7 +98,7 @@ user-select: none; &:focus-visible { - box-shadow: var(--focus-shadow-inner); + box-shadow: var(--focus-shadow-inset); } } diff --git a/client/web-sveltekit/src/routes/search/+page.svelte b/client/web-sveltekit/src/routes/search/+page.svelte index 927917359ad..ebc4d907f33 100644 --- a/client/web-sveltekit/src/routes/search/+page.svelte +++ b/client/web-sveltekit/src/routes/search/+page.svelte @@ -1,4 +1,5 @@ diff --git a/client/web-sveltekit/src/routes/search/CommitSearchResult.svelte b/client/web-sveltekit/src/routes/search/CommitSearchResult.svelte index 2710b181c13..6363ff5baa1 100644 --- a/client/web-sveltekit/src/routes/search/CommitSearchResult.svelte +++ b/client/web-sveltekit/src/routes/search/CommitSearchResult.svelte @@ -36,11 +36,11 @@