@c8y/ngx-components 1021.63.2 → 1021.66.0

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 (146) hide show
  1. package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts +7 -2
  2. package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts.map +1 -1
  3. package/core/bottom-drawer/bottom-drawer-ref.d.ts +4 -0
  4. package/core/bottom-drawer/bottom-drawer-ref.d.ts.map +1 -1
  5. package/core/breadcrumb/breadcrumb-item.component.d.ts +1 -1
  6. package/core/breadcrumb/breadcrumb-item.component.d.ts.map +1 -1
  7. package/core/breadcrumb/breadcrumb-outlet.component.d.ts +1 -1
  8. package/core/breadcrumb/breadcrumb-outlet.component.d.ts.map +1 -1
  9. package/core/breadcrumb/breadcrumb.component.d.ts +1 -1
  10. package/core/breadcrumb/breadcrumb.component.d.ts.map +1 -1
  11. package/core/breadcrumb/breadcrumb.module.d.ts +7 -7
  12. package/core/breadcrumb/breadcrumb.module.d.ts.map +1 -1
  13. package/core/common/common.module.d.ts +38 -38
  14. package/core/common/date-format.service.d.ts +30 -0
  15. package/core/common/date-format.service.d.ts.map +1 -0
  16. package/core/common/date.pipe.d.ts +7 -3
  17. package/core/common/date.pipe.d.ts.map +1 -1
  18. package/core/common/index.d.ts +1 -0
  19. package/core/common/index.d.ts.map +1 -1
  20. package/core/common/outlet.directive.d.ts +1 -1
  21. package/core/common/outlet.directive.d.ts.map +1 -1
  22. package/core/common/user-preferences/user-preferences-store-current-user.d.ts +11 -0
  23. package/core/common/user-preferences/user-preferences-store-current-user.d.ts.map +1 -0
  24. package/core/common/user-preferences/user-preferences.service.d.ts +40 -1
  25. package/core/common/user-preferences/user-preferences.service.d.ts.map +1 -1
  26. package/core/date-picker/date-picker.component.d.ts +3 -1
  27. package/core/date-picker/date-picker.component.d.ts.map +1 -1
  28. package/core/date-time-picker/date-time-picker.component.d.ts +6 -3
  29. package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
  30. package/core/dynamic-forms/date/date.type.component.d.ts +3 -0
  31. package/core/dynamic-forms/date/date.type.component.d.ts.map +1 -1
  32. package/core/plugins/plugins.model.d.ts +1 -0
  33. package/core/plugins/plugins.model.d.ts.map +1 -1
  34. package/core/plugins/plugins.service.d.ts +7 -2
  35. package/core/plugins/plugins.service.d.ts.map +1 -1
  36. package/core/time-interval/time-interval.component.d.ts +4 -2
  37. package/core/time-interval/time-interval.component.d.ts.map +1 -1
  38. package/ecosystem/application-plugins/application-plugin-readme.component.d.ts +15 -0
  39. package/ecosystem/application-plugins/application-plugin-readme.component.d.ts.map +1 -0
  40. package/ecosystem/application-plugins/application-plugins.component.d.ts +4 -2
  41. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  42. package/ecosystem/application-plugins/application-plugins.module.d.ts +4 -3
  43. package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
  44. package/ecosystem/application-plugins/install-plugin.component.d.ts +8 -4
  45. package/ecosystem/application-plugins/install-plugin.component.d.ts.map +1 -1
  46. package/ecosystem/application-plugins/plugin-list.component.d.ts +10 -26
  47. package/ecosystem/application-plugins/plugin-list.component.d.ts.map +1 -1
  48. package/ecosystem/application-plugins/plugin-list.service.d.ts +27 -0
  49. package/ecosystem/application-plugins/plugin-list.service.d.ts.map +1 -0
  50. package/ecosystem/ecosystem.module.d.ts +2 -1
  51. package/ecosystem/ecosystem.module.d.ts.map +1 -1
  52. package/ecosystem/packages/package-changelog-tab/package-changelog-tab.component.d.ts +15 -0
  53. package/ecosystem/packages/package-changelog-tab/package-changelog-tab.component.d.ts.map +1 -0
  54. package/ecosystem/packages/package-changelog.guard.d.ts +10 -0
  55. package/ecosystem/packages/package-changelog.guard.d.ts.map +1 -0
  56. package/ecosystem/packages/package-details/package-details.component.d.ts +7 -9
  57. package/ecosystem/packages/package-details/package-details.component.d.ts.map +1 -1
  58. package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts +5 -1
  59. package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts.map +1 -1
  60. package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts +8 -3
  61. package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts.map +1 -1
  62. package/ecosystem/packages/package-versions/packages-versions.component.d.ts +9 -2
  63. package/ecosystem/packages/package-versions/packages-versions.component.d.ts.map +1 -1
  64. package/ecosystem/shared/index.d.ts +1 -0
  65. package/ecosystem/shared/index.d.ts.map +1 -1
  66. package/ecosystem/shared/package-changelog/package-changelog.component.d.ts +24 -0
  67. package/ecosystem/shared/package-changelog/package-changelog.component.d.ts.map +1 -0
  68. package/ecosystem/shared/shared-ecosystem.module.d.ts +2 -1
  69. package/ecosystem/shared/shared-ecosystem.module.d.ts.map +1 -1
  70. package/esm2022/auth-configuration/sso-configuration/template-parts/signature-configuration.component.mjs +11 -7
  71. package/esm2022/core/bottom-drawer/bottom-drawer-ref.mjs +9 -3
  72. package/esm2022/core/breadcrumb/breadcrumb-item.component.mjs +3 -3
  73. package/esm2022/core/breadcrumb/breadcrumb-outlet.component.mjs +19 -9
  74. package/esm2022/core/breadcrumb/breadcrumb.component.mjs +3 -3
  75. package/esm2022/core/breadcrumb/breadcrumb.module.mjs +16 -5
  76. package/esm2022/core/common/common.module.mjs +6 -6
  77. package/esm2022/core/common/date-format.service.mjs +81 -0
  78. package/esm2022/core/common/date.pipe.mjs +29 -6
  79. package/esm2022/core/common/index.mjs +2 -1
  80. package/esm2022/core/common/outlet.directive.mjs +4 -3
  81. package/esm2022/core/common/user-preferences/user-preferences-store-current-user.mjs +22 -0
  82. package/esm2022/core/common/user-preferences/user-preferences.service.mjs +106 -16
  83. package/esm2022/core/date-picker/date-picker.component.mjs +11 -4
  84. package/esm2022/core/date-time-picker/date-time-picker.component.mjs +20 -11
  85. package/esm2022/core/dynamic-forms/date/date.type.component.mjs +12 -4
  86. package/esm2022/core/plugins/plugins.model.mjs +1 -1
  87. package/esm2022/core/plugins/plugins.service.mjs +31 -5
  88. package/esm2022/core/time-interval/time-interval.component.mjs +9 -2
  89. package/esm2022/ecosystem/application-plugins/application-plugin-readme.component.mjs +26 -0
  90. package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +29 -14
  91. package/esm2022/ecosystem/application-plugins/application-plugins.module.mjs +6 -3
  92. package/esm2022/ecosystem/application-plugins/install-plugin.component.mjs +21 -15
  93. package/esm2022/ecosystem/application-plugins/plugin-list-item.component.mjs +3 -3
  94. package/esm2022/ecosystem/application-plugins/plugin-list.component.mjs +26 -202
  95. package/esm2022/ecosystem/application-plugins/plugin-list.service.mjs +200 -0
  96. package/esm2022/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.mjs +3 -3
  97. package/esm2022/ecosystem/application-properties/update-application-modal/update-application-modal.component.mjs +1 -1
  98. package/esm2022/ecosystem/ecosystem.module.mjs +21 -5
  99. package/esm2022/ecosystem/packages/package-changelog-tab/package-changelog-tab.component.mjs +33 -0
  100. package/esm2022/ecosystem/packages/package-changelog.guard.mjs +22 -0
  101. package/esm2022/ecosystem/packages/package-details/package-details.component.mjs +25 -44
  102. package/esm2022/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.mjs +14 -4
  103. package/esm2022/ecosystem/packages/package-versions/package-contents/packages-contents.component.mjs +27 -8
  104. package/esm2022/ecosystem/packages/package-versions/packages-versions.component.mjs +22 -8
  105. package/esm2022/ecosystem/shared/index.mjs +2 -1
  106. package/esm2022/ecosystem/shared/list-filters/list-filters.component.mjs +3 -3
  107. package/esm2022/ecosystem/shared/package-changelog/package-changelog.component.mjs +82 -0
  108. package/esm2022/ecosystem/shared/package-version-select/package-version-select.component.mjs +3 -3
  109. package/esm2022/ecosystem/shared/shared-ecosystem.module.mjs +12 -6
  110. package/esm2022/operations/bulk-operation-scheduler/operation-scheduler.component.mjs +9 -7
  111. package/esm2022/operations/bulk-operations-list/bulk-operations-list.component.mjs +1 -1
  112. package/esm2022/upgrade/ng1/downgraded.services.mjs +3 -2
  113. package/esm2022/upgrade/ng1/index.mjs +3 -2
  114. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +9 -5
  115. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  116. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +209 -142
  117. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  118. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +96 -13
  119. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  120. package/fesm2022/c8y-ngx-components-ecosystem.mjs +336 -186
  121. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  122. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -5
  123. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  124. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +1 -1
  125. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  126. package/fesm2022/c8y-ngx-components-upgrade.mjs +3 -1
  127. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  128. package/fesm2022/c8y-ngx-components.mjs +833 -550
  129. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  130. package/locales/de.po +45 -6
  131. package/locales/es.po +45 -6
  132. package/locales/fr.po +45 -6
  133. package/locales/ja_JP.po +45 -6
  134. package/locales/ko.po +45 -6
  135. package/locales/locales.pot +42 -6
  136. package/locales/nl.po +45 -6
  137. package/locales/pl.po +45 -6
  138. package/locales/pt_BR.po +45 -6
  139. package/locales/zh_CN.po +45 -6
  140. package/locales/zh_TW.po +45 -6
  141. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts +4 -2
  142. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
  143. package/package.json +1 -1
  144. package/upgrade/ng1/downgraded.services.d.ts +1 -0
  145. package/upgrade/ng1/downgraded.services.d.ts.map +1 -1
  146. package/upgrade/ng1/index.d.ts.map +1 -1
@@ -1,16 +1,17 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Injectable, Component, Input, ViewChild, Pipe, Output, forwardRef, NgModule } from '@angular/core';
2
+ import { EventEmitter, Injectable, Component, Input, ViewChild, Pipe, Output, forwardRef, inject, NgModule } from '@angular/core';
3
3
  import * as i3$1 from '@c8y/client';
4
4
  import { ApplicationAvailability, ApplicationType } from '@c8y/client';
5
5
  import * as i2 from '@c8y/ngx-components';
6
- import { gettext, PackageType, Status, DropAreaComponent, C8yStepper, internalApps, FilterInputComponent, CoreModule, hookWizard } from '@c8y/ngx-components';
6
+ import { gettext, PackageType, Status, DropAreaComponent, C8yStepper, internalApps, FilterInputComponent, PluginsService, LoadingComponent, MarkdownToHtmlPipe, EmptyStateComponent, C8yTranslatePipe, CoreModule, hookWizard } from '@c8y/ngx-components';
7
7
  import * as i3 from '@ngx-translate/core';
8
8
  import { saveAs } from 'file-saver';
9
9
  import { groupBy, uniqBy, get, pick, omit, isUndefined, kebabCase, cloneDeep } from 'lodash-es';
10
10
  import { BehaviorSubject, defer, merge, combineLatest, Subject, pipe } from 'rxjs';
11
11
  import { map, shareReplay, debounceTime, take, filter, distinctUntilKeyChanged, tap, switchMap, takeUntil } from 'rxjs/operators';
12
- import { satisfies, gt, coerce } from 'semver';
12
+ import { satisfies, gt, coerce, lt } from 'semver';
13
13
  import * as i5 from '@angular/common';
14
+ import { AsyncPipe, NgIf } from '@angular/common';
14
15
  import * as i1 from '@angular/forms';
15
16
  import { Validators, NG_VALUE_ACCESSOR, FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
16
17
  import * as i8 from 'ngx-bootstrap/popover';
@@ -1705,7 +1706,7 @@ class PackageVersionSelectComponent {
1705
1706
  multi: true,
1706
1707
  useExisting: forwardRef(() => PackageVersionSelectComponent)
1707
1708
  }
1708
- ], usesOnChanges: true, ngImport: i0, template: "<label for=\"packageVersion\">{{ label | translate }}</label>\n<c8y-form-group>\n <c8y-typeahead\n [(ngModel)]=\"selectedVersion\"\n name=\"packageVersion\"\n (onSearch)=\"onInput$.next($event)\"\n placeholder=\"{{ 'Select below or start typing' | translate }}\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [disabled]=\"isDisabled\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *c8yFor=\"let appVersion of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onVersionSelect(appVersion)\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [active]=\"selectedVersion === appVersion\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <span\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'row',\n 'align-content': 'center',\n 'justify-content': 'space-between',\n 'align-items': 'center'\n }\"\n >\n <c8y-highlight\n [text]=\"appVersion.version || '--'\"\n [pattern]=\"onInput$ | async\"\n ></c8y-highlight>\n <span>\n <span *ngFor=\"let tag of appVersion.tags\" class=\"label label-info m-l-4\">\n {{ tag }}\n </span>\n </span>\n </span>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li\n class=\"bg-gray-lighter p-8\"\n *ngIf=\"(onInput$ | async)?.length > 0 && (versions$ | async)?.data?.length === 0\"\n >\n <span translate>No match found.</span>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n</c8y-form-group>\n", dependencies: [{ kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { 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", "c8yForChange", "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", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] }); }
1709
+ ], usesOnChanges: true, ngImport: i0, template: "<label for=\"packageVersion\">{{ label | translate }}</label>\n<c8y-form-group>\n <c8y-typeahead\n [(ngModel)]=\"selectedVersion\"\n name=\"packageVersion\"\n (onSearch)=\"onInput$.next($event)\"\n placeholder=\"{{ 'Select below or start typing' | translate }}\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [disabled]=\"isDisabled\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *c8yFor=\"let appVersion of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onVersionSelect(appVersion)\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [active]=\"selectedVersion === appVersion\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <c8y-highlight\n [text]=\"appVersion.version || '--'\"\n [pattern]=\"onInput$ | async\"\n ></c8y-highlight>\n <span>\n <span *ngFor=\"let tag of appVersion.tags\" class=\"label label-info m-l-4\">\n {{ tag }}\n </span>\n </span>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li\n class=\"bg-gray-lighter p-8\"\n *ngIf=\"(onInput$ | async)?.length > 0 && (versions$ | async)?.data?.length === 0\"\n >\n <span translate>No match found.</span>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n</c8y-form-group>\n", dependencies: [{ kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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", "c8yForChange", "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", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] }); }
1709
1710
  }
1710
1711
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageVersionSelectComponent, decorators: [{
1711
1712
  type: Component,
@@ -1715,7 +1716,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1715
1716
  multi: true,
1716
1717
  useExisting: forwardRef(() => PackageVersionSelectComponent)
1717
1718
  }
1718
- ], template: "<label for=\"packageVersion\">{{ label | translate }}</label>\n<c8y-form-group>\n <c8y-typeahead\n [(ngModel)]=\"selectedVersion\"\n name=\"packageVersion\"\n (onSearch)=\"onInput$.next($event)\"\n placeholder=\"{{ 'Select below or start typing' | translate }}\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [disabled]=\"isDisabled\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *c8yFor=\"let appVersion of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onVersionSelect(appVersion)\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [active]=\"selectedVersion === appVersion\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <span\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'row',\n 'align-content': 'center',\n 'justify-content': 'space-between',\n 'align-items': 'center'\n }\"\n >\n <c8y-highlight\n [text]=\"appVersion.version || '--'\"\n [pattern]=\"onInput$ | async\"\n ></c8y-highlight>\n <span>\n <span *ngFor=\"let tag of appVersion.tags\" class=\"label label-info m-l-4\">\n {{ tag }}\n </span>\n </span>\n </span>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li\n class=\"bg-gray-lighter p-8\"\n *ngIf=\"(onInput$ | async)?.length > 0 && (versions$ | async)?.data?.length === 0\"\n >\n <span translate>No match found.</span>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n</c8y-form-group>\n" }]
1719
+ ], template: "<label for=\"packageVersion\">{{ label | translate }}</label>\n<c8y-form-group>\n <c8y-typeahead\n [(ngModel)]=\"selectedVersion\"\n name=\"packageVersion\"\n (onSearch)=\"onInput$.next($event)\"\n placeholder=\"{{ 'Select below or start typing' | translate }}\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [disabled]=\"isDisabled\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *c8yFor=\"let appVersion of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onVersionSelect(appVersion)\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [active]=\"selectedVersion === appVersion\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <c8y-highlight\n [text]=\"appVersion.version || '--'\"\n [pattern]=\"onInput$ | async\"\n ></c8y-highlight>\n <span>\n <span *ngFor=\"let tag of appVersion.tags\" class=\"label label-info m-l-4\">\n {{ tag }}\n </span>\n </span>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li\n class=\"bg-gray-lighter p-8\"\n *ngIf=\"(onInput$ | async)?.length > 0 && (versions$ | async)?.data?.length === 0\"\n >\n <span translate>No match found.</span>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n</c8y-form-group>\n" }]
1719
1720
  }], ctorParameters: () => [{ type: i3$1.ApplicationService }, { type: i2.PluginsService }], propDecorators: { label: [{
1720
1721
  type: Input
1721
1722
  }], packageContextPath: [{
@@ -2000,11 +2001,11 @@ class ListFiltersComponent {
2000
2001
  });
2001
2002
  }
2002
2003
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ListFiltersComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AppStateService }, { token: i3.TranslateService }, { token: i2.GainsightService }, { token: i4.Router }, { token: i4.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
2003
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ListFiltersComponent, selector: "c8y-list-filters", inputs: { packageTypes: "packageTypes", packageAvailabilities: "packageAvailabilities", packageContents: "packageContents" }, outputs: { filterPipeChange: "filterPipeChange" }, viewQueries: [{ propertyName: "filterInput", first: true, predicate: FilterInputComponent, descendants: true }], ngImport: i0, template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter\n [filterTerm]=\"currentFilterTerm\"\n (onSearch)=\"setFilterTerm($event)\"\n ></c8y-filter>\n\n <div\n class=\"dropdown m-l-8 m-r-4\"\n *ngIf=\"predefinedFiltersVisible\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center w-auto flex-no-shrink\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"type | translate\"\n *ngFor=\"let type of packageTypes\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"availability | translate\"\n *ngFor=\"let availability of packageAvailabilities\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"content | translate\"\n *ngFor=\"let content of packageContents\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n <c8y-form-group formGroupName=\"custom\">\n <ng-content></ng-content>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgPlural, selector: "[ngPlural]", inputs: ["ngPlural"] }, { kind: "directive", type: i5.NgPluralCase, selector: "[ngPluralCase]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[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.FilterInputComponent, selector: "c8y-filter", inputs: ["icon", "filterTerm"], outputs: ["onSearch"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i8$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.TitleCasePipe, name: "titlecase" }] }); }
2004
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ListFiltersComponent, selector: "c8y-list-filters", inputs: { packageTypes: "packageTypes", packageAvailabilities: "packageAvailabilities", packageContents: "packageContents" }, outputs: { filterPipeChange: "filterPipeChange" }, viewQueries: [{ propertyName: "filterInput", first: true, predicate: FilterInputComponent, descendants: true }], ngImport: i0, template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter\n [filterTerm]=\"currentFilterTerm\"\n (onSearch)=\"setFilterTerm($event)\"\n ></c8y-filter>\n\n <div\n class=\"dropdown m-l-8 m-r-4\"\n *ngIf=\"predefinedFiltersVisible\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center gap-4 w-auto flex-no-shrink\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"type | translate\"\n *ngFor=\"let type of packageTypes\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"availability | translate\"\n *ngFor=\"let availability of packageAvailabilities\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"content | translate\"\n *ngFor=\"let content of packageContents\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n <c8y-form-group formGroupName=\"custom\">\n <ng-content></ng-content>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgPlural, selector: "[ngPlural]", inputs: ["ngPlural"] }, { kind: "directive", type: i5.NgPluralCase, selector: "[ngPluralCase]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[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.FilterInputComponent, selector: "c8y-filter", inputs: ["icon", "filterTerm"], outputs: ["onSearch"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i8$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.TitleCasePipe, name: "titlecase" }] }); }
2004
2005
  }
2005
2006
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ListFiltersComponent, decorators: [{
2006
2007
  type: Component,
2007
- args: [{ selector: 'c8y-list-filters', template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter\n [filterTerm]=\"currentFilterTerm\"\n (onSearch)=\"setFilterTerm($event)\"\n ></c8y-filter>\n\n <div\n class=\"dropdown m-l-8 m-r-4\"\n *ngIf=\"predefinedFiltersVisible\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center w-auto flex-no-shrink\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"type | translate\"\n *ngFor=\"let type of packageTypes\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"availability | translate\"\n *ngFor=\"let availability of packageAvailabilities\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"content | translate\"\n *ngFor=\"let content of packageContents\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n <c8y-form-group formGroupName=\"custom\">\n <ng-content></ng-content>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>\n" }]
2008
+ args: [{ selector: 'c8y-list-filters', template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter\n [filterTerm]=\"currentFilterTerm\"\n (onSearch)=\"setFilterTerm($event)\"\n ></c8y-filter>\n\n <div\n class=\"dropdown m-l-8 m-r-4\"\n *ngIf=\"predefinedFiltersVisible\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center gap-4 w-auto flex-no-shrink\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"type | translate\"\n *ngFor=\"let type of packageTypes\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"availability | translate\"\n *ngFor=\"let availability of packageAvailabilities\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"content | translate\"\n *ngFor=\"let content of packageContents\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n <c8y-form-group formGroupName=\"custom\">\n <ng-content></ng-content>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>\n" }]
2008
2009
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.AppStateService }, { type: i3.TranslateService }, { type: i2.GainsightService }, { type: i4.Router }, { type: i4.ActivatedRoute }], propDecorators: { packageTypes: [{
2009
2010
  type: Input
2010
2011
  }], packageAvailabilities: [{
@@ -2037,6 +2038,83 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2037
2038
  args: [{ selector: 'c8y-archived-filter', template: "<label class=\"c8y-switch\">\n <input\n type=\"checkbox\"\n checked=\"checked\"\n [formControl]=\"archivedFormControl\"\n />\n <span></span>\n {{ 'Show archived packages' | translate }}\n</label>\n" }]
2038
2039
  }], ctorParameters: () => [{ type: ListFiltersComponent }] });
2039
2040
 
2041
+ /**
2042
+ * Component to display the change log of a package.
2043
+ * It fetches the change log file from the package's repository and displays it.
2044
+ * It can fetch the change log for the latest version or a specific version if provided.
2045
+ * It can also compare the change log with the previous version if provided and display the difference between the two versions.
2046
+ */
2047
+ class PackageChangelogComponent {
2048
+ constructor() {
2049
+ this.selectedVersion = 'latest';
2050
+ this.previousVersion = null;
2051
+ this.isLoading = true;
2052
+ this.pluginsService = inject(PluginsService);
2053
+ }
2054
+ async ngOnChanges() {
2055
+ if (!this.package) {
2056
+ this.changelog = '';
2057
+ this.isLoading = false;
2058
+ return;
2059
+ }
2060
+ this.isLoading = true;
2061
+ this.changelog = await this.getChangeLog();
2062
+ this.isLoading = false;
2063
+ }
2064
+ async getChangeLog() {
2065
+ if (this.selectedVersion === this.previousVersion || !this.selectedVersion) {
2066
+ return '';
2067
+ }
2068
+ const selectedVersionChangelogUrl = this.baseUrlForVersion(this.selectedVersion);
2069
+ this.baseUrl = selectedVersionChangelogUrl;
2070
+ if (!this.previousVersion) {
2071
+ return await this.pluginsService.getChangelogFileContent(selectedVersionChangelogUrl);
2072
+ }
2073
+ const previousVersionChangelogUrl = this.baseUrlForVersion(this.previousVersion);
2074
+ const changelogsPromises = [
2075
+ this.pluginsService.getChangelogFileContent(previousVersionChangelogUrl),
2076
+ this.pluginsService.getChangelogFileContent(selectedVersionChangelogUrl)
2077
+ ];
2078
+ const [previousVersionChangelog, selectedVersionChangelog] = await Promise.all(changelogsPromises);
2079
+ // Determine if this is a downgrade using semver comparison
2080
+ let isDowngrade;
2081
+ try {
2082
+ isDowngrade = lt(this.selectedVersion, this.previousVersion);
2083
+ }
2084
+ catch {
2085
+ isDowngrade = false;
2086
+ }
2087
+ if (isDowngrade) {
2088
+ return previousVersionChangelog.replace(selectedVersionChangelog, '');
2089
+ }
2090
+ else {
2091
+ return selectedVersionChangelog.replace(previousVersionChangelog, '');
2092
+ }
2093
+ }
2094
+ baseUrlForVersion(version) {
2095
+ return `/apps/${this.package.contextPath}@${version}/`;
2096
+ }
2097
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageChangelogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2098
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PackageChangelogComponent, isStandalone: true, selector: "c8y-contents-changelog", inputs: { package: "package", selectedVersion: "selectedVersion", previousVersion: "previousVersion" }, usesOnChanges: true, ngImport: i0, template: "<c8y-loading *ngIf=\"isLoading\"></c8y-loading>\n\n<ng-container *ngIf=\"!isLoading\">\n <div\n *ngIf=\"changelog\"\n class=\"markdown-content markdown-content--to-h3\"\n [innerHTML]=\"changelog | markdownToHtml: { baseUrl } | async\"\n ></div>\n\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No CHANGELOG.md found for package version' | translate\"\n [subtitle]=\"\n 'To view the contents of &quot;CHANGELOG&quot;, add the file &quot;CHANGELOG.md&quot; to the package.'\n | translate\n \"\n *ngIf=\"!changelog\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n</ng-container>\n", dependencies: [{ kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "pipe", type: MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
2099
+ }
2100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageChangelogComponent, decorators: [{
2101
+ type: Component,
2102
+ args: [{ selector: 'c8y-contents-changelog', standalone: true, imports: [
2103
+ LoadingComponent,
2104
+ MarkdownToHtmlPipe,
2105
+ EmptyStateComponent,
2106
+ AsyncPipe,
2107
+ C8yTranslatePipe,
2108
+ NgIf
2109
+ ], template: "<c8y-loading *ngIf=\"isLoading\"></c8y-loading>\n\n<ng-container *ngIf=\"!isLoading\">\n <div\n *ngIf=\"changelog\"\n class=\"markdown-content markdown-content--to-h3\"\n [innerHTML]=\"changelog | markdownToHtml: { baseUrl } | async\"\n ></div>\n\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No CHANGELOG.md found for package version' | translate\"\n [subtitle]=\"\n 'To view the contents of &quot;CHANGELOG&quot;, add the file &quot;CHANGELOG.md&quot; to the package.'\n | translate\n \"\n *ngIf=\"!changelog\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n</ng-container>\n" }]
2110
+ }], propDecorators: { package: [{
2111
+ type: Input
2112
+ }], selectedVersion: [{
2113
+ type: Input
2114
+ }], previousVersion: [{
2115
+ type: Input
2116
+ }] } });
2117
+
2040
2118
  class SharedEcosystemModule {
2041
2119
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedEcosystemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2042
2120
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SharedEcosystemModule, declarations: [AddApplicationComponent,
@@ -2056,7 +2134,8 @@ class SharedEcosystemModule {
2056
2134
  FormsModule,
2057
2135
  PopoverModule,
2058
2136
  ReactiveFormsModule,
2059
- IconSelectorModule], exports: [AddApplicationComponent,
2137
+ IconSelectorModule,
2138
+ PackageChangelogComponent], exports: [AddApplicationComponent,
2060
2139
  ApplicationPropertiesFormComponent,
2061
2140
  UploadArchiveComponent,
2062
2141
  ApplicationCardComponent,
@@ -2066,7 +2145,8 @@ class SharedEcosystemModule {
2066
2145
  PackageVersionSelectComponent,
2067
2146
  TranslatePackageLabelPipe,
2068
2147
  ListFiltersComponent,
2069
- ArchivedFilterComponent] }); }
2148
+ ArchivedFilterComponent,
2149
+ PackageChangelogComponent] }); }
2070
2150
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedEcosystemModule, providers: [
2071
2151
  hookWizard({
2072
2152
  wizardId: EcosystemWizards.APPLICATION_UPLOAD,
@@ -2087,7 +2167,8 @@ class SharedEcosystemModule {
2087
2167
  FormsModule,
2088
2168
  PopoverModule,
2089
2169
  ReactiveFormsModule,
2090
- IconSelectorModule] }); }
2170
+ IconSelectorModule,
2171
+ PackageChangelogComponent] }); }
2091
2172
  }
2092
2173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedEcosystemModule, decorators: [{
2093
2174
  type: NgModule,
@@ -2100,7 +2181,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2100
2181
  FormsModule,
2101
2182
  PopoverModule,
2102
2183
  ReactiveFormsModule,
2103
- IconSelectorModule
2184
+ IconSelectorModule,
2185
+ PackageChangelogComponent
2104
2186
  ],
2105
2187
  declarations: [
2106
2188
  AddApplicationComponent,
@@ -2126,7 +2208,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2126
2208
  PackageVersionSelectComponent,
2127
2209
  TranslatePackageLabelPipe,
2128
2210
  ListFiltersComponent,
2129
- ArchivedFilterComponent
2211
+ ArchivedFilterComponent,
2212
+ PackageChangelogComponent
2130
2213
  ],
2131
2214
  providers: [
2132
2215
  hookWizard({
@@ -2164,5 +2247,5 @@ const defaultPackageContents = [
2164
2247
  * Generated bundle index. Do not edit.
2165
2248
  */
2166
2249
 
2167
- export { APP_STATE, AddApplicationComponent, ApplicationCardComponent, ApplicationPropertiesFormComponent, ArchivedFilterComponent, DuplicateApplicationComponent, DuplicateApplicationListComponent, DuplicateApplicationPropertiesComponent, ERROR_MESSAGES, ERROR_TYPE, EcosystemService, EcosystemWizards, ListFiltersComponent, PACKAGE_TYPE_LABELS, PRODUCT_EXPERIENCE_ECOSYSTEM, PackageAvailabilityService, PackageVersionSelectComponent, SharedEcosystemModule, TranslatePackageLabelPipe, UploadArchiveComponent, defaultPackageAvailabilities, defaultPackageContents, defaultPackageTypes, packageProperties };
2250
+ export { APP_STATE, AddApplicationComponent, ApplicationCardComponent, ApplicationPropertiesFormComponent, ArchivedFilterComponent, DuplicateApplicationComponent, DuplicateApplicationListComponent, DuplicateApplicationPropertiesComponent, ERROR_MESSAGES, ERROR_TYPE, EcosystemService, EcosystemWizards, ListFiltersComponent, PACKAGE_TYPE_LABELS, PRODUCT_EXPERIENCE_ECOSYSTEM, PackageAvailabilityService, PackageChangelogComponent, PackageVersionSelectComponent, SharedEcosystemModule, TranslatePackageLabelPipe, UploadArchiveComponent, defaultPackageAvailabilities, defaultPackageContents, defaultPackageTypes, packageProperties };
2168
2251
  //# sourceMappingURL=c8y-ngx-components-ecosystem-shared.mjs.map