+ |
@@ -504,7 +504,8 @@ document.addEventListener('alpine:init', function() {
viewMode: 'tree',
// Multi-select
- selectedIds: new Set(),
+ selectedIds: {},
+ selectedIdsCount: 0,
lastSelectedId: null,
// Undo
@@ -604,20 +605,20 @@ document.addEventListener('alpine:init', function() {
var end = allIds.indexOf(node.id);
if (start !== -1 && end !== -1) {
var from = Math.min(start, end), to = Math.max(start, end);
- for (var i = from; i <= to; i++) this.selectedIds.add(allIds[i]);
+ for (var i = from; i <= to; i++) this.selectedIds[allIds[i]] = true;
}
} else if (ev.ctrlKey || ev.metaKey) {
// Toggle single
- if (this.selectedIds.has(node.id)) this.selectedIds.delete(node.id);
- else this.selectedIds.add(node.id);
+ if (!!this.selectedIds[node.id]) delete this.selectedIds[node.id];
+ else this.selectedIds[node.id] = true;
} else {
// Replace selection
- this.selectedIds.clear();
- this.selectedIds.add(node.id);
+ for (var k in this.selectedIds) delete this.selectedIds[k];
+ this.selectedIds[node.id] = true;
}
this.lastSelectedId = node.id;
// Force reactivity
- this.selectedIds = new Set(this.selectedIds);
+ this.selectedIds = Object.assign({}, this.selectedIds); this.selectedIdsCount = Object.keys(this.selectedIds).length;
},
_collectVisibleIds(nodes) {
var ids = [];
@@ -628,25 +629,25 @@ document.addEventListener('alpine:init', function() {
return ids;
},
async bulkDelete() {
- var ids = Array.from(this.selectedIds);
+ var ids = Object.keys(this.selectedIds);
if (ids.length === 0) return;
if (!confirm('Delete ' + ids.length + ' selected items?')) return;
var self = this;
for (var i=0; i |