@enigmatry/entry-components 1.15.1-preview.8 → 15.0.0-preview

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/README.md +2 -1
  2. package/assets/fonts/Montserrat/Montserrat-bold.eot +0 -0
  3. package/assets/fonts/Montserrat/Montserrat-bold.ttf +0 -0
  4. package/assets/fonts/Montserrat/Montserrat-bold.woff +0 -0
  5. package/assets/fonts/Montserrat/Montserrat-bold.woff2 +0 -0
  6. package/assets/fonts/OpenSans/OpenSans-bold.eot +0 -0
  7. package/assets/fonts/OpenSans/OpenSans-bold.ttf +0 -0
  8. package/assets/fonts/OpenSans/OpenSans-bold.woff +0 -0
  9. package/assets/fonts/OpenSans/OpenSans-bold.woff2 +0 -0
  10. package/assets/fonts/OpenSans/OpenSans-normal.eot +0 -0
  11. package/assets/fonts/OpenSans/OpenSans-normal.ttf +0 -0
  12. package/assets/fonts/OpenSans/OpenSans-normal.woff +0 -0
  13. package/assets/fonts/OpenSans/OpenSans-normal.woff2 +0 -0
  14. package/assets/fonts/Roboto/Roboto-bold.woff2 +0 -0
  15. package/assets/fonts/Roboto/Roboto-normal.woff2 +0 -0
  16. package/button/README.md +47 -0
  17. package/button/entry-button-config.d.ts +26 -0
  18. package/button/entry-button.directive.d.ts +18 -0
  19. package/button/entry-button.module.d.ts +9 -0
  20. package/{header → button}/index.d.ts +1 -1
  21. package/button/public-api.d.ts +3 -0
  22. package/dialog/README.md +2 -2
  23. package/dialog/entry-dialog-buttons-alignment.type.d.ts +1 -1
  24. package/dialog/entry-dialog-config.model.d.ts +1 -1
  25. package/dialog/entry-dialog.module.d.ts +4 -1
  26. package/esm2020/{header/enigmatry-entry-components-header.mjs → button/enigmatry-entry-components-button.mjs} +1 -1
  27. package/esm2020/button/entry-button-config.mjs +22 -0
  28. package/esm2020/button/entry-button.directive.mjs +56 -0
  29. package/esm2020/button/entry-button.module.mjs +28 -0
  30. package/esm2020/button/public-api.mjs +4 -0
  31. package/esm2020/dialog/dialogs/entry-dialog.component.mjs +8 -5
  32. package/esm2020/dialog/entry-dialog-buttons-alignment.type.mjs +1 -2
  33. package/esm2020/dialog/entry-dialog-config.model.mjs +3 -3
  34. package/esm2020/dialog/entry-dialog.module.mjs +16 -4
  35. package/esm2020/file-input/enigmatry-entry-components-file-input.mjs +5 -0
  36. package/esm2020/file-input/entry-file-input.component.mjs +197 -0
  37. package/esm2020/file-input/entry-file-input.module.mjs +40 -0
  38. package/esm2020/file-input/public-api.mjs +3 -0
  39. package/esm2020/permissions/enigmatry-entry-components-permissions.mjs +5 -0
  40. package/esm2020/permissions/permission-type.mjs +2 -0
  41. package/esm2020/permissions/permission.directive.mjs +35 -0
  42. package/esm2020/permissions/permission.guard.mjs +14 -0
  43. package/esm2020/permissions/permission.module.mjs +29 -0
  44. package/esm2020/permissions/permission.pipe.mjs +20 -0
  45. package/esm2020/permissions/permission.service.mjs +3 -0
  46. package/esm2020/permissions/public-api.mjs +6 -0
  47. package/esm2020/public-api.mjs +4 -3
  48. package/esm2020/search-filter/entry-search-filter.component.mjs +8 -6
  49. package/esm2020/search-filter/entry-search-filter.module.mjs +12 -4
  50. package/esm2020/search-filter/search-filter-input/search-filter-input.component.mjs +9 -4
  51. package/esm2020/table/components/entry-cell/entry-cell.component.mjs +23 -0
  52. package/esm2020/table/components/entry-cell-context-menu/entry-cell-context-menu.component.mjs +33 -0
  53. package/esm2020/table/components/entry-cell-formatted-value/entry-cell-formatted-value.component.mjs +25 -0
  54. package/esm2020/table/components/entry-table/entry-table.component.mjs +248 -0
  55. package/esm2020/table/components/index.mjs +5 -0
  56. package/esm2020/table/enigmatry-entry-components-table.mjs +5 -0
  57. package/esm2020/table/entry-table.module.mjs +84 -0
  58. package/esm2020/table/interfaces/cell-template.mjs +2 -0
  59. package/esm2020/table/interfaces/column-def.mjs +2 -0
  60. package/esm2020/table/interfaces/column-sort-prop.mjs +2 -0
  61. package/esm2020/table/interfaces/column-type-parameter.mjs +2 -0
  62. package/esm2020/table/interfaces/column-type.mjs +2 -0
  63. package/esm2020/table/interfaces/context-menu-item.mjs +2 -0
  64. package/esm2020/table/interfaces/entry-table-config.mjs +18 -0
  65. package/esm2020/table/interfaces/index.mjs +13 -0
  66. package/esm2020/table/interfaces/paged-query.mjs +34 -0
  67. package/esm2020/table/interfaces/pagination.mjs +2 -0
  68. package/esm2020/table/interfaces/row-class-formatter.mjs +2 -0
  69. package/esm2020/table/interfaces/row-context-menu-formatter.mjs +2 -0
  70. package/esm2020/table/interfaces/row-selection-formatter.mjs +2 -0
  71. package/esm2020/table/public-api.mjs +4 -0
  72. package/esm2020/validation/entry-form-errors.component.mjs +7 -3
  73. package/fesm2015/enigmatry-entry-components-button.mjs +110 -0
  74. package/fesm2015/enigmatry-entry-components-button.mjs.map +1 -0
  75. package/fesm2015/enigmatry-entry-components-dialog.mjs +22 -7
  76. package/fesm2015/enigmatry-entry-components-dialog.mjs.map +1 -1
  77. package/fesm2015/enigmatry-entry-components-file-input.mjs +237 -0
  78. package/fesm2015/enigmatry-entry-components-file-input.mjs.map +1 -0
  79. package/fesm2015/enigmatry-entry-components-permissions.mjs +98 -0
  80. package/fesm2015/enigmatry-entry-components-permissions.mjs.map +1 -0
  81. package/fesm2015/enigmatry-entry-components-search-filter.mjs +24 -9
  82. package/fesm2015/enigmatry-entry-components-search-filter.mjs.map +1 -1
  83. package/fesm2015/enigmatry-entry-components-table.mjs +459 -0
  84. package/fesm2015/enigmatry-entry-components-table.mjs.map +1 -0
  85. package/fesm2015/enigmatry-entry-components-validation.mjs +6 -2
  86. package/fesm2015/enigmatry-entry-components-validation.mjs.map +1 -1
  87. package/fesm2015/enigmatry-entry-components.mjs +3 -2
  88. package/fesm2015/enigmatry-entry-components.mjs.map +1 -1
  89. package/fesm2020/enigmatry-entry-components-button.mjs +107 -0
  90. package/fesm2020/enigmatry-entry-components-button.mjs.map +1 -0
  91. package/fesm2020/enigmatry-entry-components-dialog.mjs +22 -7
  92. package/fesm2020/enigmatry-entry-components-dialog.mjs.map +1 -1
  93. package/fesm2020/enigmatry-entry-components-file-input.mjs +240 -0
  94. package/fesm2020/enigmatry-entry-components-file-input.mjs.map +1 -0
  95. package/fesm2020/enigmatry-entry-components-permissions.mjs +97 -0
  96. package/fesm2020/enigmatry-entry-components-permissions.mjs.map +1 -0
  97. package/fesm2020/enigmatry-entry-components-search-filter.mjs +24 -9
  98. package/fesm2020/enigmatry-entry-components-search-filter.mjs.map +1 -1
  99. package/fesm2020/enigmatry-entry-components-table.mjs +450 -0
  100. package/fesm2020/enigmatry-entry-components-table.mjs.map +1 -0
  101. package/fesm2020/enigmatry-entry-components-validation.mjs +6 -2
  102. package/fesm2020/enigmatry-entry-components-validation.mjs.map +1 -1
  103. package/fesm2020/enigmatry-entry-components.mjs +3 -2
  104. package/fesm2020/enigmatry-entry-components.mjs.map +1 -1
  105. package/file-input/README.md +71 -0
  106. package/file-input/entry-file-input.component.d.ts +74 -0
  107. package/file-input/entry-file-input.module.d.ts +12 -0
  108. package/file-input/index.d.ts +5 -0
  109. package/file-input/public-api.d.ts +2 -0
  110. package/package.json +31 -15
  111. package/permissions/README.md +68 -0
  112. package/permissions/index.d.ts +5 -0
  113. package/permissions/permission-type.d.ts +3 -0
  114. package/permissions/permission.directive.d.ts +11 -0
  115. package/permissions/permission.guard.d.ts +2 -0
  116. package/permissions/permission.module.d.ts +9 -0
  117. package/permissions/permission.pipe.d.ts +11 -0
  118. package/permissions/permission.service.d.ts +4 -0
  119. package/permissions/public-api.d.ts +5 -0
  120. package/public-api.d.ts +3 -2
  121. package/search-filter/entry-search-filter.module.d.ts +4 -2
  122. package/search-filter/search-filter-input/search-filter-input.component.d.ts +4 -2
  123. package/styles/_generator.scss +15 -10
  124. package/styles/modules/_default-theme.scss +36 -59
  125. package/styles/modules/components/buttons/_generator.scss +8 -0
  126. package/styles/modules/components/dialogs/_generator.scss +8 -3
  127. package/styles/modules/components/forms/_generator.scss +12 -6
  128. package/styles/modules/components/inputs/_generator.scss +15 -0
  129. package/styles/modules/components/search-filter/_generator.scss +15 -0
  130. package/styles/modules/components/tables/_cells.scss +11 -8
  131. package/styles/modules/components/tables/_no-result.scss +1 -3
  132. package/styles/modules/components/tables/_rows.scss +10 -40
  133. package/styles/modules/components/tables/_sorting.scss +2 -9
  134. package/styles/modules/typography/_fonts.scss +35 -42
  135. package/styles/modules/vendors/angular-material/_generator.scss +46 -0
  136. package/styles/modules/vendors/angular-material/_palette-generator.scss +32 -0
  137. package/styles/modules/vendors/angular-material/_typography-generator.scss +101 -0
  138. package/styles/partials/core/components/_index.scss +3 -3
  139. package/styles/partials/core/components/dialogs/_general.scss +10 -64
  140. package/styles/partials/core/components/forms/_general.scss +9 -13
  141. package/styles/partials/core/components/search-filter/_general.scss +9 -0
  142. package/styles/partials/core/components/tables/_general.scss +17 -0
  143. package/styles/partials/generator-test.scss +38 -0
  144. package/table/README.md +76 -0
  145. package/table/components/entry-cell/entry-cell.component.d.ts +10 -0
  146. package/table/components/entry-cell-context-menu/entry-cell-context-menu.component.d.ts +14 -0
  147. package/table/components/entry-cell-formatted-value/entry-cell-formatted-value.component.d.ts +10 -0
  148. package/table/components/entry-table/entry-table.component.d.ts +81 -0
  149. package/table/components/index.d.ts +4 -0
  150. package/table/entry-table.module.d.ts +20 -0
  151. package/{toolbar → table}/index.d.ts +1 -1
  152. package/table/interfaces/cell-template.d.ts +4 -0
  153. package/table/interfaces/column-def.d.ts +20 -0
  154. package/table/interfaces/column-sort-prop.d.ts +5 -0
  155. package/table/interfaces/column-type-parameter.d.ts +9 -0
  156. package/table/interfaces/column-type.d.ts +1 -0
  157. package/table/interfaces/context-menu-item.d.ts +6 -0
  158. package/table/interfaces/entry-table-config.d.ts +11 -0
  159. package/table/interfaces/index.d.ts +12 -0
  160. package/table/interfaces/paged-query.d.ts +14 -0
  161. package/table/interfaces/pagination.d.ts +19 -0
  162. package/table/interfaces/row-class-formatter.d.ts +3 -0
  163. package/table/interfaces/row-context-menu-formatter.d.ts +4 -0
  164. package/table/interfaces/row-selection-formatter.d.ts +4 -0
  165. package/table/public-api.d.ts +3 -0
  166. package/esm2020/header/entry-header.component.mjs +0 -13
  167. package/esm2020/header/entry-header.module.mjs +0 -24
  168. package/esm2020/header/public-api.mjs +0 -3
  169. package/esm2020/toolbar/enigmatry-entry-components-toolbar.mjs +0 -5
  170. package/esm2020/toolbar/entry-toolbar.component.mjs +0 -43
  171. package/esm2020/toolbar/entry-toolbar.module.mjs +0 -24
  172. package/esm2020/toolbar/public-api.mjs +0 -3
  173. package/fesm2015/enigmatry-entry-components-header.mjs +0 -41
  174. package/fesm2015/enigmatry-entry-components-header.mjs.map +0 -1
  175. package/fesm2015/enigmatry-entry-components-toolbar.mjs +0 -71
  176. package/fesm2015/enigmatry-entry-components-toolbar.mjs.map +0 -1
  177. package/fesm2020/enigmatry-entry-components-header.mjs +0 -41
  178. package/fesm2020/enigmatry-entry-components-header.mjs.map +0 -1
  179. package/fesm2020/enigmatry-entry-components-toolbar.mjs +0 -71
  180. package/fesm2020/enigmatry-entry-components-toolbar.mjs.map +0 -1
  181. package/header/README.md +0 -41
  182. package/header/entry-header.component.d.ts +0 -6
  183. package/header/entry-header.module.d.ts +0 -8
  184. package/header/public-api.d.ts +0 -2
  185. package/styles/modules/components/forms/outlines/_field-outlines.scss +0 -45
  186. package/styles/modules/components/forms/outlines/_form-fields.scss +0 -26
  187. package/styles/modules/components/forms/outlines/_general.scss +0 -9
  188. package/styles/modules/components/forms/selectors/_checkboxes.scss +0 -55
  189. package/styles/modules/components/forms/selectors/_radio-buttons.scss +0 -39
  190. package/styles/modules/components/headers/_generator.scss +0 -12
  191. package/styles/modules/elements/_generator.scss +0 -20
  192. package/styles/modules/elements/anchors/_generator.scss +0 -16
  193. package/styles/modules/elements/buttons/_default.scss +0 -12
  194. package/styles/modules/elements/buttons/_generator.scss +0 -45
  195. package/styles/modules/states/_hover.scss +0 -18
  196. package/styles/partials/core/components/headers/_general.scss +0 -7
  197. package/styles/partials/core/components/tables/_action-cells.scss +0 -26
  198. package/styles/partials/core/components/tables/_cells.scss +0 -39
  199. package/styles/partials/core/components/tables/_index.scss +0 -5
  200. package/styles/partials/core/components/tables/_layout.scss +0 -47
  201. package/styles/partials/core/components/tables/_rows.scss +0 -13
  202. package/styles/partials/core/components/tables/_sorting.scss +0 -8
  203. package/styles/partials/test.scss +0 -35
  204. package/toolbar/README.md +0 -39
  205. package/toolbar/entry-toolbar.component.d.ts +0 -28
  206. package/toolbar/entry-toolbar.module.d.ts +0 -8
  207. package/toolbar/public-api.d.ts +0 -2
@@ -12,14 +12,19 @@ import * as i7 from "../search-filter-config.model";
12
12
  export class EntrySearchFilterInputComponent {
13
13
  constructor(config) {
14
14
  this.config = config;
15
- this.controlType = ControlType;
15
+ }
16
+ get textSearchFilter() {
17
+ return this.searchFilter.controlType === ControlType.text && this.searchFilter;
18
+ }
19
+ get selectSearchFilter() {
20
+ return this.searchFilter.controlType === ControlType.select && this.searchFilter;
16
21
  }
17
22
  }
18
23
  EntrySearchFilterInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntrySearchFilterInputComponent, deps: [{ token: ENTRY_SEARCH_FILTER_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
19
- EntrySearchFilterInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EntrySearchFilterInputComponent, selector: "entry-search-filter-input", inputs: { searchFilter: "searchFilter", form: "form" }, ngImport: i0, template: "<mat-form-field [formGroup]=\"form\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n\n <div [ngSwitch]=\"searchFilter.controlType\">\n\n <input *ngSwitchCase=\"controlType.text\"\n [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\"\n [type]=\"searchFilter.type\" matInput [placeholder]=\"searchFilter.placeholder\" [maxlength]=\"searchFilter.maxLength\">\n\n <mat-select *ngSwitchCase=\"controlType.select\"\n [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [multiple]=\"searchFilter.multiSelect\">\n <mat-option *ngIf=\"!searchFilter.multiSelect\" [value]=\"undefined\">\n {{config.noneSelectedOptionText}}\n </mat-option>\n <div *ngIf=\"searchFilter.options$ !== undefined; else fixedSelectValues\">\n <mat-option *ngFor=\"let option of searchFilter.options$ | async\" [value]=\"option.key\">{{option.label}}</mat-option>\n </div>\n <ng-template #fixedSelectValues>\n <mat-option *ngFor=\"let option of searchFilter.options\" [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-template>\n </mat-select>\n\n </div>\n</mat-form-field>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
24
+ EntrySearchFilterInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EntrySearchFilterInputComponent, selector: "entry-search-filter-input", inputs: { searchFilter: "searchFilter", form: "form" }, ngImport: i0, template: "<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n\n <ng-container *ngIf=\"textSearchFilter as searchFilter\">\n <input [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [type]=\"searchFilter.type\" matInput\n [placeholder]=\"searchFilter.placeholder\" [maxlength]=\"searchFilter.maxLength\">\n </ng-container>\n\n <ng-container *ngIf=\"selectSearchFilter as searchFilter\">\n <mat-select [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [multiple]=\"searchFilter.multiSelect\">\n <mat-option *ngIf=\"!searchFilter.multiSelect\" [value]=\"undefined\">\n {{config.noneSelectedOptionText}}\n </mat-option>\n <div *ngIf=\"searchFilter.options$ !== undefined; else fixedSelectValues\">\n <mat-option *ngFor=\"let option of searchFilter.options$ | async\"\n [value]=\"option.key\">{{option.label}}</mat-option>\n </div>\n <ng-template #fixedSelectValues>\n <mat-option *ngFor=\"let option of searchFilter.options\" [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-template>\n </mat-select>\n </ng-container>\n\n</mat-form-field>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntrySearchFilterInputComponent, decorators: [{
21
26
  type: Component,
22
- args: [{ selector: 'entry-search-filter-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field [formGroup]=\"form\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n\n <div [ngSwitch]=\"searchFilter.controlType\">\n\n <input *ngSwitchCase=\"controlType.text\"\n [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\"\n [type]=\"searchFilter.type\" matInput [placeholder]=\"searchFilter.placeholder\" [maxlength]=\"searchFilter.maxLength\">\n\n <mat-select *ngSwitchCase=\"controlType.select\"\n [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [multiple]=\"searchFilter.multiSelect\">\n <mat-option *ngIf=\"!searchFilter.multiSelect\" [value]=\"undefined\">\n {{config.noneSelectedOptionText}}\n </mat-option>\n <div *ngIf=\"searchFilter.options$ !== undefined; else fixedSelectValues\">\n <mat-option *ngFor=\"let option of searchFilter.options$ | async\" [value]=\"option.key\">{{option.label}}</mat-option>\n </div>\n <ng-template #fixedSelectValues>\n <mat-option *ngFor=\"let option of searchFilter.options\" [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-template>\n </mat-select>\n\n </div>\n</mat-form-field>" }]
27
+ args: [{ selector: 'entry-search-filter-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n\n <ng-container *ngIf=\"textSearchFilter as searchFilter\">\n <input [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [type]=\"searchFilter.type\" matInput\n [placeholder]=\"searchFilter.placeholder\" [maxlength]=\"searchFilter.maxLength\">\n </ng-container>\n\n <ng-container *ngIf=\"selectSearchFilter as searchFilter\">\n <mat-select [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [multiple]=\"searchFilter.multiSelect\">\n <mat-option *ngIf=\"!searchFilter.multiSelect\" [value]=\"undefined\">\n {{config.noneSelectedOptionText}}\n </mat-option>\n <div *ngIf=\"searchFilter.options$ !== undefined; else fixedSelectValues\">\n <mat-option *ngFor=\"let option of searchFilter.options$ | async\"\n [value]=\"option.key\">{{option.label}}</mat-option>\n </div>\n <ng-template #fixedSelectValues>\n <mat-option *ngFor=\"let option of searchFilter.options\" [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-template>\n </mat-select>\n </ng-container>\n\n</mat-form-field>" }]
23
28
  }], ctorParameters: function () { return [{ type: i7.EntrySearchFilterConfig, decorators: [{
24
29
  type: Inject,
25
30
  args: [ENTRY_SEARCH_FILTER_CONFIG]
@@ -28,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
28
33
  }], form: [{
29
34
  type: Input
30
35
  }] } });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlci1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvc2VhcmNoLWZpbHRlci9zZWFyY2gtZmlsdGVyLWlucHV0L3NlYXJjaC1maWx0ZXItaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL3NlYXJjaC1maWx0ZXIvc2VhcmNoLWZpbHRlci1pbnB1dC9zZWFyY2gtZmlsdGVyLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDBCQUEwQixFQUEyQixNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7QUFRcEcsTUFBTSxPQUFPLCtCQUErQjtJQVExQyxZQUF1RCxNQUErQjtRQUEvQixXQUFNLEdBQU4sTUFBTSxDQUF5QjtRQUZ0RixnQkFBVyxHQUFHLFdBQVcsQ0FBQztJQUVnRSxDQUFDOzs0SEFSaEYsK0JBQStCLGtCQVF0QiwwQkFBMEI7Z0hBUm5DLCtCQUErQix5SENYNUMscXFDQXVCaUI7MkZEWkosK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLDJCQUEyQixtQkFFcEIsdUJBQXVCLENBQUMsTUFBTTs7MEJBVWxDLE1BQU07MkJBQUMsMEJBQTBCOzRDQU5yQyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb250cm9sVHlwZSB9IGZyb20gJy4vY29udHJvbC10eXBlLm1vZGVsJztcbmltcG9ydCB7IEVOVFJZX1NFQVJDSF9GSUxURVJfQ09ORklHLCBFbnRyeVNlYXJjaEZpbHRlckNvbmZpZyB9IGZyb20gJy4uL3NlYXJjaC1maWx0ZXItY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IFNlYXJjaEZpbHRlckJhc2UgfSBmcm9tICcuL3NlYXJjaC1maWx0ZXItYmFzZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VudHJ5LXNlYXJjaC1maWx0ZXItaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWZpbHRlci1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEVudHJ5U2VhcmNoRmlsdGVySW5wdXRDb21wb25lbnQ8VD4ge1xuICAvKiogQ29uZmlndXJhdGlvbiBvZiB0aGUgc2VhcmNoIGZpbHRlcnMgaW5wdXRzIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIHNlYXJjaC1maWx0ZXIgY29tcG9uZW50LiAqL1xuICBASW5wdXQoKSBzZWFyY2hGaWx0ZXI6IFNlYXJjaEZpbHRlckJhc2U8VD47XG4gIC8qKiBGb3JtIGdyb3VwIHRvIHdoaWNoIHRoZSBzZWFyY2gtZmlsdGVyIGlucHV0IGNvbXBvbmVudCB3aWxsIGJlIGFkZGVkLiAqL1xuICBASW5wdXQoKSBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIGNvbnRyb2xUeXBlID0gQ29udHJvbFR5cGU7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChFTlRSWV9TRUFSQ0hfRklMVEVSX0NPTkZJRykgcHVibGljIGNvbmZpZzogRW50cnlTZWFyY2hGaWx0ZXJDb25maWcpIHsgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICA8bWF0LWxhYmVsIFthdHRyLmZvcl09XCJzZWFyY2hGaWx0ZXIua2V5XCI+e3tzZWFyY2hGaWx0ZXIubGFiZWx9fTwvbWF0LWxhYmVsPlxuXG4gIDxkaXYgW25nU3dpdGNoXT1cInNlYXJjaEZpbHRlci5jb250cm9sVHlwZVwiPlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJjb250cm9sVHlwZS50ZXh0XCJcbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwic2VhcmNoRmlsdGVyLmtleVwiIFtpZF09XCJzZWFyY2hGaWx0ZXIua2V5XCJcbiAgICAgIFt0eXBlXT1cInNlYXJjaEZpbHRlci50eXBlXCIgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cInNlYXJjaEZpbHRlci5wbGFjZWhvbGRlclwiIFttYXhsZW5ndGhdPVwic2VhcmNoRmlsdGVyLm1heExlbmd0aFwiPlxuXG4gICAgPG1hdC1zZWxlY3QgKm5nU3dpdGNoQ2FzZT1cImNvbnRyb2xUeXBlLnNlbGVjdFwiXG4gICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInNlYXJjaEZpbHRlci5rZXlcIiBbaWRdPVwic2VhcmNoRmlsdGVyLmtleVwiIFttdWx0aXBsZV09XCJzZWFyY2hGaWx0ZXIubXVsdGlTZWxlY3RcIj5cbiAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiIXNlYXJjaEZpbHRlci5tdWx0aVNlbGVjdFwiIFt2YWx1ZV09XCJ1bmRlZmluZWRcIj5cbiAgICAgICAge3tjb25maWcubm9uZVNlbGVjdGVkT3B0aW9uVGV4dH19XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoRmlsdGVyLm9wdGlvbnMkICE9PSB1bmRlZmluZWQ7IGVsc2UgZml4ZWRTZWxlY3RWYWx1ZXNcIj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzZWFyY2hGaWx0ZXIub3B0aW9ucyQgfCBhc3luY1wiIFt2YWx1ZV09XCJvcHRpb24ua2V5XCI+e3tvcHRpb24ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlICNmaXhlZFNlbGVjdFZhbHVlcz5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzZWFyY2hGaWx0ZXIub3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24ua2V5XCI+e3tvcHRpb24ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9tYXQtc2VsZWN0PlxuXG4gIDwvZGl2PlxuPC9tYXQtZm9ybS1maWVsZD4iXX0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlci1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvc2VhcmNoLWZpbHRlci9zZWFyY2gtZmlsdGVyLWlucHV0L3NlYXJjaC1maWx0ZXItaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL3NlYXJjaC1maWx0ZXIvc2VhcmNoLWZpbHRlci1pbnB1dC9zZWFyY2gtZmlsdGVyLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDBCQUEwQixFQUEyQixNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7QUFVcEcsTUFBTSxPQUFPLCtCQUErQjtJQU0xQyxZQUF1RCxNQUErQjtRQUEvQixXQUFNLEdBQU4sTUFBTSxDQUF5QjtJQUFJLENBQUM7SUFFM0YsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFnQyxDQUFDO0lBQ3JHLENBQUM7SUFDRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQXFDLENBQUM7SUFDNUcsQ0FBQzs7NEhBYlUsK0JBQStCLGtCQU10QiwwQkFBMEI7Z0hBTm5DLCtCQUErQix5SENiNUMsMnRDQXVCaUI7MkZEVkosK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLDJCQUEyQixtQkFFcEIsdUJBQXVCLENBQUMsTUFBTTs7MEJBUWxDLE1BQU07MkJBQUMsMEJBQTBCOzRDQUpyQyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb250cm9sVHlwZSB9IGZyb20gJy4vY29udHJvbC10eXBlLm1vZGVsJztcbmltcG9ydCB7IEVOVFJZX1NFQVJDSF9GSUxURVJfQ09ORklHLCBFbnRyeVNlYXJjaEZpbHRlckNvbmZpZyB9IGZyb20gJy4uL3NlYXJjaC1maWx0ZXItY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IFNlYXJjaEZpbHRlckJhc2UgfSBmcm9tICcuL3NlYXJjaC1maWx0ZXItYmFzZS5tb2RlbCc7XG5pbXBvcnQgeyBTZWxlY3RTZWFyY2hGaWx0ZXIgfSBmcm9tICcuL2lucHV0cy9zZWxlY3Qtc2VhcmNoLWZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBUZXh0U2VhcmNoRmlsdGVyIH0gZnJvbSAnLi9pbnB1dHMvdGV4dC1zZWFyY2gtZmlsdGVyLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW50cnktc2VhcmNoLWZpbHRlci1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtZmlsdGVyLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRW50cnlTZWFyY2hGaWx0ZXJJbnB1dENvbXBvbmVudDxUPiB7XG4gIC8qKiBDb25maWd1cmF0aW9uIG9mIHRoZSBzZWFyY2ggZmlsdGVycyBpbnB1dHMgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgc2VhcmNoLWZpbHRlciBjb21wb25lbnQuICovXG4gIEBJbnB1dCgpIHNlYXJjaEZpbHRlcjogU2VhcmNoRmlsdGVyQmFzZTxUPjtcbiAgLyoqIEZvcm0gZ3JvdXAgdG8gd2hpY2ggdGhlIHNlYXJjaC1maWx0ZXIgaW5wdXQgY29tcG9uZW50IHdpbGwgYmUgYWRkZWQuICovXG4gIEBJbnB1dCgpIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChFTlRSWV9TRUFSQ0hfRklMVEVSX0NPTkZJRykgcHVibGljIGNvbmZpZzogRW50cnlTZWFyY2hGaWx0ZXJDb25maWcpIHsgfVxuXG4gIGdldCB0ZXh0U2VhcmNoRmlsdGVyKCk6IFRleHRTZWFyY2hGaWx0ZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaEZpbHRlci5jb250cm9sVHlwZSA9PT0gQ29udHJvbFR5cGUudGV4dCAmJiB0aGlzLnNlYXJjaEZpbHRlciBhcyBUZXh0U2VhcmNoRmlsdGVyO1xuICB9XG4gIGdldCBzZWxlY3RTZWFyY2hGaWx0ZXIoKTogU2VsZWN0U2VhcmNoRmlsdGVyPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hGaWx0ZXIuY29udHJvbFR5cGUgPT09IENvbnRyb2xUeXBlLnNlbGVjdCAmJiB0aGlzLnNlYXJjaEZpbHRlciBhcyBTZWxlY3RTZWFyY2hGaWx0ZXI8VD47XG4gIH1cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBbZm9ybUdyb3VwXT1cImZvcm1cIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gIDxtYXQtbGFiZWwgW2F0dHIuZm9yXT1cInNlYXJjaEZpbHRlci5rZXlcIj57e3NlYXJjaEZpbHRlci5sYWJlbH19PC9tYXQtbGFiZWw+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRleHRTZWFyY2hGaWx0ZXIgYXMgc2VhcmNoRmlsdGVyXCI+XG4gICAgPGlucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwic2VhcmNoRmlsdGVyLmtleVwiIFtpZF09XCJzZWFyY2hGaWx0ZXIua2V5XCIgW3R5cGVdPVwic2VhcmNoRmlsdGVyLnR5cGVcIiBtYXRJbnB1dFxuICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaEZpbHRlci5wbGFjZWhvbGRlclwiIFttYXhsZW5ndGhdPVwic2VhcmNoRmlsdGVyLm1heExlbmd0aFwiPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0U2VhcmNoRmlsdGVyIGFzIHNlYXJjaEZpbHRlclwiPlxuICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwic2VhcmNoRmlsdGVyLmtleVwiIFtpZF09XCJzZWFyY2hGaWx0ZXIua2V5XCIgW211bHRpcGxlXT1cInNlYXJjaEZpbHRlci5tdWx0aVNlbGVjdFwiPlxuICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCIhc2VhcmNoRmlsdGVyLm11bHRpU2VsZWN0XCIgW3ZhbHVlXT1cInVuZGVmaW5lZFwiPlxuICAgICAgICB7e2NvbmZpZy5ub25lU2VsZWN0ZWRPcHRpb25UZXh0fX1cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hGaWx0ZXIub3B0aW9ucyQgIT09IHVuZGVmaW5lZDsgZWxzZSBmaXhlZFNlbGVjdFZhbHVlc1wiPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHNlYXJjaEZpbHRlci5vcHRpb25zJCB8IGFzeW5jXCJcbiAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLmtleVwiPnt7b3B0aW9uLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZml4ZWRTZWxlY3RWYWx1ZXM+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc2VhcmNoRmlsdGVyLm9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uLmtleVwiPnt7b3B0aW9uLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbWF0LXNlbGVjdD5cbiAgPC9uZy1jb250YWluZXI+XG5cbjwvbWF0LWZvcm0tZmllbGQ+Il19
@@ -0,0 +1,23 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../entry-cell-formatted-value/entry-cell-formatted-value.component";
4
+ export class EntryCellComponent {
5
+ get value() {
6
+ return this.getCellValue(this.rowData, this.colDef);
7
+ }
8
+ getCellValue(rowData, colDef) {
9
+ const keys = colDef.field ? colDef.field.split('.') : [];
10
+ return keys.reduce((data, key) => data && data[key], rowData);
11
+ }
12
+ }
13
+ EntryCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ EntryCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EntryCellComponent, selector: "entry-cell", inputs: { rowData: "rowData", colDef: "colDef" }, ngImport: i0, template: "<entry-cell-formatted-value [value]=\"value\" [type]=\"colDef.type\" [typeParameter]=\"colDef.typeParameter\"></entry-cell-formatted-value>", dependencies: [{ kind: "component", type: i1.EntryCellFormattedValueComponent, selector: "entry-cell-formatted-value", inputs: ["value", "type", "typeParameter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryCellComponent, decorators: [{
16
+ type: Component,
17
+ args: [{ selector: 'entry-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<entry-cell-formatted-value [value]=\"value\" [type]=\"colDef.type\" [typeParameter]=\"colDef.typeParameter\"></entry-cell-formatted-value>" }]
18
+ }], propDecorators: { rowData: [{
19
+ type: Input
20
+ }], colDef: [{
21
+ type: Input
22
+ }] } });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnktY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvdGFibGUvY29tcG9uZW50cy9lbnRyeS1jZWxsL2VudHJ5LWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL3RhYmxlL2NvbXBvbmVudHMvZW50cnktY2VsbC9lbnRyeS1jZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRMUUsTUFBTSxPQUFPLGtCQUFrQjtJQUs3QixJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVPLFlBQVksQ0FBQyxPQUFVLEVBQUUsTUFBaUI7UUFDaEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUssSUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7OytHQVpVLGtCQUFrQjttR0FBbEIsa0JBQWtCLG9HQ1IvQiw2SUFBcUk7MkZEUXhILGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxZQUFZLG1CQUVMLHVCQUF1QixDQUFDLE1BQU07OEJBSXRDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sdW1uRGVmIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VudHJ5LWNlbGwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW50cnktY2VsbC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEVudHJ5Q2VsbENvbXBvbmVudDxUPiB7XG5cbiAgQElucHV0KCkgcm93RGF0YTogVDtcbiAgQElucHV0KCkgY29sRGVmOiBDb2x1bW5EZWY7XG5cbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2VsbFZhbHVlKHRoaXMucm93RGF0YSwgdGhpcy5jb2xEZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDZWxsVmFsdWUocm93RGF0YTogVCwgY29sRGVmOiBDb2x1bW5EZWYpIHtcbiAgICBjb25zdCBrZXlzID0gY29sRGVmLmZpZWxkID8gY29sRGVmLmZpZWxkLnNwbGl0KCcuJykgOiBbXTtcbiAgICByZXR1cm4ga2V5cy5yZWR1Y2UoKGRhdGEsIGtleSkgPT4gZGF0YSAmJiAoZGF0YSBhcyBhbnkpW2tleV0sIHJvd0RhdGEpO1xuICB9XG5cbn1cbiIsIjxlbnRyeS1jZWxsLWZvcm1hdHRlZC12YWx1ZSBbdmFsdWVdPVwidmFsdWVcIiBbdHlwZV09XCJjb2xEZWYudHlwZVwiIFt0eXBlUGFyYW1ldGVyXT1cImNvbERlZi50eXBlUGFyYW1ldGVyXCI+PC9lbnRyeS1jZWxsLWZvcm1hdHRlZC12YWx1ZT4iXX0=
@@ -0,0 +1,33 @@
1
+ import { ChangeDetectionStrategy, 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 "@angular/material/icon";
5
+ import * as i3 from "@angular/material/menu";
6
+ import * as i4 from "@angular/material/button";
7
+ export class EntryCellContextMenuComponent {
8
+ constructor() {
9
+ this.items = [];
10
+ this.selected = new EventEmitter();
11
+ this.menuItems = [];
12
+ }
13
+ ngOnInit() {
14
+ this.menuItems = this.rowMenuFormatter?.items
15
+ ? this.rowMenuFormatter.items(this.rowData)
16
+ : this.items;
17
+ }
18
+ }
19
+ EntryCellContextMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryCellContextMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ EntryCellContextMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EntryCellContextMenuComponent, selector: "entry-cell-context-menu", inputs: { items: "items", rowMenuFormatter: "rowMenuFormatter", rowData: "rowData" }, outputs: { selected: "selected" }, ngImport: i0, template: "<button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\" class=\"entry-table-menu\">\n <button *ngFor=\"let item of menuItems\" mat-menu-item [disabled]=\"item.disabled\" (click)=\"selected.emit(item.id)\"\n class=\"context-menu-item\">\n <mat-icon *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n <span>{{item.name}}</span>\n </button>\n</mat-menu>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryCellContextMenuComponent, decorators: [{
22
+ type: Component,
23
+ args: [{ selector: 'entry-cell-context-menu', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\" class=\"entry-table-menu\">\n <button *ngFor=\"let item of menuItems\" mat-menu-item [disabled]=\"item.disabled\" (click)=\"selected.emit(item.id)\"\n class=\"context-menu-item\">\n <mat-icon *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n <span>{{item.name}}</span>\n </button>\n</mat-menu>" }]
24
+ }], propDecorators: { items: [{
25
+ type: Input
26
+ }], rowMenuFormatter: [{
27
+ type: Input
28
+ }], rowData: [{
29
+ type: Input
30
+ }], selected: [{
31
+ type: Output
32
+ }] } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnktY2VsbC1jb250ZXh0LW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL3RhYmxlL2NvbXBvbmVudHMvZW50cnktY2VsbC1jb250ZXh0LW1lbnUvZW50cnktY2VsbC1jb250ZXh0LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL3RhYmxlL2NvbXBvbmVudHMvZW50cnktY2VsbC1jb250ZXh0LW1lbnUvZW50cnktY2VsbC1jb250ZXh0LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBU3hHLE1BQU0sT0FBTyw2QkFBNkI7SUFMMUM7UUFPVyxVQUFLLEdBQXNCLEVBQUUsQ0FBQztRQUc3QixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVoRCxjQUFTLEdBQXNCLEVBQUUsQ0FBQztLQU9uQztJQUxDLFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLO1lBQzNDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDM0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDakIsQ0FBQzs7MEhBYlUsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsd0xDVDFDLHNlQVNXOzJGREFFLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFDRSx5QkFBeUIsbUJBRWxCLHVCQUF1QixDQUFDLE1BQU07OEJBSXRDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm93Q29udGV4dE1lbnVGb3JtYXR0ZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Jvdy1jb250ZXh0LW1lbnUtZm9ybWF0dGVyJztcbmltcG9ydCB7IENvbnRleHRNZW51SXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY29udGV4dC1tZW51LWl0ZW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbnRyeS1jZWxsLWNvbnRleHQtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbnRyeS1jZWxsLWNvbnRleHQtbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEVudHJ5Q2VsbENvbnRleHRNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBpdGVtczogQ29udGV4dE1lbnVJdGVtW10gPSBbXTtcbiAgQElucHV0KCkgcm93TWVudUZvcm1hdHRlcjogUm93Q29udGV4dE1lbnVGb3JtYXR0ZXI7XG4gIEBJbnB1dCgpIHJvd0RhdGE6IGFueTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgbWVudUl0ZW1zOiBDb250ZXh0TWVudUl0ZW1bXSA9IFtdO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubWVudUl0ZW1zID0gdGhpcy5yb3dNZW51Rm9ybWF0dGVyPy5pdGVtc1xuICAgICAgPyB0aGlzLnJvd01lbnVGb3JtYXR0ZXIuaXRlbXModGhpcy5yb3dEYXRhKVxuICAgICAgOiB0aGlzLml0ZW1zO1xuICB9XG59XG4iLCI8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIGNsYXNzPVwiZW50cnktdGFibGUtbWVudVwiPlxuICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgbWVudUl0ZW1zXCIgbWF0LW1lbnUtaXRlbSBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiIChjbGljayk9XCJzZWxlY3RlZC5lbWl0KGl0ZW0uaWQpXCJcbiAgICAgICAgY2xhc3M9XCJjb250ZXh0LW1lbnUtaXRlbVwiPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpdGVtLmljb25cIj57e2l0ZW0uaWNvbn19PC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW4+e3tpdGVtLm5hbWV9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbjwvbWF0LW1lbnU+Il19
@@ -0,0 +1,25 @@
1
+ import { ChangeDetectionStrategy, Component, Inject, Input } from '@angular/core';
2
+ import { DEFAULT_PERCENTAGE_MULTIPLIER } from '../../interfaces/entry-table-config';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class EntryCellFormattedValueComponent {
6
+ constructor(defaultPercentageMultiplier) {
7
+ this.defaultPercentageMultiplier = defaultPercentageMultiplier;
8
+ }
9
+ }
10
+ EntryCellFormattedValueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryCellFormattedValueComponent, deps: [{ token: DEFAULT_PERCENTAGE_MULTIPLIER }], target: i0.ɵɵFactoryTarget.Component });
11
+ EntryCellFormattedValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EntryCellFormattedValueComponent, selector: "entry-cell-formatted-value", inputs: { value: "value", type: "type", typeParameter: "typeParameter" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <!-- Boolean -->\n <ng-container *ngSwitchCase=\"'boolean'\">\n {{value ? '\\u2713' : ''}}\n </ng-container>\n <!-- Number -->\n <ng-container *ngSwitchCase=\"'number'\">\n {{value | number: typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Currency -->\n <ng-container *ngSwitchCase=\"'currency'\">\n {{value | currency: typeParameter?.currencyCode : typeParameter?.display : typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Percent -->\n <ng-container *ngSwitchCase=\"'percent'\">\n {{+value * (typeParameter?.multiplier ?? defaultPercentageMultiplier) | percent: typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Date -->\n <ng-container *ngSwitchCase=\"'date'\">\n {{value | date: typeParameter?.format : typeParameter?.timezone : typeParameter?.locale}}\n </ng-container>\n <!-- Link -->\n <ng-container *ngSwitchCase=\"'link'\">\n <a [href]=\"value\" target=\"_blank\">{{value}}</a>\n </ng-container>\n <!-- Default -->\n <ng-container *ngSwitchDefault>\n {{value}}\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.PercentPipe, name: "percent" }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryCellFormattedValueComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ selector: 'entry-cell-formatted-value', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"type\">\n <!-- Boolean -->\n <ng-container *ngSwitchCase=\"'boolean'\">\n {{value ? '\\u2713' : ''}}\n </ng-container>\n <!-- Number -->\n <ng-container *ngSwitchCase=\"'number'\">\n {{value | number: typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Currency -->\n <ng-container *ngSwitchCase=\"'currency'\">\n {{value | currency: typeParameter?.currencyCode : typeParameter?.display : typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Percent -->\n <ng-container *ngSwitchCase=\"'percent'\">\n {{+value * (typeParameter?.multiplier ?? defaultPercentageMultiplier) | percent: typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Date -->\n <ng-container *ngSwitchCase=\"'date'\">\n {{value | date: typeParameter?.format : typeParameter?.timezone : typeParameter?.locale}}\n </ng-container>\n <!-- Link -->\n <ng-container *ngSwitchCase=\"'link'\">\n <a [href]=\"value\" target=\"_blank\">{{value}}</a>\n </ng-container>\n <!-- Default -->\n <ng-container *ngSwitchDefault>\n {{value}}\n </ng-container>\n</ng-container>\n" }]
15
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
16
+ type: Inject,
17
+ args: [DEFAULT_PERCENTAGE_MULTIPLIER]
18
+ }] }]; }, propDecorators: { value: [{
19
+ type: Input
20
+ }], type: [{
21
+ type: Input
22
+ }], typeParameter: [{
23
+ type: Input
24
+ }] } });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnktY2VsbC1mb3JtYXR0ZWQtdmFsdWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL3RhYmxlL2NvbXBvbmVudHMvZW50cnktY2VsbC1mb3JtYXR0ZWQtdmFsdWUvZW50cnktY2VsbC1mb3JtYXR0ZWQtdmFsdWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL3RhYmxlL2NvbXBvbmVudHMvZW50cnktY2VsbC1mb3JtYXR0ZWQtdmFsdWUvZW50cnktY2VsbC1mb3JtYXR0ZWQtdmFsdWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7QUFPcEYsTUFBTSxPQUFPLGdDQUFnQztJQU0zQyxZQUNnRCwyQkFBbUM7UUFBbkMsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUFRO0lBQ25GLENBQUM7OzZIQVJVLGdDQUFnQyxrQkFPakMsNkJBQTZCO2lIQVA1QixnQ0FBZ0MsNElDUjdDLG1wQ0E4QkE7MkZEdEJhLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSw0QkFBNEIsbUJBRXJCLHVCQUF1QixDQUFDLE1BQU07OzBCQVM1QyxNQUFNOzJCQUFDLDZCQUE2Qjs0Q0FMOUIsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgREVGQVVMVF9QRVJDRU5UQUdFX01VTFRJUExJRVIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VudHJ5LXRhYmxlLWNvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VudHJ5LWNlbGwtZm9ybWF0dGVkLXZhbHVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VudHJ5LWNlbGwtZm9ybWF0dGVkLXZhbHVlLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRW50cnlDZWxsRm9ybWF0dGVkVmFsdWVDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZztcbiAgQElucHV0KCkgdHlwZVBhcmFtZXRlcjogYW55IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoREVGQVVMVF9QRVJDRU5UQUdFX01VTFRJUExJRVIpIHB1YmxpYyBkZWZhdWx0UGVyY2VudGFnZU11bHRpcGxpZXI6IG51bWJlcikge1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0eXBlXCI+XG4gIDwhLS0gQm9vbGVhbiAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCI+XG4gICAge3t2YWx1ZSA/ICdcXHUyNzEzJyA6ICcnfX1cbiAgPC9uZy1jb250YWluZXI+XG4gIDwhLS0gTnVtYmVyIC0tPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiPlxuICAgIHt7dmFsdWUgfCBudW1iZXI6IHR5cGVQYXJhbWV0ZXI/LmRpZ2l0c0luZm8gOiB0eXBlUGFyYW1ldGVyPy5sb2NhbGV9fVxuICA8L25nLWNvbnRhaW5lcj5cbiAgPCEtLSBDdXJyZW5jeSAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2N1cnJlbmN5J1wiPlxuICAgIHt7dmFsdWUgfCBjdXJyZW5jeTogdHlwZVBhcmFtZXRlcj8uY3VycmVuY3lDb2RlIDogdHlwZVBhcmFtZXRlcj8uZGlzcGxheSA6IHR5cGVQYXJhbWV0ZXI/LmRpZ2l0c0luZm8gOiB0eXBlUGFyYW1ldGVyPy5sb2NhbGV9fVxuICA8L25nLWNvbnRhaW5lcj5cbiAgPCEtLSBQZXJjZW50IC0tPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncGVyY2VudCdcIj5cbiAgICB7eyt2YWx1ZSAqICh0eXBlUGFyYW1ldGVyPy5tdWx0aXBsaWVyID8/IGRlZmF1bHRQZXJjZW50YWdlTXVsdGlwbGllcikgfCBwZXJjZW50OiB0eXBlUGFyYW1ldGVyPy5kaWdpdHNJbmZvIDogdHlwZVBhcmFtZXRlcj8ubG9jYWxlfX1cbiAgPC9uZy1jb250YWluZXI+XG4gIDwhLS0gRGF0ZSAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCI+XG4gICAge3t2YWx1ZSB8IGRhdGU6IHR5cGVQYXJhbWV0ZXI/LmZvcm1hdCA6IHR5cGVQYXJhbWV0ZXI/LnRpbWV6b25lIDogdHlwZVBhcmFtZXRlcj8ubG9jYWxlfX1cbiAgPC9uZy1jb250YWluZXI+XG4gIDwhLS0gTGluayAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCI+XG4gICAgPGEgW2hyZWZdPVwidmFsdWVcIiB0YXJnZXQ9XCJfYmxhbmtcIj57e3ZhbHVlfX08L2E+XG4gIDwvbmctY29udGFpbmVyPlxuICA8IS0tIERlZmF1bHQgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICB7e3ZhbHVlfX1cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -0,0 +1,248 @@
1
+ /* eslint-disable @typescript-eslint/member-ordering */
2
+ import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, TemplateRef, HostBinding, Inject, } from '@angular/core';
3
+ import { SelectionModel } from '@angular/cdk/collections';
4
+ import { MatTableDataSource } from '@angular/material/table';
5
+ import { ENTRY_TABLE_CONFIG } from '../../interfaces';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "@angular/material/table";
9
+ import * as i3 from "@angular/material/sort";
10
+ import * as i4 from "@angular/material/paginator";
11
+ import * as i5 from "@angular/material/checkbox";
12
+ import * as i6 from "@angular/material/radio";
13
+ import * as i7 from "../entry-cell/entry-cell.component";
14
+ import * as i8 from "../entry-cell-context-menu/entry-cell-context-menu.component";
15
+ import * as i9 from "../../interfaces";
16
+ export class EntryTableComponent {
17
+ get hasNoResult() {
18
+ return (!this.data || this._data.length === 0) && !this.loading;
19
+ }
20
+ constructor(_config, _elementRef, _changeDetectorRef) {
21
+ this._config = _config;
22
+ this._elementRef = _elementRef;
23
+ this._changeDetectorRef = _changeDetectorRef;
24
+ this.className = 'entry-table';
25
+ this.dataSource = new MatTableDataSource([]);
26
+ this.columns = [];
27
+ // Data
28
+ this._data = [];
29
+ this.data = [];
30
+ this.total = 0;
31
+ this.loading = false;
32
+ this.pageDisabled = false;
33
+ this.pageIndex = 0;
34
+ this.pageChange = new EventEmitter();
35
+ this.sortDisableClear = false;
36
+ this.sortDisabled = false;
37
+ this.sortStart = 'asc';
38
+ this.sortChange = new EventEmitter();
39
+ // Row
40
+ this.rowHover = false;
41
+ this.rowStriped = false;
42
+ this.rowFocusVisible = false;
43
+ this.rowClick = new EventEmitter();
44
+ // Row selection
45
+ this.multiSelectable = true;
46
+ this.rowSelection = new SelectionModel(true, []);
47
+ this.rowSelected = [];
48
+ this.rowSelectable = false;
49
+ this.showSelectAllCheckbox = true;
50
+ this.rowSelectionFormatter = {};
51
+ this.rowSelectionChange = new EventEmitter();
52
+ // Context menu
53
+ this.showContextMenu = false;
54
+ this.contextMenuItems = [];
55
+ this.contextMenuItemSelected = new EventEmitter();
56
+ this.selectionColumn = 'selection-column';
57
+ this.contextMenuColumn = 'context-menu-column';
58
+ }
59
+ detectChanges() {
60
+ this._changeDetectorRef.detectChanges();
61
+ }
62
+ isTemplateRef(obj) {
63
+ return obj instanceof TemplateRef;
64
+ }
65
+ getRowClassList(rowData, index) {
66
+ const classList = {
67
+ selected: this.rowSelection.isSelected(rowData),
68
+ // eslint-disable-next-line @typescript-eslint/naming-convention
69
+ 'mat-row-odd': index % 2,
70
+ };
71
+ if (this.rowClassFormatter) {
72
+ for (const key of Object.keys(this.rowClassFormatter)) {
73
+ classList[key] = this.rowClassFormatter[key](rowData);
74
+ }
75
+ }
76
+ return classList;
77
+ }
78
+ getColumnClassList(colDef) {
79
+ const customClasses = colDef.class ?? '';
80
+ const columnType = colDef.type ?? '';
81
+ const columnField = `cell-${this.convertToKebabCase(colDef.field)}`;
82
+ return `${customClasses} ${columnType} ${columnField}`;
83
+ }
84
+ ngOnChanges(changes) {
85
+ this.showPaginator = this.showPaginator ?? this._config.showPaginator;
86
+ this.showFirstLastButtons = this.showFirstLastButtons ?? this._config.showFirstLastButtons;
87
+ this.pageSizeOptions = this.pageSizeOptions ?? this._config.pageSizeOptions;
88
+ this.hidePageSize = this.hidePageSize ?? this._config.hidePageSize;
89
+ this.noResultText = this.noResultText ?? this._config.noResultsText;
90
+ this.displayedColumns = this.columns.filter(item => !item.hide).map(item => item.field);
91
+ if (this.rowSelectable && !this.displayedColumns.includes(this.selectionColumn)) {
92
+ this.displayedColumns.unshift(this.selectionColumn);
93
+ }
94
+ if (this.showContextMenu && !this.displayedColumns.includes(this.contextMenuColumn)) {
95
+ this.displayedColumns.push(this.contextMenuColumn);
96
+ }
97
+ if (this.rowSelectable) {
98
+ this.rowSelection = new SelectionModel(this.multiSelectable, this.rowSelected);
99
+ }
100
+ if (!this.data) {
101
+ this.data = [];
102
+ }
103
+ if (Array.isArray(this.data)) {
104
+ this._data = this.data;
105
+ }
106
+ else {
107
+ this._page = this.data;
108
+ this._data = this._page.items ?? [];
109
+ this.total = this._page.totalCount ?? 0;
110
+ this.pageSize = this._page.pageSize ?? this.pageSize ?? this._config.pageSize;
111
+ this.pageIndex = this._page.pageNumber ? this._page.pageNumber - 1 : this.pageIndex;
112
+ }
113
+ if (this.dataSource) {
114
+ this.dataSource.disconnect();
115
+ }
116
+ this.dataSource = new MatTableDataSource(this._data);
117
+ if (changes.data) {
118
+ this.scrollToTop();
119
+ }
120
+ }
121
+ getIndex(index, dataIndex) {
122
+ return typeof index === 'undefined' ? dataIndex : index;
123
+ }
124
+ isAllSelected() {
125
+ const numSelected = this.rowSelection.selected.length;
126
+ const numRows = this.dataSource.data.filter(row => !this.rowSelectionFormatter.disabled?.(row)).length;
127
+ return numSelected === numRows;
128
+ }
129
+ toggleSelectAllCheckbox() {
130
+ if (this.isAllSelected()) {
131
+ this.rowSelection.clear();
132
+ this.rowSelectionChange.emit(this.rowSelection.selected);
133
+ return;
134
+ }
135
+ this.dataSource.data.forEach(row => {
136
+ if (!this.rowSelectionFormatter.disabled?.(row)) {
137
+ this.rowSelection.select(row);
138
+ }
139
+ });
140
+ this.rowSelectionChange.emit(this.rowSelection.selected);
141
+ }
142
+ toggleRowSelection(row) {
143
+ this.rowSelection.toggle(row);
144
+ this.rowSelectionChange.emit(this.rowSelection.selected);
145
+ }
146
+ handlePage(e) {
147
+ this.pageChange.emit(e);
148
+ }
149
+ scrollToTop() {
150
+ this._elementRef.nativeElement.scrollTop = 0;
151
+ }
152
+ convertToKebabCase(value) {
153
+ return value?.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
154
+ }
155
+ }
156
+ EntryTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryTableComponent, deps: [{ token: ENTRY_TABLE_CONFIG }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
157
+ EntryTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EntryTableComponent, selector: "entry-table", inputs: { displayedColumns: "displayedColumns", columns: "columns", data: "data", total: "total", loading: "loading", showPaginator: "showPaginator", pageDisabled: "pageDisabled", showFirstLastButtons: "showFirstLastButtons", pageIndex: "pageIndex", pageSize: "pageSize", pageSizeOptions: "pageSizeOptions", hidePageSize: "hidePageSize", paginationTemplate: "paginationTemplate", sortActive: "sortActive", sortDirection: "sortDirection", sortDisableClear: "sortDisableClear", sortDisabled: "sortDisabled", sortStart: "sortStart", rowHover: "rowHover", rowStriped: "rowStriped", rowFocusVisible: "rowFocusVisible", multiSelectable: "multiSelectable", rowSelected: "rowSelected", rowSelectable: "rowSelectable", showSelectAllCheckbox: "showSelectAllCheckbox", rowSelectionFormatter: "rowSelectionFormatter", rowClassFormatter: "rowClassFormatter", showContextMenu: "showContextMenu", contextMenuItems: "contextMenuItems", contextMenuTemplate: "contextMenuTemplate", rowContextMenuFormatter: "rowContextMenuFormatter", noResultText: "noResultText", noResultTemplate: "noResultTemplate", headerTemplate: "headerTemplate", cellTemplate: "cellTemplate" }, outputs: { pageChange: "pageChange", sortChange: "sortChange", rowClick: "rowClick", rowSelectionChange: "rowSelectionChange", contextMenuItemSelected: "contextMenuItemSelected" }, host: { properties: { "class": "this.className" } }, usesOnChanges: true, ngImport: i0, template: "<!-- Table content -->\n<table mat-table \n [ngClass]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-with-data': !hasNoResult }\"\n [dataSource]=\"dataSource\"\n matSort\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n [matSortDisableClear]=\"sortDisableClear\"\n [matSortDisabled]=\"sortDisabled\"\n [matSortStart]=\"sortStart\"\n (matSortChange)=\"sortChange.emit($event)\">\n\n <!-- Selection column -->\n <ng-container *ngIf=\"rowSelectable\" [matColumnDef]=\"selectionColumn\">\n <th mat-header-cell *matHeaderCellDef class=\"selection-cell\">\n <mat-checkbox *ngIf=\"multiSelectable && showSelectAllCheckbox\"\n [checked]=\"rowSelection.hasValue() && isAllSelected()\"\n [indeterminate]=\"rowSelection.hasValue() && !isAllSelected()\"\n (change)=\"$event ? toggleSelectAllCheckbox() : null\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n class=\"selection-cell\"\n (click)=\"$event.stopPropagation()\">\n <mat-checkbox\n *ngIf=\"multiSelectable && !(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row))\"\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n (change)=\"$event ? toggleRowSelection(row) : null\">\n </mat-checkbox>\n <mat-radio-button\n *ngIf=\"!multiSelectable && !(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row))\"\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n [value]=\"rowSelection.isSelected(row)\"\n (change)=\"$event ? toggleRowSelection(row) : null\">\n </mat-radio-button>\n </td>\n </ng-container>\n\n <!-- Context menu column -->\n <ng-container *ngIf=\"showContextMenu\" [matColumnDef]=\"contextMenuColumn\">\n <th mat-header-cell *matHeaderCellDef class=\"action-cell\"></th>\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n class=\"action-cell\">\n <ng-template [ngIf]=\"isTemplateRef(contextMenuTemplate)\" [ngIfElse]=\"contextMenuTpl\">\n <ng-template [ngTemplateOutlet]=\"contextMenuTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row }\">\n </ng-template>\n </ng-template>\n <ng-template #contextMenuTpl>\n <entry-cell-context-menu\n [items]=\"contextMenuItems\"\n [rowData]=\"row\"\n [rowMenuFormatter]=\"rowContextMenuFormatter\"\n (selected)=\"contextMenuItemSelected.emit({itemId: $event, rowData: row})\"\n ></entry-cell-context-menu>\n </ng-template>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let col of columns;\">\n <ng-container [matColumnDef]=\"col.field\"\n [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\n <th mat-header-cell *matHeaderCellDef\n [class]=\"getColumnClassList(col)\"\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\n [ngStyle]=\"{'width': col.width, 'min-width': col.width}\">\n <ng-template [ngIf]=\"isTemplateRef(headerTemplate)\" [ngIfElse]=\"headerTpl\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #headerTpl>\n <ng-template [ngIf]=\"headerTemplate && isTemplateRef(headerTemplate[col.field])\"\n [ngIfElse]=\"defaultHeaderTpl\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate[col.field]\"\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n </ng-template>\n </ng-template>\n </ng-template>\n <ng-template #defaultHeaderTpl>\n <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\n [disabled]=\"!col.sortable\"\n [disableClear]=\"col.sortProp?.disableClear\">\n <span>{{col.header}}</span>\n </div>\n </ng-template>\n </th>\n\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n [class]=\"getColumnClassList(col)\"\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\n [ngStyle]=\"{'width': col.width, 'min-width': col.width}\">\n <ng-template [ngIf]=\"isTemplateRef(cellTemplate)\" [ngIfElse]=\"cellTpl\">\n <ng-template [ngTemplateOutlet]=\"cellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #cellTpl>\n <ng-template [ngIf]=\"cellTemplate && isTemplateRef(cellTemplate[col.field])\"\n [ngIfElse]=\"colDefCellTpl\">\n <ng-template [ngTemplateOutlet]=\"cellTemplate[col.field]\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n </ng-template>\n <ng-template #colDefCellTpl>\n <ng-template [ngIf]=\"col.cellTemplate\" [ngIfElse]=\"defaultCellTpl\"\n [ngTemplateOutlet]=\"col.cellTemplate ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #defaultCellTpl>\n <entry-cell [rowData]=\"row\" [colDef]=\"col\"></entry-cell>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\n [ngClass]=\"getRowClassList(row, getIndex(index, dataIndex))\"\n [attr.tabindex]=\"rowFocusVisible ? 0 : -1\"\n (click)=\"rowClick.emit(row)\"\n (keyup.enter)=\"rowClick.emit(row)\">\n </tr>\n</table>\n\n<!-- No results -->\n<div class=\"no-results mat-body-2\" *ngIf=\"hasNoResult\">\n <ng-template [ngIf]=\"isTemplateRef(noResultTemplate)\" [ngIfElse]=\"defaultNoResultTpl\">\n <ng-template [ngTemplateOutlet]=\"noResultTemplate\"></ng-template>\n </ng-template>\n <ng-template #defaultNoResultTpl>{{noResultText}}</ng-template>\n</div>\n\n<!-- Pagination -->\n<ng-template [ngIf]=\"isTemplateRef(paginationTemplate)\" [ngIfElse]=\"defaultPaginationTemplate\">\n <ng-template [ngTemplateOutlet]=\"paginationTemplate\"></ng-template>\n</ng-template>\n<ng-template #defaultPaginationTemplate>\n <mat-paginator class=\"pagination\" *ngIf=\"showPaginator\"\n [showFirstLastButtons]=\"showFirstLastButtons\"\n [length]=\"total\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [hidePageSize]=\"hidePageSize\"\n (page)=\"handlePage($event)\"\n [disabled]=\"pageDisabled\">\n </mat-paginator>\n</ng-template>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i3.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i4.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i7.EntryCellComponent, selector: "entry-cell", inputs: ["rowData", "colDef"] }, { kind: "component", type: i8.EntryCellContextMenuComponent, selector: "entry-cell-context-menu", inputs: ["items", "rowMenuFormatter", "rowData"], outputs: ["selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EntryTableComponent, decorators: [{
159
+ type: Component,
160
+ args: [{ selector: 'entry-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Table content -->\n<table mat-table \n [ngClass]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-with-data': !hasNoResult }\"\n [dataSource]=\"dataSource\"\n matSort\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n [matSortDisableClear]=\"sortDisableClear\"\n [matSortDisabled]=\"sortDisabled\"\n [matSortStart]=\"sortStart\"\n (matSortChange)=\"sortChange.emit($event)\">\n\n <!-- Selection column -->\n <ng-container *ngIf=\"rowSelectable\" [matColumnDef]=\"selectionColumn\">\n <th mat-header-cell *matHeaderCellDef class=\"selection-cell\">\n <mat-checkbox *ngIf=\"multiSelectable && showSelectAllCheckbox\"\n [checked]=\"rowSelection.hasValue() && isAllSelected()\"\n [indeterminate]=\"rowSelection.hasValue() && !isAllSelected()\"\n (change)=\"$event ? toggleSelectAllCheckbox() : null\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n class=\"selection-cell\"\n (click)=\"$event.stopPropagation()\">\n <mat-checkbox\n *ngIf=\"multiSelectable && !(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row))\"\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n (change)=\"$event ? toggleRowSelection(row) : null\">\n </mat-checkbox>\n <mat-radio-button\n *ngIf=\"!multiSelectable && !(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row))\"\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n [value]=\"rowSelection.isSelected(row)\"\n (change)=\"$event ? toggleRowSelection(row) : null\">\n </mat-radio-button>\n </td>\n </ng-container>\n\n <!-- Context menu column -->\n <ng-container *ngIf=\"showContextMenu\" [matColumnDef]=\"contextMenuColumn\">\n <th mat-header-cell *matHeaderCellDef class=\"action-cell\"></th>\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n class=\"action-cell\">\n <ng-template [ngIf]=\"isTemplateRef(contextMenuTemplate)\" [ngIfElse]=\"contextMenuTpl\">\n <ng-template [ngTemplateOutlet]=\"contextMenuTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row }\">\n </ng-template>\n </ng-template>\n <ng-template #contextMenuTpl>\n <entry-cell-context-menu\n [items]=\"contextMenuItems\"\n [rowData]=\"row\"\n [rowMenuFormatter]=\"rowContextMenuFormatter\"\n (selected)=\"contextMenuItemSelected.emit({itemId: $event, rowData: row})\"\n ></entry-cell-context-menu>\n </ng-template>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let col of columns;\">\n <ng-container [matColumnDef]=\"col.field\"\n [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\n <th mat-header-cell *matHeaderCellDef\n [class]=\"getColumnClassList(col)\"\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\n [ngStyle]=\"{'width': col.width, 'min-width': col.width}\">\n <ng-template [ngIf]=\"isTemplateRef(headerTemplate)\" [ngIfElse]=\"headerTpl\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #headerTpl>\n <ng-template [ngIf]=\"headerTemplate && isTemplateRef(headerTemplate[col.field])\"\n [ngIfElse]=\"defaultHeaderTpl\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate[col.field]\"\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n </ng-template>\n </ng-template>\n </ng-template>\n <ng-template #defaultHeaderTpl>\n <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\n [disabled]=\"!col.sortable\"\n [disableClear]=\"col.sortProp?.disableClear\">\n <span>{{col.header}}</span>\n </div>\n </ng-template>\n </th>\n\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n [class]=\"getColumnClassList(col)\"\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\n [ngStyle]=\"{'width': col.width, 'min-width': col.width}\">\n <ng-template [ngIf]=\"isTemplateRef(cellTemplate)\" [ngIfElse]=\"cellTpl\">\n <ng-template [ngTemplateOutlet]=\"cellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #cellTpl>\n <ng-template [ngIf]=\"cellTemplate && isTemplateRef(cellTemplate[col.field])\"\n [ngIfElse]=\"colDefCellTpl\">\n <ng-template [ngTemplateOutlet]=\"cellTemplate[col.field]\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n </ng-template>\n <ng-template #colDefCellTpl>\n <ng-template [ngIf]=\"col.cellTemplate\" [ngIfElse]=\"defaultCellTpl\"\n [ngTemplateOutlet]=\"col.cellTemplate ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #defaultCellTpl>\n <entry-cell [rowData]=\"row\" [colDef]=\"col\"></entry-cell>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\n [ngClass]=\"getRowClassList(row, getIndex(index, dataIndex))\"\n [attr.tabindex]=\"rowFocusVisible ? 0 : -1\"\n (click)=\"rowClick.emit(row)\"\n (keyup.enter)=\"rowClick.emit(row)\">\n </tr>\n</table>\n\n<!-- No results -->\n<div class=\"no-results mat-body-2\" *ngIf=\"hasNoResult\">\n <ng-template [ngIf]=\"isTemplateRef(noResultTemplate)\" [ngIfElse]=\"defaultNoResultTpl\">\n <ng-template [ngTemplateOutlet]=\"noResultTemplate\"></ng-template>\n </ng-template>\n <ng-template #defaultNoResultTpl>{{noResultText}}</ng-template>\n</div>\n\n<!-- Pagination -->\n<ng-template [ngIf]=\"isTemplateRef(paginationTemplate)\" [ngIfElse]=\"defaultPaginationTemplate\">\n <ng-template [ngTemplateOutlet]=\"paginationTemplate\"></ng-template>\n</ng-template>\n<ng-template #defaultPaginationTemplate>\n <mat-paginator class=\"pagination\" *ngIf=\"showPaginator\"\n [showFirstLastButtons]=\"showFirstLastButtons\"\n [length]=\"total\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [hidePageSize]=\"hidePageSize\"\n (page)=\"handlePage($event)\"\n [disabled]=\"pageDisabled\">\n </mat-paginator>\n</ng-template>" }]
161
+ }], ctorParameters: function () { return [{ type: i9.EntryTableConfig, decorators: [{
162
+ type: Inject,
163
+ args: [ENTRY_TABLE_CONFIG]
164
+ }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { className: [{
165
+ type: HostBinding,
166
+ args: ['class']
167
+ }], displayedColumns: [{
168
+ type: Input
169
+ }], columns: [{
170
+ type: Input
171
+ }], data: [{
172
+ type: Input
173
+ }], total: [{
174
+ type: Input
175
+ }], loading: [{
176
+ type: Input
177
+ }], showPaginator: [{
178
+ type: Input
179
+ }], pageDisabled: [{
180
+ type: Input
181
+ }], showFirstLastButtons: [{
182
+ type: Input
183
+ }], pageIndex: [{
184
+ type: Input
185
+ }], pageSize: [{
186
+ type: Input
187
+ }], pageSizeOptions: [{
188
+ type: Input
189
+ }], hidePageSize: [{
190
+ type: Input
191
+ }], pageChange: [{
192
+ type: Output
193
+ }], paginationTemplate: [{
194
+ type: Input
195
+ }], sortActive: [{
196
+ type: Input
197
+ }], sortDirection: [{
198
+ type: Input
199
+ }], sortDisableClear: [{
200
+ type: Input
201
+ }], sortDisabled: [{
202
+ type: Input
203
+ }], sortStart: [{
204
+ type: Input
205
+ }], sortChange: [{
206
+ type: Output
207
+ }], rowHover: [{
208
+ type: Input
209
+ }], rowStriped: [{
210
+ type: Input
211
+ }], rowFocusVisible: [{
212
+ type: Input
213
+ }], rowClick: [{
214
+ type: Output
215
+ }], multiSelectable: [{
216
+ type: Input
217
+ }], rowSelected: [{
218
+ type: Input
219
+ }], rowSelectable: [{
220
+ type: Input
221
+ }], showSelectAllCheckbox: [{
222
+ type: Input
223
+ }], rowSelectionFormatter: [{
224
+ type: Input
225
+ }], rowClassFormatter: [{
226
+ type: Input
227
+ }], rowSelectionChange: [{
228
+ type: Output
229
+ }], showContextMenu: [{
230
+ type: Input
231
+ }], contextMenuItems: [{
232
+ type: Input
233
+ }], contextMenuTemplate: [{
234
+ type: Input
235
+ }], rowContextMenuFormatter: [{
236
+ type: Input
237
+ }], contextMenuItemSelected: [{
238
+ type: Output
239
+ }], noResultText: [{
240
+ type: Input
241
+ }], noResultTemplate: [{
242
+ type: Input
243
+ }], headerTemplate: [{
244
+ type: Input
245
+ }], cellTemplate: [{
246
+ type: Input
247
+ }] } });
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnktdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL3RhYmxlL2NvbXBvbmVudHMvZW50cnktdGFibGUvZW50cnktdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL3RhYmxlL2NvbXBvbmVudHMvZW50cnktdGFibGUvZW50cnktdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBRVosdUJBQXVCLEVBRXZCLFdBQVcsRUFJWCxXQUFXLEVBQ1gsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUk3RCxPQUFPLEVBRW1ELGtCQUFrQixFQUMzRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7OztBQU8xQixNQUFNLE9BQU8sbUJBQW1CO0lBeUU5QixJQUFJLFdBQVc7UUFDYixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNsRSxDQUFDO0lBTUQsWUFDc0MsT0FBeUIsRUFDckQsV0FBb0MsRUFDcEMsa0JBQXFDO1FBRlQsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFDckQsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFuRnpCLGNBQVMsR0FBRyxhQUFhLENBQUM7UUFFaEQsZUFBVSxHQUFH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O3NCQUF4QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNO2dCQUlFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBSUUsZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUlFLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0ksdUJBQXVCO3NCQUFoQyxNQUFNO2dCQUlFLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQVNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmcgKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT25DaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcblxuaW1wb3J0IHtcbiAgQ29sdW1uRGVmLCBQYWdlZERhdGEsIFJvd1NlbGVjdGlvbkZvcm1hdHRlciwgUm93Q2xhc3NGb3JtYXR0ZXIsXG4gIENvbnRleHRNZW51SXRlbSwgUm93Q29udGV4dE1lbnVGb3JtYXR0ZXIsIENlbGxUZW1wbGF0ZSwgRU5UUllfVEFCTEVfQ09ORklHLCBFbnRyeVRhYmxlQ29uZmlnXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbnRyeS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbnRyeS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEVudHJ5VGFibGVDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3NOYW1lID0gJ2VudHJ5LXRhYmxlJztcblxuICBkYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxUPihbXSk7XG5cbiAgQElucHV0KCkgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW107XG4gIEBJbnB1dCgpIGNvbHVtbnM6IENvbHVtbkRlZltdID0gW107XG5cbiAgLy8gRGF0YVxuXG4gIHByaXZhdGUgX2RhdGE6IFRbXSA9IFtdO1xuICBwcml2YXRlIF9wYWdlOiBQYWdlZERhdGE8VD47XG4gIEBJbnB1dCgpIGRhdGE6IFRbXSB8IFBhZ2VkRGF0YTxUPiB8IG51bGwgfCB1bmRlZmluZWQgPSBbXTtcbiAgQElucHV0KCkgdG90YWwgPSAwO1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG5cbiAgLy8gUGFnaW5hdGlvblxuXG4gIEBJbnB1dCgpIHNob3dQYWdpbmF0b3I6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHBhZ2VEaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93Rmlyc3RMYXN0QnV0dG9uczogYm9vbGVhbjtcbiAgQElucHV0KCkgcGFnZUluZGV4ID0gMDtcbiAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlcjtcbiAgQElucHV0KCkgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXTtcbiAgQElucHV0KCkgaGlkZVBhZ2VTaXplOiBib29sZWFuO1xuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xuXG4gIEBJbnB1dCgpIHBhZ2luYXRpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvLyBTb3J0XG5cbiAgQElucHV0KCkgc29ydEFjdGl2ZTogc3RyaW5nO1xuICBASW5wdXQoKSBzb3J0RGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xuICBASW5wdXQoKSBzb3J0RGlzYWJsZUNsZWFyID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNvcnREaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBzb3J0U3RhcnQ6ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYyc7XG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0PigpO1xuXG4gIC8vIFJvd1xuXG4gIEBJbnB1dCgpIHJvd0hvdmVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJvd1N0cmlwZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcm93Rm9jdXNWaXNpYmxlID0gZmFsc2U7XG4gIEBPdXRwdXQoKSByb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAvLyBSb3cgc2VsZWN0aW9uXG5cbiAgQElucHV0KCkgbXVsdGlTZWxlY3RhYmxlID0gdHJ1ZTtcbiAgcm93U2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxUPiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUPih0cnVlLCBbXSk7XG5cbiAgQElucHV0KCkgcm93U2VsZWN0ZWQ6IFRbXSA9IFtdO1xuICBASW5wdXQoKSByb3dTZWxlY3RhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dTZWxlY3RBbGxDaGVja2JveCA9IHRydWU7XG4gIEBJbnB1dCgpIHJvd1NlbGVjdGlvbkZvcm1hdHRlcjogUm93U2VsZWN0aW9uRm9ybWF0dGVyID0ge307XG4gIEBJbnB1dCgpIHJvd0NsYXNzRm9ybWF0dGVyOiBSb3dDbGFzc0Zvcm1hdHRlcjtcbiAgQE91dHB1dCgpIHJvd1NlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xuXG4gIC8vIENvbnRleHQgbWVudVxuXG4gIEBJbnB1dCgpIHNob3dDb250ZXh0TWVudSA9IGZhbHNlO1xuICBASW5wdXQoKSBjb250ZXh0TWVudUl0ZW1zOiBDb250ZXh0TWVudUl0ZW1bXSA9IFtdO1xuICBASW5wdXQoKSBjb250ZXh0TWVudVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbDtcbiAgQElucHV0KCkgcm93Q29udGV4dE1lbnVGb3JtYXR0ZXI6IFJvd0NvbnRleHRNZW51Rm9ybWF0dGVyO1xuICBAT3V0cHV0KCkgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXRlbUlkOiBzdHJpbmc7IHJvd0RhdGE6IFQgfT4oKTtcblxuICAvLyBObyBSZXN1bHRcblxuICBASW5wdXQoKSBub1Jlc3VsdFRleHQ6IHN0cmluZztcbiAgQElucHV0KCkgbm9SZXN1bHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XG5cbiAgcmVhZG9ubHkgc2VsZWN0aW9uQ29sdW1uID0gJ3NlbGVjdGlvbi1jb2x1bW4nO1xuICByZWFkb25seSBjb250ZXh0TWVudUNvbHVtbiA9ICdjb250ZXh0LW1lbnUtY29sdW1uJztcblxuICBnZXQgaGFzTm9SZXN1bHQoKSB7XG4gICAgcmV0dXJuICghdGhpcy5kYXRhIHx8IHRoaXMuX2RhdGEubGVuZ3RoID09PSAwKSAmJiAhdGhpcy5sb2FkaW5nO1xuICB9XG5cbiAgQElucHV0KCkgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBDZWxsVGVtcGxhdGUgfCBhbnk7XG5cbiAgQElucHV0KCkgY2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgQ2VsbFRlbXBsYXRlIHwgYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRU5UUllfVEFCTEVfQ09ORklHKSBwcml2YXRlIF9jb25maWc6IEVudHJ5VGFibGVDb25maWcsXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICBkZXRlY3RDaGFuZ2VzKCkge1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGlzVGVtcGxhdGVSZWYob2JqOiBhbnkpIHtcbiAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gIH1cblxuICBnZXRSb3dDbGFzc0xpc3Qocm93RGF0YTogVCwgaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGNsYXNzTGlzdCA9IHtcbiAgICAgIHNlbGVjdGVkOiB0aGlzLnJvd1NlbGVjdGlvbi5pc1NlbGVjdGVkKHJvd0RhdGEpLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICAgJ21hdC1yb3ctb2RkJzogaW5kZXggJSAyLFxuICAgIH07XG4gICAgaWYgKHRoaXMucm93Q2xhc3NGb3JtYXR0ZXIpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMucm93Q2xhc3NGb3JtYXR0ZXIpKSB7XG4gICAgICAgIGNsYXNzTGlzdFtrZXldID0gdGhpcy5yb3dDbGFzc0Zvcm1hdHRlcltrZXldKHJvd0RhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2xhc3NMaXN0O1xuICB9XG5cbiAgZ2V0Q29sdW1uQ2xhc3NMaXN0KGNvbERlZjogQ29sdW1uRGVmKTogc3RyaW5nIHtcbiAgICBjb25zdCBjdXN0b21DbGFzc2VzID0gY29sRGVmLmNsYXNzID8/ICcnO1xuICAgIGNvbnN0IGNvbHVtblR5cGUgPSBjb2xEZWYudHlwZSA/PyAnJztcbiAgICBjb25zdCBjb2x1bW5GaWVsZCA9IGBjZWxsLSR7dGhpcy5jb252ZXJ0VG9LZWJhYkNhc2UoY29sRGVmLmZpZWxkKX1gO1xuXG4gICAgcmV0dXJuIGAke2N1c3RvbUNsYXNzZXN9ICR7Y29sdW1uVHlwZX0gJHtjb2x1bW5GaWVsZH1gO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIHRoaXMuc2hvd1BhZ2luYXRvciA9IHRoaXMuc2hvd1BhZ2luYXRvciA/PyB0aGlzLl9jb25maWcuc2hvd1BhZ2luYXRvcjtcbiAgICB0aGlzLnNob3dGaXJzdExhc3RCdXR0b25zID0gdGhpcy5zaG93Rmlyc3RMYXN0QnV0dG9ucyA/PyB0aGlzLl9jb25maWcuc2hvd0ZpcnN0TGFzdEJ1dHRvbnM7XG4gICAgdGhpcy5wYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLnBhZ2VTaXplT3B0aW9ucyA/PyB0aGlzLl9jb25maWcucGFnZVNpemVPcHRpb25zO1xuICAgIHRoaXMuaGlkZVBhZ2VTaXplID0gdGhpcy5oaWRlUGFnZVNpemUgPz8gdGhpcy5fY29uZmlnLmhpZGVQYWdlU2l6ZTtcbiAgICB0aGlzLm5vUmVzdWx0VGV4dCA9IHRoaXMubm9SZXN1bHRUZXh0ID8/IHRoaXMuX2NvbmZpZy5ub1Jlc3VsdHNUZXh0O1xuXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcihpdGVtID0+ICFpdGVtLmhpZGUpLm1hcChpdGVtID0+IGl0ZW0uZmllbGQpO1xuXG4gICAgaWYgKHRoaXMucm93U2VsZWN0YWJsZSAmJiAhdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmluY2x1ZGVzKHRoaXMuc2VsZWN0aW9uQ29sdW1uKSkge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnVuc2hpZnQodGhpcy5zZWxlY3Rpb25Db2x1bW4pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNob3dDb250ZXh0TWVudSAmJiAhdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmluY2x1ZGVzKHRoaXMuY29udGV4dE1lbnVDb2x1bW4pKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaCh0aGlzLmNvbnRleHRNZW51Q29sdW1uKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yb3dTZWxlY3RhYmxlKSB7XG4gICAgICB0aGlzLnJvd1NlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUPih0aGlzLm11bHRpU2VsZWN0YWJsZSwgdGhpcy5yb3dTZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRhdGEpIHtcbiAgICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGF0YSkpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSB0aGlzLmRhdGEgYXMgVFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9wYWdlID0gdGhpcy5kYXRhIGFzIFBhZ2VkRGF0YTxUPjtcbiAgICAgIHRoaXMuX2RhdGEgPSB0aGlzLl9wYWdlLml0ZW1zID8/IFtdO1xuICAgICAgdGhpcy50b3RhbCA9IHRoaXMuX3BhZ2UudG90YWxDb3VudCA/PyAwO1xuICAgICAgdGhpcy5wYWdlU2l6ZSA9IHRoaXMuX3BhZ2UucGFnZVNpemUgPz8gdGhpcy5wYWdlU2l6ZSA/PyB0aGlzLl9jb25maWcucGFnZVNpemU7XG4gICAgICB0aGlzLnBhZ2VJbmRleCA9IHRoaXMuX3BhZ2UucGFnZU51bWJlciA/IHRoaXMuX3BhZ2UucGFnZU51bWJlciAtIDEgOiB0aGlzLnBhZ2VJbmRleDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGlzY29ubmVjdCgpO1xuICAgIH1cblxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodGhpcy5fZGF0YSk7XG5cbiAgICBpZiAoY2hhbmdlcy5kYXRhKSB7XG4gICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SW5kZXgoaW5kZXg6IG51bWJlciwgZGF0YUluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdHlwZW9mIGluZGV4ID09PSAndW5kZWZpbmVkJyA/IGRhdGFJbmRleCA6IGluZGV4O1xuICB9XG5cbiAgaXNBbGxTZWxlY3RlZCgpIHtcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMucm93U2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aDtcbiAgICBjb25zdCBudW1Sb3dzID0gdGhpcy5kYXRhU291cmNlLmRhdGEuZmlsdGVyKHJvdyA9PiAhdGhpcy5yb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQ/Lihyb3cpKS5sZW5ndGg7XG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBudW1Sb3dzO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0QWxsQ2hlY2tib3goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLnJvd1NlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgdGhpcy5yb3dTZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnJvd1NlbGVjdGlvbi5zZWxlY3RlZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZvckVhY2gocm93ID0+IHtcbiAgICAgIGlmICghdGhpcy5yb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQ/Lihyb3cpKSB7XG4gICAgICAgIHRoaXMucm93U2VsZWN0aW9uLnNlbGVjdChyb3cpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucm93U2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5yb3dTZWxlY3Rpb24uc2VsZWN0ZWQpO1xuICB9XG5cbiAgdG9nZ2xlUm93U2VsZWN0aW9uKHJvdzogYW55KSB7XG4gICAgdGhpcy5yb3dTZWxlY3Rpb24udG9nZ2xlKHJvdyk7XG4gICAgdGhpcy5yb3dTZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnJvd1NlbGVjdGlvbi5zZWxlY3RlZCk7XG4gIH1cblxuICBoYW5kbGVQYWdlKGU6IFBhZ2VFdmVudCkge1xuICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KGUpO1xuICB9XG5cbiAgc2Nyb2xsVG9Ub3AoKTogdm9pZCB7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRUb0tlYmFiQ2FzZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWU/LnJlcGxhY2UoLyhbYS16MC05XSkoW0EtWl0pL2csICckMS0kMicpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbn1cbiIsIjwhLS0gVGFibGUgY29udGVudCAtLT5cbjx0YWJsZSBtYXQtdGFibGUgXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnbWF0LXRhYmxlLWhvdmVyJzogcm93SG92ZXIsICdtYXQtdGFibGUtc3RyaXBlZCc6IHJvd1N0cmlwZWQsICdtYXQtdGFibGUtd2l0aC1kYXRhJzogIWhhc05vUmVzdWx0IH1cIlxuICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgICAgICAgbWF0U29ydFxuICAgICAgICBbbWF0U29ydEFjdGl2ZV09XCJzb3J0QWN0aXZlXCJcbiAgICAgICAgW21hdFNvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiXG4gICAgICAgIFttYXRTb3J0RGlzYWJsZUNsZWFyXT1cInNvcnREaXNhYmxlQ2xlYXJcIlxuICAgICAgICBbbWF0U29ydERpc2FibGVkXT1cInNvcnREaXNhYmxlZFwiXG4gICAgICAgIFttYXRTb3J0U3RhcnRdPVwic29ydFN0YXJ0XCJcbiAgICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwic29ydENoYW5nZS5lbWl0KCRldmVudClcIj5cblxuICA8IS0tIFNlbGVjdGlvbiBjb2x1bW4gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3dTZWxlY3RhYmxlXCIgW21hdENvbHVtbkRlZl09XCJzZWxlY3Rpb25Db2x1bW5cIj5cbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwic2VsZWN0aW9uLWNlbGxcIj5cbiAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCJtdWx0aVNlbGVjdGFibGUgJiYgc2hvd1NlbGVjdEFsbENoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwicm93U2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwicm93U2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gdG9nZ2xlU2VsZWN0QWxsQ2hlY2tib3goKSA6IG51bGxcIj5cbiAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgIDwvdGg+XG4gICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXg7IGxldCBkYXRhSW5kZXggPSBkYXRhSW5kZXg7XCJcbiAgICAgICAgY2xhc3M9XCJzZWxlY3Rpb24tY2VsbFwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgKm5nSWY9XCJtdWx0aVNlbGVjdGFibGUgJiYgIShyb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuaGlkZUNoZWNrYm94ICYmIHJvd1NlbGVjdGlvbkZvcm1hdHRlci5oaWRlQ2hlY2tib3ghKHJvdykpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInJvd1NlbGVjdGlvbkZvcm1hdHRlci5kaXNhYmxlZCAmJiByb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQhKHJvdylcIlxuICAgICAgICBbY2hlY2tlZF09XCJyb3dTZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyB0b2dnbGVSb3dTZWxlY3Rpb24ocm93KSA6IG51bGxcIj5cbiAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgPG1hdC1yYWRpby1idXR0b25cbiAgICAgICAgKm5nSWY9XCIhbXVsdGlTZWxlY3RhYmxlICYmICEocm93U2VsZWN0aW9uRm9ybWF0dGVyLmhpZGVDaGVja2JveCAmJiByb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuaGlkZUNoZWNrYm94IShyb3cpKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJyb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQgJiYgcm93U2VsZWN0aW9uRm9ybWF0dGVyLmRpc2FibGVkIShyb3cpXCJcbiAgICAgICAgW2NoZWNrZWRdPVwicm93U2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiXG4gICAgICAgIFt2YWx1ZV09XCJyb3dTZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyB0b2dnbGVSb3dTZWxlY3Rpb24ocm93KSA6IG51bGxcIj5cbiAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIENvbnRleHQgbWVudSBjb2x1bW4gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93Q29udGV4dE1lbnVcIiBbbWF0Q29sdW1uRGVmXT1cImNvbnRleHRNZW51Q29sdW1uXCI+XG4gICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImFjdGlvbi1jZWxsXCI+PC90aD5cbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleDtcIlxuICAgICAgICBjbGFzcz1cImFjdGlvbi1jZWxsXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJpc1RlbXBsYXRlUmVmKGNvbnRleHRNZW51VGVtcGxhdGUpXCIgW25nSWZFbHNlXT1cImNvbnRleHRNZW51VHBsXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRleHRNZW51VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdyB9XCI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjb250ZXh0TWVudVRwbD5cbiAgICAgICAgICA8ZW50cnktY2VsbC1jb250ZXh0LW1lbnVcbiAgICAgICAgICAgIFtpdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICAgICAgICAgIFtyb3dEYXRhXT1cInJvd1wiXG4gICAgICAgICAgICBbcm93TWVudUZvcm1hdHRlcl09XCJyb3dDb250ZXh0TWVudUZvcm1hdHRlclwiXG4gICAgICAgICAgICAoc2VsZWN0ZWQpPVwiY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQuZW1pdCh7aXRlbUlkOiAkZXZlbnQsIHJvd0RhdGE6IHJvd30pXCJcbiAgICAgICAgICA+PC9lbnRyeS1jZWxsLWNvbnRleHQtbWVudT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1ucztcIj5cbiAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgIFtzdGlja3ldPVwiY29sLnBpbm5lZD09PSdsZWZ0J1wiIFtzdGlja3lFbmRdPVwiY29sLnBpbm5lZD09PSdyaWdodCdcIj5cbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWZcbiAgICAgICAgICBbY2xhc3NdPVwiZ2V0Q29sdW1uQ2xhc3NMaXN0KGNvbClcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbWF0LXRhYmxlLXN0aWNreS1sZWZ0JzogY29sLnBpbm5lZCA9PT0gJ2xlZnQnLCAnbWF0LXRhYmxlLXN0aWNreS1yaWdodCc6IGNvbC5waW5uZWQgPT09ICdyaWdodCd9XCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J3dpZHRoJzogY29sLndpZHRoLCAnbWluLXdpZHRoJzogY29sLndpZHRofVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJpc1RlbXBsYXRlUmVmKGhlYWRlclRlbXBsYXRlKVwiIFtuZ0lmRWxzZV09XCJoZWFkZXJUcGxcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sLCBjb2xEZWY6IGNvbCB9XCI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXJUcGw+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaGVhZGVyVGVtcGxhdGUgJiYgaXNUZW1wbGF0ZVJlZihoZWFkZXJUZW1wbGF0ZVtjb2wuZmllbGRdKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0lmRWxzZV09XCJkZWZhdWx0SGVhZGVyVHBsXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJUZW1wbGF0ZVtjb2wuZmllbGRdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbCwgY29sRGVmOiBjb2wgfVwiPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEhlYWRlclRwbD5cbiAgICAgICAgICAgIDxkaXYgW21hdC1zb3J0LWhlYWRlcl09XCJjb2wuc29ydFByb3A/LmlkIHx8IGNvbC5maWVsZFwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvbC5zb3J0YWJsZVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZUNsZWFyXT1cImNvbC5zb3J0UHJvcD8uZGlzYWJsZUNsZWFyXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7Y29sLmhlYWRlcn19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvdGg+XG5cbiAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3c7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgZGF0YUluZGV4ID0gZGF0YUluZGV4O1wiXG4gICAgICAgICAgW2NsYXNzXT1cImdldENvbHVtbkNsYXNzTGlzdChjb2wpXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J21hdC10YWJsZS1zdGlja3ktbGVmdCc6IGNvbC5waW5uZWQgPT09ICdsZWZ0JywgJ21hdC10YWJsZS1zdGlja3ktcmlnaHQnOiBjb2wucGlubmVkID09PSAncmlnaHQnfVwiXG4gICAgICAgICAgW25nU3R5bGVdPVwieyd3aWR0aCc6IGNvbC53aWR0aCwgJ21pbi13aWR0aCc6IGNvbC53aWR0aH1cIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImlzVGVtcGxhdGVSZWYoY2VsbFRlbXBsYXRlKVwiIFtuZ0lmRWxzZV09XCJjZWxsVHBsXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNlbGxUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93RGF0YTogcm93LCBpbmRleDogZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCksIGNvbERlZjogY29sIH1cIj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxUcGw+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImNlbGxUZW1wbGF0ZSAmJiBpc1RlbXBsYXRlUmVmKGNlbGxUZW1wbGF0ZVtjb2wuZmllbGRdKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdJZkVsc2VdPVwiY29sRGVmQ2VsbFRwbFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNlbGxUZW1wbGF0ZVtjb2wuZmllbGRdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdywgaW5kZXg6IGdldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpLCBjb2xEZWY6IGNvbCB9XCI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjY29sRGVmQ2VsbFRwbD5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiY29sLmNlbGxUZW1wbGF0ZVwiIFtuZ0lmRWxzZV09XCJkZWZhdWx0Q2VsbFRwbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2wuY2VsbFRlbXBsYXRlID8/IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdywgaW5kZXg6IGdldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpLCBjb2xEZWY6IGNvbCB9XCI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2VsbFRwbD5cbiAgICAgICAgICA8ZW50cnktY2VsbCBbcm93RGF0YV09XCJyb3dcIiBbY29sRGVmXT1cImNvbFwiPjwvZW50cnktY2VsbD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgPHRyIG1hdC1yb3dcbiAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleDsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIlxuICAgICAgW25nQ2xhc3NdPVwiZ2V0Um93Q2xhc3NMaXN0KHJvdywgZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCkpXCJcbiAgICAgIFthdHRyLnRhYmluZGV4XT1cInJvd0ZvY3VzVmlzaWJsZSA/IDAgOiAtMVwiXG4gICAgICAoY2xpY2spPVwicm93Q2xpY2suZW1pdChyb3cpXCJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJyb3dDbGljay5lbWl0KHJvdylcIj5cbiAgPC90cj5cbjwvdGFibGU+XG5cbjwhLS0gTm8gcmVzdWx0cyAtLT5cbjxkaXYgY2xhc3M9XCJuby1yZXN1bHRzIG1hdC1ib2R5LTJcIiAqbmdJZj1cImhhc05vUmVzdWx0XCI+XG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJpc1RlbXBsYXRlUmVmKG5vUmVzdWx0VGVtcGxhdGUpXCIgW25nSWZFbHNlXT1cImRlZmF1bHROb1Jlc3VsdFRwbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub1Jlc3VsdFRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Tm9SZXN1bHRUcGw+e3tub1Jlc3VsdFRleHR9fTwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPCEtLSBQYWdpbmF0aW9uIC0tPlxuPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImlzVGVtcGxhdGVSZWYocGFnaW5hdGlvblRlbXBsYXRlKVwiIFtuZ0lmRWxzZV09XCJkZWZhdWx0UGFnaW5hdGlvblRlbXBsYXRlXCI+XG4gIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJwYWdpbmF0aW9uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2luYXRpb25UZW1wbGF0ZT5cbiAgPG1hdC1wYWdpbmF0b3IgY2xhc3M9XCJwYWdpbmF0aW9uXCIgKm5nSWY9XCJzaG93UGFnaW5hdG9yXCJcbiAgICAgICAgICAgICAgICAgIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJzaG93Rmlyc3RMYXN0QnV0dG9uc1wiXG4gICAgICAgICAgICAgICAgICBbbGVuZ3RoXT1cInRvdGFsXCJcbiAgICAgICAgICAgICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZUluZGV4XCJcbiAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICBbaGlkZVBhZ2VTaXplXT1cImhpZGVQYWdlU2l6ZVwiXG4gICAgICAgICAgICAgICAgICAocGFnZSk9XCJoYW5kbGVQYWdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2VEaXNhYmxlZFwiPlxuICA8L21hdC1wYWdpbmF0b3I+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -0,0 +1,5 @@
1
+ export * from './entry-table/entry-table.component';
2
+ export * from './entry-cell/entry-cell.component';
3
+ export * from './entry-cell-context-menu/entry-cell-context-menu.component';
4
+ export * from './entry-cell-formatted-value/entry-cell-formatted-value.component';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvdGFibGUvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw2REFBNkQsQ0FBQztBQUM1RSxjQUFjLG1FQUFtRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCAqIGZyb20gJy4vZW50cnktdGFibGUvZW50cnktdGFibGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9lbnRyeS1jZWxsL2VudHJ5LWNlbGwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9lbnRyeS1jZWxsLWNvbnRleHQtbWVudS9lbnRyeS1jZWxsLWNvbnRleHQtbWVudS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2VudHJ5LWNlbGwtZm9ybWF0dGVkLXZhbHVlL2VudHJ5LWNlbGwtZm9ybWF0dGVkLXZhbHVlLmNvbXBvbmVudCc7XHJcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5pZ21hdHJ5LWVudHJ5LWNvbXBvbmVudHMtdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvdGFibGUvZW5pZ21hdHJ5LWVudHJ5LWNvbXBvbmVudHMtdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==