neo.mjs 7.15.0 → 8.0.0-alpha.1

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 (80) hide show
  1. package/apps/ServiceWorker.mjs +2 -2
  2. package/apps/portal/index.html +1 -1
  3. package/apps/portal/view/ViewportController.mjs +1 -1
  4. package/apps/portal/view/about/Container.mjs +2 -2
  5. package/apps/portal/view/home/FooterContainer.mjs +1 -1
  6. package/apps/realworld/view/HomeComponent.mjs +13 -14
  7. package/apps/realworld/view/user/ProfileComponent.mjs +1 -1
  8. package/apps/realworld/view/user/SignUpComponent.mjs +1 -2
  9. package/examples/ServiceWorker.mjs +2 -2
  10. package/examples/table/container/MainContainer.mjs +17 -12
  11. package/examples/table/nestedRecordFields/MainContainer.mjs +3 -1
  12. package/examples/todoList/version1/MainComponent.mjs +1 -1
  13. package/package.json +6 -6
  14. package/resources/scss/src/Global.scss +1 -1
  15. package/resources/scss/src/apps/portal/home/parts/MainNeo.scss +10 -5
  16. package/resources/scss/src/global/_all.scss +1 -1
  17. package/resources/scss/theme-neo-light/Global.scss +1 -1
  18. package/resources/scss/theme-neo-light/design-tokens/_all.scss +3 -3
  19. package/src/DefaultConfig.mjs +2 -2
  20. package/src/button/Base.mjs +41 -48
  21. package/src/calendar/view/SettingsContainer.mjs +4 -0
  22. package/src/calendar/view/calendars/ColorsList.mjs +6 -6
  23. package/src/calendar/view/calendars/Container.mjs +1 -1
  24. package/src/calendar/view/calendars/List.mjs +6 -2
  25. package/src/calendar/view/month/Component.mjs +1 -1
  26. package/src/calendar/view/week/Component.mjs +7 -7
  27. package/src/calendar/view/week/EventDragZone.mjs +1 -1
  28. package/src/calendar/view/week/TimeAxisComponent.mjs +2 -2
  29. package/src/calendar/view/week/plugin/DragDrop.mjs +3 -3
  30. package/src/collection/Base.mjs +4 -3
  31. package/src/component/Base.mjs +81 -36
  32. package/src/component/Circle.mjs +1 -3
  33. package/src/component/DateSelector.mjs +1 -1
  34. package/src/component/wrapper/MonacoEditor.mjs +5 -0
  35. package/src/container/Accordion.mjs +1 -1
  36. package/src/container/Base.mjs +18 -6
  37. package/src/core/Base.mjs +10 -9
  38. package/src/draggable/list/DragZone.mjs +1 -1
  39. package/src/draggable/toolbar/DragZone.mjs +1 -1
  40. package/src/draggable/toolbar/SortZone.mjs +1 -1
  41. package/src/draggable/tree/DragZone.mjs +1 -1
  42. package/src/form/Fieldset.mjs +2 -0
  43. package/src/form/field/Color.mjs +4 -4
  44. package/src/form/field/ComboBox.mjs +2 -2
  45. package/src/form/field/Date.mjs +2 -1
  46. package/src/form/field/Picker.mjs +2 -1
  47. package/src/form/field/Text.mjs +8 -8
  48. package/src/layout/Card.mjs +1 -0
  49. package/src/list/Chip.mjs +3 -2
  50. package/src/list/Circle.mjs +2 -1
  51. package/src/list/Component.mjs +5 -0
  52. package/src/manager/Component.mjs +158 -4
  53. package/src/manager/DomEvent.mjs +2 -2
  54. package/src/menu/List.mjs +4 -5
  55. package/src/menu/Panel.mjs +1 -1
  56. package/src/selection/Model.mjs +1 -1
  57. package/src/selection/grid/BaseModel.mjs +61 -0
  58. package/src/selection/grid/CellColumnModel.mjs +2 -2
  59. package/src/selection/grid/CellColumnRowModel.mjs +2 -2
  60. package/src/selection/grid/CellModel.mjs +4 -4
  61. package/src/selection/grid/CellRowModel.mjs +9 -3
  62. package/src/selection/grid/ColumnModel.mjs +15 -26
  63. package/src/selection/grid/RowModel.mjs +15 -25
  64. package/src/selection/menu/ListModel.mjs +1 -5
  65. package/src/selection/table/BaseModel.mjs +61 -0
  66. package/src/selection/table/CellColumnModel.mjs +2 -2
  67. package/src/selection/table/CellColumnRowModel.mjs +2 -2
  68. package/src/selection/table/CellModel.mjs +4 -4
  69. package/src/selection/table/CellRowModel.mjs +9 -3
  70. package/src/selection/table/ColumnModel.mjs +7 -8
  71. package/src/selection/table/RowModel.mjs +7 -7
  72. package/src/table/Container.mjs +1 -0
  73. package/src/table/View.mjs +102 -80
  74. package/src/table/header/Button.mjs +3 -5
  75. package/src/table/header/Toolbar.mjs +1 -0
  76. package/src/tree/List.mjs +1 -1
  77. package/src/util/VDom.mjs +42 -11
  78. package/src/util/VNode.mjs +33 -11
  79. package/src/vdom/Helper.mjs +36 -16
  80. package/src/vdom/VNode.mjs +1 -1
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='7.15.0'
23
+ * @member {String} version='8.0.0-alpha.1'
24
24
  */
25
- version: '7.15.0'
25
+ version: '8.0.0-alpha.1'
26
26
  }
27
27
 
28
28
  /**
@@ -16,7 +16,7 @@
16
16
  "@type": "Organization",
17
17
  "name": "Neo.mjs"
18
18
  },
19
- "datePublished": "2024-10-12",
19
+ "datePublished": "2024-10-18",
20
20
  "publisher": {
21
21
  "@type": "Organization",
22
22
  "name": "Neo.mjs"
@@ -239,7 +239,7 @@ class ViewportController extends Controller {
239
239
  connect : me.onAppConnect,
240
240
  disconnect: me.onAppDisconnect,
241
241
  scope : me
242
- });
242
+ })
243
243
  }
244
244
 
245
245
  /**
@@ -47,7 +47,7 @@ class Container extends Base {
47
47
  picture : 'torsten.png',
48
48
  profileGitHub : 'https://github.com/Dinkh',
49
49
  profileLinkedIn: 'https://www.linkedin.com/in/dinkheller/',
50
- teamRole : 'Co-Founder & Core Team Member'
50
+ teamRole : 'Contributor'
51
51
  },{
52
52
  module : MemberContainer,
53
53
  location : 'Madison, Wisconsin',
@@ -55,7 +55,7 @@ class Container extends Base {
55
55
  picture : 'Max.jpeg',
56
56
  profileGitHub : 'https://github.com/maxrahder/',
57
57
  profileLinkedIn: 'https://www.linkedin.com/in/maxrahder/',
58
- teamRole : 'Training'
58
+ teamRole : 'Contributor'
59
59
  }],
60
60
  /**
61
61
  * @member {Object} layout={ntype:'vbox',align:'center'}
@@ -111,7 +111,7 @@ class FooterContainer extends Container {
111
111
  }, {
112
112
  module: Component,
113
113
  cls : ['neo-version'],
114
- html : 'v7.15.0'
114
+ html : 'v8.0.0-alpha.1'
115
115
  }]
116
116
  }],
117
117
  /**
@@ -231,8 +231,8 @@ class HomeComponent extends Component {
231
231
  node, oldNode;
232
232
 
233
233
  if (me.mounted) {
234
- node = VDomUtil.findVdomChild(me.vdom, me.getNavLinkVdomId(value)).parentNode;
235
- oldNode = VDomUtil.findVdomChild(me.vdom, me.getNavLinkVdomId(oldValue)).parentNode;
234
+ node = VDomUtil.find(me.vdom, me.getNavLinkVdomId(value)).parentNode;
235
+ oldNode = VDomUtil.find(me.vdom, me.getNavLinkVdomId(oldValue)).parentNode;
236
236
 
237
237
  NeoArray.add(node.cls, 'active');
238
238
  NeoArray.remove(oldNode.cls, 'active');
@@ -289,7 +289,7 @@ class HomeComponent extends Component {
289
289
  */
290
290
  afterSetLoggedIn(value, oldValue) {
291
291
  let me = this,
292
- navItem = VDomUtil.findVdomChild(me.vdom, me.id + '__nav-item-link_0').vdom;
292
+ navItem = VDomUtil.find(me.vdom, me.id + '__nav-item-link_0').vdom;
293
293
 
294
294
  NeoArray[value ? 'remove' : 'add'](navItem.cls, 'disabled');
295
295
  me.update();
@@ -339,16 +339,15 @@ class HomeComponent extends Component {
339
339
  me.set({
340
340
  articlePreviews: data.json.articles,
341
341
  countArticles : data.json.articlesCount
342
- });
343
- });
342
+ })
343
+ })
344
344
  }
345
345
 
346
346
  /**
347
347
  * @returns {Object} vdom
348
348
  */
349
349
  getContainer() {
350
- let el = VDomUtil.findVdomChild(this.vdom, {cls: 'col-md-9'});
351
- return el?.vdom;
350
+ return VDomUtil.find(this.vdom, {cls: 'col-md-9'})?.vdom
352
351
  }
353
352
 
354
353
  /**
@@ -356,7 +355,7 @@ class HomeComponent extends Component {
356
355
  * @returns {Number}
357
356
  */
358
357
  getNavLinkId(nodeId) {
359
- return parseInt(nodeId.split('__')[1]);
358
+ return parseInt(nodeId.split('__')[1])
360
359
  }
361
360
 
362
361
  /**
@@ -364,7 +363,7 @@ class HomeComponent extends Component {
364
363
  * @returns {String}
365
364
  */
366
365
  getNavLinkVdomId(id) {
367
- return this.id + '__' + id;
366
+ return this.id + '__' + id
368
367
  }
369
368
 
370
369
  /**
@@ -372,7 +371,7 @@ class HomeComponent extends Component {
372
371
  */
373
372
  onNavLinkClick(data) {
374
373
  let me = this,
375
- el = VDomUtil.findVdomChild(me.vdom, data.path[0].id),
374
+ el = VDomUtil.find(me.vdom, data.path[0].id),
376
375
  feedHeader = VDomUtil.getByFlag(me.vdom, 'feed-header'),
377
376
  opts = {};
378
377
 
@@ -401,7 +400,7 @@ class HomeComponent extends Component {
401
400
  me.update();
402
401
 
403
402
  me.getController()._articlesOffset = 0; // silent update
404
- me.getArticles({}, opts);
403
+ me.getArticles({}, opts)
405
404
  }
406
405
  }
407
406
 
@@ -409,14 +408,14 @@ class HomeComponent extends Component {
409
408
  * @param {Object} value
410
409
  */
411
410
  onCurrentUserChange(value) {
412
- this.loggedIn = !!value;
411
+ this.loggedIn = !!value
413
412
  }
414
413
 
415
414
  /**
416
415
  * @param {Object} data
417
416
  */
418
417
  onPageNavLinkClick(data) {
419
- this.currentPage = this.getNavLinkId(data.path[0].id);
418
+ this.currentPage = this.getNavLinkId(data.path[0].id)
420
419
  }
421
420
 
422
421
  /**
@@ -453,7 +452,7 @@ class HomeComponent extends Component {
453
452
 
454
453
  me.getArticles({
455
454
  tag: opts.value
456
- });
455
+ })
457
456
  }
458
457
  }
459
458
 
@@ -268,7 +268,7 @@ class ProfileComponent extends Component {
268
268
  */
269
269
  onNavLinkClick(data) {
270
270
  let me = this,
271
- el = VDomUtil.findVdomChild(me.vdom, data.path[0].id),
271
+ el = VDomUtil.find(me.vdom, data.path[0].id),
272
272
  feedHeader = VDomUtil.getByFlag(me.vdom, 'feed-header'),
273
273
  params = {};
274
274
 
@@ -160,8 +160,7 @@ class SignUpComponent extends Component {
160
160
  * @returns {Object} vdom
161
161
  */
162
162
  getErrorMessagesList() {
163
- let el = VDomUtil.findVdomChild(this.vdom, {cls: 'error-messages'});
164
- return el?.vdom;
163
+ return VDomUtil.find(this.vdom, {cls: 'error-messages'})?.vdom
165
164
  }
166
165
 
167
166
  /**
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='7.15.0'
23
+ * @member {String} version='8.0.0-alpha.1'
24
24
  */
25
- version: '7.15.0'
25
+ version: '8.0.0-alpha.1'
26
26
  }
27
27
 
28
28
  /**
@@ -124,31 +124,34 @@ class MainContainer extends ConfigurationViewport {
124
124
  {
125
125
  dataField: 'edit',
126
126
  text : 'Edit Action',
127
- renderer: ({ column, index }) => {
127
+ renderer({column, index}) {
128
128
  const
129
+ me = this,
129
130
  widgetId = `${column.id}-widget-${index}`,
130
- button = (column.widgetMap || (column.widgetMap = {}))[widgetId] || (column.widgetMap[widgetId] = Neo.create({
131
+ button = (column.widgetMap || (column.widgetMap = {}))[widgetId] || (column.widgetMap[widgetId] = Neo.create({
131
132
  module : Button,
132
- appName : this.appName,
133
- handler : this.editButtonHandler,
133
+ appName : me.appName,
134
+ handler : 'up.editButtonHandler',
134
135
  parentId: 'myTableStoreContainer',
135
136
  text : 'Edit'
136
137
  }));
137
138
 
138
- return button.vdom
139
+ me.view.updateDepth = -1;
140
+
141
+ return button.createVdomReference()
139
142
  }
140
- },
141
- {
143
+ }, {
142
144
  dataField: 'menu',
143
145
  text : 'Menu',
144
- renderer({ column, record, index }) {
146
+ renderer({column, record, index}) {
145
147
  const
148
+ me = this,
146
149
  widgetId = `${column.id}-widget-${index}`,
147
- button = (column.widgetMap || (column.widgetMap = {}))[widgetId] || (column.widgetMap[widgetId] = Neo.create('Neo.button.Base', {
150
+ button = (column.widgetMap || (column.widgetMap = {}))[widgetId] || (column.widgetMap[widgetId] = Neo.create('Neo.button.Base', {
148
151
  ntype : 'button',
149
- appName : this.appName,
152
+ appName : me.appName,
150
153
  text : '\u22ee',
151
- windowId: this.windowId,
154
+ windowId: me.windowId,
152
155
  menu : {
153
156
  items : [{
154
157
  text : 'Menu option 1'
@@ -162,7 +165,9 @@ class MainContainer extends ConfigurationViewport {
162
165
  }
163
166
  }));
164
167
 
165
- return button.vdom
168
+ me.view.updateDepth = -1;
169
+
170
+ return button.createVdomReference()
166
171
  }
167
172
  }
168
173
  ]
@@ -106,7 +106,9 @@ class MainContainer extends Viewport {
106
106
  windowId
107
107
  }));
108
108
 
109
- return button.vdom
109
+ me.view.updateDepth = -1;
110
+
111
+ return button.createVdomReference()
110
112
  }
111
113
  }
112
114
 
@@ -99,7 +99,7 @@ class MainComponent extends Component {
99
99
  let me = this,
100
100
  cls = ['far', 'fa-square'],
101
101
  oldCls = ['fa', 'fa-check'],
102
- node = VdomUtil.findVdomChild(me.vdom, data.path[0].id).vdom
102
+ node = VdomUtil.find(me.vdom, data.path[0].id).vdom;
103
103
 
104
104
  if (data.path[0].cls.includes('fa-square')) {
105
105
  cls = ['fa', 'fa-check'];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo.mjs",
3
- "version": "7.15.0",
3
+ "version": "8.0.0-alpha.1",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -53,17 +53,17 @@
53
53
  "cssnano": "^7.0.6",
54
54
  "envinfo": "^7.14.0",
55
55
  "fs-extra": "^11.2.0",
56
- "highlightjs-line-numbers.js": "^2.8.0",
57
- "inquirer": "^11.1.0",
58
- "marked": "^14.1.2",
56
+ "highlightjs-line-numbers.js": "^2.9.0",
57
+ "inquirer": "^12.0.1",
58
+ "marked": "^14.1.4",
59
59
  "monaco-editor": "0.50.0",
60
60
  "neo-jsdoc": "1.0.1",
61
61
  "neo-jsdoc-x": "1.0.5",
62
62
  "postcss": "^8.4.47",
63
- "sass": "^1.79.5",
63
+ "sass": "^1.80.6",
64
64
  "siesta-lite": "5.5.2",
65
65
  "url": "^0.11.4",
66
- "webpack": "^5.95.0",
66
+ "webpack": "^5.96.1",
67
67
  "webpack-cli": "^5.1.4",
68
68
  "webpack-dev-server": "^5.1.0",
69
69
  "webpack-hook-plugin": "^1.0.7",
@@ -1,4 +1,4 @@
1
- @import "global/all";
1
+ @use "global/all";
2
2
 
3
3
  html, .neo-body-viewport {
4
4
  align-items : center;
@@ -8,6 +8,14 @@
8
8
  background-image: url("data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23504e54' fill-opacity='0.18' fill-rule='evenodd'%3E%3Cpath d='M5 0h1L0 6V5zM6 5v1H5z'/%3E%3C/g%3E%3C/svg%3E");
9
9
  padding : 3em;
10
10
 
11
+ .button-group {
12
+ background-color: transparent;
13
+ display : flex;
14
+ flex-direction : row-reverse;
15
+ gap : 8px;
16
+ margin : 2rem 0;
17
+ }
18
+
11
19
  .logo-container {
12
20
  align-items : center;
13
21
  background-color: transparent;
@@ -19,11 +27,8 @@
19
27
  min-width : 240px;
20
28
  }
21
29
 
22
- .button-group {
23
- display : flex;
24
- flex-direction: row-reverse;
25
- gap : 8px;
26
- margin : 2rem 0;
30
+ .neo-github {
31
+ background-color: #fff;
27
32
  }
28
33
 
29
34
  .neo-h1 {
@@ -1 +1 @@
1
- @import "MouseCursor";
1
+ @use "MouseCursor";
@@ -1,4 +1,4 @@
1
- @import "../../../resources/scss/theme-neo-light/design-tokens/_all.scss";
1
+ @use "../../../resources/scss/theme-neo-light/design-tokens/_all.scss";
2
2
 
3
3
  :root .neo-theme-neo-light {
4
4
  --neo-background-color: #fafafa;
@@ -1,4 +1,4 @@
1
1
  // the import order matters
2
- @import "Core";
3
- @import "Semantic";
4
- @import "Component";
2
+ @use "Core";
3
+ @use "Semantic";
4
+ @use "Component";
@@ -262,12 +262,12 @@ const DefaultConfig = {
262
262
  useVdomWorker: true,
263
263
  /**
264
264
  * buildScripts/injectPackageVersion.mjs will update this value
265
- * @default '7.15.0'
265
+ * @default '8.0.0-alpha.1'
266
266
  * @memberOf! module:Neo
267
267
  * @name config.version
268
268
  * @type String
269
269
  */
270
- version: '7.15.0'
270
+ version: '8.0.0-alpha.1'
271
271
  };
272
272
 
273
273
  Object.assign(DefaultConfig, {
@@ -132,6 +132,18 @@ class Base extends Component {
132
132
  ]}
133
133
  }
134
134
 
135
+ /**
136
+ * @member {Object} rippleWrapper
137
+ */
138
+ get badgeNode() {
139
+ return this.getVdomRoot().cn[2]
140
+ }
141
+ /**
142
+ * @member {Object} rippleWrapper
143
+ */
144
+ get iconNode() {
145
+ return this.getVdomRoot().cn[0]
146
+ }
135
147
  /**
136
148
  * Time in ms for the ripple effect when clicking on the button.
137
149
  * Only active if useRippleEffect is set to true.
@@ -144,6 +156,12 @@ class Base extends Component {
144
156
  * @private
145
157
  */
146
158
  #rippleTimeoutId = null
159
+ /**
160
+ * @member {Object} rippleWrapper
161
+ */
162
+ get rippleWrapper() {
163
+ return this.getVdomRoot().cn[3]
164
+ }
147
165
 
148
166
  /**
149
167
  * @param {Object} config
@@ -166,9 +184,9 @@ class Base extends Component {
166
184
  * @protected
167
185
  */
168
186
  afterSetBadgePosition(value, oldValue) {
169
- let me = this,
170
- badgeNode = me.getBadgeNode(),
171
- cls = badgeNode.cls || [];
187
+ let me = this,
188
+ {badgeNode} = me,
189
+ cls = badgeNode.cls || [];
172
190
 
173
191
  NeoArray.remove(cls, 'neo-' + oldValue);
174
192
  NeoArray.add(cls, 'neo-' + value);
@@ -185,7 +203,7 @@ class Base extends Component {
185
203
  * @protected
186
204
  */
187
205
  afterSetBadgeText(value, oldValue) {
188
- let badgeNode = this.getBadgeNode();
206
+ let {badgeNode} = this;
189
207
 
190
208
  badgeNode.html = value;
191
209
  badgeNode.removeDom = !Boolean(value);
@@ -200,7 +218,7 @@ class Base extends Component {
200
218
  * @protected
201
219
  */
202
220
  afterSetIconCls(value, oldValue) {
203
- let iconNode = this.getIconNode();
221
+ let {iconNode} = this;
204
222
 
205
223
  NeoArray.remove(iconNode.cls, oldValue);
206
224
  NeoArray.add( iconNode.cls, value);
@@ -216,7 +234,7 @@ class Base extends Component {
216
234
  * @protected
217
235
  */
218
236
  afterSetIconColor(value, oldValue) {
219
- let iconNode = this.getIconNode();
237
+ let {iconNode} = this;
220
238
 
221
239
  if (!iconNode.style) {
222
240
  iconNode.style = {};
@@ -261,17 +279,17 @@ class Base extends Component {
261
279
  model = me.getModel(),
262
280
  {appName, theme, windowId} = me,
263
281
 
264
- config = Neo.merge({
265
- module : module.default,
266
- align : {edgeAlign : 't0-b0', target: me.id},
267
- appName,
268
- displayField : 'text',
269
- floating : true,
270
- hidden : true,
271
- parentComponent: me,
272
- theme,
273
- windowId
274
- }, menuConfig);
282
+ config = Neo.merge({
283
+ module : module.default,
284
+ align : {edgeAlign: 't0-b0', target: me.id},
285
+ appName,
286
+ displayField : 'text',
287
+ floating : true,
288
+ hidden : true,
289
+ parentComponent: me,
290
+ theme,
291
+ windowId
292
+ }, menuConfig);
275
293
 
276
294
  if (items) {
277
295
  config.items = items
@@ -366,7 +384,7 @@ class Base extends Component {
366
384
  */
367
385
  afterSetUseRippleEffect(value, oldValue) {
368
386
  // setting the config to false ends running ripple animations
369
- this.getRippleWrapper().removeDom = true;
387
+ this.rippleWrapper.removeDom = true;
370
388
  this.update()
371
389
  }
372
390
 
@@ -464,36 +482,11 @@ class Base extends Component {
464
482
  }
465
483
 
466
484
  /**
467
- * @param {Boolean} updateParentVdom
468
- * @param {Boolean} silent
485
+ * @param args
469
486
  */
470
- destroy(updateParentVdom=false, silent=false) {
471
- this.menuList && this.menuList.destroy(true, false);
472
- super.destroy(updateParentVdom, silent)
473
- }
474
-
475
- /**
476
- * Convenience shortcut
477
- * @returns {Object}
478
- */
479
- getBadgeNode() {
480
- return this.getVdomRoot().cn[2]
481
- }
482
-
483
- /**
484
- * Convenience shortcut
485
- * @returns {Object}
486
- */
487
- getIconNode() {
488
- return this.getVdomRoot().cn[0]
489
- }
490
-
491
- /**
492
- * Convenience shortcut
493
- * @returns {Object}
494
- */
495
- getRippleWrapper() {
496
- return this.getVdomRoot().cn[3]
487
+ destroy(...args) {
488
+ this.menuList?.destroy(true, false);
489
+ super.destroy(...args)
497
490
  }
498
491
 
499
492
  /**
@@ -518,7 +511,7 @@ class Base extends Component {
518
511
  diameter = Math.max(buttonRect.height, buttonRect.width),
519
512
  radius = diameter / 2,
520
513
  rippleEffectDuration = me.rippleEffectDuration,
521
- rippleWrapper = me.getRippleWrapper(),
514
+ {rippleWrapper} = me,
522
515
  rippleEl = rippleWrapper.cn[0],
523
516
  rippleTimeoutId;
524
517
 
@@ -57,6 +57,8 @@ class SettingsContainer extends Container {
57
57
  me._style = style; // silent update
58
58
  me._vdom.style = style; // silent update
59
59
 
60
+ me.parent.updateDepth = -1;
61
+
60
62
  me.parent.promiseUpdate().then(() => {
61
63
  me.timeout(400).then(() => {
62
64
  me.collapsed = true;
@@ -145,6 +147,8 @@ class SettingsContainer extends Container {
145
147
 
146
148
  delete me.vdom.removeDom;
147
149
 
150
+ me.parent.updateDepth = -1;
151
+
148
152
  me.parent.promiseUpdate().then(() => {
149
153
  me.collapsed = false;
150
154
  me.mounted = true;
@@ -50,7 +50,7 @@ class ColorsList extends List {
50
50
 
51
51
  if (value && oldValue !== undefined && !me.disableSelection) {
52
52
  record = me.store.find('name', value)[0];
53
- me.selectionModel?.select(me.getItemId(record[me.getKeyProperty()]));
53
+ me.selectionModel?.select(me.getItemId(record[me.getKeyProperty()]))
54
54
  }
55
55
  }
56
56
 
@@ -64,21 +64,21 @@ class ColorsList extends List {
64
64
  return {style: {
65
65
  backgroundColor: `var(--event-${record.name}-color)`,
66
66
  color : `var(--event-${record.name}-color)` // needed for the box-shadow (CSS currentColor)
67
- }};
67
+ }}
68
68
  }
69
69
 
70
70
  /**
71
71
  * @returns {Object}
72
72
  */
73
73
  getVdomRoot() {
74
- return this.vdom;
74
+ return this.vdom
75
75
  }
76
76
 
77
77
  /**
78
78
  * @returns {Object}
79
79
  */
80
80
  getVnodeRoot() {
81
- return this.vnode;
81
+ return this.vnode
82
82
  }
83
83
 
84
84
  /**
@@ -90,7 +90,7 @@ class ColorsList extends List {
90
90
  let me = this,
91
91
  {value} = me;
92
92
 
93
- value && me.afterSetValue(value, null);
93
+ value && me.afterSetValue(value, null)
94
94
  }
95
95
 
96
96
  /**
@@ -103,7 +103,7 @@ class ColorsList extends List {
103
103
 
104
104
  me.fire('change', {
105
105
  record: me.store.get(recordId)
106
- });
106
+ })
107
107
  }
108
108
  }
109
109
 
@@ -61,7 +61,7 @@ class Container extends BaseContainer {
61
61
  active: true,
62
62
  color : 'red',
63
63
  name : 'New Calendar'
64
- });
64
+ })
65
65
  }
66
66
  }
67
67
 
@@ -72,9 +72,13 @@ class List extends ComponentList {
72
72
  })
73
73
  }
74
74
 
75
- me.items = items;
75
+ me.items = items;
76
+ me.updateDepth = 2;
76
77
 
77
- return [checkBox.vdom, {tag: 'i', cls: ['neo-edit-icon', 'fas fa-edit'], id: me.getEditIconId(index)}]
78
+ return [
79
+ checkBox.createVdomReference(),
80
+ {tag: 'i', cls: ['neo-edit-icon', 'fas fa-edit'], id: me.getEditIconId(index)}
81
+ ]
78
82
  }
79
83
 
80
84
  /**
@@ -575,7 +575,7 @@ class Component extends BaseComponent {
575
575
  eventNode = path[0],
576
576
  weekNode = path[2],
577
577
  scrollContainerNode = path[3],
578
- eventVdom = VDomUtil.findVdomChild(me.vdom, eventNode.id).vdom,
578
+ eventVdom = VDomUtil.find(me.vdom, eventNode.id).vdom,
579
579
  record = me.eventStore.get(eventVdom.flag),
580
580
  style = editEventContainer.style;
581
581