Skip to content

Commit 53e3d84

Browse files
committed
selection.grid.RowModel: onNavKeyRow() => decouple the logic from event data #6238
1 parent 6fa6340 commit 53e3d84

File tree

2 files changed

+18
-37
lines changed

2 files changed

+18
-37
lines changed

src/grid/View.mjs

+1-2
Original file line numberDiff line numberDiff line change
@@ -663,10 +663,9 @@ class GridView extends Component {
663663

664664
/**
665665
* @param {Object} record
666-
* @param {Number} [index]
667666
* @returns {String}
668667
*/
669-
getRowId(record, index) {
668+
getRowId(record) {
670669
return `${this.id}__tr__${record[this.store.getKeyProperty()]}`
671670
}
672671

src/selection/grid/RowModel.mjs

+17-35
Original file line numberDiff line numberDiff line change
@@ -57,63 +57,45 @@ class RowModel extends BaseModel {
5757
return this.view.vdom.cn[0].cn[1].cn[index].id
5858
}
5959

60-
/**
61-
* Finds the matching table row for a given event path
62-
* @param {Object} path The event path
63-
* @returns {Object|null} The node containing the table row class or null
64-
* @protected
65-
*/
66-
static getRowNode(path) {
67-
let i = 0,
68-
len = path.length,
69-
node = null;
70-
71-
for (; i < len; i++) {
72-
if (path[i].cls.includes('neo-grid-row')) {
73-
node = path[i]
74-
}
75-
}
76-
77-
return node
78-
}
79-
8060
/**
8161
* @param {Object} data
8262
*/
8363
onKeyDownDown(data) {
84-
this.onNavKeyRow(data, 1)
64+
this.onNavKeyRow(1)
8565
}
8666

8767
/**
8868
* @param {Object} data
8969
*/
9070
onKeyDownUp(data) {
91-
this.onNavKeyRow(data, -1)
71+
this.onNavKeyRow(-1)
9272
}
9373

9474
/**
95-
* @param {Object} data
9675
* @param {Number} step
9776
*/
98-
onNavKeyRow(data, step) {
77+
onNavKeyRow(step) {
9978
let me = this,
100-
node = RowModel.getRowNode(data.path),
101-
{view} = me,
79+
{view} = me.view,
10280
{store} = view,
103-
vdomNode = VDomUtil.find(view.vdom, node.id),
104-
newIndex = (vdomNode.index + step) % store.getCount(),
105-
{parentNode} = vdomNode,
106-
id;
81+
currentIndex = 0,
82+
newIndex, newRecord, rowId;
83+
84+
if (me.hasSelection()) {
85+
currentIndex = store.indexOf(view.getRecordByRowId(me.items[0]))
86+
}
87+
88+
newIndex = (currentIndex + step) % store.getCount();
10789

10890
while (newIndex < 0) {
10991
newIndex += store.getCount()
11092
}
11193

112-
id = parentNode.cn[newIndex].id;
94+
newRecord = store.getAt(newIndex);
95+
rowId = view.getRowId(newRecord);
11396

114-
if (id) {
115-
me.select(id);
116-
view.focus(id);
97+
if (rowId) {
98+
me.select(rowId);
11799

118100
view.fire('select', {
119101
record: store.getAt(newIndex)
@@ -127,7 +109,7 @@ class RowModel extends BaseModel {
127109
onRowClick(data) {
128110
let me = this,
129111
id = data.data.currentTarget,
130-
{view} = me,
112+
{view} = me.view,
131113
isSelected, record;
132114

133115
if (id) {

0 commit comments

Comments
 (0)