1
0
Fork 0

fix(docsearch): remove recent search when favorited

This commit is contained in:
François Chalifour 2020-04-03 18:05:33 +02:00
parent 708b470cc1
commit 858a49820f
4 changed files with 22 additions and 19 deletions

View file

@ -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>

View file

@ -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">

View file

@ -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) => {

View file

@ -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}
/> />
); );