neo.mjs 4.3.9 → 4.3.11

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 (95) hide show
  1. package/README.md +1 -1
  2. package/apps/covid/view/MainContainerController.mjs +9 -11
  3. package/apps/krausest/view/MainComponent.mjs +3 -4
  4. package/apps/krausest/view/TableComponent.mjs +2 -3
  5. package/apps/realworld/view/HeaderComponent.mjs +7 -10
  6. package/apps/realworld/view/HomeComponent.mjs +16 -24
  7. package/apps/realworld/view/MainContainerController.mjs +3 -3
  8. package/apps/realworld/view/article/CommentComponent.mjs +11 -19
  9. package/apps/realworld/view/article/Component.mjs +20 -36
  10. package/apps/realworld/view/article/CreateCommentComponent.mjs +9 -16
  11. package/apps/realworld/view/article/CreateComponent.mjs +12 -20
  12. package/apps/realworld/view/article/PreviewComponent.mjs +16 -30
  13. package/apps/realworld/view/article/TagListComponent.mjs +4 -5
  14. package/apps/realworld/view/user/ProfileComponent.mjs +14 -21
  15. package/apps/realworld/view/user/SettingsComponent.mjs +9 -16
  16. package/apps/realworld/view/user/SignUpComponent.mjs +6 -9
  17. package/apps/realworld2/view/MainContainerController.mjs +2 -2
  18. package/apps/realworld2/view/article/PreviewComponent.mjs +17 -31
  19. package/apps/realworld2/view/article/PreviewList.mjs +4 -7
  20. package/apps/realworld2/view/article/TagListComponent.mjs +4 -5
  21. package/apps/sharedcovid/view/MainContainerController.mjs +10 -13
  22. package/apps/website/data/blog.json +1 -1
  23. package/apps/website/view/blog/List.mjs +2 -3
  24. package/buildScripts/injectPackageVersion.mjs +43 -0
  25. package/docs/app/view/ApiTreeList.mjs +2 -6
  26. package/docs/app/view/ExamplesTreeList.mjs +2 -6
  27. package/docs/app/view/TutorialsTreeList.mjs +2 -6
  28. package/docs/app/view/classdetails/HeaderComponent.mjs +3 -4
  29. package/docs/app/view/classdetails/HierarchyTreeList.mjs +1 -2
  30. package/docs/app/view/classdetails/MembersList.mjs +4 -6
  31. package/docs/app/view/classdetails/SourceViewComponent.mjs +3 -6
  32. package/docs/app/view/classdetails/TutorialComponent.mjs +4 -5
  33. package/examples/component/coronaGallery/CountryGallery.mjs +36 -59
  34. package/examples/form/field/date/MainContainer.mjs +1 -1
  35. package/examples/tabs/MainContainer.mjs +4 -6
  36. package/examples/todoList/version1/MainComponent.mjs +5 -7
  37. package/examples/todoList/version2/TodoList.mjs +4 -5
  38. package/package.json +8 -7
  39. package/resources/scss/src/draggable/tree/DragZone.scss +3 -1
  40. package/src/DefaultConfig.mjs +9 -1
  41. package/src/button/Base.mjs +18 -27
  42. package/src/button/Split.mjs +3 -4
  43. package/src/calendar/view/MainContainer.mjs +3 -5
  44. package/src/calendar/view/SettingsContainer.mjs +3 -5
  45. package/src/calendar/view/YearComponent.mjs +7 -9
  46. package/src/calendar/view/month/Component.mjs +7 -12
  47. package/src/calendar/view/week/Component.mjs +2 -3
  48. package/src/calendar/view/week/TimeAxisComponent.mjs +0 -3
  49. package/src/component/Base.mjs +37 -55
  50. package/src/component/Carousel.mjs +5 -9
  51. package/src/component/Chip.mjs +6 -12
  52. package/src/component/Circle.mjs +16 -22
  53. package/src/component/Clock.mjs +1 -1
  54. package/src/component/DateSelector.mjs +4 -9
  55. package/src/component/Gallery.mjs +12 -21
  56. package/src/component/Helix.mjs +2 -3
  57. package/src/component/Label.mjs +2 -3
  58. package/src/component/Legend.mjs +6 -9
  59. package/src/container/Base.mjs +5 -9
  60. package/src/container/Panel.mjs +4 -0
  61. package/src/dialog/Base.mjs +40 -42
  62. package/src/dialog/header/Toolbar.mjs +105 -0
  63. package/src/draggable/list/DragZone.mjs +1 -2
  64. package/src/draggable/tree/DragZone.mjs +1 -2
  65. package/src/form/Fieldset.mjs +4 -6
  66. package/src/form/field/CheckBox.mjs +23 -39
  67. package/src/form/field/Color.mjs +2 -3
  68. package/src/form/field/Display.mjs +1 -2
  69. package/src/form/field/Number.mjs +1 -2
  70. package/src/form/field/Picker.mjs +0 -1
  71. package/src/form/field/Text.mjs +40 -57
  72. package/src/form/field/TextArea.mjs +2 -3
  73. package/src/form/field/trigger/Base.mjs +2 -3
  74. package/src/form/field/trigger/SpinUpDown.mjs +3 -4
  75. package/src/form/field/trigger/Time.mjs +3 -4
  76. package/src/grid/View.mjs +2 -2
  77. package/src/grid/header/Toolbar.mjs +1 -2
  78. package/src/layout/Card.mjs +2 -2
  79. package/src/list/Base.mjs +6 -11
  80. package/src/list/plugin/Animate.mjs +5 -12
  81. package/src/plugin/Resizable.mjs +3 -6
  82. package/src/selection/Model.mjs +3 -7
  83. package/src/selection/grid/CellColumnModel.mjs +2 -5
  84. package/src/selection/grid/CellColumnRowModel.mjs +2 -5
  85. package/src/selection/grid/CellRowModel.mjs +4 -13
  86. package/src/selection/table/CellColumnModel.mjs +2 -5
  87. package/src/selection/table/CellColumnRowModel.mjs +2 -5
  88. package/src/selection/table/CellRowModel.mjs +4 -13
  89. package/src/sitemap/Component.mjs +1 -1
  90. package/src/tab/Strip.mjs +8 -11
  91. package/src/tab/header/Toolbar.mjs +2 -3
  92. package/src/table/View.mjs +3 -3
  93. package/src/table/header/Button.mjs +4 -6
  94. package/src/table/header/Toolbar.mjs +3 -5
  95. package/src/tree/List.mjs +6 -9
@@ -81,11 +81,8 @@ class Chip extends Component {
81
81
  * @protected
82
82
  */
83
83
  afterSetClosable(value, oldValue) {
84
- let me = this,
85
- vdom = me.vdom;
86
-
87
- vdom.cn[2].removeDom = !value;
88
- me.vdom = vdom;
84
+ this.vdom.cn[2].removeDom = !value;
85
+ this.update();
89
86
  }
90
87
 
91
88
  /**
@@ -108,8 +105,7 @@ class Chip extends Component {
108
105
  */
109
106
  afterSetIconCls(value, oldValue) {
110
107
  let me = this,
111
- vdom = me.vdom,
112
- iconNode = vdom.cn[0];
108
+ iconNode = me.vdom.cn[0];
113
109
 
114
110
  NeoArray.remove(iconNode.cls, oldValue);
115
111
 
@@ -120,7 +116,7 @@ class Chip extends Component {
120
116
  NeoArray.add(iconNode.cls, value);
121
117
  }
122
118
 
123
- me.vdom = vdom;
119
+ me.update();
124
120
  }
125
121
 
126
122
  /**
@@ -130,9 +126,7 @@ class Chip extends Component {
130
126
  * @protected
131
127
  */
132
128
  afterSetText(value, oldValue) {
133
- let me = this,
134
- vdom = me.vdom,
135
- textNode = vdom.cn[1];
129
+ let textNode = this.vdom.cn[1];
136
130
 
137
131
  if (!value || value === '') {
138
132
  textNode.removeDom = true;
@@ -141,7 +135,7 @@ class Chip extends Component {
141
135
  textNode.innerHTML = value;
142
136
  }
143
137
 
144
- me.vdom = vdom;
138
+ this.update();
145
139
  }
146
140
 
147
141
  /**
@@ -132,8 +132,7 @@ class Circle extends Component {
132
132
  cls : ['neo-circle', 'neo-circle-back']
133
133
  });
134
134
 
135
- let me = this,
136
- vdom = me.vdom;
135
+ let me = this;
137
136
 
138
137
  if (!me.backsideIconPath) {
139
138
  me.backsideIconPath = Neo.config.resourcesPath + 'images/circle/';
@@ -177,7 +176,7 @@ class Circle extends Component {
177
176
  me.updateOuterCircle(true);
178
177
  me.updateTitle(true);
179
178
 
180
- me.vdom = vdom;
179
+ me.update();
181
180
  }
182
181
 
183
182
  /**
@@ -205,8 +204,7 @@ class Circle extends Component {
205
204
  afterSetMaxItems(value, oldValue) {
206
205
  if (oldValue && this.rendered) {
207
206
  let me = this,
208
- frontEl = me.getFrontEl(),
209
- vdom = me.vdom;
207
+ frontEl = me.getFrontEl();
210
208
 
211
209
  if (value < oldValue) {
212
210
  if (me.collapsed) {
@@ -216,12 +214,12 @@ class Circle extends Component {
216
214
 
217
215
  setTimeout(() => {
218
216
  frontEl.cn.splice(value + 2);
219
- me.vdom = vdom;
217
+ me.update();
220
218
  }, 300);
221
219
  }
222
220
 
223
221
  me.updateItemPositions(true);
224
- me.vdom = vdom;
222
+ me.update();
225
223
  } else {
226
224
  me.createItems(oldValue, true);
227
225
  me.updateItemPositions(true);
@@ -229,7 +227,7 @@ class Circle extends Component {
229
227
  me.promiseVdomUpdate().then(() => {
230
228
  if (!me.collapsed) {
231
229
  me.updateItemOpacity(1, true, oldValue);
232
- me.vdom = vdom;
230
+ me.update();
233
231
  }
234
232
  });
235
233
  }
@@ -372,8 +370,7 @@ class Circle extends Component {
372
370
  collapseItem(data) {
373
371
  let me = this,
374
372
  item = me.getItemEl(data.path[0].id),
375
- style = item.cn[0].style,
376
- vdom = me.vdom;
373
+ style = item.cn[0].style;
377
374
 
378
375
  delete style.marginLeft;
379
376
  delete style.marginTop;
@@ -382,7 +379,7 @@ class Circle extends Component {
382
379
  style.height = me.itemSize + 'px';
383
380
  style.width = me.itemSize + 'px';
384
381
 
385
- me.vdom = vdom;
382
+ me.update();
386
383
  }
387
384
 
388
385
  /**
@@ -470,8 +467,7 @@ class Circle extends Component {
470
467
  */
471
468
  expandItem(data) {
472
469
  let me = this,
473
- item = me.getItemEl(data.path[0].id),
474
- vdom = me.vdom;
470
+ item = me.getItemEl(data.path[0].id);
475
471
 
476
472
  item.cn[0].style = {
477
473
  height : (me.itemSize + 20) + 'px',
@@ -481,17 +477,16 @@ class Circle extends Component {
481
477
  zIndex : 40
482
478
  };
483
479
 
484
- me.vdom = vdom;
480
+ me.update();
485
481
  }
486
482
 
487
483
  flipCircle() {
488
- let me = this,
489
- vdom = me.vdom;
484
+ let me = this;
490
485
 
491
- NeoArray[me.isFlipped ? 'remove': 'add'](vdom.cn[0].cls, 'neo-flipped');
486
+ NeoArray[me.isFlipped ? 'remove': 'add'](me.vdom.cn[0].cls, 'neo-flipped');
492
487
 
493
488
  me.isFlipped = !me.isFlipped;
494
- me.vdom = vdom;
489
+ me.update();
495
490
  }
496
491
 
497
492
  /**
@@ -644,8 +639,7 @@ class Circle extends Component {
644
639
  */
645
640
  rotate() {
646
641
  let me = this,
647
- vdom = me.vdom,
648
- circleCenterEl = vdom.cn[0],
642
+ circleCenterEl = me.vdom.cn[0],
649
643
  transform = [
650
644
  `rotateX(${me.rotateX}deg)`,
651
645
  `rotateY(${me.rotateY}deg)`,
@@ -660,12 +654,12 @@ class Circle extends Component {
660
654
  me.promiseVdomUpdate().then(() => {
661
655
  me.updateItemAngle(true);
662
656
  circleCenterEl.style.transform = transform;
663
- me.vdom = vdom;
657
+ me.update();
664
658
  });
665
659
  } else {
666
660
  me.updateItemAngle(true);
667
661
  circleCenterEl.style.transform = transform;
668
- me.vdom = vdom;
662
+ me.update();
669
663
  }
670
664
  }
671
665
 
@@ -113,7 +113,7 @@ class Clock extends Component {
113
113
  vdom.cn[0].style.transform = `rotate(${minutesAngle}deg)`;
114
114
  vdom.cn[1].style.transform = `rotate(${hoursAngle}deg)`;
115
115
 
116
- this.vdom = vdom;
116
+ this.update();
117
117
  }
118
118
  }
119
119
 
@@ -231,14 +231,13 @@ class DateSelector extends Component {
231
231
  afterSetLocale(value, oldValue) {
232
232
  if (oldValue !== undefined) {
233
233
  let me = this,
234
- dt = new Intl.DateTimeFormat(me.locale, {month: 'short'}),
235
- vdom = me.vdom;
234
+ dt = new Intl.DateTimeFormat(me.locale, {month: 'short'});
236
235
 
237
236
  me.updateHeaderDays(me.dayNameFormat, '', true);
238
237
 
239
238
  me.getHeaderMonthEl().html = dt.format(me.currentDate);
240
239
 
241
- me.vdom = vdom;
240
+ me.update();
242
241
  }
243
242
  }
244
243
 
@@ -423,7 +422,7 @@ class DateSelector extends Component {
423
422
  me.promiseVdomUpdate().then(() => {
424
423
  me.changeMonthTransitionCallback({data: data[0], slideDirection: slideDirection});
425
424
  me.updateHeaderMonthTransitionCallback(headerMonthOpts);
426
- me.vdom = vdom;
425
+ me.update();
427
426
 
428
427
  setTimeout(() => {
429
428
  me.changeMonthWrapperCallback(slideDirection);
@@ -453,7 +452,6 @@ class DateSelector extends Component {
453
452
 
454
453
  x = slideDirection === 'right' ? -data.width : 0;
455
454
  vdom.cn[1].cn[0].style.transform = `translateX(${x}px)`;
456
- me._vdom = vdom; // silent update
457
455
  }
458
456
 
459
457
  /**
@@ -466,7 +464,6 @@ class DateSelector extends Component {
466
464
  vdom = me.vdom;
467
465
 
468
466
  vdom.cn[1] = vdom.cn[1].cn[0].cn[slideDirection === 'right' ? 1 : 0];
469
- me._vdom = vdom; // silent update
470
467
  }
471
468
 
472
469
  /**
@@ -511,7 +508,7 @@ class DateSelector extends Component {
511
508
  me.promiseVdomUpdate(vdom).then(() => {
512
509
  y = scrollFromTop ? -data.height : 0;
513
510
  vdom.cn[1].cn[0].style.transform = `translateY(${y}px)`;
514
- me.vdom = vdom;
511
+ me.update();
515
512
 
516
513
  setTimeout(() => {
517
514
  vdom.cn[1] = vdom.cn[1].cn[0].cn[scrollFromTop ? 1 : 0];
@@ -926,7 +923,6 @@ class DateSelector extends Component {
926
923
 
927
924
  y = slideDirection === 'top' ? -data.height : 0;
928
925
  headerCenterEl.cn[0].cn[0].style.transform = `translateY(${y}px)`;
929
- me._vdom = vdom; // silent update
930
926
  }
931
927
 
932
928
  /**
@@ -944,7 +940,6 @@ class DateSelector extends Component {
944
940
  slideDirection = yearIncrement > 0 ? 'bottom' : yearIncrement < 0 ? 'top' : increment < 0 ? 'top' : 'bottom';
945
941
 
946
942
  headerCenterEl.cn[0] = headerCenterEl.cn[0].cn[0].cn[slideDirection === 'top' ? 1 : 0];
947
- me._vdom = vdom; // silent update
948
943
  }
949
944
 
950
945
  /**
@@ -211,8 +211,7 @@ class Gallery extends Component {
211
211
  super.afterSetId(value, oldValue);
212
212
 
213
213
  let me = this,
214
- vdom = me.vdom,
215
- origin = vdom.cn[0],
214
+ origin = me.vdom.cn[0],
216
215
  camera = origin.cn[0],
217
216
  dolly = camera.cn[0],
218
217
  view = dolly.cn[0],
@@ -223,7 +222,7 @@ class Gallery extends Component {
223
222
  origin.id = prefix + 'origin';
224
223
  view .id = prefix + 'view';
225
224
 
226
- me.vdom = vdom;
225
+ me.update();
227
226
  }
228
227
 
229
228
  /**
@@ -297,7 +296,6 @@ class Gallery extends Component {
297
296
  let me = this,
298
297
  i = 0,
299
298
  len = Math.min(me.maxItems, me.store.items.length),
300
- vdom = me.vdom,
301
299
  view = me.getItemsRoot();
302
300
 
303
301
  if (me.rendered) {
@@ -308,7 +306,7 @@ class Gallery extends Component {
308
306
  view.cn[i].style.transform = me.getItemTransform(i);
309
307
  }
310
308
 
311
- me.vdom = vdom;
309
+ me.update();
312
310
 
313
311
  setTimeout(() => {
314
312
  let sm = me.selectionModel;
@@ -453,12 +451,11 @@ class Gallery extends Component {
453
451
  */
454
452
  destroyItems(startIndex, amountItems) {
455
453
  let me = this,
456
- vdom = me.vdom,
457
454
  countItems = amountItems || me.store.getCount(),
458
455
  selectedItem = me.selectionModel.items[0];
459
456
 
460
457
  me.getItemsRoot().cn.splice(startIndex || 0, countItems);
461
- me.vdom = vdom;
458
+ me.update();
462
459
 
463
460
  if (me.selectionModel.hasSelection() && selectedItem > startIndex && selectedItem < startIndex + countItems) {
464
461
  me.afterSetMounted(true, false);
@@ -546,12 +543,10 @@ class Gallery extends Component {
546
543
  *
547
544
  */
548
545
  moveOrigin() {
549
- let me = this,
550
- vdom = me.vdom;
551
-
552
- vdom.cn[0].style.transform = me.translate3d(me.translateX, me.translateY, me.translateZ);
546
+ let me = this;
553
547
 
554
- me.vdom = vdom;
548
+ me.vdom.cn[0].style.transform = me.translate3d(me.translateX, me.translateY, me.translateZ);
549
+ me.update();
555
550
  }
556
551
 
557
552
  /**
@@ -595,7 +590,7 @@ class Gallery extends Component {
595
590
  itemHeight = me.itemHeight,
596
591
  itemWidth = me.itemWidth,
597
592
  vdom = me.vdom,
598
- camera = vdom.cn[0].cn[0],
593
+ camera = me.vdom.cn[0].cn[0],
599
594
  cameraStyle = camera.style,
600
595
  dollyTransform = me.getCameraTransformForCell(index),
601
596
  height = me.offsetHeight / (me.amountRows + 2),
@@ -651,17 +646,15 @@ class Gallery extends Component {
651
646
  cameraStyle.transform = `rotateY(${angle}deg)`;
652
647
  cameraStyle.transitionDuration = '330ms';
653
648
 
654
- me.vdom = vdom;
649
+ me.update();
655
650
 
656
651
  timeoutId = setTimeout(() => {
657
652
  NeoArray.remove(me.transitionTimeouts, timeoutId);
658
653
 
659
- vdom = me.vdom;
660
-
661
654
  cameraStyle.transform = 'rotateY(0deg)';
662
655
  cameraStyle.transitionDuration = '5000ms';
663
656
 
664
- me.vdom = vdom;
657
+ me.update();
665
658
  }, 330);
666
659
 
667
660
  me.transitionTimeouts.push(timeoutId);
@@ -678,7 +671,6 @@ class Gallery extends Component {
678
671
  hasChange = false,
679
672
  items = [...me.store.items || []],
680
673
  newCn = [],
681
- vdom = me.vdom,
682
674
  view = me.getItemsRoot(),
683
675
  vdomMap = view.cn.map(e => e.id),
684
676
  fromIndex, vdomId;
@@ -699,7 +691,7 @@ class Gallery extends Component {
699
691
 
700
692
  if (hasChange) {
701
693
  view.cn = newCn;
702
- me.vdom = vdom;
694
+ me.update();
703
695
 
704
696
  setTimeout(() => {
705
697
  me.afterSetOrderByRow(me.orderByRow, !me.orderByRow);
@@ -725,7 +717,6 @@ class Gallery extends Component {
725
717
  amountRows = me.amountRows,
726
718
  orderByRow = me.orderByRow,
727
719
  secondLastColumn = amountRows - 1,
728
- vdom = me.vdom,
729
720
  view = me.getItemsRoot(),
730
721
  amountColumns;
731
722
 
@@ -741,7 +732,7 @@ class Gallery extends Component {
741
732
  }
742
733
  });
743
734
 
744
- me.vdom = vdom;
735
+ me.update();
745
736
  }
746
737
 
747
738
  /**
@@ -637,11 +637,10 @@ class Helix extends Component {
637
637
  * @param {Number} [amountItems]
638
638
  */
639
639
  destroyItems(startIndex, amountItems) {
640
- let me = this,
641
- vdom = me.vdom;
640
+ let me = this;
642
641
 
643
642
  me.getItemsRoot().cn.splice(startIndex || 0, amountItems || me.store.getCount());
644
- me.vdom = vdom;
643
+ me.update();
645
644
  }
646
645
 
647
646
  /**
@@ -39,9 +39,8 @@ class Label extends Component {
39
39
  * @protected
40
40
  */
41
41
  afterSetText(value, oldValue) {
42
- let vdom = this.vdom;
43
- vdom.html = value;
44
- this.vdom = vdom;
42
+ this.vdom.html = value;
43
+ this.update();
45
44
  }
46
45
  }
47
46
 
@@ -51,9 +51,8 @@ class Legend extends Component {
51
51
  * @protected
52
52
  */
53
53
  afterSetIconCls(value, oldValue) {
54
- let vdom = this.vdom;
55
- vdom.cn[0].html = `<i class="neo-legend-icon ${value}"></i>`;
56
- this.vdom = vdom;
54
+ this.vdom.cn[0].html = `<i class="neo-legend-icon ${value}"></i>`;
55
+ this.update();
57
56
  }
58
57
 
59
58
  /**
@@ -63,9 +62,8 @@ class Legend extends Component {
63
62
  * @protected
64
63
  */
65
64
  afterSetText(value, oldValue) {
66
- let vdom = this.vdom;
67
- vdom.cn[1].html = value;
68
- this.vdom = vdom;
65
+ this.vdom.cn[1].html = value;
66
+ this.update();
69
67
  }
70
68
 
71
69
  /**
@@ -75,9 +73,8 @@ class Legend extends Component {
75
73
  * @protected
76
74
  */
77
75
  afterSetUseIcon(value, oldValue) {
78
- let vdom = this.vdom;
79
- vdom.cn[0].removeDom = !value;
80
- this.vdom = vdom;
76
+ this.vdom.cn[0].removeDom = !value;
77
+ this.update();
81
78
  }
82
79
  }
83
80
 
@@ -258,8 +258,7 @@ class Base extends Component {
258
258
  let me = this,
259
259
  items = me._items,
260
260
  itemsRoot = me.getVdomItemsRoot(),
261
- layout = me.layout,
262
- vdom = me.vdom;
261
+ layout = me.layout;
263
262
 
264
263
  itemsRoot.cn = [];
265
264
 
@@ -273,7 +272,7 @@ class Base extends Component {
273
272
  itemsRoot.cn.push(item.vdom);
274
273
  });
275
274
 
276
- me.vdom = vdom;
275
+ me.update();
277
276
  }
278
277
 
279
278
  /**
@@ -381,9 +380,7 @@ class Base extends Component {
381
380
  me.getVdomItemsRoot().cn.splice(index, 0, item.vdom);
382
381
  }
383
382
 
384
- if (silent) {
385
- me._vdom = vdom;
386
- } else {
383
+ if (!silent) {
387
384
  me.promiseVdomUpdate().then(() => {
388
385
  me.fire('insert', {
389
386
  index,
@@ -539,13 +536,12 @@ class Base extends Component {
539
536
  switchItems(item1id, item2id) {
540
537
  let me = this,
541
538
  item1Index = Neo.isNumber(item1id) ? item1id : me.indexOf(item1id),
542
- item2Index = Neo.isNumber(item2id) ? item2id : me.indexOf(item2id),
543
- vdom = me.vdom;
539
+ item2Index = Neo.isNumber(item2id) ? item2id : me.indexOf(item2id);
544
540
 
545
541
  NeoArray.move(me.items, item2Index, item1Index);
546
542
  NeoArray.move(me.getVdomItemsRoot().cn, item2Index, item1Index);
547
543
 
548
- me.vdom = vdom;
544
+ me.update();
549
545
  }
550
546
  }
551
547
 
@@ -68,6 +68,10 @@ class Panel extends Container {
68
68
  * @returns {Object}
69
69
  */
70
70
  static createHeaderConfig(header) {
71
+ if (Neo.typeOf(header) === 'NeoInstance') {
72
+ return header;
73
+ }
74
+
71
75
  let config = {
72
76
  ntype: 'toolbar',
73
77
  cls : ['neo-panel-header-toolbar', 'neo-toolbar'],
@@ -1,5 +1,6 @@
1
1
  import Panel from '../container/Panel.mjs';
2
2
  import NeoArray from '../util/Array.mjs';
3
+ import Toolbar from './header/Toolbar.mjs';
3
4
  import VDomUtil from '../util/VDom.mjs';
4
5
 
5
6
  let DragZone;
@@ -12,11 +13,11 @@ class Base extends Panel {
12
13
  static getStaticConfig() {return {
13
14
  /**
14
15
  * Valid values for closeAction
15
- * @member {String[]} closeActions=['close', 'hide']
16
+ * @member {String[]} closeActions=['close','hide']
16
17
  * @protected
17
18
  * @static
18
19
  */
19
- iconPositions: ['top', 'right', 'bottom', 'left']
20
+ closeActions: ['close', 'hide']
20
21
  }}
21
22
 
22
23
  static getConfig() {return {
@@ -80,6 +81,10 @@ class Base extends Panel {
80
81
  * @member {Object} dragZoneConfig=null
81
82
  */
82
83
  dragZoneConfig: null,
84
+ /**
85
+ * @member {Object} headerConfig=null
86
+ */
87
+ headerConfig: null,
83
88
  /**
84
89
  * @member {Neo.toolbar.Base|null} headerToolbar=null
85
90
  */
@@ -112,7 +117,7 @@ class Base extends Panel {
112
117
  /**
113
118
  * @member {String} title='Dialog Title'
114
119
  */
115
- title_: 'Dialog Title',
120
+ title: 'Dialog Title',
116
121
  /**
117
122
  * @member {Object} _vdom
118
123
  */
@@ -215,11 +220,10 @@ class Base extends Panel {
215
220
  */
216
221
  afterSetMaximized(value, oldValue) {
217
222
  let me = this,
218
- vdom = me.vdom,
219
- cls = vdom.cls;
223
+ cls = me.vdom.cls; // todo: using wrapperCls
220
224
 
221
225
  NeoArray[value ? 'add' : 'remove'](cls, 'neo-maximized');
222
- me.vdom = vdom;
226
+ me.update();
223
227
  }
224
228
 
225
229
  /**
@@ -234,14 +238,10 @@ class Base extends Panel {
234
238
  let me = this;
235
239
 
236
240
  if (value && me.animateTargetId) {
237
- Neo.currentWorker.promiseMessage('main', {
238
- action : 'updateDom',
239
- appName: me.appName,
240
- deltas : [{
241
- action: 'removeNode',
242
- id : me.getAnimateTargetId()
243
- }]
244
- });
241
+ Neo.applyDeltas(me.appName, {
242
+ action: 'removeNode',
243
+ id : me.getAnimateTargetId()
244
+ })
245
245
  }
246
246
  }
247
247
 
@@ -270,18 +270,6 @@ class Base extends Panel {
270
270
  });
271
271
  }
272
272
 
273
- /**
274
- * Triggered after the title config got changed
275
- * @param {String} value
276
- * @param {String} oldValue
277
- * @protected
278
- */
279
- afterSetTitle(value, oldValue) {
280
- if (oldValue) {
281
- this.down({flag: 'title-label'}).text = value;
282
- }
283
- }
284
-
285
273
  /**
286
274
  *
287
275
  */
@@ -405,26 +393,36 @@ class Base extends Panel {
405
393
 
406
394
  me.draggable && cls.push('neo-draggable');
407
395
 
408
- headers.unshift({
409
- cls : cls,
410
- dock : 'top',
411
- id : me.getHeaderToolbarId(),
412
- items: [{
413
- ntype: 'label',
414
- flag : 'title-label',
415
- text : me.title
416
- }, '->', {
417
- iconCls: 'far fa-window-maximize',
418
- handler: me.maximize.bind(me)
419
- }, {
420
- iconCls: 'far fa-window-close',
421
- handler: me.closeOrHide.bind(me)
422
- }]
396
+ me.headerToolbar = Neo.create({
397
+ module : Toolbar,
398
+ appName : me.appName,
399
+ cls,
400
+ dock : 'top',
401
+ id : me.getHeaderToolbarId(),
402
+ listeners: {headerAction: me.executeHeaderAction, scope: me},
403
+ title : me.title,
404
+ ...me.headerConfig
423
405
  });
424
406
 
407
+ headers.unshift(me.headerToolbar);
408
+
425
409
  me.headers = headers;
426
410
  }
427
411
 
412
+ /**
413
+ * {Object} data
414
+ */
415
+ executeHeaderAction(data) {
416
+ let me = this,
417
+
418
+ map = {
419
+ close : me.closeOrHide,
420
+ maximize: me.maximize
421
+ };
422
+
423
+ map[data.action].call(me, data);
424
+ }
425
+
428
426
  /**
429
427
  * Returns the id of the animation node
430
428
  * @returns {String}
@@ -491,7 +489,7 @@ class Base extends Panel {
491
489
  }
492
490
 
493
491
  /**
494
- * @param {Object} data
492
+ * @param {Object} [data]
495
493
  */
496
494
  maximize(data) {
497
495
  let me = this;