neo.mjs 7.16.0 → 8.0.0-alpha.2
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/view/ViewportController.mjs +1 -1
- package/apps/portal/view/home/FooterContainer.mjs +1 -1
- package/apps/realworld/view/HomeComponent.mjs +13 -14
- package/apps/realworld/view/user/ProfileComponent.mjs +1 -1
- package/apps/realworld/view/user/SignUpComponent.mjs +1 -2
- package/examples/ServiceWorker.mjs +2 -2
- package/examples/table/container/MainContainer.mjs +17 -12
- package/examples/table/nestedRecordFields/MainContainer.mjs +3 -1
- package/examples/todoList/version1/MainComponent.mjs +1 -1
- package/package.json +6 -6
- package/resources/data/deck/learnneo/pages/benefits/Speed.md +5 -4
- package/resources/scss/src/calendar/view/week/Component.scss +6 -0
- package/resources/scss/src/component/DateSelector.scss +1 -0
- package/src/DefaultConfig.mjs +2 -2
- package/src/button/Base.mjs +8 -8
- package/src/calendar/view/MainContainer.mjs +4 -1
- package/src/calendar/view/SettingsContainer.mjs +4 -0
- package/src/calendar/view/YearComponent.mjs +0 -3
- package/src/calendar/view/calendars/ColorsList.mjs +6 -6
- package/src/calendar/view/calendars/Container.mjs +1 -1
- package/src/calendar/view/calendars/List.mjs +14 -2
- package/src/calendar/view/month/Component.mjs +1 -1
- package/src/calendar/view/week/Component.mjs +7 -7
- package/src/calendar/view/week/EventDragZone.mjs +1 -1
- package/src/calendar/view/week/TimeAxisComponent.mjs +2 -2
- package/src/calendar/view/week/plugin/DragDrop.mjs +3 -3
- package/src/collection/Base.mjs +4 -3
- package/src/component/Base.mjs +125 -49
- package/src/component/Circle.mjs +1 -3
- package/src/component/DateSelector.mjs +1 -1
- package/src/container/Accordion.mjs +1 -1
- package/src/container/Base.mjs +19 -7
- package/src/core/Base.mjs +10 -9
- package/src/draggable/list/DragZone.mjs +1 -1
- package/src/draggable/toolbar/DragZone.mjs +1 -1
- package/src/draggable/toolbar/SortZone.mjs +1 -1
- package/src/draggable/tree/DragZone.mjs +1 -1
- package/src/form/Fieldset.mjs +2 -0
- package/src/form/field/Color.mjs +4 -4
- package/src/form/field/ComboBox.mjs +2 -2
- package/src/form/field/Date.mjs +2 -1
- package/src/form/field/Picker.mjs +2 -1
- package/src/form/field/Text.mjs +8 -8
- package/src/layout/Card.mjs +11 -6
- package/src/layout/Cube.mjs +15 -4
- package/src/list/Chip.mjs +3 -2
- package/src/list/Circle.mjs +2 -1
- package/src/list/Component.mjs +5 -0
- package/src/manager/Component.mjs +158 -4
- package/src/manager/DomEvent.mjs +2 -2
- package/src/menu/List.mjs +3 -4
- package/src/menu/Panel.mjs +1 -1
- package/src/selection/Model.mjs +1 -1
- package/src/selection/grid/BaseModel.mjs +61 -0
- package/src/selection/grid/CellColumnModel.mjs +2 -2
- package/src/selection/grid/CellColumnRowModel.mjs +2 -2
- package/src/selection/grid/CellModel.mjs +4 -4
- package/src/selection/grid/CellRowModel.mjs +9 -3
- package/src/selection/grid/ColumnModel.mjs +15 -26
- package/src/selection/grid/RowModel.mjs +15 -25
- package/src/selection/table/BaseModel.mjs +61 -0
- package/src/selection/table/CellColumnModel.mjs +2 -2
- package/src/selection/table/CellColumnRowModel.mjs +2 -2
- package/src/selection/table/CellModel.mjs +4 -4
- package/src/selection/table/CellRowModel.mjs +9 -3
- package/src/selection/table/ColumnModel.mjs +7 -8
- package/src/selection/table/RowModel.mjs +7 -7
- package/src/table/Container.mjs +1 -0
- package/src/table/View.mjs +102 -80
- package/src/table/header/Button.mjs +3 -5
- package/src/table/header/Toolbar.mjs +1 -0
- package/src/tree/List.mjs +1 -1
- package/src/util/VDom.mjs +42 -11
- package/src/util/VNode.mjs +33 -11
- package/src/vdom/Helper.mjs +55 -22
- package/src/vdom/VNode.mjs +1 -1
package/src/layout/Card.mjs
CHANGED
@@ -133,6 +133,7 @@ class Card extends Base {
|
|
133
133
|
if (needsTransition) {
|
134
134
|
await me.slideCards(value, oldValue)
|
135
135
|
} else if (removeInactiveCards || needsUpdate) {
|
136
|
+
container.updateDepth = -1; // include the full tree to honor new or changed inactive cards
|
136
137
|
container.update()
|
137
138
|
}
|
138
139
|
}
|
@@ -200,14 +201,14 @@ class Card extends Base {
|
|
200
201
|
item.className = proto.className;
|
201
202
|
item.module = module;
|
202
203
|
|
203
|
-
me.applyChildAttributes(item, index);
|
204
|
-
|
205
204
|
delete item.isLoading;
|
206
205
|
delete item.vdom;
|
207
206
|
|
208
207
|
items[index] = item = Neo.create(item);
|
209
208
|
|
210
|
-
|
209
|
+
me.applyChildAttributes(item, index);
|
210
|
+
|
211
|
+
container.getVdomItemsRoot().cn[index] = item.createVdomReference();
|
211
212
|
|
212
213
|
container.fire('cardLoaded', {item});
|
213
214
|
|
@@ -252,13 +253,15 @@ class Card extends Base {
|
|
252
253
|
|
253
254
|
vdom.cn = [
|
254
255
|
{cls: ['neo-relative'], cn: [
|
255
|
-
{cls: ['neo-animation-wrapper'], style, cn: [card.
|
256
|
+
{cls: ['neo-animation-wrapper'], style, cn: [card.createVdomReference()]}
|
256
257
|
]}
|
257
258
|
];
|
258
259
|
|
259
260
|
animationWrapper = vdom.cn[0].cn[0];
|
260
261
|
|
261
|
-
animationWrapper.cn[slideIn ? 'unshift' : 'push'](oldCard.
|
262
|
+
animationWrapper.cn[slideIn ? 'unshift' : 'push'](oldCard.createVdomReference());
|
263
|
+
|
264
|
+
container.updateDepth = -1;
|
262
265
|
|
263
266
|
await container.promiseUpdate();
|
264
267
|
|
@@ -273,11 +276,13 @@ class Card extends Base {
|
|
273
276
|
vdom.cn = [];
|
274
277
|
|
275
278
|
container.items.forEach(item => {
|
276
|
-
vdom.cn.push(item.
|
279
|
+
vdom.cn.push(item.createVdomReference())
|
277
280
|
});
|
278
281
|
|
279
282
|
oldCard.vdom.removeDom = true;
|
280
283
|
|
284
|
+
container.updateDepth = -1;
|
285
|
+
|
281
286
|
await container.promiseUpdate()
|
282
287
|
}
|
283
288
|
}
|
package/src/layout/Cube.mjs
CHANGED
@@ -144,6 +144,7 @@ class Cube extends Card {
|
|
144
144
|
|
145
145
|
if (Neo.typeOf(item.module) === 'Function') {
|
146
146
|
await me.loadModule(item, value);
|
147
|
+
container.updateDepth = -1;
|
147
148
|
container.update();
|
148
149
|
|
149
150
|
await me.timeout(100) // wait for the view to get painted first
|
@@ -276,6 +277,14 @@ class Cube extends Card {
|
|
276
277
|
}
|
277
278
|
}
|
278
279
|
|
280
|
+
/**
|
281
|
+
* @protected
|
282
|
+
*/
|
283
|
+
applyRenderAttributes() {
|
284
|
+
this.container.updateDepth = -1;
|
285
|
+
super.applyRenderAttributes()
|
286
|
+
}
|
287
|
+
|
279
288
|
/**
|
280
289
|
*
|
281
290
|
*/
|
@@ -299,9 +308,9 @@ class Cube extends Card {
|
|
299
308
|
vdom.cn = container.getVdomItemsRoot().cn;
|
300
309
|
|
301
310
|
if (me.hideInactiveCardsOnDestroy) {
|
302
|
-
|
311
|
+
container.items.forEach((item, index) => {
|
303
312
|
if (index < 6 && index !== me.activeIndex) {
|
304
|
-
item.removeDom = true
|
313
|
+
item.vdom.removeDom = true
|
305
314
|
}
|
306
315
|
})
|
307
316
|
}
|
@@ -309,6 +318,7 @@ class Cube extends Card {
|
|
309
318
|
// override
|
310
319
|
container.getVdomItemsRoot = me.#cachedVdomItemsRoot;
|
311
320
|
|
321
|
+
container.updateDepth = -1;
|
312
322
|
container.update();
|
313
323
|
|
314
324
|
super.destroy(...args)
|
@@ -336,12 +346,13 @@ class Cube extends Card {
|
|
336
346
|
|
337
347
|
me.timeout(50).then(() => {
|
338
348
|
// Important when switching from a card layout to this one
|
339
|
-
container.
|
349
|
+
container.items.forEach((item, index) => {
|
340
350
|
if (index < 6) {
|
341
|
-
delete
|
351
|
+
delete item.vdom.removeDom
|
342
352
|
}
|
343
353
|
});
|
344
354
|
|
355
|
+
container.updateDepth = -1;
|
345
356
|
container.update()
|
346
357
|
})
|
347
358
|
}
|
package/src/list/Chip.mjs
CHANGED
@@ -62,7 +62,7 @@ class Chip extends ComponentList {
|
|
62
62
|
items = me.items || [];
|
63
63
|
|
64
64
|
items.forEach(item => {
|
65
|
-
item.display = value ? 'flex' : 'inline-flex'
|
65
|
+
item.display = value ? 'flex' : 'inline-flex'
|
66
66
|
})
|
67
67
|
}
|
68
68
|
}
|
@@ -85,6 +85,7 @@ class Chip extends ComponentList {
|
|
85
85
|
};
|
86
86
|
|
87
87
|
if (listItem) {
|
88
|
+
me.updateDepth = 2;
|
88
89
|
listItem.setSilent(config)
|
89
90
|
} else {
|
90
91
|
items[index] = listItem = Neo.create({
|
@@ -98,7 +99,7 @@ class Chip extends ComponentList {
|
|
98
99
|
|
99
100
|
me.items = items;
|
100
101
|
|
101
|
-
return [listItem.
|
102
|
+
return [listItem.createVdomReference()]
|
102
103
|
}
|
103
104
|
}
|
104
105
|
|
package/src/list/Circle.mjs
CHANGED
@@ -61,6 +61,7 @@ class Circle extends Component {
|
|
61
61
|
};
|
62
62
|
|
63
63
|
if (listItem) {
|
64
|
+
me.updateDepth = 2;
|
64
65
|
listItem.setSilent(config)
|
65
66
|
} else {
|
66
67
|
items[index] = listItem = Neo.create({
|
@@ -79,7 +80,7 @@ class Circle extends Component {
|
|
79
80
|
|
80
81
|
me.items = items;
|
81
82
|
|
82
|
-
return [listItem.
|
83
|
+
return [listItem.createVdomReference()]
|
83
84
|
}
|
84
85
|
}
|
85
86
|
|
package/src/list/Component.mjs
CHANGED
@@ -112,6 +112,10 @@ class Component extends Base {
|
|
112
112
|
fromIndex, key, previousKeys;
|
113
113
|
|
114
114
|
if (me.items) {
|
115
|
+
me.items.forEach(item => {
|
116
|
+
item.setSilent({id: null})
|
117
|
+
});
|
118
|
+
|
115
119
|
key = me.getKeyProperty();
|
116
120
|
previousKeys = data.previousItems.map(e => e[key]);
|
117
121
|
|
@@ -120,6 +124,7 @@ class Component extends Base {
|
|
120
124
|
newItems.push(me.items[fromIndex])
|
121
125
|
});
|
122
126
|
|
127
|
+
me.updateDepth = -1;
|
123
128
|
me.items = newItems
|
124
129
|
}
|
125
130
|
}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import Base from './Base.mjs';
|
2
|
+
import VDomUtil from '../util/VDom.mjs';
|
2
3
|
import VNodeUtil from '../util/VNode.mjs';
|
3
4
|
|
4
5
|
/**
|
@@ -20,6 +21,11 @@ class Component extends Base {
|
|
20
21
|
singleton: true
|
21
22
|
}
|
22
23
|
|
24
|
+
/**
|
25
|
+
* @member {Map} wrapperNodes=new Map()
|
26
|
+
*/
|
27
|
+
wrapperNodes = new Map()
|
28
|
+
|
23
29
|
/**
|
24
30
|
* @param {Object} config
|
25
31
|
*/
|
@@ -32,6 +38,58 @@ class Component extends Base {
|
|
32
38
|
Neo.getComponent = me.getById.bind(me) // alias
|
33
39
|
}
|
34
40
|
|
41
|
+
/**
|
42
|
+
* Flattens a given vnode tree by replacing component based subtrees with componentId based references
|
43
|
+
* @param {Object} vnode
|
44
|
+
* @param {String} ownerId We do not want to replace the own id => wrapped items
|
45
|
+
* @returns {Object}
|
46
|
+
*/
|
47
|
+
addVnodeComponentReferences(vnode, ownerId) {
|
48
|
+
vnode = {...vnode}; // shallow copy
|
49
|
+
|
50
|
+
let me = this,
|
51
|
+
childNodes = vnode?.childNodes ? [...vnode.childNodes] : [],
|
52
|
+
childNodeId, component, componentId, parentRef, referenceNode;
|
53
|
+
|
54
|
+
vnode.childNodes = childNodes;
|
55
|
+
|
56
|
+
childNodes.forEach((childNode, index) => {
|
57
|
+
childNodeId = childNode.id;
|
58
|
+
|
59
|
+
if (!childNode.componentId && childNodeId !== ownerId) {
|
60
|
+
component = me.get(childNodeId);
|
61
|
+
|
62
|
+
if (!component) {
|
63
|
+
// searching for wrapped components as a fallback
|
64
|
+
component = me.wrapperNodes.get(childNodeId);
|
65
|
+
|
66
|
+
if (component) {
|
67
|
+
// update the parent component reference => assign the wrapper id
|
68
|
+
componentId = component.id;
|
69
|
+
parentRef = VDomUtil.find(component.parent.vdom, {componentId}, false);
|
70
|
+
|
71
|
+
if (parentRef) {
|
72
|
+
parentRef.vdom.id = childNodeId
|
73
|
+
}
|
74
|
+
}
|
75
|
+
}
|
76
|
+
|
77
|
+
if (component) {
|
78
|
+
componentId = component.id;
|
79
|
+
referenceNode = {componentId};
|
80
|
+
|
81
|
+
if (componentId !== childNodeId) {
|
82
|
+
referenceNode.id = childNodeId
|
83
|
+
}
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|
87
|
+
childNodes[index] = component ? referenceNode : me.addVnodeComponentReferences(childNode, ownerId)
|
88
|
+
});
|
89
|
+
|
90
|
+
return vnode
|
91
|
+
}
|
92
|
+
|
35
93
|
/**
|
36
94
|
* Returns the first component which matches the config-selector moving down the component items tree.
|
37
95
|
* Use returnFirstMatch=false to get an array of all matching items instead.
|
@@ -144,11 +202,11 @@ class Component extends Base {
|
|
144
202
|
/**
|
145
203
|
* todo: replace all calls of this method to calls using the util.VNode class
|
146
204
|
* Get the ids of all child nodes of the given vnode
|
147
|
-
* @param vnode
|
148
|
-
* @param childIds
|
149
|
-
* @returns {
|
205
|
+
* @param {Object} vnode
|
206
|
+
* @param {String[]} childIds=[]
|
207
|
+
* @returns {String[]} childIds
|
150
208
|
*/
|
151
|
-
getChildIds(vnode, childIds) {
|
209
|
+
getChildIds(vnode, childIds=[]) {
|
152
210
|
return VNodeUtil.getChildIds(vnode, childIds)
|
153
211
|
}
|
154
212
|
|
@@ -318,6 +376,79 @@ class Component extends Base {
|
|
318
376
|
return parents
|
319
377
|
}
|
320
378
|
|
379
|
+
/**
|
380
|
+
* Copies a given vdom tree and replaces child component references with the vdom of their matching components
|
381
|
+
* @param {Object} vdom
|
382
|
+
* @param {Number} depth=-1
|
383
|
+
* The component replacement depth.
|
384
|
+
* -1 will parse the full tree, 1 top level only, 2 include children, 3 include grandchildren
|
385
|
+
* @returns {Object}
|
386
|
+
*/
|
387
|
+
getVdomTree(vdom, depth=-1) {
|
388
|
+
let output = {...vdom}, // shallow copy
|
389
|
+
childDepth;
|
390
|
+
|
391
|
+
if (vdom.cn) {
|
392
|
+
output.cn = [];
|
393
|
+
|
394
|
+
childDepth = depth === -1 ? -1 : depth > 1 ? depth-1 : 1;
|
395
|
+
|
396
|
+
vdom.cn.forEach(item => {
|
397
|
+
childDepth = depth;
|
398
|
+
|
399
|
+
if (item.componentId) {
|
400
|
+
childDepth = depth === -1 ? -1 : depth > 1 ? depth-1 : 1;
|
401
|
+
|
402
|
+
if (depth === -1 || depth > 1) {
|
403
|
+
item = this.get(item.componentId).vdom
|
404
|
+
}
|
405
|
+
}
|
406
|
+
|
407
|
+
output.cn.push(this.getVdomTree(item, childDepth))
|
408
|
+
})
|
409
|
+
}
|
410
|
+
|
411
|
+
return output
|
412
|
+
}
|
413
|
+
|
414
|
+
/**
|
415
|
+
* Copies a given vnode tree and replaces child component references with the vnode of their matching components
|
416
|
+
* @param {Object} vnode
|
417
|
+
* @param {Number} depth=-1
|
418
|
+
* The component replacement depth.
|
419
|
+
* -1 will parse the full tree, 1 top level only, 2 include children, 3 include grandchildren
|
420
|
+
* @returns {Object}
|
421
|
+
*/
|
422
|
+
getVnodeTree(vnode, depth=-1) {
|
423
|
+
let output = {...vnode}, // shallow copy
|
424
|
+
childDepth, component;
|
425
|
+
|
426
|
+
if (vnode.childNodes) {
|
427
|
+
output.childNodes = [];
|
428
|
+
|
429
|
+
vnode.childNodes.forEach(item => {
|
430
|
+
childDepth = depth;
|
431
|
+
|
432
|
+
if (item.componentId) {
|
433
|
+
childDepth = depth === -1 ? -1 : depth > 1 ? depth-1 : 1;
|
434
|
+
|
435
|
+
if (depth === -1 || depth > 1) {
|
436
|
+
component = this.get(item.componentId);
|
437
|
+
|
438
|
+
// keep references in case there is no vnode (cmp not mounted)
|
439
|
+
if (component.vnode) {
|
440
|
+
item = component.vnode
|
441
|
+
}
|
442
|
+
}
|
443
|
+
}
|
444
|
+
|
445
|
+
output.childNodes.push(this.getVnodeTree(item, childDepth))
|
446
|
+
})
|
447
|
+
}
|
448
|
+
|
449
|
+
return output
|
450
|
+
}
|
451
|
+
|
321
452
|
/**
|
322
453
|
* Check if the component had a property of any value somewhere in the Prototype chain
|
323
454
|
*
|
@@ -338,6 +469,29 @@ class Component extends Base {
|
|
338
469
|
return false
|
339
470
|
}
|
340
471
|
|
472
|
+
/**
|
473
|
+
* @param {String} wrapperId
|
474
|
+
* @param {Neo.component.Base} component
|
475
|
+
*/
|
476
|
+
registerWrapperNode(wrapperId, component) {
|
477
|
+
this.wrapperNodes.set(wrapperId, component)
|
478
|
+
}
|
479
|
+
|
480
|
+
/**
|
481
|
+
* @param {Neo.component.Base|String} item
|
482
|
+
*/
|
483
|
+
unregister(item) {
|
484
|
+
if (item) {
|
485
|
+
if (Neo.isString(item)) {
|
486
|
+
this.wrapperNodes.delete(item)
|
487
|
+
} else if (item.id !== item.vdom.id) {
|
488
|
+
this.wrapperNodes.delete(item.vdom.id)
|
489
|
+
}
|
490
|
+
}
|
491
|
+
|
492
|
+
super.unregister(item)
|
493
|
+
}
|
494
|
+
|
341
495
|
/**
|
342
496
|
* Returns the first component which matches the config-selector.
|
343
497
|
* Use returnFirstMatch=false to get an array of all matching items instead.
|
package/src/manager/DomEvent.mjs
CHANGED
@@ -522,11 +522,11 @@ class DomEvent extends Base {
|
|
522
522
|
delegationVdom;
|
523
523
|
|
524
524
|
if (targetId && targetId !== delegationTargetId) {
|
525
|
-
delegationVdom = VDomUtil.
|
525
|
+
delegationVdom = VDomUtil.find(component.vdom, delegationTargetId);
|
526
526
|
|
527
527
|
// delegationVdom can be undefined when dragging a proxy over the node.
|
528
528
|
// see issues/1137 for details.
|
529
|
-
if (!delegationVdom || delegationVdom.vdom && VDomUtil.
|
529
|
+
if (!delegationVdom || delegationVdom.vdom && VDomUtil.find(delegationVdom.vdom, targetId)) {
|
530
530
|
return false
|
531
531
|
}
|
532
532
|
}
|
package/src/menu/List.mjs
CHANGED
@@ -251,12 +251,11 @@ class List extends BaseList {
|
|
251
251
|
*
|
252
252
|
*/
|
253
253
|
hideSubMenu() {
|
254
|
-
let
|
255
|
-
activeSubMenu = me.activeSubMenu;
|
254
|
+
let {activeSubMenu} = this;
|
256
255
|
|
257
256
|
if (activeSubMenu) {
|
258
257
|
activeSubMenu.unmount();
|
259
|
-
|
258
|
+
this.activeSubMenu = null
|
260
259
|
}
|
261
260
|
}
|
262
261
|
|
@@ -402,7 +401,7 @@ class List extends BaseList {
|
|
402
401
|
recordId = record[me.getKeyProperty()],
|
403
402
|
submenu = me.subMenuMap?.[me.getMenuMapId(recordId)];
|
404
403
|
|
405
|
-
if (!submenu
|
404
|
+
if (!submenu?.mounted) {
|
406
405
|
me.showSubMenu(nodeId, record)
|
407
406
|
} else {
|
408
407
|
me.hideSubMenu()
|
package/src/menu/Panel.mjs
CHANGED
package/src/selection/Model.mjs
CHANGED
@@ -0,0 +1,61 @@
|
|
1
|
+
import Model from '../Model.mjs';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Abstract base class for all grid related selection models
|
5
|
+
* @class Neo.selection.grid.BaseModel
|
6
|
+
* @extends Neo.selection.Model
|
7
|
+
* @abstract
|
8
|
+
*/
|
9
|
+
class BaseModel extends Model {
|
10
|
+
static config = {
|
11
|
+
/**
|
12
|
+
* @member {String} className='Neo.selection.grid.BaseModel'
|
13
|
+
* @protected
|
14
|
+
*/
|
15
|
+
className: 'Neo.selection.grid.BaseModel'
|
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
|
+
}
|
60
|
+
|
61
|
+
export default Neo.setupClass(BaseModel);
|
@@ -69,7 +69,7 @@ class CellColumnModel extends CellModel {
|
|
69
69
|
|
70
70
|
if (id) {
|
71
71
|
index = ColumnModel.getColumnIndex(id, me.view.items[0].items);
|
72
|
-
tbodyNode = VDomUtil.
|
72
|
+
tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
|
73
73
|
columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, index);
|
74
74
|
|
75
75
|
me.deselectAllCells(true);
|
@@ -96,7 +96,7 @@ class CellColumnModel extends CellModel {
|
|
96
96
|
newIndex += fields.length
|
97
97
|
}
|
98
98
|
|
99
|
-
tbodyNode = VDomUtil.
|
99
|
+
tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
|
100
100
|
columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, newIndex);
|
101
101
|
|
102
102
|
me.deselectAllCells(true);
|
@@ -69,7 +69,7 @@ class CellColumnRowModel extends CellRowModel {
|
|
69
69
|
|
70
70
|
if (id) {
|
71
71
|
index = ColumnModel.getColumnIndex(id, me.view.items[0].items);
|
72
|
-
tbodyNode = VDomUtil.
|
72
|
+
tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
|
73
73
|
columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, index);
|
74
74
|
|
75
75
|
me.deselectAllCells(true);
|
@@ -96,7 +96,7 @@ class CellColumnRowModel extends CellRowModel {
|
|
96
96
|
newIndex += fields.length
|
97
97
|
}
|
98
98
|
|
99
|
-
tbodyNode = VDomUtil.
|
99
|
+
tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
|
100
100
|
columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, newIndex);
|
101
101
|
|
102
102
|
me.deselectAllCells(true);
|
@@ -1,10 +1,10 @@
|
|
1
|
-
import
|
1
|
+
import BaseModel from './BaseModel.mjs';
|
2
2
|
|
3
3
|
/**
|
4
4
|
* @class Neo.selection.grid.CellModel
|
5
|
-
* @extends Neo.selection.
|
5
|
+
* @extends Neo.selection.grid.BaseModel
|
6
6
|
*/
|
7
|
-
class CellModel extends
|
7
|
+
class CellModel extends BaseModel {
|
8
8
|
static config = {
|
9
9
|
/**
|
10
10
|
* @member {String} className='Neo.selection.grid.CellModel'
|
@@ -40,7 +40,7 @@ class CellModel extends Model {
|
|
40
40
|
|
41
41
|
me.view.un('cellClick', me.onCellClick, me);
|
42
42
|
|
43
|
-
super.destroy(...args)
|
43
|
+
super.destroy(...args)
|
44
44
|
}
|
45
45
|
|
46
46
|
/**
|
@@ -73,7 +73,10 @@ class CellRowModel extends CellModel {
|
|
73
73
|
|
74
74
|
NeoArray.remove(me.selectedRowIds, rowId);
|
75
75
|
|
76
|
-
!silent
|
76
|
+
if (!silent) {
|
77
|
+
view.updateDepth = 2;
|
78
|
+
view.update()
|
79
|
+
}
|
77
80
|
}
|
78
81
|
|
79
82
|
/**
|
@@ -103,7 +106,7 @@ class CellRowModel extends CellModel {
|
|
103
106
|
node = RowModel.getRowNode(data.path),
|
104
107
|
{view} = me,
|
105
108
|
{store} = view,
|
106
|
-
vdomNode = VDomUtil.
|
109
|
+
vdomNode = VDomUtil.find(view.vdom, node.id),
|
107
110
|
newIndex = (vdomNode.index + step) % store.getCount(),
|
108
111
|
{parentNode} = vdomNode,
|
109
112
|
id;
|
@@ -138,7 +141,10 @@ class CellRowModel extends CellModel {
|
|
138
141
|
me.selectedRowIds.push(id)
|
139
142
|
}
|
140
143
|
|
141
|
-
!silent
|
144
|
+
if (!silent) {
|
145
|
+
view.updateDepth = 2;
|
146
|
+
view.update()
|
147
|
+
}
|
142
148
|
}
|
143
149
|
|
144
150
|
/**
|
@@ -1,11 +1,11 @@
|
|
1
|
-
import
|
2
|
-
import VDomUtil
|
1
|
+
import BaseModel from './BaseModel.mjs';
|
2
|
+
import VDomUtil from '../../util/VDom.mjs';
|
3
3
|
|
4
4
|
/**
|
5
5
|
* @class Neo.selection.grid.ColumnModel
|
6
|
-
* @extends Neo.selection.
|
6
|
+
* @extends Neo.selection.grid.BaseModel
|
7
7
|
*/
|
8
|
-
class ColumnModel extends
|
8
|
+
class ColumnModel extends BaseModel {
|
9
9
|
static config = {
|
10
10
|
/**
|
11
11
|
* @member {String} className='Neo.selection.grid.ColumnModel'
|
@@ -41,7 +41,7 @@ class ColumnModel extends Model {
|
|
41
41
|
|
42
42
|
me.view.un('cellClick', me.onCellClick, me);
|
43
43
|
|
44
|
-
super.destroy(...args)
|
44
|
+
super.destroy(...args)
|
45
45
|
}
|
46
46
|
|
47
47
|
/**
|
@@ -87,7 +87,7 @@ class ColumnModel extends Model {
|
|
87
87
|
|
88
88
|
if (id) {
|
89
89
|
index = ColumnModel.getColumnIndex(id, me.view.items[0].items);
|
90
|
-
tbodyNode = VDomUtil.
|
90
|
+
tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
|
91
91
|
columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, index);
|
92
92
|
|
93
93
|
me.select(columnNodeIds)
|
@@ -128,7 +128,7 @@ class ColumnModel extends Model {
|
|
128
128
|
idArray[2] = fields[newIndex];
|
129
129
|
id = idArray.join('__');
|
130
130
|
|
131
|
-
tbodyNode = VDomUtil.
|
131
|
+
tbodyNode = VDomUtil.find(me.view.vdom, {cls: 'neo-grid-view'}).vdom;
|
132
132
|
columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, newIndex);
|
133
133
|
|
134
134
|
me.select(columnNodeIds);
|
@@ -143,33 +143,22 @@ class ColumnModel extends Model {
|
|
143
143
|
|
144
144
|
let {id, view} = this;
|
145
145
|
|
146
|
-
view.keys?._keys.push(
|
147
|
-
fn
|
148
|
-
key
|
149
|
-
|
150
|
-
}, {
|
151
|
-
fn : 'onKeyDownRight',
|
152
|
-
key : 'Right',
|
153
|
-
scope: id
|
154
|
-
})
|
146
|
+
view.keys?._keys.push(
|
147
|
+
{fn: 'onKeyDownLeft', key: 'Left', scope: id},
|
148
|
+
{fn: 'onKeyDownRight', key: 'Right', scope: id}
|
149
|
+
)
|
155
150
|
}
|
156
151
|
|
157
|
-
|
158
152
|
/**
|
159
153
|
*
|
160
154
|
*/
|
161
155
|
unregister() {
|
162
156
|
let {id, view} = this;
|
163
157
|
|
164
|
-
view.keys?.removeKeys([
|
165
|
-
fn
|
166
|
-
key
|
167
|
-
|
168
|
-
}, {
|
169
|
-
fn : 'onKeyDownRight',
|
170
|
-
key : 'Right',
|
171
|
-
scope: id
|
172
|
-
}]);
|
158
|
+
view.keys?.removeKeys([
|
159
|
+
{fn: 'onKeyDownLeft', key: 'Left', scope: id},
|
160
|
+
{fn: 'onKeyDownRight', key: 'Right', scope: id}
|
161
|
+
]);
|
173
162
|
|
174
163
|
super.unregister()
|
175
164
|
}
|