@singularsystems/neo-core 1.0.0-alpha.3 → 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 (299) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +1 -1
  3. package/dist/ApiClient/ApiClientBase.d.ts +5 -5
  4. package/dist/ApiClient/ApiClientBase.js +13 -13
  5. package/dist/ApiClient/ReadApiClient.d.ts +16 -16
  6. package/dist/ApiClient/ReadApiClient.js +24 -24
  7. package/dist/ApiClient/UpdateableApiClient.d.ts +28 -28
  8. package/dist/ApiClient/UpdateableApiClient.js +33 -33
  9. package/dist/AppServices/AppService.d.ts +46 -46
  10. package/dist/AppServices/AppService.js +25 -25
  11. package/dist/AppServices/Config/ConfigModel.d.ts +21 -20
  12. package/dist/AppServices/Config/ConfigModel.js +28 -17
  13. package/dist/AppServices/Config/ConfigService.d.ts +15 -15
  14. package/dist/AppServices/Config/ConfigService.js +49 -53
  15. package/dist/AppServices/Module.d.ts +11 -11
  16. package/dist/AppServices/Module.js +13 -13
  17. package/dist/AppServices/NeoContainer.d.ts +22 -22
  18. package/dist/AppServices/NeoContainer.js +42 -42
  19. package/dist/AppServices/NeoModule.d.ts +3 -3
  20. package/dist/AppServices/NeoModule.js +30 -30
  21. package/dist/AppServices/NeoTypes.d.ts +61 -61
  22. package/dist/AppServices/NeoTypes.js +42 -42
  23. package/dist/AppServices/ServiceIdentifier.d.ts +23 -23
  24. package/dist/AppServices/ServiceIdentifier.js +38 -39
  25. package/dist/AppServices/index.d.ts +7 -7
  26. package/dist/AppServices/index.js +7 -7
  27. package/dist/Components/AnimationHelper.d.ts +69 -69
  28. package/dist/Components/AnimationHelper.js +182 -182
  29. package/dist/Components/BootstrapHelpers.d.ts +8 -8
  30. package/dist/Components/BootstrapHelpers.js +30 -30
  31. package/dist/Components/BootstrapTypes.d.ts +35 -35
  32. package/dist/Components/BootstrapTypes.js +1 -1
  33. package/dist/Components/ButtonOptions.d.ts +63 -61
  34. package/dist/Components/ButtonOptions.js +1 -1
  35. package/dist/Components/ContextMenu/ContextMenu.d.ts +16 -16
  36. package/dist/Components/ContextMenu/ContextMenu.js +1 -1
  37. package/dist/Components/ContextMenu/MenuUtils.d.ts +16 -16
  38. package/dist/Components/ContextMenu/MenuUtils.js +34 -34
  39. package/dist/Components/DatePicker/DatePicker.d.ts +70 -69
  40. package/dist/Components/DatePicker/DatePicker.js +510 -487
  41. package/dist/Components/DatePicker/DatePickerOptions.d.ts +43 -34
  42. package/dist/Components/DatePicker/DatePickerOptions.js +33 -33
  43. package/dist/Components/ErrorHandler.d.ts +63 -55
  44. package/dist/Components/ErrorHandler.js +211 -138
  45. package/dist/Components/FileManager/BoundFileManager.d.ts +18 -18
  46. package/dist/Components/FileManager/BoundFileManager.js +60 -60
  47. package/dist/Components/FileManager/FileManager.d.ts +80 -78
  48. package/dist/Components/FileManager/FileManager.js +277 -257
  49. package/dist/Components/FileManager/FileUploadBatch.d.ts +37 -37
  50. package/dist/Components/FileManager/FileUploadBatch.js +83 -82
  51. package/dist/Components/FileManager/IFileManagerOptions.d.ts +42 -42
  52. package/dist/Components/FileManager/IFileManagerOptions.js +1 -1
  53. package/dist/Components/FormOptions.d.ts +34 -34
  54. package/dist/Components/FormOptions.js +1 -1
  55. package/dist/Components/ICollapsableOptions.d.ts +11 -11
  56. package/dist/Components/ICollapsableOptions.js +1 -1
  57. package/dist/Components/Modal/ModalHelper.d.ts +31 -31
  58. package/dist/Components/Modal/ModalHelper.js +174 -174
  59. package/dist/Components/Modal/ModalOptions.d.ts +61 -61
  60. package/dist/Components/Modal/ModalOptions.js +1 -1
  61. package/dist/Components/Modal/ModalStore.d.ts +32 -32
  62. package/dist/Components/Modal/ModalStore.js +82 -82
  63. package/dist/Components/Modal/ModalUtils.d.ts +61 -61
  64. package/dist/Components/Modal/ModalUtils.js +109 -109
  65. package/dist/Components/Notifications/INotificationHelper.d.ts +56 -56
  66. package/dist/Components/Notifications/INotificationHelper.js +1 -1
  67. package/dist/Components/Notifications/Notification.d.ts +32 -32
  68. package/dist/Components/Notifications/Notification.js +26 -27
  69. package/dist/Components/Notifications/NotificationHelper.d.ts +63 -63
  70. package/dist/Components/Notifications/NotificationHelper.js +111 -112
  71. package/dist/Components/Notifications/NotificationStore.d.ts +34 -34
  72. package/dist/Components/Notifications/NotificationStore.js +78 -79
  73. package/dist/Components/PositionHelper.d.ts +10 -10
  74. package/dist/Components/PositionHelper.js +43 -43
  75. package/dist/Components/TaskRunner/Decorators.d.ts +6 -6
  76. package/dist/Components/TaskRunner/Decorators.js +24 -24
  77. package/dist/Components/TaskRunner/ProgressState.d.ts +22 -22
  78. package/dist/Components/TaskRunner/ProgressState.js +71 -72
  79. package/dist/Components/TaskRunner/TaskRunner.d.ts +114 -114
  80. package/dist/Components/TaskRunner/TaskRunner.js +253 -244
  81. package/dist/Components/TooltipOptions.d.ts +8 -8
  82. package/dist/Components/TooltipOptions.js +1 -1
  83. package/dist/Components/index.d.ts +22 -22
  84. package/dist/Components/index.js +13 -13
  85. package/dist/ConnectionManager.d.ts +45 -45
  86. package/dist/ConnectionManager.js +60 -61
  87. package/dist/Data/ApiDataSource.d.ts +46 -46
  88. package/dist/Data/ApiDataSource.js +140 -144
  89. package/dist/Data/AsyncDataSource.d.ts +35 -35
  90. package/dist/Data/AsyncDataSource.js +79 -80
  91. package/dist/Data/CacheService.d.ts +40 -40
  92. package/dist/Data/CacheService.js +63 -64
  93. package/dist/Data/DataCacheEntry.d.ts +42 -42
  94. package/dist/Data/DataCacheEntry.js +80 -80
  95. package/dist/Data/DataView.d.ts +43 -43
  96. package/dist/Data/DataView.js +173 -172
  97. package/dist/Data/Deserialiser.d.ts +42 -42
  98. package/dist/Data/Deserialiser.js +255 -255
  99. package/dist/Data/Paging/PageManager.d.ts +167 -167
  100. package/dist/Data/Paging/PageManager.js +323 -323
  101. package/dist/Data/Paging/PageRequest.d.ts +24 -24
  102. package/dist/Data/Paging/PageRequest.js +38 -39
  103. package/dist/Data/Paging/PageResult.d.ts +10 -10
  104. package/dist/Data/Paging/PageResult.js +14 -14
  105. package/dist/Data/Serialiser.d.ts +41 -41
  106. package/dist/Data/Serialiser.js +201 -201
  107. package/dist/Data/SortOperation.d.ts +8 -8
  108. package/dist/Data/SortOperation.js +26 -26
  109. package/dist/Data/StaticDataSource.d.ts +9 -9
  110. package/dist/Data/StaticDataSource.js +27 -27
  111. package/dist/Data/WindowedDataView.d.ts +8 -8
  112. package/dist/Data/WindowedDataView.js +49 -50
  113. package/dist/Data/index.d.ts +15 -15
  114. package/dist/Data/index.js +15 -15
  115. package/dist/Dates/DateUtils.d.ts +47 -47
  116. package/dist/Dates/DateUtils.js +226 -226
  117. package/dist/Dates/TimeSpan.d.ts +24 -24
  118. package/dist/Dates/TimeSpan.js +46 -46
  119. package/dist/DebounceHelper.d.ts +44 -38
  120. package/dist/DebounceHelper.js +122 -95
  121. package/dist/Extensions.d.ts +82 -82
  122. package/dist/Extensions.js +182 -182
  123. package/dist/FileUtils.d.ts +6 -6
  124. package/dist/FileUtils.js +37 -37
  125. package/dist/Globals.d.ts +19 -19
  126. package/dist/Globals.js +41 -41
  127. package/dist/JsonSchema/ClassMetadata.d.ts +25 -25
  128. package/dist/JsonSchema/ClassMetadata.js +53 -53
  129. package/dist/JsonSchema/JsonData.d.ts +16 -16
  130. package/dist/JsonSchema/JsonData.js +97 -97
  131. package/dist/JsonSchema/JsonSchemaTypes.d.ts +37 -37
  132. package/dist/JsonSchema/JsonSchemaTypes.js +1 -1
  133. package/dist/JsonSchema/PropertyMetadata.d.ts +8 -8
  134. package/dist/JsonSchema/PropertyMetadata.js +8 -8
  135. package/dist/JsonSchema/TypeCache.d.ts +16 -16
  136. package/dist/JsonSchema/TypeCache.js +44 -44
  137. package/dist/JsonSchema/TypeMetadata.d.ts +45 -45
  138. package/dist/JsonSchema/TypeMetadata.js +170 -170
  139. package/dist/JsonSchema/index.d.ts +7 -7
  140. package/dist/JsonSchema/index.js +6 -6
  141. package/dist/Localisation/ILocalisationService.d.ts +11 -11
  142. package/dist/Localisation/ILocalisationService.js +1 -1
  143. package/dist/Localisation/LocalisationService.d.ts +4 -4
  144. package/dist/Localisation/LocalisationService.js +17 -17
  145. package/dist/Localisation/index.d.ts +1 -1
  146. package/dist/Localisation/index.js +1 -1
  147. package/dist/Misc.d.ts +6 -6
  148. package/dist/Misc.js +6 -6
  149. package/dist/Model/BaseModels/AuditValues.d.ts +12 -12
  150. package/dist/Model/BaseModels/AuditValues.js +46 -48
  151. package/dist/Model/BaseModels/CriteriaBase.d.ts +18 -16
  152. package/dist/Model/BaseModels/CriteriaBase.js +45 -34
  153. package/dist/Model/BaseModels/FileDescriptorBase.d.ts +12 -12
  154. package/dist/Model/BaseModels/FileDescriptorBase.js +22 -22
  155. package/dist/Model/BaseModels/ReasonedUserEvent.d.ts +5 -4
  156. package/dist/Model/BaseModels/ReasonedUserEvent.js +23 -19
  157. package/dist/Model/BaseModels/UserEvent.d.ts +9 -8
  158. package/dist/Model/BaseModels/UserEvent.js +36 -32
  159. package/dist/Model/BindableBase.d.ts +46 -40
  160. package/dist/Model/BindableBase.js +82 -76
  161. package/dist/Model/Decorators.d.ts +50 -44
  162. package/dist/Model/Decorators.js +189 -177
  163. package/dist/Model/EnumHelper.d.ts +54 -54
  164. package/dist/Model/EnumHelper.js +104 -100
  165. package/dist/Model/IAutoRunner.d.ts +5 -5
  166. package/dist/Model/IAutoRunner.js +1 -1
  167. package/dist/Model/IModelBase.d.ts +101 -79
  168. package/dist/Model/IModelBase.js +1 -1
  169. package/dist/Model/IModelCreatorBase.d.ts +9 -9
  170. package/dist/Model/IModelCreatorBase.js +1 -1
  171. package/dist/Model/List.d.ts +79 -77
  172. package/dist/Model/List.js +208 -198
  173. package/dist/Model/LookupBase.d.ts +13 -6
  174. package/dist/Model/LookupBase.js +19 -10
  175. package/dist/Model/MethodInfo.d.ts +8 -0
  176. package/dist/Model/MethodInfo.js +7 -0
  177. package/dist/Model/Misc.d.ts +83 -81
  178. package/dist/Model/Misc.js +59 -59
  179. package/dist/Model/ModelBase.d.ts +88 -86
  180. package/dist/Model/ModelBase.js +189 -180
  181. package/dist/Model/ModelCreatorBase.d.ts +23 -23
  182. package/dist/Model/ModelCreatorBase.js +91 -92
  183. package/dist/Model/ModelFieldInfo.d.ts +29 -12
  184. package/dist/Model/ModelFieldInfo.js +35 -26
  185. package/dist/Model/ModelGraphTraverser.d.ts +35 -35
  186. package/dist/Model/ModelGraphTraverser.js +101 -99
  187. package/dist/Model/NeoModel.d.ts +6 -6
  188. package/dist/Model/NeoModel.js +13 -13
  189. package/dist/Model/NeoTypeInfo.d.ts +55 -41
  190. package/dist/Model/NeoTypeInfo.js +319 -250
  191. package/dist/Model/ObservableProperty.d.ts +8 -8
  192. package/dist/Model/ObservableProperty.js +41 -41
  193. package/dist/Model/ObservableValue.d.ts +9 -9
  194. package/dist/Model/ObservableValue.js +25 -26
  195. package/dist/Model/PropertyInfo.d.ts +83 -81
  196. package/dist/Model/PropertyInfo.js +137 -137
  197. package/dist/Model/PropertyInstance.d.ts +84 -48
  198. package/dist/Model/PropertyInstance.js +173 -113
  199. package/dist/Model/ValueObject.d.ts +3 -3
  200. package/dist/Model/ValueObject.js +10 -10
  201. package/dist/Model/index.d.ts +15 -14
  202. package/dist/Model/index.js +13 -12
  203. package/dist/NumberUtils.d.ts +63 -49
  204. package/dist/NumberUtils.js +247 -197
  205. package/dist/Routing/IMenuItemProvider.d.ts +9 -9
  206. package/dist/Routing/IMenuItemProvider.js +1 -1
  207. package/dist/Routing/IMenuRoute.d.ts +18 -18
  208. package/dist/Routing/IMenuRoute.js +1 -1
  209. package/dist/Routing/INavigationHelper.d.ts +7 -7
  210. package/dist/Routing/INavigationHelper.js +1 -1
  211. package/dist/Routing/IPageLeaveHandler.d.ts +23 -23
  212. package/dist/Routing/IPageLeaveHandler.js +7 -7
  213. package/dist/Routing/IRoute.d.ts +27 -27
  214. package/dist/Routing/IRoute.js +1 -1
  215. package/dist/Routing/IRouteSecurityService.d.ts +14 -14
  216. package/dist/Routing/IRouteSecurityService.js +1 -1
  217. package/dist/Routing/MenuItemProvider.d.ts +17 -17
  218. package/dist/Routing/MenuItemProvider.js +53 -54
  219. package/dist/Routing/RouteSecurityService.d.ts +18 -18
  220. package/dist/Routing/RouteSecurityService.js +35 -36
  221. package/dist/Routing/index.d.ts +7 -7
  222. package/dist/Routing/index.js +3 -3
  223. package/dist/Security/IAuthenticationService.d.ts +41 -36
  224. package/dist/Security/IAuthenticationService.js +1 -1
  225. package/dist/Security/IAuthorisationService.d.ts +11 -11
  226. package/dist/Security/IAuthorisationService.js +1 -1
  227. package/dist/Security/ILoginErrorHandler.d.ts +4 -4
  228. package/dist/Security/ILoginErrorHandler.js +1 -1
  229. package/dist/Security/ISecurityService.d.ts +10 -10
  230. package/dist/Security/ISecurityService.js +1 -1
  231. package/dist/Security/IUser.d.ts +10 -10
  232. package/dist/Security/IUser.js +1 -1
  233. package/dist/Security/IUserRole.d.ts +6 -6
  234. package/dist/Security/IUserRole.js +1 -1
  235. package/dist/Security/LoginErrorHandler.d.ts +15 -15
  236. package/dist/Security/LoginErrorHandler.js +97 -98
  237. package/dist/Security/Oidc/OidcAuthService.d.ts +67 -60
  238. package/dist/Security/Oidc/OidcAuthService.js +216 -189
  239. package/dist/Security/Oidc/OidcTypes.d.ts +46 -29
  240. package/dist/Security/Oidc/OidcTypes.js +1 -1
  241. package/dist/Security/Oidc/OidcUser.d.ts +9 -9
  242. package/dist/Security/Oidc/OidcUser.js +33 -33
  243. package/dist/Security/SecurityService.d.ts +12 -12
  244. package/dist/Security/SecurityService.js +33 -34
  245. package/dist/Security/SignInResult.d.ts +13 -13
  246. package/dist/Security/SignInResult.js +8 -8
  247. package/dist/Security/User.d.ts +12 -12
  248. package/dist/Security/User.js +24 -24
  249. package/dist/Security/index.d.ts +10 -10
  250. package/dist/Security/index.js +5 -5
  251. package/dist/Settings.d.ts +71 -57
  252. package/dist/Settings.js +100 -87
  253. package/dist/SignalR/HubBase.d.ts +70 -70
  254. package/dist/SignalR/HubBase.js +164 -164
  255. package/dist/SignalR/HubReceiver.d.ts +11 -11
  256. package/dist/SignalR/HubReceiver.js +25 -25
  257. package/dist/SignalR/HubSubscription.d.ts +12 -12
  258. package/dist/SignalR/HubSubscription.js +14 -14
  259. package/dist/SignalR/index.d.ts +3 -3
  260. package/dist/SignalR/index.js +1 -1
  261. package/dist/StringUtils.d.ts +7 -7
  262. package/dist/StringUtils.js +24 -24
  263. package/dist/Utils.d.ts +81 -80
  264. package/dist/Utils.js +220 -218
  265. package/dist/Validation/Decorators.d.ts +12 -12
  266. package/dist/Validation/Decorators.js +52 -52
  267. package/dist/Validation/DisplayHelper.d.ts +20 -19
  268. package/dist/Validation/DisplayHelper.js +104 -104
  269. package/dist/Validation/Misc.d.ts +10 -10
  270. package/dist/Validation/Misc.js +11 -11
  271. package/dist/Validation/ModelProxy.d.ts +20 -20
  272. package/dist/Validation/ModelProxy.js +46 -46
  273. package/dist/Validation/RuleContext.d.ts +86 -86
  274. package/dist/Validation/RuleContext.js +130 -130
  275. package/dist/Validation/Rules.d.ts +70 -70
  276. package/dist/Validation/Rules.js +177 -177
  277. package/dist/Validation/ValidationHelpers.d.ts +12 -12
  278. package/dist/Validation/ValidationHelpers.js +57 -57
  279. package/dist/Validation/ValidationRules.d.ts +18 -18
  280. package/dist/Validation/ValidationRules.js +34 -34
  281. package/dist/Validation/ValidationState.d.ts +42 -42
  282. package/dist/Validation/ValidationState.js +74 -74
  283. package/dist/Validation/Validators/IModelValidator.d.ts +28 -24
  284. package/dist/Validation/Validators/IModelValidator.js +1 -1
  285. package/dist/Validation/Validators/IPropertyValidator.d.ts +21 -21
  286. package/dist/Validation/Validators/IPropertyValidator.js +15 -15
  287. package/dist/Validation/Validators/ModelValidator.d.ts +46 -45
  288. package/dist/Validation/Validators/ModelValidator.js +143 -137
  289. package/dist/Validation/Validators/PropertyValidator.d.ts +21 -21
  290. package/dist/Validation/Validators/PropertyValidator.js +64 -67
  291. package/dist/Validation/Validators/RuleValidator.d.ts +19 -19
  292. package/dist/Validation/Validators/RuleValidator.js +51 -55
  293. package/dist/Validation/index.d.ts +9 -9
  294. package/dist/Validation/index.js +7 -7
  295. package/dist/Views/IViewBase.d.ts +5 -5
  296. package/dist/Views/IViewBase.js +1 -1
  297. package/dist/index.d.ts +37 -36
  298. package/dist/index.js +44 -43
  299. package/package.json +11 -10
@@ -1,174 +1,174 @@
1
- import { Misc } from '../../';
2
- import AnimationHelper from '../AnimationHelper';
3
- var inactiveClassName = "inactive";
4
- var ModalHelper = /** @class */ (function () {
5
- function ModalHelper(props, container) {
6
- var _this = this;
7
- var _a;
8
- this.modals = [];
9
- this.rootClassName = "";
10
- this.rootClassName = (_a = props.className) !== null && _a !== void 0 ? _a : "";
11
- this.rootContainer = document.createElement("div");
12
- this.rootContainer.className = this.rootClassName;
13
- this.rootContainer.tabIndex = -1;
14
- (container !== null && container !== void 0 ? container : Misc.Globals.rootElement).appendChild(this.rootContainer);
15
- // Create the container for all the modals
16
- var modalsContainer = document.createElement("div");
17
- modalsContainer.className = "modal fade";
18
- modalsContainer.tabIndex = -1;
19
- modalsContainer.addEventListener("mousedown", this.onContainerClick.bind(this));
20
- modalsContainer.addEventListener("keydown", function (key) {
21
- if (key.key === "Escape") {
22
- if (_this.modals.length > 0) {
23
- var lastModel = _this.modals[_this.modals.length - 1];
24
- if (lastModel.onDismiss)
25
- lastModel.onDismiss(undefined);
26
- }
27
- }
28
- });
29
- this.modalsContainer = modalsContainer;
30
- this.rootContainer.appendChild(modalsContainer);
31
- // Create the full screen backdrop
32
- var backdrop = document.createElement("div");
33
- backdrop.className = "modal-backdrop fade";
34
- backdrop.style.display = "none";
35
- this.modalsBackdrop = backdrop;
36
- this.rootContainer.appendChild(backdrop);
37
- }
38
- Object.defineProperty(ModalHelper, "appInstance", {
39
- get: function () {
40
- if (!ModalHelper._instance) {
41
- throw Error("ModalHelper is not initialised. Make sure your app contains a ModalContainer component.");
42
- }
43
- return ModalHelper._instance;
44
- },
45
- enumerable: false,
46
- configurable: true
47
- });
48
- ModalHelper.initialise = function (props, container) {
49
- if (!ModalHelper._instance) {
50
- ModalHelper._instance = new ModalHelper(props, container);
51
- }
52
- };
53
- ModalHelper.prototype.updateProps = function (props) {
54
- var _a;
55
- this.rootClassName = (_a = props.className) !== null && _a !== void 0 ? _a : "";
56
- };
57
- ModalHelper.prototype.addModal = function (modal, options, onDismiss) {
58
- modal.className = "modal-container";
59
- // Create backdrop to prevent interaction with non top-level modals
60
- var modalOverlay = document.createElement("div");
61
- modalOverlay.className = "modal-container-backdrop";
62
- modal.appendChild(modalOverlay);
63
- if (document.activeElement)
64
- document.activeElement.blur();
65
- this.makeModalsInactive();
66
- this.endModalAnimations();
67
- var hasVisibleModal = this.modals.find(function (m) { return !m.isRemoving; });
68
- var modalInstance = { container: modal, onDismiss: onDismiss, isRemoving: false };
69
- this.modals.push(modalInstance);
70
- if (!hasVisibleModal) {
71
- this.addFirstModal(modal, options);
72
- }
73
- else {
74
- this.insertAdditionalModal(modal);
75
- }
76
- modal.tabIndex = -1;
77
- modal.focus();
78
- return modalInstance;
79
- };
80
- ModalHelper.prototype.addFirstModal = function (modal, options) {
81
- this.modalsContainer.appendChild(modal);
82
- if (document.body.scrollHeight > window.innerHeight && document.body.clientWidth > 768) {
83
- document.body.classList.add("has-modal-scroll-fix");
84
- }
85
- document.body.classList.add("has-modal");
86
- this.modalsContainer.classList.remove("modal-scroll-fix");
87
- this.modalsContainer.style.display = "block";
88
- this.modalsBackdrop.style.display = "block";
89
- AnimationHelper.triggerReflow(this.modalsContainer);
90
- this.modalsContainer.classList.add("show");
91
- this.modalsBackdrop.classList.add("show");
92
- if (options.containerClassName) {
93
- this.rootContainer.classList.add(options.containerClassName);
94
- }
95
- };
96
- ModalHelper.prototype.insertAdditionalModal = function (modal) {
97
- this.modalsContainer.insertBefore(modal, this.modalsContainer.childNodes[0]);
98
- var marginTop = parseInt(window.getComputedStyle(modal.children[0]).marginTop);
99
- modal.style.marginTop = -(modal.clientHeight + marginTop) + "px";
100
- AnimationHelper.triggerReflow(this.modalsContainer);
101
- modal.classList.add("modal-container-additional");
102
- AnimationHelper.triggerReflow(this.modalsContainer);
103
- modal.style.marginTop = "0";
104
- modal.classList.add("show");
105
- this.modalsContainer.scrollTo(0, 0);
106
- };
107
- ModalHelper.prototype.beginRemove = function (modal) {
108
- if (!modal.isRemoving) {
109
- modal.isRemoving = true;
110
- if (this.modals.every(function (m) { return m.isRemoving; })) {
111
- // All modals are closing.
112
- // Cancel any pending closing slide animations, since all modals are now being closed using the main animation.
113
- this.cancelModalSlides();
114
- // Remove the backdrop and top level container.
115
- this.modalsContainer.classList.remove("show");
116
- this.modalsBackdrop.classList.remove("show");
117
- this.rootContainer.className = this.rootClassName;
118
- document.body.classList.remove("has-modal", "has-modal-scroll-fix");
119
- if (document.body.scrollHeight > window.innerHeight) {
120
- // Prevent modal jumping left when showing scrollbar.
121
- this.modalsContainer.classList.add("modal-scroll-fix");
122
- }
123
- }
124
- else {
125
- // Otherwise just fade the current modal
126
- modal.container.classList.remove("show");
127
- var marginTop_1 = parseInt(window.getComputedStyle(modal.container.children[0]).marginTop);
128
- modal.fadeTimer = setTimeout(function () { return modal.container.style.marginTop = -(modal.container.clientHeight + marginTop_1) + "px"; }, 0);
129
- this.modals[this.modals.length - 2].container.classList.remove(inactiveClassName);
130
- }
131
- }
132
- };
133
- ModalHelper.prototype.endRemove = function (modal) {
134
- // call again in case the modal was destroyed without being closed by the user.
135
- this.beginRemove(modal);
136
- this.modalsContainer.removeChild(modal.container);
137
- this.modals.splice(this.modals.indexOf(modal), 1);
138
- if (this.modalsContainer.childNodes.length == 0) {
139
- this.modalsContainer.style.display = "none";
140
- this.modalsBackdrop.style.display = "none";
141
- }
142
- };
143
- ModalHelper.prototype.endModalAnimations = function () {
144
- for (var _i = 0, _a = this.modals.filter(function (m) { return m.isRemoving; }); _i < _a.length; _i++) {
145
- var modal = _a[_i];
146
- modal.container.style.display = "none";
147
- }
148
- };
149
- ModalHelper.prototype.makeModalsInactive = function () {
150
- for (var _i = 0, _a = this.modals; _i < _a.length; _i++) {
151
- var modal = _a[_i];
152
- modal.container.classList.add(inactiveClassName);
153
- }
154
- };
155
- ModalHelper.prototype.cancelModalSlides = function () {
156
- for (var _i = 0, _a = this.modals; _i < _a.length; _i++) {
157
- var modal = _a[_i];
158
- if (modal.fadeTimer) {
159
- clearTimeout(modal.fadeTimer);
160
- }
161
- }
162
- };
163
- ModalHelper.prototype.onContainerClick = function (e) {
164
- if (this.modals.length == 1) {
165
- var modal = this.modals[this.modals.length - 1];
166
- if (e.target == this.modalsContainer || e.target == modal.container) {
167
- if (modal.onDismiss)
168
- modal.onDismiss(e);
169
- }
170
- }
171
- };
172
- return ModalHelper;
173
- }());
174
- export default ModalHelper;
1
+ import { Misc } from '../../';
2
+ import AnimationHelper from '../AnimationHelper';
3
+ var inactiveClassName = "inactive";
4
+ var ModalHelper = /** @class */ (function () {
5
+ function ModalHelper(props, container) {
6
+ var _this = this;
7
+ var _a;
8
+ this.modals = [];
9
+ this.rootClassName = "";
10
+ this.rootClassName = (_a = props.className) !== null && _a !== void 0 ? _a : "";
11
+ this.rootContainer = document.createElement("div");
12
+ this.rootContainer.className = this.rootClassName;
13
+ this.rootContainer.tabIndex = -1;
14
+ (container !== null && container !== void 0 ? container : Misc.Globals.rootElement).appendChild(this.rootContainer);
15
+ // Create the container for all the modals
16
+ var modalsContainer = document.createElement("div");
17
+ modalsContainer.className = "modal fade";
18
+ modalsContainer.tabIndex = -1;
19
+ modalsContainer.addEventListener("mousedown", this.onContainerClick.bind(this));
20
+ modalsContainer.addEventListener("keydown", function (key) {
21
+ if (key.key === "Escape") {
22
+ if (_this.modals.length > 0) {
23
+ var lastModel = _this.modals[_this.modals.length - 1];
24
+ if (lastModel.onDismiss)
25
+ lastModel.onDismiss(undefined);
26
+ }
27
+ }
28
+ });
29
+ this.modalsContainer = modalsContainer;
30
+ this.rootContainer.appendChild(modalsContainer);
31
+ // Create the full screen backdrop
32
+ var backdrop = document.createElement("div");
33
+ backdrop.className = "modal-backdrop fade";
34
+ backdrop.style.display = "none";
35
+ this.modalsBackdrop = backdrop;
36
+ this.rootContainer.appendChild(backdrop);
37
+ }
38
+ Object.defineProperty(ModalHelper, "appInstance", {
39
+ get: function () {
40
+ if (!ModalHelper._instance) {
41
+ throw Error("ModalHelper is not initialised. Make sure your app contains a ModalContainer component.");
42
+ }
43
+ return ModalHelper._instance;
44
+ },
45
+ enumerable: false,
46
+ configurable: true
47
+ });
48
+ ModalHelper.initialise = function (props, container) {
49
+ if (!ModalHelper._instance) {
50
+ ModalHelper._instance = new ModalHelper(props, container);
51
+ }
52
+ };
53
+ ModalHelper.prototype.updateProps = function (props) {
54
+ var _a;
55
+ this.rootClassName = (_a = props.className) !== null && _a !== void 0 ? _a : "";
56
+ };
57
+ ModalHelper.prototype.addModal = function (modal, options, onDismiss) {
58
+ modal.className = "modal-container";
59
+ // Create backdrop to prevent interaction with non top-level modals
60
+ var modalOverlay = document.createElement("div");
61
+ modalOverlay.className = "modal-container-backdrop";
62
+ modal.appendChild(modalOverlay);
63
+ if (document.activeElement)
64
+ document.activeElement.blur();
65
+ this.makeModalsInactive();
66
+ this.endModalAnimations();
67
+ var hasVisibleModal = this.modals.find(function (m) { return !m.isRemoving; });
68
+ var modalInstance = { container: modal, onDismiss: onDismiss, isRemoving: false };
69
+ this.modals.push(modalInstance);
70
+ if (!hasVisibleModal) {
71
+ this.addFirstModal(modal, options);
72
+ }
73
+ else {
74
+ this.insertAdditionalModal(modal);
75
+ }
76
+ modal.tabIndex = -1;
77
+ modal.focus();
78
+ return modalInstance;
79
+ };
80
+ ModalHelper.prototype.addFirstModal = function (modal, options) {
81
+ this.modalsContainer.appendChild(modal);
82
+ if (document.body.scrollHeight > window.innerHeight && document.body.clientWidth > 768) {
83
+ document.body.classList.add("has-modal-scroll-fix");
84
+ }
85
+ document.body.classList.add("has-modal");
86
+ this.modalsContainer.classList.remove("modal-scroll-fix");
87
+ this.modalsContainer.style.display = "block";
88
+ this.modalsBackdrop.style.display = "block";
89
+ AnimationHelper.triggerReflow(this.modalsContainer);
90
+ this.modalsContainer.classList.add("show");
91
+ this.modalsBackdrop.classList.add("show");
92
+ if (options.containerClassName) {
93
+ this.rootContainer.classList.add(options.containerClassName);
94
+ }
95
+ };
96
+ ModalHelper.prototype.insertAdditionalModal = function (modal) {
97
+ this.modalsContainer.insertBefore(modal, this.modalsContainer.childNodes[0]);
98
+ var marginTop = parseInt(window.getComputedStyle(modal.children[0]).marginTop);
99
+ modal.style.marginTop = -(modal.clientHeight + marginTop) + "px";
100
+ AnimationHelper.triggerReflow(this.modalsContainer);
101
+ modal.classList.add("modal-container-additional");
102
+ AnimationHelper.triggerReflow(this.modalsContainer);
103
+ modal.style.marginTop = "0";
104
+ modal.classList.add("show");
105
+ this.modalsContainer.scrollTo(0, 0);
106
+ };
107
+ ModalHelper.prototype.beginRemove = function (modal) {
108
+ if (!modal.isRemoving) {
109
+ modal.isRemoving = true;
110
+ if (this.modals.every(function (m) { return m.isRemoving; })) {
111
+ // All modals are closing.
112
+ // Cancel any pending closing slide animations, since all modals are now being closed using the main animation.
113
+ this.cancelModalSlides();
114
+ // Remove the backdrop and top level container.
115
+ this.modalsContainer.classList.remove("show");
116
+ this.modalsBackdrop.classList.remove("show");
117
+ this.rootContainer.className = this.rootClassName;
118
+ document.body.classList.remove("has-modal", "has-modal-scroll-fix");
119
+ if (document.body.scrollHeight > window.innerHeight) {
120
+ // Prevent modal jumping left when showing scrollbar.
121
+ this.modalsContainer.classList.add("modal-scroll-fix");
122
+ }
123
+ }
124
+ else {
125
+ // Otherwise just fade the current modal
126
+ modal.container.classList.remove("show");
127
+ var marginTop_1 = parseInt(window.getComputedStyle(modal.container.children[0]).marginTop);
128
+ modal.fadeTimer = setTimeout(function () { return modal.container.style.marginTop = -(modal.container.clientHeight + marginTop_1) + "px"; }, 0);
129
+ this.modals[this.modals.length - 2].container.classList.remove(inactiveClassName);
130
+ }
131
+ }
132
+ };
133
+ ModalHelper.prototype.endRemove = function (modal) {
134
+ // call again in case the modal was destroyed without being closed by the user.
135
+ this.beginRemove(modal);
136
+ this.modalsContainer.removeChild(modal.container);
137
+ this.modals.splice(this.modals.indexOf(modal), 1);
138
+ if (this.modalsContainer.childNodes.length == 0) {
139
+ this.modalsContainer.style.display = "none";
140
+ this.modalsBackdrop.style.display = "none";
141
+ }
142
+ };
143
+ ModalHelper.prototype.endModalAnimations = function () {
144
+ for (var _i = 0, _a = this.modals.filter(function (m) { return m.isRemoving; }); _i < _a.length; _i++) {
145
+ var modal = _a[_i];
146
+ modal.container.style.display = "none";
147
+ }
148
+ };
149
+ ModalHelper.prototype.makeModalsInactive = function () {
150
+ for (var _i = 0, _a = this.modals; _i < _a.length; _i++) {
151
+ var modal = _a[_i];
152
+ modal.container.classList.add(inactiveClassName);
153
+ }
154
+ };
155
+ ModalHelper.prototype.cancelModalSlides = function () {
156
+ for (var _i = 0, _a = this.modals; _i < _a.length; _i++) {
157
+ var modal = _a[_i];
158
+ if (modal.fadeTimer) {
159
+ clearTimeout(modal.fadeTimer);
160
+ }
161
+ }
162
+ };
163
+ ModalHelper.prototype.onContainerClick = function (e) {
164
+ if (this.modals.length == 1) {
165
+ var modal = this.modals[this.modals.length - 1];
166
+ if (e.target == this.modalsContainer || e.target == modal.container) {
167
+ if (modal.onDismiss)
168
+ modal.onDismiss(e);
169
+ }
170
+ }
171
+ };
172
+ return ModalHelper;
173
+ }());
174
+ export default ModalHelper;
@@ -1,61 +1,61 @@
1
- import { IButtonOptions } from '../ButtonOptions';
2
- import { IFormOptions } from '../FormOptions';
3
- import { IModelBase } from '../../Model/IModelBase';
4
- import { IPropertyInstance } from '../../Model/PropertyInstance';
5
- export interface IModalOptionsBase {
6
- title: string;
7
- size?: "sm" | "lg" | "xl";
8
- /** Cancel button in the top right of the modal. */
9
- showCancelButton?: boolean;
10
- /** Close button in the footer of the modal. By performs the same action as cancel by default. */
11
- closeButton?: Partial<IButtonOptions> | false;
12
- /** Ok button in the footer of the modal. */
13
- acceptButton?: Partial<IButtonOptions> | false;
14
- /** Custom set of buttons. Close and Accept button will be ignored if this is specified. */
15
- buttons?: IButtonOptions[];
16
- /** Properties to pass to the modals internal form */
17
- formProps?: IFormOptions<IModelBase>;
18
- /** Stops the modal from including its own form. Use this if your content contains a form element. */
19
- suppressForm?: boolean;
20
- /** Class name to be added to the modal. */
21
- className?: string;
22
- /** Class name to add to the modal container. Note, this will only apply if this is the first modal shown. */
23
- containerClassName?: string;
24
- /** Override the footer. Button props will be ignored when you specify a custom footer. */
25
- footer?: any;
26
- /** Add content to the left of the buttons. */
27
- footerContent?: any;
28
- /** Callback to handle when the modal is closed / cancelled by the user. Not called on accept. */
29
- onClose?: (event: any) => void;
30
- }
31
- export default interface IModalOptions extends IModalOptionsBase {
32
- /** Controls the visibility of the modal. */
33
- show: boolean;
34
- /** Callback to handle when the modal is closed by the user. This should cause show to become false. */
35
- onClose: (event: any) => void;
36
- children: any;
37
- }
38
- export interface IModalOptionsAuto extends IModalOptionsBase {
39
- /**
40
- * Controls the visibility of the modal.
41
- * The modal will be shown if the value of the property is a non falsy value.
42
- * If the modal is closed by the user, the value of the property will be set to:
43
- * false if it is currently true,
44
- * null if it is non boolean.
45
- * If the value is an object, it will be used as the forms model. */
46
- bind: IPropertyInstance;
47
- children: any;
48
- }
49
- export interface IModalOptionsModel extends IModalOptionsBase {
50
- /**
51
- * Controls the visibility of the modal.
52
- * The modal will be shown if the value of the property is an instance of an object.
53
- * If the modal is closed by the user, the value of the property will be set to null.
54
- * The value will also be used as the forms model.
55
- * The value will be passed into the render callback function. It will still have a value while the modal collapse animation completes. */
56
- bindModel: IPropertyInstance;
57
- /**
58
- * Child content must be a callback function accepting the model as a parameter.
59
- */
60
- children: Function;
61
- }
1
+ import { IButtonOptions } from '../ButtonOptions';
2
+ import { IFormOptions } from '../FormOptions';
3
+ import { IModelBase } from '../../Model/IModelBase';
4
+ import { IPropertyInstance } from '../../Model/PropertyInstance';
5
+ export interface IModalOptionsBase {
6
+ title: string;
7
+ size?: "sm" | "lg" | "xl";
8
+ /** Cancel button in the top right of the modal. */
9
+ showCancelButton?: boolean;
10
+ /** Close button in the footer of the modal. By performs the same action as cancel by default. */
11
+ closeButton?: Partial<IButtonOptions> | false;
12
+ /** Ok button in the footer of the modal. */
13
+ acceptButton?: Partial<IButtonOptions> | false;
14
+ /** Custom set of buttons. Close and Accept button will be ignored if this is specified. */
15
+ buttons?: IButtonOptions[];
16
+ /** Properties to pass to the modals internal form */
17
+ formProps?: IFormOptions<IModelBase>;
18
+ /** Stops the modal from including its own form. Use this if your content contains a form element. */
19
+ suppressForm?: boolean;
20
+ /** Class name to be added to the modal. */
21
+ className?: string;
22
+ /** Class name to add to the modal container. Note, this will only apply if this is the first modal shown. */
23
+ containerClassName?: string;
24
+ /** Override the footer. Button props will be ignored when you specify a custom footer. */
25
+ footer?: any;
26
+ /** Add content to the left of the buttons. */
27
+ footerContent?: any;
28
+ /** Callback to handle when the modal is closed / cancelled by the user. Not called on accept. */
29
+ onClose?: (event: any) => void;
30
+ }
31
+ export default interface IModalOptions extends IModalOptionsBase {
32
+ /** Controls the visibility of the modal. */
33
+ show: boolean;
34
+ /** Callback to handle when the modal is closed by the user. This should cause show to become false. */
35
+ onClose: (event: any) => void;
36
+ children: any;
37
+ }
38
+ export interface IModalOptionsAuto extends IModalOptionsBase {
39
+ /**
40
+ * Controls the visibility of the modal.
41
+ * The modal will be shown if the value of the property is a non falsy value.
42
+ * If the modal is closed by the user, the value of the property will be set to:
43
+ * false if it is currently true,
44
+ * null if it is non boolean.
45
+ * If the value is an object, it will be used as the forms model. */
46
+ bind: IPropertyInstance;
47
+ children: any;
48
+ }
49
+ export interface IModalOptionsModel extends IModalOptionsBase {
50
+ /**
51
+ * Controls the visibility of the modal.
52
+ * The modal will be shown if the value of the property is an instance of an object.
53
+ * If the modal is closed by the user, the value of the property will be set to null.
54
+ * The value will also be used as the forms model.
55
+ * The value will be passed into the render callback function. It will still have a value while the modal collapse animation completes. */
56
+ bindModel: IPropertyInstance;
57
+ /**
58
+ * Child content must be a callback function accepting the model as a parameter.
59
+ */
60
+ children: Function;
61
+ }
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,32 +1,32 @@
1
- import IModalOptions from './ModalOptions';
2
- export interface IModalStore {
3
- modals: CodeModal[];
4
- addModal(title: string, message: any, modalOptions: Partial<IModalOptions>): ICodeModal;
5
- removeModal(modal: CodeModal): void;
6
- }
7
- /**
8
- * Represents a list of modal components added programatically.
9
- * Modals will be removed from the list when they are closed by the user, and the animation has been complete.
10
- * A modal container will render modals based on the information in this list
11
- */
12
- export default class ModalStore implements IModalStore {
13
- modals: CodeModal[];
14
- addModal(title: string, message: any, modalOptions: Partial<IModalOptions>): ICodeModal;
15
- removeModal(modal: CodeModal): void;
16
- }
17
- export interface ICodeModal {
18
- /** Closes the modal. Callbacks on the modal buttons will not fire. */
19
- close(): void;
20
- }
21
- /** Represents a modal component added programatically. */
22
- declare class CodeModal implements ICodeModal {
23
- private store;
24
- content: any;
25
- options: IModalOptions;
26
- constructor(store: IModalStore, content: any, options: IModalOptions);
27
- interceptClick(onClick?: (e: any) => void): (e: any) => void;
28
- id: string;
29
- close(): void;
30
- refreshValue: number;
31
- }
32
- export {};
1
+ import IModalOptions from './ModalOptions';
2
+ export interface IModalStore {
3
+ modals: CodeModal[];
4
+ addModal(title: string, message: any, modalOptions: Partial<IModalOptions>): ICodeModal;
5
+ removeModal(modal: CodeModal): void;
6
+ }
7
+ /**
8
+ * Represents a list of modal components added programatically.
9
+ * Modals will be removed from the list when they are closed by the user, and the animation has been complete.
10
+ * A modal container will render modals based on the information in this list
11
+ */
12
+ export default class ModalStore implements IModalStore {
13
+ modals: CodeModal[];
14
+ addModal(title: string, message: any, modalOptions: Partial<IModalOptions>): ICodeModal;
15
+ removeModal(modal: CodeModal): void;
16
+ }
17
+ export interface ICodeModal {
18
+ /** Closes the modal. Callbacks on the modal buttons will not fire. */
19
+ close(): void;
20
+ }
21
+ /** Represents a modal component added programatically. */
22
+ declare class CodeModal implements ICodeModal {
23
+ private store;
24
+ content: any;
25
+ options: IModalOptions;
26
+ constructor(store: IModalStore, content: any, options: IModalOptions);
27
+ interceptClick(onClick?: (e: any) => void): (e: any) => void;
28
+ id: string;
29
+ close(): void;
30
+ refreshValue: number;
31
+ }
32
+ export {};