@eqproject/eqp-dynamic-module 0.0.7 → 0.0.8

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 (194) hide show
  1. package/bundles/eqproject-eqp-dynamic-module.umd.js +3991 -0
  2. package/bundles/eqproject-eqp-dynamic-module.umd.js.map +1 -0
  3. package/bundles/eqproject-eqp-dynamic-module.umd.min.js +17 -0
  4. package/bundles/eqproject-eqp-dynamic-module.umd.min.js.map +1 -0
  5. package/eqproject-eqp-dynamic-module.d.ts +6 -0
  6. package/eqproject-eqp-dynamic-module.metadata.json +1 -0
  7. package/esm2015/eqproject-eqp-dynamic-module.js +7 -0
  8. package/esm2015/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.js +262 -0
  9. package/esm2015/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.js +649 -0
  10. package/esm2015/lib/components/private/add-form-field/add-form-field.component.js +577 -0
  11. package/esm2015/lib/components/private/dynamic-module-field/dynamic-module-field.component.js +127 -0
  12. package/esm2015/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.js +170 -0
  13. package/esm2015/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.js +56 -0
  14. package/esm2015/lib/components/private/field-templates/date-field-template/date-field-template.component.js +71 -0
  15. package/esm2015/lib/components/private/field-templates/image-field-template/image-field-template.component.js +196 -0
  16. package/esm2015/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.js +115 -0
  17. package/esm2015/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.js +71 -0
  18. package/esm2015/lib/components/private/field-templates/text-field-template/text-field-template.component.js +67 -0
  19. package/esm2015/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.js +51 -0
  20. package/esm2015/lib/components/private/form-records/add-form-record/add-form-record.component.js +130 -0
  21. package/esm2015/lib/components/private/form-records/list-form-record/list-form-record.component.js +216 -0
  22. package/esm2015/lib/components/private/spinner/spinner.component.js +23 -0
  23. package/esm2015/lib/eqp-dynamic-module.module.js +69 -0
  24. package/esm2015/lib/interfaces/iBaseFieldComponent.interface.js +1 -0
  25. package/esm2015/lib/interfaces/iRootObject.interface.js +1 -0
  26. package/esm2015/lib/models/baseField.model.js +36 -0
  27. package/esm2015/lib/models/baseObj.model.js +9 -0
  28. package/esm2015/lib/models/context.model.js +8 -0
  29. package/esm2015/lib/models/endPointConfiguration.model.js +23 -0
  30. package/esm2015/lib/models/entity.model.js +7 -0
  31. package/esm2015/lib/models/fields/attachmentField.model.js +22 -0
  32. package/esm2015/lib/models/fields/booleanField.model.js +12 -0
  33. package/esm2015/lib/models/fields/dateField.model.js +11 -0
  34. package/esm2015/lib/models/fields/imageField.model.js +8 -0
  35. package/esm2015/lib/models/fields/listValueField.model.js +14 -0
  36. package/esm2015/lib/models/fields/lookupField.model.js +5 -0
  37. package/esm2015/lib/models/fields/numericField.model.js +5 -0
  38. package/esm2015/lib/models/fields/testareaField.model.js +4 -0
  39. package/esm2015/lib/models/fields/textField.model.js +14 -0
  40. package/esm2015/lib/models/form.model.js +24 -0
  41. package/esm2015/lib/models/record.model.js +8 -0
  42. package/esm2015/lib/modules/material.module.js +108 -0
  43. package/esm2015/lib/services/custom-form-validators.service.js +19 -0
  44. package/esm2015/lib/services/eqp-dynamic-module-dialog.service.js +113 -0
  45. package/esm2015/lib/services/spinner.service.js +43 -0
  46. package/esm2015/lib/services/utilityHelper.services.js +387 -0
  47. package/esm2015/public-api.js +39 -0
  48. package/esm5/eqproject-eqp-dynamic-module.js +7 -0
  49. package/esm5/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.js +269 -0
  50. package/esm5/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.js +664 -0
  51. package/esm5/lib/components/private/add-form-field/add-form-field.component.js +588 -0
  52. package/esm5/lib/components/private/dynamic-module-field/dynamic-module-field.component.js +128 -0
  53. package/esm5/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.js +173 -0
  54. package/esm5/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.js +57 -0
  55. package/esm5/lib/components/private/field-templates/date-field-template/date-field-template.component.js +72 -0
  56. package/esm5/lib/components/private/field-templates/image-field-template/image-field-template.component.js +206 -0
  57. package/esm5/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.js +119 -0
  58. package/esm5/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.js +72 -0
  59. package/esm5/lib/components/private/field-templates/text-field-template/text-field-template.component.js +68 -0
  60. package/esm5/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.js +52 -0
  61. package/esm5/lib/components/private/form-records/add-form-record/add-form-record.component.js +133 -0
  62. package/esm5/lib/components/private/form-records/list-form-record/list-form-record.component.js +220 -0
  63. package/esm5/lib/components/private/spinner/spinner.component.js +24 -0
  64. package/esm5/lib/eqp-dynamic-module.module.js +72 -0
  65. package/esm5/lib/interfaces/iBaseFieldComponent.interface.js +1 -0
  66. package/esm5/lib/interfaces/iRootObject.interface.js +1 -0
  67. package/esm5/lib/models/baseField.model.js +43 -0
  68. package/esm5/lib/models/baseObj.model.js +13 -0
  69. package/esm5/lib/models/context.model.js +14 -0
  70. package/esm5/lib/models/endPointConfiguration.model.js +33 -0
  71. package/esm5/lib/models/entity.model.js +14 -0
  72. package/esm5/lib/models/fields/attachmentField.model.js +29 -0
  73. package/esm5/lib/models/fields/booleanField.model.js +19 -0
  74. package/esm5/lib/models/fields/dateField.model.js +18 -0
  75. package/esm5/lib/models/fields/imageField.model.js +19 -0
  76. package/esm5/lib/models/fields/listValueField.model.js +25 -0
  77. package/esm5/lib/models/fields/lookupField.model.js +12 -0
  78. package/esm5/lib/models/fields/numericField.model.js +12 -0
  79. package/esm5/lib/models/fields/testareaField.model.js +11 -0
  80. package/esm5/lib/models/fields/textField.model.js +21 -0
  81. package/esm5/lib/models/form.model.js +39 -0
  82. package/esm5/lib/models/record.model.js +14 -0
  83. package/esm5/lib/modules/material.module.js +111 -0
  84. package/esm5/lib/services/custom-form-validators.service.js +23 -0
  85. package/esm5/lib/services/eqp-dynamic-module-dialog.service.js +123 -0
  86. package/esm5/lib/services/spinner.service.js +46 -0
  87. package/esm5/lib/services/utilityHelper.services.js +396 -0
  88. package/esm5/public-api.js +39 -0
  89. package/fesm2015/eqproject-eqp-dynamic-module.js +3580 -0
  90. package/fesm2015/eqproject-eqp-dynamic-module.js.map +1 -0
  91. package/fesm5/eqproject-eqp-dynamic-module.js +3766 -0
  92. package/fesm5/eqproject-eqp-dynamic-module.js.map +1 -0
  93. package/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.d.ts +101 -0
  94. package/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.d.ts +235 -0
  95. package/lib/components/private/add-form-field/add-form-field.component.d.ts +199 -0
  96. package/lib/components/private/dynamic-module-field/dynamic-module-field.component.d.ts +55 -0
  97. package/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.d.ts +68 -0
  98. package/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.d.ts +21 -0
  99. package/lib/components/private/field-templates/date-field-template/date-field-template.component.d.ts +27 -0
  100. package/lib/components/private/field-templates/image-field-template/image-field-template.component.d.ts +65 -0
  101. package/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.d.ts +51 -0
  102. package/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.d.ts +26 -0
  103. package/lib/components/private/field-templates/text-field-template/text-field-template.component.d.ts +22 -0
  104. package/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.d.ts +20 -0
  105. package/lib/components/private/form-records/add-form-record/add-form-record.component.d.ts +52 -0
  106. package/lib/components/private/form-records/list-form-record/list-form-record.component.d.ts +64 -0
  107. package/lib/components/private/spinner/spinner.component.d.ts +9 -0
  108. package/lib/eqp-dynamic-module.module.d.ts +2 -0
  109. package/{src/lib/interfaces/iBaseFieldComponent.interface.ts → lib/interfaces/iBaseFieldComponent.interface.d.ts} +1 -1
  110. package/{src/lib/interfaces/iRootObject.interface.ts → lib/interfaces/iRootObject.interface.d.ts} +1 -1
  111. package/{src/lib/models/baseField.model.ts → lib/models/baseField.model.d.ts} +5 -14
  112. package/{src/lib/models/baseObj.model.ts → lib/models/baseObj.model.d.ts} +3 -3
  113. package/lib/models/context.model.d.ts +9 -0
  114. package/{src/lib/models/endPointConfiguration.model.ts → lib/models/endPointConfiguration.model.d.ts} +12 -16
  115. package/{src/lib/models/entity.model.ts → lib/models/entity.model.d.ts} +1 -2
  116. package/lib/models/fields/attachmentField.model.d.ts +17 -0
  117. package/{src/lib/models/fields/booleanField.model.ts → lib/models/fields/booleanField.model.d.ts} +4 -8
  118. package/{src/lib/models/fields/dateField.model.ts → lib/models/fields/dateField.model.d.ts} +3 -5
  119. package/{src/lib/models/fields/imageField.model.ts → lib/models/fields/imageField.model.d.ts} +3 -8
  120. package/{src/lib/models/fields/listValueField.model.ts → lib/models/fields/listValueField.model.d.ts} +8 -13
  121. package/{src/lib/models/fields/lookupField.model.ts → lib/models/fields/lookupField.model.d.ts} +2 -5
  122. package/{src/lib/models/fields/numericField.model.ts → lib/models/fields/numericField.model.d.ts} +2 -3
  123. package/{src/lib/models/fields/testareaField.model.ts → lib/models/fields/testareaField.model.d.ts} +2 -3
  124. package/lib/models/fields/textField.model.d.ts +15 -0
  125. package/{src/lib/models/form.model.ts → lib/models/form.model.d.ts} +12 -25
  126. package/{src/lib/models/record.model.ts → lib/models/record.model.d.ts} +5 -4
  127. package/lib/modules/material.module.d.ts +2 -0
  128. package/lib/services/custom-form-validators.service.d.ts +5 -0
  129. package/lib/services/eqp-dynamic-module-dialog.service.d.ts +34 -0
  130. package/lib/services/spinner.service.d.ts +15 -0
  131. package/lib/services/utilityHelper.services.d.ts +77 -0
  132. package/package.json +41 -31
  133. package/{src/public-api.ts → public-api.d.ts} +0 -3
  134. package/karma.conf.js +0 -32
  135. package/ng-package.json +0 -18
  136. package/src/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.html +0 -10
  137. package/src/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.scss +0 -3
  138. package/src/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.ts +0 -228
  139. package/src/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.html +0 -212
  140. package/src/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.scss +0 -30
  141. package/src/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.ts +0 -692
  142. package/src/lib/components/private/add-form-field/add-form-field.component.html +0 -417
  143. package/src/lib/components/private/add-form-field/add-form-field.component.scss +0 -38
  144. package/src/lib/components/private/add-form-field/add-form-field.component.ts +0 -599
  145. package/src/lib/components/private/dynamic-module-field/dynamic-module-field.component.html +0 -42
  146. package/src/lib/components/private/dynamic-module-field/dynamic-module-field.component.scss +0 -0
  147. package/src/lib/components/private/dynamic-module-field/dynamic-module-field.component.ts +0 -125
  148. package/src/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.html +0 -25
  149. package/src/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.scss +0 -0
  150. package/src/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.ts +0 -172
  151. package/src/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.html +0 -32
  152. package/src/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.scss +0 -0
  153. package/src/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.ts +0 -53
  154. package/src/lib/components/private/field-templates/date-field-template/date-field-template.component.html +0 -6
  155. package/src/lib/components/private/field-templates/date-field-template/date-field-template.component.scss +0 -0
  156. package/src/lib/components/private/field-templates/date-field-template/date-field-template.component.ts +0 -70
  157. package/src/lib/components/private/field-templates/image-field-template/image-field-template.component.html +0 -57
  158. package/src/lib/components/private/field-templates/image-field-template/image-field-template.component.scss +0 -4
  159. package/src/lib/components/private/field-templates/image-field-template/image-field-template.component.ts +0 -203
  160. package/src/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.html +0 -46
  161. package/src/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.scss +0 -13
  162. package/src/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.ts +0 -114
  163. package/src/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.html +0 -6
  164. package/src/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.scss +0 -0
  165. package/src/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.ts +0 -70
  166. package/src/lib/components/private/field-templates/text-field-template/text-field-template.component.html +0 -5
  167. package/src/lib/components/private/field-templates/text-field-template/text-field-template.component.scss +0 -0
  168. package/src/lib/components/private/field-templates/text-field-template/text-field-template.component.ts +0 -65
  169. package/src/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.html +0 -5
  170. package/src/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.scss +0 -0
  171. package/src/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.ts +0 -48
  172. package/src/lib/components/private/form-records/add-form-record/add-form-record.component.html +0 -74
  173. package/src/lib/components/private/form-records/add-form-record/add-form-record.component.scss +0 -0
  174. package/src/lib/components/private/form-records/add-form-record/add-form-record.component.ts +0 -117
  175. package/src/lib/components/private/form-records/list-form-record/list-form-record.component.html +0 -14
  176. package/src/lib/components/private/form-records/list-form-record/list-form-record.component.scss +0 -7
  177. package/src/lib/components/private/form-records/list-form-record/list-form-record.component.ts +0 -213
  178. package/src/lib/components/private/spinner/spinner.component.html +0 -3
  179. package/src/lib/components/private/spinner/spinner.component.scss +0 -100
  180. package/src/lib/components/private/spinner/spinner.component.ts +0 -19
  181. package/src/lib/eqp-dynamic-module.module.ts +0 -65
  182. package/src/lib/models/context.model.ts +0 -10
  183. package/src/lib/models/fields/attachmentField.model.ts +0 -32
  184. package/src/lib/models/fields/textField.model.ts +0 -18
  185. package/src/lib/modules/material.module.ts +0 -104
  186. package/src/lib/services/custom-form-validators.service.ts +0 -21
  187. package/src/lib/services/eqp-dynamic-module-dialog.service.ts +0 -114
  188. package/src/lib/services/spinner.service.ts +0 -40
  189. package/src/lib/services/utilityHelper.services.ts +0 -413
  190. package/src/test.ts +0 -26
  191. package/tsconfig.lib.json +0 -23
  192. package/tsconfig.lib.prod.json +0 -6
  193. package/tsconfig.spec.json +0 -17
  194. package/tslint.json +0 -17
@@ -0,0 +1,123 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable } from "@angular/core";
3
+ import Swal from 'sweetalert2';
4
+ import * as i0 from "@angular/core";
5
+ var EqpDynamicModuleDialogService = /** @class */ (function () {
6
+ function EqpDynamicModuleDialogService() {
7
+ }
8
+ /**
9
+ * Mostra uno sweet alert di tipo SUCCESS con il messaggio passato come parametro.
10
+ * @param message Messaggio da mostrare nello sweetalert
11
+ * @param title Titolo dello sweetalert (di default mostra 'Operazione completata')
12
+ */
13
+ EqpDynamicModuleDialogService.Success = function (message, title) {
14
+ if (title === void 0) { title = null; }
15
+ var currentTitle = title != null ? title : 'Operazione completata con successo.';
16
+ Swal.fire(currentTitle, message, 'success');
17
+ };
18
+ /**
19
+ * Mostra uno sweet alert di tipo ERROR con il messaggio passato come parametro.
20
+ * @param message Messaggio d'errore da mostrare nello sweetalert
21
+ * @param title Titolo dello sweetalert (di default mostra 'Errore')
22
+ */
23
+ EqpDynamicModuleDialogService.Error = function (message, title) {
24
+ if (title === void 0) { title = null; }
25
+ var currentTitle = title != null ? title : 'Errore';
26
+ if (Array.isArray(message)) {
27
+ currentTitle = title != null ? title : 'Errore';
28
+ var htmlErrors = message.join("<br>");
29
+ Swal.fire({
30
+ title: currentTitle,
31
+ html: htmlErrors,
32
+ icon: 'error'
33
+ });
34
+ }
35
+ else {
36
+ Swal.fire(currentTitle, message, 'error');
37
+ }
38
+ };
39
+ /**
40
+ * Mostra uno sweetalert di tipo CONFIRM con il messaggio passato come parametro e se viene premuto
41
+ * CONFERMA lancia la funzione di callback passata come parametro
42
+ * @param message Messaggio da mostrare nello sweetalert
43
+ * @param title Titolo dello sweetalert (di default mostra 'Info')
44
+ */
45
+ EqpDynamicModuleDialogService.Confirm = function (message, confirmCallback, isWarning, title, customWidth) {
46
+ if (isWarning === void 0) { isWarning = false; }
47
+ if (title === void 0) { title = null; }
48
+ if (customWidth === void 0) { customWidth = null; }
49
+ var currentTitle = title != null ? title : 'Sei sicuro di voler procedere?';
50
+ if (Array.isArray(message)) {
51
+ var htmlErrors = message.join("<br>");
52
+ Swal.fire({
53
+ title: currentTitle,
54
+ html: htmlErrors,
55
+ width: customWidth ? customWidth : '32rem',
56
+ icon: !isWarning ? 'question' : 'warning',
57
+ showCancelButton: true,
58
+ allowOutsideClick: false,
59
+ allowEscapeKey: false
60
+ }).then(function (result) {
61
+ if (result.value && confirmCallback) {
62
+ confirmCallback();
63
+ }
64
+ });
65
+ }
66
+ else {
67
+ Swal.fire({
68
+ title: currentTitle,
69
+ text: message,
70
+ width: customWidth ? customWidth : '32rem',
71
+ icon: !isWarning ? 'question' : 'warning',
72
+ showCancelButton: true,
73
+ allowOutsideClick: false,
74
+ allowEscapeKey: false
75
+ }).then(function (result) {
76
+ if (result.value && confirmCallback) {
77
+ confirmCallback();
78
+ }
79
+ });
80
+ }
81
+ };
82
+ /**
83
+ * Mostra uno sweetalert di tipo INFO con il messaggio passato come parametro
84
+ * @param message Messaggio da mostrare nello sweetalert
85
+ * @param title Titolo dello sweetalert (di default mostra 'Info')
86
+ */
87
+ EqpDynamicModuleDialogService.Info = function (message, title, isToast) {
88
+ if (title === void 0) { title = null; }
89
+ if (isToast === void 0) { isToast = null; }
90
+ var currentTitle = title != null ? title : "Informazione:";
91
+ Swal.fire(currentTitle, message, 'info');
92
+ };
93
+ /**
94
+ * Mostra uno sweetalert di tipo WARNING con il messaggio passato come parametro
95
+ * @param message Messaggio da mostrare nello sweetalert
96
+ * @param title Titolo dello sweetalert (di default mostra 'Attenzione!')
97
+ */
98
+ EqpDynamicModuleDialogService.Warning = function (message, title, isToast) {
99
+ if (title === void 0) { title = null; }
100
+ if (isToast === void 0) { isToast = null; }
101
+ var currentTitle = title != null ? title : "Attenzione!";
102
+ if (Array.isArray(message)) {
103
+ var htmlWarnings = message.join("<br>");
104
+ Swal.fire({
105
+ title: currentTitle,
106
+ html: htmlWarnings,
107
+ icon: 'warning'
108
+ });
109
+ }
110
+ else {
111
+ Swal.fire(currentTitle, message, 'warning');
112
+ }
113
+ };
114
+ EqpDynamicModuleDialogService.ɵprov = i0.ɵɵdefineInjectable({ factory: function EqpDynamicModuleDialogService_Factory() { return new EqpDynamicModuleDialogService(); }, token: EqpDynamicModuleDialogService, providedIn: "root" });
115
+ EqpDynamicModuleDialogService = __decorate([
116
+ Injectable({
117
+ providedIn: 'root'
118
+ })
119
+ ], EqpDynamicModuleDialogService);
120
+ return EqpDynamicModuleDialogService;
121
+ }());
122
+ export { EqpDynamicModuleDialogService };
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXFwLWR5bmFtaWMtbW9kdWxlLWRpYWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGVxcHJvamVjdC9lcXAtZHluYW1pYy1tb2R1bGUvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvZXFwLWR5bmFtaWMtbW9kdWxlLWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7QUFLL0I7SUFFSTtJQUFnQixDQUFDO0lBRWpCOzs7O09BSUc7SUFDSSxxQ0FBTyxHQUFkLFVBQWUsT0FBZSxFQUFFLEtBQW9CO1FBQXBCLHNCQUFBLEVBQUEsWUFBb0I7UUFDaEQsSUFBSSxZQUFZLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQztRQUNqRixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxtQ0FBSyxHQUFaLFVBQWEsT0FBMEIsRUFBRSxLQUFvQjtRQUFwQixzQkFBQSxFQUFBLFlBQW9CO1FBQ3pELElBQUksWUFBWSxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3BELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QixZQUFZLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDaEQsSUFBSSxVQUFVLEdBQVcsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNOLEtBQUssRUFBRSxZQUFZ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LFlBQVksR0FBVyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ04sS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSxZQUFZO2dCQUNsQixJQUFJLEVBQUUsU0FBUzthQUNsQixDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQy9DO0lBQ0wsQ0FBQzs7SUExR1EsNkJBQTZCO1FBSHpDLFVBQVUsQ0FBQztZQUNSLFVBQVUsRUFBRSxNQUFNO1NBQ3JCLENBQUM7T0FDVyw2QkFBNkIsQ0EyR3pDO3dDQWpIRDtDQWlIQyxBQTNHRCxJQTJHQztTQTNHWSw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZSB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBNb3N0cmEgdW5vIHN3ZWV0IGFsZXJ0IGRpIHRpcG8gU1VDQ0VTUyBjb24gaWwgbWVzc2FnZ2lvIHBhc3NhdG8gY29tZSBwYXJhbWV0cm8uXHJcbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBNZXNzYWdnaW8gZGEgbW9zdHJhcmUgbmVsbG8gc3dlZXRhbGVydFxyXG4gICAgICogQHBhcmFtIHRpdGxlIFRpdG9sbyBkZWxsbyBzd2VldGFsZXJ0IChkaSBkZWZhdWx0IG1vc3RyYSAnT3BlcmF6aW9uZSBjb21wbGV0YXRhJylcclxuICAgICAqL1xyXG4gICAgc3RhdGljIFN1Y2Nlc3MobWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgICAgIGxldCBjdXJyZW50VGl0bGUgPSB0aXRsZSAhPSBudWxsID8gdGl0bGUgOiAnT3BlcmF6aW9uZSBjb21wbGV0YXRhIGNvbiBzdWNjZXNzby4nO1xyXG4gICAgICAgIFN3YWwuZmlyZShjdXJyZW50VGl0bGUsIG1lc3NhZ2UsICdzdWNjZXNzJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb3N0cmEgdW5vIHN3ZWV0IGFsZXJ0IGRpIHRpcG8gRVJST1IgY29uIGlsIG1lc3NhZ2dpbyBwYXNzYXRvIGNvbWUgcGFyYW1ldHJvLlxyXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgTWVzc2FnZ2lvIGQnZXJyb3JlIGRhIG1vc3RyYXJlIG5lbGxvIHN3ZWV0YWxlcnRcclxuICAgICAqIEBwYXJhbSB0aXRsZSBUaXRvbG8gZGVsbG8gc3dlZXRhbGVydCAoZGkgZGVmYXVsdCBtb3N0cmEgJ0Vycm9yZScpXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBFcnJvcihtZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSwgdGl0bGU6IHN0cmluZyA9IG51bGwpIHtcclxuICAgICAgICBsZXQgY3VycmVudFRpdGxlID0gdGl0bGUgIT0gbnVsbCA/IHRpdGxlIDogJ0Vycm9yZSc7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWVzc2FnZSkpIHtcclxuICAgICAgICAgICAgY3VycmVudFRpdGxlID0gdGl0bGUgIT0gbnVsbCA/IHRpdGxlIDogJ0Vycm9yZSc7XHJcbiAgICAgICAgICAgIGxldCBodG1sRXJyb3JzOiBzdHJpbmcgPSBtZXNzYWdlLmpvaW4oXCI8YnI+XCIpO1xyXG4gICAgICAgICAgICBTd2FsLmZpcmUoe1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGN1cnJlbnRUaXRsZSxcclxuICAgICAgICAgICAgICAgIGh0bWw6IGh0bWxFcnJvcnMsXHJcbiAgICAgICAgICAgICAgICBpY29uOiAnZXJyb3InXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgU3dhbC5maXJlKGN1cnJlbnRUaXRsZSwgbWVzc2FnZSwgJ2Vycm9yJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vc3RyYSB1bm8gc3dlZXRhbGVydCBkaSB0aXBvIENPTkZJUk0gY29uIGlsIG1lc3NhZ2dpbyBwYXNzYXRvIGNvbWUgcGFyYW1ldHJvIGUgc2UgdmllbmUgcHJlbXV0b1xyXG4gICAgICogQ09ORkVSTUEgbGFuY2lhIGxhIGZ1bnppb25lIGRpIGNhbGxiYWNrIHBhc3NhdGEgY29tZSBwYXJhbWV0cm9cclxuICAgICAqIEBwYXJhbSBtZXNzYWdlIE1lc3NhZ2dpbyBkYSBtb3N0cmFyZSBuZWxsbyBzd2VldGFsZXJ0XHJcbiAgICAgKiBAcGFyYW0gdGl0bGUgVGl0b2xvIGRlbGxvIHN3ZWV0YWxlcnQgKGRpIGRlZmF1bHQgbW9zdHJhICdJbmZvJylcclxuICAgICAqL1xyXG4gICAgc3RhdGljIENvbmZpcm0obWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10sIGNvbmZpcm1DYWxsYmFjazogYW55LCBpc1dhcm5pbmc6IGJvb2xlYW4gPSBmYWxzZSwgdGl0bGU6IHN0cmluZyA9IG51bGwsIGN1c3RvbVdpZHRoOiBzdHJpbmcgPSBudWxsKSB7XHJcblxyXG4gICAgICAgIGxldCBjdXJyZW50VGl0bGUgPSB0aXRsZSAhPSBudWxsID8gdGl0bGUgOiAnU2VpIHNpY3VybyBkaSB2b2xlciBwcm9jZWRlcmU/JztcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtZXNzYWdlKSkge1xyXG4gICAgICAgICAgICBsZXQgaHRtbEVycm9yczogc3RyaW5nID0gbWVzc2FnZS5qb2luKFwiPGJyPlwiKTtcclxuICAgICAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBjdXJyZW50VGl0bGUsXHJcbiAgICAgICAgICAgICAgICBodG1sOiBodG1sRXJyb3JzLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IGN1c3RvbVdpZHRoID8gY3VzdG9tV2lkdGggOiAnMzJyZW0nLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogIWlzV2FybmluZyA/ICdxdWVzdGlvbicgOiAnd2FybmluZycsXHJcbiAgICAgICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dPdXRzaWRlQ2xpY2s6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dFc2NhcGVLZXk6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSAmJiBjb25maXJtQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25maXJtQ2FsbGJhY2soKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBTd2FsLmZpcmUoe1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGN1cnJlbnRUaXRsZSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IG1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogY3VzdG9tV2lkdGggPyBjdXN0b21XaWR0aCA6ICczMnJlbScsXHJcbiAgICAgICAgICAgICAgICBpY29uOiAhaXNXYXJuaW5nID8gJ3F1ZXN0aW9uJyA6ICd3YXJuaW5nJyxcclxuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgICAgICBhbGxvd091dHNpZGVDbGljazogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0VzY2FwZUtleTogZmFsc2VcclxuICAgICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlICYmIGNvbmZpcm1DYWxsYmFjaykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpcm1DYWxsYmFjaygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vc3RyYSB1bm8gc3dlZXRhbGVydCBkaSB0aXBvIElORk8gY29uIGlsIG1lc3NhZ2dpbyBwYXNzYXRvIGNvbWUgcGFyYW1ldHJvXHJcbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBNZXNzYWdnaW8gZGEgbW9zdHJhcmUgbmVsbG8gc3dlZXRhbGVydFxyXG4gICAgICogQHBhcmFtIHRpdGxlIFRpdG9sbyBkZWxsbyBzd2VldGFsZXJ0IChkaSBkZWZhdWx0IG1vc3RyYSAnSW5mbycpXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBJbmZvKG1lc3NhZ2U6IHN0cmluZywgdGl0bGU6IHN0cmluZyA9IG51bGwsIGlzVG9hc3Q6IGJvb2xlYW4gPSBudWxsKSB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRUaXRsZSA9IHRpdGxlICE9IG51bGwgPyB0aXRsZSA6IFwiSW5mb3JtYXppb25lOlwiO1xyXG4gICAgICAgIFN3YWwuZmlyZShjdXJyZW50VGl0bGUsIG1lc3NhZ2UsICdpbmZvJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb3N0cmEgdW5vIHN3ZWV0YWxlcnQgZGkgdGlwbyBXQVJOSU5HIGNvbiBpbCBtZXNzYWdnaW8gcGFzc2F0byBjb21lIHBhcmFtZXRyb1xyXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgTWVzc2FnZ2lvIGRhIG1vc3RyYXJlIG5lbGxvIHN3ZWV0YWxlcnRcclxuICAgICAqIEBwYXJhbSB0aXRsZSBUaXRvbG8gZGVsbG8gc3dlZXRhbGVydCAoZGkgZGVmYXVsdCBtb3N0cmEgJ0F0dGVuemlvbmUhJylcclxuICAgICAqL1xyXG4gICAgc3RhdGljIFdhcm5pbmcobWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10sIHRpdGxlOiBzdHJpbmcgPSBudWxsLCBpc1RvYXN0OiBib29sZWFuID0gbnVsbCkge1xyXG4gICAgICAgIGxldCBjdXJyZW50VGl0bGUgPSB0aXRsZSAhPSBudWxsID8gdGl0bGUgOiBcIkF0dGVuemlvbmUhXCI7XHJcblxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1lc3NhZ2UpKSB7XHJcbiAgICAgICAgICAgIGxldCBodG1sV2FybmluZ3M6IHN0cmluZyA9IG1lc3NhZ2Uuam9pbihcIjxicj5cIik7XHJcbiAgICAgICAgICAgIFN3YWwuZmlyZSh7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogY3VycmVudFRpdGxlLFxyXG4gICAgICAgICAgICAgICAgaHRtbDogaHRtbFdhcm5pbmdzLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogJ3dhcm5pbmcnXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIFN3YWwuZmlyZShjdXJyZW50VGl0bGUsIG1lc3NhZ2UsICd3YXJuaW5nJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,46 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable } from "@angular/core";
3
+ import { Subject } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ var SpinnerService = /** @class */ (function () {
6
+ function SpinnerService() {
7
+ this.isLoading = new Subject();
8
+ this.requestsCount = 0;
9
+ }
10
+ /**
11
+ * Mostra lo spinner
12
+ */
13
+ SpinnerService.prototype.show = function () {
14
+ var _this = this;
15
+ setTimeout(function () {
16
+ _this.isLoading.next(true);
17
+ }, 100);
18
+ };
19
+ /**
20
+ * Nasconde lo spinner
21
+ */
22
+ SpinnerService.prototype.hide = function () {
23
+ var _this = this;
24
+ setTimeout(function () {
25
+ _this.isLoading.next(false);
26
+ }, 100);
27
+ };
28
+ SpinnerService.prototype.addRequestCounter = function () {
29
+ this.requestsCount++;
30
+ this.show();
31
+ };
32
+ SpinnerService.prototype.removeRequestCounter = function () {
33
+ this.requestsCount--;
34
+ if (this.requestsCount == 0)
35
+ this.hide();
36
+ };
37
+ SpinnerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SpinnerService_Factory() { return new SpinnerService(); }, token: SpinnerService, providedIn: "root" });
38
+ SpinnerService = __decorate([
39
+ Injectable({
40
+ providedIn: 'root'
41
+ })
42
+ ], SpinnerService);
43
+ return SpinnerService;
44
+ }());
45
+ export { SpinnerService };
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGVxcHJvamVjdC9lcXAtZHluYW1pYy1tb2R1bGUvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvc3Bpbm5lci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSy9CO0lBQUE7UUFDSSxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUUzQixrQkFBYSxHQUFXLENBQUMsQ0FBQztLQThCckM7SUE1Qkc7O09BRUc7SUFDSCw2QkFBSSxHQUFKO1FBQUEsaUJBSUM7UUFIRyxVQUFVLENBQUM7WUFDUCxLQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQ7O09BRUc7SUFDSCw2QkFBSSxHQUFKO1FBQUEsaUJBSUM7UUFIRyxVQUFVLENBQUM7WUFDUCxLQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsMENBQWlCLEdBQWpCO1FBQ0ksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsNkNBQW9CLEdBQXBCO1FBQ0ksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDOztJQWhDUSxjQUFjO1FBSDFCLFVBQVUsQ0FBQztZQUNSLFVBQVUsRUFBRSxNQUFNO1NBQ3JCLENBQUM7T0FDVyxjQUFjLENBaUMxQjt5QkF2Q0Q7Q0F1Q0MsQUFqQ0QsSUFpQ0M7U0FqQ1ksY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNwaW5uZXJTZXJ2aWNlIHtcclxuICAgIGlzTG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSByZXF1ZXN0c0NvdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9zdHJhIGxvIHNwaW5uZXJcclxuICAgICAqL1xyXG4gICAgc2hvdygpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcubmV4dCh0cnVlKTtcclxuICAgICAgICB9LCAxMDApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTmFzY29uZGUgbG8gc3Bpbm5lclxyXG4gICAgICovXHJcbiAgICBoaWRlKCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZy5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9LCAxMDApO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFJlcXVlc3RDb3VudGVyKCkge1xyXG4gICAgICAgIHRoaXMucmVxdWVzdHNDb3VudCsrO1xyXG4gICAgICAgIHRoaXMuc2hvdygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZVJlcXVlc3RDb3VudGVyKCkge1xyXG4gICAgICAgIHRoaXMucmVxdWVzdHNDb3VudC0tO1xyXG4gICAgICAgIGlmICh0aGlzLnJlcXVlc3RzQ291bnQgPT0gMClcclxuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICB9XHJcbn0iXX0=