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.
- 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 -1
- package/src/dialog/Base.mjs +14 -2
- 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
@@ -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
|
/**
|
@@ -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
|
85
|
-
|
86
|
-
|
51
|
+
let me = this,
|
52
|
+
{view} = me,
|
53
|
+
cellId = data.data.currentTarget,
|
54
|
+
columnNodeIds, dataField, index;
|
87
55
|
|
88
|
-
if (
|
89
|
-
|
90
|
-
|
91
|
-
columnNodeIds = VDomUtil.getColumnNodesIds(
|
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(
|
69
|
+
this.onNavKeyColumn(-1)
|
102
70
|
}
|
103
71
|
|
104
72
|
/**
|
105
73
|
* @param {Object} data
|
106
74
|
*/
|
107
75
|
onKeyDownRight(data) {
|
108
|
-
this.onNavKeyColumn(
|
76
|
+
this.onNavKeyColumn(1)
|
109
77
|
}
|
110
78
|
|
111
79
|
/**
|
112
|
-
* @param {Object} data
|
113
80
|
* @param {Number} step
|
114
81
|
*/
|
115
|
-
onNavKeyColumn(
|
116
|
-
let me
|
117
|
-
|
118
|
-
currentColumn
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
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
|
-
|
129
|
-
|
93
|
+
index = (dataFields.indexOf(currentColumn) + step) % dataFields.length;
|
94
|
+
|
95
|
+
while (index < 0) {
|
96
|
+
index += dataFields.length
|
97
|
+
}
|
130
98
|
|
131
|
-
|
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.
|
106
|
+
record = view.getRecord(id);
|
107
107
|
|
108
108
|
!isSelected && view.onDeselect?.(record);
|
109
109
|
|