@abp/ng.theme.shared 5.0.0-rc.1 → 5.0.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 (207) hide show
  1. package/abp-ng.theme.shared.d.ts +5 -5
  2. package/bundles/abp-ng.theme.shared-extensions.umd.js +1749 -1748
  3. package/bundles/abp-ng.theme.shared-extensions.umd.js.map +1 -1
  4. package/bundles/abp-ng.theme.shared-testing.umd.js +41 -41
  5. package/bundles/abp-ng.theme.shared.umd.js +2316 -2316
  6. package/bundles/abp-ng.theme.shared.umd.js.map +1 -1
  7. package/esm2015/abp-ng.theme.shared.js +4 -4
  8. package/esm2015/extensions/abp-ng.theme.shared-extensions.js +4 -4
  9. package/esm2015/extensions/lib/adapters/date-time.adapter.js +33 -33
  10. package/esm2015/extensions/lib/adapters/date.adapter.js +40 -40
  11. package/esm2015/extensions/lib/adapters/time.adapter.js +35 -35
  12. package/esm2015/extensions/lib/components/abstract-actions/abstract-actions.component.js +24 -24
  13. package/esm2015/extensions/lib/components/date-time-picker/date-time-picker.component.js +73 -73
  14. package/esm2015/extensions/lib/components/extensible-form/extensible-form-prop.component.js +164 -164
  15. package/esm2015/extensions/lib/components/extensible-form/extensible-form.component.js +70 -70
  16. package/esm2015/extensions/lib/components/extensible-table/extensible-table.component.js +133 -133
  17. package/esm2015/extensions/lib/components/grid-actions/grid-actions.component.js +45 -45
  18. package/esm2015/extensions/lib/components/page-toolbar/page-toolbar.component.js +45 -45
  19. package/esm2015/extensions/lib/constants/extra-properties.js +1 -1
  20. package/esm2015/extensions/lib/directives/disabled.directive.js +28 -28
  21. package/esm2015/extensions/lib/directives/prop-data.directive.js +40 -40
  22. package/esm2015/extensions/lib/enums/props.enum.js +1 -1
  23. package/esm2015/extensions/lib/models/actions.js +45 -45
  24. package/esm2015/extensions/lib/models/entity-actions.js +28 -28
  25. package/esm2015/extensions/lib/models/entity-props.js +36 -34
  26. package/esm2015/extensions/lib/models/form-props.js +51 -51
  27. package/esm2015/extensions/lib/models/internal/object-extensions.js +1 -1
  28. package/esm2015/extensions/lib/models/object-extensions.js +2 -2
  29. package/esm2015/extensions/lib/models/props.js +49 -49
  30. package/esm2015/extensions/lib/models/toolbar-actions.js +40 -40
  31. package/esm2015/extensions/lib/services/extensions.service.js +23 -23
  32. package/esm2015/extensions/lib/tokens/extensions.token.js +6 -6
  33. package/esm2015/extensions/lib/ui-extensions.module.js +91 -91
  34. package/esm2015/extensions/lib/utils/actions.util.js +8 -8
  35. package/esm2015/extensions/lib/utils/enum.util.js +41 -41
  36. package/esm2015/extensions/lib/utils/factory.util.js +3 -3
  37. package/esm2015/extensions/lib/utils/form-props.util.js +50 -50
  38. package/esm2015/extensions/lib/utils/localization.util.js +12 -12
  39. package/esm2015/extensions/lib/utils/props.util.js +13 -13
  40. package/esm2015/extensions/lib/utils/state.util.js +123 -123
  41. package/esm2015/extensions/lib/utils/typeahead.util.js +51 -51
  42. package/esm2015/extensions/lib/utils/validation.util.js +10 -10
  43. package/esm2015/extensions/public-api.js +27 -27
  44. package/esm2015/lib/animations/bounce.animations.js +16 -16
  45. package/esm2015/lib/animations/collapse.animations.js +49 -49
  46. package/esm2015/lib/animations/fade.animations.js +37 -37
  47. package/esm2015/lib/animations/index.js +6 -6
  48. package/esm2015/lib/animations/modal.animations.js +10 -10
  49. package/esm2015/lib/animations/slide.animations.js +7 -7
  50. package/esm2015/lib/animations/toast.animations.js +12 -12
  51. package/esm2015/lib/components/breadcrumb/breadcrumb.component.js +48 -48
  52. package/esm2015/lib/components/breadcrumb-items/breadcrumb-items.component.js +21 -21
  53. package/esm2015/lib/components/button/button.component.js +71 -71
  54. package/esm2015/lib/components/confirmation/confirmation.component.js +39 -39
  55. package/esm2015/lib/components/http-error-wrapper/http-error-wrapper.component.js +65 -65
  56. package/esm2015/lib/components/index.js +12 -12
  57. package/esm2015/lib/components/loader-bar/loader-bar.component.js +101 -101
  58. package/esm2015/lib/components/loading/loading.component.js +17 -17
  59. package/esm2015/lib/components/modal/modal-close.directive.js +27 -27
  60. package/esm2015/lib/components/modal/modal-ref.service.js +25 -25
  61. package/esm2015/lib/components/modal/modal.component.js +188 -188
  62. package/esm2015/lib/components/toast/toast.component.js +60 -60
  63. package/esm2015/lib/components/toast-container/toast-container.component.js +48 -48
  64. package/esm2015/lib/constants/styles.js +1 -1
  65. package/esm2015/lib/constants/validation.js +14 -14
  66. package/esm2015/lib/directives/ellipsis.directive.js +62 -62
  67. package/esm2015/lib/directives/index.js +4 -4
  68. package/esm2015/lib/directives/loading.directive.js +89 -89
  69. package/esm2015/lib/directives/ngx-datatable-default.directive.js +74 -74
  70. package/esm2015/lib/directives/ngx-datatable-list.directive.js +93 -93
  71. package/esm2015/lib/enums/index.js +1 -1
  72. package/esm2015/lib/enums/route-names.js +1 -1
  73. package/esm2015/lib/handlers/document-dir.handler.js +32 -32
  74. package/esm2015/lib/handlers/error.handler.js +291 -291
  75. package/esm2015/lib/handlers/index.js +2 -2
  76. package/esm2015/lib/models/common.js +1 -1
  77. package/esm2015/lib/models/confirmation.js +9 -9
  78. package/esm2015/lib/models/index.js +5 -5
  79. package/esm2015/lib/models/nav-item.js +6 -6
  80. package/esm2015/lib/models/statistics.js +1 -1
  81. package/esm2015/lib/models/toaster.js +1 -1
  82. package/esm2015/lib/providers/index.js +2 -2
  83. package/esm2015/lib/providers/ng-bootstrap-config.provider.js +16 -16
  84. package/esm2015/lib/providers/route.provider.js +17 -17
  85. package/esm2015/lib/services/confirmation.service.js +67 -67
  86. package/esm2015/lib/services/index.js +4 -4
  87. package/esm2015/lib/services/nav-items.service.js +50 -50
  88. package/esm2015/lib/services/page-alert.service.js +25 -25
  89. package/esm2015/lib/services/toaster.service.js +102 -102
  90. package/esm2015/lib/theme-shared.module.js +164 -164
  91. package/esm2015/lib/tokens/append-content.token.js +10 -10
  92. package/esm2015/lib/tokens/http-error.token.js +9 -9
  93. package/esm2015/lib/tokens/index.js +4 -4
  94. package/esm2015/lib/tokens/ngx-datatable-messages.token.js +7 -7
  95. package/esm2015/lib/tokens/suppress-unsaved-changes-warning.token.js +2 -2
  96. package/esm2015/lib/utils/date-parser-formatter.js +58 -58
  97. package/esm2015/lib/utils/index.js +2 -2
  98. package/esm2015/lib/utils/validation-utils.js +32 -32
  99. package/esm2015/public-api.js +15 -15
  100. package/esm2015/testing/abp-ng.theme.shared-testing.js +4 -4
  101. package/esm2015/testing/lib/models/config.js +1 -1
  102. package/esm2015/testing/lib/models/index.js +1 -1
  103. package/esm2015/testing/lib/theme-shared-testing.module.js +42 -42
  104. package/esm2015/testing/public-api.js +3 -3
  105. package/extensions/abp-ng.theme.shared-extensions.d.ts +5 -5
  106. package/extensions/lib/adapters/date-time.adapter.d.ts +11 -11
  107. package/extensions/lib/adapters/date.adapter.d.ts +9 -9
  108. package/extensions/lib/adapters/time.adapter.d.ts +8 -8
  109. package/extensions/lib/components/abstract-actions/abstract-actions.component.d.ts +14 -14
  110. package/extensions/lib/components/date-time-picker/date-time-picker.component.d.ts +16 -16
  111. package/extensions/lib/components/extensible-form/extensible-form-prop.component.d.ts +37 -37
  112. package/extensions/lib/components/extensible-form/extensible-form.component.d.ts +24 -24
  113. package/extensions/lib/components/extensible-table/extensible-table.component.d.ts +35 -35
  114. package/extensions/lib/components/grid-actions/grid-actions.component.d.ts +13 -13
  115. package/extensions/lib/components/page-toolbar/page-toolbar.component.d.ts +12 -12
  116. package/extensions/lib/constants/extra-properties.d.ts +1 -1
  117. package/extensions/lib/directives/disabled.directive.d.ts +11 -11
  118. package/extensions/lib/directives/prop-data.directive.d.ts +19 -19
  119. package/extensions/lib/enums/props.enum.d.ts +15 -15
  120. package/extensions/lib/models/actions.d.ts +35 -35
  121. package/extensions/lib/models/entity-actions.d.ts +22 -22
  122. package/extensions/lib/models/entity-props.d.ts +29 -29
  123. package/extensions/lib/models/form-props.d.ts +42 -42
  124. package/extensions/lib/models/internal/object-extensions.d.ts +85 -85
  125. package/extensions/lib/models/object-extensions.d.ts +2 -2
  126. package/extensions/lib/models/props.d.ts +39 -39
  127. package/extensions/lib/models/toolbar-actions.d.ts +29 -29
  128. package/extensions/lib/services/extensions.service.d.ts +14 -14
  129. package/extensions/lib/tokens/extensions.token.d.ts +14 -14
  130. package/extensions/lib/ui-extensions.module.d.ts +23 -23
  131. package/extensions/lib/utils/actions.util.d.ts +7 -7
  132. package/extensions/lib/utils/enum.util.d.ts +7 -7
  133. package/extensions/lib/utils/factory.util.d.ts +1 -1
  134. package/extensions/lib/utils/form-props.util.d.ts +3 -3
  135. package/extensions/lib/utils/localization.util.d.ts +3 -3
  136. package/extensions/lib/utils/props.util.d.ts +8 -8
  137. package/extensions/lib/utils/state.util.d.ts +5 -5
  138. package/extensions/lib/utils/typeahead.util.d.ts +11 -11
  139. package/extensions/lib/utils/validation.util.d.ts +3 -3
  140. package/extensions/public-api.d.ts +27 -27
  141. package/fesm2015/abp-ng.theme.shared-extensions.js +1227 -1226
  142. package/fesm2015/abp-ng.theme.shared-extensions.js.map +1 -1
  143. package/fesm2015/abp-ng.theme.shared-testing.js +37 -37
  144. package/fesm2015/abp-ng.theme.shared.js +1858 -1858
  145. package/fesm2015/abp-ng.theme.shared.js.map +1 -1
  146. package/lib/animations/bounce.animations.d.ts +1 -1
  147. package/lib/animations/collapse.animations.d.ts +9 -9
  148. package/lib/animations/fade.animations.d.ts +10 -10
  149. package/lib/animations/index.d.ts +6 -6
  150. package/lib/animations/modal.animations.d.ts +2 -2
  151. package/lib/animations/slide.animations.d.ts +1 -1
  152. package/lib/animations/toast.animations.d.ts +1 -1
  153. package/lib/components/breadcrumb/breadcrumb.component.d.ts +16 -16
  154. package/lib/components/breadcrumb-items/breadcrumb-items.component.d.ts +7 -7
  155. package/lib/components/button/button.component.d.ts +25 -25
  156. package/lib/components/confirmation/confirmation.component.d.ts +14 -14
  157. package/lib/components/http-error-wrapper/http-error-wrapper.component.d.ts +27 -27
  158. package/lib/components/index.d.ts +12 -12
  159. package/lib/components/loader-bar/loader-bar.component.d.ts +33 -33
  160. package/lib/components/loading/loading.component.d.ts +5 -5
  161. package/lib/components/modal/modal-close.directive.d.ts +9 -9
  162. package/lib/components/modal/modal-ref.service.d.ts +13 -13
  163. package/lib/components/modal/modal.component.d.ts +50 -50
  164. package/lib/components/toast/toast.component.d.ts +14 -14
  165. package/lib/components/toast-container/toast-container.component.d.ts +18 -18
  166. package/lib/constants/styles.d.ts +2 -2
  167. package/lib/constants/validation.d.ts +14 -14
  168. package/lib/directives/ellipsis.directive.d.ts +21 -21
  169. package/lib/directives/index.d.ts +4 -4
  170. package/lib/directives/loading.directive.d.ts +25 -25
  171. package/lib/directives/ngx-datatable-default.directive.d.ts +30 -30
  172. package/lib/directives/ngx-datatable-list.directive.d.ts +24 -24
  173. package/lib/enums/index.d.ts +1 -1
  174. package/lib/enums/route-names.d.ts +3 -3
  175. package/lib/handlers/document-dir.handler.d.ts +13 -13
  176. package/lib/handlers/error.handler.d.ts +82 -82
  177. package/lib/handlers/index.d.ts +2 -2
  178. package/lib/models/common.d.ts +19 -19
  179. package/lib/models/confirmation.d.ts +25 -25
  180. package/lib/models/index.d.ts +5 -5
  181. package/lib/models/nav-item.d.ts +11 -11
  182. package/lib/models/statistics.d.ts +12 -12
  183. package/lib/models/toaster.d.ts +30 -30
  184. package/lib/providers/index.d.ts +2 -2
  185. package/lib/providers/ng-bootstrap-config.provider.d.ts +8 -8
  186. package/lib/providers/route.provider.d.ts +8 -8
  187. package/lib/services/confirmation.service.d.ts +21 -21
  188. package/lib/services/index.d.ts +4 -4
  189. package/lib/services/nav-items.service.d.ts +13 -13
  190. package/lib/services/page-alert.service.d.ts +18 -18
  191. package/lib/services/toaster.service.d.ts +60 -60
  192. package/lib/theme-shared.module.d.ts +33 -33
  193. package/lib/tokens/append-content.token.d.ts +2 -2
  194. package/lib/tokens/http-error.token.d.ts +5 -5
  195. package/lib/tokens/index.d.ts +4 -4
  196. package/lib/tokens/ngx-datatable-messages.token.d.ts +12 -12
  197. package/lib/tokens/suppress-unsaved-changes-warning.token.d.ts +2 -2
  198. package/lib/utils/date-parser-formatter.d.ts +12 -12
  199. package/lib/utils/index.d.ts +2 -2
  200. package/lib/utils/validation-utils.d.ts +3 -3
  201. package/package.json +4 -4
  202. package/public-api.d.ts +12 -12
  203. package/testing/abp-ng.theme.shared-testing.d.ts +5 -5
  204. package/testing/lib/models/config.d.ts +4 -4
  205. package/testing/lib/models/index.d.ts +1 -1
  206. package/testing/lib/theme-shared-testing.module.d.ts +14 -14
  207. package/testing/public-api.d.ts +3 -3
@@ -1,70 +1,70 @@
1
- import { TrackByService } from '@abp/ng.core';
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, Optional, QueryList, SkipSelf, ViewChildren, } from '@angular/core';
3
- import { ControlContainer } from '@angular/forms';
4
- import { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';
5
- import { ExtensionsService } from '../../services/extensions.service';
6
- import { EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';
7
- import { selfFactory } from '../../utils/factory.util';
8
- import { ExtensibleFormPropComponent } from './extensible-form-prop.component';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@abp/ng.core";
11
- import * as i2 from "@angular/forms";
12
- import * as i3 from "../../services/extensions.service";
13
- import * as i4 from "./extensible-form-prop.component";
14
- import * as i5 from "@angular/common";
15
- import * as i6 from "../../directives/prop-data.directive";
16
- import * as i7 from "@ngx-validate/core";
17
- export class ExtensibleFormComponent {
18
- constructor(cdRef, track, container, extensions, identifier) {
19
- this.cdRef = cdRef;
20
- this.track = track;
21
- this.container = container;
22
- this.extensions = extensions;
23
- this.identifier = identifier;
24
- this.extraPropertiesKey = EXTRA_PROPERTIES_KEY;
25
- }
26
- set selectedRecord(record) {
27
- const type = !record || JSON.stringify(record) === '{}' ? 'create' : 'edit';
28
- this.propList = this.extensions[`${type}FormProps`].get(this.identifier).props;
29
- this.record = record;
30
- }
31
- get form() {
32
- return (this.container ? this.container.control : { controls: {} });
33
- }
34
- get extraProperties() {
35
- return (this.form.controls.extraProperties || { controls: {} });
36
- }
37
- }
38
- ExtensibleFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ExtensibleFormComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TrackByService }, { token: i2.ControlContainer }, { token: i3.ExtensionsService }, { token: EXTENSIONS_IDENTIFIER }], target: i0.ɵɵFactoryTarget.Component });
39
- ExtensibleFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ExtensibleFormComponent, selector: "abp-extensible-form", inputs: { selectedRecord: "selectedRecord" }, viewQueries: [{ propertyName: "formProps", predicate: ExtensibleFormPropComponent, descendants: true }], exportAs: ["abpExtensibleForm"], ngImport: i0, template: "<ng-container *ngIf=\"form\">\n <ng-container *abpPropData=\"let data; fromList: propList; withRecord: record\">\n <ng-container *ngFor=\"let prop of propList; let first = first; trackBy: track.by('name')\">\n <ng-container *ngIf=\"prop.visible(data)\">\n <ng-container\n [formGroupName]=\"extraPropertiesKey\"\n *ngIf=\"extraProperties.controls[prop.name]; else tempDefault\"\n >\n <abp-extensible-form-prop [prop]=\"prop\" [data]=\"data\"></abp-extensible-form-prop>\n </ng-container>\n\n <ng-template #tempDefault>\n <abp-extensible-form-prop\n *ngIf=\"form.get(prop.name)\"\n [prop]=\"prop\"\n [data]=\"data\"\n [first]=\"first\"\n ></abp-extensible-form-prop>\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>\n", components: [{ type: i4.ExtensibleFormPropComponent, selector: "abp-extensible-form-prop", inputs: ["data", "prop", "first"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.PropDataDirective, selector: "[abpPropData]", inputs: ["abpPropDataFromList", "abpPropDataWithRecord", "abpPropDataAtIndex"], exportAs: ["abpPropData"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", inputs: ["blueprints", "errorTemplate", "invalidClasses", "mapErrorsFn", "skipValidation", "targetSelector", "validateOnSubmit"] }], viewProviders: [
40
- {
41
- provide: ControlContainer,
42
- useFactory: selfFactory,
43
- deps: [[new Optional(), new SkipSelf(), ControlContainer]],
44
- },
45
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ExtensibleFormComponent, decorators: [{
47
- type: Component,
48
- args: [{
49
- exportAs: 'abpExtensibleForm',
50
- selector: 'abp-extensible-form',
51
- templateUrl: './extensible-form.component.html',
52
- changeDetection: ChangeDetectionStrategy.OnPush,
53
- viewProviders: [
54
- {
55
- provide: ControlContainer,
56
- useFactory: selfFactory,
57
- deps: [[new Optional(), new SkipSelf(), ControlContainer]],
58
- },
59
- ],
60
- }]
61
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.TrackByService }, { type: i2.ControlContainer }, { type: i3.ExtensionsService }, { type: undefined, decorators: [{
62
- type: Inject,
63
- args: [EXTENSIONS_IDENTIFIER]
64
- }] }]; }, propDecorators: { formProps: [{
65
- type: ViewChildren,
66
- args: [ExtensibleFormPropComponent]
67
- }], selectedRecord: [{
68
- type: Input
69
- }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvY29tcG9uZW50cy9leHRlbnNpYmxlLWZvcm0vZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvY29tcG9uZW50cy9leHRlbnNpYmxlLWZvcm0vZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7O0FBZS9FLE1BQU0sT0FBTyx1QkFBdUI7SUF1QmxDLFlBQ2tCLEtBQXdCLEVBQ3hCLEtBQXFCLEVBQzdCLFNBQTJCLEVBQzNCLFVBQTZCLEVBQ0UsVUFBa0I7UUFKekMsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDRSxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBakIzRCx1QkFBa0IsR0FBRyxvQkFBb0IsQ0FBQztJQWtCdkMsQ0FBQztJQXpCSixJQUNJLGNBQWMsQ0FBQyxNQUFTO1FBQzFCLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUM1RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQy9FLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFNRCxJQUFJLElBQUk7UUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFjLENBQUM7SUFDbkYsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFjLENBQUM7SUFDL0UsQ0FBQzs7cUhBckJVLHVCQUF1QixrSkE0QnhCLHFCQUFxQjt5R0E1QnBCLHVCQUF1Qix1SUFDcEIsMkJBQTJCLGlGQ2xDM0MsazRCQXVCQSxnN0JERWlCO1FBQ2I7WUFDRSxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLFVBQVUsRUFBRSxXQUFXO1lBQ3ZCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDM0Q7S0FDRjs0RkFFVSx1QkFBdUI7a0JBYm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLGtDQUFrQztvQkFDL0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRTt3QkFDYjs0QkFDRSxPQUFPLEVBQUUsZ0JBQWdCOzRCQUN6QixVQUFVLEVBQUUsV0FBVzs0QkFDdkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQzt5QkFDM0Q7cUJBQ0Y7aUJBQ0Y7OzBCQTZCSSxNQUFNOzJCQUFDLHFCQUFxQjs0Q0ExQi9CLFNBQVM7c0JBRFIsWUFBWTt1QkFBQywyQkFBMkI7Z0JBSXJDLGNBQWM7c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFja0J5U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgU2tpcFNlbGYsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFWFRSQV9QUk9QRVJUSUVTX0tFWSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9leHRyYS1wcm9wZXJ0aWVzJztcbmltcG9ydCB7IEZvcm1Qcm9wTGlzdCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXByb3BzJztcbmltcG9ydCB7IEV4dGVuc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEVYVEVOU0lPTlNfSURFTlRJRklFUiB9IGZyb20gJy4uLy4uL3Rva2Vucy9leHRlbnNpb25zLnRva2VuJztcbmltcG9ydCB7IHNlbGZGYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZmFjdG9yeS51dGlsJztcbmltcG9ydCB7IEV4dGVuc2libGVGb3JtUHJvcENvbXBvbmVudCB9IGZyb20gJy4vZXh0ZW5zaWJsZS1mb3JtLXByb3AuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIGV4cG9ydEFzOiAnYWJwRXh0ZW5zaWJsZUZvcm0nLFxuICBzZWxlY3RvcjogJ2FicC1leHRlbnNpYmxlLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHZpZXdQcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgdXNlRmFjdG9yeTogc2VsZkZhY3RvcnksXG4gICAgICBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgQ29udHJvbENvbnRhaW5lcl1dLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEV4dGVuc2libGVGb3JtQ29tcG9uZW50PFIgPSBhbnk+IHtcbiAgQFZpZXdDaGlsZHJlbihFeHRlbnNpYmxlRm9ybVByb3BDb21wb25lbnQpXG4gIGZvcm1Qcm9wcyE6IFF1ZXJ5TGlzdDxFeHRlbnNpYmxlRm9ybVByb3BDb21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpXG4gIHNldCBzZWxlY3RlZFJlY29yZChyZWNvcmQ6IFIpIHtcbiAgICBjb25zdCB0eXBlID0gIXJlY29yZCB8fCBKU09OLnN0cmluZ2lmeShyZWNvcmQpID09PSAne30nID8gJ2NyZWF0ZScgOiAnZWRpdCc7XG4gICAgdGhpcy5wcm9wTGlzdCA9IHRoaXMuZXh0ZW5zaW9uc1tgJHt0eXBlfUZvcm1Qcm9wc2BdLmdldCh0aGlzLmlkZW50aWZpZXIpLnByb3BzO1xuICAgIHRoaXMucmVjb3JkID0gcmVjb3JkO1xuICB9XG5cbiAgZXh0cmFQcm9wZXJ0aWVzS2V5ID0gRVhUUkFfUFJPUEVSVElFU19LRVk7XG4gIHByb3BMaXN0ITogRm9ybVByb3BMaXN0PFI+O1xuICByZWNvcmQhOiBSO1xuXG4gIGdldCBmb3JtKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuICh0aGlzLmNvbnRhaW5lciA/IHRoaXMuY29udGFpbmVyLmNvbnRyb2wgOiB7IGNvbnRyb2xzOiB7fSB9KSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBnZXQgZXh0cmFQcm9wZXJ0aWVzKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMuZXh0cmFQcm9wZXJ0aWVzIHx8IHsgY29udHJvbHM6IHt9IH0pIGFzIEZvcm1Hcm91cDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIHJlYWRvbmx5IHRyYWNrOiBUcmFja0J5U2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICBwcml2YXRlIGV4dGVuc2lvbnM6IEV4dGVuc2lvbnNTZXJ2aWNlLFxuICAgIEBJbmplY3QoRVhURU5TSU9OU19JREVOVElGSUVSKSBwcml2YXRlIGlkZW50aWZpZXI6IHN0cmluZyxcbiAgKSB7fVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1cIj5cbiAgPG5nLWNvbnRhaW5lciAqYWJwUHJvcERhdGE9XCJsZXQgZGF0YTsgZnJvbUxpc3Q6IHByb3BMaXN0OyB3aXRoUmVjb3JkOiByZWNvcmRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wIG9mIHByb3BMaXN0OyBsZXQgZmlyc3QgPSBmaXJzdDsgdHJhY2tCeTogdHJhY2suYnkoJ25hbWUnKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb3AudmlzaWJsZShkYXRhKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW2Zvcm1Hcm91cE5hbWVdPVwiZXh0cmFQcm9wZXJ0aWVzS2V5XCJcbiAgICAgICAgICAqbmdJZj1cImV4dHJhUHJvcGVydGllcy5jb250cm9sc1twcm9wLm5hbWVdOyBlbHNlIHRlbXBEZWZhdWx0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxhYnAtZXh0ZW5zaWJsZS1mb3JtLXByb3AgW3Byb3BdPVwicHJvcFwiIFtkYXRhXT1cImRhdGFcIj48L2FicC1leHRlbnNpYmxlLWZvcm0tcHJvcD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wRGVmYXVsdD5cbiAgICAgICAgICA8YWJwLWV4dGVuc2libGUtZm9ybS1wcm9wXG4gICAgICAgICAgICAqbmdJZj1cImZvcm0uZ2V0KHByb3AubmFtZSlcIlxuICAgICAgICAgICAgW3Byb3BdPVwicHJvcFwiXG4gICAgICAgICAgICBbZGF0YV09XCJkYXRhXCJcbiAgICAgICAgICAgIFtmaXJzdF09XCJmaXJzdFwiXG4gICAgICAgICAgPjwvYWJwLWV4dGVuc2libGUtZm9ybS1wcm9wPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
1
+ import { TrackByService } from '@abp/ng.core';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, Optional, QueryList, SkipSelf, ViewChildren, } from '@angular/core';
3
+ import { ControlContainer } from '@angular/forms';
4
+ import { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';
5
+ import { ExtensionsService } from '../../services/extensions.service';
6
+ import { EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';
7
+ import { selfFactory } from '../../utils/factory.util';
8
+ import { ExtensibleFormPropComponent } from './extensible-form-prop.component';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@abp/ng.core";
11
+ import * as i2 from "@angular/forms";
12
+ import * as i3 from "../../services/extensions.service";
13
+ import * as i4 from "./extensible-form-prop.component";
14
+ import * as i5 from "@angular/common";
15
+ import * as i6 from "../../directives/prop-data.directive";
16
+ import * as i7 from "@ngx-validate/core";
17
+ export class ExtensibleFormComponent {
18
+ constructor(cdRef, track, container, extensions, identifier) {
19
+ this.cdRef = cdRef;
20
+ this.track = track;
21
+ this.container = container;
22
+ this.extensions = extensions;
23
+ this.identifier = identifier;
24
+ this.extraPropertiesKey = EXTRA_PROPERTIES_KEY;
25
+ }
26
+ set selectedRecord(record) {
27
+ const type = !record || JSON.stringify(record) === '{}' ? 'create' : 'edit';
28
+ this.propList = this.extensions[`${type}FormProps`].get(this.identifier).props;
29
+ this.record = record;
30
+ }
31
+ get form() {
32
+ return (this.container ? this.container.control : { controls: {} });
33
+ }
34
+ get extraProperties() {
35
+ return (this.form.controls.extraProperties || { controls: {} });
36
+ }
37
+ }
38
+ ExtensibleFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ExtensibleFormComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TrackByService }, { token: i2.ControlContainer }, { token: i3.ExtensionsService }, { token: EXTENSIONS_IDENTIFIER }], target: i0.ɵɵFactoryTarget.Component });
39
+ ExtensibleFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ExtensibleFormComponent, selector: "abp-extensible-form", inputs: { selectedRecord: "selectedRecord" }, viewQueries: [{ propertyName: "formProps", predicate: ExtensibleFormPropComponent, descendants: true }], exportAs: ["abpExtensibleForm"], ngImport: i0, template: "<ng-container *ngIf=\"form\">\n <ng-container *abpPropData=\"let data; fromList: propList; withRecord: record\">\n <ng-container *ngFor=\"let prop of propList; let first = first; trackBy: track.by('name')\">\n <ng-container *ngIf=\"prop.visible(data)\">\n <ng-container\n [formGroupName]=\"extraPropertiesKey\"\n *ngIf=\"extraProperties.controls[prop.name]; else tempDefault\"\n >\n <abp-extensible-form-prop [prop]=\"prop\" [data]=\"data\"></abp-extensible-form-prop>\n </ng-container>\n\n <ng-template #tempDefault>\n <abp-extensible-form-prop\n *ngIf=\"form.get(prop.name)\"\n [prop]=\"prop\"\n [data]=\"data\"\n [first]=\"first\"\n ></abp-extensible-form-prop>\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>\n", components: [{ type: i4.ExtensibleFormPropComponent, selector: "abp-extensible-form-prop", inputs: ["data", "prop", "first"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.PropDataDirective, selector: "[abpPropData]", inputs: ["abpPropDataFromList", "abpPropDataWithRecord", "abpPropDataAtIndex"], exportAs: ["abpPropData"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }], viewProviders: [
40
+ {
41
+ provide: ControlContainer,
42
+ useFactory: selfFactory,
43
+ deps: [[new Optional(), new SkipSelf(), ControlContainer]],
44
+ },
45
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ExtensibleFormComponent, decorators: [{
47
+ type: Component,
48
+ args: [{
49
+ exportAs: 'abpExtensibleForm',
50
+ selector: 'abp-extensible-form',
51
+ templateUrl: './extensible-form.component.html',
52
+ changeDetection: ChangeDetectionStrategy.OnPush,
53
+ viewProviders: [
54
+ {
55
+ provide: ControlContainer,
56
+ useFactory: selfFactory,
57
+ deps: [[new Optional(), new SkipSelf(), ControlContainer]],
58
+ },
59
+ ],
60
+ }]
61
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.TrackByService }, { type: i2.ControlContainer }, { type: i3.ExtensionsService }, { type: undefined, decorators: [{
62
+ type: Inject,
63
+ args: [EXTENSIONS_IDENTIFIER]
64
+ }] }]; }, propDecorators: { formProps: [{
65
+ type: ViewChildren,
66
+ args: [ExtensibleFormPropComponent]
67
+ }], selectedRecord: [{
68
+ type: Input
69
+ }] } });
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvY29tcG9uZW50cy9leHRlbnNpYmxlLWZvcm0vZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvY29tcG9uZW50cy9leHRlbnNpYmxlLWZvcm0vZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7O0FBZS9FLE1BQU0sT0FBTyx1QkFBdUI7SUF1QmxDLFlBQ2tCLEtBQXdCLEVBQ3hCLEtBQXFCLEVBQzdCLFNBQTJCLEVBQzNCLFVBQTZCLEVBQ0UsVUFBa0I7UUFKekMsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDRSxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBakIzRCx1QkFBa0IsR0FBRyxvQkFBb0IsQ0FBQztJQWtCdkMsQ0FBQztJQXpCSixJQUNJLGNBQWMsQ0FBQyxNQUFTO1FBQzFCLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUM1RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQy9FLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFNRCxJQUFJLElBQUk7UUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFjLENBQUM7SUFDbkYsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFjLENBQUM7SUFDL0UsQ0FBQzs7cUhBckJVLHVCQUF1QixrSkE0QnhCLHFCQUFxQjt5R0E1QnBCLHVCQUF1Qix1SUFDcEIsMkJBQTJCLGlGQ2xDM0MsazRCQXVCQSw2MEJERWlCO1FBQ2I7WUFDRSxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLFVBQVUsRUFBRSxXQUFXO1lBQ3ZCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDM0Q7S0FDRjs0RkFFVSx1QkFBdUI7a0JBYm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLGtDQUFrQztvQkFDL0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRTt3QkFDYjs0QkFDRSxPQUFPLEVBQUUsZ0JBQWdCOzRCQUN6QixVQUFVLEVBQUUsV0FBVzs0QkFDdkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQzt5QkFDM0Q7cUJBQ0Y7aUJBQ0Y7OzBCQTZCSSxNQUFNOzJCQUFDLHFCQUFxQjs0Q0ExQi9CLFNBQVM7c0JBRFIsWUFBWTt1QkFBQywyQkFBMkI7Z0JBSXJDLGNBQWM7c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFja0J5U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgU2tpcFNlbGYsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFWFRSQV9QUk9QRVJUSUVTX0tFWSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9leHRyYS1wcm9wZXJ0aWVzJztcbmltcG9ydCB7IEZvcm1Qcm9wTGlzdCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXByb3BzJztcbmltcG9ydCB7IEV4dGVuc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEVYVEVOU0lPTlNfSURFTlRJRklFUiB9IGZyb20gJy4uLy4uL3Rva2Vucy9leHRlbnNpb25zLnRva2VuJztcbmltcG9ydCB7IHNlbGZGYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZmFjdG9yeS51dGlsJztcbmltcG9ydCB7IEV4dGVuc2libGVGb3JtUHJvcENvbXBvbmVudCB9IGZyb20gJy4vZXh0ZW5zaWJsZS1mb3JtLXByb3AuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIGV4cG9ydEFzOiAnYWJwRXh0ZW5zaWJsZUZvcm0nLFxuICBzZWxlY3RvcjogJ2FicC1leHRlbnNpYmxlLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHZpZXdQcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgdXNlRmFjdG9yeTogc2VsZkZhY3RvcnksXG4gICAgICBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgQ29udHJvbENvbnRhaW5lcl1dLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEV4dGVuc2libGVGb3JtQ29tcG9uZW50PFIgPSBhbnk+IHtcbiAgQFZpZXdDaGlsZHJlbihFeHRlbnNpYmxlRm9ybVByb3BDb21wb25lbnQpXG4gIGZvcm1Qcm9wcyE6IFF1ZXJ5TGlzdDxFeHRlbnNpYmxlRm9ybVByb3BDb21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpXG4gIHNldCBzZWxlY3RlZFJlY29yZChyZWNvcmQ6IFIpIHtcbiAgICBjb25zdCB0eXBlID0gIXJlY29yZCB8fCBKU09OLnN0cmluZ2lmeShyZWNvcmQpID09PSAne30nID8gJ2NyZWF0ZScgOiAnZWRpdCc7XG4gICAgdGhpcy5wcm9wTGlzdCA9IHRoaXMuZXh0ZW5zaW9uc1tgJHt0eXBlfUZvcm1Qcm9wc2BdLmdldCh0aGlzLmlkZW50aWZpZXIpLnByb3BzO1xuICAgIHRoaXMucmVjb3JkID0gcmVjb3JkO1xuICB9XG5cbiAgZXh0cmFQcm9wZXJ0aWVzS2V5ID0gRVhUUkFfUFJPUEVSVElFU19LRVk7XG4gIHByb3BMaXN0ITogRm9ybVByb3BMaXN0PFI+O1xuICByZWNvcmQhOiBSO1xuXG4gIGdldCBmb3JtKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuICh0aGlzLmNvbnRhaW5lciA/IHRoaXMuY29udGFpbmVyLmNvbnRyb2wgOiB7IGNvbnRyb2xzOiB7fSB9KSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBnZXQgZXh0cmFQcm9wZXJ0aWVzKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMuZXh0cmFQcm9wZXJ0aWVzIHx8IHsgY29udHJvbHM6IHt9IH0pIGFzIEZvcm1Hcm91cDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIHJlYWRvbmx5IHRyYWNrOiBUcmFja0J5U2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICBwcml2YXRlIGV4dGVuc2lvbnM6IEV4dGVuc2lvbnNTZXJ2aWNlLFxuICAgIEBJbmplY3QoRVhURU5TSU9OU19JREVOVElGSUVSKSBwcml2YXRlIGlkZW50aWZpZXI6IHN0cmluZyxcbiAgKSB7fVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1cIj5cbiAgPG5nLWNvbnRhaW5lciAqYWJwUHJvcERhdGE9XCJsZXQgZGF0YTsgZnJvbUxpc3Q6IHByb3BMaXN0OyB3aXRoUmVjb3JkOiByZWNvcmRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wIG9mIHByb3BMaXN0OyBsZXQgZmlyc3QgPSBmaXJzdDsgdHJhY2tCeTogdHJhY2suYnkoJ25hbWUnKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb3AudmlzaWJsZShkYXRhKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW2Zvcm1Hcm91cE5hbWVdPVwiZXh0cmFQcm9wZXJ0aWVzS2V5XCJcbiAgICAgICAgICAqbmdJZj1cImV4dHJhUHJvcGVydGllcy5jb250cm9sc1twcm9wLm5hbWVdOyBlbHNlIHRlbXBEZWZhdWx0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxhYnAtZXh0ZW5zaWJsZS1mb3JtLXByb3AgW3Byb3BdPVwicHJvcFwiIFtkYXRhXT1cImRhdGFcIj48L2FicC1leHRlbnNpYmxlLWZvcm0tcHJvcD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wRGVmYXVsdD5cbiAgICAgICAgICA8YWJwLWV4dGVuc2libGUtZm9ybS1wcm9wXG4gICAgICAgICAgICAqbmdJZj1cImZvcm0uZ2V0KHByb3AubmFtZSlcIlxuICAgICAgICAgICAgW3Byb3BdPVwicHJvcFwiXG4gICAgICAgICAgICBbZGF0YV09XCJkYXRhXCJcbiAgICAgICAgICAgIFtmaXJzdF09XCJmaXJzdFwiXG4gICAgICAgICAgPjwvYWJwLWV4dGVuc2libGUtZm9ybS1wcm9wPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -1,134 +1,134 @@
1
- import { ConfigStateService, getShortDateFormat, getShortDateShortTimeFormat, getShortTimeFormat, ListService, PermissionService, } from '@abp/ng.core';
2
- import { formatDate } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, Inject, Injector, Input, LOCALE_ID, TemplateRef, } from '@angular/core';
4
- import { map } from 'rxjs/operators';
5
- import { ExtensionsService } from '../../services/extensions.service';
6
- import { EXTENSIONS_IDENTIFIER, PROP_DATA_STREAM } from '../../tokens/extensions.token';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@abp/ng.core";
9
- import * as i2 from "@swimlane/ngx-datatable";
10
- import * as i3 from "../grid-actions/grid-actions.component";
11
- import * as i4 from "@abp/ng.theme.shared";
12
- import * as i5 from "@angular/common";
13
- const DEFAULT_ACTIONS_COLUMN_WIDTH = 150;
14
- export class ExtensibleTableComponent {
15
- constructor(locale, config, injector) {
16
- this.locale = locale;
17
- this.config = config;
18
- this.injector = injector;
19
- this.trackByFn = (_, item) => item.name;
20
- this.getInjected = injector.get.bind(injector);
21
- const extensions = injector.get(ExtensionsService);
22
- const name = injector.get(EXTENSIONS_IDENTIFIER);
23
- this.propList = extensions.entityProps.get(name).props;
24
- this.actionList = extensions['entityActions'].get(name)
25
- .actions;
26
- const permissionService = injector.get(PermissionService);
27
- this.hasAtLeastOnePermittedAction =
28
- permissionService.filterItemsByPolicy(this.actionList.toArray().map(action => ({ requiredPolicy: action.permission }))).length > 0;
29
- this.setColumnWidths(DEFAULT_ACTIONS_COLUMN_WIDTH);
30
- }
31
- set actionsText(value) {
32
- this._actionsText = value;
33
- }
34
- get actionsText() {
35
- var _a;
36
- return (_a = this._actionsText) !== null && _a !== void 0 ? _a : (this.actionList.length > 1 ? 'AbpUi::Actions' : '');
37
- }
38
- set actionsColumnWidth(width) {
39
- this.setColumnWidths(width ? Number(width) : undefined);
40
- }
41
- setColumnWidths(actionsColumn) {
42
- const widths = [actionsColumn];
43
- this.propList.forEach(({ value: prop }) => {
44
- widths.push(prop.columnWidth);
45
- });
46
- this.columnWidths = widths;
47
- }
48
- getDate(value, format) {
49
- return value ? formatDate(value, format, this.locale) : '';
50
- }
51
- getIcon(value) {
52
- return value
53
- ? '<div class="text-center text-success"><i class="fa fa-check"></i></div>'
54
- : '<div class="text-center text-danger"><i class="fa fa-times"></i></div>';
55
- }
56
- getEnum(rowValue, list) {
57
- if (!list)
58
- return rowValue;
59
- const { key } = list.find(({ value }) => value === rowValue);
60
- return key;
61
- }
62
- getContent(prop, data) {
63
- return prop.valueResolver(data).pipe(map(value => {
64
- switch (prop.type) {
65
- case "boolean" /* Boolean */:
66
- return this.getIcon(value);
67
- case "date" /* Date */:
68
- return this.getDate(value, getShortDateFormat(this.config));
69
- case "time" /* Time */:
70
- return this.getDate(value, getShortTimeFormat(this.config));
71
- case "dateTime" /* DateTime */:
72
- return this.getDate(value, getShortDateShortTimeFormat(this.config));
73
- case "enum" /* Enum */:
74
- return this.getEnum(value, prop.enumList);
75
- default:
76
- return value;
77
- // More types can be handled in the future
78
- }
79
- }));
80
- }
81
- ngOnChanges({ data }) {
82
- if (!(data === null || data === void 0 ? void 0 : data.currentValue))
83
- return;
84
- this.data = data.currentValue.map((record, index) => {
85
- this.propList.forEach(prop => {
86
- const propData = { getInjected: this.getInjected, record, index };
87
- const value = this.getContent(prop.value, propData);
88
- const propKey = `_${prop.value.name}`;
89
- record[propKey] = {
90
- visible: prop.value.visible(propData),
91
- value,
92
- };
93
- if (prop.value.component) {
94
- const injector = Injector.create([
95
- {
96
- provide: PROP_DATA_STREAM,
97
- useValue: value,
98
- },
99
- ], this.injector);
100
- record[propKey].injector = injector;
101
- record[propKey].component = prop.value.component;
102
- }
103
- });
104
- return record;
105
- });
106
- }
107
- }
108
- ExtensibleTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ExtensibleTableComponent, deps: [{ token: LOCALE_ID }, { token: i1.ConfigStateService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
109
- ExtensibleTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ExtensibleTableComponent, selector: "abp-extensible-table", inputs: { actionsText: "actionsText", data: "data", list: "list", recordsTotal: "recordsTotal", actionsColumnWidth: "actionsColumnWidth", actionsTemplate: "actionsTemplate" }, exportAs: ["abpExtensibleTable"], usesOnChanges: true, ngImport: i0, template: "<ngx-datatable default [rows]=\"data\" [count]=\"recordsTotal\" [list]=\"list\">\n <ngx-datatable-column\n *ngIf=\"actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)\"\n [name]=\"actionsText | abpLocalization\"\n [maxWidth]=\"columnWidths[0]\"\n [width]=\"columnWidths[0]\"\n [sortable]=\"false\"\n >\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\n <ng-container\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\n ></ng-container>\n <ng-template #gridActions>\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\n </ng-template>\n </ng-template>\n </ngx-datatable-column>\n\n <ng-container *ngFor=\"let prop of propList; let i = index; trackBy: trackByFn\">\n <ngx-datatable-column\n [width]=\"columnWidths[i + 1] || 200\"\n [name]=\"prop.displayName | abpLocalization\"\n [prop]=\"prop.name\"\n [sortable]=\"prop.sortable\"\n >\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\n <ng-container *abpPermission=\"prop.permission\">\n <ng-container *ngIf=\"row['_' + prop.name]?.visible\">\n <div\n *ngIf=\"!row['_' + prop.name].component; else component\"\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\n (click)=\"\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\n \"\n [class.pointer]=\"prop.action\"\n ></div>\n </ng-container>\n <ng-template #component>\n <ng-container\n *ngComponentOutlet=\"\n row['_' + prop.name].component;\n injector: row['_' + prop.name].injector\n \"\n ></ng-container>\n </ng-template>\n </ng-container>\n </ng-template>\n </ngx-datatable-column>\n </ng-container>\n</ngx-datatable>\n", components: [{ type: i2.DatatableComponent, selector: "ngx-datatable", inputs: ["selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "loadingIndicator", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "groupExpansionDefault", "selectAllRowsOnPage", "virtualization", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity", "rows", "groupedRows", "groupRowsBy", "columns", "limit", "count", "offset", "targetMarkerTemplate", "selectionType", "rowClass", "selectCheck", "displayCheck", "trackByProp", "treeFromRelation", "treeToRelation"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { type: i3.GridActionsComponent, selector: "abp-grid-actions", inputs: ["icon", "index", "text"], exportAs: ["abpGridActions"] }], directives: [{ type: i4.NgxDatatableDefaultDirective, selector: "ngx-datatable[default]", inputs: ["class"], exportAs: ["ngxDatatableDefault"] }, { type: i4.NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { type: i2.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission"] }, { type: i5.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModuleFactory"] }], pipes: { "abpLocalization": i1.LocalizationPipe, "async": i5.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ExtensibleTableComponent, decorators: [{
111
- type: Component,
112
- args: [{
113
- exportAs: 'abpExtensibleTable',
114
- selector: 'abp-extensible-table',
115
- templateUrl: './extensible-table.component.html',
116
- changeDetection: ChangeDetectionStrategy.OnPush,
117
- }]
118
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
119
- type: Inject,
120
- args: [LOCALE_ID]
121
- }] }, { type: i1.ConfigStateService }, { type: i0.Injector }]; }, propDecorators: { actionsText: [{
122
- type: Input
123
- }], data: [{
124
- type: Input
125
- }], list: [{
126
- type: Input
127
- }], recordsTotal: [{
128
- type: Input
129
- }], actionsColumnWidth: [{
130
- type: Input
131
- }], actionsTemplate: [{
132
- type: Input
133
- }] } });
1
+ import { ConfigStateService, getShortDateFormat, getShortDateShortTimeFormat, getShortTimeFormat, ListService, PermissionService, } from '@abp/ng.core';
2
+ import { formatDate } from '@angular/common';
3
+ import { ChangeDetectionStrategy, Component, Inject, Injector, Input, LOCALE_ID, TemplateRef, } from '@angular/core';
4
+ import { map } from 'rxjs/operators';
5
+ import { ExtensionsService } from '../../services/extensions.service';
6
+ import { EXTENSIONS_IDENTIFIER, PROP_DATA_STREAM } from '../../tokens/extensions.token';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@abp/ng.core";
9
+ import * as i2 from "@swimlane/ngx-datatable";
10
+ import * as i3 from "../grid-actions/grid-actions.component";
11
+ import * as i4 from "@abp/ng.theme.shared";
12
+ import * as i5 from "@angular/common";
13
+ const DEFAULT_ACTIONS_COLUMN_WIDTH = 150;
14
+ export class ExtensibleTableComponent {
15
+ constructor(locale, config, injector) {
16
+ this.locale = locale;
17
+ this.config = config;
18
+ this.injector = injector;
19
+ this.trackByFn = (_, item) => item.name;
20
+ this.getInjected = injector.get.bind(injector);
21
+ const extensions = injector.get(ExtensionsService);
22
+ const name = injector.get(EXTENSIONS_IDENTIFIER);
23
+ this.propList = extensions.entityProps.get(name).props;
24
+ this.actionList = extensions['entityActions'].get(name)
25
+ .actions;
26
+ const permissionService = injector.get(PermissionService);
27
+ this.hasAtLeastOnePermittedAction =
28
+ permissionService.filterItemsByPolicy(this.actionList.toArray().map(action => ({ requiredPolicy: action.permission }))).length > 0;
29
+ this.setColumnWidths(DEFAULT_ACTIONS_COLUMN_WIDTH);
30
+ }
31
+ set actionsText(value) {
32
+ this._actionsText = value;
33
+ }
34
+ get actionsText() {
35
+ var _a;
36
+ return (_a = this._actionsText) !== null && _a !== void 0 ? _a : (this.actionList.length > 1 ? 'AbpUi::Actions' : '');
37
+ }
38
+ set actionsColumnWidth(width) {
39
+ this.setColumnWidths(width ? Number(width) : undefined);
40
+ }
41
+ setColumnWidths(actionsColumn) {
42
+ const widths = [actionsColumn];
43
+ this.propList.forEach(({ value: prop }) => {
44
+ widths.push(prop.columnWidth);
45
+ });
46
+ this.columnWidths = widths;
47
+ }
48
+ getDate(value, format) {
49
+ return value ? formatDate(value, format, this.locale) : '';
50
+ }
51
+ getIcon(value) {
52
+ return value
53
+ ? '<div class="text-center text-success"><i class="fa fa-check"></i></div>'
54
+ : '<div class="text-center text-danger"><i class="fa fa-times"></i></div>';
55
+ }
56
+ getEnum(rowValue, list) {
57
+ if (!list)
58
+ return rowValue;
59
+ const { key } = list.find(({ value }) => value === rowValue);
60
+ return key;
61
+ }
62
+ getContent(prop, data) {
63
+ return prop.valueResolver(data).pipe(map(value => {
64
+ switch (prop.type) {
65
+ case "boolean" /* Boolean */:
66
+ return this.getIcon(value);
67
+ case "date" /* Date */:
68
+ return this.getDate(value, getShortDateFormat(this.config));
69
+ case "time" /* Time */:
70
+ return this.getDate(value, getShortTimeFormat(this.config));
71
+ case "dateTime" /* DateTime */:
72
+ return this.getDate(value, getShortDateShortTimeFormat(this.config));
73
+ case "enum" /* Enum */:
74
+ return this.getEnum(value, prop.enumList);
75
+ default:
76
+ return value;
77
+ // More types can be handled in the future
78
+ }
79
+ }));
80
+ }
81
+ ngOnChanges({ data }) {
82
+ if (!(data === null || data === void 0 ? void 0 : data.currentValue))
83
+ return;
84
+ this.data = data.currentValue.map((record, index) => {
85
+ this.propList.forEach(prop => {
86
+ const propData = { getInjected: this.getInjected, record, index };
87
+ const value = this.getContent(prop.value, propData);
88
+ const propKey = `_${prop.value.name}`;
89
+ record[propKey] = {
90
+ visible: prop.value.visible(propData),
91
+ value,
92
+ };
93
+ if (prop.value.component) {
94
+ const injector = Injector.create([
95
+ {
96
+ provide: PROP_DATA_STREAM,
97
+ useValue: value,
98
+ },
99
+ ], this.injector);
100
+ record[propKey].injector = injector;
101
+ record[propKey].component = prop.value.component;
102
+ }
103
+ });
104
+ return record;
105
+ });
106
+ }
107
+ }
108
+ ExtensibleTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ExtensibleTableComponent, deps: [{ token: LOCALE_ID }, { token: i1.ConfigStateService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
109
+ ExtensibleTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ExtensibleTableComponent, selector: "abp-extensible-table", inputs: { actionsText: "actionsText", data: "data", list: "list", recordsTotal: "recordsTotal", actionsColumnWidth: "actionsColumnWidth", actionsTemplate: "actionsTemplate" }, exportAs: ["abpExtensibleTable"], usesOnChanges: true, ngImport: i0, template: "<ngx-datatable default [rows]=\"data\" [count]=\"recordsTotal\" [list]=\"list\">\n <ngx-datatable-column\n *ngIf=\"actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)\"\n [name]=\"actionsText | abpLocalization\"\n [maxWidth]=\"columnWidths[0]\"\n [width]=\"columnWidths[0]\"\n [sortable]=\"false\"\n >\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\n <ng-container\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\n ></ng-container>\n <ng-template #gridActions>\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\n </ng-template>\n </ng-template>\n </ngx-datatable-column>\n\n <ng-container *ngFor=\"let prop of propList; let i = index; trackBy: trackByFn\">\n <ngx-datatable-column\n [width]=\"columnWidths[i + 1] || 200\"\n [name]=\"prop.displayName | abpLocalization\"\n [prop]=\"prop.name\"\n [sortable]=\"prop.sortable\"\n >\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\n <ng-container *abpPermission=\"prop.permission\">\n <ng-container *ngIf=\"row['_' + prop.name]?.visible\">\n <div\n *ngIf=\"!row['_' + prop.name].component; else component\"\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\n (click)=\"\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\n \"\n [class.pointer]=\"prop.action\"\n ></div>\n </ng-container>\n <ng-template #component>\n <ng-container\n *ngComponentOutlet=\"\n row['_' + prop.name].component;\n injector: row['_' + prop.name].injector\n \"\n ></ng-container>\n </ng-template>\n </ng-container>\n </ng-template>\n </ngx-datatable-column>\n </ng-container>\n</ngx-datatable>\n", components: [{ type: i2.DatatableComponent, selector: "ngx-datatable", inputs: ["selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "loadingIndicator", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "groupExpansionDefault", "selectAllRowsOnPage", "virtualization", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity", "rows", "groupedRows", "groupRowsBy", "columns", "limit", "count", "offset", "targetMarkerTemplate", "selectionType", "rowClass", "selectCheck", "displayCheck", "trackByProp", "treeFromRelation", "treeToRelation"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { type: i3.GridActionsComponent, selector: "abp-grid-actions", inputs: ["icon", "index", "text"], exportAs: ["abpGridActions"] }], directives: [{ type: i4.NgxDatatableDefaultDirective, selector: "ngx-datatable[default]", inputs: ["class"], exportAs: ["ngxDatatableDefault"] }, { type: i4.NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { type: i2.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission"] }, { type: i5.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModuleFactory"] }], pipes: { "abpLocalization": i1.LocalizationPipe, "async": i5.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ExtensibleTableComponent, decorators: [{
111
+ type: Component,
112
+ args: [{
113
+ exportAs: 'abpExtensibleTable',
114
+ selector: 'abp-extensible-table',
115
+ templateUrl: './extensible-table.component.html',
116
+ changeDetection: ChangeDetectionStrategy.OnPush,
117
+ }]
118
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
119
+ type: Inject,
120
+ args: [LOCALE_ID]
121
+ }] }, { type: i1.ConfigStateService }, { type: i0.Injector }]; }, propDecorators: { actionsText: [{
122
+ type: Input
123
+ }], data: [{
124
+ type: Input
125
+ }], list: [{
126
+ type: Input
127
+ }], recordsTotal: [{
128
+ type: Input
129
+ }], actionsColumnWidth: [{
130
+ type: Input
131
+ }], actionsTemplate: [{
132
+ type: Input
133
+ }] } });
134
134
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvZXh0ZW5zaW9ucy9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS10YWJsZS9leHRlbnNpYmxlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9leHRlbnNpb25zL3NyYy9saWIvY29tcG9uZW50cy9leHRlbnNpYmxlLXRhYmxlL2V4dGVuc2libGUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsaUJBQWlCLEdBQ2xCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBR04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBR1QsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7OztBQUV4RixNQUFNLDRCQUE0QixHQUFHLEdBQUcsQ0FBQztBQVF6QyxNQUFNLE9BQU8sd0JBQXdCO0lBOEJuQyxZQUM2QixNQUFjLEVBQ2pDLE1BQTBCLEVBQzFCLFFBQWtCO1FBRkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNqQyxXQUFNLEdBQU4sTUFB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QUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQWdDSSxNQUFNOzJCQUFDLFNBQVM7b0dBNUJmLFdBQVc7c0JBRGQsS0FBSztnQkFRRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ08sa0JBQWtCO3NCQUE5QixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBQlAsXG4gIENvbmZpZ1N0YXRlU2VydmljZSxcbiAgZ2V0U2hvcnREYXRlRm9ybWF0LFxuICBnZXRTaG9ydERhdGVTaG9ydFRpbWVGb3JtYXQsXG4gIGdldFNob3J0VGltZUZvcm1hdCxcbiAgTGlzdFNlcnZpY2UsXG4gIFBlcm1pc3Npb25TZXJ2aWNlLFxufSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIEluamVjdEZsYWdzLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBMT0NBTEVfSUQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVHlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBlUHJvcFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9wcm9wcy5lbnVtJztcbmltcG9ydCB7IEVudGl0eUFjdGlvbkxpc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5LWFjdGlvbnMnO1xuaW1wb3J0IHsgRW50aXR5UHJvcCwgRW50aXR5UHJvcExpc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5LXByb3BzJztcbmltcG9ydCB7IFByb3BEYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Byb3BzJztcbmltcG9ydCB7IEV4dGVuc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEVYVEVOU0lPTlNfSURFTlRJRklFUiwgUFJPUF9EQVRBX1NUUkVBTSB9IGZyb20gJy4uLy4uL3Rva2Vucy9leHRlbnNpb25zLnRva2VuJztcblxuY29uc3QgREVGQVVMVF9BQ1RJT05TX0NPTFVNTl9XSURUSCA9IDE1MDtcblxuQENvbXBvbmVudCh7XG4gIGV4cG9ydEFzOiAnYWJwRXh0ZW5zaWJsZVRhYmxlJyxcbiAgc2VsZWN0b3I6ICdhYnAtZXh0ZW5zaWJsZS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9leHRlbnNpYmxlLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEV4dGVuc2libGVUYWJsZUNvbXBvbmVudDxSID0gYW55PiBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIHByb3RlY3RlZCBfYWN0aW9uc1RleHQ6IHN0cmluZztcbiAgQElucHV0KClcbiAgc2V0IGFjdGlvbnNUZXh0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hY3Rpb25zVGV4dCA9IHZhbHVlO1xuICB9XG4gIGdldCBhY3Rpb25zVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zVGV4dCA/PyAodGhpcy5hY3Rpb25MaXN0Lmxlbmd0aCA+IDEgPyAnQWJwVWk6OkFjdGlvbnMnIDogJycpO1xuICB9XG5cbiAgQElucHV0KCkgZGF0YTogUltdO1xuICBASW5wdXQoKSBsaXN0OiBMaXN0U2VydmljZTtcbiAgQElucHV0KCkgcmVjb3Jkc1RvdGFsOiBudW1iZXI7XG4gIEBJbnB1dCgpIHNldCBhY3Rpb25zQ29sdW1uV2lkdGgod2lkdGg6IG51bWJlcikge1xuICAgIHRoaXMuc2V0Q29sdW1uV2lkdGhzKHdpZHRoID8gTnVtYmVyKHdpZHRoKSA6IHVuZGVmaW5lZCk7XG4gIH1cbiAgQElucHV0KCkgYWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGdldEluamVjdGVkOiA8VD4odG9rZW46IFR5cGU8VD4gfCBJbmplY3Rpb25Ub2tlbjxUPiwgbm90Rm91bmRWYWx1ZT86IFQsIGZsYWdzPzogSW5qZWN0RmxhZ3MpID0+IFQ7XG5cbiAgaGFzQXRMZWFzdE9uZVBlcm1pdHRlZEFjdGlvbjogYm9vbGVhbjtcblxuICByZWFkb25seSBjb2x1bW5XaWR0aHM6IG51bWJlcltdO1xuXG4gIHJlYWRvbmx5IHByb3BMaXN0OiBFbnRpdHlQcm9wTGlzdDxSPjtcblxuICByZWFkb25seSBhY3Rpb25MaXN0OiBFbnRpdHlBY3Rpb25MaXN0PFI+O1xuXG4gIHJlYWRvbmx5IHRyYWNrQnlGbjogVHJhY2tCeUZ1bmN0aW9uPEVudGl0eVByb3A8Uj4+ID0gKF8sIGl0ZW0pID0+IGl0ZW0ubmFtZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSBsb2NhbGU6IHN0cmluZyxcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICApIHtcbiAgICB0aGlzLmdldEluamVjdGVkID0gaW5qZWN0b3IuZ2V0LmJpbmQoaW5qZWN0b3IpO1xuICAgIGNvbnN0IGV4dGVuc2lvbnMgPSBpbmplY3Rvci5nZXQoRXh0ZW5zaW9uc1NlcnZpY2UpO1xuICAgIGNvbnN0IG5hbWUgPSBpbmplY3Rvci5nZXQoRVhURU5TSU9OU19JREVOVElGSUVSKTtcbiAgICB0aGlzLnByb3BMaXN0ID0gZXh0ZW5zaW9ucy5lbnRpdHlQcm9wcy5nZXQobmFtZSkucHJvcHM7XG4gICAgdGhpcy5hY3Rpb25MaXN0ID0gZXh0ZW5zaW9uc1snZW50aXR5QWN0aW9ucyddLmdldChuYW1lKVxuICAgICAgLmFjdGlvbnMgYXMgdW5rbm93biBhcyBFbnRpdHlBY3Rpb25MaXN0PFI+O1xuXG4gICAgY29uc3QgcGVybWlzc2lvblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoUGVybWlzc2lvblNlcnZpY2UpO1xuICAgIHRoaXMuaGFzQXRMZWFzdE9uZVBlcm1pdHRlZEFjdGlvbiA9XG4gICAgICBwZXJtaXNzaW9uU2VydmljZS5maWx0ZXJJdGVtc0J5UG9saWN5KFxuICAgICAgICB0aGlzLmFjdGlvbkxpc3QudG9BcnJheSgpLm1hcChhY3Rpb24gPT4gKHsgcmVxdWlyZWRQb2xpY3k6IGFjdGlvbi5wZXJtaXNzaW9uIH0pKSxcbiAgICAgICkubGVuZ3RoID4gMDtcbiAgICB0aGlzLnNldENvbHVtbldpZHRocyhERUZBVUxUX0FDVElPTlNfQ09MVU1OX1dJRFRIKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29sdW1uV2lkdGhzKGFjdGlvbnNDb2x1bW46IG51bWJlcikge1xuICAgIGNvbnN0IHdpZHRocyA9IFthY3Rpb25zQ29sdW1uXTtcbiAgICB0aGlzLnByb3BMaXN0LmZvckVhY2goKHsgdmFsdWU6IHByb3AgfSkgPT4ge1xuICAgICAgd2lkdGhzLnB1c2gocHJvcC5jb2x1bW5XaWR0aCk7XG4gICAgfSk7XG4gICAgKHRoaXMuY29sdW1uV2lkdGhzIGFzIGFueSkgPSB3aWR0aHM7XG4gIH1cblxuICBwcml2YXRlIGdldERhdGUodmFsdWU6IERhdGUsIGZvcm1hdDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHZhbHVlID8gZm9ybWF0RGF0ZSh2YWx1ZSwgZm9ybWF0LCB0aGlzLmxvY2FsZSkgOiAnJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SWNvbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHJldHVybiB2YWx1ZVxuICAgICAgPyAnPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtc3VjY2Vzc1wiPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIj48L2k+PC9kaXY+J1xuICAgICAgOiAnPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtZGFuZ2VyXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2Rpdj4nO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFbnVtKHJvd1ZhbHVlOiBhbnksIGxpc3Q6IEFycmF5PEFCUC5PcHRpb248YW55Pj4pIHtcbiAgICBpZiAoIWxpc3QpIHJldHVybiByb3dWYWx1ZTtcbiAgICBjb25zdCB7IGtleSB9ID0gbGlzdC5maW5kKCh7IHZhbHVlIH0pID0+IHZhbHVlID09PSByb3dWYWx1ZSk7XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIGdldENvbnRlbnQocHJvcDogRW50aXR5UHJvcDxSPiwgZGF0YTogUHJvcERhdGEpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBwcm9wLnZhbHVlUmVzb2x2ZXIoZGF0YSkucGlwZShcbiAgICAgIG1hcCh2YWx1ZSA9PiB7XG4gICAgICAgIHN3aXRjaCAocHJvcC50eXBlKSB7XG4gICAgICAgICAgY2FzZSBlUHJvcFR5cGUuQm9vbGVhbjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEljb24odmFsdWUpO1xuICAgICAgICAgIGNhc2UgZVByb3BUeXBlLkRhdGU6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlKHZhbHVlLCBnZXRTaG9ydERhdGVGb3JtYXQodGhpcy5jb25maWcpKTtcbiAgICAgICAgICBjYXNlIGVQcm9wVHlwZS5UaW1lOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZSh2YWx1ZSwgZ2V0U2hvcnRUaW1lRm9ybWF0KHRoaXMuY29uZmlnKSk7XG4gICAgICAgICAgY2FzZSBlUHJvcFR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlKHZhbHVlLCBnZXRTaG9ydERhdGVTaG9ydFRpbWVGb3JtYXQodGhpcy5jb25maWcpKTtcbiAgICAgICAgICBjYXNlIGVQcm9wVHlwZS5FbnVtOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RW51bSh2YWx1ZSwgcHJvcC5lbnVtTGlzdCk7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAvLyBNb3JlIHR5cGVzIGNhbiBiZSBoYW5kbGVkIGluIHRoZSBmdXR1cmVcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHsgZGF0YSB9OiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCFkYXRhPy5jdXJyZW50VmFsdWUpIHJldHVybjtcblxuICAgIHRoaXMuZGF0YSA9IGRhdGEuY3VycmVudFZhbHVlLm1hcCgocmVjb3JkLCBpbmRleCkgPT4ge1xuICAgICAgdGhpcy5wcm9wTGlzdC5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICBjb25zdCBwcm9wRGF0YSA9IHsgZ2V0SW5qZWN0ZWQ6IHRoaXMuZ2V0SW5qZWN0ZWQsIHJlY29yZCwgaW5kZXggfSBhcyBhbnk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRDb250ZW50KHByb3AudmFsdWUsIHByb3BEYXRhKTtcblxuICAgICAgICBjb25zdCBwcm9wS2V5ID0gYF8ke3Byb3AudmFsdWUubmFtZX1gO1xuICAgICAgICByZWNvcmRbcHJvcEtleV0gPSB7XG4gICAgICAgICAgdmlzaWJsZTogcHJvcC52YWx1ZS52aXNpYmxlKHByb3BEYXRhKSxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHByb3AudmFsdWUuY29tcG9uZW50KSB7XG4gICAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBQUk9QX0RBVEFfU1RSRUFNLFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB0aGlzLmluamVjdG9yLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmVjb3JkW3Byb3BLZXldLmluamVjdG9yID0gaW5qZWN0b3I7XG4gICAgICAgICAgcmVjb3JkW3Byb3BLZXldLmNvbXBvbmVudCA9IHByb3AudmFsdWUuY29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlY29yZDtcbiAgICB9KTtcbiAgfVxufVxuIiwiPG5neC1kYXRhdGFibGUgZGVmYXVsdCBbcm93c109XCJkYXRhXCIgW2NvdW50XT1cInJlY29yZHNUb3RhbFwiIFtsaXN0XT1cImxpc3RcIj5cbiAgPG5neC1kYXRhdGFibGUtY29sdW1uXG4gICAgKm5nSWY9XCJhY3Rpb25zVGVtcGxhdGUgfHwgKGFjdGlvbkxpc3QubGVuZ3RoICYmIGhhc0F0TGVhc3RPbmVQZXJtaXR0ZWRBY3Rpb24pXCJcbiAgICBbbmFtZV09XCJhY3Rpb25zVGV4dCB8IGFicExvY2FsaXphdGlvblwiXG4gICAgW21heFdpZHRoXT1cImNvbHVtbldpZHRoc1swXVwiXG4gICAgW3dpZHRoXT1cImNvbHVtbldpZHRoc1swXVwiXG4gICAgW3NvcnRhYmxlXT1cImZhbHNlXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LWk9XCJyb3dJbmRleFwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhY3Rpb25zVGVtcGxhdGUgfHwgZ3JpZEFjdGlvbnM7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3csIGluZGV4OiBpIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNncmlkQWN0aW9ucz5cbiAgICAgICAgPGFicC1ncmlkLWFjdGlvbnMgW2luZGV4XT1cImlcIiBbcmVjb3JkXT1cInJvd1wiIHRleHQ9XCJBYnBVaTo6QWN0aW9uc1wiPjwvYWJwLWdyaWQtYWN0aW9ucz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cblxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wIG9mIHByb3BMaXN0OyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW5cbiAgICAgIFt3aWR0aF09XCJjb2x1bW5XaWR0aHNbaSArIDFdIHx8IDIwMFwiXG4gICAgICBbbmFtZV09XCJwcm9wLmRpc3BsYXlOYW1lIHwgYWJwTG9jYWxpemF0aW9uXCJcbiAgICAgIFtwcm9wXT1cInByb3AubmFtZVwiXG4gICAgICBbc29ydGFibGVdPVwicHJvcC5zb3J0YWJsZVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtaT1cImluZGV4XCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGFpbmVyICphYnBQZXJtaXNzaW9uPVwicHJvcC5wZXJtaXNzaW9uXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd1snXycgKyBwcm9wLm5hbWVdPy52aXNpYmxlXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiIXJvd1snXycgKyBwcm9wLm5hbWVdLmNvbXBvbmVudDsgZWxzZSBjb21wb25lbnRcIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJvd1snXycgKyBwcm9wLm5hbWVdPy52YWx1ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgIHByb3AuYWN0aW9uICYmIHByb3AuYWN0aW9uKHsgZ2V0SW5qZWN0ZWQ6IGdldEluamVjdGVkLCByZWNvcmQ6IHJvdywgaW5kZXg6IGkgfSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvaW50ZXJdPVwicHJvcC5hY3Rpb25cIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICByb3dbJ18nICsgcHJvcC5uYW1lXS5jb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgaW5qZWN0b3I6IHJvd1snXycgKyBwcm9wLm5hbWVdLmluamVjdG9yXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZ3gtZGF0YXRhYmxlPlxuIl19