neo.mjs 8.14.2 → 8.14.3
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/home/FooterContainer.mjs +1 -1
- package/examples/ServiceWorker.mjs +2 -2
- package/package.json +1 -1
- package/src/DefaultConfig.mjs +2 -2
- package/src/container/Base.mjs +5 -3
- package/src/draggable/toolbar/DragZone.mjs +21 -7
- package/src/draggable/toolbar/SortZone.mjs +37 -26
- package/src/grid/Container.mjs +5 -2
- package/src/grid/header/Toolbar.mjs +18 -1
- package/src/main/DomAccess.mjs +5 -5
package/apps/ServiceWorker.mjs
CHANGED
package/package.json
CHANGED
package/src/DefaultConfig.mjs
CHANGED
@@ -262,12 +262,12 @@ const DefaultConfig = {
|
|
262
262
|
useVdomWorker: true,
|
263
263
|
/**
|
264
264
|
* buildScripts/injectPackageVersion.mjs will update this value
|
265
|
-
* @default '8.14.
|
265
|
+
* @default '8.14.3'
|
266
266
|
* @memberOf! module:Neo
|
267
267
|
* @name config.version
|
268
268
|
* @type String
|
269
269
|
*/
|
270
|
-
version: '8.14.
|
270
|
+
version: '8.14.3'
|
271
271
|
};
|
272
272
|
|
273
273
|
Object.assign(DefaultConfig, {
|
package/src/container/Base.mjs
CHANGED
@@ -272,11 +272,11 @@ class Container extends Component {
|
|
272
272
|
|
273
273
|
item.reference = ref;
|
274
274
|
result.push(item);
|
275
|
-
hasWeight ||= ('weight' in item)
|
275
|
+
hasWeight ||= ('weight' in item)
|
276
276
|
}
|
277
277
|
|
278
278
|
if (hasWeight) {
|
279
|
-
result.sort(byWeight)
|
279
|
+
result.sort(byWeight)
|
280
280
|
}
|
281
281
|
|
282
282
|
value = result
|
@@ -413,7 +413,9 @@ class Container extends Component {
|
|
413
413
|
|
414
414
|
// We need to add items into the vdom
|
415
415
|
me.updateDepth = -1;
|
416
|
-
me.update()
|
416
|
+
me.update();
|
417
|
+
|
418
|
+
me.fire('itemsCreated', {id: me.id, items})
|
417
419
|
}
|
418
420
|
|
419
421
|
/**
|
@@ -36,8 +36,13 @@ class DragZone extends BaseDragZone {
|
|
36
36
|
{'drag:start': me.onDragStart, ...opts}
|
37
37
|
]);
|
38
38
|
|
39
|
-
owner.on(
|
39
|
+
owner.on({
|
40
|
+
insert : me.onItemInsert,
|
41
|
+
itemsCreated: me.onItemsCreated,
|
42
|
+
scope : me
|
43
|
+
});
|
40
44
|
|
45
|
+
// The toolbar items can already be created
|
41
46
|
me.adjustToolbarItemCls(true)
|
42
47
|
}
|
43
48
|
|
@@ -98,16 +103,25 @@ class DragZone extends BaseDragZone {
|
|
98
103
|
}
|
99
104
|
|
100
105
|
/**
|
101
|
-
* @param {Object}
|
102
|
-
* @param {Number}
|
106
|
+
* @param {Object} data
|
107
|
+
* @param {Number} data.index
|
103
108
|
* @param {Neo.component.Base} data.item
|
104
109
|
*/
|
105
110
|
onItemInsert(data) {
|
106
|
-
let {item}
|
107
|
-
|
111
|
+
let {item} = data,
|
112
|
+
wrapperCls = item.wrapperCls || [];
|
113
|
+
|
114
|
+
NeoArray.add(wrapperCls, 'neo-draggable');
|
115
|
+
item.wrapperCls = wrapperCls
|
116
|
+
}
|
108
117
|
|
109
|
-
|
110
|
-
|
118
|
+
/**
|
119
|
+
* @param {Object} data
|
120
|
+
* @param {String} data.id
|
121
|
+
* @param {Neo.component.Base[]} data.items
|
122
|
+
*/
|
123
|
+
onItemsCreated(data) {console.log('onItemsCreated');
|
124
|
+
this.adjustToolbarItemCls(true)
|
111
125
|
}
|
112
126
|
}
|
113
127
|
|
@@ -61,6 +61,14 @@ class SortZone extends DragZone {
|
|
61
61
|
* @protected
|
62
62
|
*/
|
63
63
|
reversedLayoutDirection: false,
|
64
|
+
/**
|
65
|
+
* @member {Number} scrollLeft=0
|
66
|
+
*/
|
67
|
+
scrollLeft: 0,
|
68
|
+
/**
|
69
|
+
* @member {Number} scrollTop=0
|
70
|
+
*/
|
71
|
+
scrollTop: 0,
|
64
72
|
/**
|
65
73
|
* Internal flag: onDragStart() will set the value to horizontal or vertical, depending on the current layout.
|
66
74
|
* @member {String} sortDirection='horizontal'
|
@@ -142,35 +150,38 @@ class SortZone extends DragZone {
|
|
142
150
|
* @param {Object} data
|
143
151
|
*/
|
144
152
|
onDragMove(data) {
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
{itemRects} = me,
|
150
|
-
maxItems = itemRects.length - 1,
|
151
|
-
reversed = me.reversedLayoutDirection,
|
152
|
-
delta, itemWidth;
|
153
|
-
|
154
|
-
if (me.sortDirection === 'horizontal') {
|
155
|
-
delta = data.clientX - me.offsetX - itemRects[index].left;
|
156
|
-
itemWidth = 'width'
|
157
|
-
} else {
|
158
|
-
delta = data.clientY - me.offsetY - itemRects[index].top;
|
159
|
-
itemWidth = 'height'
|
160
|
-
}
|
153
|
+
// the method can trigger before we got the client rects from the main thread
|
154
|
+
if (!this.itemRects) {
|
155
|
+
return
|
156
|
+
}
|
161
157
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
158
|
+
let me = this,
|
159
|
+
moveFactor = 0.55, // we can not use 0.5, since items would jump back & forth
|
160
|
+
index = me.currentIndex,
|
161
|
+
{itemRects} = me,
|
162
|
+
maxItems = itemRects.length - 1,
|
163
|
+
reversed = me.reversedLayoutDirection,
|
164
|
+
delta, itemWidth;
|
165
|
+
|
166
|
+
if (me.sortDirection === 'horizontal') {
|
167
|
+
delta = data.clientX + me.scrollLeft - me.offsetX - itemRects[index].left;
|
168
|
+
itemWidth = 'width'
|
169
|
+
} else {
|
170
|
+
delta = data.clientY + me.scrollTop - me.offsetY - itemRects[index].top;
|
171
|
+
itemWidth = 'height'
|
172
|
+
}
|
173
|
+
|
174
|
+
if (index > 0 && (!reversed && delta < 0 || reversed && delta > 0)) {
|
175
|
+
if (Math.abs(delta) > itemRects[index - 1][itemWidth] * moveFactor) {
|
176
|
+
me.currentIndex--;
|
177
|
+
me.switchItems(index, me.currentIndex)
|
167
178
|
}
|
179
|
+
}
|
168
180
|
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
}
|
181
|
+
else if (index < maxItems && (!reversed && delta > 0 || reversed && delta < 0)) {
|
182
|
+
if (Math.abs(delta) > itemRects[index + 1][itemWidth] * moveFactor) {
|
183
|
+
me.currentIndex++;
|
184
|
+
me.switchItems(index, me.currentIndex)
|
174
185
|
}
|
175
186
|
}
|
176
187
|
}
|
package/src/grid/Container.mjs
CHANGED
@@ -506,8 +506,11 @@ class GridContainer extends BaseContainer {
|
|
506
506
|
/**
|
507
507
|
* @param {Object} data
|
508
508
|
*/
|
509
|
-
onScroll(
|
510
|
-
|
509
|
+
onScroll({scrollLeft}) {
|
510
|
+
let me = this;
|
511
|
+
|
512
|
+
me.headerToolbar.scrollLeft = scrollLeft;
|
513
|
+
me.view.scrollPosition = {x: scrollLeft, y: me.view.scrollPosition.y}
|
511
514
|
}
|
512
515
|
|
513
516
|
/**
|
@@ -34,6 +34,10 @@ class Toolbar extends BaseToolbar {
|
|
34
34
|
* @member {String} role='row'
|
35
35
|
*/
|
36
36
|
role: 'row',
|
37
|
+
/**
|
38
|
+
* @member {Number} scrollLeft_=0
|
39
|
+
*/
|
40
|
+
scrollLeft_: 0,
|
37
41
|
/**
|
38
42
|
* @member {Boolean} showHeaderFilters_=false
|
39
43
|
*/
|
@@ -62,13 +66,14 @@ class Toolbar extends BaseToolbar {
|
|
62
66
|
|
63
67
|
if (value && !me.sortZone) {
|
64
68
|
import('../../draggable/grid/header/toolbar/SortZone.mjs').then(module => {
|
65
|
-
let {appName, id, windowId} = me;
|
69
|
+
let {appName, id, scrollLeft, windowId} = me;
|
66
70
|
|
67
71
|
me.sortZone = Neo.create({
|
68
72
|
module : module.default,
|
69
73
|
appName,
|
70
74
|
boundaryContainerId: id,
|
71
75
|
owner : me,
|
76
|
+
scrollLeft,
|
72
77
|
windowId,
|
73
78
|
...me.sortZoneConfig
|
74
79
|
})
|
@@ -108,6 +113,18 @@ class Toolbar extends BaseToolbar {
|
|
108
113
|
}
|
109
114
|
}
|
110
115
|
|
116
|
+
/**
|
117
|
+
* Triggered after the scrollLeft config got changed
|
118
|
+
* @param {Number} value
|
119
|
+
* @param {Number} oldValue
|
120
|
+
* @protected
|
121
|
+
*/
|
122
|
+
afterSetScrollLeft(value, oldValue) {
|
123
|
+
if (oldValue !== undefined && this.sortZone) {
|
124
|
+
this.sortZone.scrollLeft = value
|
125
|
+
}
|
126
|
+
}
|
127
|
+
|
111
128
|
/**
|
112
129
|
* Triggered after the sortable config got changed
|
113
130
|
* @param {Boolean} value
|
package/src/main/DomAccess.mjs
CHANGED
@@ -932,19 +932,19 @@ class DomAccess extends Base {
|
|
932
932
|
|
933
933
|
/**
|
934
934
|
* @param {Object} data
|
935
|
-
* @param {String} data.direction left, top
|
935
|
+
* @param {String} data.direction='top' left, top
|
936
936
|
* @param {String} data.id
|
937
937
|
* @param {Number} data.value
|
938
938
|
* @returns {Object} obj.id => the passed id
|
939
939
|
*/
|
940
|
-
scrollTo(
|
941
|
-
let node = this.getElement(
|
940
|
+
scrollTo({direction='top', id, value}) {
|
941
|
+
let node = this.getElement(id);
|
942
942
|
|
943
943
|
if (node) {
|
944
|
-
node[`scroll${Neo.capitalize(
|
944
|
+
node[`scroll${Neo.capitalize(direction)}`] = value
|
945
945
|
}
|
946
946
|
|
947
|
-
return {id
|
947
|
+
return {id}
|
948
948
|
}
|
949
949
|
|
950
950
|
/**
|