@singularsystems/neo-react 1.0.0-alpha.2 → 1.0.0-beta.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 (196) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/README.md +4 -0
  3. package/dist/Modules/NeoReactModule.d.ts +4 -4
  4. package/dist/Modules/NeoReactModule.js +28 -26
  5. package/dist/Modules/ReactSetup.d.ts +2 -2
  6. package/dist/Modules/ReactSetup.js +17 -17
  7. package/dist/Modules/Types.d.ts +63 -61
  8. package/dist/Modules/Types.js +13 -12
  9. package/dist/React/AutoRunner.d.ts +5 -5
  10. package/dist/React/AutoRunner.js +94 -92
  11. package/dist/React/DataView.d.ts +6 -6
  12. package/dist/React/DataView.js +11 -11
  13. package/dist/React/ReactModelCreator.d.ts +11 -11
  14. package/dist/React/ReactModelCreator.js +165 -162
  15. package/dist/ReactComponents/Button.d.ts +24 -23
  16. package/dist/ReactComponents/Button.js +131 -123
  17. package/dist/ReactComponents/Card.d.ts +24 -23
  18. package/dist/ReactComponents/Card.js +56 -54
  19. package/dist/ReactComponents/Collapsable.d.ts +23 -23
  20. package/dist/ReactComponents/Collapsable.js +38 -38
  21. package/dist/ReactComponents/CollapsableBase.d.ts +13 -13
  22. package/dist/ReactComponents/CollapsableBase.js +42 -42
  23. package/dist/ReactComponents/ColorPicker.d.ts +26 -26
  24. package/dist/ReactComponents/ColorPicker.js +67 -67
  25. package/dist/ReactComponents/ComponentBase.d.ts +17 -17
  26. package/dist/ReactComponents/ComponentBase.js +33 -33
  27. package/dist/ReactComponents/ContextMenu/ContextMenu.d.ts +25 -24
  28. package/dist/ReactComponents/ContextMenu/ContextMenu.js +91 -88
  29. package/dist/ReactComponents/ContextMenu/ContextMenuContainer.d.ts +14 -14
  30. package/dist/ReactComponents/ContextMenu/ContextMenuContainer.js +48 -48
  31. package/dist/ReactComponents/ContextMenu/ContextMenuState.d.ts +8 -7
  32. package/dist/ReactComponents/ContextMenu/ContextMenuState.js +23 -23
  33. package/dist/ReactComponents/DatePicker.d.ts +19 -19
  34. package/dist/ReactComponents/DatePicker.js +53 -53
  35. package/dist/ReactComponents/DropDown/AutoCompleteDropDown.d.ts +93 -83
  36. package/dist/ReactComponents/DropDown/AutoCompleteDropDown.js +222 -188
  37. package/dist/ReactComponents/DropDown/DropDown.d.ts +44 -44
  38. package/dist/ReactComponents/DropDown/DropDown.js +138 -134
  39. package/dist/ReactComponents/DropDown/DropDownBase.d.ts +16 -15
  40. package/dist/ReactComponents/DropDown/DropDownBase.js +86 -108
  41. package/dist/ReactComponents/DropDown/LookupHelper.d.ts +13 -0
  42. package/dist/ReactComponents/DropDown/LookupHelper.js +45 -0
  43. package/dist/ReactComponents/ErrorHandler.d.ts +9 -8
  44. package/dist/ReactComponents/ErrorHandler.js +92 -91
  45. package/dist/ReactComponents/FileManager/FileBasicInput.d.ts +20 -20
  46. package/dist/ReactComponents/FileManager/FileBasicInput.js +70 -70
  47. package/dist/ReactComponents/FileManager/FileContext.d.ts +16 -16
  48. package/dist/ReactComponents/FileManager/FileContext.js +24 -24
  49. package/dist/ReactComponents/FileManager/FileDropArea.d.ts +19 -18
  50. package/dist/ReactComponents/FileManager/FileDropArea.js +66 -64
  51. package/dist/ReactComponents/FileManager/FileInput.d.ts +44 -42
  52. package/dist/ReactComponents/FileManager/FileInput.js +191 -189
  53. package/dist/ReactComponents/FileManager/FileUploadButton.d.ts +17 -17
  54. package/dist/ReactComponents/FileManager/FileUploadButton.js +49 -49
  55. package/dist/ReactComponents/FileManager/FileUploadProgress.d.ts +14 -14
  56. package/dist/ReactComponents/FileManager/FileUploadProgress.js +35 -35
  57. package/dist/ReactComponents/Form.d.ts +19 -18
  58. package/dist/ReactComponents/Form.js +90 -90
  59. package/dist/ReactComponents/FormContext.d.ts +33 -31
  60. package/dist/ReactComponents/FormContext.js +39 -40
  61. package/dist/ReactComponents/FormGroup/FormGroup.d.ts +37 -37
  62. package/dist/ReactComponents/FormGroup/FormGroup.js +83 -84
  63. package/dist/ReactComponents/FormGroup/FormGroupFloating.d.ts +19 -19
  64. package/dist/ReactComponents/FormGroup/FormGroupFloating.js +97 -97
  65. package/dist/ReactComponents/FormGroup/FormGroupInline.d.ts +11 -11
  66. package/dist/ReactComponents/FormGroup/FormGroupInline.js +43 -43
  67. package/dist/ReactComponents/Grid/ButtonColumn.d.ts +47 -47
  68. package/dist/ReactComponents/Grid/ButtonColumn.js +81 -82
  69. package/dist/ReactComponents/Grid/Column.d.ts +47 -47
  70. package/dist/ReactComponents/Grid/Column.js +205 -205
  71. package/dist/ReactComponents/Grid/ColumnHelper.d.ts +12 -12
  72. package/dist/ReactComponents/Grid/ColumnHelper.js +19 -19
  73. package/dist/ReactComponents/Grid/Grid.d.ts +87 -90
  74. package/dist/ReactComponents/Grid/Grid.js +203 -203
  75. package/dist/ReactComponents/Grid/Row.d.ts +81 -81
  76. package/dist/ReactComponents/Grid/Row.js +200 -201
  77. package/dist/ReactComponents/Grid/_Exports.d.ts +5 -5
  78. package/dist/ReactComponents/Grid/_Exports.js +5 -5
  79. package/dist/ReactComponents/GridLayout.d.ts +20 -20
  80. package/dist/ReactComponents/GridLayout.js +38 -38
  81. package/dist/ReactComponents/Icons/FontAwesomeIconFactory.d.ts +23 -0
  82. package/dist/ReactComponents/Icons/FontAwesomeIconFactory.js +43 -0
  83. package/dist/ReactComponents/Icons/IIconFactory.d.ts +21 -0
  84. package/dist/ReactComponents/Icons/IIconFactory.js +1 -0
  85. package/dist/ReactComponents/Icons/IconFactory.d.ts +9 -0
  86. package/dist/ReactComponents/Icons/IconFactory.js +45 -0
  87. package/dist/ReactComponents/Icons/index.d.ts +3 -0
  88. package/dist/ReactComponents/Icons/index.js +2 -0
  89. package/dist/ReactComponents/Input.d.ts +45 -45
  90. package/dist/ReactComponents/Input.js +153 -152
  91. package/dist/ReactComponents/InputHelpers.d.ts +6 -5
  92. package/dist/ReactComponents/InputHelpers.js +29 -33
  93. package/dist/ReactComponents/Link.d.ts +13 -13
  94. package/dist/ReactComponents/Link.js +28 -28
  95. package/dist/ReactComponents/Loader.d.ts +18 -18
  96. package/dist/ReactComponents/Loader.js +57 -57
  97. package/dist/ReactComponents/Misc.d.ts +15 -15
  98. package/dist/ReactComponents/Misc.js +28 -28
  99. package/dist/ReactComponents/Modal/Modal.d.ts +11 -11
  100. package/dist/ReactComponents/Modal/Modal.js +129 -129
  101. package/dist/ReactComponents/Modal/ModalContainer.d.ts +17 -17
  102. package/dist/ReactComponents/Modal/ModalContainer.js +37 -37
  103. package/dist/ReactComponents/Modal/ModalPortal.d.ts +16 -15
  104. package/dist/ReactComponents/Modal/ModalPortal.js +27 -27
  105. package/dist/ReactComponents/Notifications/Alert.d.ts +7 -6
  106. package/dist/ReactComponents/Notifications/Alert.js +38 -35
  107. package/dist/ReactComponents/Notifications/Toast.d.ts +9 -8
  108. package/dist/ReactComponents/Notifications/Toast.js +47 -45
  109. package/dist/ReactComponents/Notifications/ToastContainer.d.ts +8 -8
  110. package/dist/ReactComponents/Notifications/ToastContainer.js +18 -18
  111. package/dist/ReactComponents/NumberInput.d.ts +57 -50
  112. package/dist/ReactComponents/NumberInput.js +260 -246
  113. package/dist/ReactComponents/Paging/BasicPagerControls.d.ts +26 -25
  114. package/dist/ReactComponents/Paging/BasicPagerControls.js +57 -55
  115. package/dist/ReactComponents/Paging/PageSizeControl.d.ts +11 -11
  116. package/dist/ReactComponents/Paging/PageSizeControl.js +21 -21
  117. package/dist/ReactComponents/Paging/Pager.d.ts +24 -24
  118. package/dist/ReactComponents/Paging/Pager.js +41 -41
  119. package/dist/ReactComponents/ProgressBar.d.ts +19 -19
  120. package/dist/ReactComponents/ProgressBar.js +52 -52
  121. package/dist/ReactComponents/PropTypes.d.ts +161 -161
  122. package/dist/ReactComponents/PropTypes.js +253 -236
  123. package/dist/ReactComponents/RadioList.d.ts +29 -29
  124. package/dist/ReactComponents/RadioList.js +59 -77
  125. package/dist/ReactComponents/Slider.d.ts +28 -28
  126. package/dist/ReactComponents/Slider.js +76 -76
  127. package/dist/ReactComponents/StateObserver.d.ts +15 -15
  128. package/dist/ReactComponents/StateObserver.js +35 -35
  129. package/dist/ReactComponents/Tabs/Tab.d.ts +42 -41
  130. package/dist/ReactComponents/Tabs/Tab.js +71 -72
  131. package/dist/ReactComponents/Tabs/TabContainer.d.ts +44 -44
  132. package/dist/ReactComponents/Tabs/TabContainer.js +98 -98
  133. package/dist/ReactComponents/Tabs/TabManager.d.ts +62 -62
  134. package/dist/ReactComponents/Tabs/TabManager.js +154 -154
  135. package/dist/ReactComponents/Tooltip.d.ts +20 -19
  136. package/dist/ReactComponents/Tooltip.js +51 -51
  137. package/dist/ReactComponents/TooltipHelper.d.ts +8 -8
  138. package/dist/ReactComponents/TooltipHelper.js +84 -84
  139. package/dist/ReactComponents/TooltipProvider.d.ts +30 -30
  140. package/dist/ReactComponents/TooltipProvider.js +111 -111
  141. package/dist/ReactComponents/ValidationSummary.d.ts +23 -22
  142. package/dist/ReactComponents/ValidationSummary.js +46 -43
  143. package/dist/ReactComponents/_Exports.d.ts +41 -41
  144. package/dist/ReactComponents/_Exports.js +41 -41
  145. package/dist/ReactComponents/_Managers.d.ts +4 -4
  146. package/dist/ReactComponents/_Managers.js +4 -4
  147. package/dist/Routing/BreadCrumbItem.d.ts +14 -14
  148. package/dist/Routing/BreadCrumbItem.js +12 -12
  149. package/dist/Routing/IRouteChangedProps.d.ts +31 -31
  150. package/dist/Routing/IRouteChangedProps.js +1 -1
  151. package/dist/Routing/IRouteParameter.d.ts +22 -22
  152. package/dist/Routing/IRouteParameter.js +9 -9
  153. package/dist/Routing/MenuRoute.d.ts +25 -24
  154. package/dist/Routing/MenuRoute.js +24 -24
  155. package/dist/Routing/NavigationHelper.d.ts +41 -40
  156. package/dist/Routing/NavigationHelper.js +61 -61
  157. package/dist/Routing/PageLeaveHandler.d.ts +13 -13
  158. package/dist/Routing/PageLeaveHandler.js +74 -74
  159. package/dist/Routing/RouteProvider.d.ts +31 -31
  160. package/dist/Routing/RouteProvider.js +92 -92
  161. package/dist/Routing/RouteView.d.ts +50 -50
  162. package/dist/Routing/RouteView.js +143 -144
  163. package/dist/Routing/RoutingState.d.ts +18 -15
  164. package/dist/Routing/RoutingState.js +45 -40
  165. package/dist/Routing/ViewParameter.d.ts +80 -58
  166. package/dist/Routing/ViewParameter.js +116 -95
  167. package/dist/Routing/ViewParameterList.d.ts +53 -53
  168. package/dist/Routing/ViewParameterList.js +163 -145
  169. package/dist/Routing/index.d.ts +9 -9
  170. package/dist/Routing/index.js +6 -6
  171. package/dist/Services/DisposeHelper.d.ts +15 -15
  172. package/dist/Services/DisposeHelper.js +40 -41
  173. package/dist/Services/IDisposeHelper.d.ts +12 -12
  174. package/dist/Services/IDisposeHelper.js +1 -1
  175. package/dist/Views/EmptyViewModel.d.ts +5 -5
  176. package/dist/Views/EmptyViewModel.js +14 -14
  177. package/dist/Views/IViewModel.d.ts +16 -16
  178. package/dist/Views/IViewModel.js +1 -1
  179. package/dist/Views/PersistentViewBase.d.ts +10 -10
  180. package/dist/Views/PersistentViewBase.js +21 -21
  181. package/dist/Views/ViewBase.d.ts +70 -71
  182. package/dist/Views/ViewBase.js +166 -153
  183. package/dist/Views/ViewComponentBase.d.ts +19 -13
  184. package/dist/Views/ViewComponentBase.js +24 -21
  185. package/dist/Views/ViewModelBase.d.ts +57 -56
  186. package/dist/Views/ViewModelBase.js +122 -118
  187. package/dist/Views/ViewState.d.ts +13 -13
  188. package/dist/Views/ViewState.js +9 -9
  189. package/dist/Views/index.d.ts +5 -5
  190. package/dist/Views/index.js +5 -5
  191. package/dist/index.d.ts +11 -10
  192. package/dist/index.js +10 -9
  193. package/package.json +26 -26
  194. package/styles/DatePicker.scss +2 -2
  195. package/styles/Forms.scss +5 -0
  196. package/styles/Validation.scss +0 -9
@@ -1,11 +1,11 @@
1
- import { Model } from '@singularsystems/neo-core';
2
- import { ModelCreatorBase } from '@singularsystems/neo-core/dist/Model/ModelCreatorBase';
3
- import { NeoTypeInfo } from '@singularsystems/neo-core/dist/Model/NeoTypeInfo';
4
- export declare class ReactModelCreator extends ModelCreatorBase {
5
- convertInstance(instance: {}): {};
6
- setupModel(typeInfo: NeoTypeInfo, model: Model.IModelBase): void;
7
- setupObject(typeInfo: NeoTypeInfo, object: any): void;
8
- private setMobxObservableType;
9
- private addChangeTracking;
10
- private setupList;
11
- }
1
+ import { Model } from '@singularsystems/neo-core';
2
+ import { ModelCreatorBase } from '@singularsystems/neo-core/dist/Model/ModelCreatorBase';
3
+ import { NeoTypeInfo } from '@singularsystems/neo-core/dist/Model/NeoTypeInfo';
4
+ export declare class ReactModelCreator extends ModelCreatorBase {
5
+ convertInstance(instance: {}, options: Model.IMakeBindableOptions): {};
6
+ setupModel(typeInfo: NeoTypeInfo, model: Model.IModelBase, options: Model.IMakeBindableOptions): void;
7
+ setupObject(typeInfo: NeoTypeInfo, object: any, options: Model.IMakeBindableOptions): void;
8
+ private setMobxObservableType;
9
+ private addChangeTracking;
10
+ private setupList;
11
+ }
@@ -1,162 +1,165 @@
1
- import { __extends } from "tslib";
2
- import { observable, computed, intercept, reaction, makeObservable } from 'mobx';
3
- import { List, Misc, Validation, Utils } from '@singularsystems/neo-core';
4
- import { ModelCreatorBase } from '@singularsystems/neo-core/dist/Model/ModelCreatorBase';
5
- import PropertyInstance from '@singularsystems/neo-core/dist/Model/PropertyInstance';
6
- var hasConvertedSymbol = Symbol("hasConvertedModel");
7
- var ReactModelCreator = /** @class */ (function (_super) {
8
- __extends(ReactModelCreator, _super);
9
- function ReactModelCreator() {
10
- return _super !== null && _super.apply(this, arguments) || this;
11
- }
12
- ReactModelCreator.prototype.convertInstance = function (instance) {
13
- if (!instance[hasConvertedSymbol]) {
14
- if (this.typeInfo.inheritsBindableBase) {
15
- this.setupModel(this.typeInfo, instance);
16
- }
17
- else {
18
- this.setupObject(this.typeInfo, instance);
19
- }
20
- instance[hasConvertedSymbol] = true;
21
- }
22
- return instance;
23
- };
24
- ReactModelCreator.prototype.setupModel = function (typeInfo, model) {
25
- if (this.typeInfo.inheritsModelBase) {
26
- model.validator = new Validation.ModelValidator(model, typeInfo.objectRules);
27
- }
28
- model.meta = {};
29
- model.isSuspended = true;
30
- this.setupObject(typeInfo, model);
31
- model.isSuspended = false;
32
- };
33
- ReactModelCreator.prototype.setupObject = function (typeInfo, object) {
34
- var annotations = {};
35
- var observables = {};
36
- for (var _i = 0, _a = typeInfo.properties; _i < _a.length; _i++) {
37
- var propertyInfo = _a[_i];
38
- if (propertyInfo.isObservable !== false) {
39
- var propertyName = propertyInfo.propertyName, makeObservable_1 = this.typeInfo.inheritsModelBase || propertyInfo.isObservable === true;
40
- var propertyInstance = void 0;
41
- if (this.typeInfo.inheritsBindableBase) {
42
- var model = object;
43
- propertyInstance = new PropertyInstance(model, propertyInfo, makeObservable_1);
44
- model.meta[propertyName] = propertyInstance;
45
- // Rules
46
- if (propertyInfo.rules.length > 0 && model.validator) {
47
- model.validator.addProperty(propertyInstance);
48
- }
49
- }
50
- if (propertyInfo.isComputed !== null) {
51
- if (propertyInfo.descriptor && propertyInfo.isComputed) {
52
- annotations[propertyName] = computed({ keepAlive: true });
53
- }
54
- }
55
- else if (makeObservable_1) {
56
- var property = { propertyInfo: propertyInfo, propertyInstance: propertyInstance };
57
- observables[propertyName] = property;
58
- this.setMobxObservableType(object, propertyName, property, annotations);
59
- }
60
- }
61
- }
62
- // Run mobx's setup for this instance.
63
- makeObservable(object, annotations, { proxy: false });
64
- // Setup once properties have been converted to observables.
65
- for (var propertyKey in observables) {
66
- var property = observables[propertyKey];
67
- this.addChangeTracking(object, propertyKey, property);
68
- if (property.convertList) {
69
- this.setupList(object, propertyKey, property.convertList);
70
- }
71
- }
72
- };
73
- ReactModelCreator.prototype.setMobxObservableType = function (object, propertyName, property, annotations) {
74
- var propertyValue = object[propertyName], propertyInfo = property.propertyInfo;
75
- this.ensureChildInfo(object, propertyInfo);
76
- if (propertyInfo.relationType === Misc.RelationType.ChildList) {
77
- annotations[propertyName] = observable.shallow;
78
- property.convertList = propertyValue;
79
- }
80
- else if (propertyValue instanceof Array) {
81
- annotations[propertyName] = observable.shallow;
82
- }
83
- else {
84
- annotations[propertyName] = observable.ref;
85
- }
86
- };
87
- ReactModelCreator.prototype.addChangeTracking = function (object, propertyName, property) {
88
- var _this = this;
89
- var propertyInfo = property.propertyInfo, propertyInstance = property.propertyInstance;
90
- var trackProperty = this.typeInfo.inheritsModelBase && !propertyInfo.noTrack && propertyInfo.relationType !== Misc.RelationType.ChildList;
91
- var onChangedOptions = propertyInfo && propertyInfo.onChangedOptions;
92
- if (onChangedOptions && onChangedOptions.requiresOldValue && !propertyInstance) {
93
- throw Error("Cannot use previous value for OnChanged on property: ".concat(propertyName, ". Model does not extend BindableBase."));
94
- }
95
- if (propertyInstance && (trackProperty || propertyInfo.propertyType === Misc.DataType.Date || (onChangedOptions && onChangedOptions.requiresOldValue))) {
96
- intercept(object, propertyName, function (onChange) {
97
- var currentValue = object[propertyName];
98
- if (!object.isSuspended) {
99
- if (trackProperty && onChange.newValue !== currentValue)
100
- object.isSelfDirty = true;
101
- if (propertyInfo.propertyType === Misc.DataType.Date) {
102
- if (typeof onChange.newValue === "string") {
103
- throw "Error: tried to assign a string to a date property.";
104
- }
105
- }
106
- }
107
- propertyInstance.previousValue = currentValue;
108
- return onChange;
109
- });
110
- }
111
- var onChanged;
112
- if (onChangedOptions && onChangedOptions.onChangedFn) {
113
- if (propertyInstance && onChangedOptions.delayMs) {
114
- onChanged = function (oldValue, newValue) {
115
- Utils.debounce(propertyInstance, function (state) { return onChangedOptions.onChangedFn.call(object, state[0], newValue); }, onChangedOptions.delayMs, oldValue);
116
- };
117
- }
118
- else {
119
- onChanged = onChangedOptions.onChangedFn.bind(object);
120
- }
121
- }
122
- if (onChanged) {
123
- var newValue_1;
124
- reaction(function () {
125
- newValue_1 = object[propertyName];
126
- return newValue_1;
127
- }, function () {
128
- if (!_this.typeInfo.inheritsBindableBase || !object.isSuspended) {
129
- onChanged.call(object, propertyInstance === null || propertyInstance === void 0 ? void 0 : propertyInstance.previousValue, newValue_1);
130
- }
131
- });
132
- }
133
- };
134
- ReactModelCreator.prototype.setupList = function (object, propertyName, originalList) {
135
- var obsArray = object[propertyName];
136
- List.copyMethods(obsArray);
137
- originalList.setupProxy(obsArray, object);
138
- // Don't allow list to change, just change the list contents.
139
- intercept(object, propertyName, function (onChange) {
140
- var newValue = onChange.newValue, currentValue = object[propertyName];
141
- if (!newValue) {
142
- currentValue.length = 0;
143
- }
144
- else {
145
- if (newValue.childObjectType && newValue.setParent) {
146
- // Cannot re-assign this property, so we have to clear the array, and copy the items from the source array.
147
- Utils.batchUpdate(function () {
148
- currentValue.length = 0;
149
- currentValue.push.apply(currentValue, newValue);
150
- });
151
- }
152
- else {
153
- throw "Do not assign a plain array to a List property. Either call ".concat(propertyName, ".set(...) or ").concat(propertyName, ".update(...)");
154
- }
155
- }
156
- // Instruct mobx to ignore the set.
157
- return null;
158
- });
159
- };
160
- return ReactModelCreator;
161
- }(ModelCreatorBase));
162
- export { ReactModelCreator };
1
+ import { __extends } from "tslib";
2
+ import { observable, computed, intercept, reaction, makeObservable, action } from 'mobx';
3
+ import { List, Misc, Validation, Utils } from '@singularsystems/neo-core';
4
+ import { ModelCreatorBase } from '@singularsystems/neo-core/dist/Model/ModelCreatorBase';
5
+ import PropertyInstance from '@singularsystems/neo-core/dist/Model/PropertyInstance';
6
+ var ReactModelCreator = /** @class */ (function (_super) {
7
+ __extends(ReactModelCreator, _super);
8
+ function ReactModelCreator() {
9
+ return _super !== null && _super.apply(this, arguments) || this;
10
+ }
11
+ ReactModelCreator.prototype.convertInstance = function (instance, options) {
12
+ if (this.typeInfo.inheritsBindableBase) {
13
+ this.setupModel(this.typeInfo, instance, options);
14
+ }
15
+ else {
16
+ this.setupObject(this.typeInfo, instance, options);
17
+ }
18
+ return instance;
19
+ };
20
+ ReactModelCreator.prototype.setupModel = function (typeInfo, model, options) {
21
+ if (this.typeInfo.inheritsModelBase) {
22
+ model.validator = new Validation.ModelValidator(model, typeInfo.objectRules);
23
+ }
24
+ model.meta = {};
25
+ model.isSuspended = true;
26
+ this.setupObject(typeInfo, model, options);
27
+ model.isSuspended = false;
28
+ };
29
+ ReactModelCreator.prototype.setupObject = function (typeInfo, object, options) {
30
+ var _a, _b, _c;
31
+ var annotations = {};
32
+ var observables = {};
33
+ for (var _i = 0, _d = typeInfo.properties; _i < _d.length; _i++) {
34
+ var propertyInfo = _d[_i];
35
+ if (propertyInfo.isObservable !== false) {
36
+ var propertyName = propertyInfo.propertyName, makeObservable_1 = (_a = propertyInfo.isObservable) !== null && _a !== void 0 ? _a : options.makeObservable;
37
+ var propertyInstance = void 0;
38
+ if (this.typeInfo.inheritsBindableBase) {
39
+ var model = object;
40
+ propertyInstance = new PropertyInstance(model, propertyInfo, makeObservable_1);
41
+ model.meta[propertyName] = propertyInstance;
42
+ // Rules
43
+ if (propertyInfo.rules.length > 0 && model.validator) {
44
+ model.validator.addProperty(propertyInstance);
45
+ }
46
+ }
47
+ if (propertyInfo.isComputed !== null) {
48
+ if (propertyInfo.descriptor && propertyInfo.isComputed) {
49
+ annotations[propertyName] = computed({ keepAlive: true });
50
+ }
51
+ }
52
+ else if (makeObservable_1) {
53
+ var property = { propertyInfo: propertyInfo, propertyInstance: propertyInstance };
54
+ observables[propertyName] = property;
55
+ this.setMobxObservableType(object, propertyName, property, annotations);
56
+ }
57
+ }
58
+ }
59
+ for (var _e = 0, _f = Array.from(typeInfo.methods.values()); _e < _f.length; _e++) {
60
+ var methodInfo = _f[_e];
61
+ if ((_c = (_b = methodInfo.isAction) !== null && _b !== void 0 ? _b : options.autoActions) !== null && _c !== void 0 ? _c : options.makeObservable) {
62
+ annotations[methodInfo.name] = action;
63
+ }
64
+ }
65
+ // Run mobx's setup for this instance.
66
+ makeObservable(object, annotations, { proxy: false });
67
+ // Setup once properties have been converted to observables.
68
+ for (var propertyKey in observables) {
69
+ var property = observables[propertyKey];
70
+ this.addChangeTracking(object, propertyKey, property);
71
+ if (property.convertList) {
72
+ this.setupList(object, propertyKey, property.convertList);
73
+ }
74
+ }
75
+ };
76
+ ReactModelCreator.prototype.setMobxObservableType = function (object, propertyName, property, annotations) {
77
+ var propertyValue = object[propertyName], propertyInfo = property.propertyInfo;
78
+ this.ensureChildInfo(object, propertyInfo);
79
+ if (propertyInfo.relationType === Misc.RelationType.ChildList) {
80
+ annotations[propertyName] = observable.shallow;
81
+ property.convertList = propertyValue;
82
+ }
83
+ else if (propertyValue instanceof Array) {
84
+ annotations[propertyName] = observable.shallow;
85
+ }
86
+ else {
87
+ annotations[propertyName] = observable.ref;
88
+ }
89
+ };
90
+ ReactModelCreator.prototype.addChangeTracking = function (object, propertyName, property) {
91
+ var _this = this;
92
+ var propertyInfo = property.propertyInfo, propertyInstance = property.propertyInstance;
93
+ var trackProperty = this.typeInfo.inheritsModelBase && !propertyInfo.noTrack && propertyInfo.relationType !== Misc.RelationType.ChildList;
94
+ var onChangedOptions = propertyInfo && propertyInfo.onChangedOptions;
95
+ if (onChangedOptions && onChangedOptions.requiresOldValue && !propertyInstance) {
96
+ throw Error("Cannot use previous value for OnChanged on property: ".concat(propertyName, ". Model does not extend BindableBase."));
97
+ }
98
+ if (propertyInstance && (trackProperty || propertyInfo.propertyType === Misc.DataType.Date || (onChangedOptions && onChangedOptions.requiresOldValue))) {
99
+ intercept(object, propertyName, function (onChange) {
100
+ var currentValue = object[propertyName];
101
+ if (!object.isSuspended) {
102
+ if (trackProperty && onChange.newValue !== currentValue)
103
+ object.isSelfDirty = true;
104
+ if (propertyInfo.propertyType === Misc.DataType.Date) {
105
+ if (typeof onChange.newValue === "string") {
106
+ throw "Error: tried to assign a string to a date property.";
107
+ }
108
+ }
109
+ }
110
+ propertyInstance.previousValue = currentValue;
111
+ return onChange;
112
+ });
113
+ }
114
+ var onChanged;
115
+ if (onChangedOptions && onChangedOptions.onChangedFn) {
116
+ if (propertyInstance && onChangedOptions.delayMs) {
117
+ onChanged = function (oldValue, newValue) {
118
+ Utils.debounce(propertyInstance, function (state) { return onChangedOptions.onChangedFn.call(object, state[0], newValue); }, onChangedOptions.delayMs, oldValue);
119
+ };
120
+ }
121
+ else {
122
+ onChanged = onChangedOptions.onChangedFn.bind(object);
123
+ }
124
+ }
125
+ if (onChanged) {
126
+ var newValue_1;
127
+ reaction(function () {
128
+ newValue_1 = object[propertyName];
129
+ return newValue_1;
130
+ }, function () {
131
+ if (!_this.typeInfo.inheritsBindableBase || !object.isSuspended) {
132
+ onChanged.call(object, propertyInstance === null || propertyInstance === void 0 ? void 0 : propertyInstance.previousValue, newValue_1);
133
+ }
134
+ });
135
+ }
136
+ };
137
+ ReactModelCreator.prototype.setupList = function (object, propertyName, originalList) {
138
+ var obsArray = object[propertyName];
139
+ List.copyMethods(obsArray);
140
+ originalList.setupProxy(obsArray, object);
141
+ // Don't allow list to change, just change the list contents.
142
+ intercept(object, propertyName, function (onChange) {
143
+ var newValue = onChange.newValue, currentValue = object[propertyName];
144
+ if (!newValue) {
145
+ currentValue.length = 0;
146
+ }
147
+ else {
148
+ if (newValue.childObjectType && newValue.setParent) {
149
+ // Cannot re-assign this property, so we have to clear the array, and copy the items from the source array.
150
+ Utils.batchUpdate(function () {
151
+ currentValue.length = 0;
152
+ currentValue.push.apply(currentValue, newValue);
153
+ });
154
+ }
155
+ else {
156
+ throw "Do not assign a plain array to a List property. Either call ".concat(propertyName, ".set(...) or ").concat(propertyName, ".update(...)");
157
+ }
158
+ }
159
+ // Instruct mobx to ignore the set.
160
+ return null;
161
+ });
162
+ };
163
+ return ReactModelCreator;
164
+ }(ModelCreatorBase));
165
+ export { ReactModelCreator };
@@ -1,23 +1,24 @@
1
- import * as React from 'react';
2
- import ComponentBase from './ComponentBase';
3
- import { Components } from '@singularsystems/neo-core';
4
- declare type IButtonProps = Components.IButtonOptions & React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>;
5
- interface IButtonState {
6
- isExpanded: boolean;
7
- }
8
- export default class Button extends ComponentBase<IButtonProps, IButtonState> {
9
- state: {
10
- isExpanded: boolean;
11
- };
12
- btnGroupDom: React.RefObject<HTMLDivElement>;
13
- menuDom: React.RefObject<HTMLDivElement>;
14
- private windowClickHandler;
15
- constructor(props: IButtonProps);
16
- private showMenu;
17
- private hideMenu;
18
- private menuItemClicked;
19
- private windowClicked;
20
- afterRender(): void;
21
- render(): JSX.Element;
22
- }
23
- export {};
1
+ import * as React from 'react';
2
+ import ComponentBase from './ComponentBase';
3
+ import { Components } from '@singularsystems/neo-core';
4
+ type IButtonProps = Components.IButtonOptions & React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>;
5
+ interface IButtonState {
6
+ isExpanded: boolean;
7
+ }
8
+ export default class Button extends ComponentBase<IButtonProps, IButtonState> {
9
+ state: {
10
+ isExpanded: boolean;
11
+ };
12
+ btnGroupDom: React.RefObject<HTMLDivElement>;
13
+ menuDom: React.RefObject<HTMLDivElement>;
14
+ private iconFactory;
15
+ private windowClickHandler;
16
+ constructor(props: IButtonProps);
17
+ private showMenu;
18
+ private hideMenu;
19
+ private menuItemClicked;
20
+ private windowClicked;
21
+ afterRender(): void;
22
+ render(): JSX.Element;
23
+ }
24
+ export {};