SearchControl.tsx 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import React, { FC } from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import SearchPageForm from './SearchPageForm';
  4. import AppContainer from '../../client/services/AppContainer';
  5. import DeleteSelectedPageGroup from './DeleteSelectedPageGroup';
  6. import { CheckboxType } from '../../interfaces/search';
  7. import loggerFactory from '~/utils/logger';
  8. const logger = loggerFactory('growi:searchResultList');
  9. type Props = {
  10. searchingKeyword: string,
  11. checkboxState: CheckboxType,
  12. appContainer: AppContainer,
  13. onSearchInvoked: (data : any[]) => boolean,
  14. onExcludeUsersHome?: () => void,
  15. onExcludeTrash?: () => void,
  16. onClickInvoked?: () => void,
  17. }
  18. const SearchControl: FC <Props> = (props: Props) => {
  19. // Temporaly workaround for lint error
  20. // later needs to be fixed: SearchControl to typescript componet
  21. const SearchPageFormTypeAny : any = SearchPageForm;
  22. const { t } = useTranslation('');
  23. const onExcludeUsersHome = () => {
  24. if (props.onExcludeUsersHome != null) {
  25. props.onExcludeUsersHome();
  26. }
  27. };
  28. const onExcludeTrash = () => {
  29. if (props.onExcludeTrash != null) {
  30. props.onExcludeTrash();
  31. }
  32. };
  33. const onDeleteSelectedPageHandler = () => {
  34. console.log('onDeleteSelectedPageHandler is called');
  35. // TODO: implement this function to delete selected pages.
  36. // https://estoc.weseek.co.jp/redmine/issues/77525
  37. };
  38. return (
  39. <div className="">
  40. <div className="search-page-input sps sps--abv">
  41. <SearchPageFormTypeAny
  42. keyword={props.searchingKeyword}
  43. appContainer={props.appContainer}
  44. onSearchFormChanged={props.onSearchInvoked}
  45. />
  46. </div>
  47. {/* TODO: replace the following elements deleteAll button , relevance button and include specificPath button component */}
  48. <div className="d-flex my-4">
  49. {/* Todo: design will be fixed in #80324. Function will be implemented in #77525 */}
  50. <DeleteSelectedPageGroup
  51. checkboxState={props.checkboxState}
  52. onClickInvoked={onDeleteSelectedPageHandler}
  53. onCheckInvoked={props.onClickInvoked}
  54. />
  55. <div className="d-flex align-items-center border rounded border-gray px-2 py-1 mr-2 ml-auto">
  56. <label className="my-0 mr-2" htmlFor="flexCheckDefault">
  57. {t('Include Subordinated Target Page', { target: '/user' })}
  58. </label>
  59. <input
  60. type="checkbox"
  61. id="flexCheckDefault"
  62. onClick={() => onExcludeUsersHome()}
  63. />
  64. </div>
  65. <div className="d-flex align-items-center border rounded border-gray px-2 mr-3">
  66. <label className="my-0 mr-2" htmlFor="flexCheckChecked">
  67. {t('Include Subordinated Target Page', { target: '/trash' })}
  68. </label>
  69. <input
  70. type="checkbox"
  71. id="flexCheckChecked"
  72. onClick={() => onExcludeTrash()}
  73. />
  74. </div>
  75. </div>
  76. </div>
  77. );
  78. };
  79. export default SearchControl;