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
@@ -110,43 +110,6 @@ class Button extends BaseButton {
|
|
110
110
|
]}
|
111
111
|
}
|
112
112
|
|
113
|
-
/**
|
114
|
-
* @param {Object} config
|
115
|
-
*/
|
116
|
-
construct(config) {
|
117
|
-
super.construct(config);
|
118
|
-
|
119
|
-
let me = this;
|
120
|
-
|
121
|
-
me.draggable && me.addDomListeners({
|
122
|
-
dragend : me.onDragEnd,
|
123
|
-
dragenter: me.onDragEnter,
|
124
|
-
dragleave: me.onDragLeave,
|
125
|
-
dragover : me.onDragOver,
|
126
|
-
dragstart: me.onDragStart,
|
127
|
-
drop : me.onDrop,
|
128
|
-
scope : me
|
129
|
-
})
|
130
|
-
}
|
131
|
-
|
132
|
-
/**
|
133
|
-
* Triggered after the draggable config got changed
|
134
|
-
* @param {Boolean} value
|
135
|
-
* @param {Boolean} oldValue
|
136
|
-
* @protected
|
137
|
-
*/
|
138
|
-
afterSetDraggable(value, oldValue) {
|
139
|
-
let me = this;
|
140
|
-
|
141
|
-
if (value === true) {
|
142
|
-
me.getVdomRoot().draggable = true
|
143
|
-
} else {
|
144
|
-
delete me.getVdomRoot().draggable
|
145
|
-
}
|
146
|
-
|
147
|
-
me.update()
|
148
|
-
}
|
149
|
-
|
150
113
|
/**
|
151
114
|
* Triggered after the isSorted config got changed
|
152
115
|
* @param {String|null} value
|
@@ -292,125 +255,6 @@ class Button extends BaseButton {
|
|
292
255
|
return data.value
|
293
256
|
}
|
294
257
|
|
295
|
-
/**
|
296
|
-
*
|
297
|
-
*/
|
298
|
-
destroy(...args) {
|
299
|
-
this.filterField?.destroy();
|
300
|
-
|
301
|
-
super.destroy(...args)
|
302
|
-
}
|
303
|
-
|
304
|
-
/**
|
305
|
-
* Specify a different vdom root if needed to apply the top level style attributes on a different level.
|
306
|
-
* Make sure to use getVnodeRoot() as well, to keep the vdom & vnode trees in sync.
|
307
|
-
* @returns {Object} The new vdom root
|
308
|
-
*/
|
309
|
-
getVdomRoot() {
|
310
|
-
return this.vdom.cn[0]
|
311
|
-
}
|
312
|
-
|
313
|
-
/**
|
314
|
-
* Specify a different vnode root if needed to apply the top level style attributes on a different level.
|
315
|
-
* Make sure to use getVdomRoot() as well, to keep the vdom & vnode trees in sync.
|
316
|
-
* @returns {Object} The new vnode root
|
317
|
-
*/
|
318
|
-
getVnodeRoot() {
|
319
|
-
return this.vnode.childNodes[0]
|
320
|
-
}
|
321
|
-
|
322
|
-
/**
|
323
|
-
* @protected
|
324
|
-
*/
|
325
|
-
onButtonClick() {
|
326
|
-
let me = this,
|
327
|
-
map;
|
328
|
-
|
329
|
-
if (me.defaultSortDirection === 'DESC') {
|
330
|
-
map = {
|
331
|
-
ASC : null,
|
332
|
-
DESC: 'ASC',
|
333
|
-
null: 'DESC'
|
334
|
-
}
|
335
|
-
} else {
|
336
|
-
map = {
|
337
|
-
ASC : 'DESC',
|
338
|
-
DESC: null,
|
339
|
-
null: 'ASC'
|
340
|
-
}
|
341
|
-
}
|
342
|
-
|
343
|
-
me.isSorted = map[me.isSorted + '']
|
344
|
-
}
|
345
|
-
|
346
|
-
/**
|
347
|
-
* @protected
|
348
|
-
*/
|
349
|
-
onDragEnd() {
|
350
|
-
let me = this,
|
351
|
-
{style} = me;
|
352
|
-
|
353
|
-
delete style.opacity;
|
354
|
-
me.style = style
|
355
|
-
}
|
356
|
-
|
357
|
-
/**
|
358
|
-
* @protected
|
359
|
-
*/
|
360
|
-
onDragEnter() {
|
361
|
-
let me = this,
|
362
|
-
{cls} = me;
|
363
|
-
|
364
|
-
NeoArray.add(cls, 'neo-drag-over');
|
365
|
-
me.cls = cls
|
366
|
-
}
|
367
|
-
|
368
|
-
/**
|
369
|
-
* @protected
|
370
|
-
*/
|
371
|
-
onDragLeave() {
|
372
|
-
let me = this,
|
373
|
-
{cls} = me;
|
374
|
-
|
375
|
-
NeoArray.remove(cls, 'neo-drag-over');
|
376
|
-
me.cls = cls
|
377
|
-
}
|
378
|
-
|
379
|
-
/**
|
380
|
-
* @param {Object} event
|
381
|
-
*/
|
382
|
-
onDragOver(event) {
|
383
|
-
//console.log('onDragOver', event);
|
384
|
-
}
|
385
|
-
|
386
|
-
/**
|
387
|
-
* @protected
|
388
|
-
*/
|
389
|
-
onDragStart() {
|
390
|
-
let me = this,
|
391
|
-
{style} = me;
|
392
|
-
|
393
|
-
style.opacity = 0.4;
|
394
|
-
me.style = style
|
395
|
-
}
|
396
|
-
|
397
|
-
/**
|
398
|
-
* @param {Object} data
|
399
|
-
*/
|
400
|
-
onDrop(data) {
|
401
|
-
let me = this,
|
402
|
-
headerToolbar = me.parent,
|
403
|
-
{style} = me,
|
404
|
-
tableContainer = headerToolbar.parent;
|
405
|
-
|
406
|
-
me.onDragLeave();
|
407
|
-
headerToolbar.switchItems(me.id, data.srcId);
|
408
|
-
tableContainer.createViewData(tableContainer.store.data);
|
409
|
-
|
410
|
-
style.opacity = 1;
|
411
|
-
me.style = style
|
412
|
-
}
|
413
|
-
|
414
258
|
/**
|
415
259
|
* @param {Object} data
|
416
260
|
*/
|
@@ -460,6 +304,10 @@ class Button extends BaseButton {
|
|
460
304
|
value = new Date(value)
|
461
305
|
}
|
462
306
|
|
307
|
+
if (Neo.isRecord(value)) {
|
308
|
+
value = value[me.filterField.displayField]
|
309
|
+
}
|
310
|
+
|
463
311
|
if (!filter) {
|
464
312
|
filters = store.filters;
|
465
313
|
|
@@ -477,6 +325,57 @@ class Button extends BaseButton {
|
|
477
325
|
}
|
478
326
|
}
|
479
327
|
|
328
|
+
/**
|
329
|
+
*
|
330
|
+
*/
|
331
|
+
destroy(...args) {
|
332
|
+
this.filterField?.destroy();
|
333
|
+
|
334
|
+
super.destroy(...args)
|
335
|
+
}
|
336
|
+
|
337
|
+
/**
|
338
|
+
* Specify a different vdom root if needed to apply the top level style attributes on a different level.
|
339
|
+
* Make sure to use getVnodeRoot() as well, to keep the vdom & vnode trees in sync.
|
340
|
+
* @returns {Object} The new vdom root
|
341
|
+
*/
|
342
|
+
getVdomRoot() {
|
343
|
+
return this.vdom.cn[0]
|
344
|
+
}
|
345
|
+
|
346
|
+
/**
|
347
|
+
* Specify a different vnode root if needed to apply the top level style attributes on a different level.
|
348
|
+
* Make sure to use getVdomRoot() as well, to keep the vdom & vnode trees in sync.
|
349
|
+
* @returns {Object} The new vnode root
|
350
|
+
*/
|
351
|
+
getVnodeRoot() {
|
352
|
+
return this.vnode.childNodes[0]
|
353
|
+
}
|
354
|
+
|
355
|
+
/**
|
356
|
+
* @protected
|
357
|
+
*/
|
358
|
+
onButtonClick() {
|
359
|
+
let me = this,
|
360
|
+
map;
|
361
|
+
|
362
|
+
if (me.defaultSortDirection === 'DESC') {
|
363
|
+
map = {
|
364
|
+
ASC : null,
|
365
|
+
DESC: 'ASC',
|
366
|
+
null: 'DESC'
|
367
|
+
}
|
368
|
+
} else {
|
369
|
+
map = {
|
370
|
+
ASC : 'DESC',
|
371
|
+
DESC: null,
|
372
|
+
null: 'ASC'
|
373
|
+
}
|
374
|
+
}
|
375
|
+
|
376
|
+
me.isSorted = map[me.isSorted + '']
|
377
|
+
}
|
378
|
+
|
480
379
|
/**
|
481
380
|
* @protected
|
482
381
|
*/
|
@@ -17,9 +17,13 @@ class Toolbar extends BaseToolbar {
|
|
17
17
|
*/
|
18
18
|
ntype: 'table-header-toolbar',
|
19
19
|
/**
|
20
|
-
* @member {String[]} baseCls=['table-header-toolbar']
|
20
|
+
* @member {String[]} baseCls=['neo-table-header-toolbar']
|
21
21
|
*/
|
22
|
-
baseCls: ['table-header-toolbar'],
|
22
|
+
baseCls: ['neo-table-header-toolbar'],
|
23
|
+
/**
|
24
|
+
* @member {Boolean} draggable_=true
|
25
|
+
*/
|
26
|
+
draggable_: true,
|
23
27
|
/**
|
24
28
|
* @member {String} layout='base'
|
25
29
|
*/
|
@@ -35,6 +39,8 @@ class Toolbar extends BaseToolbar {
|
|
35
39
|
*/
|
36
40
|
showHeaderFilters_: false,
|
37
41
|
/**
|
42
|
+
* Convenience shortcut to pass sortable to all toolbar items.
|
43
|
+
* If set to true, header clicks will sort the matching column (ASC, DESC, null)
|
38
44
|
* @member {Boolean} sortable=true
|
39
45
|
*/
|
40
46
|
sortable: true,
|
@@ -47,6 +53,31 @@ class Toolbar extends BaseToolbar {
|
|
47
53
|
]}
|
48
54
|
}
|
49
55
|
|
56
|
+
/**
|
57
|
+
* Triggered after the draggable config got changed
|
58
|
+
* @param {Boolean} value
|
59
|
+
* @param {Boolean} oldValue
|
60
|
+
* @protected
|
61
|
+
*/
|
62
|
+
afterSetDraggable(value, oldValue) {
|
63
|
+
let me = this;
|
64
|
+
|
65
|
+
if (value && !me.sortZone) {
|
66
|
+
import('../../draggable/table/header/toolbar/SortZone.mjs').then(module => {
|
67
|
+
let {appName, id, windowId} = me;
|
68
|
+
|
69
|
+
me.sortZone = Neo.create({
|
70
|
+
module : module.default,
|
71
|
+
appName,
|
72
|
+
boundaryContainerId: id,
|
73
|
+
owner : me,
|
74
|
+
windowId,
|
75
|
+
...me.sortZoneConfig
|
76
|
+
})
|
77
|
+
})
|
78
|
+
}
|
79
|
+
}
|
80
|
+
|
50
81
|
/**
|
51
82
|
* Triggered after the showHeaderFilters config got changed
|
52
83
|
* @param {Boolean} value
|
@@ -84,6 +115,7 @@ class Toolbar extends BaseToolbar {
|
|
84
115
|
})
|
85
116
|
});
|
86
117
|
|
118
|
+
me.updateDepth = 2;
|
87
119
|
me.update()
|
88
120
|
}
|
89
121
|
}
|
package/src/util/Rectangle.mjs
CHANGED
@@ -309,7 +309,7 @@ export default class Rectangle extends DOMRect {
|
|
309
309
|
|
310
310
|
/**
|
311
311
|
* Returns a clone of this Rectangle expanded according to the edges array.
|
312
|
-
* @param {Number
|
312
|
+
* @param {Number[]} edges
|
313
313
|
* @returns {Rectangle}
|
314
314
|
*/
|
315
315
|
expand(edges) {
|