primevue 4.3.9 → 4.4.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/autocomplete/AutoComplete.vue +18 -3
- package/autocomplete/BaseAutoComplete.vue +4 -0
- package/autocomplete/index.d.ts +20 -0
- package/autocomplete/index.mjs +34 -7
- package/autocomplete/index.mjs.map +1 -1
- package/autocomplete/style/index.d.ts +4 -0
- package/autocomplete/style/index.mjs +3 -1
- package/autocomplete/style/index.mjs.map +1 -1
- package/checkbox/Checkbox.vue +15 -2
- package/checkbox/index.mjs +14 -2
- package/checkbox/index.mjs.map +1 -1
- package/colorpicker/ColorPicker.vue +3 -4
- package/colorpicker/index.mjs +3 -3
- package/colorpicker/index.mjs.map +1 -1
- package/confirmdialog/ConfirmDialog.vue +1 -1
- package/confirmdialog/index.d.ts +5 -0
- package/confirmdialog/index.mjs +3 -2
- package/confirmdialog/index.mjs.map +1 -1
- package/datatable/DataTable.vue +2 -2
- package/datatable/HeaderCheckbox.vue +3 -3
- package/datatable/index.mjs +12 -3
- package/datatable/index.mjs.map +1 -1
- package/datepicker/BaseDatePicker.vue +8 -0
- package/datepicker/DatePicker.vue +199 -81
- package/datepicker/index.d.ts +25 -0
- package/datepicker/index.mjs +258 -150
- package/datepicker/index.mjs.map +1 -1
- package/datepicker/style/index.d.ts +4 -0
- package/datepicker/style/index.mjs +5 -2
- package/datepicker/style/index.mjs.map +1 -1
- package/drawer/BaseDrawer.vue +4 -0
- package/drawer/Drawer.vue +4 -4
- package/drawer/index.d.ts +5 -0
- package/drawer/index.mjs +8 -4
- package/drawer/index.mjs.map +1 -1
- package/editor/Editor.vue +5 -1
- package/editor/index.mjs +5 -0
- package/editor/index.mjs.map +1 -1
- package/image/index.d.ts +5 -11
- package/inputmask/InputMask.vue +1 -2
- package/inputmask/index.mjs +1 -1
- package/inputmask/index.mjs.map +1 -1
- package/inputnumber/BaseInputNumber.vue +4 -0
- package/inputnumber/InputNumber.vue +30 -5
- package/inputnumber/index.d.ts +20 -0
- package/inputnumber/index.mjs +45 -7
- package/inputnumber/index.mjs.map +1 -1
- package/inputnumber/style/index.mjs +1 -0
- package/inputnumber/style/index.mjs.map +1 -1
- package/inputotp/InputOtp.vue +7 -3
- package/inputotp/index.mjs +6 -3
- package/inputotp/index.mjs.map +1 -1
- package/listbox/Listbox.vue +1 -1
- package/listbox/index.mjs +1 -1
- package/listbox/index.mjs.map +1 -1
- package/multiselect/MultiSelect.vue +9 -5
- package/multiselect/index.mjs +14 -10
- package/multiselect/index.mjs.map +1 -1
- package/package.json +5 -5
- package/panel/Panel.vue +1 -1
- package/panel/index.d.ts +4 -0
- package/panel/index.mjs +2 -1
- package/panel/index.mjs.map +1 -1
- package/password/BasePassword.vue +4 -0
- package/password/Password.vue +12 -1
- package/password/index.d.ts +20 -0
- package/password/index.mjs +23 -1
- package/password/index.mjs.map +1 -1
- package/password/style/index.d.ts +4 -0
- package/password/style/index.mjs +1 -0
- package/password/style/index.mjs.map +1 -1
- package/select/Select.vue +1 -0
- package/select/index.mjs +1 -0
- package/select/index.mjs.map +1 -1
- package/tree/BaseTree.vue +16 -0
- package/tree/Tree.vue +179 -4
- package/tree/TreeNode.vue +225 -3
- package/tree/index.d.ts +65 -0
- package/tree/index.mjs +499 -22
- package/tree/index.mjs.map +1 -1
- package/tree/style/index.mjs +9 -4
- package/tree/style/index.mjs.map +1 -1
- package/treenode/index.d.ts +12 -0
- package/treeselect/TreeSelect.vue +1 -1
- package/treeselect/index.mjs +1 -1
- package/treeselect/index.mjs.map +1 -1
- package/umd/primevue.min.js +1 -1
- package/web-types.json +1 -1
package/tree/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from '@primeuix/utils';
|
|
1
|
+
import { getAttribute, findSingle, find, getOuterWidth, getOuterHeight, cn } from '@primeuix/utils';
|
|
2
2
|
import { isFunction, resolveFieldData } from '@primeuix/utils/object';
|
|
3
3
|
import SearchIcon from '@primevue/icons/search';
|
|
4
4
|
import SpinnerIcon from '@primevue/icons/spinner';
|
|
@@ -7,14 +7,13 @@ import InputIcon from 'primevue/inputicon';
|
|
|
7
7
|
import InputText from 'primevue/inputtext';
|
|
8
8
|
import BaseComponent from '@primevue/core/basecomponent';
|
|
9
9
|
import TreeStyle from 'primevue/tree/style';
|
|
10
|
-
import {
|
|
10
|
+
import { reactive, resolveComponent, resolveDirective, createElementBlock, openBlock, mergeProps, createCommentVNode, createElementVNode, normalizeClass, withDirectives, createBlock, Fragment, resolveDynamicComponent, withCtx, withModifiers, createTextVNode, toDisplayString, renderList, renderSlot, createVNode } from 'vue';
|
|
11
11
|
import CheckIcon from '@primevue/icons/check';
|
|
12
12
|
import ChevronDownIcon from '@primevue/icons/chevrondown';
|
|
13
13
|
import ChevronRightIcon from '@primevue/icons/chevronright';
|
|
14
14
|
import MinusIcon from '@primevue/icons/minus';
|
|
15
15
|
import Checkbox from 'primevue/checkbox';
|
|
16
16
|
import Ripple from 'primevue/ripple';
|
|
17
|
-
import { resolveComponent, resolveDirective, createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, withDirectives, createBlock, Fragment, resolveDynamicComponent, normalizeClass, withCtx, withModifiers, createTextVNode, toDisplayString, renderList, renderSlot, createVNode } from 'vue';
|
|
18
17
|
|
|
19
18
|
var script$2 = {
|
|
20
19
|
name: 'BaseTree',
|
|
@@ -84,6 +83,22 @@ var script$2 = {
|
|
|
84
83
|
type: Number,
|
|
85
84
|
"default": 0
|
|
86
85
|
},
|
|
86
|
+
dragdrop: {
|
|
87
|
+
type: Boolean,
|
|
88
|
+
"default": null
|
|
89
|
+
},
|
|
90
|
+
draggableScope: {
|
|
91
|
+
type: [String, Array],
|
|
92
|
+
"default": null
|
|
93
|
+
},
|
|
94
|
+
droppableScope: {
|
|
95
|
+
type: [String, Array],
|
|
96
|
+
"default": null
|
|
97
|
+
},
|
|
98
|
+
validateDrop: {
|
|
99
|
+
type: Boolean,
|
|
100
|
+
"default": false
|
|
101
|
+
},
|
|
87
102
|
ariaLabelledby: {
|
|
88
103
|
type: String,
|
|
89
104
|
"default": null
|
|
@@ -102,6 +117,51 @@ var script$2 = {
|
|
|
102
117
|
}
|
|
103
118
|
};
|
|
104
119
|
|
|
120
|
+
var dragState = reactive({
|
|
121
|
+
isDragging: false,
|
|
122
|
+
dragNode: null,
|
|
123
|
+
dragScope: null
|
|
124
|
+
});
|
|
125
|
+
var dragStartHandlers = new Set();
|
|
126
|
+
var dragStopHandlers = new Set();
|
|
127
|
+
function useTreeDragDropService() {
|
|
128
|
+
var startDrag = function startDrag(event) {
|
|
129
|
+
dragState.isDragging = true;
|
|
130
|
+
dragState.dragNode = event.node;
|
|
131
|
+
dragState.dragScope = event.scope;
|
|
132
|
+
dragStartHandlers.forEach(function (handler) {
|
|
133
|
+
return handler(event);
|
|
134
|
+
});
|
|
135
|
+
};
|
|
136
|
+
var stopDrag = function stopDrag(event) {
|
|
137
|
+
dragState.isDragging = false;
|
|
138
|
+
dragState.dragNode = null;
|
|
139
|
+
dragState.dragScope = null;
|
|
140
|
+
dragStopHandlers.forEach(function (handler) {
|
|
141
|
+
return handler(event);
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
var onDragStart = function onDragStart(handler) {
|
|
145
|
+
dragStartHandlers.add(handler);
|
|
146
|
+
return function () {
|
|
147
|
+
return dragStartHandlers["delete"](handler);
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
var onDragStop = function onDragStop(handler) {
|
|
151
|
+
dragStopHandlers.add(handler);
|
|
152
|
+
return function () {
|
|
153
|
+
return dragStopHandlers["delete"](handler);
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
return {
|
|
157
|
+
dragState: dragState,
|
|
158
|
+
startDrag: startDrag,
|
|
159
|
+
stopDrag: stopDrag,
|
|
160
|
+
onDragStart: onDragStart,
|
|
161
|
+
onDragStop: onDragStop
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
|
|
105
165
|
function _typeof$2(o) { "@babel/helpers - typeof"; return _typeof$2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof$2(o); }
|
|
106
166
|
function _createForOfIteratorHelper$1(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(r)) || e) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: true } : { done: false, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = true, u = false; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = true, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
107
167
|
function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -119,12 +179,20 @@ var script$1 = {
|
|
|
119
179
|
name: 'TreeNode',
|
|
120
180
|
hostName: 'Tree',
|
|
121
181
|
"extends": BaseComponent,
|
|
122
|
-
emits: ['node-toggle', 'node-click', 'checkbox-change'],
|
|
182
|
+
emits: ['node-toggle', 'node-click', 'checkbox-change', 'node-drop'],
|
|
123
183
|
props: {
|
|
124
184
|
node: {
|
|
125
185
|
type: null,
|
|
126
186
|
"default": null
|
|
127
187
|
},
|
|
188
|
+
parentNode: {
|
|
189
|
+
type: null,
|
|
190
|
+
"default": null
|
|
191
|
+
},
|
|
192
|
+
rootNodes: {
|
|
193
|
+
type: Array,
|
|
194
|
+
"default": null
|
|
195
|
+
},
|
|
128
196
|
expandedKeys: {
|
|
129
197
|
type: null,
|
|
130
198
|
"default": null
|
|
@@ -149,10 +217,34 @@ var script$1 = {
|
|
|
149
217
|
type: Number,
|
|
150
218
|
"default": null
|
|
151
219
|
},
|
|
220
|
+
draggableScope: {
|
|
221
|
+
type: [String, Array],
|
|
222
|
+
"default": null
|
|
223
|
+
},
|
|
224
|
+
dragdrop: {
|
|
225
|
+
type: Boolean,
|
|
226
|
+
"default": null
|
|
227
|
+
},
|
|
228
|
+
validateDrop: {
|
|
229
|
+
type: Boolean,
|
|
230
|
+
"default": false
|
|
231
|
+
},
|
|
152
232
|
index: null
|
|
153
233
|
},
|
|
154
234
|
nodeTouched: false,
|
|
155
235
|
toggleClicked: false,
|
|
236
|
+
inject: {
|
|
237
|
+
$pcTree: {
|
|
238
|
+
"default": undefined
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
data: function data() {
|
|
242
|
+
return {
|
|
243
|
+
isPrevDropPointHovered: false,
|
|
244
|
+
isNextDropPointHovered: false,
|
|
245
|
+
isNodeDropHovered: false
|
|
246
|
+
};
|
|
247
|
+
},
|
|
156
248
|
mounted: function mounted() {
|
|
157
249
|
this.setAllNodesTabIndexes();
|
|
158
250
|
},
|
|
@@ -289,6 +381,139 @@ var script$1 = {
|
|
|
289
381
|
onTabKey: function onTabKey() {
|
|
290
382
|
this.setAllNodesTabIndexes();
|
|
291
383
|
},
|
|
384
|
+
onChildNodeDrop: function onChildNodeDrop(event) {
|
|
385
|
+
this.$emit('node-click', event);
|
|
386
|
+
},
|
|
387
|
+
insertNodeOnDrop: function insertNodeOnDrop() {
|
|
388
|
+
var _this$$pcTree = this.$pcTree,
|
|
389
|
+
dragNode = _this$$pcTree.dragNode,
|
|
390
|
+
dragNodeIndex = _this$$pcTree.dragNodeIndex,
|
|
391
|
+
dragNodeSubNodes = _this$$pcTree.dragNodeSubNodes,
|
|
392
|
+
dragDropService = _this$$pcTree.dragDropService;
|
|
393
|
+
if (!this.node || dragNodeIndex == null || !dragNode || !dragNodeSubNodes) {
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
var position = this.dropPosition;
|
|
397
|
+
var subNodes = this.subNodes || [];
|
|
398
|
+
var index = this.index || 0;
|
|
399
|
+
var dropIndex = dragNodeSubNodes === subNodes ? dragNodeIndex > index ? index : index - 1 : index;
|
|
400
|
+
dragNodeSubNodes.splice(dragNodeIndex, 1);
|
|
401
|
+
if (position < 0) {
|
|
402
|
+
// insert before a Node
|
|
403
|
+
subNodes.splice(dropIndex, 0, dragNode);
|
|
404
|
+
} else if (position > 0) {
|
|
405
|
+
// insert after a Node
|
|
406
|
+
subNodes.splice(dropIndex + 1, 0, dragNode);
|
|
407
|
+
} else {
|
|
408
|
+
// insert as child of a Node
|
|
409
|
+
this.node.children = this.node.children || [];
|
|
410
|
+
this.node.children.push(dragNode);
|
|
411
|
+
}
|
|
412
|
+
dragDropService.stopDrag({
|
|
413
|
+
node: dragNode,
|
|
414
|
+
subNodes: subNodes,
|
|
415
|
+
index: dragNodeIndex
|
|
416
|
+
});
|
|
417
|
+
},
|
|
418
|
+
onNodeDrop: function onNodeDrop(event) {
|
|
419
|
+
var _this2 = this;
|
|
420
|
+
event.preventDefault();
|
|
421
|
+
event.stopPropagation();
|
|
422
|
+
if (this.isDroppable) {
|
|
423
|
+
var dragNode = this.$pcTree.dragNode;
|
|
424
|
+
var position = this.dropPosition;
|
|
425
|
+
var isValidDrop = position !== 0 || position === 0 && this.isNodeDroppable;
|
|
426
|
+
if (isValidDrop) {
|
|
427
|
+
if (this.validateDrop) {
|
|
428
|
+
this.$emit('node-drop', {
|
|
429
|
+
originalEvent: event,
|
|
430
|
+
dragNode: dragNode,
|
|
431
|
+
dropNode: this.node,
|
|
432
|
+
index: this.index,
|
|
433
|
+
accept: function accept() {
|
|
434
|
+
_this2.insertNodeOnDrop();
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
} else {
|
|
438
|
+
this.insertNodeOnDrop();
|
|
439
|
+
this.$emit('node-drop', {
|
|
440
|
+
originalEvent: event,
|
|
441
|
+
dragNode: dragNode,
|
|
442
|
+
dropNode: this.node,
|
|
443
|
+
index: this.index
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
this.isPrevDropPointHovered = false;
|
|
449
|
+
this.isNextDropPointHovered = false;
|
|
450
|
+
this.isNodeDropHovered = false;
|
|
451
|
+
},
|
|
452
|
+
onNodeDragStart: function onNodeDragStart(event) {
|
|
453
|
+
if (this.isNodeDraggable) {
|
|
454
|
+
var _event$dataTransfer, _event$dataTransfer2;
|
|
455
|
+
(_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 || _event$dataTransfer.setData('text', 'data');
|
|
456
|
+
var target = event.currentTarget;
|
|
457
|
+
var dragEl = target.cloneNode(true);
|
|
458
|
+
var toggler = dragEl.querySelector('[data-pc-section="nodetogglebutton"]');
|
|
459
|
+
var checkbox = dragEl.querySelector('[data-pc-name="pcnodecheckbox"]');
|
|
460
|
+
target.setAttribute('data-p-dragging', 'true');
|
|
461
|
+
dragEl.style.width = getOuterWidth(target) + 'px';
|
|
462
|
+
dragEl.style.height = getOuterHeight(target) + 'px';
|
|
463
|
+
dragEl.setAttribute('data-pc-section', 'drag-image');
|
|
464
|
+
toggler.style.visibility = 'hidden';
|
|
465
|
+
checkbox === null || checkbox === void 0 || checkbox.remove();
|
|
466
|
+
document.body.appendChild(dragEl);
|
|
467
|
+
(_event$dataTransfer2 = event.dataTransfer) === null || _event$dataTransfer2 === void 0 || _event$dataTransfer2.setDragImage(dragEl, 0, 0);
|
|
468
|
+
setTimeout(function () {
|
|
469
|
+
return document.body.removeChild(dragEl);
|
|
470
|
+
}, 0);
|
|
471
|
+
this.$pcTree.dragDropService.startDrag({
|
|
472
|
+
node: this.node,
|
|
473
|
+
subNodes: this.subNodes,
|
|
474
|
+
index: this.index,
|
|
475
|
+
scope: this.draggableScope
|
|
476
|
+
});
|
|
477
|
+
} else {
|
|
478
|
+
event.preventDefault();
|
|
479
|
+
}
|
|
480
|
+
},
|
|
481
|
+
onNodeDragOver: function onNodeDragOver(event) {
|
|
482
|
+
event.dataTransfer.dropEffect = 'move';
|
|
483
|
+
if (this.isDroppable) {
|
|
484
|
+
var nodeElement = event.currentTarget;
|
|
485
|
+
var rect = nodeElement.getBoundingClientRect();
|
|
486
|
+
var y = event.clientY - rect.top;
|
|
487
|
+
this.isPrevDropPointHovered = false;
|
|
488
|
+
this.isNextDropPointHovered = false;
|
|
489
|
+
this.isNodeDropHovered = false;
|
|
490
|
+
if (y < rect.height * 0.25) {
|
|
491
|
+
this.isPrevDropPointHovered = true;
|
|
492
|
+
} else if (y > rect.height * 0.75) {
|
|
493
|
+
this.isNextDropPointHovered = true;
|
|
494
|
+
} else if (this.isNodeDroppable) {
|
|
495
|
+
this.isNodeDropHovered = true;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
if (this.dragdrop) {
|
|
499
|
+
event.preventDefault();
|
|
500
|
+
event.stopPropagation();
|
|
501
|
+
}
|
|
502
|
+
},
|
|
503
|
+
onNodeDragLeave: function onNodeDragLeave() {
|
|
504
|
+
this.isPrevDropPointHovered = false;
|
|
505
|
+
this.isNextDropPointHovered = false;
|
|
506
|
+
this.isNodeDropHovered = false;
|
|
507
|
+
},
|
|
508
|
+
onNodeDragEnd: function onNodeDragEnd(event) {
|
|
509
|
+
var _event$currentTarget;
|
|
510
|
+
(_event$currentTarget = event.currentTarget) === null || _event$currentTarget === void 0 || _event$currentTarget.removeAttribute('data-p-dragging');
|
|
511
|
+
this.$pcTree.dragDropService.stopDrag({
|
|
512
|
+
node: this.node,
|
|
513
|
+
subNodes: this.subNodes,
|
|
514
|
+
index: this.index
|
|
515
|
+
});
|
|
516
|
+
},
|
|
292
517
|
setAllNodesTabIndexes: function setAllNodesTabIndexes() {
|
|
293
518
|
var nodes = find(this.$refs.currentNode.closest('[data-pc-section="rootchildren"]'), '[role="treeitem"]');
|
|
294
519
|
var hasSelectedNode = _toConsumableArray$1(nodes).some(function (node) {
|
|
@@ -464,6 +689,35 @@ var script$1 = {
|
|
|
464
689
|
},
|
|
465
690
|
ariaSelected: function ariaSelected() {
|
|
466
691
|
return this.checkboxMode ? this.checked : undefined;
|
|
692
|
+
},
|
|
693
|
+
isPrevDropPointActive: function isPrevDropPointActive() {
|
|
694
|
+
return this.isPrevDropPointHovered && this.isDroppable;
|
|
695
|
+
},
|
|
696
|
+
isNextDropPointActive: function isNextDropPointActive() {
|
|
697
|
+
return this.isNextDropPointHovered && this.isDroppable;
|
|
698
|
+
},
|
|
699
|
+
dropPosition: function dropPosition() {
|
|
700
|
+
return this.isPrevDropPointActive ? -1 : this.isNextDropPointActive ? 1 : 0;
|
|
701
|
+
},
|
|
702
|
+
subNodes: function subNodes() {
|
|
703
|
+
return this.parentNode ? this.parentNode.children : this.rootNodes;
|
|
704
|
+
},
|
|
705
|
+
isDraggable: function isDraggable() {
|
|
706
|
+
return this.dragdrop;
|
|
707
|
+
},
|
|
708
|
+
isDroppable: function isDroppable() {
|
|
709
|
+
return this.dragdrop && this.$pcTree.allowNodeDrop(this.node);
|
|
710
|
+
},
|
|
711
|
+
isNodeDraggable: function isNodeDraggable() {
|
|
712
|
+
var _this$node;
|
|
713
|
+
return ((_this$node = this.node) === null || _this$node === void 0 ? void 0 : _this$node.draggable) !== false && this.isDraggable;
|
|
714
|
+
},
|
|
715
|
+
isNodeDroppable: function isNodeDroppable() {
|
|
716
|
+
var _this$node2;
|
|
717
|
+
return ((_this$node2 = this.node) === null || _this$node2 === void 0 ? void 0 : _this$node2.droppable) !== false && this.isDroppable;
|
|
718
|
+
},
|
|
719
|
+
isNodeDropActive: function isNodeDropActive() {
|
|
720
|
+
return this.isNodeDropHovered && this.isNodeDroppable;
|
|
467
721
|
}
|
|
468
722
|
},
|
|
469
723
|
components: {
|
|
@@ -480,7 +734,7 @@ var script$1 = {
|
|
|
480
734
|
};
|
|
481
735
|
|
|
482
736
|
var _hoisted_1$1 = ["aria-label", "aria-selected", "aria-expanded", "aria-setsize", "aria-posinset", "aria-level", "aria-checked", "tabindex"];
|
|
483
|
-
var _hoisted_2$1 = ["data-p-selected", "data-p-selectable"];
|
|
737
|
+
var _hoisted_2$1 = ["draggable", "data-p-selected", "data-p-selectable"];
|
|
484
738
|
var _hoisted_3$1 = ["data-p-leaf"];
|
|
485
739
|
function render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|
486
740
|
var _component_SpinnerIcon = resolveComponent("SpinnerIcon");
|
|
@@ -499,18 +753,38 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
499
753
|
"aria-level": $props.level,
|
|
500
754
|
"aria-checked": $options.ariaChecked,
|
|
501
755
|
tabindex: $props.index === 0 ? 0 : -1,
|
|
502
|
-
onKeydown: _cache[
|
|
756
|
+
onKeydown: _cache[9] || (_cache[9] = function () {
|
|
503
757
|
return $options.onKeyDown && $options.onKeyDown.apply($options, arguments);
|
|
504
758
|
})
|
|
505
|
-
}, $options.getPTOptions('node')), [
|
|
759
|
+
}, $options.getPTOptions('node')), [$options.isPrevDropPointActive ? (openBlock(), createElementBlock("div", {
|
|
760
|
+
key: 0,
|
|
761
|
+
"class": normalizeClass(_ctx.cx('dropPoint')),
|
|
762
|
+
"aria-hidden": "true"
|
|
763
|
+
}, null, 2)) : createCommentVNode("", true), createElementVNode("div", mergeProps({
|
|
506
764
|
"class": _ctx.cx('nodeContent'),
|
|
765
|
+
style: $props.node.style,
|
|
766
|
+
draggable: $options.isDraggable,
|
|
507
767
|
onClick: _cache[2] || (_cache[2] = function () {
|
|
508
768
|
return $options.onClick && $options.onClick.apply($options, arguments);
|
|
509
769
|
}),
|
|
510
770
|
onTouchend: _cache[3] || (_cache[3] = function () {
|
|
511
771
|
return $options.onTouchEnd && $options.onTouchEnd.apply($options, arguments);
|
|
512
772
|
}),
|
|
513
|
-
|
|
773
|
+
onDragstart: _cache[4] || (_cache[4] = function () {
|
|
774
|
+
return $options.onNodeDragStart && $options.onNodeDragStart.apply($options, arguments);
|
|
775
|
+
}),
|
|
776
|
+
onDragover: _cache[5] || (_cache[5] = function () {
|
|
777
|
+
return $options.onNodeDragOver && $options.onNodeDragOver.apply($options, arguments);
|
|
778
|
+
}),
|
|
779
|
+
onDragleave: _cache[6] || (_cache[6] = function () {
|
|
780
|
+
return $options.onNodeDragLeave && $options.onNodeDragLeave.apply($options, arguments);
|
|
781
|
+
}),
|
|
782
|
+
onDragend: _cache[7] || (_cache[7] = function () {
|
|
783
|
+
return $options.onNodeDragEnd && $options.onNodeDragEnd.apply($options, arguments);
|
|
784
|
+
}),
|
|
785
|
+
onDrop: _cache[8] || (_cache[8] = function () {
|
|
786
|
+
return $options.onNodeDrop && $options.onNodeDrop.apply($options, arguments);
|
|
787
|
+
})
|
|
514
788
|
}, $options.getPTOptions('nodeContent'), {
|
|
515
789
|
"data-p-selected": $options.checkboxMode ? $options.checked : $options.selected,
|
|
516
790
|
"data-p-selectable": $options.selectable
|
|
@@ -584,14 +858,20 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
584
858
|
selected: $options.checkboxMode ? $options.checked : $options.selected
|
|
585
859
|
}, null, 8, ["node", "expanded", "selected"])) : (openBlock(), createElementBlock(Fragment, {
|
|
586
860
|
key: 1
|
|
587
|
-
}, [createTextVNode(toDisplayString($options.label($props.node)), 1)], 64))], 16)], 16, _hoisted_2$1), $options.
|
|
588
|
-
key:
|
|
861
|
+
}, [createTextVNode(toDisplayString($options.label($props.node)), 1)], 64))], 16)], 16, _hoisted_2$1), $options.isNextDropPointActive ? (openBlock(), createElementBlock("div", {
|
|
862
|
+
key: 1,
|
|
863
|
+
"class": normalizeClass(_ctx.cx('dropPoint')),
|
|
864
|
+
"aria-hidden": "true"
|
|
865
|
+
}, null, 2)) : createCommentVNode("", true), $options.hasChildren && $options.expanded ? (openBlock(), createElementBlock("ul", mergeProps({
|
|
866
|
+
key: 2,
|
|
589
867
|
"class": _ctx.cx('nodeChildren'),
|
|
590
868
|
role: "group"
|
|
591
869
|
}, _ctx.ptm('nodeChildren')), [(openBlock(true), createElementBlock(Fragment, null, renderList($props.node.children, function (childNode, index) {
|
|
592
870
|
return openBlock(), createBlock(_component_TreeNode, {
|
|
593
871
|
key: childNode.key,
|
|
594
872
|
node: childNode,
|
|
873
|
+
parentNode: $props.node,
|
|
874
|
+
rootNodes: $props.rootNodes,
|
|
595
875
|
templates: $props.templates,
|
|
596
876
|
level: $props.level + 1,
|
|
597
877
|
index: index,
|
|
@@ -602,9 +882,13 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
602
882
|
selectionMode: $props.selectionMode,
|
|
603
883
|
selectionKeys: $props.selectionKeys,
|
|
604
884
|
onCheckboxChange: $options.propagateUp,
|
|
885
|
+
draggableScope: $props.draggableScope,
|
|
886
|
+
dragdrop: $props.dragdrop,
|
|
887
|
+
validateDrop: $props.validateDrop,
|
|
888
|
+
onNodeDrop: $options.onChildNodeDrop,
|
|
605
889
|
unstyled: _ctx.unstyled,
|
|
606
890
|
pt: _ctx.pt
|
|
607
|
-
}, null, 8, ["node", "templates", "level", "index", "loadingMode", "expandedKeys", "onNodeToggle", "onNodeClick", "selectionMode", "selectionKeys", "onCheckboxChange", "unstyled", "pt"]);
|
|
891
|
+
}, null, 8, ["node", "parentNode", "rootNodes", "templates", "level", "index", "loadingMode", "expandedKeys", "onNodeToggle", "onNodeClick", "selectionMode", "selectionKeys", "onCheckboxChange", "draggableScope", "dragdrop", "validateDrop", "onNodeDrop", "unstyled", "pt"]);
|
|
608
892
|
}), 128))], 16)) : createCommentVNode("", true)], 16, _hoisted_1$1);
|
|
609
893
|
}
|
|
610
894
|
|
|
@@ -627,18 +911,53 @@ var script = {
|
|
|
627
911
|
name: 'Tree',
|
|
628
912
|
"extends": script$2,
|
|
629
913
|
inheritAttrs: false,
|
|
630
|
-
emits: ['node-expand', 'node-collapse', 'update:expandedKeys', 'update:selectionKeys', 'node-select', 'node-unselect', 'filter'],
|
|
914
|
+
emits: ['node-expand', 'node-collapse', 'update:expandedKeys', 'update:selectionKeys', 'node-select', 'node-unselect', 'filter', 'node-drop', 'update:value'],
|
|
631
915
|
data: function data() {
|
|
632
916
|
return {
|
|
633
917
|
d_expandedKeys: this.expandedKeys || {},
|
|
634
|
-
filterValue: null
|
|
918
|
+
filterValue: null,
|
|
919
|
+
dragNode: null,
|
|
920
|
+
dragNodeSubNodes: null,
|
|
921
|
+
dragNodeIndex: null,
|
|
922
|
+
dragNodeScope: null,
|
|
923
|
+
dragHover: null
|
|
635
924
|
};
|
|
636
925
|
},
|
|
926
|
+
dragDropService: null,
|
|
927
|
+
dragStartCleanup: null,
|
|
928
|
+
dragStopCleanup: null,
|
|
637
929
|
watch: {
|
|
638
930
|
expandedKeys: function expandedKeys(newValue) {
|
|
639
931
|
this.d_expandedKeys = newValue;
|
|
640
932
|
}
|
|
641
933
|
},
|
|
934
|
+
mounted: function mounted() {
|
|
935
|
+
var _this = this;
|
|
936
|
+
if (this.dragdrop) {
|
|
937
|
+
this.dragDropService = useTreeDragDropService();
|
|
938
|
+
this.dragStartCleanup = this.dragDropService.onDragStart(function (event) {
|
|
939
|
+
_this.dragNode = event.node;
|
|
940
|
+
_this.dragNodeSubNodes = event.subNodes;
|
|
941
|
+
_this.dragNodeIndex = event.index;
|
|
942
|
+
_this.dragNodeScope = event.scope;
|
|
943
|
+
});
|
|
944
|
+
this.dragStopCleanup = this.dragDropService.onDragStop(function () {
|
|
945
|
+
_this.dragNode = null;
|
|
946
|
+
_this.dragNodeSubNodes = null;
|
|
947
|
+
_this.dragNodeIndex = null;
|
|
948
|
+
_this.dragNodeScope = null;
|
|
949
|
+
_this.dragHover = false;
|
|
950
|
+
});
|
|
951
|
+
}
|
|
952
|
+
},
|
|
953
|
+
beforeUnmount: function beforeUnmount() {
|
|
954
|
+
if (this.dragStartCleanup) {
|
|
955
|
+
this.dragStartCleanup();
|
|
956
|
+
}
|
|
957
|
+
if (this.dragStopCleanup) {
|
|
958
|
+
this.dragStopCleanup();
|
|
959
|
+
}
|
|
960
|
+
},
|
|
642
961
|
methods: {
|
|
643
962
|
onNodeToggle: function onNodeToggle(node) {
|
|
644
963
|
var key = node.key;
|
|
@@ -794,6 +1113,134 @@ var script = {
|
|
|
794
1113
|
}) || matched;
|
|
795
1114
|
}
|
|
796
1115
|
return matched;
|
|
1116
|
+
},
|
|
1117
|
+
onNodeDrop: function onNodeDrop(event) {
|
|
1118
|
+
this.$emit('node-drop', event);
|
|
1119
|
+
},
|
|
1120
|
+
allowDrop: function allowDrop(dragNode, dropNode, dragNodeScope) {
|
|
1121
|
+
if (!dragNode) {
|
|
1122
|
+
//prevent random html elements to be dragged
|
|
1123
|
+
return false;
|
|
1124
|
+
} else if (this.isValidDragScope(dragNodeScope)) {
|
|
1125
|
+
var allow = true;
|
|
1126
|
+
if (dropNode) {
|
|
1127
|
+
if (dragNode === dropNode) {
|
|
1128
|
+
allow = false;
|
|
1129
|
+
} else {
|
|
1130
|
+
var parent = dropNode.parent;
|
|
1131
|
+
while (parent != null) {
|
|
1132
|
+
if (parent === dragNode) {
|
|
1133
|
+
allow = false;
|
|
1134
|
+
break;
|
|
1135
|
+
}
|
|
1136
|
+
parent = parent.parent;
|
|
1137
|
+
}
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
return allow;
|
|
1141
|
+
} else {
|
|
1142
|
+
return false;
|
|
1143
|
+
}
|
|
1144
|
+
},
|
|
1145
|
+
allowNodeDrop: function allowNodeDrop(dropNode) {
|
|
1146
|
+
return this.allowDrop(this.dragNode, dropNode, this.dragNodeScope);
|
|
1147
|
+
},
|
|
1148
|
+
isValidDragScope: function isValidDragScope(dragScope) {
|
|
1149
|
+
var dropScope = this.droppableScope;
|
|
1150
|
+
if (dropScope !== null) {
|
|
1151
|
+
if (typeof dropScope === 'string') {
|
|
1152
|
+
if (typeof dragScope === 'string') return dropScope === dragScope;else if (Array.isArray(dragScope)) return dragScope.indexOf(dropScope) != -1;
|
|
1153
|
+
} else if (Array.isArray(dropScope)) {
|
|
1154
|
+
if (typeof dragScope === 'string') {
|
|
1155
|
+
return dropScope.indexOf(dragScope) != -1;
|
|
1156
|
+
} else if (Array.isArray(dragScope)) {
|
|
1157
|
+
var _iterator3 = _createForOfIteratorHelper(dropScope),
|
|
1158
|
+
_step3;
|
|
1159
|
+
try {
|
|
1160
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
1161
|
+
var s = _step3.value;
|
|
1162
|
+
var _iterator4 = _createForOfIteratorHelper(dragScope),
|
|
1163
|
+
_step4;
|
|
1164
|
+
try {
|
|
1165
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
1166
|
+
var ds = _step4.value;
|
|
1167
|
+
if (s === ds) {
|
|
1168
|
+
return true;
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1171
|
+
} catch (err) {
|
|
1172
|
+
_iterator4.e(err);
|
|
1173
|
+
} finally {
|
|
1174
|
+
_iterator4.f();
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
} catch (err) {
|
|
1178
|
+
_iterator3.e(err);
|
|
1179
|
+
} finally {
|
|
1180
|
+
_iterator3.f();
|
|
1181
|
+
}
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
return false;
|
|
1185
|
+
} else {
|
|
1186
|
+
return true;
|
|
1187
|
+
}
|
|
1188
|
+
},
|
|
1189
|
+
onDragOver: function onDragOver(event) {
|
|
1190
|
+
if (this.dragdrop && (!this.value || this.value.length === 0)) {
|
|
1191
|
+
event.dataTransfer.dropEffect = 'move';
|
|
1192
|
+
event.preventDefault();
|
|
1193
|
+
}
|
|
1194
|
+
},
|
|
1195
|
+
onDragEnter: function onDragEnter() {
|
|
1196
|
+
if (this.dragdrop && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {
|
|
1197
|
+
this.dragHover = true;
|
|
1198
|
+
}
|
|
1199
|
+
},
|
|
1200
|
+
onDragLeave: function onDragLeave(event) {
|
|
1201
|
+
if (this.dragdrop) {
|
|
1202
|
+
var rect = event.currentTarget.getBoundingClientRect();
|
|
1203
|
+
if (event.x > rect.left + rect.width || event.x < rect.left || event.y > rect.top + rect.height || event.y < rect.top) {
|
|
1204
|
+
this.dragHover = false;
|
|
1205
|
+
}
|
|
1206
|
+
}
|
|
1207
|
+
},
|
|
1208
|
+
processTreeDrop: function processTreeDrop(dragNode, dragNodeIndex) {
|
|
1209
|
+
this.dragNodeSubNodes.splice(dragNodeIndex, 1);
|
|
1210
|
+
var newValue = [].concat(_toConsumableArray(this.value || []), [dragNode]);
|
|
1211
|
+
this.$emit('update:value', newValue);
|
|
1212
|
+
this.dragDropService.stopDrag({
|
|
1213
|
+
node: dragNode
|
|
1214
|
+
});
|
|
1215
|
+
},
|
|
1216
|
+
onDrop: function onDrop(event) {
|
|
1217
|
+
var _this2 = this;
|
|
1218
|
+
if (this.dragdrop && (!this.value || this.value.length === 0)) {
|
|
1219
|
+
event.preventDefault();
|
|
1220
|
+
var dragNode = this.dragNode;
|
|
1221
|
+
if (this.allowDrop(dragNode, null, this.dragNodeScope)) {
|
|
1222
|
+
var dragNodeIndex = this.dragNodeIndex;
|
|
1223
|
+
if (this.validateDrop) {
|
|
1224
|
+
this.$emit('node-drop', {
|
|
1225
|
+
originalEvent: event,
|
|
1226
|
+
dragNode: dragNode,
|
|
1227
|
+
dropNode: null,
|
|
1228
|
+
index: dragNodeIndex,
|
|
1229
|
+
accept: function accept() {
|
|
1230
|
+
_this2.processTreeDrop(dragNode, dragNodeIndex);
|
|
1231
|
+
}
|
|
1232
|
+
});
|
|
1233
|
+
} else {
|
|
1234
|
+
this.$emit('node-drop', {
|
|
1235
|
+
originalEvent: event,
|
|
1236
|
+
dragNode: dragNode,
|
|
1237
|
+
dropNode: null,
|
|
1238
|
+
index: dragNodeIndex
|
|
1239
|
+
});
|
|
1240
|
+
this.processTreeDrop(dragNode, dragNodeIndex);
|
|
1241
|
+
}
|
|
1242
|
+
}
|
|
1243
|
+
}
|
|
797
1244
|
}
|
|
798
1245
|
},
|
|
799
1246
|
computed: {
|
|
@@ -802,11 +1249,11 @@ var script = {
|
|
|
802
1249
|
var searchFields = isFunction(this.filterBy) ? [this.filterBy] : this.filterBy.split(',');
|
|
803
1250
|
var filterText = this.filterValue.trim().toLocaleLowerCase(this.filterLocale);
|
|
804
1251
|
var strict = this.filterMode === 'strict';
|
|
805
|
-
var
|
|
806
|
-
|
|
1252
|
+
var _iterator5 = _createForOfIteratorHelper(this.value),
|
|
1253
|
+
_step5;
|
|
807
1254
|
try {
|
|
808
|
-
for (
|
|
809
|
-
var node =
|
|
1255
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
1256
|
+
var node = _step5.value;
|
|
810
1257
|
var _node = _objectSpread$1({}, node);
|
|
811
1258
|
var paramsWithoutNode = {
|
|
812
1259
|
searchFields: searchFields,
|
|
@@ -818,15 +1265,22 @@ var script = {
|
|
|
818
1265
|
}
|
|
819
1266
|
}
|
|
820
1267
|
} catch (err) {
|
|
821
|
-
|
|
1268
|
+
_iterator5.e(err);
|
|
822
1269
|
} finally {
|
|
823
|
-
|
|
1270
|
+
_iterator5.f();
|
|
824
1271
|
}
|
|
825
1272
|
return filteredNodes;
|
|
826
1273
|
},
|
|
827
1274
|
valueToRender: function valueToRender() {
|
|
828
1275
|
if (this.filterValue && this.filterValue.trim().length > 0) return this.filteredValue;else return this.value;
|
|
829
1276
|
},
|
|
1277
|
+
empty: function empty() {
|
|
1278
|
+
return !this.valueToRender || this.valueToRender.length === 0;
|
|
1279
|
+
},
|
|
1280
|
+
emptyMessageText: function emptyMessageText() {
|
|
1281
|
+
var _this$$primevue$confi;
|
|
1282
|
+
return ((_this$$primevue$confi = this.$primevue.config) === null || _this$$primevue$confi === void 0 || (_this$$primevue$confi = _this$$primevue$confi.locale) === null || _this$$primevue$confi === void 0 ? void 0 : _this$$primevue$confi.emptyMessage) || '';
|
|
1283
|
+
},
|
|
830
1284
|
containerDataP: function containerDataP() {
|
|
831
1285
|
return cn({
|
|
832
1286
|
loading: this.loading,
|
|
@@ -867,6 +1321,18 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
867
1321
|
var _component_TreeNode = resolveComponent("TreeNode");
|
|
868
1322
|
return openBlock(), createElementBlock("div", mergeProps({
|
|
869
1323
|
"class": _ctx.cx('root'),
|
|
1324
|
+
onDragover: _cache[1] || (_cache[1] = function () {
|
|
1325
|
+
return $options.onDragOver && $options.onDragOver.apply($options, arguments);
|
|
1326
|
+
}),
|
|
1327
|
+
onDragenter: _cache[2] || (_cache[2] = function () {
|
|
1328
|
+
return $options.onDragEnter && $options.onDragEnter.apply($options, arguments);
|
|
1329
|
+
}),
|
|
1330
|
+
onDragleave: _cache[3] || (_cache[3] = function () {
|
|
1331
|
+
return $options.onDragLeave && $options.onDragLeave.apply($options, arguments);
|
|
1332
|
+
}),
|
|
1333
|
+
onDrop: _cache[4] || (_cache[4] = function () {
|
|
1334
|
+
return $options.onDrop && $options.onDrop.apply($options, arguments);
|
|
1335
|
+
}),
|
|
870
1336
|
"data-p": $options.containerDataP
|
|
871
1337
|
}, _ctx.ptmi('root')), [_ctx.loading && _ctx.loadingMode === 'mask' ? (openBlock(), createElementBlock("div", mergeProps({
|
|
872
1338
|
key: 0,
|
|
@@ -927,7 +1393,8 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
927
1393
|
value: _ctx.value,
|
|
928
1394
|
expandedKeys: _ctx.expandedKeys,
|
|
929
1395
|
selectionKeys: _ctx.selectionKeys
|
|
930
|
-
}),
|
|
1396
|
+
}), !$options.empty ? (openBlock(), createElementBlock("ul", mergeProps({
|
|
1397
|
+
key: 0,
|
|
931
1398
|
"class": _ctx.cx('rootChildren'),
|
|
932
1399
|
role: "tree",
|
|
933
1400
|
"aria-labelledby": _ctx.ariaLabelledby,
|
|
@@ -936,6 +1403,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
936
1403
|
return openBlock(), createBlock(_component_TreeNode, {
|
|
937
1404
|
key: node.key,
|
|
938
1405
|
node: node,
|
|
1406
|
+
rootNodes: $options.valueToRender,
|
|
939
1407
|
templates: _ctx.$slots,
|
|
940
1408
|
level: _ctx.level + 1,
|
|
941
1409
|
index: index,
|
|
@@ -946,10 +1414,19 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
946
1414
|
selectionKeys: _ctx.selectionKeys,
|
|
947
1415
|
onCheckboxChange: $options.onCheckboxChange,
|
|
948
1416
|
loadingMode: _ctx.loadingMode,
|
|
1417
|
+
draggableScope: _ctx.draggableScope,
|
|
1418
|
+
dragdrop: _ctx.dragdrop,
|
|
1419
|
+
validateDrop: _ctx.validateDrop,
|
|
1420
|
+
onNodeDrop: $options.onNodeDrop,
|
|
949
1421
|
unstyled: _ctx.unstyled,
|
|
950
1422
|
pt: _ctx.pt
|
|
951
|
-
}, null, 8, ["node", "templates", "level", "index", "expandedKeys", "onNodeToggle", "onNodeClick", "selectionMode", "selectionKeys", "onCheckboxChange", "loadingMode", "unstyled", "pt"]);
|
|
952
|
-
}), 128))], 16, _hoisted_3)
|
|
1423
|
+
}, null, 8, ["node", "rootNodes", "templates", "level", "index", "expandedKeys", "onNodeToggle", "onNodeClick", "selectionMode", "selectionKeys", "onCheckboxChange", "loadingMode", "draggableScope", "dragdrop", "validateDrop", "onNodeDrop", "unstyled", "pt"]);
|
|
1424
|
+
}), 128))], 16, _hoisted_3)) : (openBlock(), createElementBlock("div", mergeProps({
|
|
1425
|
+
key: 1,
|
|
1426
|
+
"class": _ctx.cx('emptyMessage')
|
|
1427
|
+
}, _ctx.ptm('emptyMessage')), [renderSlot(_ctx.$slots, "empty", {}, function () {
|
|
1428
|
+
return [createTextVNode(toDisplayString($options.emptyMessageText), 1)];
|
|
1429
|
+
})], 16)), renderSlot(_ctx.$slots, "footer", {
|
|
953
1430
|
value: _ctx.value,
|
|
954
1431
|
expandedKeys: _ctx.expandedKeys,
|
|
955
1432
|
selectionKeys: _ctx.selectionKeys
|