@formio/angular 5.2.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/FormioBaseComponent.d.ts +75 -0
  2. package/FormioBaseComponent.d.ts.map +1 -0
  3. package/FormioBaseComponent.ngfactory.d.ts.map +1 -0
  4. package/README.md +24 -0
  5. package/auth/auth.component.d.ts +3 -0
  6. package/auth/auth.component.d.ts.map +1 -0
  7. package/auth/auth.config.d.ts +60 -0
  8. package/auth/auth.config.d.ts.map +1 -0
  9. package/auth/auth.module.d.ts +6 -0
  10. package/auth/auth.module.d.ts.map +1 -0
  11. package/auth/auth.routes.d.ts +4 -0
  12. package/auth/auth.routes.d.ts.map +1 -0
  13. package/auth/auth.service.d.ts +38 -0
  14. package/auth/auth.service.d.ts.map +1 -0
  15. package/auth/formio-angular-auth.d.ts +5 -0
  16. package/auth/formio-angular-auth.d.ts.map +1 -0
  17. package/auth/formio-angular-auth.metadata.json +1 -0
  18. package/auth/index.d.ts +9 -0
  19. package/auth/index.d.ts.map +1 -0
  20. package/auth/login/login.component.d.ts +6 -0
  21. package/auth/login/login.component.d.ts.map +1 -0
  22. package/auth/package.json +11 -0
  23. package/auth/public_api.d.ts +2 -0
  24. package/auth/public_api.d.ts.map +1 -0
  25. package/auth/register/register.component.d.ts +6 -0
  26. package/auth/register/register.component.d.ts.map +1 -0
  27. package/auth/resetpass/resetpass.component.d.ts +6 -0
  28. package/auth/resetpass/resetpass.component.d.ts.map +1 -0
  29. package/bundles/formio-angular-auth.umd.js +312 -0
  30. package/bundles/formio-angular-auth.umd.js.map +1 -0
  31. package/bundles/formio-angular-grid.umd.js +1010 -0
  32. package/bundles/formio-angular-grid.umd.js.map +1 -0
  33. package/bundles/formio-angular-manager.umd.js +1122 -0
  34. package/bundles/formio-angular-manager.umd.js.map +1 -0
  35. package/bundles/formio-angular-resource.umd.js +556 -0
  36. package/bundles/formio-angular-resource.umd.js.map +1 -0
  37. package/bundles/formio-angular.umd.js +1497 -0
  38. package/bundles/formio-angular.umd.js.map +1 -0
  39. package/components/alerts/formio.alerts.component.d.ts +9 -0
  40. package/components/alerts/formio.alerts.component.d.ts.map +1 -0
  41. package/components/alerts/formio.alerts.component.ngfactory.d.ts.map +1 -0
  42. package/components/alerts/formio.alerts.d.ts +12 -0
  43. package/components/alerts/formio.alerts.d.ts.map +1 -0
  44. package/components/alerts/parse-html-content.pipe.d.ts +5 -0
  45. package/components/alerts/parse-html-content.pipe.d.ts.map +1 -0
  46. package/components/alerts/parse-html-content.pipe.ngfactory.d.ts.map +1 -0
  47. package/components/formbuilder/formbuilder.component.d.ts +34 -0
  48. package/components/formbuilder/formbuilder.component.d.ts.map +1 -0
  49. package/components/formbuilder/formbuilder.component.ngfactory.d.ts.map +1 -0
  50. package/components/formio/formio.component.d.ts +12 -0
  51. package/components/formio/formio.component.d.ts.map +1 -0
  52. package/components/formio/formio.component.ngfactory.d.ts.map +1 -0
  53. package/components/loader/formio.loader.component.d.ts +4 -0
  54. package/components/loader/formio.loader.component.d.ts.map +1 -0
  55. package/components/loader/formio.loader.component.ngfactory.d.ts.map +1 -0
  56. package/components/loader/formio.loader.component.scss.shim.ngstyle.d.ts.map +1 -0
  57. package/core.d.ts +14 -0
  58. package/core.d.ts.map +1 -0
  59. package/custom-component/create-custom-component.d.ts +239 -0
  60. package/custom-component/create-custom-component.d.ts.map +1 -0
  61. package/custom-component/custom-tags.service.d.ts +5 -0
  62. package/custom-component/custom-tags.service.d.ts.map +1 -0
  63. package/custom-component/custom-tags.service.ngfactory.d.ts.map +1 -0
  64. package/custom-component/register-custom-component.d.ts +7 -0
  65. package/custom-component/register-custom-component.d.ts.map +1 -0
  66. package/elements.common.d.ts +31 -0
  67. package/elements.common.d.ts.map +1 -0
  68. package/esm2015/FormioBaseComponent.js +456 -0
  69. package/esm2015/auth/auth.component.js +9 -0
  70. package/esm2015/auth/auth.config.js +12 -0
  71. package/esm2015/auth/auth.module.js +34 -0
  72. package/esm2015/auth/auth.routes.js +32 -0
  73. package/esm2015/auth/auth.service.js +160 -0
  74. package/esm2015/auth/formio-angular-auth.js +5 -0
  75. package/esm2015/auth/index.js +9 -0
  76. package/esm2015/auth/login/login.component.js +16 -0
  77. package/esm2015/auth/public_api.js +5 -0
  78. package/esm2015/auth/register/register.component.js +16 -0
  79. package/esm2015/auth/resetpass/resetpass.component.js +16 -0
  80. package/esm2015/components/alerts/formio.alerts.component.js +26 -0
  81. package/esm2015/components/alerts/formio.alerts.js +15 -0
  82. package/esm2015/components/alerts/parse-html-content.pipe.js +15 -0
  83. package/esm2015/components/formbuilder/formbuilder.component.js +185 -0
  84. package/esm2015/components/formio/formio.component.js +39 -0
  85. package/esm2015/components/loader/formio.loader.component.js +14 -0
  86. package/esm2015/core.js +14 -0
  87. package/esm2015/custom-component/create-custom-component.js +130 -0
  88. package/esm2015/custom-component/custom-tags.service.js +13 -0
  89. package/esm2015/custom-component/register-custom-component.js +23 -0
  90. package/esm2015/elements.common.js +2 -0
  91. package/esm2015/formio-angular.js +7 -0
  92. package/esm2015/formio-promise.service.js +33 -0
  93. package/esm2015/formio.common.js +8 -0
  94. package/esm2015/formio.config.js +11 -0
  95. package/esm2015/formio.module.js +42 -0
  96. package/esm2015/formio.service.js +59 -0
  97. package/esm2015/formio.utils.js +21 -0
  98. package/esm2015/grid/GridBodyComponent.js +76 -0
  99. package/esm2015/grid/GridFooterComponent.js +26 -0
  100. package/esm2015/grid/GridHeaderComponent.js +25 -0
  101. package/esm2015/grid/form/FormGridBody.component.js +16 -0
  102. package/esm2015/grid/form/FormGridFooter.component.js +24 -0
  103. package/esm2015/grid/form/FormGridHeader.component.js +24 -0
  104. package/esm2015/grid/form/index.js +9 -0
  105. package/esm2015/grid/form/time-since.pipe.js +33 -0
  106. package/esm2015/grid/formio-angular-grid.js +6 -0
  107. package/esm2015/grid/grid.component.js +211 -0
  108. package/esm2015/grid/grid.module.js +61 -0
  109. package/esm2015/grid/grid.service.js +16 -0
  110. package/esm2015/grid/index.js +13 -0
  111. package/esm2015/grid/public_api.js +5 -0
  112. package/esm2015/grid/submission/SubmissionGridBody.component.js +40 -0
  113. package/esm2015/grid/submission/SubmissionGridFooter.component.js +21 -0
  114. package/esm2015/grid/submission/SubmissionGridHeader.component.js +58 -0
  115. package/esm2015/grid/submission/index.js +9 -0
  116. package/esm2015/grid/types/grid-column.js +2 -0
  117. package/esm2015/grid/types/grid-footer-positions.js +7 -0
  118. package/esm2015/grid/types/grid-header.js +6 -0
  119. package/esm2015/index.js +5 -0
  120. package/esm2015/manager/create/create.component.js +13 -0
  121. package/esm2015/manager/delete/delete.component.js +42 -0
  122. package/esm2015/manager/edit/edit.component.js +109 -0
  123. package/esm2015/manager/form/form.component.js +73 -0
  124. package/esm2015/manager/form-manager.config.js +12 -0
  125. package/esm2015/manager/form-manager.module.js +56 -0
  126. package/esm2015/manager/form-manager.routes.js +74 -0
  127. package/esm2015/manager/form-manager.service.js +180 -0
  128. package/esm2015/manager/formio-angular-manager.js +5 -0
  129. package/esm2015/manager/index/index.component.js +86 -0
  130. package/esm2015/manager/index.js +16 -0
  131. package/esm2015/manager/public_api.js +5 -0
  132. package/esm2015/manager/submission/delete/delete.component.js +32 -0
  133. package/esm2015/manager/submission/edit/edit.component.js +24 -0
  134. package/esm2015/manager/submission/index/index.component.js +24 -0
  135. package/esm2015/manager/submission/submission/submission.component.js +27 -0
  136. package/esm2015/manager/submission/view/view.component.js +16 -0
  137. package/esm2015/manager/view/view.component.js +45 -0
  138. package/esm2015/public-api.js +5 -0
  139. package/esm2015/resource/create/create.component.js +40 -0
  140. package/esm2015/resource/delete/delete.component.js +29 -0
  141. package/esm2015/resource/edit/edit.component.js +39 -0
  142. package/esm2015/resource/formio-angular-resource.js +5 -0
  143. package/esm2015/resource/index/index.component.js +65 -0
  144. package/esm2015/resource/index.js +12 -0
  145. package/esm2015/resource/public_api.js +5 -0
  146. package/esm2015/resource/resource.component.js +48 -0
  147. package/esm2015/resource/resource.config.js +12 -0
  148. package/esm2015/resource/resource.module.js +44 -0
  149. package/esm2015/resource/resource.routes.js +42 -0
  150. package/esm2015/resource/resource.service.js +187 -0
  151. package/esm2015/resource/resources.service.js +22 -0
  152. package/esm2015/resource/view/view.component.js +24 -0
  153. package/esm2015/types/alerts-position.js +8 -0
  154. package/esm2015/types/formio-metadata.js +2 -0
  155. package/esm2015/types/formio-submission.js +6 -0
  156. package/fesm2015/formio-angular-auth.js +285 -0
  157. package/fesm2015/formio-angular-auth.js.map +1 -0
  158. package/fesm2015/formio-angular-grid.js +624 -0
  159. package/fesm2015/formio-angular-grid.js.map +1 -0
  160. package/fesm2015/formio-angular-manager.js +750 -0
  161. package/fesm2015/formio-angular-manager.js.map +1 -0
  162. package/fesm2015/formio-angular-resource.js +515 -0
  163. package/fesm2015/formio-angular-resource.js.map +1 -0
  164. package/fesm2015/formio-angular.js +1073 -0
  165. package/fesm2015/formio-angular.js.map +1 -0
  166. package/formio-angular.d.ts +7 -0
  167. package/formio-angular.d.ts.map +1 -0
  168. package/formio-angular.metadata.json +1 -0
  169. package/formio-promise.service.d.ts +16 -0
  170. package/formio-promise.service.d.ts.map +1 -0
  171. package/formio.common.d.ts +64 -0
  172. package/formio.common.d.ts.map +1 -0
  173. package/formio.config.d.ts +7 -0
  174. package/formio.config.d.ts.map +1 -0
  175. package/formio.config.ngfactory.d.ts.map +1 -0
  176. package/formio.module.d.ts +3 -0
  177. package/formio.module.d.ts.map +1 -0
  178. package/formio.module.ngfactory.d.ts.map +1 -0
  179. package/formio.service.d.ts +18 -0
  180. package/formio.service.d.ts.map +1 -0
  181. package/formio.utils.d.ts +2 -0
  182. package/formio.utils.d.ts.map +1 -0
  183. package/grid/GridBodyComponent.d.ts +32 -0
  184. package/grid/GridBodyComponent.d.ts.map +1 -0
  185. package/grid/GridBodyComponent.ngfactory.d.ts.map +1 -0
  186. package/grid/GridFooterComponent.d.ts +17 -0
  187. package/grid/GridFooterComponent.d.ts.map +1 -0
  188. package/grid/GridFooterComponent.ngfactory.d.ts.map +1 -0
  189. package/grid/GridHeaderComponent.d.ts +13 -0
  190. package/grid/GridHeaderComponent.d.ts.map +1 -0
  191. package/grid/GridHeaderComponent.ngfactory.d.ts.map +1 -0
  192. package/grid/form/FormGridBody.component.d.ts +6 -0
  193. package/grid/form/FormGridBody.component.d.ts.map +1 -0
  194. package/grid/form/FormGridBody.component.ngfactory.d.ts.map +1 -0
  195. package/grid/form/FormGridBody.component.scss.shim.ngstyle.d.ts.map +1 -0
  196. package/grid/form/FormGridFooter.component.d.ts +7 -0
  197. package/grid/form/FormGridFooter.component.d.ts.map +1 -0
  198. package/grid/form/FormGridFooter.component.ngfactory.d.ts.map +1 -0
  199. package/grid/form/FormGridHeader.component.d.ts +8 -0
  200. package/grid/form/FormGridHeader.component.d.ts.map +1 -0
  201. package/grid/form/FormGridHeader.component.ngfactory.d.ts.map +1 -0
  202. package/grid/form/index.d.ts +10 -0
  203. package/grid/form/index.d.ts.map +1 -0
  204. package/grid/form/time-since.pipe.d.ts +5 -0
  205. package/grid/form/time-since.pipe.d.ts.map +1 -0
  206. package/grid/form/time-since.pipe.ngfactory.d.ts.map +1 -0
  207. package/grid/formio-angular-grid.d.ts +6 -0
  208. package/grid/formio-angular-grid.d.ts.map +1 -0
  209. package/grid/formio-angular-grid.metadata.json +1 -0
  210. package/grid/grid.component.d.ts +56 -0
  211. package/grid/grid.component.d.ts.map +1 -0
  212. package/grid/grid.component.ngfactory.d.ts.map +1 -0
  213. package/grid/grid.component.scss.shim.ngstyle.d.ts.map +1 -0
  214. package/grid/grid.footer.scss.ngstyle.d.ts.map +1 -0
  215. package/grid/grid.module.d.ts +3 -0
  216. package/grid/grid.module.d.ts.map +1 -0
  217. package/grid/grid.module.ngfactory.d.ts.map +1 -0
  218. package/grid/grid.service.d.ts +7 -0
  219. package/grid/grid.service.d.ts.map +1 -0
  220. package/grid/grid.service.ngfactory.d.ts.map +1 -0
  221. package/grid/index.d.ts +13 -0
  222. package/grid/index.d.ts.map +1 -0
  223. package/grid/package.json +11 -0
  224. package/grid/public_api.d.ts +2 -0
  225. package/grid/public_api.d.ts.map +1 -0
  226. package/grid/submission/SubmissionGridBody.component.d.ts +16 -0
  227. package/grid/submission/SubmissionGridBody.component.d.ts.map +1 -0
  228. package/grid/submission/SubmissionGridBody.component.ngfactory.d.ts.map +1 -0
  229. package/grid/submission/SubmissionGridFooter.component.d.ts +7 -0
  230. package/grid/submission/SubmissionGridFooter.component.d.ts.map +1 -0
  231. package/grid/submission/SubmissionGridFooter.component.ngfactory.d.ts.map +1 -0
  232. package/grid/submission/SubmissionGridHeader.component.d.ts +27 -0
  233. package/grid/submission/SubmissionGridHeader.component.d.ts.map +1 -0
  234. package/grid/submission/SubmissionGridHeader.component.ngfactory.d.ts.map +1 -0
  235. package/grid/submission/index.d.ts +10 -0
  236. package/grid/submission/index.d.ts.map +1 -0
  237. package/grid/types/grid-column.d.ts +7 -0
  238. package/grid/types/grid-column.d.ts.map +1 -0
  239. package/grid/types/grid-footer-positions.d.ts +6 -0
  240. package/grid/types/grid-footer-positions.d.ts.map +1 -0
  241. package/grid/types/grid-header.d.ts +13 -0
  242. package/grid/types/grid-header.d.ts.map +1 -0
  243. package/index.d.ts +6 -0
  244. package/index.d.ts.map +1 -0
  245. package/manager/create/create.component.d.ts +6 -0
  246. package/manager/create/create.component.d.ts.map +1 -0
  247. package/manager/delete/delete.component.d.ts +15 -0
  248. package/manager/delete/delete.component.d.ts.map +1 -0
  249. package/manager/edit/edit.component.d.ts +28 -0
  250. package/manager/edit/edit.component.d.ts.map +1 -0
  251. package/manager/form/form.component.d.ts +26 -0
  252. package/manager/form/form.component.d.ts.map +1 -0
  253. package/manager/form-manager.config.d.ts +23 -0
  254. package/manager/form-manager.config.d.ts.map +1 -0
  255. package/manager/form-manager.module.d.ts +6 -0
  256. package/manager/form-manager.module.d.ts.map +1 -0
  257. package/manager/form-manager.routes.d.ts +4 -0
  258. package/manager/form-manager.routes.d.ts.map +1 -0
  259. package/manager/form-manager.service.d.ts +35 -0
  260. package/manager/form-manager.service.d.ts.map +1 -0
  261. package/manager/formio-angular-manager.d.ts +5 -0
  262. package/manager/formio-angular-manager.d.ts.map +1 -0
  263. package/manager/formio-angular-manager.metadata.json +1 -0
  264. package/manager/index/index.component.d.ts +23 -0
  265. package/manager/index/index.component.d.ts.map +1 -0
  266. package/manager/index.d.ts +17 -0
  267. package/manager/index.d.ts.map +1 -0
  268. package/manager/package.json +11 -0
  269. package/manager/public_api.d.ts +2 -0
  270. package/manager/public_api.d.ts.map +1 -0
  271. package/manager/submission/delete/delete.component.d.ts +13 -0
  272. package/manager/submission/delete/delete.component.d.ts.map +1 -0
  273. package/manager/submission/edit/edit.component.d.ts +10 -0
  274. package/manager/submission/edit/edit.component.d.ts.map +1 -0
  275. package/manager/submission/index/index.component.d.ts +10 -0
  276. package/manager/submission/index/index.component.d.ts.map +1 -0
  277. package/manager/submission/submission/submission.component.d.ts +12 -0
  278. package/manager/submission/submission/submission.component.d.ts.map +1 -0
  279. package/manager/submission/view/view.component.d.ts +6 -0
  280. package/manager/submission/view/view.component.d.ts.map +1 -0
  281. package/manager/view/view.component.d.ts +20 -0
  282. package/manager/view/view.component.d.ts.map +1 -0
  283. package/package.json +47 -0
  284. package/public-api.d.ts +2 -0
  285. package/public-api.d.ts.map +1 -0
  286. package/resource/create/create.component.d.ts +16 -0
  287. package/resource/create/create.component.d.ts.map +1 -0
  288. package/resource/delete/delete.component.d.ts +11 -0
  289. package/resource/delete/delete.component.d.ts.map +1 -0
  290. package/resource/edit/edit.component.d.ts +18 -0
  291. package/resource/edit/edit.component.d.ts.map +1 -0
  292. package/resource/formio-angular-resource.d.ts +5 -0
  293. package/resource/formio-angular-resource.d.ts.map +1 -0
  294. package/resource/formio-angular-resource.metadata.json +1 -0
  295. package/resource/index/index.component.d.ts +20 -0
  296. package/resource/index/index.component.d.ts.map +1 -0
  297. package/resource/index.d.ts +12 -0
  298. package/resource/index.d.ts.map +1 -0
  299. package/resource/package.json +11 -0
  300. package/resource/public_api.d.ts +2 -0
  301. package/resource/public_api.d.ts.map +1 -0
  302. package/resource/resource.component.d.ts +19 -0
  303. package/resource/resource.component.d.ts.map +1 -0
  304. package/resource/resource.config.d.ts +14 -0
  305. package/resource/resource.config.d.ts.map +1 -0
  306. package/resource/resource.module.d.ts +6 -0
  307. package/resource/resource.module.d.ts.map +1 -0
  308. package/resource/resource.routes.d.ts +4 -0
  309. package/resource/resource.routes.d.ts.map +1 -0
  310. package/resource/resource.service.d.ts +46 -0
  311. package/resource/resource.service.d.ts.map +1 -0
  312. package/resource/resources.service.d.ts +13 -0
  313. package/resource/resources.service.d.ts.map +1 -0
  314. package/resource/view/view.component.d.ts +13 -0
  315. package/resource/view/view.component.d.ts.map +1 -0
  316. package/types/alerts-position.d.ts +7 -0
  317. package/types/alerts-position.d.ts.map +1 -0
  318. package/types/formio-metadata.d.ts +11 -0
  319. package/types/formio-metadata.d.ts.map +1 -0
  320. package/types/formio-submission.d.ts +19 -0
  321. package/types/formio-submission.d.ts.map +1 -0
@@ -0,0 +1,187 @@
1
+ import { ApplicationRef, EventEmitter, Injectable, Optional } from '@angular/core';
2
+ import { FormioResourceConfig } from './resource.config';
3
+ import { FormioResources } from './resources.service';
4
+ import { FormioPromiseService } from '@formio/angular';
5
+ import { FormioAlerts } from '@formio/angular';
6
+ import { FormioAppConfig } from '@formio/angular';
7
+ import Promise from 'native-promise-only';
8
+ import { Formio, Utils } from 'formiojs';
9
+ import _ from 'lodash';
10
+ export class FormioResourceService {
11
+ constructor(appConfig, config, resourcesService, appRef) {
12
+ this.appConfig = appConfig;
13
+ this.config = config;
14
+ this.resourcesService = resourcesService;
15
+ this.appRef = appRef;
16
+ this.initialized = false;
17
+ this.isLoading = true;
18
+ this.alerts = new FormioAlerts();
19
+ this.refresh = new EventEmitter();
20
+ this.formLoaded = new Promise((resolve, reject) => {
21
+ this.formResolve = resolve;
22
+ this.formReject = reject;
23
+ });
24
+ this.init();
25
+ }
26
+ initialize() {
27
+ console.warn('FormioResourceService.initialize() has been deprecated.');
28
+ }
29
+ init() {
30
+ if (this.initialized) {
31
+ return;
32
+ }
33
+ this.initialized = true;
34
+ if (this.appConfig && this.appConfig.appUrl) {
35
+ Formio.setBaseUrl(this.appConfig.apiUrl);
36
+ Formio.setProjectUrl(this.appConfig.appUrl);
37
+ Formio.formOnly = this.appConfig.formOnly;
38
+ }
39
+ else {
40
+ console.error('You must provide an AppConfig within your application!');
41
+ }
42
+ // Create the form url and load the resources.
43
+ this.formUrl = this.appConfig.appUrl + '/' + this.config.form;
44
+ this.resource = { data: {} };
45
+ // Add this resource service to the list of all resources in context.
46
+ if (this.resourcesService) {
47
+ this.resources = this.resourcesService.resources;
48
+ this.resources[this.config.name] = this;
49
+ }
50
+ return this.loadForm();
51
+ }
52
+ onError(error) {
53
+ this.alerts.setAlert({
54
+ type: 'danger',
55
+ message: error.message || error
56
+ });
57
+ if (this.resourcesService) {
58
+ this.resourcesService.error.emit(error);
59
+ }
60
+ throw error;
61
+ }
62
+ onFormError(err) {
63
+ this.formReject(err);
64
+ this.onError(err);
65
+ }
66
+ setContext(route) {
67
+ this.resourceId = route.snapshot.params['id'];
68
+ this.resource = { data: {} };
69
+ this.resourceUrl = this.appConfig.appUrl + '/' + this.config.form;
70
+ if (this.resourceId) {
71
+ this.resourceUrl += '/submission/' + this.resourceId;
72
+ }
73
+ this.formio = new FormioPromiseService(this.resourceUrl);
74
+ if (this.resourcesService) {
75
+ this.resources[this.config.name] = this;
76
+ }
77
+ this.loadParents();
78
+ }
79
+ loadForm() {
80
+ this.formFormio = new FormioPromiseService(this.formUrl);
81
+ this.isLoading = true;
82
+ this.formLoading = this.formFormio
83
+ .loadForm()
84
+ .then((form) => {
85
+ this.form = form;
86
+ this.formResolve(form);
87
+ this.isLoading = false;
88
+ this.loadParents();
89
+ return form;
90
+ }, (err) => this.onFormError(err))
91
+ .catch((err) => this.onFormError(err));
92
+ return this.formLoading;
93
+ }
94
+ loadParents() {
95
+ if (!this.config.parents || !this.config.parents.length) {
96
+ return Promise.resolve([]);
97
+ }
98
+ if (!this.resourcesService) {
99
+ console.warn('You must provide the FormioResources within your application to use nested resources.');
100
+ return Promise.resolve([]);
101
+ }
102
+ return this.formLoading.then((form) => {
103
+ // Iterate through the list of parents.
104
+ const _parentsLoaded = [];
105
+ this.config.parents.forEach((parent) => {
106
+ const resourceName = parent.resource || parent;
107
+ const resourceField = parent.field || parent;
108
+ const filterResource = parent.hasOwnProperty('filter') ? parent.filter : true;
109
+ if (this.resources.hasOwnProperty(resourceName) && this.resources[resourceName].resourceLoaded) {
110
+ _parentsLoaded.push(this.resources[resourceName].resourceLoaded.then((resource) => {
111
+ let parentPath = '';
112
+ Utils.eachComponent(form.components, (component, path) => {
113
+ if (component.key === resourceField) {
114
+ component.hidden = true;
115
+ component.clearOnHide = false;
116
+ _.set(this.resource.data, path, resource);
117
+ parentPath = path;
118
+ return true;
119
+ }
120
+ });
121
+ return {
122
+ name: parentPath,
123
+ filter: filterResource,
124
+ resource
125
+ };
126
+ }));
127
+ }
128
+ });
129
+ // When all the parents have loaded, emit that to the onParents emitter.
130
+ return Promise.all(_parentsLoaded).then((parents) => {
131
+ this.refresh.emit({
132
+ form: form,
133
+ submission: this.resource
134
+ });
135
+ return parents;
136
+ });
137
+ });
138
+ }
139
+ onSubmissionError(err) {
140
+ this.onError(err);
141
+ }
142
+ loadResource(route) {
143
+ this.setContext(route);
144
+ this.isLoading = true;
145
+ this.resourceLoading = this.resourceLoaded = this.formio
146
+ .loadSubmission(null, { ignoreCache: true })
147
+ .then((resource) => {
148
+ this.resource = resource;
149
+ this.isLoading = false;
150
+ this.refresh.emit({
151
+ property: 'submission',
152
+ value: this.resource
153
+ });
154
+ return resource;
155
+ }, (err) => this.onSubmissionError(err))
156
+ .catch((err) => this.onSubmissionError(err));
157
+ return this.resourceLoading;
158
+ }
159
+ save(resource) {
160
+ const formio = resource._id ? this.formio : this.formFormio;
161
+ return formio
162
+ .saveSubmission(resource)
163
+ .then((saved) => {
164
+ this.resource = saved;
165
+ return saved;
166
+ }, (err) => this.onError(err))
167
+ .catch((err) => this.onError(err));
168
+ }
169
+ remove() {
170
+ return this.formio
171
+ .deleteSubmission()
172
+ .then(() => {
173
+ this.resource = null;
174
+ }, (err) => this.onError(err))
175
+ .catch((err) => this.onError(err));
176
+ }
177
+ }
178
+ FormioResourceService.decorators = [
179
+ { type: Injectable }
180
+ ];
181
+ FormioResourceService.ctorParameters = () => [
182
+ { type: FormioAppConfig },
183
+ { type: FormioResourceConfig },
184
+ { type: FormioResources, decorators: [{ type: Optional }] },
185
+ { type: ApplicationRef }
186
+ ];
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL3Jlc291cmNlL3NyYy9yZXNvdXJjZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEQsT0FBTyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBR3ZCLE1BQU0sT0FBTyxxQkFBcUI7SUFzQmhDLFlBQ1MsU0FBMEIsRUFDMUIsTUFBNEIsRUFDaEIsZ0JBQWlDLEVBQzdDLE1BQXNCO1FBSHRCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBQ2hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDN0MsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUF6QnhCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBMkJ6QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJ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QkFBZ0IsRUFBRTthQUNsQixJQUFJLENBQ0gsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDdkIsQ0FBQyxFQUNELENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUNoQzthQUNBLEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7OztZQTFORixVQUFVOzs7WUFORixlQUFlO1lBSmYsb0JBQW9CO1lBQ3BCLGVBQWUsdUJBbUNuQixRQUFRO1lBdENKLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRm9ybWlvUmVzb3VyY2VDb25maWcgfSBmcm9tICcuL3Jlc291cmNlLmNvbmZpZyc7XG5pbXBvcnQgeyBGb3JtaW9SZXNvdXJjZXMgfSBmcm9tICcuL3Jlc291cmNlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1pb1Byb21pc2VTZXJ2aWNlIH0gZnJvbSAnQGZvcm1pby9hbmd1bGFyJztcbmltcG9ydCB7IEZvcm1pb0FsZXJ0cyB9IGZyb20gJ0Bmb3JtaW8vYW5ndWxhcic7XG5pbXBvcnQgeyBGb3JtaW9BcHBDb25maWcgfSBmcm9tICdAZm9ybWlvL2FuZ3VsYXInO1xuaW1wb3J0IHsgRm9ybWlvUmVmcmVzaFZhbHVlIH0gZnJvbSAnQGZvcm1pby9hbmd1bGFyJztcbmltcG9ydCBQcm9taXNlIGZyb20gJ25hdGl2ZS1wcm9taXNlLW9ubHknO1xuaW1wb3J0IHsgRm9ybWlvLCBVdGlscyB9IGZyb20gJ2Zvcm1pb2pzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGb3JtaW9SZXNvdXJjZVNlcnZpY2Uge1xuICBwdWJsaWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHVibGljIGZvcm06IGFueTtcbiAgcHVibGljIGFsZXJ0czogRm9ybWlvQWxlcnRzO1xuICBwdWJsaWMgcmVzb3VyY2U6IGFueTtcbiAgcHVibGljIHJlc291cmNlVXJsPzogc3RyaW5nO1xuICBwdWJsaWMgZm9ybVVybDogc3RyaW5nO1xuICBwdWJsaWMgZm9ybUZvcm1pbzogRm9ybWlvUHJvbWlzZVNlcnZpY2U7XG4gIHB1YmxpYyBmb3JtaW86IEZvcm1pb1Byb21pc2VTZXJ2aWNlO1xuICBwdWJsaWMgcmVmcmVzaDogRXZlbnRFbWl0dGVyPEZvcm1pb1JlZnJlc2hWYWx1ZT47XG5cbiAgcHVibGljIHJlc291cmNlTG9hZGluZz86IFByb21pc2U8YW55PjtcbiAgcHVibGljIHJlc291cmNlTG9hZGVkPzogUHJvbWlzZTxhbnk+O1xuICBwdWJsaWMgcmVzb3VyY2VJZD86IHN0cmluZztcbiAgcHVibGljIHJlc291cmNlczogYW55O1xuXG4gIHB1YmxpYyBmb3JtTG9hZGluZz86IFByb21pc2U8YW55PjtcbiAgcHVibGljIGZvcm1Mb2FkZWQ6IFByb21pc2U8YW55PjtcbiAgcHVibGljIGZvcm1SZXNvbHZlOiBhbnk7XG4gIHB1YmxpYyBmb3JtUmVqZWN0OiBhbnk7XG4gIHB1YmxpYyBpc0xvYWRpbmc6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFwcENvbmZpZzogRm9ybWlvQXBwQ29uZmlnLFxuICAgIHB1YmxpYyBjb25maWc6IEZvcm1pb1Jlc291cmNlQ29uZmlnLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyByZXNvdXJjZXNTZXJ2aWNlOiBGb3JtaW9SZXNvdXJjZXMsXG4gICAgcHVibGljIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmFsZXJ0cyA9IG5ldyBGb3JtaW9BbGVydHMoKTtcbiAgICB0aGlzLnJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5mb3JtTG9hZGVkID0gbmV3IFByb21pc2UoKHJlc29sdmU6IGFueSwgcmVqZWN0OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZm9ybVJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgdGhpcy5mb3JtUmVqZWN0ID0gcmVqZWN0O1xuICAgIH0pO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZSgpIHtcbiAgICBjb25zb2xlLndhcm4oJ0Zvcm1pb1Jlc291cmNlU2VydmljZS5pbml0aWFsaXplKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4nKTtcbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgaWYgKHRoaXMuYXBwQ29uZmlnICYmIHRoaXMuYXBwQ29uZmlnLmFwcFVybCkge1xuICAgICAgRm9ybWlvLnNldEJhc2VVcmwodGhpcy5hcHBDb25maWcuYXBpVXJsKTtcbiAgICAgIEZvcm1pby5zZXRQcm9qZWN0VXJsKHRoaXMuYXBwQ29uZmlnLmFwcFVybCk7XG4gICAgICBGb3JtaW8uZm9ybU9ubHkgPSB0aGlzLmFwcENvbmZpZy5mb3JtT25seTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignWW91IG11c3QgcHJvdmlkZSBhbiBBcHBDb25maWcgd2l0aGluIHlvdXIgYXBwbGljYXRpb24hJyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBmb3JtIHVybCBhbmQgbG9hZCB0aGUgcmVzb3VyY2VzLlxuICAgIHRoaXMuZm9ybVVybCA9IHRoaXMuYXBwQ29uZmlnLmFwcFVybCArICcvJyArIHRoaXMuY29uZmlnLmZvcm07XG4gICAgdGhpcy5yZXNvdXJjZSA9IHsgZGF0YToge30gfTtcblxuICAgIC8vIEFkZCB0aGlzIHJlc291cmNlIHNlcnZpY2UgdG8gdGhlIGxpc3Qgb2YgYWxsIHJlc291cmNlcyBpbiBjb250ZXh0LlxuICAgIGlmICh0aGlzLnJlc291cmNlc1NlcnZpY2UpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VzID0gdGhpcy5yZXNvdXJjZXNTZXJ2aWNlLnJlc291cmNlcztcbiAgICAgIHRoaXMucmVzb3VyY2VzW3RoaXMuY29uZmlnLm5hbWVdID0gdGhpcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sb2FkRm9ybSgpO1xuICB9XG5cbiAgb25FcnJvcihlcnJvcjogYW55KSB7XG4gICAgdGhpcy5hbGVydHMuc2V0QWxlcnQoe1xuICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlIHx8IGVycm9yXG4gICAgfSk7XG4gICAgaWYgKHRoaXMucmVzb3VyY2VzU2VydmljZSkge1xuICAgICAgdGhpcy5yZXNvdXJjZXNTZXJ2aWNlLmVycm9yLmVtaXQoZXJyb3IpO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIG9uRm9ybUVycm9yKGVycjogYW55KSB7XG4gICAgdGhpcy5mb3JtUmVqZWN0KGVycik7XG4gICAgdGhpcy5vbkVycm9yKGVycik7XG4gIH1cblxuICBzZXRDb250ZXh0KHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xuICAgIHRoaXMucmVzb3VyY2VJZCA9IHJvdXRlLnNuYXBzaG90LnBhcmFtc1snaWQnXTtcbiAgICB0aGlzLnJlc291cmNlID0geyBkYXRhOiB7fSB9O1xuICAgIHRoaXMucmVzb3VyY2VVcmwgPSB0aGlzLmFwcENvbmZpZy5hcHBVcmwgKyAnLycgKyB0aGlzLmNvbmZpZy5mb3JtO1xuICAgIGlmICh0aGlzLnJlc291cmNlSWQpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VVcmwgKz0gJy9zdWJtaXNzaW9uLycgKyB0aGlzLnJlc291cmNlSWQ7XG4gICAgfVxuICAgIHRoaXMuZm9ybWlvID0gbmV3IEZvcm1pb1Byb21pc2VTZXJ2aWNlKHRoaXMucmVzb3VyY2VVcmwpO1xuICAgIGlmICh0aGlzLnJlc291cmNlc1NlcnZpY2UpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VzW3RoaXMuY29uZmlnLm5hbWVdID0gdGhpcztcbiAgICB9XG4gICAgdGhpcy5sb2FkUGFyZW50cygpO1xuICB9XG5cbiAgbG9hZEZvcm0oKSB7XG4gICAgdGhpcy5mb3JtRm9ybWlvID0gbmV3IEZvcm1pb1Byb21pc2VTZXJ2aWNlKHRoaXMuZm9ybVVybCk7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuZm9ybUxvYWRpbmcgPSB0aGlzLmZvcm1Gb3JtaW9cbiAgICAgIC5sb2FkRm9ybSgpXG4gICAgICAudGhlbihcbiAgICAgICAgKGZvcm06IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZm9ybSA9IGZvcm07XG4gICAgICAgICAgdGhpcy5mb3JtUmVzb2x2ZShmb3JtKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMubG9hZFBhcmVudHMoKTtcbiAgICAgICAgICByZXR1cm4gZm9ybTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycjogYW55KSA9PiB0aGlzLm9uRm9ybUVycm9yKGVycilcbiAgICAgIClcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHRoaXMub25Gb3JtRXJyb3IoZXJyKSk7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUxvYWRpbmc7XG4gIH1cblxuICBsb2FkUGFyZW50cygpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLnBhcmVudHMgfHwgIXRoaXMuY29uZmlnLnBhcmVudHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnJlc291cmNlc1NlcnZpY2UpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1lvdSBtdXN0IHByb3ZpZGUgdGhlIEZvcm1pb1Jlc291cmNlcyB3aXRoaW4geW91ciBhcHBsaWNhdGlvbiB0byB1c2UgbmVzdGVkIHJlc291cmNlcy4nXG4gICAgICApO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZvcm1Mb2FkaW5nLnRoZW4oKGZvcm0pID0+IHtcbiAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgbGlzdCBvZiBwYXJlbnRzLlxuICAgICAgY29uc3QgX3BhcmVudHNMb2FkZWQ6IEFycmF5PFByb21pc2U8YW55Pj4gPSBbXTtcbiAgICAgIHRoaXMuY29uZmlnLnBhcmVudHMuZm9yRWFjaCgocGFyZW50OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2VOYW1lID0gcGFyZW50LnJlc291cmNlIHx8IHBhcmVudDtcbiAgICAgICAgY29uc3QgcmVzb3VyY2VGaWVsZCA9IHBhcmVudC5maWVsZCB8fCBwYXJlbnQ7XG4gICAgICAgIGNvbnN0IGZpbHRlclJlc291cmNlID0gcGFyZW50Lmhhc093blByb3BlcnR5KCdmaWx0ZXInKSA/IHBhcmVudC5maWx0ZXIgOiB0cnVlO1xuICAgICAgICBpZiAodGhpcy5yZXNvdXJjZXMuaGFzT3duUHJvcGVydHkocmVzb3VyY2VOYW1lKSAmJiB0aGlzLnJlc291cmNlc1tyZXNvdXJjZU5hbWVdLnJlc291cmNlTG9hZGVkKSB7XG4gICAgICAgICAgX3BhcmVudHNMb2FkZWQucHVzaChcbiAgICAgICAgICAgIHRoaXMucmVzb3VyY2VzW3Jlc291cmNlTmFtZV0ucmVzb3VyY2VMb2FkZWQudGhlbigocmVzb3VyY2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBsZXQgcGFyZW50UGF0aCA9ICcnO1xuICAgICAgICAgICAgICBVdGlscy5lYWNoQ29tcG9uZW50KGZvcm0uY29tcG9uZW50cywgKGNvbXBvbmVudCwgcGF0aCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQua2V5ID09PSByZXNvdXJjZUZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICBjb21wb25lbnQuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5jbGVhck9uSGlkZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgXy5zZXQodGhpcy5yZXNvdXJjZS5kYXRhLCBwYXRoLCByZXNvdXJjZSk7XG4gICAgICAgICAgICAgICAgICBwYXJlbnRQYXRoID0gcGF0aDtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbmFtZTogcGFyZW50UGF0aCxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlclJlc291cmNlLFxuICAgICAgICAgICAgICAgIHJlc291cmNlXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBXaGVuIGFsbCB0aGUgcGFyZW50cyBoYXZlIGxvYWRlZCwgZW1pdCB0aGF0IHRvIHRoZSBvblBhcmVudHMgZW1pdHRlci5cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChfcGFyZW50c0xvYWRlZCkudGhlbigocGFyZW50czogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucmVmcmVzaC5lbWl0KHtcbiAgICAgICAgICBmb3JtOiBmb3JtLFxuICAgICAgICAgIHN1Ym1pc3Npb246IHRoaXMucmVzb3VyY2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXJlbnRzO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBvblN1Ym1pc3Npb25FcnJvcihlcnI6IGFueSkge1xuICAgIHRoaXMub25FcnJvcihlcnIpO1xuICB9XG5cbiAgbG9hZFJlc291cmNlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xuICAgIHRoaXMuc2V0Q29udGV4dChyb3V0ZSk7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMucmVzb3VyY2VMb2FkaW5nID0gdGhpcy5yZXNvdXJjZUxvYWRlZCA9IHRoaXMuZm9ybWlvXG4gICAgICAubG9hZFN1Ym1pc3Npb24obnVsbCwge2lnbm9yZUNhY2hlOiB0cnVlfSlcbiAgICAgIC50aGVuKFxuICAgICAgICAocmVzb3VyY2U6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMucmVzb3VyY2UgPSByZXNvdXJjZTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucmVmcmVzaC5lbWl0KHtcbiAgICAgICAgICAgIHByb3BlcnR5OiAnc3VibWlzc2lvbicsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5yZXNvdXJjZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXNvdXJjZTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycjogYW55KSA9PiB0aGlzLm9uU3VibWlzc2lvbkVycm9yKGVycilcbiAgICAgIClcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHRoaXMub25TdWJtaXNzaW9uRXJyb3IoZXJyKSk7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VMb2FkaW5nO1xuICB9XG5cbiAgc2F2ZShyZXNvdXJjZTogYW55KSB7XG4gICAgY29uc3QgZm9ybWlvID0gcmVzb3VyY2UuX2lkID8gdGhpcy5mb3JtaW8gOiB0aGlzLmZvcm1Gb3JtaW87XG4gICAgcmV0dXJuIGZvcm1pb1xuICAgICAgLnNhdmVTdWJtaXNzaW9uKHJlc291cmNlKVxuICAgICAgLnRoZW4oXG4gICAgICAgIChzYXZlZDogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXNvdXJjZSA9IHNhdmVkO1xuICAgICAgICAgIHJldHVybiBzYXZlZDtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycjogYW55KSA9PiB0aGlzLm9uRXJyb3IoZXJyKVxuICAgICAgKVxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4gdGhpcy5vbkVycm9yKGVycikpO1xuICB9XG5cbiAgcmVtb3ZlKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1pb1xuICAgICAgLmRlbGV0ZVN1Ym1pc3Npb24oKVxuICAgICAgLnRoZW4oXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLnJlc291cmNlID0gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycjogYW55KSA9PiB0aGlzLm9uRXJyb3IoZXJyKVxuICAgICAgKVxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4gdGhpcy5vbkVycm9yKGVycikpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,22 @@
1
+ import { Injectable, EventEmitter } from '@angular/core';
2
+ import { FormioAuthService } from '@formio/angular/auth';
3
+ export class FormioResources {
4
+ constructor(auth) {
5
+ this.auth = auth;
6
+ this.resources = {};
7
+ this.error = new EventEmitter();
8
+ this.onError = this.error;
9
+ this.resources = {
10
+ currentUser: {
11
+ resourceLoaded: this.auth.userReady
12
+ }
13
+ };
14
+ }
15
+ }
16
+ FormioResources.decorators = [
17
+ { type: Injectable }
18
+ ];
19
+ FormioResources.ctorParameters = () => [
20
+ { type: FormioAuthService }
21
+ ];
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWZvcm1pby9yZXNvdXJjZS9zcmMvcmVzb3VyY2VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFPekQsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDUyxJQUF3QjtRQUF4QixTQUFJLEdBQUosSUFBSSxDQUFvQjtRQUpqQyxjQUFTLEdBQXNCLEVBQUUsQ0FBQztRQU1oQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixXQUFXLEVBQUU7Z0JBQ1gsY0FBYyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUzthQUNwQztTQUNGLENBQUM7SUFDSixDQUFDOzs7WUFmRixVQUFVOzs7WUFORixpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1pb0F1dGhTZXJ2aWNlIH0gZnJvbSAnQGZvcm1pby9hbmd1bGFyL2F1dGgnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1pb1Jlc291cmNlTWFwIHtcbiAgW25hbWU6IHN0cmluZ106IGFueTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZvcm1pb1Jlc291cmNlcyB7XG4gIHJlc291cmNlczogRm9ybWlvUmVzb3VyY2VNYXAgPSB7fTtcbiAgZXJyb3I6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBvbkVycm9yOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGF1dGg/OiBGb3JtaW9BdXRoU2VydmljZVxuICApIHtcbiAgICB0aGlzLmVycm9yID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMub25FcnJvciA9IHRoaXMuZXJyb3I7XG4gICAgdGhpcy5yZXNvdXJjZXMgPSB7XG4gICAgICBjdXJyZW50VXNlcjoge1xuICAgICAgICByZXNvdXJjZUxvYWRlZDogdGhpcy5hdXRoLnVzZXJSZWFkeVxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,24 @@
1
+ import { Component } from '@angular/core';
2
+ import { FormioResourceService } from '../resource.service';
3
+ import { FormioResourceConfig } from '../resource.config';
4
+ import { Formio } from 'formiojs';
5
+ export class FormioResourceViewComponent {
6
+ constructor(service, config) {
7
+ this.service = service;
8
+ this.config = config;
9
+ this.submission = { data: {} };
10
+ }
11
+ ngOnDestroy() {
12
+ Formio.clearCache();
13
+ }
14
+ }
15
+ FormioResourceViewComponent.decorators = [
16
+ { type: Component, args: [{
17
+ template: "<formio\n [form]=\"service.form\"\n [submission]=\"service.resource\"\n [hideComponents]=\"config.parents\"\n [readOnly]=\"true\"\n></formio>\n"
18
+ },] }
19
+ ];
20
+ FormioResourceViewComponent.ctorParameters = () => [
21
+ { type: FormioResourceService },
22
+ { type: FormioResourceConfig }
23
+ ];
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWZvcm1pby9yZXNvdXJjZS9zcmMvdmlldy92aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFLaEMsTUFBTSxPQUFPLDJCQUEyQjtJQUN0QyxZQUNTLE9BQThCLEVBQzlCLE1BQTRCO1FBRDVCLFlBQU8sR0FBUCxPQUFPLENBQXVCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBRTlCLGVBQVUsR0FBRyxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsQ0FBQztJQUQ1QixDQUFDO0lBR0osV0FBVztRQUNULE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs7WUFaRixTQUFTLFNBQUM7Z0JBQ1QsK0pBQW9DO2FBQ3JDOzs7WUFOUSxxQkFBcUI7WUFDckIsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtaW9SZXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi9yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1pb1Jlc291cmNlQ29uZmlnIH0gZnJvbSAnLi4vcmVzb3VyY2UuY29uZmlnJztcbmltcG9ydCB7Rm9ybWlvfSBmcm9tICdmb3JtaW9qcyc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vdmlldy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWlvUmVzb3VyY2VWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95e1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc2VydmljZTogRm9ybWlvUmVzb3VyY2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb25maWc6IEZvcm1pb1Jlc291cmNlQ29uZmlnXG4gICkge31cbiAgcHVibGljIHN1Ym1pc3Npb24gPSB7ZGF0YToge319O1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIEZvcm1pby5jbGVhckNhY2hlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ export var AlertsPosition;
2
+ (function (AlertsPosition) {
3
+ AlertsPosition[AlertsPosition["none"] = 0] = "none";
4
+ AlertsPosition[AlertsPosition["top"] = 1] = "top";
5
+ AlertsPosition[AlertsPosition["bottom"] = 2] = "bottom";
6
+ AlertsPosition[AlertsPosition["both"] = 3] = "both";
7
+ })(AlertsPosition || (AlertsPosition = {}));
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnRzLXBvc2l0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1mb3JtaW8vc3JjL3R5cGVzL2FsZXJ0cy1wb3NpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxjQUtYO0FBTEQsV0FBWSxjQUFjO0lBQ3hCLG1EQUFJLENBQUE7SUFDSixpREFBRyxDQUFBO0lBQ0gsdURBQU0sQ0FBQTtJQUNOLG1EQUFJLENBQUE7QUFDTixDQUFDLEVBTFcsY0FBYyxLQUFkLGNBQWMsUUFLekIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBBbGVydHNQb3NpdGlvbiB7XG4gIG5vbmUsXG4gIHRvcCxcbiAgYm90dG9tLFxuICBib3RoXG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWlvLW1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1mb3JtaW8vc3JjL3R5cGVzL2Zvcm1pby1tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgaW50ZXJmYWNlIEZvcm1pb01ldGFkYXRhIHtcbiAgdGltZXpvbmU/OiBzdHJpbmc7XG4gIG9mZnNldD86IG51bWJlcjtcbiAgb3JpZ2luPzogc3RyaW5nO1xuICByZWZlcnJlcj86IHN0cmluZztcbiAgYnJvd3Nlck5hbWU/OiBzdHJpbmc7XG4gIHVzZXJBZ2VudD86IHN0cmluZztcbiAgcGF0aE5hbWU/OiBzdHJpbmc7XG4gIG9uTGluZT86IGJvb2xlYW47XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export var FormioSubmissionState;
2
+ (function (FormioSubmissionState) {
3
+ FormioSubmissionState["draft"] = "draft";
4
+ FormioSubmissionState["submitted"] = "submitted";
5
+ })(FormioSubmissionState || (FormioSubmissionState = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWlvLXN1Ym1pc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWZvcm1pby9zcmMvdHlwZXMvZm9ybWlvLXN1Ym1pc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JBLE1BQU0sQ0FBTixJQUFZLHFCQUdYO0FBSEQsV0FBWSxxQkFBcUI7SUFDL0Isd0NBQWUsQ0FBQTtJQUNmLGdEQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFIVyxxQkFBcUIsS0FBckIscUJBQXFCLFFBR2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZvcm1pb01ldGFkYXRhIGZyb20gJy4vZm9ybWlvLW1ldGFkYXRhJztcblxuZXhwb3J0IGRlZmF1bHQgaW50ZXJmYWNlIEZvcm1pb1N1Ym1pc3Npb248VCA9IGFueSwgc3RhdGVUeXBlPSBGb3JtaW9TdWJtaXNzaW9uU3RhdGUgPiB7XG4gIF9pZD86IHN0cmluZztcbiAgY3JlYXRlZD86IHN0cmluZztcbiAgZGF0YT86IFQ7XG4gIGZvcm0/OiBzdHJpbmc7XG4gIG1ldGFkYXRhPzogRm9ybWlvTWV0YWRhdGE7XG4gIG1vZGlmaWVkPzogc3RyaW5nO1xuICBvd25lcj86IHN0cmluZztcbiAgcHJvamVjdD86IHN0cmluZztcbiAgc3RhdGU/OiBzdGF0ZVR5cGU7XG4gIF9mdmlkPzogbnVtYmVyO1xuICBfdmlkPzogbnVtYmVyO1xufVxuXG5leHBvcnQgZW51bSBGb3JtaW9TdWJtaXNzaW9uU3RhdGUgIHtcbiAgZHJhZnQgPSAnZHJhZnQnLFxuICBzdWJtaXR0ZWQgPSAnc3VibWl0dGVkJ1xufVxuIl19
@@ -0,0 +1,285 @@
1
+ import { Injectable, EventEmitter, Component, NgModule } from '@angular/core';
2
+ import { FormioAppConfig, extendRouter, FormioModule } from '@formio/angular';
3
+ import { get, each } from 'lodash';
4
+ import { Formio } from 'formiojs';
5
+ import { CommonModule } from '@angular/common';
6
+ import { RouterModule } from '@angular/router';
7
+
8
+ class FormioAuthConfig {
9
+ }
10
+ FormioAuthConfig.decorators = [
11
+ { type: Injectable }
12
+ ];
13
+ var FormioOauthType;
14
+ (function (FormioOauthType) {
15
+ FormioOauthType["okta"] = "okta";
16
+ FormioOauthType["saml"] = "saml";
17
+ })(FormioOauthType || (FormioOauthType = {}));
18
+
19
+ class FormioAuthService {
20
+ constructor(appConfig, config) {
21
+ this.appConfig = appConfig;
22
+ this.config = config;
23
+ this.authenticated = false;
24
+ this.formAccess = {};
25
+ this.submissionAccess = {};
26
+ this.is = {};
27
+ this.user = null;
28
+ if (this.appConfig && this.appConfig.appUrl) {
29
+ Formio.setBaseUrl(this.appConfig.apiUrl);
30
+ Formio.setProjectUrl(this.appConfig.appUrl);
31
+ Formio.formOnly = !!this.appConfig.formOnly;
32
+ }
33
+ else {
34
+ console.error('You must provide an AppConfig within your application!');
35
+ }
36
+ this.loginForm =
37
+ this.appConfig.appUrl +
38
+ '/' +
39
+ get(this.config, 'login.form', 'user/login');
40
+ this.registerForm =
41
+ this.appConfig.appUrl +
42
+ '/' +
43
+ get(this.config, 'register.form', 'user/register');
44
+ this.resetPassForm =
45
+ this.appConfig.appUrl +
46
+ '/' +
47
+ get(this.config, 'register.form', 'resetpass');
48
+ this.onLogin = new EventEmitter();
49
+ this.onLogout = new EventEmitter();
50
+ this.onRegister = new EventEmitter();
51
+ this.onUser = new EventEmitter();
52
+ this.onError = new EventEmitter();
53
+ this.ready = new Promise((resolve, reject) => {
54
+ this.readyResolve = resolve;
55
+ this.readyReject = reject;
56
+ });
57
+ // Register for the core events.
58
+ Formio.events.on('formio.badToken', () => this.logoutError());
59
+ Formio.events.on('formio.sessionExpired', () => this.logoutError());
60
+ if (!this.config.delayAuth) {
61
+ this.init();
62
+ }
63
+ }
64
+ onLoginSubmit(submission) {
65
+ this.setUser(submission);
66
+ this.onLogin.emit(submission);
67
+ }
68
+ onRegisterSubmit(submission) {
69
+ this.setUser(submission);
70
+ this.onRegister.emit(submission);
71
+ }
72
+ onResetPassSubmit(submission) {
73
+ this.onResetPass.emit(submission);
74
+ }
75
+ init() {
76
+ this.projectReady = Formio.makeStaticRequest(this.appConfig.appUrl).then((project) => {
77
+ each(project.access, (access) => {
78
+ this.formAccess[access.type] = access.roles;
79
+ });
80
+ }, () => {
81
+ this.formAccess = {};
82
+ return null;
83
+ });
84
+ // Get the access for this project.
85
+ this.accessReady = Formio.makeStaticRequest(this.appConfig.appUrl + '/access').then((access) => {
86
+ each(access.forms, (form) => {
87
+ this.submissionAccess[form.name] = {};
88
+ form.submissionAccess.forEach((subAccess) => {
89
+ this.submissionAccess[form.name][subAccess.type] = subAccess.roles;
90
+ });
91
+ });
92
+ this.roles = access.roles;
93
+ return access;
94
+ }, () => {
95
+ this.roles = {};
96
+ return null;
97
+ });
98
+ let currentUserPromise;
99
+ if (this.config.oauth) {
100
+ // Make a fix to the hash to remove starting "/" that angular might put there.
101
+ if (window.location.hash && window.location.hash.match(/^#\/access_token/)) {
102
+ history.pushState(null, null, window.location.hash.replace(/^#\/access_token/, '#access_token'));
103
+ }
104
+ // Initiate the SSO if they provide oauth settings.
105
+ currentUserPromise = Formio.ssoInit(this.config.oauth.type, this.config.oauth.options);
106
+ }
107
+ else {
108
+ currentUserPromise = Formio.currentUser();
109
+ }
110
+ this.userReady = currentUserPromise.then((user) => {
111
+ this.setUser(user);
112
+ return user;
113
+ });
114
+ // Trigger we are redy when all promises have resolved.
115
+ if (this.accessReady) {
116
+ this.accessReady
117
+ .then(() => this.projectReady)
118
+ .then(() => this.userReady)
119
+ .then(() => this.readyResolve(true))
120
+ .catch((err) => this.readyReject(err));
121
+ }
122
+ }
123
+ setUser(user) {
124
+ const namespace = Formio.namespace || 'formio';
125
+ if (user) {
126
+ this.user = user;
127
+ localStorage.setItem(`${namespace}AppUser`, JSON.stringify(user));
128
+ this.setUserRoles();
129
+ }
130
+ else {
131
+ this.user = null;
132
+ this.is = {};
133
+ localStorage.removeItem(`${namespace}AppUser`);
134
+ Formio.clearCache();
135
+ Formio.setUser(null);
136
+ }
137
+ this.authenticated = !!Formio.getToken();
138
+ this.onUser.emit(this.user);
139
+ }
140
+ setUserRoles() {
141
+ if (this.accessReady) {
142
+ this.accessReady.then(() => {
143
+ each(this.roles, (role, roleName) => {
144
+ if (this.user.roles.indexOf(role._id) !== -1) {
145
+ this.is[roleName] = true;
146
+ }
147
+ });
148
+ });
149
+ }
150
+ }
151
+ logoutError() {
152
+ this.setUser(null);
153
+ const namespace = Formio.namespace || 'formio';
154
+ localStorage.removeItem(`${namespace}Token`);
155
+ this.onError.emit();
156
+ }
157
+ logout() {
158
+ this.setUser(null);
159
+ const namespace = Formio.namespace || 'formio';
160
+ localStorage.removeItem(`${namespace}Token`);
161
+ Formio.logout()
162
+ .then(() => this.onLogout.emit())
163
+ .catch(() => this.logoutError());
164
+ }
165
+ }
166
+ FormioAuthService.decorators = [
167
+ { type: Injectable }
168
+ ];
169
+ FormioAuthService.ctorParameters = () => [
170
+ { type: FormioAppConfig },
171
+ { type: FormioAuthConfig }
172
+ ];
173
+
174
+ class FormioAuthComponent {
175
+ }
176
+ FormioAuthComponent.decorators = [
177
+ { type: Component, args: [{
178
+ template: "<div class=\"card card-primary panel panel-default\">\n <div class=\"card-header panel-heading\">\n <ul class=\"nav nav-tabs card-header-tabs\">\n <li class=\"nav-item\" role=\"presentation\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"login\" routerLinkActive=\"active\">Login</a></li>\n <li class=\"nav-item\" role=\"presentation\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"register\" routerLinkActive=\"active\">Register</a></li>\n <li class=\"nav-item\" role=\"presentation\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"resetpass\" routerLinkActive=\"active\">Reset Password</a></li>\n </ul>\n </div>\n <div class=\"card-body panel-body\">\n <router-outlet></router-outlet>\n </div>\n</div>\n"
179
+ },] }
180
+ ];
181
+
182
+ class FormioAuthLoginComponent {
183
+ constructor(service) {
184
+ this.service = service;
185
+ }
186
+ }
187
+ FormioAuthLoginComponent.decorators = [
188
+ { type: Component, args: [{
189
+ template: "<formio [src]=\"service.loginForm\" (submit)=\"service.onLoginSubmit($event)\"></formio>\n"
190
+ },] }
191
+ ];
192
+ FormioAuthLoginComponent.ctorParameters = () => [
193
+ { type: FormioAuthService }
194
+ ];
195
+
196
+ class FormioAuthRegisterComponent {
197
+ constructor(service) {
198
+ this.service = service;
199
+ }
200
+ }
201
+ FormioAuthRegisterComponent.decorators = [
202
+ { type: Component, args: [{
203
+ template: "<formio [src]=\"service.registerForm\" (submit)=\"service.onRegisterSubmit($event)\"></formio>\n"
204
+ },] }
205
+ ];
206
+ FormioAuthRegisterComponent.ctorParameters = () => [
207
+ { type: FormioAuthService }
208
+ ];
209
+
210
+ class FormioResetPassComponent {
211
+ constructor(service) {
212
+ this.service = service;
213
+ }
214
+ }
215
+ FormioResetPassComponent.decorators = [
216
+ { type: Component, args: [{
217
+ template: "<formio [src]=\"service.resetPassForm\" (submit)=\"service.onResetPassSubmit($event)\"></formio>\n"
218
+ },] }
219
+ ];
220
+ FormioResetPassComponent.ctorParameters = () => [
221
+ { type: FormioAuthService }
222
+ ];
223
+
224
+ function FormioAuthRoutes(config) {
225
+ return [
226
+ {
227
+ path: '',
228
+ component: config && config.auth ? config.auth : FormioAuthComponent,
229
+ children: [
230
+ {
231
+ path: '',
232
+ redirectTo: 'login',
233
+ pathMatch: 'full'
234
+ },
235
+ {
236
+ path: 'login',
237
+ component: config && config.login ? config.login : FormioAuthLoginComponent
238
+ },
239
+ {
240
+ path: 'register',
241
+ component: config && config.register ? config.register : FormioAuthRegisterComponent
242
+ },
243
+ {
244
+ path: 'resetpass',
245
+ component: config && config.resetpass ? config.resetpass : FormioResetPassComponent
246
+ }
247
+ ]
248
+ }
249
+ ];
250
+ }
251
+
252
+ class FormioAuth {
253
+ static forRoot(config) {
254
+ return extendRouter(FormioAuth, config, FormioAuthRoutes);
255
+ }
256
+ static forChild(config) {
257
+ return extendRouter(FormioAuth, config, FormioAuthRoutes);
258
+ }
259
+ }
260
+ FormioAuth.decorators = [
261
+ { type: NgModule, args: [{
262
+ imports: [
263
+ CommonModule,
264
+ FormioModule,
265
+ RouterModule
266
+ ],
267
+ declarations: [
268
+ FormioAuthComponent,
269
+ FormioAuthLoginComponent,
270
+ FormioAuthRegisterComponent,
271
+ FormioResetPassComponent
272
+ ]
273
+ },] }
274
+ ];
275
+
276
+ /*
277
+ * Public API Surface of angular-formio
278
+ */
279
+
280
+ /**
281
+ * Generated bundle index. Do not edit.
282
+ */
283
+
284
+ export { FormioAuth, FormioAuthComponent, FormioAuthConfig, FormioAuthLoginComponent, FormioAuthRegisterComponent, FormioAuthRoutes, FormioAuthService, FormioResetPassComponent };
285
+ //# sourceMappingURL=formio-angular-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formio-angular-auth.js","sources":["../../../projects/angular-formio/auth/src/auth.config.ts","../../../projects/angular-formio/auth/src/auth.service.ts","../../../projects/angular-formio/auth/src/auth.component.ts","../../../projects/angular-formio/auth/src/login/login.component.ts","../../../projects/angular-formio/auth/src/register/register.component.ts","../../../projects/angular-formio/auth/src/resetpass/resetpass.component.ts","../../../projects/angular-formio/auth/src/auth.routes.ts","../../../projects/angular-formio/auth/src/auth.module.ts","../../../projects/angular-formio/auth/src/public_api.ts","../../../projects/angular-formio/auth/src/formio-angular-auth.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nexport interface FormioAuthFormConfig {\n path?: string;\n form?: string;\n component?: any;\n}\n\nexport interface FormioAuthRouteConfig {\n auth?: any;\n login?: any;\n register?: any;\n resetpass?: any;\n}\n\n@Injectable()\nexport class FormioAuthConfig {\n component?: any;\n delayAuth?: any;\n login?: FormioAuthFormConfig;\n register?: FormioAuthFormConfig;\n resetpass?: FormioAuthFormConfig;\n oauth?: FormioOAuthConfig;\n}\n\n\nexport interface FormioOAuthConfig {\n type: FormioOauthType;\n options: FormioOktaConfig | FormioSamlConfig;\n}\n\nexport enum FormioOauthType {\n okta = 'okta',\n saml = 'saml',\n}\n\nexport interface FormioOktaConfig extends OktaConfig {\n formio?: any;\n}\n\nexport interface FormioSamlConfig {\n relay: string;\n}\n\n// for more details about Okta configuration options see https://github.com/okta/okta-auth-js#configuration-reference\nexport interface OktaConfig {\n url?: string;\n tokenManager?: OktaTokenManagerConfig;\n issuer?: string;\n clientId?: string;\n redirectUri?: string;\n postLogoutRedirectUri?: string;\n pkce?: boolean;\n authorizeUrl?: string;\n userinfoUrl?: string;\n tokenUrl?: string;\n ignoreSignature?: boolean;\n maxClockSkew?: number;\n scopes?: string[];\n httpRequestClient?: Function;\n}\n\nexport interface OktaTokenManagerConfig {\n storage?: string | {\n getItem?: Function;\n setItem?: Function;\n };\n secure?: boolean;\n autoRenew?: boolean;\n expireEarlySeconds?: number;\n storageKey?: string;\n}\n","import { EventEmitter, Injectable, Inject } from '@angular/core';\nimport { FormioAuthConfig } from './auth.config';\nimport { FormioAppConfig } from '@formio/angular';\nimport { get, each } from 'lodash';\nimport { Formio } from 'formiojs';\n\n@Injectable()\nexport class FormioAuthService {\n public user: any;\n public authenticated = false;\n\n public loginForm: string;\n public onLogin: EventEmitter<object>;\n public onLogout: EventEmitter<object>;\n\n public registerForm: string;\n public onRegister: EventEmitter<object>;\n public onUser: EventEmitter<object>;\n public onError: EventEmitter<any>;\n\n public resetPassForm: string;\n public onResetPass: EventEmitter<object>;\n\n public ready: Promise<boolean>;\n public readyResolve: any;\n public readyReject: any;\n\n public projectReady?: Promise<any>;\n public accessReady?: Promise<any>;\n public userReady?: Promise<any>;\n public formAccess: any = {};\n public submissionAccess: any = {};\n public roles: any;\n public is: any = {};\n\n constructor(\n public appConfig: FormioAppConfig,\n public config: FormioAuthConfig\n ) {\n this.user = null;\n\n if (this.appConfig && this.appConfig.appUrl) {\n Formio.setBaseUrl(this.appConfig.apiUrl);\n Formio.setProjectUrl(this.appConfig.appUrl);\n Formio.formOnly = !!this.appConfig.formOnly;\n } else {\n console.error('You must provide an AppConfig within your application!');\n }\n\n this.loginForm =\n this.appConfig.appUrl +\n '/' +\n get(this.config, 'login.form', 'user/login');\n this.registerForm =\n this.appConfig.appUrl +\n '/' +\n get(this.config, 'register.form', 'user/register');\n this.resetPassForm =\n this.appConfig.appUrl +\n '/' +\n get(this.config, 'register.form', 'resetpass');\n this.onLogin = new EventEmitter();\n this.onLogout = new EventEmitter();\n this.onRegister = new EventEmitter();\n this.onUser = new EventEmitter();\n this.onError = new EventEmitter();\n\n this.ready = new Promise((resolve: any, reject: any) => {\n this.readyResolve = resolve;\n this.readyReject = reject;\n });\n\n // Register for the core events.\n Formio.events.on('formio.badToken', () => this.logoutError());\n Formio.events.on('formio.sessionExpired', () => this.logoutError());\n if (!this.config.delayAuth) {\n this.init();\n }\n }\n\n onLoginSubmit(submission: object) {\n this.setUser(submission);\n this.onLogin.emit(submission);\n }\n\n onRegisterSubmit(submission: object) {\n this.setUser(submission);\n this.onRegister.emit(submission);\n }\n\n onResetPassSubmit(submission: object) {\n this.onResetPass.emit(submission);\n }\n\n init() {\n this.projectReady = Formio.makeStaticRequest(this.appConfig.appUrl).then(\n (project: any) => {\n each(project.access, (access: any) => {\n this.formAccess[access.type] = access.roles;\n });\n },\n (): any => {\n this.formAccess = {};\n return null;\n }\n );\n\n // Get the access for this project.\n this.accessReady = Formio.makeStaticRequest(\n this.appConfig.appUrl + '/access'\n ).then(\n (access: any) => {\n each(access.forms, (form: any) => {\n this.submissionAccess[form.name] = {};\n form.submissionAccess.forEach((subAccess: any) => {\n this.submissionAccess[form.name][subAccess.type] = subAccess.roles;\n });\n });\n this.roles = access.roles;\n return access;\n },\n (): any => {\n this.roles = {};\n return null;\n }\n );\n\n let currentUserPromise: Promise<any>;\n if (this.config.oauth) {\n // Make a fix to the hash to remove starting \"/\" that angular might put there.\n if (window.location.hash && window.location.hash.match(/^#\\/access_token/)) {\n history.pushState(null, null, window.location.hash.replace(/^#\\/access_token/, '#access_token'));\n }\n\n // Initiate the SSO if they provide oauth settings.\n currentUserPromise = Formio.ssoInit(this.config.oauth.type, this.config.oauth.options);\n } else {\n currentUserPromise = Formio.currentUser();\n }\n\n this.userReady = currentUserPromise.then((user: any) => {\n this.setUser(user);\n return user;\n });\n\n // Trigger we are redy when all promises have resolved.\n if (this.accessReady) {\n this.accessReady\n .then(() => this.projectReady)\n .then(() => this.userReady)\n .then(() => this.readyResolve(true))\n .catch((err: any) => this.readyReject(err));\n }\n }\n\n setUser(user: any) {\n const namespace = Formio.namespace || 'formio';\n if (user) {\n this.user = user;\n localStorage.setItem(`${namespace}AppUser`, JSON.stringify(user));\n this.setUserRoles();\n } else {\n this.user = null;\n this.is = {};\n localStorage.removeItem(`${namespace}AppUser`);\n Formio.clearCache();\n Formio.setUser(null);\n }\n\n this.authenticated = !!Formio.getToken();\n this.onUser.emit(this.user);\n }\n\n setUserRoles() {\n if (this.accessReady) {\n this.accessReady.then(() => {\n each(this.roles, (role: any, roleName: string) => {\n if (this.user.roles.indexOf(role._id) !== -1) {\n this.is[roleName] = true;\n }\n });\n });\n }\n }\n\n logoutError() {\n this.setUser(null);\n const namespace = Formio.namespace || 'formio';\n localStorage.removeItem(`${namespace}Token`);\n this.onError.emit();\n }\n\n logout() {\n this.setUser(null);\n const namespace = Formio.namespace || 'formio';\n localStorage.removeItem(`${namespace}Token`);\n Formio.logout()\n .then(() => this.onLogout.emit())\n .catch(() => this.logoutError());\n }\n}\n","import { Component } from '@angular/core';\n@Component({\n templateUrl: './auth.component.html'\n})\nexport class FormioAuthComponent {}\n","import { Component } from '@angular/core';\nimport { FormioAuthService } from '../auth.service';\n@Component({\n templateUrl: './login.component.html'\n})\nexport class FormioAuthLoginComponent {\n constructor(public service: FormioAuthService) {}\n}\n","import { Component } from '@angular/core';\nimport { FormioAuthService } from '../auth.service';\n@Component({\n templateUrl: './register.component.html'\n})\nexport class FormioAuthRegisterComponent {\n constructor(public service: FormioAuthService) {}\n}\n","import { Component } from '@angular/core';\nimport { FormioAuthService } from '../auth.service';\n@Component({\n templateUrl: './resetpass.component.html'\n})\nexport class FormioResetPassComponent {\n constructor(public service: FormioAuthService) {}\n}\n","import { Routes } from '@angular/router';\nimport { FormioAuthRouteConfig } from './auth.config';\nimport { FormioAuthComponent } from './auth.component';\nimport { FormioAuthLoginComponent } from './login/login.component';\nimport { FormioAuthRegisterComponent } from './register/register.component';\nimport { FormioResetPassComponent } from './resetpass/resetpass.component';\n\nexport function FormioAuthRoutes(config?: FormioAuthRouteConfig): Routes {\n return [\n {\n path: '',\n component: config && config.auth ? config.auth : FormioAuthComponent,\n children: [\n {\n path: '',\n redirectTo: 'login',\n pathMatch: 'full'\n },\n {\n path: 'login',\n component: config && config.login ? config.login : FormioAuthLoginComponent\n },\n {\n path: 'register',\n component: config && config.register ? config.register : FormioAuthRegisterComponent\n },\n {\n path: 'resetpass',\n component: config && config.resetpass ? config.resetpass : FormioResetPassComponent\n }\n ]\n }\n ];\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { FormioModule } from '@formio/angular';\nimport { FormioAuthComponent } from './auth.component';\nimport { FormioAuthLoginComponent } from './login/login.component';\nimport { FormioAuthRegisterComponent } from './register/register.component';\nimport { FormioResetPassComponent } from './resetpass/resetpass.component';\nimport { FormioAuthRouteConfig } from './auth.config';\nimport { FormioAuthRoutes } from './auth.routes';\nimport { extendRouter } from '@formio/angular';\n\n@NgModule({\n imports: [\n CommonModule,\n FormioModule,\n RouterModule\n ],\n declarations: [\n FormioAuthComponent,\n FormioAuthLoginComponent,\n FormioAuthRegisterComponent,\n FormioResetPassComponent\n ]\n})\nexport class FormioAuth {\n static forRoot(config?: FormioAuthRouteConfig): any {\n return extendRouter(FormioAuth, config, FormioAuthRoutes);\n }\n static forChild(config?: FormioAuthRouteConfig): any {\n return extendRouter(FormioAuth, config, FormioAuthRoutes);\n }\n}\n","/*\n * Public API Surface of angular-formio\n */\n\nexport * from './index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}