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
@@ -14,48 +14,6 @@ class BaseModel extends Model {
|
|
14
14
|
*/
|
15
15
|
className: 'Neo.selection.table.BaseModel'
|
16
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
17
|
}
|
60
18
|
|
61
19
|
export default Neo.setupClass(BaseModel);
|
@@ -29,19 +29,10 @@ class CellColumnModel extends CellModel {
|
|
29
29
|
*/
|
30
30
|
selectedColumnCellCls: 'selected-column-cell',
|
31
31
|
/**
|
32
|
-
* @member {
|
32
|
+
* @member {String[]} selectedColumnCellIds=[]
|
33
33
|
* @protected
|
34
34
|
*/
|
35
|
-
selectedColumnCellIds:
|
36
|
-
}
|
37
|
-
|
38
|
-
/**
|
39
|
-
* @param {Object} config
|
40
|
-
*/
|
41
|
-
construct(config) {
|
42
|
-
super.construct(config);
|
43
|
-
|
44
|
-
this.selectedColumnCellIds = []
|
35
|
+
selectedColumnCellIds: []
|
45
36
|
}
|
46
37
|
|
47
38
|
/**
|
@@ -63,14 +54,14 @@ class CellColumnModel extends CellModel {
|
|
63
54
|
* @param {Object} data
|
64
55
|
*/
|
65
56
|
onCellClick(data) {
|
66
|
-
let me
|
67
|
-
|
68
|
-
|
57
|
+
let me = this,
|
58
|
+
{headerToolbar} = me.view.parent,
|
59
|
+
id = data.data.currentTarget,
|
60
|
+
columnNodeIds, index;
|
69
61
|
|
70
62
|
if (id) {
|
71
|
-
index = ColumnModel.getColumnIndex(id,
|
72
|
-
|
73
|
-
columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, index);
|
63
|
+
index = ColumnModel.getColumnIndex(id, headerToolbar.items);
|
64
|
+
columnNodeIds = VDomUtil.getColumnNodesIds(me.view.vdom, index);
|
74
65
|
|
75
66
|
me.deselectAllCells(true);
|
76
67
|
me.select(columnNodeIds, me.selectedColumnCellIds, me.selectedColumnCellCls)
|
@@ -88,7 +79,7 @@ class CellColumnModel extends CellModel {
|
|
88
79
|
idArray = ColumnModel.getCellId(data.path).split('__'),
|
89
80
|
currentColumn = idArray[2],
|
90
81
|
{view} = me,
|
91
|
-
dataFields = view.columns.map(c => c.dataField),
|
82
|
+
dataFields = view.parent.columns.map(c => c.dataField),
|
92
83
|
newIndex = (dataFields.indexOf(currentColumn) + step) % dataFields.length,
|
93
84
|
columnNodeIds, tbodyNode;
|
94
85
|
|
@@ -29,19 +29,10 @@ class CellColumnRowModel extends CellRowModel {
|
|
29
29
|
*/
|
30
30
|
selectedColumnCellCls: 'selected-column-cell',
|
31
31
|
/**
|
32
|
-
* @member {
|
32
|
+
* @member {String[]} selectedColumnCellIds=[]
|
33
33
|
* @protected
|
34
34
|
*/
|
35
|
-
selectedColumnCellIds:
|
36
|
-
}
|
37
|
-
|
38
|
-
/**
|
39
|
-
* @param {Object} config
|
40
|
-
*/
|
41
|
-
construct(config) {
|
42
|
-
super.construct(config);
|
43
|
-
|
44
|
-
this.selectedColumnCellIds = []
|
35
|
+
selectedColumnCellIds: []
|
45
36
|
}
|
46
37
|
|
47
38
|
/**
|
@@ -63,14 +54,14 @@ class CellColumnRowModel extends CellRowModel {
|
|
63
54
|
* @param {Object} data
|
64
55
|
*/
|
65
56
|
onCellClick(data) {
|
66
|
-
let me
|
67
|
-
|
68
|
-
|
57
|
+
let me = this,
|
58
|
+
{headerToolbar} = me.view.parent,
|
59
|
+
id = data.data.currentTarget,
|
60
|
+
columnNodeIds, index;
|
69
61
|
|
70
62
|
if (id) {
|
71
|
-
index = ColumnModel.getColumnIndex(id,
|
72
|
-
|
73
|
-
columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, index);
|
63
|
+
index = ColumnModel.getColumnIndex(id, headerToolbar.items);
|
64
|
+
columnNodeIds = VDomUtil.getColumnNodesIds(me.view.vdom, index);
|
74
65
|
|
75
66
|
me.deselectAllCells(true);
|
76
67
|
me.select(columnNodeIds, me.selectedColumnCellIds, me.selectedColumnCellCls)
|
@@ -88,7 +79,7 @@ class CellColumnRowModel extends CellRowModel {
|
|
88
79
|
idArray = ColumnModel.getCellId(data.path).split('__'),
|
89
80
|
currentColumn = idArray[2],
|
90
81
|
{view} = me,
|
91
|
-
dataFields = view.columns.map(c => c.dataField),
|
82
|
+
dataFields = view.parent.columns.map(c => c.dataField),
|
92
83
|
newIndex = (dataFields.indexOf(currentColumn) + step) % dataFields.length,
|
93
84
|
columnNodeIds, tbodyNode;
|
94
85
|
|
@@ -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
|
}
|
@@ -87,7 +87,7 @@ class CellModel extends BaseModel {
|
|
87
87
|
{view} = me,
|
88
88
|
idArray = data.path[0].id.split('__'),
|
89
89
|
currentColumn = idArray[2],
|
90
|
-
dataFields = view.columns.map(c => c.dataField),
|
90
|
+
dataFields = view.parent.columns.map(c => c.dataField),
|
91
91
|
newIndex = (dataFields.indexOf(currentColumn) + step) % dataFields.length,
|
92
92
|
id;
|
93
93
|
|
@@ -25,19 +25,10 @@ class CellRowModel extends CellModel {
|
|
25
25
|
*/
|
26
26
|
cls: 'neo-selection-cellrowmodel',
|
27
27
|
/**
|
28
|
-
* @member {
|
28
|
+
* @member {String[]} selectedRowIds=[]
|
29
29
|
* @protected
|
30
30
|
*/
|
31
|
-
selectedRowIds:
|
32
|
-
}
|
33
|
-
|
34
|
-
/**
|
35
|
-
* @param {Object} config
|
36
|
-
*/
|
37
|
-
construct(config) {
|
38
|
-
super.construct(config);
|
39
|
-
|
40
|
-
this.selectedRowIds = []
|
31
|
+
selectedRowIds: []
|
41
32
|
}
|
42
33
|
|
43
34
|
/**
|
@@ -73,10 +64,7 @@ class CellRowModel extends CellModel {
|
|
73
64
|
|
74
65
|
NeoArray.remove(me.selectedRowIds, rowId);
|
75
66
|
|
76
|
-
|
77
|
-
view.updateDepth = 2;
|
78
|
-
view.update()
|
79
|
-
}
|
67
|
+
!silent && view.update()
|
80
68
|
}
|
81
69
|
|
82
70
|
/**
|
@@ -141,10 +129,7 @@ class CellRowModel extends CellModel {
|
|
141
129
|
me.selectedRowIds.push(id)
|
142
130
|
}
|
143
131
|
|
144
|
-
|
145
|
-
view.updateDepth = 2;
|
146
|
-
view.update()
|
147
|
-
}
|
132
|
+
!silent && view.update()
|
148
133
|
}
|
149
134
|
|
150
135
|
/**
|
@@ -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,7 +39,7 @@ 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
|
}
|
@@ -81,14 +81,14 @@ class ColumnModel extends BaseModel {
|
|
81
81
|
* @param {Object} data
|
82
82
|
*/
|
83
83
|
onCellClick(data) {
|
84
|
-
let me
|
85
|
-
|
86
|
-
|
84
|
+
let me = this,
|
85
|
+
{headerToolbar} = me.view.parent,
|
86
|
+
id = data.data.currentTarget,
|
87
|
+
columnNodeIds, index;
|
87
88
|
|
88
89
|
if (id) {
|
89
|
-
index = ColumnModel.getColumnIndex(id,
|
90
|
-
|
91
|
-
columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, index);
|
90
|
+
index = ColumnModel.getColumnIndex(id, headerToolbar.items);
|
91
|
+
columnNodeIds = VDomUtil.getColumnNodesIds(me.view.vdom, index);
|
92
92
|
|
93
93
|
me.select(columnNodeIds)
|
94
94
|
}
|
@@ -117,7 +117,7 @@ class ColumnModel extends BaseModel {
|
|
117
117
|
idArray = ColumnModel.getCellId(data.path).split('__'),
|
118
118
|
currentColumn = idArray[2],
|
119
119
|
{view} = me,
|
120
|
-
dataFields = view.columns.map(c => c.dataField),
|
120
|
+
dataFields = view.parent.columns.map(c => c.dataField),
|
121
121
|
newIndex = (dataFields.indexOf(currentColumn) + step) % dataFields.length,
|
122
122
|
columnNodeIds, id, tbodyNode;
|
123
123
|
|
@@ -30,7 +30,7 @@ class RowModel extends BaseModel {
|
|
30
30
|
addDomListener() {
|
31
31
|
let me = this;
|
32
32
|
|
33
|
-
me.view.on('rowClick', me.onRowClick, me)
|
33
|
+
me.view.parent.on('rowClick', me.onRowClick, me)
|
34
34
|
}
|
35
35
|
|
36
36
|
/**
|
@@ -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.parent.un('rowClick', me.onRowClick, me);
|
43
43
|
|
44
44
|
super.destroy(...args)
|
45
45
|
}
|
package/src/table/Container.mjs
CHANGED
@@ -2,7 +2,6 @@ import BaseContainer from '../container/Base.mjs';
|
|
2
2
|
import ClassSystemUtil from '../util/ClassSystem.mjs';
|
3
3
|
import CssUtil from '../util/Css.mjs';
|
4
4
|
import NeoArray from '../util/Array.mjs';
|
5
|
-
import RowModel from '../selection/table/RowModel.mjs';
|
6
5
|
import Store from '../data/Store.mjs';
|
7
6
|
import View from './View.mjs';
|
8
7
|
import * as header from './header/_export.mjs';
|
@@ -50,11 +49,6 @@ class Container extends BaseContainer {
|
|
50
49
|
* @member {String|null} headerToolbarId_=null
|
51
50
|
*/
|
52
51
|
headerToolbarId_: null,
|
53
|
-
/**
|
54
|
-
* Additional used keys for the selection model
|
55
|
-
* @member {Object} keys
|
56
|
-
*/
|
57
|
-
keys: {},
|
58
52
|
/**
|
59
53
|
* @member {String} layout='base'
|
60
54
|
*/
|
@@ -65,7 +59,9 @@ class Container extends BaseContainer {
|
|
65
59
|
*/
|
66
60
|
scrollbarsCssApplied: false,
|
67
61
|
/**
|
62
|
+
* Will get removed in neo v9, assign selection models to table.View instead
|
68
63
|
* @member {Neo.selection.Model} selectionModel_=null
|
64
|
+
* @deprecated
|
69
65
|
*/
|
70
66
|
selectionModel_: null,
|
71
67
|
/**
|
@@ -143,10 +139,11 @@ class Container extends BaseContainer {
|
|
143
139
|
sortable : me.sortable,
|
144
140
|
...me.headerToolbarConfig
|
145
141
|
}, {
|
146
|
-
module
|
147
|
-
containerId: me.id,
|
148
|
-
id
|
149
|
-
|
142
|
+
module : View,
|
143
|
+
containerId : me.id,
|
144
|
+
id : me.viewId,
|
145
|
+
selectionModel: me.selectionModel, // todo: remove this line in neo v9
|
146
|
+
store : me.store,
|
150
147
|
...me.viewConfig
|
151
148
|
}];
|
152
149
|
|
@@ -204,9 +201,12 @@ class Container extends BaseContainer {
|
|
204
201
|
* @param {Neo.selection.Model} value
|
205
202
|
* @param {Neo.selection.Model} oldValue
|
206
203
|
* @protected
|
204
|
+
* @deprecated
|
207
205
|
*/
|
208
206
|
afterSetSelectionModel(value, oldValue) {
|
209
|
-
|
207
|
+
if (value && this.view) {
|
208
|
+
this.view.selectionModel = value
|
209
|
+
}
|
210
210
|
}
|
211
211
|
|
212
212
|
/**
|
@@ -292,18 +292,6 @@ class Container extends BaseContainer {
|
|
292
292
|
return value || oldValue
|
293
293
|
}
|
294
294
|
|
295
|
-
/**
|
296
|
-
* Triggered before the selectionModel config gets changed.
|
297
|
-
* @param {Neo.selection.Model} value
|
298
|
-
* @param {Neo.selection.Model} oldValue
|
299
|
-
* @protected
|
300
|
-
*/
|
301
|
-
beforeSetSelectionModel(value, oldValue) {
|
302
|
-
oldValue?.destroy();
|
303
|
-
|
304
|
-
return ClassSystemUtil.beforeSetInstance(value, RowModel)
|
305
|
-
}
|
306
|
-
|
307
295
|
/**
|
308
296
|
* Triggered before the store config gets changed.
|
309
297
|
* @param {Neo.data.Store} value
|
@@ -461,14 +449,6 @@ class Container extends BaseContainer {
|
|
461
449
|
return `${this.id}__wrapper`
|
462
450
|
}
|
463
451
|
|
464
|
-
/**
|
465
|
-
*
|
466
|
-
*/
|
467
|
-
onConstructed() {
|
468
|
-
super.onConstructed();
|
469
|
-
this.selectionModel?.register(this)
|
470
|
-
}
|
471
|
-
|
472
452
|
/**
|
473
453
|
* @param {Object} opts
|
474
454
|
* @param {String} opts.direction
|
package/src/table/View.mjs
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
import
|
2
|
-
import
|
3
|
-
import
|
1
|
+
import ClassSystemUtil from '../util/ClassSystem.mjs';
|
2
|
+
import Component from '../component/Base.mjs';
|
3
|
+
import NeoArray from '../util/Array.mjs';
|
4
|
+
import RowModel from '../selection/table/RowModel.mjs';
|
5
|
+
import VDomUtil from '../util/VDom.mjs';
|
4
6
|
|
5
7
|
/**
|
6
8
|
* @class Neo.table.View
|
@@ -36,10 +38,19 @@ class View extends Component {
|
|
36
38
|
* @member {Boolean} highlightModifiedCells_=false
|
37
39
|
*/
|
38
40
|
highlightModifiedCells_: false,
|
41
|
+
/**
|
42
|
+
* Additional used keys for the selection model
|
43
|
+
* @member {Object} keys
|
44
|
+
*/
|
45
|
+
keys: {},
|
39
46
|
/**
|
40
47
|
* @member {Object} recordVnodeMap={}
|
41
48
|
*/
|
42
49
|
recordVnodeMap: {},
|
50
|
+
/**
|
51
|
+
* @member {Neo.selection.Model} selectionModel_=null
|
52
|
+
*/
|
53
|
+
selectionModel_: null,
|
43
54
|
/**
|
44
55
|
* @member {String} selectedRecordField='annotations.selected'
|
45
56
|
*/
|
@@ -63,10 +74,8 @@ class View extends Component {
|
|
63
74
|
* @member {String[]} selectedRows
|
64
75
|
*/
|
65
76
|
get selectedRows() {
|
66
|
-
|
67
|
-
|
68
|
-
if (tableContainer.selectionModel.ntype === 'selection-table-rowmodel') {
|
69
|
-
return tableContainer.selectionModel.items
|
77
|
+
if (this.selectionModel.ntype === 'selection-table-rowmodel') {
|
78
|
+
return this.selectionModel.items
|
70
79
|
}
|
71
80
|
|
72
81
|
return []
|
@@ -93,6 +102,16 @@ class View extends Component {
|
|
93
102
|
}])
|
94
103
|
}
|
95
104
|
|
105
|
+
/**
|
106
|
+
* Triggered after the selectionModel config got changed
|
107
|
+
* @param {Neo.selection.Model} value
|
108
|
+
* @param {Neo.selection.Model} oldValue
|
109
|
+
* @protected
|
110
|
+
*/
|
111
|
+
afterSetSelectionModel(value, oldValue) {
|
112
|
+
this.rendered && value.register(this)
|
113
|
+
}
|
114
|
+
|
96
115
|
/**
|
97
116
|
* @param {Object} data
|
98
117
|
* @param {String} [data.cellId]
|
@@ -190,6 +209,18 @@ class View extends Component {
|
|
190
209
|
return cellConfig
|
191
210
|
}
|
192
211
|
|
212
|
+
/**
|
213
|
+
* Triggered before the selectionModel config gets changed.
|
214
|
+
* @param {Neo.selection.Model} value
|
215
|
+
* @param {Neo.selection.Model} oldValue
|
216
|
+
* @protected
|
217
|
+
*/
|
218
|
+
beforeSetSelectionModel(value, oldValue) {
|
219
|
+
oldValue?.destroy();
|
220
|
+
|
221
|
+
return ClassSystemUtil.beforeSetInstance(value, RowModel)
|
222
|
+
}
|
223
|
+
|
193
224
|
/**
|
194
225
|
* @param {Object} opts
|
195
226
|
* @param {Object} opts.record
|
@@ -454,6 +485,14 @@ class View extends Component {
|
|
454
485
|
this.fireCellEvent(data, 'cellDoubleClick')
|
455
486
|
}
|
456
487
|
|
488
|
+
/**
|
489
|
+
*
|
490
|
+
*/
|
491
|
+
onConstructed() {
|
492
|
+
super.onConstructed();
|
493
|
+
this.selectionModel?.register(this)
|
494
|
+
}
|
495
|
+
|
457
496
|
/**
|
458
497
|
* @param {Object} data
|
459
498
|
*/
|
@@ -65,7 +65,7 @@ class CellEditing extends Plugin {
|
|
65
65
|
me.onSelectionModelChange({value: selectionModel})
|
66
66
|
}
|
67
67
|
|
68
|
-
owner.keys.add({
|
68
|
+
owner.view.keys.add({
|
69
69
|
Enter: 'onTableKeyDown',
|
70
70
|
Space: 'onTableKeyDown',
|
71
71
|
scope: me
|
@@ -156,7 +156,7 @@ class CellEditing extends Plugin {
|
|
156
156
|
|
157
157
|
await view.promiseUpdate();
|
158
158
|
|
159
|
-
await me.timeout(
|
159
|
+
await me.timeout(30);
|
160
160
|
|
161
161
|
editor.focus()
|
162
162
|
}
|