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
@@ -139,9 +139,10 @@ class DomEvents extends Base {
139
139
  * @param {Object} data
140
140
  */
141
141
  addDomListener(data) {
142
- let me = this,
143
- i = 0,
144
- len = data.events.length,
142
+ let me = this,
143
+ i = 0,
144
+ len = data.events.length,
145
+ failedId = null,
145
146
  event, id, targetNode;
146
147
 
147
148
  for (; i < len; i++) {
@@ -161,14 +162,22 @@ class DomEvents extends Base {
161
162
  targetNode = document.querySelector(`[data-neo-id='${id}']`)
162
163
  }
163
164
 
164
- targetNode.addEventListener(event.name, me[event.handler].bind(me));
165
+ if (targetNode) {
166
+ targetNode.addEventListener(event.name, me[event.handler].bind(me))
167
+ } else {
168
+ failedId = id
169
+ }
170
+ }
171
+
172
+ if (failedId && Neo.config.environment === 'development') {
173
+ console.warn('DomEvents:addDomListener() => target node not found:', failedId)
165
174
  }
166
175
 
167
176
  Neo.worker.Manager.sendMessage(data.origin, {
168
177
  action : 'reply',
169
178
  data,
170
179
  replyId: data.id,
171
- success: true
180
+ success: !failedId
172
181
  })
173
182
  }
174
183
 
@@ -90,13 +90,13 @@ class AmCharts extends Base {
90
90
 
91
91
  me.chartsToCreate = [];
92
92
 
93
- setTimeout(() => {
93
+ me.timeout(1000).then(() => {
94
94
  Object.entries(me.dataMap).forEach(([key, dataValue]) => {
95
95
  me.updateData(dataValue)
96
96
  });
97
97
 
98
98
  me.dataMap = {}
99
- }, 1000)
99
+ })
100
100
  }
101
101
  }
102
102
 
@@ -196,9 +196,9 @@ class MapboxGL extends Base {
196
196
  autoResize(data) {
197
197
  let map = this.maps[data.id];
198
198
 
199
- map && setTimeout(() => {
199
+ map && this.timeout(100).then(() => {
200
200
  map.resize()
201
- }, 100)
201
+ })
202
202
  }
203
203
 
204
204
  /**
@@ -337,7 +337,7 @@ class MapboxGL extends Base {
337
337
  onMapReallyLoaded(data, event) {
338
338
  let me = this;
339
339
 
340
- setTimeout(() => {
340
+ me.timeout(100).then(() => {
341
341
  if (data.data) {
342
342
  me.updateData({
343
343
  data : data.data,
@@ -347,7 +347,7 @@ class MapboxGL extends Base {
347
347
  } else if (me.dataMap[data.id]) {
348
348
  me.updateData(me.dataMap[data.id])
349
349
  }
350
- }, 100);
350
+ })
351
351
  }
352
352
 
353
353
  /**
@@ -428,9 +428,9 @@ class DomEvent extends Base {
428
428
  });
429
429
 
430
430
  if (component.mounted) {
431
- setTimeout(() => {
431
+ me.timeout(100).then(() => {
432
432
  me.mountDomListeners(component)
433
- }, 100)
433
+ })
434
434
  }
435
435
  } else {
436
436
  Logger.logError('Component.domListeners have to be an array', component)
@@ -153,11 +153,11 @@ class Focus extends CoreBase {
153
153
 
154
154
  me.lastFocusOutDate = new Date();
155
155
 
156
- setTimeout(() => {
156
+ me.timeout(me.maxFocusInOutGap).then(() => {
157
157
  if (me.lastFocusOutDate > me.lastFocusInDate) {
158
158
  me.focusLeave(opts)
159
159
  }
160
- }, me.maxFocusInOutGap);
160
+ })
161
161
  }
162
162
 
163
163
  /**
@@ -159,13 +159,15 @@ class Toast extends Base {
159
159
  showToast(toast) {
160
160
  toast.render(true);
161
161
 
162
+ let me = this;
163
+
162
164
  // increase total of displayed toasts for a position
163
- this.running[toast.position].unshift(toast.id);
165
+ me.running[toast.position].unshift(toast.id);
164
166
 
165
167
  // todo: we could use a mounted listener
166
- setTimeout(() => {
167
- this.updateItemsInPosition(toast.id)
168
- }, 50)
168
+ me.timeout(50).then(() => {
169
+ me.updateItemsInPosition(toast.id)
170
+ })
169
171
  }
170
172
 
171
173
  /**
@@ -93,9 +93,9 @@ class Message extends Base {
93
93
  if (!me.endPointTimeouts.includes(url)) {
94
94
  me.endPointTimeouts.push(url);
95
95
 
96
- setTimeout(() => {
96
+ me.timeout(me.requestBuffer).then(() => {
97
97
  me.resolveBufferTimeout(url)
98
- }, me.requestBuffer)
98
+ })
99
99
  }
100
100
  })
101
101
  }
@@ -378,7 +378,7 @@ class Resizable extends Base {
378
378
  len = data.path.length,
379
379
  {appName, owner} = me,
380
380
  style = owner.wrapperStyle, // todo: delegation target
381
- target;
381
+ target, vdom, vdomStyle;
382
382
 
383
383
  me.isDragging = true;
384
384
 
@@ -409,11 +409,19 @@ class Resizable extends Base {
409
409
  me.addBodyCursorCls();
410
410
 
411
411
  if (!me.dragZone) {
412
+ vdom = Neo.clone(owner.vdom, true);
413
+ vdomStyle = vdom.style;
414
+
415
+ delete vdomStyle.height;
416
+ delete vdomStyle.left;
417
+ delete vdomStyle.top;
418
+ delete vdomStyle.width;
419
+
412
420
  me.dragZone = Neo.create({
413
421
  module : DragZone,
414
422
  appName,
415
423
  boundaryContainerId: owner.boundaryContainerId,
416
- dragElement : owner.vdom,
424
+ dragElement : vdom,
417
425
  moveInMainThread : false,
418
426
  owner,
419
427
  ...me.dragZoneConfig
@@ -454,7 +462,7 @@ class Resizable extends Base {
454
462
  }
455
463
 
456
464
  if (target) {
457
- if (target.id !== (targetNode && targetNode.id)) {
465
+ if (target.id !== targetNode?.id) {
458
466
  if (targetNode) {
459
467
  me.removeAllNodes()
460
468
  }
@@ -230,9 +230,9 @@ class HelixModel extends Model {
230
230
  listenerId = view.on('mounted', () => {
231
231
  view.un('mounted', listenerId);
232
232
 
233
- setTimeout(() => {
234
- me.select(itemId, toggleSelection);
235
- }, 300)
233
+ me.timeout(300).then(() => {
234
+ me.select(itemId, toggleSelection)
235
+ })
236
236
  })
237
237
  }
238
238
 
package/src/tab/Strip.mjs CHANGED
@@ -124,17 +124,17 @@ class Strip extends Component {
124
124
  activeTabIndicator.style.opacity = 0;
125
125
  me.update();
126
126
 
127
- setTimeout(() => {
127
+ me.timeout(50).then(() => {
128
128
  me.moveActiveIndicator([tabStripRect, rects[0]])
129
- }, 50)
129
+ })
130
130
  } else {
131
131
  activeTabIndicator.style.opacity = 1;
132
132
  me.update();
133
133
 
134
- setTimeout(() => {
134
+ me.timeout(300).then(() => {
135
135
  activeTabIndicator.style.opacity = 0;
136
136
  me.update()
137
- }, 300)
137
+ })
138
138
  }
139
139
  }
140
140
  }
@@ -477,9 +477,9 @@ class Container extends BaseContainer {
477
477
 
478
478
  if (me.createRandomData) {
479
479
  // todo: if mounting apply after mount
480
- setTimeout(() => {
480
+ me.timeout(50).then(() => {
481
481
  me.createRandomViewData(me.amountRows)
482
- }, 50)
482
+ })
483
483
  }
484
484
  }
485
485
 
@@ -519,9 +519,9 @@ class Container extends BaseContainer {
519
519
  }
520
520
  } else {
521
521
  me.on('rendered', () => {
522
- setTimeout(() => {
522
+ me.timeout(50).then(() => {
523
523
  me.createViewData(data)
524
- }, 50)
524
+ })
525
525
  }, me, {once: true})
526
526
  }
527
527
  }
@@ -59,8 +59,10 @@ class Logger extends Base {
59
59
  construct(config) {
60
60
  super.construct(config);
61
61
 
62
+ let me = this;
63
+
62
64
  // aliases
63
- Neo.applyFromNs(Neo, this, {
65
+ Neo.applyFromNs(Neo, me, {
64
66
  error : 'error',
65
67
  info : 'info',
66
68
  log : 'log',
@@ -68,11 +70,11 @@ class Logger extends Base {
68
70
  warn : 'warn'
69
71
  }, true);
70
72
 
71
- setTimeout(() => {
73
+ me.timeout(50).then(() => {
72
74
  if (!Neo.config.enableLogsInProduction && Neo.config.environment === 'dist/production') {
73
- this.write = Neo.emptyFn
75
+ me.write = Neo.emptyFn
74
76
  }
75
- }, 50)
77
+ })
76
78
  }
77
79
 
78
80
  /**
@@ -371,11 +371,11 @@ class App extends Base {
371
371
  app = module.onStart();
372
372
 
373
373
  // short delay to ensure Component Controllers are ready
374
- config.hash && setTimeout(() => {
374
+ config.hash && me.timeout(5).then(() => {
375
375
  HashHistory.push(config.hash);
376
376
  // apps which will get created later must not use outdated hash values
377
377
  delete config.hash
378
- }, 5)
378
+ })
379
379
  })
380
380
  }
381
381
 
@@ -274,9 +274,10 @@ class Manager extends Base {
274
274
  me.constructedThreads++;
275
275
 
276
276
  if (me.constructedThreads === me.activeWorkers) {
277
- NeoConfig.appPath && setTimeout(() => { // better safe than sorry => all remotes need to be registered
277
+ // better safe than sorry => all remotes need to be registered
278
+ NeoConfig.appPath && me.timeout(NeoConfig.loadApplicationDelay).then(() => {
278
279
  me.loadApplication(NeoConfig.appPath)
279
- }, NeoConfig.loadApplicationDelay)
280
+ })
280
281
  }
281
282
  }
282
283
 
@@ -1,16 +0,0 @@
1
- Neo.overwrites = {
2
- Neo: {
3
- form: {
4
- field: {
5
- Base: {
6
- delayable: {
7
- fireChangeEvent : null,
8
- fireUserChangeEvent: null
9
- }
10
- }
11
- }
12
- }
13
- }
14
- }
15
-
16
- export default Neo.overwrites;
@@ -1,7 +0,0 @@
1
- import Overwrites from './Overwrites.mjs';
2
- import MainContainer from './view/MainContainer.mjs';
3
-
4
- export const onStart = () => Neo.app({
5
- mainView: MainContainer,
6
- name : 'Website'
7
- })