@concretecms/bedrock 1.5.5 → 1.5.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.
- package/assets/cms/js/tree.js +33 -6
- package/package.json +1 -1
package/assets/cms/js/tree.js
CHANGED
|
@@ -138,8 +138,17 @@ ConcreteTree.prototype = {
|
|
|
138
138
|
},
|
|
139
139
|
select: function (select, data) {
|
|
140
140
|
if (options.chooseNodeInForm) {
|
|
141
|
-
|
|
141
|
+
let keys = [];
|
|
142
|
+
if (selectMode == 1) {
|
|
143
|
+
keys = [data.node.key]
|
|
144
|
+
my.deselectNodes(data.tree.getRootNode(), data.node)
|
|
145
|
+
} else {
|
|
146
|
+
keys = my.getSelectedNodeKeys(data.tree.getRootNode(), ajaxData.treeNodeSelectedIDs)
|
|
147
|
+
}
|
|
148
|
+
// Call onSelect callback
|
|
142
149
|
options.onSelect(keys)
|
|
150
|
+
// Update selected nodes for ajax request to avoid hidden nodes to be selected unexpectedly
|
|
151
|
+
ajaxData.treeNodeSelectedIDs = keys
|
|
143
152
|
}
|
|
144
153
|
},
|
|
145
154
|
|
|
@@ -226,11 +235,13 @@ ConcreteTree.prototype = {
|
|
|
226
235
|
},
|
|
227
236
|
collapse: function(event, data) {
|
|
228
237
|
// loop over child nodes and check if node is still selected. If not remove it from the 'options.ajaxData.selected' array.
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
238
|
+
if (options.ajaxData.selected) {
|
|
239
|
+
data.node.children.forEach(function(nodeChild) {
|
|
240
|
+
if (options.ajaxData.selected.includes(parseInt(nodeChild.key)) && !nodeChild.isSelected()) {
|
|
241
|
+
options.ajaxData.selected.splice(options.ajaxData.selected.indexOf(nodeChild.key), 1)
|
|
242
|
+
}
|
|
243
|
+
})
|
|
244
|
+
}
|
|
234
245
|
},
|
|
235
246
|
dnd: {
|
|
236
247
|
preventRecursiveMoves: true, // Prevent dropping nodes on own descendants,
|
|
@@ -338,6 +349,22 @@ ConcreteTree.prototype = {
|
|
|
338
349
|
return selected
|
|
339
350
|
},
|
|
340
351
|
|
|
352
|
+
deselectNodes: function (parentNode, selectedNode) {
|
|
353
|
+
var my = this
|
|
354
|
+
|
|
355
|
+
// Walk through all child nodes
|
|
356
|
+
if (parentNode.hasChildren()) {
|
|
357
|
+
parentNode.getChildren().forEach(function (child) {
|
|
358
|
+
// If the node is not the selected node, deselect it
|
|
359
|
+
if (parseInt(child.key) !== parseInt(selectedNode.key)) {
|
|
360
|
+
child.setSelected(false)
|
|
361
|
+
}
|
|
362
|
+
// call the function recursively
|
|
363
|
+
my.deselectNodes(child, selectedNode)
|
|
364
|
+
})
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
|
|
341
368
|
getLoadNodePromise: function (node) {
|
|
342
369
|
var my = this
|
|
343
370
|
var ajaxData = my.options.ajaxData != false ? my.options.ajaxData : {}
|
package/package.json
CHANGED