neo.mjs 8.9.0 → 8.10.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.
Files changed (35) hide show
  1. package/apps/ServiceWorker.mjs +2 -2
  2. package/apps/portal/index.html +1 -1
  3. package/apps/portal/view/home/FooterContainer.mjs +1 -1
  4. package/examples/ServiceWorker.mjs +2 -2
  5. package/examples/grid/container/MainContainer.mjs +19 -15
  6. package/examples/table/cellEditing/MainContainer.mjs +30 -15
  7. package/examples/table/container/MainContainer.mjs +34 -19
  8. package/examples/tableFiltering/MainContainer.mjs +1 -1
  9. package/examples/tableStore/MainContainer.mjs +14 -13
  10. package/examples/tableStore/MainModel.mjs +3 -3
  11. package/package.json +1 -1
  12. package/src/DefaultConfig.mjs +2 -2
  13. package/src/Main.mjs +1 -0
  14. package/src/component/Base.mjs +37 -1
  15. package/src/dialog/Base.mjs +14 -2
  16. package/src/grid/Container.mjs +11 -11
  17. package/src/grid/View.mjs +9 -1
  18. package/src/selection/Model.mjs +5 -13
  19. package/src/selection/grid/BaseModel.mjs +4 -38
  20. package/src/selection/grid/CellColumnModel.mjs +29 -36
  21. package/src/selection/grid/CellColumnRowModel.mjs +27 -34
  22. package/src/selection/grid/CellModel.mjs +50 -44
  23. package/src/selection/grid/CellRowModel.mjs +18 -35
  24. package/src/selection/grid/ColumnModel.mjs +28 -62
  25. package/src/selection/grid/RowModel.mjs +2 -2
  26. package/src/selection/table/BaseModel.mjs +0 -42
  27. package/src/selection/table/CellColumnModel.mjs +9 -18
  28. package/src/selection/table/CellColumnRowModel.mjs +9 -18
  29. package/src/selection/table/CellModel.mjs +3 -3
  30. package/src/selection/table/CellRowModel.mjs +4 -19
  31. package/src/selection/table/ColumnModel.mjs +9 -9
  32. package/src/selection/table/RowModel.mjs +2 -2
  33. package/src/table/Container.mjs +11 -31
  34. package/src/table/View.mjs +46 -7
  35. package/src/table/plugin/CellEditing.mjs +2 -2
@@ -16,45 +16,11 @@ class BaseModel extends Model {
16
16
  }
17
17
 
18
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]
19
+ * Convenience shortcut
20
+ * @member {String[]} dataFields
23
21
  */
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)
22
+ get dataFields() {
23
+ return this.view.parent.columns.map(c => c.dataField)
58
24
  }
59
25
  }
60
26
 
@@ -1,6 +1,5 @@
1
- import CellModel from './CellModel.mjs';
2
- import ColumnModel from './ColumnModel.mjs';
3
- import VDomUtil from '../../util/VDom.mjs';
1
+ import CellModel from './CellModel.mjs';
2
+ import VDomUtil from '../../util/VDom.mjs';
4
3
 
5
4
  /**
6
5
  * @class Neo.selection.grid.CellColumnModel
@@ -29,19 +28,10 @@ class CellColumnModel extends CellModel {
29
28
  */
30
29
  selectedColumnCellCls: 'selected-column-cell',
31
30
  /**
32
- * @member {Array|null} selectedColumnCellIds=null
31
+ * @member {String[]} selectedColumnCellIds=[]
33
32
  * @protected
34
33
  */
35
- selectedColumnCellIds: null
36
- }
37
-
38
- /**
39
- * @param {Object} config
40
- */
41
- construct(config) {
42
- super.construct(config);
43
-
44
- this.selectedColumnCellIds = []
34
+ selectedColumnCellIds: []
45
35
  }
46
36
 
47
37
  /**
@@ -63,14 +53,15 @@ class CellColumnModel extends CellModel {
63
53
  * @param {Object} data
64
54
  */
65
55
  onCellClick(data) {
66
- let me = this,
67
- id = data.data.currentTarget,
68
- columnNodeIds, index, tbodyNode;
56
+ let me = this,
57
+ {view} = me,
58
+ cellId = data.data.currentTarget,
59
+ columnNodeIds, dataField, index;
69
60
 
70
- if (id) {
71
- index = ColumnModel.getColumnIndex(id, me.view.items[0].items);
72
- tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
73
- columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, index);
61
+ if (cellId) {
62
+ dataField = view.getDataField(cellId);
63
+ index = view.getColumn(dataField, true);
64
+ columnNodeIds = VDomUtil.getColumnNodesIds(view.vdom.cn[0], index);
74
65
 
75
66
  me.deselectAllCells(true);
76
67
  me.select(columnNodeIds, me.selectedColumnCellIds, me.selectedColumnCellCls)
@@ -80,29 +71,31 @@ class CellColumnModel extends CellModel {
80
71
  }
81
72
 
82
73
  /**
83
- * @param {Object} data
84
74
  * @param {Number} step
85
75
  */
86
- onNavKeyColumn(data, step) {
87
- let me = this,
88
- idArray = ColumnModel.getCellId(data.path).split('__'),
89
- currentColumn = idArray[2],
90
- {view} = me,
91
- fields = view.columns.map(c => c.dataField),
92
- newIndex = (fields.indexOf(currentColumn) + step) % fields.length,
93
- columnNodeIds, tbodyNode;
94
-
95
- while (newIndex < 0) {
96
- newIndex += fields.length
76
+ onNavKeyColumn(step) {
77
+ let me = this,
78
+ {dataFields, view} = me,
79
+ columnNodeIds, currentColumn, index;
80
+
81
+ if (me.hasSelection()) {
82
+ currentColumn = view.getDataField(me.items[0])
83
+ } else {
84
+ currentColumn = dataFields[0]
85
+ }
86
+
87
+ index = (dataFields.indexOf(currentColumn) + step) % dataFields.length;
88
+
89
+ while (index < 0) {
90
+ index += dataFields.length
97
91
  }
98
92
 
99
- tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
100
- columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, newIndex);
93
+ columnNodeIds = VDomUtil.getColumnNodesIds(view.vdom.cn[0], index);
101
94
 
102
95
  me.deselectAllCells(true);
103
96
  me.select(columnNodeIds, me.selectedColumnCellIds, me.selectedColumnCellCls);
104
97
 
105
- super.onNavKeyColumn(data, step)
98
+ super.onNavKeyColumn(step)
106
99
  }
107
100
 
108
101
  /**
@@ -1,5 +1,4 @@
1
1
  import CellRowModel from './CellRowModel.mjs';
2
- import ColumnModel from './ColumnModel.mjs';
3
2
  import VDomUtil from '../../util/VDom.mjs';
4
3
 
5
4
  /**
@@ -29,19 +28,10 @@ class CellColumnRowModel extends CellRowModel {
29
28
  */
30
29
  selectedColumnCellCls: 'selected-column-cell',
31
30
  /**
32
- * @member {Array|null} selectedColumnCellIds=null
31
+ * @member {String[]} selectedColumnCellIds=[]
33
32
  * @protected
34
33
  */
35
- selectedColumnCellIds: null
36
- }
37
-
38
- /**
39
- * @param {Object} config
40
- */
41
- construct(config) {
42
- super.construct(config);
43
-
44
- this.selectedColumnCellIds = []
34
+ selectedColumnCellIds: []
45
35
  }
46
36
 
47
37
  /**
@@ -63,14 +53,15 @@ class CellColumnRowModel extends CellRowModel {
63
53
  * @param {Object} data
64
54
  */
65
55
  onCellClick(data) {
66
- let me = this,
67
- id = ColumnModel.getCellId(data.data.path),
68
- columnNodeIds, index, tbodyNode;
56
+ let me = this,
57
+ {view} = me,
58
+ cellId = data.data.currentTarget,
59
+ columnNodeIds, dataField, index;
69
60
 
70
- if (id) {
71
- index = ColumnModel.getColumnIndex(id, me.view.items[0].items);
72
- tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
73
- columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, index);
61
+ if (cellId) {
62
+ dataField = view.getDataField(cellId);
63
+ index = view.getColumn(dataField, true);
64
+ columnNodeIds = VDomUtil.getColumnNodesIds(view.vdom.cn[0], index);
74
65
 
75
66
  me.deselectAllCells(true);
76
67
  me.select(columnNodeIds, me.selectedColumnCellIds, me.selectedColumnCellCls)
@@ -80,29 +71,31 @@ class CellColumnRowModel extends CellRowModel {
80
71
  }
81
72
 
82
73
  /**
83
- * @param {Object} data
84
74
  * @param {Number} step
85
75
  */
86
- onNavKeyColumn(data, step) {
87
- let me = this,
88
- idArray = ColumnModel.getCellId(data.path).split('__'),
89
- currentColumn = idArray[2],
90
- {view} = me,
91
- fields = view.columns.map(c => c.dataField),
92
- newIndex = (fields.indexOf(currentColumn) + step) % fields.length,
93
- columnNodeIds, tbodyNode;
94
-
95
- while (newIndex < 0) {
96
- newIndex += fields.length
76
+ onNavKeyColumn(step) {
77
+ let me = this,
78
+ {dataFields, view} = me,
79
+ columnNodeIds, currentColumn, index;
80
+
81
+ if (me.hasSelection()) {
82
+ currentColumn = view.getDataField(me.items[0])
83
+ } else {
84
+ currentColumn = dataFields[0]
85
+ }
86
+
87
+ index = (dataFields.indexOf(currentColumn) + step) % dataFields.length;
88
+
89
+ while (index < 0) {
90
+ index += dataFields.length
97
91
  }
98
92
 
99
- tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
100
- columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, newIndex);
93
+ columnNodeIds = VDomUtil.getColumnNodesIds(view.vdom.cn[0], index);
101
94
 
102
95
  me.deselectAllCells(true);
103
96
  me.select(columnNodeIds, me.selectedColumnCellIds, me.selectedColumnCellCls);
104
97
 
105
- super.onNavKeyColumn(data, step)
98
+ super.onNavKeyColumn(step)
106
99
  }
107
100
 
108
101
  /**
@@ -29,7 +29,7 @@ class CellModel extends BaseModel {
29
29
  addDomListener() {
30
30
  let me = this;
31
31
 
32
- me.view.on('cellClick', me.onCellClick, me)
32
+ me.view.parent.on('cellClick', me.onCellClick, me)
33
33
  }
34
34
 
35
35
  /**
@@ -38,7 +38,7 @@ class CellModel extends BaseModel {
38
38
  destroy(...args) {
39
39
  let me = this;
40
40
 
41
- me.view.un('cellClick', me.onCellClick, me);
41
+ me.view.parent.un('cellClick', me.onCellClick, me);
42
42
 
43
43
  super.destroy(...args)
44
44
  }
@@ -54,76 +54,80 @@ class CellModel extends BaseModel {
54
54
  * @param {Object} data
55
55
  */
56
56
  onKeyDownDown(data) {
57
- this.onNavKeyRow(data, 1)
57
+ this.onNavKeyRow(1)
58
58
  }
59
59
 
60
60
  /**
61
61
  * @param {Object} data
62
62
  */
63
63
  onKeyDownLeft(data) {
64
- this.onNavKeyColumn(data, -1)
64
+ this.onNavKeyColumn(-1)
65
65
  }
66
66
 
67
67
  /**
68
68
  * @param {Object} data
69
69
  */
70
70
  onKeyDownRight(data) {
71
- this.onNavKeyColumn(data, 1)
71
+ this.onNavKeyColumn(1)
72
72
  }
73
73
 
74
74
  /**
75
75
  * @param {Object} data
76
76
  */
77
77
  onKeyDownUp(data) {
78
- this.onNavKeyRow(data, -1)
78
+ this.onNavKeyRow(-1)
79
79
  }
80
80
 
81
81
  /**
82
- * @param {Object} data
83
82
  * @param {Number} step
84
83
  */
85
- onNavKeyColumn(data, step) {
86
- let me = this,
87
- {view} = me,
88
- idArray = data.path[0].id.split('__'),
89
- currentColumn = idArray[2],
90
- dataFields = view.columns.map(c => c.dataField),
91
- newIndex = (dataFields.indexOf(currentColumn) + step) % dataFields.length,
92
- id;
84
+ onNavKeyColumn(step) {
85
+ let me = this,
86
+ {dataFields, view} = me,
87
+ {store} = view,
88
+ currentColumn, newIndex, record;
89
+
90
+ if (me.hasSelection()) {
91
+ currentColumn = view.getDataField(me.items[0]);
92
+ record = view.getRecord(me.items[0])
93
+ } else {
94
+ currentColumn = dataFields[0];
95
+ record = store.getAt(0)
96
+ }
97
+
98
+ newIndex = (dataFields.indexOf(currentColumn) + step) % dataFields.length;
93
99
 
94
100
  while (newIndex < 0) {
95
101
  newIndex += dataFields.length
96
102
  }
97
103
 
98
- idArray[2] = dataFields[newIndex];
99
- id = idArray.join('__');
100
-
101
- me.select(id);
102
- view.focus(id)
104
+ me.select(view.getCellId(record, dataFields[newIndex]))
103
105
  }
104
106
 
105
107
  /**
106
- * @param {Object} data
107
108
  * @param {Number} step
108
109
  */
109
- onNavKeyRow(data, step) {
110
- let me = this,
111
- {view} = me,
112
- {store} = view,
113
- idArray = data.path[0].id.split('__'),
114
- recordId = idArray[1],
115
- newIndex = (store.indexOf(recordId) + step) % store.getCount(),
116
- id;
110
+ onNavKeyRow(step) {
111
+ let me = this,
112
+ {view} = me,
113
+ {store} = view,
114
+ currentIndex = 0,
115
+ dataField, newIndex;
116
+
117
+ if (me.hasSelection()) {
118
+ currentIndex = store.indexOf(view.getRecord(me.items[0]));
119
+ dataField = view.getDataField(me.items[0])
120
+ } else {
121
+ dataField = me.dataFields[0]
122
+ }
123
+
124
+ newIndex = (currentIndex + step) % store.getCount();
117
125
 
118
126
  while (newIndex < 0) {
119
127
  newIndex += store.getCount()
120
128
  }
121
129
 
122
- idArray[1] = store.getKeyAt(newIndex);
123
- id = idArray.join('__');
124
-
125
- me.select(id);
126
- view.focus(id)
130
+ me.select(view.getCellId(store.getAt(newIndex), dataField))
127
131
  }
128
132
 
129
133
  /**
@@ -133,13 +137,14 @@ class CellModel extends BaseModel {
133
137
  super.register(component);
134
138
 
135
139
  let me = this,
136
- {id, view} = me;
140
+ {id, view} = me,
141
+ scope = id;
137
142
 
138
143
  view.keys?._keys.push(
139
- {fn: 'onKeyDownDown' ,key: 'Down' ,scope: id},
140
- {fn: 'onKeyDownLeft' ,key: 'Left' ,scope: id},
141
- {fn: 'onKeyDownRight' ,key: 'Right' ,scope: id},
142
- {fn: 'onKeyDownUp' ,key: 'Up' ,scope: id}
144
+ {fn: 'onKeyDownDown' ,key: 'Down' ,scope},
145
+ {fn: 'onKeyDownLeft' ,key: 'Left' ,scope},
146
+ {fn: 'onKeyDownRight' ,key: 'Right' ,scope},
147
+ {fn: 'onKeyDownUp' ,key: 'Up' ,scope}
143
148
  )
144
149
  }
145
150
 
@@ -148,13 +153,14 @@ class CellModel extends BaseModel {
148
153
  */
149
154
  unregister() {
150
155
  let me = this,
151
- {id, view} = me;
156
+ {id, view} = me,
157
+ scope = id;
152
158
 
153
159
  view.keys?.removeKeys([
154
- {fn: 'onKeyDownDown' ,key: 'Down' ,scope: id},
155
- {fn: 'onKeyDownLeft' ,key: 'Left' ,scope: id},
156
- {fn: 'onKeyDownRight' ,key: 'Right' ,scope: id},
157
- {fn: 'onKeyDownUp' ,key: 'Up' ,scope: id}
160
+ {fn: 'onKeyDownDown' ,key: 'Down' ,scope},
161
+ {fn: 'onKeyDownLeft' ,key: 'Left' ,scope},
162
+ {fn: 'onKeyDownRight' ,key: 'Right' ,scope},
163
+ {fn: 'onKeyDownUp' ,key: 'Up' ,scope}
158
164
  ]);
159
165
 
160
166
  super.unregister()
@@ -1,7 +1,5 @@
1
1
  import CellModel from './CellModel.mjs';
2
2
  import NeoArray from '../../util/Array.mjs';
3
- import RowModel from './RowModel.mjs';
4
- import VDomUtil from '../../util/VDom.mjs';
5
3
 
6
4
  /**
7
5
  * @class Neo.selection.grid.CellRowModel
@@ -25,19 +23,10 @@ class CellRowModel extends CellModel {
25
23
  */
26
24
  cls: 'neo-selection-cellrowmodel',
27
25
  /**
28
- * @member {Array|null} selectedRowIds=null
26
+ * @member {String[]} selectedRowIds=[]
29
27
  * @protected
30
28
  */
31
- selectedRowIds: null
32
- }
33
-
34
- /**
35
- * @param {Object} config
36
- */
37
- construct(config) {
38
- super.construct(config);
39
-
40
- this.selectedRowIds = []
29
+ selectedRowIds: []
41
30
  }
42
31
 
43
32
  /**
@@ -73,49 +62,46 @@ class CellRowModel extends CellModel {
73
62
 
74
63
  NeoArray.remove(me.selectedRowIds, rowId);
75
64
 
76
- if (!silent) {
77
- view.updateDepth = 2;
78
- view.update()
79
- }
65
+ !silent && view.update()
80
66
  }
81
67
 
82
68
  /**
83
69
  * @param {Object} data
84
70
  */
85
71
  onCellClick(data) {
86
- let me = this,
87
- node = RowModel.getRowNode(data.data.path), // we could add a separate export for this method
88
- id = node?.id;
72
+ let me = this,
73
+ record = me.view.getRecord(data.data.currentTarget),
74
+ rowId = me.view.getRowId(record);
89
75
 
90
- if (id) {
76
+ if (rowId) {
91
77
  me.deselectAllRows(true);
92
- me.selectRow(id)
78
+ me.selectRow(rowId)
93
79
  }
94
80
 
95
81
  super.onCellClick(data)
96
82
  }
97
83
 
98
84
  /**
99
- * @param {Object} data
100
85
  * @param {Number} step
101
86
  */
102
- onNavKeyRow(data, step) {
103
- super.onNavKeyRow(data, step);
87
+ onNavKeyRow(step) {
88
+ super.onNavKeyRow(step);
104
89
 
105
90
  let me = this,
106
- node = RowModel.getRowNode(data.path),
107
91
  {view} = me,
108
92
  {store} = view,
109
- vdomNode = VDomUtil.find(view.vdom, node.id),
110
- newIndex = (vdomNode.index + step) % store.getCount(),
111
- {parentNode} = vdomNode,
93
+ countRecords = store.getCount(),
94
+ rowId = me.selectedRowIds[0] || view.getRowId(store.getAt(0)),
95
+ record = view.getRecord(rowId),
96
+ index = store.indexOf(record),
97
+ newIndex = (index + step) % countRecords,
112
98
  id;
113
99
 
114
100
  while (newIndex < 0) {
115
- newIndex += store.getCount()
101
+ newIndex += countRecords
116
102
  }
117
103
 
118
- id = parentNode.cn[newIndex].id;
104
+ id = view.getRowId(store.getAt(newIndex));
119
105
 
120
106
  if (id) {
121
107
  me.deselectAllRows(true);
@@ -141,10 +127,7 @@ class CellRowModel extends CellModel {
141
127
  me.selectedRowIds.push(id)
142
128
  }
143
129
 
144
- if (!silent) {
145
- view.updateDepth = 2;
146
- view.update()
147
- }
130
+ !silent && view.update()
148
131
  }
149
132
 
150
133
  /**
@@ -30,7 +30,7 @@ class ColumnModel extends BaseModel {
30
30
  addDomListener() {
31
31
  let me = this;
32
32
 
33
- me.view.on('cellClick', me.onCellClick, me)
33
+ me.view.parent.on('cellClick', me.onCellClick, me)
34
34
  }
35
35
 
36
36
  /**
@@ -39,56 +39,24 @@ class ColumnModel extends BaseModel {
39
39
  destroy(...args) {
40
40
  let me = this;
41
41
 
42
- me.view.un('cellClick', me.onCellClick, me);
42
+ me.view.parent.un('cellClick', me.onCellClick, me);
43
43
 
44
44
  super.destroy(...args)
45
45
  }
46
46
 
47
- /**
48
- * @param {Object} eventPath
49
- * @returns {String|null} cellId
50
- */
51
- static getCellId(eventPath) {
52
- let id = null,
53
- i = 0,
54
- len = eventPath.length;
55
-
56
- for (; i < len; i++) {
57
- if (eventPath[i].cls.includes('neo-grid-cell')) {
58
- id = eventPath[i].id;
59
- break
60
- }
61
- }
62
-
63
- return id
64
- }
65
-
66
- /**
67
- * todo: move to grid.Container or view
68
- * @param {String} cellId
69
- * @param {Object[]} columns
70
- * @returns {Number} index
71
- */
72
- static getColumnIndex(cellId, columns) {
73
- let idArray = cellId.split('__'),
74
- currentColumn = idArray[2],
75
- dataFields = columns.map(c => c.dataField);
76
-
77
- return dataFields.indexOf(currentColumn)
78
- }
79
-
80
47
  /**
81
48
  * @param {Object} data
82
49
  */
83
50
  onCellClick(data) {
84
- let me = this,
85
- id = data.data.currentTarget,
86
- columnNodeIds, index, tbodyNode;
51
+ let me = this,
52
+ {view} = me,
53
+ cellId = data.data.currentTarget,
54
+ columnNodeIds, dataField, index;
87
55
 
88
- if (id) {
89
- index = ColumnModel.getColumnIndex(id, me.view.items[0].items);
90
- tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
91
- columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, index);
56
+ if (cellId) {
57
+ dataField = view.getDataField(cellId);
58
+ index = view.getColumn(dataField, true);
59
+ columnNodeIds = VDomUtil.getColumnNodesIds(view.vdom.cn[0], index);
92
60
 
93
61
  me.select(columnNodeIds)
94
62
  }
@@ -98,41 +66,39 @@ class ColumnModel extends BaseModel {
98
66
  * @param {Object} data
99
67
  */
100
68
  onKeyDownLeft(data) {
101
- this.onNavKeyColumn(data, -1)
69
+ this.onNavKeyColumn(-1)
102
70
  }
103
71
 
104
72
  /**
105
73
  * @param {Object} data
106
74
  */
107
75
  onKeyDownRight(data) {
108
- this.onNavKeyColumn(data, 1)
76
+ this.onNavKeyColumn(1)
109
77
  }
110
78
 
111
79
  /**
112
- * @param {Object} data
113
80
  * @param {Number} step
114
81
  */
115
- onNavKeyColumn(data, step) {
116
- let me = this,
117
- idArray = ColumnModel.getCellId(data.path).split('__'),
118
- currentColumn = idArray[2],
119
- {view} = me,
120
- fields = view.columns.map(c => c.dataField),
121
- newIndex = (fields.indexOf(currentColumn) + step) % fields.length,
122
- columnNodeIds, id, tbodyNode;
123
-
124
- while (newIndex < 0) {
125
- newIndex += fields.length
82
+ onNavKeyColumn(step) {
83
+ let me = this,
84
+ {dataFields, view} = me,
85
+ columnNodeIds, currentColumn, index;
86
+
87
+ if (me.hasSelection()) {
88
+ currentColumn = view.getDataField(me.items[0])
89
+ } else {
90
+ currentColumn = dataFields[0]
126
91
  }
127
92
 
128
- idArray[2] = fields[newIndex];
129
- id = idArray.join('__');
93
+ index = (dataFields.indexOf(currentColumn) + step) % dataFields.length;
94
+
95
+ while (index < 0) {
96
+ index += dataFields.length
97
+ }
130
98
 
131
- tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
132
- columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, newIndex);
99
+ columnNodeIds = VDomUtil.getColumnNodesIds(view.vdom.cn[0], index);
133
100
 
134
- me.select(columnNodeIds);
135
- view.focus(id) // we have to focus one cell to ensure the keynav keeps working
101
+ me.select(columnNodeIds)
136
102
  }
137
103
 
138
104
  /**
@@ -39,7 +39,7 @@ class RowModel extends BaseModel {
39
39
  destroy(...args) {
40
40
  let me = this;
41
41
 
42
- me.view.un('rowClick', me.onRowClick, me);
42
+ me.view.gridContainer.un('rowClick', me.onRowClick, me);
43
43
 
44
44
  super.destroy(...args)
45
45
  }
@@ -103,7 +103,7 @@ class RowModel extends BaseModel {
103
103
  me.toggleSelection(id);
104
104
 
105
105
  isSelected = me.isSelected(id);
106
- record = view.store.getAt(VDomUtil.find(view.vdom, id).index);
106
+ record = view.getRecord(id);
107
107
 
108
108
  !isSelected && view.onDeselect?.(record);
109
109