@abp/ng.theme.shared 7.2.2 → 7.3.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 (316) hide show
  1. package/README.md +129 -2
  2. package/{esm2020 → esm2022}/abp-ng.theme.shared.mjs +4 -4
  3. package/{esm2020 → esm2022}/extensions/abp-ng.theme.shared-extensions.mjs +4 -4
  4. package/esm2022/extensions/lib/adapters/date-time.adapter.mjs +45 -0
  5. package/esm2022/extensions/lib/adapters/date.adapter.mjs +42 -0
  6. package/esm2022/extensions/lib/adapters/time.adapter.mjs +37 -0
  7. package/esm2022/extensions/lib/components/abstract-actions/abstract-actions.component.mjs +26 -0
  8. package/esm2022/extensions/lib/components/date-time-picker/date-time-picker.component.mjs +110 -0
  9. package/esm2022/extensions/lib/components/extensible-form/extensible-form-prop.component.mjs +199 -0
  10. package/esm2022/extensions/lib/components/extensible-form/extensible-form.component.mjs +74 -0
  11. package/esm2022/extensions/lib/components/extensible-table/extensible-table.component.mjs +137 -0
  12. package/esm2022/extensions/lib/components/grid-actions/grid-actions.component.mjs +40 -0
  13. package/esm2022/extensions/lib/components/page-toolbar/page-toolbar.component.mjs +39 -0
  14. package/{esm2020 → esm2022}/extensions/lib/constants/extra-properties.mjs +1 -1
  15. package/esm2022/extensions/lib/directives/disabled.directive.mjs +30 -0
  16. package/esm2022/extensions/lib/directives/prop-data.directive.mjs +42 -0
  17. package/{esm2020 → esm2022}/extensions/lib/enums/components.mjs +1 -1
  18. package/{esm2020 → esm2022}/extensions/lib/enums/props.enum.mjs +1 -1
  19. package/{esm2020 → esm2022}/extensions/lib/models/actions.mjs +46 -46
  20. package/{esm2020 → esm2022}/extensions/lib/models/entity-actions.mjs +28 -28
  21. package/esm2022/extensions/lib/models/entity-props.mjs +44 -0
  22. package/esm2022/extensions/lib/models/form-props.mjs +76 -0
  23. package/{esm2020 → esm2022}/extensions/lib/models/internal/object-extensions.mjs +2 -2
  24. package/{esm2020 → esm2022}/extensions/lib/models/object-extensions.mjs +2 -2
  25. package/esm2022/extensions/lib/models/props.mjs +54 -0
  26. package/{esm2020 → esm2022}/extensions/lib/models/toolbar-actions.mjs +43 -43
  27. package/esm2022/extensions/lib/pipes/create-injector.pipe.mjs +37 -0
  28. package/esm2022/extensions/lib/services/extensions.service.mjs +25 -0
  29. package/{esm2020 → esm2022}/extensions/lib/tokens/extensible-form-view-provider.token.mjs +2 -2
  30. package/{esm2020 → esm2022}/extensions/lib/tokens/extensions.token.mjs +11 -11
  31. package/esm2022/extensions/lib/ui-extensions.module.mjs +100 -0
  32. package/{esm2020 → esm2022}/extensions/lib/utils/actions.util.mjs +8 -8
  33. package/{esm2020 → esm2022}/extensions/lib/utils/enum.util.mjs +41 -41
  34. package/{esm2020 → esm2022}/extensions/lib/utils/factory.util.mjs +3 -3
  35. package/esm2022/extensions/lib/utils/form-props.util.mjs +51 -0
  36. package/{esm2020 → esm2022}/extensions/lib/utils/localization.util.mjs +12 -12
  37. package/{esm2020 → esm2022}/extensions/lib/utils/props.util.mjs +13 -13
  38. package/esm2022/extensions/lib/utils/state.util.mjs +126 -0
  39. package/{esm2020 → esm2022}/extensions/lib/utils/typeahead.util.mjs +51 -51
  40. package/{esm2020 → esm2022}/extensions/lib/utils/validation.util.mjs +10 -10
  41. package/{esm2020 → esm2022}/extensions/public-api.mjs +30 -30
  42. package/{esm2020 → esm2022}/lib/animations/bounce.animations.mjs +16 -16
  43. package/{esm2020 → esm2022}/lib/animations/collapse.animations.mjs +49 -49
  44. package/{esm2020 → esm2022}/lib/animations/fade.animations.mjs +37 -37
  45. package/{esm2020 → esm2022}/lib/animations/index.mjs +6 -6
  46. package/{esm2020 → esm2022}/lib/animations/modal.animations.mjs +10 -10
  47. package/{esm2020 → esm2022}/lib/animations/slide.animations.mjs +7 -7
  48. package/{esm2020 → esm2022}/lib/animations/toast.animations.mjs +12 -12
  49. package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +44 -0
  50. package/esm2022/lib/components/breadcrumb-items/breadcrumb-items.component.mjs +20 -0
  51. package/esm2022/lib/components/button/button.component.mjs +103 -0
  52. package/{esm2020 → esm2022}/lib/components/card/card-body.component.mjs +27 -26
  53. package/esm2022/lib/components/card/card-footer.component.mjs +31 -0
  54. package/esm2022/lib/components/card/card-header.component.mjs +31 -0
  55. package/esm2022/lib/components/card/card-header.directive.mjs +20 -0
  56. package/esm2022/lib/components/card/card-img-top.directive.mjs +20 -0
  57. package/esm2022/lib/components/card/card-subtitle.directive.mjs +20 -0
  58. package/esm2022/lib/components/card/card-title.directive.mjs +20 -0
  59. package/esm2022/lib/components/card/card.component.mjs +24 -0
  60. package/esm2022/lib/components/card/card.module.mjs +50 -0
  61. package/{esm2020 → esm2022}/lib/components/card/index.mjs +9 -9
  62. package/esm2022/lib/components/checkbox/checkbox.component.mjs +89 -0
  63. package/esm2022/lib/components/confirmation/confirmation.component.mjs +46 -0
  64. package/esm2022/lib/components/form-input/form-input.component.mjs +95 -0
  65. package/esm2022/lib/components/http-error-wrapper/http-error-wrapper.component.mjs +60 -0
  66. package/{esm2020 → esm2022}/lib/components/index.mjs +16 -16
  67. package/esm2022/lib/components/loader-bar/loader-bar.component.mjs +122 -0
  68. package/esm2022/lib/components/loading/loading.component.mjs +20 -0
  69. package/esm2022/lib/components/modal/modal-close.directive.mjs +28 -0
  70. package/esm2022/lib/components/modal/modal-ref.service.mjs +27 -0
  71. package/esm2022/lib/components/modal/modal.component.mjs +190 -0
  72. package/esm2022/lib/components/password/password.component.mjs +39 -0
  73. package/esm2022/lib/components/toast/toast.component.mjs +56 -0
  74. package/esm2022/lib/components/toast-container/toast-container.component.mjs +59 -0
  75. package/{esm2020 → esm2022}/lib/constants/styles.mjs +1 -1
  76. package/{esm2020 → esm2022}/lib/constants/validation.mjs +19 -19
  77. package/esm2022/lib/directives/ellipsis.directive.mjs +65 -0
  78. package/{esm2020 → esm2022}/lib/directives/index.mjs +5 -5
  79. package/esm2022/lib/directives/loading.directive.mjs +90 -0
  80. package/esm2022/lib/directives/ngx-datatable-default.directive.mjs +76 -0
  81. package/esm2022/lib/directives/ngx-datatable-list.directive.mjs +95 -0
  82. package/esm2022/lib/directives/visible.directive.mjs +63 -0
  83. package/{esm2020 → esm2022}/lib/enums/form.mjs +5 -5
  84. package/{esm2020 → esm2022}/lib/enums/index.mjs +2 -2
  85. package/{esm2020 → esm2022}/lib/enums/route-names.mjs +1 -1
  86. package/esm2022/lib/handlers/document-dir.handler.mjs +32 -0
  87. package/esm2022/lib/handlers/error.handler.mjs +294 -0
  88. package/{esm2020 → esm2022}/lib/handlers/index.mjs +2 -2
  89. package/{esm2020 → esm2022}/lib/models/common.mjs +1 -1
  90. package/{esm2020 → esm2022}/lib/models/confirmation.mjs +9 -9
  91. package/{esm2020 → esm2022}/lib/models/index.mjs +7 -7
  92. package/{esm2020 → esm2022}/lib/models/nav-item.mjs +5 -5
  93. package/{esm2020 → esm2022}/lib/models/statistics.mjs +1 -1
  94. package/{esm2020 → esm2022}/lib/models/toaster.mjs +1 -1
  95. package/{esm2020 → esm2022}/lib/models/user-menu.mjs +3 -3
  96. package/{esm2020 → esm2022}/lib/models/validation.mjs +1 -1
  97. package/{esm2020 → esm2022}/lib/providers/index.mjs +2 -2
  98. package/{esm2020 → esm2022}/lib/providers/ng-bootstrap-config.provider.mjs +16 -16
  99. package/{esm2020 → esm2022}/lib/providers/route.provider.mjs +17 -17
  100. package/{esm2020 → esm2022}/lib/services/abstract-menu.service.mjs +49 -49
  101. package/esm2022/lib/services/confirmation.service.mjs +69 -0
  102. package/{esm2020 → esm2022}/lib/services/index.mjs +5 -5
  103. package/esm2022/lib/services/nav-items.service.mjs +18 -0
  104. package/esm2022/lib/services/page-alert.service.mjs +29 -0
  105. package/esm2022/lib/services/toaster.service.mjs +104 -0
  106. package/esm2022/lib/services/user-menu.service.mjs +18 -0
  107. package/esm2022/lib/theme-shared.module.mjs +202 -0
  108. package/{esm2020 → esm2022}/lib/tokens/append-content.token.mjs +10 -10
  109. package/{esm2020 → esm2022}/lib/tokens/confirmation-icons.token.mjs +10 -10
  110. package/{esm2020 → esm2022}/lib/tokens/http-error.token.mjs +13 -13
  111. package/{esm2020 → esm2022}/lib/tokens/index.mjs +4 -4
  112. package/{esm2020 → esm2022}/lib/tokens/ngx-datatable-messages.token.mjs +7 -7
  113. package/{esm2020 → esm2022}/lib/tokens/suppress-unsaved-changes-warning.token.mjs +2 -2
  114. package/esm2022/lib/utils/date-parser-formatter.mjs +59 -0
  115. package/{esm2020 → esm2022}/lib/utils/index.mjs +2 -2
  116. package/{esm2020 → esm2022}/lib/utils/validation-utils.mjs +61 -61
  117. package/{esm2020 → esm2022}/public-api.mjs +15 -15
  118. package/{esm2020 → esm2022}/testing/abp-ng.theme.shared-testing.mjs +4 -4
  119. package/{esm2020 → esm2022}/testing/lib/models/config.mjs +1 -1
  120. package/{esm2020 → esm2022}/testing/lib/models/index.mjs +1 -1
  121. package/esm2022/testing/lib/theme-shared-testing.module.mjs +47 -0
  122. package/{esm2020 → esm2022}/testing/public-api.mjs +3 -3
  123. package/extensions/index.d.ts +5 -5
  124. package/extensions/lib/adapters/date-time.adapter.d.ts +11 -11
  125. package/extensions/lib/adapters/date.adapter.d.ts +9 -9
  126. package/extensions/lib/adapters/time.adapter.d.ts +8 -8
  127. package/extensions/lib/components/abstract-actions/abstract-actions.component.d.ts +12 -12
  128. package/extensions/lib/components/date-time-picker/date-time-picker.component.d.ts +16 -16
  129. package/extensions/lib/components/extensible-form/extensible-form-prop.component.d.ts +43 -43
  130. package/extensions/lib/components/extensible-form/extensible-form.component.d.ts +25 -25
  131. package/extensions/lib/components/extensible-table/extensible-table.component.d.ts +38 -38
  132. package/extensions/lib/components/grid-actions/grid-actions.component.d.ts +13 -13
  133. package/extensions/lib/components/page-toolbar/page-toolbar.component.d.ts +20 -20
  134. package/extensions/lib/constants/extra-properties.d.ts +1 -1
  135. package/extensions/lib/directives/disabled.directive.d.ts +11 -11
  136. package/extensions/lib/directives/prop-data.directive.d.ts +19 -19
  137. package/extensions/lib/enums/components.d.ts +3 -3
  138. package/extensions/lib/enums/props.enum.d.ts +16 -16
  139. package/extensions/lib/models/actions.d.ts +36 -36
  140. package/extensions/lib/models/entity-actions.d.ts +22 -22
  141. package/extensions/lib/models/entity-props.d.ts +30 -29
  142. package/extensions/lib/models/form-props.d.ts +59 -58
  143. package/extensions/lib/models/internal/object-extensions.d.ts +86 -85
  144. package/extensions/lib/models/object-extensions.d.ts +2 -2
  145. package/extensions/lib/models/props.d.ts +45 -44
  146. package/extensions/lib/models/toolbar-actions.d.ts +38 -38
  147. package/extensions/lib/pipes/create-injector.pipe.d.ts +8 -8
  148. package/extensions/lib/services/extensions.service.d.ts +14 -14
  149. package/extensions/lib/tokens/extensible-form-view-provider.token.d.ts +5 -5
  150. package/extensions/lib/tokens/extensions.token.d.ts +20 -24
  151. package/extensions/lib/ui-extensions.module.d.ts +24 -24
  152. package/extensions/lib/utils/actions.util.d.ts +7 -7
  153. package/extensions/lib/utils/enum.util.d.ts +7 -7
  154. package/extensions/lib/utils/factory.util.d.ts +1 -1
  155. package/extensions/lib/utils/form-props.util.d.ts +3 -3
  156. package/extensions/lib/utils/localization.util.d.ts +3 -3
  157. package/extensions/lib/utils/props.util.d.ts +9 -9
  158. package/extensions/lib/utils/state.util.d.ts +5 -5
  159. package/extensions/lib/utils/typeahead.util.d.ts +11 -11
  160. package/extensions/lib/utils/validation.util.d.ts +3 -3
  161. package/extensions/public-api.d.ts +30 -30
  162. package/{fesm2020 → fesm2022}/abp-ng.theme.shared-extensions.mjs +1340 -1331
  163. package/fesm2022/abp-ng.theme.shared-extensions.mjs.map +1 -0
  164. package/{fesm2020 → fesm2022}/abp-ng.theme.shared-testing.mjs +40 -40
  165. package/{fesm2015 → fesm2022}/abp-ng.theme.shared-testing.mjs.map +1 -1
  166. package/{fesm2020 → fesm2022}/abp-ng.theme.shared.mjs +2292 -2290
  167. package/fesm2022/abp-ng.theme.shared.mjs.map +1 -0
  168. package/index.d.ts +5 -5
  169. package/lib/animations/bounce.animations.d.ts +1 -1
  170. package/lib/animations/collapse.animations.d.ts +9 -9
  171. package/lib/animations/fade.animations.d.ts +10 -10
  172. package/lib/animations/index.d.ts +6 -6
  173. package/lib/animations/modal.animations.d.ts +2 -2
  174. package/lib/animations/slide.animations.d.ts +1 -1
  175. package/lib/animations/toast.animations.d.ts +1 -1
  176. package/lib/components/breadcrumb/breadcrumb.component.d.ts +16 -16
  177. package/lib/components/breadcrumb-items/breadcrumb-items.component.d.ts +7 -7
  178. package/lib/components/button/button.component.d.ts +26 -26
  179. package/lib/components/card/card-body.component.d.ts +8 -8
  180. package/lib/components/card/card-footer.component.d.ts +8 -8
  181. package/lib/components/card/card-header.component.d.ts +8 -8
  182. package/lib/components/card/card-header.directive.d.ts +6 -6
  183. package/lib/components/card/card-img-top.directive.d.ts +6 -6
  184. package/lib/components/card/card-subtitle.directive.d.ts +6 -6
  185. package/lib/components/card/card-title.directive.d.ts +6 -6
  186. package/lib/components/card/card.component.d.ts +7 -7
  187. package/lib/components/card/card.module.d.ts +15 -15
  188. package/lib/components/card/index.d.ts +9 -9
  189. package/lib/components/checkbox/checkbox.component.d.ts +18 -18
  190. package/lib/components/confirmation/confirmation.component.d.ts +19 -19
  191. package/lib/components/form-input/form-input.component.d.ts +19 -19
  192. package/lib/components/http-error-wrapper/http-error-wrapper.component.d.ts +27 -27
  193. package/lib/components/index.d.ts +16 -16
  194. package/lib/components/loader-bar/loader-bar.component.d.ts +33 -33
  195. package/lib/components/loading/loading.component.d.ts +5 -5
  196. package/lib/components/modal/modal-close.directive.d.ts +9 -9
  197. package/lib/components/modal/modal-ref.service.d.ts +13 -13
  198. package/lib/components/modal/modal.component.d.ts +50 -50
  199. package/lib/components/password/password.component.d.ts +12 -12
  200. package/lib/components/toast/toast.component.d.ts +14 -14
  201. package/lib/components/toast-container/toast-container.component.d.ts +22 -22
  202. package/lib/constants/styles.d.ts +2 -2
  203. package/lib/constants/validation.d.ts +19 -19
  204. package/lib/directives/ellipsis.directive.d.ts +21 -21
  205. package/lib/directives/index.d.ts +5 -5
  206. package/lib/directives/loading.directive.d.ts +25 -25
  207. package/lib/directives/ngx-datatable-default.directive.d.ts +30 -30
  208. package/lib/directives/ngx-datatable-list.directive.d.ts +24 -24
  209. package/lib/directives/visible.directive.d.ts +18 -18
  210. package/lib/enums/form.d.ts +4 -4
  211. package/lib/enums/index.d.ts +2 -2
  212. package/lib/enums/route-names.d.ts +3 -3
  213. package/lib/handlers/document-dir.handler.d.ts +13 -13
  214. package/lib/handlers/error.handler.d.ts +83 -83
  215. package/lib/handlers/index.d.ts +2 -2
  216. package/lib/models/common.d.ts +21 -21
  217. package/lib/models/confirmation.d.ts +27 -27
  218. package/lib/models/index.d.ts +7 -7
  219. package/lib/models/nav-item.d.ts +13 -13
  220. package/lib/models/statistics.d.ts +12 -12
  221. package/lib/models/toaster.d.ts +30 -30
  222. package/lib/models/user-menu.d.ts +8 -8
  223. package/lib/models/validation.d.ts +1 -1
  224. package/lib/providers/index.d.ts +2 -2
  225. package/lib/providers/ng-bootstrap-config.provider.d.ts +8 -8
  226. package/lib/providers/route.provider.d.ts +8 -8
  227. package/lib/services/abstract-menu.service.d.ts +13 -13
  228. package/lib/services/confirmation.service.d.ts +21 -21
  229. package/lib/services/index.d.ts +5 -5
  230. package/lib/services/nav-items.service.d.ts +8 -8
  231. package/lib/services/page-alert.service.d.ts +18 -18
  232. package/lib/services/toaster.service.d.ts +60 -60
  233. package/lib/services/user-menu.service.d.ts +8 -8
  234. package/lib/theme-shared.module.d.ts +38 -38
  235. package/lib/tokens/append-content.token.d.ts +2 -2
  236. package/lib/tokens/confirmation-icons.token.d.ts +11 -11
  237. package/lib/tokens/http-error.token.d.ts +5 -5
  238. package/lib/tokens/index.d.ts +4 -4
  239. package/lib/tokens/ngx-datatable-messages.token.d.ts +12 -12
  240. package/lib/tokens/suppress-unsaved-changes-warning.token.d.ts +2 -2
  241. package/lib/utils/date-parser-formatter.d.ts +12 -12
  242. package/lib/utils/index.d.ts +2 -2
  243. package/lib/utils/validation-utils.d.ts +5 -5
  244. package/package.json +28 -24
  245. package/public-api.d.ts +12 -12
  246. package/testing/index.d.ts +5 -5
  247. package/testing/lib/models/config.d.ts +4 -4
  248. package/testing/lib/models/index.d.ts +1 -1
  249. package/testing/lib/theme-shared-testing.module.d.ts +14 -14
  250. package/testing/public-api.d.ts +3 -3
  251. package/esm2020/extensions/lib/adapters/date-time.adapter.mjs +0 -44
  252. package/esm2020/extensions/lib/adapters/date.adapter.mjs +0 -41
  253. package/esm2020/extensions/lib/adapters/time.adapter.mjs +0 -36
  254. package/esm2020/extensions/lib/components/abstract-actions/abstract-actions.component.mjs +0 -25
  255. package/esm2020/extensions/lib/components/date-time-picker/date-time-picker.component.mjs +0 -109
  256. package/esm2020/extensions/lib/components/extensible-form/extensible-form-prop.component.mjs +0 -198
  257. package/esm2020/extensions/lib/components/extensible-form/extensible-form.component.mjs +0 -73
  258. package/esm2020/extensions/lib/components/extensible-table/extensible-table.component.mjs +0 -135
  259. package/esm2020/extensions/lib/components/grid-actions/grid-actions.component.mjs +0 -39
  260. package/esm2020/extensions/lib/components/page-toolbar/page-toolbar.component.mjs +0 -38
  261. package/esm2020/extensions/lib/directives/disabled.directive.mjs +0 -29
  262. package/esm2020/extensions/lib/directives/prop-data.directive.mjs +0 -41
  263. package/esm2020/extensions/lib/models/entity-props.mjs +0 -43
  264. package/esm2020/extensions/lib/models/form-props.mjs +0 -75
  265. package/esm2020/extensions/lib/models/props.mjs +0 -53
  266. package/esm2020/extensions/lib/pipes/create-injector.pipe.mjs +0 -36
  267. package/esm2020/extensions/lib/services/extensions.service.mjs +0 -24
  268. package/esm2020/extensions/lib/ui-extensions.module.mjs +0 -95
  269. package/esm2020/extensions/lib/utils/form-props.util.mjs +0 -51
  270. package/esm2020/extensions/lib/utils/state.util.mjs +0 -123
  271. package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +0 -43
  272. package/esm2020/lib/components/breadcrumb-items/breadcrumb-items.component.mjs +0 -19
  273. package/esm2020/lib/components/button/button.component.mjs +0 -102
  274. package/esm2020/lib/components/card/card-footer.component.mjs +0 -30
  275. package/esm2020/lib/components/card/card-header.component.mjs +0 -30
  276. package/esm2020/lib/components/card/card-header.directive.mjs +0 -19
  277. package/esm2020/lib/components/card/card-img-top.directive.mjs +0 -19
  278. package/esm2020/lib/components/card/card-subtitle.directive.mjs +0 -19
  279. package/esm2020/lib/components/card/card-title.directive.mjs +0 -19
  280. package/esm2020/lib/components/card/card.component.mjs +0 -23
  281. package/esm2020/lib/components/card/card.module.mjs +0 -49
  282. package/esm2020/lib/components/checkbox/checkbox.component.mjs +0 -88
  283. package/esm2020/lib/components/confirmation/confirmation.component.mjs +0 -45
  284. package/esm2020/lib/components/form-input/form-input.component.mjs +0 -94
  285. package/esm2020/lib/components/http-error-wrapper/http-error-wrapper.component.mjs +0 -59
  286. package/esm2020/lib/components/loader-bar/loader-bar.component.mjs +0 -121
  287. package/esm2020/lib/components/loading/loading.component.mjs +0 -19
  288. package/esm2020/lib/components/modal/modal-close.directive.mjs +0 -27
  289. package/esm2020/lib/components/modal/modal-ref.service.mjs +0 -26
  290. package/esm2020/lib/components/modal/modal.component.mjs +0 -189
  291. package/esm2020/lib/components/password/password.component.mjs +0 -38
  292. package/esm2020/lib/components/toast/toast.component.mjs +0 -55
  293. package/esm2020/lib/components/toast-container/toast-container.component.mjs +0 -58
  294. package/esm2020/lib/directives/ellipsis.directive.mjs +0 -63
  295. package/esm2020/lib/directives/loading.directive.mjs +0 -89
  296. package/esm2020/lib/directives/ngx-datatable-default.directive.mjs +0 -75
  297. package/esm2020/lib/directives/ngx-datatable-list.directive.mjs +0 -94
  298. package/esm2020/lib/directives/visible.directive.mjs +0 -62
  299. package/esm2020/lib/handlers/document-dir.handler.mjs +0 -31
  300. package/esm2020/lib/handlers/error.handler.mjs +0 -291
  301. package/esm2020/lib/services/confirmation.service.mjs +0 -68
  302. package/esm2020/lib/services/nav-items.service.mjs +0 -17
  303. package/esm2020/lib/services/page-alert.service.mjs +0 -28
  304. package/esm2020/lib/services/toaster.service.mjs +0 -103
  305. package/esm2020/lib/services/user-menu.service.mjs +0 -17
  306. package/esm2020/lib/theme-shared.module.mjs +0 -200
  307. package/esm2020/lib/utils/date-parser-formatter.mjs +0 -58
  308. package/esm2020/testing/lib/theme-shared-testing.module.mjs +0 -46
  309. package/fesm2015/abp-ng.theme.shared-extensions.mjs +0 -1460
  310. package/fesm2015/abp-ng.theme.shared-extensions.mjs.map +0 -1
  311. package/fesm2015/abp-ng.theme.shared-testing.mjs +0 -54
  312. package/fesm2015/abp-ng.theme.shared.mjs +0 -2767
  313. package/fesm2015/abp-ng.theme.shared.mjs.map +0 -1
  314. package/fesm2020/abp-ng.theme.shared-extensions.mjs.map +0 -1
  315. package/fesm2020/abp-ng.theme.shared-testing.mjs.map +0 -1
  316. package/fesm2020/abp-ng.theme.shared.mjs.map +0 -1
@@ -19,216 +19,215 @@ import * as i1$2 from '@swimlane/ngx-datatable';
19
19
  import { ColumnMode, NgxDatatableModule } from '@swimlane/ngx-datatable';
20
20
  import { HttpErrorResponse } from '@angular/common/http';
21
21
 
22
- const bounceIn = animation([
23
- style({ opacity: '0', display: '{{ display }}' }),
24
- animate('{{ time}} {{ easing }}', keyframes([
25
- style({ opacity: '0', transform: '{{ transform }} scale(0.0)', offset: 0 }),
26
- style({ opacity: '0', transform: '{{ transform }} scale(0.8)', offset: 0.5 }),
27
- style({ opacity: '1', transform: '{{ transform }} scale(1.0)', offset: 1 }),
28
- ])),
29
- ], {
30
- params: {
31
- time: '350ms',
32
- easing: 'cubic-bezier(.7,.31,.72,1.47)',
33
- display: 'block',
34
- transform: 'translate(-50%, -50%)',
35
- },
22
+ const bounceIn = animation([
23
+ style({ opacity: '0', display: '{{ display }}' }),
24
+ animate('{{ time}} {{ easing }}', keyframes([
25
+ style({ opacity: '0', transform: '{{ transform }} scale(0.0)', offset: 0 }),
26
+ style({ opacity: '0', transform: '{{ transform }} scale(0.8)', offset: 0.5 }),
27
+ style({ opacity: '1', transform: '{{ transform }} scale(1.0)', offset: 1 }),
28
+ ])),
29
+ ], {
30
+ params: {
31
+ time: '350ms',
32
+ easing: 'cubic-bezier(.7,.31,.72,1.47)',
33
+ display: 'block',
34
+ transform: 'translate(-50%, -50%)',
35
+ },
36
36
  });
37
37
 
38
- const collapseY = animation([
39
- style({ height: '*', overflow: 'hidden', 'box-sizing': 'border-box' }),
40
- animate('{{ time }} {{ easing }}', style({ height: '0', padding: '0px' })),
41
- ], { params: { time: '350ms', easing: 'ease' } });
42
- const collapseYWithMargin = animation([
43
- style({ 'margin-top': '0' }),
44
- animate('{{ time }} {{ easing }}', style({ 'margin-left': '-100%' })),
45
- ], {
46
- params: { time: '500ms', easing: 'ease' },
47
- });
48
- const collapseX = animation([
49
- style({ width: '*', overflow: 'hidden', 'box-sizing': 'border-box' }),
50
- animate('{{ time }} {{ easing }}', style({ width: '0', padding: '0px' })),
51
- ], { params: { time: '350ms', easing: 'ease' } });
52
- const expandY = animation([
53
- style({ height: '0', overflow: 'hidden', 'box-sizing': 'border-box' }),
54
- animate('{{ time }} {{ easing }}', style({ height: '*', padding: '*' })),
55
- ], { params: { time: '350ms', easing: 'ease' } });
56
- const expandYWithMargin = animation([
57
- style({ 'margin-top': '-100%' }),
58
- animate('{{ time }} {{ easing }}', style({ 'margin-top': '0' })),
59
- ], {
60
- params: { time: '500ms', easing: 'ease' },
61
- });
62
- const expandX = animation([
63
- style({ width: '0', overflow: 'hidden', 'box-sizing': 'border-box' }),
64
- animate('{{ time }} {{ easing }}', style({ width: '*', padding: '*' })),
65
- ], { params: { time: '350ms', easing: 'ease' } });
66
- const collapse = trigger('collapse', [
67
- state('collapsed', style({ height: '0', overflow: 'hidden' })),
68
- state('expanded', style({ height: '*', overflow: 'hidden' })),
69
- transition('expanded => collapsed', useAnimation(collapseY)),
70
- transition('collapsed => expanded', useAnimation(expandY)),
71
- ]);
72
- const collapseWithMargin = trigger('collapseWithMargin', [
73
- state('collapsed', style({ 'margin-top': '-100%' })),
74
- state('expanded', style({ 'margin-top': '0' })),
75
- transition('expanded => collapsed', useAnimation(collapseYWithMargin), {
76
- params: { time: '400ms', easing: 'linear' },
77
- }),
78
- transition('collapsed => expanded', useAnimation(expandYWithMargin)),
79
- ]);
80
- const collapseLinearWithMargin = trigger('collapseLinearWithMargin', [
81
- state('collapsed', style({ 'margin-top': '-100vh' })),
82
- state('expanded', style({ 'margin-top': '0' })),
83
- transition('expanded => collapsed', useAnimation(collapseYWithMargin, { params: { time: '200ms', easing: 'linear' } })),
84
- transition('collapsed => expanded', useAnimation(expandYWithMargin, { params: { time: '250ms', easing: 'linear' } })),
38
+ const collapseY = animation([
39
+ style({ height: '*', overflow: 'hidden', 'box-sizing': 'border-box' }),
40
+ animate('{{ time }} {{ easing }}', style({ height: '0', padding: '0px' })),
41
+ ], { params: { time: '350ms', easing: 'ease' } });
42
+ const collapseYWithMargin = animation([
43
+ style({ 'margin-top': '0' }),
44
+ animate('{{ time }} {{ easing }}', style({ 'margin-left': '-100%' })),
45
+ ], {
46
+ params: { time: '500ms', easing: 'ease' },
47
+ });
48
+ const collapseX = animation([
49
+ style({ width: '*', overflow: 'hidden', 'box-sizing': 'border-box' }),
50
+ animate('{{ time }} {{ easing }}', style({ width: '0', padding: '0px' })),
51
+ ], { params: { time: '350ms', easing: 'ease' } });
52
+ const expandY = animation([
53
+ style({ height: '0', overflow: 'hidden', 'box-sizing': 'border-box' }),
54
+ animate('{{ time }} {{ easing }}', style({ height: '*', padding: '*' })),
55
+ ], { params: { time: '350ms', easing: 'ease' } });
56
+ const expandYWithMargin = animation([
57
+ style({ 'margin-top': '-100%' }),
58
+ animate('{{ time }} {{ easing }}', style({ 'margin-top': '0' })),
59
+ ], {
60
+ params: { time: '500ms', easing: 'ease' },
61
+ });
62
+ const expandX = animation([
63
+ style({ width: '0', overflow: 'hidden', 'box-sizing': 'border-box' }),
64
+ animate('{{ time }} {{ easing }}', style({ width: '*', padding: '*' })),
65
+ ], { params: { time: '350ms', easing: 'ease' } });
66
+ const collapse = trigger('collapse', [
67
+ state('collapsed', style({ height: '0', overflow: 'hidden' })),
68
+ state('expanded', style({ height: '*', overflow: 'hidden' })),
69
+ transition('expanded => collapsed', useAnimation(collapseY)),
70
+ transition('collapsed => expanded', useAnimation(expandY)),
71
+ ]);
72
+ const collapseWithMargin = trigger('collapseWithMargin', [
73
+ state('collapsed', style({ 'margin-top': '-100%' })),
74
+ state('expanded', style({ 'margin-top': '0' })),
75
+ transition('expanded => collapsed', useAnimation(collapseYWithMargin), {
76
+ params: { time: '400ms', easing: 'linear' },
77
+ }),
78
+ transition('collapsed => expanded', useAnimation(expandYWithMargin)),
79
+ ]);
80
+ const collapseLinearWithMargin = trigger('collapseLinearWithMargin', [
81
+ state('collapsed', style({ 'margin-top': '-100vh' })),
82
+ state('expanded', style({ 'margin-top': '0' })),
83
+ transition('expanded => collapsed', useAnimation(collapseYWithMargin, { params: { time: '200ms', easing: 'linear' } })),
84
+ transition('collapsed => expanded', useAnimation(expandYWithMargin, { params: { time: '250ms', easing: 'linear' } })),
85
85
  ]);
86
86
 
87
- const fadeIn = animation([style({ opacity: '0' }), animate('{{ time}} {{ easing }}', style({ opacity: '1' }))], {
88
- params: { time: '350ms', easing: 'ease' },
89
- });
90
- const fadeOut = animation([style({ opacity: '1' }), animate('{{ time}} {{ easing }}', style({ opacity: '0' }))], { params: { time: '350ms', easing: 'ease' } });
91
- const fadeInDown = animation([
92
- style({ opacity: '0', transform: '{{ transform }} translateY(-20px)' }),
93
- animate('{{ time }} {{ easing }}', style({ opacity: '1', transform: '{{ transform }} translateY(0)' })),
94
- ], { params: { time: '350ms', easing: 'ease', transform: '' } });
95
- const fadeInUp = animation([
96
- style({ opacity: '0', transform: '{{ transform }} translateY(20px)' }),
97
- animate('{{ time }} {{ easing }}', style({ opacity: '1', transform: '{{ transform }} translateY(0)' })),
98
- ], { params: { time: '350ms', easing: 'ease', transform: '' } });
99
- const fadeInLeft = animation([
100
- style({ opacity: '0', transform: '{{ transform }} translateX(20px)' }),
101
- animate('{{ time }} {{ easing }}', style({ opacity: '1', transform: '{{ transform }} translateX(0)' })),
102
- ], { params: { time: '350ms', easing: 'ease', transform: '' } });
103
- const fadeInRight = animation([
104
- style({ opacity: '0', transform: '{{ transform }} translateX(-20px)' }),
105
- animate('{{ time }} {{ easing }}', style({ opacity: '1', transform: '{{ transform }} translateX(0)' })),
106
- ], { params: { time: '350ms', easing: 'ease', transform: '' } });
107
- const fadeOutDown = animation([
108
- style({ opacity: '1', transform: '{{ transform }} translateY(0)' }),
109
- animate('{{ time }} {{ easing }}', style({ opacity: '0', transform: '{{ transform }} translateY(20px)' })),
110
- ], { params: { time: '350ms', easing: 'ease', transform: '' } });
111
- const fadeOutUp = animation([
112
- style({ opacity: '1', transform: '{{ transform }} translateY(0)' }),
113
- animate('{{ time }} {{ easing }}', style({ opacity: '0', transform: '{{ transform }} translateY(-20px)' })),
114
- ], { params: { time: '350ms', easing: 'ease', transform: '' } });
115
- const fadeOutLeft = animation([
116
- style({ opacity: '1', transform: '{{ transform }} translateX(0)' }),
117
- animate('{{ time }} {{ easing }}', style({ opacity: '0', transform: '{{ transform }} translateX(20px)' })),
118
- ], { params: { time: '350ms', easing: 'ease', transform: '' } });
119
- const fadeOutRight = animation([
120
- style({ opacity: '1', transform: '{{ transform }} translateX(0)' }),
121
- animate('{{ time }} {{ easing }}', style({ opacity: '0', transform: '{{ transform }} translateX(-20px)' })),
87
+ const fadeIn = animation([style({ opacity: '0' }), animate('{{ time}} {{ easing }}', style({ opacity: '1' }))], {
88
+ params: { time: '350ms', easing: 'ease' },
89
+ });
90
+ const fadeOut = animation([style({ opacity: '1' }), animate('{{ time}} {{ easing }}', style({ opacity: '0' }))], { params: { time: '350ms', easing: 'ease' } });
91
+ const fadeInDown = animation([
92
+ style({ opacity: '0', transform: '{{ transform }} translateY(-20px)' }),
93
+ animate('{{ time }} {{ easing }}', style({ opacity: '1', transform: '{{ transform }} translateY(0)' })),
94
+ ], { params: { time: '350ms', easing: 'ease', transform: '' } });
95
+ const fadeInUp = animation([
96
+ style({ opacity: '0', transform: '{{ transform }} translateY(20px)' }),
97
+ animate('{{ time }} {{ easing }}', style({ opacity: '1', transform: '{{ transform }} translateY(0)' })),
98
+ ], { params: { time: '350ms', easing: 'ease', transform: '' } });
99
+ const fadeInLeft = animation([
100
+ style({ opacity: '0', transform: '{{ transform }} translateX(20px)' }),
101
+ animate('{{ time }} {{ easing }}', style({ opacity: '1', transform: '{{ transform }} translateX(0)' })),
102
+ ], { params: { time: '350ms', easing: 'ease', transform: '' } });
103
+ const fadeInRight = animation([
104
+ style({ opacity: '0', transform: '{{ transform }} translateX(-20px)' }),
105
+ animate('{{ time }} {{ easing }}', style({ opacity: '1', transform: '{{ transform }} translateX(0)' })),
106
+ ], { params: { time: '350ms', easing: 'ease', transform: '' } });
107
+ const fadeOutDown = animation([
108
+ style({ opacity: '1', transform: '{{ transform }} translateY(0)' }),
109
+ animate('{{ time }} {{ easing }}', style({ opacity: '0', transform: '{{ transform }} translateY(20px)' })),
110
+ ], { params: { time: '350ms', easing: 'ease', transform: '' } });
111
+ const fadeOutUp = animation([
112
+ style({ opacity: '1', transform: '{{ transform }} translateY(0)' }),
113
+ animate('{{ time }} {{ easing }}', style({ opacity: '0', transform: '{{ transform }} translateY(-20px)' })),
114
+ ], { params: { time: '350ms', easing: 'ease', transform: '' } });
115
+ const fadeOutLeft = animation([
116
+ style({ opacity: '1', transform: '{{ transform }} translateX(0)' }),
117
+ animate('{{ time }} {{ easing }}', style({ opacity: '0', transform: '{{ transform }} translateX(20px)' })),
118
+ ], { params: { time: '350ms', easing: 'ease', transform: '' } });
119
+ const fadeOutRight = animation([
120
+ style({ opacity: '1', transform: '{{ transform }} translateX(0)' }),
121
+ animate('{{ time }} {{ easing }}', style({ opacity: '0', transform: '{{ transform }} translateX(-20px)' })),
122
122
  ], { params: { time: '350ms', easing: 'ease', transform: '' } });
123
123
 
124
- const fadeAnimation = trigger('fade', [
125
- transition(':enter', useAnimation(fadeIn)),
126
- transition(':leave', useAnimation(fadeOut)),
127
- ]);
128
- const dialogAnimation = trigger('dialog', [
129
- transition(':enter', useAnimation(fadeInDown)),
130
- transition(':leave', useAnimation(fadeOut)),
124
+ const fadeAnimation = trigger('fade', [
125
+ transition(':enter', useAnimation(fadeIn)),
126
+ transition(':leave', useAnimation(fadeOut)),
127
+ ]);
128
+ const dialogAnimation = trigger('dialog', [
129
+ transition(':enter', useAnimation(fadeInDown)),
130
+ transition(':leave', useAnimation(fadeOut)),
131
131
  ]);
132
132
 
133
- const slideFromBottom = trigger('slideFromBottom', [
134
- transition('* <=> *', [
135
- style({ 'margin-top': '20px', opacity: '0' }),
136
- animate('0.2s ease-out', style({ opacity: '1', 'margin-top': '0px' })),
137
- ]),
133
+ const slideFromBottom = trigger('slideFromBottom', [
134
+ transition('* <=> *', [
135
+ style({ 'margin-top': '20px', opacity: '0' }),
136
+ animate('0.2s ease-out', style({ opacity: '1', 'margin-top': '0px' })),
137
+ ]),
138
138
  ]);
139
139
 
140
- const toastInOut = trigger('toastInOut', [
141
- transition('* <=> *', [
142
- query(':enter', [
143
- style({ opacity: 0, transform: 'translateY(20px)' }),
144
- animate('350ms ease', style({ opacity: 1, transform: 'translateY(0)' })),
145
- ], { optional: true }),
146
- query(':leave', animate('450ms ease', style({ opacity: 0 })), {
147
- optional: true,
148
- }),
149
- ]),
140
+ const toastInOut = trigger('toastInOut', [
141
+ transition('* <=> *', [
142
+ query(':enter', [
143
+ style({ opacity: 0, transform: 'translateY(20px)' }),
144
+ animate('350ms ease', style({ opacity: 1, transform: 'translateY(0)' })),
145
+ ], { optional: true }),
146
+ query(':leave', animate('450ms ease', style({ opacity: 0 })), {
147
+ optional: true,
148
+ }),
149
+ ]),
150
150
  ]);
151
151
 
152
- class BreadcrumbItemsComponent {
153
- constructor() {
154
- this.items = [];
155
- }
156
- }
157
- BreadcrumbItemsComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BreadcrumbItemsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
158
- BreadcrumbItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: BreadcrumbItemsComponent, selector: "abp-breadcrumb-items", inputs: { items: "items" }, ngImport: i0, template: "<ol class=\"breadcrumb\" *ngIf=\"items.length\">\r\n <li class=\"breadcrumb-item\">\r\n <a routerLink=\"/\"><i class=\"fa fa-home\"></i> </a>\r\n </li>\r\n <li\r\n *ngFor=\"let item of items; let last = last\"\r\n class=\"breadcrumb-item\"\r\n [class.active]=\"last\"\r\n aria-current=\"page\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"item.path ? linkTemplate : textTemplate; context: { $implicit: item }\"\r\n ></ng-container>\r\n </li>\r\n</ol>\r\n\r\n<ng-template #linkTemplate let-item>\r\n <a [routerLink]=\"item.path\"> {{ item.name | abpLocalization }}</a>\r\n</ng-template>\r\n\r\n<ng-template #textTemplate let-item>\r\n {{ item.name | abpLocalization }}\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] });
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BreadcrumbItemsComponent, decorators: [{
160
- type: Component,
161
- args: [{ selector: 'abp-breadcrumb-items', template: "<ol class=\"breadcrumb\" *ngIf=\"items.length\">\r\n <li class=\"breadcrumb-item\">\r\n <a routerLink=\"/\"><i class=\"fa fa-home\"></i> </a>\r\n </li>\r\n <li\r\n *ngFor=\"let item of items; let last = last\"\r\n class=\"breadcrumb-item\"\r\n [class.active]=\"last\"\r\n aria-current=\"page\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"item.path ? linkTemplate : textTemplate; context: { $implicit: item }\"\r\n ></ng-container>\r\n </li>\r\n</ol>\r\n\r\n<ng-template #linkTemplate let-item>\r\n <a [routerLink]=\"item.path\"> {{ item.name | abpLocalization }}</a>\r\n</ng-template>\r\n\r\n<ng-template #textTemplate let-item>\r\n {{ item.name | abpLocalization }}\r\n</ng-template>\r\n" }]
162
- }], propDecorators: { items: [{
163
- type: Input
152
+ class BreadcrumbItemsComponent {
153
+ constructor() {
154
+ this.items = [];
155
+ }
156
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: BreadcrumbItemsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
157
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: BreadcrumbItemsComponent, selector: "abp-breadcrumb-items", inputs: { items: "items" }, ngImport: i0, template: "<ol class=\"breadcrumb\" *ngIf=\"items.length\">\r\n <li class=\"breadcrumb-item\">\r\n <a routerLink=\"/\"><i class=\"fa fa-home\" aria-hidden=\"true\"></i> </a>\r\n </li>\r\n <li\r\n *ngFor=\"let item of items; let last = last\"\r\n class=\"breadcrumb-item\"\r\n [class.active]=\"last\"\r\n aria-current=\"page\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"item.path ? linkTemplate : textTemplate; context: { $implicit: item }\"\r\n ></ng-container>\r\n </li>\r\n</ol>\r\n\r\n<ng-template #linkTemplate let-item>\r\n <a [routerLink]=\"item.path\"> {{ item.name | abpLocalization }}</a>\r\n</ng-template>\r\n\r\n<ng-template #textTemplate let-item>\r\n {{ item.name | abpLocalization }}\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] }); }
158
+ }
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: BreadcrumbItemsComponent, decorators: [{
160
+ type: Component,
161
+ args: [{ selector: 'abp-breadcrumb-items', template: "<ol class=\"breadcrumb\" *ngIf=\"items.length\">\r\n <li class=\"breadcrumb-item\">\r\n <a routerLink=\"/\"><i class=\"fa fa-home\" aria-hidden=\"true\"></i> </a>\r\n </li>\r\n <li\r\n *ngFor=\"let item of items; let last = last\"\r\n class=\"breadcrumb-item\"\r\n [class.active]=\"last\"\r\n aria-current=\"page\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"item.path ? linkTemplate : textTemplate; context: { $implicit: item }\"\r\n ></ng-container>\r\n </li>\r\n</ol>\r\n\r\n<ng-template #linkTemplate let-item>\r\n <a [routerLink]=\"item.path\"> {{ item.name | abpLocalization }}</a>\r\n</ng-template>\r\n\r\n<ng-template #textTemplate let-item>\r\n {{ item.name | abpLocalization }}\r\n</ng-template>\r\n" }]
162
+ }], propDecorators: { items: [{
163
+ type: Input
164
164
  }] } });
165
165
 
166
- class BreadcrumbComponent {
167
- constructor(cdRef, router, routes, subscription, routerEvents) {
168
- this.cdRef = cdRef;
169
- this.router = router;
170
- this.routes = routes;
171
- this.subscription = subscription;
172
- this.routerEvents = routerEvents;
173
- this.segments = [];
174
- }
175
- ngOnInit() {
176
- this.subscription.addOne(this.routerEvents.getNavigationEvents('End').pipe(startWith(null), map(() => this.routes.search({ path: getRoutePath(this.router) }))), route => {
177
- this.segments = [];
178
- if (route) {
179
- let node = { parent: route };
180
- while (node.parent) {
181
- node = node.parent;
182
- const { parent, children, isLeaf, path, ...segment } = node;
183
- if (!isAdministration(segment))
184
- this.segments.unshift(segment);
185
- }
186
- this.cdRef.detectChanges();
187
- }
188
- });
189
- }
190
- }
191
- BreadcrumbComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.Router }, { token: i2.RoutesService }, { token: i2.SubscriptionService }, { token: i2.RouterEvents }], target: i0.ɵɵFactoryTarget.Component });
192
- BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: BreadcrumbComponent, selector: "abp-breadcrumb", providers: [SubscriptionService], ngImport: i0, template: "<abp-breadcrumb-items [items]=\"segments\"></abp-breadcrumb-items>\r\n", dependencies: [{ kind: "component", type: BreadcrumbItemsComponent, selector: "abp-breadcrumb-items", inputs: ["items"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BreadcrumbComponent, decorators: [{
194
- type: Component,
195
- args: [{ selector: 'abp-breadcrumb', changeDetection: ChangeDetectionStrategy.OnPush, providers: [SubscriptionService], template: "<abp-breadcrumb-items [items]=\"segments\"></abp-breadcrumb-items>\r\n" }]
196
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1$1.Router }, { type: i2.RoutesService }, { type: i2.SubscriptionService }, { type: i2.RouterEvents }]; } });
197
- function isAdministration(route) {
198
- return route.name === "AbpUiNavigation::Menu:Administration" /* eThemeSharedRouteNames.Administration */;
166
+ class BreadcrumbComponent {
167
+ constructor(cdRef, router, routes, subscription, routerEvents) {
168
+ this.cdRef = cdRef;
169
+ this.router = router;
170
+ this.routes = routes;
171
+ this.subscription = subscription;
172
+ this.routerEvents = routerEvents;
173
+ this.segments = [];
174
+ }
175
+ ngOnInit() {
176
+ this.subscription.addOne(this.routerEvents.getNavigationEvents('End').pipe(startWith(null), map(() => this.routes.search({ path: getRoutePath(this.router) }))), route => {
177
+ this.segments = [];
178
+ if (route) {
179
+ let node = { parent: route };
180
+ while (node.parent) {
181
+ node = node.parent;
182
+ const { parent, children, isLeaf, path, ...segment } = node;
183
+ if (!isAdministration(segment))
184
+ this.segments.unshift(segment);
185
+ }
186
+ this.cdRef.detectChanges();
187
+ }
188
+ });
189
+ }
190
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.Router }, { token: i2.RoutesService }, { token: i2.SubscriptionService }, { token: i2.RouterEvents }], target: i0.ɵɵFactoryTarget.Component }); }
191
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: BreadcrumbComponent, selector: "abp-breadcrumb", providers: [SubscriptionService], ngImport: i0, template: "<abp-breadcrumb-items [items]=\"segments\"></abp-breadcrumb-items>\r\n", dependencies: [{ kind: "component", type: BreadcrumbItemsComponent, selector: "abp-breadcrumb-items", inputs: ["items"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
192
+ }
193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: BreadcrumbComponent, decorators: [{
194
+ type: Component,
195
+ args: [{ selector: 'abp-breadcrumb', changeDetection: ChangeDetectionStrategy.OnPush, providers: [SubscriptionService], template: "<abp-breadcrumb-items [items]=\"segments\"></abp-breadcrumb-items>\r\n" }]
196
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1$1.Router }, { type: i2.RoutesService }, { type: i2.SubscriptionService }, { type: i2.RouterEvents }]; } });
197
+ function isAdministration(route) {
198
+ return route.name === "AbpUiNavigation::Menu:Administration" /* eThemeSharedRouteNames.Administration */;
199
199
  }
200
200
 
201
- class ButtonComponent {
202
- constructor(renderer) {
203
- this.renderer = renderer;
204
- this.buttonId = '';
205
- this.buttonClass = 'btn btn-primary';
206
- this.buttonType = 'button';
207
- this.formName = undefined;
208
- this.loading = false;
209
- this.disabled = false;
210
- this.click = new EventEmitter();
211
- this.focus = new EventEmitter();
212
- this.blur = new EventEmitter();
213
- this.abpClick = new EventEmitter();
214
- this.abpFocus = new EventEmitter();
215
- this.abpBlur = new EventEmitter();
216
- }
217
- get icon() {
218
- return `${this.loading ? 'fa fa-spinner fa-spin' : this.iconClass || 'd-none'}`;
219
- }
220
- ngOnInit() {
221
- if (this.attributes) {
222
- Object.keys(this.attributes).forEach(key => {
223
- if (this.attributes?.[key]) {
224
- this.renderer.setAttribute(this.buttonRef.nativeElement, key, this.attributes[key]);
225
- }
226
- });
227
- }
228
- }
229
- }
230
- ButtonComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ButtonComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
231
- ButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ButtonComponent, selector: "abp-button", inputs: { buttonId: "buttonId", buttonClass: "buttonClass", buttonType: "buttonType", formName: "formName", iconClass: "iconClass", loading: "loading", disabled: "disabled", attributes: "attributes" }, outputs: { click: "click", focus: "focus", blur: "blur", abpClick: "abpClick", abpFocus: "abpFocus", abpBlur: "abpBlur" }, viewQueries: [{ propertyName: "buttonRef", first: true, predicate: ["button"], descendants: true, static: true }], ngImport: i0, template: `
201
+ class ButtonComponent {
202
+ get icon() {
203
+ return `${this.loading ? 'fa fa-spinner fa-spin' : this.iconClass || 'd-none'}`;
204
+ }
205
+ constructor(renderer) {
206
+ this.renderer = renderer;
207
+ this.buttonId = '';
208
+ this.buttonClass = 'btn btn-primary';
209
+ this.buttonType = 'button';
210
+ this.formName = undefined;
211
+ this.loading = false;
212
+ this.disabled = false;
213
+ this.click = new EventEmitter();
214
+ this.focus = new EventEmitter();
215
+ this.blur = new EventEmitter();
216
+ this.abpClick = new EventEmitter();
217
+ this.abpFocus = new EventEmitter();
218
+ this.abpBlur = new EventEmitter();
219
+ }
220
+ ngOnInit() {
221
+ if (this.attributes) {
222
+ Object.keys(this.attributes).forEach(key => {
223
+ if (this.attributes?.[key]) {
224
+ this.renderer.setAttribute(this.buttonRef.nativeElement, key, this.attributes[key]);
225
+ }
226
+ });
227
+ }
228
+ }
229
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ButtonComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
230
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: ButtonComponent, selector: "abp-button", inputs: { buttonId: "buttonId", buttonClass: "buttonClass", buttonType: "buttonType", formName: "formName", iconClass: "iconClass", loading: "loading", disabled: "disabled", attributes: "attributes" }, outputs: { click: "click", focus: "focus", blur: "blur", abpClick: "abpClick", abpFocus: "abpFocus", abpBlur: "abpBlur" }, viewQueries: [{ propertyName: "buttonRef", first: true, predicate: ["button"], descendants: true, static: true }], ngImport: i0, template: `
232
231
  <button
233
232
  #button
234
233
  [id]="buttonId"
@@ -240,13 +239,14 @@ ButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versio
240
239
  (focus)="focus.next($event); abpFocus.next($event)"
241
240
  (blur)="blur.next($event); abpBlur.next($event)"
242
241
  >
243
- <i [ngClass]="icon" class="me-1"></i><ng-content></ng-content>
242
+ <i [ngClass]="icon" class="me-1" aria-hidden="true"></i><ng-content></ng-content>
244
243
  </button>
245
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }] });
246
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ButtonComponent, decorators: [{
247
- type: Component,
248
- args: [{
249
- selector: 'abp-button',
244
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }] }); }
245
+ }
246
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ButtonComponent, decorators: [{
247
+ type: Component,
248
+ args: [{
249
+ selector: 'abp-button',
250
250
  template: `
251
251
  <button
252
252
  #button
@@ -259,231 +259,230 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
259
259
  (focus)="focus.next($event); abpFocus.next($event)"
260
260
  (blur)="blur.next($event); abpBlur.next($event)"
261
261
  >
262
- <i [ngClass]="icon" class="me-1"></i><ng-content></ng-content>
262
+ <i [ngClass]="icon" class="me-1" aria-hidden="true"></i><ng-content></ng-content>
263
263
  </button>
264
- `,
265
- }]
266
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { buttonId: [{
267
- type: Input
268
- }], buttonClass: [{
269
- type: Input
270
- }], buttonType: [{
271
- type: Input
272
- }], formName: [{
273
- type: Input
274
- }], iconClass: [{
275
- type: Input
276
- }], loading: [{
277
- type: Input
278
- }], disabled: [{
279
- type: Input
280
- }], attributes: [{
281
- type: Input
282
- }], click: [{
283
- type: Output
284
- }], focus: [{
285
- type: Output
286
- }], blur: [{
287
- type: Output
288
- }], abpClick: [{
289
- type: Output
290
- }], abpFocus: [{
291
- type: Output
292
- }], abpBlur: [{
293
- type: Output
294
- }], buttonRef: [{
295
- type: ViewChild,
296
- args: ['button', { static: true }]
264
+ `,
265
+ }]
266
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { buttonId: [{
267
+ type: Input
268
+ }], buttonClass: [{
269
+ type: Input
270
+ }], buttonType: [{
271
+ type: Input
272
+ }], formName: [{
273
+ type: Input
274
+ }], iconClass: [{
275
+ type: Input
276
+ }], loading: [{
277
+ type: Input
278
+ }], disabled: [{
279
+ type: Input
280
+ }], attributes: [{
281
+ type: Input
282
+ }], click: [{
283
+ type: Output
284
+ }], focus: [{
285
+ type: Output
286
+ }], blur: [{
287
+ type: Output
288
+ }], abpClick: [{
289
+ type: Output
290
+ }], abpFocus: [{
291
+ type: Output
292
+ }], abpBlur: [{
293
+ type: Output
294
+ }], buttonRef: [{
295
+ type: ViewChild,
296
+ args: ['button', { static: true }]
297
297
  }] } });
298
298
 
299
- var Confirmation;
300
- (function (Confirmation) {
301
- let Status;
302
- (function (Status) {
303
- Status["confirm"] = "confirm";
304
- Status["reject"] = "reject";
305
- Status["dismiss"] = "dismiss";
306
- })(Status = Confirmation.Status || (Confirmation.Status = {}));
299
+ var Confirmation;
300
+ (function (Confirmation) {
301
+ let Status;
302
+ (function (Status) {
303
+ Status["confirm"] = "confirm";
304
+ Status["reject"] = "reject";
305
+ Status["dismiss"] = "dismiss";
306
+ })(Status = Confirmation.Status || (Confirmation.Status = {}));
307
307
  })(Confirmation || (Confirmation = {}));
308
308
 
309
- const CONFIRMATION_ICONS = new InjectionToken('CONFIRMATION_ICONS');
310
- const DEFAULT_CONFIRMATION_ICONS = {
311
- info: 'fa fa-info-circle',
312
- success: 'fa fa-check-circle',
313
- warning: 'fa fa-exclamation-triangle',
314
- error: 'fa fa-times-circle',
315
- default: 'fa fa-question-circle',
316
- neutral: '',
309
+ const CONFIRMATION_ICONS = new InjectionToken('CONFIRMATION_ICONS');
310
+ const DEFAULT_CONFIRMATION_ICONS = {
311
+ info: 'fa fa-info-circle',
312
+ success: 'fa fa-check-circle',
313
+ warning: 'fa fa-exclamation-triangle',
314
+ error: 'fa fa-times-circle',
315
+ default: 'fa fa-question-circle',
316
+ neutral: '',
317
317
  };
318
318
 
319
- class ConfirmationComponent {
320
- constructor(icons) {
321
- this.icons = icons;
322
- this.confirm = Confirmation.Status.confirm;
323
- this.reject = Confirmation.Status.reject;
324
- this.dismiss = Confirmation.Status.dismiss;
325
- }
326
- close(status) {
327
- this.clear(status);
328
- }
329
- getIconClass({ severity, options }) {
330
- if (options && options.icon) {
331
- return options.icon;
332
- }
333
- if (!this.icons) {
334
- return '';
335
- }
336
- if (severity) {
337
- return this.icons[severity];
338
- }
339
- return this.icons.default;
340
- }
341
- isCustomIconExists({ options }) {
342
- return !!(options && (options.iconTemplate || options.icon));
343
- }
344
- isIconTemplateExits({ options }) {
345
- return !!(options && options.iconTemplate);
346
- }
347
- }
348
- ConfirmationComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ConfirmationComponent, deps: [{ token: CONFIRMATION_ICONS }], target: i0.ɵɵFactoryTarget.Component });
349
- ConfirmationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ConfirmationComponent, selector: "abp-confirmation", ngImport: i0, template: "<div class=\"confirmation\" *ngIf=\"confirmation$ | async as data\">\r\n <div\r\n class=\"confirmation-backdrop\"\r\n (click)=\"data.options?.dismissible ? close(dismiss) : null\"\r\n ></div>\r\n <div class=\"confirmation-dialog\">\r\n <div class=\"icon-container\" [ngClass]=\"data.severity\" *ngIf=\"data.severity || isCustomIconExists(data)\">\r\n <div [outerHTML]=\"data.options.iconTemplate\" *ngIf=\"isIconTemplateExits(data); else iconHolder\" ></div>\r\n <ng-template #iconHolder>\r\n <i class=\"icon\" [ngClass]=\"getIconClass(data)\"></i>\r\n </ng-template>\r\n </div>\r\n <div class=\"content\">\r\n <h1\r\n class=\"title\"\r\n *ngIf=\"data.title\"\r\n [innerHTML]=\"data.title | abpLocalization: data.options?.titleLocalizationParams\"\r\n ></h1>\r\n <p\r\n class=\"message\"\r\n *ngIf=\"data.message\"\r\n [innerHTML]=\"data.message | abpLocalization: data.options?.messageLocalizationParams\"\r\n ></p>\r\n </div>\r\n <div class=\"footer\">\r\n <button\r\n id=\"cancel\"\r\n class=\"confirmation-button confirmation-button--reject\"\r\n [innerHTML]=\"data.options?.cancelText || 'AbpUi::Cancel' | abpLocalization\"\r\n *ngIf=\"!data?.options?.hideCancelBtn\"\r\n (click)=\"close(reject)\"\r\n ></button>\r\n <button\r\n id=\"confirm\"\r\n class=\"confirmation-button confirmation-button--approve\"\r\n [innerHTML]=\"data.options?.yesText || 'AbpUi::Yes' | abpLocalization\"\r\n *ngIf=\"!data?.options?.hideYesBtn\"\r\n (click)=\"close(confirm)\"\r\n ></button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".confirmation{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:1060}.confirmation .confirmation-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:1061!important}.confirmation .confirmation-dialog{display:flex;flex-direction:column;margin:20px auto;padding:0;width:450px;min-height:300px;z-index:1062!important}@media screen and (max-width: 500px){.confirmation .confirmation-dialog{width:90vw}}.confirmation .confirmation-dialog .icon-container{display:flex;align-items:center;justify-content:center;margin:0 0 10px;padding:20px}.confirmation .confirmation-dialog .icon-container .icon{width:100px;height:100px;stroke-width:1;font-size:80px;text-align:center}.confirmation .confirmation-dialog .content{flex-grow:1;display:block}.confirmation .confirmation-dialog .content .title{display:block;margin:0;padding:0;font-size:27px;font-weight:600;text-align:center}.confirmation .confirmation-dialog .content .message{display:block;margin:10px auto;padding:20px;font-size:16px;font-weight:400;text-align:center}.confirmation .confirmation-dialog .footer{display:flex;align-items:center;justify-content:flex-end;margin:10px 0 0;padding:20px;width:100%}.confirmation .confirmation-dialog .footer .confirmation-button{display:inline-block;margin:0 5px;padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:600}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] });
350
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ConfirmationComponent, decorators: [{
351
- type: Component,
352
- args: [{ selector: 'abp-confirmation', template: "<div class=\"confirmation\" *ngIf=\"confirmation$ | async as data\">\r\n <div\r\n class=\"confirmation-backdrop\"\r\n (click)=\"data.options?.dismissible ? close(dismiss) : null\"\r\n ></div>\r\n <div class=\"confirmation-dialog\">\r\n <div class=\"icon-container\" [ngClass]=\"data.severity\" *ngIf=\"data.severity || isCustomIconExists(data)\">\r\n <div [outerHTML]=\"data.options.iconTemplate\" *ngIf=\"isIconTemplateExits(data); else iconHolder\" ></div>\r\n <ng-template #iconHolder>\r\n <i class=\"icon\" [ngClass]=\"getIconClass(data)\"></i>\r\n </ng-template>\r\n </div>\r\n <div class=\"content\">\r\n <h1\r\n class=\"title\"\r\n *ngIf=\"data.title\"\r\n [innerHTML]=\"data.title | abpLocalization: data.options?.titleLocalizationParams\"\r\n ></h1>\r\n <p\r\n class=\"message\"\r\n *ngIf=\"data.message\"\r\n [innerHTML]=\"data.message | abpLocalization: data.options?.messageLocalizationParams\"\r\n ></p>\r\n </div>\r\n <div class=\"footer\">\r\n <button\r\n id=\"cancel\"\r\n class=\"confirmation-button confirmation-button--reject\"\r\n [innerHTML]=\"data.options?.cancelText || 'AbpUi::Cancel' | abpLocalization\"\r\n *ngIf=\"!data?.options?.hideCancelBtn\"\r\n (click)=\"close(reject)\"\r\n ></button>\r\n <button\r\n id=\"confirm\"\r\n class=\"confirmation-button confirmation-button--approve\"\r\n [innerHTML]=\"data.options?.yesText || 'AbpUi::Yes' | abpLocalization\"\r\n *ngIf=\"!data?.options?.hideYesBtn\"\r\n (click)=\"close(confirm)\"\r\n ></button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".confirmation{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:1060}.confirmation .confirmation-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:1061!important}.confirmation .confirmation-dialog{display:flex;flex-direction:column;margin:20px auto;padding:0;width:450px;min-height:300px;z-index:1062!important}@media screen and (max-width: 500px){.confirmation .confirmation-dialog{width:90vw}}.confirmation .confirmation-dialog .icon-container{display:flex;align-items:center;justify-content:center;margin:0 0 10px;padding:20px}.confirmation .confirmation-dialog .icon-container .icon{width:100px;height:100px;stroke-width:1;font-size:80px;text-align:center}.confirmation .confirmation-dialog .content{flex-grow:1;display:block}.confirmation .confirmation-dialog .content .title{display:block;margin:0;padding:0;font-size:27px;font-weight:600;text-align:center}.confirmation .confirmation-dialog .content .message{display:block;margin:10px auto;padding:20px;font-size:16px;font-weight:400;text-align:center}.confirmation .confirmation-dialog .footer{display:flex;align-items:center;justify-content:flex-end;margin:10px 0 0;padding:20px;width:100%}.confirmation .confirmation-dialog .footer .confirmation-button{display:inline-block;margin:0 5px;padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:600}\n"] }]
353
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
354
- type: Inject,
355
- args: [CONFIRMATION_ICONS]
319
+ class ConfirmationComponent {
320
+ constructor(icons) {
321
+ this.icons = icons;
322
+ this.confirm = Confirmation.Status.confirm;
323
+ this.reject = Confirmation.Status.reject;
324
+ this.dismiss = Confirmation.Status.dismiss;
325
+ }
326
+ close(status) {
327
+ this.clear(status);
328
+ }
329
+ getIconClass({ severity, options }) {
330
+ if (options && options.icon) {
331
+ return options.icon;
332
+ }
333
+ if (!this.icons) {
334
+ return '';
335
+ }
336
+ if (severity) {
337
+ return this.icons[severity];
338
+ }
339
+ return this.icons.default;
340
+ }
341
+ isCustomIconExists({ options }) {
342
+ return !!(options && (options.iconTemplate || options.icon));
343
+ }
344
+ isIconTemplateExits({ options }) {
345
+ return !!(options && options.iconTemplate);
346
+ }
347
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ConfirmationComponent, deps: [{ token: CONFIRMATION_ICONS }], target: i0.ɵɵFactoryTarget.Component }); }
348
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: ConfirmationComponent, selector: "abp-confirmation", ngImport: i0, template: "<div class=\"confirmation\" *ngIf=\"confirmation$ | async as data\">\r\n <div\r\n class=\"confirmation-backdrop\"\r\n (click)=\"data.options?.dismissible ? close(dismiss) : null\"\r\n ></div>\r\n <div class=\"confirmation-dialog\">\r\n <div class=\"icon-container\" [ngClass]=\"data.severity\" *ngIf=\"data.severity || isCustomIconExists(data)\">\r\n <div [outerHTML]=\"data.options.iconTemplate\" *ngIf=\"isIconTemplateExits(data); else iconHolder\" ></div>\r\n <ng-template #iconHolder>\r\n <i class=\"icon\" [ngClass]=\"getIconClass(data)\"></i>\r\n </ng-template>\r\n </div>\r\n <div class=\"content\">\r\n <h1\r\n class=\"title\"\r\n *ngIf=\"data.title\"\r\n [innerHTML]=\"data.title | abpLocalization: data.options?.titleLocalizationParams\"\r\n ></h1>\r\n <p\r\n class=\"message\"\r\n *ngIf=\"data.message\"\r\n [innerHTML]=\"data.message | abpLocalization: data.options?.messageLocalizationParams\"\r\n ></p>\r\n </div>\r\n <div class=\"footer\">\r\n <button\r\n id=\"cancel\"\r\n class=\"confirmation-button confirmation-button--reject\"\r\n [innerHTML]=\"data.options?.cancelText || 'AbpUi::Cancel' | abpLocalization\"\r\n *ngIf=\"!data?.options?.hideCancelBtn\"\r\n (click)=\"close(reject)\"\r\n ></button>\r\n <button\r\n id=\"confirm\"\r\n class=\"confirmation-button confirmation-button--approve\"\r\n [innerHTML]=\"data.options?.yesText || 'AbpUi::Yes' | abpLocalization\"\r\n *ngIf=\"!data?.options?.hideYesBtn\"\r\n (click)=\"close(confirm)\"\r\n ></button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".confirmation{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:1060}.confirmation .confirmation-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:1061!important}.confirmation .confirmation-dialog{display:flex;flex-direction:column;margin:20px auto;padding:0;width:450px;min-height:300px;z-index:1062!important}@media screen and (max-width: 500px){.confirmation .confirmation-dialog{width:90vw}}.confirmation .confirmation-dialog .icon-container{display:flex;align-items:center;justify-content:center;margin:0 0 10px;padding:20px}.confirmation .confirmation-dialog .icon-container .icon{width:100px;height:100px;stroke-width:1;font-size:80px;text-align:center}.confirmation .confirmation-dialog .content{flex-grow:1;display:block}.confirmation .confirmation-dialog .content .title{display:block;margin:0;padding:0;font-size:27px;font-weight:600;text-align:center}.confirmation .confirmation-dialog .content .message{display:block;margin:10px auto;padding:20px;font-size:16px;font-weight:400;text-align:center}.confirmation .confirmation-dialog .footer{display:flex;align-items:center;justify-content:flex-end;margin:10px 0 0;padding:20px;width:100%}.confirmation .confirmation-dialog .footer .confirmation-button{display:inline-block;margin:0 5px;padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:600}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] }); }
349
+ }
350
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ConfirmationComponent, decorators: [{
351
+ type: Component,
352
+ args: [{ selector: 'abp-confirmation', template: "<div class=\"confirmation\" *ngIf=\"confirmation$ | async as data\">\r\n <div\r\n class=\"confirmation-backdrop\"\r\n (click)=\"data.options?.dismissible ? close(dismiss) : null\"\r\n ></div>\r\n <div class=\"confirmation-dialog\">\r\n <div class=\"icon-container\" [ngClass]=\"data.severity\" *ngIf=\"data.severity || isCustomIconExists(data)\">\r\n <div [outerHTML]=\"data.options.iconTemplate\" *ngIf=\"isIconTemplateExits(data); else iconHolder\" ></div>\r\n <ng-template #iconHolder>\r\n <i class=\"icon\" [ngClass]=\"getIconClass(data)\"></i>\r\n </ng-template>\r\n </div>\r\n <div class=\"content\">\r\n <h1\r\n class=\"title\"\r\n *ngIf=\"data.title\"\r\n [innerHTML]=\"data.title | abpLocalization: data.options?.titleLocalizationParams\"\r\n ></h1>\r\n <p\r\n class=\"message\"\r\n *ngIf=\"data.message\"\r\n [innerHTML]=\"data.message | abpLocalization: data.options?.messageLocalizationParams\"\r\n ></p>\r\n </div>\r\n <div class=\"footer\">\r\n <button\r\n id=\"cancel\"\r\n class=\"confirmation-button confirmation-button--reject\"\r\n [innerHTML]=\"data.options?.cancelText || 'AbpUi::Cancel' | abpLocalization\"\r\n *ngIf=\"!data?.options?.hideCancelBtn\"\r\n (click)=\"close(reject)\"\r\n ></button>\r\n <button\r\n id=\"confirm\"\r\n class=\"confirmation-button confirmation-button--approve\"\r\n [innerHTML]=\"data.options?.yesText || 'AbpUi::Yes' | abpLocalization\"\r\n *ngIf=\"!data?.options?.hideYesBtn\"\r\n (click)=\"close(confirm)\"\r\n ></button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".confirmation{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:1060}.confirmation .confirmation-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:1061!important}.confirmation .confirmation-dialog{display:flex;flex-direction:column;margin:20px auto;padding:0;width:450px;min-height:300px;z-index:1062!important}@media screen and (max-width: 500px){.confirmation .confirmation-dialog{width:90vw}}.confirmation .confirmation-dialog .icon-container{display:flex;align-items:center;justify-content:center;margin:0 0 10px;padding:20px}.confirmation .confirmation-dialog .icon-container .icon{width:100px;height:100px;stroke-width:1;font-size:80px;text-align:center}.confirmation .confirmation-dialog .content{flex-grow:1;display:block}.confirmation .confirmation-dialog .content .title{display:block;margin:0;padding:0;font-size:27px;font-weight:600;text-align:center}.confirmation .confirmation-dialog .content .message{display:block;margin:10px auto;padding:20px;font-size:16px;font-weight:400;text-align:center}.confirmation .confirmation-dialog .footer{display:flex;align-items:center;justify-content:flex-end;margin:10px 0 0;padding:20px;width:100%}.confirmation .confirmation-dialog .footer .confirmation-button{display:inline-block;margin:0 5px;padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:600}\n"] }]
353
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
354
+ type: Inject,
355
+ args: [CONFIRMATION_ICONS]
356
356
  }] }]; } });
357
357
 
358
- class HttpErrorWrapperComponent {
359
- constructor(subscription) {
360
- this.subscription = subscription;
361
- this.status = 0;
362
- this.title = 'Oops!';
363
- this.details = 'Sorry, an error has occured.';
364
- this.customComponent = undefined;
365
- this.hideCloseIcon = false;
366
- this.isHomeShow = true;
367
- }
368
- get statusText() {
369
- return this.status ? `[${this.status}]` : '';
370
- }
371
- ngOnInit() {
372
- this.backgroundColor =
373
- window.getComputedStyle(document.body)?.getPropertyValue('background-color') || '#fff';
374
- }
375
- ngAfterViewInit() {
376
- if (this.customComponent) {
377
- const customComponentRef = this.cfRes
378
- .resolveComponentFactory(this.customComponent)
379
- .create(this.injector);
380
- customComponentRef.instance.errorStatus = this.status;
381
- customComponentRef.instance.destroy$ = this.destroy$;
382
- this.appRef.attachView(customComponentRef.hostView);
383
- if (this.containerRef) {
384
- this.containerRef.nativeElement.appendChild(customComponentRef.hostView.rootNodes[0]);
385
- }
386
- customComponentRef.changeDetectorRef.detectChanges();
387
- }
388
- const keyup$ = fromEvent(document, 'keyup').pipe(debounceTime(150), filter((key) => key && key.key === 'Escape'));
389
- this.subscription.addOne(keyup$, () => this.destroy());
390
- }
391
- ngOnDestroy() {
392
- this.destroy();
393
- }
394
- destroy() {
395
- this.destroy$.next();
396
- this.destroy$.complete();
397
- }
398
- }
399
- HttpErrorWrapperComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HttpErrorWrapperComponent, deps: [{ token: i2.SubscriptionService }], target: i0.ɵɵFactoryTarget.Component });
400
- HttpErrorWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: HttpErrorWrapperComponent, selector: "abp-http-error-wrapper", providers: [SubscriptionService], viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\r\n #container\r\n id=\"abp-http-error-container\"\r\n class=\"error\"\r\n [style.backgroundColor]=\"backgroundColor\"\r\n>\r\n <button\r\n *ngIf=\"!hideCloseIcon\"\r\n id=\"abp-close-button\"\r\n type=\"button\"\r\n class=\"btn-close me-2\"\r\n (click)=\"destroy()\"\r\n ></button>\r\n\r\n <div *ngIf=\"!customComponent\" class=\"row centered\">\r\n <div class=\"col-md-12\">\r\n <div class=\"error-template\">\r\n <h1>{{ statusText }} {{ title | abpLocalization }}</h1>\r\n <div class=\"error-details\">\r\n {{ details | abpLocalization }}\r\n </div>\r\n <div class=\"error-actions\">\r\n <a\r\n *ngIf=\"isHomeShow\"\r\n (click)=\"destroy()\"\r\n routerLink=\"/\"\r\n class=\"btn btn-primary btn-md mt-2\"\r\n ><span class=\"glyphicon glyphicon-home\"></span>\r\n {{ { key: '::Menu:Home', defaultValue: 'Home' } | abpLocalization }}\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".error{position:fixed;top:0;width:100vw;height:100vh;z-index:999999}.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] });
401
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HttpErrorWrapperComponent, decorators: [{
402
- type: Component,
403
- args: [{ selector: 'abp-http-error-wrapper', providers: [SubscriptionService], template: "<div\r\n #container\r\n id=\"abp-http-error-container\"\r\n class=\"error\"\r\n [style.backgroundColor]=\"backgroundColor\"\r\n>\r\n <button\r\n *ngIf=\"!hideCloseIcon\"\r\n id=\"abp-close-button\"\r\n type=\"button\"\r\n class=\"btn-close me-2\"\r\n (click)=\"destroy()\"\r\n ></button>\r\n\r\n <div *ngIf=\"!customComponent\" class=\"row centered\">\r\n <div class=\"col-md-12\">\r\n <div class=\"error-template\">\r\n <h1>{{ statusText }} {{ title | abpLocalization }}</h1>\r\n <div class=\"error-details\">\r\n {{ details | abpLocalization }}\r\n </div>\r\n <div class=\"error-actions\">\r\n <a\r\n *ngIf=\"isHomeShow\"\r\n (click)=\"destroy()\"\r\n routerLink=\"/\"\r\n class=\"btn btn-primary btn-md mt-2\"\r\n ><span class=\"glyphicon glyphicon-home\"></span>\r\n {{ { key: '::Menu:Home', defaultValue: 'Home' } | abpLocalization }}\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".error{position:fixed;top:0;width:100vw;height:100vh;z-index:999999}.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}\n"] }]
404
- }], ctorParameters: function () { return [{ type: i2.SubscriptionService }]; }, propDecorators: { containerRef: [{
405
- type: ViewChild,
406
- args: ['container', { static: false }]
358
+ class HttpErrorWrapperComponent {
359
+ get statusText() {
360
+ return this.status ? `[${this.status}]` : '';
361
+ }
362
+ constructor(subscription) {
363
+ this.subscription = subscription;
364
+ this.status = 0;
365
+ this.title = 'Oops!';
366
+ this.details = 'Sorry, an error has occured.';
367
+ this.customComponent = undefined;
368
+ this.hideCloseIcon = false;
369
+ this.isHomeShow = true;
370
+ }
371
+ ngOnInit() {
372
+ this.backgroundColor =
373
+ window.getComputedStyle(document.body)?.getPropertyValue('background-color') || '#fff';
374
+ }
375
+ ngAfterViewInit() {
376
+ if (this.customComponent) {
377
+ const customComponentRef = this.cfRes
378
+ .resolveComponentFactory(this.customComponent)
379
+ .create(this.injector);
380
+ customComponentRef.instance.errorStatus = this.status;
381
+ customComponentRef.instance.destroy$ = this.destroy$;
382
+ this.appRef.attachView(customComponentRef.hostView);
383
+ if (this.containerRef) {
384
+ this.containerRef.nativeElement.appendChild(customComponentRef.hostView.rootNodes[0]);
385
+ }
386
+ customComponentRef.changeDetectorRef.detectChanges();
387
+ }
388
+ const keyup$ = fromEvent(document, 'keyup').pipe(debounceTime(150), filter((key) => key && key.key === 'Escape'));
389
+ this.subscription.addOne(keyup$, () => this.destroy());
390
+ }
391
+ ngOnDestroy() {
392
+ this.destroy();
393
+ }
394
+ destroy() {
395
+ this.destroy$.next();
396
+ this.destroy$.complete();
397
+ }
398
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: HttpErrorWrapperComponent, deps: [{ token: i2.SubscriptionService }], target: i0.ɵɵFactoryTarget.Component }); }
399
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: HttpErrorWrapperComponent, selector: "abp-http-error-wrapper", providers: [SubscriptionService], viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\r\n #container\r\n id=\"abp-http-error-container\"\r\n class=\"error\"\r\n [style.backgroundColor]=\"backgroundColor\"\r\n>\r\n <button\r\n *ngIf=\"!hideCloseIcon\"\r\n id=\"abp-close-button\"\r\n type=\"button\"\r\n class=\"btn-close me-2\"\r\n (click)=\"destroy()\"\r\n ></button>\r\n\r\n <div *ngIf=\"!customComponent\" class=\"row centered\">\r\n <div class=\"col-md-12\">\r\n <div class=\"error-template\">\r\n <h1>{{ statusText }} {{ title | abpLocalization }}</h1>\r\n <div class=\"error-details\">\r\n {{ details | abpLocalization }}\r\n </div>\r\n <div class=\"error-actions\">\r\n <a\r\n *ngIf=\"isHomeShow\"\r\n (click)=\"destroy()\"\r\n routerLink=\"/\"\r\n class=\"btn btn-primary btn-md mt-2\"\r\n ><span class=\"glyphicon glyphicon-home\"></span>\r\n {{ { key: '::Menu:Home', defaultValue: 'Home' } | abpLocalization }}\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".error{position:fixed;top:0;width:100vw;height:100vh;z-index:999999}.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] }); }
400
+ }
401
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: HttpErrorWrapperComponent, decorators: [{
402
+ type: Component,
403
+ args: [{ selector: 'abp-http-error-wrapper', providers: [SubscriptionService], template: "<div\r\n #container\r\n id=\"abp-http-error-container\"\r\n class=\"error\"\r\n [style.backgroundColor]=\"backgroundColor\"\r\n>\r\n <button\r\n *ngIf=\"!hideCloseIcon\"\r\n id=\"abp-close-button\"\r\n type=\"button\"\r\n class=\"btn-close me-2\"\r\n (click)=\"destroy()\"\r\n ></button>\r\n\r\n <div *ngIf=\"!customComponent\" class=\"row centered\">\r\n <div class=\"col-md-12\">\r\n <div class=\"error-template\">\r\n <h1>{{ statusText }} {{ title | abpLocalization }}</h1>\r\n <div class=\"error-details\">\r\n {{ details | abpLocalization }}\r\n </div>\r\n <div class=\"error-actions\">\r\n <a\r\n *ngIf=\"isHomeShow\"\r\n (click)=\"destroy()\"\r\n routerLink=\"/\"\r\n class=\"btn btn-primary btn-md mt-2\"\r\n ><span class=\"glyphicon glyphicon-home\"></span>\r\n {{ { key: '::Menu:Home', defaultValue: 'Home' } | abpLocalization }}\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".error{position:fixed;top:0;width:100vw;height:100vh;z-index:999999}.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}\n"] }]
404
+ }], ctorParameters: function () { return [{ type: i2.SubscriptionService }]; }, propDecorators: { containerRef: [{
405
+ type: ViewChild,
406
+ args: ['container', { static: false }]
407
407
  }] } });
408
408
 
409
- class LoaderBarComponent {
410
- constructor(router, cdRef, subscription, httpWaitService, routerWaitService) {
411
- this.router = router;
412
- this.cdRef = cdRef;
413
- this.subscription = subscription;
414
- this.httpWaitService = httpWaitService;
415
- this.routerWaitService = routerWaitService;
416
- this.containerClass = 'abp-loader-bar';
417
- this.color = '#77b6ff';
418
- this.progressLevel = 0;
419
- this.interval = new Subscription();
420
- this.timer = new Subscription();
421
- this.intervalPeriod = 350;
422
- this.stopDelay = 800;
423
- this.clearProgress = () => {
424
- this.progressLevel = 0;
425
- this.cdRef.detectChanges();
426
- };
427
- this.reportProgress = () => {
428
- if (this.progressLevel < 75) {
429
- this.progressLevel += 1 + Math.random() * 9;
430
- }
431
- else if (this.progressLevel < 90) {
432
- this.progressLevel += 0.4;
433
- }
434
- else if (this.progressLevel < 100) {
435
- this.progressLevel += 0.1;
436
- }
437
- else {
438
- this.interval.unsubscribe();
439
- }
440
- this.cdRef.detectChanges();
441
- };
442
- }
443
- set isLoading(value) {
444
- this._isLoading = value;
445
- this.cdRef.detectChanges();
446
- }
447
- get isLoading() {
448
- return this._isLoading;
449
- }
450
- get boxShadow() {
451
- return `0 0 10px rgba(${this.color}, 0.5)`;
452
- }
453
- ngOnInit() {
454
- this.subscribeLoading();
455
- }
456
- subscribeLoading() {
457
- this.subscription.addOne(combineLatest([this.httpWaitService.getLoading$(), this.routerWaitService.getLoading$()]), ([httpLoading, routerLoading]) => {
458
- if (httpLoading || routerLoading)
459
- this.startLoading();
460
- else
461
- this.stopLoading();
462
- });
463
- }
464
- ngOnDestroy() {
465
- this.interval.unsubscribe();
466
- }
467
- startLoading() {
468
- if (this.isLoading || !this.interval.closed)
469
- return;
470
- this.isLoading = true;
471
- this.progressLevel = 0;
472
- this.cdRef.detectChanges();
473
- this.interval = timer(0, this.intervalPeriod).subscribe(this.reportProgress);
474
- this.timer.unsubscribe();
475
- }
476
- stopLoading() {
477
- this.interval.unsubscribe();
478
- this.progressLevel = 100;
479
- this.isLoading = false;
480
- if (!this.timer.closed)
481
- return;
482
- this.timer = timer(this.stopDelay).subscribe(this.clearProgress);
483
- }
484
- }
485
- LoaderBarComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoaderBarComponent, deps: [{ token: i1$1.Router }, { token: i0.ChangeDetectorRef }, { token: i2.SubscriptionService }, { token: i2.HttpWaitService }, { token: i2.RouterWaitService }], target: i0.ɵɵFactoryTarget.Component });
486
- LoaderBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LoaderBarComponent, selector: "abp-loader-bar", inputs: { isLoading: "isLoading", containerClass: "containerClass", color: "color" }, providers: [SubscriptionService], ngImport: i0, template: `
409
+ class LoaderBarComponent {
410
+ set isLoading(value) {
411
+ this._isLoading = value;
412
+ this.cdRef.detectChanges();
413
+ }
414
+ get isLoading() {
415
+ return this._isLoading;
416
+ }
417
+ get boxShadow() {
418
+ return `0 0 10px rgba(${this.color}, 0.5)`;
419
+ }
420
+ constructor(router, cdRef, subscription, httpWaitService, routerWaitService) {
421
+ this.router = router;
422
+ this.cdRef = cdRef;
423
+ this.subscription = subscription;
424
+ this.httpWaitService = httpWaitService;
425
+ this.routerWaitService = routerWaitService;
426
+ this.containerClass = 'abp-loader-bar';
427
+ this.color = '#77b6ff';
428
+ this.progressLevel = 0;
429
+ this.interval = new Subscription();
430
+ this.timer = new Subscription();
431
+ this.intervalPeriod = 350;
432
+ this.stopDelay = 800;
433
+ this.clearProgress = () => {
434
+ this.progressLevel = 0;
435
+ this.cdRef.detectChanges();
436
+ };
437
+ this.reportProgress = () => {
438
+ if (this.progressLevel < 75) {
439
+ this.progressLevel += 1 + Math.random() * 9;
440
+ }
441
+ else if (this.progressLevel < 90) {
442
+ this.progressLevel += 0.4;
443
+ }
444
+ else if (this.progressLevel < 100) {
445
+ this.progressLevel += 0.1;
446
+ }
447
+ else {
448
+ this.interval.unsubscribe();
449
+ }
450
+ this.cdRef.detectChanges();
451
+ };
452
+ }
453
+ ngOnInit() {
454
+ this.subscribeLoading();
455
+ }
456
+ subscribeLoading() {
457
+ this.subscription.addOne(combineLatest([this.httpWaitService.getLoading$(), this.routerWaitService.getLoading$()]), ([httpLoading, routerLoading]) => {
458
+ if (httpLoading || routerLoading)
459
+ this.startLoading();
460
+ else
461
+ this.stopLoading();
462
+ });
463
+ }
464
+ ngOnDestroy() {
465
+ this.interval.unsubscribe();
466
+ }
467
+ startLoading() {
468
+ if (this.isLoading || !this.interval.closed)
469
+ return;
470
+ this.isLoading = true;
471
+ this.progressLevel = 0;
472
+ this.cdRef.detectChanges();
473
+ this.interval = timer(0, this.intervalPeriod).subscribe(this.reportProgress);
474
+ this.timer.unsubscribe();
475
+ }
476
+ stopLoading() {
477
+ this.interval.unsubscribe();
478
+ this.progressLevel = 100;
479
+ this.isLoading = false;
480
+ if (!this.timer.closed)
481
+ return;
482
+ this.timer = timer(this.stopDelay).subscribe(this.clearProgress);
483
+ }
484
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LoaderBarComponent, deps: [{ token: i1$1.Router }, { token: i0.ChangeDetectorRef }, { token: i2.SubscriptionService }, { token: i2.HttpWaitService }, { token: i2.RouterWaitService }], target: i0.ɵɵFactoryTarget.Component }); }
485
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: LoaderBarComponent, selector: "abp-loader-bar", inputs: { isLoading: "isLoading", containerClass: "containerClass", color: "color" }, providers: [SubscriptionService], ngImport: i0, template: `
487
486
  <div id="abp-loader-bar" [ngClass]="containerClass" [class.is-loading]="isLoading">
488
487
  <div
489
488
  class="abp-progress"
@@ -495,9 +494,10 @@ LoaderBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
495
494
  }"
496
495
  ></div>
497
496
  </div>
498
- `, isInline: true, styles: [".abp-loader-bar{left:0;opacity:0;position:fixed;top:0;transition:opacity .4s linear .4s;z-index:99999}.abp-loader-bar.is-loading{opacity:1;transition:none}.abp-loader-bar .abp-progress{height:3px;left:0;position:fixed;top:0}.abp-loader-bar .abp-progress.progressing{transition:width .4s ease}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
499
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoaderBarComponent, decorators: [{
500
- type: Component,
497
+ `, isInline: true, styles: [".abp-loader-bar{left:0;opacity:0;position:fixed;top:0;transition:opacity .4s linear .4s;z-index:99999}.abp-loader-bar.is-loading{opacity:1;transition:none}.abp-loader-bar .abp-progress{height:3px;left:0;position:fixed;top:0}.abp-loader-bar .abp-progress.progressing{transition:width .4s ease}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
498
+ }
499
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LoaderBarComponent, decorators: [{
500
+ type: Component,
501
501
  args: [{ selector: 'abp-loader-bar', template: `
502
502
  <div id="abp-loader-bar" [ngClass]="containerClass" [class.is-loading]="isLoading">
503
503
  <div
@@ -510,673 +510,672 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
510
510
  }"
511
511
  ></div>
512
512
  </div>
513
- `, providers: [SubscriptionService], styles: [".abp-loader-bar{left:0;opacity:0;position:fixed;top:0;transition:opacity .4s linear .4s;z-index:99999}.abp-loader-bar.is-loading{opacity:1;transition:none}.abp-loader-bar .abp-progress{height:3px;left:0;position:fixed;top:0}.abp-loader-bar .abp-progress.progressing{transition:width .4s ease}\n"] }]
514
- }], ctorParameters: function () { return [{ type: i1$1.Router }, { type: i0.ChangeDetectorRef }, { type: i2.SubscriptionService }, { type: i2.HttpWaitService }, { type: i2.RouterWaitService }]; }, propDecorators: { isLoading: [{
515
- type: Input
516
- }], containerClass: [{
517
- type: Input
518
- }], color: [{
519
- type: Input
513
+ `, providers: [SubscriptionService], styles: [".abp-loader-bar{left:0;opacity:0;position:fixed;top:0;transition:opacity .4s linear .4s;z-index:99999}.abp-loader-bar.is-loading{opacity:1;transition:none}.abp-loader-bar .abp-progress{height:3px;left:0;position:fixed;top:0}.abp-loader-bar .abp-progress.progressing{transition:width .4s ease}\n"] }]
514
+ }], ctorParameters: function () { return [{ type: i1$1.Router }, { type: i0.ChangeDetectorRef }, { type: i2.SubscriptionService }, { type: i2.HttpWaitService }, { type: i2.RouterWaitService }]; }, propDecorators: { isLoading: [{
515
+ type: Input
516
+ }], containerClass: [{
517
+ type: Input
518
+ }], color: [{
519
+ type: Input
520
520
  }] } });
521
521
 
522
- class LoadingComponent {
523
- }
524
- LoadingComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
525
- LoadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LoadingComponent, selector: "abp-loading", ngImport: i0, template: `
522
+ class LoadingComponent {
523
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
524
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: LoadingComponent, selector: "abp-loading", ngImport: i0, template: `
526
525
  <div class="abp-loading">
527
- <i class="fa fa-spinner fa-pulse abp-spinner"></i>
526
+ <i class="fa fa-spinner fa-pulse abp-spinner" aria-hidden="true"></i>
528
527
  </div>
529
- `, isInline: true, styles: [".abp-loading{position:absolute;width:100%;height:100%;top:0;left:0;z-index:1040}.abp-loading .abp-spinner{position:absolute;top:50%;left:50%;font-size:14px;transform:translate(-50%) translateY(-50%)}\n"], encapsulation: i0.ViewEncapsulation.None });
530
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadingComponent, decorators: [{
531
- type: Component,
528
+ `, isInline: true, styles: [".abp-loading{position:absolute;width:100%;height:100%;top:0;left:0;z-index:1040}.abp-loading .abp-spinner{position:absolute;top:50%;left:50%;font-size:14px;transform:translate(-50%) translateY(-50%)}\n"], encapsulation: i0.ViewEncapsulation.None }); }
529
+ }
530
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LoadingComponent, decorators: [{
531
+ type: Component,
532
532
  args: [{ selector: 'abp-loading', template: `
533
533
  <div class="abp-loading">
534
- <i class="fa fa-spinner fa-pulse abp-spinner"></i>
534
+ <i class="fa fa-spinner fa-pulse abp-spinner" aria-hidden="true"></i>
535
535
  </div>
536
- `, encapsulation: ViewEncapsulation.None, styles: [".abp-loading{position:absolute;width:100%;height:100%;top:0;left:0;z-index:1040}.abp-loading .abp-spinner{position:absolute;top:50%;left:50%;font-size:14px;transform:translate(-50%) translateY(-50%)}\n"] }]
536
+ `, encapsulation: ViewEncapsulation.None, styles: [".abp-loading{position:absolute;width:100%;height:100%;top:0;left:0;z-index:1040}.abp-loading .abp-spinner{position:absolute;top:50%;left:50%;font-size:14px;transform:translate(-50%) translateY(-50%)}\n"] }]
537
537
  }] });
538
538
 
539
- class ConfirmationService {
540
- constructor(contentProjectionService) {
541
- this.contentProjectionService = contentProjectionService;
542
- this.confirmation$ = new ReplaySubject(1);
543
- this.clear = (status = Confirmation.Status.dismiss) => {
544
- this.confirmation$.next(null);
545
- this.status$.next(status);
546
- };
547
- }
548
- setContainer() {
549
- this.containerComponentRef = this.contentProjectionService.projectContent(PROJECTION_STRATEGY.AppendComponentToBody(ConfirmationComponent, {
550
- confirmation$: this.confirmation$,
551
- clear: this.clear,
552
- }));
553
- setTimeout(() => {
554
- this.containerComponentRef.changeDetectorRef.detectChanges();
555
- }, 0);
556
- }
557
- info(message, title, options) {
558
- return this.show(message, title, 'info', options);
559
- }
560
- success(message, title, options) {
561
- return this.show(message, title, 'success', options);
562
- }
563
- warn(message, title, options) {
564
- return this.show(message, title, 'warning', options);
565
- }
566
- error(message, title, options) {
567
- return this.show(message, title, 'error', options);
568
- }
569
- show(message, title, severity, options = {}) {
570
- if (!this.containerComponentRef)
571
- this.setContainer();
572
- this.confirmation$.next({
573
- message,
574
- title,
575
- severity: severity || 'neutral',
576
- options,
577
- });
578
- this.status$ = new Subject();
579
- const { dismissible = true } = options;
580
- if (dismissible)
581
- this.listenToEscape();
582
- return this.status$;
583
- }
584
- listenToEscape() {
585
- fromEvent(document, 'keyup')
586
- .pipe(takeUntil(this.status$), debounceTime(150), filter((key) => key && key.key === 'Escape'))
587
- .subscribe(() => {
588
- this.clear();
589
- });
590
- }
591
- }
592
- ConfirmationServicefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ConfirmationService, deps: [{ token: i2.ContentProjectionService }], target: i0.ɵɵFactoryTarget.Injectable });
593
- ConfirmationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ConfirmationService, providedIn: 'root' });
594
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ConfirmationService, decorators: [{
595
- type: Injectable,
596
- args: [{ providedIn: 'root' }]
539
+ class ConfirmationService {
540
+ constructor(contentProjectionService) {
541
+ this.contentProjectionService = contentProjectionService;
542
+ this.confirmation$ = new ReplaySubject(1);
543
+ this.clear = (status = Confirmation.Status.dismiss) => {
544
+ this.confirmation$.next(null);
545
+ this.status$.next(status);
546
+ };
547
+ }
548
+ setContainer() {
549
+ this.containerComponentRef = this.contentProjectionService.projectContent(PROJECTION_STRATEGY.AppendComponentToBody(ConfirmationComponent, {
550
+ confirmation$: this.confirmation$,
551
+ clear: this.clear,
552
+ }));
553
+ setTimeout(() => {
554
+ this.containerComponentRef.changeDetectorRef.detectChanges();
555
+ }, 0);
556
+ }
557
+ info(message, title, options) {
558
+ return this.show(message, title, 'info', options);
559
+ }
560
+ success(message, title, options) {
561
+ return this.show(message, title, 'success', options);
562
+ }
563
+ warn(message, title, options) {
564
+ return this.show(message, title, 'warning', options);
565
+ }
566
+ error(message, title, options) {
567
+ return this.show(message, title, 'error', options);
568
+ }
569
+ show(message, title, severity, options = {}) {
570
+ if (!this.containerComponentRef)
571
+ this.setContainer();
572
+ this.confirmation$.next({
573
+ message,
574
+ title,
575
+ severity: severity || 'neutral',
576
+ options,
577
+ });
578
+ this.status$ = new Subject();
579
+ const { dismissible = true } = options;
580
+ if (dismissible)
581
+ this.listenToEscape();
582
+ return this.status$;
583
+ }
584
+ listenToEscape() {
585
+ fromEvent(document, 'keyup')
586
+ .pipe(takeUntil(this.status$), debounceTime(150), filter((key) => key && key.key === 'Escape'))
587
+ .subscribe(() => {
588
+ this.clear();
589
+ });
590
+ }
591
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ConfirmationService, deps: [{ token: i2.ContentProjectionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
592
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ConfirmationService, providedIn: 'root' }); }
593
+ }
594
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ConfirmationService, decorators: [{
595
+ type: Injectable,
596
+ args: [{ providedIn: 'root' }]
597
597
  }], ctorParameters: function () { return [{ type: i2.ContentProjectionService }]; } });
598
598
 
599
599
  const SUPPRESS_UNSAVED_CHANGES_WARNING = new InjectionToken('SUPPRESS_UNSAVED_CHANGES_WARNING');
600
600
 
601
- class ModalRefService {
602
- constructor() {
603
- this.modalRefs = [];
604
- }
605
- register(modal) {
606
- this.modalRefs.push(modal);
607
- }
608
- unregister(modal) {
609
- const index = this.modalRefs.indexOf(modal);
610
- if (index > -1) {
611
- this.modalRefs.splice(index, 1);
612
- }
613
- }
614
- dismissAll(mode) {
615
- this.modalRefs.forEach(modal => modal.dismiss(mode));
616
- }
617
- }
618
- ModalRefServicefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalRefService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
619
- ModalRefService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalRefService, providedIn: 'root' });
620
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalRefService, decorators: [{
621
- type: Injectable,
622
- args: [{ providedIn: 'root' }]
601
+ class ModalRefService {
602
+ constructor() {
603
+ this.modalRefs = [];
604
+ }
605
+ register(modal) {
606
+ this.modalRefs.push(modal);
607
+ }
608
+ unregister(modal) {
609
+ const index = this.modalRefs.indexOf(modal);
610
+ if (index > -1) {
611
+ this.modalRefs.splice(index, 1);
612
+ }
613
+ }
614
+ dismissAll(mode) {
615
+ this.modalRefs.forEach(modal => modal.dismiss(mode));
616
+ }
617
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ModalRefService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
618
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ModalRefService, providedIn: 'root' }); }
619
+ }
620
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ModalRefService, decorators: [{
621
+ type: Injectable,
622
+ args: [{ providedIn: 'root' }]
623
623
  }] });
624
624
 
625
- class ModalComponent {
626
- constructor(confirmationService, subscription, suppressUnsavedChangesWarningToken, modal, modalRefService) {
627
- this.confirmationService = confirmationService;
628
- this.subscription = subscription;
629
- this.suppressUnsavedChangesWarningToken = suppressUnsavedChangesWarningToken;
630
- this.modal = modal;
631
- this.modalRefService = modalRefService;
632
- this.options = {};
633
- this.suppressUnsavedChangesWarning = this.suppressUnsavedChangesWarningToken;
634
- this.visibleChange = new EventEmitter();
635
- this.init = new EventEmitter();
636
- this.appear = new EventEmitter();
637
- this.disappear = new EventEmitter();
638
- this._visible = false;
639
- this._busy = false;
640
- this.isConfirmationOpen = false;
641
- this.destroy$ = new Subject();
642
- this.modalIdentifier = `modal-${uuid()}`;
643
- this.toggle$ = new Subject();
644
- this.initToggleStream();
645
- }
646
- get visible() {
647
- return this._visible;
648
- }
649
- set visible(value) {
650
- if (typeof value !== 'boolean')
651
- return;
652
- this.toggle$.next(value);
653
- }
654
- get busy() {
655
- return this._busy;
656
- }
657
- set busy(value) {
658
- if (this.abpSubmit && this.abpSubmit instanceof ButtonComponent) {
659
- this.abpSubmit.loading = value;
660
- }
661
- this._busy = value;
662
- }
663
- get modalWindowRef() {
664
- return document.querySelector(`ngb-modal-window.${this.modalIdentifier}`);
665
- }
666
- get isFormDirty() {
667
- return Boolean(this.modalWindowRef?.querySelector('.ng-dirty'));
668
- }
669
- ngOnInit() {
670
- this.modalRefService.register(this);
671
- }
672
- dismiss(mode) {
673
- switch (mode) {
674
- case 'hard':
675
- this.visible = false;
676
- break;
677
- case 'soft':
678
- this.close();
679
- break;
680
- default:
681
- break;
682
- }
683
- }
684
- initToggleStream() {
685
- this.subscription.addOne(this.toggle$.pipe(debounceTime(0), distinctUntilChanged()), value => this.toggle(value));
686
- }
687
- toggle(value) {
688
- this._visible = value;
689
- this.visibleChange.emit(value);
690
- if (!value) {
691
- this.modalRef?.dismiss();
692
- this.disappear.emit();
693
- this.destroy$.next();
694
- return;
695
- }
696
- setTimeout(() => this.listen(), 0);
697
- this.modalRef = this.modal.open(this.modalContent, {
698
- size: 'md',
699
- centered: false,
700
- keyboard: false,
701
- scrollable: true,
702
- beforeDismiss: () => {
703
- if (!this.visible)
704
- return true;
705
- this.close();
706
- return !this.visible;
707
- },
708
- ...this.options,
709
- windowClass: `${this.options.windowClass || ''} ${this.modalIdentifier}`,
710
- });
711
- this.appear.emit();
712
- }
713
- ngOnDestroy() {
714
- this.modalRefService.unregister(this);
715
- this.toggle(false);
716
- this.destroy$.next();
717
- }
718
- close() {
719
- if (this.busy)
720
- return;
721
- if (this.isFormDirty && !this.suppressUnsavedChangesWarning) {
722
- if (this.isConfirmationOpen)
723
- return;
724
- this.isConfirmationOpen = true;
725
- this.confirmationService
726
- .warn('AbpUi::AreYouSureYouWantToCancelEditingWarningMessage', 'AbpUi::AreYouSure', { dismissible: false })
727
- .subscribe((status) => {
728
- this.isConfirmationOpen = false;
729
- if (status === Confirmation.Status.confirm) {
730
- this.visible = false;
731
- }
732
- });
733
- }
734
- else {
735
- this.visible = false;
736
- }
737
- }
738
- listen() {
739
- if (this.modalWindowRef) {
740
- fromEvent(this.modalWindowRef, 'keyup')
741
- .pipe(takeUntil(this.destroy$), debounceTime(150), filter((key) => key && key.key === 'Escape' && this.options.keyboard))
742
- .subscribe(() => this.close());
743
- }
744
- fromEvent(window, 'beforeunload')
745
- .pipe(takeUntil(this.destroy$))
746
- .subscribe(event => {
747
- // TODO: check this
748
- if (!this.isFormDirty || this.suppressUnsavedChangesWarning) {
749
- event.preventDefault();
750
- }
751
- });
752
- this.init.emit();
753
- }
754
- }
755
- ModalComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalComponent, deps: [{ token: ConfirmationService }, { token: i2.SubscriptionService }, { token: SUPPRESS_UNSAVED_CHANGES_WARNING, optional: true }, { token: i3.NgbModal }, { token: ModalRefService }], target: i0.ɵɵFactoryTarget.Component });
756
- ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ModalComponent, selector: "abp-modal", inputs: { visible: "visible", busy: "busy", options: "options", suppressUnsavedChangesWarning: "suppressUnsavedChangesWarning" }, outputs: { visibleChange: "visibleChange", init: "init", appear: "appear", disappear: "disappear" }, providers: [SubscriptionService], queries: [{ propertyName: "abpHeader", first: true, predicate: ["abpHeader"], descendants: true }, { propertyName: "abpBody", first: true, predicate: ["abpBody"], descendants: true }, { propertyName: "abpFooter", first: true, predicate: ["abpFooter"], descendants: true }, { propertyName: "abpSubmit", first: true, predicate: ButtonComponent, descendants: true, read: ButtonComponent }], viewQueries: [{ propertyName: "modalContent", first: true, predicate: ["modalContent"], descendants: true }], ngImport: i0, template: "<ng-content></ng-content>\r\n\r\n<ng-template #modalContent let-modal>\r\n <div *ngIf=\"abpHeader\" id=\"abp-modal-header\" class=\"modal-header abp-modal-header\">\r\n <ng-container *ngTemplateOutlet=\"abpHeader\"></ng-container>\r\n \u200B\r\n <button\r\n id=\"abp-modal-close-button\"\r\n type=\"button\"\r\n class=\"btn-sm btn-close\"\r\n aria-label=\"Close\"\r\n (click)=\"modal.dismiss()\"\r\n ></button>\r\n </div>\r\n <div *ngIf=\"abpBody\" id=\"abp-modal-body\" class=\"modal-body\">\r\n <ng-container *ngTemplateOutlet=\"abpBody\"></ng-container>\r\n </div>\r\n <div *ngIf=\"abpFooter\" id=\"abp-modal-footer\" class=\"modal-footer\">\r\n <ng-container *ngTemplateOutlet=\"abpFooter\"></ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: [".modal.show{display:block!important}.modal-backdrop{opacity:.8}.modal::-webkit-scrollbar{width:7px}.modal::-webkit-scrollbar-track{background:#ddd}.modal::-webkit-scrollbar-thumb{background:#8a8686}.modal-dialog{z-index:1050}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
757
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalComponent, decorators: [{
758
- type: Component,
759
- args: [{ selector: 'abp-modal', providers: [SubscriptionService], template: "<ng-content></ng-content>\r\n\r\n<ng-template #modalContent let-modal>\r\n <div *ngIf=\"abpHeader\" id=\"abp-modal-header\" class=\"modal-header abp-modal-header\">\r\n <ng-container *ngTemplateOutlet=\"abpHeader\"></ng-container>\r\n \u200B\r\n <button\r\n id=\"abp-modal-close-button\"\r\n type=\"button\"\r\n class=\"btn-sm btn-close\"\r\n aria-label=\"Close\"\r\n (click)=\"modal.dismiss()\"\r\n ></button>\r\n </div>\r\n <div *ngIf=\"abpBody\" id=\"abp-modal-body\" class=\"modal-body\">\r\n <ng-container *ngTemplateOutlet=\"abpBody\"></ng-container>\r\n </div>\r\n <div *ngIf=\"abpFooter\" id=\"abp-modal-footer\" class=\"modal-footer\">\r\n <ng-container *ngTemplateOutlet=\"abpFooter\"></ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: [".modal.show{display:block!important}.modal-backdrop{opacity:.8}.modal::-webkit-scrollbar{width:7px}.modal::-webkit-scrollbar-track{background:#ddd}.modal::-webkit-scrollbar-thumb{background:#8a8686}.modal-dialog{z-index:1050}\n"] }]
760
- }], ctorParameters: function () { return [{ type: ConfirmationService }, { type: i2.SubscriptionService }, { type: undefined, decorators: [{
761
- type: Optional
762
- }, {
763
- type: Inject,
764
- args: [SUPPRESS_UNSAVED_CHANGES_WARNING]
765
- }] }, { type: i3.NgbModal }, { type: ModalRefService }]; }, propDecorators: { visible: [{
766
- type: Input
767
- }], busy: [{
768
- type: Input
769
- }], options: [{
770
- type: Input
771
- }], suppressUnsavedChangesWarning: [{
772
- type: Input
773
- }], modalContent: [{
774
- type: ViewChild,
775
- args: ['modalContent']
776
- }], abpHeader: [{
777
- type: ContentChild,
778
- args: ['abpHeader', { static: false }]
779
- }], abpBody: [{
780
- type: ContentChild,
781
- args: ['abpBody', { static: false }]
782
- }], abpFooter: [{
783
- type: ContentChild,
784
- args: ['abpFooter', { static: false }]
785
- }], abpSubmit: [{
786
- type: ContentChild,
787
- args: [ButtonComponent, { static: false, read: ButtonComponent }]
788
- }], visibleChange: [{
789
- type: Output
790
- }], init: [{
791
- type: Output
792
- }], appear: [{
793
- type: Output
794
- }], disappear: [{
795
- type: Output
625
+ class ModalComponent {
626
+ get visible() {
627
+ return this._visible;
628
+ }
629
+ set visible(value) {
630
+ if (typeof value !== 'boolean')
631
+ return;
632
+ this.toggle$.next(value);
633
+ }
634
+ get busy() {
635
+ return this._busy;
636
+ }
637
+ set busy(value) {
638
+ if (this.abpSubmit && this.abpSubmit instanceof ButtonComponent) {
639
+ this.abpSubmit.loading = value;
640
+ }
641
+ this._busy = value;
642
+ }
643
+ get modalWindowRef() {
644
+ return document.querySelector(`ngb-modal-window.${this.modalIdentifier}`);
645
+ }
646
+ get isFormDirty() {
647
+ return Boolean(this.modalWindowRef?.querySelector('.ng-dirty'));
648
+ }
649
+ constructor(confirmationService, subscription, suppressUnsavedChangesWarningToken, modal, modalRefService) {
650
+ this.confirmationService = confirmationService;
651
+ this.subscription = subscription;
652
+ this.suppressUnsavedChangesWarningToken = suppressUnsavedChangesWarningToken;
653
+ this.modal = modal;
654
+ this.modalRefService = modalRefService;
655
+ this.options = {};
656
+ this.suppressUnsavedChangesWarning = this.suppressUnsavedChangesWarningToken;
657
+ this.visibleChange = new EventEmitter();
658
+ this.init = new EventEmitter();
659
+ this.appear = new EventEmitter();
660
+ this.disappear = new EventEmitter();
661
+ this._visible = false;
662
+ this._busy = false;
663
+ this.isConfirmationOpen = false;
664
+ this.destroy$ = new Subject();
665
+ this.modalIdentifier = `modal-${uuid()}`;
666
+ this.toggle$ = new Subject();
667
+ this.initToggleStream();
668
+ }
669
+ ngOnInit() {
670
+ this.modalRefService.register(this);
671
+ }
672
+ dismiss(mode) {
673
+ switch (mode) {
674
+ case 'hard':
675
+ this.visible = false;
676
+ break;
677
+ case 'soft':
678
+ this.close();
679
+ break;
680
+ default:
681
+ break;
682
+ }
683
+ }
684
+ initToggleStream() {
685
+ this.subscription.addOne(this.toggle$.pipe(debounceTime(0), distinctUntilChanged()), value => this.toggle(value));
686
+ }
687
+ toggle(value) {
688
+ this._visible = value;
689
+ this.visibleChange.emit(value);
690
+ if (!value) {
691
+ this.modalRef?.dismiss();
692
+ this.disappear.emit();
693
+ this.destroy$.next();
694
+ return;
695
+ }
696
+ setTimeout(() => this.listen(), 0);
697
+ this.modalRef = this.modal.open(this.modalContent, {
698
+ size: 'md',
699
+ centered: false,
700
+ keyboard: false,
701
+ scrollable: true,
702
+ beforeDismiss: () => {
703
+ if (!this.visible)
704
+ return true;
705
+ this.close();
706
+ return !this.visible;
707
+ },
708
+ ...this.options,
709
+ windowClass: `${this.options.windowClass || ''} ${this.modalIdentifier}`,
710
+ });
711
+ this.appear.emit();
712
+ }
713
+ ngOnDestroy() {
714
+ this.modalRefService.unregister(this);
715
+ this.toggle(false);
716
+ this.destroy$.next();
717
+ }
718
+ close() {
719
+ if (this.busy)
720
+ return;
721
+ if (this.isFormDirty && !this.suppressUnsavedChangesWarning) {
722
+ if (this.isConfirmationOpen)
723
+ return;
724
+ this.isConfirmationOpen = true;
725
+ this.confirmationService
726
+ .warn('AbpUi::AreYouSureYouWantToCancelEditingWarningMessage', 'AbpUi::AreYouSure', { dismissible: false })
727
+ .subscribe((status) => {
728
+ this.isConfirmationOpen = false;
729
+ if (status === Confirmation.Status.confirm) {
730
+ this.visible = false;
731
+ }
732
+ });
733
+ }
734
+ else {
735
+ this.visible = false;
736
+ }
737
+ }
738
+ listen() {
739
+ if (this.modalWindowRef) {
740
+ fromEvent(this.modalWindowRef, 'keyup')
741
+ .pipe(takeUntil(this.destroy$), debounceTime(150), filter((key) => key && key.key === 'Escape' && this.options.keyboard))
742
+ .subscribe(() => this.close());
743
+ }
744
+ fromEvent(window, 'beforeunload')
745
+ .pipe(takeUntil(this.destroy$))
746
+ .subscribe(event => {
747
+ // TODO: check this
748
+ if (!this.isFormDirty || this.suppressUnsavedChangesWarning) {
749
+ event.preventDefault();
750
+ }
751
+ });
752
+ this.init.emit();
753
+ }
754
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ModalComponent, deps: [{ token: ConfirmationService }, { token: i2.SubscriptionService }, { token: SUPPRESS_UNSAVED_CHANGES_WARNING, optional: true }, { token: i3.NgbModal }, { token: ModalRefService }], target: i0.ɵɵFactoryTarget.Component }); }
755
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: ModalComponent, selector: "abp-modal", inputs: { visible: "visible", busy: "busy", options: "options", suppressUnsavedChangesWarning: "suppressUnsavedChangesWarning" }, outputs: { visibleChange: "visibleChange", init: "init", appear: "appear", disappear: "disappear" }, providers: [SubscriptionService], queries: [{ propertyName: "abpHeader", first: true, predicate: ["abpHeader"], descendants: true }, { propertyName: "abpBody", first: true, predicate: ["abpBody"], descendants: true }, { propertyName: "abpFooter", first: true, predicate: ["abpFooter"], descendants: true }, { propertyName: "abpSubmit", first: true, predicate: ButtonComponent, descendants: true, read: ButtonComponent }], viewQueries: [{ propertyName: "modalContent", first: true, predicate: ["modalContent"], descendants: true }], ngImport: i0, template: "<ng-content></ng-content>\r\n\r\n<ng-template #modalContent let-modal>\r\n <div *ngIf=\"abpHeader\" id=\"abp-modal-header\" class=\"modal-header abp-modal-header\">\r\n <ng-container *ngTemplateOutlet=\"abpHeader\"></ng-container>\r\n \u200B\r\n <button\r\n id=\"abp-modal-close-button\"\r\n type=\"button\"\r\n class=\"btn-sm btn-close\"\r\n aria-label=\"Close\"\r\n (click)=\"modal.dismiss()\"\r\n ></button>\r\n </div>\r\n <div *ngIf=\"abpBody\" id=\"abp-modal-body\" class=\"modal-body\">\r\n <ng-container *ngTemplateOutlet=\"abpBody\"></ng-container>\r\n </div>\r\n <div *ngIf=\"abpFooter\" id=\"abp-modal-footer\" class=\"modal-footer\">\r\n <ng-container *ngTemplateOutlet=\"abpFooter\"></ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: [".modal.show{display:block!important}.modal-backdrop{opacity:.8}.modal::-webkit-scrollbar{width:7px}.modal::-webkit-scrollbar-track{background:#ddd}.modal::-webkit-scrollbar-thumb{background:#8a8686}.modal-dialog{z-index:1050}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
756
+ }
757
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ModalComponent, decorators: [{
758
+ type: Component,
759
+ args: [{ selector: 'abp-modal', providers: [SubscriptionService], template: "<ng-content></ng-content>\r\n\r\n<ng-template #modalContent let-modal>\r\n <div *ngIf=\"abpHeader\" id=\"abp-modal-header\" class=\"modal-header abp-modal-header\">\r\n <ng-container *ngTemplateOutlet=\"abpHeader\"></ng-container>\r\n \u200B\r\n <button\r\n id=\"abp-modal-close-button\"\r\n type=\"button\"\r\n class=\"btn-sm btn-close\"\r\n aria-label=\"Close\"\r\n (click)=\"modal.dismiss()\"\r\n ></button>\r\n </div>\r\n <div *ngIf=\"abpBody\" id=\"abp-modal-body\" class=\"modal-body\">\r\n <ng-container *ngTemplateOutlet=\"abpBody\"></ng-container>\r\n </div>\r\n <div *ngIf=\"abpFooter\" id=\"abp-modal-footer\" class=\"modal-footer\">\r\n <ng-container *ngTemplateOutlet=\"abpFooter\"></ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: [".modal.show{display:block!important}.modal-backdrop{opacity:.8}.modal::-webkit-scrollbar{width:7px}.modal::-webkit-scrollbar-track{background:#ddd}.modal::-webkit-scrollbar-thumb{background:#8a8686}.modal-dialog{z-index:1050}\n"] }]
760
+ }], ctorParameters: function () { return [{ type: ConfirmationService }, { type: i2.SubscriptionService }, { type: undefined, decorators: [{
761
+ type: Optional
762
+ }, {
763
+ type: Inject,
764
+ args: [SUPPRESS_UNSAVED_CHANGES_WARNING]
765
+ }] }, { type: i3.NgbModal }, { type: ModalRefService }]; }, propDecorators: { visible: [{
766
+ type: Input
767
+ }], busy: [{
768
+ type: Input
769
+ }], options: [{
770
+ type: Input
771
+ }], suppressUnsavedChangesWarning: [{
772
+ type: Input
773
+ }], modalContent: [{
774
+ type: ViewChild,
775
+ args: ['modalContent']
776
+ }], abpHeader: [{
777
+ type: ContentChild,
778
+ args: ['abpHeader', { static: false }]
779
+ }], abpBody: [{
780
+ type: ContentChild,
781
+ args: ['abpBody', { static: false }]
782
+ }], abpFooter: [{
783
+ type: ContentChild,
784
+ args: ['abpFooter', { static: false }]
785
+ }], abpSubmit: [{
786
+ type: ContentChild,
787
+ args: [ButtonComponent, { static: false, read: ButtonComponent }]
788
+ }], visibleChange: [{
789
+ type: Output
790
+ }], init: [{
791
+ type: Output
792
+ }], appear: [{
793
+ type: Output
794
+ }], disappear: [{
795
+ type: Output
796
796
  }] } });
797
797
 
798
- class ModalCloseDirective {
799
- constructor(modal) {
800
- this.modal = modal;
801
- if (!modal) {
802
- console.error('Please use abpClose within an abp-modal');
803
- }
804
- }
805
- onClick() {
806
- this.modal?.close();
807
- }
808
- }
809
- ModalCloseDirectivefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalCloseDirective, deps: [{ token: ModalComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
810
- ModalCloseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ModalCloseDirective, selector: "[abpClose]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
811
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalCloseDirective, decorators: [{
812
- type: Directive,
813
- args: [{ selector: '[abpClose]' }]
814
- }], ctorParameters: function () { return [{ type: ModalComponent, decorators: [{
815
- type: Optional
816
- }] }]; }, propDecorators: { onClick: [{
817
- type: HostListener,
818
- args: ['click']
798
+ class ModalCloseDirective {
799
+ constructor(modal) {
800
+ this.modal = modal;
801
+ if (!modal) {
802
+ console.error('Please use abpClose within an abp-modal');
803
+ }
804
+ }
805
+ onClick() {
806
+ this.modal?.close();
807
+ }
808
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ModalCloseDirective, deps: [{ token: ModalComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
809
+ static { thisdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: ModalCloseDirective, selector: "[abpClose]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
810
+ }
811
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ModalCloseDirective, decorators: [{
812
+ type: Directive,
813
+ args: [{ selector: '[abpClose]' }]
814
+ }], ctorParameters: function () { return [{ type: ModalComponent, decorators: [{
815
+ type: Optional
816
+ }] }]; }, propDecorators: { onClick: [{
817
+ type: HostListener,
818
+ args: ['click']
819
819
  }] } });
820
820
 
821
- class ToastComponent {
822
- constructor() {
823
- this.remove = new EventEmitter();
824
- }
825
- get severityClass() {
826
- if (!this.toast || !this.toast.severity)
827
- return '';
828
- return `abp-toast-${this.toast.severity}`;
829
- }
830
- get iconClass() {
831
- switch (this.toast.severity) {
832
- case 'success':
833
- return 'fa-check-circle';
834
- case 'info':
835
- return 'fa-info-circle';
836
- case 'warning':
837
- return 'fa-exclamation-triangle';
838
- case 'error':
839
- return 'fa-times-circle';
840
- default:
841
- return 'fa-exclamation-circle';
842
- }
843
- }
844
- ngOnInit() {
845
- const { sticky, life } = this.toast.options || {};
846
- if (sticky)
847
- return;
848
- const timeout = life || 5000;
849
- setTimeout(() => {
850
- this.close();
851
- }, timeout);
852
- }
853
- close() {
854
- this.remove.emit(this.toast.options?.id);
855
- }
856
- tap() {
857
- if (this.toast.options?.tapToDismiss)
858
- this.close();
859
- }
860
- }
861
- ToastComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
862
- ToastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ToastComponent, selector: "abp-toast", inputs: { toast: "toast" }, outputs: { remove: "remove" }, ngImport: i0, template: "<div class=\"abp-toast\" [ngClass]=\"severityClass\" (click)=\"tap()\">\r\n <div class=\"abp-toast-icon\">\r\n <i class=\"fa icon\" [ngClass]=\"iconClass\"></i>\r\n </div>\r\n <div class=\"abp-toast-content\">\r\n <button class=\"abp-toast-close-button\" (click)=\"close()\" *ngIf=\"toast.options?.closable\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n <div class=\"abp-toast-title\">\r\n {{ toast.title | abpLocalization: toast.options?.titleLocalizationParams }}\r\n </div>\r\n <p\r\n class=\"abp-toast-message\"\r\n [innerHTML]=\"toast.message | abpLocalization: toast.options?.messageLocalizationParams\"\r\n ></p>\r\n </div>\r\n</div>\r\n", styles: [".abp-toast{display:grid;grid-template-columns:50px 1fr;gap:10px;margin:5px 0;padding:10px;border-radius:0;width:350px;-webkit-user-select:none;user-select:none;z-index:9999;border:2px solid #f0f0f0;background-color:#f0f0f0;color:#000;box-shadow:0 0 10px -5px #0006;opacity:1}.abp-toast:hover{border:2px solid #e3e3e3;background-color:#e3e3e3;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-success{border:2px solid #51a351;background-color:#51a351;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-success:hover{border:2px solid #499249;background-color:#499249;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-info{border:2px solid #2f96b4;background-color:#2f96b4;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-info:hover{border:2px solid #2a85a0;background-color:#2a85a0;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-warning{border:2px solid #f89406;background-color:#f89406;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-warning:hover{border:2px solid #df8505;background-color:#df8505;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-error{border:2px solid #bd362f;background-color:#bd362f;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-error:hover{border:2px solid #a9302a;background-color:#a9302a;box-shadow:0 0 15px -5px #0006}.abp-toast .abp-toast-icon{display:flex;align-items:center;justify-content:center}.abp-toast .abp-toast-icon .icon{font-size:36px}.abp-toast .abp-toast-content{position:relative;display:flex;align-self:center;word-break:break-word}.abp-toast .abp-toast-content .abp-toast-close-button{position:absolute;top:0;right:0;display:flex;align-items:center;justify-content:center;margin:0;padding:0 5px 0 0;width:25px;height:25px;border:none;border-radius:50%;background:transparent;color:inherit}.abp-toast .abp-toast-content .abp-toast-close-button:focus{outline:none}.abp-toast .abp-toast-content .abp-toast-title{margin:0;padding:0;font-size:1rem;font-weight:600}.abp-toast .abp-toast-content .abp-toast-message{margin:0;padding:0;max-width:240px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] });
863
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ToastComponent, decorators: [{
864
- type: Component,
865
- args: [{ selector: 'abp-toast', template: "<div class=\"abp-toast\" [ngClass]=\"severityClass\" (click)=\"tap()\">\r\n <div class=\"abp-toast-icon\">\r\n <i class=\"fa icon\" [ngClass]=\"iconClass\"></i>\r\n </div>\r\n <div class=\"abp-toast-content\">\r\n <button class=\"abp-toast-close-button\" (click)=\"close()\" *ngIf=\"toast.options?.closable\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n <div class=\"abp-toast-title\">\r\n {{ toast.title | abpLocalization: toast.options?.titleLocalizationParams }}\r\n </div>\r\n <p\r\n class=\"abp-toast-message\"\r\n [innerHTML]=\"toast.message | abpLocalization: toast.options?.messageLocalizationParams\"\r\n ></p>\r\n </div>\r\n</div>\r\n", styles: [".abp-toast{display:grid;grid-template-columns:50px 1fr;gap:10px;margin:5px 0;padding:10px;border-radius:0;width:350px;-webkit-user-select:none;user-select:none;z-index:9999;border:2px solid #f0f0f0;background-color:#f0f0f0;color:#000;box-shadow:0 0 10px -5px #0006;opacity:1}.abp-toast:hover{border:2px solid #e3e3e3;background-color:#e3e3e3;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-success{border:2px solid #51a351;background-color:#51a351;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-success:hover{border:2px solid #499249;background-color:#499249;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-info{border:2px solid #2f96b4;background-color:#2f96b4;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-info:hover{border:2px solid #2a85a0;background-color:#2a85a0;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-warning{border:2px solid #f89406;background-color:#f89406;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-warning:hover{border:2px solid #df8505;background-color:#df8505;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-error{border:2px solid #bd362f;background-color:#bd362f;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-error:hover{border:2px solid #a9302a;background-color:#a9302a;box-shadow:0 0 15px -5px #0006}.abp-toast .abp-toast-icon{display:flex;align-items:center;justify-content:center}.abp-toast .abp-toast-icon .icon{font-size:36px}.abp-toast .abp-toast-content{position:relative;display:flex;align-self:center;word-break:break-word}.abp-toast .abp-toast-content .abp-toast-close-button{position:absolute;top:0;right:0;display:flex;align-items:center;justify-content:center;margin:0;padding:0 5px 0 0;width:25px;height:25px;border:none;border-radius:50%;background:transparent;color:inherit}.abp-toast .abp-toast-content .abp-toast-close-button:focus{outline:none}.abp-toast .abp-toast-content .abp-toast-title{margin:0;padding:0;font-size:1rem;font-weight:600}.abp-toast .abp-toast-content .abp-toast-message{margin:0;padding:0;max-width:240px}\n"] }]
866
- }], propDecorators: { toast: [{
867
- type: Input
868
- }], remove: [{
869
- type: Output
821
+ class ToastComponent {
822
+ constructor() {
823
+ this.remove = new EventEmitter();
824
+ }
825
+ get severityClass() {
826
+ if (!this.toast || !this.toast.severity)
827
+ return '';
828
+ return `abp-toast-${this.toast.severity}`;
829
+ }
830
+ get iconClass() {
831
+ switch (this.toast.severity) {
832
+ case 'success':
833
+ return 'fa-check-circle';
834
+ case 'info':
835
+ return 'fa-info-circle';
836
+ case 'warning':
837
+ return 'fa-exclamation-triangle';
838
+ case 'error':
839
+ return 'fa-times-circle';
840
+ default:
841
+ return 'fa-exclamation-circle';
842
+ }
843
+ }
844
+ ngOnInit() {
845
+ const { sticky, life } = this.toast.options || {};
846
+ if (sticky)
847
+ return;
848
+ const timeout = life || 5000;
849
+ setTimeout(() => {
850
+ this.close();
851
+ }, timeout);
852
+ }
853
+ close() {
854
+ this.remove.emit(this.toast.options?.id);
855
+ }
856
+ tap() {
857
+ if (this.toast.options?.tapToDismiss)
858
+ this.close();
859
+ }
860
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
861
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: ToastComponent, selector: "abp-toast", inputs: { toast: "toast" }, outputs: { remove: "remove" }, ngImport: i0, template: "<div class=\"abp-toast\" [ngClass]=\"severityClass\" (click)=\"tap()\">\r\n <div class=\"abp-toast-icon\">\r\n <i class=\"fa icon\" [ngClass]=\"iconClass\" aria-hidden=\"true\"></i>\r\n </div>\r\n <div class=\"abp-toast-content\">\r\n <button class=\"abp-toast-close-button\" (click)=\"close()\" *ngIf=\"toast.options?.closable\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n <div class=\"abp-toast-title\">\r\n {{ toast.title | abpLocalization: toast.options?.titleLocalizationParams }}\r\n </div>\r\n <p\r\n class=\"abp-toast-message\"\r\n [innerHTML]=\"toast.message | abpLocalization: toast.options?.messageLocalizationParams\"\r\n ></p>\r\n </div>\r\n</div>\r\n", styles: [".abp-toast{display:grid;grid-template-columns:50px 1fr;gap:10px;margin:5px 0;padding:10px;border-radius:0;width:350px;-webkit-user-select:none;user-select:none;z-index:9999;border:2px solid #f0f0f0;background-color:#f0f0f0;color:#000;box-shadow:0 0 10px -5px #0006;opacity:1}.abp-toast:hover{border:2px solid #e3e3e3;background-color:#e3e3e3;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-success{border:2px solid #51a351;background-color:#51a351;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-success:hover{border:2px solid #499249;background-color:#499249;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-info{border:2px solid #2f96b4;background-color:#2f96b4;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-info:hover{border:2px solid #2a85a0;background-color:#2a85a0;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-warning{border:2px solid #f89406;background-color:#f89406;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-warning:hover{border:2px solid #df8505;background-color:#df8505;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-error{border:2px solid #bd362f;background-color:#bd362f;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-error:hover{border:2px solid #a9302a;background-color:#a9302a;box-shadow:0 0 15px -5px #0006}.abp-toast .abp-toast-icon{display:flex;align-items:center;justify-content:center}.abp-toast .abp-toast-icon .icon{font-size:36px}.abp-toast .abp-toast-content{position:relative;display:flex;align-self:center;word-break:break-word}.abp-toast .abp-toast-content .abp-toast-close-button{position:absolute;top:0;right:0;display:flex;align-items:center;justify-content:center;margin:0;padding:0 5px 0 0;width:25px;height:25px;border:none;border-radius:50%;background:transparent;color:inherit}.abp-toast .abp-toast-content .abp-toast-close-button:focus{outline:none}.abp-toast .abp-toast-content .abp-toast-title{margin:0;padding:0;font-size:1rem;font-weight:600}.abp-toast .abp-toast-content .abp-toast-message{margin:0;padding:0;max-width:240px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] }); }
862
+ }
863
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ToastComponent, decorators: [{
864
+ type: Component,
865
+ args: [{ selector: 'abp-toast', template: "<div class=\"abp-toast\" [ngClass]=\"severityClass\" (click)=\"tap()\">\r\n <div class=\"abp-toast-icon\">\r\n <i class=\"fa icon\" [ngClass]=\"iconClass\" aria-hidden=\"true\"></i>\r\n </div>\r\n <div class=\"abp-toast-content\">\r\n <button class=\"abp-toast-close-button\" (click)=\"close()\" *ngIf=\"toast.options?.closable\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n <div class=\"abp-toast-title\">\r\n {{ toast.title | abpLocalization: toast.options?.titleLocalizationParams }}\r\n </div>\r\n <p\r\n class=\"abp-toast-message\"\r\n [innerHTML]=\"toast.message | abpLocalization: toast.options?.messageLocalizationParams\"\r\n ></p>\r\n </div>\r\n</div>\r\n", styles: [".abp-toast{display:grid;grid-template-columns:50px 1fr;gap:10px;margin:5px 0;padding:10px;border-radius:0;width:350px;-webkit-user-select:none;user-select:none;z-index:9999;border:2px solid #f0f0f0;background-color:#f0f0f0;color:#000;box-shadow:0 0 10px -5px #0006;opacity:1}.abp-toast:hover{border:2px solid #e3e3e3;background-color:#e3e3e3;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-success{border:2px solid #51a351;background-color:#51a351;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-success:hover{border:2px solid #499249;background-color:#499249;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-info{border:2px solid #2f96b4;background-color:#2f96b4;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-info:hover{border:2px solid #2a85a0;background-color:#2a85a0;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-warning{border:2px solid #f89406;background-color:#f89406;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-warning:hover{border:2px solid #df8505;background-color:#df8505;box-shadow:0 0 15px -5px #0006}.abp-toast.abp-toast-error{border:2px solid #bd362f;background-color:#bd362f;color:#fff;box-shadow:0 0 10px -5px #0006}.abp-toast.abp-toast-error:hover{border:2px solid #a9302a;background-color:#a9302a;box-shadow:0 0 15px -5px #0006}.abp-toast .abp-toast-icon{display:flex;align-items:center;justify-content:center}.abp-toast .abp-toast-icon .icon{font-size:36px}.abp-toast .abp-toast-content{position:relative;display:flex;align-self:center;word-break:break-word}.abp-toast .abp-toast-content .abp-toast-close-button{position:absolute;top:0;right:0;display:flex;align-items:center;justify-content:center;margin:0;padding:0 5px 0 0;width:25px;height:25px;border:none;border-radius:50%;background:transparent;color:inherit}.abp-toast .abp-toast-content .abp-toast-close-button:focus{outline:none}.abp-toast .abp-toast-content .abp-toast-title{margin:0;padding:0;font-size:1rem;font-weight:600}.abp-toast .abp-toast-content .abp-toast-message{margin:0;padding:0;max-width:240px}\n"] }]
866
+ }], propDecorators: { toast: [{
867
+ type: Input
868
+ }], remove: [{
869
+ type: Output
870
870
  }] } });
871
871
 
872
- class ToastContainerComponent {
873
- constructor() {
874
- this.toasts = [];
875
- this.right = '30px';
876
- this.defaultRight = '30px';
877
- this.defaultMobileRight = '0';
878
- this.bottom = '30px';
879
- }
880
- ngOnInit() {
881
- this.setDefaultRight();
882
- this.toasts$.subscribe(toasts => {
883
- this.toasts = this.toastKey
884
- ? toasts.filter(t => {
885
- return t.options && t.options.containerKey !== this.toastKey;
886
- })
887
- : toasts;
888
- });
889
- }
890
- onWindowResize() {
891
- this.setDefaultRight();
892
- }
893
- setDefaultRight() {
894
- const screenWidth = window.innerWidth;
895
- if (screenWidth < 768 && this.right == this.defaultRight) {
896
- this.right = this.defaultMobileRight;
897
- }
898
- }
899
- trackByFunc(index, toast) {
900
- if (!toast)
901
- return null;
902
- return toast.options?.id;
903
- }
904
- }
905
- ToastContainerComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ToastContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
906
- ToastContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ToastContainerComponent, selector: "abp-toast-container", inputs: { top: "top", right: "right", bottom: "bottom", left: "left", toastKey: "toastKey" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, ngImport: i0, template: "<div\r\n class=\"abp-toast-container\"\r\n [style.top]=\"top || 'auto'\"\r\n [style.right]=\"right || 'auto'\"\r\n [style.bottom]=\"bottom || 'auto'\"\r\n [style.left]=\"left || 'auto'\"\r\n [style.display]=\"toasts.length ? 'flex' : 'none'\"\r\n [@toastInOut]=\"toasts.length\"\r\n>\r\n <abp-toast\r\n [toast]=\"toast\"\r\n *ngFor=\"let toast of toasts; trackBy: trackByFunc\"\r\n (remove)=\"remove($event)\"\r\n ></abp-toast>\r\n</div>\r\n", styles: [".abp-toast-container{position:fixed;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;min-width:350px;min-height:80px;z-index:1900}.abp-toast-container.new-on-top{flex-direction:column-reverse}@media only screen and (max-width: 768px){.abp-toast-container{min-width:100%}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ToastComponent, selector: "abp-toast", inputs: ["toast"], outputs: ["remove"] }], animations: [toastInOut] });
907
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ToastContainerComponent, decorators: [{
908
- type: Component,
909
- args: [{ selector: 'abp-toast-container', animations: [toastInOut], template: "<div\r\n class=\"abp-toast-container\"\r\n [style.top]=\"top || 'auto'\"\r\n [style.right]=\"right || 'auto'\"\r\n [style.bottom]=\"bottom || 'auto'\"\r\n [style.left]=\"left || 'auto'\"\r\n [style.display]=\"toasts.length ? 'flex' : 'none'\"\r\n [@toastInOut]=\"toasts.length\"\r\n>\r\n <abp-toast\r\n [toast]=\"toast\"\r\n *ngFor=\"let toast of toasts; trackBy: trackByFunc\"\r\n (remove)=\"remove($event)\"\r\n ></abp-toast>\r\n</div>\r\n", styles: [".abp-toast-container{position:fixed;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;min-width:350px;min-height:80px;z-index:1900}.abp-toast-container.new-on-top{flex-direction:column-reverse}@media only screen and (max-width: 768px){.abp-toast-container{min-width:100%}}\n"] }]
910
- }], propDecorators: { top: [{
911
- type: Input
912
- }], right: [{
913
- type: Input
914
- }], bottom: [{
915
- type: Input
916
- }], left: [{
917
- type: Input
918
- }], toastKey: [{
919
- type: Input
920
- }], onWindowResize: [{
921
- type: HostListener,
922
- args: ['window:resize', ['$event']]
872
+ class ToastContainerComponent {
873
+ constructor() {
874
+ this.toasts = [];
875
+ this.right = '30px';
876
+ this.defaultRight = '30px';
877
+ this.defaultMobileRight = '0';
878
+ this.bottom = '30px';
879
+ }
880
+ ngOnInit() {
881
+ this.setDefaultRight();
882
+ this.toasts$.subscribe(toasts => {
883
+ this.toasts = this.toastKey
884
+ ? toasts.filter(t => {
885
+ return t.options && t.options.containerKey !== this.toastKey;
886
+ })
887
+ : toasts;
888
+ });
889
+ }
890
+ onWindowResize() {
891
+ this.setDefaultRight();
892
+ }
893
+ setDefaultRight() {
894
+ const screenWidth = window.innerWidth;
895
+ if (screenWidth < 768 && this.right == this.defaultRight) {
896
+ this.right = this.defaultMobileRight;
897
+ }
898
+ }
899
+ trackByFunc(index, toast) {
900
+ if (!toast)
901
+ return null;
902
+ return toast.options?.id;
903
+ }
904
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ToastContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
905
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: ToastContainerComponent, selector: "abp-toast-container", inputs: { top: "top", right: "right", bottom: "bottom", left: "left", toastKey: "toastKey" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, ngImport: i0, template: "<div\r\n class=\"abp-toast-container\"\r\n [style.top]=\"top || 'auto'\"\r\n [style.right]=\"right || 'auto'\"\r\n [style.bottom]=\"bottom || 'auto'\"\r\n [style.left]=\"left || 'auto'\"\r\n [style.display]=\"toasts.length ? 'flex' : 'none'\"\r\n [@toastInOut]=\"toasts.length\"\r\n>\r\n <abp-toast\r\n [toast]=\"toast\"\r\n *ngFor=\"let toast of toasts; trackBy: trackByFunc\"\r\n (remove)=\"remove($event)\"\r\n ></abp-toast>\r\n</div>\r\n", styles: [".abp-toast-container{position:fixed;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;min-width:350px;min-height:80px;z-index:1900}.abp-toast-container.new-on-top{flex-direction:column-reverse}@media only screen and (max-width: 768px){.abp-toast-container{min-width:100%}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ToastComponent, selector: "abp-toast", inputs: ["toast"], outputs: ["remove"] }], animations: [toastInOut] }); }
906
+ }
907
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ToastContainerComponent, decorators: [{
908
+ type: Component,
909
+ args: [{ selector: 'abp-toast-container', animations: [toastInOut], template: "<div\r\n class=\"abp-toast-container\"\r\n [style.top]=\"top || 'auto'\"\r\n [style.right]=\"right || 'auto'\"\r\n [style.bottom]=\"bottom || 'auto'\"\r\n [style.left]=\"left || 'auto'\"\r\n [style.display]=\"toasts.length ? 'flex' : 'none'\"\r\n [@toastInOut]=\"toasts.length\"\r\n>\r\n <abp-toast\r\n [toast]=\"toast\"\r\n *ngFor=\"let toast of toasts; trackBy: trackByFunc\"\r\n (remove)=\"remove($event)\"\r\n ></abp-toast>\r\n</div>\r\n", styles: [".abp-toast-container{position:fixed;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;min-width:350px;min-height:80px;z-index:1900}.abp-toast-container.new-on-top{flex-direction:column-reverse}@media only screen and (max-width: 768px){.abp-toast-container{min-width:100%}}\n"] }]
910
+ }], propDecorators: { top: [{
911
+ type: Input
912
+ }], right: [{
913
+ type: Input
914
+ }], bottom: [{
915
+ type: Input
916
+ }], left: [{
917
+ type: Input
918
+ }], toastKey: [{
919
+ type: Input
920
+ }], onWindowResize: [{
921
+ type: HostListener,
922
+ args: ['window:resize', ['$event']]
923
923
  }] } });
924
924
 
925
- class PasswordComponent extends AbstractNgModelComponent {
926
- constructor(injector) {
927
- super(injector);
928
- }
929
- toggleFieldTextType() {
930
- this.fieldTextType = !this.fieldTextType;
931
- }
932
- }
933
- PasswordComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PasswordComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
934
- PasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PasswordComponent, selector: "abp-password", inputs: { inputId: "inputId", formControlName: "formControlName" }, providers: [
935
- {
936
- provide: NG_VALUE_ACCESSOR,
937
- useExisting: forwardRef(() => PasswordComponent),
938
- multi: true,
939
- },
940
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"input-group\" validationTarget>\r\n <input\r\n [type]=\"fieldTextType ? 'text' : 'password'\"\r\n class=\"form-control\"\r\n [id]=\"inputId\"\r\n [(ngModel)]=\"value\"\r\n />\r\n\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"toggleFieldTextType()\">\r\n <i\r\n class=\"fa\"\r\n [ngClass]=\"{\r\n 'fa-eye-slash': !fieldTextType,\r\n 'fa-eye': fieldTextType\r\n }\"\r\n ></i>\r\n </button>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.ValidationTargetDirective, selector: "[validationTarget]", exportAs: ["validationTarget"] }] });
941
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PasswordComponent, decorators: [{
942
- type: Component,
943
- args: [{ selector: 'abp-password', providers: [
944
- {
945
- provide: NG_VALUE_ACCESSOR,
946
- useExisting: forwardRef(() => PasswordComponent),
947
- multi: true,
948
- },
949
- ], template: "<div class=\"input-group\" validationTarget>\r\n <input\r\n [type]=\"fieldTextType ? 'text' : 'password'\"\r\n class=\"form-control\"\r\n [id]=\"inputId\"\r\n [(ngModel)]=\"value\"\r\n />\r\n\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"toggleFieldTextType()\">\r\n <i\r\n class=\"fa\"\r\n [ngClass]=\"{\r\n 'fa-eye-slash': !fieldTextType,\r\n 'fa-eye': fieldTextType\r\n }\"\r\n ></i>\r\n </button>\r\n</div>\r\n" }]
950
- }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { inputId: [{
951
- type: Input
952
- }], formControlName: [{
953
- type: Input
925
+ class PasswordComponent extends AbstractNgModelComponent {
926
+ constructor(injector) {
927
+ super(injector);
928
+ }
929
+ toggleFieldTextType() {
930
+ this.fieldTextType = !this.fieldTextType;
931
+ }
932
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: PasswordComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
933
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: PasswordComponent, selector: "abp-password", inputs: { inputId: "inputId", formControlName: "formControlName" }, providers: [
934
+ {
935
+ provide: NG_VALUE_ACCESSOR,
936
+ useExisting: forwardRef(() => PasswordComponent),
937
+ multi: true,
938
+ },
939
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"input-group\" validationTarget>\r\n <input\r\n [type]=\"fieldTextType ? 'text' : 'password'\"\r\n class=\"form-control\"\r\n [id]=\"inputId\"\r\n [(ngModel)]=\"value\"\r\n />\r\n\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"toggleFieldTextType()\">\r\n <i\r\n class=\"fa\"\r\n aria-hidden=\"true\"\r\n [ngClass]=\"{\r\n 'fa-eye-slash': !fieldTextType,\r\n 'fa-eye': fieldTextType\r\n }\"\r\n ></i>\r\n </button>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.ValidationTargetDirective, selector: "[validationTarget]", exportAs: ["validationTarget"] }] }); }
940
+ }
941
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: PasswordComponent, decorators: [{
942
+ type: Component,
943
+ args: [{ selector: 'abp-password', providers: [
944
+ {
945
+ provide: NG_VALUE_ACCESSOR,
946
+ useExisting: forwardRef(() => PasswordComponent),
947
+ multi: true,
948
+ },
949
+ ], template: "<div class=\"input-group\" validationTarget>\r\n <input\r\n [type]=\"fieldTextType ? 'text' : 'password'\"\r\n class=\"form-control\"\r\n [id]=\"inputId\"\r\n [(ngModel)]=\"value\"\r\n />\r\n\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"toggleFieldTextType()\">\r\n <i\r\n class=\"fa\"\r\n aria-hidden=\"true\"\r\n [ngClass]=\"{\r\n 'fa-eye-slash': !fieldTextType,\r\n 'fa-eye': fieldTextType\r\n }\"\r\n ></i>\r\n </button>\r\n</div>\r\n" }]
950
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { inputId: [{
951
+ type: Input
952
+ }], formControlName: [{
953
+ type: Input
954
954
  }] } });
955
955
 
956
- class CardBodyComponent {
957
- constructor() {
958
- this.componentClass = 'card-body';
959
- }
960
- }
961
- CardBodyComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
962
- CardBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CardBodyComponent, selector: "abp-card-body", inputs: { cardBodyClass: "cardBodyClass", cardBodyStyle: "cardBodyStyle" }, host: { properties: { "class": "this.componentClass" } }, ngImport: i0, template: ` <div [ngClass]="cardBodyClass" [ngStyle]="cardBodyStyle">
956
+ class CardBodyComponent {
957
+ constructor() {
958
+ this.componentClass = 'card-body';
959
+ }
960
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
961
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: CardBodyComponent, selector: "abp-card-body", inputs: { cardBodyClass: "cardBodyClass", cardBodyStyle: "cardBodyStyle" }, host: { properties: { "class": "this.componentClass" } }, ngImport: i0, template: ` <div [ngClass]="cardBodyClass" [ngStyle]="cardBodyStyle">
963
962
  <ng-content></ng-content>
964
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
965
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardBodyComponent, decorators: [{
966
- type: Component,
967
- args: [{
968
- selector: 'abp-card-body',
963
+ </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
964
+ }
965
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardBodyComponent, decorators: [{
966
+ type: Component,
967
+ args: [{
968
+ selector: 'abp-card-body',
969
969
  template: ` <div [ngClass]="cardBodyClass" [ngStyle]="cardBodyStyle">
970
970
  <ng-content></ng-content>
971
- </div>`,
972
- }]
973
- }], propDecorators: { componentClass: [{
974
- type: HostBinding,
975
- args: ['class']
976
- }], cardBodyClass: [{
977
- type: Input
978
- }], cardBodyStyle: [{
979
- type: Input
971
+ </div>`,
972
+ }]
973
+ }], propDecorators: { componentClass: [{
974
+ type: HostBinding,
975
+ args: ['class']
976
+ }], cardBodyClass: [{
977
+ type: Input
978
+ }], cardBodyStyle: [{
979
+ type: Input
980
980
  }] } });
981
981
 
982
- class CardComponent {
983
- }
984
- CardComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
985
- CardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CardComponent, selector: "abp-card", inputs: { cardClass: "cardClass", cardStyle: "cardStyle" }, ngImport: i0, template: ` <div class="card" [ngClass]="cardClass" [ngStyle]="cardStyle">
982
+ class CardComponent {
983
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
984
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: CardComponent, selector: "abp-card", inputs: { cardClass: "cardClass", cardStyle: "cardStyle" }, ngImport: i0, template: ` <div class="card" [ngClass]="cardClass" [ngStyle]="cardStyle">
986
985
  <ng-content></ng-content>
987
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
988
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardComponent, decorators: [{
989
- type: Component,
990
- args: [{
991
- selector: 'abp-card',
986
+ </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
987
+ }
988
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardComponent, decorators: [{
989
+ type: Component,
990
+ args: [{
991
+ selector: 'abp-card',
992
992
  template: ` <div class="card" [ngClass]="cardClass" [ngStyle]="cardStyle">
993
993
  <ng-content></ng-content>
994
- </div>`,
995
- }]
996
- }], propDecorators: { cardClass: [{
997
- type: Input
998
- }], cardStyle: [{
999
- type: Input
994
+ </div>`,
995
+ }]
996
+ }], propDecorators: { cardClass: [{
997
+ type: Input
998
+ }], cardStyle: [{
999
+ type: Input
1000
1000
  }] } });
1001
1001
 
1002
- class CardHeaderComponent {
1003
- constructor() {
1004
- this.componentClass = 'card-header';
1005
- }
1006
- }
1007
- CardHeaderComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1008
- CardHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CardHeaderComponent, selector: "abp-card-header", inputs: { cardHeaderClass: "cardHeaderClass", cardHeaderStyle: "cardHeaderStyle" }, host: { properties: { "class": "this.componentClass" } }, ngImport: i0, template: `
1002
+ class CardHeaderComponent {
1003
+ constructor() {
1004
+ this.componentClass = 'card-header';
1005
+ }
1006
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1007
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: CardHeaderComponent, selector: "abp-card-header", inputs: { cardHeaderClass: "cardHeaderClass", cardHeaderStyle: "cardHeaderStyle" }, host: { properties: { "class": "this.componentClass" } }, ngImport: i0, template: `
1009
1008
  <div [ngClass]="cardHeaderClass" [ngStyle]="cardHeaderStyle">
1010
1009
  <ng-content></ng-content>
1011
1010
  </div>
1012
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
1013
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardHeaderComponent, decorators: [{
1014
- type: Component,
1011
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
1012
+ }
1013
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardHeaderComponent, decorators: [{
1014
+ type: Component,
1015
1015
  args: [{ selector: 'abp-card-header', template: `
1016
1016
  <div [ngClass]="cardHeaderClass" [ngStyle]="cardHeaderStyle">
1017
1017
  <ng-content></ng-content>
1018
1018
  </div>
1019
- ` }]
1020
- }], propDecorators: { componentClass: [{
1021
- type: HostBinding,
1022
- args: ['class']
1023
- }], cardHeaderClass: [{
1024
- type: Input
1025
- }], cardHeaderStyle: [{
1026
- type: Input
1019
+ ` }]
1020
+ }], propDecorators: { componentClass: [{
1021
+ type: HostBinding,
1022
+ args: ['class']
1023
+ }], cardHeaderClass: [{
1024
+ type: Input
1025
+ }], cardHeaderStyle: [{
1026
+ type: Input
1027
1027
  }] } });
1028
1028
 
1029
- class CardFooterComponent {
1030
- constructor() {
1031
- this.componentClass = 'card-footer';
1032
- }
1033
- }
1034
- CardFooterComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1035
- CardFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CardFooterComponent, selector: "abp-card-footer", inputs: { cardFooterStyle: "cardFooterStyle", cardFooterClass: "cardFooterClass" }, host: { properties: { "class": "this.componentClass" } }, ngImport: i0, template: `
1029
+ class CardFooterComponent {
1030
+ constructor() {
1031
+ this.componentClass = 'card-footer';
1032
+ }
1033
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1034
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: CardFooterComponent, selector: "abp-card-footer", inputs: { cardFooterStyle: "cardFooterStyle", cardFooterClass: "cardFooterClass" }, host: { properties: { "class": "this.componentClass" } }, ngImport: i0, template: `
1036
1035
  <div [ngStyle]="cardFooterStyle" [ngClass]="cardFooterClass">
1037
1036
  <ng-content></ng-content>
1038
1037
  </div>
1039
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
1040
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardFooterComponent, decorators: [{
1041
- type: Component,
1038
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
1039
+ }
1040
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardFooterComponent, decorators: [{
1041
+ type: Component,
1042
1042
  args: [{ selector: 'abp-card-footer', template: `
1043
1043
  <div [ngStyle]="cardFooterStyle" [ngClass]="cardFooterClass">
1044
1044
  <ng-content></ng-content>
1045
1045
  </div>
1046
- ` }]
1047
- }], propDecorators: { componentClass: [{
1048
- type: HostBinding,
1049
- args: ['class']
1050
- }], cardFooterStyle: [{
1051
- type: Input
1052
- }], cardFooterClass: [{
1053
- type: Input
1046
+ ` }]
1047
+ }], propDecorators: { componentClass: [{
1048
+ type: HostBinding,
1049
+ args: ['class']
1050
+ }], cardFooterStyle: [{
1051
+ type: Input
1052
+ }], cardFooterClass: [{
1053
+ type: Input
1054
1054
  }] } });
1055
1055
 
1056
- class CardTitleDirective {
1057
- constructor() {
1058
- this.directiveClass = 'card-title';
1059
- }
1060
- }
1061
- CardTitleDirectivefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1062
- CardTitleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: CardTitleDirective, selector: "abp-card-title, [abp-card-title], [abpCardTitle]", host: { properties: { "class": "this.directiveClass" } }, ngImport: i0 });
1063
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardTitleDirective, decorators: [{
1064
- type: Directive,
1065
- args: [{
1066
- selector: `abp-card-title, [abp-card-title], [abpCardTitle]`,
1067
- }]
1068
- }], propDecorators: { directiveClass: [{
1069
- type: HostBinding,
1070
- args: ['class']
1056
+ class CardTitleDirective {
1057
+ constructor() {
1058
+ this.directiveClass = 'card-title';
1059
+ }
1060
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1061
+ static { thisdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: CardTitleDirective, selector: "abp-card-title, [abp-card-title], [abpCardTitle]", host: { properties: { "class": "this.directiveClass" } }, ngImport: i0 }); }
1062
+ }
1063
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardTitleDirective, decorators: [{
1064
+ type: Directive,
1065
+ args: [{
1066
+ selector: `abp-card-title, [abp-card-title], [abpCardTitle]`,
1067
+ }]
1068
+ }], propDecorators: { directiveClass: [{
1069
+ type: HostBinding,
1070
+ args: ['class']
1071
1071
  }] } });
1072
1072
 
1073
- class CardSubtitleDirective {
1074
- constructor() {
1075
- this.directiveClass = 'card-subtitle';
1076
- }
1077
- }
1078
- CardSubtitleDirectivefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardSubtitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1079
- CardSubtitleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: CardSubtitleDirective, selector: "abp-card-subtitle, [abp-card-subtitle], [abpCardSubtitle]", host: { properties: { "class": "this.directiveClass" } }, ngImport: i0 });
1080
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardSubtitleDirective, decorators: [{
1081
- type: Directive,
1082
- args: [{
1083
- selector: `abp-card-subtitle, [abp-card-subtitle], [abpCardSubtitle]`,
1084
- }]
1085
- }], propDecorators: { directiveClass: [{
1086
- type: HostBinding,
1087
- args: ['class']
1073
+ class CardSubtitleDirective {
1074
+ constructor() {
1075
+ this.directiveClass = 'card-subtitle';
1076
+ }
1077
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardSubtitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1078
+ static { thisdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: CardSubtitleDirective, selector: "abp-card-subtitle, [abp-card-subtitle], [abpCardSubtitle]", host: { properties: { "class": "this.directiveClass" } }, ngImport: i0 }); }
1079
+ }
1080
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardSubtitleDirective, decorators: [{
1081
+ type: Directive,
1082
+ args: [{
1083
+ selector: `abp-card-subtitle, [abp-card-subtitle], [abpCardSubtitle]`,
1084
+ }]
1085
+ }], propDecorators: { directiveClass: [{
1086
+ type: HostBinding,
1087
+ args: ['class']
1088
1088
  }] } });
1089
1089
 
1090
- class CardImgTopDirective {
1091
- constructor() {
1092
- this.directiveClass = 'card-img-top';
1093
- }
1094
- }
1095
- CardImgTopDirectivefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardImgTopDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1096
- CardImgTopDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: CardImgTopDirective, selector: "abp-card-img-top, [abp-card-img-top], [abpCardImgTop]", host: { properties: { "class": "this.directiveClass" } }, ngImport: i0 });
1097
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardImgTopDirective, decorators: [{
1098
- type: Directive,
1099
- args: [{
1100
- selector: `abp-card-img-top, [abp-card-img-top], [abpCardImgTop]`,
1101
- }]
1102
- }], propDecorators: { directiveClass: [{
1103
- type: HostBinding,
1104
- args: ['class']
1090
+ class CardImgTopDirective {
1091
+ constructor() {
1092
+ this.directiveClass = 'card-img-top';
1093
+ }
1094
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardImgTopDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1095
+ static { thisdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: CardImgTopDirective, selector: "abp-card-img-top, [abp-card-img-top], [abpCardImgTop]", host: { properties: { "class": "this.directiveClass" } }, ngImport: i0 }); }
1096
+ }
1097
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardImgTopDirective, decorators: [{
1098
+ type: Directive,
1099
+ args: [{
1100
+ selector: `abp-card-img-top, [abp-card-img-top], [abpCardImgTop]`,
1101
+ }]
1102
+ }], propDecorators: { directiveClass: [{
1103
+ type: HostBinding,
1104
+ args: ['class']
1105
1105
  }] } });
1106
1106
 
1107
- class CardHeaderDirective {
1108
- constructor() {
1109
- this.directiveClass = 'card-header';
1110
- }
1111
- }
1112
- CardHeaderDirectivefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1113
- CardHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: CardHeaderDirective, selector: "abp-card-header, [abp-card-header], [abpCardHeader]", host: { properties: { "class": "this.directiveClass" } }, ngImport: i0 });
1114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardHeaderDirective, decorators: [{
1115
- type: Directive,
1116
- args: [{
1117
- selector: `abp-card-header, [abp-card-header], [abpCardHeader]`,
1118
- }]
1119
- }], propDecorators: { directiveClass: [{
1120
- type: HostBinding,
1121
- args: ['class']
1107
+ class CardHeaderDirective {
1108
+ constructor() {
1109
+ this.directiveClass = 'card-header';
1110
+ }
1111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1112
+ static { thisdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: CardHeaderDirective, selector: "abp-card-header, [abp-card-header], [abpCardHeader]", host: { properties: { "class": "this.directiveClass" } }, ngImport: i0 }); }
1113
+ }
1114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardHeaderDirective, decorators: [{
1115
+ type: Directive,
1116
+ args: [{
1117
+ selector: `abp-card-header, [abp-card-header], [abpCardHeader]`,
1118
+ }]
1119
+ }], propDecorators: { directiveClass: [{
1120
+ type: HostBinding,
1121
+ args: ['class']
1122
1122
  }] } });
1123
1123
 
1124
- const declarationsWithExports$1 = [
1125
- CardComponent,
1126
- CardBodyComponent,
1127
- CardHeaderComponent,
1128
- CardFooterComponent,
1129
- CardTitleDirective,
1130
- CardSubtitleDirective,
1131
- CardImgTopDirective,
1132
- CardHeaderDirective,
1133
- ];
1134
- class CardModule {
1135
- }
1136
- CardModulefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1137
- CardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: CardModule, declarations: [CardComponent,
1138
- CardBodyComponent,
1139
- CardHeaderComponent,
1140
- CardFooterComponent,
1141
- CardTitleDirective,
1142
- CardSubtitleDirective,
1143
- CardImgTopDirective,
1144
- CardHeaderDirective], imports: [CommonModule], exports: [CardComponent,
1145
- CardBodyComponent,
1146
- CardHeaderComponent,
1147
- CardFooterComponent,
1148
- CardTitleDirective,
1149
- CardSubtitleDirective,
1150
- CardImgTopDirective,
1151
- CardHeaderDirective] });
1152
- CardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardModule, imports: [CommonModule] });
1153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CardModule, decorators: [{
1154
- type: NgModule,
1155
- args: [{
1156
- declarations: [...declarationsWithExports$1],
1157
- imports: [CommonModule],
1158
- exports: [...declarationsWithExports$1],
1159
- }]
1124
+ const declarationsWithExports$1 = [
1125
+ CardComponent,
1126
+ CardBodyComponent,
1127
+ CardHeaderComponent,
1128
+ CardFooterComponent,
1129
+ CardTitleDirective,
1130
+ CardSubtitleDirective,
1131
+ CardImgTopDirective,
1132
+ CardHeaderDirective,
1133
+ ];
1134
+ class CardModule {
1135
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1136
+ static { thismod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: CardModule, declarations: [CardComponent,
1137
+ CardBodyComponent,
1138
+ CardHeaderComponent,
1139
+ CardFooterComponent,
1140
+ CardTitleDirective,
1141
+ CardSubtitleDirective,
1142
+ CardImgTopDirective,
1143
+ CardHeaderDirective], imports: [CommonModule], exports: [CardComponent,
1144
+ CardBodyComponent,
1145
+ CardHeaderComponent,
1146
+ CardFooterComponent,
1147
+ CardTitleDirective,
1148
+ CardSubtitleDirective,
1149
+ CardImgTopDirective,
1150
+ CardHeaderDirective] }); }
1151
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardModule, imports: [CommonModule] }); }
1152
+ }
1153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CardModule, decorators: [{
1154
+ type: NgModule,
1155
+ args: [{
1156
+ declarations: [...declarationsWithExports$1],
1157
+ imports: [CommonModule],
1158
+ exports: [...declarationsWithExports$1],
1159
+ }]
1160
1160
  }] });
1161
1161
 
1162
- class FormCheckboxComponent extends AbstractNgModelComponent {
1163
- constructor(injector) {
1164
- super(injector);
1165
- this.labelClass = 'form-check-label';
1166
- this.checkboxClass = 'form-check-input';
1167
- this.checkboxReadonly = false;
1168
- this.checkboxBlur = new EventEmitter();
1169
- this.checkboxFocus = new EventEmitter();
1170
- }
1171
- }
1172
- FormCheckboxComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: FormCheckboxComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
1173
- FormCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: FormCheckboxComponent, selector: "abp-checkbox", inputs: { label: "label", labelClass: "labelClass", checkboxId: "checkboxId", checkboxStyle: "checkboxStyle", checkboxClass: "checkboxClass", checkboxReadonly: "checkboxReadonly" }, outputs: { checkboxBlur: "checkboxBlur", checkboxFocus: "checkboxFocus" }, providers: [
1174
- {
1175
- provide: NG_VALUE_ACCESSOR,
1176
- useExisting: forwardRef(() => FormCheckboxComponent),
1177
- multi: true,
1178
- },
1179
- ], usesInheritance: true, ngImport: i0, template: `
1162
+ class FormCheckboxComponent extends AbstractNgModelComponent {
1163
+ constructor(injector) {
1164
+ super(injector);
1165
+ this.labelClass = 'form-check-label';
1166
+ this.checkboxClass = 'form-check-input';
1167
+ this.checkboxReadonly = false;
1168
+ this.checkboxBlur = new EventEmitter();
1169
+ this.checkboxFocus = new EventEmitter();
1170
+ }
1171
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FormCheckboxComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1172
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FormCheckboxComponent, selector: "abp-checkbox", inputs: { label: "label", labelClass: "labelClass", checkboxId: "checkboxId", checkboxStyle: "checkboxStyle", checkboxClass: "checkboxClass", checkboxReadonly: "checkboxReadonly" }, outputs: { checkboxBlur: "checkboxBlur", checkboxFocus: "checkboxFocus" }, providers: [
1173
+ {
1174
+ provide: NG_VALUE_ACCESSOR,
1175
+ useExisting: forwardRef(() => FormCheckboxComponent),
1176
+ multi: true,
1177
+ },
1178
+ ], usesInheritance: true, ngImport: i0, template: `
1180
1179
  <div class="mb-3">
1181
1180
  <input
1182
1181
  type="checkbox"
@@ -1192,11 +1191,12 @@ FormCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
1192
1191
  {{ label | abpLocalization }}
1193
1192
  </label>
1194
1193
  </div>
1195
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] });
1196
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: FormCheckboxComponent, decorators: [{
1197
- type: Component,
1198
- args: [{
1199
- selector: 'abp-checkbox',
1194
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] }); }
1195
+ }
1196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FormCheckboxComponent, decorators: [{
1197
+ type: Component,
1198
+ args: [{
1199
+ selector: 'abp-checkbox',
1200
1200
  template: `
1201
1201
  <div class="mb-3">
1202
1202
  <input
@@ -1213,53 +1213,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
1213
1213
  {{ label | abpLocalization }}
1214
1214
  </label>
1215
1215
  </div>
1216
- `,
1217
- providers: [
1218
- {
1219
- provide: NG_VALUE_ACCESSOR,
1220
- useExisting: forwardRef(() => FormCheckboxComponent),
1221
- multi: true,
1222
- },
1223
- ],
1224
- }]
1225
- }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { label: [{
1226
- type: Input
1227
- }], labelClass: [{
1228
- type: Input
1229
- }], checkboxId: [{
1230
- type: Input
1231
- }], checkboxStyle: [{
1232
- type: Input
1233
- }], checkboxClass: [{
1234
- type: Input
1235
- }], checkboxReadonly: [{
1236
- type: Input
1237
- }], checkboxBlur: [{
1238
- type: Output
1239
- }], checkboxFocus: [{
1240
- type: Output
1216
+ `,
1217
+ providers: [
1218
+ {
1219
+ provide: NG_VALUE_ACCESSOR,
1220
+ useExisting: forwardRef(() => FormCheckboxComponent),
1221
+ multi: true,
1222
+ },
1223
+ ],
1224
+ }]
1225
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { label: [{
1226
+ type: Input
1227
+ }], labelClass: [{
1228
+ type: Input
1229
+ }], checkboxId: [{
1230
+ type: Input
1231
+ }], checkboxStyle: [{
1232
+ type: Input
1233
+ }], checkboxClass: [{
1234
+ type: Input
1235
+ }], checkboxReadonly: [{
1236
+ type: Input
1237
+ }], checkboxBlur: [{
1238
+ type: Output
1239
+ }], checkboxFocus: [{
1240
+ type: Output
1241
1241
  }] } });
1242
1242
 
1243
- class FormInputComponent extends AbstractNgModelComponent {
1244
- constructor(injector) {
1245
- super(injector);
1246
- this.inputReadonly = false;
1247
- this.label = '';
1248
- this.labelClass = 'form-label';
1249
- this.inputPlaceholder = '';
1250
- this.inputClass = 'form-control';
1251
- this.formBlur = new EventEmitter();
1252
- this.formFocus = new EventEmitter();
1253
- }
1254
- }
1255
- FormInputComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: FormInputComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
1256
- FormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: FormInputComponent, selector: "abp-form-input", inputs: { inputId: "inputId", inputReadonly: "inputReadonly", label: "label", labelClass: "labelClass", inputPlaceholder: "inputPlaceholder", inputStyle: "inputStyle", inputClass: "inputClass" }, outputs: { formBlur: "formBlur", formFocus: "formFocus" }, providers: [
1257
- {
1258
- provide: NG_VALUE_ACCESSOR,
1259
- useExisting: forwardRef(() => FormInputComponent),
1260
- multi: true,
1261
- },
1262
- ], usesInheritance: true, ngImport: i0, template: `
1243
+ class FormInputComponent extends AbstractNgModelComponent {
1244
+ constructor(injector) {
1245
+ super(injector);
1246
+ this.inputReadonly = false;
1247
+ this.label = '';
1248
+ this.labelClass = 'form-label';
1249
+ this.inputPlaceholder = '';
1250
+ this.inputClass = 'form-control';
1251
+ this.formBlur = new EventEmitter();
1252
+ this.formFocus = new EventEmitter();
1253
+ }
1254
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FormInputComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1255
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FormInputComponent, selector: "abp-form-input", inputs: { inputId: "inputId", inputReadonly: "inputReadonly", label: "label", labelClass: "labelClass", inputPlaceholder: "inputPlaceholder", inputStyle: "inputStyle", inputClass: "inputClass" }, outputs: { formBlur: "formBlur", formFocus: "formFocus" }, providers: [
1256
+ {
1257
+ provide: NG_VALUE_ACCESSOR,
1258
+ useExisting: forwardRef(() => FormInputComponent),
1259
+ multi: true,
1260
+ },
1261
+ ], usesInheritance: true, ngImport: i0, template: `
1263
1262
  <div class="mb-3">
1264
1263
  <label *ngIf="label" [ngClass]="labelClass" [for]="inputId">
1265
1264
  {{ label | abpLocalization }}
@@ -1276,11 +1275,12 @@ FormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
1276
1275
  [(ngModel)]="value"
1277
1276
  />
1278
1277
  </div>
1279
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] });
1280
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: FormInputComponent, decorators: [{
1281
- type: Component,
1282
- args: [{
1283
- selector: 'abp-form-input',
1278
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] }); }
1279
+ }
1280
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FormInputComponent, decorators: [{
1281
+ type: Component,
1282
+ args: [{
1283
+ selector: 'abp-form-input',
1284
1284
  template: `
1285
1285
  <div class="mb-3">
1286
1286
  <label *ngIf="label" [ngClass]="labelClass" [for]="inputId">
@@ -1298,981 +1298,983 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
1298
1298
  [(ngModel)]="value"
1299
1299
  />
1300
1300
  </div>
1301
- `,
1302
- providers: [
1303
- {
1304
- provide: NG_VALUE_ACCESSOR,
1305
- useExisting: forwardRef(() => FormInputComponent),
1306
- multi: true,
1307
- },
1308
- ],
1309
- }]
1310
- }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { inputId: [{
1311
- type: Input
1312
- }], inputReadonly: [{
1313
- type: Input
1314
- }], label: [{
1315
- type: Input
1316
- }], labelClass: [{
1317
- type: Input
1318
- }], inputPlaceholder: [{
1319
- type: Input
1320
- }], inputStyle: [{
1321
- type: Input
1322
- }], inputClass: [{
1323
- type: Input
1324
- }], formBlur: [{
1325
- type: Output
1326
- }], formFocus: [{
1327
- type: Output
1301
+ `,
1302
+ providers: [
1303
+ {
1304
+ provide: NG_VALUE_ACCESSOR,
1305
+ useExisting: forwardRef(() => FormInputComponent),
1306
+ multi: true,
1307
+ },
1308
+ ],
1309
+ }]
1310
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { inputId: [{
1311
+ type: Input
1312
+ }], inputReadonly: [{
1313
+ type: Input
1314
+ }], label: [{
1315
+ type: Input
1316
+ }], labelClass: [{
1317
+ type: Input
1318
+ }], inputPlaceholder: [{
1319
+ type: Input
1320
+ }], inputStyle: [{
1321
+ type: Input
1322
+ }], inputClass: [{
1323
+ type: Input
1324
+ }], formBlur: [{
1325
+ type: Output
1326
+ }], formFocus: [{
1327
+ type: Output
1328
1328
  }] } });
1329
1329
 
1330
- const DEFAULT_VALIDATION_BLUEPRINTS = {
1331
- creditCard: 'AbpValidation::ThisFieldIsNotAValidCreditCardNumber.',
1332
- email: 'AbpValidation::ThisFieldIsNotAValidEmailAddress.',
1333
- invalid: 'AbpValidation::ThisFieldIsNotValid.',
1334
- max: 'AbpValidation::ThisFieldMustBeLessOrEqual{0}[{{ max }}]',
1335
- maxlength: 'AbpValidation::ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}[{{ requiredLength }}]',
1336
- min: 'AbpValidation::ThisFieldMustBeGreaterThanOrEqual{0}[{{ min }}]',
1337
- minlength: 'AbpValidation::ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}[{{ requiredLength }}]',
1338
- ngbDate: 'AbpValidation::ThisFieldIsNotValid.',
1339
- passwordMismatch: 'AbpIdentity::Volo.Abp.Identity:PasswordConfirmationFailed',
1340
- range: 'AbpValidation::ThisFieldMustBeBetween{0}And{1}[{{ min }},{{ max }}]',
1341
- required: 'AbpValidation::ThisFieldIsRequired.',
1342
- url: 'AbpValidation::ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl',
1343
- passwordRequiresLower: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresLower',
1344
- passwordRequiresUpper: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresUpper',
1345
- passwordRequiresDigit: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresDigit',
1346
- passwordRequiresNonAlphanumeric: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresNonAlphanumeric',
1347
- usernamePattern: 'AbpIdentity::Volo.Abp.Identity:InvalidUserName[{{ actualValue }}]',
1330
+ const DEFAULT_VALIDATION_BLUEPRINTS = {
1331
+ creditCard: 'AbpValidation::ThisFieldIsNotAValidCreditCardNumber.',
1332
+ email: 'AbpValidation::ThisFieldIsNotAValidEmailAddress.',
1333
+ invalid: 'AbpValidation::ThisFieldIsNotValid.',
1334
+ max: 'AbpValidation::ThisFieldMustBeLessOrEqual{0}[{{ max }}]',
1335
+ maxlength: 'AbpValidation::ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}[{{ requiredLength }}]',
1336
+ min: 'AbpValidation::ThisFieldMustBeGreaterThanOrEqual{0}[{{ min }}]',
1337
+ minlength: 'AbpValidation::ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}[{{ requiredLength }}]',
1338
+ ngbDate: 'AbpValidation::ThisFieldIsNotValid.',
1339
+ passwordMismatch: 'AbpIdentity::Volo.Abp.Identity:PasswordConfirmationFailed',
1340
+ range: 'AbpValidation::ThisFieldMustBeBetween{0}And{1}[{{ min }},{{ max }}]',
1341
+ required: 'AbpValidation::ThisFieldIsRequired.',
1342
+ url: 'AbpValidation::ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl',
1343
+ passwordRequiresLower: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresLower',
1344
+ passwordRequiresUpper: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresUpper',
1345
+ passwordRequiresDigit: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresDigit',
1346
+ passwordRequiresNonAlphanumeric: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresNonAlphanumeric',
1347
+ usernamePattern: 'AbpIdentity::Volo.Abp.Identity:InvalidUserName[{{ actualValue }}]',
1348
1348
  };
1349
1349
 
1350
- class EllipsisDirective {
1351
- constructor(cdRef, elRef) {
1352
- this.cdRef = cdRef;
1353
- this.elRef = elRef;
1354
- this.enabled = true;
1355
- }
1356
- get inlineClass() {
1357
- return this.enabled && this.width;
1358
- }
1359
- get class() {
1360
- return this.enabled && !this.width;
1361
- }
1362
- get maxWidth() {
1363
- return this.enabled && this.width ? this.width || '170px' : undefined;
1364
- }
1365
- ngAfterViewInit() {
1366
- this.title = this.title || this.elRef.nativeElement.innerText;
1367
- this.cdRef.detectChanges();
1368
- }
1369
- }
1370
- EllipsisDirectivefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: EllipsisDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1371
- EllipsisDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: EllipsisDirective, selector: "[abpEllipsis]", inputs: { width: ["abpEllipsis", "width"], title: "title", enabled: ["abpEllipsisEnabled", "enabled"] }, host: { properties: { "title": "this.title", "class.abp-ellipsis-inline": "this.inlineClass", "class.abp-ellipsis": "this.class", "style.max-width": "this.maxWidth" } }, ngImport: i0 });
1372
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: EllipsisDirective, decorators: [{
1373
- type: Directive,
1374
- args: [{
1375
- selector: '[abpEllipsis]',
1376
- }]
1377
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { width: [{
1378
- type: Input,
1379
- args: ['abpEllipsis']
1380
- }], title: [{
1381
- type: HostBinding,
1382
- args: ['title']
1383
- }, {
1384
- type: Input
1385
- }], enabled: [{
1386
- type: Input,
1387
- args: ['abpEllipsisEnabled']
1388
- }], inlineClass: [{
1389
- type: HostBinding,
1390
- args: ['class.abp-ellipsis-inline']
1391
- }], class: [{
1392
- type: HostBinding,
1393
- args: ['class.abp-ellipsis']
1394
- }], maxWidth: [{
1395
- type: HostBinding,
1396
- args: ['style.max-width']
1397
- }] } });
1398
- class EllipsisModule {
1399
- }
1400
- EllipsisModulefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: EllipsisModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1401
- EllipsisModulemod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: EllipsisModule, declarations: [EllipsisDirective], exports: [EllipsisDirective] });
1402
- EllipsisModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: EllipsisModule });
1403
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: EllipsisModule, decorators: [{
1404
- type: NgModule,
1405
- args: [{
1406
- exports: [EllipsisDirective],
1407
- declarations: [EllipsisDirective],
1408
- }]
1350
+ class EllipsisDirective {
1351
+ get inlineClass() {
1352
+ return this.enabled && this.width;
1353
+ }
1354
+ get class() {
1355
+ return this.enabled && !this.width;
1356
+ }
1357
+ get maxWidth() {
1358
+ return this.enabled && this.width ? this.width || '170px' : undefined;
1359
+ }
1360
+ constructor(cdRef, elRef) {
1361
+ this.cdRef = cdRef;
1362
+ this.elRef = elRef;
1363
+ this.enabled = true;
1364
+ }
1365
+ ngAfterViewInit() {
1366
+ this.title = this.title || this.elRef.nativeElement.innerText;
1367
+ this.cdRef.detectChanges();
1368
+ }
1369
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: EllipsisDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1370
+ static { thisdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: EllipsisDirective, selector: "[abpEllipsis]", inputs: { width: ["abpEllipsis", "width"], title: "title", enabled: ["abpEllipsisEnabled", "enabled"] }, host: { properties: { "title": "this.title", "class.abp-ellipsis-inline": "this.inlineClass", "class.abp-ellipsis": "this.class", "style.max-width": "this.maxWidth" } }, ngImport: i0 }); }
1371
+ }
1372
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: EllipsisDirective, decorators: [{
1373
+ type: Directive,
1374
+ args: [{
1375
+ selector: '[abpEllipsis]',
1376
+ }]
1377
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { width: [{
1378
+ type: Input,
1379
+ args: ['abpEllipsis']
1380
+ }], title: [{
1381
+ type: HostBinding,
1382
+ args: ['title']
1383
+ }, {
1384
+ type: Input
1385
+ }], enabled: [{
1386
+ type: Input,
1387
+ args: ['abpEllipsisEnabled']
1388
+ }], inlineClass: [{
1389
+ type: HostBinding,
1390
+ args: ['class.abp-ellipsis-inline']
1391
+ }], class: [{
1392
+ type: HostBinding,
1393
+ args: ['class.abp-ellipsis']
1394
+ }], maxWidth: [{
1395
+ type: HostBinding,
1396
+ args: ['style.max-width']
1397
+ }] } });
1398
+ class EllipsisModule {
1399
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: EllipsisModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1400
+ static { thismod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: EllipsisModule, declarations: [EllipsisDirective], exports: [EllipsisDirective] }); }
1401
+ static { thisinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: EllipsisModule }); }
1402
+ }
1403
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: EllipsisModule, decorators: [{
1404
+ type: NgModule,
1405
+ args: [{
1406
+ exports: [EllipsisDirective],
1407
+ declarations: [EllipsisDirective],
1408
+ }]
1409
1409
  }] });
1410
1410
 
1411
- class LoadingDirective {
1412
- constructor(elRef, vcRef, cdRes, injector, renderer) {
1413
- this.elRef = elRef;
1414
- this.vcRef = vcRef;
1415
- this.cdRes = cdRes;
1416
- this.injector = injector;
1417
- this.renderer = renderer;
1418
- this.position = 'relative';
1419
- this.delay = 0;
1420
- this.rootNode = null;
1421
- this.timerSubscription = null;
1422
- }
1423
- get loading() {
1424
- return this._loading;
1425
- }
1426
- set loading(newValue) {
1427
- setTimeout(() => {
1428
- if (!newValue && this.timerSubscription) {
1429
- this.timerSubscription.unsubscribe();
1430
- this.timerSubscription = null;
1431
- this._loading = newValue;
1432
- if (this.rootNode) {
1433
- this.renderer.removeChild(this.rootNode.parentElement, this.rootNode);
1434
- this.rootNode = null;
1435
- }
1436
- return;
1437
- }
1438
- this.timerSubscription = timer(this.delay)
1439
- .pipe(take(1))
1440
- .subscribe(() => {
1441
- if (!this.componentRef) {
1442
- this.componentRef = this.cdRes
1443
- .resolveComponentFactory(LoadingComponent)
1444
- .create(this.injector);
1445
- }
1446
- if (newValue && !this.rootNode) {
1447
- this.rootNode = this.componentRef.hostView.rootNodes[0];
1448
- this.targetElement?.appendChild(this.rootNode);
1449
- }
1450
- else if (this.rootNode) {
1451
- this.renderer.removeChild(this.rootNode.parentElement, this.rootNode);
1452
- this.rootNode = null;
1453
- }
1454
- this._loading = newValue;
1455
- this.timerSubscription = null;
1456
- });
1457
- }, 0);
1458
- }
1459
- ngOnInit() {
1460
- if (!this.targetElement) {
1461
- const { offsetHeight, offsetWidth } = this.elRef.nativeElement;
1462
- if (!offsetHeight && !offsetWidth && this.elRef.nativeElement.children.length) {
1463
- this.targetElement = this.elRef.nativeElement.children[0];
1464
- }
1465
- else {
1466
- this.targetElement = this.elRef.nativeElement;
1467
- }
1468
- }
1469
- }
1470
- ngOnDestroy() {
1471
- if (this.timerSubscription) {
1472
- this.timerSubscription.unsubscribe();
1473
- }
1474
- }
1475
- }
1476
- LoadingDirectivefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadingDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
1477
- LoadingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: LoadingDirective, selector: "[abpLoading]", inputs: { loading: ["abpLoading", "loading"], targetElement: ["abpLoadingTargetElement", "targetElement"], delay: ["abpLoadingDelay", "delay"] }, host: { properties: { "style.position": "this.position" } }, ngImport: i0 });
1478
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadingDirective, decorators: [{
1479
- type: Directive,
1480
- args: [{ selector: '[abpLoading]' }]
1481
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.Renderer2 }]; }, propDecorators: { position: [{
1482
- type: HostBinding,
1483
- args: ['style.position']
1484
- }], loading: [{
1485
- type: Input,
1486
- args: ['abpLoading']
1487
- }], targetElement: [{
1488
- type: Input,
1489
- args: ['abpLoadingTargetElement']
1490
- }], delay: [{
1491
- type: Input,
1492
- args: ['abpLoadingDelay']
1411
+ class LoadingDirective {
1412
+ get loading() {
1413
+ return this._loading;
1414
+ }
1415
+ set loading(newValue) {
1416
+ setTimeout(() => {
1417
+ if (!newValue && this.timerSubscription) {
1418
+ this.timerSubscription.unsubscribe();
1419
+ this.timerSubscription = null;
1420
+ this._loading = newValue;
1421
+ if (this.rootNode) {
1422
+ this.renderer.removeChild(this.rootNode.parentElement, this.rootNode);
1423
+ this.rootNode = null;
1424
+ }
1425
+ return;
1426
+ }
1427
+ this.timerSubscription = timer(this.delay)
1428
+ .pipe(take(1))
1429
+ .subscribe(() => {
1430
+ if (!this.componentRef) {
1431
+ this.componentRef = this.cdRes
1432
+ .resolveComponentFactory(LoadingComponent)
1433
+ .create(this.injector);
1434
+ }
1435
+ if (newValue && !this.rootNode) {
1436
+ this.rootNode = this.componentRef.hostView.rootNodes[0];
1437
+ this.targetElement?.appendChild(this.rootNode);
1438
+ }
1439
+ else if (this.rootNode) {
1440
+ this.renderer.removeChild(this.rootNode.parentElement, this.rootNode);
1441
+ this.rootNode = null;
1442
+ }
1443
+ this._loading = newValue;
1444
+ this.timerSubscription = null;
1445
+ });
1446
+ }, 0);
1447
+ }
1448
+ constructor(elRef, vcRef, cdRes, injector, renderer) {
1449
+ this.elRef = elRef;
1450
+ this.vcRef = vcRef;
1451
+ this.cdRes = cdRes;
1452
+ this.injector = injector;
1453
+ this.renderer = renderer;
1454
+ this.position = 'relative';
1455
+ this.delay = 0;
1456
+ this.rootNode = null;
1457
+ this.timerSubscription = null;
1458
+ }
1459
+ ngOnInit() {
1460
+ if (!this.targetElement) {
1461
+ const { offsetHeight, offsetWidth } = this.elRef.nativeElement;
1462
+ if (!offsetHeight && !offsetWidth && this.elRef.nativeElement.children.length) {
1463
+ this.targetElement = this.elRef.nativeElement.children[0];
1464
+ }
1465
+ else {
1466
+ this.targetElement = this.elRef.nativeElement;
1467
+ }
1468
+ }
1469
+ }
1470
+ ngOnDestroy() {
1471
+ if (this.timerSubscription) {
1472
+ this.timerSubscription.unsubscribe();
1473
+ }
1474
+ }
1475
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LoadingDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
1476
+ static { thisdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: LoadingDirective, selector: "[abpLoading]", inputs: { loading: ["abpLoading", "loading"], targetElement: ["abpLoadingTargetElement", "targetElement"], delay: ["abpLoadingDelay", "delay"] }, host: { properties: { "style.position": "this.position" } }, ngImport: i0 }); }
1477
+ }
1478
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LoadingDirective, decorators: [{
1479
+ type: Directive,
1480
+ args: [{ selector: '[abpLoading]' }]
1481
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.Renderer2 }]; }, propDecorators: { position: [{
1482
+ type: HostBinding,
1483
+ args: ['style.position']
1484
+ }], loading: [{
1485
+ type: Input,
1486
+ args: ['abpLoading']
1487
+ }], targetElement: [{
1488
+ type: Input,
1489
+ args: ['abpLoadingTargetElement']
1490
+ }], delay: [{
1491
+ type: Input,
1492
+ args: ['abpLoadingDelay']
1493
1493
  }] } });
1494
1494
 
1495
- class NgxDatatableDefaultDirective {
1496
- constructor(table, document) {
1497
- this.table = table;
1498
- this.document = document;
1499
- this.subscription = new Subscription();
1500
- this.resizeDiff = 0;
1501
- this.class = 'material bordered';
1502
- this.table.columnMode = ColumnMode.force;
1503
- this.table.footerHeight = 50;
1504
- this.table.headerHeight = 50;
1505
- this.table.rowHeight = 'auto';
1506
- this.table.scrollbarH = true;
1507
- this.table.virtualization = false;
1508
- }
1509
- get classes() {
1510
- return `ngx-datatable ${this.class}`;
1511
- }
1512
- fixHorizontalGap(scroller) {
1513
- const { body, documentElement } = this.document;
1514
- if (documentElement.scrollHeight !== documentElement.clientHeight) {
1515
- if (this.resizeDiff === 0) {
1516
- this.resizeDiff = window.innerWidth - body.offsetWidth;
1517
- scroller.scrollWidth -= this.resizeDiff;
1518
- }
1519
- }
1520
- else {
1521
- scroller.scrollWidth += this.resizeDiff;
1522
- this.resizeDiff = 0;
1523
- }
1524
- }
1525
- fixStyleOnWindowResize() {
1526
- // avoided @HostListener('window:resize') in favor of performance
1527
- const subscription = fromEvent(window, 'resize')
1528
- .pipe(debounceTime(500))
1529
- .subscribe(() => {
1530
- const { scroller } = this.table.bodyComponent;
1531
- if (!scroller)
1532
- return;
1533
- this.fixHorizontalGap(scroller);
1534
- });
1535
- this.subscription.add(subscription);
1536
- }
1537
- ngAfterViewInit() {
1538
- this.fixStyleOnWindowResize();
1539
- }
1540
- ngOnDestroy() {
1541
- this.subscription.unsubscribe();
1542
- }
1543
- }
1544
- NgxDatatableDefaultDirectivefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NgxDatatableDefaultDirective, deps: [{ token: i1$2.DatatableComponent }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });
1545
- NgxDatatableDefaultDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: NgxDatatableDefaultDirective, selector: "ngx-datatable[default]", inputs: { class: "class" }, host: { properties: { "class": "this.classes" } }, exportAs: ["ngxDatatableDefault"], ngImport: i0 });
1546
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NgxDatatableDefaultDirective, decorators: [{
1547
- type: Directive,
1548
- args: [{
1549
- // eslint-disable-next-line @angular-eslint/directive-selector
1550
- selector: 'ngx-datatable[default]',
1551
- exportAs: 'ngxDatatableDefault',
1552
- }]
1553
- }], ctorParameters: function () { return [{ type: i1$2.DatatableComponent }, { type: undefined, decorators: [{
1554
- type: Inject,
1555
- args: [DOCUMENT]
1556
- }] }]; }, propDecorators: { class: [{
1557
- type: Input
1558
- }], classes: [{
1559
- type: HostBinding,
1560
- args: ['class']
1495
+ class NgxDatatableDefaultDirective {
1496
+ get classes() {
1497
+ return `ngx-datatable ${this.class}`;
1498
+ }
1499
+ constructor(table, document) {
1500
+ this.table = table;
1501
+ this.document = document;
1502
+ this.subscription = new Subscription();
1503
+ this.resizeDiff = 0;
1504
+ this.class = 'material bordered';
1505
+ this.table.columnMode = ColumnMode.force;
1506
+ this.table.footerHeight = 50;
1507
+ this.table.headerHeight = 50;
1508
+ this.table.rowHeight = 'auto';
1509
+ this.table.scrollbarH = true;
1510
+ this.table.virtualization = false;
1511
+ }
1512
+ fixHorizontalGap(scroller) {
1513
+ const { body, documentElement } = this.document;
1514
+ if (documentElement.scrollHeight !== documentElement.clientHeight) {
1515
+ if (this.resizeDiff === 0) {
1516
+ this.resizeDiff = window.innerWidth - body.offsetWidth;
1517
+ scroller.scrollWidth -= this.resizeDiff;
1518
+ }
1519
+ }
1520
+ else {
1521
+ scroller.scrollWidth += this.resizeDiff;
1522
+ this.resizeDiff = 0;
1523
+ }
1524
+ }
1525
+ fixStyleOnWindowResize() {
1526
+ // avoided @HostListener('window:resize') in favor of performance
1527
+ const subscription = fromEvent(window, 'resize')
1528
+ .pipe(debounceTime(500))
1529
+ .subscribe(() => {
1530
+ const { scroller } = this.table.bodyComponent;
1531
+ if (!scroller)
1532
+ return;
1533
+ this.fixHorizontalGap(scroller);
1534
+ });
1535
+ this.subscription.add(subscription);
1536
+ }
1537
+ ngAfterViewInit() {
1538
+ this.fixStyleOnWindowResize();
1539
+ }
1540
+ ngOnDestroy() {
1541
+ this.subscription.unsubscribe();
1542
+ }
1543
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: NgxDatatableDefaultDirective, deps: [{ token: i1$2.DatatableComponent }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
1544
+ static { thisdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: NgxDatatableDefaultDirective, selector: "ngx-datatable[default]", inputs: { class: "class" }, host: { properties: { "class": "this.classes" } }, exportAs: ["ngxDatatableDefault"], ngImport: i0 }); }
1545
+ }
1546
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: NgxDatatableDefaultDirective, decorators: [{
1547
+ type: Directive,
1548
+ args: [{
1549
+ // eslint-disable-next-line @angular-eslint/directive-selector
1550
+ selector: 'ngx-datatable[default]',
1551
+ exportAs: 'ngxDatatableDefault',
1552
+ }]
1553
+ }], ctorParameters: function () { return [{ type: i1$2.DatatableComponent }, { type: undefined, decorators: [{
1554
+ type: Inject,
1555
+ args: [DOCUMENT]
1556
+ }] }]; }, propDecorators: { class: [{
1557
+ type: Input
1558
+ }], classes: [{
1559
+ type: HostBinding,
1560
+ args: ['class']
1561
1561
  }] } });
1562
1562
 
1563
- const defaultNgxDatatableMessages = {
1564
- emptyMessage: 'AbpUi::NoDataAvailableInDatatable',
1565
- totalMessage: 'AbpUi::Total',
1566
- selectedMessage: 'AbpUi::Selected',
1567
- };
1563
+ const defaultNgxDatatableMessages = {
1564
+ emptyMessage: 'AbpUi::NoDataAvailableInDatatable',
1565
+ totalMessage: 'AbpUi::Total',
1566
+ selectedMessage: 'AbpUi::Selected',
1567
+ };
1568
1568
  const NGX_DATATABLE_MESSAGES = new InjectionToken('NGX_DATATABLE_MESSAGES');
1569
1569
 
1570
- class NgxDatatableListDirective {
1571
- constructor(table, cdRef, localizationService, ngxDatatableMessages) {
1572
- this.table = table;
1573
- this.cdRef = cdRef;
1574
- this.localizationService = localizationService;
1575
- this.ngxDatatableMessages = ngxDatatableMessages;
1576
- this.subscription = new Subscription();
1577
- this.querySubscription = new Subscription();
1578
- this.setInitialValues();
1579
- }
1580
- setInitialValues() {
1581
- this.table.externalPaging = true;
1582
- this.table.externalSorting = true;
1583
- const { emptyMessage, selectedMessage, totalMessage } = this.ngxDatatableMessages || defaultNgxDatatableMessages;
1584
- this.table.messages = {
1585
- emptyMessage: this.localizationService.instant(emptyMessage),
1586
- totalMessage: this.localizationService.instant(totalMessage),
1587
- selectedMessage: this.localizationService.instant(selectedMessage),
1588
- };
1589
- }
1590
- subscribeToPage() {
1591
- const sub = this.table.page.subscribe(({ offset }) => {
1592
- this.list.page = offset;
1593
- this.table.offset = offset;
1594
- });
1595
- this.subscription.add(sub);
1596
- }
1597
- subscribeToSort() {
1598
- const sub = this.table.sort.subscribe(({ sorts: [{ prop, dir }] }) => {
1599
- if (prop === this.list.sortKey && this.list.sortOrder === 'desc') {
1600
- this.list.sortKey = '';
1601
- this.list.sortOrder = '';
1602
- this.table.sorts = [];
1603
- this.cdRef.detectChanges();
1604
- }
1605
- else {
1606
- this.list.sortKey = prop;
1607
- this.list.sortOrder = dir;
1608
- }
1609
- });
1610
- this.subscription.add(sub);
1611
- }
1612
- subscribeToQuery() {
1613
- if (!this.querySubscription.closed)
1614
- this.querySubscription.unsubscribe();
1615
- this.querySubscription = this.list.query$.subscribe(() => {
1616
- const offset = this.list.page;
1617
- if (this.table.offset !== offset)
1618
- this.table.offset = offset;
1619
- });
1620
- }
1621
- ngOnChanges({ list }) {
1622
- this.subscribeToQuery();
1623
- if (!list.firstChange)
1624
- return;
1625
- const { maxResultCount, page } = list.currentValue;
1626
- this.table.limit = maxResultCount;
1627
- this.table.offset = page;
1628
- }
1629
- ngOnDestroy() {
1630
- this.subscription.unsubscribe();
1631
- this.querySubscription.unsubscribe();
1632
- }
1633
- ngOnInit() {
1634
- this.subscribeToPage();
1635
- this.subscribeToSort();
1636
- }
1637
- }
1638
- NgxDatatableListDirectivefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NgxDatatableListDirective, deps: [{ token: i1$2.DatatableComponent }, { token: i0.ChangeDetectorRef }, { token: i2.LocalizationService }, { token: NGX_DATATABLE_MESSAGES, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
1639
- NgxDatatableListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: { list: "list" }, exportAs: ["ngxDatatableList"], usesOnChanges: true, ngImport: i0 });
1640
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NgxDatatableListDirective, decorators: [{
1641
- type: Directive,
1642
- args: [{
1643
- // eslint-disable-next-line @angular-eslint/directive-selector
1644
- selector: 'ngx-datatable[list]',
1645
- exportAs: 'ngxDatatableList',
1646
- }]
1647
- }], ctorParameters: function () { return [{ type: i1$2.DatatableComponent }, { type: i0.ChangeDetectorRef }, { type: i2.LocalizationService }, { type: undefined, decorators: [{
1648
- type: Optional
1649
- }, {
1650
- type: Inject,
1651
- args: [NGX_DATATABLE_MESSAGES]
1652
- }] }]; }, propDecorators: { list: [{
1653
- type: Input
1570
+ class NgxDatatableListDirective {
1571
+ constructor(table, cdRef, localizationService, ngxDatatableMessages) {
1572
+ this.table = table;
1573
+ this.cdRef = cdRef;
1574
+ this.localizationService = localizationService;
1575
+ this.ngxDatatableMessages = ngxDatatableMessages;
1576
+ this.subscription = new Subscription();
1577
+ this.querySubscription = new Subscription();
1578
+ this.setInitialValues();
1579
+ }
1580
+ setInitialValues() {
1581
+ this.table.externalPaging = true;
1582
+ this.table.externalSorting = true;
1583
+ const { emptyMessage, selectedMessage, totalMessage } = this.ngxDatatableMessages || defaultNgxDatatableMessages;
1584
+ this.table.messages = {
1585
+ emptyMessage: this.localizationService.instant(emptyMessage),
1586
+ totalMessage: this.localizationService.instant(totalMessage),
1587
+ selectedMessage: this.localizationService.instant(selectedMessage),
1588
+ };
1589
+ }
1590
+ subscribeToPage() {
1591
+ const sub = this.table.page.subscribe(({ offset }) => {
1592
+ this.list.page = offset;
1593
+ this.table.offset = offset;
1594
+ });
1595
+ this.subscription.add(sub);
1596
+ }
1597
+ subscribeToSort() {
1598
+ const sub = this.table.sort.subscribe(({ sorts: [{ prop, dir }] }) => {
1599
+ if (prop === this.list.sortKey && this.list.sortOrder === 'desc') {
1600
+ this.list.sortKey = '';
1601
+ this.list.sortOrder = '';
1602
+ this.table.sorts = [];
1603
+ this.cdRef.detectChanges();
1604
+ }
1605
+ else {
1606
+ this.list.sortKey = prop;
1607
+ this.list.sortOrder = dir;
1608
+ }
1609
+ });
1610
+ this.subscription.add(sub);
1611
+ }
1612
+ subscribeToQuery() {
1613
+ if (!this.querySubscription.closed)
1614
+ this.querySubscription.unsubscribe();
1615
+ this.querySubscription = this.list.query$.subscribe(() => {
1616
+ const offset = this.list.page;
1617
+ if (this.table.offset !== offset)
1618
+ this.table.offset = offset;
1619
+ });
1620
+ }
1621
+ ngOnChanges({ list }) {
1622
+ this.subscribeToQuery();
1623
+ if (!list.firstChange)
1624
+ return;
1625
+ const { maxResultCount, page } = list.currentValue;
1626
+ this.table.limit = maxResultCount;
1627
+ this.table.offset = page;
1628
+ }
1629
+ ngOnDestroy() {
1630
+ this.subscription.unsubscribe();
1631
+ this.querySubscription.unsubscribe();
1632
+ }
1633
+ ngOnInit() {
1634
+ this.subscribeToPage();
1635
+ this.subscribeToSort();
1636
+ }
1637
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: NgxDatatableListDirective, deps: [{ token: i1$2.DatatableComponent }, { token: i0.ChangeDetectorRef }, { token: i2.LocalizationService }, { token: NGX_DATATABLE_MESSAGES, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1638
+ static { thisdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: { list: "list" }, exportAs: ["ngxDatatableList"], usesOnChanges: true, ngImport: i0 }); }
1639
+ }
1640
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: NgxDatatableListDirective, decorators: [{
1641
+ type: Directive,
1642
+ args: [{
1643
+ // eslint-disable-next-line @angular-eslint/directive-selector
1644
+ selector: 'ngx-datatable[list]',
1645
+ exportAs: 'ngxDatatableList',
1646
+ }]
1647
+ }], ctorParameters: function () { return [{ type: i1$2.DatatableComponent }, { type: i0.ChangeDetectorRef }, { type: i2.LocalizationService }, { type: undefined, decorators: [{
1648
+ type: Optional
1649
+ }, {
1650
+ type: Inject,
1651
+ args: [NGX_DATATABLE_MESSAGES]
1652
+ }] }]; }, propDecorators: { list: [{
1653
+ type: Input
1654
1654
  }] } });
1655
1655
 
1656
- class AbpVisibleDirective {
1657
- constructor(viewContainerRef, templateRef) {
1658
- this.viewContainerRef = viewContainerRef;
1659
- this.templateRef = templateRef;
1660
- this.condition$ = of(false);
1661
- }
1662
- set abpVisible(value) {
1663
- this.condition$ = checkType(value);
1664
- this.subscribeToCondition();
1665
- }
1666
- ngOnInit() {
1667
- this.updateVisibility();
1668
- }
1669
- ngOnDestroy() {
1670
- this.conditionSubscription?.unsubscribe();
1671
- }
1672
- subscribeToCondition() {
1673
- this.conditionSubscription = this.condition$.subscribe(value => {
1674
- this.isVisible = value;
1675
- this.updateVisibility();
1676
- });
1677
- }
1678
- updateVisibility() {
1679
- this.viewContainerRef.clear();
1680
- // it should be false not falsy
1681
- if (this.isVisible === false) {
1682
- return;
1683
- }
1684
- this.viewContainerRef.createEmbeddedView(this.templateRef);
1685
- }
1686
- }
1687
- AbpVisibleDirectivefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpVisibleDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
1688
- AbpVisibleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: AbpVisibleDirective, selector: "[abpVisible]", inputs: { abpVisible: "abpVisible" }, ngImport: i0 });
1689
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpVisibleDirective, decorators: [{
1690
- type: Directive,
1691
- args: [{
1692
- selector: '[abpVisible]',
1693
- }]
1694
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { abpVisible: [{
1695
- type: Input
1696
- }] } });
1697
- function checkType(value) {
1698
- if (value instanceof Promise) {
1699
- return from(value);
1700
- }
1701
- else if (value instanceof Observable) {
1702
- return value;
1703
- }
1704
- else if (typeof value === 'boolean') {
1705
- return of(value);
1706
- }
1707
- else if (value === undefined || value === null) {
1708
- return of(true);
1709
- }
1710
- else {
1711
- return EMPTY;
1712
- }
1656
+ class AbpVisibleDirective {
1657
+ set abpVisible(value) {
1658
+ this.condition$ = checkType(value);
1659
+ this.subscribeToCondition();
1660
+ }
1661
+ constructor(viewContainerRef, templateRef) {
1662
+ this.viewContainerRef = viewContainerRef;
1663
+ this.templateRef = templateRef;
1664
+ this.condition$ = of(false);
1665
+ }
1666
+ ngOnInit() {
1667
+ this.updateVisibility();
1668
+ }
1669
+ ngOnDestroy() {
1670
+ this.conditionSubscription?.unsubscribe();
1671
+ }
1672
+ subscribeToCondition() {
1673
+ this.conditionSubscription = this.condition$.subscribe(value => {
1674
+ this.isVisible = value;
1675
+ this.updateVisibility();
1676
+ });
1677
+ }
1678
+ updateVisibility() {
1679
+ this.viewContainerRef.clear();
1680
+ // it should be false not falsy
1681
+ if (this.isVisible === false) {
1682
+ return;
1683
+ }
1684
+ this.viewContainerRef.createEmbeddedView(this.templateRef);
1685
+ }
1686
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbpVisibleDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1687
+ static { thisdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: AbpVisibleDirective, selector: "[abpVisible]", inputs: { abpVisible: "abpVisible" }, ngImport: i0 }); }
1688
+ }
1689
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbpVisibleDirective, decorators: [{
1690
+ type: Directive,
1691
+ args: [{
1692
+ selector: '[abpVisible]',
1693
+ }]
1694
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { abpVisible: [{
1695
+ type: Input
1696
+ }] } });
1697
+ function checkType(value) {
1698
+ if (value instanceof Promise) {
1699
+ return from(value);
1700
+ }
1701
+ else if (value instanceof Observable) {
1702
+ return value;
1703
+ }
1704
+ else if (typeof value === 'boolean') {
1705
+ return of(value);
1706
+ }
1707
+ else if (value === undefined || value === null) {
1708
+ return of(true);
1709
+ }
1710
+ else {
1711
+ return EMPTY;
1712
+ }
1713
1713
  }
1714
1714
 
1715
- var eFormComponets;
1716
- (function (eFormComponets) {
1717
- eFormComponets["FormInputComponent"] = "FormInputComponent";
1718
- eFormComponets["FormCheckboxComponent"] = "FormCheckboxComponent";
1715
+ var eFormComponets;
1716
+ (function (eFormComponets) {
1717
+ eFormComponets["FormInputComponent"] = "FormInputComponent";
1718
+ eFormComponets["FormCheckboxComponent"] = "FormCheckboxComponent";
1719
1719
  })(eFormComponets || (eFormComponets = {}));
1720
1720
 
1721
- class DocumentDirHandlerService {
1722
- constructor(injector) {
1723
- this.injector = injector;
1724
- this.dir = new BehaviorSubject('ltr');
1725
- this.dir$ = this.dir.asObservable();
1726
- this.listenToLanguageChanges();
1727
- }
1728
- listenToLanguageChanges() {
1729
- const l10n = this.injector.get(LocalizationService);
1730
- // will always listen, no need to unsubscribe
1731
- l10n.currentLang$.pipe(map(locale => getLocaleDirection(locale))).subscribe(dir => {
1732
- this.dir.next(dir);
1733
- this.setBodyDir(dir);
1734
- });
1735
- }
1736
- setBodyDir(dir) {
1737
- document.body.dir = dir;
1738
- document.dir = dir;
1739
- }
1740
- }
1741
- DocumentDirHandlerServicefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DocumentDirHandlerService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
1742
- DocumentDirHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DocumentDirHandlerService });
1743
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DocumentDirHandlerService, decorators: [{
1744
- type: Injectable
1721
+ class DocumentDirHandlerService {
1722
+ constructor(injector) {
1723
+ this.injector = injector;
1724
+ this.dir = new BehaviorSubject('ltr');
1725
+ this.dir$ = this.dir.asObservable();
1726
+ this.listenToLanguageChanges();
1727
+ }
1728
+ listenToLanguageChanges() {
1729
+ const l10n = this.injector.get(LocalizationService);
1730
+ // will always listen, no need to unsubscribe
1731
+ l10n.currentLang$.pipe(map(locale => getLocaleDirection(locale))).subscribe(dir => {
1732
+ this.dir.next(dir);
1733
+ this.setBodyDir(dir);
1734
+ });
1735
+ }
1736
+ setBodyDir(dir) {
1737
+ document.body.dir = dir;
1738
+ document.dir = dir;
1739
+ }
1740
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: DocumentDirHandlerService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1741
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: DocumentDirHandlerService }); }
1742
+ }
1743
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: DocumentDirHandlerService, decorators: [{
1744
+ type: Injectable
1745
1745
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
1746
1746
 
1747
- function httpErrorConfigFactory(config = {}) {
1748
- if (config.errorScreen && config.errorScreen.component && !config.errorScreen.forWhichErrors) {
1749
- config.errorScreen.forWhichErrors = [401, 403, 404, 500];
1750
- }
1751
- return {
1752
- skipHandledErrorCodes: [],
1753
- errorScreen: {},
1754
- ...config,
1755
- };
1756
- }
1757
- const HTTP_ERROR_CONFIG = new InjectionToken('HTTP_ERROR_CONFIG');
1747
+ function httpErrorConfigFactory(config = {}) {
1748
+ if (config.errorScreen && config.errorScreen.component && !config.errorScreen.forWhichErrors) {
1749
+ config.errorScreen.forWhichErrors = [401, 403, 404, 500];
1750
+ }
1751
+ return {
1752
+ skipHandledErrorCodes: [],
1753
+ errorScreen: {},
1754
+ ...config,
1755
+ };
1756
+ }
1757
+ const HTTP_ERROR_CONFIG = new InjectionToken('HTTP_ERROR_CONFIG');
1758
1758
  const HTTP_ERROR_HANDLER = new InjectionToken('HTTP_ERROR_HANDLER');
1759
1759
 
1760
- const DEFAULT_ERROR_MESSAGES = {
1761
- defaultError: {
1762
- title: 'An error has occurred!',
1763
- details: 'Error detail not sent by server.',
1764
- },
1765
- defaultError401: {
1766
- title: 'You are not authenticated!',
1767
- details: 'You should be authenticated (sign in) in order to perform this operation.',
1768
- },
1769
- defaultError403: {
1770
- title: 'You are not authorized!',
1771
- details: 'You are not allowed to perform this operation.',
1772
- },
1773
- defaultError404: {
1774
- title: 'Resource not found!',
1775
- details: 'The resource requested could not found on the server.',
1776
- },
1777
- defaultError500: {
1778
- title: 'Internal server error',
1779
- details: 'Error detail not sent by server.',
1780
- },
1781
- };
1782
- const DEFAULT_ERROR_LOCALIZATIONS = {
1783
- defaultError: {
1784
- title: 'AbpUi::DefaultErrorMessage',
1785
- details: 'AbpUi::DefaultErrorMessageDetail',
1786
- },
1787
- defaultError401: {
1788
- title: 'AbpUi::DefaultErrorMessage401',
1789
- details: 'AbpUi::DefaultErrorMessage401Detail',
1790
- },
1791
- defaultError403: {
1792
- title: 'AbpUi::DefaultErrorMessage403',
1793
- details: 'AbpUi::DefaultErrorMessage403Detail',
1794
- },
1795
- defaultError404: {
1796
- title: 'AbpUi::DefaultErrorMessage404',
1797
- details: 'AbpUi::DefaultErrorMessage404Detail',
1798
- },
1799
- defaultError500: {
1800
- title: 'AbpUi::500Message',
1801
- details: 'AbpUi::DefaultErrorMessage',
1802
- },
1803
- };
1804
- class ErrorHandler {
1805
- constructor(injector) {
1806
- this.injector = injector;
1807
- this.componentRef = null;
1808
- this.httpErrorHandler = this.injector.get(HTTP_ERROR_HANDLER, (_, err) => throwError(err));
1809
- this.executeErrorHandler = (error) => {
1810
- const returnValue = this.httpErrorHandler(this.injector, error);
1811
- return (returnValue instanceof Observable ? returnValue : of(null)).pipe(catchError(err => {
1812
- this.handleError(err);
1813
- return of(null);
1814
- }));
1815
- };
1816
- this.filterRestErrors = ({ status }) => {
1817
- if (typeof status !== 'number')
1818
- return false;
1819
- return (!!this.httpErrorConfig.skipHandledErrorCodes &&
1820
- this.httpErrorConfig.skipHandledErrorCodes.findIndex(code => code === status) < 0);
1821
- };
1822
- this.filterRouteErrors = (navigationError) => {
1823
- return (navigationError.error?.message?.indexOf('Cannot match') > -1 &&
1824
- !!this.httpErrorConfig.skipHandledErrorCodes &&
1825
- this.httpErrorConfig.skipHandledErrorCodes.findIndex(code => code === 404) < 0);
1826
- };
1827
- this.httpErrorReporter = injector.get(HttpErrorReporterService);
1828
- this.routerEvents = injector.get(RouterEvents);
1829
- this.confirmationService = injector.get(ConfirmationService);
1830
- this.cfRes = injector.get(ComponentFactoryResolver);
1831
- this.rendererFactory = injector.get(RendererFactory2);
1832
- this.httpErrorConfig = injector.get('HTTP_ERROR_CONFIG');
1833
- this.authService = this.injector.get(AuthService);
1834
- this.listenToRestError();
1835
- this.listenToRouterError();
1836
- this.listenToRouterDataResolved();
1837
- }
1838
- listenToRouterError() {
1839
- this.routerEvents
1840
- .getNavigationEvents('Error')
1841
- .pipe(filter(this.filterRouteErrors))
1842
- .subscribe(() => this.show404Page());
1843
- }
1844
- listenToRouterDataResolved() {
1845
- this.routerEvents
1846
- .getEvents(ResolveEnd)
1847
- .pipe(filter(() => !!this.componentRef))
1848
- .subscribe(() => {
1849
- this.componentRef?.destroy();
1850
- this.componentRef = null;
1851
- });
1852
- }
1853
- listenToRestError() {
1854
- this.httpErrorReporter.reporter$
1855
- .pipe(filter(this.filterRestErrors), switchMap(this.executeErrorHandler))
1856
- .subscribe();
1857
- }
1858
- handleError(err) {
1859
- const body = err?.error?.error || {
1860
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
1861
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
1862
- };
1863
- if (err instanceof HttpErrorResponse && err.headers.get('_AbpErrorFormat')) {
1864
- const confirmation$ = this.showErrorWithRequestBody(body);
1865
- if (err.status === 401) {
1866
- confirmation$.subscribe(() => {
1867
- this.navigateToLogin();
1868
- });
1869
- }
1870
- }
1871
- if (err instanceof HttpErrorResponse && err.headers.get('Abp-Tenant-Resolve-Error')) {
1872
- this.authService.logout().subscribe();
1873
- }
1874
- else {
1875
- switch (err.status) {
1876
- case 401:
1877
- this.canCreateCustomError(401)
1878
- ? this.show401Page()
1879
- : this.showError({
1880
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError401.title,
1881
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError401.title,
1882
- }, {
1883
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError401.details,
1884
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError401.details,
1885
- }).subscribe(() => this.navigateToLogin());
1886
- break;
1887
- case 403:
1888
- this.createErrorComponent({
1889
- title: {
1890
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError403.title,
1891
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError403.title,
1892
- },
1893
- details: {
1894
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError403.details,
1895
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError403.details,
1896
- },
1897
- status: 403,
1898
- });
1899
- break;
1900
- case 404: {
1901
- this.canCreateCustomError(404)
1902
- ? this.show404Page()
1903
- : this.showError({
1904
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError404.details,
1905
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError404.details,
1906
- }, {
1907
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError404.title,
1908
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError404.title,
1909
- });
1910
- break;
1911
- }
1912
- case 500:
1913
- this.createErrorComponent({
1914
- title: {
1915
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError500.title,
1916
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError500.title,
1917
- },
1918
- details: {
1919
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError500.details,
1920
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError500.details,
1921
- },
1922
- status: 500,
1923
- });
1924
- break;
1925
- case 0:
1926
- if (err.statusText === 'Unknown Error') {
1927
- this.createErrorComponent({
1928
- title: {
1929
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
1930
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
1931
- },
1932
- details: err.message,
1933
- isHomeShow: false,
1934
- });
1935
- }
1936
- break;
1937
- default:
1938
- this.showError({
1939
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.details,
1940
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.details,
1941
- }, {
1942
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
1943
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
1944
- });
1945
- break;
1946
- }
1947
- }
1948
- }
1949
- show401Page() {
1950
- this.createErrorComponent({
1951
- title: {
1952
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError401.title,
1953
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError401.title,
1954
- },
1955
- status: 401,
1956
- });
1957
- }
1958
- show404Page() {
1959
- this.createErrorComponent({
1960
- title: {
1961
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError404.title,
1962
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError404.title,
1963
- },
1964
- status: 404,
1965
- });
1966
- }
1967
- showErrorWithRequestBody(body) {
1968
- let message;
1969
- let title;
1970
- if (body.details) {
1971
- message = body.details;
1972
- title = body.message;
1973
- }
1974
- else if (body.message) {
1975
- title = {
1976
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
1977
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
1978
- };
1979
- message = body.message;
1980
- }
1981
- else {
1982
- message = body.message || {
1983
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
1984
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
1985
- };
1986
- title = '';
1987
- }
1988
- return this.showError(message, title);
1989
- }
1990
- showError(message, title) {
1991
- return this.confirmationService.error(message, title, {
1992
- hideCancelBtn: true,
1993
- yesText: 'AbpAccount::Close',
1994
- });
1995
- }
1996
- navigateToLogin() {
1997
- this.authService.navigateToLogin();
1998
- }
1999
- createErrorComponent(instance) {
2000
- const renderer = this.rendererFactory.createRenderer(null, null);
2001
- const host = renderer.selectRootElement(document.body, true);
2002
- this.componentRef = this.cfRes
2003
- .resolveComponentFactory(HttpErrorWrapperComponent)
2004
- .create(this.injector);
2005
- for (const key in instance) {
2006
- /* istanbul ignore else */
2007
- if (Object.prototype.hasOwnProperty.call(this.componentRef.instance, key)) {
2008
- this.componentRef.instance[key] = instance[key];
2009
- }
2010
- }
2011
- this.componentRef.instance.hideCloseIcon = !!this.httpErrorConfig.errorScreen?.hideCloseIcon;
2012
- const appRef = this.injector.get(ApplicationRef);
2013
- if (this.canCreateCustomError(instance.status)) {
2014
- this.componentRef.instance.cfRes = this.cfRes;
2015
- this.componentRef.instance.appRef = appRef;
2016
- this.componentRef.instance.injector = this.injector;
2017
- this.componentRef.instance.customComponent = this.httpErrorConfig.errorScreen?.component;
2018
- }
2019
- appRef.attachView(this.componentRef.hostView);
2020
- renderer.appendChild(host, this.componentRef.hostView.rootNodes[0]);
2021
- const destroy$ = new Subject();
2022
- this.componentRef.instance.destroy$ = destroy$;
2023
- destroy$.subscribe(() => {
2024
- this.componentRef?.destroy();
2025
- this.componentRef = null;
2026
- });
2027
- }
2028
- canCreateCustomError(status) {
2029
- return !!(this.httpErrorConfig?.errorScreen?.component &&
2030
- this.httpErrorConfig?.errorScreen?.forWhichErrors &&
2031
- this.httpErrorConfig?.errorScreen?.forWhichErrors.indexOf(status) > -1);
2032
- }
2033
- }
2034
- ErrorHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ErrorHandler, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
2035
- ErrorHandlerprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ErrorHandler, providedIn: 'root' });
2036
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ErrorHandler, decorators: [{
2037
- type: Injectable,
2038
- args: [{ providedIn: 'root' }]
1760
+ const DEFAULT_ERROR_MESSAGES = {
1761
+ defaultError: {
1762
+ title: 'An error has occurred!',
1763
+ details: 'Error detail not sent by server.',
1764
+ },
1765
+ defaultError401: {
1766
+ title: 'You are not authenticated!',
1767
+ details: 'You should be authenticated (sign in) in order to perform this operation.',
1768
+ },
1769
+ defaultError403: {
1770
+ title: 'You are not authorized!',
1771
+ details: 'You are not allowed to perform this operation.',
1772
+ },
1773
+ defaultError404: {
1774
+ title: 'Resource not found!',
1775
+ details: 'The resource requested could not found on the server.',
1776
+ },
1777
+ defaultError500: {
1778
+ title: 'Internal server error',
1779
+ details: 'Error detail not sent by server.',
1780
+ },
1781
+ };
1782
+ const DEFAULT_ERROR_LOCALIZATIONS = {
1783
+ defaultError: {
1784
+ title: 'AbpUi::DefaultErrorMessage',
1785
+ details: 'AbpUi::DefaultErrorMessageDetail',
1786
+ },
1787
+ defaultError401: {
1788
+ title: 'AbpUi::DefaultErrorMessage401',
1789
+ details: 'AbpUi::DefaultErrorMessage401Detail',
1790
+ },
1791
+ defaultError403: {
1792
+ title: 'AbpUi::DefaultErrorMessage403',
1793
+ details: 'AbpUi::DefaultErrorMessage403Detail',
1794
+ },
1795
+ defaultError404: {
1796
+ title: 'AbpUi::DefaultErrorMessage404',
1797
+ details: 'AbpUi::DefaultErrorMessage404Detail',
1798
+ },
1799
+ defaultError500: {
1800
+ title: 'AbpUi::500Message',
1801
+ details: 'AbpUi::DefaultErrorMessage',
1802
+ },
1803
+ };
1804
+ class ErrorHandler {
1805
+ constructor(injector) {
1806
+ this.injector = injector;
1807
+ this.componentRef = null;
1808
+ this.httpErrorHandler = this.injector.get(HTTP_ERROR_HANDLER, (_, err) => throwError(err));
1809
+ this.executeErrorHandler = (error) => {
1810
+ const errHandler = this.httpErrorHandler(this.injector, error);
1811
+ const isObservable = errHandler instanceof Observable;
1812
+ const response = isObservable ? errHandler : of(null);
1813
+ return response.pipe(catchError(err => {
1814
+ this.handleError(err);
1815
+ return of(null);
1816
+ }));
1817
+ };
1818
+ this.filterRestErrors = ({ status }) => {
1819
+ if (typeof status !== 'number')
1820
+ return false;
1821
+ return (!!this.httpErrorConfig.skipHandledErrorCodes &&
1822
+ this.httpErrorConfig.skipHandledErrorCodes.findIndex(code => code === status) < 0);
1823
+ };
1824
+ this.filterRouteErrors = (navigationError) => {
1825
+ return (navigationError.error?.message?.indexOf('Cannot match') > -1 &&
1826
+ !!this.httpErrorConfig.skipHandledErrorCodes &&
1827
+ this.httpErrorConfig.skipHandledErrorCodes.findIndex(code => code === 404) < 0);
1828
+ };
1829
+ this.httpErrorReporter = injector.get(HttpErrorReporterService);
1830
+ this.routerEvents = injector.get(RouterEvents);
1831
+ this.confirmationService = injector.get(ConfirmationService);
1832
+ this.cfRes = injector.get(ComponentFactoryResolver);
1833
+ this.rendererFactory = injector.get(RendererFactory2);
1834
+ this.httpErrorConfig = injector.get('HTTP_ERROR_CONFIG');
1835
+ this.authService = this.injector.get(AuthService);
1836
+ this.listenToRestError();
1837
+ this.listenToRouterError();
1838
+ this.listenToRouterDataResolved();
1839
+ }
1840
+ listenToRouterError() {
1841
+ this.routerEvents
1842
+ .getNavigationEvents('Error')
1843
+ .pipe(filter(this.filterRouteErrors))
1844
+ .subscribe(() => this.show404Page());
1845
+ }
1846
+ listenToRouterDataResolved() {
1847
+ this.routerEvents
1848
+ .getEvents(ResolveEnd)
1849
+ .pipe(filter(() => !!this.componentRef))
1850
+ .subscribe(() => {
1851
+ this.componentRef?.destroy();
1852
+ this.componentRef = null;
1853
+ });
1854
+ }
1855
+ listenToRestError() {
1856
+ this.httpErrorReporter.reporter$
1857
+ .pipe(filter(this.filterRestErrors), switchMap(this.executeErrorHandler))
1858
+ .subscribe();
1859
+ }
1860
+ handleError(err) {
1861
+ const body = err?.error?.error || {
1862
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
1863
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
1864
+ };
1865
+ if (err instanceof HttpErrorResponse && err.headers.get('Abp-Tenant-Resolve-Error')) {
1866
+ this.authService.logout().subscribe();
1867
+ return;
1868
+ }
1869
+ if (err instanceof HttpErrorResponse && err.headers.get('_AbpErrorFormat')) {
1870
+ const confirmation$ = this.showErrorWithRequestBody(body);
1871
+ if (err.status === 401) {
1872
+ confirmation$.subscribe(() => {
1873
+ this.navigateToLogin();
1874
+ });
1875
+ }
1876
+ }
1877
+ else {
1878
+ switch (err.status) {
1879
+ case 401:
1880
+ this.canCreateCustomError(401)
1881
+ ? this.show401Page()
1882
+ : this.showError({
1883
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError401.title,
1884
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError401.title,
1885
+ }, {
1886
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError401.details,
1887
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError401.details,
1888
+ }).subscribe(() => this.navigateToLogin());
1889
+ break;
1890
+ case 403:
1891
+ this.createErrorComponent({
1892
+ title: {
1893
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError403.title,
1894
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError403.title,
1895
+ },
1896
+ details: {
1897
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError403.details,
1898
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError403.details,
1899
+ },
1900
+ status: 403,
1901
+ });
1902
+ break;
1903
+ case 404:
1904
+ this.canCreateCustomError(404)
1905
+ ? this.show404Page()
1906
+ : this.showError({
1907
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError404.details,
1908
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError404.details,
1909
+ }, {
1910
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError404.title,
1911
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError404.title,
1912
+ });
1913
+ break;
1914
+ case 500:
1915
+ this.createErrorComponent({
1916
+ title: {
1917
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError500.title,
1918
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError500.title,
1919
+ },
1920
+ details: {
1921
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError500.details,
1922
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError500.details,
1923
+ },
1924
+ status: 500,
1925
+ });
1926
+ break;
1927
+ case 0:
1928
+ if (err.statusText === 'Unknown Error') {
1929
+ this.createErrorComponent({
1930
+ title: {
1931
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
1932
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
1933
+ },
1934
+ details: err.message,
1935
+ isHomeShow: false,
1936
+ });
1937
+ }
1938
+ break;
1939
+ default:
1940
+ this.showError({
1941
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.details,
1942
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.details,
1943
+ }, {
1944
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
1945
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
1946
+ });
1947
+ break;
1948
+ }
1949
+ }
1950
+ }
1951
+ show401Page() {
1952
+ this.createErrorComponent({
1953
+ title: {
1954
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError401.title,
1955
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError401.title,
1956
+ },
1957
+ status: 401,
1958
+ });
1959
+ }
1960
+ show404Page() {
1961
+ this.createErrorComponent({
1962
+ title: {
1963
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError404.title,
1964
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError404.title,
1965
+ },
1966
+ status: 404,
1967
+ });
1968
+ }
1969
+ showErrorWithRequestBody(body) {
1970
+ let message;
1971
+ let title;
1972
+ if (body.details) {
1973
+ message = body.details;
1974
+ title = body.message;
1975
+ }
1976
+ else if (body.message) {
1977
+ title = {
1978
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
1979
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
1980
+ };
1981
+ message = body.message;
1982
+ }
1983
+ else {
1984
+ message = body.message || {
1985
+ key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
1986
+ defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
1987
+ };
1988
+ title = '';
1989
+ }
1990
+ return this.showError(message, title);
1991
+ }
1992
+ showError(message, title) {
1993
+ return this.confirmationService.error(message, title, {
1994
+ hideCancelBtn: true,
1995
+ yesText: 'AbpAccount::Close',
1996
+ });
1997
+ }
1998
+ navigateToLogin() {
1999
+ this.authService.navigateToLogin();
2000
+ }
2001
+ createErrorComponent(instance) {
2002
+ const renderer = this.rendererFactory.createRenderer(null, null);
2003
+ const host = renderer.selectRootElement(document.body, true);
2004
+ this.componentRef = this.cfRes
2005
+ .resolveComponentFactory(HttpErrorWrapperComponent)
2006
+ .create(this.injector);
2007
+ for (const key in instance) {
2008
+ /* istanbul ignore else */
2009
+ if (Object.prototype.hasOwnProperty.call(this.componentRef.instance, key)) {
2010
+ this.componentRef.instance[key] = instance[key];
2011
+ }
2012
+ }
2013
+ this.componentRef.instance.hideCloseIcon = !!this.httpErrorConfig.errorScreen?.hideCloseIcon;
2014
+ const appRef = this.injector.get(ApplicationRef);
2015
+ if (this.canCreateCustomError(instance.status)) {
2016
+ this.componentRef.instance.cfRes = this.cfRes;
2017
+ this.componentRef.instance.appRef = appRef;
2018
+ this.componentRef.instance.injector = this.injector;
2019
+ this.componentRef.instance.customComponent = this.httpErrorConfig.errorScreen?.component;
2020
+ }
2021
+ appRef.attachView(this.componentRef.hostView);
2022
+ renderer.appendChild(host, this.componentRef.hostView.rootNodes[0]);
2023
+ const destroy$ = new Subject();
2024
+ this.componentRef.instance.destroy$ = destroy$;
2025
+ destroy$.subscribe(() => {
2026
+ this.componentRef?.destroy();
2027
+ this.componentRef = null;
2028
+ });
2029
+ }
2030
+ canCreateCustomError(status) {
2031
+ return !!(this.httpErrorConfig?.errorScreen?.component &&
2032
+ this.httpErrorConfig?.errorScreen?.forWhichErrors &&
2033
+ this.httpErrorConfig?.errorScreen?.forWhichErrors.indexOf(status) > -1);
2034
+ }
2035
+ static { thisfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ErrorHandler, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
2036
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ErrorHandler, providedIn: 'root' }); }
2037
+ }
2038
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ErrorHandler, decorators: [{
2039
+ type: Injectable,
2040
+ args: [{ providedIn: 'root' }]
2039
2041
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
2040
2042
 
2041
- class NavItem {
2042
- constructor(props) {
2043
- Object.assign(this, props);
2044
- }
2043
+ class NavItem {
2044
+ constructor(props) {
2045
+ Object.assign(this, props);
2046
+ }
2045
2047
  }
2046
2048
 
2047
- class UserMenu extends NavItem {
2049
+ class UserMenu extends NavItem {
2048
2050
  }
2049
2051
 
2050
- const NG_BOOTSTRAP_CONFIG_PROVIDERS = [
2051
- {
2052
- provide: APP_INITIALIZER,
2053
- useFactory: configureNgBootstrap,
2054
- deps: [NgbInputDatepickerConfig, NgbTypeaheadConfig],
2055
- multi: true,
2056
- },
2057
- ];
2058
- function configureNgBootstrap(datepicker, typeahead) {
2059
- return () => {
2060
- datepicker.container = 'body';
2061
- typeahead.container = 'body';
2062
- };
2052
+ const NG_BOOTSTRAP_CONFIG_PROVIDERS = [
2053
+ {
2054
+ provide: APP_INITIALIZER,
2055
+ useFactory: configureNgBootstrap,
2056
+ deps: [NgbInputDatepickerConfig, NgbTypeaheadConfig],
2057
+ multi: true,
2058
+ },
2059
+ ];
2060
+ function configureNgBootstrap(datepicker, typeahead) {
2061
+ return () => {
2062
+ datepicker.container = 'body';
2063
+ typeahead.container = 'body';
2064
+ };
2063
2065
  }
2064
2066
 
2065
- const THEME_SHARED_ROUTE_PROVIDERS = [
2066
- { provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true },
2067
- ];
2068
- function configureRoutes(routesService) {
2069
- return () => {
2070
- routesService.add([
2071
- {
2072
- path: undefined,
2073
- name: "AbpUiNavigation::Menu:Administration" /* eThemeSharedRouteNames.Administration */,
2074
- iconClass: 'fa fa-wrench',
2075
- order: 100,
2076
- },
2077
- ]);
2078
- };
2067
+ const THEME_SHARED_ROUTE_PROVIDERS = [
2068
+ { provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true },
2069
+ ];
2070
+ function configureRoutes(routesService) {
2071
+ return () => {
2072
+ routesService.add([
2073
+ {
2074
+ path: undefined,
2075
+ name: "AbpUiNavigation::Menu:Administration" /* eThemeSharedRouteNames.Administration */,
2076
+ iconClass: 'fa fa-wrench',
2077
+ order: 100,
2078
+ },
2079
+ ]);
2080
+ };
2079
2081
  }
2080
2082
 
2081
- class AbstractMenuService {
2082
- constructor() {
2083
- this._items$ = new BehaviorSubject([]);
2084
- }
2085
- get items() {
2086
- return this._items$.value;
2087
- }
2088
- get items$() {
2089
- return this._items$.asObservable();
2090
- }
2091
- addItems(newItems) {
2092
- const items = [...this.items];
2093
- newItems.forEach(item => {
2094
- const index = items.findIndex(i => i.id === item.id);
2095
- const data = new this.baseClass(item);
2096
- if (index > -1) {
2097
- items[index] = data;
2098
- return;
2099
- }
2100
- items.push(data);
2101
- });
2102
- items.sort(this.sortItems);
2103
- this._items$.next(items);
2104
- }
2105
- removeItem(id) {
2106
- const index = this.items.findIndex(item => item.id === id);
2107
- if (index < 0)
2108
- return;
2109
- const items = [...this.items.slice(0, index), ...this.items.slice(index + 1)];
2110
- this._items$.next(items);
2111
- }
2112
- patchItem(id, item) {
2113
- const index = this.items.findIndex(i => i.id === id);
2114
- if (index < 0)
2115
- return;
2116
- const items = [...this.items];
2117
- items[index] = new this.baseClass({ ...items[index], ...item });
2118
- items.sort(this.sortItems);
2119
- this._items$.next(items);
2120
- }
2121
- sortItems(a, b) {
2122
- if (!a.order)
2123
- return 1;
2124
- if (!b.order)
2125
- return -1;
2126
- return a.order - b.order;
2127
- }
2083
+ class AbstractMenuService {
2084
+ constructor() {
2085
+ this._items$ = new BehaviorSubject([]);
2086
+ }
2087
+ get items() {
2088
+ return this._items$.value;
2089
+ }
2090
+ get items$() {
2091
+ return this._items$.asObservable();
2092
+ }
2093
+ addItems(newItems) {
2094
+ const items = [...this.items];
2095
+ newItems.forEach(item => {
2096
+ const index = items.findIndex(i => i.id === item.id);
2097
+ const data = new this.baseClass(item);
2098
+ if (index > -1) {
2099
+ items[index] = data;
2100
+ return;
2101
+ }
2102
+ items.push(data);
2103
+ });
2104
+ items.sort(this.sortItems);
2105
+ this._items$.next(items);
2106
+ }
2107
+ removeItem(id) {
2108
+ const index = this.items.findIndex(item => item.id === id);
2109
+ if (index < 0)
2110
+ return;
2111
+ const items = [...this.items.slice(0, index), ...this.items.slice(index + 1)];
2112
+ this._items$.next(items);
2113
+ }
2114
+ patchItem(id, item) {
2115
+ const index = this.items.findIndex(i => i.id === id);
2116
+ if (index < 0)
2117
+ return;
2118
+ const items = [...this.items];
2119
+ items[index] = new this.baseClass({ ...items[index], ...item });
2120
+ items.sort(this.sortItems);
2121
+ this._items$.next(items);
2122
+ }
2123
+ sortItems(a, b) {
2124
+ if (!a.order)
2125
+ return 1;
2126
+ if (!b.order)
2127
+ return -1;
2128
+ return a.order - b.order;
2129
+ }
2128
2130
  }
2129
2131
 
2130
- class NavItemsService extends AbstractMenuService {
2131
- constructor() {
2132
- super(...arguments);
2133
- this.baseClass = NavItem;
2134
- }
2135
- }
2136
- NavItemsServicefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NavItemsService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2137
- NavItemsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NavItemsService, providedIn: 'root' });
2138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NavItemsService, decorators: [{
2139
- type: Injectable,
2140
- args: [{ providedIn: 'root' }]
2132
+ class NavItemsService extends AbstractMenuService {
2133
+ constructor() {
2134
+ super(...arguments);
2135
+ this.baseClass = NavItem;
2136
+ }
2137
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: NavItemsService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2138
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: NavItemsService, providedIn: 'root' }); }
2139
+ }
2140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: NavItemsService, decorators: [{
2141
+ type: Injectable,
2142
+ args: [{ providedIn: 'root' }]
2141
2143
  }] });
2142
2144
 
2143
- class PageAlertService {
2144
- constructor() {
2145
- this.alerts = new InternalStore([]);
2146
- this.alerts$ = this.alerts.sliceState(state => state);
2147
- }
2148
- show(alert) {
2149
- const newAlert = {
2150
- ...alert,
2151
- dismissible: alert.dismissible ?? true,
2152
- };
2153
- this.alerts.set([newAlert, ...this.alerts.state]);
2154
- }
2155
- remove(index) {
2156
- const alerts = [...this.alerts.state];
2157
- alerts.splice(index, 1);
2158
- this.alerts.set(alerts);
2159
- }
2160
- }
2161
- PageAlertServicefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PageAlertService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2162
- PageAlertService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PageAlertService, providedIn: 'root' });
2163
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PageAlertService, decorators: [{
2164
- type: Injectable,
2165
- args: [{ providedIn: 'root' }]
2145
+ class PageAlertService {
2146
+ constructor() {
2147
+ this.alerts = new InternalStore([]);
2148
+ this.alerts$ = this.alerts.sliceState(state => state);
2149
+ }
2150
+ show(alert) {
2151
+ const newAlert = {
2152
+ ...alert,
2153
+ dismissible: alert.dismissible ?? true,
2154
+ };
2155
+ this.alerts.set([newAlert, ...this.alerts.state]);
2156
+ }
2157
+ remove(index) {
2158
+ const alerts = [...this.alerts.state];
2159
+ alerts.splice(index, 1);
2160
+ this.alerts.set(alerts);
2161
+ }
2162
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: PageAlertService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2163
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: PageAlertService, providedIn: 'root' }); }
2164
+ }
2165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: PageAlertService, decorators: [{
2166
+ type: Injectable,
2167
+ args: [{ providedIn: 'root' }]
2166
2168
  }], ctorParameters: function () { return []; } });
2167
2169
 
2168
- class ToasterService {
2169
- constructor(contentProjectionService) {
2170
- this.contentProjectionService = contentProjectionService;
2171
- this.toasts$ = new ReplaySubject(1);
2172
- this.lastId = -1;
2173
- this.toasts = [];
2174
- /**
2175
- * Removes the toast with given id.
2176
- * @param id ID of the toast to be removed.
2177
- */
2178
- this.remove = (id) => {
2179
- this.toasts = this.toasts.filter(toast => toast.options?.id !== id);
2180
- this.toasts$.next(this.toasts);
2181
- };
2182
- }
2183
- setContainer() {
2184
- this.containerComponentRef = this.contentProjectionService.projectContent(PROJECTION_STRATEGY.AppendComponentToBody(ToastContainerComponent, {
2185
- toasts$: this.toasts$,
2186
- remove: this.remove,
2187
- }));
2188
- this.containerComponentRef.changeDetectorRef.detectChanges();
2189
- }
2190
- /**
2191
- * Creates an info toast with given parameters.
2192
- * @param message Content of the toast
2193
- * @param title Title of the toast
2194
- * @param options Spesific style or structural options for individual toast
2195
- */
2196
- info(message, title, options) {
2197
- return this.show(message, title, 'info', options);
2198
- }
2199
- /**
2200
- * Creates a success toast with given parameters.
2201
- * @param message Content of the toast
2202
- * @param title Title of the toast
2203
- * @param options Spesific style or structural options for individual toast
2204
- */
2205
- success(message, title, options) {
2206
- return this.show(message, title, 'success', options);
2207
- }
2208
- /**
2209
- * Creates a warning toast with given parameters.
2210
- * @param message Content of the toast
2211
- * @param title Title of the toast
2212
- * @param options Spesific style or structural options for individual toast
2213
- */
2214
- warn(message, title, options) {
2215
- return this.show(message, title, 'warning', options);
2216
- }
2217
- /**
2218
- * Creates an error toast with given parameters.
2219
- * @param message Content of the toast
2220
- * @param title Title of the toast
2221
- * @param options Spesific style or structural options for individual toast
2222
- */
2223
- error(message, title, options) {
2224
- return this.show(message, title, 'error', options);
2225
- }
2226
- /**
2227
- * Creates a toast with given parameters.
2228
- * @param message Content of the toast
2229
- * @param title Title of the toast
2230
- * @param severity Sets color of the toast. "success", "warning" etc.
2231
- * @param options Spesific style or structural options for individual toast
2232
- */
2233
- show(message, title = undefined, severity = 'neutral', options = {}) {
2234
- if (!this.containerComponentRef)
2235
- this.setContainer();
2236
- const id = ++this.lastId;
2237
- this.toasts.push({
2238
- message,
2239
- title,
2240
- severity,
2241
- options: { closable: true, id, ...options },
2242
- });
2243
- this.toasts$.next(this.toasts);
2244
- return id;
2245
- }
2246
- /**
2247
- * Removes all open toasts at once.
2248
- */
2249
- clear(containerKey) {
2250
- this.toasts = !containerKey
2251
- ? []
2252
- : this.toasts.filter(toast => toast.options?.containerKey !== containerKey);
2253
- this.toasts$.next(this.toasts);
2254
- }
2255
- }
2256
- ToasterServicefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ToasterService, deps: [{ token: i2.ContentProjectionService }], target: i0.ɵɵFactoryTarget.Injectable });
2257
- ToasterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ToasterService, providedIn: 'root' });
2258
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ToasterService, decorators: [{
2259
- type: Injectable,
2260
- args: [{
2261
- providedIn: 'root',
2262
- }]
2170
+ class ToasterService {
2171
+ constructor(contentProjectionService) {
2172
+ this.contentProjectionService = contentProjectionService;
2173
+ this.toasts$ = new ReplaySubject(1);
2174
+ this.lastId = -1;
2175
+ this.toasts = [];
2176
+ /**
2177
+ * Removes the toast with given id.
2178
+ * @param id ID of the toast to be removed.
2179
+ */
2180
+ this.remove = (id) => {
2181
+ this.toasts = this.toasts.filter(toast => toast.options?.id !== id);
2182
+ this.toasts$.next(this.toasts);
2183
+ };
2184
+ }
2185
+ setContainer() {
2186
+ this.containerComponentRef = this.contentProjectionService.projectContent(PROJECTION_STRATEGY.AppendComponentToBody(ToastContainerComponent, {
2187
+ toasts$: this.toasts$,
2188
+ remove: this.remove,
2189
+ }));
2190
+ this.containerComponentRef.changeDetectorRef.detectChanges();
2191
+ }
2192
+ /**
2193
+ * Creates an info toast with given parameters.
2194
+ * @param message Content of the toast
2195
+ * @param title Title of the toast
2196
+ * @param options Spesific style or structural options for individual toast
2197
+ */
2198
+ info(message, title, options) {
2199
+ return this.show(message, title, 'info', options);
2200
+ }
2201
+ /**
2202
+ * Creates a success toast with given parameters.
2203
+ * @param message Content of the toast
2204
+ * @param title Title of the toast
2205
+ * @param options Spesific style or structural options for individual toast
2206
+ */
2207
+ success(message, title, options) {
2208
+ return this.show(message, title, 'success', options);
2209
+ }
2210
+ /**
2211
+ * Creates a warning toast with given parameters.
2212
+ * @param message Content of the toast
2213
+ * @param title Title of the toast
2214
+ * @param options Spesific style or structural options for individual toast
2215
+ */
2216
+ warn(message, title, options) {
2217
+ return this.show(message, title, 'warning', options);
2218
+ }
2219
+ /**
2220
+ * Creates an error toast with given parameters.
2221
+ * @param message Content of the toast
2222
+ * @param title Title of the toast
2223
+ * @param options Spesific style or structural options for individual toast
2224
+ */
2225
+ error(message, title, options) {
2226
+ return this.show(message, title, 'error', options);
2227
+ }
2228
+ /**
2229
+ * Creates a toast with given parameters.
2230
+ * @param message Content of the toast
2231
+ * @param title Title of the toast
2232
+ * @param severity Sets color of the toast. "success", "warning" etc.
2233
+ * @param options Spesific style or structural options for individual toast
2234
+ */
2235
+ show(message, title = undefined, severity = 'neutral', options = {}) {
2236
+ if (!this.containerComponentRef)
2237
+ this.setContainer();
2238
+ const id = ++this.lastId;
2239
+ this.toasts.push({
2240
+ message,
2241
+ title,
2242
+ severity,
2243
+ options: { closable: true, id, ...options },
2244
+ });
2245
+ this.toasts$.next(this.toasts);
2246
+ return id;
2247
+ }
2248
+ /**
2249
+ * Removes all open toasts at once.
2250
+ */
2251
+ clear(containerKey) {
2252
+ this.toasts = !containerKey
2253
+ ? []
2254
+ : this.toasts.filter(toast => toast.options?.containerKey !== containerKey);
2255
+ this.toasts$.next(this.toasts);
2256
+ }
2257
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ToasterService, deps: [{ token: i2.ContentProjectionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2258
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ToasterService, providedIn: 'root' }); }
2259
+ }
2260
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ToasterService, decorators: [{
2261
+ type: Injectable,
2262
+ args: [{
2263
+ providedIn: 'root',
2264
+ }]
2263
2265
  }], ctorParameters: function () { return [{ type: i2.ContentProjectionService }]; } });
2264
2266
 
2265
- class UserMenuService extends AbstractMenuService {
2266
- constructor() {
2267
- super(...arguments);
2268
- this.baseClass = UserMenu;
2269
- }
2270
- }
2271
- UserMenuServicefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: UserMenuService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2272
- UserMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: UserMenuService, providedIn: 'root' });
2273
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: UserMenuService, decorators: [{
2274
- type: Injectable,
2275
- args: [{ providedIn: 'root' }]
2267
+ class UserMenuService extends AbstractMenuService {
2268
+ constructor() {
2269
+ super(...arguments);
2270
+ this.baseClass = UserMenu;
2271
+ }
2272
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UserMenuService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2273
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UserMenuService, providedIn: 'root' }); }
2274
+ }
2275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UserMenuService, decorators: [{
2276
+ type: Injectable,
2277
+ args: [{ providedIn: 'root' }]
2276
2278
  }] });
2277
2279
 
2278
2280
  var styles = `
@@ -2462,295 +2464,295 @@ ngb-typeahead-window, ngb-typeahead-window.dropdown-menu {
2462
2464
  }
2463
2465
  `;
2464
2466
 
2465
- const THEME_SHARED_APPEND_CONTENT = new InjectionToken('THEME_SHARED_APPEND_CONTENT', {
2466
- providedIn: 'root',
2467
- factory: () => {
2468
- const domInsertion = inject(DomInsertionService);
2469
- domInsertion.insertContent(CONTENT_STRATEGY.AppendStyleToHead(styles));
2470
- },
2467
+ const THEME_SHARED_APPEND_CONTENT = new InjectionToken('THEME_SHARED_APPEND_CONTENT', {
2468
+ providedIn: 'root',
2469
+ factory: () => {
2470
+ const domInsertion = inject(DomInsertionService);
2471
+ domInsertion.insertContent(CONTENT_STRATEGY.AppendStyleToHead(styles));
2472
+ },
2471
2473
  });
2472
2474
 
2473
- function isNumber(value) {
2474
- return !isNaN(toInteger(value));
2475
- }
2476
- function toInteger(value) {
2477
- return parseInt(`${value}`, 10);
2478
- }
2479
- class DateParserFormatter extends NgbDateParserFormatter {
2480
- constructor(configState, locale) {
2481
- super();
2482
- this.configState = configState;
2483
- this.locale = locale;
2484
- }
2485
- parse(value) {
2486
- if (value) {
2487
- const dateParts = value.trim().split('-');
2488
- // TODO: CHANGED
2489
- if (dateParts.length === 1 && isNumber(dateParts[0])) {
2490
- return { year: toInteger(dateParts[0]), month: -1, day: -1 };
2491
- }
2492
- else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {
2493
- return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: -1 };
2494
- }
2495
- else if (dateParts.length === 3 &&
2496
- isNumber(dateParts[0]) &&
2497
- isNumber(dateParts[1]) &&
2498
- isNumber(dateParts[2])) {
2499
- return {
2500
- year: toInteger(dateParts[0]),
2501
- month: toInteger(dateParts[1]),
2502
- day: toInteger(dateParts[2]),
2503
- };
2504
- }
2505
- }
2506
- return null;
2507
- }
2508
- format(date) {
2509
- if (!date)
2510
- return '';
2511
- const localization = this.configState.getOne('localization');
2512
- const dateFormat = localization.currentCulture?.dateTimeFormat?.shortDatePattern || 'yyyy-MM-dd';
2513
- return formatDate(new Date(date.year, date.month - 1, date.day), dateFormat, this.locale);
2514
- }
2515
- }
2516
- DateParserFormatterfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DateParserFormatter, deps: [{ token: i2.ConfigStateService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });
2517
- DateParserFormatter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DateParserFormatter });
2518
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DateParserFormatter, decorators: [{
2519
- type: Injectable
2520
- }], ctorParameters: function () { return [{ type: i2.ConfigStateService }, { type: undefined, decorators: [{
2521
- type: Inject,
2522
- args: [LOCALE_ID]
2475
+ function isNumber(value) {
2476
+ return !isNaN(toInteger(value));
2477
+ }
2478
+ function toInteger(value) {
2479
+ return parseInt(`${value}`, 10);
2480
+ }
2481
+ class DateParserFormatter extends NgbDateParserFormatter {
2482
+ constructor(configState, locale) {
2483
+ super();
2484
+ this.configState = configState;
2485
+ this.locale = locale;
2486
+ }
2487
+ parse(value) {
2488
+ if (value) {
2489
+ const dateParts = value.trim().split('-');
2490
+ // TODO: CHANGED
2491
+ if (dateParts.length === 1 && isNumber(dateParts[0])) {
2492
+ return { year: toInteger(dateParts[0]), month: -1, day: -1 };
2493
+ }
2494
+ else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {
2495
+ return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: -1 };
2496
+ }
2497
+ else if (dateParts.length === 3 &&
2498
+ isNumber(dateParts[0]) &&
2499
+ isNumber(dateParts[1]) &&
2500
+ isNumber(dateParts[2])) {
2501
+ return {
2502
+ year: toInteger(dateParts[0]),
2503
+ month: toInteger(dateParts[1]),
2504
+ day: toInteger(dateParts[2]),
2505
+ };
2506
+ }
2507
+ }
2508
+ return null;
2509
+ }
2510
+ format(date) {
2511
+ if (!date)
2512
+ return '';
2513
+ const localization = this.configState.getOne('localization');
2514
+ const dateFormat = localization.currentCulture?.dateTimeFormat?.shortDatePattern || 'yyyy-MM-dd';
2515
+ return formatDate(new Date(date.year, date.month - 1, date.day), dateFormat, this.locale);
2516
+ }
2517
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: DateParserFormatter, deps: [{ token: i2.ConfigStateService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
2518
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: DateParserFormatter }); }
2519
+ }
2520
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: DateParserFormatter, decorators: [{
2521
+ type: Injectable
2522
+ }], ctorParameters: function () { return [{ type: i2.ConfigStateService }, { type: undefined, decorators: [{
2523
+ type: Inject,
2524
+ args: [LOCALE_ID]
2523
2525
  }] }]; } });
2524
2526
 
2525
- const declarationsWithExports = [
2526
- BreadcrumbComponent,
2527
- BreadcrumbItemsComponent,
2528
- ButtonComponent,
2529
- ConfirmationComponent,
2530
- LoaderBarComponent,
2531
- LoadingComponent,
2532
- ModalComponent,
2533
- ToastComponent,
2534
- ToastContainerComponent,
2535
- PasswordComponent,
2536
- NgxDatatableDefaultDirective,
2537
- NgxDatatableListDirective,
2538
- LoadingDirective,
2539
- ModalCloseDirective,
2540
- AbpVisibleDirective,
2541
- FormInputComponent,
2542
- FormCheckboxComponent
2543
- ];
2544
- class BaseThemeSharedModule {
2545
- }
2546
- BaseThemeSharedModulefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BaseThemeSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2547
- BaseThemeSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: BaseThemeSharedModule, declarations: [BreadcrumbComponent,
2548
- BreadcrumbItemsComponent,
2549
- ButtonComponent,
2550
- ConfirmationComponent,
2551
- LoaderBarComponent,
2552
- LoadingComponent,
2553
- ModalComponent,
2554
- ToastComponent,
2555
- ToastContainerComponent,
2556
- PasswordComponent,
2557
- NgxDatatableDefaultDirective,
2558
- NgxDatatableListDirective,
2559
- LoadingDirective,
2560
- ModalCloseDirective,
2561
- AbpVisibleDirective,
2562
- FormInputComponent,
2563
- FormCheckboxComponent, HttpErrorWrapperComponent], imports: [CoreModule,
2564
- NgxDatatableModule,
2565
- NgxValidateCoreModule,
2566
- NgbPaginationModule,
2567
- EllipsisModule,
2568
- CardModule], exports: [NgxDatatableModule,
2569
- EllipsisModule,
2570
- NgxValidateCoreModule,
2571
- CardModule, BreadcrumbComponent,
2572
- BreadcrumbItemsComponent,
2573
- ButtonComponent,
2574
- ConfirmationComponent,
2575
- LoaderBarComponent,
2576
- LoadingComponent,
2577
- ModalComponent,
2578
- ToastComponent,
2579
- ToastContainerComponent,
2580
- PasswordComponent,
2581
- NgxDatatableDefaultDirective,
2582
- NgxDatatableListDirective,
2583
- LoadingDirective,
2584
- ModalCloseDirective,
2585
- AbpVisibleDirective,
2586
- FormInputComponent,
2587
- FormCheckboxComponent] });
2588
- BaseThemeSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BaseThemeSharedModule, providers: [DatePipe], imports: [CoreModule,
2589
- NgxDatatableModule,
2590
- NgxValidateCoreModule,
2591
- NgbPaginationModule,
2592
- EllipsisModule,
2593
- CardModule, NgxDatatableModule,
2594
- EllipsisModule,
2595
- NgxValidateCoreModule,
2596
- CardModule] });
2597
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BaseThemeSharedModule, decorators: [{
2598
- type: NgModule,
2599
- args: [{
2600
- imports: [
2601
- CoreModule,
2602
- NgxDatatableModule,
2603
- NgxValidateCoreModule,
2604
- NgbPaginationModule,
2605
- EllipsisModule,
2606
- CardModule,
2607
- ],
2608
- declarations: [...declarationsWithExports, HttpErrorWrapperComponent],
2609
- exports: [
2610
- NgxDatatableModule,
2611
- EllipsisModule,
2612
- NgxValidateCoreModule,
2613
- CardModule,
2614
- ...declarationsWithExports
2615
- ],
2616
- providers: [DatePipe],
2617
- }]
2618
- }] });
2619
- class ThemeSharedModule {
2620
- static forRoot({ httpErrorConfig, validation = {}, confirmationIcons = {} } = {}) {
2621
- return {
2622
- ngModule: ThemeSharedModule,
2623
- providers: [
2624
- {
2625
- provide: APP_INITIALIZER,
2626
- multi: true,
2627
- deps: [ErrorHandler],
2628
- useFactory: noop,
2629
- },
2630
- THEME_SHARED_ROUTE_PROVIDERS,
2631
- {
2632
- provide: APP_INITIALIZER,
2633
- multi: true,
2634
- deps: [THEME_SHARED_APPEND_CONTENT],
2635
- useFactory: noop,
2636
- },
2637
- { provide: HTTP_ERROR_CONFIG, useValue: httpErrorConfig },
2638
- {
2639
- provide: 'HTTP_ERROR_CONFIG',
2640
- useFactory: httpErrorConfigFactory,
2641
- deps: [HTTP_ERROR_CONFIG],
2642
- },
2643
- { provide: NgbDateParserFormatter, useClass: DateParserFormatter },
2644
- NG_BOOTSTRAP_CONFIG_PROVIDERS,
2645
- {
2646
- provide: VALIDATION_BLUEPRINTS,
2647
- useValue: {
2648
- ...DEFAULT_VALIDATION_BLUEPRINTS,
2649
- ...(validation.blueprints || {}),
2650
- },
2651
- },
2652
- {
2653
- provide: VALIDATION_MAP_ERRORS_FN,
2654
- useValue: validation.mapErrorsFn || defaultMapErrorsFn,
2655
- },
2656
- {
2657
- provide: VALIDATION_VALIDATE_ON_SUBMIT,
2658
- useValue: validation.validateOnSubmit,
2659
- },
2660
- DocumentDirHandlerService,
2661
- {
2662
- provide: APP_INITIALIZER,
2663
- useFactory: noop,
2664
- multi: true,
2665
- deps: [DocumentDirHandlerService],
2666
- },
2667
- {
2668
- provide: CONFIRMATION_ICONS,
2669
- useValue: {
2670
- ...DEFAULT_CONFIRMATION_ICONS,
2671
- ...(confirmationIcons || {}),
2672
- },
2673
- },
2674
- ],
2675
- };
2676
- }
2677
- }
2678
- ThemeSharedModulefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ThemeSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2679
- ThemeSharedModulemod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: ThemeSharedModule, imports: [BaseThemeSharedModule], exports: [BaseThemeSharedModule] });
2680
- ThemeSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ThemeSharedModule, imports: [BaseThemeSharedModule, BaseThemeSharedModule] });
2681
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ThemeSharedModule, decorators: [{
2682
- type: NgModule,
2683
- args: [{
2684
- imports: [BaseThemeSharedModule],
2685
- exports: [BaseThemeSharedModule],
2686
- }]
2527
+ const declarationsWithExports = [
2528
+ BreadcrumbComponent,
2529
+ BreadcrumbItemsComponent,
2530
+ ButtonComponent,
2531
+ ConfirmationComponent,
2532
+ LoaderBarComponent,
2533
+ LoadingComponent,
2534
+ ModalComponent,
2535
+ ToastComponent,
2536
+ ToastContainerComponent,
2537
+ PasswordComponent,
2538
+ NgxDatatableDefaultDirective,
2539
+ NgxDatatableListDirective,
2540
+ LoadingDirective,
2541
+ ModalCloseDirective,
2542
+ AbpVisibleDirective,
2543
+ FormInputComponent,
2544
+ FormCheckboxComponent
2545
+ ];
2546
+ class BaseThemeSharedModule {
2547
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: BaseThemeSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2548
+ static { thismod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: BaseThemeSharedModule, declarations: [BreadcrumbComponent,
2549
+ BreadcrumbItemsComponent,
2550
+ ButtonComponent,
2551
+ ConfirmationComponent,
2552
+ LoaderBarComponent,
2553
+ LoadingComponent,
2554
+ ModalComponent,
2555
+ ToastComponent,
2556
+ ToastContainerComponent,
2557
+ PasswordComponent,
2558
+ NgxDatatableDefaultDirective,
2559
+ NgxDatatableListDirective,
2560
+ LoadingDirective,
2561
+ ModalCloseDirective,
2562
+ AbpVisibleDirective,
2563
+ FormInputComponent,
2564
+ FormCheckboxComponent, HttpErrorWrapperComponent], imports: [CoreModule,
2565
+ NgxDatatableModule,
2566
+ NgxValidateCoreModule,
2567
+ NgbPaginationModule,
2568
+ EllipsisModule,
2569
+ CardModule], exports: [NgxDatatableModule,
2570
+ EllipsisModule,
2571
+ NgxValidateCoreModule,
2572
+ CardModule, BreadcrumbComponent,
2573
+ BreadcrumbItemsComponent,
2574
+ ButtonComponent,
2575
+ ConfirmationComponent,
2576
+ LoaderBarComponent,
2577
+ LoadingComponent,
2578
+ ModalComponent,
2579
+ ToastComponent,
2580
+ ToastContainerComponent,
2581
+ PasswordComponent,
2582
+ NgxDatatableDefaultDirective,
2583
+ NgxDatatableListDirective,
2584
+ LoadingDirective,
2585
+ ModalCloseDirective,
2586
+ AbpVisibleDirective,
2587
+ FormInputComponent,
2588
+ FormCheckboxComponent] }); }
2589
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: BaseThemeSharedModule, providers: [DatePipe], imports: [CoreModule,
2590
+ NgxDatatableModule,
2591
+ NgxValidateCoreModule,
2592
+ NgbPaginationModule,
2593
+ EllipsisModule,
2594
+ CardModule, NgxDatatableModule,
2595
+ EllipsisModule,
2596
+ NgxValidateCoreModule,
2597
+ CardModule] }); }
2598
+ }
2599
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: BaseThemeSharedModule, decorators: [{
2600
+ type: NgModule,
2601
+ args: [{
2602
+ imports: [
2603
+ CoreModule,
2604
+ NgxDatatableModule,
2605
+ NgxValidateCoreModule,
2606
+ NgbPaginationModule,
2607
+ EllipsisModule,
2608
+ CardModule,
2609
+ ],
2610
+ declarations: [...declarationsWithExports, HttpErrorWrapperComponent],
2611
+ exports: [
2612
+ NgxDatatableModule,
2613
+ EllipsisModule,
2614
+ NgxValidateCoreModule,
2615
+ CardModule,
2616
+ ...declarationsWithExports
2617
+ ],
2618
+ providers: [DatePipe],
2619
+ }]
2620
+ }] });
2621
+ class ThemeSharedModule {
2622
+ static forRoot({ httpErrorConfig, validation = {}, confirmationIcons = {} } = {}) {
2623
+ return {
2624
+ ngModule: ThemeSharedModule,
2625
+ providers: [
2626
+ {
2627
+ provide: APP_INITIALIZER,
2628
+ multi: true,
2629
+ deps: [ErrorHandler],
2630
+ useFactory: noop,
2631
+ },
2632
+ THEME_SHARED_ROUTE_PROVIDERS,
2633
+ {
2634
+ provide: APP_INITIALIZER,
2635
+ multi: true,
2636
+ deps: [THEME_SHARED_APPEND_CONTENT],
2637
+ useFactory: noop,
2638
+ },
2639
+ { provide: HTTP_ERROR_CONFIG, useValue: httpErrorConfig },
2640
+ {
2641
+ provide: 'HTTP_ERROR_CONFIG',
2642
+ useFactory: httpErrorConfigFactory,
2643
+ deps: [HTTP_ERROR_CONFIG],
2644
+ },
2645
+ { provide: NgbDateParserFormatter, useClass: DateParserFormatter },
2646
+ NG_BOOTSTRAP_CONFIG_PROVIDERS,
2647
+ {
2648
+ provide: VALIDATION_BLUEPRINTS,
2649
+ useValue: {
2650
+ ...DEFAULT_VALIDATION_BLUEPRINTS,
2651
+ ...(validation.blueprints || {}),
2652
+ },
2653
+ },
2654
+ {
2655
+ provide: VALIDATION_MAP_ERRORS_FN,
2656
+ useValue: validation.mapErrorsFn || defaultMapErrorsFn,
2657
+ },
2658
+ {
2659
+ provide: VALIDATION_VALIDATE_ON_SUBMIT,
2660
+ useValue: validation.validateOnSubmit,
2661
+ },
2662
+ DocumentDirHandlerService,
2663
+ {
2664
+ provide: APP_INITIALIZER,
2665
+ useFactory: noop,
2666
+ multi: true,
2667
+ deps: [DocumentDirHandlerService],
2668
+ },
2669
+ {
2670
+ provide: CONFIRMATION_ICONS,
2671
+ useValue: {
2672
+ ...DEFAULT_CONFIRMATION_ICONS,
2673
+ ...(confirmationIcons || {}),
2674
+ },
2675
+ },
2676
+ ],
2677
+ };
2678
+ }
2679
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ThemeSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2680
+ static { thismod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: ThemeSharedModule, imports: [BaseThemeSharedModule], exports: [BaseThemeSharedModule] }); }
2681
+ static { thisinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ThemeSharedModule, imports: [BaseThemeSharedModule, BaseThemeSharedModule] }); }
2682
+ }
2683
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ThemeSharedModule, decorators: [{
2684
+ type: NgModule,
2685
+ args: [{
2686
+ imports: [BaseThemeSharedModule],
2687
+ exports: [BaseThemeSharedModule],
2688
+ }]
2687
2689
  }] });
2688
2690
 
2689
- const { minLength, maxLength } = Validators;
2690
- function getPasswordValidators(injector) {
2691
- const getRule = getRuleFn(injector);
2692
- const passwordRulesArr = [];
2693
- let requiredLength = 1;
2694
- if (getRule('RequireDigit') === 'true') {
2695
- passwordRulesArr.push('number');
2696
- }
2697
- if (getRule('RequireLowercase') === 'true') {
2698
- passwordRulesArr.push('small');
2699
- }
2700
- if (getRule('RequireUppercase') === 'true') {
2701
- passwordRulesArr.push('capital');
2702
- }
2703
- if (getRule('RequireNonAlphanumeric') === 'true') {
2704
- passwordRulesArr.push('special');
2705
- }
2706
- if (Number.isInteger(+getRule('RequiredLength'))) {
2707
- requiredLength = +getRule('RequiredLength');
2708
- }
2709
- const passwordValidators = passwordRulesArr.map(rule => validatePassword(rule));
2710
- return [...passwordValidators, minLength(requiredLength), maxLength(128)];
2711
- }
2712
- function getRuleFn(injector) {
2713
- const configState = injector.get(ConfigStateService);
2714
- return (key) => {
2715
- const passwordRules = configState.getSettings('Identity.Password');
2716
- return (passwordRules[`Abp.Identity.Password.${key}`] || '').toLowerCase();
2717
- };
2718
- }
2719
- const errorMessageMap = {
2720
- small: 'passwordRequiresLower',
2721
- capital: 'passwordRequiresUpper',
2722
- number: 'passwordRequiresDigit',
2723
- special: 'passwordRequiresNonAlphanumeric',
2724
- };
2725
- function validatePassword(shouldContain) {
2726
- return (control) => {
2727
- if (!control.value)
2728
- return null;
2729
- const value = normalizeDiacritics(control.value);
2730
- const regexMap = {
2731
- small: /.*[a-z].*/,
2732
- capital: /.*[A-Z].*/,
2733
- number: /.*[0-9].*/,
2734
- special: /.*[^0-9a-zA-Z].*/,
2735
- };
2736
- const regex = regexMap[shouldContain];
2737
- const isValid = regex.test(value);
2738
- if (isValid) {
2739
- return null;
2740
- }
2741
- const error = errorMessageMap[shouldContain];
2742
- return {
2743
- [error]: true,
2744
- };
2745
- };
2691
+ const { minLength, maxLength } = Validators;
2692
+ function getPasswordValidators(injector) {
2693
+ const getRule = getRuleFn(injector);
2694
+ const passwordRulesArr = [];
2695
+ let requiredLength = 1;
2696
+ if (getRule('RequireDigit') === 'true') {
2697
+ passwordRulesArr.push('number');
2698
+ }
2699
+ if (getRule('RequireLowercase') === 'true') {
2700
+ passwordRulesArr.push('small');
2701
+ }
2702
+ if (getRule('RequireUppercase') === 'true') {
2703
+ passwordRulesArr.push('capital');
2704
+ }
2705
+ if (getRule('RequireNonAlphanumeric') === 'true') {
2706
+ passwordRulesArr.push('special');
2707
+ }
2708
+ if (Number.isInteger(+getRule('RequiredLength'))) {
2709
+ requiredLength = +getRule('RequiredLength');
2710
+ }
2711
+ const passwordValidators = passwordRulesArr.map(rule => validatePassword(rule));
2712
+ return [...passwordValidators, minLength(requiredLength), maxLength(128)];
2713
+ }
2714
+ function getRuleFn(injector) {
2715
+ const configState = injector.get(ConfigStateService);
2716
+ return (key) => {
2717
+ const passwordRules = configState.getSettings('Identity.Password');
2718
+ return (passwordRules[`Abp.Identity.Password.${key}`] || '').toLowerCase();
2719
+ };
2720
+ }
2721
+ const errorMessageMap = {
2722
+ small: 'passwordRequiresLower',
2723
+ capital: 'passwordRequiresUpper',
2724
+ number: 'passwordRequiresDigit',
2725
+ special: 'passwordRequiresNonAlphanumeric',
2726
+ };
2727
+ function validatePassword(shouldContain) {
2728
+ return (control) => {
2729
+ if (!control.value)
2730
+ return null;
2731
+ const value = normalizeDiacritics(control.value);
2732
+ const regexMap = {
2733
+ small: /.*[a-z].*/,
2734
+ capital: /.*[A-Z].*/,
2735
+ number: /.*[0-9].*/,
2736
+ special: /.*[^0-9a-zA-Z].*/,
2737
+ };
2738
+ const regex = regexMap[shouldContain];
2739
+ const isValid = regex.test(value);
2740
+ if (isValid) {
2741
+ return null;
2742
+ }
2743
+ const error = errorMessageMap[shouldContain];
2744
+ return {
2745
+ [error]: true,
2746
+ };
2747
+ };
2746
2748
  }
2747
2749
 
2748
- /*
2749
- * Public API Surface of theme-shared
2750
+ /*
2751
+ * Public API Surface of theme-shared
2750
2752
  */
2751
2753
 
2752
- /**
2753
- * Generated bundle index. Do not edit.
2754
+ /**
2755
+ * Generated bundle index. Do not edit.
2754
2756
  */
2755
2757
 
2756
2758
  export { AbpVisibleDirective, BaseThemeSharedModule, BreadcrumbComponent, BreadcrumbItemsComponent, ButtonComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CardHeaderDirective, CardImgTopDirective, CardModule, CardSubtitleDirective, CardTitleDirective, Confirmation, ConfirmationComponent, ConfirmationService, DEFAULT_ERROR_LOCALIZATIONS, DEFAULT_ERROR_MESSAGES, DEFAULT_VALIDATION_BLUEPRINTS, DateParserFormatter, DocumentDirHandlerService, EllipsisDirective, EllipsisModule, ErrorHandler, FormCheckboxComponent, FormInputComponent, HTTP_ERROR_CONFIG, HTTP_ERROR_HANDLER, HttpErrorWrapperComponent, LoaderBarComponent, LoadingComponent, LoadingDirective, ModalCloseDirective, ModalComponent, ModalRefService, NGX_DATATABLE_MESSAGES, NG_BOOTSTRAP_CONFIG_PROVIDERS, NavItem, NavItemsService, NgxDatatableDefaultDirective, NgxDatatableListDirective, PageAlertService, PasswordComponent, SUPPRESS_UNSAVED_CHANGES_WARNING, THEME_SHARED_APPEND_CONTENT, THEME_SHARED_ROUTE_PROVIDERS, ThemeSharedModule, ToastComponent, ToastContainerComponent, ToasterService, UserMenu, UserMenuService, bounceIn, collapse, collapseLinearWithMargin, collapseWithMargin, collapseX, collapseY, collapseYWithMargin, configureNgBootstrap, configureRoutes, defaultNgxDatatableMessages, dialogAnimation, eFormComponets, expandX, expandY, expandYWithMargin, fadeAnimation, fadeIn, fadeInDown, fadeInLeft, fadeInRight, fadeInUp, fadeOut, fadeOutDown, fadeOutLeft, fadeOutRight, fadeOutUp, getPasswordValidators, httpErrorConfigFactory, slideFromBottom, toastInOut, validatePassword };