SearchOptionModal.tsx 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import React, { FC } from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import {
  4. Modal, ModalHeader, ModalBody, ModalFooter,
  5. } from 'reactstrap';
  6. type Props = {
  7. isOpen: boolean,
  8. excludeUserPages: boolean,
  9. excludeTrashPages: boolean,
  10. onClose?: () => void,
  11. onExcludeUserPagesSwitched?: () => void,
  12. onExcludeTrashPagesSwitched?: () => void,
  13. onClickFilteringSearchResult?: () => void,
  14. }
  15. const SearchOptionModal: FC<Props> = (props: Props) => {
  16. const { t } = useTranslation('');
  17. const {
  18. isOpen, onClose, excludeUserPages, excludeTrashPages,
  19. } = props;
  20. const onCloseModal = () => {
  21. if (onClose != null) {
  22. onClose();
  23. }
  24. };
  25. const onClickFilteringSearchResult = () => {
  26. if (props.onClickFilteringSearchResult != null) {
  27. props.onClickFilteringSearchResult();
  28. onCloseModal();
  29. }
  30. };
  31. return (
  32. <Modal size="lg" isOpen={isOpen} toggle={onCloseModal} autoFocus={false}>
  33. <ModalHeader tag="h4" toggle={onCloseModal} className="bg-primary text-light">
  34. Search Option
  35. </ModalHeader>
  36. <ModalBody>
  37. <div className="d-flex p-2">
  38. <div className="border border-gray mr-3">
  39. <label className="px-3 py-2 mb-0 d-flex align-items-center">
  40. <input
  41. className="mr-2"
  42. type="checkbox"
  43. onClick={props.onExcludeUserPagesSwitched}
  44. checked={!excludeUserPages}
  45. />
  46. {t('Include Subordinated Target Page', { target: '/user' })}
  47. </label>
  48. </div>
  49. <div className="border border-gray">
  50. <label className="px-3 py-2 mb-0 d-flex align-items-center">
  51. <input
  52. className="mr-2"
  53. type="checkbox"
  54. onClick={props.onExcludeTrashPagesSwitched}
  55. checked={!excludeTrashPages}
  56. />
  57. {t('Include Subordinated Target Page', { target: '/trash' })}
  58. </label>
  59. </div>
  60. </div>
  61. </ModalBody>
  62. <ModalFooter>
  63. <button
  64. type="button"
  65. className="btn btn-secondary"
  66. onClick={onClickFilteringSearchResult}
  67. >{t('search_result.search_again')}
  68. </button>
  69. </ModalFooter>
  70. </Modal>
  71. );
  72. };
  73. export default SearchOptionModal;