From 9e1636bf3496293cfaedae54e4be465df063e2b1 Mon Sep 17 00:00:00 2001 From: Mickey Rose Date: Sat, 1 May 2021 09:13:02 +0200 Subject: [PATCH 1/2] start with all Sub Communities selected by default --- .../Filter/ChallengeFilter/index.jsx | 54 +++++++++++-------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/src/containers/Filter/ChallengeFilter/index.jsx b/src/containers/Filter/ChallengeFilter/index.jsx index d28ff5b..228215e 100644 --- a/src/containers/Filter/ChallengeFilter/index.jsx +++ b/src/containers/Filter/ChallengeFilter/index.jsx @@ -214,6 +214,8 @@ const ChallengeFilter = ({ - event !== - utils.challenge.getCommunityEvent(subCommunity) - ); - filterChange = { events: newEvents }; + const scEvent = utils.challenge.getCommunityEvent( + subCommunity + ); + filterChange.events = checked + ? _.union(filterChange.events, [scEvent]) + : _.without(filterChange.events, scEvent); } else { - const newGroups = checked - ? groups.concat( - utils.challenge.getCommunityGroup(subCommunity) - ) - : groups.filter( - (group) => - group !== - utils.challenge.getCommunityGroup(subCommunity) - ); - filterChange = { groups: newGroups }; + const scGroup = utils.challenge.getCommunityGroup( + subCommunity + ); + filterChange.groups = checked + ? _.union(filterChange.groups, [scGroup]) + : _.without(filterChange.groups, scGroup); } + // clear community filters if all sub-communities are selected + if ( + filterChange.groups.length + filterChange.events.length >= + challengeSubCommunities.length + ) { + filterChange.events = []; + filterChange.groups = []; + } updateFilter(filterChange); }} /> From 9dd72efeb08163efe7ec10f6519dc4320e57562c Mon Sep 17 00:00:00 2001 From: Mickey Rose Date: Thu, 13 May 2021 11:47:34 +0200 Subject: [PATCH 2/2] fix checkbox refresh after None => All selected --- src/components/Checkbox/index.jsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/Checkbox/index.jsx b/src/components/Checkbox/index.jsx index 3ad7a08..4c3f87c 100644 --- a/src/components/Checkbox/index.jsx +++ b/src/components/Checkbox/index.jsx @@ -11,6 +11,7 @@ import iconCheckM from "assets/icons/checkmark-medium.png"; import iconCheckS from "assets/icons/checkmark-small.png"; function Checkbox({ checked, onChange, size, errorMsg }) { + const [changeCount, setChangeCount] = useState(0); const [checkedInternal, setCheckedInternal] = useState(checked); let sizeStyle = size === "lg" ? "lgSize" : null; const imgSrc = @@ -19,12 +20,15 @@ function Checkbox({ checked, onChange, size, errorMsg }) { sizeStyle = size === "xs" ? "xsSize" : "smSize"; } const delayedOnChange = useRef( - _.debounce((q, cb) => cb(q), process.env.GUIKIT.DEBOUNCE_ON_CHANGE_TIME) // eslint-disable-line no-undef + _.debounce((q, cb) => { + cb(q); + setChangeCount((n) => n + 1); + }, process.env.GUIKIT.DEBOUNCE_ON_CHANGE_TIME) // eslint-disable-line no-undef ).current; useEffect(() => { setCheckedInternal(checked); - }, [checked]); + }, [changeCount, checked]); return (