DeleteSelectedPageGroup.tsx 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import React, { FC } from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import { CheckboxType } from '../../interfaces/search';
  4. type Props = {
  5. isSelectAllCheckboxDisabled: boolean,
  6. selectAllCheckboxType: CheckboxType,
  7. onClickDeleteAllButton?: () => void,
  8. onClickSelectAllCheckbox?: (nextSelectAllCheckboxType: CheckboxType) => void,
  9. }
  10. const DeleteSelectedPageGroup:FC<Props> = (props:Props) => {
  11. const { t } = useTranslation();
  12. const {
  13. onClickDeleteAllButton, onClickSelectAllCheckbox, selectAllCheckboxType,
  14. } = props;
  15. const onClickCheckbox = () => {
  16. if (onClickSelectAllCheckbox != null) {
  17. const next = selectAllCheckboxType === CheckboxType.ALL_CHECKED ? CheckboxType.NONE_CHECKED : CheckboxType.ALL_CHECKED;
  18. onClickSelectAllCheckbox(next);
  19. }
  20. };
  21. const onClickDeleteButton = () => {
  22. if (onClickDeleteAllButton != null) { onClickDeleteAllButton() }
  23. };
  24. return (
  25. <div className="d-flex align-items-center">
  26. {/** todo: implement the design for CheckboxType = INDETERMINATE */}
  27. <input
  28. id="check-all-pages"
  29. type="checkbox"
  30. name="check-all-pages"
  31. className="custom-control custom-checkbox ml-1 align-self-center"
  32. disabled={props.isSelectAllCheckboxDisabled}
  33. onClick={onClickCheckbox}
  34. checked={selectAllCheckboxType !== CheckboxType.NONE_CHECKED}
  35. />
  36. <button
  37. type="button"
  38. className="btn text-danger font-weight-light p-0 ml-2"
  39. disabled={selectAllCheckboxType === CheckboxType.NONE_CHECKED}
  40. onClick={onClickDeleteButton}
  41. >
  42. <i className="icon-trash"></i>
  43. {t('search_result.delete_all_selected_page')}
  44. </button>
  45. </div>
  46. );
  47. };
  48. export default DeleteSelectedPageGroup;