neo.mjs 6.20.1 → 6.22.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.
Files changed (151) hide show
  1. package/apps/ServiceWorker.mjs +2 -2
  2. package/apps/colors/view/HeaderToolbar.mjs +7 -3
  3. package/apps/covid/view/MainContainerController.mjs +6 -6
  4. package/apps/covid/view/TableContainer.mjs +5 -3
  5. package/apps/covid/view/country/Gallery.mjs +6 -4
  6. package/apps/form/view/ViewportModel.mjs +2 -2
  7. package/apps/portal/index.html +23 -1
  8. package/apps/portal/view/HeaderToolbar.mjs +2 -2
  9. package/apps/portal/view/Viewport.mjs +3 -1
  10. package/apps/portal/view/ViewportController.mjs +10 -0
  11. package/apps/portal/view/about/Container.mjs +44 -0
  12. package/apps/portal/view/about/MemberContainer.mjs +191 -0
  13. package/apps/portal/view/home/MainContainer.mjs +9 -2
  14. package/apps/portal/view/home/parts/AfterMath.mjs +12 -8
  15. package/apps/portal/view/home/parts/Colors.mjs +8 -2
  16. package/apps/portal/view/home/parts/Features.mjs +50 -83
  17. package/apps/portal/view/home/parts/Helix.mjs +8 -2
  18. package/apps/portal/view/home/parts/MainNeo.mjs +17 -5
  19. package/apps/portal/view/learn/ContentView.mjs +18 -4
  20. package/apps/realworld/api/Base.mjs +5 -5
  21. package/apps/realworld/view/MainContainerController.mjs +19 -17
  22. package/apps/realworld2/api/Base.mjs +5 -5
  23. package/apps/realworld2/view/MainContainerController.mjs +11 -11
  24. package/apps/realworld2/view/article/Gallery.mjs +6 -4
  25. package/apps/sharedcovid/view/MainContainerController.mjs +11 -12
  26. package/apps/sharedcovid/view/TableContainer.mjs +7 -5
  27. package/apps/sharedcovid/view/country/Gallery.mjs +6 -4
  28. package/apps/shareddialog/view/MainContainerController.mjs +5 -5
  29. package/buildScripts/webpack/json/myApps.template.json +1 -2
  30. package/docs/app/view/classdetails/MembersList.mjs +8 -8
  31. package/docs/app/view/classdetails/SourceViewComponent.mjs +6 -6
  32. package/docs/app/view/classdetails/TutorialComponent.mjs +9 -9
  33. package/examples/ServiceWorker.mjs +2 -2
  34. package/examples/component/coronaGallery/CountryGallery.mjs +6 -4
  35. package/examples/component/helix/Viewport.mjs +2 -2
  36. package/examples/list/circle/MainContainer.mjs +7 -7
  37. package/examples/preloadingAssets/view/MainContainerController.mjs +5 -5
  38. package/package.json +5 -5
  39. package/resources/data/deck/learnneo/pages/GuideEvents.md +2 -4
  40. package/resources/data/deck/learnneo/pages/WhyNeo-Features.md +46 -0
  41. package/resources/data/deck/learnneo/pages/WhyNeo-Intro.md +5 -6
  42. package/resources/data/deck/learnneo/pages/WhyNeo-Multi-Window.md +1 -1
  43. package/resources/data/deck/learnneo/tree.json +3 -2
  44. package/resources/fonts/GT-Planar-Regular.otf +0 -0
  45. package/resources/images/logo/neo_logo_favicon.svg +16 -0
  46. package/resources/images/team/tobiu.png +0 -0
  47. package/resources/scss/src/apps/colors/HeaderToolbar.scss +23 -1
  48. package/resources/scss/src/apps/colors/Viewport.scss +10 -0
  49. package/resources/scss/src/apps/portal/HeaderToolbar.scss +7 -7
  50. package/resources/scss/src/apps/portal/Viewport.scss +10 -0
  51. package/resources/scss/src/apps/portal/about/Container.scss +4 -0
  52. package/resources/scss/src/apps/portal/about/MemberContainer.scss +70 -0
  53. package/resources/scss/src/apps/portal/home/FooterContainer.scss +12 -0
  54. package/resources/scss/src/apps/portal/home/parts/BaseContainer.scss +16 -16
  55. package/resources/scss/src/apps/portal/home/parts/MainNeo.scss +62 -7
  56. package/resources/scss/src/apps/portal/learn/ContentView.scss +1 -0
  57. package/resources/scss/src/apps/portal/learn/PageContainer.scss +6 -0
  58. package/resources/scss/src/code/LivePreview.scss +4 -1
  59. package/resources/scss/src/layout/Cube.scss +3 -3
  60. package/resources/scss/src/plugin/Resizable.scss +12 -19
  61. package/resources/scss/theme-neo-light/dialog/Base.scss +12 -2
  62. package/src/DefaultConfig.mjs +2 -2
  63. package/src/calendar/view/MainContainer.mjs +10 -10
  64. package/src/calendar/view/SettingsContainer.mjs +10 -10
  65. package/src/calendar/view/YearComponent.mjs +2 -2
  66. package/src/calendar/view/calendars/List.mjs +2 -2
  67. package/src/calendar/view/month/Component.mjs +4 -4
  68. package/src/calendar/view/week/Component.mjs +2 -2
  69. package/src/calendar/view/week/plugin/DragDrop.mjs +4 -4
  70. package/src/code/LivePreview.mjs +92 -6
  71. package/src/component/Base.mjs +3 -3
  72. package/src/component/Circle.mjs +5 -5
  73. package/src/component/DateSelector.mjs +4 -4
  74. package/src/component/Gallery.mjs +8 -8
  75. package/src/component/Helix.mjs +15 -12
  76. package/src/component/Toast.mjs +1 -1
  77. package/src/component/wrapper/AmChart.mjs +2 -2
  78. package/src/component/wrapper/CesiumJS.mjs +2 -2
  79. package/src/component/wrapper/GoogleMaps.mjs +2 -2
  80. package/src/component/wrapper/MonacoEditor.mjs +3 -3
  81. package/src/core/Observable.mjs +2 -2
  82. package/src/data/Store.mjs +2 -2
  83. package/src/dialog/Base.mjs +44 -14
  84. package/src/draggable/DragZone.mjs +4 -4
  85. package/src/draggable/list/DragZone.mjs +4 -4
  86. package/src/draggable/tab/header/toolbar/SortZone.mjs +2 -2
  87. package/src/draggable/toolbar/DragZone.mjs +4 -4
  88. package/src/draggable/toolbar/SortZone.mjs +3 -3
  89. package/src/form/field/ComboBox.mjs +3 -2
  90. package/src/form/field/FileUpload.mjs +3 -3
  91. package/src/form/field/Text.mjs +2 -2
  92. package/src/form/field/TextArea.mjs +2 -2
  93. package/src/grid/Container.mjs +2 -2
  94. package/src/layout/Cube.mjs +1 -3
  95. package/src/list/plugin/Animate.mjs +23 -23
  96. package/src/main/DomAccess.mjs +1 -1
  97. package/src/main/DomEvents.mjs +14 -5
  98. package/src/main/addon/AmCharts.mjs +2 -2
  99. package/src/main/addon/MapboxGL.mjs +4 -4
  100. package/src/manager/DomEvent.mjs +2 -2
  101. package/src/manager/Focus.mjs +2 -2
  102. package/src/manager/Toast.mjs +6 -4
  103. package/src/manager/rpc/Message.mjs +2 -2
  104. package/src/plugin/Resizable.mjs +11 -3
  105. package/src/selection/HelixModel.mjs +3 -3
  106. package/src/tab/Strip.mjs +4 -4
  107. package/src/table/Container.mjs +4 -4
  108. package/src/util/Logger.mjs +6 -4
  109. package/src/worker/App.mjs +2 -2
  110. package/src/worker/Manager.mjs +3 -2
  111. package/apps/website/Overwrites.mjs +0 -16
  112. package/apps/website/app.mjs +0 -7
  113. package/apps/website/data/blog.json +0 -769
  114. package/apps/website/data/docs.json +0 -29
  115. package/apps/website/data/examples_devmode.json +0 -173
  116. package/apps/website/data/examples_dist_dev.json +0 -164
  117. package/apps/website/data/examples_dist_prod.json +0 -164
  118. package/apps/website/index.html +0 -11
  119. package/apps/website/model/BlogPost.mjs +0 -60
  120. package/apps/website/model/Example.mjs +0 -48
  121. package/apps/website/neo-config.json +0 -7
  122. package/apps/website/store/BlogPosts.mjs +0 -39
  123. package/apps/website/store/Examples.mjs +0 -35
  124. package/apps/website/view/HeaderContainer.mjs +0 -72
  125. package/apps/website/view/MainContainer.mjs +0 -95
  126. package/apps/website/view/MainContainerController.mjs +0 -230
  127. package/apps/website/view/blog/Container.mjs +0 -50
  128. package/apps/website/view/blog/List.mjs +0 -171
  129. package/apps/website/view/examples/List.mjs +0 -124
  130. package/apps/website/view/examples/TabContainer.mjs +0 -66
  131. package/apps/website/view/home/DeveloperIntroComponent.mjs +0 -266
  132. package/apps/website/view/home/ExecutiveIntroComponent.mjs +0 -291
  133. package/apps/website/view/home/TabContainer.mjs +0 -56
  134. package/resources/scss/src/apps/website/HeaderContainer.scss +0 -136
  135. package/resources/scss/src/apps/website/MainContainer.scss +0 -25
  136. package/resources/scss/src/apps/website/blog/Container.scss +0 -18
  137. package/resources/scss/src/apps/website/blog/List.scss +0 -183
  138. package/resources/scss/src/apps/website/examples/List.scss +0 -157
  139. package/resources/scss/src/apps/website/home/TabContainer.scss +0 -117
  140. package/resources/scss/theme-dark/apps/website/HeaderContainer.scss +0 -5
  141. package/resources/scss/theme-dark/apps/website/MainContainer.scss +0 -4
  142. package/resources/scss/theme-dark/apps/website/blog/Container.scss +0 -3
  143. package/resources/scss/theme-dark/apps/website/home/TabContainer.scss +0 -4
  144. package/resources/scss/theme-light/apps/website/HeaderContainer.scss +0 -5
  145. package/resources/scss/theme-light/apps/website/MainContainer.scss +0 -4
  146. package/resources/scss/theme-light/apps/website/blog/Container.scss +0 -3
  147. package/resources/scss/theme-light/apps/website/home/TabContainer.scss +0 -4
  148. package/resources/scss/theme-neo-light/apps/website/HeaderContainer.scss +0 -5
  149. package/resources/scss/theme-neo-light/apps/website/MainContainer.scss +0 -4
  150. package/resources/scss/theme-neo-light/apps/website/blog/Container.scss +0 -3
  151. package/resources/scss/theme-neo-light/apps/website/home/TabContainer.scss +0 -4
@@ -548,9 +548,9 @@ class Helix extends Component {
548
548
  if (!me.mounted) {
549
549
  const listenerId = me.on('mounted', () => {
550
550
  me.un('mounted', listenerId);
551
- setTimeout(() => {
552
- me.createItems(startIndex);
553
- }, 100)
551
+ me.timeout(100).then(() => {
552
+ me.createItems(startIndex)
553
+ })
554
554
  })
555
555
  } else {
556
556
  for (; i < len; i++) {
@@ -601,9 +601,9 @@ class Helix extends Component {
601
601
  me[itemsMounted] = true;
602
602
  me.fire('itemsMounted');
603
603
 
604
- setTimeout(() => {
604
+ me.timeout(200).then(() => {
605
605
  me[lockWheel] = false
606
- }, 200)
606
+ })
607
607
  })
608
608
  }
609
609
  }
@@ -642,9 +642,9 @@ class Helix extends Component {
642
642
  me.clonedItems = [];
643
643
 
644
644
  Neo.applyDeltas(me.appName, deltas).then(data => {
645
- setTimeout(() => {
645
+ me.timeout(650).then(() => {
646
646
  Neo.applyDeltas(me.appName, removeDeltas)
647
- }, 650)
647
+ })
648
648
  })
649
649
  }
650
650
  }
@@ -701,7 +701,7 @@ class Helix extends Component {
701
701
  }).then(data => {
702
702
  me.clonedItems.push(itemVdom);
703
703
 
704
- setTimeout(() => {
704
+ me.timeout(50).then(() => {
705
705
  Neo.applyDeltas(appName, {
706
706
  id : itemVdom.id,
707
707
  style: {
@@ -709,7 +709,7 @@ class Helix extends Component {
709
709
  transform: me.getCloneTransform()
710
710
  }
711
711
  })
712
- }, 50)
712
+ })
713
713
  })
714
714
  }
715
715
  }
@@ -756,7 +756,7 @@ class Helix extends Component {
756
756
  getOffsetValues(delay=100) {
757
757
  let me = this;
758
758
 
759
- setTimeout(() => {
759
+ me.timeout(delay).then(() => {
760
760
  Neo.currentWorker.promiseMessage('main', {
761
761
  action : 'readDom',
762
762
  appName : me.appName,
@@ -764,9 +764,9 @@ class Helix extends Component {
764
764
  vnodeId : me.id
765
765
  }).then(data => {
766
766
  me.offsetHeight = data.attributes.offsetHeight;
767
- me.offsetWidth = data.attributes.offsetWidth;
767
+ me.offsetWidth = data.attributes.offsetWidth
768
768
  })
769
- }, delay)
769
+ })
770
770
  }
771
771
 
772
772
  /**
@@ -876,6 +876,9 @@ class Helix extends Component {
876
876
  * @param {Object} data
877
877
  */
878
878
  onTouchMove(data) {
879
+ data.deltaX *= 1.5;
880
+ data.deltaY *= 3;
881
+
879
882
  this.onMouseWheel(data)
880
883
  }
881
884
 
@@ -124,7 +124,7 @@ class Toast extends Base {
124
124
  * Timeout in ms after which the toast is removed
125
125
  * @member {Number} timeout=3000
126
126
  */
127
- timeout = 3000
127
+ timeout = 3000 // todo: conflicting class field name => timeout()
128
128
 
129
129
  /**
130
130
  * @param {Object} config
@@ -114,9 +114,9 @@ class AmChart extends Component {
114
114
  opts.dataPath = me.dataPath;
115
115
  }
116
116
 
117
- setTimeout(() => {
117
+ me.timeout(50).then(() => {
118
118
  Neo.main.addon.AmCharts.create(opts).then(me.onChartMounted)
119
- }, 50)
119
+ })
120
120
  }
121
121
  }
122
122
 
@@ -50,11 +50,11 @@ class CesiumJS extends Component {
50
50
  if (value) {
51
51
  let opts = {appName, createOsmBuildings, id, windowId};
52
52
 
53
- setTimeout(() => {
53
+ me.timeout(50).then(() => {
54
54
  Neo.main.addon.CesiumJS.create(opts).then(() => {
55
55
  me.onComponentMounted()
56
56
  })
57
- }, 50)
57
+ })
58
58
  }
59
59
  }
60
60
 
@@ -193,12 +193,12 @@ class GoogleMaps extends Base {
193
193
  zoomControl : me.zoomControl
194
194
  };
195
195
 
196
- setTimeout(() => {
196
+ me.timeout(50).then(() => {
197
197
  Neo.main.addon.GoogleMaps.create(opts).then(() => {
198
198
  me.mapCreated = true;
199
199
  me.onComponentMounted()
200
200
  })
201
- }, 50)
201
+ })
202
202
  }
203
203
  }
204
204
 
@@ -159,14 +159,14 @@ class MonacoEditor extends Base {
159
159
  afterSetMounted(value, oldValue) {
160
160
  super.afterSetMounted(value, oldValue);
161
161
 
162
- value && setTimeout(() => {
163
- let me = this;
162
+ let me = this;
164
163
 
164
+ value && me.timeout(150).then(() => {
165
165
  Neo.main.addon.MonacoEditor.createInstance(me.getInitialOptions()).then(() => {
166
166
  // use this custom method as needed inside your class extensions
167
167
  me.onEditorMounted?.()
168
168
  })
169
- }, 150)
169
+ })
170
170
  }
171
171
 
172
172
  /**
@@ -148,9 +148,9 @@ class Observable extends Base {
148
148
  * @param {Number} delay
149
149
  */
150
150
  delayedCallback(cb, args, delay) {
151
- setTimeout(() => {
151
+ this.timeout(delay).then(() => {
152
152
  cb.fn.apply(cb.scope, args)
153
- }, delay)
153
+ })
154
154
  }
155
155
 
156
156
  /**
@@ -398,9 +398,9 @@ class Store extends Base {
398
398
  }
399
399
 
400
400
  if (me.autoLoad) {
401
- setTimeout(() => { // todo
401
+ me.timeout(100).then(() => { // todo
402
402
  me.load()
403
- }, 100)
403
+ })
404
404
  }
405
405
  }
406
406
 
@@ -142,6 +142,13 @@ class Base extends Panel {
142
142
  trapFocus_: false
143
143
  }
144
144
 
145
+ /**
146
+ * @member {Neo.component.Base|null} animateTarget=null
147
+ */
148
+ get animateTarget() {
149
+ return Neo.getComponent(this.animateTargetId)
150
+ }
151
+
145
152
  /**
146
153
  * @param {Object} config
147
154
  */
@@ -225,12 +232,21 @@ class Base extends Panel {
225
232
  * @param {Boolean} oldValue
226
233
  * @protected
227
234
  */
228
- afterSetMaximized(value, oldValue) {
229
- let me = this,
230
- {cls} = me.vdom; // todo: using wrapperCls
235
+ async afterSetMaximized(value, oldValue) {
236
+ let me = this,
237
+ firstCall = oldValue === undefined,
238
+ {cls} = me.vdom;
231
239
 
240
+ !firstCall && NeoArray.add(cls, 'animated-hiding-showing');
232
241
  NeoArray.toggle(cls, 'neo-maximized', value);
233
- me.update()
242
+ me.update();
243
+
244
+ if (!firstCall) {
245
+ await(me.timeout(250));
246
+
247
+ NeoArray.remove(cls, 'animated-hiding-showing');
248
+ me.update()
249
+ }
234
250
  }
235
251
 
236
252
  /**
@@ -293,8 +309,10 @@ class Base extends Panel {
293
309
  * @protected
294
310
  */
295
311
  afterSetTitle(value, oldValue) {
296
- if (this.headerToolbar) {
297
- this.headerToolbar.title = value
312
+ let {headerToolbar} = this;
313
+
314
+ if (headerToolbar) {
315
+ headerToolbar.title = value
298
316
  }
299
317
  }
300
318
 
@@ -312,9 +330,15 @@ class Base extends Panel {
312
330
  *
313
331
  */
314
332
  async animateHide() {
315
- let me = this,
316
- {appName, id} = me,
317
- rects = await me.getDomRect([id, me.animateTargetId]);
333
+ let me = this,
334
+ {animateTarget, id} = me,
335
+ appName, rects;
336
+
337
+ // Assuming that we want to show the dialog inside the same browser window as the animation target
338
+ me.windowId = animateTarget.windowId;
339
+ me.appName = appName = animateTarget.appName;
340
+
341
+ rects = await me.getDomRect([id, me.animateTargetId])
318
342
 
319
343
  await Neo.applyDeltas(appName, {
320
344
  id,
@@ -355,9 +379,15 @@ class Base extends Panel {
355
379
  *
356
380
  */
357
381
  async animateShow() {
358
- let me = this,
359
- {appName, id, style} = me,
360
- rect = await me.getDomRect(me.animateTargetId);
382
+ let me = this,
383
+ {animateTarget, id, style} = me,
384
+ appName, rect;
385
+
386
+ // Assuming that we want to show the dialog inside the same browser window as the animation target
387
+ me.windowId = animateTarget.windowId;
388
+ me.appName = appName = animateTarget.appName;
389
+
390
+ rect = await me.getDomRect(me.animateTargetId);
361
391
 
362
392
  // rendered outside the visible area
363
393
  await me.render(true);
@@ -599,13 +629,13 @@ class Base extends Panel {
599
629
 
600
630
  style.transitionProperty = 'none';
601
631
 
602
- setTimeout(() => {
632
+ me.timeout(50).then(() => {
603
633
  style = me.style;
604
634
 
605
635
  style.transitionProperty = initialTransitionProperty;
606
636
 
607
637
  me.style = style
608
- }, 50)
638
+ })
609
639
  }
610
640
 
611
641
  me.style = style;
@@ -235,13 +235,13 @@ class DragZone extends Base {
235
235
  let me = this,
236
236
  id = me.dragProxy.id;
237
237
 
238
- setTimeout(() => {
238
+ me.timeout(me.moveInMainThread ? 0 : 30).then(() => {
239
239
  Neo.currentWorker.promiseMessage('main', {
240
240
  action : 'updateDom',
241
241
  appName: me.appName,
242
242
  deltas : [{action: 'removeNode', id: id}]
243
243
  });
244
- }, me.moveInMainThread ? 0 : 30);
244
+ });
245
245
 
246
246
  me.dragProxy.destroy()
247
247
  }
@@ -425,9 +425,9 @@ class DragZone extends Base {
425
425
  *
426
426
  */
427
427
  resetData() {
428
- setTimeout(() => {
428
+ this.timeout(50).then(() => {
429
429
  this.data = null
430
- }, 30)
430
+ })
431
431
  }
432
432
 
433
433
  /**
@@ -98,16 +98,16 @@ class DragZone extends BaseDragZone {
98
98
  proxy.cls = cls;
99
99
 
100
100
  // ensure to get into the next animation frame
101
- setTimeout(() => {
101
+ me.timeout(30).then(() => {
102
102
  wrapperStyle.left = `${rect.left}px`;
103
103
  wrapperStyle.top = `${rect.top}px`;
104
104
 
105
105
  proxy.wrapperStyle = wrapperStyle;
106
106
 
107
- setTimeout(() => {
107
+ me.timeout(300).then(() => {
108
108
  me.dragEnd()
109
- }, 300)
110
- }, 30)
109
+ })
110
+ })
111
111
  }
112
112
  }
113
113
 
@@ -40,14 +40,14 @@ class SortZone extends BaseSortZone {
40
40
  onDragEnd(data) {
41
41
  super.onDragEnd(data);
42
42
 
43
- setTimeout(() => {
43
+ this.timeout(300).then(() => {
44
44
  let me = this,
45
45
  {owner} = me,
46
46
  cls = owner.cls || [];
47
47
 
48
48
  NeoArray.remove(cls, 'neo-no-animation');
49
49
  owner.cls = cls
50
- }, 300)
50
+ })
51
51
  }
52
52
 
53
53
  /**
@@ -72,16 +72,16 @@ class DragZone extends BaseDragZone {
72
72
  proxy.cls = cls;
73
73
 
74
74
  // ensure to get into the next animation frame
75
- setTimeout(() => {
75
+ me.timeout(30).then(() => {
76
76
  wrapperStyle.left = `${rect.left}px`;
77
77
  wrapperStyle.top = `${rect.top}px`;
78
78
 
79
79
  proxy.wrapperStyle = wrapperStyle;
80
80
 
81
- setTimeout(() => {
81
+ me.timeout(100).then(() => {
82
82
  me.dragEnd()
83
- }, 100)
84
- }, 30)
83
+ })
84
+ })
85
85
  }
86
86
  }
87
87
 
@@ -234,11 +234,11 @@ class SortZone extends DragZone {
234
234
  });
235
235
 
236
236
  // we need to add a short (1 frame) delay to ensure the item has switched to an absolute position
237
- setTimeout(() => {
237
+ me.timeout(5).then(() => {
238
238
  itemStyle = button.style || {};
239
239
  itemStyle.visibility = 'hidden';
240
- button.style = itemStyle;
241
- }, 5)
240
+ button.style = itemStyle
241
+ })
242
242
  })
243
243
  }
244
244
  }
@@ -401,11 +401,12 @@ class ComboBox extends Picker {
401
401
  selectionModel.select(record);
402
402
  selectionModel.suspendEvents = false
403
403
  }
404
- setTimeout(() => {
404
+
405
+ me.timeout(100).then(() => {
405
406
  const index = store.indexOf(record);
406
407
  list._focusIndex = -1; // silent update to ensure afterSetFocusIndex() always gets called
407
408
  list.focusIndex = index > -1 ? index : 0
408
- }, 100)
409
+ })
409
410
  }
410
411
  // Filtered down to nothing - hide picker if it has been created.
411
412
  else {
@@ -382,7 +382,7 @@ class FileUpload extends Base {
382
382
  me.file = me.document = null;
383
383
 
384
384
  // We have to wait for the DOM to have changed, and the input field to be visible
385
- await new Promise(resolve => setTimeout(resolve, 100));
385
+ await me.timeout(100);
386
386
  me.focus(me.getInputEl().id);
387
387
  }
388
388
 
@@ -445,7 +445,7 @@ class FileUpload extends Base {
445
445
  me.state = 'starting';
446
446
 
447
447
  // We have to wait for the DOM to have changed, and the action button to be visible
448
- await new Promise(resolve => setTimeout(resolve, 100));
448
+ await me.timeout(100);
449
449
  me.focus(me.vdom.cn[2].id);
450
450
 
451
451
  me.vdom.cn[1].cn[0].innerHTML = StringUtil.escapeHtml(file.name);
@@ -641,7 +641,7 @@ class FileUpload extends Base {
641
641
 
642
642
  switch (status) {
643
643
  case 'scanning':
644
- setTimeout(() => me.checkDocumentStatus(), me.statusScanInterval);
644
+ me.timeout(me.statusScanInterval).then(() => {me.checkDocumentStatus()});
645
645
  break;
646
646
  case 'deleted':
647
647
  me.error = `${me.documentText} ${me.documentId} ${isNoLongerAvailable}`;
@@ -571,9 +571,9 @@ class Text extends Base {
571
571
 
572
572
  me.updateInputWidth();
573
573
 
574
- !isEmpty && setTimeout(() => {
574
+ !isEmpty && me.timeout(20).then(() => {
575
575
  me.updateCenterBorderElWidth(false)
576
- }, 20)
576
+ })
577
577
  } else {
578
578
  // changes from e.g. left to top
579
579
  me.updateInputWidth()
@@ -168,13 +168,13 @@ class TextArea extends Text {
168
168
  super.afterSetValue(value, oldValue);
169
169
 
170
170
  if (me.autoGrow && me.mounted && me.readOnly) {
171
- setTimeout(() => {
171
+ me.timeout(50).then(() => {
172
172
  Neo.main.DomAccess.monitorAutoGrowHandler({
173
173
  appName : me.appName,
174
174
  id : inputEl.id,
175
175
  windowId: me.windowId
176
176
  })
177
- }, 50)
177
+ })
178
178
  }
179
179
  }
180
180
 
@@ -304,9 +304,9 @@ class Container extends BaseContainer {
304
304
  } else {
305
305
  listenerId = me.on('rendered', () => {
306
306
  me.un('rendered', listenerId);
307
- setTimeout(() => {
307
+ me.timeout(50).then(() => {
308
308
  me.createViewData(data)
309
- }, 50)
309
+ })
310
310
  })
311
311
  }
312
312
  }
@@ -417,12 +417,10 @@ class Cube extends Card {
417
417
  let {container} = this,
418
418
  {height, width} = await container.getDomRect(container.id);
419
419
 
420
- console.log({height, width});
421
-
422
420
  this.set({
423
421
  sideX: width,
424
422
  sideY: height,
425
- sideZ: Math.min(height, width)
423
+ sideZ: width
426
424
  })
427
425
  }
428
426
  }
@@ -166,7 +166,7 @@ class Animate extends Base {
166
166
  x = column * (margin + owner.itemWidth) + margin,
167
167
  y = row * (margin + owner.itemHeight) + margin;
168
168
 
169
- return {x, y};
169
+ return {x, y}
170
170
  }
171
171
 
172
172
  /**
@@ -177,13 +177,13 @@ class Animate extends Base {
177
177
  */
178
178
  getItemIndex(obj, map, intercept) {
179
179
  if (!intercept) {
180
- return obj.index;
180
+ return obj.index
181
181
  }
182
182
 
183
183
  let owner = this.owner,
184
184
  key = owner.getKeyProperty();
185
185
 
186
- return map.indexOf(owner.getItemId(obj.record[key]));
186
+ return map.indexOf(owner.getItemId(obj.record[key]))
187
187
  }
188
188
 
189
189
  /**
@@ -201,8 +201,8 @@ class Animate extends Base {
201
201
  });
202
202
 
203
203
  // if the store got loaded before this plugin is ready, create the items now
204
- owner.store.getCount() > 0 && owner.createItems();
205
- });
204
+ owner.store.getCount() > 0 && owner.createItems()
205
+ })
206
206
  }
207
207
 
208
208
  /**
@@ -241,15 +241,15 @@ class Animate extends Base {
241
241
  item.reAdded = true;
242
242
  }
243
243
 
244
- addedItems.push(item);
244
+ addedItems.push(item)
245
245
  } else {
246
- movedItems.push(item);
246
+ movedItems.push(item)
247
247
  }
248
248
  });
249
249
 
250
250
  data.oldItems.forEach((record, index) => {
251
251
  if (!data.items.includes(record)) {
252
- removedItems.push({index, record});
252
+ removedItems.push({index, record})
253
253
  }
254
254
  });
255
255
 
@@ -263,7 +263,7 @@ class Animate extends Base {
263
263
  vdom.cn.splice(index, 0, me.createItem(me, obj.record, obj.index));
264
264
 
265
265
  obj.item = vdom.cn[index];
266
- obj.item.style.opacity = 0;
266
+ obj.item.style.opacity = 0
267
267
  }
268
268
  }
269
269
  });
@@ -271,7 +271,7 @@ class Animate extends Base {
271
271
  hasAddedItems && owner.update();
272
272
 
273
273
  // ensure to get into the next animation frame
274
- setTimeout(() => {
274
+ me.timeout(50).then(() => {
275
275
  // new items are already added into the vdom, while old items are not yet removed
276
276
  // => we need a map to ensure getting the correct index
277
277
  map = vdom.cn.map(e => e.id);
@@ -281,7 +281,7 @@ class Animate extends Base {
281
281
 
282
282
  if (index > -1) {
283
283
  // we can change the opacity for re-added items too => the vdom engine will ignore this
284
- vdom.cn[index].style.opacity = 1;
284
+ vdom.cn[index].style.opacity = 1
285
285
  }
286
286
  });
287
287
 
@@ -294,7 +294,7 @@ class Animate extends Base {
294
294
  Object.assign(vdom.cn[index].style, {
295
295
  opacity : 1,
296
296
  transform: `translate(${position.x}px, ${position.y}px)`
297
- });
297
+ })
298
298
  }
299
299
  });
300
300
 
@@ -303,13 +303,13 @@ class Animate extends Base {
303
303
 
304
304
  if (index > -1) {
305
305
  obj.item = vdom.cn[index];
306
- obj.item.style.opacity = 0;
306
+ obj.item.style.opacity = 0
307
307
  }
308
308
  });
309
309
 
310
310
  owner.update();
311
- me.triggerTransitionCallback();
312
- }, 50);
311
+ me.triggerTransitionCallback()
312
+ })
313
313
  }
314
314
 
315
315
  /**
@@ -351,7 +351,7 @@ class Animate extends Base {
351
351
  newVdomCn.push(vdom.cn[fromIndex]);
352
352
 
353
353
  if (fromIndex !== index) {
354
- hasChange = true;
354
+ hasChange = true
355
355
  }
356
356
  });
357
357
 
@@ -360,9 +360,9 @@ class Animate extends Base {
360
360
  owner.update();
361
361
 
362
362
  // we need to ensure to get this call into the next animation frame
363
- setTimeout(() => {
364
- owner.createItems();
365
- }, 50);
363
+ me.timeout(50).then(() => {
364
+ owner.createItems()
365
+ })
366
366
  }
367
367
  }
368
368
  }
@@ -391,10 +391,10 @@ class Animate extends Base {
391
391
  item = vdom.cn[fromIndex];
392
392
  position = me.getItemPosition(record, index);
393
393
 
394
- item.style.transform = `translate(${position.x}px, ${position.y}px)`;
394
+ item.style.transform = `translate(${position.x}px, ${position.y}px)`
395
395
  });
396
396
 
397
- owner.update();
397
+ owner.update()
398
398
  }
399
399
  }
400
400
 
@@ -407,8 +407,8 @@ class Animate extends Base {
407
407
  me.transitionTimeoutId = setTimeout(() => {
408
408
  me.transitionTimeoutId = null;
409
409
 
410
- me.owner.createItems();
411
- }, me.transitionDuration);
410
+ me.owner.createItems()
411
+ }, me.transitionDuration)
412
412
  }
413
413
 
414
414
  /**
@@ -911,7 +911,7 @@ class DomAccess extends Base {
911
911
 
912
912
  node.scrollIntoView(opts);
913
913
 
914
- !hasListener && setTimeout(() => resolve(), 500)
914
+ !hasListener && this.timeout(500).then(() => {resolve()})
915
915
  } else {
916
916
  resolve()
917
917
  }