neo.mjs 8.9.1 → 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.
- package/apps/ServiceWorker.mjs +2 -2
- package/apps/portal/index.html +1 -1
- package/apps/portal/view/home/FooterContainer.mjs +1 -1
- package/examples/ServiceWorker.mjs +2 -2
- package/examples/grid/container/MainContainer.mjs +19 -15
- package/examples/table/cellEditing/MainContainer.mjs +30 -15
- package/examples/table/container/MainContainer.mjs +34 -19
- package/examples/tableFiltering/MainContainer.mjs +1 -1
- package/examples/tableStore/MainContainer.mjs +14 -13
- package/examples/tableStore/MainModel.mjs +3 -3
- package/package.json +1 -1
- package/src/DefaultConfig.mjs +2 -2
- package/src/Main.mjs +1 -0
- package/src/component/Base.mjs +37 -37
- package/src/grid/Container.mjs +11 -11
- package/src/grid/View.mjs +9 -1
- package/src/selection/Model.mjs +5 -13
- package/src/selection/grid/BaseModel.mjs +4 -38
- package/src/selection/grid/CellColumnModel.mjs +29 -36
- package/src/selection/grid/CellColumnRowModel.mjs +27 -34
- package/src/selection/grid/CellModel.mjs +50 -44
- package/src/selection/grid/CellRowModel.mjs +18 -35
- package/src/selection/grid/ColumnModel.mjs +28 -62
- package/src/selection/grid/RowModel.mjs +2 -2
- package/src/selection/table/BaseModel.mjs +0 -42
- package/src/selection/table/CellColumnModel.mjs +9 -18
- package/src/selection/table/CellColumnRowModel.mjs +9 -18
- package/src/selection/table/CellModel.mjs +3 -3
- package/src/selection/table/CellRowModel.mjs +4 -19
- package/src/selection/table/ColumnModel.mjs +9 -9
- package/src/selection/table/RowModel.mjs +2 -2
- package/src/table/Container.mjs +11 -31
- package/src/table/View.mjs +46 -7
- package/src/table/plugin/CellEditing.mjs +2 -2
package/src/selection/Model.mjs
CHANGED
@@ -110,9 +110,6 @@ class Model extends Base {
|
|
110
110
|
NeoArray.remove(itemCollection, item);
|
111
111
|
|
112
112
|
if (!silent) {
|
113
|
-
// We need a bigger depth, since grid.Container & table.Container use selection.Model as a top-level config.
|
114
|
-
// In case the config would get moved to grid.View & table.View, we would not need it.
|
115
|
-
view.updateDepth = -1;
|
116
113
|
view.update();
|
117
114
|
|
118
115
|
me.fire('selectionChange', {
|
@@ -127,10 +124,11 @@ class Model extends Base {
|
|
127
124
|
|
128
125
|
/**
|
129
126
|
* @param {Boolean} [silent] true to prevent a vdom update
|
127
|
+
* @param {Object[]|String[]} itemCollection=this.items
|
130
128
|
*/
|
131
|
-
deselectAll(silent) {
|
129
|
+
deselectAll(silent, itemCollection=this.items) {
|
132
130
|
let me = this,
|
133
|
-
items = [...
|
131
|
+
items = [...itemCollection],
|
134
132
|
{view} = me;
|
135
133
|
|
136
134
|
if (items.length) {
|
@@ -139,9 +137,6 @@ class Model extends Base {
|
|
139
137
|
});
|
140
138
|
|
141
139
|
if (!silent && items.length > 0) {
|
142
|
-
// We need a bigger depth, since grid.Container & table.Container use selection.Model as a top-level config.
|
143
|
-
// In case the config would get moved to grid.View & table.View, we would not need it.
|
144
|
-
view.updateDepth = -1;
|
145
140
|
view.update()
|
146
141
|
}
|
147
142
|
|
@@ -235,8 +230,8 @@ class Model extends Base {
|
|
235
230
|
items: [items]).map(item => item.isRecord ? view.getItemId(item) : Neo.isObject(item) ? item.id : item);
|
236
231
|
|
237
232
|
if (!Neo.isEqual(itemCollection, items)) {
|
238
|
-
if (me.singleSelect) {
|
239
|
-
me.deselectAll(true)
|
233
|
+
if (me.singleSelect && itemCollection === me.items) {
|
234
|
+
me.deselectAll(true, itemCollection)
|
240
235
|
}
|
241
236
|
|
242
237
|
items.forEach(node => {
|
@@ -251,9 +246,6 @@ class Model extends Base {
|
|
251
246
|
NeoArray.add(itemCollection, items);
|
252
247
|
|
253
248
|
if (!view.silentSelect) {
|
254
|
-
// We need a bigger depth, since grid.Container & table.Container use selection.Model as a top-level config.
|
255
|
-
// In case the config would get moved to grid.View & table.View, we would not need it.
|
256
|
-
view.updateDepth = -1;
|
257
249
|
view.update()
|
258
250
|
}
|
259
251
|
|
@@ -16,45 +16,11 @@ class BaseModel extends Model {
|
|
16
16
|
}
|
17
17
|
|
18
18
|
/**
|
19
|
-
*
|
20
|
-
* @
|
21
|
-
* @param {Object[]|String[]} itemCollection=this.items
|
22
|
-
* @param {String} [selectedCls]
|
19
|
+
* Convenience shortcut
|
20
|
+
* @member {String[]} dataFields
|
23
21
|
*/
|
24
|
-
|
25
|
-
|
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
|
2
|
-
import
|
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 {
|
31
|
+
* @member {String[]} selectedColumnCellIds=[]
|
33
32
|
* @protected
|
34
33
|
*/
|
35
|
-
selectedColumnCellIds:
|
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
|
67
|
-
|
68
|
-
|
56
|
+
let me = this,
|
57
|
+
{view} = me,
|
58
|
+
cellId = data.data.currentTarget,
|
59
|
+
columnNodeIds, dataField, index;
|
69
60
|
|
70
|
-
if (
|
71
|
-
|
72
|
-
|
73
|
-
columnNodeIds = VDomUtil.getColumnNodesIds(
|
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(
|
87
|
-
let me
|
88
|
-
|
89
|
-
currentColumn
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
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
|
-
|
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(
|
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 {
|
31
|
+
* @member {String[]} selectedColumnCellIds=[]
|
33
32
|
* @protected
|
34
33
|
*/
|
35
|
-
selectedColumnCellIds:
|
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
|
67
|
-
|
68
|
-
|
56
|
+
let me = this,
|
57
|
+
{view} = me,
|
58
|
+
cellId = data.data.currentTarget,
|
59
|
+
columnNodeIds, dataField, index;
|
69
60
|
|
70
|
-
if (
|
71
|
-
|
72
|
-
|
73
|
-
columnNodeIds = VDomUtil.getColumnNodesIds(
|
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(
|
87
|
-
let me
|
88
|
-
|
89
|
-
currentColumn
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
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
|
-
|
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(
|
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(
|
57
|
+
this.onNavKeyRow(1)
|
58
58
|
}
|
59
59
|
|
60
60
|
/**
|
61
61
|
* @param {Object} data
|
62
62
|
*/
|
63
63
|
onKeyDownLeft(data) {
|
64
|
-
this.onNavKeyColumn(
|
64
|
+
this.onNavKeyColumn(-1)
|
65
65
|
}
|
66
66
|
|
67
67
|
/**
|
68
68
|
* @param {Object} data
|
69
69
|
*/
|
70
70
|
onKeyDownRight(data) {
|
71
|
-
this.onNavKeyColumn(
|
71
|
+
this.onNavKeyColumn(1)
|
72
72
|
}
|
73
73
|
|
74
74
|
/**
|
75
75
|
* @param {Object} data
|
76
76
|
*/
|
77
77
|
onKeyDownUp(data) {
|
78
|
-
this.onNavKeyRow(
|
78
|
+
this.onNavKeyRow(-1)
|
79
79
|
}
|
80
80
|
|
81
81
|
/**
|
82
|
-
* @param {Object} data
|
83
82
|
* @param {Number} step
|
84
83
|
*/
|
85
|
-
onNavKeyColumn(
|
86
|
-
let me
|
87
|
-
{view}
|
88
|
-
|
89
|
-
currentColumn
|
90
|
-
|
91
|
-
|
92
|
-
|
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
|
-
|
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(
|
110
|
-
let me
|
111
|
-
{view}
|
112
|
-
{store}
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
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
|
-
|
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
|
140
|
-
{fn: 'onKeyDownLeft' ,key: 'Left' ,scope
|
141
|
-
{fn: 'onKeyDownRight' ,key: 'Right' ,scope
|
142
|
-
{fn: 'onKeyDownUp' ,key: 'Up' ,scope
|
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
|
155
|
-
{fn: 'onKeyDownLeft' ,key: 'Left' ,scope
|
156
|
-
{fn: 'onKeyDownRight' ,key: 'Right' ,scope
|
157
|
-
{fn: 'onKeyDownUp' ,key: 'Up' ,scope
|
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 {
|
26
|
+
* @member {String[]} selectedRowIds=[]
|
29
27
|
* @protected
|
30
28
|
*/
|
31
|
-
selectedRowIds:
|
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
|
-
|
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
|
87
|
-
|
88
|
-
|
72
|
+
let me = this,
|
73
|
+
record = me.view.getRecord(data.data.currentTarget),
|
74
|
+
rowId = me.view.getRowId(record);
|
89
75
|
|
90
|
-
if (
|
76
|
+
if (rowId) {
|
91
77
|
me.deselectAllRows(true);
|
92
|
-
me.selectRow(
|
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(
|
103
|
-
super.onNavKeyRow(
|
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
|
-
|
110
|
-
|
111
|
-
|
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 +=
|
101
|
+
newIndex += countRecords
|
116
102
|
}
|
117
103
|
|
118
|
-
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
|
-
|
145
|
-
view.updateDepth = 2;
|
146
|
-
view.update()
|
147
|
-
}
|
130
|
+
!silent && view.update()
|
148
131
|
}
|
149
132
|
|
150
133
|
/**
|