neo.mjs 7.7.0 → 7.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/apps/ServiceWorker.mjs +2 -2
  2. package/apps/portal/index.html +1 -1
  3. package/apps/portal/neo-config.json +1 -0
  4. package/apps/portal/view/ViewportController.mjs +20 -4
  5. package/apps/portal/view/home/FooterContainer.mjs +1 -1
  6. package/apps/portal/view/learn/{ContentView.mjs → ContentComponent.mjs} +98 -38
  7. package/apps/portal/view/learn/CubeLayoutButton.mjs +77 -0
  8. package/apps/portal/view/learn/MainContainerController.mjs +1 -0
  9. package/apps/portal/view/learn/PageContainer.mjs +4 -4
  10. package/apps/shareddialog/view/DemoDialog.mjs +2 -10
  11. package/apps/shareddialog/view/MainContainerController.mjs +107 -105
  12. package/buildScripts/webpack/json/myApps.template.json +1 -1
  13. package/examples/ServiceWorker.mjs +2 -2
  14. package/package.json +3 -3
  15. package/resources/data/deck/learnneo/pages/Welcome.md +1 -1
  16. package/resources/data/deck/learnneo/pages/benefits/FormsEngine.md +1 -1
  17. package/resources/data/deck/learnneo/pages/guides/PortalApp.md +35 -0
  18. package/resources/data/deck/learnneo/tree.json +1 -0
  19. package/src/DefaultConfig.mjs +2 -2
  20. package/src/collection/Base.mjs +4 -3
  21. package/src/container/Base.mjs +12 -7
  22. package/src/draggable/DragProxyComponent.mjs +10 -20
  23. package/src/main/addon/Navigator.mjs +34 -32
  24. package/src/main/addon/WindowPosition.mjs +9 -11
  25. package/src/plugin/Resizable.mjs +12 -6
  26. package/src/tab/Container.mjs +5 -1
  27. package/test/siesta/siesta.js +1 -0
  28. package/test/siesta/tests/ManagerInstance.mjs +35 -0
  29. package/apps/krausest/README.md +0 -3
  30. package/apps/krausest/TableCollection.mjs +0 -46
  31. package/apps/krausest/app.mjs +0 -8
  32. package/apps/krausest/css/currentStyle.css +0 -2
  33. package/apps/krausest/css/main.css +0 -26
  34. package/apps/krausest/index.html +0 -12
  35. package/apps/krausest/neo-config.json +0 -10
  36. package/apps/krausest/view/MainComponent.mjs +0 -122
  37. package/apps/krausest/view/MainComponentController.mjs +0 -33
  38. package/apps/krausest/view/TableComponent.mjs +0 -152
  39. /package/resources/scss/src/apps/portal/learn/{ContentView.scss → ContentComponent.scss} +0 -0
@@ -2,6 +2,7 @@ import Component from '../../../src/component/Base.mjs';
2
2
  import ComponentController from '../../../src/controller/Component.mjs';
3
3
  import ComponentManager from '../../../src/manager/Component.mjs';
4
4
  import DemoDialog from './DemoDialog.mjs';
5
+ import DragProxyComponent from '../../../src/draggable/DragProxyComponent.mjs';
5
6
  import NeoArray from '../../../src/util/Array.mjs';
6
7
  import Rectangle from '../../../src/util/Rectangle.mjs';
7
8
 
@@ -16,63 +17,53 @@ class MainContainerController extends ComponentController {
16
17
  * @protected
17
18
  */
18
19
  className: 'SharedDialog.view.MainContainerController',
19
- /**
20
- * @member {String[]} connectedApps=[]
21
- */
22
- connectedApps: [],
23
- /**
24
- * @member {String} currentTheme='neo-theme-light'
25
- */
26
- currentTheme: 'neo-theme-light',
27
- /**
28
- * @member {String} dockedWindowAppName='SharedDialog2'
29
- */
30
- dockedWindowAppName: 'SharedDialog2',
31
- /**
32
- * @member {Number|null} dockedWindowId=null
33
- */
34
- dockedWindowId: null,
35
- /**
36
- * @member {Neo.component.Base|null} dockedWindowProxy=null
37
- */
38
- dockedWindowProxy: null,
39
20
  /**
40
21
  * Valid values: bottom, left, right, top
41
22
  * @member {String} dockedWindowSide_='right'
42
23
  */
43
24
  dockedWindowSide_: 'right',
44
- /**
45
- * @member {Number} dockedWindowSize=500
46
- */
47
- dockedWindowSize: 620,
48
- /**
49
- * @member {Object} dialogRect=null
50
- */
51
- dialogRect: null,
52
- /**
53
- * @member {Object} dragStartWindowRect=null
54
- */
55
- dragStartWindowRect: null,
56
- /**
57
- * @member {Number|null} targetWindowSize=0
58
- */
59
- targetWindowSize: 0
60
25
  }
61
26
 
62
27
  /**
63
- * The App worker will receive connect & disconnect events inside the SharedWorkers context
28
+ * @member {String[]} connectedApps=[]
64
29
  */
65
- onConstructed() {
66
- super.onConstructed();
67
-
68
- let me = this;
69
-
70
- Neo.currentWorker.on({
71
- connect : me.onAppConnect,
72
- disconnect: me.onAppDisconnect,
73
- scope : me
74
- })
75
- }
30
+ connectedApps = []
31
+ /**
32
+ * @member {String} currentTheme='neo-theme-light'
33
+ */
34
+ currentTheme = 'neo-theme-light'
35
+ /**
36
+ * @member {String} dockedWindowAppName='SharedDialog2'
37
+ */
38
+ dockedWindowAppName = 'SharedDialog2'
39
+ /**
40
+ * @member {Number|null} dockedWindowId=null
41
+ */
42
+ dockedWindowId = null
43
+ /**
44
+ * @member {Neo.component.Base|null} dockedWindowProxy=null
45
+ */
46
+ dockedWindowProxy = null
47
+ /**
48
+ * @member {Number} dockedWindowSize=500
49
+ */
50
+ dockedWindowSize = 620
51
+ /**
52
+ * @member {Object} dialogRect=null
53
+ */
54
+ dialogRect = null
55
+ /**
56
+ * @member {Object} dragStartWindowRect=null
57
+ */
58
+ dragStartWindowRect = null
59
+ /**
60
+ * @member {String|null} previousTheme=null
61
+ */
62
+ previousTheme = null
63
+ /**
64
+ * @member {Number|null} targetWindowSize=0
65
+ */
66
+ targetWindowSize = 0
76
67
 
77
68
  /**
78
69
  * Triggered after the dockedWindowSide config got changed
@@ -103,7 +94,7 @@ class MainContainerController extends ComponentController {
103
94
  animateTargetId : data.component.id,
104
95
  appName,
105
96
  boundaryContainerId: null,
106
- cls : [me.currentTheme, 'neo-dialog', 'neo-panel', 'neo-container'],
97
+ cls : [me.currentTheme],
107
98
  height : 200,
108
99
  width : 300,
109
100
  windowId,
@@ -128,7 +119,7 @@ class MainContainerController extends ComponentController {
128
119
 
129
120
  if (me.dockedWindowProxy) {
130
121
  me.dockedWindowProxy.destroy(true);
131
- me.dockedWindowProxy = null;
122
+ me.dockedWindowProxy = null
132
123
  }
133
124
  }
134
125
 
@@ -177,9 +168,9 @@ class MainContainerController extends ComponentController {
177
168
  }
178
169
 
179
170
  /**
180
- * @param {Boolean} enable
171
+ * @param {Boolean} enable=true
181
172
  */
182
- enableOpenDialogButtons(enable) {
173
+ enableOpenDialogButtons(enable=true) {
183
174
  this.getOpenDialogButtons().forEach(button => {
184
175
  button.disabled = !enable
185
176
  })
@@ -196,9 +187,7 @@ class MainContainerController extends ComponentController {
196
187
  *
197
188
  */
198
189
  getOpenDialogButtons() {
199
- return ComponentManager.find({
200
- flag: 'open-dialog-button'
201
- })
190
+ return ComponentManager.find({flag: 'open-dialog-button'})
202
191
  }
203
192
 
204
193
  /**
@@ -221,9 +210,8 @@ class MainContainerController extends ComponentController {
221
210
  * @return {{left: String, top: String}}
222
211
  */
223
212
  getProxyPosition(proxyRect, side, fullyIncludeIntoWindow=false) {
224
- let me = this,
225
- dragStartWindowRect = me.dragStartWindowRect,
226
- targetWindowSize = me.targetWindowSize,
213
+ let me = this,
214
+ {dragStartWindowRect, targetWindowSize} = me,
227
215
  left, top;
228
216
 
229
217
  switch(side) {
@@ -312,16 +300,16 @@ class MainContainerController extends ComponentController {
312
300
  * @param {Number} data.windowId
313
301
  */
314
302
  onAppConnect(data) {
315
- let me = this,
316
- name = data.appName;
303
+ let me = this,
304
+ {appName, windowId} = data;
317
305
 
318
- NeoArray.add(me.connectedApps, name);
306
+ NeoArray.add(me.connectedApps, appName);
319
307
 
320
- if (name !== 'SharedDialog' && me.currentTheme !== 'neo-theme-light') {
321
- me.switchThemeForApp(name, me.currentTheme)
308
+ if (appName !== 'SharedDialog' && me.currentTheme !== 'neo-theme-light') {
309
+ me.switchThemeForApp(windowId)
322
310
  }
323
311
 
324
- if (name === me.dockedWindowAppName) {
312
+ if (appName === me.dockedWindowAppName) {
325
313
  me.dockedWindowId = data.windowId;
326
314
  me.getOpenDockedWindowButton().disabled = true
327
315
  }
@@ -334,29 +322,46 @@ class MainContainerController extends ComponentController {
334
322
  * @param {String} data.appName
335
323
  */
336
324
  onAppDisconnect(data) {
337
- let me = this,
338
- name = data.appName;
325
+ let me = this,
326
+ {connectedApps, dialog, windowId} = me,
327
+ name = data.appName;
339
328
 
340
329
  if (name === 'SharedDialog') {
341
330
  // we want to close all popup windows, which equals to all connected apps minus the main app
342
- NeoArray.remove(me.connectedApps, 'SharedDialog');
331
+ NeoArray.remove(connectedApps, 'SharedDialog');
343
332
 
344
333
  Neo.Main.windowClose({
345
- names: me.connectedApps
334
+ names: connectedApps,
335
+ windowId
346
336
  })
347
- } else {
348
- NeoArray.remove(me.connectedApps, name);
337
+ } if (name === me.dockedWindowAppName) {
338
+ NeoArray.remove(connectedApps, name);
349
339
 
350
- Neo.main.addon.WindowPosition.unregisterWindow({
351
- name: name
352
- })
353
- }
340
+ Neo.main.addon.WindowPosition.unregisterWindow({name, windowId});
341
+
342
+ if (dialog && dialog.windowId !== windowId) {
343
+ me.enableOpenDialogButtons()
344
+ }
354
345
 
355
- if (name === me.dockedWindowAppName) {
356
346
  me.getOpenDockedWindowButton().disabled = false
357
347
  }
358
348
  }
359
349
 
350
+ /**
351
+ * The App worker will receive connect & disconnect events inside the SharedWorkers context
352
+ */
353
+ onConstructed() {
354
+ super.onConstructed();
355
+
356
+ let me = this;
357
+
358
+ Neo.currentWorker.on({
359
+ connect : me.onAppConnect,
360
+ disconnect: me.onAppDisconnect,
361
+ scope : me
362
+ })
363
+ }
364
+
360
365
  /**
361
366
  * @param {Object} data
362
367
  */
@@ -368,7 +373,8 @@ class MainContainerController extends ComponentController {
368
373
  *
369
374
  */
370
375
  onDialogClose() {
371
- this.enableOpenDialogButtons(true)
376
+ this.enableOpenDialogButtons(true);
377
+ this.dialog = null
372
378
  }
373
379
 
374
380
  /**
@@ -383,11 +389,10 @@ class MainContainerController extends ComponentController {
383
389
  */
384
390
  onDragEnd(data) {
385
391
  if (this.hasDockedWindow()) {
386
- let me = this,
387
- dialog = me.dialog,
388
- dragStartWindowRect = me.dragStartWindowRect,
389
- proxyRect = Rectangle.moveTo(me.dialogRect, data.clientX - data.offsetX, data.clientY - data.offsetY),
390
- side = me.dockedWindowSide;
392
+ let me = this,
393
+ {dialog, dragStartWindowRect} = me,
394
+ proxyRect = Rectangle.moveTo(me.dialogRect, data.clientX - data.offsetX, data.clientY - data.offsetY),
395
+ side = me.dockedWindowSide;
391
396
 
392
397
  if (dialog.appName === me.dockedWindowAppName) {
393
398
  side = me.getOppositeSide(me.dockedWindowSide)
@@ -409,7 +414,7 @@ class MainContainerController extends ComponentController {
409
414
  onDragMove(data) {
410
415
  if (this.hasDockedWindow()) {
411
416
  let me = this,
412
- {dialogRect, dragStartWindowRect, dockedWindowAppName, dockedWindowId} = me,
417
+ {dialogRect, dragStartWindowRect, dockedWindowAppName, dockedWindowId} = me,
413
418
  proxyRect = Rectangle.moveTo(dialogRect, data.clientX - data.offsetX, data.clientY - data.offsetY),
414
419
  side = me.dockedWindowSide,
415
420
  proxyPosition, vdom;
@@ -437,14 +442,12 @@ class MainContainerController extends ComponentController {
437
442
  });
438
443
 
439
444
  me.dockedWindowProxy = Neo.create({
440
- module : Component,
441
- appName : dockedWindowAppName,
442
- autoMount : true,
443
- autoRender: true,
444
- cls : ['neo-dialog', 'neo-panel', 'neo-dragproxy'],
445
- parentId : 'document.body',
446
- vdom : vdom,
447
- windowId : dockedWindowId
445
+ module : DragProxyComponent,
446
+ appName : dockedWindowAppName,
447
+ cls : ['neo-dialog', 'neo-panel', 'neo-container'],
448
+ moveInMainThread: false,
449
+ vdom : vdom,
450
+ windowId : dockedWindowId
448
451
  });
449
452
 
450
453
  // The other window has most likely not loaded The dialog JS module yet,
@@ -472,7 +475,7 @@ class MainContainerController extends ComponentController {
472
475
  onDragStart(data) {
473
476
  if (this.hasDockedWindow()) {
474
477
  let me = this,
475
- appName = me.component.appName,
478
+ {appName} = me.component,
476
479
  dockedHorizontal = me.dockedWindowSide === 'left' || me.dockedWindowSide === 'right';
477
480
 
478
481
  me.dialogRect = data.dragElementRect;
@@ -583,35 +586,34 @@ class MainContainerController extends ComponentController {
583
586
  theme = 'neo-theme-light';
584
587
  }
585
588
 
589
+ me.previousTheme = me.currentTheme;
590
+ me.currentTheme = theme;
591
+
586
592
  me.connectedApps.forEach(appName => {
587
- me.switchThemeForApp(appName, theme)
593
+ me.switchThemeForApp(Neo.apps[appName].windowId)
588
594
  });
589
595
 
590
- button.set({
591
- iconCls: iconCls,
592
- text : buttonText
593
- });
596
+ button.set({iconCls, text: buttonText});
594
597
 
595
598
  if (dialog) {
596
599
  cls = dialog.cls;
597
600
 
598
- NeoArray.removeAdd(cls, me.currentTheme, theme);
601
+ NeoArray.removeAdd(cls, me.previousTheme, me.currentTheme);
599
602
 
600
603
  dialog.cls = cls
601
604
  }
602
-
603
- me.currentTheme = theme
604
605
  }
605
606
 
606
607
  /**
607
- * @param {String} appName
608
- * @param {String} theme
608
+ * @param {Number} windowId
609
609
  */
610
- switchThemeForApp(appName, theme) {
610
+ switchThemeForApp(windowId) {
611
+ let {currentTheme, previousTheme} = this;
612
+
611
613
  Neo.main.DomAccess.setBodyCls({
612
- appName: appName,
613
- add : [theme],
614
- remove : [this.currentTheme]
614
+ add : [currentTheme],
615
+ remove : previousTheme ? [previousTheme]: [],
616
+ windowId
615
617
  })
616
618
  }
617
619
 
@@ -4,10 +4,10 @@
4
4
  "Covid",
5
5
  "Docs",
6
6
  "Form",
7
- "Krausest",
8
7
  "Portal",
9
8
  "RealWorld",
10
9
  "RealWorld2",
10
+ "Route",
11
11
  "SharedCovid",
12
12
  "SharedDialog"
13
13
  ]
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='7.7.0'
23
+ * @member {String} version='7.8.0'
24
24
  */
25
- version: '7.7.0'
25
+ version: '7.8.0'
26
26
  }
27
27
 
28
28
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo.mjs",
3
- "version": "7.7.0",
3
+ "version": "7.8.0",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -54,13 +54,13 @@
54
54
  "envinfo": "^7.14.0",
55
55
  "fs-extra": "^11.2.0",
56
56
  "highlightjs-line-numbers.js": "^2.8.0",
57
- "inquirer": "^10.2.2",
57
+ "inquirer": "^11.0.2",
58
58
  "marked": "^14.1.2",
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.2",
63
+ "sass": "^1.79.3",
64
64
  "siesta-lite": "5.5.2",
65
65
  "url": "^0.11.4",
66
66
  "webpack": "^5.94.0",
@@ -3,7 +3,7 @@ Welcome to Neo.mjs! This set of topics contains information to help you use Neo.
3
3
 
4
4
  ## Topics
5
5
 
6
- ### Why Neo?
6
+ ### Benefits
7
7
 
8
8
  Describes technical and business reasons for using Neo.mjs
9
9
 
@@ -1,7 +1,7 @@
1
1
  ## Forms include a State-Provider
2
2
 
3
3
  You do not need to define a state tree on your own.
4
- It if sufficient to just use namespaces inside the `name` attribute of each field.
4
+ It is sufficient to just use namespaces inside the `name` attribute of each field.
5
5
 
6
6
  <pre data-neo>
7
7
  import Button from '../button/Base.mjs';
@@ -0,0 +1,35 @@
1
+ ## Study the Code
2
+
3
+ As you hopefully have noticed by now, this entire multi-window app is created based on Neo.mjs.
4
+
5
+ You can learn a lot by studying the code-base carefully:
6
+ <a target="_blank" href="https://github.com/neomjs/neo/tree/dev/apps/portal">Portal App Code</a>
7
+
8
+ Please give us a heads-up, in case there are specific topics which you would like to see
9
+ getting covered here.
10
+
11
+ ## Easter Eggs
12
+
13
+ Every good app needs to have some meaningful Easter eggs.
14
+
15
+ ### Examples: Resort TabHeaderButtons via Drag&Drop
16
+
17
+ Did you notice that you can resort the Tabs inside <a href="#/examples">Examples</a>?
18
+
19
+ After re-sorting, the routing and the tab.Strip animations will still work. Enjoy!
20
+
21
+ ### Switch the main navigation layout to an animated Cube
22
+
23
+ Fair warning: this animated layout does require some advanced GPU processing power.
24
+ At the moment, it performs best using Firefox.
25
+
26
+ The setting will get stored inside the LocalStorage,
27
+ so you will need to click the following Button a 2nd time to deactivate it again.
28
+ Or you can clear the LocalStorage manually.</br></br>
29
+
30
+ <pre data-neo-component>
31
+ {
32
+ "className": "Portal.view.learn.CubeLayoutButton",
33
+ "style" : {"margin": 0}
34
+ }
35
+ </pre>
@@ -32,6 +32,7 @@
32
32
  {"name": "Events", "parentId": "InDepth", "isLeaf": false, "id": "GuideEvents"},
33
33
  {"name": "Custom Events", "parentId": "GuideEvents", "id": "guides.events.CustomEvents"},
34
34
  {"name": "DOM Events", "parentId": "GuideEvents", "id": "guides.events.DomEvents"},
35
+ {"name": "Portal App", "parentId": "InDepth", "id": "guides.PortalApp"},
35
36
  {"name": "Tables (Stores)", "parentId": "InDepth", "id": "guides.Tables", "hidden": true},
36
37
  {"name": "Multi-Window Applications", "parentId": "InDepth", "id": "guides.MultiWindow", "hidden": true},
37
38
  {"name": "Main Thread Addons", "parentId": "InDepth", "isLeaf": false, "id": "MainThreadAddons", "hidden": true},
@@ -262,12 +262,12 @@ const DefaultConfig = {
262
262
  useVdomWorker: true,
263
263
  /**
264
264
  * buildScripts/injectPackageVersion.mjs will update this value
265
- * @default '7.7.0'
265
+ * @default '7.8.0'
266
266
  * @memberOf! module:Neo
267
267
  * @name config.version
268
268
  * @type String
269
269
  */
270
- version: '7.7.0'
270
+ version: '7.8.0'
271
271
  };
272
272
 
273
273
  Object.assign(DefaultConfig, {
@@ -990,12 +990,13 @@ class Base extends CoreBase {
990
990
  }
991
991
 
992
992
  /**
993
- * Helper method to check if a given value is either an object or a neo data record
993
+ * Helper method to check if a given input is either object-like or a key
994
994
  * @param {*} value
995
- * @returns {Boolean}
995
+ * @returns {Boolean} returns true for object-like values
996
996
  */
997
997
  isItem(value) {
998
- return Neo.isObject(value) || Neo.isRecord(value)
998
+ // We can not use Neo.isObject() || Neo.isRecord(), since collections can store neo instances too.
999
+ return typeof value === 'object'
999
1000
  }
1000
1001
 
1001
1002
  /**
@@ -87,7 +87,10 @@ class Base extends Component {
87
87
  */
88
88
  items_: [],
89
89
  /**
90
- * @member {Object} layout_={ntype: 'vbox', align: 'stretch'}
90
+ * It is crucial to define a layout before the container does get rendered.
91
+ * Meaning: onConstructed() is the latest life-cycle point.
92
+ * You can use layout: 'base', in case you do not need a layout at all.
93
+ * @member {Object|String|null} layout_={ntype: 'vbox', align: 'stretch'}
91
94
  */
92
95
  layout_: {
93
96
  ntype: 'vbox',
@@ -135,7 +138,7 @@ class Base extends Component {
135
138
  }
136
139
 
137
140
  /**
138
- * @param {Neo.layout.Base} value
141
+ * @param {Neo.layout.Base|null} value
139
142
  * @param {Neo.layout.Base|null} oldValue
140
143
  * @protected
141
144
  */
@@ -144,15 +147,15 @@ class Base extends Component {
144
147
 
145
148
  if (me.rendered) {
146
149
  oldValue?.removeRenderAttributes();
147
- value.applyRenderAttributes();
150
+ value?.applyRenderAttributes();
148
151
 
149
152
  me.items.forEach((item, index) => {
150
153
  oldValue?.removeChildAttributes(item, index);
151
- value.applyChildAttributes(item, index)
152
- });
153
-
154
- oldValue?.destroy()
154
+ value?.applyChildAttributes(item, index)
155
+ })
155
156
  }
157
+
158
+ oldValue?.destroy?.()
156
159
  }
157
160
 
158
161
  /**
@@ -419,6 +422,8 @@ class Base extends Component {
419
422
  * @param {Boolean} [silent=false] true to update the vdom silently (useful for destroying multiple child items in a row)
420
423
  */
421
424
  destroy(updateParentVdom=false, silent=false) {
425
+ this.layout?.destroy();
426
+
422
427
  this.items?.forEach(item => {
423
428
  item.destroy?.(false, true)
424
429
  });
@@ -25,9 +25,9 @@ class DragProxyComponent extends Base {
25
25
  */
26
26
  autoRender: true,
27
27
  /**
28
- * @member {String[]} cls=['neo-dragproxy']
28
+ * @member {String[]} baseCls=['neo-dragproxy']
29
29
  */
30
- cls: ['neo-dragproxy'],
30
+ baseCls: ['neo-dragproxy'],
31
31
  /**
32
32
  * @member {Boolean} moveInMainThread=true
33
33
  */
@@ -35,28 +35,18 @@ class DragProxyComponent extends Base {
35
35
  }
36
36
 
37
37
  /**
38
- * @param {Object} config
38
+ * Triggered after the mounted config got changed
39
+ * @param {Boolean} value
40
+ * @param {Boolean} oldValue
41
+ * @protected
39
42
  */
40
- construct(config) {
41
- super.construct(config);
43
+ afterSetMounted(value, oldValue) {
44
+ super.afterSetMounted(value, oldValue);
42
45
 
43
- let me = this;
44
-
45
- me.on('mounted', me.onMounted, me)
46
- }
47
-
48
- /**
49
- * @param {String} id
50
- */
51
- onMounted(id) {
52
- if (this.moveInMainThread) {
46
+ if (value && this.moveInMainThread) {
53
47
  let {appName, id, windowId} = this;
54
48
 
55
- Neo.main.addon.DragDrop.setDragProxyElement({
56
- appName,
57
- id,
58
- windowId
59
- })
49
+ Neo.main.addon.DragDrop.setDragProxyElement({appName, id, windowId})
60
50
  }
61
51
  }
62
52
  }