packages/react-search-ui/src/containers/Results.tsx (44 lines of code) (raw):

import React from "react"; import { Result, Results, ResultsContainerProps } from "@elastic/react-search-ui-views"; import { Result as ResultContainer } from "."; import { useSearch } from "../hooks"; function getRaw(result, value) { if (!result[value] || !result[value].raw) return; return result[value].raw; } const ResultsContainer = ({ clickThroughTags = [], resultView, shouldTrackClickThrough = true, titleField, urlField, thumbnailField, view, ...rest }: ResultsContainerProps) => { const { results } = useSearch(); const View = view || Results; const ResultView = resultView || Result; const children = results.map((result) => ( <ResultContainer key={`result-${getRaw(result, "id")}`} titleField={titleField} urlField={urlField} thumbnailField={thumbnailField} view={ResultView} shouldTrackClickThrough={shouldTrackClickThrough} clickThroughTags={clickThroughTags} result={result} /> )); const viewProps = { children, ...rest }; return <View {...viewProps} />; }; export default ResultsContainer;