@c8y/ngx-components 1019.2.4 → 1019.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/core/common/forOf.directive.d.ts +10 -1
  2. package/core/common/forOf.directive.d.ts.map +1 -1
  3. package/core/common/geo.service.d.ts +9 -0
  4. package/core/common/geo.service.d.ts.map +1 -0
  5. package/core/common/index.d.ts +1 -0
  6. package/core/common/index.d.ts.map +1 -1
  7. package/core/common/load-more.component.d.ts +1 -0
  8. package/core/common/load-more.component.d.ts.map +1 -1
  9. package/core/core.module.d.ts +50 -49
  10. package/core/core.module.d.ts.map +1 -1
  11. package/core/index.d.ts +1 -0
  12. package/core/index.d.ts.map +1 -1
  13. package/core/realtime/realtime-button.component.d.ts +5 -2
  14. package/core/realtime/realtime-button.component.d.ts.map +1 -1
  15. package/core/router/context-route.service.d.ts +6 -5
  16. package/core/router/context-route.service.d.ts.map +1 -1
  17. package/core/time-interval/index.d.ts +3 -0
  18. package/core/time-interval/index.d.ts.map +1 -0
  19. package/core/time-interval/time-interval.component.d.ts +26 -0
  20. package/core/time-interval/time-interval.component.d.ts.map +1 -0
  21. package/core/time-interval/time-interval.model.d.ts +33 -0
  22. package/core/time-interval/time-interval.model.d.ts.map +1 -0
  23. package/esm2022/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +1 -1
  24. package/esm2022/core/audit-log/audit-log.component.mjs +1 -1
  25. package/esm2022/core/bootstrap/bootstrap.component.mjs +3 -3
  26. package/esm2022/core/common/forOf.directive.mjs +18 -2
  27. package/esm2022/core/common/geo.service.mjs +30 -0
  28. package/esm2022/core/common/index.mjs +2 -1
  29. package/esm2022/core/common/load-more.component.mjs +5 -2
  30. package/esm2022/core/core.module.mjs +11 -7
  31. package/esm2022/core/dynamic-forms/typeahead/typeahead.type.component.mjs +1 -1
  32. package/esm2022/core/index.mjs +2 -1
  33. package/esm2022/core/realtime/realtime-button.component.mjs +10 -4
  34. package/esm2022/core/router/context-route.service.mjs +10 -4
  35. package/esm2022/core/search/search-input.component.mjs +1 -1
  36. package/esm2022/core/time-interval/index.mjs +3 -0
  37. package/esm2022/core/time-interval/time-interval.component.mjs +85 -0
  38. package/esm2022/core/time-interval/time-interval.model.mjs +54 -0
  39. package/esm2022/datapoint-library/list/datapoint-library-list.component.mjs +2 -2
  40. package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +1 -1
  41. package/esm2022/device-profile/device-profile-list.component.mjs +1 -1
  42. package/esm2022/device-profile/device-tab-profile/device-tab-profile.component.mjs +1 -1
  43. package/esm2022/device-shell/shell/shell.component.mjs +1 -1
  44. package/esm2022/diagnostics/diagnostics.component.mjs +1 -1
  45. package/esm2022/ecosystem/applications/install-from-package/install-from-package.component.mjs +1 -1
  46. package/esm2022/ecosystem/shared/package-version-select/package-version-select.component.mjs +1 -1
  47. package/esm2022/location/location.component.mjs +1 -1
  48. package/esm2022/map/cluster-map.component.mjs +7 -7
  49. package/esm2022/map/map.component.mjs +92 -36
  50. package/esm2022/map/map.model.mjs +3 -2
  51. package/esm2022/operations/bulk-operations-list/bulk-operations-list.component.mjs +1 -1
  52. package/esm2022/operations/bulk-single-operations-list/single-operations-list.component.mjs +1 -1
  53. package/esm2022/operations/operations-list/operations-list.component.mjs +1 -1
  54. package/esm2022/operations/operations-timeline/operations-timeline.component.mjs +1 -1
  55. package/esm2022/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.mjs +1 -1
  56. package/esm2022/operations/stepper-bulk-type-device-profile/select-device-profile-step.component.mjs +1 -1
  57. package/esm2022/operations/stepper-bulk-type-firmware/select-firmware.component.mjs +1 -1
  58. package/esm2022/operations/stepper-bulk-type-firmware/version-or-patch.component.mjs +1 -1
  59. package/esm2022/operations/stepper-bulk-type-software/select-software-step.component.mjs +1 -1
  60. package/esm2022/protocol-lpwan/lpwan-set-connections.component.mjs +1 -1
  61. package/esm2022/protocol-lpwan/lpwan-set-device-protocol.component.mjs +1 -1
  62. package/esm2022/repository/configuration/list/configuration-detail.component.mjs +1 -1
  63. package/esm2022/repository/configuration/list/configuration-list.component.mjs +1 -1
  64. package/esm2022/repository/firmware/list/add-firmware-modal.component.mjs +1 -1
  65. package/esm2022/repository/firmware/list/add-firmware-patch-modal.component.mjs +1 -1
  66. package/esm2022/repository/firmware/list/firmware-details.component.mjs +1 -1
  67. package/esm2022/repository/firmware/list/firmware-list.component.mjs +1 -1
  68. package/esm2022/repository/shared/software-type/software-type.component.mjs +1 -1
  69. package/esm2022/repository/software/device-tab/device-software-list.component.mjs +1 -1
  70. package/esm2022/repository/software/list/add-software-modal.component.mjs +1 -1
  71. package/esm2022/repository/software/list/columns/software-type.filtering-form-renderer.component.mjs +1 -1
  72. package/esm2022/repository/software/list/software-details.component.mjs +1 -1
  73. package/esm2022/sub-assets/location/asset-location.component.mjs +1 -1
  74. package/esm2022/tracking/c8y-ngx-components-tracking.mjs +5 -0
  75. package/esm2022/tracking/index.mjs +6 -0
  76. package/esm2022/tracking/tracking-marker-popup.component.mjs +34 -0
  77. package/esm2022/tracking/tracking-tab.guard.mjs +25 -0
  78. package/esm2022/tracking/tracking.component.mjs +92 -0
  79. package/esm2022/tracking/tracking.feature.mjs +16 -0
  80. package/esm2022/tracking/tracking.service.mjs +124 -0
  81. package/esm2022/trusted-certificates/crl/crl-settings.component.mjs +5 -5
  82. package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +1 -1
  83. package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +2 -2
  84. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +1 -1
  85. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  86. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +1 -1
  87. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  88. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +1 -1
  89. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  90. package/fesm2022/c8y-ngx-components-device-profile.mjs +2 -2
  91. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  92. package/fesm2022/c8y-ngx-components-device-shell.mjs +1 -1
  93. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  94. package/fesm2022/c8y-ngx-components-diagnostics.mjs +1 -1
  95. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  96. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +1 -1
  97. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  98. package/fesm2022/c8y-ngx-components-ecosystem.mjs +1 -1
  99. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  100. package/fesm2022/c8y-ngx-components-location.mjs +1 -1
  101. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-map.mjs +95 -38
  103. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +1 -1
  105. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  106. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +1 -1
  107. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
  108. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +1 -1
  109. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +1 -1
  111. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
  112. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +1 -1
  113. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  114. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +1 -1
  115. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  116. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +2 -2
  117. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  118. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +1 -1
  119. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  120. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +2 -2
  121. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  122. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +2 -2
  123. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  124. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +4 -4
  125. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  126. package/fesm2022/c8y-ngx-components-repository-shared.mjs +1 -1
  127. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  128. package/fesm2022/c8y-ngx-components-repository-software.mjs +4 -4
  129. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  130. package/fesm2022/c8y-ngx-components-sub-assets.mjs +1 -1
  131. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  132. package/fesm2022/c8y-ngx-components-tracking.mjs +271 -0
  133. package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -0
  134. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +5 -5
  135. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  136. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +1 -1
  137. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  138. package/fesm2022/c8y-ngx-components.mjs +204 -16
  139. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  140. package/locales/de.po +158 -83
  141. package/locales/en.po +6 -0
  142. package/locales/fr.po +342 -186
  143. package/locales/locales.pot +34 -28
  144. package/locales/nl.po +326 -170
  145. package/locales/pt_BR.po +342 -186
  146. package/map/cluster-map.component.d.ts +3 -3
  147. package/map/cluster-map.component.d.ts.map +1 -1
  148. package/map/map.component.d.ts +17 -7
  149. package/map/map.component.d.ts.map +1 -1
  150. package/map/map.model.d.ts +14 -6
  151. package/map/map.model.d.ts.map +1 -1
  152. package/package.json +1 -1
  153. package/tracking/c8y-ngx-components-tracking.d.ts.map +1 -0
  154. package/tracking/index.d.ts +6 -0
  155. package/tracking/index.d.ts.map +1 -0
  156. package/tracking/tracking-marker-popup.component.d.ts +17 -0
  157. package/tracking/tracking-marker-popup.component.d.ts.map +1 -0
  158. package/tracking/tracking-tab.guard.d.ts +12 -0
  159. package/tracking/tracking-tab.guard.d.ts.map +1 -0
  160. package/tracking/tracking.component.d.ts +33 -0
  161. package/tracking/tracking.component.d.ts.map +1 -0
  162. package/tracking/tracking.feature.d.ts +3 -0
  163. package/tracking/tracking.feature.d.ts.map +1 -0
  164. package/tracking/tracking.service.d.ts +38 -0
  165. package/tracking/tracking.service.d.ts.map +1 -0
  166. package/trusted-certificates/crl/crl-settings.component.d.ts +1 -1
  167. package/trusted-certificates/crl/crl-settings.component.d.ts.map +1 -1
@@ -697,7 +697,7 @@ class ConfigurationDetailComponent {
697
697
  }
698
698
  }
699
699
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigurationDetailComponent, deps: [{ token: i3.RepositoryService }, { token: i3$1.BsModalRef }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
700
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfigurationDetailComponent, selector: "c8y-configuration-detail", viewQueries: [{ propertyName: "configurationForm", first: true, predicate: ["configurationForm"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\" id=\"configurationModalTitle\">\n <i [c8yIcon]=\"'cogs'\"></i>\n <h4 id=\"modal-title\" translate *ngIf=\"mo.id\">Update configuration</h4>\n <h4 id=\"modal-title\" translate *ngIf=\"!mo.id\">Add configuration</h4>\n </div>\n\n <form\n class=\"d-contents\"\n #configurationForm=\"ngForm\"\n (ngSubmit)=\"configurationForm.form.valid && save()\"\n >\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"modal-body\" id=\"configurationModalDescription\">\n <c8y-form-group>\n <label translate>Name</label>\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} hosts\"\n autocomplete=\"off\"\n required\n maxlength=\"254\"\n [(ngModel)]=\"version\"\n name=\"version\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Device type</label>\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} c8y_Linux\"\n maxlength=\"254\"\n autocomplete=\"off\"\n [(ngModel)]=\"deviceType\"\n name=\"deviceType\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Description</label>\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g. Host configuration' | translate }} c8y_Linux\"\n maxlength=\"254\"\n autocomplete=\"off\"\n [(ngModel)]=\"description\"\n name=\"description\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Configuration type</label>\n <c8y-typeahead\n [(ngModel)]=\"selected\"\n name=\"confType\"\n placeholder=\"{{ 'e.g.' | translate }} ssh\"\n maxlength=\"254\"\n (onSearch)=\"setPipe($event)\"\n displayProperty=\"configurationType\"\n >\n <c8y-li\n *c8yFor=\"let config of configs; pipe: filterPipe; notFound: notFoundTemplate\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selected = config; setPipe('')\"\n [active]=\"selected === config\"\n >\n <c8y-highlight\n [text]=\"config.configurationType || '--'\"\n [pattern]=\"pattern\"\n ></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li class=\"bg-level-2 p-8\" *ngIf=\"pattern.length > 0\">\n <span translate>No match found.</span>\n <button\n title=\"{{ 'Add new`configuration type`' | translate }}\"\n type=\"button\"\n class=\"btn btn-primary btn-xs m-l-8\"\n translate\n >\n Add new`configuration type`\n </button>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n </c8y-form-group>\n\n <c8y-form-group>\n <div class=\"legend form-block m-t-40\" translate>Configuration file</div>\n <c8y-file-picker\n [maxAllowedFiles]=\"1\"\n (onFilesPicked)=\"onFile($event)\"\n [uploadChoice]=\"uploadChoice\"\n [fileUrl]=\"binary.url\"\n [fileBinary]=\"binary.file\"\n [fileUrlPopover]=\"textForConfigurationUrlPopover\"\n >\n </c8y-file-picker>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n (click)=\"cancel()\"\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n [disabled]=\"saving\"\n >\n <span translate>Cancel</span>\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ submitButtonTitle | translate }}\"\n [ngClass]=\"{ 'btn-pending': saving }\"\n [disabled]=\"\n !configurationForm.valid ||\n configurationForm.pristine ||\n (!binary?.url && !binary?.file) ||\n saving\n \"\n >\n {{ submitButtonTitle | translate }}\n </button>\n </div>\n </form>\n</div>\n", dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i2.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: i2.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.FilePickerComponent, selector: "c8y-file-picker", inputs: ["maxAllowedFiles", "uploadChoice", "fileUrl", "fileBinary", "config", "fileUrlPopover"], outputs: ["onFilesPicked"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
700
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfigurationDetailComponent, selector: "c8y-configuration-detail", viewQueries: [{ propertyName: "configurationForm", first: true, predicate: ["configurationForm"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\" id=\"configurationModalTitle\">\n <i [c8yIcon]=\"'cogs'\"></i>\n <h4 id=\"modal-title\" translate *ngIf=\"mo.id\">Update configuration</h4>\n <h4 id=\"modal-title\" translate *ngIf=\"!mo.id\">Add configuration</h4>\n </div>\n\n <form\n class=\"d-contents\"\n #configurationForm=\"ngForm\"\n (ngSubmit)=\"configurationForm.form.valid && save()\"\n >\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"modal-body\" id=\"configurationModalDescription\">\n <c8y-form-group>\n <label translate>Name</label>\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} hosts\"\n autocomplete=\"off\"\n required\n maxlength=\"254\"\n [(ngModel)]=\"version\"\n name=\"version\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Device type</label>\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} c8y_Linux\"\n maxlength=\"254\"\n autocomplete=\"off\"\n [(ngModel)]=\"deviceType\"\n name=\"deviceType\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Description</label>\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g. Host configuration' | translate }} c8y_Linux\"\n maxlength=\"254\"\n autocomplete=\"off\"\n [(ngModel)]=\"description\"\n name=\"description\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Configuration type</label>\n <c8y-typeahead\n [(ngModel)]=\"selected\"\n name=\"confType\"\n placeholder=\"{{ 'e.g.' | translate }} ssh\"\n maxlength=\"254\"\n (onSearch)=\"setPipe($event)\"\n displayProperty=\"configurationType\"\n >\n <c8y-li\n *c8yFor=\"let config of configs; pipe: filterPipe; notFound: notFoundTemplate\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selected = config; setPipe('')\"\n [active]=\"selected === config\"\n >\n <c8y-highlight\n [text]=\"config.configurationType || '--'\"\n [pattern]=\"pattern\"\n ></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li class=\"bg-level-2 p-8\" *ngIf=\"pattern.length > 0\">\n <span translate>No match found.</span>\n <button\n title=\"{{ 'Add new`configuration type`' | translate }}\"\n type=\"button\"\n class=\"btn btn-primary btn-xs m-l-8\"\n translate\n >\n Add new`configuration type`\n </button>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n </c8y-form-group>\n\n <c8y-form-group>\n <div class=\"legend form-block m-t-40\" translate>Configuration file</div>\n <c8y-file-picker\n [maxAllowedFiles]=\"1\"\n (onFilesPicked)=\"onFile($event)\"\n [uploadChoice]=\"uploadChoice\"\n [fileUrl]=\"binary.url\"\n [fileBinary]=\"binary.file\"\n [fileUrlPopover]=\"textForConfigurationUrlPopover\"\n >\n </c8y-file-picker>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n (click)=\"cancel()\"\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n [disabled]=\"saving\"\n >\n <span translate>Cancel</span>\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ submitButtonTitle | translate }}\"\n [ngClass]=\"{ 'btn-pending': saving }\"\n [disabled]=\"\n !configurationForm.valid ||\n configurationForm.pristine ||\n (!binary?.url && !binary?.file) ||\n saving\n \"\n >\n {{ submitButtonTitle | translate }}\n </button>\n </div>\n </form>\n</div>\n", dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForLoadMoreComponent"] }, { kind: "component", type: i2.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: i2.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.FilePickerComponent, selector: "c8y-file-picker", inputs: ["maxAllowedFiles", "uploadChoice", "fileUrl", "fileBinary", "config", "fileUrlPopover"], outputs: ["onFilesPicked"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
701
701
  }
702
702
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigurationDetailComponent, decorators: [{
703
703
  type: Component,
@@ -837,7 +837,7 @@ class ConfigurationListComponent {
837
837
  return name && name.toLowerCase().indexOf(term) > -1;
838
838
  }
839
839
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigurationListComponent, deps: [{ token: i2.AlertService }, { token: i3.RepositoryService }, { token: i3$1.BsModalService }, { token: i2.ModalService }, { token: i4$1.TranslateService }, { token: i5.InventoryBinaryService }, { token: i5.InventoryService }], target: i0.ɵɵFactoryTarget.Component }); }
840
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfigurationListComponent, selector: "c8y-configuration-list", viewQueries: [{ propertyName: "filter", first: true, predicate: FilterInputComponent, descendants: true }], ngImport: i0, template: "<c8y-title>\n <span\n class=\"m-r-4\"\n translate\n >\n Configuration repository\n </span>\n <small *ngIf=\"(configurations$ | async)?.paging.totalPages === 1 && !filterTerm\">\n {{ (configurations$ | async).data.length }}\n <span translate>snapshots</span>\n </small>\n <small\n [tooltip]=\"'More data available. Scroll to the bottom of the list to load it.' | translate\"\n container=\"body\"\n *ngIf=\"(configurations$ | async)?.paging.totalPages > 1 && !filterTerm\"\n >\n {{ (configurations$ | async).paging.pageSize }}+\n <span translate>snapshots</span>\n </small>\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n label=\"{{ 'Management' | translate }}\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n icon=\"gears\"\n label=\"{{ 'Configuration repository' | translate }}\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item itemClass=\"navbar-form\">\n <c8y-filter\n [icon]=\"'search'\"\n (onSearch)=\"setPipe($event)\"\n ></c8y-filter>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add configuration snapshot' | translate }}\"\n type=\"button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add configuration snapshot' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"loadConfigurations()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/managing-device-data/#managing-configurations\"\n></c8y-help>\n\n<!-- empty state -->\n<c8y-ui-empty-state\n [icon]=\"'gears'\"\n [title]=\"'There are no configuration snapshots defined.' | translate\"\n [subtitle]=\"'Add a configuration snapshot first.' | translate\"\n *ngIf=\"!filterTerm && (configurations$ | async)?.data.length === 0\"\n>\n <div>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add configuration snapshot' | translate }}\"\n type=\"button\"\n (click)=\"add()\"\n >\n {{ 'Add configuration snapshot' | translate }}\n </button>\n </div>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/managing-device-data/#managing-configurations\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n</c8y-ui-empty-state>\n\n<!-- no results empty state -->\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Refine your search terms or check your spelling.' | translate\"\n *ngIf=\"shouldShowEmptyState() && (configurations$ | async)?.data.length > 0\"\n></c8y-ui-empty-state>\n\n<c8y-list-group\n class=\"m-b-24\"\n *ngIf=\"(configurations$ | async)?.data.length > 0\"\n [ngClass]=\"{\n 'dd-low': data && data.length ? data.length < 10 : (configurations$ | async)?.data.length < 10\n }\"\n>\n <c8y-li\n class=\"page-sticky-header hidden-xs\"\n [emptyActions]=\"true\"\n *ngIf=\"!shouldShowEmptyState()\"\n >\n <c8y-li-icon>\n <i class=\"p-l-24\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-2\">\n {{ 'Configuration' | translate }}\n </div>\n <div class=\"col-3\">\n {{ 'Description' | translate }}\n </div>\n <div class=\"col-3\">\n {{ 'File' | translate }}\n </div>\n <div class=\"col-2\">\n {{ 'Device type' | translate }}\n </div>\n <div class=\"col-2\">\n {{ 'Configuration type' | translate }}\n </div>\n </c8y-li-body>\n </c8y-li>\n\n <c8y-li *c8yFor=\"let configuration of configurations$; pipe: filterPipe\">\n <c8y-li-icon icon=\"gears\"></c8y-li-icon>\n <div class=\"content-flex-60\">\n <button\n class=\"btn-clean col-2\"\n title=\"{{ configuration.name || '-' }}\"\n type=\"button\"\n (click)=\"edit(configuration)\"\n >\n <span class=\"text-truncate\">\n <c8y-highlight\n [text]=\"configuration.name || '-'\"\n elementClass=\"text-info\"\n [pattern]=\"filterTerm\"\n ></c8y-highlight>\n </span>\n </button>\n <div class=\"col-3\">\n <div class=\"text-label-small visible-xs-inline m-r-4\">\n {{ 'Description' | translate }}\n </div>\n <small\n class=\"text-truncate\"\n title=\"configuration.description\"\n *ngIf=\"configuration.description; else emptyDescription\"\n >\n <c8y-highlight\n [text]=\"configuration.description || '-'\"\n elementClass=\"text-info\"\n [pattern]=\"filterTerm\"\n ></c8y-highlight>\n </small>\n </div>\n <div class=\"col-3\">\n <span class=\"text-truncate\">\n <span\n class=\"text-label-small m-r-4 visible-xs-inline\"\n translate\n >\n File\n </span>\n <small\n title=\"{{ getBinaryName(configuration) | async }}\"\n *ngIf=\"isBinaryFile(configuration); else noFile\"\n >\n {{ getBinaryName(configuration) | async }}\n </small>\n <ng-template #noFile>\n <small title=\"{{ configuration.url }}\">\n {{ configuration.url }}\n </small>\n </ng-template>\n </span>\n </div>\n <div class=\"col-2\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ configuration.deviceType || '-' }}\"\n >\n <span\n class=\"text-label-small visible-xs-inline m-r-4\"\n translate\n >\n Device type\n </span>\n <span *ngIf=\"configuration.deviceType; else emptyText\">\n <c8y-highlight\n [text]=\"configuration.deviceType || '-'\"\n elementClass=\"text-info\"\n [pattern]=\"filterTerm\"\n ></c8y-highlight>\n </span>\n </div>\n </div>\n <div class=\"col-2\">\n <div\n class=\"text-truncate\"\n title=\"{{ configuration.configurationType }}\"\n >\n <span\n class=\"label label-primary\"\n *ngIf=\"configuration.configurationType; else emptyText\"\n >\n <c8y-highlight\n [text]=\"configuration.configurationType\"\n elementClass=\"text-info\"\n [pattern]=\"filterTerm\"\n ></c8y-highlight>\n </span>\n </div>\n </div>\n </div>\n <c8y-li-action\n icon=\"pencil\"\n (click)=\"edit(configuration)\"\n label=\"{{ 'Edit' | translate }}\"\n ></c8y-li-action>\n <c8y-li-action\n icon=\"delete\"\n (click)=\"delete(configuration)\"\n label=\"{{ 'Delete' | translate }}\"\n ></c8y-li-action>\n <c8y-li-action\n icon=\"download\"\n *ngIf=\"isBinaryFile(configuration)\"\n (click)=\"download(configuration)\"\n label=\"{{ 'Download' | translate }}\"\n ></c8y-li-action>\n <ng-template #emptyText>\n <small class=\"text-muted\">\n <em>{{ 'Undefined' | translate }}</em>\n </small>\n </ng-template>\n <ng-template #emptyDescription>\n <small class=\"text-muted\">\n <em>{{ 'No description' | translate }}</em>\n </small>\n </ng-template>\n </c8y-li>\n</c8y-list-group>\n", dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i2.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: i2.FilterInputComponent, selector: "c8y-filter", inputs: ["icon"], outputs: ["onSearch"] }, { kind: "directive", type: i2.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i2.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i2.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i2.ListItemActionComponent, selector: "c8y-list-item-action, c8y-li-action", inputs: ["label", "icon", "disabled"], outputs: ["click"] }, { kind: "component", type: i2.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "directive", type: i7$1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
840
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfigurationListComponent, selector: "c8y-configuration-list", viewQueries: [{ propertyName: "filter", first: true, predicate: FilterInputComponent, descendants: true }], ngImport: i0, template: "<c8y-title>\n <span\n class=\"m-r-4\"\n translate\n >\n Configuration repository\n </span>\n <small *ngIf=\"(configurations$ | async)?.paging.totalPages === 1 && !filterTerm\">\n {{ (configurations$ | async).data.length }}\n <span translate>snapshots</span>\n </small>\n <small\n [tooltip]=\"'More data available. Scroll to the bottom of the list to load it.' | translate\"\n container=\"body\"\n *ngIf=\"(configurations$ | async)?.paging.totalPages > 1 && !filterTerm\"\n >\n {{ (configurations$ | async).paging.pageSize }}+\n <span translate>snapshots</span>\n </small>\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n label=\"{{ 'Management' | translate }}\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n icon=\"gears\"\n label=\"{{ 'Configuration repository' | translate }}\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item itemClass=\"navbar-form\">\n <c8y-filter\n [icon]=\"'search'\"\n (onSearch)=\"setPipe($event)\"\n ></c8y-filter>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add configuration snapshot' | translate }}\"\n type=\"button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add configuration snapshot' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"loadConfigurations()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/managing-device-data/#managing-configurations\"\n></c8y-help>\n\n<!-- empty state -->\n<c8y-ui-empty-state\n [icon]=\"'gears'\"\n [title]=\"'There are no configuration snapshots defined.' | translate\"\n [subtitle]=\"'Add a configuration snapshot first.' | translate\"\n *ngIf=\"!filterTerm && (configurations$ | async)?.data.length === 0\"\n>\n <div>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add configuration snapshot' | translate }}\"\n type=\"button\"\n (click)=\"add()\"\n >\n {{ 'Add configuration snapshot' | translate }}\n </button>\n </div>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/managing-device-data/#managing-configurations\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n</c8y-ui-empty-state>\n\n<!-- no results empty state -->\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Refine your search terms or check your spelling.' | translate\"\n *ngIf=\"shouldShowEmptyState() && (configurations$ | async)?.data.length > 0\"\n></c8y-ui-empty-state>\n\n<c8y-list-group\n class=\"m-b-24\"\n *ngIf=\"(configurations$ | async)?.data.length > 0\"\n [ngClass]=\"{\n 'dd-low': data && data.length ? data.length < 10 : (configurations$ | async)?.data.length < 10\n }\"\n>\n <c8y-li\n class=\"page-sticky-header hidden-xs\"\n [emptyActions]=\"true\"\n *ngIf=\"!shouldShowEmptyState()\"\n >\n <c8y-li-icon>\n <i class=\"p-l-24\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-2\">\n {{ 'Configuration' | translate }}\n </div>\n <div class=\"col-3\">\n {{ 'Description' | translate }}\n </div>\n <div class=\"col-3\">\n {{ 'File' | translate }}\n </div>\n <div class=\"col-2\">\n {{ 'Device type' | translate }}\n </div>\n <div class=\"col-2\">\n {{ 'Configuration type' | translate }}\n </div>\n </c8y-li-body>\n </c8y-li>\n\n <c8y-li *c8yFor=\"let configuration of configurations$; pipe: filterPipe\">\n <c8y-li-icon icon=\"gears\"></c8y-li-icon>\n <div class=\"content-flex-60\">\n <button\n class=\"btn-clean col-2\"\n title=\"{{ configuration.name || '-' }}\"\n type=\"button\"\n (click)=\"edit(configuration)\"\n >\n <span class=\"text-truncate\">\n <c8y-highlight\n [text]=\"configuration.name || '-'\"\n elementClass=\"text-info\"\n [pattern]=\"filterTerm\"\n ></c8y-highlight>\n </span>\n </button>\n <div class=\"col-3\">\n <div class=\"text-label-small visible-xs-inline m-r-4\">\n {{ 'Description' | translate }}\n </div>\n <small\n class=\"text-truncate\"\n title=\"configuration.description\"\n *ngIf=\"configuration.description; else emptyDescription\"\n >\n <c8y-highlight\n [text]=\"configuration.description || '-'\"\n elementClass=\"text-info\"\n [pattern]=\"filterTerm\"\n ></c8y-highlight>\n </small>\n </div>\n <div class=\"col-3\">\n <span class=\"text-truncate\">\n <span\n class=\"text-label-small m-r-4 visible-xs-inline\"\n translate\n >\n File\n </span>\n <small\n title=\"{{ getBinaryName(configuration) | async }}\"\n *ngIf=\"isBinaryFile(configuration); else noFile\"\n >\n {{ getBinaryName(configuration) | async }}\n </small>\n <ng-template #noFile>\n <small title=\"{{ configuration.url }}\">\n {{ configuration.url }}\n </small>\n </ng-template>\n </span>\n </div>\n <div class=\"col-2\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ configuration.deviceType || '-' }}\"\n >\n <span\n class=\"text-label-small visible-xs-inline m-r-4\"\n translate\n >\n Device type\n </span>\n <span *ngIf=\"configuration.deviceType; else emptyText\">\n <c8y-highlight\n [text]=\"configuration.deviceType || '-'\"\n elementClass=\"text-info\"\n [pattern]=\"filterTerm\"\n ></c8y-highlight>\n </span>\n </div>\n </div>\n <div class=\"col-2\">\n <div\n class=\"text-truncate\"\n title=\"{{ configuration.configurationType }}\"\n >\n <span\n class=\"label label-primary\"\n *ngIf=\"configuration.configurationType; else emptyText\"\n >\n <c8y-highlight\n [text]=\"configuration.configurationType\"\n elementClass=\"text-info\"\n [pattern]=\"filterTerm\"\n ></c8y-highlight>\n </span>\n </div>\n </div>\n </div>\n <c8y-li-action\n icon=\"pencil\"\n (click)=\"edit(configuration)\"\n label=\"{{ 'Edit' | translate }}\"\n ></c8y-li-action>\n <c8y-li-action\n icon=\"delete\"\n (click)=\"delete(configuration)\"\n label=\"{{ 'Delete' | translate }}\"\n ></c8y-li-action>\n <c8y-li-action\n icon=\"download\"\n *ngIf=\"isBinaryFile(configuration)\"\n (click)=\"download(configuration)\"\n label=\"{{ 'Download' | translate }}\"\n ></c8y-li-action>\n <ng-template #emptyText>\n <small class=\"text-muted\">\n <em>{{ 'Undefined' | translate }}</em>\n </small>\n </ng-template>\n <ng-template #emptyDescription>\n <small class=\"text-muted\">\n <em>{{ 'No description' | translate }}</em>\n </small>\n </ng-template>\n </c8y-li>\n</c8y-list-group>\n", dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForLoadMoreComponent"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i2.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: i2.FilterInputComponent, selector: "c8y-filter", inputs: ["icon"], outputs: ["onSearch"] }, { kind: "directive", type: i2.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i2.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i2.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i2.ListItemActionComponent, selector: "c8y-list-item-action, c8y-li-action", inputs: ["label", "icon", "disabled"], outputs: ["click"] }, { kind: "component", type: i2.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "directive", type: i7$1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
841
841
  }
842
842
  __decorate([
843
843
  memoize(property('id')),