Sfoglia il codice sorgente

Updates graph searchability

- clears search results when invalid
- hides search when gated
main
Keith Daulton 2 anni fa
committed by Eric Amodio
parent
commit
58395a23fd
2 ha cambiato i file con 30 aggiunte e 24 eliminazioni
  1. +25
    -23
      src/webviews/apps/plus/graph/GraphWrapper.tsx
  2. +5
    -1
      src/webviews/apps/plus/graph/graph.tsx

+ 25
- 23
src/webviews/apps/plus/graph/GraphWrapper.tsx Vedi File

@ -38,7 +38,7 @@ export interface GraphWrapperProps extends State {
onColumnChange?: (name: string, settings: GraphColumnConfig) => void;
onMissingAvatars?: (emails: { [email: string]: string }) => void;
onMoreCommits?: (id?: string) => void;
onSearchCommits?: (search: SearchPattern) => void;
onSearchCommits?: (search: SearchPattern | undefined) => void;
onSearchCommitsPromise?: (
search: SearchPattern,
options?: { more?: boolean | { limit?: number } },
@ -351,12 +351,12 @@ export function GraphWrapper({
const detail = e.detail;
setSearch(detail);
if (detail.pattern.length < 3) {
const isValid = detail.pattern.length < 3;
if (isValid) {
setSearchResultKey(undefined);
setSearchResultIds(undefined);
return;
}
onSearchCommits?.(detail);
onSearchCommits?.(isValid ? detail : undefined);
};
useLayoutEffect(() => {
@ -617,25 +617,27 @@ export function GraphWrapper({
)}
{renderAlertContent()}
</section>
<header className="titlebar graph-app__header">
<div className="titlebar__group">
<SearchField
value={search?.pattern}
onChange={e => handleSearchInput(e as CustomEvent<SearchPattern>)}
onPrevious={() => handleSearchNavigation(false)}
onNext={() => handleSearchNavigation(true)}
/>
<SearchNav
aria-label="Graph search navigation"
step={searchPosition}
total={searchResultIds?.length ?? 0}
valid={Boolean(search?.pattern && search.pattern.length > 2)}
more={hasMoreSearchResults}
onPrevious={() => handleSearchNavigation(false)}
onNext={() => handleSearchNavigation(true)}
/>
</div>
</header>
{isAllowed && (
<header className="titlebar graph-app__header">
<div className="titlebar__group">
<SearchField
value={search?.pattern}
onChange={e => handleSearchInput(e as CustomEvent<SearchPattern>)}
onPrevious={() => handleSearchNavigation(false)}
onNext={() => handleSearchNavigation(true)}
/>
<SearchNav
aria-label="Graph search navigation"
step={searchPosition}
total={searchResultIds?.length ?? 0}
valid={Boolean(search?.pattern && search.pattern.length > 2)}
more={hasMoreSearchResults}
onPrevious={() => handleSearchNavigation(false)}
onNext={() => handleSearchNavigation(true)}
/>
</div>
</header>
)}
<main
ref={mainRef}
id="main"

+ 5
- 1
src/webviews/apps/plus/graph/graph.tsx Vedi File

@ -299,7 +299,11 @@ export class GraphApp extends App {
return this.sendCommand(GetMoreCommitsCommandType, { sha: sha });
}
private onSearchCommits(search: SearchPattern) {
private onSearchCommits(search: SearchPattern | undefined) {
if (search == null) {
this.state.searchResults = undefined;
return;
}
return this.sendCommand(SearchCommitsCommandType, { search: search });
}

Caricamento…
Annulla
Salva