reneco-hierarchized-picker 0.4.2-beta.4 → 0.4.2-beta.6

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.
@@ -44,6 +44,96 @@ var vanillaContextMenu = createCommonjsModule(function (module, exports) {
44
44
 
45
45
  const VanillaContextMenu = /*@__PURE__*/getDefaultExportFromCjs(vanillaContextMenu);
46
46
 
47
+ let curDraggingItem = null;
48
+ let lastDraggedOverNodeId = null;
49
+ let lastDraggedOverTimeForAscendent = new Date().getTime();
50
+ let lastDraggedOverTimeForLevel = new Date().getTime();
51
+ const acceptableDelayBetweenSimilarActions = 300;
52
+ /**
53
+ * Handles the drag start event.
54
+ */
55
+ function onItemDragStart(el, e) {
56
+ curDraggingItem = el;
57
+ el.classList.add('dragging');
58
+ e.stopPropagation();
59
+ }
60
+ /**
61
+ * Handles the drag end event.
62
+ */
63
+ function onItemDragEnd(el, e) {
64
+ el.classList.remove('dragging');
65
+ e.stopPropagation();
66
+ clearDragOverStyles(el.parentElement);
67
+ }
68
+ /**
69
+ * Handles the drag over event.
70
+ */
71
+ function onItemDragOver(el, e) {
72
+ const now = new Date().getTime();
73
+ if (now - lastDraggedOverTimeForAscendent < 50 && el.dataset.nodeId !== lastDraggedOverNodeId) {
74
+ return;
75
+ }
76
+ lastDraggedOverTimeForAscendent = now;
77
+ if (el.dataset.nodeId === lastDraggedOverNodeId) {
78
+ if (now - lastDraggedOverTimeForLevel < acceptableDelayBetweenSimilarActions) {
79
+ return;
80
+ }
81
+ lastDraggedOverTimeForLevel = now;
82
+ }
83
+ else {
84
+ lastDraggedOverNodeId = el.dataset.nodeId;
85
+ }
86
+ clearDragOverStyles(el);
87
+ if (el === curDraggingItem) {
88
+ el.classList.remove('dragover');
89
+ return;
90
+ }
91
+ const pos = getDragOverPosition(el, e);
92
+ el.classList.add(`dragover-${pos}`);
93
+ el.classList.add('dragover');
94
+ e.stopPropagation();
95
+ e.preventDefault();
96
+ }
97
+ /**
98
+ * Handles the drag leave event.
99
+ */
100
+ function onItemDragLeave(el, e) {
101
+ clearDragOverStyles(el);
102
+ el.classList.remove('dragover');
103
+ e.stopPropagation();
104
+ }
105
+ /**
106
+ * Handles the drop event.
107
+ */
108
+ function onItemDrop(el, e, dropCallback) {
109
+ clearDragOverStyles(el);
110
+ el.classList.remove('dragover');
111
+ e.stopPropagation();
112
+ if (curDraggingItem) {
113
+ const pos = getDragOverPosition(el, e);
114
+ dropCallback(curDraggingItem, el, pos);
115
+ }
116
+ }
117
+ /**
118
+ * Determines the drop position based on the mouse event.
119
+ */
120
+ function getDragOverPosition(el, e) {
121
+ const h = el.offsetHeight;
122
+ const before = h / 4;
123
+ const after = h - before;
124
+ const y = e.offsetY;
125
+ return y <= before ? 'before' : y >= after ? 'after' : 'over';
126
+ }
127
+ /**
128
+ * Clears the drag-over styles from the element.
129
+ */
130
+ function clearDragOverStyles(el) {
131
+ if (!el)
132
+ return;
133
+ const prevClasses = Array.from(el.classList).filter(name => name.startsWith('dragover-'));
134
+ prevClasses.forEach(name => el.classList.remove(name));
135
+ }
136
+
47
137
  function deepClone(obj) {
48
138
  return JSON.parse(JSON.stringify(obj));
49
139
  }
@@ -575,19 +665,21 @@ Tree.prototype.createLiEle = function (node, closed) {
575
665
  if (this.options.parentApi.theOptions.dragAndDropEnabled) {
576
666
  li.setAttribute('draggable', 'true');
577
667
  li.addEventListener('dragstart', e => {
578
- this.options.parentApi.onItemDragStart(li, e);
668
+ onItemDragStart(li, e);
579
669
  });
580
670
  li.addEventListener('dragend', e => {
581
- this.options.parentApi.onItemDragEnd(li, e);
671
+ onItemDragEnd(li, e);
582
672
  });
583
673
  li.addEventListener('dragover', e => {
584
- this.options.parentApi.onItemDragOver(li, e);
674
+ onItemDragOver(li, e);
585
675
  });
586
676
  li.addEventListener('dragleave', e => {
587
- this.options.parentApi.onItemDragLeave(li, e);
677
+ onItemDragLeave(li, e);
588
678
  });
589
679
  li.addEventListener('drop', e => {
590
- this.options.parentApi.onItemDrop(li, e);
680
+ onItemDrop(li, e, (dragEl, dropEl, position) => {
681
+ this.options.parentApi.itemDropped.emit({ dragEl, dropEl, position });
682
+ });
591
683
  });
592
684
  }
593
685
  return li;
@@ -18347,6 +18439,7 @@ function fillTreeWithObject(tree, myObject, searched, options, depth = 0) {
18347
18439
  const deprecated = getPropertyFromNode(value, 'deprecated', false);
18348
18440
  const objToPush = {
18349
18441
  id: keyPropFromNode,
18442
+ nodeId: keyPropFromNode,
18350
18443
  depth,
18351
18444
  text: valueTranslatedPropFromNode,
18352
18445
  fullpath: fullpathPropFromNode,
@@ -1,4 +1,5 @@
1
1
  import VanillaContextMenu from 'vanilla-context-menu';
2
+ import { onItemDragStart, onItemDragEnd, onItemDragOver, onItemDragLeave, onItemDrop } from '../../features/tree/drag-drop';
2
3
  function deepClone(obj) {
3
4
  return JSON.parse(JSON.stringify(obj));
4
5
  }
@@ -542,19 +543,21 @@ Tree.prototype.createLiEle = function (node, closed) {
542
543
  if (this.options.parentApi.theOptions.dragAndDropEnabled) {
543
544
  li.setAttribute('draggable', 'true');
544
545
  li.addEventListener('dragstart', e => {
545
- this.options.parentApi.onItemDragStart(li, e);
546
+ onItemDragStart(li, e);
546
547
  });
547
548
  li.addEventListener('dragend', e => {
548
- this.options.parentApi.onItemDragEnd(li, e);
549
+ onItemDragEnd(li, e);
549
550
  });
550
551
  li.addEventListener('dragover', e => {
551
- this.options.parentApi.onItemDragOver(li, e);
552
+ onItemDragOver(li, e);
552
553
  });
553
554
  li.addEventListener('dragleave', e => {
554
- this.options.parentApi.onItemDragLeave(li, e);
555
+ onItemDragLeave(li, e);
555
556
  });
556
557
  li.addEventListener('drop', e => {
557
- this.options.parentApi.onItemDrop(li, e);
558
+ onItemDrop(li, e, (dragEl, dropEl, position) => {
559
+ this.options.parentApi.itemDropped.emit({ dragEl, dropEl, position });
560
+ });
558
561
  });
559
562
  }
560
563
  return li;
@@ -79,6 +79,7 @@ export function fillTreeWithObject(tree, myObject, searched, options, depth = 0)
79
79
  const deprecated = getPropertyFromNode(value, 'deprecated', false);
80
80
  const objToPush = {
81
81
  id: keyPropFromNode,
82
+ nodeId: keyPropFromNode,
82
83
  depth,
83
84
  text: valueTranslatedPropFromNode,
84
85
  fullpath: fullpathPropFromNode,
@@ -41,6 +41,96 @@ var vanillaContextMenu = createCommonjsModule(function (module, exports) {
41
41
 
42
42
  const VanillaContextMenu = /*@__PURE__*/getDefaultExportFromCjs(vanillaContextMenu);
43
43
 
44
+ let curDraggingItem = null;
45
+ let lastDraggedOverNodeId = null;
46
+ let lastDraggedOverTimeForAscendent = new Date().getTime();
47
+ let lastDraggedOverTimeForLevel = new Date().getTime();
48
+ const acceptableDelayBetweenSimilarActions = 300;
49
+ /**
50
+ * Handles the drag start event.
51
+ */
52
+ function onItemDragStart(el, e) {
53
+ curDraggingItem = el;
54
+ el.classList.add('dragging');
55
+ e.stopPropagation();
56
+ }
57
+ /**
58
+ * Handles the drag end event.
59
+ */
60
+ function onItemDragEnd(el, e) {
61
+ el.classList.remove('dragging');
62
+ e.stopPropagation();
63
+ clearDragOverStyles(el.parentElement);
64
+ }
65
+ /**
66
+ * Handles the drag over event.
67
+ */
68
+ function onItemDragOver(el, e) {
69
+ const now = new Date().getTime();
70
+ if (now - lastDraggedOverTimeForAscendent < 50 && el.dataset.nodeId !== lastDraggedOverNodeId) {
71
+ return;
72
+ }
73
+ lastDraggedOverTimeForAscendent = now;
74
+ if (el.dataset.nodeId === lastDraggedOverNodeId) {
75
+ if (now - lastDraggedOverTimeForLevel < acceptableDelayBetweenSimilarActions) {
76
+ return;
77
+ }
78
+ lastDraggedOverTimeForLevel = now;
79
+ }
80
+ else {
81
+ lastDraggedOverNodeId = el.dataset.nodeId;
82
+ }
83
+ clearDragOverStyles(el);
84
+ if (el === curDraggingItem) {
85
+ el.classList.remove('dragover');
86
+ return;
87
+ }
88
+ const pos = getDragOverPosition(el, e);
89
+ el.classList.add(`dragover-${pos}`);
90
+ el.classList.add('dragover');
91
+ e.stopPropagation();
92
+ e.preventDefault();
93
+ }
94
+ /**
95
+ * Handles the drag leave event.
96
+ */
97
+ function onItemDragLeave(el, e) {
98
+ clearDragOverStyles(el);
99
+ el.classList.remove('dragover');
100
+ e.stopPropagation();
101
+ }
102
+ /**
103
+ * Handles the drop event.
104
+ */
105
+ function onItemDrop(el, e, dropCallback) {
106
+ clearDragOverStyles(el);
107
+ el.classList.remove('dragover');
108
+ e.stopPropagation();
109
+ if (curDraggingItem) {
110
+ const pos = getDragOverPosition(el, e);
111
+ dropCallback(curDraggingItem, el, pos);
112
+ }
113
+ }
114
+ /**
115
+ * Determines the drop position based on the mouse event.
116
+ */
117
+ function getDragOverPosition(el, e) {
118
+ const h = el.offsetHeight;
119
+ const before = h / 4;
120
+ const after = h - before;
121
+ const y = e.offsetY;
122
+ return y <= before ? 'before' : y >= after ? 'after' : 'over';
123
+ }
124
+ /**
125
+ * Clears the drag-over styles from the element.
126
+ */
127
+ function clearDragOverStyles(el) {
128
+ if (!el)
129
+ return;
130
+ const prevClasses = Array.from(el.classList).filter(name => name.startsWith('dragover-'));
131
+ prevClasses.forEach(name => el.classList.remove(name));
132
+ }
133
+
44
134
  function deepClone(obj) {
45
135
  return JSON.parse(JSON.stringify(obj));
46
136
  }
@@ -572,19 +662,21 @@ Tree.prototype.createLiEle = function (node, closed) {
572
662
  if (this.options.parentApi.theOptions.dragAndDropEnabled) {
573
663
  li.setAttribute('draggable', 'true');
574
664
  li.addEventListener('dragstart', e => {
575
- this.options.parentApi.onItemDragStart(li, e);
665
+ onItemDragStart(li, e);
576
666
  });
577
667
  li.addEventListener('dragend', e => {
578
- this.options.parentApi.onItemDragEnd(li, e);
668
+ onItemDragEnd(li, e);
579
669
  });
580
670
  li.addEventListener('dragover', e => {
581
- this.options.parentApi.onItemDragOver(li, e);
671
+ onItemDragOver(li, e);
582
672
  });
583
673
  li.addEventListener('dragleave', e => {
584
- this.options.parentApi.onItemDragLeave(li, e);
674
+ onItemDragLeave(li, e);
585
675
  });
586
676
  li.addEventListener('drop', e => {
587
- this.options.parentApi.onItemDrop(li, e);
677
+ onItemDrop(li, e, (dragEl, dropEl, position) => {
678
+ this.options.parentApi.itemDropped.emit({ dragEl, dropEl, position });
679
+ });
588
680
  });
589
681
  }
590
682
  return li;
@@ -18344,6 +18436,7 @@ function fillTreeWithObject(tree, myObject, searched, options, depth = 0) {
18344
18436
  const deprecated = getPropertyFromNode(value, 'deprecated', false);
18345
18437
  const objToPush = {
18346
18438
  id: keyPropFromNode,
18439
+ nodeId: keyPropFromNode,
18347
18440
  depth,
18348
18441
  text: valueTranslatedPropFromNode,
18349
18442
  fullpath: fullpathPropFromNode,
@@ -40,6 +40,96 @@ var vanillaContextMenu = createCommonjsModule(function (module, exports) {
40
40
 
41
41
  const VanillaContextMenu = /*@__PURE__*/getDefaultExportFromCjs(vanillaContextMenu);
42
42
 
43
+ let curDraggingItem = null;
44
+ let lastDraggedOverNodeId = null;
45
+ let lastDraggedOverTimeForAscendent = new Date().getTime();
46
+ let lastDraggedOverTimeForLevel = new Date().getTime();
47
+ const acceptableDelayBetweenSimilarActions = 300;
48
+ /**
49
+ * Handles the drag start event.
50
+ */
51
+ function onItemDragStart(el, e) {
52
+ curDraggingItem = el;
53
+ el.classList.add('dragging');
54
+ e.stopPropagation();
55
+ }
56
+ /**
57
+ * Handles the drag end event.
58
+ */
59
+ function onItemDragEnd(el, e) {
60
+ el.classList.remove('dragging');
61
+ e.stopPropagation();
62
+ clearDragOverStyles(el.parentElement);
63
+ }
64
+ /**
65
+ * Handles the drag over event.
66
+ */
67
+ function onItemDragOver(el, e) {
68
+ const now = new Date().getTime();
69
+ if (now - lastDraggedOverTimeForAscendent < 50 && el.dataset.nodeId !== lastDraggedOverNodeId) {
70
+ return;
71
+ }
72
+ lastDraggedOverTimeForAscendent = now;
73
+ if (el.dataset.nodeId === lastDraggedOverNodeId) {
74
+ if (now - lastDraggedOverTimeForLevel < acceptableDelayBetweenSimilarActions) {
75
+ return;
76
+ }
77
+ lastDraggedOverTimeForLevel = now;
78
+ }
79
+ else {
80
+ lastDraggedOverNodeId = el.dataset.nodeId;
81
+ }
82
+ clearDragOverStyles(el);
83
+ if (el === curDraggingItem) {
84
+ el.classList.remove('dragover');
85
+ return;
86
+ }
87
+ const pos = getDragOverPosition(el, e);
88
+ el.classList.add(`dragover-${pos}`);
89
+ el.classList.add('dragover');
90
+ e.stopPropagation();
91
+ e.preventDefault();
92
+ }
93
+ /**
94
+ * Handles the drag leave event.
95
+ */
96
+ function onItemDragLeave(el, e) {
97
+ clearDragOverStyles(el);
98
+ el.classList.remove('dragover');
99
+ e.stopPropagation();
100
+ }
101
+ /**
102
+ * Handles the drop event.
103
+ */
104
+ function onItemDrop(el, e, dropCallback) {
105
+ clearDragOverStyles(el);
106
+ el.classList.remove('dragover');
107
+ e.stopPropagation();
108
+ if (curDraggingItem) {
109
+ const pos = getDragOverPosition(el, e);
110
+ dropCallback(curDraggingItem, el, pos);
111
+ }
112
+ }
113
+ /**
114
+ * Determines the drop position based on the mouse event.
115
+ */
116
+ function getDragOverPosition(el, e) {
117
+ const h = el.offsetHeight;
118
+ const before = h / 4;
119
+ const after = h - before;
120
+ const y = e.offsetY;
121
+ return y <= before ? 'before' : y >= after ? 'after' : 'over';
122
+ }
123
+ /**
124
+ * Clears the drag-over styles from the element.
125
+ */
126
+ function clearDragOverStyles(el) {
127
+ if (!el)
128
+ return;
129
+ const prevClasses = Array.from(el.classList).filter(name => name.startsWith('dragover-'));
130
+ prevClasses.forEach(name => el.classList.remove(name));
131
+ }
132
+
43
133
  function deepClone(obj) {
44
134
  return JSON.parse(JSON.stringify(obj));
45
135
  }
@@ -571,19 +661,21 @@ Tree.prototype.createLiEle = function (node, closed) {
571
661
  if (this.options.parentApi.theOptions.dragAndDropEnabled) {
572
662
  li.setAttribute('draggable', 'true');
573
663
  li.addEventListener('dragstart', e => {
574
- this.options.parentApi.onItemDragStart(li, e);
664
+ onItemDragStart(li, e);
575
665
  });
576
666
  li.addEventListener('dragend', e => {
577
- this.options.parentApi.onItemDragEnd(li, e);
667
+ onItemDragEnd(li, e);
578
668
  });
579
669
  li.addEventListener('dragover', e => {
580
- this.options.parentApi.onItemDragOver(li, e);
670
+ onItemDragOver(li, e);
581
671
  });
582
672
  li.addEventListener('dragleave', e => {
583
- this.options.parentApi.onItemDragLeave(li, e);
673
+ onItemDragLeave(li, e);
584
674
  });
585
675
  li.addEventListener('drop', e => {
586
- this.options.parentApi.onItemDrop(li, e);
676
+ onItemDrop(li, e, (dragEl, dropEl, position) => {
677
+ this.options.parentApi.itemDropped.emit({ dragEl, dropEl, position });
678
+ });
587
679
  });
588
680
  }
589
681
  return li;
@@ -18343,6 +18435,7 @@ function fillTreeWithObject(tree, myObject, searched, options, depth = 0) {
18343
18435
  const deprecated = getPropertyFromNode(value, 'deprecated', false);
18344
18436
  const objToPush = {
18345
18437
  id: keyPropFromNode,
18438
+ nodeId: keyPropFromNode,
18346
18439
  depth,
18347
18440
  text: valueTranslatedPropFromNode,
18348
18441
  fullpath: fullpathPropFromNode,