mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-03 06:27:02 +03:00
Reduce JavaScript footprint
This commit is contained in:
parent
689126c57d
commit
b12852bd08
42 changed files with 240 additions and 426 deletions
|
|
@ -51,15 +51,20 @@ export class Selector {
|
|||
this.sLastUid = '';
|
||||
this.oCallbacks = {};
|
||||
|
||||
const itemSelectedThrottle = (item => this.itemSelected(item)).debounce(300);
|
||||
const
|
||||
itemSelected = item => {
|
||||
if (koList.hasChecked()) {
|
||||
item || this.oCallbacks.ItemSelect?.(null);
|
||||
} else if (item) {
|
||||
this.oCallbacks.ItemSelect?.(item);
|
||||
}
|
||||
},
|
||||
|
||||
itemSelectedThrottle = (item => itemSelected(item)).debounce(300);
|
||||
|
||||
this.listChecked.subscribe(items => {
|
||||
if (items.length) {
|
||||
if (koSelectedItem()) {
|
||||
koSelectedItem(null);
|
||||
} else {
|
||||
koSelectedItem.valueHasMutated?.();
|
||||
}
|
||||
koSelectedItem() ? koSelectedItem(null) : koSelectedItem.valueHasMutated?.();
|
||||
} else if (this.autoSelect()) {
|
||||
koSelectedItem(koFocusedItem());
|
||||
}
|
||||
|
|
@ -70,11 +75,9 @@ export class Selector {
|
|||
koSelectedItem.subscribe(item => {
|
||||
if (item) {
|
||||
koList.forEach(subItem => subItem.checked(false));
|
||||
if (selectedItemUseCallback) {
|
||||
itemSelectedThrottle(item);
|
||||
}
|
||||
} else if (selectedItemUseCallback) {
|
||||
this.itemSelected();
|
||||
selectedItemUseCallback && itemSelectedThrottle(item);
|
||||
} else {
|
||||
selectedItemUseCallback && itemSelected();
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -187,14 +190,6 @@ export class Selector {
|
|||
});
|
||||
}
|
||||
|
||||
itemSelected(item) {
|
||||
if (this.list.hasChecked()) {
|
||||
item || this.oCallbacks.ItemSelect?.(null);
|
||||
} else if (item) {
|
||||
this.oCallbacks.ItemSelect?.(item);
|
||||
}
|
||||
}
|
||||
|
||||
unselect() {
|
||||
this.selectedItem(null);
|
||||
this.focusedItem(null);
|
||||
|
|
@ -376,21 +371,17 @@ export class Selector {
|
|||
* @param {Object} item
|
||||
* @param {Object=} event
|
||||
*/
|
||||
actionClick(item, event = null) {
|
||||
actionClick(item, event) {
|
||||
if (item) {
|
||||
let click = true;
|
||||
if (event) {
|
||||
if (event.shiftKey && !event.ctrlKey && !event.metaKey && !event.altKey) {
|
||||
click = false;
|
||||
this.sLastUid || (this.sLastUid = this.getItemUid(item));
|
||||
|
||||
item.checked(!item.checked());
|
||||
|
||||
let select = true;
|
||||
if (event && !event.altKey) {
|
||||
if (event.shiftKey && !event.ctrlKey && !event.metaKey) {
|
||||
select = false;
|
||||
const uid = this.getItemUid(item);
|
||||
if (uid && this.sLastUid && uid !== this.sLastUid) {
|
||||
let changeRange = false,
|
||||
isInRange = false,
|
||||
checked = item.checked(),
|
||||
checked = !item.checked(),
|
||||
lineUid = '';
|
||||
this.list().forEach(listItem => {
|
||||
lineUid = this.getItemUid(listItem);
|
||||
|
|
@ -406,19 +397,17 @@ export class Selector {
|
|||
this.sLastUid = uid;
|
||||
|
||||
this.focusedItem(item);
|
||||
} else if (!event.shiftKey && (event.ctrlKey || event.metaKey) && !event.altKey) {
|
||||
click = false;
|
||||
} else if (!event.shiftKey && (event.ctrlKey || event.metaKey)) {
|
||||
select = false;
|
||||
this.focusedItem(item);
|
||||
|
||||
if (this.selectedItem() && item !== this.selectedItem()) {
|
||||
this.selectedItem().checked(true);
|
||||
const selected = this.selectedItem();
|
||||
if (selected && item !== selected) {
|
||||
selected.checked(true);
|
||||
}
|
||||
|
||||
item.checked(!item.checked());
|
||||
}
|
||||
}
|
||||
|
||||
click && this.selectMessageItem(item);
|
||||
select ? this.selectMessageItem(item) : item.checked(!item.checked());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue