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;
}
}
}