fix(docsearch): remove recent search when favorited
This commit is contained in:
parent
708b470cc1
commit
858a49820f
4 changed files with 22 additions and 19 deletions
|
|
@ -57,6 +57,7 @@ export function EmptyScreen(props: EmptyScreenProps) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
props.favoriteSearches.add(item);
|
props.favoriteSearches.add(item);
|
||||||
|
props.recentSearches.remove(item);
|
||||||
props.refresh();
|
props.refresh();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
|
@ -91,18 +92,20 @@ export function EmptyScreen(props: EmptyScreenProps) {
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
renderAction={({ item }) => (
|
renderAction={({ item }) => (
|
||||||
<button
|
<div className="DocSearch-Hit-action">
|
||||||
className="DocSearch-Hit-action-button"
|
<button
|
||||||
title="Remove this search from favorite"
|
className="DocSearch-Hit-action-button"
|
||||||
onClick={event => {
|
title="Remove this search from favorite"
|
||||||
event.preventDefault();
|
onClick={event => {
|
||||||
event.stopPropagation();
|
event.preventDefault();
|
||||||
props.favoriteSearches.remove(item);
|
event.stopPropagation();
|
||||||
props.refresh();
|
props.favoriteSearches.remove(item);
|
||||||
}}
|
props.refresh();
|
||||||
>
|
}}
|
||||||
<ResetIcon />
|
>
|
||||||
</button>
|
<ResetIcon />
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import {
|
||||||
|
|
||||||
import { InternalDocSearchHit } from './types';
|
import { InternalDocSearchHit } from './types';
|
||||||
|
|
||||||
interface NoResultsProps
|
interface NoResultsScreenProps
|
||||||
extends AutocompleteApi<
|
extends AutocompleteApi<
|
||||||
InternalDocSearchHit,
|
InternalDocSearchHit,
|
||||||
React.FormEvent,
|
React.FormEvent,
|
||||||
|
|
@ -17,7 +17,7 @@ interface NoResultsProps
|
||||||
inputRef: React.MutableRefObject<null | HTMLInputElement>;
|
inputRef: React.MutableRefObject<null | HTMLInputElement>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function NoResultsScreen(props: NoResultsProps) {
|
export function NoResultsScreen(props: NoResultsScreenProps) {
|
||||||
return (
|
return (
|
||||||
<div className="DocSearch-NoResults">
|
<div className="DocSearch-NoResults">
|
||||||
<p className="DocSearch-Title">
|
<p className="DocSearch-Title">
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import { InternalDocSearchHit } from './types';
|
||||||
import { Results } from './Results';
|
import { Results } from './Results';
|
||||||
import { SourceIcon, SelectIcon } from './icons';
|
import { SourceIcon, SelectIcon } from './icons';
|
||||||
|
|
||||||
interface ResultsProps
|
interface ResultsScreenProps
|
||||||
extends AutocompleteApi<
|
extends AutocompleteApi<
|
||||||
InternalDocSearchHit,
|
InternalDocSearchHit,
|
||||||
React.FormEvent,
|
React.FormEvent,
|
||||||
|
|
@ -19,7 +19,7 @@ interface ResultsProps
|
||||||
onItemClick(item: InternalDocSearchHit): void;
|
onItemClick(item: InternalDocSearchHit): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function ResultsScreen(props: ResultsProps) {
|
export function ResultsScreen(props: ResultsScreenProps) {
|
||||||
return (
|
return (
|
||||||
<div className="DocSearch-Dropdown-Container">
|
<div className="DocSearch-Dropdown-Container">
|
||||||
{props.state.suggestions.map((suggestion, index) => {
|
{props.state.suggestions.map((suggestion, index) => {
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import { ResultsScreen } from './ResultsScreen';
|
||||||
import { NoResultsScreen } from './NoResultsScreen';
|
import { NoResultsScreen } from './NoResultsScreen';
|
||||||
import { ErrorScreen } from './ErrorScreen';
|
import { ErrorScreen } from './ErrorScreen';
|
||||||
|
|
||||||
interface DropdownProps<TItem>
|
interface ScreenStateProps<TItem>
|
||||||
extends AutocompleteApi<
|
extends AutocompleteApi<
|
||||||
TItem,
|
TItem,
|
||||||
React.FormEvent,
|
React.FormEvent,
|
||||||
|
|
@ -25,7 +25,7 @@ interface DropdownProps<TItem>
|
||||||
inputRef: React.MutableRefObject<null | HTMLInputElement>;
|
inputRef: React.MutableRefObject<null | HTMLInputElement>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function ScreenState(props: DropdownProps<InternalDocSearchHit>) {
|
export function ScreenState(props: ScreenStateProps<InternalDocSearchHit>) {
|
||||||
if (props.state.status === 'error') {
|
if (props.state.status === 'error') {
|
||||||
return <ErrorScreen />;
|
return <ErrorScreen />;
|
||||||
}
|
}
|
||||||
|
|
@ -37,7 +37,7 @@ export function ScreenState(props: DropdownProps<InternalDocSearchHit>) {
|
||||||
if (!props.state.query) {
|
if (!props.state.query) {
|
||||||
return (
|
return (
|
||||||
<EmptyScreen
|
<EmptyScreen
|
||||||
{...(props as DropdownProps<any>)}
|
{...(props as ScreenStateProps<any>)}
|
||||||
hasSuggestions={hasSuggestions}
|
hasSuggestions={hasSuggestions}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue