neo.mjs 8.10.1 → 8.12.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/ConfigurationViewport.mjs +1 -7
- package/examples/ServiceWorker.mjs +2 -2
- package/examples/table/container/MainContainer.mjs +1 -2
- package/examples/tableFiltering/MainContainer.mjs +1 -1
- package/examples/tableFiltering/MainStore.mjs +10 -10
- package/package.json +2 -2
- package/resources/scss/src/draggable/DragProxyComponent.scss +9 -0
- package/resources/scss/src/draggable/grid/header/toolbar/SortZone.scss +16 -0
- package/resources/scss/src/draggable/table/header/toolbar/SortZone.scss +32 -0
- package/resources/scss/src/grid/View.scss +0 -18
- package/resources/scss/src/grid/header/Toolbar.scss +0 -1
- package/resources/scss/src/table/View.scss +4 -18
- package/resources/scss/src/table/header/Button.scss +0 -4
- package/resources/scss/theme-dark/draggable/grid/header/toolbar/SortZone.scss +3 -0
- package/resources/scss/theme-dark/draggable/table/header/toolbar/SortZone.scss +3 -0
- package/resources/scss/theme-light/draggable/grid/header/toolbar/SortZone.scss +3 -0
- package/resources/scss/theme-light/draggable/table/header/toolbar/SortZone.scss +3 -0
- package/resources/scss/theme-neo-light/draggable/grid/header/toolbar/SortZone.scss +3 -0
- package/resources/scss/theme-neo-light/draggable/table/header/toolbar/SortZone.scss +3 -0
- package/src/DefaultConfig.mjs +2 -2
- package/src/Main.mjs +9 -3
- package/src/component/Base.mjs +2 -6
- package/src/draggable/grid/header/toolbar/SortZone.mjs +74 -0
- package/src/draggable/table/header/toolbar/SortZone.mjs +70 -0
- package/src/draggable/toolbar/SortZone.mjs +23 -14
- package/src/form/field/ComboBox.mjs +1 -5
- package/src/grid/header/Button.mjs +0 -109
- package/src/grid/header/Toolbar.mjs +32 -0
- package/src/main/DomAccess.mjs +14 -17
- package/src/main/DomEvents.mjs +10 -50
- package/src/main/addon/DragDrop.mjs +9 -20
- package/src/selection/grid/BaseModel.mjs +1 -1
- package/src/selection/table/BaseModel.mjs +8 -0
- package/src/selection/table/CellColumnModel.mjs +28 -26
- package/src/selection/table/CellColumnRowModel.mjs +25 -23
- package/src/selection/table/CellModel.mjs +49 -42
- package/src/selection/table/CellRowModel.mjs +18 -20
- package/src/selection/table/ColumnModel.mjs +26 -60
- package/src/selection/table/RowModel.mjs +16 -48
- package/src/table/Container.mjs +6 -6
- package/src/table/View.mjs +26 -20
- package/src/table/header/Button.mjs +55 -156
- package/src/table/header/Toolbar.mjs +34 -2
- package/src/util/Rectangle.mjs +1 -1
@@ -45,10 +45,6 @@ class Button extends BaseButton {
|
|
45
45
|
* @member {String} defaultSortDirection='ASC'
|
46
46
|
*/
|
47
47
|
defaultSortDirection: 'ASC',
|
48
|
-
/**
|
49
|
-
* @member {Boolean} draggable_=true
|
50
|
-
*/
|
51
|
-
draggable_: true,
|
52
48
|
/**
|
53
49
|
* @member {Object} editorConfig=null
|
54
50
|
*/
|
@@ -100,43 +96,6 @@ class Button extends BaseButton {
|
|
100
96
|
sortable_: true
|
101
97
|
}
|
102
98
|
|
103
|
-
/**
|
104
|
-
* @param {Object} config
|
105
|
-
*/
|
106
|
-
construct(config) {
|
107
|
-
super.construct(config);
|
108
|
-
|
109
|
-
let me = this;
|
110
|
-
|
111
|
-
me.draggable && me.addDomListeners({
|
112
|
-
dragend : me.onDragEnd,
|
113
|
-
dragenter: me.onDragEnter,
|
114
|
-
dragleave: me.onDragLeave,
|
115
|
-
dragover : me.onDragOver,
|
116
|
-
dragstart: me.onDragStart,
|
117
|
-
drop : me.onDrop,
|
118
|
-
scope : me
|
119
|
-
})
|
120
|
-
}
|
121
|
-
|
122
|
-
/**
|
123
|
-
* Triggered after the draggable config got changed
|
124
|
-
* @param {Boolean} value
|
125
|
-
* @param {Boolean} oldValue
|
126
|
-
* @protected
|
127
|
-
*/
|
128
|
-
afterSetDraggable(value, oldValue) {
|
129
|
-
let me = this;
|
130
|
-
|
131
|
-
if (value === true) {
|
132
|
-
me.getVdomRoot().draggable = true
|
133
|
-
} else {
|
134
|
-
delete me.getVdomRoot().draggable
|
135
|
-
}
|
136
|
-
|
137
|
-
me.update()
|
138
|
-
}
|
139
|
-
|
140
99
|
/**
|
141
100
|
* Triggered after the isSorted config got changed
|
142
101
|
* @param {String|null} value
|
@@ -315,74 +274,6 @@ class Button extends BaseButton {
|
|
315
274
|
me.isSorted = map[me.isSorted + '']
|
316
275
|
}
|
317
276
|
|
318
|
-
/**
|
319
|
-
* @protected
|
320
|
-
*/
|
321
|
-
onDragEnd() {
|
322
|
-
let me = this,
|
323
|
-
{style} = me;
|
324
|
-
|
325
|
-
delete style.opacity;
|
326
|
-
me.style = style
|
327
|
-
}
|
328
|
-
|
329
|
-
/**
|
330
|
-
* @protected
|
331
|
-
*/
|
332
|
-
onDragEnter() {
|
333
|
-
let me = this,
|
334
|
-
{cls} = me;
|
335
|
-
|
336
|
-
NeoArray.add(cls, 'neo-drag-over');
|
337
|
-
me.cls = cls
|
338
|
-
}
|
339
|
-
|
340
|
-
/**
|
341
|
-
* @protected
|
342
|
-
*/
|
343
|
-
onDragLeave() {
|
344
|
-
let me = this,
|
345
|
-
{cls} = me;
|
346
|
-
|
347
|
-
NeoArray.remove(cls, 'neo-drag-over');
|
348
|
-
me.cls = cls
|
349
|
-
}
|
350
|
-
|
351
|
-
/**
|
352
|
-
* @param {Object} event
|
353
|
-
*/
|
354
|
-
onDragOver(event) {
|
355
|
-
//console.log('onDragOver', event);
|
356
|
-
}
|
357
|
-
|
358
|
-
/**
|
359
|
-
* @protected
|
360
|
-
*/
|
361
|
-
onDragStart() {
|
362
|
-
let me = this,
|
363
|
-
{style} = me;
|
364
|
-
|
365
|
-
style.opacity = 0.4;
|
366
|
-
me.style = style
|
367
|
-
}
|
368
|
-
|
369
|
-
/**
|
370
|
-
* @param {Object} data
|
371
|
-
*/
|
372
|
-
onDrop(data) {
|
373
|
-
let me = this,
|
374
|
-
headerToolbar = me.parent,
|
375
|
-
{style} = me,
|
376
|
-
gridContainer = headerToolbar.parent;
|
377
|
-
|
378
|
-
me.onDragLeave();
|
379
|
-
headerToolbar.switchItems(me.id, data.srcId);
|
380
|
-
gridContainer.createViewData(gridContainer.store.data);
|
381
|
-
|
382
|
-
style.opacity = 1;
|
383
|
-
me.style = style
|
384
|
-
}
|
385
|
-
|
386
277
|
/**
|
387
278
|
* @param {Object} data
|
388
279
|
*/
|
@@ -21,6 +21,10 @@ class Toolbar extends BaseToolbar {
|
|
21
21
|
* @member {String[]} baseCls=['neo-grid-header-toolbar','neo-toolbar']
|
22
22
|
*/
|
23
23
|
baseCls: ['neo-grid-header-toolbar', 'neo-toolbar'],
|
24
|
+
/**
|
25
|
+
* @member {Boolean} draggable_=true
|
26
|
+
*/
|
27
|
+
draggable_: true,
|
24
28
|
/**
|
25
29
|
* @member {Neo.grid.Container|null} gridContainer=null
|
26
30
|
*/
|
@@ -40,6 +44,8 @@ class Toolbar extends BaseToolbar {
|
|
40
44
|
*/
|
41
45
|
showHeaderFilters_: false,
|
42
46
|
/**
|
47
|
+
* Convenience shortcut to pass sortable to all toolbar items.
|
48
|
+
* If set to true, header clicks will sort the matching column (ASC, DESC, null)
|
43
49
|
* @member {Boolean} sortable=true
|
44
50
|
*/
|
45
51
|
sortable: true,
|
@@ -50,6 +56,31 @@ class Toolbar extends BaseToolbar {
|
|
50
56
|
{'aria-rowindex': 1, cn: [{cn: []}]}
|
51
57
|
}
|
52
58
|
|
59
|
+
/**
|
60
|
+
* Triggered after the draggable config got changed
|
61
|
+
* @param {Boolean} value
|
62
|
+
* @param {Boolean} oldValue
|
63
|
+
* @protected
|
64
|
+
*/
|
65
|
+
afterSetDraggable(value, oldValue) {
|
66
|
+
let me = this;
|
67
|
+
|
68
|
+
if (value && !me.sortZone) {
|
69
|
+
import('../../draggable/grid/header/toolbar/SortZone.mjs').then(module => {
|
70
|
+
let {appName, id, windowId} = me;
|
71
|
+
|
72
|
+
me.sortZone = Neo.create({
|
73
|
+
module : module.default,
|
74
|
+
appName,
|
75
|
+
boundaryContainerId: id,
|
76
|
+
owner : me,
|
77
|
+
windowId,
|
78
|
+
...me.sortZoneConfig
|
79
|
+
})
|
80
|
+
})
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
53
84
|
/**
|
54
85
|
* Triggered after the mounted config got changed
|
55
86
|
* @param {Boolean} value
|
@@ -98,6 +129,7 @@ class Toolbar extends BaseToolbar {
|
|
98
129
|
})
|
99
130
|
});
|
100
131
|
|
132
|
+
me.updateDepth = 2;
|
101
133
|
me.update()
|
102
134
|
}
|
103
135
|
}
|
package/src/main/DomAccess.mjs
CHANGED
@@ -420,36 +420,33 @@ class DomAccess extends Base {
|
|
420
420
|
|
421
421
|
/**
|
422
422
|
* Returns the attributes for a given dom node id
|
423
|
-
* @param {Object}
|
424
|
-
* @param {
|
425
|
-
* @param {
|
423
|
+
* @param {Object} data
|
424
|
+
* @param {String|String[]} data.attributes either an attribute or an array of attributes
|
425
|
+
* @param {String|String[]} data.id either an id or an array of ids
|
426
426
|
* @returns {Array|Object} In case id is an array, an array of attribute objects is returned, otherwise an object
|
427
427
|
*/
|
428
|
-
getAttributes(
|
428
|
+
getAttributes({attributes, id}) {
|
429
429
|
let returnData;
|
430
430
|
|
431
|
-
if (Array.isArray(
|
431
|
+
if (Array.isArray(id)) {
|
432
432
|
returnData = [];
|
433
433
|
|
434
|
-
|
435
|
-
returnData.push(this.getAttributes({
|
436
|
-
attributes: data.attributes,
|
437
|
-
id : id
|
438
|
-
}))
|
434
|
+
id.forEach(id => {
|
435
|
+
returnData.push(this.getAttributes({attributes, id}))
|
439
436
|
})
|
440
437
|
} else {
|
441
|
-
let node = this.getElementOrBody(
|
438
|
+
let node = this.getElementOrBody(id);
|
442
439
|
|
443
440
|
returnData = {};
|
444
441
|
|
445
442
|
if (node) {
|
446
|
-
if (!Array.isArray(
|
447
|
-
|
448
|
-
|
449
|
-
data.attributes.forEach(attribute => {
|
450
|
-
returnData[attribute] = node[attribute]
|
451
|
-
})
|
443
|
+
if (!Array.isArray(attributes)) {
|
444
|
+
attributes = [attributes]
|
452
445
|
}
|
446
|
+
|
447
|
+
attributes.forEach(attribute => {
|
448
|
+
returnData[attribute] = node[attribute]
|
449
|
+
})
|
453
450
|
}
|
454
451
|
}
|
455
452
|
|
package/src/main/DomEvents.mjs
CHANGED
@@ -194,7 +194,7 @@ class DomEvents extends Base {
|
|
194
194
|
|
195
195
|
/**
|
196
196
|
* Local domEvent listener
|
197
|
-
* @param {
|
197
|
+
* @param {Event} event
|
198
198
|
*/
|
199
199
|
domEventListener(event) {
|
200
200
|
let me = this,
|
@@ -211,40 +211,7 @@ class DomEvents extends Base {
|
|
211
211
|
}
|
212
212
|
};
|
213
213
|
|
214
|
-
// console.log('domEventListener', event.type, target.id, target.value, event);
|
215
|
-
|
216
214
|
switch (event.type) {
|
217
|
-
case 'dragend':
|
218
|
-
me.dragElementId = null;
|
219
|
-
break
|
220
|
-
case 'dragenter':
|
221
|
-
if (me.dragElementId === target.id) {
|
222
|
-
return // ignore target and source to be the same
|
223
|
-
}
|
224
|
-
break
|
225
|
-
case 'dragleave':
|
226
|
-
if (me.dragElementId === target.id) {
|
227
|
-
return // ignore target and source to be the same
|
228
|
-
}
|
229
|
-
break
|
230
|
-
case 'dragover':
|
231
|
-
me.onDragOver(event);
|
232
|
-
event.preventDefault();
|
233
|
-
break
|
234
|
-
case 'dragstart':
|
235
|
-
me.dragElementId = target.id;
|
236
|
-
break
|
237
|
-
case 'drop':
|
238
|
-
if (!me.dragElementId || me.dragElementId === target.id) {
|
239
|
-
return // drop fires twice by default & drop should not trigger on the drag element
|
240
|
-
}
|
241
|
-
if (event.stopPropagation) {
|
242
|
-
event.stopPropagation() // stops the browser from redirecting.
|
243
|
-
}
|
244
|
-
event.preventDefault();
|
245
|
-
config.data.srcId = me.dragElementId;
|
246
|
-
me.dragElementId = null;
|
247
|
-
break
|
248
215
|
case 'mousemove':
|
249
216
|
Object.assign(config.data, me.getMouseEventData(event));
|
250
217
|
break
|
@@ -427,10 +394,10 @@ class DomEvents extends Base {
|
|
427
394
|
* @param {Object} event
|
428
395
|
*/
|
429
396
|
onBeforeUnload(event) {
|
430
|
-
let
|
397
|
+
let {Manager} = Neo.worker;
|
431
398
|
|
432
|
-
|
433
|
-
|
399
|
+
Manager.appNames.forEach(appName => {
|
400
|
+
Manager.broadcast({action: 'disconnect', appName, windowId: Manager.windowId})
|
434
401
|
})
|
435
402
|
}
|
436
403
|
|
@@ -498,13 +465,6 @@ class DomEvents extends Base {
|
|
498
465
|
me.testPathInclusion(event, preventClickTargets) && event.preventDefault()
|
499
466
|
}
|
500
467
|
|
501
|
-
/**
|
502
|
-
* @param {Object} event
|
503
|
-
*/
|
504
|
-
onDragOver(event) {
|
505
|
-
event.dataTransfer.dropEffect = 'move'
|
506
|
-
}
|
507
|
-
|
508
468
|
/**
|
509
469
|
* @param {FocusEvent} event
|
510
470
|
*/
|
@@ -616,13 +576,11 @@ class DomEvents extends Base {
|
|
616
576
|
* @param {Event} event
|
617
577
|
*/
|
618
578
|
onOrientationChange(event) {
|
619
|
-
|
620
|
-
{orientation} = screen,
|
579
|
+
let {orientation} = screen,
|
621
580
|
{angle, type} = orientation,
|
622
|
-
layout = angle === 0 || angle === 180 ? 'portrait' : 'landscape'
|
623
|
-
{Manager} = Neo.worker;
|
581
|
+
layout = angle === 0 || angle === 180 ? 'portrait' : 'landscape';
|
624
582
|
|
625
|
-
Manager.sendMessage('app', {
|
583
|
+
Neo.worker.Manager.sendMessage('app', {
|
626
584
|
action: 'orientationChange',
|
627
585
|
data : {angle, layout, type}
|
628
586
|
})
|
@@ -633,7 +591,9 @@ class DomEvents extends Base {
|
|
633
591
|
*/
|
634
592
|
onScroll(event) {
|
635
593
|
let {clientHeight, clientWidth, scrollLeft, scrollTop} = event.target;
|
636
|
-
|
594
|
+
|
595
|
+
event.preventDefault();
|
596
|
+
|
637
597
|
this.sendMessageToApp({
|
638
598
|
...this.getEventData(event),
|
639
599
|
clientHeight,
|
@@ -196,17 +196,13 @@ class DragDrop extends Base {
|
|
196
196
|
}
|
197
197
|
|
198
198
|
/**
|
199
|
-
* @param {
|
199
|
+
* @param {Event} event
|
200
200
|
*/
|
201
201
|
onDragEnd(event) {
|
202
202
|
let me = this,
|
203
203
|
parsedEvent = me.getEventData(event),
|
204
204
|
isDrop = me.pathIncludesDropZone(parsedEvent.targetPath);
|
205
205
|
|
206
|
-
DomAccess.setBodyCls({
|
207
|
-
remove: ['neo-unselectable']
|
208
|
-
});
|
209
|
-
|
210
206
|
if (me.bodyCursorStyle) {
|
211
207
|
DomAccess.setStyle({
|
212
208
|
id : 'document.body',
|
@@ -254,7 +250,7 @@ class DragDrop extends Base {
|
|
254
250
|
}
|
255
251
|
|
256
252
|
/**
|
257
|
-
* @param {
|
253
|
+
* @param {Event} event
|
258
254
|
*/
|
259
255
|
onDragMove(event) {
|
260
256
|
let me = this,
|
@@ -290,17 +286,14 @@ class DragDrop extends Base {
|
|
290
286
|
}
|
291
287
|
}
|
292
288
|
|
293
|
-
if (
|
294
|
-
left =
|
289
|
+
if (me.moveHorizontal) {
|
290
|
+
me.dragProxyElement.style.left = `${left}px`
|
295
291
|
}
|
296
292
|
|
297
|
-
me.dragProxyElement.style.left = `${left}px`;
|
298
293
|
|
299
|
-
if (
|
300
|
-
top =
|
294
|
+
if (me.moveVertical) {
|
295
|
+
me.dragProxyElement.style.top = `${top}px`
|
301
296
|
}
|
302
|
-
|
303
|
-
me.dragProxyElement.style.top = `${top}px`
|
304
297
|
}
|
305
298
|
|
306
299
|
if (!me.dragProxyElement || me.alwaysFireDragMove) {
|
@@ -318,16 +311,12 @@ class DragDrop extends Base {
|
|
318
311
|
}
|
319
312
|
|
320
313
|
/**
|
321
|
-
* @param {
|
314
|
+
* @param {Event} event
|
322
315
|
*/
|
323
316
|
onDragStart(event) {
|
324
317
|
let me = this,
|
325
318
|
rect = event.target.getBoundingClientRect();
|
326
319
|
|
327
|
-
DomAccess.setBodyCls({
|
328
|
-
add: ['neo-unselectable']
|
329
|
-
});
|
330
|
-
|
331
320
|
Object.assign(me, {
|
332
321
|
dragProxyRect: rect,
|
333
322
|
offsetX : event.detail.clientX - rect.left,
|
@@ -341,7 +330,7 @@ class DragDrop extends Base {
|
|
341
330
|
}
|
342
331
|
|
343
332
|
/**
|
344
|
-
* @param {
|
333
|
+
* @param {Event} event
|
345
334
|
*/
|
346
335
|
onMouseEnter(event) {
|
347
336
|
let me = this;
|
@@ -356,7 +345,7 @@ class DragDrop extends Base {
|
|
356
345
|
}
|
357
346
|
|
358
347
|
/**
|
359
|
-
* @param {
|
348
|
+
* @param {Event} event
|
360
349
|
*/
|
361
350
|
onMouseLeave(event) {
|
362
351
|
let me = this;
|
@@ -14,6 +14,14 @@ class BaseModel extends Model {
|
|
14
14
|
*/
|
15
15
|
className: 'Neo.selection.table.BaseModel'
|
16
16
|
}
|
17
|
+
|
18
|
+
/**
|
19
|
+
* Convenience shortcut
|
20
|
+
* @member {String[]} dataFields
|
21
|
+
*/
|
22
|
+
get dataFields() {
|
23
|
+
return this.view.parent.columns.map(column => column.dataField)
|
24
|
+
}
|
17
25
|
}
|
18
26
|
|
19
27
|
export default Neo.setupClass(BaseModel);
|
@@ -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.table.CellColumnModel
|
@@ -41,7 +40,7 @@ class CellColumnModel extends CellModel {
|
|
41
40
|
deselectAllCells(silent) {
|
42
41
|
let me = this,
|
43
42
|
cellIds = [...me.selectedColumnCellIds],
|
44
|
-
{view} = me
|
43
|
+
{view} = me
|
45
44
|
|
46
45
|
cellIds.forEach(cellId => {
|
47
46
|
me.deselect(cellId, true, me.selectedColumnCellIds, me.selectedColumnCellCls)
|
@@ -54,14 +53,15 @@ class CellColumnModel extends CellModel {
|
|
54
53
|
* @param {Object} data
|
55
54
|
*/
|
56
55
|
onCellClick(data) {
|
57
|
-
let me
|
58
|
-
{
|
59
|
-
|
60
|
-
columnNodeIds, index;
|
56
|
+
let me = this,
|
57
|
+
{view} = me,
|
58
|
+
cellId = data.data.currentTarget,
|
59
|
+
columnNodeIds, dataField, index;
|
61
60
|
|
62
|
-
if (
|
63
|
-
|
64
|
-
|
61
|
+
if (cellId) {
|
62
|
+
dataField = view.getDataField(cellId);
|
63
|
+
index = view.getColumn(dataField, true);
|
64
|
+
columnNodeIds = VDomUtil.getColumnNodesIds(view.vdom, index);
|
65
65
|
|
66
66
|
me.deselectAllCells(true);
|
67
67
|
me.select(columnNodeIds, me.selectedColumnCellIds, me.selectedColumnCellCls)
|
@@ -71,29 +71,31 @@ class CellColumnModel extends CellModel {
|
|
71
71
|
}
|
72
72
|
|
73
73
|
/**
|
74
|
-
* @param {Object} data
|
75
74
|
* @param {Number} step
|
76
75
|
*/
|
77
|
-
onNavKeyColumn(
|
78
|
-
let me
|
79
|
-
|
80
|
-
currentColumn
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
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
|
88
91
|
}
|
89
92
|
|
90
|
-
|
91
|
-
columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, newIndex);
|
93
|
+
columnNodeIds = VDomUtil.getColumnNodesIds(view.vdom, index);
|
92
94
|
|
93
95
|
me.deselectAllCells(true);
|
94
96
|
me.select(columnNodeIds, me.selectedColumnCellIds, me.selectedColumnCellCls);
|
95
97
|
|
96
|
-
super.onNavKeyColumn(
|
98
|
+
super.onNavKeyColumn(step)
|
97
99
|
}
|
98
100
|
|
99
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
|
/**
|
@@ -54,14 +53,15 @@ class CellColumnRowModel extends CellRowModel {
|
|
54
53
|
* @param {Object} data
|
55
54
|
*/
|
56
55
|
onCellClick(data) {
|
57
|
-
let me
|
58
|
-
{
|
59
|
-
|
60
|
-
columnNodeIds, index;
|
56
|
+
let me = this,
|
57
|
+
{view} = me,
|
58
|
+
cellId = data.data.currentTarget,
|
59
|
+
columnNodeIds, dataField, index;
|
61
60
|
|
62
|
-
if (
|
63
|
-
|
64
|
-
|
61
|
+
if (cellId) {
|
62
|
+
dataField = view.getDataField(cellId);
|
63
|
+
index = view.getColumn(dataField, true);
|
64
|
+
columnNodeIds = VDomUtil.getColumnNodesIds(view.vdom, index);
|
65
65
|
|
66
66
|
me.deselectAllCells(true);
|
67
67
|
me.select(columnNodeIds, me.selectedColumnCellIds, me.selectedColumnCellCls)
|
@@ -71,29 +71,31 @@ class CellColumnRowModel extends CellRowModel {
|
|
71
71
|
}
|
72
72
|
|
73
73
|
/**
|
74
|
-
* @param {Object} data
|
75
74
|
* @param {Number} step
|
76
75
|
*/
|
77
|
-
onNavKeyColumn(
|
78
|
-
let me
|
79
|
-
|
80
|
-
currentColumn
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
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
|
88
91
|
}
|
89
92
|
|
90
|
-
|
91
|
-
columnNodeIds = VDomUtil.getColumnNodesIds(tbodyNode, newIndex);
|
93
|
+
columnNodeIds = VDomUtil.getColumnNodesIds(view.vdom, index);
|
92
94
|
|
93
95
|
me.deselectAllCells(true);
|
94
96
|
me.select(columnNodeIds, me.selectedColumnCellIds, me.selectedColumnCellCls);
|
95
97
|
|
96
|
-
super.onNavKeyColumn(
|
98
|
+
super.onNavKeyColumn(step)
|
97
99
|
}
|
98
100
|
|
99
101
|
/**
|