neo.mjs 4.3.9 → 4.3.10

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 (84) hide show
  1. package/apps/covid/view/MainContainerController.mjs +9 -11
  2. package/apps/krausest/view/MainComponent.mjs +3 -4
  3. package/apps/krausest/view/TableComponent.mjs +2 -3
  4. package/apps/realworld/view/HeaderComponent.mjs +7 -10
  5. package/apps/realworld/view/HomeComponent.mjs +16 -24
  6. package/apps/realworld/view/MainContainerController.mjs +3 -3
  7. package/apps/realworld/view/article/CommentComponent.mjs +11 -19
  8. package/apps/realworld/view/article/Component.mjs +20 -36
  9. package/apps/realworld/view/article/CreateCommentComponent.mjs +9 -16
  10. package/apps/realworld/view/article/CreateComponent.mjs +12 -20
  11. package/apps/realworld/view/article/PreviewComponent.mjs +16 -30
  12. package/apps/realworld/view/article/TagListComponent.mjs +4 -5
  13. package/apps/realworld/view/user/ProfileComponent.mjs +14 -21
  14. package/apps/realworld/view/user/SettingsComponent.mjs +9 -16
  15. package/apps/realworld/view/user/SignUpComponent.mjs +6 -9
  16. package/apps/realworld2/view/MainContainerController.mjs +2 -2
  17. package/apps/realworld2/view/article/PreviewComponent.mjs +17 -31
  18. package/apps/realworld2/view/article/PreviewList.mjs +4 -7
  19. package/apps/realworld2/view/article/TagListComponent.mjs +4 -5
  20. package/apps/sharedcovid/view/MainContainerController.mjs +10 -13
  21. package/apps/website/view/blog/List.mjs +2 -3
  22. package/docs/app/view/ApiTreeList.mjs +2 -6
  23. package/docs/app/view/ExamplesTreeList.mjs +2 -6
  24. package/docs/app/view/TutorialsTreeList.mjs +2 -6
  25. package/docs/app/view/classdetails/HeaderComponent.mjs +3 -4
  26. package/docs/app/view/classdetails/HierarchyTreeList.mjs +1 -2
  27. package/docs/app/view/classdetails/MembersList.mjs +4 -6
  28. package/docs/app/view/classdetails/SourceViewComponent.mjs +3 -6
  29. package/docs/app/view/classdetails/TutorialComponent.mjs +4 -5
  30. package/examples/tabs/MainContainer.mjs +4 -6
  31. package/examples/todoList/version1/MainComponent.mjs +5 -7
  32. package/examples/todoList/version2/TodoList.mjs +4 -5
  33. package/package.json +3 -3
  34. package/src/button/Base.mjs +14 -24
  35. package/src/button/Split.mjs +3 -4
  36. package/src/calendar/view/MainContainer.mjs +3 -5
  37. package/src/calendar/view/SettingsContainer.mjs +3 -5
  38. package/src/calendar/view/YearComponent.mjs +7 -9
  39. package/src/calendar/view/month/Component.mjs +7 -12
  40. package/src/calendar/view/week/Component.mjs +2 -3
  41. package/src/calendar/view/week/TimeAxisComponent.mjs +0 -3
  42. package/src/component/Base.mjs +24 -25
  43. package/src/component/Carousel.mjs +5 -9
  44. package/src/component/Chip.mjs +6 -12
  45. package/src/component/Circle.mjs +16 -22
  46. package/src/component/Clock.mjs +1 -1
  47. package/src/component/DateSelector.mjs +4 -9
  48. package/src/component/Gallery.mjs +12 -21
  49. package/src/component/Helix.mjs +2 -3
  50. package/src/component/Label.mjs +2 -3
  51. package/src/component/Legend.mjs +6 -9
  52. package/src/container/Base.mjs +5 -9
  53. package/src/dialog/Base.mjs +2 -3
  54. package/src/draggable/list/DragZone.mjs +1 -2
  55. package/src/draggable/tree/DragZone.mjs +1 -2
  56. package/src/form/Fieldset.mjs +4 -6
  57. package/src/form/field/CheckBox.mjs +23 -39
  58. package/src/form/field/Color.mjs +2 -3
  59. package/src/form/field/Display.mjs +1 -2
  60. package/src/form/field/Number.mjs +1 -2
  61. package/src/form/field/Picker.mjs +0 -1
  62. package/src/form/field/Text.mjs +25 -50
  63. package/src/form/field/TextArea.mjs +2 -3
  64. package/src/form/field/trigger/Base.mjs +2 -3
  65. package/src/form/field/trigger/SpinUpDown.mjs +3 -4
  66. package/src/form/field/trigger/Time.mjs +3 -4
  67. package/src/grid/header/Toolbar.mjs +1 -2
  68. package/src/layout/Card.mjs +2 -2
  69. package/src/list/Base.mjs +6 -11
  70. package/src/list/plugin/Animate.mjs +5 -12
  71. package/src/plugin/Resizable.mjs +3 -6
  72. package/src/selection/Model.mjs +3 -7
  73. package/src/selection/grid/CellColumnModel.mjs +2 -5
  74. package/src/selection/grid/CellColumnRowModel.mjs +2 -5
  75. package/src/selection/grid/CellRowModel.mjs +4 -13
  76. package/src/selection/table/CellColumnModel.mjs +2 -5
  77. package/src/selection/table/CellColumnRowModel.mjs +2 -5
  78. package/src/selection/table/CellRowModel.mjs +4 -13
  79. package/src/sitemap/Component.mjs +1 -1
  80. package/src/tab/Strip.mjs +8 -11
  81. package/src/tab/header/Toolbar.mjs +2 -3
  82. package/src/table/header/Button.mjs +4 -6
  83. package/src/table/header/Toolbar.mjs +3 -5
  84. package/src/tree/List.mjs +6 -9
@@ -44,13 +44,9 @@ class ExamplesTreeList extends TreeList {
44
44
  Neo.Xhr.promiseJson({
45
45
  url: '../../docs/examples.json'
46
46
  }).then(data => {
47
- let vdom = me.vdom,
48
- itemRoot = me.getListItemsRoot();
49
-
50
47
  me.store.data = data.json;
51
- itemRoot = me.createItems(null, itemRoot, 0);
52
-
53
- me.vdom = vdom;
48
+ me.createItems(null, me.getListItemsRoot(), 0);
49
+ me.update();
54
50
  });
55
51
  }
56
52
  }
@@ -44,13 +44,9 @@ class TutorialsTreeList extends TreeList {
44
44
  Neo.Xhr.promiseJson({
45
45
  url: '../../docs/tutorials/tutorials.json'
46
46
  }).then(data => {
47
- let vdom = me.vdom,
48
- itemRoot = me.getListItemsRoot();
49
-
50
47
  me.store.data = data.json;
51
- itemRoot = me.createItems(null, itemRoot, 0);
52
-
53
- me.vdom = vdom;
48
+ me.createItems(null, me.getListItemsRoot(), 0);
49
+ me.update();
54
50
  });
55
51
  }
56
52
  }
@@ -50,7 +50,6 @@ class HeaderComponent extends Component {
50
50
  super.onConstructed();
51
51
 
52
52
  let me = this,
53
- vdom = me.vdom,
54
53
  className = me.record.className,
55
54
  store = me.up('main-container').store,
56
55
  record = store.find({$kind: className === 'Neo' ? 'module' : 'class', neoClassName: className})[0],
@@ -65,16 +64,16 @@ class HeaderComponent extends Component {
65
64
  }
66
65
  }
67
66
 
68
- vdom.cn[0].innerHTML = singleton ? (className + ' → Singleton') : className;
67
+ me.vdom.cn[0].innerHTML = singleton ? (className + ' → Singleton') : className;
69
68
 
70
69
  if (record.description) {
71
- vdom.cn.push({
70
+ me.vdom.cn.push({
72
71
  cls : ['neo-docs-header-description'],
73
72
  innerHTML: record.description
74
73
  });
75
74
  }
76
75
 
77
- me.vdom = vdom;
76
+ me.update();
78
77
  }
79
78
  }
80
79
 
@@ -100,14 +100,13 @@ class HierarchyTreeList extends TreeList {
100
100
  onLeafItemClick(record) {
101
101
  let me = this,
102
102
  vnodeId = me.getItemId(record.id),
103
- vdom = me.vdom,
104
103
  vdomNode = me.getVdomChild(vnodeId);
105
104
 
106
105
  NeoArray[record.checked ? 'add' : 'remove'](vdomNode.cls, 'unchecked');
107
106
 
108
107
  record.checked = !record.checked;
109
108
 
110
- me.vdom = vdom;
109
+ me.update();
111
110
 
112
111
  me.fire('refreshClassMembers');
113
112
  }
@@ -327,13 +327,11 @@ class MembersList extends Base {
327
327
  vdom.cn.push(itemConfig);
328
328
  });
329
329
 
330
- me.vdom = vdom;
330
+ me.update();
331
331
 
332
- if (hasExamples) {
333
- setTimeout(() => {
334
- Neo.main.addon.HighlightJS.syntaxHighlightInit();
335
- }, 100);
336
- }
332
+ hasExamples && setTimeout(() => {
333
+ Neo.main.addon.HighlightJS.syntaxHighlightInit();
334
+ }, 100);
337
335
  }
338
336
 
339
337
  /**
@@ -130,15 +130,12 @@ class SourceViewComponent extends Component {
130
130
  */
131
131
  applySourceCode(data) {
132
132
  let me = this,
133
- vdom = me.vdom,
134
- node = vdom.cn[0]; // pre tag
133
+ node = me.vdom.cn[0]; // pre tag
135
134
 
136
135
  node.cn[0].innerHTML = data; // code tag
137
- me.vdom = vdom;
136
+ me.update();
138
137
 
139
- if (me.mounted) {
140
- me.syntaxHighlight();
141
- }
138
+ me.mounted && me.syntaxHighlight();
142
139
  }
143
140
 
144
141
  /**
@@ -61,16 +61,15 @@ class TutorialComponent extends Component {
61
61
  * @param {Object} data
62
62
  */
63
63
  applySourceCode(data) {
64
- let me = this,
65
- vdom = me.vdom;
64
+ let me = this;
66
65
 
67
66
  if (me.fileType === 'json') {
68
- vdom.cn = data;
67
+ me.vdom.cn = data;
69
68
  } else {
70
- vdom.innerHTML = data;
69
+ me.vdom.innerHTML = data;
71
70
  }
72
71
 
73
- me.vdom = vdom;
72
+ me.update();
74
73
 
75
74
  setTimeout(() => {
76
75
  TutorialComponent.syntaxHighlight();
@@ -78,8 +78,7 @@ class MainContainer extends TabContainer {
78
78
  handler: function () {
79
79
  let field = Neo.getComponent('firstNameField'),
80
80
  label = field.getLabelEl(),
81
- style = label.style,
82
- vdom = field.vdom;
81
+ style = label.style;
83
82
 
84
83
  if (!style) {
85
84
  style = {};
@@ -92,15 +91,14 @@ class MainContainer extends TabContainer {
92
91
  }
93
92
 
94
93
  label.style = style;
95
- field.vdom = vdom;
94
+ field.update();
96
95
  }
97
96
  }, {
98
97
  text : 'Move Fields',
99
98
  handler: function () {
100
99
  let field = Neo.getComponent('firstNameField'),
101
100
  parent = Neo.getComponent(field.parentId),
102
- vdom = parent.vdom,
103
- cn = vdom.cn,
101
+ cn = parent.vdom.cn,
104
102
  tmp = cn[1];
105
103
 
106
104
  cn[1] = cn[3];
@@ -109,7 +107,7 @@ class MainContainer extends TabContainer {
109
107
  cn[1].cn[0].style.color = 'steelblue';
110
108
  cn[3].cn[0].style.color = 'green';
111
109
 
112
- parent.vdom = vdom;
110
+ parent.update();
113
111
  }
114
112
  }, {
115
113
  iconCls: 'fa fa-plus',
@@ -55,8 +55,7 @@ class MainComponent extends Component {
55
55
  }
56
56
 
57
57
  createItems(data) {
58
- let me = this,
59
- vdom = me.vdom,
58
+ let me = this,
60
59
  cls;
61
60
 
62
61
  data.forEach(item => {
@@ -68,11 +67,11 @@ class MainComponent extends Component {
68
67
  cls.push('far', 'fa-square');
69
68
  }
70
69
 
71
- vdom.cn[0].cn.push({
70
+ me.vdom.cn[0].cn.push({
72
71
  tag: 'li',
73
72
  cn : [{
74
73
  tag : 'span',
75
- cls : cls,
74
+ cls,
76
75
  style: {cursor: 'pointer', width: '20px'}
77
76
  }, {
78
77
  vtype: 'text',
@@ -81,7 +80,7 @@ class MainComponent extends Component {
81
80
  });
82
81
  });
83
82
 
84
- me.vdom = vdom;
83
+ me.update();
85
84
  }
86
85
 
87
86
  onAddButtonClick() {
@@ -100,7 +99,6 @@ class MainComponent extends Component {
100
99
  let me = this,
101
100
  cls = ['far', 'fa-square'],
102
101
  oldCls = ['fa', 'fa-check'],
103
- vdom = me.vdom,
104
102
  node = VdomUtil.findVdomChild(me.vdom, data.path[0].id).vdom;
105
103
 
106
104
  if (data.path[0].cls.includes('fa-square')) {
@@ -111,7 +109,7 @@ class MainComponent extends Component {
111
109
  NeoArray.remove(node.cls, oldCls);
112
110
  NeoArray.add(node.cls, cls);
113
111
 
114
- me.vdom = vdom;
112
+ me.update();
115
113
  }
116
114
 
117
115
  onInputFieldChange(data) {
@@ -18,8 +18,7 @@ class TodoList extends List {
18
18
  }
19
19
 
20
20
  /*createItems(data) {
21
- let me = this,
22
- vdom = me.vdom,
21
+ let me = this,
23
22
  cls;
24
23
 
25
24
  data.forEach(item => {
@@ -31,11 +30,11 @@ class TodoList extends List {
31
30
  cls.push('far', 'fa-square');
32
31
  }
33
32
 
34
- vdom.cn.push({
33
+ me.vdom.cn.push({
35
34
  tag: 'li',
36
35
  cn : [{
37
36
  tag : 'span',
38
- cls : cls,
37
+ cls,
39
38
  style: {cursor: 'pointer', width: '20px'}
40
39
  }, {
41
40
  vtype: 'text',
@@ -44,7 +43,7 @@ class TodoList extends List {
44
43
  });
45
44
  });
46
45
 
47
- me.vdom = vdom;
46
+ me.update();
48
47
  }*/
49
48
  }
50
49
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo.mjs",
3
- "version": "4.3.9",
3
+ "version": "4.3.10",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -44,14 +44,14 @@
44
44
  "@material/mwc-button": "^0.27.0",
45
45
  "@material/mwc-textfield": "^0.27.0",
46
46
  "autoprefixer": "^10.4.12",
47
- "chalk": "^5.0.1",
47
+ "chalk": "^5.1.0",
48
48
  "clean-webpack-plugin": "^4.0.0",
49
49
  "commander": "^9.4.1",
50
50
  "cssnano": "^5.1.13",
51
51
  "envinfo": "^7.8.1",
52
52
  "fs-extra": "^10.1.0",
53
53
  "highlightjs-line-numbers.js": "^2.8.0",
54
- "inquirer": "^9.1.2",
54
+ "inquirer": "^9.1.3",
55
55
  "neo-jsdoc": "^1.0.1",
56
56
  "neo-jsdoc-x": "^1.0.4",
57
57
  "postcss": "^8.4.17",
@@ -145,14 +145,13 @@ class Base extends Component {
145
145
  afterSetBadgePosition(value, oldValue) {
146
146
  let me = this,
147
147
  badgeEl = me.getBadgeNode(),
148
- cls = badgeEl.cls || [],
149
- vdom = me.vdom;
148
+ cls = badgeEl.cls || [];
150
149
 
151
150
  NeoArray.remove(cls, 'neo-' + oldValue);
152
151
  NeoArray.add(cls, 'neo-' + value);
153
152
 
154
153
  badgeEl.cls = cls;
155
- me.vdom = vdom;
154
+ me.update();
156
155
  }
157
156
 
158
157
  /**
@@ -163,13 +162,12 @@ class Base extends Component {
163
162
  */
164
163
  afterSetBadgeText(value, oldValue) {
165
164
  let me = this,
166
- badgeNode = me.getBadgeNode(),
167
- vdom = me.vdom;
165
+ badgeNode = me.getBadgeNode();
168
166
 
169
167
  badgeNode.html = value;
170
168
  badgeNode.removeDom = !Boolean(value);
171
169
 
172
- me.vdom = vdom;
170
+ me.update();
173
171
  }
174
172
 
175
173
  /**
@@ -195,7 +193,6 @@ class Base extends Component {
195
193
  */
196
194
  afterSetIconCls(value, oldValue) {
197
195
  let me = this,
198
- vdom = me.vdom,
199
196
  iconNode = me.getIconNode();
200
197
 
201
198
  NeoArray.remove(iconNode.cls, oldValue);
@@ -203,7 +200,7 @@ class Base extends Component {
203
200
 
204
201
  iconNode.removeDom = !value || value === '';
205
202
 
206
- me.vdom = vdom;
203
+ me.update();
207
204
  }
208
205
 
209
206
  /**
@@ -214,7 +211,6 @@ class Base extends Component {
214
211
  */
215
212
  afterSetIconColor(value, oldValue) {
216
213
  let me = this,
217
- vdom = me.vdom,
218
214
  iconNode = me.getIconNode();
219
215
 
220
216
  if (!iconNode.style) {
@@ -226,7 +222,7 @@ class Base extends Component {
226
222
  }
227
223
 
228
224
  iconNode.style.color = value;
229
- me.vdom = vdom;
225
+ me.update();
230
226
  }
231
227
 
232
228
  /**
@@ -280,7 +276,6 @@ class Base extends Component {
280
276
  */
281
277
  afterSetText(value, oldValue) {
282
278
  let me = this,
283
- vdom = me.vdom,
284
279
  vdomRoot = me.getVdomRoot(),
285
280
  textNode = vdomRoot.cn[1];
286
281
 
@@ -295,7 +290,7 @@ class Base extends Component {
295
290
  textNode.innerHTML = value;
296
291
  }
297
292
 
298
- me.vdom = vdom;
293
+ me.update();
299
294
  }
300
295
 
301
296
  /**
@@ -306,7 +301,6 @@ class Base extends Component {
306
301
  */
307
302
  afterSetUrl(value, oldValue) {
308
303
  let me = this,
309
- vdom = me.vdom,
310
304
  vdomRoot = me.getVdomRoot();
311
305
 
312
306
  if (value) {
@@ -317,7 +311,7 @@ class Base extends Component {
317
311
  vdomRoot.tag = 'button';
318
312
  }
319
313
 
320
- me.vdom = vdom;
314
+ me.update();
321
315
  }
322
316
 
323
317
  /**
@@ -329,8 +323,7 @@ class Base extends Component {
329
323
  afterSetUseRippleEffect(value, oldValue) {
330
324
  let me = this,
331
325
  listener = {click: me.showRipple, scope: me},
332
- rippleWrapper = me.getRippleWrapper(),
333
- vdom = me.vdom;
326
+ rippleWrapper = me.getRippleWrapper();
334
327
 
335
328
  if (!value && oldValue) {
336
329
  me.removeDomListeners(listener);
@@ -340,7 +333,7 @@ class Base extends Component {
340
333
 
341
334
  // setting the config to false should end running ripple animations
342
335
  rippleWrapper.removeDom = true;
343
- me.vdom = vdom;
336
+ me.update();
344
337
  }
345
338
 
346
339
  /**
@@ -351,7 +344,6 @@ class Base extends Component {
351
344
  */
352
345
  afterSetUrlTarget(value, oldValue) {
353
346
  let me = this,
354
- vdom = me.vdom,
355
347
  vdomRoot = me.getVdomRoot();
356
348
 
357
349
  if (me.url) {
@@ -360,7 +352,7 @@ class Base extends Component {
360
352
  delete vdomRoot.target;
361
353
  }
362
354
 
363
- me.vdom = vdom;
355
+ me.update();
364
356
  }
365
357
 
366
358
  /**
@@ -459,7 +451,6 @@ class Base extends Component {
459
451
  buttonRect = data.path[0].rect,
460
452
  diameter = Math.max(buttonRect.height, buttonRect.width),
461
453
  radius = diameter / 2,
462
- vdom = me.vdom,
463
454
  rippleEffectDuration = me.rippleEffectDuration,
464
455
  rippleWrapper = me.getRippleWrapper(),
465
456
  rippleEl = rippleWrapper.cn[0],
@@ -474,13 +465,12 @@ class Base extends Component {
474
465
  });
475
466
 
476
467
  delete rippleWrapper.removeDom;
477
-
478
- me.vdom = vdom;
468
+ me.update();
479
469
 
480
470
  await Neo.timeout(1);
481
471
 
482
472
  rippleEl.style.animation = `ripple ${rippleEffectDuration}ms linear`;
483
- me.vdom = vdom;
473
+ me.update();
484
474
 
485
475
  me.#rippleTimeoutId = rippleTimeoutId = setTimeout(() => {
486
476
  // we do not want to break animations when clicking multiple times
@@ -488,7 +478,7 @@ class Base extends Component {
488
478
  me.#rippleTimeoutId = null;
489
479
 
490
480
  rippleWrapper.removeDom = true;
491
- me.vdom = vdom;
481
+ me.update();
492
482
  }
493
483
  }, rippleEffectDuration);
494
484
  }
@@ -54,8 +54,7 @@ class Split extends Button {
54
54
  construct(config) {
55
55
  super.construct(config);
56
56
 
57
- let me = this,
58
- vdom = me.vdom;
57
+ let me = this;
59
58
 
60
59
  me.triggerButton = Neo.create({
61
60
  module : Button,
@@ -68,8 +67,8 @@ class Split extends Button {
68
67
  ...me.triggerButtonConfig
69
68
  });
70
69
 
71
- vdom.cn.push(me.triggerButton.vdom);
72
- me.vdom = vdom;
70
+ me.vdom.cn.push(me.triggerButton.vdom);
71
+ me.update();
73
72
  }
74
73
 
75
74
  /**
@@ -258,8 +258,7 @@ class MainContainer extends Container {
258
258
  if (oldValue !== undefined) {
259
259
  let me = this,
260
260
  sideBar = me.items[1].items[0],
261
- style = sideBar.style || {},
262
- vdom;
261
+ style = sideBar.style || {};
263
262
 
264
263
  if (value) {
265
264
  delete sideBar.vdom.removeDom;
@@ -279,9 +278,8 @@ class MainContainer extends Container {
279
278
 
280
279
  me.promiseVdomUpdate().then(() => {
281
280
  setTimeout(() => {
282
- vdom = sideBar.vdom;
283
- vdom.removeDom = true;
284
- sideBar.vdom = vdom;
281
+ sideBar.vdom.removeDom = true;
282
+ sideBar.update();
285
283
 
286
284
  sideBar.mounted = false;
287
285
  }, 400);
@@ -51,8 +51,7 @@ class SettingsContainer extends Container {
51
51
  */
52
52
  collapse(width) {
53
53
  let me = this,
54
- style = me.style || {},
55
- vdom;
54
+ style = me.style || {};
56
55
 
57
56
  style.marginRight = `-${width}px`;
58
57
  me._style = style; // silent update
@@ -62,9 +61,8 @@ class SettingsContainer extends Container {
62
61
  setTimeout(() => {
63
62
  me.collapsed = true;
64
63
 
65
- vdom = me.vdom;
66
- vdom.removeDom = true;
67
- me.vdom = vdom;
64
+ me.vdom.removeDom = true;
65
+ me.update();
68
66
 
69
67
  me.mounted = false;
70
68
  }, 400);
@@ -390,13 +390,12 @@ class YearComponent extends Component {
390
390
  */
391
391
  afterSetShowWeekNumbers(value, oldValue) {
392
392
  if (oldValue !== undefined) {
393
- let me = this,
394
- vdom = me.vdom,
395
- i = 0,
393
+ let me = this,
394
+ i = 0,
396
395
  itemCn, j, len;
397
396
 
398
397
  for (; i < 12; i++) {
399
- itemCn = vdom.cn[0].cn[1].cn[i].cn;
398
+ itemCn = me.vdom.cn[0].cn[1].cn[i].cn;
400
399
  len = itemCn.length;
401
400
 
402
401
  for (j = 1; j < len; j++) {
@@ -404,7 +403,7 @@ class YearComponent extends Component {
404
403
  }
405
404
  }
406
405
 
407
- me.vdom = vdom;
406
+ me.update();
408
407
  }
409
408
  }
410
409
 
@@ -417,7 +416,6 @@ class YearComponent extends Component {
417
416
  afterSetSixWeeksPerMonth(value, oldValue) {
418
417
  if (oldValue !== undefined) {
419
418
  let me = this,
420
- vdom = me.vdom,
421
419
  date = me.currentDate, // cloned
422
420
  i = 0;
423
421
 
@@ -425,11 +423,11 @@ class YearComponent extends Component {
425
423
  date.setDate(1);
426
424
 
427
425
  for (; i < 12; i++) {
428
- vdom.cn[0].cn[1].cn[i].cn[7].removeDom = DateUtil.getWeeksOfMonth(date, me.weekStartDay) === 5 && !value;
426
+ me.vdom.cn[0].cn[1].cn[i].cn[7].removeDom = DateUtil.getWeeksOfMonth(date, me.weekStartDay) === 5 && !value;
429
427
  date.setMonth(date.getMonth() + 1);
430
428
  }
431
429
 
432
- me.vdom = vdom;
430
+ me.update();
433
431
  }
434
432
  }
435
433
 
@@ -517,7 +515,7 @@ class YearComponent extends Component {
517
515
  me.promiseVdomUpdate(vdom).then(() => {
518
516
  y = scrollFromTop ? -data.height : 0;
519
517
  vdom.cn[0].cn[0].style.transform = `translateY(${y}px)`;
520
- me.vdom = vdom;
518
+ me.update();
521
519
 
522
520
  setTimeout(() => {
523
521
  vdom.cn[0] = vdom.cn[0].cn[0].cn[scrollFromTop ? 1 : 0];
@@ -376,11 +376,8 @@ class Component extends BaseComponent {
376
376
  * @protected
377
377
  */
378
378
  afterSetUseScrollBoxShadows(value, oldValue) {
379
- let me = this,
380
- vdom = me.vdom;
381
-
382
- NeoArray[value ? 'add' : 'remove'](me.vdom.cn[1].cls, 'neo-scroll-shadows');
383
- me.vdom = vdom;
379
+ NeoArray[value ? 'add' : 'remove'](this.vdom.cn[1].cls, 'neo-scroll-shadows');
380
+ this.update();
384
381
  }
385
382
 
386
383
  /**
@@ -635,8 +632,7 @@ class Component extends BaseComponent {
635
632
  onWheel(data) {
636
633
  if (Math.abs(data.deltaY) > Math.abs(data.deltaX)) {
637
634
  let me = this,
638
- vdom = me.vdom,
639
- container = vdom.cn[1],
635
+ container = me.vdom.cn[1],
640
636
  i = 0,
641
637
  date, len, week;
642
638
 
@@ -663,7 +659,7 @@ class Component extends BaseComponent {
663
659
  container.cn.push(week.row);
664
660
  }
665
661
 
666
- me.vdom = vdom;
662
+ me.update();
667
663
  }
668
664
 
669
665
  else if (data.deltaY < 0 && Math.round(data.scrollTop / (data.clientHeight - me.headerHeight) * 6) < 1) {
@@ -706,7 +702,7 @@ class Component extends BaseComponent {
706
702
  me.isScrolling = true;
707
703
  NeoArray.add(me.vdom.cn[1].cls, 'neo-is-scrolling');
708
704
  me.vdom.cn[0].cn[0].style.opacity = 0;
709
- me.vdom = vdom;
705
+ me.update();
710
706
  }
711
707
 
712
708
  me.scrollTaskId && clearTimeout(me.scrollTaskId);
@@ -741,8 +737,7 @@ class Component extends BaseComponent {
741
737
 
742
738
  NeoArray.remove(vdom.cn[1].cls, 'neo-is-scrolling');
743
739
  header.style.opacity = 1;
744
-
745
- me.vdom = vdom;
740
+ me.update();
746
741
 
747
742
  // todo: #990 => scroll the view to the closest row
748
743
  }
@@ -792,7 +787,7 @@ class Component extends BaseComponent {
792
787
  date.setDate(date.getDate() + 1);
793
788
  }
794
789
 
795
- me.vdom = vdom;
790
+ me.update();
796
791
  }
797
792
 
798
793
  /**
@@ -507,7 +507,6 @@ class Component extends BaseComponent {
507
507
  afterSetTimeAxisPosition(value, oldValue) {
508
508
  let me = this,
509
509
  cls = me.cls,
510
- vdom = me.vdom,
511
510
  timeAxisContainer = me.getColumnTimeAxisContainer();
512
511
 
513
512
  NeoArray[value === 'end' ? 'add' : 'remove'](cls, 'neo-timeaxis-end');
@@ -516,8 +515,8 @@ class Component extends BaseComponent {
516
515
  timeAxisContainer.cn.unshift(timeAxisContainer.cn.pop()); // switch the order of the 2 items
517
516
  }
518
517
 
519
- me._cls = cls; // silent update
520
- me.vdom = vdom;
518
+ me.cls = cls; // silent update
519
+ me.update();
521
520
  }
522
521
 
523
522
  /**
@@ -146,9 +146,6 @@ class TimeAxisComponent extends Component {
146
146
  vdom.cn[i].removeDom = (i < startTime || i - 1 >= endTime);
147
147
  }
148
148
 
149
- // silent update: the view containing this component will trigger the vdom update
150
- me._vdom = vdom;
151
-
152
149
  me.fire('change', {
153
150
  component: me,
154
151
  rowHeight,