neo.mjs 2.3.18 → 3.0.2

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 (133) hide show
  1. package/README.md +9 -0
  2. package/apps/covid/view/GalleryContainer.mjs +2 -2
  3. package/apps/covid/view/HelixContainer.mjs +2 -2
  4. package/apps/covid/view/TableContainer.mjs +2 -2
  5. package/apps/krausest/view/MainComponent.mjs +2 -2
  6. package/apps/krausest/view/TableComponent.mjs +2 -2
  7. package/apps/realworld/view/HomeComponent.mjs +2 -2
  8. package/apps/realworld/view/article/CommentComponent.mjs +2 -2
  9. package/apps/realworld/view/article/Component.mjs +2 -2
  10. package/apps/realworld/view/article/CreateCommentComponent.mjs +2 -2
  11. package/apps/realworld/view/article/CreateComponent.mjs +3 -3
  12. package/apps/realworld/view/article/PreviewComponent.mjs +2 -2
  13. package/apps/realworld/view/article/TagListComponent.mjs +2 -2
  14. package/apps/realworld/view/user/ProfileComponent.mjs +2 -2
  15. package/apps/realworld/view/user/SettingsComponent.mjs +2 -2
  16. package/apps/realworld/view/user/SignUpComponent.mjs +2 -2
  17. package/apps/realworld2/view/article/HelixContainer.mjs +2 -2
  18. package/apps/realworld2/view/article/PreviewComponent.mjs +2 -2
  19. package/apps/realworld2/view/article/TagListComponent.mjs +2 -2
  20. package/apps/realworld2/view/user/LoginFormContainer.mjs +2 -2
  21. package/apps/sharedcovid/view/GalleryContainer.mjs +2 -2
  22. package/apps/sharedcovid/view/HelixContainer.mjs +2 -2
  23. package/apps/sharedcovid/view/MainContainerController.mjs +12 -16
  24. package/apps/sharedcovid/view/TableContainer.mjs +2 -2
  25. package/apps/sharedcovid/view/mapboxGl/Container.mjs +2 -2
  26. package/apps/website/data/blog.json +13 -0
  27. package/docs/app/view/ContentTabContainer.mjs +2 -2
  28. package/docs/app/view/MainContainer.mjs +2 -2
  29. package/docs/app/view/classdetails/SourceViewComponent.mjs +2 -2
  30. package/docs/app/view/classdetails/TutorialComponent.mjs +2 -2
  31. package/docs/tutorials/02_ClassSystem.html +3 -3
  32. package/docs/tutorials/02_ClassSystem.md +2 -2
  33. package/docs/tutorials/09_TodoList_version1.html +8 -8
  34. package/examples/calendar/weekview/MainContainer.mjs +2 -2
  35. package/examples/component/coronaGallery/MainContainer.mjs +2 -2
  36. package/examples/component/coronaHelix/MainContainer.mjs +2 -2
  37. package/examples/component/gallery/MainContainer.mjs +2 -2
  38. package/examples/component/helix/MainContainer.mjs +2 -2
  39. package/examples/core/config/MainContainer.mjs +2 -2
  40. package/examples/dialog/MainContainer.mjs +2 -2
  41. package/examples/list/animate/List.mjs +8 -6
  42. package/examples/list/animate/MainContainer.mjs +36 -11
  43. package/examples/model/multiWindow/ViewportController.mjs +2 -2
  44. package/examples/todoList/version1/MainComponent.mjs +3 -3
  45. package/examples/todoList/version2/MainContainer.mjs +3 -3
  46. package/package.json +7 -7
  47. package/resources/scss/src/examples/list/animate/List.scss +1 -1
  48. package/src/Main.mjs +2 -2
  49. package/src/Neo.mjs +26 -25
  50. package/src/button/Split.mjs +2 -2
  51. package/src/calendar/view/EditEventContainer.mjs +2 -2
  52. package/src/calendar/view/MainContainer.mjs +2 -2
  53. package/src/calendar/view/MainContainerModel.mjs +2 -2
  54. package/src/calendar/view/SettingsContainer.mjs +2 -2
  55. package/src/calendar/view/YearComponent.mjs +3 -5
  56. package/src/calendar/view/calendars/EditContainer.mjs +2 -2
  57. package/src/calendar/view/month/Component.mjs +3 -5
  58. package/src/calendar/view/week/Component.mjs +3 -6
  59. package/src/calendar/view/week/EventDragZone.mjs +1 -3
  60. package/src/calendar/view/week/TimeAxisComponent.mjs +2 -2
  61. package/src/calendar/view/week/plugin/DragDrop.mjs +2 -2
  62. package/src/collection/Base.mjs +23 -6
  63. package/src/component/Base.mjs +13 -0
  64. package/src/component/Chip.mjs +2 -2
  65. package/src/component/Circle.mjs +2 -2
  66. package/src/component/DateSelector.mjs +4 -8
  67. package/src/component/Gallery.mjs +2 -2
  68. package/src/component/Helix.mjs +2 -2
  69. package/src/component/Splitter.mjs +3 -5
  70. package/src/component/mwc/Button.mjs +2 -2
  71. package/src/component/mwc/TextField.mjs +2 -2
  72. package/src/container/Panel.mjs +2 -2
  73. package/src/controller/Application.mjs +2 -2
  74. package/src/controller/Base.mjs +2 -2
  75. package/src/controller/Component.mjs +2 -2
  76. package/src/core/Base.mjs +25 -1
  77. package/src/core/IdGenerator.mjs +1 -1
  78. package/src/core/Observable.mjs +4 -0
  79. package/src/data/Store.mjs +2 -2
  80. package/src/dialog/Base.mjs +5 -14
  81. package/src/draggable/DragProxyComponent.mjs +2 -2
  82. package/src/draggable/DragZone.mjs +2 -2
  83. package/src/draggable/DropZone.mjs +2 -2
  84. package/src/draggable/list/DragZone.mjs +2 -2
  85. package/src/draggable/toolbar/DragZone.mjs +2 -2
  86. package/src/draggable/toolbar/SortZone.mjs +1 -3
  87. package/src/filter/ToggleOperatorsButton.mjs +2 -2
  88. package/src/form/field/CheckBox.mjs +2 -2
  89. package/src/form/field/Color.mjs +2 -2
  90. package/src/form/field/Date.mjs +2 -2
  91. package/src/form/field/Display.mjs +2 -2
  92. package/src/form/field/Picker.mjs +1 -3
  93. package/src/form/field/Range.mjs +2 -2
  94. package/src/form/field/Select.mjs +2 -2
  95. package/src/form/field/Text.mjs +3 -5
  96. package/src/form/field/Time.mjs +2 -2
  97. package/src/form/field/trigger/Base.mjs +2 -2
  98. package/src/form/field/trigger/Time.mjs +2 -2
  99. package/src/grid/Container.mjs +2 -2
  100. package/src/list/Base.mjs +5 -5
  101. package/src/list/plugin/Animate.mjs +105 -28
  102. package/src/main/DomAccess.mjs +2 -2
  103. package/src/main/DomEvents.mjs +2 -2
  104. package/src/main/addon/AmCharts.mjs +2 -2
  105. package/src/main/addon/AnalyticsByGoogle.mjs +2 -2
  106. package/src/main/addon/DragDrop.mjs +2 -2
  107. package/src/main/addon/HighlightJS.mjs +2 -2
  108. package/src/main/addon/MapboxGL.mjs +3 -2
  109. package/src/main/addon/Markdown.mjs +3 -3
  110. package/src/main/addon/Siesta.mjs +2 -2
  111. package/src/main/addon/Stylesheet.mjs +2 -2
  112. package/src/main/addon/WindowPosition.mjs +2 -2
  113. package/src/main/draggable/sensor/Mouse.mjs +2 -2
  114. package/src/main/draggable/sensor/Touch.mjs +2 -2
  115. package/src/manager/Component.mjs +2 -2
  116. package/src/manager/Instance.mjs +2 -2
  117. package/src/menu/List.mjs +4 -12
  118. package/src/model/Component.mjs +2 -2
  119. package/src/plugin/Base.mjs +2 -2
  120. package/src/plugin/Resizable.mjs +4 -7
  121. package/src/selection/table/CellColumnModel.mjs +2 -2
  122. package/src/selection/table/CellColumnRowModel.mjs +2 -2
  123. package/src/selection/table/CellRowModel.mjs +2 -2
  124. package/src/tab/Strip.mjs +1 -3
  125. package/src/table/Container.mjs +2 -2
  126. package/src/table/header/Button.mjs +2 -2
  127. package/src/util/Logger.mjs +2 -2
  128. package/src/worker/App.mjs +2 -2
  129. package/src/worker/Base.mjs +2 -2
  130. package/src/worker/Manager.mjs +2 -2
  131. package/test/siesta/siesta.js +2 -1
  132. package/test/siesta/tests/ClassConfigsAndFields.mjs +307 -0
  133. package/test/siesta/tests/ClassSystem.mjs +1 -1
package/README.md CHANGED
@@ -35,6 +35,7 @@ No need to take care of a workers setup, and the cross channel communication on
35
35
  11. <a href="#story--vision">Story & Vision</a>
36
36
  12. <a href="#contributors">neo.mjs is in need of more contributors!</a>
37
37
  13. <a href="#sponsors">neo.mjs is in need of more sponsors!</a>
38
+ 14. <a href="#jobs">Jobs</a>
38
39
 
39
40
  </br></br>
40
41
  <h2 id="slack-channel">1. Slack Channel for questions & feedback</h2>
@@ -232,6 +233,14 @@ The benefit of doing so is getting results delivered faster.
232
233
 
233
234
  More infos: <a href="./BACKERS.md">Sponsors & Backers</a>
234
235
 
236
+ </br></br>
237
+ <h2 id="jobs">14. Jobs</h2>
238
+ Accenture is hiring multiple neo.mjs developers for the new Cloud Technology Studio in Kaiserslauern (Germany):</br>
239
+ <a href="https://www.accenture.com/de-de/careers/jobdetails?id=R00057924_de">Senior neo.mjs Frontend Developer /Architect (all genders)</a></br></br>
240
+
241
+ These full-time roles are based on German contracts, so they require living in (or relocating to) Germany.
242
+
243
+ </br></br>
235
244
  Logo contributed by <a href="https://www.linkedin.com/in/dinkheller/">Torsten Dinkheller</a>.
236
245
 
237
246
  </br></br>
@@ -192,8 +192,8 @@ class GalleryContainer extends Container {
192
192
  /**
193
193
  * @param {Object} config
194
194
  */
195
- constructor(config) {
196
- super(config);
195
+ construct(config) {
196
+ super.construct(config);
197
197
 
198
198
  const me = this;
199
199
 
@@ -238,8 +238,8 @@ class HelixContainer extends Container {
238
238
  /**
239
239
  * @param {Object} config
240
240
  */
241
- constructor(config) {
242
- super(config);
241
+ construct(config) {
242
+ super.construct(config);
243
243
 
244
244
  let me = this;
245
245
 
@@ -139,8 +139,8 @@ class TableContainer extends Container {
139
139
  /**
140
140
  * @param {Object} config
141
141
  */
142
- constructor(config) {
143
- super(config);
142
+ construct(config) {
143
+ super.construct(config);
144
144
 
145
145
  let me = this;
146
146
 
@@ -63,8 +63,8 @@ class MainComponent extends Base {
63
63
  /**
64
64
  * @param {Object} config
65
65
  */
66
- constructor(config) {
67
- super(config);
66
+ construct(config) {
67
+ super.construct(config);
68
68
 
69
69
  this.createColumns(); // silent vdom update
70
70
  this.createTable();
@@ -37,8 +37,8 @@ class TableComponent extends Base {
37
37
  /**
38
38
  * @param {Object} config
39
39
  */
40
- constructor(config) {
41
- super(config);
40
+ construct(config) {
41
+ super.construct(config);
42
42
 
43
43
  Neo.main.addon.CloneNode.createNode({
44
44
  id : this.id,
@@ -87,8 +87,8 @@ class HomeComponent extends Component {
87
87
  /**
88
88
  * @param {Object} config
89
89
  */
90
- constructor(config) {
91
- super(config);
90
+ construct(config) {
91
+ super.construct(config);
92
92
 
93
93
  Neo.main.DomEvents.registerPreventDefaultTargets({
94
94
  name: 'click',
@@ -63,8 +63,8 @@ class CommentComponent extends Component {
63
63
  /**
64
64
  * @param {Object} config
65
65
  */
66
- constructor(config) {
67
- super(config);
66
+ construct(config) {
67
+ super.construct(config);
68
68
 
69
69
  let me = this,
70
70
  domListeners = me.domListeners;
@@ -141,8 +141,8 @@ class Component extends BaseComponent {
141
141
  /**
142
142
  * @param {Object} config
143
143
  */
144
- constructor(config) {
145
- super(config);
144
+ construct(config) {
145
+ super.construct(config);
146
146
 
147
147
  let me = this,
148
148
  domListeners = me.domListeners;
@@ -43,8 +43,8 @@ class CreateCommentComponent extends Component {
43
43
  /**
44
44
  * @param {Object} config
45
45
  */
46
- constructor(config) {
47
- super(config);
46
+ construct(config) {
47
+ super.construct(config);
48
48
 
49
49
  let me = this,
50
50
  domListeners = me.domListeners,
@@ -79,8 +79,8 @@ class CreateComponent extends Component {
79
79
  * constructor
80
80
  * @param {Object} config
81
81
  */
82
- constructor(config) {
83
- super(config);
82
+ construct(config) {
83
+ super.construct(config);
84
84
 
85
85
  let me = this,
86
86
  domListeners = me.domListeners;
@@ -274,4 +274,4 @@ class CreateComponent extends Component {
274
274
 
275
275
  Neo.applyClassConfig(CreateComponent);
276
276
 
277
- export {CreateComponent as default};
277
+ export {CreateComponent as default};
@@ -81,8 +81,8 @@ class PreviewComponent extends Component {
81
81
  /**
82
82
  * @param {Object} config
83
83
  */
84
- constructor(config) {
85
- super(config);
84
+ construct(config) {
85
+ super.construct(config);
86
86
 
87
87
  let me = this,
88
88
  domListeners = me.domListeners;
@@ -47,8 +47,8 @@ class TagListComponent extends Component {
47
47
  /**
48
48
  * @param {Object} config
49
49
  */
50
- constructor(config) {
51
- super(config);
50
+ construct(config) {
51
+ super.construct(config);
52
52
 
53
53
  Neo.main.DomEvents.registerPreventDefaultTargets({
54
54
  name: 'click',
@@ -97,8 +97,8 @@ class ProfileComponent extends Component {
97
97
  /**
98
98
  * @param {Object} config
99
99
  */
100
- constructor(config) {
101
- super(config);
100
+ construct(config) {
101
+ super.construct(config);
102
102
 
103
103
  Neo.main.DomEvents.registerPreventDefaultTargets({
104
104
  name: 'click',
@@ -77,8 +77,8 @@ class SettingsComponent extends Component {
77
77
  /**
78
78
  * @param {Object} config
79
79
  */
80
- constructor(config) {
81
- super(config);
80
+ construct(config) {
81
+ super.construct(config);
82
82
 
83
83
  let me = this,
84
84
  domListeners = me.domListeners;
@@ -64,8 +64,8 @@ class SignUpComponent extends Component {
64
64
  /**
65
65
  * @param {Object} config
66
66
  */
67
- constructor(config) {
68
- super(config);
67
+ construct(config) {
68
+ super.construct(config);
69
69
 
70
70
  let me = this,
71
71
  domListeners = me.domListeners;
@@ -28,8 +28,8 @@ class HelixContainer extends HelixMainContainer {
28
28
  /**
29
29
  * @param {Object} config
30
30
  */
31
- constructor(config) {
32
- super(config);
31
+ construct(config) {
32
+ super.construct(config);
33
33
 
34
34
  let me = this;
35
35
 
@@ -94,8 +94,8 @@ class PreviewComponent extends Component {
94
94
  /**
95
95
  * @param {Object} config
96
96
  */
97
- constructor(config) {
98
- super(config);
97
+ construct(config) {
98
+ super.construct(config);
99
99
 
100
100
  let me = this,
101
101
  domListeners = me.domListeners;
@@ -51,8 +51,8 @@ class TagListComponent extends Component {
51
51
  /**
52
52
  * @param {Object} config
53
53
  */
54
- constructor(config) {
55
- super(config);
54
+ construct(config) {
55
+ super.construct(config);
56
56
 
57
57
  Neo.main.DomEvents.registerPreventDefaultTargets({
58
58
  name: 'click',
@@ -35,8 +35,8 @@ class LoginFormContainer extends Container {
35
35
  /**
36
36
  * @param {Object} config
37
37
  */
38
- constructor(config) {
39
- super(config);
38
+ construct(config) {
39
+ super.construct(config);
40
40
 
41
41
  let me = this;
42
42
 
@@ -200,8 +200,8 @@ class GalleryContainer extends Container {
200
200
  /**
201
201
  * @param {Object} config
202
202
  */
203
- constructor(config) {
204
- super(config);
203
+ construct(config) {
204
+ super.construct(config);
205
205
 
206
206
  const me = this;
207
207
 
@@ -246,8 +246,8 @@ class HelixContainer extends Container {
246
246
  /**
247
247
  * @param {Object} config
248
248
  */
249
- constructor(config) {
250
- super(config);
249
+ construct(config) {
250
+ super.construct(config);
251
251
 
252
252
  let me = this;
253
253
 
@@ -166,9 +166,7 @@ class MainContainerController extends ComponentController {
166
166
  let me = this;
167
167
 
168
168
  Neo.Main.getWindowData().then(winData => {
169
- Neo.main.DomAccess.getBoundingClientRect({
170
- id: [me.getReference(containerReference).id]
171
- }).then(data => {
169
+ me.component.getDomRect(me.getReference(containerReference).id).then(data => {
172
170
  let {height, left, top, width} = data[0];
173
171
 
174
172
  height -= 50; // popup header in Chrome
@@ -178,7 +176,7 @@ class MainContainerController extends ComponentController {
178
176
  Neo.Main.windowOpen({
179
177
  url : `../${url}/index.html`,
180
178
  windowFeatures: `height=${height},left=${left},top=${top},width=${width}`,
181
- windowName : windowName
179
+ windowName
182
180
  });
183
181
  });
184
182
  });
@@ -371,13 +369,11 @@ class MainContainerController extends ComponentController {
371
369
  onComponentConstructed() {
372
370
  super.onComponentConstructed();
373
371
 
374
- if (!Neo.config.hash) {
375
- this.onHashChange({
376
- country : 'all',
377
- hash : {mainview: 'table'},
378
- hashString: 'mainview=table'
379
- }, null);
380
- }
372
+ !Neo.config.hash && this.onHashChange({
373
+ country : 'all',
374
+ hash : {mainview: 'table'},
375
+ hashString: 'mainview=table'
376
+ }, null);
381
377
  }
382
378
 
383
379
  /**
@@ -611,16 +607,16 @@ class MainContainerController extends ComponentController {
611
607
  } else {
612
608
  [component.appName, ...me.connectedApps].forEach(appName => {
613
609
  Neo.main.addon.Stylesheet.swapStyleSheet({
614
- appName: appName,
615
- href : href,
616
- id : 'neo-theme'
610
+ appName,
611
+ href,
612
+ id: 'neo-theme'
617
613
  });
618
614
  });
619
615
  }
620
616
 
621
617
  button.set({
622
- iconCls: iconCls,
623
- text : buttonText
618
+ iconCls,
619
+ text: buttonText
624
620
  });
625
621
 
626
622
  if (mapView) {
@@ -148,8 +148,8 @@ class TableContainer extends Container {
148
148
  /**
149
149
  * @param {Object} config
150
150
  */
151
- constructor(config) {
152
- super(config);
151
+ construct(config) {
152
+ super.construct(config);
153
153
 
154
154
  const me = this;
155
155
 
@@ -106,8 +106,8 @@ class Container extends BaseContainer {
106
106
  /**
107
107
  * @param {Object} config
108
108
  */
109
- constructor(config) {
110
- super(config);
109
+ construct(config) {
110
+ super.construct(config);
111
111
 
112
112
  let me = this,
113
113
 
@@ -1,4 +1,17 @@
1
1
  [
2
+ {
3
+ "author" : "Tobias Uhlig",
4
+ "authorImage" : "author_TobiasUhlig.jpeg",
5
+ "date" : "Dec 15, 2021",
6
+ "id" : 47,
7
+ "image" : "resolving-pitfalls-of-the-ecmascript-class-system.png",
8
+ "name" : "Resolving pitfalls of the ECMAScript class system",
9
+ "provider" : "Medium",
10
+ "publisher" : "ITNEXT",
11
+ "selectedInto": [],
12
+ "type" : "Blog Post",
13
+ "url" : "https://itnext.io/resolving-pitfalls-of-the-ecmascript-class-system-856024218399?source=friends_link&sk=9733342654c50d8d618671b754089e1d"
14
+ },
2
15
  {
3
16
  "author" : "Tobias Uhlig",
4
17
  "authorImage" : "author_TobiasUhlig.jpeg",
@@ -64,8 +64,8 @@ class ContentTabContainer extends Container {
64
64
  *
65
65
  * @param {Object} config
66
66
  */
67
- constructor(config) {
68
- super(config);
67
+ construct(config) {
68
+ super.construct(config);
69
69
 
70
70
  let me = this,
71
71
  cls = me.cls;
@@ -101,8 +101,8 @@ class MainContainer extends Viewport {
101
101
  *
102
102
  * @param {Object} config
103
103
  */
104
- constructor(config) {
105
- super(config);
104
+ construct(config) {
105
+ super.construct(config);
106
106
 
107
107
  let me = this;
108
108
 
@@ -57,8 +57,8 @@ class SourceViewComponent extends Component {
57
57
  *
58
58
  * @param {Object} config
59
59
  */
60
- constructor(config) {
61
- super(config);
60
+ construct(config) {
61
+ super.construct(config);
62
62
 
63
63
  let me = this,
64
64
  url = '../../' + me.structureData.srcPath;
@@ -40,8 +40,8 @@ class TutorialComponent extends Component {
40
40
  *
41
41
  * @param {Object} config
42
42
  */
43
- constructor(config) {
44
- super(config);
43
+ construct(config) {
44
+ super.construct(config);
45
45
 
46
46
  let me = this,
47
47
  isJson = me.fileType === 'json',
@@ -30,9 +30,9 @@
30
30
  <p>(1.1.) This might not sound like a big deal at first, but it does prevent any pre-processing inside the
31
31
  constructor chain.</p>
32
32
  <pre><code>class TabContainer extends Container {
33
- constructor(config) {
33
+ construct(config) {
34
34
  //let me = this; // breaks!
35
- super(config);
35
+ super.construct(config);
36
36
  let me = this; //ok
37
37
  }
38
38
  }</code></pre>
@@ -168,4 +168,4 @@
168
168
  }
169
169
  }</code></pre>
170
170
  <p><a href="module-Neo.html#~autoGenerateGetSet">Details here</a></p>
171
- </article>
171
+ </article>
@@ -17,9 +17,9 @@
17
17
  (1.1.) This might not sound like a big deal at first, but it does prevent any pre-processing inside the constructor chain.
18
18
  ```
19
19
  class TabContainer extends Container {
20
- constructor(config) {
20
+ construct(config) {
21
21
  //let me = this; // breaks!
22
- super(config);
22
+ super.construct(config);
23
23
  let me = this; //ok
24
24
  }
25
25
  }
@@ -149,8 +149,8 @@ class MainComponent extends Component {
149
149
  }
150
150
  }}
151
151
 
152
- constructor(config) {
153
- super(config);
152
+ construct(config) {
153
+ super.construct(config);
154
154
  this.createItems(this.data || []);
155
155
  }
156
156
 
@@ -226,7 +226,7 @@ export {MainComponent as default};</code></pre>
226
226
  <button style="margin-left:10px;" class="todo-add-button" id="neo-vnode-9">Add Item</button>
227
227
  </div>
228
228
  </div>
229
-
229
+
230
230
  <p>The generated DOM will be:</p>
231
231
  <pre><code>&lt;div style="border:1px solid #000;margin:20px;overflow:scroll;height:200px;width:300px;max-width:300px;" id="neo-todolistapp1-maincomponent-1"&gt;
232
232
  &lt;ol id="neo-vnode-7"&gt;
@@ -244,8 +244,8 @@ export {MainComponent as default};</code></pre>
244
244
  Engine to detect moved nodes.</br>
245
245
  Since a todoList without any logic is no fun, let's change this!
246
246
  </p>
247
- <pre><code>constructor(config) {
248
- super(config);
247
+ <pre><code>construct(config) {
248
+ super.construct(config);
249
249
 
250
250
  let me = this,
251
251
  domListeners = me.domListeners || [];
@@ -409,8 +409,8 @@ class MainComponent extends Component {
409
409
  }
410
410
  }}
411
411
 
412
- constructor(config) {
413
- super(config);
412
+ construct(config) {
413
+ super.construct(config);
414
414
 
415
415
  let me = this,
416
416
  domListeners = me.domListeners || [];
@@ -500,4 +500,4 @@ export {MainComponent as default};</code></pre>
500
500
  <p>
501
501
  We hope this tutorial helped you to get a basic understanding on how to create a first custom component and on how to work with dom listeners!
502
502
  </p>
503
- </article>
503
+ </article>
@@ -69,8 +69,8 @@ class MainContainer extends Viewport {
69
69
  * We want to fetch the CSS without requiring to load the related JS module.
70
70
  * @param {Object} config
71
71
  */
72
- constructor(config) {
73
- super(config);
72
+ construct(config) {
73
+ super.construct(config);
74
74
  Neo.worker.App.insertThemeFiles(this.appName, null, 'Neo.calendar.view.MainContainer');
75
75
  }
76
76
  }
@@ -333,8 +333,8 @@ class MainContainer extends Viewport {
333
333
  /**
334
334
  * @param {Object} config
335
335
  */
336
- constructor(config) {
337
- super(config);
336
+ construct(config) {
337
+ super.construct(config);
338
338
 
339
339
  const me = this,
340
340
  url = 'https://corona.lmao.ninja/v3/covid-19/countries';
@@ -408,8 +408,8 @@ class MainContainer extends Viewport {
408
408
  /**
409
409
  * @param {Object} config
410
410
  */
411
- constructor(config) {
412
- super(config);
411
+ construct(config) {
412
+ super.construct(config);
413
413
 
414
414
  const me = this,
415
415
  url = 'https://corona.lmao.ninja/v3/covid-19/countries';
@@ -220,8 +220,8 @@ class MainContainer extends Viewport {
220
220
  /**
221
221
  * @param {Object} config
222
222
  */
223
- constructor(config) {
224
- super(config);
223
+ construct(config) {
224
+ super.construct(config);
225
225
 
226
226
  let me = this;
227
227
 
@@ -304,8 +304,8 @@ class MainContainer extends Viewport {
304
304
  /**
305
305
  * @param {Object} config
306
306
  */
307
- constructor(config) {
308
- super(config);
307
+ construct(config) {
308
+ super.construct(config);
309
309
 
310
310
  let me = this;
311
311
 
@@ -35,8 +35,8 @@ class MainContainer extends Viewport {
35
35
  /**
36
36
  * @param {Object} config
37
37
  */
38
- constructor(config) {
39
- super(config);
38
+ construct(config) {
39
+ super.construct(config);
40
40
 
41
41
  let me = this;
42
42
 
@@ -31,8 +31,8 @@ class MainContainer extends Viewport {
31
31
  /**
32
32
  * @param {Object} config
33
33
  */
34
- constructor(config) {
35
- super(config);
34
+ construct(config) {
35
+ super.construct(config);
36
36
 
37
37
  let me = this;
38
38
 
@@ -32,13 +32,15 @@ class List extends BaseList {
32
32
  * @returns {Object|Object[]|String} Either a config object to assign to the item, a vdom cn array or a html string
33
33
  */
34
34
  createItemContent(record, index) {
35
+ let id = this.getItemId(record.id);
36
+
35
37
  return [
36
- {cls: ['neo-list-item-content'], cn: [
37
- {tag: 'img', src: `../../../resources/examples/${record.image}`},
38
- {cls: ['neo-list-item-text'], cn: [
39
- {html: record.firstname},
40
- {cls: ['neo-lastname'], html: record.lastname},
41
- {cls: ['neo-is-online'], removeDom: !record.isOnline}
38
+ {cls: ['neo-list-item-content'], id: `${id}__content`, cn: [
39
+ {tag: 'img', id: `${id}__image`, src: `../../../resources/examples/${record.image}`},
40
+ {cls: ['neo-list-item-text'], id: `${id}__content_wrapper`, cn: [
41
+ {html: record.firstname, id: `${id}__firstname`},
42
+ {cls: ['neo-lastname'], id: `${id}__lastname`, html: record.lastname},
43
+ {cls: ['neo-is-online'], id: `${id}__isonline`, removeDom: !record.isOnline}
42
44
  ]}
43
45
  ]}
44
46
  ];