@abp/ng.theme.shared 5.0.0-rc.1 → 5.1.1

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 (173) hide show
  1. package/README.md +3 -3
  2. package/{esm2015/abp-ng.theme.shared.js → esm2020/abp-ng.theme.shared.mjs} +0 -0
  3. package/{esm2015/extensions/abp-ng.theme.shared-extensions.js → esm2020/extensions/abp-ng.theme.shared-extensions.mjs} +0 -0
  4. package/esm2020/extensions/lib/adapters/date-time.adapter.mjs +44 -0
  5. package/{esm2015/extensions/lib/adapters/date.adapter.js → esm2020/extensions/lib/adapters/date.adapter.mjs} +4 -4
  6. package/{esm2015/extensions/lib/adapters/time.adapter.js → esm2020/extensions/lib/adapters/time.adapter.mjs} +4 -4
  7. package/{esm2015/extensions/lib/components/abstract-actions/abstract-actions.component.js → esm2020/extensions/lib/components/abstract-actions/abstract-actions.component.mjs} +4 -4
  8. package/{esm2015/extensions/lib/components/date-time-picker/date-time-picker.component.js → esm2020/extensions/lib/components/date-time-picker/date-time-picker.component.mjs} +40 -40
  9. package/esm2020/extensions/lib/components/extensible-form/extensible-form-prop.component.mjs +159 -0
  10. package/esm2020/extensions/lib/components/extensible-form/extensible-form.component.mjs +64 -0
  11. package/esm2020/extensions/lib/components/extensible-table/extensible-table.component.mjs +128 -0
  12. package/esm2020/extensions/lib/components/grid-actions/grid-actions.component.mjs +39 -0
  13. package/esm2020/extensions/lib/components/page-toolbar/page-toolbar.component.mjs +40 -0
  14. package/{esm2015/extensions/lib/constants/extra-properties.js → esm2020/extensions/lib/constants/extra-properties.mjs} +1 -1
  15. package/{esm2015/extensions/lib/directives/disabled.directive.js → esm2020/extensions/lib/directives/disabled.directive.mjs} +4 -4
  16. package/{esm2015/extensions/lib/directives/prop-data.directive.js → esm2020/extensions/lib/directives/prop-data.directive.mjs} +4 -4
  17. package/esm2020/extensions/lib/enums/props.enum.mjs +2 -0
  18. package/esm2020/extensions/lib/models/actions.mjs +46 -0
  19. package/esm2020/extensions/lib/models/entity-actions.mjs +29 -0
  20. package/esm2020/extensions/lib/models/entity-props.mjs +36 -0
  21. package/esm2020/extensions/lib/models/form-props.mjs +52 -0
  22. package/esm2020/extensions/lib/models/internal/object-extensions.mjs +2 -0
  23. package/{esm2015/extensions/lib/models/object-extensions.js → esm2020/extensions/lib/models/object-extensions.mjs} +1 -1
  24. package/{esm2015/extensions/lib/models/props.js → esm2020/extensions/lib/models/props.mjs} +1 -1
  25. package/esm2020/extensions/lib/models/toolbar-actions.mjs +41 -0
  26. package/{esm2015/extensions/lib/services/extensions.service.js → esm2020/extensions/lib/services/extensions.service.mjs} +4 -4
  27. package/{esm2015/extensions/lib/tokens/extensions.token.js → esm2020/extensions/lib/tokens/extensions.token.mjs} +1 -1
  28. package/{esm2015/extensions/lib/ui-extensions.module.js → esm2020/extensions/lib/ui-extensions.module.mjs} +9 -9
  29. package/esm2020/extensions/lib/utils/actions.util.mjs +9 -0
  30. package/{esm2015/extensions/lib/utils/enum.util.js → esm2020/extensions/lib/utils/enum.util.mjs} +1 -1
  31. package/{esm2015/extensions/lib/utils/factory.util.js → esm2020/extensions/lib/utils/factory.util.mjs} +1 -1
  32. package/{esm2015/extensions/lib/utils/form-props.util.js → esm2020/extensions/lib/utils/form-props.util.mjs} +1 -1
  33. package/{esm2015/extensions/lib/utils/localization.util.js → esm2020/extensions/lib/utils/localization.util.mjs} +1 -1
  34. package/esm2020/extensions/lib/utils/props.util.mjs +14 -0
  35. package/{esm2015/extensions/lib/utils/state.util.js → esm2020/extensions/lib/utils/state.util.mjs} +2 -3
  36. package/{esm2015/extensions/lib/utils/typeahead.util.js → esm2020/extensions/lib/utils/typeahead.util.mjs} +1 -1
  37. package/{esm2015/extensions/lib/utils/validation.util.js → esm2020/extensions/lib/utils/validation.util.mjs} +1 -1
  38. package/{esm2015/extensions/public-api.js → esm2020/extensions/public-api.mjs} +1 -1
  39. package/{esm2015/lib/animations/bounce.animations.js → esm2020/lib/animations/bounce.animations.mjs} +1 -1
  40. package/{esm2015/lib/animations/collapse.animations.js → esm2020/lib/animations/collapse.animations.mjs} +1 -1
  41. package/{esm2015/lib/animations/fade.animations.js → esm2020/lib/animations/fade.animations.mjs} +1 -1
  42. package/{esm2015/lib/animations/index.js → esm2020/lib/animations/index.mjs} +1 -1
  43. package/{esm2015/lib/animations/modal.animations.js → esm2020/lib/animations/modal.animations.mjs} +1 -1
  44. package/{esm2015/lib/animations/slide.animations.js → esm2020/lib/animations/slide.animations.mjs} +1 -1
  45. package/{esm2015/lib/animations/toast.animations.js → esm2020/lib/animations/toast.animations.mjs} +1 -1
  46. package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +43 -0
  47. package/esm2020/lib/components/breadcrumb-items/breadcrumb-items.component.mjs +19 -0
  48. package/esm2020/lib/components/button/button.component.mjs +97 -0
  49. package/esm2020/lib/components/confirmation/confirmation.component.mjs +36 -0
  50. package/esm2020/lib/components/http-error-wrapper/http-error-wrapper.component.mjs +59 -0
  51. package/{esm2015/lib/components/index.js → esm2020/lib/components/index.mjs} +1 -1
  52. package/{esm2015/lib/components/loader-bar/loader-bar.component.js → esm2020/lib/components/loader-bar/loader-bar.component.mjs} +28 -33
  53. package/esm2020/lib/components/loading/loading.component.mjs +47 -0
  54. package/{esm2015/lib/components/modal/modal-close.directive.js → esm2020/lib/components/modal/modal-close.directive.mjs} +5 -6
  55. package/{esm2015/lib/components/modal/modal-ref.service.js → esm2020/lib/components/modal/modal-ref.service.mjs} +4 -4
  56. package/esm2020/lib/components/modal/modal.component.mjs +189 -0
  57. package/esm2020/lib/components/toast/toast.component.mjs +55 -0
  58. package/esm2020/lib/components/toast-container/toast-container.component.mjs +43 -0
  59. package/esm2020/lib/constants/styles.mjs +182 -0
  60. package/{esm2015/lib/constants/validation.js → esm2020/lib/constants/validation.mjs} +1 -1
  61. package/{esm2015/lib/directives/ellipsis.directive.js → esm2020/lib/directives/ellipsis.directive.mjs} +8 -8
  62. package/{esm2015/lib/directives/index.js → esm2020/lib/directives/index.mjs} +1 -1
  63. package/esm2020/lib/directives/loading.directive.mjs +89 -0
  64. package/{esm2015/lib/directives/ngx-datatable-default.directive.js → esm2020/lib/directives/ngx-datatable-default.directive.mjs} +4 -4
  65. package/{esm2015/lib/directives/ngx-datatable-list.directive.js → esm2020/lib/directives/ngx-datatable-list.directive.mjs} +4 -4
  66. package/{esm2015/lib/enums/index.js → esm2020/lib/enums/index.mjs} +1 -1
  67. package/{esm2015/lib/enums/route-names.js → esm2020/lib/enums/route-names.mjs} +1 -1
  68. package/{esm2015/lib/handlers/document-dir.handler.js → esm2020/lib/handlers/document-dir.handler.mjs} +4 -4
  69. package/esm2020/lib/handlers/error.handler.mjs +286 -0
  70. package/{esm2015/lib/handlers/index.js → esm2020/lib/handlers/index.mjs} +1 -1
  71. package/esm2020/lib/models/common.mjs +2 -0
  72. package/esm2020/lib/models/confirmation.mjs +10 -0
  73. package/esm2020/lib/models/index.mjs +7 -0
  74. package/esm2020/lib/models/nav-item.mjs +7 -0
  75. package/esm2020/lib/models/statistics.mjs +2 -0
  76. package/esm2020/lib/models/toaster.mjs +2 -0
  77. package/esm2020/lib/models/user-menu.mjs +4 -0
  78. package/{esm2015/lib/providers/index.js → esm2020/lib/providers/index.mjs} +1 -1
  79. package/{esm2015/lib/providers/ng-bootstrap-config.provider.js → esm2020/lib/providers/ng-bootstrap-config.provider.mjs} +1 -1
  80. package/{esm2015/lib/providers/route.provider.js → esm2020/lib/providers/route.provider.mjs} +1 -1
  81. package/esm2020/lib/services/abstract-menu.service.mjs +50 -0
  82. package/{esm2015/lib/services/confirmation.service.js → esm2020/lib/services/confirmation.service.mjs} +4 -4
  83. package/{esm2015/lib/services/index.js → esm2020/lib/services/index.mjs} +2 -1
  84. package/esm2020/lib/services/nav-items.service.mjs +17 -0
  85. package/esm2020/lib/services/page-alert.service.mjs +28 -0
  86. package/esm2020/lib/services/toaster.service.mjs +103 -0
  87. package/esm2020/lib/services/user-menu.service.mjs +17 -0
  88. package/esm2020/lib/theme-shared.module.mjs +162 -0
  89. package/{esm2015/lib/tokens/append-content.token.js → esm2020/lib/tokens/append-content.token.mjs} +1 -1
  90. package/esm2020/lib/tokens/http-error.token.mjs +14 -0
  91. package/{esm2015/lib/tokens/index.js → esm2020/lib/tokens/index.mjs} +1 -1
  92. package/{esm2015/lib/tokens/ngx-datatable-messages.token.js → esm2020/lib/tokens/ngx-datatable-messages.token.mjs} +1 -1
  93. package/{esm2015/lib/tokens/suppress-unsaved-changes-warning.token.js → esm2020/lib/tokens/suppress-unsaved-changes-warning.token.mjs} +1 -1
  94. package/{esm2015/lib/utils/date-parser-formatter.js → esm2020/lib/utils/date-parser-formatter.mjs} +5 -6
  95. package/{esm2015/lib/utils/index.js → esm2020/lib/utils/index.mjs} +1 -1
  96. package/{esm2015/lib/utils/validation-utils.js → esm2020/lib/utils/validation-utils.mjs} +1 -1
  97. package/{esm2015/public-api.js → esm2020/public-api.mjs} +1 -1
  98. package/{esm2015/testing/abp-ng.theme.shared-testing.js → esm2020/testing/abp-ng.theme.shared-testing.mjs} +0 -0
  99. package/{esm2015/testing/lib/models/config.js → esm2020/testing/lib/models/config.mjs} +1 -1
  100. package/{esm2015/testing/lib/models/index.js → esm2020/testing/lib/models/index.mjs} +1 -1
  101. package/esm2020/testing/lib/theme-shared-testing.module.mjs +46 -0
  102. package/{esm2015/testing/public-api.js → esm2020/testing/public-api.mjs} +1 -1
  103. package/extensions/lib/models/entity-props.d.ts +1 -1
  104. package/extensions/lib/tokens/extensions.token.d.ts +1 -1
  105. package/extensions/package.json +5 -5
  106. package/fesm2015/abp-ng.theme.shared-extensions.mjs +1329 -0
  107. package/fesm2015/abp-ng.theme.shared-extensions.mjs.map +1 -0
  108. package/fesm2015/{abp-ng.theme.shared-testing.js → abp-ng.theme.shared-testing.mjs} +5 -5
  109. package/fesm2015/abp-ng.theme.shared-testing.mjs.map +1 -0
  110. package/fesm2015/{abp-ng.theme.shared.js → abp-ng.theme.shared.mjs} +429 -430
  111. package/fesm2015/abp-ng.theme.shared.mjs.map +1 -0
  112. package/{fesm2015/abp-ng.theme.shared-extensions.js → fesm2020/abp-ng.theme.shared-extensions.mjs} +116 -135
  113. package/fesm2020/abp-ng.theme.shared-extensions.mjs.map +1 -0
  114. package/fesm2020/abp-ng.theme.shared-testing.mjs +57 -0
  115. package/fesm2020/abp-ng.theme.shared-testing.mjs.map +1 -0
  116. package/fesm2020/abp-ng.theme.shared.mjs +2202 -0
  117. package/fesm2020/abp-ng.theme.shared.mjs.map +1 -0
  118. package/lib/models/index.d.ts +2 -1
  119. package/lib/models/user-menu.d.ts +8 -0
  120. package/lib/services/abstract-menu.service.d.ts +12 -0
  121. package/lib/services/index.d.ts +1 -0
  122. package/lib/services/nav-items.service.d.ts +3 -8
  123. package/lib/services/user-menu.service.d.ts +8 -0
  124. package/package.json +39 -9
  125. package/testing/package.json +5 -5
  126. package/bundles/abp-ng.theme.shared-extensions.umd.js +0 -1904
  127. package/bundles/abp-ng.theme.shared-extensions.umd.js.map +0 -1
  128. package/bundles/abp-ng.theme.shared-testing.umd.js +0 -82
  129. package/bundles/abp-ng.theme.shared-testing.umd.js.map +0 -1
  130. package/bundles/abp-ng.theme.shared.umd.js +0 -2506
  131. package/bundles/abp-ng.theme.shared.umd.js.map +0 -1
  132. package/esm2015/extensions/lib/adapters/date-time.adapter.js +0 -34
  133. package/esm2015/extensions/lib/components/extensible-form/extensible-form-prop.component.js +0 -164
  134. package/esm2015/extensions/lib/components/extensible-form/extensible-form.component.js +0 -70
  135. package/esm2015/extensions/lib/components/extensible-table/extensible-table.component.js +0 -134
  136. package/esm2015/extensions/lib/components/grid-actions/grid-actions.component.js +0 -45
  137. package/esm2015/extensions/lib/components/page-toolbar/page-toolbar.component.js +0 -46
  138. package/esm2015/extensions/lib/enums/props.enum.js +0 -2
  139. package/esm2015/extensions/lib/models/actions.js +0 -46
  140. package/esm2015/extensions/lib/models/entity-actions.js +0 -29
  141. package/esm2015/extensions/lib/models/entity-props.js +0 -34
  142. package/esm2015/extensions/lib/models/form-props.js +0 -52
  143. package/esm2015/extensions/lib/models/internal/object-extensions.js +0 -2
  144. package/esm2015/extensions/lib/models/toolbar-actions.js +0 -41
  145. package/esm2015/extensions/lib/utils/actions.util.js +0 -9
  146. package/esm2015/extensions/lib/utils/props.util.js +0 -14
  147. package/esm2015/lib/components/breadcrumb/breadcrumb.component.js +0 -49
  148. package/esm2015/lib/components/breadcrumb-items/breadcrumb-items.component.js +0 -22
  149. package/esm2015/lib/components/button/button.component.js +0 -98
  150. package/esm2015/lib/components/confirmation/confirmation.component.js +0 -40
  151. package/esm2015/lib/components/http-error-wrapper/http-error-wrapper.component.js +0 -65
  152. package/esm2015/lib/components/loading/loading.component.js +0 -47
  153. package/esm2015/lib/components/modal/modal.component.js +0 -188
  154. package/esm2015/lib/components/toast/toast.component.js +0 -61
  155. package/esm2015/lib/components/toast-container/toast-container.component.js +0 -49
  156. package/esm2015/lib/constants/styles.js +0 -182
  157. package/esm2015/lib/directives/loading.directive.js +0 -90
  158. package/esm2015/lib/handlers/error.handler.js +0 -292
  159. package/esm2015/lib/models/common.js +0 -2
  160. package/esm2015/lib/models/confirmation.js +0 -10
  161. package/esm2015/lib/models/index.js +0 -6
  162. package/esm2015/lib/models/nav-item.js +0 -7
  163. package/esm2015/lib/models/statistics.js +0 -2
  164. package/esm2015/lib/models/toaster.js +0 -2
  165. package/esm2015/lib/services/nav-items.service.js +0 -51
  166. package/esm2015/lib/services/page-alert.service.js +0 -26
  167. package/esm2015/lib/services/toaster.service.js +0 -103
  168. package/esm2015/lib/theme-shared.module.js +0 -165
  169. package/esm2015/lib/tokens/http-error.token.js +0 -10
  170. package/esm2015/testing/lib/theme-shared-testing.module.js +0 -43
  171. package/fesm2015/abp-ng.theme.shared-extensions.js.map +0 -1
  172. package/fesm2015/abp-ng.theme.shared-testing.js.map +0 -1
  173. package/fesm2015/abp-ng.theme.shared.js.map +0 -1
@@ -10,13 +10,12 @@ export class ModalCloseDirective {
10
10
  }
11
11
  }
12
12
  onClick() {
13
- var _a;
14
- (_a = this.modal) === null || _a === void 0 ? void 0 : _a.close();
13
+ this.modal?.close();
15
14
  }
16
15
  }
17
- ModalCloseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ModalCloseDirective, deps: [{ token: i1.ModalComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
18
- ModalCloseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: ModalCloseDirective, selector: "[abpClose]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ModalCloseDirective, decorators: [{
16
+ ModalCloseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ModalCloseDirective, deps: [{ token: i1.ModalComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
17
+ ModalCloseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: ModalCloseDirective, selector: "[abpClose]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ModalCloseDirective, decorators: [{
20
19
  type: Directive,
21
20
  args: [{ selector: '[abpClose]' }]
22
21
  }], ctorParameters: function () { return [{ type: i1.ModalComponent, decorators: [{
@@ -25,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
25
24
  type: HostListener,
26
25
  args: ['click']
27
26
  }] } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY2xvc2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC9tb2RhbC1jbG9zZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBR25ELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFBZ0MsS0FBcUI7UUFBckIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDbkQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7SUFHRCxPQUFPOztRQUNMLE1BQUEsSUFBSSxDQUFDLEtBQUssMENBQUUsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7aUhBVlUsbUJBQW1CO3FHQUFuQixtQkFBbUI7NEZBQW5CLG1CQUFtQjtrQkFEL0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUU7OzBCQUV0QixRQUFROzRDQU9yQixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL21vZGFsLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1thYnBDbG9zZV0nIH0pXG5leHBvcnQgY2xhc3MgTW9kYWxDbG9zZURpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByaXZhdGUgbW9kYWw6IE1vZGFsQ29tcG9uZW50KSB7XG4gICAgaWYgKCFtb2RhbCkge1xuICAgICAgY29uc29sZS5lcnJvcignUGxlYXNlIHVzZSBhYnBDbG9zZSB3aXRoaW4gYW4gYWJwLW1vZGFsJyk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBvbkNsaWNrKCkge1xuICAgIHRoaXMubW9kYWw/LmNsb3NlKCk7XG4gIH1cbn1cbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY2xvc2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC9tb2RhbC1jbG9zZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBR25ELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFBZ0MsS0FBcUI7UUFBckIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDbkQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7SUFHRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDOztnSEFWVSxtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRTs7MEJBRXRCLFFBQVE7NENBT3JCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC5jb21wb25lbnQnO1xyXG5cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2FicENsb3NlXScgfSlcclxuZXhwb3J0IGNsYXNzIE1vZGFsQ2xvc2VEaXJlY3RpdmUge1xyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByaXZhdGUgbW9kYWw6IE1vZGFsQ29tcG9uZW50KSB7XHJcbiAgICBpZiAoIW1vZGFsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSB1c2UgYWJwQ2xvc2Ugd2l0aGluIGFuIGFicC1tb2RhbCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxyXG4gIG9uQ2xpY2soKSB7XHJcbiAgICB0aGlzLm1vZGFsPy5jbG9zZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -17,10 +17,10 @@ export class ModalRefService {
17
17
  this.modalRefs.forEach(modal => modal.dismiss(mode));
18
18
  }
19
19
  }
20
- ModalRefService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ModalRefService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
21
- ModalRefService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ModalRefService, providedIn: 'root' });
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ModalRefService, decorators: [{
20
+ ModalRefService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ModalRefService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
21
+ ModalRefService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ModalRefService, providedIn: 'root' });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ModalRefService, decorators: [{
23
23
  type: Injectable,
24
24
  args: [{ providedIn: 'root' }]
25
25
  }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtcmVmLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL21vZGFsL21vZGFsLXJlZi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUzNDLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRUUsY0FBUyxHQUF1QixFQUFFLENBQUM7S0FlcEM7SUFiQyxRQUFRLENBQUMsS0FBdUI7UUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUF1QjtRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsSUFBc0I7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7NkdBZlUsZUFBZTtpSEFBZixlQUFlLGNBREYsTUFBTTs0RkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIE1vZGFsRGlzbWlzc01vZGUgPSAnaGFyZCcgfCAnc29mdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzbWlzc2FibGVNb2RhbCB7XG4gIGRpc21pc3MobW9kZTogTW9kYWxEaXNtaXNzTW9kZSk6IHZvaWQ7XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTW9kYWxSZWZTZXJ2aWNlIHtcbiAgbW9kYWxSZWZzOiBEaXNtaXNzYWJsZU1vZGFsW10gPSBbXTtcblxuICByZWdpc3Rlcihtb2RhbDogRGlzbWlzc2FibGVNb2RhbCkge1xuICAgIHRoaXMubW9kYWxSZWZzLnB1c2gobW9kYWwpO1xuICB9XG4gIHVucmVnaXN0ZXIobW9kYWw6IERpc21pc3NhYmxlTW9kYWwpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMubW9kYWxSZWZzLmluZGV4T2YobW9kYWwpO1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLm1vZGFsUmVmcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIGRpc21pc3NBbGwobW9kZTogTW9kYWxEaXNtaXNzTW9kZSkge1xuICAgIHRoaXMubW9kYWxSZWZzLmZvckVhY2gobW9kYWwgPT4gbW9kYWwuZGlzbWlzcyhtb2RlKSk7XG4gIH1cbn1cbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtcmVmLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL21vZGFsL21vZGFsLXJlZi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUzNDLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRUUsY0FBUyxHQUF1QixFQUFFLENBQUM7S0FlcEM7SUFiQyxRQUFRLENBQUMsS0FBdUI7UUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUF1QjtRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsSUFBc0I7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7NEdBZlUsZUFBZTtnSEFBZixlQUFlLGNBREYsTUFBTTsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgdHlwZSBNb2RhbERpc21pc3NNb2RlID0gJ2hhcmQnIHwgJ3NvZnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaXNtaXNzYWJsZU1vZGFsIHtcclxuICBkaXNtaXNzKG1vZGU6IE1vZGFsRGlzbWlzc01vZGUpOiB2b2lkO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTW9kYWxSZWZTZXJ2aWNlIHtcclxuICBtb2RhbFJlZnM6IERpc21pc3NhYmxlTW9kYWxbXSA9IFtdO1xyXG5cclxuICByZWdpc3Rlcihtb2RhbDogRGlzbWlzc2FibGVNb2RhbCkge1xyXG4gICAgdGhpcy5tb2RhbFJlZnMucHVzaChtb2RhbCk7XHJcbiAgfVxyXG4gIHVucmVnaXN0ZXIobW9kYWw6IERpc21pc3NhYmxlTW9kYWwpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tb2RhbFJlZnMuaW5kZXhPZihtb2RhbCk7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLm1vZGFsUmVmcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGlzbWlzc0FsbChtb2RlOiBNb2RhbERpc21pc3NNb2RlKSB7XHJcbiAgICB0aGlzLm1vZGFsUmVmcy5mb3JFYWNoKG1vZGFsID0+IG1vZGFsLmRpc21pc3MobW9kZSkpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,189 @@
1
+ import { SubscriptionService, uuid } from '@abp/ng.core';
2
+ import { Component, ContentChild, EventEmitter, Inject, Input, Optional, Output, TemplateRef, ViewChild, } from '@angular/core';
3
+ import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
4
+ import { fromEvent, Subject } from 'rxjs';
5
+ import { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';
6
+ import { Confirmation } from '../../models/confirmation';
7
+ import { ConfirmationService } from '../../services/confirmation.service';
8
+ import { SUPPRESS_UNSAVED_CHANGES_WARNING } from '../../tokens/suppress-unsaved-changes-warning.token';
9
+ import { ButtonComponent } from '../button/button.component';
10
+ import { ModalRefService } from './modal-ref.service';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "../../services/confirmation.service";
13
+ import * as i2 from "@abp/ng.core";
14
+ import * as i3 from "@ng-bootstrap/ng-bootstrap";
15
+ import * as i4 from "./modal-ref.service";
16
+ import * as i5 from "@angular/common";
17
+ export class ModalComponent {
18
+ constructor(confirmationService, subscription, suppressUnsavedChangesWarningToken, modal, modalRefService) {
19
+ this.confirmationService = confirmationService;
20
+ this.subscription = subscription;
21
+ this.suppressUnsavedChangesWarningToken = suppressUnsavedChangesWarningToken;
22
+ this.modal = modal;
23
+ this.modalRefService = modalRefService;
24
+ this.options = {};
25
+ this.suppressUnsavedChangesWarning = this.suppressUnsavedChangesWarningToken;
26
+ this.visibleChange = new EventEmitter();
27
+ this.init = new EventEmitter();
28
+ this.appear = new EventEmitter();
29
+ this.disappear = new EventEmitter();
30
+ this._visible = false;
31
+ this._busy = false;
32
+ this.isConfirmationOpen = false;
33
+ this.destroy$ = new Subject();
34
+ this.modalIdentifier = `modal-${uuid()}`;
35
+ this.toggle$ = new Subject();
36
+ this.initToggleStream();
37
+ }
38
+ get visible() {
39
+ return this._visible;
40
+ }
41
+ set visible(value) {
42
+ if (typeof value !== 'boolean')
43
+ return;
44
+ this.toggle$.next(value);
45
+ }
46
+ get busy() {
47
+ return this._busy;
48
+ }
49
+ set busy(value) {
50
+ if (this.abpSubmit && this.abpSubmit instanceof ButtonComponent) {
51
+ this.abpSubmit.loading = value;
52
+ }
53
+ this._busy = value;
54
+ }
55
+ get modalWindowRef() {
56
+ return document.querySelector(`ngb-modal-window.${this.modalIdentifier}`);
57
+ }
58
+ get isFormDirty() {
59
+ return Boolean(this.modalWindowRef?.querySelector('.ng-dirty'));
60
+ }
61
+ ngOnInit() {
62
+ this.modalRefService.register(this);
63
+ }
64
+ dismiss(mode) {
65
+ switch (mode) {
66
+ case 'hard':
67
+ this.visible = false;
68
+ break;
69
+ case 'soft':
70
+ this.close();
71
+ break;
72
+ default:
73
+ break;
74
+ }
75
+ }
76
+ initToggleStream() {
77
+ this.subscription.addOne(this.toggle$.pipe(debounceTime(0), distinctUntilChanged()), value => this.toggle(value));
78
+ }
79
+ toggle(value) {
80
+ this._visible = value;
81
+ this.visibleChange.emit(value);
82
+ if (!value) {
83
+ this.modalRef?.dismiss();
84
+ this.disappear.emit();
85
+ this.destroy$.next();
86
+ return;
87
+ }
88
+ setTimeout(() => this.listen(), 0);
89
+ this.modalRef = this.modal.open(this.modalContent, {
90
+ size: 'md',
91
+ centered: false,
92
+ keyboard: false,
93
+ scrollable: true,
94
+ beforeDismiss: () => {
95
+ if (!this.visible)
96
+ return true;
97
+ this.close();
98
+ return !this.visible;
99
+ },
100
+ ...this.options,
101
+ windowClass: `${this.options.windowClass || ''} ${this.modalIdentifier}`,
102
+ });
103
+ this.appear.emit();
104
+ }
105
+ ngOnDestroy() {
106
+ this.modalRefService.unregister(this);
107
+ this.toggle(false);
108
+ this.destroy$.next();
109
+ }
110
+ close() {
111
+ if (this.busy)
112
+ return;
113
+ if (this.isFormDirty && !this.suppressUnsavedChangesWarning) {
114
+ if (this.isConfirmationOpen)
115
+ return;
116
+ this.isConfirmationOpen = true;
117
+ this.confirmationService
118
+ .warn('AbpUi::AreYouSureYouWantToCancelEditingWarningMessage', 'AbpUi::AreYouSure', { dismissible: false })
119
+ .subscribe((status) => {
120
+ this.isConfirmationOpen = false;
121
+ if (status === Confirmation.Status.confirm) {
122
+ this.visible = false;
123
+ }
124
+ });
125
+ }
126
+ else {
127
+ this.visible = false;
128
+ }
129
+ }
130
+ listen() {
131
+ if (this.modalWindowRef) {
132
+ fromEvent(this.modalWindowRef, 'keyup')
133
+ .pipe(takeUntil(this.destroy$), debounceTime(150), filter((key) => key && key.key === 'Escape'))
134
+ .subscribe(() => this.close());
135
+ }
136
+ fromEvent(window, 'beforeunload')
137
+ .pipe(takeUntil(this.destroy$))
138
+ .subscribe(event => {
139
+ // TODO: check this
140
+ if (!this.isFormDirty || this.suppressUnsavedChangesWarning) {
141
+ event.preventDefault();
142
+ }
143
+ });
144
+ this.init.emit();
145
+ }
146
+ }
147
+ ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ModalComponent, deps: [{ token: i1.ConfirmationService }, { token: i2.SubscriptionService }, { token: SUPPRESS_UNSAVED_CHANGES_WARNING, optional: true }, { token: i3.NgbModal }, { token: i4.ModalRefService }], target: i0.ɵɵFactoryTarget.Component });
148
+ ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.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\">\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"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ModalComponent, decorators: [{
150
+ type: Component,
151
+ 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\">\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"] }]
152
+ }], ctorParameters: function () { return [{ type: i1.ConfirmationService }, { type: i2.SubscriptionService }, { type: undefined, decorators: [{
153
+ type: Optional
154
+ }, {
155
+ type: Inject,
156
+ args: [SUPPRESS_UNSAVED_CHANGES_WARNING]
157
+ }] }, { type: i3.NgbModal }, { type: i4.ModalRefService }]; }, propDecorators: { visible: [{
158
+ type: Input
159
+ }], busy: [{
160
+ type: Input
161
+ }], options: [{
162
+ type: Input
163
+ }], suppressUnsavedChangesWarning: [{
164
+ type: Input
165
+ }], modalContent: [{
166
+ type: ViewChild,
167
+ args: ['modalContent']
168
+ }], abpHeader: [{
169
+ type: ContentChild,
170
+ args: ['abpHeader', { static: false }]
171
+ }], abpBody: [{
172
+ type: ContentChild,
173
+ args: ['abpBody', { static: false }]
174
+ }], abpFooter: [{
175
+ type: ContentChild,
176
+ args: ['abpFooter', { static: false }]
177
+ }], abpSubmit: [{
178
+ type: ContentChild,
179
+ args: [ButtonComponent, { static: false, read: ButtonComponent }]
180
+ }], visibleChange: [{
181
+ type: Output
182
+ }], init: [{
183
+ type: Output
184
+ }], appear: [{
185
+ type: Output
186
+ }], disappear: [{
187
+ type: Output
188
+ }] } });
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL21vZGFsL21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQWdDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQXNDLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBVTFGLE1BQU0sT0FBTyxjQUFjO0lBbUV6QixZQUNVLG1CQUF3QyxFQUN4QyxZQUFpQyxFQUdqQyxr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RVksU0FBUztzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YnNjcmlwdGlvblNlcnZpY2UsIHV1aWQgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JNb2RhbE9wdGlvbnMsIE5nYk1vZGFsUmVmIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9jb25maXJtYXRpb24nO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlybWF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTVVBQUkVTU19VTlNBVkVEX0NIQU5HRVNfV0FSTklORyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zdXBwcmVzcy11bnNhdmVkLWNoYW5nZXMtd2FybmluZy50b2tlbic7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlzbWlzc2FibGVNb2RhbCwgTW9kYWxEaXNtaXNzTW9kZSwgTW9kYWxSZWZTZXJ2aWNlIH0gZnJvbSAnLi9tb2RhbC1yZWYuc2VydmljZSc7XHJcblxyXG5leHBvcnQgdHlwZSBNb2RhbFNpemUgPSAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhYnAtbW9kYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtTdWJzY3JpcHRpb25TZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIERpc21pc3NhYmxlTW9kYWwge1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcclxuICB9XHJcbiAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykgcmV0dXJuO1xyXG4gICAgdGhpcy50b2dnbGUkLm5leHQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgYnVzeSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9idXN5O1xyXG4gIH1cclxuICBzZXQgYnVzeSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuYWJwU3VibWl0ICYmIHRoaXMuYWJwU3VibWl0IGluc3RhbmNlb2YgQnV0dG9uQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuYWJwU3VibWl0LmxvYWRpbmcgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9idXN5ID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBvcHRpb25zOiBOZ2JNb2RhbE9wdGlvbnMgPSB7fTtcclxuXHJcbiAgQElucHV0KCkgc3VwcHJlc3NVbnNhdmVkQ2hhbmdlc1dhcm5pbmcgPSB0aGlzLnN1cHByZXNzVW5zYXZlZENoYW5nZXNXYXJuaW5nVG9rZW47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ21vZGFsQ29udGVudCcpIG1vZGFsQ29udGVudD86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoJ2FicEhlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBhYnBIZWFkZXI/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBAQ29udGVudENoaWxkKCdhYnBCb2R5JywgeyBzdGF0aWM6IGZhbHNlIH0pIGFicEJvZHk/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBAQ29udGVudENoaWxkKCdhYnBGb290ZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgYWJwRm9vdGVyPzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChCdXR0b25Db21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogQnV0dG9uQ29tcG9uZW50IH0pXHJcbiAgYWJwU3VibWl0PzogQnV0dG9uQ29tcG9uZW50O1xyXG5cclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGluaXQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSByZWFkb25seSBhcHBlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSByZWFkb25seSBkaXNhcHBlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIF92aXNpYmxlID0gZmFsc2U7XHJcblxyXG4gIF9idXN5ID0gZmFsc2U7XHJcblxyXG4gIG1vZGFsUmVmITogTmdiTW9kYWxSZWY7XHJcblxyXG4gIGlzQ29uZmlybWF0aW9uT3BlbiA9IGZhbHNlO1xyXG5cclxuICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIG1vZGFsSWRlbnRpZmllciA9IGBtb2RhbC0ke3V1aWQoKX1gO1xyXG5cclxuICBwcml2YXRlIHRvZ2dsZSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICBnZXQgbW9kYWxXaW5kb3dSZWYoKSB7XHJcbiAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbmdiLW1vZGFsLXdpbmRvdy4ke3RoaXMubW9kYWxJZGVudGlmaWVyfWApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzRm9ybURpcnR5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5tb2RhbFdpbmRvd1JlZj8ucXVlcnlTZWxlY3RvcignLm5nLWRpcnR5JykpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpXHJcbiAgICBASW5qZWN0KFNVUFBSRVNTX1VOU0FWRURfQ0hBTkdFU19XQVJOSU5HKVxyXG4gICAgcHJpdmF0ZSBzdXBwcmVzc1Vuc2F2ZWRDaGFuZ2VzV2FybmluZ1Rva2VuOiBib29sZWFuLFxyXG4gICAgcHJpdmF0ZSBtb2RhbDogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIG1vZGFsUmVmU2VydmljZTogTW9kYWxSZWZTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5pbml0VG9nZ2xlU3RyZWFtKCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tb2RhbFJlZlNlcnZpY2UucmVnaXN0ZXIodGhpcyk7XHJcbiAgfVxyXG5cclxuICBkaXNtaXNzKG1vZGU6IE1vZGFsRGlzbWlzc01vZGUpIHtcclxuICAgIHN3aXRjaCAobW9kZSkge1xyXG4gICAgICBjYXNlICdoYXJkJzpcclxuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnc29mdCc6XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0VG9nZ2xlU3RyZWFtKCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkT25lKHRoaXMudG9nZ2xlJC5waXBlKGRlYm91bmNlVGltZSgwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSksIHZhbHVlID0+XHJcbiAgICAgIHRoaXMudG9nZ2xlKHZhbHVlKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fdmlzaWJsZSA9IHZhbHVlO1xyXG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG5cclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgdGhpcy5tb2RhbFJlZj8uZGlzbWlzcygpO1xyXG4gICAgICB0aGlzLmRpc2FwcGVhci5lbWl0KCk7XHJcbiAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmxpc3RlbigpLCAwKTtcclxuICAgIHRoaXMubW9kYWxSZWYgPSB0aGlzLm1vZGFsLm9wZW4odGhpcy5tb2RhbENvbnRlbnQsIHtcclxuICAgICAgc2l6ZTogJ21kJyxcclxuICAgICAgY2VudGVyZWQ6IGZhbHNlLFxyXG4gICAgICBrZXlib2FyZDogZmFsc2UsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICAgIGJlZm9yZURpc21pc3M6ICgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICByZXR1cm4gIXRoaXMudmlzaWJsZTtcclxuICAgICAgfSxcclxuICAgICAgLi4udGhpcy5vcHRpb25zLFxyXG4gICAgICB3aW5kb3dDbGFzczogYCR7dGhpcy5vcHRpb25zLndpbmRvd0NsYXNzIHx8ICcnfSAke3RoaXMubW9kYWxJZGVudGlmaWVyfWAsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFwcGVhci5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kYWxSZWZTZXJ2aWNlLnVucmVnaXN0ZXIodGhpcyk7XHJcbiAgICB0aGlzLnRvZ2dsZShmYWxzZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgaWYgKHRoaXMuYnVzeSkgcmV0dXJuO1xyXG5cclxuICAgIGlmICh0aGlzLmlzRm9ybURpcnR5ICYmICF0aGlzLnN1cHByZXNzVW5zYXZlZENoYW5nZXNXYXJuaW5nKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzQ29uZmlybWF0aW9uT3BlbikgcmV0dXJuO1xyXG5cclxuICAgICAgdGhpcy5pc0NvbmZpcm1hdGlvbk9wZW4gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2VcclxuICAgICAgICAud2FybihcclxuICAgICAgICAgICdBYnBVaTo6QXJlWW91U3VyZVlvdVdhbnRUb0NhbmNlbEVkaXRpbmdXYXJuaW5nTWVzc2FnZScsXHJcbiAgICAgICAgICAnQWJwVWk6OkFyZVlvdVN1cmUnLFxyXG4gICAgICAgICAgeyBkaXNtaXNzaWJsZTogZmFsc2UgfSxcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBDb25maXJtYXRpb24uU3RhdHVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzQ29uZmlybWF0aW9uT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gQ29uZmlybWF0aW9uLlN0YXR1cy5jb25maXJtKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsaXN0ZW4oKSB7XHJcbiAgICBpZiAodGhpcy5tb2RhbFdpbmRvd1JlZikge1xyXG4gICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5tb2RhbFdpbmRvd1JlZiwgJ2tleXVwJylcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICAgIGRlYm91bmNlVGltZSgxNTApLFxyXG4gICAgICAgICAgZmlsdGVyKChrZXk6IEtleWJvYXJkRXZlbnQpID0+IGtleSAmJiBrZXkua2V5ID09PSAnRXNjYXBlJyksXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBmcm9tRXZlbnQod2luZG93LCAnYmVmb3JldW5sb2FkJylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAvLyBUT0RPOiBjaGVjayB0aGlzXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRm9ybURpcnR5IHx8IHRoaXMuc3VwcHJlc3NVbnNhdmVkQ2hhbmdlc1dhcm5pbmcpIHtcclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmluaXQuZW1pdCgpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcblxyXG48bmctdGVtcGxhdGUgI21vZGFsQ29udGVudCBsZXQtbW9kYWw+XHJcbiAgPGRpdiAqbmdJZj1cImFicEhlYWRlclwiIGlkPVwiYWJwLW1vZGFsLWhlYWRlclwiIGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWJwSGVhZGVyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICDigItcclxuICAgIDxidXR0b25cclxuICAgICAgaWQ9XCJhYnAtbW9kYWwtY2xvc2UtYnV0dG9uXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNsYXNzPVwiYnRuLXNtIGJ0bi1jbG9zZVwiXHJcbiAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcbiAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIlxyXG4gICAgPjwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJhYnBCb2R5XCIgaWQ9XCJhYnAtbW9kYWwtYm9keVwiIGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFicEJvZHlcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiYWJwRm9vdGVyXCIgaWQ9XCJhYnAtbW9kYWwtZm9vdGVyXCIgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhYnBGb290ZXJcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -0,0 +1,55 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@abp/ng.core";
5
+ export class ToastComponent {
6
+ constructor() {
7
+ this.remove = new EventEmitter();
8
+ }
9
+ get severityClass() {
10
+ if (!this.toast || !this.toast.severity)
11
+ return '';
12
+ return `abp-toast-${this.toast.severity}`;
13
+ }
14
+ get iconClass() {
15
+ switch (this.toast.severity) {
16
+ case 'success':
17
+ return 'fa-check-circle';
18
+ case 'info':
19
+ return 'fa-info-circle';
20
+ case 'warning':
21
+ return 'fa-exclamation-triangle';
22
+ case 'error':
23
+ return 'fa-times-circle';
24
+ default:
25
+ return 'fa-exclamation-circle';
26
+ }
27
+ }
28
+ ngOnInit() {
29
+ const { sticky, life } = this.toast.options || {};
30
+ if (sticky)
31
+ return;
32
+ const timeout = life || 5000;
33
+ setTimeout(() => {
34
+ this.close();
35
+ }, timeout);
36
+ }
37
+ close() {
38
+ this.remove.emit(this.toast.options?.id);
39
+ }
40
+ tap() {
41
+ if (this.toast.options?.tapToDismiss)
42
+ this.close();
43
+ }
44
+ }
45
+ ToastComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
46
+ ToastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.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\"></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;grid-gap:10px;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}.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"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "abpLocalization": i2.LocalizationPipe } });
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ToastComponent, decorators: [{
48
+ type: Component,
49
+ 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;grid-gap:10px;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}.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"] }]
50
+ }], propDecorators: { toast: [{
51
+ type: Input
52
+ }], remove: [{
53
+ type: Output
54
+ }] } });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy90b2FzdC90b2FzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3RvYXN0L3RvYXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFPL0UsTUFBTSxPQUFPLGNBQWM7SUFMM0I7UUFTWSxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQXVDL0M7SUFyQ0MsSUFBSSxhQUFhO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNuRCxPQUFPLGFBQWEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUMzQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxpQkFBaUIsQ0FBQztZQUMzQixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxnQkFBZ0IsQ0FBQztZQUMxQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyx5QkFBeUIsQ0FBQztZQUNuQyxLQUFLLE9BQU87Z0JBQ1YsT0FBTyxpQkFBaUIsQ0FBQztZQUMzQjtnQkFDRSxPQUFPLHVCQUF1QixDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUVsRCxJQUFJLE1BQU07WUFBRSxPQUFPO1FBQ25CLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUM7UUFDN0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELEdBQUc7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFlBQVk7WUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckQsQ0FBQzs7MkdBMUNVLGNBQWM7K0ZBQWQsY0FBYyw0R0NQM0IsMnJCQWlCQTsyRkRWYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFdBQVc7OEJBTXJCLEtBQUs7c0JBREosS0FBSztnQkFHSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRvYXN0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvdG9hc3Rlcic7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWJwLXRvYXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdG9hc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RvYXN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2FzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KClcclxuICB0b2FzdCE6IFRvYXN0ZXIuVG9hc3Q7XHJcblxyXG4gIEBPdXRwdXQoKSByZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgZ2V0IHNldmVyaXR5Q2xhc3MoKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy50b2FzdCB8fCAhdGhpcy50b2FzdC5zZXZlcml0eSkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIGBhYnAtdG9hc3QtJHt0aGlzLnRvYXN0LnNldmVyaXR5fWA7XHJcbiAgfVxyXG5cclxuICBnZXQgaWNvbkNsYXNzKCk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHRoaXMudG9hc3Quc2V2ZXJpdHkpIHtcclxuICAgICAgY2FzZSAnc3VjY2Vzcyc6XHJcbiAgICAgICAgcmV0dXJuICdmYS1jaGVjay1jaXJjbGUnO1xyXG4gICAgICBjYXNlICdpbmZvJzpcclxuICAgICAgICByZXR1cm4gJ2ZhLWluZm8tY2lyY2xlJztcclxuICAgICAgY2FzZSAnd2FybmluZyc6XHJcbiAgICAgICAgcmV0dXJuICdmYS1leGNsYW1hdGlvbi10cmlhbmdsZSc7XHJcbiAgICAgIGNhc2UgJ2Vycm9yJzpcclxuICAgICAgICByZXR1cm4gJ2ZhLXRpbWVzLWNpcmNsZSc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICdmYS1leGNsYW1hdGlvbi1jaXJjbGUnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zdCB7IHN0aWNreSwgbGlmZSB9ID0gdGhpcy50b2FzdC5vcHRpb25zIHx8IHt9O1xyXG5cclxuICAgIGlmIChzdGlja3kpIHJldHVybjtcclxuICAgIGNvbnN0IHRpbWVvdXQgPSBsaWZlIHx8IDUwMDA7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfSwgdGltZW91dCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMucmVtb3ZlLmVtaXQodGhpcy50b2FzdC5vcHRpb25zPy5pZCk7XHJcbiAgfVxyXG5cclxuICB0YXAoKSB7XHJcbiAgICBpZiAodGhpcy50b2FzdC5vcHRpb25zPy50YXBUb0Rpc21pc3MpIHRoaXMuY2xvc2UoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImFicC10b2FzdFwiIFtuZ0NsYXNzXT1cInNldmVyaXR5Q2xhc3NcIiAoY2xpY2spPVwidGFwKClcIj5cclxuICA8ZGl2IGNsYXNzPVwiYWJwLXRvYXN0LWljb25cIj5cclxuICAgIDxpIGNsYXNzPVwiZmEgaWNvblwiIFtuZ0NsYXNzXT1cImljb25DbGFzc1wiPjwvaT5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiYWJwLXRvYXN0LWNvbnRlbnRcIj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJhYnAtdG9hc3QtY2xvc2UtYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlKClcIiAqbmdJZj1cInRvYXN0Lm9wdGlvbnM/LmNsb3NhYmxlXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJhYnAtdG9hc3QtdGl0bGVcIj5cclxuICAgICAge3sgdG9hc3QudGl0bGUgfCBhYnBMb2NhbGl6YXRpb246IHRvYXN0Lm9wdGlvbnM/LnRpdGxlTG9jYWxpemF0aW9uUGFyYW1zIH19XHJcbiAgICA8L2Rpdj5cclxuICAgIDxwXHJcbiAgICAgIGNsYXNzPVwiYWJwLXRvYXN0LW1lc3NhZ2VcIlxyXG4gICAgICBbaW5uZXJIVE1MXT1cInRvYXN0Lm1lc3NhZ2UgfCBhYnBMb2NhbGl6YXRpb246IHRvYXN0Lm9wdGlvbnM/Lm1lc3NhZ2VMb2NhbGl6YXRpb25QYXJhbXNcIlxyXG4gICAgPjwvcD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -0,0 +1,43 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { toastInOut } from '../../animations/toast.animations';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../toast/toast.component";
5
+ import * as i2 from "@angular/common";
6
+ export class ToastContainerComponent {
7
+ constructor() {
8
+ this.toasts = [];
9
+ this.right = '30px';
10
+ this.bottom = '30px';
11
+ }
12
+ ngOnInit() {
13
+ this.toasts$.subscribe(toasts => {
14
+ this.toasts = this.toastKey
15
+ ? toasts.filter(t => {
16
+ return t.options && t.options.containerKey !== this.toastKey;
17
+ })
18
+ : toasts;
19
+ });
20
+ }
21
+ trackByFunc(index, toast) {
22
+ if (!toast)
23
+ return null;
24
+ return toast.options?.id;
25
+ }
26
+ }
27
+ ToastContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ToastContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28
+ ToastContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ToastContainerComponent, selector: "abp-toast-container", inputs: { top: "top", right: "right", bottom: "bottom", left: "left", toastKey: "toastKey" }, 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}\n"], components: [{ type: i1.ToastComponent, selector: "abp-toast", inputs: ["toast"], outputs: ["remove"] }], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [toastInOut] });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ToastContainerComponent, decorators: [{
30
+ type: Component,
31
+ 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}\n"] }]
32
+ }], propDecorators: { top: [{
33
+ type: Input
34
+ }], right: [{
35
+ type: Input
36
+ }], bottom: [{
37
+ type: Input
38
+ }], left: [{
39
+ type: Input
40
+ }], toastKey: [{
41
+ type: Input
42
+ }] } });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvdG9hc3QtY29udGFpbmVyL3RvYXN0LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3RvYXN0LWNvbnRhaW5lci90b2FzdC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBUy9ELE1BQU0sT0FBTyx1QkFBdUI7SUFOcEM7UUFXRSxXQUFNLEdBQUcsRUFBcUIsQ0FBQztRQU0vQixVQUFLLEdBQUcsTUFBTSxDQUFDO1FBR2YsV0FBTSxHQUFHLE1BQU0sQ0FBQztLQXNCakI7SUFkQyxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUTtnQkFDekIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ2hCLE9BQU8sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUMvRCxDQUFDLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhLEVBQUUsS0FBb0I7UUFDN0MsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4QixPQUFPLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQzNCLENBQUM7O29IQW5DVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qix5SkNYcEMsNmNBZUEsOGRETmMsQ0FBQyxVQUFVLENBQUM7MkZBRWIsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLHFCQUFxQixjQUduQixDQUFDLFVBQVUsQ0FBQzs4QkFVeEIsR0FBRztzQkFERixLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRvYXN0SW5PdXQgfSBmcm9tICcuLi8uLi9hbmltYXRpb25zL3RvYXN0LmFuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBUb2FzdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RvYXN0ZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhYnAtdG9hc3QtY29udGFpbmVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdG9hc3QtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90b2FzdC1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbdG9hc3RJbk91dF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2FzdENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdG9hc3RzJCE6IFJlcGxheVN1YmplY3Q8VG9hc3Rlci5Ub2FzdFtdPjtcclxuXHJcbiAgcmVtb3ZlITogKHRvYXN0SWQ6IG51bWJlcikgPT4gdm9pZDtcclxuXHJcbiAgdG9hc3RzID0gW10gYXMgVG9hc3Rlci5Ub2FzdFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRvcD86IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICByaWdodCA9ICczMHB4JztcclxuXHJcbiAgQElucHV0KClcclxuICBib3R0b20gPSAnMzBweCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbGVmdD86IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICB0b2FzdEtleT86IHN0cmluZztcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRvYXN0cyQuc3Vic2NyaWJlKHRvYXN0cyA9PiB7XHJcbiAgICAgIHRoaXMudG9hc3RzID0gdGhpcy50b2FzdEtleVxyXG4gICAgICAgID8gdG9hc3RzLmZpbHRlcih0ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHQub3B0aW9ucyAmJiB0Lm9wdGlvbnMuY29udGFpbmVyS2V5ICE9PSB0aGlzLnRvYXN0S2V5O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICA6IHRvYXN0cztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZ1bmMoaW5kZXg6IG51bWJlciwgdG9hc3Q6IFRvYXN0ZXIuVG9hc3QpIHtcclxuICAgIGlmICghdG9hc3QpIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIHRvYXN0Lm9wdGlvbnM/LmlkO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJhYnAtdG9hc3QtY29udGFpbmVyXCJcclxuICBbc3R5bGUudG9wXT1cInRvcCB8fCAnYXV0bydcIlxyXG4gIFtzdHlsZS5yaWdodF09XCJyaWdodCB8fCAnYXV0bydcIlxyXG4gIFtzdHlsZS5ib3R0b21dPVwiYm90dG9tIHx8ICdhdXRvJ1wiXHJcbiAgW3N0eWxlLmxlZnRdPVwibGVmdCB8fCAnYXV0bydcIlxyXG4gIFtzdHlsZS5kaXNwbGF5XT1cInRvYXN0cy5sZW5ndGggPyAnZmxleCcgOiAnbm9uZSdcIlxyXG4gIFtAdG9hc3RJbk91dF09XCJ0b2FzdHMubGVuZ3RoXCJcclxuPlxyXG4gIDxhYnAtdG9hc3RcclxuICAgIFt0b2FzdF09XCJ0b2FzdFwiXHJcbiAgICAqbmdGb3I9XCJsZXQgdG9hc3Qgb2YgdG9hc3RzOyB0cmFja0J5OiB0cmFja0J5RnVuY1wiXHJcbiAgICAocmVtb3ZlKT1cInJlbW92ZSgkZXZlbnQpXCJcclxuICA+PC9hYnAtdG9hc3Q+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,182 @@
1
+ export default `
2
+ .is-invalid .form-control {
3
+ border-color: #dc3545;
4
+ border-style: solid !important;
5
+ padding-right: calc(1.5em + .75rem);
6
+ background-image: url(data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e);
7
+ background-repeat: no-repeat;
8
+ background-position: right calc(.375em + .1875rem) center;
9
+ background-size: calc(.75em + .375rem) calc(.75em + .375rem);
10
+ }
11
+
12
+ .is-invalid .invalid-feedback,
13
+ .is-invalid + * .invalid-feedback {
14
+ display: block;
15
+ }
16
+
17
+ .data-tables-filter {
18
+ text-align: right;
19
+ }
20
+
21
+ [dir=rtl] .data-tables-filter {
22
+ text-align: left;
23
+ }
24
+
25
+ .pointer {
26
+ cursor: pointer;
27
+ }
28
+
29
+ .navbar .dropdown-submenu a::after {
30
+ transform: rotate(-90deg);
31
+ position: absolute;
32
+ right: 16px;
33
+ top: 18px;
34
+ }
35
+
36
+ .navbar .dropdown-menu {
37
+ min-width: 215px;
38
+ }
39
+
40
+ .datatable-scroll {
41
+ margin-bottom: 5px !important;
42
+ width: unset !important;
43
+ }
44
+
45
+ .ui-table-scrollable-body::-webkit-scrollbar {
46
+ height: 5px !important;
47
+ width: 5px !important;
48
+ }
49
+
50
+ .ui-table-scrollable-body::-webkit-scrollbar-track {
51
+ background: #ddd;
52
+ }
53
+
54
+ .ui-table-scrollable-body::-webkit-scrollbar-thumb {
55
+ background: #8a8686;
56
+ }
57
+
58
+ .abp-ellipsis-inline {
59
+ display: inline-block;
60
+ overflow: hidden;
61
+ text-overflow: ellipsis;
62
+ white-space: nowrap;
63
+ }
64
+
65
+ .abp-ellipsis {
66
+ overflow: hidden !important;
67
+ text-overflow: ellipsis;
68
+ white-space: nowrap;
69
+ }
70
+
71
+ .ui-widget-overlay {
72
+ z-index: 1000;
73
+ }
74
+
75
+ .color-white {
76
+ color: #FFF !important;
77
+ }
78
+
79
+ .custom-checkbox > label {
80
+ cursor: pointer;
81
+ }
82
+
83
+ /* <animations */
84
+
85
+ .fade-in-top {
86
+ animation: fadeInTop 0.2s ease-in-out;
87
+ }
88
+
89
+ .fade-out-top {
90
+ animation: fadeOutTop 0.2s ease-in-out;
91
+ }
92
+
93
+ .abp-collapsed-height {
94
+ -moz-transition: max-height linear 0.35s;
95
+ -ms-transition: max-height linear 0.35s;
96
+ -o-transition: max-height linear 0.35s;
97
+ -webkit-transition: max-height linear 0.35s;
98
+ overflow:hidden;
99
+ transition:max-height 0.35s linear;
100
+ height:auto;
101
+ max-height: 0;
102
+ }
103
+
104
+ .abp-mh-25 {
105
+ max-height: 25vh;
106
+ }
107
+
108
+ .abp-mh-50 {
109
+ transition:max-height 0.65s linear;
110
+ max-height: 50vh;
111
+ }
112
+
113
+ .abp-mh-75 {
114
+ transition:max-height 0.85s linear;
115
+ max-height: 75vh;
116
+ }
117
+
118
+ .abp-mh-100 {
119
+ transition:max-height 1s linear;
120
+ max-height: 100vh;
121
+ }
122
+
123
+ [class^="sorting"] {
124
+ opacity: .3;
125
+ cursor: pointer;
126
+ }
127
+ [class^="sorting"]:before {
128
+ right: 0.5rem;
129
+ content: "↑";
130
+ }
131
+ [class^="sorting"]:after {
132
+ right: 0.5rem;
133
+ content: "↓";
134
+ }
135
+
136
+ .sorting_desc {
137
+ opacity: 1;
138
+ }
139
+ .sorting_desc:before {
140
+ opacity: .3;
141
+ }
142
+
143
+ .sorting_asc {
144
+ opacity: 1;
145
+ }
146
+ .sorting_asc:after {
147
+ opacity: .3;
148
+ }
149
+ .ngx-datatable.material {
150
+ box-shadow: none;
151
+ }
152
+ ngb-typeahead-window, ngb-typeahead-window.dropdown-menu {
153
+ max-height: 25em;
154
+ overflow-y: scroll !important;
155
+ z-index: 1050;
156
+ }
157
+
158
+ @keyframes fadeInTop {
159
+ from {
160
+ transform: translateY(-5px);
161
+ opacity: 0;
162
+ }
163
+
164
+ to {
165
+ transform: translateY(0px);
166
+ opacity: 1;
167
+ }
168
+ }
169
+
170
+ @keyframes fadeOutTop {
171
+ to {
172
+ transform: translateY(-5px);
173
+ opacity: 0;
174
+ }
175
+ }
176
+
177
+ /* </animations */
178
+ .ngb-dp-body {
179
+ z-index: 1055 !important;
180
+ }
181
+ `;
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUtc2hhcmVkL3NyYy9saWIvY29uc3RhbnRzL3N0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvTGQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGBcclxuLmlzLWludmFsaWQgLmZvcm0tY29udHJvbCB7XHJcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1O1xyXG4gIGJvcmRlci1zdHlsZTogc29saWQgIWltcG9ydGFudDtcclxuICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDEuNWVtICsgLjc1cmVtKTtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMicgaGVpZ2h0PScxMicgZmlsbD0nbm9uZScgc3Ryb2tlPSclMjNkYzM1NDUnIHZpZXdCb3g9JzAgMCAxMiAxMiclM2UlM2NjaXJjbGUgY3g9JzYnIGN5PSc2JyByPSc0LjUnLyUzZSUzY3BhdGggc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgZD0nTTUuOCAzLjZoLjRMNiA2LjV6Jy8lM2UlM2NjaXJjbGUgY3g9JzYnIGN5PSc4LjInIHI9Jy42JyBmaWxsPSclMjNkYzM1NDUnIHN0cm9rZT0nbm9uZScvJTNlJTNjL3N2ZyUzZSk7XHJcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCBjYWxjKC4zNzVlbSArIC4xODc1cmVtKSBjZW50ZXI7XHJcbiAgYmFja2dyb3VuZC1zaXplOiBjYWxjKC43NWVtICsgLjM3NXJlbSkgY2FsYyguNzVlbSArIC4zNzVyZW0pO1xyXG59XHJcblxyXG4uaXMtaW52YWxpZCAuaW52YWxpZC1mZWVkYmFjayxcclxuLmlzLWludmFsaWQgKyAqIC5pbnZhbGlkLWZlZWRiYWNrIHtcclxuICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuLmRhdGEtdGFibGVzLWZpbHRlciB7XHJcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbn1cclxuXHJcbltkaXI9cnRsXSAuZGF0YS10YWJsZXMtZmlsdGVyIHtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG59XHJcblxyXG4ucG9pbnRlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4ubmF2YmFyIC5kcm9wZG93bi1zdWJtZW51IGE6OmFmdGVyIHtcclxuICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICByaWdodDogMTZweDtcclxuICB0b3A6IDE4cHg7XHJcbn1cclxuXHJcbi5uYXZiYXIgLmRyb3Bkb3duLW1lbnUge1xyXG4gIG1pbi13aWR0aDogMjE1cHg7XHJcbn1cclxuXHJcbi5kYXRhdGFibGUtc2Nyb2xsIHtcclxuICBtYXJnaW4tYm90dG9tOiA1cHggIWltcG9ydGFudDtcclxuICB3aWR0aDogdW5zZXQgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnVpLXRhYmxlLXNjcm9sbGFibGUtYm9keTo6LXdlYmtpdC1zY3JvbGxiYXIge1xyXG4gIGhlaWdodDogNXB4ICFpbXBvcnRhbnQ7XHJcbiAgd2lkdGg6IDVweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4udWktdGFibGUtc2Nyb2xsYWJsZS1ib2R5Ojotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XHJcbiAgYmFja2dyb3VuZDogI2RkZDtcclxufVxyXG5cclxuLnVpLXRhYmxlLXNjcm9sbGFibGUtYm9keTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xyXG4gIGJhY2tncm91bmQ6ICM4YTg2ODY7XHJcbn1cclxuXHJcbi5hYnAtZWxsaXBzaXMtaW5saW5lIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcblxyXG4uYWJwLWVsbGlwc2lzIHtcclxuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxufVxyXG5cclxuLnVpLXdpZGdldC1vdmVybGF5IHtcclxuICB6LWluZGV4OiAxMDAwO1xyXG59XHJcblxyXG4uY29sb3Itd2hpdGUge1xyXG4gIGNvbG9yOiAjRkZGICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5jdXN0b20tY2hlY2tib3ggPiBsYWJlbCB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4vKiA8YW5pbWF0aW9ucyAqL1xyXG5cclxuLmZhZGUtaW4tdG9wIHtcclxuICBhbmltYXRpb246IGZhZGVJblRvcCAwLjJzIGVhc2UtaW4tb3V0O1xyXG59XHJcblxyXG4uZmFkZS1vdXQtdG9wIHtcclxuICBhbmltYXRpb246IGZhZGVPdXRUb3AgMC4ycyBlYXNlLWluLW91dDtcclxufVxyXG5cclxuLmFicC1jb2xsYXBzZWQtaGVpZ2h0IHtcclxuICAtbW96LXRyYW5zaXRpb246IG1heC1oZWlnaHQgbGluZWFyIDAuMzVzO1xyXG4gIC1tcy10cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IGxpbmVhciAwLjM1cztcclxuICAtby10cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IGxpbmVhciAwLjM1cztcclxuICAtd2Via2l0LXRyYW5zaXRpb246IG1heC1oZWlnaHQgbGluZWFyIDAuMzVzO1xyXG4gIG92ZXJmbG93OmhpZGRlbjtcclxuICB0cmFuc2l0aW9uOm1heC1oZWlnaHQgMC4zNXMgbGluZWFyO1xyXG4gIGhlaWdodDphdXRvO1xyXG4gIG1heC1oZWlnaHQ6IDA7XHJcbn1cclxuXHJcbi5hYnAtbWgtMjUge1xyXG4gIG1heC1oZWlnaHQ6IDI1dmg7XHJcbn1cclxuXHJcbi5hYnAtbWgtNTAge1xyXG4gIHRyYW5zaXRpb246bWF4LWhlaWdodCAwLjY1cyBsaW5lYXI7XHJcbiAgbWF4LWhlaWdodDogNTB2aDtcclxufVxyXG5cclxuLmFicC1taC03NSB7XHJcbiAgdHJhbnNpdGlvbjptYXgtaGVpZ2h0IDAuODVzIGxpbmVhcjtcclxuICBtYXgtaGVpZ2h0OiA3NXZoO1xyXG59XHJcblxyXG4uYWJwLW1oLTEwMCB7XHJcbiAgdHJhbnNpdGlvbjptYXgtaGVpZ2h0IDFzIGxpbmVhcjtcclxuICBtYXgtaGVpZ2h0OiAxMDB2aDtcclxufVxyXG5cclxuW2NsYXNzXj1cInNvcnRpbmdcIl0ge1xyXG4gIG9wYWNpdHk6IC4zO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5bY2xhc3NePVwic29ydGluZ1wiXTpiZWZvcmUge1xyXG4gIHJpZ2h0OiAwLjVyZW07XHJcbiAgY29udGVudDogXCLihpFcIjtcclxufVxyXG5bY2xhc3NePVwic29ydGluZ1wiXTphZnRlciB7XHJcbiAgcmlnaHQ6IDAuNXJlbTtcclxuICBjb250ZW50OiBcIuKGk1wiO1xyXG59XHJcblxyXG4uc29ydGluZ19kZXNjIHtcclxuICBvcGFjaXR5OiAxO1xyXG59XHJcbi5zb3J0aW5nX2Rlc2M6YmVmb3JlIHtcclxuICBvcGFjaXR5OiAuMztcclxufVxyXG5cclxuLnNvcnRpbmdfYXNjIHtcclxuICBvcGFjaXR5OiAxO1xyXG59XHJcbi5zb3J0aW5nX2FzYzphZnRlciB7XHJcbiAgb3BhY2l0eTogLjM7XHJcbn1cclxuLm5neC1kYXRhdGFibGUubWF0ZXJpYWwge1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxubmdiLXR5cGVhaGVhZC13aW5kb3csIG5nYi10eXBlYWhlYWQtd2luZG93LmRyb3Bkb3duLW1lbnUge1xyXG4gIG1heC1oZWlnaHQ6IDI1ZW07XHJcbiAgb3ZlcmZsb3cteTogc2Nyb2xsICFpbXBvcnRhbnQ7XHJcbiAgei1pbmRleDogMTA1MDtcclxufVxyXG5cclxuQGtleWZyYW1lcyBmYWRlSW5Ub3Age1xyXG4gIGZyb20ge1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpO1xyXG4gICAgb3BhY2l0eTogMDtcclxuICB9XHJcblxyXG4gIHRvIHtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xyXG4gICAgb3BhY2l0eTogMTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgZmFkZU91dFRvcCB7XHJcbiAgdG8ge1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpO1xyXG4gICAgb3BhY2l0eTogMDtcclxuICB9XHJcbn1cclxuXHJcbi8qIDwvYW5pbWF0aW9ucyAqL1xyXG4ubmdiLWRwLWJvZHkge1xyXG4gIHotaW5kZXg6IDEwNTUgIWltcG9ydGFudDtcclxufVxyXG5gO1xyXG4iXX0=
@@ -12,4 +12,4 @@ export const DEFAULT_VALIDATION_BLUEPRINTS = {
12
12
  required: 'AbpValidation::ThisFieldIsRequired.',
13
13
  url: 'AbpValidation::ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl',
14
14
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9zcmMvbGliL2NvbnN0YW50cy92YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHO0lBQzNDLFVBQVUsRUFBRSxzREFBc0Q7SUFDbEUsS0FBSyxFQUFFLGtEQUFrRDtJQUN6RCxPQUFPLEVBQUUscUNBQXFDO0lBQzlDLEdBQUcsRUFBRSxxRUFBcUU7SUFDMUUsU0FBUyxFQUNQLCtGQUErRjtJQUNqRyxHQUFHLEVBQUUscUVBQXFFO0lBQzFFLFNBQVMsRUFDUCwrRkFBK0Y7SUFDakcsT0FBTyxFQUFFLHFDQUFxQztJQUM5QyxnQkFBZ0IsRUFBRSwyREFBMkQ7SUFDN0UsS0FBSyxFQUFFLHFFQUFxRTtJQUM1RSxRQUFRLEVBQUUscUNBQXFDO0lBQy9DLEdBQUcsRUFBRSxvRUFBb0U7Q0FDMUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBERUZBVUxUX1ZBTElEQVRJT05fQkxVRVBSSU5UUyA9IHtcbiAgY3JlZGl0Q2FyZDogJ0FicFZhbGlkYXRpb246OlRoaXNGaWVsZElzTm90QVZhbGlkQ3JlZGl0Q2FyZE51bWJlci4nLFxuICBlbWFpbDogJ0FicFZhbGlkYXRpb246OlRoaXNGaWVsZElzTm90QVZhbGlkRW1haWxBZGRyZXNzLicsXG4gIGludmFsaWQ6ICdBYnBWYWxpZGF0aW9uOjpUaGlzRmllbGRJc05vdFZhbGlkLicsXG4gIG1heDogJ0FicFZhbGlkYXRpb246OlRoaXNGaWVsZE11c3RCZUJldHdlZW57MH1BbmR7MX1be3sgbWluIH19LHt7IG1heCB9fV0nLFxuICBtYXhsZW5ndGg6XG4gICAgJ0FicFZhbGlkYXRpb246OlRoaXNGaWVsZE11c3RCZUFTdHJpbmdPckFycmF5VHlwZVdpdGhBTWF4aW11bUxlbmd0aE9mezB9W3t7IHJlcXVpcmVkTGVuZ3RoIH19XScsXG4gIG1pbjogJ0FicFZhbGlkYXRpb246OlRoaXNGaWVsZE11c3RCZUJldHdlZW57MH1BbmR7MX1be3sgbWluIH19LHt7IG1heCB9fV0nLFxuICBtaW5sZW5ndGg6XG4gICAgJ0FicFZhbGlkYXRpb246OlRoaXNGaWVsZE11c3RCZUFTdHJpbmdPckFycmF5VHlwZVdpdGhBTWluaW11bUxlbmd0aE9mezB9W3t7IHJlcXVpcmVkTGVuZ3RoIH19XScsXG4gIG5nYkRhdGU6ICdBYnBWYWxpZGF0aW9uOjpUaGlzRmllbGRJc05vdFZhbGlkLicsXG4gIHBhc3N3b3JkTWlzbWF0Y2g6ICdBYnBJZGVudGl0eTo6Vm9sby5BYnAuSWRlbnRpdHk6UGFzc3dvcmRDb25maXJtYXRpb25GYWlsZWQnLFxuICByYW5nZTogJ0FicFZhbGlkYXRpb246OlRoaXNGaWVsZE11c3RCZUJldHdlZW57MH1BbmR7MX1be3sgbWluIH19LHt7IG1heCB9fV0nLFxuICByZXF1aXJlZDogJ0FicFZhbGlkYXRpb246OlRoaXNGaWVsZElzUmVxdWlyZWQuJyxcbiAgdXJsOiAnQWJwVmFsaWRhdGlvbjo6VGhpc0ZpZWxkSXNOb3RBVmFsaWRGdWxseVF1YWxpZmllZEh0dHBIdHRwc09yRnRwVXJsJyxcbn07XG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9zcmMvbGliL2NvbnN0YW50cy92YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHO0lBQzNDLFVBQVUsRUFBRSxzREFBc0Q7SUFDbEUsS0FBSyxFQUFFLGtEQUFrRDtJQUN6RCxPQUFPLEVBQUUscUNBQXFDO0lBQzlDLEdBQUcsRUFBRSxxRUFBcUU7SUFDMUUsU0FBUyxFQUNQLCtGQUErRjtJQUNqRyxHQUFHLEVBQUUscUVBQXFFO0lBQzFFLFNBQVMsRUFDUCwrRkFBK0Y7SUFDakcsT0FBTyxFQUFFLHFDQUFxQztJQUM5QyxnQkFBZ0IsRUFBRSwyREFBMkQ7SUFDN0UsS0FBSyxFQUFFLHFFQUFxRTtJQUM1RSxRQUFRLEVBQUUscUNBQXFDO0lBQy9DLEdBQUcsRUFBRSxvRUFBb0U7Q0FDMUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBERUZBVUxUX1ZBTElEQVRJT05fQkxVRVBSSU5UUyA9IHtcclxuICBjcmVkaXRDYXJkOiAnQWJwVmFsaWRhdGlvbjo6VGhpc0ZpZWxkSXNOb3RBVmFsaWRDcmVkaXRDYXJkTnVtYmVyLicsXHJcbiAgZW1haWw6ICdBYnBWYWxpZGF0aW9uOjpUaGlzRmllbGRJc05vdEFWYWxpZEVtYWlsQWRkcmVzcy4nLFxyXG4gIGludmFsaWQ6ICdBYnBWYWxpZGF0aW9uOjpUaGlzRmllbGRJc05vdFZhbGlkLicsXHJcbiAgbWF4OiAnQWJwVmFsaWRhdGlvbjo6VGhpc0ZpZWxkTXVzdEJlQmV0d2VlbnswfUFuZHsxfVt7eyBtaW4gfX0se3sgbWF4IH19XScsXHJcbiAgbWF4bGVuZ3RoOlxyXG4gICAgJ0FicFZhbGlkYXRpb246OlRoaXNGaWVsZE11c3RCZUFTdHJpbmdPckFycmF5VHlwZVdpdGhBTWF4aW11bUxlbmd0aE9mezB9W3t7IHJlcXVpcmVkTGVuZ3RoIH19XScsXHJcbiAgbWluOiAnQWJwVmFsaWRhdGlvbjo6VGhpc0ZpZWxkTXVzdEJlQmV0d2VlbnswfUFuZHsxfVt7eyBtaW4gfX0se3sgbWF4IH19XScsXHJcbiAgbWlubGVuZ3RoOlxyXG4gICAgJ0FicFZhbGlkYXRpb246OlRoaXNGaWVsZE11c3RCZUFTdHJpbmdPckFycmF5VHlwZVdpdGhBTWluaW11bUxlbmd0aE9mezB9W3t7IHJlcXVpcmVkTGVuZ3RoIH19XScsXHJcbiAgbmdiRGF0ZTogJ0FicFZhbGlkYXRpb246OlRoaXNGaWVsZElzTm90VmFsaWQuJyxcclxuICBwYXNzd29yZE1pc21hdGNoOiAnQWJwSWRlbnRpdHk6OlZvbG8uQWJwLklkZW50aXR5OlBhc3N3b3JkQ29uZmlybWF0aW9uRmFpbGVkJyxcclxuICByYW5nZTogJ0FicFZhbGlkYXRpb246OlRoaXNGaWVsZE11c3RCZUJldHdlZW57MH1BbmR7MX1be3sgbWluIH19LHt7IG1heCB9fV0nLFxyXG4gIHJlcXVpcmVkOiAnQWJwVmFsaWRhdGlvbjo6VGhpc0ZpZWxkSXNSZXF1aXJlZC4nLFxyXG4gIHVybDogJ0FicFZhbGlkYXRpb246OlRoaXNGaWVsZElzTm90QVZhbGlkRnVsbHlRdWFsaWZpZWRIdHRwSHR0cHNPckZ0cFVybCcsXHJcbn07XHJcbiJdfQ==