From 5a068c9c014e796c832d994f00ba8a106a4bcded Mon Sep 17 00:00:00 2001 From: Rijk van Zanten Date: Wed, 1 Sep 2021 18:22:39 -0400 Subject: [PATCH] Fix branch emitter logic from grand-to-child (#7763) --- .../v-checkbox-tree/v-checkbox-tree-checkbox.vue | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/components/v-checkbox-tree/v-checkbox-tree-checkbox.vue b/app/src/components/v-checkbox-tree/v-checkbox-tree-checkbox.vue index cb9e045a20..81bfafce93 100644 --- a/app/src/components/v-checkbox-tree/v-checkbox-tree-checkbox.vue +++ b/app/src/components/v-checkbox-tree/v-checkbox-tree-checkbox.vue @@ -324,16 +324,25 @@ export default defineComponent({ props.modelValue.includes(props.value) && allChildrenRecursive.some((childVal) => rawValue.includes(childVal)) ) { + const childThatContainsSelection = props.children.find((child) => { + const childNestedValues = getRecursiveChildrenValues('all', child[props.itemChildren]); + return rawValue.some((rawVal) => childNestedValues.includes(rawVal)) === true; + }); + const newValue = [ ...rawValue.filter((val) => val !== props.value), ...(props.children || []) .filter((child) => { if (!child[props.itemChildren]) return true; - - const childNestedValues = getRecursiveChildrenValues('all', child[props.itemChildren]); - return rawValue.some((rawVal) => childNestedValues.includes(rawVal)) === false; + return child[props.itemValue] !== childThatContainsSelection?.[props.itemValue]; }) .map((child) => child[props.itemValue]), + ...(childThatContainsSelection?.[props.itemChildren] ?? []) + .filter((grandChild: Record) => { + const childNestedValues = getRecursiveChildrenValues('all', grandChild[props.itemChildren]); + return rawValue.some((rawVal) => childNestedValues.includes(rawVal)) === false; + }) + .map((grandChild: Record) => grandChild[props.itemValue]), ]; return emitValue(newValue);