|
|
@@ -1,4 +1,4 @@
|
|
|
-import React, { FC } from 'react';
|
|
|
+import React, { FC, useMemo } from 'react';
|
|
|
import { useTranslation } from 'react-i18next';
|
|
|
import loggerFactory from '~/utils/logger';
|
|
|
import { CheckboxType } from '../../interfaces/search';
|
|
|
@@ -6,21 +6,29 @@ import { CheckboxType } from '../../interfaces/search';
|
|
|
const logger = loggerFactory('growi:searchResultList');
|
|
|
|
|
|
type Props = {
|
|
|
- checkboxState: CheckboxType,
|
|
|
+ selectedPagesCount: number,
|
|
|
+ searchedPagesCount: number,
|
|
|
onClickInvoked?: () => void,
|
|
|
- onCheckInvoked?: () => void,
|
|
|
+ onClickSelectAllCheckbox?: () => void,
|
|
|
}
|
|
|
|
|
|
const DeleteSelectedPageGroup:FC<Props> = (props:Props) => {
|
|
|
const { t } = useTranslation();
|
|
|
const {
|
|
|
- checkboxState, onClickInvoked, onCheckInvoked,
|
|
|
+ onClickInvoked, onClickSelectAllCheckbox, selectedPagesCount, searchedPagesCount,
|
|
|
} = props;
|
|
|
|
|
|
- const onCheckAllPages = () => {
|
|
|
- if (onCheckInvoked == null) { logger.error('onCheckInvoked is null') }
|
|
|
- else { onCheckInvoked() }
|
|
|
- };
|
|
|
+ const checkboxType = useMemo(() => {
|
|
|
+ switch (selectedPagesCount) {
|
|
|
+ case 0:
|
|
|
+ return CheckboxType.NONE_CHECKED;
|
|
|
+ case searchedPagesCount:
|
|
|
+ return CheckboxType.ALL_CHECKED;
|
|
|
+ default:
|
|
|
+ return CheckboxType.INDETERMINATE;
|
|
|
+ }
|
|
|
+ }, [selectedPagesCount, searchedPagesCount]);
|
|
|
+
|
|
|
|
|
|
return (
|
|
|
<>
|
|
|
@@ -31,8 +39,12 @@ const DeleteSelectedPageGroup:FC<Props> = (props:Props) => {
|
|
|
type="checkbox"
|
|
|
name="check-all-pages"
|
|
|
className="custom-control custom-checkbox ml-1 align-self-center"
|
|
|
- onClick={onCheckAllPages}
|
|
|
- checked={checkboxState !== CheckboxType.NONE_CHECKED}
|
|
|
+ onClick={() => {
|
|
|
+ if (onClickSelectAllCheckbox != null) {
|
|
|
+ onClickSelectAllCheckbox();
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ checked={checkboxType !== CheckboxType.NONE_CHECKED}
|
|
|
/>
|
|
|
<button
|
|
|
type="button"
|