neo.mjs 8.0.0-beta.1 → 8.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.
Files changed (146) hide show
  1. package/apps/ServiceWorker.mjs +2 -2
  2. package/apps/colors/view/Viewport.mjs +9 -9
  3. package/apps/colors/view/ViewportController.mjs +13 -13
  4. package/apps/colors/view/{ViewportModel.mjs → ViewportStateProvider.mjs} +8 -8
  5. package/apps/covid/view/MainContainer.mjs +8 -8
  6. package/apps/covid/view/MainContainerController.mjs +9 -8
  7. package/apps/covid/view/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +7 -7
  8. package/apps/covid/view/TableContainerController.mjs +1 -1
  9. package/apps/form/view/FormContainerController.mjs +2 -2
  10. package/apps/form/view/SideNavList.mjs +3 -3
  11. package/apps/form/view/Viewport.mjs +7 -7
  12. package/apps/form/view/ViewportController.mjs +4 -4
  13. package/apps/form/view/{ViewportModel.mjs → ViewportStateProvider.mjs} +8 -8
  14. package/apps/portal/index.html +1 -1
  15. package/apps/portal/resources/data/examples_devmode.json +3 -3
  16. package/apps/portal/resources/data/examples_dist_dev.json +3 -3
  17. package/apps/portal/resources/data/examples_dist_prod.json +3 -3
  18. package/apps/portal/view/Viewport.mjs +12 -12
  19. package/apps/portal/view/ViewportStateProvider.mjs +27 -0
  20. package/apps/portal/view/home/FooterContainer.mjs +1 -1
  21. package/apps/portal/view/learn/ContentComponent.mjs +2 -2
  22. package/apps/portal/view/learn/ContentTreeList.mjs +1 -1
  23. package/apps/portal/view/learn/MainContainer.mjs +9 -9
  24. package/apps/portal/view/learn/MainContainerController.mjs +12 -12
  25. package/apps/portal/view/learn/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +7 -7
  26. package/apps/portal/view/learn/PageSectionsList.mjs +1 -1
  27. package/apps/sharedcovid/view/GalleryContainer.mjs +2 -2
  28. package/apps/sharedcovid/view/HelixContainer.mjs +2 -2
  29. package/apps/sharedcovid/view/MainContainer.mjs +8 -8
  30. package/apps/sharedcovid/view/MainContainerController.mjs +11 -9
  31. package/apps/sharedcovid/view/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +8 -8
  32. package/apps/sharedcovid/view/TableContainerController.mjs +1 -1
  33. package/apps/sharedcovid/view/mapboxGl/Container.mjs +2 -2
  34. package/buildScripts/createClass.mjs +11 -11
  35. package/buildScripts/createComponent.mjs +4 -4
  36. package/docs/app/view/MainContainerController.mjs +6 -6
  37. package/examples/ServiceWorker.mjs +2 -2
  38. package/examples/calendar/weekview/MainContainer.mjs +6 -6
  39. package/examples/{model → stateProvider}/advanced/MainContainer.mjs +12 -12
  40. package/examples/{model → stateProvider}/advanced/MainContainerController.mjs +10 -10
  41. package/examples/stateProvider/advanced/app.mjs +6 -0
  42. package/examples/{model/dialog → stateProvider/advanced}/index.html +1 -1
  43. package/examples/{model/inline → stateProvider/advanced}/neo-config.json +1 -1
  44. package/examples/{model → stateProvider}/dialog/EditUserDialog.mjs +3 -3
  45. package/examples/{model → stateProvider}/dialog/EditUserDialogController.mjs +5 -5
  46. package/examples/{model → stateProvider}/dialog/MainContainer.mjs +7 -7
  47. package/examples/{model → stateProvider}/dialog/MainContainerController.mjs +5 -5
  48. package/examples/{model → stateProvider}/dialog/app.mjs +1 -1
  49. package/examples/{model/multiWindow2 → stateProvider/dialog}/index.html +1 -1
  50. package/examples/{model → stateProvider}/dialog/neo-config.json +1 -1
  51. package/examples/{model → stateProvider}/extendedClass/MainContainer.mjs +13 -13
  52. package/examples/{model/inline → stateProvider/extendedClass}/MainContainerController.mjs +7 -7
  53. package/examples/stateProvider/extendedClass/MainContainerStateProvider.mjs +24 -0
  54. package/examples/stateProvider/extendedClass/app.mjs +6 -0
  55. package/examples/stateProvider/extendedClass/index.html +11 -0
  56. package/examples/stateProvider/extendedClass/neo-config.json +7 -0
  57. package/examples/{model → stateProvider}/inline/MainContainer.mjs +10 -10
  58. package/examples/{model/extendedClass → stateProvider/inline}/MainContainerController.mjs +7 -7
  59. package/examples/{model/extendedClass → stateProvider/inline}/app.mjs +1 -1
  60. package/examples/{model/extendedClass → stateProvider/inline}/index.html +1 -1
  61. package/examples/{model/extendedClass → stateProvider/inline}/neo-config.json +1 -1
  62. package/examples/{model/inlineNoModel → stateProvider/inlineNoStateProvider}/MainContainer.mjs +4 -4
  63. package/examples/{model/inlineNoModel → stateProvider/inlineNoStateProvider}/MainContainerController.mjs +3 -3
  64. package/examples/stateProvider/inlineNoStateProvider/README.md +8 -0
  65. package/examples/stateProvider/inlineNoStateProvider/app.mjs +6 -0
  66. package/examples/{model/inline → stateProvider/inlineNoStateProvider}/index.html +1 -1
  67. package/examples/stateProvider/inlineNoStateProvider/neo-config.json +7 -0
  68. package/examples/{model → stateProvider}/multiWindow/EditUserDialog.mjs +3 -3
  69. package/examples/{model → stateProvider}/multiWindow/EditUserDialogController.mjs +5 -5
  70. package/examples/{model → stateProvider}/multiWindow/MainContainer.mjs +3 -3
  71. package/examples/{model → stateProvider}/multiWindow/MainContainerController.mjs +6 -6
  72. package/examples/{model → stateProvider}/multiWindow/Viewport.mjs +3 -3
  73. package/examples/{model → stateProvider}/multiWindow/ViewportController.mjs +14 -14
  74. package/examples/{model/multiWindow2 → stateProvider/multiWindow}/app.mjs +1 -1
  75. package/examples/{model/advanced → stateProvider/multiWindow}/index.html +1 -1
  76. package/examples/{model → stateProvider}/multiWindow/neo-config.json +1 -1
  77. package/examples/{model → stateProvider}/multiWindow2/Viewport.mjs +3 -3
  78. package/examples/{model/multiWindow → stateProvider/multiWindow2}/app.mjs +1 -1
  79. package/examples/{model/multiWindow → stateProvider/multiWindow2}/index.html +1 -1
  80. package/examples/{model → stateProvider}/multiWindow2/neo-config.json +1 -1
  81. package/examples/{model → stateProvider}/nestedData/MainContainer.mjs +9 -9
  82. package/examples/{model → stateProvider}/nestedData/MainContainerController.mjs +7 -7
  83. package/examples/stateProvider/nestedData/app.mjs +6 -0
  84. package/examples/stateProvider/nestedData/index.html +11 -0
  85. package/examples/stateProvider/nestedData/neo-config.json +7 -0
  86. package/examples/{model → stateProvider}/table/MainContainer.mjs +8 -8
  87. package/examples/stateProvider/table/MainContainerStateProvider.mjs +24 -0
  88. package/examples/{model → stateProvider}/table/MainModel.mjs +2 -2
  89. package/examples/{model → stateProvider}/table/MainStore.mjs +2 -2
  90. package/examples/{model/advanced → stateProvider/table}/app.mjs +1 -1
  91. package/examples/{model/advanced → stateProvider/table}/neo-config.json +1 -1
  92. package/examples/{model → stateProvider}/twoWay/MainContainer.mjs +9 -9
  93. package/examples/{model/inline → stateProvider/twoWay}/app.mjs +1 -1
  94. package/examples/stateProvider/twoWay/index.html +11 -0
  95. package/examples/{model → stateProvider}/twoWay/neo-config.json +1 -1
  96. package/examples/table/nestedRecordFields/EditUserDialog.mjs +3 -3
  97. package/examples/table/nestedRecordFields/MainContainer.mjs +8 -8
  98. package/examples/table/nestedRecordFields/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +10 -10
  99. package/examples/toolbar/paging/view/MainContainer.mjs +7 -7
  100. package/examples/toolbar/paging/view/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +8 -8
  101. package/examples/treeAccordion/MainContainer.mjs +2 -2
  102. package/package.json +6 -6
  103. package/resources/data/deck/learnneo/pages/guides/{ViewModels.md → StateProviders.md} +52 -58
  104. package/resources/data/deck/learnneo/tree.json +46 -46
  105. package/src/DefaultConfig.mjs +2 -2
  106. package/src/Neo.mjs +2 -2
  107. package/src/button/Base.mjs +7 -7
  108. package/src/calendar/view/EditEventContainer.mjs +3 -3
  109. package/src/calendar/view/MainContainer.mjs +27 -27
  110. package/src/calendar/view/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +7 -7
  111. package/src/calendar/view/YearComponent.mjs +5 -5
  112. package/src/calendar/view/calendars/EditContainer.mjs +1 -1
  113. package/src/calendar/view/calendars/List.mjs +1 -1
  114. package/src/calendar/view/month/Component.mjs +6 -6
  115. package/src/calendar/view/settings/GeneralContainer.mjs +2 -2
  116. package/src/calendar/view/week/Component.mjs +10 -10
  117. package/src/calendar/view/week/EventDragZone.mjs +1 -1
  118. package/src/code/LivePreview.mjs +2 -2
  119. package/src/component/Base.mjs +77 -61
  120. package/src/container/Base.mjs +3 -3
  121. package/src/controller/Component.mjs +29 -12
  122. package/src/core/Base.mjs +1 -2
  123. package/src/core/Compare.mjs +128 -83
  124. package/src/date/SelectorContainer.mjs +12 -12
  125. package/src/date/{SelectorContainerModel.mjs → SelectorContainerStateProvider.mjs} +7 -7
  126. package/src/layout/Base.mjs +6 -6
  127. package/src/{model/Component.mjs → state/Provider.mjs} +67 -69
  128. package/src/tooltip/Base.mjs +17 -17
  129. package/src/tree/Accordion.mjs +15 -13
  130. package/src/vdom/Helper.mjs +1 -3
  131. package/src/worker/App.mjs +2 -2
  132. package/apps/portal/view/ViewportModel.mjs +0 -27
  133. package/examples/model/extendedClass/MainContainerModel.mjs +0 -24
  134. package/examples/model/inlineNoModel/README.md +0 -8
  135. package/examples/model/inlineNoModel/app.mjs +0 -6
  136. package/examples/model/inlineNoModel/index.html +0 -11
  137. package/examples/model/inlineNoModel/neo-config.json +0 -7
  138. package/examples/model/nestedData/app.mjs +0 -6
  139. package/examples/model/nestedData/index.html +0 -11
  140. package/examples/model/nestedData/neo-config.json +0 -7
  141. package/examples/model/table/MainContainerModel.mjs +0 -24
  142. package/examples/model/table/app.mjs +0 -6
  143. package/examples/model/table/neo-config.json +0 -7
  144. package/examples/model/twoWay/app.mjs +0 -6
  145. package/examples/model/twoWay/index.html +0 -11
  146. /package/examples/{model → stateProvider}/table/index.html +0 -0
@@ -1,11 +1,11 @@
1
- import CalendarsContainer from './calendars/Container.mjs';
2
- import Container from '../../container/Base.mjs';
3
- import DateSelector from '../../component/DateSelector.mjs';
4
- import DateUtil from '../../util/Date.mjs';
5
- import EditCalendarContainer from './calendars/EditContainer.mjs';
6
- import EditEventContainer from './EditEventContainer.mjs';
7
- import MainContainerModel from './MainContainerModel.mjs';
8
- import Toolbar from '../../toolbar/Base.mjs';
1
+ import CalendarsContainer from './calendars/Container.mjs';
2
+ import Container from '../../container/Base.mjs';
3
+ import DateSelector from '../../component/DateSelector.mjs';
4
+ import DateUtil from '../../util/Date.mjs';
5
+ import EditCalendarContainer from './calendars/EditContainer.mjs';
6
+ import EditEventContainer from './EditEventContainer.mjs';
7
+ import MainContainerStateProvider from './MainContainerStateProvider.mjs';
8
+ import Toolbar from '../../toolbar/Base.mjs';
9
9
 
10
10
  const todayDate = new Date();
11
11
 
@@ -102,10 +102,6 @@ class MainContainer extends Container {
102
102
  * @protected
103
103
  */
104
104
  layout: {ntype: 'vbox', align: 'stretch'},
105
- /**
106
- * @member {Neo.calendar.view.MainContainerModel} model=MainContainerModel
107
- */
108
- model: MainContainerModel,
109
105
  /**
110
106
  * @member {Neo.calendar.view.Component|null} monthComponent=null
111
107
  */
@@ -139,6 +135,10 @@ class MainContainer extends Container {
139
135
  * @member {Number} sideBarWidth=220
140
136
  */
141
137
  sideBarWidth: 220,
138
+ /**
139
+ * @member {Neo.calendar.view.MainContainerStateProvider} stateProvider=MainContainerStateProvider
140
+ */
141
+ stateProvider: MainContainerStateProvider,
142
142
  /**
143
143
  * @member {Boolean} useSettingsContainer_=true
144
144
  */
@@ -326,12 +326,12 @@ class MainContainer extends Container {
326
326
  let me = this;
327
327
 
328
328
  me._editCalendarContainer = value = Neo.create({
329
- module : EditCalendarContainer,
330
- appName : me.appName,
331
- model : {parent: me.getModel()},
332
- owner : me,
333
- width : 250,
334
- windowId: me.windowId,
329
+ module : EditCalendarContainer,
330
+ appName : me.appName,
331
+ owner : me,
332
+ stateProvider: {parent: me.getStateProvider()},
333
+ width : 250,
334
+ windowId : me.windowId,
335
335
  ...me.editCalendarContainerConfig
336
336
  })
337
337
  }
@@ -349,12 +349,12 @@ class MainContainer extends Container {
349
349
  let me = this;
350
350
 
351
351
  me._editEventContainer = value = Neo.create({
352
- module : EditEventContainer,
353
- appName : me.appName,
354
- model : {parent: me.getModel()},
355
- owner : me,
356
- width : 250,
357
- windowId: me.windowId,
352
+ module : EditEventContainer,
353
+ appName : me.appName,
354
+ owner : me,
355
+ stateProvider: {parent: me.getStateProvider()},
356
+ width : 250,
357
+ windowId : me.windowId,
358
358
  ...me.editEventContainerConfig
359
359
  })
360
360
  }
@@ -600,7 +600,7 @@ class MainContainer extends Container {
600
600
  * @param {String} data.value
601
601
  */
602
602
  onDateSelectorChange(data) {
603
- data.oldValue !== undefined && this.getModel().setData('currentDate', new Date(`${data.value}T00:00:00.000Z`))
603
+ data.oldValue !== undefined && this.setState('currentDate', new Date(`${data.value}T00:00:00.000Z`))
604
604
  }
605
605
 
606
606
  /**
@@ -621,7 +621,7 @@ class MainContainer extends Container {
621
621
  * @param data
622
622
  */
623
623
  onTodayButtonClick(data) {
624
- this.model.setData({
624
+ this.stateProvider.setData({
625
625
  currentDate: todayDate
626
626
  })
627
627
  }
@@ -656,7 +656,7 @@ class MainContainer extends Container {
656
656
 
657
657
  map[me.activeView]();
658
658
 
659
- me.model.setData({currentDate})
659
+ me.stateProvider.setData({currentDate})
660
660
  }
661
661
  }
662
662
 
@@ -1,21 +1,21 @@
1
1
  import CalendarsStore from '../store/Calendars.mjs';
2
2
  import ColorsStore from '../store/Colors.mjs';
3
3
  import EventsStore from '../store/Events.mjs';
4
- import Component from '../../../src/model/Component.mjs';
4
+ import StateProvider from '../../../src/state/Provider.mjs';
5
5
 
6
6
  const todayDate = new Date();
7
7
 
8
8
  /**
9
- * @class Neo.calendar.view.MainContainerModel
10
- * @extends Neo.model.Component
9
+ * @class Neo.calendar.view.MainContainerStateProvider
10
+ * @extends Neo.state.Provider
11
11
  */
12
- class MainContainerModel extends Component {
12
+ class MainContainerStateProvider extends StateProvider {
13
13
  static config = {
14
14
  /**
15
- * @member {String} className='Neo.calendar.view.MainContainerModel'
15
+ * @member {String} className='Neo.calendar.view.MainContainerStateProvider'
16
16
  * @protected
17
17
  */
18
- className: 'Neo.calendar.view.MainContainerModel',
18
+ className: 'Neo.calendar.view.MainContainerStateProvider',
19
19
  /**
20
20
  * @member {Object} data
21
21
  */
@@ -168,4 +168,4 @@ class MainContainerModel extends Component {
168
168
  }
169
169
  }
170
170
 
171
- export default Neo.setupClass(MainContainerModel);
171
+ export default Neo.setupClass(MainContainerStateProvider);
@@ -44,7 +44,7 @@ class YearComponent extends Component {
44
44
  */
45
45
  cachedUpdate: null,
46
46
  /**
47
- * Bound to the view model.
47
+ * Bound to the state provider.
48
48
  * @member {Neo.calendar.store.Calendars|null} calendarStore_=null
49
49
  */
50
50
  calendarStore_: null,
@@ -73,7 +73,7 @@ class YearComponent extends Component {
73
73
  */
74
74
  eventIndicatorMedium_: 2,
75
75
  /**
76
- * Bound to the view model.
76
+ * Bound to the state provider.
77
77
  * @member {Neo.calendar.store.Events|null} eventStore_=null
78
78
  */
79
79
  eventStore_: null,
@@ -94,7 +94,7 @@ class YearComponent extends Component {
94
94
  */
95
95
  isUpdating_: false,
96
96
  /**
97
- * Bound to the view model.
97
+ * Bound to the state provider.
98
98
  * @member {String} locale_=Neo.config.locale
99
99
  */
100
100
  locale_: Neo.config.locale,
@@ -131,7 +131,7 @@ class YearComponent extends Component {
131
131
  */
132
132
  showDisabledDays_: true,
133
133
  /**
134
- * Bound to the view model.
134
+ * Bound to the state provider.
135
135
  * @member {Boolean} showWeekends_=true
136
136
  */
137
137
  showWeekends_: true,
@@ -166,7 +166,7 @@ class YearComponent extends Component {
166
166
  ]},
167
167
  /**
168
168
  * 0-6 => Sun-Sat
169
- * Bound to the view model.
169
+ * Bound to the state provider.
170
170
  * @member {Number} weekStartDay_=0
171
171
  */
172
172
  weekStartDay_: 0
@@ -166,7 +166,7 @@ class EditContainer extends FormContainer {
166
166
 
167
167
  // todo: we could add a confirm dialog
168
168
 
169
- me.getModel().getStore('calendars').remove(me.record);
169
+ me.getStateProvider().getStore('calendars').remove(me.record);
170
170
  me.unmount();
171
171
  }
172
172
 
@@ -148,7 +148,7 @@ class List extends ComponentList {
148
148
  * @param {String[]} items
149
149
  */
150
150
  onSelect(items) {
151
- this.getModel().setData('activeCalendarId', this.getItemRecordId(items[0]))
151
+ this.setState('activeCalendarId', this.getItemRecordId(items[0]))
152
152
  }
153
153
 
154
154
  /**
@@ -39,7 +39,7 @@ class Component extends BaseComponent {
39
39
  weekStartDay : data => data.weekStartDay
40
40
  },
41
41
  /**
42
- * Bound to the view model
42
+ * Bound to the state provider
43
43
  * @member {Neo.calendar.store.Calendars|null} calendarStore_=null
44
44
  */
45
45
  calendarStore_: null,
@@ -56,12 +56,12 @@ class Component extends BaseComponent {
56
56
  */
57
57
  dayNameFormat_: 'short',
58
58
  /**
59
- * Bound to the view model
59
+ * Bound to the state provider
60
60
  * @member {String|null} eventBorder_=null
61
61
  */
62
62
  eventBorder_: null,
63
63
  /**
64
- * Bound to the view model.
64
+ * Bound to the state provider.
65
65
  * @member {Neo.calendar.store.Events|null} eventStore_=null
66
66
  */
67
67
  eventStore_: null,
@@ -93,7 +93,7 @@ class Component extends BaseComponent {
93
93
  */
94
94
  isScrolling: false,
95
95
  /**
96
- * Bound to the view model.
96
+ * Bound to the state provider.
97
97
  * @member {String} locale_=Neo.config.locale
98
98
  */
99
99
  locale_: Neo.config.locale,
@@ -120,7 +120,7 @@ class Component extends BaseComponent {
120
120
  */
121
121
  scrollTaskId: null,
122
122
  /**
123
- * Bound to the view model.
123
+ * Bound to the state provider.
124
124
  * @member {Boolean} showWeekends_=true
125
125
  */
126
126
  showWeekends_: true,
@@ -148,7 +148,7 @@ class Component extends BaseComponent {
148
148
  ]},
149
149
  /**
150
150
  * 0-6 => Sun-Sat
151
- * Bound to the view model.
151
+ * Bound to the state provider.
152
152
  * @member {Number} weekStartDay_=0
153
153
  */
154
154
  weekStartDay_: 0
@@ -273,7 +273,7 @@ class GeneralContainer extends Container {
273
273
  * @param {Object} data
274
274
  */
275
275
  onDataChange(data) {
276
- this.getModel().setData(data.component.name, data.value)
276
+ this.setState(data.component.name, data.value)
277
277
  }
278
278
 
279
279
  /**
@@ -281,7 +281,7 @@ class GeneralContainer extends Container {
281
281
  */
282
282
  onRadioDataChange(data) {
283
283
  if (data.value) {
284
- this.getModel().setData(data.component.name, data.component.fieldValue)
284
+ this.setState(data.component.name, data.component.fieldValue)
285
285
  }
286
286
  }
287
287
  }
@@ -53,7 +53,7 @@ class Component extends BaseComponent {
53
53
  weekStartDay : data => data.weekStartDay
54
54
  },
55
55
  /**
56
- * Bound to the view model
56
+ * Bound to the state provider
57
57
  * @member {Neo.calendar.store.Calendars|null} calendarStore_=null
58
58
  */
59
59
  calendarStore_: null,
@@ -68,7 +68,7 @@ class Component extends BaseComponent {
68
68
  */
69
69
  columnsVisible_: 7,
70
70
  /**
71
- * Bound to the view model.
71
+ * Bound to the state provider.
72
72
  * @member {Date|null} currentDate_=null
73
73
  * @protected
74
74
  */
@@ -80,13 +80,13 @@ class Component extends BaseComponent {
80
80
  */
81
81
  dayNameFormat_: 'short',
82
82
  /**
83
- * Bound to the view model.
83
+ * Bound to the state provider.
84
84
  * @member {Boolean} enableDrag_=true
85
85
  * @protected
86
86
  */
87
87
  enableDrag_: true,
88
88
  /**
89
- * Bound to the view model
89
+ * Bound to the state provider
90
90
  * @member {String|null} eventBorder_=null
91
91
  */
92
92
  eventBorder_: null,
@@ -95,7 +95,7 @@ class Component extends BaseComponent {
95
95
  */
96
96
  eventDragZone: null,
97
97
  /**
98
- * Bound to the view model
98
+ * Bound to the state provider
99
99
  * @member {Neo.calendar.store.Events|null} eventStore_=null
100
100
  */
101
101
  eventStore_: null,
@@ -117,7 +117,7 @@ class Component extends BaseComponent {
117
117
  */
118
118
  intlFormat_day: null,
119
119
  /**
120
- * Bound to the view model.
120
+ * Bound to the state provider.
121
121
  * @member {Intl.DateTimeFormat|null} intlFormat_time_=null
122
122
  * @protected
123
123
  */
@@ -128,12 +128,12 @@ class Component extends BaseComponent {
128
128
  */
129
129
  isUpdating: false,
130
130
  /**
131
- * Bound to the view model.
131
+ * Bound to the state provider.
132
132
  * @member {String} locale_=Neo.config.locale
133
133
  */
134
134
  locale_: Neo.config.locale,
135
135
  /**
136
- * Time in minutes. Bound to the view model.
136
+ * Time in minutes. Bound to the state provider.
137
137
  * @member {Number} minimumEventDuration=30
138
138
  * @protected
139
139
  */
@@ -164,7 +164,7 @@ class Component extends BaseComponent {
164
164
  */
165
165
  showEventEndTime_: false,
166
166
  /**
167
- * Bound to the view model.
167
+ * Bound to the state provider.
168
168
  * @member {Boolean} showWeekends_=true
169
169
  */
170
170
  showWeekends_: true,
@@ -206,7 +206,7 @@ class Component extends BaseComponent {
206
206
  ]},
207
207
  /**
208
208
  * 0-6 => Sun-Sat
209
- * Bound to the view model.
209
+ * Bound to the state provider.
210
210
  * @member {Number} weekStartDay_=0
211
211
  */
212
212
  weekStartDay_: 0
@@ -252,7 +252,7 @@ class EventDragZone extends DragZone {
252
252
  // todo: updating a record field which is included inside a sorter should trigger collection.doSort()
253
253
  // see: https://github.com/neomjs/neo/issues/2392
254
254
 
255
- owner.getModel().getStore('events').doSort();
255
+ owner.getStateProvider().getStore('events').doSort();
256
256
  owner.updateEvents()
257
257
  }
258
258
 
@@ -244,9 +244,9 @@ class LivePreview extends Container {
244
244
  index = path.lastIndexOf('../');
245
245
 
246
246
  if (index === 0) {
247
- path = '../../../../src/' + path.slice(index+3);
247
+ path = '../../../../src/' + path.slice(index + 3);
248
248
  } else {
249
- path = path.slice(0, index) + '../../../' + path.slice(index+3);
249
+ path = path.slice(0, index) + '../../../' + path.slice(index + 3);
250
250
  }
251
251
  }
252
252
 
@@ -15,7 +15,7 @@ import VNodeUtil from '../util/VNode.mjs';
15
15
  const
16
16
  addUnits = value => value == null ? value : isNaN(value) ? value : `${value}px`,
17
17
  closestController = Symbol.for('closestController'),
18
- closestModel = Symbol.for('closestModel'),
18
+ closestProvider = Symbol.for('closestProvider'),
19
19
  lengthRE = /^\d+\w+$/,
20
20
  twoWayBindingSymbol = Symbol.for('twoWayBinding');
21
21
 
@@ -85,14 +85,14 @@ class Base extends CoreBase {
85
85
  */
86
86
  baseCls: [],
87
87
  /**
88
- * Bind configs to model.Component data properties.
88
+ * Bind configs to state.Provider data properties.
89
89
  * Example for a button.Base:
90
90
  * @example
91
91
  * bind: {
92
92
  * iconCls: data => `fa fa-{$data.icon}`,
93
93
  * text : data => data.foo.bar
94
94
  * }
95
- * @see https://github.com/neomjs/neo/blob/dev/examples/model
95
+ * @see https://github.com/neomjs/neo/blob/dev/examples/stateProvider
96
96
  * @member {Object|null} bind=null
97
97
  */
98
98
  bind: null,
@@ -114,7 +114,7 @@ class Base extends CoreBase {
114
114
  */
115
115
  controller_: null,
116
116
  /**
117
- * Convenience shortcut to access the data config of the closest model.Component.
117
+ * Convenience shortcut to access the data config of the closest state.Provider.
118
118
  * Read only.
119
119
  * @member {Object} data_=null
120
120
  * @protected
@@ -244,14 +244,9 @@ class Base extends CoreBase {
244
244
  */
245
245
  minWidth_: null,
246
246
  /**
247
- * Optionally add a model.Component
248
- * @member {Object|null} model_=null
249
- */
250
- model_: null,
251
- /**
252
- * Override specific model data properties.
247
+ * Override specific stateProvider data properties.
253
248
  * This will merge the content.
254
- * @member {Object|null} model_=null
249
+ * @member {Object|null} modelData=null
255
250
  */
256
251
  modelData: null,
257
252
  /**
@@ -268,7 +263,7 @@ class Base extends CoreBase {
268
263
  needsVdomUpdate_: false,
269
264
  /**
270
265
  * If the parentId does not match a neo component id, you can manually set this value for finding
271
- * view controllers or models.
266
+ * view controllers or state providers.
272
267
  * Use case: manually dropping components into a vdom structure
273
268
  * @member {Neo.component.Base|null} parentComponent_=null
274
269
  * @protected
@@ -324,6 +319,11 @@ class Base extends CoreBase {
324
319
  * @member {Boolean} silentVdomUpdate_=false
325
320
  */
326
321
  silentVdomUpdate_: false,
322
+ /**
323
+ * Optionally add a state.Provider to share state data with child components
324
+ * @member {Object|null} stateProvider_=null
325
+ */
326
+ stateProvider_: null,
327
327
  /**
328
328
  * Style attributes added to this vdom root. see: getVdomRoot()
329
329
  * @member {Object} style_=null
@@ -573,11 +573,11 @@ class Base extends CoreBase {
573
573
  afterSetConfig(key, value, oldValue) {
574
574
  let me = this;
575
575
 
576
- if (Neo.currentWorker.isUsingViewModels && me[twoWayBindingSymbol] && oldValue !== undefined) {
576
+ if (Neo.currentWorker.isUsingStateProviders && me[twoWayBindingSymbol] && oldValue !== undefined) {
577
577
  let binding = me.bind?.[key];
578
578
 
579
579
  if (binding?.twoWay) {
580
- this.getModel()?.setData(binding.key, value)
580
+ this.getStateProvider()?.setData(binding.key, value)
581
581
  }
582
582
  }
583
583
  }
@@ -1167,13 +1167,12 @@ class Base extends CoreBase {
1167
1167
 
1168
1168
  /**
1169
1169
  * Triggered when accessing the data config
1170
- * Convenience shortcut which is expensive to use,
1171
- * since it will generate a merged parent model data map.
1170
+ * Convenience shortcut which is expensive to use, since it will generate a merged parent state providers data map.
1172
1171
  * @param {Object} value
1173
1172
  * @protected
1174
1173
  */
1175
1174
  beforeGetData(value) {
1176
- return this.getModel().getHierarchyData()
1175
+ return this.getStateProvider().getHierarchyData()
1177
1176
  }
1178
1177
 
1179
1178
  /**
@@ -1304,14 +1303,14 @@ class Base extends CoreBase {
1304
1303
  }
1305
1304
 
1306
1305
  /**
1307
- * Triggered before the model config gets changed.
1308
- * Creates a model.Component instance if needed.
1306
+ * Triggered before the stateProvider config gets changed.
1307
+ * Creates a state.Provider instance if needed.
1309
1308
  * @param {Object} value
1310
1309
  * @param {Object} oldValue
1311
- * @returns {Neo.model.Component}
1310
+ * @returns {Neo.state.Provider}
1312
1311
  * @protected
1313
1312
  */
1314
- beforeSetModel(value, oldValue) {
1313
+ beforeSetStateProvider(value, oldValue) {
1315
1314
  oldValue?.destroy();
1316
1315
 
1317
1316
  if (value) {
@@ -1322,7 +1321,7 @@ class Base extends CoreBase {
1322
1321
  defaultValues.data = me.modelData
1323
1322
  }
1324
1323
 
1325
- return ClassSystemUtil.beforeSetInstance(value, 'Neo.model.Component', defaultValues)
1324
+ return ClassSystemUtil.beforeSetInstance(value, 'Neo.state.Provider', defaultValues)
1326
1325
  }
1327
1326
 
1328
1327
  return null
@@ -1469,9 +1468,9 @@ class Base extends CoreBase {
1469
1468
  * todo: unregister events
1470
1469
  */
1471
1470
  destroy(updateParentVdom=false, silent=false) {
1472
- let me = this,
1473
- {parent, parentId} = me,
1474
- parentModel = parent?.getModel(),
1471
+ let me = this,
1472
+ {parent, parentId} = me,
1473
+ parentStateProvider = parent?.getStateProvider(),
1475
1474
  parentVdom;
1476
1475
 
1477
1476
  me.revertFocus();
@@ -1482,9 +1481,9 @@ class Base extends CoreBase {
1482
1481
 
1483
1482
  me.reference && me.getController()?.removeReference(me); // remove own reference from parent controllers
1484
1483
 
1485
- me.model = null; // triggers destroy()
1484
+ me.stateProvider = null; // triggers destroy()
1486
1485
 
1487
- me.bind && parentModel?.removeBindings(me.id);
1486
+ me.bind && parentStateProvider?.removeBindings(me.id);
1488
1487
 
1489
1488
  me.plugins?.forEach(plugin => {
1490
1489
  plugin.destroy()
@@ -1614,7 +1613,7 @@ class Base extends CoreBase {
1614
1613
  /**
1615
1614
  * Find an instance stored inside a config via optionally passing a ntype.
1616
1615
  * Returns this[configName] or the closest parent component with a match.
1617
- * Used by getController() & getModel()
1616
+ * Used by getController() & getStateProvider()
1618
1617
  * @param {String} configName
1619
1618
  * @param {String} [ntype]
1620
1619
  * @returns {Neo.core.Base|null}
@@ -1681,36 +1680,6 @@ class Base extends CoreBase {
1681
1680
  return Rectangle.clone(result)
1682
1681
  }
1683
1682
 
1684
- /**
1685
- * Returns this.model or the closest parent model
1686
- * @param {String} [ntype]
1687
- * @returns {Neo.model.Component|null}
1688
- */
1689
- getModel(ntype) {
1690
- if (!Neo.currentWorker.isUsingViewModels) {
1691
- return null
1692
- }
1693
-
1694
- let me = this,
1695
- model;
1696
-
1697
- if (!ntype) {
1698
- model = me[closestModel];
1699
-
1700
- if (model) {
1701
- return model
1702
- }
1703
- }
1704
-
1705
- model = me.getConfigInstanceByNtype('model', ntype);
1706
-
1707
- if (!ntype) {
1708
- me[closestModel] = model
1709
- }
1710
-
1711
- return model
1712
- }
1713
-
1714
1683
  /**
1715
1684
  * Honors different item roots for mount / render OPs
1716
1685
  * @returns {String}
@@ -1799,6 +1768,45 @@ class Base extends CoreBase {
1799
1768
  return this.down({reference: value})
1800
1769
  }
1801
1770
 
1771
+ /**
1772
+ * Convenience shortcut
1773
+ * @param args
1774
+ * @returns {*}
1775
+ */
1776
+ getState(...args) {
1777
+ return this.getStateProvider().getData(...args)
1778
+ }
1779
+
1780
+ /**
1781
+ * Returns this.stateProvider or the closest parent stateProvider
1782
+ * @param {String} [ntype]
1783
+ * @returns {Neo.state.Provider|null}
1784
+ */
1785
+ getStateProvider(ntype) {
1786
+ if (!Neo.currentWorker.isUsingStateProviders) {
1787
+ return null
1788
+ }
1789
+
1790
+ let me = this,
1791
+ provider;
1792
+
1793
+ if (!ntype) {
1794
+ provider = me[closestProvider];
1795
+
1796
+ if (provider) {
1797
+ return provider
1798
+ }
1799
+ }
1800
+
1801
+ provider = me.getConfigInstanceByNtype('stateProvider', ntype);
1802
+
1803
+ if (!ntype) {
1804
+ me[closestProvider] = provider
1805
+ }
1806
+
1807
+ return provider
1808
+ }
1809
+
1802
1810
  /**
1803
1811
  * Walks up the vdom tree and returns the closest theme found
1804
1812
  * @returns {String}
@@ -1912,7 +1920,7 @@ class Base extends CoreBase {
1912
1920
  }
1913
1921
 
1914
1922
  /**
1915
- * We are using this method as a ctor hook here to add the initial model.Component & controller.Component parsing
1923
+ * We are using this method as a ctor hook here to add the initial state.Provider & controller.Component parsing
1916
1924
  * @param {Object} config
1917
1925
  * @param {Boolean} [preventOriginalConfig] True prevents the instance from getting an originalConfig property
1918
1926
  */
@@ -1921,8 +1929,8 @@ class Base extends CoreBase {
1921
1929
 
1922
1930
  let me = this;
1923
1931
 
1924
- me.getController()?.parseConfig(me);
1925
- me.getModel() ?.parseConfig(me)
1932
+ me.getController() ?.parseConfig(me);
1933
+ me.getStateProvider()?.parseConfig(me)
1926
1934
  }
1927
1935
 
1928
1936
  /**
@@ -2383,6 +2391,14 @@ class Base extends CoreBase {
2383
2391
  return this.set(values, true)
2384
2392
  }
2385
2393
 
2394
+ /**
2395
+ * Convenience shortcut
2396
+ * @param args
2397
+ */
2398
+ setState(...args) {
2399
+ this.getStateProvider().setData(...args)
2400
+ }
2401
+
2386
2402
  /**
2387
2403
  * Show the component.
2388
2404
  * hideMode: 'removeDom' uses vdom removeDom.
@@ -313,10 +313,10 @@ class Base extends Component {
313
313
  case 'NeoInstance': {
314
314
  item.set(config);
315
315
 
316
- // In case an item got created outside a VC or VM based hierarchy, there might be bindings or string
316
+ // In case an item got created outside a VC or stateProvider based hierarchy, there might be bindings or string
317
317
  // based listeners which still need to get resolved.
318
- item.getController()?.parseConfig(item);
319
- item.getModel() ?.parseConfig(item);
318
+ item.getController() ?.parseConfig(item);
319
+ item.getStateProvider()?.parseConfig(item);
320
320
  break
321
321
  }
322
322