neo.mjs 6.18.1 → 6.18.2

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/colors/view/HeaderToolbar.mjs +6 -6
  3. package/apps/portal/view/HeaderToolbar.mjs +1 -2
  4. package/apps/portal/view/home/MainContainer.mjs +14 -12
  5. package/apps/portal/view/home/parts/AfterMath.mjs +19 -16
  6. package/apps/portal/view/home/parts/BaseContainer.mjs +31 -0
  7. package/apps/portal/view/home/parts/Colors.mjs +14 -14
  8. package/apps/portal/view/home/parts/Features.mjs +6 -6
  9. package/apps/portal/view/home/parts/Helix.mjs +8 -11
  10. package/apps/portal/view/home/parts/HelloWorld.mjs +5 -7
  11. package/apps/portal/view/home/parts/How.mjs +8 -8
  12. package/apps/portal/view/home/parts/MainNeo.mjs +14 -12
  13. package/examples/ServiceWorker.mjs +2 -2
  14. package/examples/model/dialog/EditUserDialog.mjs +1 -8
  15. package/package.json +1 -1
  16. package/resources/data/deck/learnneo/pages/GuideViewModels.md +444 -0
  17. package/resources/data/deck/learnneo/tree.json +1 -0
  18. package/resources/scss/src/apps/portal/HeaderToolbar.scss +1 -1
  19. package/resources/scss/src/apps/portal/home/MainContainer.scss +0 -32
  20. package/resources/scss/src/apps/portal/home/parts/BaseContainer.scss +27 -0
  21. package/resources/scss/src/apps/portal/home/parts/MainNeo.scss +3 -1
  22. package/resources/scss/src/apps/portal/learn/ContentTreeList.scss +1 -1
  23. package/resources/scss/src/calendar/view/EditEventContainer.scss +1 -1
  24. package/resources/scss/src/calendar/view/calendars/List.scss +1 -1
  25. package/resources/scss/src/dialog/Base.scss +1 -6
  26. package/resources/scss/theme-dark/dialog/Base.scss +1 -0
  27. package/resources/scss/theme-light/dialog/Base.scss +1 -0
  28. package/resources/scss/theme-neo-light/Global.scss +13 -11
  29. package/resources/scss/theme-neo-light/dialog/Base.scss +1 -0
  30. package/src/DefaultConfig.mjs +2 -2
  31. package/src/button/Base.mjs +3 -2
  32. package/src/calendar/view/EditEventContainer.mjs +1 -1
  33. package/src/component/Base.mjs +1 -6
  34. package/src/controller/Base.mjs +5 -5
  35. package/src/dialog/Base.mjs +23 -45
  36. package/src/form/field/Color.mjs +5 -5
  37. package/src/selection/DateSelectorModel.mjs +2 -2
  38. package/src/util/HashHistory.mjs +45 -12
  39. package/src/worker/Base.mjs +15 -8
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='6.18.1'
23
+ * @member {String} version='6.18.2'
24
24
  */
25
- version: '6.18.1'
25
+ version: '6.18.2'
26
26
  }
27
27
 
28
28
  /**
@@ -39,31 +39,31 @@ class HeaderToolbar extends Toolbar {
39
39
  clearable : false,
40
40
  editable : false,
41
41
  labelPosition: 'inline',
42
- labelText : 'Amount Colors',
42
+ labelText : '# Colors',
43
43
  listeners : {change: 'onChangeAmountColors'},
44
44
  maxValue : 10,
45
45
  minValue : 3,
46
- width : 120
46
+ width : 90
47
47
  }, {
48
48
  module : ComboBox,
49
49
  bind : {value: data => String(data.amountColumns)},
50
50
  clearable : false,
51
51
  editable : false,
52
52
  labelPosition: 'inline',
53
- labelText : 'Amount Columns',
53
+ labelText : '# Columns',
54
54
  listeners : {change: 'onChangeAmountColumns'},
55
55
  store : ['5', '10', '15', '20', '26'],
56
- width : 120
56
+ width : 90
57
57
  }, {
58
58
  module : ComboBox,
59
59
  bind : {value: data => String(data.amountRows)},
60
60
  clearable : false,
61
61
  editable : false,
62
62
  labelPosition: 'inline',
63
- labelText : 'Amount Rows',
63
+ labelText : '# Rows',
64
64
  listeners : {change: 'onChangeAmountRows'},
65
65
  store : ['5', '10', '15', '20'],
66
- width : 120
66
+ width : 90
67
67
  }, '->', {
68
68
  handler : 'onDetachTableButtonClick',
69
69
  iconCls : 'fas fa-table',
@@ -27,9 +27,8 @@ class HeaderToolbar extends Base {
27
27
  */
28
28
  items: [{
29
29
  cls : ['logo'],
30
- id : 'neo-logo-button',
31
- minWidth: 60,
32
30
  iconCls : 'neo-logo-blue',
31
+ minWidth: 60,
33
32
  route : '/home',
34
33
  text : 'Neo.mjs'
35
34
  }, '->', {
@@ -22,11 +22,22 @@ class MainContainer extends Container {
22
22
  * @member {String[]} cls=['portal-home-maincontainer']
23
23
  */
24
24
  cls: ['portal-home-maincontainer'],
25
+ /**
26
+ * @member {Object[]} domListeners
27
+ */
28
+ domListeners: [{
29
+ intersect(data) {
30
+ Neo.getComponent(data.targetId)?.activate?.()
31
+ },
32
+ scroll(event) {
33
+ this.toggleCls('hide-sidebar', event.scrollTop > 80)
34
+ }
35
+ }],
25
36
  /**
26
37
  * @member {Object[]} items
27
38
  */
28
39
  items: [
29
- {ntype: 'component', id: 'progress'},
40
+ {ntype: 'component', cls: ['portal-home-progress']},
30
41
  MainNeo,
31
42
  Features,
32
43
  HelloWorld,
@@ -38,16 +49,7 @@ class MainContainer extends Container {
38
49
  /**
39
50
  * @member {Boolean} scrollable=true
40
51
  */
41
- scrollable: true,
42
-
43
- domListeners: [{
44
- intersect(data) {
45
- Neo.getComponent(data.targetId)?.activate?.()
46
- },
47
- scroll(event) {
48
- this.toggleCls('hide-sidebar', event.scrollTop > 80)
49
- }
50
- }]
52
+ scrollable: true
51
53
  }
52
54
 
53
55
  /**
@@ -66,7 +68,7 @@ class MainContainer extends Container {
66
68
  Neo.main.addon.IntersectionObserver.register({
67
69
  callback : 'isVisible',
68
70
  id,
69
- observe : ['.page'],
71
+ observe : ['.portal-home-content-view'],
70
72
  root : `#${id}`,
71
73
  threshold: 1.0,
72
74
  windowId
@@ -1,54 +1,57 @@
1
- import Container from '../../../../../src/container/Base.mjs';
1
+ import BaseContainer from './BaseContainer.mjs';
2
2
 
3
3
  /**
4
4
  * @class Portal.view.home.parts.AfterMath
5
- * @extends Neo.container.Base
5
+ * @extends Portal.view.home.parts.BaseContainer
6
6
  */
7
- class AfterMath extends Container {
7
+ class AfterMath extends BaseContainer {
8
8
  static config = {
9
9
  /**
10
10
  * @member {String} className='Portal.view.home.parts.AfterMath'
11
11
  * @protected
12
12
  */
13
13
  className: 'Portal.view.home.parts.AfterMath',
14
-
15
- cls: ['page', 'after-math'],
16
-
14
+ /**
15
+ * @member {Object} layout={ntype:'vbox',align:'stretch',pack:'center'}
16
+ */
17
17
  layout: {ntype: 'vbox', align: 'stretch', pack: 'center'},
18
18
  /**
19
19
  * @member {Object[]} items
20
20
  */
21
21
  items: [{
22
- module: Container,
23
- flex : 1
22
+ ntype: 'container',
23
+ flex : 1
24
24
  }, {
25
25
  cls : 'neo-h1',
26
26
  flex: 'none',
27
- html: 'Additional Stuff'
27
+ html: 'Additional Stuff',
28
+ vdom: {tag: 'h1'}
28
29
  }, {
29
30
  cls : 'neo-h2',
30
31
  flex: 'none',
31
32
  html: 'More to come here',
32
- // height: 200
33
+ vdom: {tag: 'h2'}
33
34
  }, {
34
35
  cls : 'neo-content',
35
36
  flex: 'none',
36
37
  html: 'Neo uses several cores to run the application. See the spinner on the page?',
37
- // height: 200
38
+ vdom: {tag: 'p'}
38
39
  }, {
39
- module: Container,
40
- flex : 1
40
+ ntype: 'container',
41
+ flex : 1
41
42
  }, {
42
- module: Container,
43
+ ntype : 'container',
43
44
  cls : 'home-footer',
44
45
  height: '40%',
46
+ html : 'This is the footer',
47
+ vdom : {tag: 'footer'},
48
+
45
49
  style : { // todo: css
46
50
  background: 'black',
47
51
  color : 'white',
48
52
  height : '40%',
49
53
  padding : '15px'
50
- },
51
- html : 'This is the footer'
54
+ }
52
55
  }]
53
56
  }
54
57
  }
@@ -0,0 +1,31 @@
1
+ import Container from '../../../../../src/container/Base.mjs';
2
+
3
+ /**
4
+ * Abstract base class for all views inside the landing page
5
+ * @class Portal.view.home.parts.BaseContainer
6
+ * @extends Neo.container.Base
7
+ * @abstract
8
+ */
9
+ class BaseContainer extends Container {
10
+ static config = {
11
+ /**
12
+ * @member {String} className='Portal.view.home.parts.BaseContainer'
13
+ * @protected
14
+ */
15
+ className: 'Portal.view.home.parts.BaseContainer',
16
+ /**
17
+ * @member {String[]} cls=['portal-home-content-view','neo-container']
18
+ */
19
+ baseCls: ['portal-home-content-view', 'neo-container']
20
+ }
21
+
22
+ /**
23
+ * Hook which will trigger whenever the container fully gets scrolled into the visible area.
24
+ * Override it as needed.
25
+ */
26
+ activate() {}
27
+ }
28
+
29
+ Neo.setupClass(BaseContainer);
30
+
31
+ export default BaseContainer;
@@ -1,30 +1,29 @@
1
- import Container from '../../../../../src/container/Base.mjs';
2
- import LivePreview from '../../learn/LivePreview.mjs';
1
+ import BaseContainer from './BaseContainer.mjs';
2
+ import LivePreview from '../../learn/LivePreview.mjs';
3
3
 
4
4
  /**
5
5
  * @class Portal.view.home.parts.Colors
6
- * @extends Neo.container.Base
6
+ * @extends Portal.view.home.parts.BaseContainer
7
7
  */
8
- class Colors extends Container {
8
+ class Colors extends BaseContainer {
9
9
  static config = {
10
10
  /**
11
11
  * @member {String} className='Portal.view.home.parts.Colors'
12
12
  * @protected
13
13
  */
14
14
  className: 'Portal.view.home.parts.Colors',
15
-
16
- cls: ['page', 'cool-stuff'],
17
-
15
+ /**
16
+ * @member {Object} responsive
17
+ */
18
18
  responsive: {
19
19
  medium: {layout: {ntype: 'vbox', align: 'stretch', pack: 'center'}},
20
20
  large : {layout: {ntype: 'hbox', align: 'stretch', pack: 'center'}}
21
21
  },
22
-
23
22
  /**
24
23
  * @member {Object[]} items
25
24
  */
26
25
  items: [{
27
- module: Container,
26
+ ntype : 'container',
28
27
  flex : '1',
29
28
  style : {padding: '2rem'},
30
29
  layout: {ntype: 'vbox', align: 'center', pack: 'center'},
@@ -42,8 +41,8 @@ class Colors extends Container {
42
41
  flex: 'none',
43
42
  vdom: {tag: 'p'},
44
43
  html: [
45
- 'This is similar to the Helix demo — it\'s an extremely fast multi-window app. Click the start button',
46
- 'to see the view reflect changes in the data. And the app is multi-window: the table and charts can be',
44
+ 'This is similar to the Helix demo — it\'s an extremely fast multi-window app. Click the start button ',
45
+ 'to see the view reflect changes in the data. And the app is multi-window: the table and charts can be ',
47
46
  'undocked into their own windows. In fact, the entire demo can be undocked.'
48
47
  ].join('')
49
48
  }, {
@@ -54,12 +53,12 @@ class Colors extends Container {
54
53
  flex: 'none',
55
54
  vdom: {tag: 'p'},
56
55
  html: [
57
- 'Neo.mjs uniquely fits the bill for applications that need real-time visualizations of real-time data, such as',
56
+ 'Neo.mjs uniquely fits the bill for applications that need real-time visualizations of real-time data, such as ',
58
57
  'stock market trading data and medical or scientific telemetry.'
59
58
  ].join('')
60
59
  }]
61
60
  }, {
62
- module: Container,
61
+ ntype : 'container',
63
62
  flex : '2',
64
63
  style : {background: 'lightgray', padding: '20px'},
65
64
  layout: {ntype: 'vbox', align: 'stretch', pack: 'center'},
@@ -88,7 +87,8 @@ class Colors extends Container {
88
87
  /**
89
88
  *
90
89
  */
91
- activate() {
90
+ async activate() {
91
+ await this.timeout(1000);
92
92
  this.getReference('live-preview').activeView = 'preview'
93
93
  }
94
94
  }
@@ -1,11 +1,11 @@
1
- import Container from '../../../../../src/container/Base.mjs';
2
- import ContentBox from '../ContentBox.mjs';
1
+ import BaseContainer from './BaseContainer.mjs';
2
+ import ContentBox from '../ContentBox.mjs';
3
3
 
4
4
  /**
5
5
  * @class Portal.view.home.parts.Features
6
- * @extends Neo.container.Base
6
+ * @extends Portal.view.home.parts.BaseContainer
7
7
  */
8
- class Features extends Container {
8
+ class Features extends BaseContainer {
9
9
  static config = {
10
10
  /**
11
11
  * @member {String} className='Portal.view.home.parts.Features'
@@ -13,9 +13,9 @@ class Features extends Container {
13
13
  */
14
14
  className: 'Portal.view.home.parts.Features',
15
15
  /**
16
- * @member {String[]} cls=['portal-home-features','page']
16
+ * @member {String[]} cls=['portal-home-features']
17
17
  */
18
- cls: ['portal-home-features', 'page'],
18
+ cls: ['portal-home-features'],
19
19
  /**
20
20
  * @member {Object} layout={ntype:'hbox',align:'stretch',wrap:'wrap'}
21
21
  */
@@ -1,21 +1,17 @@
1
- import Container from '../../../../../src/container/Base.mjs';
2
- import LivePreview from '../../learn/LivePreview.mjs';
1
+ import BaseContainer from './BaseContainer.mjs';
2
+ import LivePreview from '../../learn/LivePreview.mjs';
3
3
 
4
4
  /**
5
5
  * @class Portal.view.home.parts.Helix
6
- * @extends Neo.container.Base
6
+ * @extends Portal.view.home.parts.BaseContainer
7
7
  */
8
- class Helix extends Container {
8
+ class Helix extends BaseContainer {
9
9
  static config = {
10
10
  /**
11
11
  * @member {String} className='Portal.view.home.parts.Helix'
12
12
  * @protected
13
13
  */
14
14
  className: 'Portal.view.home.parts.Helix',
15
- /**
16
- * @member {String[]} cls=['page','cool-stuff']
17
- */
18
- cls: ['page', 'cool-stuff'],
19
15
  /**
20
16
  * @member {Object} responsive
21
17
  */
@@ -27,7 +23,7 @@ class Helix extends Container {
27
23
  * @member {Object[]} items
28
24
  */
29
25
  items: [{
30
- module: Container,
26
+ ntype : 'container',
31
27
  flex : '1',
32
28
  style : {padding: '2rem'},
33
29
  layout: {ntype: 'vbox', align: 'center', pack: 'center'},
@@ -74,7 +70,7 @@ class Helix extends Container {
74
70
  ].join('')
75
71
  }]
76
72
  }, {
77
- module: Container,
73
+ ntype : 'container',
78
74
  flex : '2',
79
75
  style : {background: 'lightgray', padding: '20px'},
80
76
  layout: {ntype: 'vbox', align: 'stretch', pack: 'center'},
@@ -104,7 +100,8 @@ class Helix extends Container {
104
100
  /**
105
101
  *
106
102
  */
107
- activate() {
103
+ async activate() {
104
+ await this.timeout(1000);
108
105
  this.getReference('live-preview').activeView = 'preview'
109
106
  }
110
107
  }
@@ -1,11 +1,11 @@
1
- import Container from '../../../../../src/container/Base.mjs';
1
+ import BaseContainer from './BaseContainer.mjs';
2
2
  import LivePreviewContainer from '../preview/PageCodeContainer.mjs';
3
3
 
4
4
  /**
5
5
  * @class Portal.view.home.parts.HelloWorld
6
- * @extends Neo.container.Base
6
+ * @extends Portal.view.home.parts.BaseContainer
7
7
  */
8
- class HelloWorld extends Container {
8
+ class HelloWorld extends BaseContainer {
9
9
  static config = {
10
10
  /**
11
11
  * @member {String} className='Portal.view.home.parts.HelloWorld'
@@ -31,18 +31,16 @@ class HelloWorld extends Container {
31
31
  medium: {layout: {ntype: 'vbox', align: 'stretch', pack: 'center'}},
32
32
  large : {layout: {ntype: 'hbox', align: 'stretch', pack: 'center'}}
33
33
  },
34
-
35
34
  /**
36
35
  * @member {Object[]} items
37
36
  */
38
37
  items: [{
39
- module: Container,
38
+ ntype : 'container',
40
39
  flex : '1',
41
40
  style : {padding: '2rem'},
42
41
  layout: {ntype: 'vbox', align: 'center', pack: 'center'},
43
42
  items : [{
44
43
  cls : 'neo-h1',
45
- id : 'neo-hello-world-h1',
46
44
  flex: 'none',
47
45
  html: 'Hello World',
48
46
  vdom: {tag: 'h1'}
@@ -59,7 +57,7 @@ class HelloWorld extends Container {
59
57
  }]
60
58
  }, {
61
59
  module: LivePreviewContainer,
62
- flex: 0.8,
60
+ flex : 0.8,
63
61
  value : [
64
62
  "import Container from '../../../../src/container/Base.mjs';",
65
63
  "",
@@ -1,16 +1,16 @@
1
- import Container from '../../../../../src/container/Base.mjs';
1
+ import BaseContainer from './BaseContainer.mjs';
2
2
 
3
3
  /**
4
4
  * @class Portal.view.home.parts.How
5
- * @extends Neo.container.Base
5
+ * @extends Portal.view.home.parts.BaseContainer
6
6
  */
7
- class How extends Container {
7
+ class How extends BaseContainer {
8
8
  static config = {
9
- className: 'Portal.view.home.parts.How',
10
9
  /**
11
- * @member {String[]} cls=['page','cool-stuff']
10
+ * @member {String} className='Portal.view.home.parts.How'
11
+ * @protected
12
12
  */
13
- cls: ['page', 'cool-stuff'],
13
+ className: 'Portal.view.home.parts.How',
14
14
  /**
15
15
  * @member {Object} responsive
16
16
  */
@@ -22,7 +22,7 @@ class How extends Container {
22
22
  * @member {Object[]} items
23
23
  */
24
24
  items: [{
25
- module: Container,
25
+ ntype : 'container',
26
26
  flex : '1',
27
27
  style : {padding: '2rem'},
28
28
  layout: {ntype: 'vbox', align: 'center', pack: 'center'},
@@ -48,7 +48,7 @@ class How extends Container {
48
48
  ].join('')
49
49
  }]
50
50
  }, {
51
- module: Container,
51
+ ntype : 'container',
52
52
  flex : '2',
53
53
  style : {background: 'lightgray', padding: '20px'},
54
54
  layout: {ntype: 'vbox', align: 'stretch', pack: 'center'},
@@ -1,37 +1,39 @@
1
- import Button from '../../../../../src/button/Base.mjs';
2
- import Container from '../../../../../src/container/Base.mjs';
1
+ import BaseContainer from './BaseContainer.mjs';
2
+ import Button from '../../../../../src/button/Base.mjs';
3
3
 
4
4
  /**
5
5
  * @class Portal.view.home.parts.MainNeo
6
- * @extends Neo.container.Base
6
+ * @extends Portal.view.home.parts.BaseContainer
7
7
  */
8
- class MainNeo extends Container {
8
+ class MainNeo extends BaseContainer {
9
9
  static config = {
10
10
  /**
11
11
  * @member {String} className='Portal.view.home.parts.MainNeo'
12
12
  * @protected
13
13
  */
14
14
  className: 'Portal.view.home.parts.MainNeo',
15
-
16
- cls: ['page', 'portal-home-main-neo'],
15
+ /**
16
+ * @member {String[]} cls=['portal-home-main-neo']
17
+ */
18
+ cls: ['portal-home-main-neo'],
17
19
 
18
20
  layout: {ntype: 'vbox', align: 'center', pack: 'center'},
19
21
  /**
20
22
  * @member {Object[]} items
21
23
  */
22
24
  items: [{
23
- module: Container,
24
- cls : ['vector'],
25
- flex : 'none',
25
+ ntype: 'container',
26
+ cls : ['vector'],
27
+ flex : 'none',
26
28
  }, {
27
29
  cls : ['neo-h1'],
28
30
  flex: 'none',
29
31
  html: 'The High-Performance Web Framework for Next Generation Interfaces',
30
32
  vdom: {tag: 'h1'}
31
33
  }, {
32
- module: Container,
33
- cls : ['button-group'],
34
- flex : 'none',
34
+ ntype: 'container',
35
+ cls : ['button-group'],
36
+ flex : 'none',
35
37
 
36
38
  items: [{
37
39
  module : Button,
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='6.18.1'
23
+ * @member {String} version='6.18.2'
24
24
  */
25
- version: '6.18.1'
25
+ version: '6.18.2'
26
26
  }
27
27
 
28
28
  /**
@@ -46,14 +46,7 @@ class EditUserDialog extends Dialog {
46
46
  labelText : 'Lastname:',
47
47
  labelWidth: 110,
48
48
  listeners : {change: 'onLastnameTextFieldChange'}
49
- }],
50
- /**
51
- * @member {Object} wrapperStyle={height: '300px',width : '400px'}
52
- */
53
- wrapperStyle: {
54
- height: '300px',
55
- width : '400px'
56
- }
49
+ }]
57
50
  }
58
51
  }
59
52
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo.mjs",
3
- "version": "6.18.1",
3
+ "version": "6.18.2",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {