neo.mjs 7.6.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.
- package/apps/ServiceWorker.mjs +2 -2
- package/apps/portal/index.html +1 -1
- package/apps/portal/neo-config.json +1 -0
- package/apps/portal/resources/data/examples_devmode.json +20 -21
- package/apps/portal/resources/data/examples_dist_dev.json +19 -20
- package/apps/portal/resources/data/examples_dist_prod.json +19 -20
- package/apps/portal/view/ViewportController.mjs +20 -4
- package/apps/portal/view/home/FooterContainer.mjs +1 -1
- package/apps/portal/view/learn/{ContentView.mjs → ContentComponent.mjs} +98 -38
- package/apps/portal/view/learn/CubeLayoutButton.mjs +77 -0
- package/apps/portal/view/learn/MainContainerController.mjs +1 -0
- package/apps/portal/view/learn/PageContainer.mjs +4 -4
- package/apps/shareddialog/view/DemoDialog.mjs +2 -10
- package/apps/shareddialog/view/MainContainerController.mjs +137 -126
- package/buildScripts/webpack/json/myApps.template.json +1 -1
- package/examples/ServiceWorker.mjs +2 -2
- package/package.json +3 -3
- package/resources/data/deck/learnneo/pages/Welcome.md +1 -1
- package/resources/data/deck/learnneo/pages/benefits/FormsEngine.md +1 -1
- package/resources/data/deck/learnneo/pages/guides/PortalApp.md +35 -0
- package/resources/data/deck/learnneo/tree.json +1 -0
- package/resources/scss/src/apps/colors/TableContainer.scss +11 -9
- package/resources/scss/src/apps/portal/blog/List.scss +1 -0
- package/resources/scss/src/apps/portal/examples/List.scss +1 -0
- package/resources/scss/src/apps/portal/services/Component.scss +7 -8
- package/resources/scss/theme-dark/apps/docs/classdetails/MembersList.scss +3 -1
- package/resources/scss/theme-dark/button/Base.scss +3 -1
- package/resources/scss/theme-dark/list/Base.scss +3 -1
- package/resources/scss/theme-dark/table/header/Button.scss +3 -1
- package/resources/scss/theme-dark/tree/List.scss +3 -1
- package/resources/scss/theme-light/apps/covid/HeaderContainer.scss +6 -4
- package/resources/scss/theme-light/apps/docs/classdetails/MembersList.scss +3 -1
- package/resources/scss/theme-light/button/Base.scss +3 -1
- package/resources/scss/theme-light/grid/View.scss +8 -6
- package/resources/scss/theme-light/list/Base.scss +6 -4
- package/resources/scss/theme-light/table/View.scss +8 -6
- package/resources/scss/theme-light/table/header/Button.scss +3 -1
- package/resources/scss/theme-neo-light/apps/covid/HeaderContainer.scss +6 -4
- package/resources/scss/theme-neo-light/apps/docs/classdetails/MembersList.scss +3 -1
- package/resources/scss/theme-neo-light/design-tokens/Core.scss +11 -9
- package/resources/scss/theme-neo-light/grid/View.scss +8 -6
- package/resources/scss/theme-neo-light/table/View.scss +8 -6
- package/resources/scss/theme-neo-light/table/header/Button.scss +3 -1
- package/src/DefaultConfig.mjs +2 -2
- package/src/collection/Base.mjs +4 -3
- package/src/container/Base.mjs +12 -7
- package/src/draggable/DragProxyComponent.mjs +10 -20
- package/src/main/addon/Navigator.mjs +34 -32
- package/src/main/addon/WindowPosition.mjs +13 -15
- package/src/plugin/Resizable.mjs +20 -11
- package/src/tab/Container.mjs +5 -1
- package/src/table/View.mjs +2 -2
- package/test/siesta/siesta.js +1 -0
- package/test/siesta/tests/ManagerInstance.mjs +35 -0
- package/apps/krausest/README.md +0 -3
- package/apps/krausest/TableCollection.mjs +0 -46
- package/apps/krausest/app.mjs +0 -8
- package/apps/krausest/css/currentStyle.css +0 -2
- package/apps/krausest/css/main.css +0 -26
- package/apps/krausest/index.html +0 -12
- package/apps/krausest/neo-config.json +0 -10
- package/apps/krausest/view/MainComponent.mjs +0 -122
- package/apps/krausest/view/MainComponentController.mjs +0 -33
- package/apps/krausest/view/TableComponent.mjs +0 -152
- /package/resources/scss/src/apps/portal/learn/{ContentView.scss → ContentComponent.scss} +0 -0
@@ -0,0 +1,77 @@
|
|
1
|
+
import Button from '../../../../src/button/Base.mjs';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* @class Portal.view.learn.CubeLayoutButton
|
5
|
+
* @extends Neo.button.Base
|
6
|
+
*/
|
7
|
+
class CubeLayoutButton extends Button {
|
8
|
+
static config = {
|
9
|
+
/**
|
10
|
+
* @member {String} className='Portal.view.learn.CubeLayoutButton'
|
11
|
+
* @protected
|
12
|
+
*/
|
13
|
+
className: 'Portal.view.learn.CubeLayoutButton',
|
14
|
+
/**
|
15
|
+
* @member {String|null} activeLayout_=null
|
16
|
+
*/
|
17
|
+
activeLayout_: null,
|
18
|
+
}
|
19
|
+
|
20
|
+
/**
|
21
|
+
* @member {Object} activateText='Activate Cube-Layout'
|
22
|
+
*/
|
23
|
+
activateText = 'Activate Cube-Layout'
|
24
|
+
/**
|
25
|
+
* @member {Object} deactivateText='Deactivate Cube-Layout'
|
26
|
+
*/
|
27
|
+
deactivateText = 'Deactivate Cube-Layout'
|
28
|
+
|
29
|
+
/**
|
30
|
+
* @member {Portal.view.ViewportController} viewportController
|
31
|
+
*/
|
32
|
+
get viewportController() {
|
33
|
+
return this.getController('viewport-controller')
|
34
|
+
}
|
35
|
+
|
36
|
+
/**
|
37
|
+
* @param {Object} config
|
38
|
+
*/
|
39
|
+
construct(config) {
|
40
|
+
super.construct(config);
|
41
|
+
|
42
|
+
let me = this;
|
43
|
+
|
44
|
+
me.activeLayout = me.viewportController.mainContentLayout;
|
45
|
+
me.handler = me.changeLayout.bind(me)
|
46
|
+
}
|
47
|
+
|
48
|
+
/**
|
49
|
+
* Triggered after the activeLayout config got changed
|
50
|
+
* @param {String|null} value
|
51
|
+
* @param {String|null} oldValue
|
52
|
+
*/
|
53
|
+
afterSetActiveLayout(value, oldValue) {
|
54
|
+
let me = this;
|
55
|
+
|
56
|
+
if (value) {
|
57
|
+
me.viewportController.mainContentLayout = value;
|
58
|
+
|
59
|
+
if (value === 'card') {
|
60
|
+
me.text = me.activateText
|
61
|
+
} else if (value === 'mixed') {
|
62
|
+
me.text = me.deactivateText
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}
|
66
|
+
|
67
|
+
/**
|
68
|
+
* @param {Object} data
|
69
|
+
*/
|
70
|
+
changeLayout(data) {
|
71
|
+
let me = this;
|
72
|
+
|
73
|
+
me.activeLayout = me.text === me.activateText ? 'mixed' : 'card'
|
74
|
+
}
|
75
|
+
}
|
76
|
+
|
77
|
+
export default Neo.setupClass(CubeLayoutButton);
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import Container
|
2
|
-
import
|
3
|
-
import Toolbar
|
1
|
+
import Container from '../../../../src/container/Base.mjs';
|
2
|
+
import ContentComponent from './ContentComponent.mjs';
|
3
|
+
import Toolbar from '../../../../src/toolbar/Base.mjs';
|
4
4
|
|
5
5
|
/**
|
6
6
|
* @class Portal.view.learn.PageContainer
|
@@ -29,7 +29,7 @@ class PageContainer extends Container {
|
|
29
29
|
* @member {Object[]} items
|
30
30
|
*/
|
31
31
|
items: [{
|
32
|
-
module :
|
32
|
+
module : ContentComponent,
|
33
33
|
reference: 'content',
|
34
34
|
listeners: {
|
35
35
|
edit : 'onContentEdit',
|
@@ -28,6 +28,7 @@ class DemoDialog extends Dialog {
|
|
28
28
|
* @member {Object} itemDefaults={labelWidth:70}
|
29
29
|
*/
|
30
30
|
itemDefaults: {
|
31
|
+
flex : 'none',
|
31
32
|
labelWidth: 70
|
32
33
|
},
|
33
34
|
/**
|
@@ -35,20 +36,11 @@ class DemoDialog extends Dialog {
|
|
35
36
|
*/
|
36
37
|
items: [{
|
37
38
|
module : TextField,
|
38
|
-
flex : 'none',
|
39
39
|
labelText: 'Field 1'
|
40
40
|
}, {
|
41
41
|
module : TextField,
|
42
|
-
flex : 'none',
|
43
42
|
labelText: 'Field 2'
|
44
|
-
}]
|
45
|
-
/**
|
46
|
-
* @member {Object} wrapperStyle={height:'40%',width:'40%'}
|
47
|
-
*/
|
48
|
-
wrapperStyle: {
|
49
|
-
height: '40%',
|
50
|
-
width : '40%'
|
51
|
-
}
|
43
|
+
}]
|
52
44
|
}
|
53
45
|
}
|
54
46
|
|
@@ -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
|
-
*
|
28
|
+
* @member {String[]} connectedApps=[]
|
64
29
|
*/
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
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,9 @@ class MainContainerController extends ComponentController {
|
|
103
94
|
animateTargetId : data.component.id,
|
104
95
|
appName,
|
105
96
|
boundaryContainerId: null,
|
106
|
-
cls : [me.currentTheme
|
97
|
+
cls : [me.currentTheme],
|
98
|
+
height : 200,
|
99
|
+
width : 300,
|
107
100
|
windowId,
|
108
101
|
|
109
102
|
dragZoneConfig: {
|
@@ -126,7 +119,7 @@ class MainContainerController extends ComponentController {
|
|
126
119
|
|
127
120
|
if (me.dockedWindowProxy) {
|
128
121
|
me.dockedWindowProxy.destroy(true);
|
129
|
-
me.dockedWindowProxy = null
|
122
|
+
me.dockedWindowProxy = null
|
130
123
|
}
|
131
124
|
}
|
132
125
|
|
@@ -169,15 +162,15 @@ class MainContainerController extends ComponentController {
|
|
169
162
|
} else { // drop the dialog fully into the dragEnd window
|
170
163
|
me.mountDialogInOtherWindow({
|
171
164
|
fullyIncludeIntoWindow: true,
|
172
|
-
proxyRect
|
165
|
+
proxyRect
|
173
166
|
})
|
174
167
|
}
|
175
168
|
}
|
176
169
|
|
177
170
|
/**
|
178
|
-
* @param {Boolean} enable
|
171
|
+
* @param {Boolean} enable=true
|
179
172
|
*/
|
180
|
-
enableOpenDialogButtons(enable) {
|
173
|
+
enableOpenDialogButtons(enable=true) {
|
181
174
|
this.getOpenDialogButtons().forEach(button => {
|
182
175
|
button.disabled = !enable
|
183
176
|
})
|
@@ -194,9 +187,7 @@ class MainContainerController extends ComponentController {
|
|
194
187
|
*
|
195
188
|
*/
|
196
189
|
getOpenDialogButtons() {
|
197
|
-
return ComponentManager.find({
|
198
|
-
flag: 'open-dialog-button'
|
199
|
-
})
|
190
|
+
return ComponentManager.find({flag: 'open-dialog-button'})
|
200
191
|
}
|
201
192
|
|
202
193
|
/**
|
@@ -219,9 +210,8 @@ class MainContainerController extends ComponentController {
|
|
219
210
|
* @return {{left: String, top: String}}
|
220
211
|
*/
|
221
212
|
getProxyPosition(proxyRect, side, fullyIncludeIntoWindow=false) {
|
222
|
-
let me
|
223
|
-
dragStartWindowRect = me
|
224
|
-
targetWindowSize = me.targetWindowSize,
|
213
|
+
let me = this,
|
214
|
+
{dragStartWindowRect, targetWindowSize} = me,
|
225
215
|
left, top;
|
226
216
|
|
227
217
|
switch(side) {
|
@@ -260,14 +250,16 @@ class MainContainerController extends ComponentController {
|
|
260
250
|
*/
|
261
251
|
mountDialogInOtherWindow(data) {
|
262
252
|
let me = this,
|
263
|
-
appName
|
253
|
+
{appName, windowId} = me.component,
|
264
254
|
dialog = me.dialog,
|
265
255
|
dragEndWindowAppName = me.dockedWindowAppName,
|
256
|
+
dragEndWindowId = me.dockedWindowId,
|
266
257
|
side = me.dockedWindowSide,
|
267
|
-
proxyPosition, wrapperStyle;
|
258
|
+
needsSwitch, proxyPosition, wrapperStyle;
|
268
259
|
|
269
260
|
if (dialog.appName === dragEndWindowAppName) {
|
270
|
-
dragEndWindowAppName =
|
261
|
+
dragEndWindowAppName = appName;
|
262
|
+
dragEndWindowId = windowId;
|
271
263
|
side = me.getOppositeSide(me.dockedWindowSide)
|
272
264
|
}
|
273
265
|
|
@@ -278,9 +270,10 @@ class MainContainerController extends ComponentController {
|
|
278
270
|
// we need a delay to ensure dialog.Base: onDragEnd() is done.
|
279
271
|
// we could use the dragEnd event of the dragZone instead.
|
280
272
|
me.timeout(70).then(() => {
|
281
|
-
|
273
|
+
needsSwitch = dialog.appName === dragEndWindowAppName;
|
282
274
|
|
283
|
-
|
275
|
+
dialog.appName = needsSwitch ? appName : dragEndWindowAppName;
|
276
|
+
dialog.windowId = needsSwitch ? windowId : dragEndWindowId;
|
284
277
|
|
285
278
|
me.getOpenDialogButtons().forEach(button => {
|
286
279
|
if (button.appName === dialog.appName) {
|
@@ -307,16 +300,16 @@ class MainContainerController extends ComponentController {
|
|
307
300
|
* @param {Number} data.windowId
|
308
301
|
*/
|
309
302
|
onAppConnect(data) {
|
310
|
-
let me
|
311
|
-
|
303
|
+
let me = this,
|
304
|
+
{appName, windowId} = data;
|
312
305
|
|
313
|
-
NeoArray.add(me.connectedApps,
|
306
|
+
NeoArray.add(me.connectedApps, appName);
|
314
307
|
|
315
|
-
if (
|
316
|
-
me.switchThemeForApp(
|
308
|
+
if (appName !== 'SharedDialog' && me.currentTheme !== 'neo-theme-light') {
|
309
|
+
me.switchThemeForApp(windowId)
|
317
310
|
}
|
318
311
|
|
319
|
-
if (
|
312
|
+
if (appName === me.dockedWindowAppName) {
|
320
313
|
me.dockedWindowId = data.windowId;
|
321
314
|
me.getOpenDockedWindowButton().disabled = true
|
322
315
|
}
|
@@ -329,29 +322,46 @@ class MainContainerController extends ComponentController {
|
|
329
322
|
* @param {String} data.appName
|
330
323
|
*/
|
331
324
|
onAppDisconnect(data) {
|
332
|
-
let me
|
333
|
-
|
325
|
+
let me = this,
|
326
|
+
{connectedApps, dialog, windowId} = me,
|
327
|
+
name = data.appName;
|
334
328
|
|
335
329
|
if (name === 'SharedDialog') {
|
336
330
|
// we want to close all popup windows, which equals to all connected apps minus the main app
|
337
|
-
NeoArray.remove(
|
331
|
+
NeoArray.remove(connectedApps, 'SharedDialog');
|
338
332
|
|
339
333
|
Neo.Main.windowClose({
|
340
|
-
names:
|
334
|
+
names: connectedApps,
|
335
|
+
windowId
|
341
336
|
})
|
342
|
-
}
|
343
|
-
NeoArray.remove(
|
337
|
+
} if (name === me.dockedWindowAppName) {
|
338
|
+
NeoArray.remove(connectedApps, name);
|
344
339
|
|
345
|
-
Neo.main.addon.WindowPosition.unregisterWindow({
|
346
|
-
|
347
|
-
|
348
|
-
|
340
|
+
Neo.main.addon.WindowPosition.unregisterWindow({name, windowId});
|
341
|
+
|
342
|
+
if (dialog && dialog.windowId !== windowId) {
|
343
|
+
me.enableOpenDialogButtons()
|
344
|
+
}
|
349
345
|
|
350
|
-
if (name === me.dockedWindowAppName) {
|
351
346
|
me.getOpenDockedWindowButton().disabled = false
|
352
347
|
}
|
353
348
|
}
|
354
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
|
+
|
355
365
|
/**
|
356
366
|
* @param {Object} data
|
357
367
|
*/
|
@@ -363,16 +373,15 @@ class MainContainerController extends ComponentController {
|
|
363
373
|
*
|
364
374
|
*/
|
365
375
|
onDialogClose() {
|
366
|
-
this.enableOpenDialogButtons(true)
|
376
|
+
this.enableOpenDialogButtons(true);
|
377
|
+
this.dialog = null
|
367
378
|
}
|
368
379
|
|
369
380
|
/**
|
370
381
|
* @param {Object} data
|
371
382
|
*/
|
372
383
|
onDockedPositionChange(data) {
|
373
|
-
|
374
|
-
this.dockedWindowSide = data.component.value
|
375
|
-
}
|
384
|
+
this.dockedWindowSide = data.value
|
376
385
|
}
|
377
386
|
|
378
387
|
/**
|
@@ -380,11 +389,10 @@ class MainContainerController extends ComponentController {
|
|
380
389
|
*/
|
381
390
|
onDragEnd(data) {
|
382
391
|
if (this.hasDockedWindow()) {
|
383
|
-
let me
|
384
|
-
dialog
|
385
|
-
|
386
|
-
|
387
|
-
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;
|
388
396
|
|
389
397
|
if (dialog.appName === me.dockedWindowAppName) {
|
390
398
|
side = me.getOppositeSide(me.dockedWindowSide)
|
@@ -392,7 +400,6 @@ class MainContainerController extends ComponentController {
|
|
392
400
|
|
393
401
|
if (Rectangle.leavesSide(dragStartWindowRect, proxyRect, side)) {
|
394
402
|
if (Rectangle.excludes(dragStartWindowRect, proxyRect)) {
|
395
|
-
console.log('mountDialogInOtherWindow');
|
396
403
|
me.mountDialogInOtherWindow({proxyRect})
|
397
404
|
} else {
|
398
405
|
me.dropDialogBetweenWindows(proxyRect)
|
@@ -407,7 +414,7 @@ class MainContainerController extends ComponentController {
|
|
407
414
|
onDragMove(data) {
|
408
415
|
if (this.hasDockedWindow()) {
|
409
416
|
let me = this,
|
410
|
-
|
417
|
+
{dialogRect, dragStartWindowRect, dockedWindowAppName, dockedWindowId} = me,
|
411
418
|
proxyRect = Rectangle.moveTo(dialogRect, data.clientX - data.offsetX, data.clientY - data.offsetY),
|
412
419
|
side = me.dockedWindowSide,
|
413
420
|
proxyPosition, vdom;
|
@@ -435,19 +442,20 @@ class MainContainerController extends ComponentController {
|
|
435
442
|
});
|
436
443
|
|
437
444
|
me.dockedWindowProxy = Neo.create({
|
438
|
-
module
|
439
|
-
appName
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
vdom : vdom,
|
445
|
-
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
|
446
451
|
});
|
447
|
-
|
452
|
+
|
448
453
|
// The other window has most likely not loaded The dialog JS module yet,
|
449
454
|
// but the drag proxy is using some CSS rules of it.
|
455
|
+
// todo: a new helper method to parse an existing instance based on its cmp tree for theme files
|
450
456
|
Neo.currentWorker.insertThemeFiles(dockedWindowId, Neo.dialog.Base.prototype);
|
457
|
+
Neo.currentWorker.insertThemeFiles(dockedWindowId, Neo.form.field.Text.prototype);
|
458
|
+
Neo.currentWorker.insertThemeFiles(dockedWindowId, Neo.form.field.trigger.Clear.prototype);
|
451
459
|
Neo.currentWorker.insertThemeFiles(dockedWindowId, Neo.draggable.DragProxyComponent.prototype)
|
452
460
|
} else {
|
453
461
|
me.updateDockedWindowProxyStyle({
|
@@ -467,7 +475,7 @@ console.log(me.windowId, dockedWindowId);
|
|
467
475
|
onDragStart(data) {
|
468
476
|
if (this.hasDockedWindow()) {
|
469
477
|
let me = this,
|
470
|
-
appName
|
478
|
+
{appName} = me.component,
|
471
479
|
dockedHorizontal = me.dockedWindowSide === 'left' || me.dockedWindowSide === 'right';
|
472
480
|
|
473
481
|
me.dialogRect = data.dragElementRect;
|
@@ -508,35 +516,37 @@ console.log(me.windowId, dockedWindowId);
|
|
508
516
|
* @param {Object} handlerData
|
509
517
|
*/
|
510
518
|
openDockedWindow(handlerData) {
|
511
|
-
|
519
|
+
let {windowId} = this;
|
520
|
+
|
521
|
+
Neo.Main.getWindowData({windowId}).then(data => {
|
512
522
|
let me = this,
|
513
523
|
dock = me.dockedWindowSide,
|
514
524
|
size = me.dockedWindowSize,
|
515
525
|
height, left, top, width;
|
516
526
|
|
517
|
-
switch
|
527
|
+
switch(dock) {
|
518
528
|
case 'bottom':
|
519
529
|
height = size;
|
520
530
|
left = data.screenLeft;
|
521
|
-
top = data.outerHeight + data.screenTop -
|
531
|
+
top = data.outerHeight + data.screenTop - 62;
|
522
532
|
width = data.outerWidth;
|
523
533
|
break
|
524
534
|
case 'left':
|
525
|
-
height = data.outerHeight -
|
535
|
+
height = data.outerHeight - 86;
|
526
536
|
left = data.screenLeft - size;
|
527
|
-
top = data.screenTop +
|
537
|
+
top = data.screenTop + 24;
|
528
538
|
width = size;
|
529
539
|
break
|
530
540
|
case 'right':
|
531
|
-
height = data.outerHeight -
|
541
|
+
height = data.outerHeight - 86;
|
532
542
|
left = data.outerWidth + data.screenLeft;
|
533
|
-
top = data.screenTop +
|
543
|
+
top = data.screenTop + 24;
|
534
544
|
width = size;
|
535
545
|
break
|
536
546
|
case 'top':
|
537
547
|
height = size;
|
538
548
|
left = data.screenLeft;
|
539
|
-
top = data.screenTop - size +
|
549
|
+
top = data.screenTop - size + 24;
|
540
550
|
width = data.outerWidth;
|
541
551
|
break
|
542
552
|
}
|
@@ -544,13 +554,15 @@ console.log(me.windowId, dockedWindowId);
|
|
544
554
|
Neo.Main.windowOpen({
|
545
555
|
url : 'childapps/shareddialog2/index.html',
|
546
556
|
windowFeatures: `height=${height},left=${left},top=${top},width=${width}`,
|
557
|
+
windowId,
|
547
558
|
windowName : me.dockedWindowAppName
|
548
559
|
});
|
549
560
|
|
550
561
|
Neo.main.addon.WindowPosition.registerWindow({
|
551
|
-
dock
|
562
|
+
dock,
|
552
563
|
name: me.dockedWindowAppName,
|
553
|
-
size
|
564
|
+
size,
|
565
|
+
windowId
|
554
566
|
})
|
555
567
|
})
|
556
568
|
}
|
@@ -574,35 +586,34 @@ console.log(me.windowId, dockedWindowId);
|
|
574
586
|
theme = 'neo-theme-light';
|
575
587
|
}
|
576
588
|
|
589
|
+
me.previousTheme = me.currentTheme;
|
590
|
+
me.currentTheme = theme;
|
591
|
+
|
577
592
|
me.connectedApps.forEach(appName => {
|
578
|
-
me.switchThemeForApp(appName
|
593
|
+
me.switchThemeForApp(Neo.apps[appName].windowId)
|
579
594
|
});
|
580
595
|
|
581
|
-
button.set({
|
582
|
-
iconCls: iconCls,
|
583
|
-
text : buttonText
|
584
|
-
});
|
596
|
+
button.set({iconCls, text: buttonText});
|
585
597
|
|
586
598
|
if (dialog) {
|
587
599
|
cls = dialog.cls;
|
588
600
|
|
589
|
-
NeoArray.removeAdd(cls, me.
|
601
|
+
NeoArray.removeAdd(cls, me.previousTheme, me.currentTheme);
|
590
602
|
|
591
603
|
dialog.cls = cls
|
592
604
|
}
|
593
|
-
|
594
|
-
me.currentTheme = theme
|
595
605
|
}
|
596
606
|
|
597
607
|
/**
|
598
|
-
* @param {
|
599
|
-
* @param {String} theme
|
608
|
+
* @param {Number} windowId
|
600
609
|
*/
|
601
|
-
switchThemeForApp(
|
610
|
+
switchThemeForApp(windowId) {
|
611
|
+
let {currentTheme, previousTheme} = this;
|
612
|
+
|
602
613
|
Neo.main.DomAccess.setBodyCls({
|
603
|
-
|
604
|
-
|
605
|
-
|
614
|
+
add : [currentTheme],
|
615
|
+
remove : previousTheme ? [previousTheme]: [],
|
616
|
+
windowId
|
606
617
|
})
|
607
618
|
}
|
608
619
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "neo.mjs",
|
3
|
-
"version": "7.
|
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": "^
|
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.
|
63
|
+
"sass": "^1.79.3",
|
64
64
|
"siesta-lite": "5.5.2",
|
65
65
|
"url": "^0.11.4",
|
66
66
|
"webpack": "^5.94.0",
|