neo.mjs 8.0.0-alpha.2 → 8.0.0-beta.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 (186) hide show
  1. package/.github/CODING_GUIDELINES.md +5 -5
  2. package/.github/CONCEPT.md +10 -10
  3. package/apps/ServiceWorker.mjs +2 -2
  4. package/apps/colors/view/Viewport.mjs +9 -9
  5. package/apps/colors/view/ViewportController.mjs +13 -13
  6. package/apps/colors/view/{ViewportModel.mjs → ViewportStateProvider.mjs} +8 -8
  7. package/apps/covid/view/MainContainer.mjs +22 -22
  8. package/apps/covid/view/MainContainerController.mjs +8 -10
  9. package/apps/covid/view/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +7 -7
  10. package/apps/covid/view/TableContainer.mjs +2 -2
  11. package/apps/covid/view/TableContainerController.mjs +1 -1
  12. package/apps/form/view/FormContainerController.mjs +2 -2
  13. package/apps/form/view/SideNavList.mjs +3 -3
  14. package/apps/form/view/Viewport.mjs +7 -7
  15. package/apps/form/view/ViewportController.mjs +4 -4
  16. package/apps/form/view/{ViewportModel.mjs → ViewportStateProvider.mjs} +8 -8
  17. package/apps/portal/index.html +1 -1
  18. package/apps/portal/resources/data/examples_devmode.json +3 -3
  19. package/apps/portal/resources/data/examples_dist_dev.json +3 -3
  20. package/apps/portal/resources/data/examples_dist_prod.json +3 -3
  21. package/apps/portal/view/Viewport.mjs +12 -12
  22. package/apps/portal/view/ViewportController.mjs +2 -2
  23. package/apps/portal/view/ViewportStateProvider.mjs +27 -0
  24. package/apps/portal/view/examples/TabContainer.mjs +11 -11
  25. package/apps/portal/view/home/FooterContainer.mjs +1 -1
  26. package/apps/portal/view/home/parts/MainNeo.mjs +6 -2
  27. package/apps/portal/view/learn/ContentComponent.mjs +2 -2
  28. package/apps/portal/view/learn/ContentTreeList.mjs +1 -1
  29. package/apps/portal/view/learn/MainContainer.mjs +9 -9
  30. package/apps/portal/view/learn/MainContainerController.mjs +12 -12
  31. package/apps/portal/view/learn/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +7 -7
  32. package/apps/portal/view/learn/PageSectionsList.mjs +1 -1
  33. package/apps/realworld/view/article/CreateComponent.mjs +1 -1
  34. package/apps/realworld2/view/HomeContainer.mjs +7 -7
  35. package/apps/sharedcovid/view/GalleryContainer.mjs +2 -2
  36. package/apps/sharedcovid/view/HelixContainer.mjs +2 -2
  37. package/apps/sharedcovid/view/MainContainer.mjs +25 -25
  38. package/apps/sharedcovid/view/MainContainerController.mjs +10 -11
  39. package/apps/sharedcovid/view/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +8 -8
  40. package/apps/sharedcovid/view/TableContainer.mjs +2 -2
  41. package/apps/sharedcovid/view/TableContainerController.mjs +1 -1
  42. package/apps/sharedcovid/view/mapboxGl/Container.mjs +2 -2
  43. package/buildScripts/createApp.mjs +2 -2
  44. package/buildScripts/createClass.mjs +15 -17
  45. package/buildScripts/createComponent.mjs +4 -4
  46. package/docs/app/view/ContentTabContainer.mjs +1 -1
  47. package/docs/app/view/MainContainer.mjs +3 -3
  48. package/docs/app/view/MainContainerController.mjs +15 -15
  49. package/examples/ServiceWorker.mjs +2 -2
  50. package/examples/component/mwc/buttons/MainContainer.mjs +2 -2
  51. package/examples/component/mwc/textFields/MainContainer.mjs +2 -2
  52. package/examples/fields/MainContainer.mjs +197 -228
  53. package/examples/preloadingAssets/view/MainContainer.mjs +2 -2
  54. package/examples/{model → stateProvider}/advanced/MainContainer.mjs +12 -12
  55. package/examples/{model → stateProvider}/advanced/MainContainerController.mjs +10 -10
  56. package/examples/stateProvider/advanced/app.mjs +6 -0
  57. package/examples/{model/dialog → stateProvider/advanced}/index.html +1 -1
  58. package/examples/{model/inline → stateProvider/advanced}/neo-config.json +1 -1
  59. package/examples/{model → stateProvider}/dialog/EditUserDialog.mjs +3 -3
  60. package/examples/{model → stateProvider}/dialog/EditUserDialogController.mjs +5 -5
  61. package/examples/{model → stateProvider}/dialog/MainContainer.mjs +7 -7
  62. package/examples/{model → stateProvider}/dialog/MainContainerController.mjs +5 -5
  63. package/examples/{model → stateProvider}/dialog/app.mjs +1 -1
  64. package/examples/{model/multiWindow2 → stateProvider/dialog}/index.html +1 -1
  65. package/examples/{model → stateProvider}/dialog/neo-config.json +1 -1
  66. package/examples/{model → stateProvider}/extendedClass/MainContainer.mjs +13 -13
  67. package/examples/{model/inline → stateProvider/extendedClass}/MainContainerController.mjs +7 -7
  68. package/examples/stateProvider/extendedClass/MainContainerStateProvider.mjs +24 -0
  69. package/examples/stateProvider/extendedClass/app.mjs +6 -0
  70. package/examples/stateProvider/extendedClass/index.html +11 -0
  71. package/examples/stateProvider/extendedClass/neo-config.json +7 -0
  72. package/examples/{model → stateProvider}/inline/MainContainer.mjs +10 -10
  73. package/examples/{model/extendedClass → stateProvider/inline}/MainContainerController.mjs +7 -7
  74. package/examples/{model/extendedClass → stateProvider/inline}/app.mjs +1 -1
  75. package/examples/{model/extendedClass → stateProvider/inline}/index.html +1 -1
  76. package/examples/{model/extendedClass → stateProvider/inline}/neo-config.json +1 -1
  77. package/examples/{model/inlineNoModel → stateProvider/inlineNoStateProvider}/MainContainer.mjs +4 -4
  78. package/examples/{model/inlineNoModel → stateProvider/inlineNoStateProvider}/MainContainerController.mjs +3 -3
  79. package/examples/stateProvider/inlineNoStateProvider/README.md +8 -0
  80. package/examples/stateProvider/inlineNoStateProvider/app.mjs +6 -0
  81. package/examples/{model/inline → stateProvider/inlineNoStateProvider}/index.html +1 -1
  82. package/examples/stateProvider/inlineNoStateProvider/neo-config.json +7 -0
  83. package/examples/{model → stateProvider}/multiWindow/EditUserDialog.mjs +3 -3
  84. package/examples/{model → stateProvider}/multiWindow/EditUserDialogController.mjs +5 -5
  85. package/examples/{model → stateProvider}/multiWindow/MainContainer.mjs +3 -3
  86. package/examples/{model → stateProvider}/multiWindow/MainContainerController.mjs +6 -6
  87. package/examples/{model → stateProvider}/multiWindow/Viewport.mjs +3 -3
  88. package/examples/{model → stateProvider}/multiWindow/ViewportController.mjs +14 -14
  89. package/examples/{model/multiWindow2 → stateProvider/multiWindow}/app.mjs +1 -1
  90. package/examples/{model/advanced → stateProvider/multiWindow}/index.html +1 -1
  91. package/examples/{model → stateProvider}/multiWindow/neo-config.json +1 -1
  92. package/examples/{model → stateProvider}/multiWindow2/Viewport.mjs +3 -3
  93. package/examples/{model/multiWindow → stateProvider/multiWindow2}/app.mjs +1 -1
  94. package/examples/{model/multiWindow → stateProvider/multiWindow2}/index.html +1 -1
  95. package/examples/{model → stateProvider}/multiWindow2/neo-config.json +1 -1
  96. package/examples/{model → stateProvider}/nestedData/MainContainer.mjs +9 -9
  97. package/examples/{model → stateProvider}/nestedData/MainContainerController.mjs +7 -7
  98. package/examples/stateProvider/nestedData/app.mjs +6 -0
  99. package/examples/stateProvider/nestedData/index.html +11 -0
  100. package/examples/stateProvider/nestedData/neo-config.json +7 -0
  101. package/examples/{model → stateProvider}/table/MainContainer.mjs +8 -8
  102. package/examples/stateProvider/table/MainContainerStateProvider.mjs +24 -0
  103. package/examples/{model → stateProvider}/table/MainModel.mjs +2 -2
  104. package/examples/{model → stateProvider}/table/MainStore.mjs +2 -2
  105. package/examples/{model/advanced → stateProvider/table}/app.mjs +1 -1
  106. package/examples/{model/advanced → stateProvider/table}/neo-config.json +1 -1
  107. package/examples/{model → stateProvider}/twoWay/MainContainer.mjs +9 -9
  108. package/examples/{model/inline → stateProvider/twoWay}/app.mjs +1 -1
  109. package/examples/stateProvider/twoWay/index.html +11 -0
  110. package/examples/{model → stateProvider}/twoWay/neo-config.json +1 -1
  111. package/examples/tab/container/MainContainer.mjs +7 -9
  112. package/examples/table/nestedRecordFields/EditUserDialog.mjs +3 -3
  113. package/examples/table/nestedRecordFields/MainContainer.mjs +8 -8
  114. package/examples/table/nestedRecordFields/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +10 -10
  115. package/examples/tabs/MainContainer.mjs +3 -3
  116. package/examples/tabs/MainContainer2.mjs +4 -4
  117. package/examples/toolbar/paging/view/MainContainer.mjs +7 -7
  118. package/examples/toolbar/paging/view/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +8 -8
  119. package/examples/treeAccordion/MainContainer.mjs +2 -2
  120. package/examples/videoMove/MainContainer.mjs +14 -7
  121. package/examples/viewport/MainContainer.mjs +3 -3
  122. package/package.json +6 -6
  123. package/resources/data/deck/learnneo/pages/benefits/FormsEngine.md +13 -13
  124. package/resources/data/deck/learnneo/pages/guides/{ViewModels.md → StateProviders.md} +52 -58
  125. package/resources/data/deck/learnneo/tree.json +46 -46
  126. package/resources/data/deck/training/pages/2022-12-27T21-55-23-144Z.md +2 -2
  127. package/resources/data/deck/training/pages/2022-12-28T17-11-34-653Z.md +6 -6
  128. package/resources/data/deck/training/pages/2022-12-29T18-36-08-226Z.md +2 -2
  129. package/resources/data/deck/training/pages/2022-12-29T18-36-56-893Z.md +2 -2
  130. package/resources/data/deck/training/pages/2022-12-29T20-37-08-919Z.md +2 -2
  131. package/resources/data/deck/training/pages/2022-12-29T20-37-20-344Z.md +2 -2
  132. package/resources/data/deck/training/pages/2023-01-01T21-11-58-025Z.md +3 -3
  133. package/resources/data/deck/training/pages/2023-01-16T20-24-09-690Z.md +4 -4
  134. package/resources/data/deck/training/pages/2023-02-05T17-44-53-815Z.md +3 -3
  135. package/resources/data/deck/training/pages/2023-02-05T17-45-40-114Z.md +1 -1
  136. package/src/DefaultConfig.mjs +2 -2
  137. package/src/button/Base.mjs +7 -7
  138. package/src/calendar/view/EditEventContainer.mjs +3 -3
  139. package/src/calendar/view/MainContainer.mjs +27 -27
  140. package/src/calendar/view/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +7 -7
  141. package/src/calendar/view/SettingsContainer.mjs +13 -28
  142. package/src/calendar/view/YearComponent.mjs +5 -5
  143. package/src/calendar/view/calendars/ColorsList.mjs +5 -0
  144. package/src/calendar/view/calendars/EditContainer.mjs +1 -1
  145. package/src/calendar/view/calendars/List.mjs +1 -1
  146. package/src/calendar/view/month/Component.mjs +6 -6
  147. package/src/calendar/view/settings/GeneralContainer.mjs +2 -2
  148. package/src/calendar/view/week/Component.mjs +10 -10
  149. package/src/calendar/view/week/EventDragZone.mjs +1 -1
  150. package/src/code/LivePreview.mjs +10 -10
  151. package/src/component/Base.mjs +123 -105
  152. package/src/container/Base.mjs +4 -4
  153. package/src/controller/Component.mjs +29 -12
  154. package/src/core/Base.mjs +0 -1
  155. package/src/core/Compare.mjs +128 -83
  156. package/src/date/SelectorContainer.mjs +12 -12
  157. package/src/date/{SelectorContainerModel.mjs → SelectorContainerStateProvider.mjs} +7 -7
  158. package/src/form/field/Text.mjs +1 -1
  159. package/src/form/field/Time.mjs +5 -3
  160. package/src/form/field/trigger/Time.mjs +2 -1
  161. package/src/layout/Base.mjs +6 -6
  162. package/src/list/Base.mjs +7 -1
  163. package/src/list/Color.mjs +3 -3
  164. package/src/main/DomEvents.mjs +1 -1
  165. package/src/main/DomUtils.mjs +39 -36
  166. package/src/{model/Component.mjs → state/Provider.mjs} +67 -69
  167. package/src/tab/Container.mjs +3 -5
  168. package/src/toolbar/Base.mjs +26 -8
  169. package/src/tree/Accordion.mjs +15 -13
  170. package/src/util/VNode.mjs +6 -8
  171. package/src/worker/App.mjs +2 -2
  172. package/apps/portal/view/ViewportModel.mjs +0 -27
  173. package/examples/model/extendedClass/MainContainerModel.mjs +0 -24
  174. package/examples/model/inlineNoModel/README.md +0 -8
  175. package/examples/model/inlineNoModel/app.mjs +0 -6
  176. package/examples/model/inlineNoModel/index.html +0 -11
  177. package/examples/model/inlineNoModel/neo-config.json +0 -7
  178. package/examples/model/nestedData/app.mjs +0 -6
  179. package/examples/model/nestedData/index.html +0 -11
  180. package/examples/model/nestedData/neo-config.json +0 -7
  181. package/examples/model/table/MainContainerModel.mjs +0 -24
  182. package/examples/model/table/app.mjs +0 -6
  183. package/examples/model/table/neo-config.json +0 -7
  184. package/examples/model/twoWay/app.mjs +0 -6
  185. package/examples/model/twoWay/index.html +0 -11
  186. /package/examples/{model → stateProvider}/table/index.html +0 -0
@@ -272,16 +272,16 @@ items: [HeaderContainer, {
272
272
  style : {margin: '10px', marginTop: 0},
273
273
 
274
274
  items: [{
275
- module : () => import('./TableContainer.mjs'),
276
- reference : 'table-container',
277
- tabButtonConfig: {
275
+ module : () => import('./TableContainer.mjs'),
276
+ reference: 'table-container',
277
+ header : {
278
278
  iconCls: 'fa fa-table',
279
279
  route : 'mainview=table',
280
280
  text : 'Table'
281
281
  }
282
282
  }, {
283
- module : () => import('./mapboxGl/Container.mjs'),
284
- tabButtonConfig: {
283
+ module: () => import('./mapboxGl/Container.mjs'),
284
+ header: {
285
285
  iconCls: 'fa fa-globe-americas',
286
286
  route : 'mainview=mapboxglmap',
287
287
  text : 'Mapbox GL Map'
@@ -368,7 +368,7 @@ items: [HeaderContainer, {
368
368
  listeners: {leafItemClick: 'onApiListLeafClick'},
369
369
  reference: 'api-treelist',
370
370
 
371
- tabButtonConfig: {
371
+ header: {
372
372
  iconCls: 'fa fa-code',
373
373
  text : 'API'
374
374
  }
@@ -377,7 +377,7 @@ items: [HeaderContainer, {
377
377
  listeners: {leafItemClick: 'onTutorialListLeafClick'},
378
378
  reference: 'tutorials-treelist',
379
379
 
380
- tabButtonConfig: {
380
+ header: {
381
381
  iconCls: 'fa fa-hands-helping',
382
382
  text : 'Tutorials'
383
383
  }
@@ -386,7 +386,7 @@ items: [HeaderContainer, {
386
386
  listeners: {leafItemClick: 'onExamplesListLeafClick'},
387
387
  reference: 'examples-treelist',
388
388
 
389
- tabButtonConfig: {
389
+ header: {
390
390
  iconCls: 'fa fa-desktop',
391
391
  text : 'Examples'
392
392
  }
@@ -437,14 +437,14 @@ items: [{
437
437
  flex : 3,
438
438
 
439
439
  items: [{
440
- ntype : 'component',
441
- cls : ['neo-examples-tab-component'],
442
- style : {padding: '20px'},
443
- tabButtonConfig: {iconCls: 'fa fa-user-ninja', text: 'Your Feed'},
444
- vdom : {innerHTML: 'todo'}
440
+ ntype : 'component',
441
+ cls : ['neo-examples-tab-component'],
442
+ header: {iconCls: 'fa fa-user-ninja', text: 'Your Feed'},
443
+ style : {padding: '20px'},
444
+ vdom : {innerHTML: 'todo'}
445
445
  }, {
446
- module : PreviewList,
447
- tabButtonConfig: {iconCls: 'fa fa-globe-europe', text: 'Global Feed'}
446
+ module: PreviewList,
447
+ header: {iconCls: 'fa fa-globe-europe', text: 'Global Feed'}
448
448
  }]
449
449
  }, {
450
450
  module: TagListComponent,
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='8.0.0-alpha.2'
23
+ * @member {String} version='8.0.0-beta.2'
24
24
  */
25
- version: '8.0.0-alpha.2'
25
+ version: '8.0.0-beta.2'
26
26
  }
27
27
 
28
28
  /**
@@ -1,10 +1,10 @@
1
- import BaseViewport from '../../../src/container/Viewport.mjs';
2
- import BarChartComponent from './BarChartComponent.mjs';
3
- import HeaderToolbar from './HeaderToolbar.mjs';
4
- import PieChartComponent from './PieChartComponent.mjs';
5
- import TableContainer from './TableContainer.mjs';
6
- import ViewportController from './ViewportController.mjs';
7
- import ViewportModel from './ViewportModel.mjs';
1
+ import BaseViewport from '../../../src/container/Viewport.mjs';
2
+ import BarChartComponent from './BarChartComponent.mjs';
3
+ import HeaderToolbar from './HeaderToolbar.mjs';
4
+ import PieChartComponent from './PieChartComponent.mjs';
5
+ import TableContainer from './TableContainer.mjs';
6
+ import ViewportController from './ViewportController.mjs';
7
+ import ViewportStateProvider from './ViewportStateProvider.mjs';
8
8
 
9
9
  /**
10
10
  * @class Colors.view.Viewport
@@ -46,9 +46,9 @@ class Viewport extends BaseViewport {
46
46
  reference: 'bar-chart'
47
47
  }],
48
48
  /**
49
- * @member {Neo.model.Component} model=ViewportModel
49
+ * @member {Neo.state.Provider} stateProvider=ViewportStateProvider
50
50
  */
51
- model: ViewportModel
51
+ stateProvider: ViewportStateProvider
52
52
  }
53
53
  }
54
54
 
@@ -48,7 +48,7 @@ class ViewportController extends Controller {
48
48
 
49
49
  url = `${basePath}apps/colors/childapps/widget/index.html?name=${name}`;
50
50
 
51
- if (me.getModel().getData('openWidgetsAsPopups')) {
51
+ if (me.getStateProvider().getData('openWidgetsAsPopups')) {
52
52
  let widget = me.getReference(name),
53
53
  winData = await Neo.Main.getWindowData({windowId} ),
54
54
  rect = await me.component.getDomRect(widget.vdom.id), // using the vdom id to always get the top-level node
@@ -152,7 +152,7 @@ class ViewportController extends Controller {
152
152
  * @param {Object} data
153
153
  */
154
154
  onChangeOpenWidgetsAsPopups(data) {
155
- this.getModel().setData('openWidgetsAsPopups', data.value)
155
+ this.setState('openWidgetsAsPopups', data.value)
156
156
  }
157
157
 
158
158
  /**
@@ -206,7 +206,7 @@ class ViewportController extends Controller {
206
206
  let me = this,
207
207
  intervalTime = 1000 / 60; // assuming 60 FPS
208
208
 
209
- me.getModel().setData({isUpdating: true});
209
+ me.setState({isUpdating: true});
210
210
 
211
211
  if (!me.intervalId) {
212
212
  me.intervalId = setInterval(() => {
@@ -221,7 +221,7 @@ class ViewportController extends Controller {
221
221
  onStopButtonClick(data) {
222
222
  let me = this;
223
223
 
224
- me.getModel().setData({isUpdating: false});
224
+ me.setState({isUpdating: false});
225
225
 
226
226
  if (me.intervalId) {
227
227
  clearInterval(me.intervalId);
@@ -244,11 +244,11 @@ class ViewportController extends Controller {
244
244
  * @param {Number|Object|null} value The new VM data property value
245
245
  */
246
246
  updateDataProperty(data, name, value) {
247
- let model = this.getModel();
247
+ let stateProvider = this.getStateProvider();
248
248
 
249
- model.setData(name, value);
249
+ stateProvider.setData(name, value);
250
250
 
251
- if (data.oldValue !== null && !model.getData('isUpdating')) {
251
+ if (data.oldValue !== null && !stateProvider.getData('isUpdating')) {
252
252
  this.updateWidgets()
253
253
  }
254
254
  }
@@ -265,7 +265,7 @@ class ViewportController extends Controller {
265
265
  } else {
266
266
  // Depending on the delay of the Socket Connection,
267
267
  // the next data package could still contain the old settings
268
- if (this.getModel().getData('amountRows') === records.length) {
268
+ if (this.getStateProvider().getData('amountRows') === records.length) {
269
269
  store.data = records
270
270
  }
271
271
  }
@@ -275,13 +275,13 @@ class ViewportController extends Controller {
275
275
  *
276
276
  */
277
277
  updateWidgets() {
278
- let me = this,
279
- model = me.getModel();
278
+ let me = this,
279
+ stateProvider = me.getStateProvider();
280
280
 
281
281
  Colors.backend.ColorService.read({
282
- amountColors : model.getData('amountColors'),
283
- amountColumns: model.getData('amountColumns'),
284
- amountRows : model.getData('amountRows')
282
+ amountColors : stateProvider.getData('amountColors'),
283
+ amountColumns: stateProvider.getData('amountColumns'),
284
+ amountRows : stateProvider.getData('amountRows')
285
285
  }).then(response => {
286
286
  if (!me.isDestroyed) {
287
287
  let {data} = response;
@@ -1,17 +1,17 @@
1
- import Component from '../../../src/model/Component.mjs';
2
- import ColorsStore from '../store/Colors.mjs';
1
+ import ColorsStore from '../store/Colors.mjs';
2
+ import StateProvider from '../../../src/state/Provider.mjs';
3
3
 
4
4
  /**
5
- * @class Colors.view.ViewportModel
6
- * @extends Neo.model.Component
5
+ * @class Colors.view.ViewportStateProvider
6
+ * @extends Neo.state.Provider
7
7
  */
8
- class ViewportModel extends Component {
8
+ class ViewportStateProvider extends StateProvider {
9
9
  static config = {
10
10
  /**
11
- * @member {String} className='Colors.view.ViewportModel'
11
+ * @member {String} className='Colors.view.ViewportStateProvider'
12
12
  * @protected
13
13
  */
14
- className: 'Colors.view.ViewportModel',
14
+ className: 'Colors.view.ViewportStateProvider',
15
15
  /**
16
16
  * @member {Object} data
17
17
  */
@@ -48,4 +48,4 @@ class ViewportModel extends Component {
48
48
  }
49
49
  }
50
50
 
51
- export default Neo.setupClass(ViewportModel);
51
+ export default Neo.setupClass(ViewportStateProvider);
@@ -1,9 +1,9 @@
1
- import FooterContainer from './FooterContainer.mjs';
2
- import HeaderContainer from './HeaderContainer.mjs';
3
- import MainContainerController from './MainContainerController.mjs';
4
- import MainContainerModel from './MainContainerModel.mjs';
5
- import TabContainer from '../../../src/tab/Container.mjs';
6
- import Viewport from '../../../src/container/Viewport.mjs';
1
+ import FooterContainer from './FooterContainer.mjs';
2
+ import HeaderContainer from './HeaderContainer.mjs';
3
+ import MainContainerController from './MainContainerController.mjs';
4
+ import MainContainerStateProvider from './MainContainerStateProvider.mjs';
5
+ import TabContainer from '../../../src/tab/Container.mjs';
6
+ import Viewport from '../../../src/container/Viewport.mjs';
7
7
 
8
8
  /**
9
9
  * @class Covid.view.MainContainer
@@ -36,45 +36,45 @@ class MainContainer extends Viewport {
36
36
  style : {margin: '10px', marginTop: 0},
37
37
 
38
38
  items: [{
39
- module : () => import('./TableContainer.mjs'),
40
- reference : 'table-container',
41
- tabButtonConfig: {
39
+ module : () => import('./TableContainer.mjs'),
40
+ reference: 'table-container',
41
+ header : {
42
42
  iconCls: 'fa fa-table',
43
43
  route : 'mainview=table',
44
44
  text : 'Table'
45
45
  }
46
46
  }, {
47
- module : () => import('./mapboxGl/Container.mjs'),
48
- tabButtonConfig: {
47
+ module: () => import('./mapboxGl/Container.mjs'),
48
+ header: {
49
49
  iconCls: 'fa fa-globe-americas',
50
50
  route : 'mainview=mapboxglmap',
51
51
  text : 'Mapbox GL Map'
52
52
  }
53
53
  }, {
54
- module : () => import('./WorldMapContainer.mjs'),
55
- tabButtonConfig: {
54
+ module: () => import('./WorldMapContainer.mjs'),
55
+ header: {
56
56
  iconCls: 'fa fa-globe-americas',
57
57
  route : 'mainview=worldmap',
58
58
  text : 'World Map'
59
59
  }
60
60
  }, {
61
- module : () => import('./GalleryContainer.mjs'),
62
- tabButtonConfig: {
61
+ module: () => import('./GalleryContainer.mjs'),
62
+ header: {
63
63
  iconCls: 'fa fa-images',
64
64
  route : 'mainview=gallery',
65
65
  text : 'Gallery'
66
66
  }
67
67
  }, {
68
- module : () => import('./HelixContainer.mjs'),
69
- tabButtonConfig: {
68
+ module: () => import('./HelixContainer.mjs'),
69
+ header: {
70
70
  iconCls: 'fa fa-dna',
71
71
  route : 'mainview=helix',
72
72
  text : 'Helix'
73
73
  }
74
74
  }, {
75
- module : () => import('./AttributionComponent.mjs'),
76
- reference : 'attribution',
77
- tabButtonConfig: {
75
+ module : () => import('./AttributionComponent.mjs'),
76
+ reference: 'attribution',
77
+ header : {
78
78
  iconCls: 'fa fa-copyright',
79
79
  route : 'mainview=attribution',
80
80
  text : 'Attribution'
@@ -86,9 +86,9 @@ class MainContainer extends Viewport {
86
86
  */
87
87
  layout: {ntype: 'vbox', align: 'stretch'},
88
88
  /**
89
- * @member {Neo.model.Component} model=MainContainerModel
89
+ * @member {Neo.state.Provider} stateProvider=MainContainerStateProvider
90
90
  */
91
- model: MainContainerModel
91
+ stateProvider: MainContainerStateProvider
92
92
  }
93
93
  }
94
94
 
@@ -119,16 +119,14 @@ class MainContainerController extends ComponentController {
119
119
  applySummaryData(data) {
120
120
  let me = this,
121
121
  container = me.getReference('total-stats'),
122
- vdom = container.vdom;
122
+ vdom;
123
123
 
124
124
  me.summaryData = data;
125
125
 
126
- vdom.cn[0].cn[1].html = Util.formatNumber({value: data.cases});
127
- vdom.cn[1].cn[1].html = Util.formatNumber({value: data.active});
128
- vdom.cn[2].cn[1].html = Util.formatNumber({value: data.recovered});
129
- vdom.cn[3].cn[1].html = Util.formatNumber({value: data.deaths});
130
-
131
- container.update();
126
+ container.items[0].vdom.cn[1].html = Util.formatNumber({value: data.cases}); container.items[0].update();
127
+ container.items[1].vdom.cn[1].html = Util.formatNumber({value: data.active}); container.items[1].update();
128
+ container.items[2].vdom.cn[1].html = Util.formatNumber({value: data.recovered}); container.items[2].update();
129
+ container.items[3].vdom.cn[1].html = Util.formatNumber({value: data.deaths}); container.items[3].update();
132
130
 
133
131
  container = me.getReference('last-update');
134
132
  vdom = container.vdom;
@@ -239,7 +237,7 @@ class MainContainerController extends ComponentController {
239
237
  record = value && store.find('country', value)?.[0];
240
238
  }
241
239
 
242
- this.getModel().setData({
240
+ this.setState({
243
241
  country : value,
244
242
  countryRecord: record || null
245
243
  });
@@ -268,7 +266,7 @@ class MainContainerController extends ComponentController {
268
266
  return
269
267
  }
270
268
 
271
- me.getModel().setData({
269
+ me.setState({
272
270
  country: country || null
273
271
  });
274
272
 
@@ -290,7 +288,7 @@ class MainContainerController extends ComponentController {
290
288
  me.mapboxglMapHasData = true;
291
289
  }
292
290
 
293
- countryRecord = me.getModel().data.countryRecord;
291
+ countryRecord = me.getStateProvider().data.countryRecord;
294
292
  countryRecord && MainContainerController.selectMapboxGlCountry(activeView, countryRecord);
295
293
 
296
294
  activeView.autoResize();
@@ -1,16 +1,16 @@
1
- import Component from '../../../src/model/Component.mjs';
1
+ import StateProvider from '../../../src/state/Provider.mjs';
2
2
 
3
3
  /**
4
- * @class Covid.view.MainContainerModel
5
- * @extends Neo.model.Component
4
+ * @class Covid.view.MainContainerStateProvider
5
+ * @extends Neo.state.Provider
6
6
  */
7
- class MainContainerModel extends Component {
7
+ class MainContainerStateProvider extends StateProvider {
8
8
  static config = {
9
9
  /**
10
- * @member {String} className='Covid.view.MainContainerModel'
10
+ * @member {String} className='Covid.view.MainContainerStateProvider'
11
11
  * @protected
12
12
  */
13
- className: 'Covid.view.MainContainerModel',
13
+ className: 'Covid.view.MainContainerStateProvider',
14
14
  /**
15
15
  * @member {Object} data
16
16
  */
@@ -45,4 +45,4 @@ class MainContainerModel extends Component {
45
45
  }
46
46
  }
47
47
 
48
- export default Neo.setupClass(MainContainerModel);
48
+ export default Neo.setupClass(MainContainerStateProvider);
@@ -127,7 +127,7 @@ class TableContainer extends Container {
127
127
  reference: 'line-chart',
128
128
  }],
129
129
 
130
- tabButtonConfig: {
130
+ header: {
131
131
  iconCls: 'fa fa-chart-line',
132
132
  text : 'Chart'
133
133
  }
@@ -150,7 +150,7 @@ class TableContainer extends Container {
150
150
  parentId : me.id,
151
151
  reference: 'historical-data-table',
152
152
 
153
- tabButtonConfig: {
153
+ header: {
154
154
  iconCls: 'fa fa-table',
155
155
  text : 'Table'
156
156
  },
@@ -97,7 +97,7 @@ class TableContainerController extends ComponentController {
97
97
  }
98
98
 
99
99
  // the array is sorted by date ASC
100
- Object.assign(dataArray[0], {
100
+ dataArray[0] && Object.assign(dataArray[0], {
101
101
  dailyActive : dataArray[0].active,
102
102
  dailyCases : dataArray[0].cases,
103
103
  dailyDeaths : dataArray[0].deaths,
@@ -30,14 +30,14 @@ class FormContainerController extends Component {
30
30
  * @param {Object} data
31
31
  */
32
32
  onNextPageButtonClick(data) {
33
- this.getModel().data.activeIndex++;
33
+ this.getStateProvider().data.activeIndex++;
34
34
  }
35
35
 
36
36
  /**
37
37
  * @param {Object} data
38
38
  */
39
39
  onPrevPageButtonClick(data) {
40
- this.getModel().data.activeIndex--;
40
+ this.getStateProvider().data.activeIndex--;
41
41
  }
42
42
 
43
43
  /**
@@ -64,14 +64,14 @@ class SideNavList extends List {
64
64
  }
65
65
 
66
66
  /**
67
- * Saves activeIndex & activeTitle into the closest view model
67
+ * Saves activeIndex & activeTitle into the closest stateProvider
68
68
  * @param {String[]} items
69
69
  */
70
70
  onSelect(items) {
71
71
  let me = this,
72
72
  record = me.store.get(me.getItemRecordId(items[0]));
73
73
 
74
- me.getModel().setData({
74
+ me.setState({
75
75
  activeIndex: record.cardIndex,
76
76
  activeTitle: record.name
77
77
  })
@@ -89,7 +89,7 @@ class SideNavList extends List {
89
89
  }
90
90
  });
91
91
 
92
- this.getModel().data.maxIndex = maxIndex;
92
+ this.getStateProvider().data.maxIndex = maxIndex;
93
93
 
94
94
  super.onStoreLoad()
95
95
  }
@@ -1,8 +1,8 @@
1
- import BaseViewport from '../../../src/container/Viewport.mjs';
2
- import FormContainer from './FormContainer.mjs';
3
- import SideNavList from './SideNavList.mjs';
4
- import ViewportController from './ViewportController.mjs';
5
- import ViewportModel from './ViewportModel.mjs';
1
+ import BaseViewport from '../../../src/container/Viewport.mjs';
2
+ import FormContainer from './FormContainer.mjs';
3
+ import SideNavList from './SideNavList.mjs';
4
+ import ViewportController from './ViewportController.mjs';
5
+ import ViewportStateProvider from './ViewportStateProvider.mjs';
6
6
 
7
7
  /**
8
8
  * @class Form.view.Viewport
@@ -49,9 +49,9 @@ class Viewport extends BaseViewport {
49
49
  */
50
50
  layout: {ntype: 'hbox', align: 'stretch'},
51
51
  /**
52
- * @member {Neo.model.Component} model=ViewportModel
52
+ * @member {Neo.state.Provider} stateProvider=ViewportStateProvider
53
53
  */
54
- model: ViewportModel
54
+ stateProvider: ViewportStateProvider
55
55
  }
56
56
  }
57
57
 
@@ -32,7 +32,7 @@ class ViewportController extends Component {
32
32
  */
33
33
  async onValidatePageButtonClick(data) {
34
34
  let me = this,
35
- activeIndex = me.getModel().data.activeIndex,
35
+ activeIndex = me.getStateProvider().data.activeIndex,
36
36
  activeCard = me.getReference('pages-container').items[activeIndex],
37
37
  formValues = await activeCard.getSubmitValues();
38
38
 
@@ -48,10 +48,10 @@ class ViewportController extends Component {
48
48
  */
49
49
  async updateRecordValidityState(pageIndex=null) {
50
50
  let me = this,
51
- model = me.getModel(),
51
+ stateProvider = me.getStateProvider(),
52
52
  pagesContainer = me.getReference('pages-container'),
53
53
  sideNav = me.getReference('side-nav'),
54
- store = model.getStore('sideNav'),
54
+ store = stateProvider.getStore('sideNav'),
55
55
  i = 0,
56
56
  len = pagesContainer.items.length,
57
57
  formState, listIndex, page;
@@ -63,7 +63,7 @@ class ViewportController extends Component {
63
63
 
64
64
  for (; i < len; i++) {
65
65
  page = pagesContainer.items[i];
66
- listIndex = sideNav.getActiveIndex(i);
66
+ listIndex = sideNav.getSelectedIndex(i);
67
67
  formState = await page.getFormState();
68
68
 
69
69
  store.getAt(listIndex).formState = formState
@@ -1,17 +1,17 @@
1
- import Component from '../../../src/model/Component.mjs';
2
- import SideNavStore from '../store/SideNav.mjs'
1
+ import SideNavStore from '../store/SideNav.mjs'
2
+ import StateProvider from '../../../src/state/Provider.mjs';
3
3
 
4
4
  /**
5
- * @class Form.view.ViewportModel
6
- * @extends Neo.model.Component
5
+ * @class Form.view.ViewportStateProvider
6
+ * @extends Neo.state.Provider
7
7
  */
8
- class ViewportModel extends Component {
8
+ class ViewportStateProvider extends StateProvider {
9
9
  static config = {
10
10
  /**
11
- * @member {String} className='Form.view.ViewportModel'
11
+ * @member {String} className='Form.view.ViewportStateProvider'
12
12
  * @protected
13
13
  */
14
- className: 'Form.view.ViewportModel',
14
+ className: 'Form.view.ViewportStateProvider',
15
15
  /**
16
16
  * @member {Object} data
17
17
  */
@@ -90,4 +90,4 @@ class ViewportModel extends Component {
90
90
  }
91
91
  }
92
92
 
93
- export default Neo.setupClass(ViewportModel);
93
+ export default Neo.setupClass(ViewportStateProvider);
@@ -16,7 +16,7 @@
16
16
  "@type": "Organization",
17
17
  "name": "Neo.mjs"
18
18
  },
19
- "datePublished": "2024-10-18",
19
+ "datePublished": "2024-11-29",
20
20
  "publisher": {
21
21
  "@type": "Organization",
22
22
  "name": "Neo.mjs"
@@ -53,9 +53,9 @@
53
53
  }, {
54
54
  "id" : 15,
55
55
  "image" : "devmode/model-component-example.png",
56
- "name" : "View Models Example",
57
- "sourceUrl": "examples/model/advanced",
58
- "url" : "examples/model/advanced/index.html"
56
+ "name" : "State Provider Example",
57
+ "sourceUrl": "examples/stateProvider/advanced",
58
+ "url" : "examples/stateProvider/advanced/index.html"
59
59
  }, {
60
60
  "id" : 14,
61
61
  "image" : "devmode/dragdrop.png",
@@ -53,9 +53,9 @@
53
53
  }, {
54
54
  "id" : 14,
55
55
  "image" : "devmode/model-component-example.png",
56
- "name" : "View Models Example",
57
- "sourceUrl": "examples/model/advanced",
58
- "url" : "dist/development/examples/model/advanced/index.html"
56
+ "name" : "State Provider Example",
57
+ "sourceUrl": "examples/stateProvider/advanced",
58
+ "url" : "dist/development/examples/stateProvider/advanced/index.html"
59
59
  }, {
60
60
  "id" : 13,
61
61
  "image" : "devmode/dragdrop.png",
@@ -53,9 +53,9 @@
53
53
  }, {
54
54
  "id" : 14,
55
55
  "image" : "devmode/model-component-example.png",
56
- "name" : "View Models Example",
57
- "sourceUrl": "examples/model/advanced",
58
- "url" : "dist/production/examples/model/advanced/index.html"
56
+ "name" : "State Provider Example",
57
+ "sourceUrl": "examples/stateProvider/advanced",
58
+ "url" : "dist/production/examples/stateProvider/advanced/index.html"
59
59
  }, {
60
60
  "id" : 13,
61
61
  "image" : "devmode/dragdrop.png",