neo.mjs 8.43.1 → 9.0.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.
- package/apps/ServiceWorker.mjs +2 -2
- package/apps/colors/view/ViewportController.mjs +2 -6
- package/apps/portal/index.html +1 -1
- package/apps/portal/view/ViewportController.mjs +3 -3
- package/apps/portal/view/home/FooterContainer.mjs +1 -1
- package/apps/portal/view/learn/ContentComponent.mjs +5 -5
- package/apps/portal/view/learn/MainContainerController.mjs +0 -23
- package/apps/sharedcovid/view/MainContainerController.mjs +4 -13
- package/examples/ServiceWorker.mjs +2 -2
- package/examples/button/base/MainContainer.mjs +9 -1
- package/examples/component/multiWindowCoronaGallery/ViewportController.mjs +4 -11
- package/examples/component/multiWindowHelix/ViewportController.mjs +1 -7
- package/package.json +5 -5
- package/src/DefaultConfig.mjs +2 -2
- package/src/button/Base.mjs +28 -7
- package/src/component/Base.mjs +43 -86
- package/src/component/wrapper/AmChart.mjs +4 -3
- package/src/container/Base.mjs +15 -3
- package/src/controller/Component.mjs +4 -106
- package/src/core/Base.mjs +15 -2
- package/src/core/Observable.mjs +9 -11
- package/src/data/Model.mjs +9 -0
- package/src/data/RecordFactory.mjs +1 -1
- package/src/form/field/Text.mjs +3 -1
- package/src/grid/Container.mjs +2 -4
- package/src/grid/View.mjs +37 -45
- package/src/grid/column/AnimatedChange.mjs +1 -1
- package/src/grid/column/Component.mjs +14 -5
- package/src/grid/header/Button.mjs +6 -17
- package/src/main/DomEvents.mjs +26 -1
- package/src/manager/DomEvent.mjs +21 -22
- package/src/selection/Model.mjs +14 -11
- package/src/selection/grid/BaseModel.mjs +155 -2
- package/src/selection/grid/CellColumnModel.mjs +7 -11
- package/src/selection/grid/CellColumnRowModel.mjs +7 -11
- package/src/selection/grid/CellModel.mjs +5 -4
- package/src/selection/grid/CellRowModel.mjs +22 -30
- package/src/selection/grid/ColumnModel.mjs +7 -11
- package/src/selection/grid/RowModel.mjs +21 -35
- package/src/state/Provider.mjs +3 -8
- package/src/tab/Container.mjs +17 -1
- package/src/table/Container.mjs +34 -67
- package/src/table/View.mjs +51 -3
- package/src/table/header/Button.mjs +7 -18
- package/src/util/Function.mjs +3 -1
- package/src/util/VDom.mjs +4 -4
package/apps/ServiceWorker.mjs
CHANGED
@@ -89,14 +89,12 @@ class ViewportController extends Controller {
|
|
89
89
|
{windowId} = data,
|
90
90
|
url = await Neo.Main.getByPath({path: 'document.URL', windowId}),
|
91
91
|
widgetName = new URL(url).searchParams.get('name'),
|
92
|
-
widget = me.getReference(widgetName)
|
93
|
-
widgetParent = widget.up();
|
92
|
+
widget = me.getReference(widgetName);
|
94
93
|
|
95
94
|
me.connectedApps.push(widgetName);
|
96
95
|
|
97
96
|
me.getReference(`detach-${widgetName}-button`).disabled = true;
|
98
97
|
|
99
|
-
widgetParent.remove(widget, false);
|
100
98
|
mainView.add(widget)
|
101
99
|
}
|
102
100
|
}
|
@@ -111,12 +109,10 @@ class ViewportController extends Controller {
|
|
111
109
|
{appName, windowId} = data,
|
112
110
|
url = await Neo.Main.getByPath({path: 'document.URL', windowId}),
|
113
111
|
widgetName = new URL(url).searchParams.get('name'),
|
114
|
-
widget = me.getReference(widgetName)
|
115
|
-
widgetParent = widget.up();
|
112
|
+
widget = me.getReference(widgetName);
|
116
113
|
|
117
114
|
// Closing a non-main app needs to move the widget back into its original position & re-enable the show button
|
118
115
|
if (appName === 'ColorsWidget') {
|
119
|
-
widgetParent.remove(widget, false);
|
120
116
|
me.component.insert(me.widgetIndexMap[widgetName], widget);
|
121
117
|
|
122
118
|
me.getReference(`detach-${widgetName}-button`).disabled = false
|
package/apps/portal/index.html
CHANGED
@@ -98,9 +98,9 @@ class ViewportController extends Controller {
|
|
98
98
|
Neo.main.addon.LocalStorage.readLocalStorageItem({
|
99
99
|
key: 'mainContentLayout',
|
100
100
|
windowId
|
101
|
-
}).then(
|
102
|
-
if (
|
103
|
-
me.mainContentLayout =
|
101
|
+
}).then(({value}) => {
|
102
|
+
if (value && value !== 'card') {
|
103
|
+
me.mainContentLayout = value
|
104
104
|
}
|
105
105
|
})
|
106
106
|
}
|
@@ -321,15 +321,15 @@ class ContentComponent extends Component {
|
|
321
321
|
/**
|
322
322
|
* @param {Object} data
|
323
323
|
*/
|
324
|
-
onClick(
|
325
|
-
let me
|
326
|
-
record = me
|
324
|
+
onClick({altKey, metaKey, shiftKey}) {
|
325
|
+
let me = this,
|
326
|
+
{record} = me;
|
327
327
|
|
328
|
-
if (
|
328
|
+
if (altKey && !metaKey && shiftKey) {
|
329
329
|
me.fire('edit', {component: me, record})
|
330
330
|
}
|
331
331
|
// Command/windows shift click = refresh
|
332
|
-
else if (!
|
332
|
+
else if (!altKey && metaKey && shiftKey) {
|
333
333
|
me.fire('refresh', {component: me, record})
|
334
334
|
}
|
335
335
|
}
|
@@ -50,29 +50,6 @@ class MainContainerController extends Controller {
|
|
50
50
|
})
|
51
51
|
}
|
52
52
|
|
53
|
-
/**
|
54
|
-
*
|
55
|
-
*/
|
56
|
-
onConstructed() {
|
57
|
-
super.onConstructed();
|
58
|
-
|
59
|
-
let me = this;
|
60
|
-
|
61
|
-
Neo.Main.getByPath({path: 'location.search'})
|
62
|
-
.then(data => {
|
63
|
-
me.setState({
|
64
|
-
deck: getSearchParams(data).deck || 'learnneo'
|
65
|
-
})
|
66
|
-
});
|
67
|
-
|
68
|
-
// todo: target file does not exist inside the repo
|
69
|
-
/*fetch('../../../../resources/data/deck/EditorConfig.json')
|
70
|
-
.then(response => response.json()
|
71
|
-
.then(data =>
|
72
|
-
me.setState('editorConfig', data)
|
73
|
-
))*/
|
74
|
-
}
|
75
|
-
|
76
53
|
/**
|
77
54
|
* @param {Object} data
|
78
55
|
* @returns {Promise<void>}
|
@@ -263,15 +263,13 @@ class MainContainerController extends ComponentController {
|
|
263
263
|
onAppConnect(data) {
|
264
264
|
let me = this,
|
265
265
|
name = data.appName,
|
266
|
-
|
267
|
-
|
268
|
-
console.log('onAppConnect', name);
|
266
|
+
style, toolbar, view;
|
269
267
|
|
270
268
|
switch(name) {
|
271
269
|
case 'SharedCovidChart':
|
272
|
-
view
|
273
|
-
|
274
|
-
|
270
|
+
view = me.getReference('controls-panel');
|
271
|
+
|
272
|
+
view.parent.storeReferences();
|
275
273
|
|
276
274
|
toolbar = me.getReference('controls-panel-header');
|
277
275
|
style = toolbar.style || {};
|
@@ -301,9 +299,6 @@ class MainContainerController extends ComponentController {
|
|
301
299
|
if (view) {
|
302
300
|
NeoArray.add(me.connectedApps, name);
|
303
301
|
|
304
|
-
parentView = parentView ? parentView : view.isTab ? view.up('tab-container') : Neo.getComponent(view.parentId);
|
305
|
-
parentView.remove(view, false);
|
306
|
-
|
307
302
|
Neo.apps[name].on('render', () => {
|
308
303
|
me.timeout(100).then(() => {
|
309
304
|
me.getMainView(name).add(view)
|
@@ -323,8 +318,6 @@ class MainContainerController extends ComponentController {
|
|
323
318
|
view = parentView.items[0],
|
324
319
|
index, style, toolbar;
|
325
320
|
|
326
|
-
console.log('onAppDisconnect', name);
|
327
|
-
|
328
321
|
switch (name) {
|
329
322
|
case 'SharedCovid':
|
330
323
|
Neo.Main.windowClose({
|
@@ -342,8 +335,6 @@ class MainContainerController extends ComponentController {
|
|
342
335
|
if (view) {
|
343
336
|
NeoArray.remove(me.connectedApps, name);
|
344
337
|
|
345
|
-
parentView.remove(view, false);
|
346
|
-
|
347
338
|
switch (name) {
|
348
339
|
case 'SharedCovidChart':
|
349
340
|
toolbar = me.getReference('controls-panel-header');
|
@@ -147,7 +147,7 @@ class MainContainer extends ConfigurationViewport {
|
|
147
147
|
module : ComboBox,
|
148
148
|
forceSelection: true,
|
149
149
|
labelText : 'ui',
|
150
|
-
listeners : {change: me.
|
150
|
+
listeners : {change: me.onConfigRecordChange.bind(me, 'ui')},
|
151
151
|
style : {marginTop: '10px'},
|
152
152
|
value : me.exampleComponent.ui,
|
153
153
|
|
@@ -241,6 +241,14 @@ class MainContainer extends ConfigurationViewport {
|
|
241
241
|
}]*/
|
242
242
|
})
|
243
243
|
}
|
244
|
+
|
245
|
+
/**
|
246
|
+
* @param {String} config
|
247
|
+
* @param {Object} opts
|
248
|
+
*/
|
249
|
+
onConfigRecordChange(config, opts) {
|
250
|
+
this.exampleComponent[config] = opts.value['id']
|
251
|
+
}
|
244
252
|
}
|
245
253
|
|
246
254
|
export default Neo.setupClass(MainContainer);
|
@@ -73,16 +73,13 @@ class ViewportController extends Controller {
|
|
73
73
|
{appName} = data;
|
74
74
|
|
75
75
|
if (appName === 'GalleryControls') {
|
76
|
-
let
|
77
|
-
{mainView} = Neo.apps[appName];
|
76
|
+
let {mainView} = Neo.apps[appName];
|
78
77
|
|
79
78
|
me.connectedApps.push(appName);
|
80
79
|
|
81
|
-
controlsPanel.parent.remove(controlsPanel, false);
|
82
|
-
|
83
80
|
this.getReference('header-toolbar').hidden = true;
|
84
81
|
|
85
|
-
mainView.add(
|
82
|
+
mainView.add(me.getReference('controls-panel'))
|
86
83
|
}
|
87
84
|
}
|
88
85
|
|
@@ -96,16 +93,12 @@ class ViewportController extends Controller {
|
|
96
93
|
{appName, windowId} = data;
|
97
94
|
|
98
95
|
if (appName === 'GalleryControls') {
|
99
|
-
let controlsPanel = me.getReference('controls-panel');
|
100
|
-
|
101
|
-
controlsPanel.parent.remove(controlsPanel, false);
|
102
|
-
|
103
96
|
me.getReference('header-toolbar').hidden = false;
|
104
97
|
|
105
|
-
me.component.add(
|
98
|
+
me.component.add(me.getReference('controls-panel'))
|
106
99
|
}
|
107
100
|
// Close popup windows when closing or reloading the main window
|
108
|
-
else if (appName === 'Neo.examples.component.multiWindowCoronaGallery') {
|
101
|
+
else if (appName === 'Neo.examples.component.multiWindowCoronaGallery') {
|
109
102
|
Neo.Main.windowClose({names: me.connectedApps, windowId})
|
110
103
|
}
|
111
104
|
}
|
@@ -78,8 +78,6 @@ class ViewportController extends Controller {
|
|
78
78
|
|
79
79
|
me.connectedApps.push(appName);
|
80
80
|
|
81
|
-
controlsPanel.parent.remove(controlsPanel, false);
|
82
|
-
|
83
81
|
this.getReference('header-toolbar').hidden = true;
|
84
82
|
|
85
83
|
mainView.add(controlsPanel)
|
@@ -96,13 +94,9 @@ class ViewportController extends Controller {
|
|
96
94
|
{appName, windowId} = data;
|
97
95
|
|
98
96
|
if (appName === 'HelixControls') {
|
99
|
-
let controlsPanel = me.getReference('controls-panel');
|
100
|
-
|
101
|
-
controlsPanel.parent.remove(controlsPanel, false);
|
102
|
-
|
103
97
|
me.getReference('header-toolbar').hidden = false;
|
104
98
|
|
105
|
-
me.component.add(
|
99
|
+
me.component.add(me.getReference('controls-panel'))
|
106
100
|
}
|
107
101
|
// Close popup windows when closing or reloading the main window
|
108
102
|
else if (appName === 'Neo.examples.component.multiWindowHelix') {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "neo.mjs",
|
3
|
-
"version": "
|
3
|
+
"version": "9.0.0",
|
4
4
|
"description": "The webworkers driven UI framework",
|
5
5
|
"type": "module",
|
6
6
|
"repository": {
|
@@ -56,16 +56,16 @@
|
|
56
56
|
"envinfo": "^7.14.0",
|
57
57
|
"fs-extra": "^11.3.0",
|
58
58
|
"highlightjs-line-numbers.js": "^2.9.0",
|
59
|
-
"inquirer": "^12.
|
60
|
-
"marked": "^15.0.
|
59
|
+
"inquirer": "^12.6.0",
|
60
|
+
"marked": "^15.0.11",
|
61
61
|
"monaco-editor": "0.50.0",
|
62
62
|
"neo-jsdoc": "1.0.1",
|
63
63
|
"neo-jsdoc-x": "1.0.5",
|
64
64
|
"postcss": "^8.5.3",
|
65
|
-
"sass": "^1.
|
65
|
+
"sass": "^1.87.0",
|
66
66
|
"siesta-lite": "5.5.2",
|
67
67
|
"url": "^0.11.4",
|
68
|
-
"webpack": "^5.99.
|
68
|
+
"webpack": "^5.99.7",
|
69
69
|
"webpack-cli": "^6.0.1",
|
70
70
|
"webpack-dev-server": "^5.2.1",
|
71
71
|
"webpack-hook-plugin": "^1.0.7",
|
package/src/DefaultConfig.mjs
CHANGED
@@ -263,12 +263,12 @@ const DefaultConfig = {
|
|
263
263
|
useVdomWorker: true,
|
264
264
|
/**
|
265
265
|
* buildScripts/injectPackageVersion.mjs will update this value
|
266
|
-
* @default '
|
266
|
+
* @default '9.0.0'
|
267
267
|
* @memberOf! module:Neo
|
268
268
|
* @name config.version
|
269
269
|
* @type String
|
270
270
|
*/
|
271
|
-
version: '
|
271
|
+
version: '9.0.0'
|
272
272
|
};
|
273
273
|
|
274
274
|
Object.assign(DefaultConfig, {
|
package/src/button/Base.mjs
CHANGED
@@ -162,6 +162,12 @@ class Button extends Component {
|
|
162
162
|
get rippleWrapper() {
|
163
163
|
return this.getVdomRoot().cn[3]
|
164
164
|
}
|
165
|
+
/**
|
166
|
+
* @member {Object} textNode
|
167
|
+
*/
|
168
|
+
get textNode() {
|
169
|
+
return this.getVdomRoot().cn[1]
|
170
|
+
}
|
165
171
|
|
166
172
|
/**
|
167
173
|
* @param {Object} config
|
@@ -177,6 +183,20 @@ class Button extends Component {
|
|
177
183
|
})
|
178
184
|
}
|
179
185
|
|
186
|
+
/**
|
187
|
+
* Workaround fix for: https://github.com/neomjs/neo/issues/6659
|
188
|
+
* Todo: inspect this further (we do not want to add fixed ids for all child nodes)
|
189
|
+
* Triggered after the id config got changed
|
190
|
+
* @param {String} value
|
191
|
+
* @param {String} oldValue
|
192
|
+
* @protected
|
193
|
+
*/
|
194
|
+
afterSetId(value, oldValue) {
|
195
|
+
super.afterSetId(value, oldValue);
|
196
|
+
|
197
|
+
this.textNode.id = value + '__text'
|
198
|
+
}
|
199
|
+
|
180
200
|
/**
|
181
201
|
* Triggered after the badgePosition config got changed
|
182
202
|
* @param {String} value
|
@@ -350,10 +370,10 @@ class Button extends Component {
|
|
350
370
|
* @protected
|
351
371
|
*/
|
352
372
|
afterSetText(value, oldValue) {
|
353
|
-
let me
|
354
|
-
isEmpty
|
355
|
-
vdomRoot
|
356
|
-
textNode =
|
373
|
+
let me = this,
|
374
|
+
isEmpty = !value || value === '',
|
375
|
+
vdomRoot = me.getVdomRoot(),
|
376
|
+
{textNode} = me;
|
357
377
|
|
358
378
|
NeoArray.toggle(me._cls, 'no-text', isEmpty);
|
359
379
|
NeoArray.toggle(vdomRoot.cls, 'no-text', isEmpty);
|
@@ -495,7 +515,8 @@ class Button extends Component {
|
|
495
515
|
onClick(data) {
|
496
516
|
let me = this;
|
497
517
|
|
498
|
-
me.
|
518
|
+
me.bindCallback(me.handler, 'handler', me.handlerScope || me);
|
519
|
+
me.handler?.(data);
|
499
520
|
|
500
521
|
me.menu && me.toggleMenu();
|
501
522
|
me.route && me.changeRoute(); // only relevant for editRoute=true
|
@@ -517,9 +538,9 @@ class Button extends Component {
|
|
517
538
|
|
518
539
|
rippleEl.style = Object.assign(rippleEl.style || {}, {
|
519
540
|
animation: 'none',
|
520
|
-
left : `${data.clientX - buttonRect.left - radius}px`,
|
521
541
|
height : `${diameter}px`,
|
522
|
-
|
542
|
+
left : `${data.clientX - buttonRect.left - radius}px`,
|
543
|
+
top : `${data.clientY - buttonRect.top - radius}px`,
|
523
544
|
width : `${diameter}px`
|
524
545
|
});
|
525
546
|
|
package/src/component/Base.mjs
CHANGED
@@ -616,8 +616,6 @@ class Component extends Base {
|
|
616
616
|
let me = this;
|
617
617
|
|
618
618
|
if (value?.[0] || oldValue?.[0]) {
|
619
|
-
me.getController()?.parseDomListeners(me);
|
620
|
-
|
621
619
|
DomEventManager.updateDomListeners(me, value, oldValue)
|
622
620
|
}
|
623
621
|
}
|
@@ -955,7 +953,7 @@ class Component extends Base {
|
|
955
953
|
*/
|
956
954
|
afterSetStyle(value, oldValue) {
|
957
955
|
if (!(!value && oldValue === undefined)) {
|
958
|
-
this.updateStyle(
|
956
|
+
this.updateStyle()
|
959
957
|
}
|
960
958
|
}
|
961
959
|
|
@@ -1029,7 +1027,9 @@ class Component extends Base {
|
|
1029
1027
|
let me = this,
|
1030
1028
|
cls = me.cls;
|
1031
1029
|
|
1032
|
-
|
1030
|
+
if (oldValue) {
|
1031
|
+
NeoArray.remove(cls, `neo-${me.ntype}-${oldValue}`)
|
1032
|
+
}
|
1033
1033
|
|
1034
1034
|
if (value && value !== '') {
|
1035
1035
|
NeoArray.add(cls, `neo-${me.ntype}-${value}`)
|
@@ -1135,15 +1135,7 @@ class Component extends Base {
|
|
1135
1135
|
*/
|
1136
1136
|
afterSetWrapperStyle(value, oldValue) {
|
1137
1137
|
if (!(!value && oldValue === undefined)) {
|
1138
|
-
|
1139
|
-
vdom = me.vdom;
|
1140
|
-
|
1141
|
-
if (!vdom.id) {
|
1142
|
-
vdom.style = value;
|
1143
|
-
me.update()
|
1144
|
-
} else {
|
1145
|
-
me.updateStyle(value, oldValue, vdom.id)
|
1146
|
-
}
|
1138
|
+
this.updateStyle()
|
1147
1139
|
}
|
1148
1140
|
}
|
1149
1141
|
|
@@ -1263,7 +1255,7 @@ class Component extends Base {
|
|
1263
1255
|
oldValue?.destroy();
|
1264
1256
|
|
1265
1257
|
if (value) {
|
1266
|
-
return ClassSystemUtil.beforeSetInstance(value,
|
1258
|
+
return ClassSystemUtil.beforeSetInstance(value, 'Neo.controller.Component', {
|
1267
1259
|
component: this,
|
1268
1260
|
windowId : this.windowId
|
1269
1261
|
})
|
@@ -1319,31 +1311,6 @@ class Component extends Base {
|
|
1319
1311
|
return value
|
1320
1312
|
}
|
1321
1313
|
|
1322
|
-
/**
|
1323
|
-
* Triggered before the stateProvider config gets changed.
|
1324
|
-
* Creates a state.Provider instance if needed.
|
1325
|
-
* @param {Object} value
|
1326
|
-
* @param {Object} oldValue
|
1327
|
-
* @returns {Neo.state.Provider}
|
1328
|
-
* @protected
|
1329
|
-
*/
|
1330
|
-
beforeSetStateProvider(value, oldValue) {
|
1331
|
-
oldValue?.destroy();
|
1332
|
-
|
1333
|
-
if (value) {
|
1334
|
-
let me = this,
|
1335
|
-
defaultValues = {component: me};
|
1336
|
-
|
1337
|
-
if (me.modelData) {
|
1338
|
-
defaultValues.data = me.modelData
|
1339
|
-
}
|
1340
|
-
|
1341
|
-
return ClassSystemUtil.beforeSetInstance(value, 'Neo.state.Provider', defaultValues)
|
1342
|
-
}
|
1343
|
-
|
1344
|
-
return null
|
1345
|
-
}
|
1346
|
-
|
1347
1314
|
/**
|
1348
1315
|
* Triggered before the plugins config gets changed.
|
1349
1316
|
* @param {Object[]} value
|
@@ -1378,6 +1345,31 @@ class Component extends Base {
|
|
1378
1345
|
return (Neo.isNumber(oldValue) && oldValue > 0) ? (oldValue - 1) : 0
|
1379
1346
|
}
|
1380
1347
|
|
1348
|
+
/**
|
1349
|
+
* Triggered before the stateProvider config gets changed.
|
1350
|
+
* Creates a state.Provider instance if needed.
|
1351
|
+
* @param {Object} value
|
1352
|
+
* @param {Object} oldValue
|
1353
|
+
* @returns {Neo.state.Provider}
|
1354
|
+
* @protected
|
1355
|
+
*/
|
1356
|
+
beforeSetStateProvider(value, oldValue) {
|
1357
|
+
oldValue?.destroy();
|
1358
|
+
|
1359
|
+
if (value) {
|
1360
|
+
let me = this,
|
1361
|
+
defaultValues = {component: me};
|
1362
|
+
|
1363
|
+
if (me.modelData) {
|
1364
|
+
defaultValues.data = me.modelData
|
1365
|
+
}
|
1366
|
+
|
1367
|
+
return ClassSystemUtil.beforeSetInstance(value, 'Neo.state.Provider', defaultValues)
|
1368
|
+
}
|
1369
|
+
|
1370
|
+
return null
|
1371
|
+
}
|
1372
|
+
|
1381
1373
|
/**
|
1382
1374
|
* Triggered before the updateDepth config gets changed.
|
1383
1375
|
* @param {Number} value
|
@@ -1943,7 +1935,6 @@ class Component extends Base {
|
|
1943
1935
|
|
1944
1936
|
let me = this;
|
1945
1937
|
|
1946
|
-
me.getController() ?.parseConfig(me);
|
1947
1938
|
me.getStateProvider()?.parseConfig(me)
|
1948
1939
|
}
|
1949
1940
|
|
@@ -2603,55 +2594,21 @@ class Component extends Base {
|
|
2603
2594
|
}
|
2604
2595
|
|
2605
2596
|
/**
|
2606
|
-
*
|
2607
|
-
* @param {Object|String} value
|
2608
|
-
* @param {Object|String} oldValue
|
2609
|
-
* @param {String} [id=this.id]
|
2610
|
-
* @protected
|
2597
|
+
*
|
2611
2598
|
*/
|
2612
|
-
updateStyle(
|
2613
|
-
let me
|
2614
|
-
|
2615
|
-
|
2616
|
-
|
2617
|
-
if (delta) {
|
2618
|
-
vdom = VDomUtil.find(me.vdom, id);
|
2619
|
-
vnode = me.vnode && VNodeUtil.find(me.vnode, id);
|
2620
|
-
|
2621
|
-
if (!me.hasUnmountedVdomChanges) {
|
2622
|
-
me.hasUnmountedVdomChanges = !me.mounted && me.hasBeenMounted
|
2623
|
-
}
|
2624
|
-
|
2625
|
-
vdom.vdom.style = value; // keep the vdom in sync
|
2626
|
-
|
2627
|
-
if (me.silentVdomUpdate) {
|
2628
|
-
me.needsVdomUpdate = true
|
2629
|
-
} else if (me.mounted) {
|
2630
|
-
vnodeStyle = vnode.vnode.style;
|
2631
|
-
|
2632
|
-
// keep the vnode in sync
|
2633
|
-
// we need the iteration since vdom shortcuts (height, width,...) live within the vnode style
|
2634
|
-
// using vnode.vnode.style = style would lose them.
|
2635
|
-
Object.entries(delta).forEach(([key, value]) => {
|
2636
|
-
if (value === null) {
|
2637
|
-
delete vnode.vnode.style[key]
|
2638
|
-
} else {
|
2639
|
-
vnodeStyle[key] = value
|
2640
|
-
}
|
2641
|
-
});
|
2642
|
-
|
2643
|
-
opts = {
|
2644
|
-
action: 'updateDom',
|
2645
|
-
deltas: [{id, style: delta}]
|
2646
|
-
};
|
2647
|
-
|
2648
|
-
if (currentWorker.isSharedWorker) {
|
2649
|
-
opts.appName = me.appName
|
2650
|
-
}
|
2599
|
+
updateStyle() {
|
2600
|
+
let me = this,
|
2601
|
+
{vdom} = me,
|
2602
|
+
vdomRoot = me.getVdomRoot();
|
2651
2603
|
|
2652
|
-
|
2653
|
-
|
2604
|
+
if (vdom !== vdomRoot) {
|
2605
|
+
vdom .style = me.wrapperStyle;
|
2606
|
+
vdomRoot.style = me.style
|
2607
|
+
} else {
|
2608
|
+
vdom.style = {...me.wrapperStyle, ...me.style}
|
2654
2609
|
}
|
2610
|
+
|
2611
|
+
me.update()
|
2655
2612
|
}
|
2656
2613
|
|
2657
2614
|
/**
|
@@ -50,14 +50,15 @@ class AmChart extends Component {
|
|
50
50
|
* @member {String} package='am4charts'
|
51
51
|
*/
|
52
52
|
package: 'am4charts',
|
53
|
+
style: {
|
54
|
+
height: '100%'
|
55
|
+
},
|
53
56
|
/**
|
54
57
|
* @member {Object} _vdom
|
55
58
|
*/
|
56
59
|
_vdom:
|
57
60
|
{style: {position: 'relative'}, cn: [
|
58
|
-
{style: {position: 'absolute', height: '100%', width: '100%'}, cn: [
|
59
|
-
{style: {color:'red',height: '100%'}}
|
60
|
-
]}
|
61
|
+
{style: {position: 'absolute', height: '100%', width: '100%'}, cn: [{}]}
|
61
62
|
]}
|
62
63
|
}
|
63
64
|
|
package/src/container/Base.mjs
CHANGED
@@ -304,7 +304,7 @@ class Container extends Component {
|
|
304
304
|
let me = this,
|
305
305
|
config = {appName: me.appName, parentId: me.id, parentIndex: index, windowId: me.windowId},
|
306
306
|
defaults = {...me.itemDefaults},
|
307
|
-
lazyLoadItem, module;
|
307
|
+
lazyLoadItem, module, parent;
|
308
308
|
|
309
309
|
if (defaults) {
|
310
310
|
if (item.module) {
|
@@ -328,11 +328,23 @@ class Container extends Component {
|
|
328
328
|
}
|
329
329
|
|
330
330
|
case 'NeoInstance': {
|
331
|
+
parent = item.parent;
|
332
|
+
|
333
|
+
if (parent && parent !== me) {
|
334
|
+
parent.remove(item, false);
|
335
|
+
delete item.vdom.removeDom;
|
336
|
+
|
337
|
+
// Convenience logic, especially for moving components into different browser windows:
|
338
|
+
// A component might rely on references & handler methods inside the previous controller realm
|
339
|
+
if (!item.controller && !me.getController() && parent.getController()) {
|
340
|
+
item.controller = {parent: parent.getController()}
|
341
|
+
}
|
342
|
+
}
|
343
|
+
|
331
344
|
item.set(config);
|
332
345
|
|
333
|
-
// In case an item got created outside a
|
346
|
+
// In case an item got created outside a stateProvider based hierarchy, there might be bindings or string
|
334
347
|
// based listeners which still need to get resolved.
|
335
|
-
item.getController() ?.parseConfig(item);
|
336
348
|
item.getStateProvider()?.parseConfig(item);
|
337
349
|
break
|
338
350
|
}
|