@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.
@@ -138,8 +138,17 @@ ConcreteTree.prototype = {
138
138
  },
139
139
  select: function (select, data) {
140
140
  if (options.chooseNodeInForm) {
141
- const keys = my.getSelectedNodeKeys(data.tree.getRootNode(), ajaxData.treeNodeSelectedIDs)
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
- data.node.children.forEach(function(nodeChild) {
230
- if (options.ajaxData.selected.includes(parseInt(nodeChild.key)) && !nodeChild.isSelected()) {
231
- options.ajaxData.selected.splice(options.ajaxData.selected.indexOf(nodeChild.key), 1)
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@concretecms/bedrock",
3
- "version": "1.5.5",
3
+ "version": "1.5.6",
4
4
  "description": "The asset framework and dependencies for Concrete CMS.",
5
5
  "scripts": {
6
6
  "lint": "standardx \"**/*.{js,vue}\" && stylelint assets/**/*.{scss,vue}",