import { kebabCase } from 'lodash'; import React from 'react'; import { SearchStatus } from './SearchStatus'; import type { ISearchResultSet } from '../infrastructure/infrastructureSearch.service'; import { Spinner } from '../../widgets'; export interface ISearchResultGridProps { resultSet: ISearchResultSet; } export const Searching = () => (
); const NoResults = ({ resultSet }: { resultSet: ISearchResultSet }) => (

No {resultSet.type.displayName} found for the specified search query

); const Results = ({ resultSet }: { resultSet: ISearchResultSet }) => { const { type } = resultSet; const { HeaderComponent, DataComponent } = type; return (
); }; const FetchError = ({ resultSet }: { resultSet: ISearchResultSet }) => (

Could not fetch {resultSet.type.displayName}

{resultSet && resultSet.error && resultSet.error.toString()}
); export class SearchResultGrid extends React.Component { public render(): React.ReactElement { const resultSet = this.props.resultSet || ({} as ISearchResultSet); const { status, results } = resultSet; switch (status) { case SearchStatus.INITIAL: case undefined: return null; case SearchStatus.ERROR: return ; case SearchStatus.SEARCHING: return ; case SearchStatus.FINISHED: if (!results.length) { return ; } return ; default: return null; } } }