|
@@ -5,6 +5,7 @@ export const useSelects = <T extends { id: any }>(items: Ref<T[]>, test = false)
|
|
|
const selects = ref<T[]>([]);
|
|
|
|
|
|
const updateSelect = (item: T, select: boolean) => {
|
|
|
+ console.error('select', item.id, select)
|
|
|
const ndx = selects.value.findIndex((s) => s.id === item.id);
|
|
|
if (select) {
|
|
|
~ndx || selects.value.push(item as any);
|
|
@@ -13,10 +14,17 @@ export const useSelects = <T extends { id: any }>(items: Ref<T[]>, test = false)
|
|
|
}
|
|
|
};
|
|
|
const updateSelectId = (id: any, select: boolean) => {
|
|
|
- console.log('===>', id)
|
|
|
+ console.log('===>', [...items.value], id, select)
|
|
|
const item = items.value.find((s) => s.id === id);
|
|
|
console.log('===>', item)
|
|
|
- item && updateSelect(item, select);
|
|
|
+ if (item) {
|
|
|
+ updateSelect(item, select);
|
|
|
+ } else {
|
|
|
+ const ndx = selects.value.findIndex((s) => s.id === id);
|
|
|
+ if (~ndx) {
|
|
|
+ selects.value.splice(ndx, 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
const oldItems: T[] = [];
|
|
@@ -27,6 +35,7 @@ export const useSelects = <T extends { id: any }>(items: Ref<T[]>, test = false)
|
|
|
items.map((item) => item.id),
|
|
|
oldItems.map((item) => item.id)
|
|
|
);
|
|
|
+ console.error([...items], 'itemChange', added, deleted)
|
|
|
added.forEach((id) => updateSelectId(id, true));
|
|
|
deleted.forEach((id) => updateSelectId(id, false));
|
|
|
oldItems.length = 0;
|
|
@@ -41,6 +50,7 @@ export const useSelects = <T extends { id: any }>(items: Ref<T[]>, test = false)
|
|
|
all: computed({
|
|
|
get: () => items.value.length === selects.value.length,
|
|
|
set: (select: boolean) => {
|
|
|
+ console.error('select', select)
|
|
|
items.value.forEach(item => updateSelect(item, select))
|
|
|
}
|
|
|
}),
|