neo.mjs 7.16.0 → 8.0.0-alpha.2

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.
Files changed (77) hide show
  1. package/apps/ServiceWorker.mjs +2 -2
  2. package/apps/portal/view/ViewportController.mjs +1 -1
  3. package/apps/portal/view/home/FooterContainer.mjs +1 -1
  4. package/apps/realworld/view/HomeComponent.mjs +13 -14
  5. package/apps/realworld/view/user/ProfileComponent.mjs +1 -1
  6. package/apps/realworld/view/user/SignUpComponent.mjs +1 -2
  7. package/examples/ServiceWorker.mjs +2 -2
  8. package/examples/table/container/MainContainer.mjs +17 -12
  9. package/examples/table/nestedRecordFields/MainContainer.mjs +3 -1
  10. package/examples/todoList/version1/MainComponent.mjs +1 -1
  11. package/package.json +6 -6
  12. package/resources/data/deck/learnneo/pages/benefits/Speed.md +5 -4
  13. package/resources/scss/src/calendar/view/week/Component.scss +6 -0
  14. package/resources/scss/src/component/DateSelector.scss +1 -0
  15. package/src/DefaultConfig.mjs +2 -2
  16. package/src/button/Base.mjs +8 -8
  17. package/src/calendar/view/MainContainer.mjs +4 -1
  18. package/src/calendar/view/SettingsContainer.mjs +4 -0
  19. package/src/calendar/view/YearComponent.mjs +0 -3
  20. package/src/calendar/view/calendars/ColorsList.mjs +6 -6
  21. package/src/calendar/view/calendars/Container.mjs +1 -1
  22. package/src/calendar/view/calendars/List.mjs +14 -2
  23. package/src/calendar/view/month/Component.mjs +1 -1
  24. package/src/calendar/view/week/Component.mjs +7 -7
  25. package/src/calendar/view/week/EventDragZone.mjs +1 -1
  26. package/src/calendar/view/week/TimeAxisComponent.mjs +2 -2
  27. package/src/calendar/view/week/plugin/DragDrop.mjs +3 -3
  28. package/src/collection/Base.mjs +4 -3
  29. package/src/component/Base.mjs +125 -49
  30. package/src/component/Circle.mjs +1 -3
  31. package/src/component/DateSelector.mjs +1 -1
  32. package/src/container/Accordion.mjs +1 -1
  33. package/src/container/Base.mjs +19 -7
  34. package/src/core/Base.mjs +10 -9
  35. package/src/draggable/list/DragZone.mjs +1 -1
  36. package/src/draggable/toolbar/DragZone.mjs +1 -1
  37. package/src/draggable/toolbar/SortZone.mjs +1 -1
  38. package/src/draggable/tree/DragZone.mjs +1 -1
  39. package/src/form/Fieldset.mjs +2 -0
  40. package/src/form/field/Color.mjs +4 -4
  41. package/src/form/field/ComboBox.mjs +2 -2
  42. package/src/form/field/Date.mjs +2 -1
  43. package/src/form/field/Picker.mjs +2 -1
  44. package/src/form/field/Text.mjs +8 -8
  45. package/src/layout/Card.mjs +11 -6
  46. package/src/layout/Cube.mjs +15 -4
  47. package/src/list/Chip.mjs +3 -2
  48. package/src/list/Circle.mjs +2 -1
  49. package/src/list/Component.mjs +5 -0
  50. package/src/manager/Component.mjs +158 -4
  51. package/src/manager/DomEvent.mjs +2 -2
  52. package/src/menu/List.mjs +3 -4
  53. package/src/menu/Panel.mjs +1 -1
  54. package/src/selection/Model.mjs +1 -1
  55. package/src/selection/grid/BaseModel.mjs +61 -0
  56. package/src/selection/grid/CellColumnModel.mjs +2 -2
  57. package/src/selection/grid/CellColumnRowModel.mjs +2 -2
  58. package/src/selection/grid/CellModel.mjs +4 -4
  59. package/src/selection/grid/CellRowModel.mjs +9 -3
  60. package/src/selection/grid/ColumnModel.mjs +15 -26
  61. package/src/selection/grid/RowModel.mjs +15 -25
  62. package/src/selection/table/BaseModel.mjs +61 -0
  63. package/src/selection/table/CellColumnModel.mjs +2 -2
  64. package/src/selection/table/CellColumnRowModel.mjs +2 -2
  65. package/src/selection/table/CellModel.mjs +4 -4
  66. package/src/selection/table/CellRowModel.mjs +9 -3
  67. package/src/selection/table/ColumnModel.mjs +7 -8
  68. package/src/selection/table/RowModel.mjs +7 -7
  69. package/src/table/Container.mjs +1 -0
  70. package/src/table/View.mjs +102 -80
  71. package/src/table/header/Button.mjs +3 -5
  72. package/src/table/header/Toolbar.mjs +1 -0
  73. package/src/tree/List.mjs +1 -1
  74. package/src/util/VDom.mjs +42 -11
  75. package/src/util/VNode.mjs +33 -11
  76. package/src/vdom/Helper.mjs +55 -22
  77. package/src/vdom/VNode.mjs +1 -1
@@ -133,6 +133,7 @@ class Card extends Base {
133
133
  if (needsTransition) {
134
134
  await me.slideCards(value, oldValue)
135
135
  } else if (removeInactiveCards || needsUpdate) {
136
+ container.updateDepth = -1; // include the full tree to honor new or changed inactive cards
136
137
  container.update()
137
138
  }
138
139
  }
@@ -200,14 +201,14 @@ class Card extends Base {
200
201
  item.className = proto.className;
201
202
  item.module = module;
202
203
 
203
- me.applyChildAttributes(item, index);
204
-
205
204
  delete item.isLoading;
206
205
  delete item.vdom;
207
206
 
208
207
  items[index] = item = Neo.create(item);
209
208
 
210
- container.getVdomItemsRoot().cn[index] = item.vdom;
209
+ me.applyChildAttributes(item, index);
210
+
211
+ container.getVdomItemsRoot().cn[index] = item.createVdomReference();
211
212
 
212
213
  container.fire('cardLoaded', {item});
213
214
 
@@ -252,13 +253,15 @@ class Card extends Base {
252
253
 
253
254
  vdom.cn = [
254
255
  {cls: ['neo-relative'], cn: [
255
- {cls: ['neo-animation-wrapper'], style, cn: [card.vdom]}
256
+ {cls: ['neo-animation-wrapper'], style, cn: [card.createVdomReference()]}
256
257
  ]}
257
258
  ];
258
259
 
259
260
  animationWrapper = vdom.cn[0].cn[0];
260
261
 
261
- animationWrapper.cn[slideIn ? 'unshift' : 'push'](oldCard.vdom);
262
+ animationWrapper.cn[slideIn ? 'unshift' : 'push'](oldCard.createVdomReference());
263
+
264
+ container.updateDepth = -1;
262
265
 
263
266
  await container.promiseUpdate();
264
267
 
@@ -273,11 +276,13 @@ class Card extends Base {
273
276
  vdom.cn = [];
274
277
 
275
278
  container.items.forEach(item => {
276
- vdom.cn.push(item.vdom)
279
+ vdom.cn.push(item.createVdomReference())
277
280
  });
278
281
 
279
282
  oldCard.vdom.removeDom = true;
280
283
 
284
+ container.updateDepth = -1;
285
+
281
286
  await container.promiseUpdate()
282
287
  }
283
288
  }
@@ -144,6 +144,7 @@ class Cube extends Card {
144
144
 
145
145
  if (Neo.typeOf(item.module) === 'Function') {
146
146
  await me.loadModule(item, value);
147
+ container.updateDepth = -1;
147
148
  container.update();
148
149
 
149
150
  await me.timeout(100) // wait for the view to get painted first
@@ -276,6 +277,14 @@ class Cube extends Card {
276
277
  }
277
278
  }
278
279
 
280
+ /**
281
+ * @protected
282
+ */
283
+ applyRenderAttributes() {
284
+ this.container.updateDepth = -1;
285
+ super.applyRenderAttributes()
286
+ }
287
+
279
288
  /**
280
289
  *
281
290
  */
@@ -299,9 +308,9 @@ class Cube extends Card {
299
308
  vdom.cn = container.getVdomItemsRoot().cn;
300
309
 
301
310
  if (me.hideInactiveCardsOnDestroy) {
302
- vdom.cn.forEach((item, index) => {
311
+ container.items.forEach((item, index) => {
303
312
  if (index < 6 && index !== me.activeIndex) {
304
- item.removeDom = true
313
+ item.vdom.removeDom = true
305
314
  }
306
315
  })
307
316
  }
@@ -309,6 +318,7 @@ class Cube extends Card {
309
318
  // override
310
319
  container.getVdomItemsRoot = me.#cachedVdomItemsRoot;
311
320
 
321
+ container.updateDepth = -1;
312
322
  container.update();
313
323
 
314
324
  super.destroy(...args)
@@ -336,12 +346,13 @@ class Cube extends Card {
336
346
 
337
347
  me.timeout(50).then(() => {
338
348
  // Important when switching from a card layout to this one
339
- container.vdom.cn[0].cn[0].cn.forEach((node, index) => {
349
+ container.items.forEach((item, index) => {
340
350
  if (index < 6) {
341
- delete node.removeDom
351
+ delete item.vdom.removeDom
342
352
  }
343
353
  });
344
354
 
355
+ container.updateDepth = -1;
345
356
  container.update()
346
357
  })
347
358
  }
package/src/list/Chip.mjs CHANGED
@@ -62,7 +62,7 @@ class Chip extends ComponentList {
62
62
  items = me.items || [];
63
63
 
64
64
  items.forEach(item => {
65
- item.display = value ? 'flex' : 'inline-flex';
65
+ item.display = value ? 'flex' : 'inline-flex'
66
66
  })
67
67
  }
68
68
  }
@@ -85,6 +85,7 @@ class Chip extends ComponentList {
85
85
  };
86
86
 
87
87
  if (listItem) {
88
+ me.updateDepth = 2;
88
89
  listItem.setSilent(config)
89
90
  } else {
90
91
  items[index] = listItem = Neo.create({
@@ -98,7 +99,7 @@ class Chip extends ComponentList {
98
99
 
99
100
  me.items = items;
100
101
 
101
- return [listItem.vdom]
102
+ return [listItem.createVdomReference()]
102
103
  }
103
104
  }
104
105
 
@@ -61,6 +61,7 @@ class Circle extends Component {
61
61
  };
62
62
 
63
63
  if (listItem) {
64
+ me.updateDepth = 2;
64
65
  listItem.setSilent(config)
65
66
  } else {
66
67
  items[index] = listItem = Neo.create({
@@ -79,7 +80,7 @@ class Circle extends Component {
79
80
 
80
81
  me.items = items;
81
82
 
82
- return [listItem.vdom]
83
+ return [listItem.createVdomReference()]
83
84
  }
84
85
  }
85
86
 
@@ -112,6 +112,10 @@ class Component extends Base {
112
112
  fromIndex, key, previousKeys;
113
113
 
114
114
  if (me.items) {
115
+ me.items.forEach(item => {
116
+ item.setSilent({id: null})
117
+ });
118
+
115
119
  key = me.getKeyProperty();
116
120
  previousKeys = data.previousItems.map(e => e[key]);
117
121
 
@@ -120,6 +124,7 @@ class Component extends Base {
120
124
  newItems.push(me.items[fromIndex])
121
125
  });
122
126
 
127
+ me.updateDepth = -1;
123
128
  me.items = newItems
124
129
  }
125
130
  }
@@ -1,4 +1,5 @@
1
1
  import Base from './Base.mjs';
2
+ import VDomUtil from '../util/VDom.mjs';
2
3
  import VNodeUtil from '../util/VNode.mjs';
3
4
 
4
5
  /**
@@ -20,6 +21,11 @@ class Component extends Base {
20
21
  singleton: true
21
22
  }
22
23
 
24
+ /**
25
+ * @member {Map} wrapperNodes=new Map()
26
+ */
27
+ wrapperNodes = new Map()
28
+
23
29
  /**
24
30
  * @param {Object} config
25
31
  */
@@ -32,6 +38,58 @@ class Component extends Base {
32
38
  Neo.getComponent = me.getById.bind(me) // alias
33
39
  }
34
40
 
41
+ /**
42
+ * Flattens a given vnode tree by replacing component based subtrees with componentId based references
43
+ * @param {Object} vnode
44
+ * @param {String} ownerId We do not want to replace the own id => wrapped items
45
+ * @returns {Object}
46
+ */
47
+ addVnodeComponentReferences(vnode, ownerId) {
48
+ vnode = {...vnode}; // shallow copy
49
+
50
+ let me = this,
51
+ childNodes = vnode?.childNodes ? [...vnode.childNodes] : [],
52
+ childNodeId, component, componentId, parentRef, referenceNode;
53
+
54
+ vnode.childNodes = childNodes;
55
+
56
+ childNodes.forEach((childNode, index) => {
57
+ childNodeId = childNode.id;
58
+
59
+ if (!childNode.componentId && childNodeId !== ownerId) {
60
+ component = me.get(childNodeId);
61
+
62
+ if (!component) {
63
+ // searching for wrapped components as a fallback
64
+ component = me.wrapperNodes.get(childNodeId);
65
+
66
+ if (component) {
67
+ // update the parent component reference => assign the wrapper id
68
+ componentId = component.id;
69
+ parentRef = VDomUtil.find(component.parent.vdom, {componentId}, false);
70
+
71
+ if (parentRef) {
72
+ parentRef.vdom.id = childNodeId
73
+ }
74
+ }
75
+ }
76
+
77
+ if (component) {
78
+ componentId = component.id;
79
+ referenceNode = {componentId};
80
+
81
+ if (componentId !== childNodeId) {
82
+ referenceNode.id = childNodeId
83
+ }
84
+ }
85
+ }
86
+
87
+ childNodes[index] = component ? referenceNode : me.addVnodeComponentReferences(childNode, ownerId)
88
+ });
89
+
90
+ return vnode
91
+ }
92
+
35
93
  /**
36
94
  * Returns the first component which matches the config-selector moving down the component items tree.
37
95
  * Use returnFirstMatch=false to get an array of all matching items instead.
@@ -144,11 +202,11 @@ class Component extends Base {
144
202
  /**
145
203
  * todo: replace all calls of this method to calls using the util.VNode class
146
204
  * Get the ids of all child nodes of the given vnode
147
- * @param vnode
148
- * @param childIds
149
- * @returns {Array} childIds
205
+ * @param {Object} vnode
206
+ * @param {String[]} childIds=[]
207
+ * @returns {String[]} childIds
150
208
  */
151
- getChildIds(vnode, childIds) {
209
+ getChildIds(vnode, childIds=[]) {
152
210
  return VNodeUtil.getChildIds(vnode, childIds)
153
211
  }
154
212
 
@@ -318,6 +376,79 @@ class Component extends Base {
318
376
  return parents
319
377
  }
320
378
 
379
+ /**
380
+ * Copies a given vdom tree and replaces child component references with the vdom of their matching components
381
+ * @param {Object} vdom
382
+ * @param {Number} depth=-1
383
+ * The component replacement depth.
384
+ * -1 will parse the full tree, 1 top level only, 2 include children, 3 include grandchildren
385
+ * @returns {Object}
386
+ */
387
+ getVdomTree(vdom, depth=-1) {
388
+ let output = {...vdom}, // shallow copy
389
+ childDepth;
390
+
391
+ if (vdom.cn) {
392
+ output.cn = [];
393
+
394
+ childDepth = depth === -1 ? -1 : depth > 1 ? depth-1 : 1;
395
+
396
+ vdom.cn.forEach(item => {
397
+ childDepth = depth;
398
+
399
+ if (item.componentId) {
400
+ childDepth = depth === -1 ? -1 : depth > 1 ? depth-1 : 1;
401
+
402
+ if (depth === -1 || depth > 1) {
403
+ item = this.get(item.componentId).vdom
404
+ }
405
+ }
406
+
407
+ output.cn.push(this.getVdomTree(item, childDepth))
408
+ })
409
+ }
410
+
411
+ return output
412
+ }
413
+
414
+ /**
415
+ * Copies a given vnode tree and replaces child component references with the vnode of their matching components
416
+ * @param {Object} vnode
417
+ * @param {Number} depth=-1
418
+ * The component replacement depth.
419
+ * -1 will parse the full tree, 1 top level only, 2 include children, 3 include grandchildren
420
+ * @returns {Object}
421
+ */
422
+ getVnodeTree(vnode, depth=-1) {
423
+ let output = {...vnode}, // shallow copy
424
+ childDepth, component;
425
+
426
+ if (vnode.childNodes) {
427
+ output.childNodes = [];
428
+
429
+ vnode.childNodes.forEach(item => {
430
+ childDepth = depth;
431
+
432
+ if (item.componentId) {
433
+ childDepth = depth === -1 ? -1 : depth > 1 ? depth-1 : 1;
434
+
435
+ if (depth === -1 || depth > 1) {
436
+ component = this.get(item.componentId);
437
+
438
+ // keep references in case there is no vnode (cmp not mounted)
439
+ if (component.vnode) {
440
+ item = component.vnode
441
+ }
442
+ }
443
+ }
444
+
445
+ output.childNodes.push(this.getVnodeTree(item, childDepth))
446
+ })
447
+ }
448
+
449
+ return output
450
+ }
451
+
321
452
  /**
322
453
  * Check if the component had a property of any value somewhere in the Prototype chain
323
454
  *
@@ -338,6 +469,29 @@ class Component extends Base {
338
469
  return false
339
470
  }
340
471
 
472
+ /**
473
+ * @param {String} wrapperId
474
+ * @param {Neo.component.Base} component
475
+ */
476
+ registerWrapperNode(wrapperId, component) {
477
+ this.wrapperNodes.set(wrapperId, component)
478
+ }
479
+
480
+ /**
481
+ * @param {Neo.component.Base|String} item
482
+ */
483
+ unregister(item) {
484
+ if (item) {
485
+ if (Neo.isString(item)) {
486
+ this.wrapperNodes.delete(item)
487
+ } else if (item.id !== item.vdom.id) {
488
+ this.wrapperNodes.delete(item.vdom.id)
489
+ }
490
+ }
491
+
492
+ super.unregister(item)
493
+ }
494
+
341
495
  /**
342
496
  * Returns the first component which matches the config-selector.
343
497
  * Use returnFirstMatch=false to get an array of all matching items instead.
@@ -522,11 +522,11 @@ class DomEvent extends Base {
522
522
  delegationVdom;
523
523
 
524
524
  if (targetId && targetId !== delegationTargetId) {
525
- delegationVdom = VDomUtil.findVdomChild(component.vdom, delegationTargetId);
525
+ delegationVdom = VDomUtil.find(component.vdom, delegationTargetId);
526
526
 
527
527
  // delegationVdom can be undefined when dragging a proxy over the node.
528
528
  // see issues/1137 for details.
529
- if (!delegationVdom || delegationVdom.vdom && VDomUtil.findVdomChild(delegationVdom.vdom, targetId)) {
529
+ if (!delegationVdom || delegationVdom.vdom && VDomUtil.find(delegationVdom.vdom, targetId)) {
530
530
  return false
531
531
  }
532
532
  }
package/src/menu/List.mjs CHANGED
@@ -251,12 +251,11 @@ class List extends BaseList {
251
251
  *
252
252
  */
253
253
  hideSubMenu() {
254
- let me = this,
255
- activeSubMenu = me.activeSubMenu;
254
+ let {activeSubMenu} = this;
256
255
 
257
256
  if (activeSubMenu) {
258
257
  activeSubMenu.unmount();
259
- me.activeSubMenu = null
258
+ this.activeSubMenu = null
260
259
  }
261
260
  }
262
261
 
@@ -402,7 +401,7 @@ class List extends BaseList {
402
401
  recordId = record[me.getKeyProperty()],
403
402
  submenu = me.subMenuMap?.[me.getMenuMapId(recordId)];
404
403
 
405
- if (!submenu || !submenu.mounted) {
404
+ if (!submenu?.mounted) {
406
405
  me.showSubMenu(nodeId, record)
407
406
  } else {
408
407
  me.hideSubMenu()
@@ -82,7 +82,7 @@ class Panel extends BasePanel {
82
82
  * @protected
83
83
  */
84
84
  beforeSetList(value, oldValue) {
85
- oldValue && oldValue.destroy();
85
+ oldValue?.destroy();
86
86
  return ClassSystemUtil.beforeSetInstance(value, List, this.listConfig)
87
87
  }
88
88
  }
@@ -229,7 +229,7 @@ class Model extends Base {
229
229
  me.deselectAll(true)
230
230
  }
231
231
 
232
- items.forEach((node, i) => {
232
+ items.forEach(node => {
233
233
  node = view.getVdomChild(node);
234
234
 
235
235
  if (node) {
@@ -0,0 +1,61 @@
1
+ import Model from '../Model.mjs';
2
+
3
+ /**
4
+ * Abstract base class for all grid related selection models
5
+ * @class Neo.selection.grid.BaseModel
6
+ * @extends Neo.selection.Model
7
+ * @abstract
8
+ */
9
+ class BaseModel extends Model {
10
+ static config = {
11
+ /**
12
+ * @member {String} className='Neo.selection.grid.BaseModel'
13
+ * @protected
14
+ */
15
+ className: 'Neo.selection.grid.BaseModel'
16
+ }
17
+
18
+ /**
19
+ * @param {Object} item
20
+ * @param {Boolean} [silent] true to prevent a vdom update
21
+ * @param {Object[]|String[]} itemCollection=this.items
22
+ * @param {String} [selectedCls]
23
+ */
24
+ deselect(item, silent, itemCollection=this.items, selectedCls) {
25
+ let {view} = this;
26
+
27
+ if (!silent) {
28
+ view.updateDepth = 2
29
+ }
30
+
31
+ super.deselect(item, silent, itemCollection, selectedCls)
32
+ }
33
+
34
+ /**
35
+ * @param {Boolean} [silent] true to prevent a vdom update
36
+ */
37
+ deselectAll(silent) {
38
+ let {view} = this;
39
+
40
+ if (!silent) {
41
+ view.updateDepth = 2
42
+ }
43
+
44
+ super.deselectAll(silent)
45
+ }
46
+
47
+ /**
48
+ * @param {Object} args
49
+ */
50
+ select(...args) {
51
+ let {view} = this;
52
+
53
+ if (!view.silentSelect) {
54
+ view.updateDepth = 2
55
+ }
56
+
57
+ super.select(...args)
58
+ }
59
+ }
60
+
61
+ export default Neo.setupClass(BaseModel);
@@ -69,7 +69,7 @@ class CellColumnModel extends CellModel {
69
69
 
70
70
  if (id) {
71
71
  index = ColumnModel.getColumnIndex(id, me.view.items[0].items);
72
- tbodyNode = VDomUtil.findVdomChild(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
72
+ tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
73
73
  columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, index);
74
74
 
75
75
  me.deselectAllCells(true);
@@ -96,7 +96,7 @@ class CellColumnModel extends CellModel {
96
96
  newIndex += fields.length
97
97
  }
98
98
 
99
- tbodyNode = VDomUtil.findVdomChild(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
99
+ tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
100
100
  columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, newIndex);
101
101
 
102
102
  me.deselectAllCells(true);
@@ -69,7 +69,7 @@ class CellColumnRowModel extends CellRowModel {
69
69
 
70
70
  if (id) {
71
71
  index = ColumnModel.getColumnIndex(id, me.view.items[0].items);
72
- tbodyNode = VDomUtil.findVdomChild(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
72
+ tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
73
73
  columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, index);
74
74
 
75
75
  me.deselectAllCells(true);
@@ -96,7 +96,7 @@ class CellColumnRowModel extends CellRowModel {
96
96
  newIndex += fields.length
97
97
  }
98
98
 
99
- tbodyNode = VDomUtil.findVdomChild(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
99
+ tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
100
100
  columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, newIndex);
101
101
 
102
102
  me.deselectAllCells(true);
@@ -1,10 +1,10 @@
1
- import Model from '../Model.mjs';
1
+ import BaseModel from './BaseModel.mjs';
2
2
 
3
3
  /**
4
4
  * @class Neo.selection.grid.CellModel
5
- * @extends Neo.selection.Model
5
+ * @extends Neo.selection.grid.BaseModel
6
6
  */
7
- class CellModel extends Model {
7
+ class CellModel extends BaseModel {
8
8
  static config = {
9
9
  /**
10
10
  * @member {String} className='Neo.selection.grid.CellModel'
@@ -40,7 +40,7 @@ class CellModel extends Model {
40
40
 
41
41
  me.view.un('cellClick', me.onCellClick, me);
42
42
 
43
- super.destroy(...args);
43
+ super.destroy(...args)
44
44
  }
45
45
 
46
46
  /**
@@ -73,7 +73,10 @@ class CellRowModel extends CellModel {
73
73
 
74
74
  NeoArray.remove(me.selectedRowIds, rowId);
75
75
 
76
- !silent && view.update()
76
+ if (!silent) {
77
+ view.updateDepth = 2;
78
+ view.update()
79
+ }
77
80
  }
78
81
 
79
82
  /**
@@ -103,7 +106,7 @@ class CellRowModel extends CellModel {
103
106
  node = RowModel.getRowNode(data.path),
104
107
  {view} = me,
105
108
  {store} = view,
106
- vdomNode = VDomUtil.findVdomChild(view.vdom, node.id),
109
+ vdomNode = VDomUtil.find(view.vdom, node.id),
107
110
  newIndex = (vdomNode.index + step) % store.getCount(),
108
111
  {parentNode} = vdomNode,
109
112
  id;
@@ -138,7 +141,10 @@ class CellRowModel extends CellModel {
138
141
  me.selectedRowIds.push(id)
139
142
  }
140
143
 
141
- !silent && view.update()
144
+ if (!silent) {
145
+ view.updateDepth = 2;
146
+ view.update()
147
+ }
142
148
  }
143
149
 
144
150
  /**
@@ -1,11 +1,11 @@
1
- import Model from '../Model.mjs';
2
- import VDomUtil from '../../util/VDom.mjs';
1
+ import BaseModel from './BaseModel.mjs';
2
+ import VDomUtil from '../../util/VDom.mjs';
3
3
 
4
4
  /**
5
5
  * @class Neo.selection.grid.ColumnModel
6
- * @extends Neo.selection.Model
6
+ * @extends Neo.selection.grid.BaseModel
7
7
  */
8
- class ColumnModel extends Model {
8
+ class ColumnModel extends BaseModel {
9
9
  static config = {
10
10
  /**
11
11
  * @member {String} className='Neo.selection.grid.ColumnModel'
@@ -41,7 +41,7 @@ class ColumnModel extends Model {
41
41
 
42
42
  me.view.un('cellClick', me.onCellClick, me);
43
43
 
44
- super.destroy(...args);
44
+ super.destroy(...args)
45
45
  }
46
46
 
47
47
  /**
@@ -87,7 +87,7 @@ class ColumnModel extends Model {
87
87
 
88
88
  if (id) {
89
89
  index = ColumnModel.getColumnIndex(id, me.view.items[0].items);
90
- tbodyNode = VDomUtil.findVdomChild(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
90
+ tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
91
91
  columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, index);
92
92
 
93
93
  me.select(columnNodeIds)
@@ -128,7 +128,7 @@ class ColumnModel extends Model {
128
128
  idArray[2] = fields[newIndex];
129
129
  id = idArray.join('__');
130
130
 
131
- tbodyNode = VDomUtil.findVdomChild(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
131
+ tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
132
132
  columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, newIndex);
133
133
 
134
134
  me.select(columnNodeIds);
@@ -143,33 +143,22 @@ class ColumnModel extends Model {
143
143
 
144
144
  let {id, view} = this;
145
145
 
146
- view.keys?._keys.push({
147
- fn : 'onKeyDownLeft',
148
- key : 'Left',
149
- scope: id
150
- }, {
151
- fn : 'onKeyDownRight',
152
- key : 'Right',
153
- scope: id
154
- })
146
+ view.keys?._keys.push(
147
+ {fn: 'onKeyDownLeft', key: 'Left', scope: id},
148
+ {fn: 'onKeyDownRight', key: 'Right', scope: id}
149
+ )
155
150
  }
156
151
 
157
-
158
152
  /**
159
153
  *
160
154
  */
161
155
  unregister() {
162
156
  let {id, view} = this;
163
157
 
164
- view.keys?.removeKeys([{
165
- fn : 'onKeyDownLeft',
166
- key : 'Left',
167
- scope: id
168
- }, {
169
- fn : 'onKeyDownRight',
170
- key : 'Right',
171
- scope: id
172
- }]);
158
+ view.keys?.removeKeys([
159
+ {fn: 'onKeyDownLeft', key: 'Left', scope: id},
160
+ {fn: 'onKeyDownRight', key: 'Right', scope: id}
161
+ ]);
173
162
 
174
163
  super.unregister()
175
164
  }