SearchOptionModal.tsx 2.3 KB

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