ng-virtual-list 16.1.3 → 16.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/esm2022/lib/components/ng-virtual-list-item.component.mjs +5 -4
- package/esm2022/lib/models/render-item-config.model.mjs +1 -1
- package/esm2022/lib/models/sticky-map.model.mjs +1 -1
- package/esm2022/lib/ng-virtual-list.component.mjs +8 -8
- package/esm2022/lib/utils/toggleClassName.mjs +4 -4
- package/esm2022/lib/utils/trackBox.mjs +76 -17
- package/esm2022/lib/utils/tracker.mjs +23 -3
- package/fesm2022/ng-virtual-list.mjs +111 -31
- package/fesm2022/ng-virtual-list.mjs.map +1 -1
- package/lib/models/render-item-config.model.d.ts +4 -0
- package/lib/models/sticky-map.model.d.ts +4 -2
- package/lib/ng-virtual-list.component.d.ts +1 -0
- package/lib/utils/toggleClassName.d.ts +1 -1
- package/package.json +1 -1
|
@@ -60,7 +60,17 @@ export class Tracker {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
comp.instance.item = item;
|
|
63
|
-
|
|
63
|
+
if (snapedComponent) {
|
|
64
|
+
if (item['config']['snapped'] || item['config']['snappedOut']) {
|
|
65
|
+
comp.instance.hide();
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
comp.instance.show();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
comp.instance.show();
|
|
73
|
+
}
|
|
64
74
|
untrackedItems.splice(indexByUntrackedItems, 1);
|
|
65
75
|
continue;
|
|
66
76
|
}
|
|
@@ -79,7 +89,17 @@ export class Tracker {
|
|
|
79
89
|
}
|
|
80
90
|
}
|
|
81
91
|
comp.instance.item = item;
|
|
82
|
-
|
|
92
|
+
if (snapedComponent) {
|
|
93
|
+
if (item['config']['snapped'] || item['config']['snappedOut']) {
|
|
94
|
+
comp.instance.hide();
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
comp.instance.show();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
comp.instance.show();
|
|
102
|
+
}
|
|
83
103
|
if (this._trackMap) {
|
|
84
104
|
this._trackMap[itemTrackingProperty] = comp.instance.id;
|
|
85
105
|
}
|
|
@@ -112,4 +132,4 @@ export class Tracker {
|
|
|
112
132
|
this._trackMap = null;
|
|
113
133
|
}
|
|
114
134
|
}
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL3V0aWxzL3RyYWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUE7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sT0FBTztJQUNoQjs7T0FFRztJQUNLLDBCQUEwQixHQUE2QixFQUFFLENBQUM7SUFFbEUsSUFBSSx5QkFBeUIsQ0FBQyxDQUEyQjtRQUNyRCxJQUFJLElBQUksQ0FBQywwQkFBMEIsS0FBSyxDQUFDLEVBQUU7WUFDdkMsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLDBCQUEwQixHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSx5QkFBeUI7UUFDekIsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ssU0FBUyxHQUFnRCxFQUFFLENBQUM7SUFFcEUsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFTyxxQkFBcUIsQ0FBVTtJQUV2QyxJQUFJLG9CQUFvQixDQUFDLENBQVM7UUFDOUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWSxvQkFBNEI7UUFDcEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLG9CQUFvQixDQUFDO0lBQ3RELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFpQixFQUFFLFVBQWtDLEVBQUUsZUFBbUQsRUFDNUcsU0FBMEI7UUFDMUIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU87U0FDVjtRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxjQUFjLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLE1BQU0sR0FBRyxTQUFTLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FB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Q29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTY3JvbGxEaXJlY3Rpb24gfSBmcm9tIFwiLi4vbW9kZWxzXCI7XHJcblxyXG50eXBlIFRyYWNraW5nUHJvcGVydHlJZCA9IHN0cmluZyB8IG51bWJlcjtcclxuXHJcbmludGVyZmFjZSBJVmlydHVhbExpc3RJdGVtQ29tcG9uZW50PEkgPSBhbnk+IHtcclxuICAgIGlkOiBudW1iZXI7XHJcbiAgICBpdGVtOiBJO1xyXG4gICAgc2hvdzogKCkgPT4gdm9pZDtcclxuICAgIGhpZGU6ICgpID0+IHZvaWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUcmFja3MgZGlzcGxheSBpdGVtcyBieSBwcm9wZXJ0eVxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNi54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL3V0aWxzL3RyYWNrZXIudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFRyYWNrZXI8SSA9IGFueSwgQyBleHRlbmRzIElWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgPSBhbnk+IHtcclxuICAgIC8qKlxyXG4gICAgICogZGlzcGxheSBvYmplY3RzIGRpY3Rpb25hcnkgb2YgaW5kZXhlcyBieSBpZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kaXNwbGF5T2JqZWN0SW5kZXhNYXBCeUlkOiB7IFtpZDogbnVtYmVyXTogbnVtYmVyIH0gPSB7fTtcclxuXHJcbiAgICBzZXQgZGlzcGxheU9iamVjdEluZGV4TWFwQnlJZCh2OiB7IFtpZDogbnVtYmVyXTogbnVtYmVyIH0pIHtcclxuICAgICAgICBpZiAodGhpcy5fZGlzcGxheU9iamVjdEluZGV4TWFwQnlJZCA9PT0gdikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9kaXNwbGF5T2JqZWN0SW5kZXhNYXBCeUlkID0gdjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGlzcGxheU9iamVjdEluZGV4TWFwQnlJZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheU9iamVjdEluZGV4TWFwQnlJZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERpY3Rpb25hcnkgZGlzcGxheUl0ZW1zIHByb3BlcnR5TmFtZUlkIGJ5IGl0ZW1zIHByb3BlcnR5TmFtZUlkXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3RyYWNrTWFwOiB7IFtpZDogVHJhY2tpbmdQcm9wZXJ0eUlkXTogbnVtYmVyIH0gfCBudWxsID0ge307XHJcblxyXG4gICAgZ2V0IHRyYWNrTWFwKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90cmFja01hcDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF90cmFja2luZ1Byb3BlcnR5TmFtZSE6IHN0cmluZztcclxuXHJcbiAgICBzZXQgdHJhY2tpbmdQcm9wZXJ0eU5hbWUodjogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fdHJhY2tpbmdQcm9wZXJ0eU5hbWUgPSB2O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHRyYWNraW5nUHJvcGVydHlOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl90cmFja2luZ1Byb3BlcnR5TmFtZSA9IHRyYWNraW5nUHJvcGVydHlOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogdHJhY2tpbmcgYnkgcHJvcE5hbWVcclxuICAgICAqL1xyXG4gICAgdHJhY2soaXRlbXM6IEFycmF5PGFueT4sIGNvbXBvbmVudHM6IEFycmF5PENvbXBvbmVudFJlZjxDPj4sIHNuYXBlZENvbXBvbmVudDogQ29tcG9uZW50UmVmPEM+IHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICAgICAgICBkaXJlY3Rpb246IFNjcm9sbERpcmVjdGlvbik6IHZvaWQge1xyXG4gICAgICAgIGlmICghaXRlbXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaWRQcm9wTmFtZSA9IHRoaXMuX3RyYWNraW5nUHJvcGVydHlOYW1lLCB1bnRyYWNrZWRJdGVtcyA9IFsuLi5jb21wb25lbnRzXSwgaXNEb3duID0gZGlyZWN0aW9uID09PSAwIHx8IGRpcmVjdGlvbiA9PT0gMTtcclxuICAgICAgICBsZXQgaXNSZWd1bGFyU25hcHBlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gaXNEb3duID8gMCA6IGl0ZW1zLmxlbmd0aCAtIDEsIGwgPSBpc0Rvd24gPyBpdGVtcy5sZW5ndGggOiAwOyBpc0Rvd24gPyBpIDwgbCA6IGkgPj0gbDsgaXNEb3duID8gaSsrIDogaS0tKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpXSwgaXRlbVRyYWNraW5nUHJvcGVydHkgPSBpdGVtW2lkUHJvcE5hbWVdO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX3RyYWNrTWFwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJhY2tNYXAuaGFzT3duUHJvcGVydHkoaXRlbVRyYWNraW5nUHJvcGVydHkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlJZCA9IHRoaXMuX3RyYWNrTWFwW2l0ZW1UcmFja2luZ1Byb3BlcnR5XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcEluZGV4ID0gdGhpcy5fZGlzcGxheU9iamVjdEluZGV4TWFwQnlJZFtkaUlkXSwgY29tcCA9IGNvbXBvbmVudHNbY29tcEluZGV4XTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcElkID0gY29tcD8uaW5zdGFuY2U/LmlkO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wICE9PSB1bmRlZmluZWQgJiYgY29tcElkID09PSBkaUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4QnlVbnRyYWNrZWRJdGVtcyA9IHVudHJhY2tlZEl0ZW1zLmZpbmRJbmRleCh2ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2Lmluc3RhbmNlLmlkID09PSBjb21wSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXhCeVVudHJhY2tlZEl0ZW1zID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzbmFwZWRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVsnY29uZmlnJ11bJ3NuYXBwZWQnXSB8fCBpdGVtWydjb25maWcnXVsnc25hcHBlZE91dCddKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVndWxhclNuYXBwZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwZWRDb21wb25lbnQuaW5zdGFuY2UuaXRlbSA9IGl0ZW07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBlZENvbXBvbmVudC5pbnN0YW5jZS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5pdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2Uuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW50cmFja2VkSXRlbXMuc3BsaWNlKGluZGV4QnlVbnRyYWNrZWRJdGVtcywgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdHJhY2tNYXBbaXRlbVRyYWNraW5nUHJvcGVydHldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodW50cmFja2VkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29tcCA9IHVudHJhY2tlZEl0ZW1zLnNoaWZ0KCksIGl0ZW0gPSBpdGVtc1tpXTtcclxuICAgICAgICAgICAgICAgIGlmIChjb21wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNuYXBlZENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVsnY29uZmlnJ11bJ3NuYXBwZWQnXSB8fCBpdGVtWydjb25maWcnXVsnc25hcHBlZE91dCddKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlZ3VsYXJTbmFwcGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBlZENvbXBvbmVudC5pbnN0YW5jZS5pdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBlZENvbXBvbmVudC5pbnN0YW5jZS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5pdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLnNob3coKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RyYWNrTWFwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYWNrTWFwW2l0ZW1UcmFja2luZ1Byb3BlcnR5XSA9IGNvbXAuaW5zdGFuY2UuaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodW50cmFja2VkSXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gdW50cmFja2VkSXRlbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wID0gdW50cmFja2VkSXRlbXNbaV07XHJcbiAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLmhpZGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFpc1JlZ3VsYXJTbmFwcGVkKSB7XHJcbiAgICAgICAgICAgIGlmIChzbmFwZWRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgIHNuYXBlZENvbXBvbmVudC5pbnN0YW5jZS5pdGVtID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHNuYXBlZENvbXBvbmVudC5pbnN0YW5jZS5oaWRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdW50cmFja0NvbXBvbmVudEJ5SWRQcm9wZXJ0eShjb21wb25lbnQ/OiBDKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFjb21wb25lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcHJvcGVydHlJZE5hbWUgPSB0aGlzLl90cmFja2luZ1Byb3BlcnR5TmFtZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3RyYWNrTWFwICYmIChjb21wb25lbnQgYXMgYW55KVtwcm9wZXJ0eUlkTmFtZV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBkZWxldGUgdGhpcy5fdHJhY2tNYXBbcHJvcGVydHlJZE5hbWVdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBkaXNwb3NlKCkge1xyXG4gICAgICAgIHRoaXMuX3RyYWNrTWFwID0gbnVsbDtcclxuICAgIH1cclxufSJdfQ==
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL3V0aWxzL3RyYWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUE7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sT0FBTztJQUNoQjs7T0FFRztJQUNLLDBCQUEwQixHQUE2QixFQUFFLENBQUM7SUFFbEUsSUFBSSx5QkFBeUIsQ0FBQyxDQUEyQjtRQUNyRCxJQUFJLElBQUksQ0FBQywwQkFBMEIsS0FBSyxDQUFDLEVBQUU7WUFDdkMsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLDBCQUEwQixHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSx5QkFBeUI7UUFDekIsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ssU0FBUyxHQUFnRCxFQUFFLENBQUM7SUFFcEUsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFTyxxQkFBcUIsQ0FBVTtJQUV2QyxJQUFJLG9CQUFvQixDQUFDLENBQVM7UUFDOUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWSxvQkFBNEI7UUFDcEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLG9CQUFvQixDQUFDO0lBQ3RELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFpQixFQUFFLFVBQWtDLEVBQUUsZUFBbUQsRUFDNUcsU0FBMEI7UUFDMUIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU87U0FDVjtRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxjQUFjLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLE1BQU0sR0FBRyxTQUFTLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FB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O1NBQ0o7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDbkIsSUFBSSxlQUFlLEVBQUU7Z0JBQ2pCLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDckMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNuQztTQUNKO0lBQ0wsQ0FBQztJQUVELDRCQUE0QixDQUFDLFNBQWE7UUFDdEMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNaLE9BQU87U0FDVjtRQUVELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztRQUVsRCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUssU0FBaUIsQ0FBQyxjQUFjLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDcEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTY3JvbGxEaXJlY3Rpb24gfSBmcm9tIFwiLi4vbW9kZWxzXCI7XHJcblxyXG50eXBlIFRyYWNraW5nUHJvcGVydHlJZCA9IHN0cmluZyB8IG51bWJlcjtcclxuXHJcbmludGVyZmFjZSBJVmlydHVhbExpc3RJdGVtQ29tcG9uZW50PEkgPSBhbnk+IHtcclxuICAgIGlkOiBudW1iZXI7XHJcbiAgICBpdGVtOiBJO1xyXG4gICAgc2hvdzogKCkgPT4gdm9pZDtcclxuICAgIGhpZGU6ICgpID0+IHZvaWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUcmFja3MgZGlzcGxheSBpdGVtcyBieSBwcm9wZXJ0eVxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNi54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL3V0aWxzL3RyYWNrZXIudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFRyYWNrZXI8SSA9IGFueSwgQyBleHRlbmRzIElWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgPSBhbnk+IHtcclxuICAgIC8qKlxyXG4gICAgICogZGlzcGxheSBvYmplY3RzIGRpY3Rpb25hcnkgb2YgaW5kZXhlcyBieSBpZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kaXNwbGF5T2JqZWN0SW5kZXhNYXBCeUlkOiB7IFtpZDogbnVtYmVyXTogbnVtYmVyIH0gPSB7fTtcclxuXHJcbiAgICBzZXQgZGlzcGxheU9iamVjdEluZGV4TWFwQnlJZCh2OiB7IFtpZDogbnVtYmVyXTogbnVtYmVyIH0pIHtcclxuICAgICAgICBpZiAodGhpcy5fZGlzcGxheU9iamVjdEluZGV4TWFwQnlJZCA9PT0gdikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9kaXNwbGF5T2JqZWN0SW5kZXhNYXBCeUlkID0gdjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGlzcGxheU9iamVjdEluZGV4TWFwQnlJZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheU9iamVjdEluZGV4TWFwQnlJZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERpY3Rpb25hcnkgZGlzcGxheUl0ZW1zIHByb3BlcnR5TmFtZUlkIGJ5IGl0ZW1zIHByb3BlcnR5TmFtZUlkXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3RyYWNrTWFwOiB7IFtpZDogVHJhY2tpbmdQcm9wZXJ0eUlkXTogbnVtYmVyIH0gfCBudWxsID0ge307XHJcblxyXG4gICAgZ2V0IHRyYWNrTWFwKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90cmFja01hcDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF90cmFja2luZ1Byb3BlcnR5TmFtZSE6IHN0cmluZztcclxuXHJcbiAgICBzZXQgdHJhY2tpbmdQcm9wZXJ0eU5hbWUodjogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fdHJhY2tpbmdQcm9wZXJ0eU5hbWUgPSB2O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHRyYWNraW5nUHJvcGVydHlOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl90cmFja2luZ1Byb3BlcnR5TmFtZSA9IHRyYWNraW5nUHJvcGVydHlOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogdHJhY2tpbmcgYnkgcHJvcE5hbWVcclxuICAgICAqL1xyXG4gICAgdHJhY2soaXRlbXM6IEFycmF5PGFueT4sIGNvbXBvbmVudHM6IEFycmF5PENvbXBvbmVudFJlZjxDPj4sIHNuYXBlZENvbXBvbmVudDogQ29tcG9uZW50UmVmPEM+IHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICAgICAgICBkaXJlY3Rpb246IFNjcm9sbERpcmVjdGlvbik6IHZvaWQge1xyXG4gICAgICAgIGlmICghaXRlbXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaWRQcm9wTmFtZSA9IHRoaXMuX3RyYWNraW5nUHJvcGVydHlOYW1lLCB1bnRyYWNrZWRJdGVtcyA9IFsuLi5jb21wb25lbnRzXSwgaXNEb3duID0gZGlyZWN0aW9uID09PSAwIHx8IGRpcmVjdGlvbiA9PT0gMTtcclxuICAgICAgICBsZXQgaXNSZWd1bGFyU25hcHBlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gaXNEb3duID8gMCA6IGl0ZW1zLmxlbmd0aCAtIDEsIGwgPSBpc0Rvd24gPyBpdGVtcy5sZW5ndGggOiAwOyBpc0Rvd24gPyBpIDwgbCA6IGkgPj0gbDsgaXNEb3duID8gaSsrIDogaS0tKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpXSwgaXRlbVRyYWNraW5nUHJvcGVydHkgPSBpdGVtW2lkUHJvcE5hbWVdO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX3RyYWNrTWFwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJhY2tNYXAuaGFzT3duUHJvcGVydHkoaXRlbVRyYWNraW5nUHJvcGVydHkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlJZCA9IHRoaXMuX3RyYWNrTWFwW2l0ZW1UcmFja2luZ1Byb3BlcnR5XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcEluZGV4ID0gdGhpcy5fZGlzcGxheU9iamVjdEluZGV4TWFwQnlJZFtkaUlkXSwgY29tcCA9IGNvbXBvbmVudHNbY29tcEluZGV4XTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcElkID0gY29tcD8uaW5zdGFuY2U/LmlkO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wICE9PSB1bmRlZmluZWQgJiYgY29tcElkID09PSBkaUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4QnlVbnRyYWNrZWRJdGVtcyA9IHVudHJhY2tlZEl0ZW1zLmZpbmRJbmRleCh2ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2Lmluc3RhbmNlLmlkID09PSBjb21wSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXhCeVVudHJhY2tlZEl0ZW1zID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzbmFwZWRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVsnY29uZmlnJ11bJ3NuYXBwZWQnXSB8fCBpdGVtWydjb25maWcnXVsnc25hcHBlZE91dCddKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVndWxhclNuYXBwZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwZWRDb21wb25lbnQuaW5zdGFuY2UuaXRlbSA9IGl0ZW07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBlZENvbXBvbmVudC5pbnN0YW5jZS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5pdGVtID0gaXRlbTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc25hcGVkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1bJ2NvbmZpZyddWydzbmFwcGVkJ10gfHwgaXRlbVsnY29uZmlnJ11bJ3NuYXBwZWRPdXQnXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2Uuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW50cmFja2VkSXRlbXMuc3BsaWNlKGluZGV4QnlVbnRyYWNrZWRJdGVtcywgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdHJhY2tNYXBbaXRlbVRyYWNraW5nUHJvcGVydHldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodW50cmFja2VkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29tcCA9IHVudHJhY2tlZEl0ZW1zLnNoaWZ0KCksIGl0ZW0gPSBpdGVtc1tpXTtcclxuICAgICAgICAgICAgICAgIGlmIChjb21wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNuYXBlZENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVsnY29uZmlnJ11bJ3NuYXBwZWQnXSB8fCBpdGVtWydjb25maWcnXVsnc25hcHBlZE91dCddKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlZ3VsYXJTbmFwcGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBlZENvbXBvbmVudC5pbnN0YW5jZS5pdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBlZENvbXBvbmVudC5pbnN0YW5jZS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5pdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc25hcGVkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtWydjb25maWcnXVsnc25hcHBlZCddIHx8IGl0ZW1bJ2NvbmZpZyddWydzbmFwcGVkT3V0J10pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2UuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl90cmFja01hcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFja01hcFtpdGVtVHJhY2tpbmdQcm9wZXJ0eV0gPSBjb21wLmluc3RhbmNlLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHVudHJhY2tlZEl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IHVudHJhY2tlZEl0ZW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29tcCA9IHVudHJhY2tlZEl0ZW1zW2ldO1xyXG4gICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5oaWRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghaXNSZWd1bGFyU25hcHBlZCkge1xyXG4gICAgICAgICAgICBpZiAoc25hcGVkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICBzbmFwZWRDb21wb25lbnQuaW5zdGFuY2UuaXRlbSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBzbmFwZWRDb21wb25lbnQuaW5zdGFuY2UuaGlkZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVudHJhY2tDb21wb25lbnRCeUlkUHJvcGVydHkoY29tcG9uZW50PzogQyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHByb3BlcnR5SWROYW1lID0gdGhpcy5fdHJhY2tpbmdQcm9wZXJ0eU5hbWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl90cmFja01hcCAmJiAoY29tcG9uZW50IGFzIGFueSlbcHJvcGVydHlJZE5hbWVdICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3RyYWNrTWFwW3Byb3BlcnR5SWROYW1lXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZGlzcG9zZSgpIHtcclxuICAgICAgICB0aGlzLl90cmFja01hcCA9IG51bGw7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -142,9 +142,10 @@ class NgVirtualListItemComponent {
|
|
|
142
142
|
const data = this.data, regular = this.regular, length = this._regularLength;
|
|
143
143
|
if (data) {
|
|
144
144
|
const styles = this._elementRef.nativeElement.style;
|
|
145
|
-
styles.zIndex =
|
|
145
|
+
styles.zIndex = data.config.zIndex;
|
|
146
146
|
if (data.config.snapped) {
|
|
147
|
-
styles.transform = ZEROS_TRANSLATE_3D
|
|
147
|
+
styles.transform = data.config.sticky === 1 ? ZEROS_TRANSLATE_3D : `${TRANSLATE_3D}(${data.config.isVertical ? 0 : data.measures.x}${PX}, ${data.config.isVertical ? data.measures.y : 0}${PX} , 0)`;
|
|
148
|
+
;
|
|
148
149
|
if (!data.config.isSnappingMethodAdvanced) {
|
|
149
150
|
styles.position = POSITION_STICKY;
|
|
150
151
|
}
|
|
@@ -181,7 +182,7 @@ class NgVirtualListItemComponent {
|
|
|
181
182
|
}
|
|
182
183
|
styles.visibility = VISIBILITY_VISIBLE;
|
|
183
184
|
}
|
|
184
|
-
styles.zIndex =
|
|
185
|
+
styles.zIndex = this.data?.config?.zIndex ?? DEFAULT_ZINDEX;
|
|
185
186
|
}
|
|
186
187
|
hide() {
|
|
187
188
|
const styles = this._elementRef.nativeElement.style;
|
|
@@ -262,12 +263,12 @@ const debounce = (cb, debounceTime = 0) => {
|
|
|
262
263
|
* @author Evgenii Grebennikov
|
|
263
264
|
* @email djonnyx@gmail.com
|
|
264
265
|
*/
|
|
265
|
-
const toggleClassName = (el, className,
|
|
266
|
+
const toggleClassName = (el, className, removeClassName) => {
|
|
266
267
|
if (!el.classList.contains(className)) {
|
|
267
268
|
el.classList.add(className);
|
|
268
269
|
}
|
|
269
|
-
|
|
270
|
-
el.classList.remove(
|
|
270
|
+
if (removeClassName) {
|
|
271
|
+
el.classList.remove(removeClassName);
|
|
271
272
|
}
|
|
272
273
|
};
|
|
273
274
|
|
|
@@ -333,7 +334,17 @@ class Tracker {
|
|
|
333
334
|
}
|
|
334
335
|
}
|
|
335
336
|
comp.instance.item = item;
|
|
336
|
-
|
|
337
|
+
if (snapedComponent) {
|
|
338
|
+
if (item['config']['snapped'] || item['config']['snappedOut']) {
|
|
339
|
+
comp.instance.hide();
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
comp.instance.show();
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
comp.instance.show();
|
|
347
|
+
}
|
|
337
348
|
untrackedItems.splice(indexByUntrackedItems, 1);
|
|
338
349
|
continue;
|
|
339
350
|
}
|
|
@@ -352,7 +363,17 @@ class Tracker {
|
|
|
352
363
|
}
|
|
353
364
|
}
|
|
354
365
|
comp.instance.item = item;
|
|
355
|
-
|
|
366
|
+
if (snapedComponent) {
|
|
367
|
+
if (item['config']['snapped'] || item['config']['snappedOut']) {
|
|
368
|
+
comp.instance.hide();
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
comp.instance.show();
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
comp.instance.show();
|
|
376
|
+
}
|
|
356
377
|
if (this._trackMap) {
|
|
357
378
|
this._trackMap[itemTrackingProperty] = comp.instance.id;
|
|
358
379
|
}
|
|
@@ -970,7 +991,7 @@ class TrackBox extends CacheMap {
|
|
|
970
991
|
}
|
|
971
992
|
}
|
|
972
993
|
if (deletedItemsMap.hasOwnProperty(i)) {
|
|
973
|
-
const bounds = deletedItemsMap[i], size = bounds[sizeProperty] ?? typicalItemSize;
|
|
994
|
+
const bounds = deletedItemsMap[i], size = bounds?.[sizeProperty] ?? typicalItemSize;
|
|
974
995
|
if (y < scrollSize - size) {
|
|
975
996
|
leftSizeOfDeletedItems += size;
|
|
976
997
|
}
|
|
@@ -978,7 +999,7 @@ class TrackBox extends CacheMap {
|
|
|
978
999
|
totalSize += componentSize;
|
|
979
1000
|
if (isFromId) {
|
|
980
1001
|
if (itemById === undefined) {
|
|
981
|
-
if (id !== fromItemId && stickyMap && stickyMap[id]
|
|
1002
|
+
if (id !== fromItemId && stickyMap && stickyMap[id] === 1) {
|
|
982
1003
|
stickyComponentSize = componentSize;
|
|
983
1004
|
stickyCollectionItem = collectionItem;
|
|
984
1005
|
}
|
|
@@ -1174,19 +1195,19 @@ class TrackBox extends CacheMap {
|
|
|
1174
1195
|
this.bumpVersion();
|
|
1175
1196
|
}
|
|
1176
1197
|
generateDisplayCollection(items, stickyMap, metrics) {
|
|
1177
|
-
const { normalizedItemWidth, normalizedItemHeight, dynamicSize, itemsFromStartToScrollEnd, isVertical, renderItems: renderItemsLength, scrollSize, sizeProperty, snap, snippedPos, startPosition, totalLength, startIndex, typicalItemSize, } = metrics, displayItems = [];
|
|
1198
|
+
const { width, height, normalizedItemWidth, normalizedItemHeight, dynamicSize, itemsOnDisplayLength, itemsFromStartToScrollEnd, isVertical, renderItems: renderItemsLength, scrollSize, sizeProperty, snap, snippedPos, startPosition, totalLength, startIndex, typicalItemSize, } = metrics, displayItems = [];
|
|
1178
1199
|
if (items.length) {
|
|
1179
|
-
const actualSnippedPosition = snippedPos, isSnappingMethodAdvanced = this.isSnappingMethodAdvanced;
|
|
1180
|
-
let pos = startPosition, renderItems = renderItemsLength, stickyItem, nextSticky, stickyItemIndex = -1, stickyItemSize = 0;
|
|
1200
|
+
const actualSnippedPosition = snippedPos, isSnappingMethodAdvanced = this.isSnappingMethodAdvanced, boundsSize = isVertical ? height : width, actualEndSnippedPosition = boundsSize;
|
|
1201
|
+
let pos = startPosition, renderItems = renderItemsLength, stickyItem, nextSticky, stickyItemIndex = -1, stickyItemSize = 0, endStickyItem, nextEndSticky, endStickyItemIndex = -1, endStickyItemSize = 0;
|
|
1181
1202
|
if (snap) {
|
|
1182
1203
|
for (let i = Math.min(itemsFromStartToScrollEnd > 0 ? itemsFromStartToScrollEnd : 0, totalLength - 1); i >= 0; i--) {
|
|
1183
1204
|
const id = items[i].id, sticky = stickyMap[id], size = dynamicSize ? this.get(id)?.[sizeProperty] || typicalItemSize : typicalItemSize;
|
|
1184
|
-
if (sticky
|
|
1205
|
+
if (sticky === 1) {
|
|
1185
1206
|
const measures = {
|
|
1186
1207
|
x: isVertical ? 0 : actualSnippedPosition,
|
|
1187
1208
|
y: isVertical ? actualSnippedPosition : 0,
|
|
1188
|
-
width: normalizedItemWidth,
|
|
1189
|
-
height: normalizedItemHeight,
|
|
1209
|
+
width: isVertical ? normalizedItemWidth : size,
|
|
1210
|
+
height: isVertical ? size : normalizedItemHeight,
|
|
1190
1211
|
delta: 0,
|
|
1191
1212
|
}, config = {
|
|
1192
1213
|
isVertical,
|
|
@@ -1196,6 +1217,7 @@ class TrackBox extends CacheMap {
|
|
|
1196
1217
|
snappedOut: false,
|
|
1197
1218
|
dynamic: dynamicSize,
|
|
1198
1219
|
isSnappingMethodAdvanced,
|
|
1220
|
+
zIndex: '1',
|
|
1199
1221
|
};
|
|
1200
1222
|
const itemData = items[i];
|
|
1201
1223
|
stickyItem = { id, measures, data: itemData, config };
|
|
@@ -1206,18 +1228,50 @@ class TrackBox extends CacheMap {
|
|
|
1206
1228
|
}
|
|
1207
1229
|
}
|
|
1208
1230
|
}
|
|
1231
|
+
if (snap) {
|
|
1232
|
+
const startIndex = itemsFromStartToScrollEnd + itemsOnDisplayLength - 1;
|
|
1233
|
+
for (let i = Math.min(startIndex, totalLength > 0 ? totalLength - 1 : 0), l = totalLength; i < l; i++) {
|
|
1234
|
+
const id = items[i].id, sticky = stickyMap[id], size = dynamicSize
|
|
1235
|
+
? this.get(id)?.[sizeProperty] || typicalItemSize
|
|
1236
|
+
: typicalItemSize;
|
|
1237
|
+
if (sticky === 2) {
|
|
1238
|
+
const w = isVertical ? normalizedItemWidth : size, h = isVertical ? size : normalizedItemHeight, measures = {
|
|
1239
|
+
x: isVertical ? 0 : actualEndSnippedPosition - w,
|
|
1240
|
+
y: isVertical ? actualEndSnippedPosition - h : 0,
|
|
1241
|
+
width: w,
|
|
1242
|
+
height: h,
|
|
1243
|
+
delta: 0,
|
|
1244
|
+
}, config = {
|
|
1245
|
+
isVertical,
|
|
1246
|
+
sticky,
|
|
1247
|
+
snap,
|
|
1248
|
+
snapped: true,
|
|
1249
|
+
snappedOut: false,
|
|
1250
|
+
dynamic: dynamicSize,
|
|
1251
|
+
isSnappingMethodAdvanced,
|
|
1252
|
+
zIndex: '1',
|
|
1253
|
+
};
|
|
1254
|
+
const itemData = items[i];
|
|
1255
|
+
endStickyItem = { id, measures, data: itemData, config };
|
|
1256
|
+
endStickyItemIndex = i;
|
|
1257
|
+
endStickyItemSize = size;
|
|
1258
|
+
displayItems.push(endStickyItem);
|
|
1259
|
+
break;
|
|
1260
|
+
}
|
|
1261
|
+
}
|
|
1262
|
+
}
|
|
1209
1263
|
let i = startIndex;
|
|
1210
1264
|
while (renderItems > 0) {
|
|
1211
1265
|
if (i >= totalLength) {
|
|
1212
1266
|
break;
|
|
1213
1267
|
}
|
|
1214
1268
|
const id = items[i].id, size = dynamicSize ? this.get(id)?.[sizeProperty] || typicalItemSize : typicalItemSize;
|
|
1215
|
-
if (id !== stickyItem?.id) {
|
|
1216
|
-
const snapped = snap && stickyMap[id]
|
|
1217
|
-
x: isVertical ? 0 : pos,
|
|
1218
|
-
y: isVertical ? pos : 0,
|
|
1219
|
-
width: normalizedItemWidth,
|
|
1220
|
-
height: normalizedItemHeight,
|
|
1269
|
+
if (id !== stickyItem?.id && id !== endStickyItem?.id) {
|
|
1270
|
+
const snapped = snap && (stickyMap[id] === 1 && pos <= scrollSize || stickyMap[id] === 2 && pos >= scrollSize + boundsSize - size), measures = {
|
|
1271
|
+
x: isVertical ? stickyMap[id] === 1 ? 0 : boundsSize - size : pos,
|
|
1272
|
+
y: isVertical ? pos : stickyMap[id] === 2 ? boundsSize - size : 0,
|
|
1273
|
+
width: isVertical ? normalizedItemWidth : size,
|
|
1274
|
+
height: isVertical ? size : normalizedItemHeight,
|
|
1221
1275
|
delta: 0,
|
|
1222
1276
|
}, config = {
|
|
1223
1277
|
isVertical,
|
|
@@ -1227,15 +1281,28 @@ class TrackBox extends CacheMap {
|
|
|
1227
1281
|
snappedOut: false,
|
|
1228
1282
|
dynamic: dynamicSize,
|
|
1229
1283
|
isSnappingMethodAdvanced,
|
|
1284
|
+
zIndex: '0',
|
|
1230
1285
|
};
|
|
1286
|
+
if (snapped) {
|
|
1287
|
+
config.zIndex = '2';
|
|
1288
|
+
}
|
|
1231
1289
|
const itemData = items[i];
|
|
1232
1290
|
const item = { id, measures, data: itemData, config };
|
|
1233
|
-
if (!nextSticky && stickyItemIndex < i && stickyMap[id]
|
|
1291
|
+
if (!nextSticky && stickyItemIndex < i && stickyMap[id] === 1 && (pos <= scrollSize + size + stickyItemSize)) {
|
|
1234
1292
|
item.measures.x = isVertical ? 0 : snapped ? actualSnippedPosition : pos;
|
|
1235
1293
|
item.measures.y = isVertical ? snapped ? actualSnippedPosition : pos : 0;
|
|
1236
1294
|
nextSticky = item;
|
|
1237
1295
|
nextSticky.config.snapped = snapped;
|
|
1238
|
-
nextSticky.measures.delta = isVertical ? item.measures.y - scrollSize : item.measures.x - scrollSize;
|
|
1296
|
+
nextSticky.measures.delta = isVertical ? (item.measures.y - scrollSize) : (item.measures.x - scrollSize);
|
|
1297
|
+
nextSticky.config.zIndex = '3';
|
|
1298
|
+
}
|
|
1299
|
+
else if (!nextEndSticky && endStickyItemIndex > i && stickyMap[id] === 2 && (pos >= scrollSize + boundsSize - size - endStickyItemSize)) {
|
|
1300
|
+
item.measures.x = isVertical ? 0 : snapped ? actualEndSnippedPosition - size : pos;
|
|
1301
|
+
item.measures.y = isVertical ? snapped ? actualEndSnippedPosition - size : pos : 0;
|
|
1302
|
+
nextEndSticky = item;
|
|
1303
|
+
nextEndSticky.config.zIndex = '3';
|
|
1304
|
+
nextEndSticky.config.snapped = snapped;
|
|
1305
|
+
nextEndSticky.measures.delta = isVertical ? (item.measures.y - scrollSize) : (item.measures.x - scrollSize);
|
|
1239
1306
|
}
|
|
1240
1307
|
displayItems.push(item);
|
|
1241
1308
|
}
|
|
@@ -1257,6 +1324,19 @@ class TrackBox extends CacheMap {
|
|
|
1257
1324
|
nextSticky.measures.delta = isVertical ? nextSticky.measures.y - scrollSize : nextSticky.measures.x - scrollSize;
|
|
1258
1325
|
}
|
|
1259
1326
|
}
|
|
1327
|
+
if (nextEndSticky && endStickyItem && nextEndSticky.measures[axis] >= scrollSize + boundsSize - endStickyItemSize - nextEndSticky.measures[sizeProperty]) {
|
|
1328
|
+
if (nextEndSticky.measures[axis] < scrollSize + boundsSize - endStickyItemSize) {
|
|
1329
|
+
endStickyItem.measures[axis] = nextEndSticky.measures[axis] + nextEndSticky.measures[sizeProperty];
|
|
1330
|
+
endStickyItem.config.snapped = nextEndSticky.config.snapped = false;
|
|
1331
|
+
endStickyItem.config.snappedOut = true;
|
|
1332
|
+
endStickyItem.config.sticky = 2;
|
|
1333
|
+
endStickyItem.measures.delta = isVertical ? endStickyItem.measures.y - scrollSize : endStickyItem.measures.x - scrollSize;
|
|
1334
|
+
}
|
|
1335
|
+
else {
|
|
1336
|
+
nextEndSticky.config.snapped = true;
|
|
1337
|
+
nextEndSticky.measures.delta = isVertical ? nextEndSticky.measures.y - scrollSize : nextEndSticky.measures.x - scrollSize;
|
|
1338
|
+
}
|
|
1339
|
+
}
|
|
1260
1340
|
}
|
|
1261
1341
|
return displayItems;
|
|
1262
1342
|
}
|
|
@@ -1558,6 +1638,7 @@ class NgVirtualListComponent {
|
|
|
1558
1638
|
;
|
|
1559
1639
|
get snappingMethod() { return this._$snappingMethod.getValue(); }
|
|
1560
1640
|
_isSnappingMethodAdvanced = this.getIsSnappingMethodAdvanced();
|
|
1641
|
+
get isSnappingMethodAdvanced() { return this._isSnappingMethodAdvanced; }
|
|
1561
1642
|
_displayComponents = [];
|
|
1562
1643
|
_snapedDisplayComponent;
|
|
1563
1644
|
_$bounds = new BehaviorSubject(null);
|
|
@@ -1574,12 +1655,12 @@ class NgVirtualListComponent {
|
|
|
1574
1655
|
if (isScrollBarOverlap && IS_FIREFOX) {
|
|
1575
1656
|
scrollBarSize = overlapScrollBarSize = FIREFOX_SCROLLBAR_OVERLAP_SIZE;
|
|
1576
1657
|
}
|
|
1577
|
-
|
|
1658
|
+
const { width: sWidth, height: sHeight } = snappedComponent.getBounds() ?? { width: 0, height: 0 };
|
|
1659
|
+
snappedComponent.element.style.clipPath = `path("M 0 0 L 0 ${sHeight} L ${sWidth - overlapScrollBarSize} ${sHeight} L ${sWidth - overlapScrollBarSize} 0 Z")`;
|
|
1578
1660
|
snappedComponent.regularLength = `${isVertical ? listBounds.width : listBounds.height}${PX}`;
|
|
1579
|
-
const
|
|
1661
|
+
const containerElement = container.nativeElement, delta = snappedComponent.item?.measures.delta ?? 0;
|
|
1580
1662
|
let left, right, top, bottom;
|
|
1581
1663
|
if (isVertical) {
|
|
1582
|
-
const snappedY = snappedComponent.item?.measures.y ?? 0, scrollSize = container.nativeElement.scrollTop, delta = snappedY - scrollSize;
|
|
1583
1664
|
left = 0;
|
|
1584
1665
|
right = width - scrollBarSize;
|
|
1585
1666
|
top = sHeight;
|
|
@@ -1587,7 +1668,6 @@ class NgVirtualListComponent {
|
|
|
1587
1668
|
containerElement.style.clipPath = `path("M 0 ${top + delta} L 0 ${height} L ${width} ${height} L ${width} 0 L ${right} 0 L ${right} ${top + delta} Z")`;
|
|
1588
1669
|
}
|
|
1589
1670
|
else {
|
|
1590
|
-
const snappedX = snappedComponent.item?.measures.x ?? 0, scrollSize = container.nativeElement.scrollLeft, delta = snappedX - scrollSize;
|
|
1591
1671
|
left = sWidth;
|
|
1592
1672
|
right = width;
|
|
1593
1673
|
top = 0;
|
|
@@ -1645,7 +1725,7 @@ class NgVirtualListComponent {
|
|
|
1645
1725
|
$isVertical.pipe(takeUntilDestroyed(), tap(v => {
|
|
1646
1726
|
this._isVertical = v;
|
|
1647
1727
|
const el = this._elementRef.nativeElement;
|
|
1648
|
-
toggleClassName(el, v ? CLASS_LIST_VERTICAL : CLASS_LIST_HORIZONTAL,
|
|
1728
|
+
toggleClassName(el, v ? CLASS_LIST_VERTICAL : CLASS_LIST_HORIZONTAL, v ? CLASS_LIST_HORIZONTAL : CLASS_LIST_VERTICAL);
|
|
1649
1729
|
})).subscribe();
|
|
1650
1730
|
$snappingMethod.pipe(takeUntilDestroyed(), tap(v => {
|
|
1651
1731
|
this._isSnappingMethodAdvanced = this._trackBox.isSnappingMethodAdvanced = v;
|
|
@@ -1913,11 +1993,11 @@ class NgVirtualListComponent {
|
|
|
1913
1993
|
}
|
|
1914
1994
|
}
|
|
1915
1995
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgVirtualListComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1916
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgVirtualListComponent, selector: "ng-virtual-list", inputs: { items: "items", snap: "snap", enabledBufferOptimization: "enabledBufferOptimization", itemRenderer: "itemRenderer", stickyMap: "stickyMap", itemSize: "itemSize", dynamicSize: "dynamicSize", direction: "direction", itemsOffset: "itemsOffset", trackBy: "trackBy", snappingMethod: "snappingMethod" }, outputs: { onScroll: "onScroll", onScrollEnd: "onScrollEnd" }, viewQueries: [{ propertyName: "_listContainerRef", first: true, predicate: ["renderersContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "_container", first: true, predicate: ["container"], descendants: true, read: (ElementRef) }, { propertyName: "_list", first: true, predicate: ["list"], descendants: true, read: (ElementRef) }, { propertyName: "_snapContainerRef", first: true, predicate: ["snapRendererContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "_snappedContainer", first: true, predicate: ["snapped"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div *ngIf=\"snap\" #snapped part=\"snapped-item\" class=\"ngvl__list-snapper\">\r\n <ng-container #snapRendererContainer></ng-container>\r\n</div>\r\n<div #container part=\"scroller\" class=\"ngvl__scroller\">\r\n <ul #list part=\"list\" class=\"ngvl__list\">\r\n <ng-container #renderersContainer></ng-container>\r\n </ul>\r\n</div>", styles: [":host{position:relative;display:block;width:400px;overflow:hidden}:host(.horizontal){height:48px}:host(.vertical){height:320px}.ngvl__scroller{overflow:auto;width:100%;height:100%}.ngvl__list-snapper{pointer-events:none;position:absolute;list-style:none;left:0;top:0;z-index:1}.ngvl__list{position:relative;list-style:none;padding:0;margin:0;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom });
|
|
1996
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgVirtualListComponent, selector: "ng-virtual-list", inputs: { items: "items", snap: "snap", enabledBufferOptimization: "enabledBufferOptimization", itemRenderer: "itemRenderer", stickyMap: "stickyMap", itemSize: "itemSize", dynamicSize: "dynamicSize", direction: "direction", itemsOffset: "itemsOffset", trackBy: "trackBy", snappingMethod: "snappingMethod" }, outputs: { onScroll: "onScroll", onScrollEnd: "onScrollEnd" }, viewQueries: [{ propertyName: "_listContainerRef", first: true, predicate: ["renderersContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "_container", first: true, predicate: ["container"], descendants: true, read: (ElementRef) }, { propertyName: "_list", first: true, predicate: ["list"], descendants: true, read: (ElementRef) }, { propertyName: "_snapContainerRef", first: true, predicate: ["snapRendererContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "_snappedContainer", first: true, predicate: ["snapped"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div *ngIf=\"snap\" #snapped part=\"snapped-item\" class=\"ngvl__list-snapper\">\r\n <ng-container #snapRendererContainer></ng-container>\r\n</div>\r\n<div #container part=\"scroller\" class=\"ngvl__scroller\">\r\n <ul #list part=\"list\" class=\"ngvl__list\">\r\n <ng-container #renderersContainer></ng-container>\r\n </ul>\r\n</div>", styles: [":host{position:relative;display:block;width:400px;overflow:hidden}:host(.horizontal){height:48px}:host(.horizontal) .ngvl__list{display:inline-flex}:host(.horizontal) .ngvl__scroller{overflow:auto hidden}:host(.vertical) .ngvl__scroller{overflow:hidden auto}:host(.vertical){height:320px}.ngvl__scroller{overflow:auto;width:100%;height:100%}.ngvl__list-snapper{pointer-events:none;position:absolute;list-style:none;left:0;top:0;z-index:1}.ngvl__list{position:relative;list-style:none;padding:0;margin:0;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom });
|
|
1917
1997
|
}
|
|
1918
1998
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgVirtualListComponent, decorators: [{
|
|
1919
1999
|
type: Component,
|
|
1920
|
-
args: [{ selector: 'ng-virtual-list', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.ShadowDom, template: "<div *ngIf=\"snap\" #snapped part=\"snapped-item\" class=\"ngvl__list-snapper\">\r\n <ng-container #snapRendererContainer></ng-container>\r\n</div>\r\n<div #container part=\"scroller\" class=\"ngvl__scroller\">\r\n <ul #list part=\"list\" class=\"ngvl__list\">\r\n <ng-container #renderersContainer></ng-container>\r\n </ul>\r\n</div>", styles: [":host{position:relative;display:block;width:400px;overflow:hidden}:host(.horizontal){height:48px}:host(.vertical){height:320px}.ngvl__scroller{overflow:auto;width:100%;height:100%}.ngvl__list-snapper{pointer-events:none;position:absolute;list-style:none;left:0;top:0;z-index:1}.ngvl__list{position:relative;list-style:none;padding:0;margin:0;width:100%;height:100%}\n"] }]
|
|
2000
|
+
args: [{ selector: 'ng-virtual-list', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.ShadowDom, template: "<div *ngIf=\"snap\" #snapped part=\"snapped-item\" class=\"ngvl__list-snapper\">\r\n <ng-container #snapRendererContainer></ng-container>\r\n</div>\r\n<div #container part=\"scroller\" class=\"ngvl__scroller\">\r\n <ul #list part=\"list\" class=\"ngvl__list\">\r\n <ng-container #renderersContainer></ng-container>\r\n </ul>\r\n</div>", styles: [":host{position:relative;display:block;width:400px;overflow:hidden}:host(.horizontal){height:48px}:host(.horizontal) .ngvl__list{display:inline-flex}:host(.horizontal) .ngvl__scroller{overflow:auto hidden}:host(.vertical) .ngvl__scroller{overflow:hidden auto}:host(.vertical){height:320px}.ngvl__scroller{overflow:auto;width:100%;height:100%}.ngvl__list-snapper{pointer-events:none;position:absolute;list-style:none;left:0;top:0;z-index:1}.ngvl__list{position:relative;list-style:none;padding:0;margin:0;width:100%;height:100%}\n"] }]
|
|
1921
2001
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { _listContainerRef: [{
|
|
1922
2002
|
type: ViewChild,
|
|
1923
2003
|
args: ['renderersContainer', { read: ViewContainerRef }]
|