neo.mjs 8.27.0 → 8.28.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/apps/portal/view/home/MainContainer.mjs +1 -1
- package/apps/portal/view/home/parts/AfterMath.mjs +1 -1
- package/examples/ServiceWorker.mjs +2 -2
- package/package.json +1 -1
- package/resources/scss/src/apps/portal/home/FeatureSection.scss +2 -0
- package/src/DefaultConfig.mjs +2 -2
- package/src/grid/View.mjs +10 -6
- package/src/selection/grid/CellColumnModel.mjs +13 -33
- package/src/selection/grid/CellColumnRowModel.mjs +11 -33
- package/src/selection/grid/CellRowModel.mjs +15 -69
- package/src/selection/grid/ColumnModel.mjs +13 -5
- package/src/worker/App.mjs +8 -11
package/apps/ServiceWorker.mjs
CHANGED
package/apps/portal/index.html
CHANGED
@@ -36,7 +36,7 @@ class AfterMath extends BaseContainer {
|
|
36
36
|
tag : 'ul',
|
37
37
|
|
38
38
|
html: `
|
39
|
-
<li>To learn more about Neo.mjs please
|
39
|
+
<li>To learn more about Neo.mjs please dive into the <a href="#/learn">Learning Section</a> or browse the <a href="#/blog">Blog</a></li>
|
40
40
|
<li>To arrange a demo or to talk to an engineer email <a href="mailto:info@neomjs.com">info@neomjs.com</a></li>
|
41
41
|
<li>For help starting a project email <a href="mailto:services@neomjs.com">services@neomjs.com</a></li>
|
42
42
|
<li>For questions about private training email <a href="mailto:training@neomjs.com">training@neomjs.com</a></li>
|
package/package.json
CHANGED
@@ -25,6 +25,7 @@
|
|
25
25
|
font-size : min(max(4.5vw, 30px), 44px);
|
26
26
|
line-height: 1em;
|
27
27
|
margin : 0;
|
28
|
+
text-align : start;
|
28
29
|
}
|
29
30
|
|
30
31
|
h2.neo-h2 {
|
@@ -32,6 +33,7 @@
|
|
32
33
|
font-weight: 600;
|
33
34
|
line-height: 1em;
|
34
35
|
margin : 0;
|
36
|
+
text-align : start;
|
35
37
|
}
|
36
38
|
|
37
39
|
.page-live-preview {
|
package/src/DefaultConfig.mjs
CHANGED
@@ -263,12 +263,12 @@ const DefaultConfig = {
|
|
263
263
|
useVdomWorker: true,
|
264
264
|
/**
|
265
265
|
* buildScripts/injectPackageVersion.mjs will update this value
|
266
|
-
* @default '8.
|
266
|
+
* @default '8.28.0'
|
267
267
|
* @memberOf! module:Neo
|
268
268
|
* @name config.version
|
269
269
|
* @type String
|
270
270
|
*/
|
271
|
-
version: '8.
|
271
|
+
version: '8.28.0'
|
272
272
|
};
|
273
273
|
|
274
274
|
Object.assign(DefaultConfig, {
|
package/src/grid/View.mjs
CHANGED
@@ -154,12 +154,12 @@ class GridView extends Component {
|
|
154
154
|
}
|
155
155
|
|
156
156
|
/**
|
157
|
-
* @member {String[]}
|
157
|
+
* @member {String[]} selectedCells
|
158
158
|
*/
|
159
159
|
get selectedCells() {
|
160
160
|
let {selectionModel} = this;
|
161
161
|
|
162
|
-
if (selectionModel.ntype
|
162
|
+
if (selectionModel.ntype?.includes('cell')) {
|
163
163
|
return selectionModel.items
|
164
164
|
}
|
165
165
|
|
@@ -176,6 +176,10 @@ class GridView extends Component {
|
|
176
176
|
return selectionModel.items
|
177
177
|
}
|
178
178
|
|
179
|
+
if (selectionModel.ntype?.includes('row')) {
|
180
|
+
return selectionModel.selectedRows
|
181
|
+
}
|
182
|
+
|
179
183
|
return []
|
180
184
|
}
|
181
185
|
|
@@ -438,7 +442,7 @@ class GridView extends Component {
|
|
438
442
|
}
|
439
443
|
|
440
444
|
if (me.selectionModel?.selectedColumns?.includes(dataField)) {
|
441
|
-
NeoArray.add(cellCls, 'neo-selected')
|
445
|
+
NeoArray.add(cellCls, me.selectionModel.selectedColumnCellCls || 'neo-selected')
|
442
446
|
}
|
443
447
|
|
444
448
|
cellConfig = {
|
@@ -567,9 +571,9 @@ class GridView extends Component {
|
|
567
571
|
}
|
568
572
|
|
569
573
|
/**
|
570
|
-
*
|
574
|
+
* @param {Boolean} silent=false
|
571
575
|
*/
|
572
|
-
createViewData() {
|
576
|
+
createViewData(silent=false) {
|
573
577
|
let me = this,
|
574
578
|
{mountedRows, store} = me,
|
575
579
|
rows = [],
|
@@ -597,7 +601,7 @@ class GridView extends Component {
|
|
597
601
|
me.parent.isLoading = false;
|
598
602
|
|
599
603
|
me.updateScrollHeight(true); // silent
|
600
|
-
me.update()
|
604
|
+
!silent && me.update()
|
601
605
|
}
|
602
606
|
|
603
607
|
/**
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import CellModel from './CellModel.mjs';
|
2
|
-
import VDomUtil from '../../util/VDom.mjs';
|
3
2
|
|
4
3
|
/**
|
5
4
|
* @class Neo.selection.grid.CellColumnModel
|
@@ -28,25 +27,10 @@ class CellColumnModel extends CellModel {
|
|
28
27
|
*/
|
29
28
|
selectedColumnCellCls: 'selected-column-cell',
|
30
29
|
/**
|
31
|
-
*
|
32
|
-
* @
|
30
|
+
* Storing the column dataFields
|
31
|
+
* @member {String[]} selectedColumns=[]
|
33
32
|
*/
|
34
|
-
|
35
|
-
}
|
36
|
-
|
37
|
-
/**
|
38
|
-
* @param {Boolean} [silent] true to prevent a vdom update
|
39
|
-
*/
|
40
|
-
deselectAllCells(silent) {
|
41
|
-
let me = this,
|
42
|
-
cellIds = [...me.selectedColumnCellIds],
|
43
|
-
{view} = me
|
44
|
-
|
45
|
-
cellIds.forEach(cellId => {
|
46
|
-
me.deselect(cellId, true, me.selectedColumnCellIds, me.selectedColumnCellCls)
|
47
|
-
});
|
48
|
-
|
49
|
-
!silent && view.update()
|
33
|
+
selectedColumns: []
|
50
34
|
}
|
51
35
|
|
52
36
|
/**
|
@@ -55,16 +39,11 @@ class CellColumnModel extends CellModel {
|
|
55
39
|
onCellClick(data) {
|
56
40
|
let me = this,
|
57
41
|
{view} = me,
|
58
|
-
cellId = data.data.currentTarget
|
59
|
-
columnNodeIds, dataField, index;
|
42
|
+
cellId = data.data.currentTarget;
|
60
43
|
|
61
44
|
if (cellId) {
|
62
|
-
|
63
|
-
|
64
|
-
columnNodeIds = VDomUtil.getColumnNodesIds(view.vdom.cn[0], index);
|
65
|
-
|
66
|
-
me.deselectAllCells(true);
|
67
|
-
me.select(columnNodeIds, me.selectedColumnCellIds, me.selectedColumnCellCls)
|
45
|
+
me.selectedColumns = [view.getDataField(cellId)];
|
46
|
+
view.createViewData(true)
|
68
47
|
}
|
69
48
|
|
70
49
|
super.onCellClick(data)
|
@@ -76,10 +55,10 @@ class CellColumnModel extends CellModel {
|
|
76
55
|
onNavKeyColumn(step) {
|
77
56
|
let me = this,
|
78
57
|
{dataFields, view} = me,
|
79
|
-
|
58
|
+
currentColumn, index;
|
80
59
|
|
81
60
|
if (me.hasSelection()) {
|
82
|
-
currentColumn =
|
61
|
+
currentColumn = me.selectedColumns[0]
|
83
62
|
} else {
|
84
63
|
currentColumn = dataFields[0]
|
85
64
|
}
|
@@ -90,10 +69,9 @@ class CellColumnModel extends CellModel {
|
|
90
69
|
index += dataFields.length
|
91
70
|
}
|
92
71
|
|
93
|
-
|
72
|
+
me.selectedColumns = [dataFields[index]];
|
94
73
|
|
95
|
-
|
96
|
-
me.select(columnNodeIds, me.selectedColumnCellIds, me.selectedColumnCellCls);
|
74
|
+
view.createViewData(true);
|
97
75
|
|
98
76
|
super.onNavKeyColumn(step)
|
99
77
|
}
|
@@ -102,7 +80,9 @@ class CellColumnModel extends CellModel {
|
|
102
80
|
*
|
103
81
|
*/
|
104
82
|
unregister() {
|
105
|
-
this.
|
83
|
+
this.selectedColumns = [];
|
84
|
+
this.view.createViewData();
|
85
|
+
|
106
86
|
super.unregister()
|
107
87
|
}
|
108
88
|
}
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import CellRowModel from './CellRowModel.mjs';
|
2
|
-
import VDomUtil from '../../util/VDom.mjs';
|
3
2
|
|
4
3
|
/**
|
5
4
|
* @class Neo.selection.grid.CellColumnRowModel
|
@@ -28,25 +27,10 @@ class CellColumnRowModel extends CellRowModel {
|
|
28
27
|
*/
|
29
28
|
selectedColumnCellCls: 'selected-column-cell',
|
30
29
|
/**
|
31
|
-
*
|
32
|
-
* @
|
30
|
+
* Storing the column dataFields
|
31
|
+
* @member {String[]} selectedColumns=[]
|
33
32
|
*/
|
34
|
-
|
35
|
-
}
|
36
|
-
|
37
|
-
/**
|
38
|
-
* @param {Boolean} [silent] true to prevent a vdom update
|
39
|
-
*/
|
40
|
-
deselectAllCells(silent) {
|
41
|
-
let me = this,
|
42
|
-
cellIds = [...me.selectedColumnCellIds],
|
43
|
-
{view} = me;
|
44
|
-
|
45
|
-
cellIds.forEach(cellId => {
|
46
|
-
me.deselect(cellId, true, me.selectedColumnCellIds, me.selectedColumnCellCls)
|
47
|
-
});
|
48
|
-
|
49
|
-
!silent && view.update()
|
33
|
+
selectedColumns: []
|
50
34
|
}
|
51
35
|
|
52
36
|
/**
|
@@ -55,16 +39,11 @@ class CellColumnRowModel extends CellRowModel {
|
|
55
39
|
onCellClick(data) {
|
56
40
|
let me = this,
|
57
41
|
{view} = me,
|
58
|
-
cellId = data.data.currentTarget
|
59
|
-
columnNodeIds, dataField, index;
|
42
|
+
cellId = data.data.currentTarget;
|
60
43
|
|
61
44
|
if (cellId) {
|
62
|
-
|
63
|
-
|
64
|
-
columnNodeIds = VDomUtil.getColumnNodesIds(view.vdom.cn[0], index);
|
65
|
-
|
66
|
-
me.deselectAllCells(true);
|
67
|
-
me.select(columnNodeIds, me.selectedColumnCellIds, me.selectedColumnCellCls)
|
45
|
+
me.selectedColumns = [view.getDataField(cellId)];
|
46
|
+
view.createViewData(true)
|
68
47
|
}
|
69
48
|
|
70
49
|
super.onCellClick(data)
|
@@ -76,10 +55,10 @@ class CellColumnRowModel extends CellRowModel {
|
|
76
55
|
onNavKeyColumn(step) {
|
77
56
|
let me = this,
|
78
57
|
{dataFields, view} = me,
|
79
|
-
|
58
|
+
currentColumn, index;
|
80
59
|
|
81
60
|
if (me.hasSelection()) {
|
82
|
-
currentColumn =
|
61
|
+
currentColumn = me.selectedColumns[0]
|
83
62
|
} else {
|
84
63
|
currentColumn = dataFields[0]
|
85
64
|
}
|
@@ -90,10 +69,9 @@ class CellColumnRowModel extends CellRowModel {
|
|
90
69
|
index += dataFields.length
|
91
70
|
}
|
92
71
|
|
93
|
-
|
72
|
+
me.selectedColumns = [dataFields[index]];
|
94
73
|
|
95
|
-
|
96
|
-
me.select(columnNodeIds, me.selectedColumnCellIds, me.selectedColumnCellCls);
|
74
|
+
view.createViewData(true);
|
97
75
|
|
98
76
|
super.onNavKeyColumn(step)
|
99
77
|
}
|
@@ -102,7 +80,7 @@ class CellColumnRowModel extends CellRowModel {
|
|
102
80
|
*
|
103
81
|
*/
|
104
82
|
unregister() {
|
105
|
-
this.
|
83
|
+
this.selectedColumns = [];
|
106
84
|
super.unregister()
|
107
85
|
}
|
108
86
|
}
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import CellModel from './CellModel.mjs';
|
2
|
-
import NeoArray from '../../util/Array.mjs';
|
3
2
|
|
4
3
|
/**
|
5
4
|
* @class Neo.selection.grid.CellRowModel
|
@@ -23,46 +22,11 @@ class CellRowModel extends CellModel {
|
|
23
22
|
*/
|
24
23
|
cls: 'neo-selection-cellrowmodel',
|
25
24
|
/**
|
26
|
-
*
|
25
|
+
* Storing the node ids
|
26
|
+
* @member {String[]} selectedRows=[]
|
27
27
|
* @protected
|
28
28
|
*/
|
29
|
-
|
30
|
-
}
|
31
|
-
|
32
|
-
/**
|
33
|
-
* @param {Boolean} [silent] true to prevent a vdom update
|
34
|
-
*/
|
35
|
-
deselectAllRows(silent) {
|
36
|
-
let me = this,
|
37
|
-
rowIds = [...me.selectedRowIds],
|
38
|
-
{view} = me;
|
39
|
-
|
40
|
-
rowIds.forEach(rowId => {
|
41
|
-
me.deselectRow(rowId, true)
|
42
|
-
});
|
43
|
-
|
44
|
-
!silent && view.update()
|
45
|
-
}
|
46
|
-
|
47
|
-
/**
|
48
|
-
* @param {String} rowId
|
49
|
-
* @param {Boolean} [silent] true to prevent a vdom update
|
50
|
-
*/
|
51
|
-
deselectRow(rowId, silent) {
|
52
|
-
let me = this,
|
53
|
-
{view} = me,
|
54
|
-
node = view.getVdomChild(rowId),
|
55
|
-
cls;
|
56
|
-
|
57
|
-
if (node) {
|
58
|
-
cls = node.cls || [];
|
59
|
-
NeoArray.remove(cls, me.selectedCls);
|
60
|
-
node.cls = cls
|
61
|
-
}
|
62
|
-
|
63
|
-
NeoArray.remove(me.selectedRowIds, rowId);
|
64
|
-
|
65
|
-
!silent && view.update()
|
29
|
+
selectedRows: []
|
66
30
|
}
|
67
31
|
|
68
32
|
/**
|
@@ -70,12 +34,13 @@ class CellRowModel extends CellModel {
|
|
70
34
|
*/
|
71
35
|
onCellClick(data) {
|
72
36
|
let me = this,
|
73
|
-
|
74
|
-
|
37
|
+
{view} = me,
|
38
|
+
record = view.getRecord(data.data.currentTarget),
|
39
|
+
rowId = view.getRowId(record);
|
75
40
|
|
76
41
|
if (rowId) {
|
77
|
-
me.
|
78
|
-
|
42
|
+
me.selectedRows = [rowId];
|
43
|
+
view.createViewData(true)
|
79
44
|
}
|
80
45
|
|
81
46
|
super.onCellClick(data)
|
@@ -85,13 +50,11 @@ class CellRowModel extends CellModel {
|
|
85
50
|
* @param {Number} step
|
86
51
|
*/
|
87
52
|
onNavKeyRow(step) {
|
88
|
-
super.onNavKeyRow(step);
|
89
|
-
|
90
53
|
let me = this,
|
91
54
|
{view} = me,
|
92
55
|
{store} = view,
|
93
56
|
countRecords = store.getCount(),
|
94
|
-
rowId = me.
|
57
|
+
rowId = me.selectedRows[0] || view.getRowId(store.getAt(0)),
|
95
58
|
record = view.getRecord(rowId),
|
96
59
|
index = store.indexOf(record),
|
97
60
|
newIndex = (index + step) % countRecords,
|
@@ -104,37 +67,20 @@ class CellRowModel extends CellModel {
|
|
104
67
|
id = view.getRowId(store.getAt(newIndex));
|
105
68
|
|
106
69
|
if (id) {
|
107
|
-
me.
|
108
|
-
|
70
|
+
me.selectedRows = [id];
|
71
|
+
view.createViewData(true)
|
109
72
|
}
|
110
|
-
}
|
111
73
|
|
112
|
-
|
113
|
-
* @param {String} id
|
114
|
-
* @param {Boolean} [silent]
|
115
|
-
*/
|
116
|
-
selectRow(id, silent) {
|
117
|
-
let me = this,
|
118
|
-
{view} = me,
|
119
|
-
vdomNode = id && view.getVdomChild(id),
|
120
|
-
cls;
|
121
|
-
|
122
|
-
if (vdomNode) {
|
123
|
-
cls = vdomNode.cls || [];
|
124
|
-
NeoArray.add(cls, me.selectedCls);
|
125
|
-
vdomNode.cls = cls;
|
126
|
-
|
127
|
-
me.selectedRowIds.push(id)
|
128
|
-
}
|
129
|
-
|
130
|
-
!silent && view.update()
|
74
|
+
super.onNavKeyRow(step)
|
131
75
|
}
|
132
76
|
|
133
77
|
/**
|
134
78
|
*
|
135
79
|
*/
|
136
80
|
unregister() {
|
137
|
-
this.
|
81
|
+
this.selectedRows = [];
|
82
|
+
this.view.createViewData();
|
83
|
+
|
138
84
|
super.unregister()
|
139
85
|
}
|
140
86
|
}
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import BaseModel from './BaseModel.mjs';
|
2
|
-
import VDomUtil from '../../util/VDom.mjs';
|
3
2
|
|
4
3
|
/**
|
5
4
|
* @class Neo.selection.grid.ColumnModel
|
@@ -23,6 +22,7 @@ class ColumnModel extends BaseModel {
|
|
23
22
|
*/
|
24
23
|
cls: 'neo-selection-columnmodel',
|
25
24
|
/**
|
25
|
+
* Storing the column dataFields
|
26
26
|
* @member {String[]} selectedColumns=[]
|
27
27
|
*/
|
28
28
|
selectedColumns: []
|
@@ -89,7 +89,7 @@ class ColumnModel extends BaseModel {
|
|
89
89
|
onNavKeyColumn(step) {
|
90
90
|
let me = this,
|
91
91
|
{dataFields, view} = me,
|
92
|
-
currentColumn, index;
|
92
|
+
currentColumn, currentIndex, index;
|
93
93
|
|
94
94
|
if (me.hasSelection()) {
|
95
95
|
currentColumn = me.selectedColumns[0]
|
@@ -97,14 +97,18 @@ class ColumnModel extends BaseModel {
|
|
97
97
|
currentColumn = dataFields[0]
|
98
98
|
}
|
99
99
|
|
100
|
-
|
100
|
+
currentIndex = dataFields.indexOf(currentColumn);
|
101
|
+
index = (currentIndex + step) % dataFields.length;
|
101
102
|
|
102
103
|
while (index < 0) {
|
103
104
|
index += dataFields.length
|
104
105
|
}
|
105
106
|
|
106
107
|
me.selectedColumns = [dataFields[index]];
|
107
|
-
|
108
|
+
|
109
|
+
view.createViewData();
|
110
|
+
|
111
|
+
view.parent.scrollByColumns(currentIndex, step)
|
108
112
|
}
|
109
113
|
|
110
114
|
/**
|
@@ -125,7 +129,11 @@ class ColumnModel extends BaseModel {
|
|
125
129
|
*
|
126
130
|
*/
|
127
131
|
unregister() {
|
128
|
-
let
|
132
|
+
let me = this,
|
133
|
+
{id, view} = me;
|
134
|
+
|
135
|
+
me.selectedColumns = [];
|
136
|
+
me.view.createViewData();
|
129
137
|
|
130
138
|
view.keys?.removeKeys([
|
131
139
|
{fn: 'onKeyDownLeft', key: 'Left', scope: id},
|
package/src/worker/App.mjs
CHANGED
@@ -547,21 +547,18 @@ class App extends Base {
|
|
547
547
|
* @param {String} [data.priority] optionally pass 'important'
|
548
548
|
* @param {String} data.theme=Neo.config.themes[0]
|
549
549
|
* @param {String} data.value
|
550
|
+
* @param {Number} data.windowId
|
550
551
|
* @returns {Promise<any>}
|
551
552
|
*/
|
552
|
-
setCssVariable(data) {
|
553
|
-
let
|
554
|
-
theme
|
553
|
+
async setCssVariable(data) {
|
554
|
+
let Stylesheet = await this.getAddon('Stylesheet', data.windowId),
|
555
|
+
theme = data.theme || Neo.config.themes?.[0];
|
555
556
|
|
556
|
-
if (
|
557
|
-
|
558
|
-
} else {
|
559
|
-
if (theme.startsWith('neo-')) {
|
560
|
-
theme = theme.substring(4)
|
561
|
-
}
|
562
|
-
|
563
|
-
return addon.setCssVariable({theme, ...data})
|
557
|
+
if (theme.startsWith('neo-')) {
|
558
|
+
theme = theme.substring(4)
|
564
559
|
}
|
560
|
+
|
561
|
+
return Stylesheet.setCssVariable({theme, ...data})
|
565
562
|
}
|
566
563
|
}
|
567
564
|
|