gitea push
This commit is contained in:
+24
-3
@@ -48,7 +48,8 @@ export const makeNestedProps = propsFactory({
|
||||
export const useNested = (props, {
|
||||
items,
|
||||
returnObject,
|
||||
scrollToActive
|
||||
scrollToActive,
|
||||
valueComparator
|
||||
}) => {
|
||||
let isUnmounted = false;
|
||||
const children = shallowRef(new Map());
|
||||
@@ -103,8 +104,28 @@ export const useNested = (props, {
|
||||
return multipleOpenStrategy;
|
||||
}
|
||||
});
|
||||
const activated = useProxiedModel(props, 'activated', props.activated, v => activeStrategy.value.in(v, children.value, parents.value), v => activeStrategy.value.out(v, children.value, parents.value));
|
||||
const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(v, children.value, parents.value, disabled.value), v => selectStrategy.value.out(v, children.value, parents.value));
|
||||
const flatItems = computed(() => {
|
||||
const flat = [];
|
||||
const stack = [...items.value];
|
||||
while (stack.length) {
|
||||
const item = stack.pop();
|
||||
flat.push(item);
|
||||
if (item.children) stack.push(...item.children);
|
||||
}
|
||||
return flat;
|
||||
});
|
||||
function resolveValue(value) {
|
||||
const comparator = toValue(valueComparator);
|
||||
if (!comparator) return value;
|
||||
const _returnObject = toValue(returnObject);
|
||||
for (const item of flatItems.value) {
|
||||
const itemVal = _returnObject ? toRaw(item.raw) : item.value;
|
||||
if (comparator(value, itemVal)) return itemVal;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
const activated = useProxiedModel(props, 'activated', props.activated, v => activeStrategy.value.in(Array.isArray(v) ? v.map(resolveValue) : v, children.value, parents.value), v => activeStrategy.value.out(v, children.value, parents.value));
|
||||
const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(Array.isArray(v) ? v.map(resolveValue) : v, children.value, parents.value, disabled.value), v => selectStrategy.value.out(v, children.value, parents.value));
|
||||
onBeforeUnmount(() => {
|
||||
isUnmounted = true;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user