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.
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='8.14.2'
23
+ * @member {String} version='8.14.3'
24
24
  */
25
- version: '8.14.2'
25
+ version: '8.14.3'
26
26
  }
27
27
 
28
28
  /**
@@ -107,7 +107,7 @@ class FooterContainer extends Container {
107
107
  }, {
108
108
  module: Component,
109
109
  cls : ['neo-version'],
110
- html : 'v8.14.2'
110
+ html : 'v8.14.3'
111
111
  }]
112
112
  }],
113
113
  /**
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='8.14.2'
23
+ * @member {String} version='8.14.3'
24
24
  */
25
- version: '8.14.2'
25
+ version: '8.14.3'
26
26
  }
27
27
 
28
28
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo.mjs",
3
- "version": "8.14.2",
3
+ "version": "8.14.3",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -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.2'
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.2'
270
+ version: '8.14.3'
271
271
  };
272
272
 
273
273
  Object.assign(DefaultConfig, {
@@ -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('insert', me.onItemInsert, me);
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} data
102
- * @param {Number} data.index
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} = data,
107
- cls = item.cls || [];
111
+ let {item} = data,
112
+ wrapperCls = item.wrapperCls || [];
113
+
114
+ NeoArray.add(wrapperCls, 'neo-draggable');
115
+ item.wrapperCls = wrapperCls
116
+ }
108
117
 
109
- NeoArray.add(cls, 'neo-draggable');
110
- item.cls = cls
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
- if (this.itemRects) { // the method can trigger before we got the client rects from the main thread
146
- let me = this,
147
- moveFactor = 0.55, // we can not use 0.5, since items would jump back & forth
148
- index = me.currentIndex,
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
- if (index > 0 && (!reversed && delta < 0 || reversed && delta > 0)) {
163
- if (Math.abs(delta) > itemRects[index - 1][itemWidth] * moveFactor) {
164
- me.currentIndex--;
165
- me.switchItems(index, me.currentIndex)
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
- else if (index < maxItems && (!reversed && delta > 0 || reversed && delta < 0)) {
170
- if (Math.abs(delta) > itemRects[index + 1][itemWidth] * moveFactor) {
171
- me.currentIndex++;
172
- me.switchItems(index, me.currentIndex)
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
  }
@@ -506,8 +506,11 @@ class GridContainer extends BaseContainer {
506
506
  /**
507
507
  * @param {Object} data
508
508
  */
509
- onScroll(data) {
510
- this.view.scrollPosition = {x: data.scrollLeft, y: this.view.scrollPosition.y}
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
@@ -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(data) {
941
- let node = this.getElement(data.id);
940
+ scrollTo({direction='top', id, value}) {
941
+ let node = this.getElement(id);
942
942
 
943
943
  if (node) {
944
- node[`scroll${Neo.capitalize(data.direction)}`] = data.value
944
+ node[`scroll${Neo.capitalize(direction)}`] = value
945
945
  }
946
946
 
947
- return {id: data.id}
947
+ return {id}
948
948
  }
949
949
 
950
950
  /**