SearchResultContent.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import React, { FC } from 'react';
  2. import { IPageSearchResultData } from '../../interfaces/search';
  3. import RevisionLoader from '../Page/RevisionLoader';
  4. import AppContainer from '../../client/services/AppContainer';
  5. type Props ={
  6. appContainer: AppContainer,
  7. searchingKeyword:string,
  8. focusedSearchResultData : IPageSearchResultData,
  9. }
  10. const SearchResultContent: FC<Props> = (props: Props) => {
  11. const page = props.focusedSearchResultData?.pageData || {};
  12. if (page == null) return null;
  13. // Temporaly workaround for lint error
  14. // later needs to be fixed: RevisoinRender to typescriptcomponet
  15. const RevisionLoaderTypeAny: any = RevisionLoader;
  16. const growiRenderer = props.appContainer.getRenderer('searchresult');
  17. let showTags = false;
  18. if (page.tags != null && page.tags.length > 0) { showTags = true }
  19. return (
  20. <div key={page._id} className="search-result-page mb-5">
  21. <h2>
  22. <a href={page.path} className="text-break">
  23. {page.path}
  24. </a>
  25. {showTags && (
  26. <div className="mt-1 small">
  27. <i className="tag-icon icon-tag"></i> {page.tags?.join(', ')}
  28. </div>
  29. )}
  30. </h2>
  31. <RevisionLoaderTypeAny
  32. growiRenderer={growiRenderer}
  33. pageId={page._id}
  34. pagePath={page.path}
  35. revisionId={page.revision}
  36. highlightKeywords={props.searchingKeyword}
  37. />
  38. </div>
  39. );
  40. };
  41. export default SearchResultContent;