@kizmann/nano-ui 0.7.25 → 0.7.26
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/nano-ui.css +1 -1
- package/dist/nano-ui.js +2 -2
- package/dist/nano-ui.js.map +1 -1
- package/package.json +1 -1
- package/src/draggable/src/draglist/draglist.js +55 -2
package/package.json
CHANGED
@@ -316,11 +316,13 @@ export default {
|
|
316
316
|
{
|
317
317
|
return {
|
318
318
|
uid: UUID(),
|
319
|
+
modifier: [],
|
319
320
|
virtuals: [],
|
320
321
|
visible: [],
|
321
322
|
childNodes: {},
|
322
323
|
highlight: [],
|
323
|
-
firstSelected: null,
|
324
|
+
firstSelected: null,
|
325
|
+
lastSelected: null,
|
324
326
|
tempCurrent: this.current,
|
325
327
|
tempExpanded: this.expanded,
|
326
328
|
tempSelected: this.selected
|
@@ -330,6 +332,12 @@ export default {
|
|
330
332
|
beforeMount()
|
331
333
|
{
|
332
334
|
this.drag = new NDraghandler(this);
|
335
|
+
|
336
|
+
Dom.find(window).on('keydown',
|
337
|
+
this.watchModifierDown, this._uid);
|
338
|
+
|
339
|
+
Dom.find(window).on('keyup',
|
340
|
+
this.watchModifierUp, this._uid);
|
333
341
|
},
|
334
342
|
|
335
343
|
mounted()
|
@@ -350,6 +358,7 @@ export default {
|
|
350
358
|
this.drag.unbindRoot();
|
351
359
|
|
352
360
|
Dom.find(document).off('keydown', null, this.uid);
|
361
|
+
Dom.find(document).off('keyup', null, this.uid);
|
353
362
|
},
|
354
363
|
|
355
364
|
watch: {
|
@@ -389,6 +398,16 @@ export default {
|
|
389
398
|
|
390
399
|
methods: {
|
391
400
|
|
401
|
+
watchModifierDown(e)
|
402
|
+
{
|
403
|
+
Arr.add(this.modifier, e.which);
|
404
|
+
},
|
405
|
+
|
406
|
+
watchModifierUp(e)
|
407
|
+
{
|
408
|
+
Arr.remove(this.modifier, e.which);
|
409
|
+
},
|
410
|
+
|
392
411
|
watchSelected()
|
393
412
|
{
|
394
413
|
if ( ! this.tempSelected.length ) {
|
@@ -709,13 +728,45 @@ export default {
|
|
709
728
|
this.tempSelected;
|
710
729
|
},
|
711
730
|
|
731
|
+
toggleSingleNode(node)
|
732
|
+
{
|
733
|
+
Arr.toggle(this.tempSelected, this.lastSelected =
|
734
|
+
node.value[this.uniqueProp]);
|
735
|
+
},
|
736
|
+
|
737
|
+
toggleRangeNode(node)
|
738
|
+
{
|
739
|
+
let indexies = [0, -1], reversed = false;
|
740
|
+
|
741
|
+
if ( ! Any.isEmpty(this.lastSelected) ) {
|
742
|
+
indexies[1] = this.getIndex(this.lastSelected);
|
743
|
+
}
|
744
|
+
|
745
|
+
indexies[0] = this.getIndex(node.value[this.uniqueProp]);
|
746
|
+
|
747
|
+
if ( indexies[1] > indexies[0] ) {
|
748
|
+
reversed = true;
|
749
|
+
}
|
750
|
+
|
751
|
+
if ( ! reversed ) {
|
752
|
+
indexies = [indexies[1]+1, indexies[0]+1];
|
753
|
+
}
|
754
|
+
|
755
|
+
Arr.each(this.items.slice(indexies[0], indexies[1]), (item, index) => {
|
756
|
+
Arr.toggle(this.tempSelected, item[this.uniqueProp]);
|
757
|
+
});
|
758
|
+
|
759
|
+
this.lastSelected = node.value[this.uniqueProp];
|
760
|
+
},
|
761
|
+
|
712
762
|
selectItem(node)
|
713
763
|
{
|
714
764
|
if ( this.isDisabled(node) ) {
|
715
765
|
return;
|
716
766
|
}
|
717
767
|
|
718
|
-
Arr.
|
768
|
+
! Arr.has(this.modifier, 16) || this.renderExpand ?
|
769
|
+
this.toggleSingleNode(node) : this.toggleRangeNode(node);
|
719
770
|
|
720
771
|
this.$emit('update:selected', this.tempSelected);
|
721
772
|
},
|
@@ -734,6 +785,8 @@ export default {
|
|
734
785
|
return this.$emit('update:selected', this.tempSelected = []);
|
735
786
|
}
|
736
787
|
|
788
|
+
this.lastSelected = null;
|
789
|
+
|
737
790
|
this.$emit('update:selected', this.tempSelected = indexies);
|
738
791
|
},
|
739
792
|
|