@c8y/ngx-components 1021.64.0 → 1021.67.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 (162) 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/breadcrumb/breadcrumb-item.component.d.ts +1 -1
  4. package/core/breadcrumb/breadcrumb-item.component.d.ts.map +1 -1
  5. package/core/breadcrumb/breadcrumb-outlet.component.d.ts +1 -1
  6. package/core/breadcrumb/breadcrumb-outlet.component.d.ts.map +1 -1
  7. package/core/breadcrumb/breadcrumb.component.d.ts +1 -1
  8. package/core/breadcrumb/breadcrumb.component.d.ts.map +1 -1
  9. package/core/breadcrumb/breadcrumb.module.d.ts +7 -7
  10. package/core/breadcrumb/breadcrumb.module.d.ts.map +1 -1
  11. package/core/common/common.module.d.ts +38 -38
  12. package/core/common/date-format.service.d.ts +30 -0
  13. package/core/common/date-format.service.d.ts.map +1 -0
  14. package/core/common/date.pipe.d.ts +7 -3
  15. package/core/common/date.pipe.d.ts.map +1 -1
  16. package/core/common/index.d.ts +1 -0
  17. package/core/common/index.d.ts.map +1 -1
  18. package/core/common/outlet.directive.d.ts +1 -1
  19. package/core/common/outlet.directive.d.ts.map +1 -1
  20. package/core/common/user-preferences/user-preferences-store-current-user.d.ts +11 -0
  21. package/core/common/user-preferences/user-preferences-store-current-user.d.ts.map +1 -0
  22. package/core/common/user-preferences/user-preferences.service.d.ts +40 -1
  23. package/core/common/user-preferences/user-preferences.service.d.ts.map +1 -1
  24. package/core/date-picker/date-picker.component.d.ts +3 -1
  25. package/core/date-picker/date-picker.component.d.ts.map +1 -1
  26. package/core/date-time-picker/date-time-picker.component.d.ts +6 -3
  27. package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
  28. package/core/dynamic-forms/date/date.type.component.d.ts +3 -0
  29. package/core/dynamic-forms/date/date.type.component.d.ts.map +1 -1
  30. package/core/plugins/plugins.service.d.ts +3 -1
  31. package/core/plugins/plugins.service.d.ts.map +1 -1
  32. package/core/time-interval/time-interval.component.d.ts +4 -2
  33. package/core/time-interval/time-interval.component.d.ts.map +1 -1
  34. package/ecosystem/ecosystem.module.d.ts +2 -1
  35. package/ecosystem/ecosystem.module.d.ts.map +1 -1
  36. package/ecosystem/packages/package-changelog-tab/package-changelog-tab.component.d.ts +15 -0
  37. package/ecosystem/packages/package-changelog-tab/package-changelog-tab.component.d.ts.map +1 -0
  38. package/ecosystem/packages/package-changelog.guard.d.ts +10 -0
  39. package/ecosystem/packages/package-changelog.guard.d.ts.map +1 -0
  40. package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts +2 -0
  41. package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts.map +1 -1
  42. package/ecosystem/shared/index.d.ts +1 -0
  43. package/ecosystem/shared/index.d.ts.map +1 -1
  44. package/ecosystem/shared/package-changelog/package-changelog.component.d.ts +24 -0
  45. package/ecosystem/shared/package-changelog/package-changelog.component.d.ts.map +1 -0
  46. package/ecosystem/shared/shared-ecosystem.module.d.ts +2 -1
  47. package/ecosystem/shared/shared-ecosystem.module.d.ts.map +1 -1
  48. package/esm2022/auth-configuration/sso-configuration/template-parts/signature-configuration.component.mjs +11 -7
  49. package/esm2022/core/breadcrumb/breadcrumb-item.component.mjs +3 -3
  50. package/esm2022/core/breadcrumb/breadcrumb-outlet.component.mjs +19 -9
  51. package/esm2022/core/breadcrumb/breadcrumb.component.mjs +3 -3
  52. package/esm2022/core/breadcrumb/breadcrumb.module.mjs +16 -5
  53. package/esm2022/core/common/common.module.mjs +6 -6
  54. package/esm2022/core/common/date-format.service.mjs +81 -0
  55. package/esm2022/core/common/date.pipe.mjs +29 -6
  56. package/esm2022/core/common/index.mjs +2 -1
  57. package/esm2022/core/common/outlet.directive.mjs +4 -3
  58. package/esm2022/core/common/user-preferences/user-preferences-store-current-user.mjs +22 -0
  59. package/esm2022/core/common/user-preferences/user-preferences.service.mjs +106 -16
  60. package/esm2022/core/date-picker/date-picker.component.mjs +11 -4
  61. package/esm2022/core/date-time-picker/date-time-picker.component.mjs +20 -11
  62. package/esm2022/core/dynamic-forms/date/date.type.component.mjs +12 -4
  63. package/esm2022/core/plugins/plugins.service.mjs +14 -8
  64. package/esm2022/core/time-interval/time-interval.component.mjs +9 -2
  65. package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +4 -4
  66. package/esm2022/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.mjs +3 -3
  67. package/esm2022/ecosystem/ecosystem.module.mjs +21 -5
  68. package/esm2022/ecosystem/packages/package-changelog-tab/package-changelog-tab.component.mjs +33 -0
  69. package/esm2022/ecosystem/packages/package-changelog.guard.mjs +22 -0
  70. package/esm2022/ecosystem/packages/package-versions/package-contents/packages-contents.component.mjs +17 -5
  71. package/esm2022/ecosystem/shared/index.mjs +2 -1
  72. package/esm2022/ecosystem/shared/package-changelog/package-changelog.component.mjs +82 -0
  73. package/esm2022/ecosystem/shared/package-version-select/package-version-select.component.mjs +3 -3
  74. package/esm2022/ecosystem/shared/shared-ecosystem.module.mjs +12 -6
  75. package/esm2022/operations/bulk-operation-scheduler/operation-scheduler.component.mjs +9 -7
  76. package/esm2022/operations/bulk-operations-list/bulk-operations-list.component.mjs +1 -1
  77. package/esm2022/upgrade/ng1/downgraded.services.mjs +3 -2
  78. package/esm2022/upgrade/ng1/index.mjs +3 -2
  79. package/esm2022/widgets/cockpit/index.mjs +3 -1
  80. package/esm2022/widgets/cockpit-exports/index.mjs +8 -1
  81. package/esm2022/widgets/definitions/index.mjs +2 -1
  82. package/esm2022/widgets/definitions/radial-gauge/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +5 -0
  83. package/esm2022/widgets/definitions/radial-gauge/index.mjs +33 -0
  84. package/esm2022/widgets/implementations/info-gauge/index.mjs +2 -2
  85. package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-config/gauge.model.mjs +295 -0
  86. package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.mjs +141 -11
  87. package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-config/preset-preview/preset-preview.component.mjs +67 -0
  88. package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.mjs +34 -6
  89. package/esm2022/widgets/implementations/info-gauge/info-gauge-widget.module.mjs +9 -4
  90. package/esm2022/widgets/implementations/info-gauge/radial-gauge/radial-gauge.component.mjs +97 -0
  91. package/esm2022/widgets/implementations/info-gauge/radial-gauge/radial-gauge.service.mjs +369 -0
  92. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +9 -5
  93. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  94. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +5 -5
  95. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  96. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +94 -11
  97. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  98. package/fesm2022/c8y-ngx-components-ecosystem.mjs +83 -14
  99. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  100. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -5
  101. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +1 -1
  103. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-upgrade.mjs +3 -1
  105. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  106. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +7 -0
  107. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
  108. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +2 -0
  109. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +40 -0
  111. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -0
  112. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +1 -0
  113. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  114. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +991 -28
  115. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  116. package/fesm2022/c8y-ngx-components.mjs +809 -552
  117. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  118. package/locales/de.po +42 -6
  119. package/locales/es.po +42 -6
  120. package/locales/fr.po +42 -6
  121. package/locales/ja_JP.po +42 -6
  122. package/locales/ko.po +42 -6
  123. package/locales/locales.pot +40 -4
  124. package/locales/nl.po +42 -6
  125. package/locales/pl.po +42 -6
  126. package/locales/pt_BR.po +42 -6
  127. package/locales/zh_CN.po +42 -6
  128. package/locales/zh_TW.po +42 -6
  129. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts +4 -2
  130. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
  131. package/package.json +1 -1
  132. package/upgrade/ng1/downgraded.services.d.ts +1 -0
  133. package/upgrade/ng1/downgraded.services.d.ts.map +1 -1
  134. package/upgrade/ng1/index.d.ts.map +1 -1
  135. package/widgets/cockpit/index.d.ts +29 -0
  136. package/widgets/cockpit/index.d.ts.map +1 -1
  137. package/widgets/cockpit-exports/index.d.ts +6 -0
  138. package/widgets/cockpit-exports/index.d.ts.map +1 -1
  139. package/widgets/definitions/index.d.ts +1 -0
  140. package/widgets/definitions/index.d.ts.map +1 -1
  141. package/widgets/definitions/radial-gauge/c8y-ngx-components-widgets-definitions-radial-gauge.d.ts.map +1 -0
  142. package/widgets/definitions/radial-gauge/index.d.ts +33 -0
  143. package/widgets/definitions/radial-gauge/index.d.ts.map +1 -0
  144. package/widgets/implementations/info-gauge/index.d.ts +1 -1
  145. package/widgets/implementations/info-gauge/index.d.ts.map +1 -1
  146. package/widgets/implementations/info-gauge/info-gauge-widget-config/gauge.model.d.ts +339 -0
  147. package/widgets/implementations/info-gauge/info-gauge-widget-config/gauge.model.d.ts.map +1 -0
  148. package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts +27 -7
  149. package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts.map +1 -1
  150. package/widgets/implementations/info-gauge/info-gauge-widget-config/preset-preview/preset-preview.component.d.ts +33 -0
  151. package/widgets/implementations/info-gauge/info-gauge-widget-config/preset-preview/preset-preview.component.d.ts.map +1 -0
  152. package/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.d.ts +7 -3
  153. package/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.d.ts.map +1 -1
  154. package/widgets/implementations/info-gauge/info-gauge-widget.module.d.ts +2 -1
  155. package/widgets/implementations/info-gauge/info-gauge-widget.module.d.ts.map +1 -1
  156. package/widgets/implementations/info-gauge/radial-gauge/radial-gauge.component.d.ts +37 -0
  157. package/widgets/implementations/info-gauge/radial-gauge/radial-gauge.component.d.ts.map +1 -0
  158. package/widgets/implementations/info-gauge/radial-gauge/radial-gauge.service.d.ts +146 -0
  159. package/widgets/implementations/info-gauge/radial-gauge/radial-gauge.service.d.ts.map +1 -0
  160. package/esm2022/widgets/implementations/info-gauge/info-gauge.model.mjs +0 -2
  161. package/widgets/implementations/info-gauge/info-gauge.model.d.ts +0 -7
  162. package/widgets/implementations/info-gauge/info-gauge.model.d.ts.map +0 -1
@@ -1,14 +1,15 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component, Input, Pipe, inject, Injectable, EventEmitter, Output, ViewChild, NgModule } from '@angular/core';
3
3
  import * as i2 from '@c8y/ngx-components';
4
- import { gettext, Status, GainsightService, PluginsService, AlertService, HumanizeAppNamePipe, PackageType, PluginsExportScopes, Permissions, ViewContext, ApplicationPluginStatus, BottomDrawerRef, DataGridComponent, CoreModule, hookRoute, C8yStepper, FormsModule, hookTab, hookNavigator, hookWizard } from '@c8y/ngx-components';
4
+ import { gettext, Status, GainsightService, PluginsService, AlertService, HumanizeAppNamePipe, PackageType, PluginsExportScopes, Permissions, ViewContext, ApplicationPluginStatus, BottomDrawerRef, DataGridComponent, CoreModule, hookRoute, C8yStepper, TitleComponent, BreadcrumbComponent, BreadcrumbItemComponent, C8yTranslatePipe, FormsModule, hookTab, hookNavigator, hookWizard } from '@c8y/ngx-components';
5
5
  import * as i1 from '@c8y/ngx-components/ecosystem/shared';
6
- import { EcosystemService, PRODUCT_EXPERIENCE_ECOSYSTEM, packageProperties, defaultPackageAvailabilities, EcosystemWizards, ListFiltersComponent, ApplicationPropertiesFormComponent, defaultPackageTypes, SharedEcosystemModule, ERROR_TYPE, APP_STATE, PACKAGE_TYPE_LABELS, defaultPackageContents } from '@c8y/ngx-components/ecosystem/shared';
6
+ import { EcosystemService, PRODUCT_EXPERIENCE_ECOSYSTEM, packageProperties, defaultPackageAvailabilities, EcosystemWizards, ListFiltersComponent, ApplicationPropertiesFormComponent, defaultPackageTypes, SharedEcosystemModule, ERROR_TYPE, APP_STATE, PACKAGE_TYPE_LABELS, defaultPackageContents, PackageChangelogComponent } from '@c8y/ngx-components/ecosystem/shared';
7
7
  import * as i3 from '@angular/common';
8
+ import { AsyncPipe } from '@angular/common';
8
9
  import * as i2$1 from '@angular/forms';
9
10
  import { Validators, FormControl, ReactiveFormsModule } from '@angular/forms';
10
11
  import * as i1$2 from '@angular/router';
11
- import { RouterModule } from '@angular/router';
12
+ import { Router, RouterModule } from '@angular/router';
12
13
  import * as i4 from '@c8y/client';
13
14
  import { ApplicationType, Isolation, BillingMode } from '@c8y/client';
14
15
  import * as i6 from '@ngx-translate/core';
@@ -1607,11 +1608,11 @@ class UpdatePluginOfAppComponent {
1607
1608
  this._cancel();
1608
1609
  }
1609
1610
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UpdatePluginOfAppComponent, deps: [{ token: i1$1.BsModalRef }, { token: i2.PluginsService }, { token: i2.AlertService }, { token: i1.EcosystemService }, { token: i2.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
1610
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UpdatePluginOfAppComponent, selector: "c8y-update-plugin-of-app", ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-modules'\"></i>\n <h4 *ngIf=\"!downgrade\" id=\"modal-title\" translate>Update plugin</h4>\n <h4 *ngIf=\"downgrade\" id=\"modal-title\" translate>Downgrade plugin</h4>\n </div>\n <div class=\"inner-scroll\" id=\"modal-body\">\n <div class=\"p-16\">\n <div class=\"d-block fit-w bg-gray-white\">\n <c8y-package-version-select\n [packageContextPath]=\"plugin?.contextPath\"\n [(ngModel)]=\"applicationVersion\"\n ></c8y-package-version-select>\n <div\n *ngIf=\"plugin?.version && plugin.version === applicationVersion?.version\"\n class=\"alert alert-info\"\n role=\"alert\"\n >\n <span translate ngNonBindable [translateParams]=\"applicationVersion\">\n Select another version, as {{ version }} is currently used.\n </span>\n </div>\n </div>\n\n <div class=\"form-group\">\n <label class=\"c8y-checkbox\">\n <input [(ngModel)]=\"updateAll\" type=\"checkbox\" />\n <span></span>\n <span translate ngNonBindable [translateParams]=\"plugin\">\n Set version for all plugins using the same context path \"{{ contextPath }}\".\n </span>\n </label>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Set version' | translate }}\"\n [disabled]=\"!applicationVersion || plugin?.version === applicationVersion?.version\"\n (click)=\"update()\"\n >\n {{ 'Set version' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.PackageVersionSelectComponent, selector: "c8y-package-version-select", inputs: ["label", "packageContextPath", "packageId"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
1611
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UpdatePluginOfAppComponent, selector: "c8y-update-plugin-of-app", ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'installing-updates'\"></i>\n <h4\n id=\"modal-title\"\n *ngIf=\"!downgrade\"\n translate\n >\n Update plugin\n </h4>\n <h4\n id=\"modal-title\"\n *ngIf=\"downgrade\"\n translate\n >\n Downgrade plugin\n </h4>\n </div>\n <div\n class=\"inner-scroll\"\n id=\"modal-body\"\n >\n <div class=\"card-block p-r-24 p-l-24 sticky-top bg-component separator-bottom\">\n <c8y-package-version-select\n [packageContextPath]=\"plugin?.contextPath\"\n [(ngModel)]=\"applicationVersion\"\n ></c8y-package-version-select>\n <div\n class=\"alert alert-info\"\n role=\"alert\"\n *ngIf=\"plugin?.version && plugin.version === applicationVersion?.version\"\n >\n <span\n translate\n ngNonBindable\n [translateParams]=\"applicationVersion\"\n >\n Select another version, as {{ version }} is currently used.\n </span>\n </div>\n <div class=\"form-group\">\n <label class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"updateAll\"\n />\n <span></span>\n <span\n translate\n ngNonBindable\n [translateParams]=\"plugin\"\n >\n Set version for all plugins using the same context path \"{{ contextPath }}\".\n </span>\n </label>\n </div>\n <p class=\"legend form-block\">\n {{ 'Change log' | translate }}\n </p>\n </div>\n <div class=\"card-block p-l-24 p-r-24\">\n\n <div\n class=\"markdown-content markdown-content--to-h3\"\n >\n <c8y-contents-changelog\n [package]=\"plugin.originApp\"\n [selectedVersion]=\"applicationVersion?.version\"\n [previousVersion]=\"plugin?.version\"\n ></c8y-contents-changelog>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Set version' | translate }}\"\n [disabled]=\"!applicationVersion || plugin?.version === applicationVersion?.version\"\n (click)=\"update()\"\n >\n {{ 'Set version' | translate }}\n </button>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.PackageVersionSelectComponent, selector: "c8y-package-version-select", inputs: ["label", "packageContextPath", "packageId"] }, { kind: "component", type: i1.PackageChangelogComponent, selector: "c8y-contents-changelog", inputs: ["package", "selectedVersion", "previousVersion"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
1611
1612
  }
1612
1613
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UpdatePluginOfAppComponent, decorators: [{
1613
1614
  type: Component,
1614
- args: [{ selector: 'c8y-update-plugin-of-app', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-modules'\"></i>\n <h4 *ngIf=\"!downgrade\" id=\"modal-title\" translate>Update plugin</h4>\n <h4 *ngIf=\"downgrade\" id=\"modal-title\" translate>Downgrade plugin</h4>\n </div>\n <div class=\"inner-scroll\" id=\"modal-body\">\n <div class=\"p-16\">\n <div class=\"d-block fit-w bg-gray-white\">\n <c8y-package-version-select\n [packageContextPath]=\"plugin?.contextPath\"\n [(ngModel)]=\"applicationVersion\"\n ></c8y-package-version-select>\n <div\n *ngIf=\"plugin?.version && plugin.version === applicationVersion?.version\"\n class=\"alert alert-info\"\n role=\"alert\"\n >\n <span translate ngNonBindable [translateParams]=\"applicationVersion\">\n Select another version, as {{ version }} is currently used.\n </span>\n </div>\n </div>\n\n <div class=\"form-group\">\n <label class=\"c8y-checkbox\">\n <input [(ngModel)]=\"updateAll\" type=\"checkbox\" />\n <span></span>\n <span translate ngNonBindable [translateParams]=\"plugin\">\n Set version for all plugins using the same context path \"{{ contextPath }}\".\n </span>\n </label>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Set version' | translate }}\"\n [disabled]=\"!applicationVersion || plugin?.version === applicationVersion?.version\"\n (click)=\"update()\"\n >\n {{ 'Set version' | translate }}\n </button>\n </div>\n</div>\n" }]
1615
+ args: [{ selector: 'c8y-update-plugin-of-app', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'installing-updates'\"></i>\n <h4\n id=\"modal-title\"\n *ngIf=\"!downgrade\"\n translate\n >\n Update plugin\n </h4>\n <h4\n id=\"modal-title\"\n *ngIf=\"downgrade\"\n translate\n >\n Downgrade plugin\n </h4>\n </div>\n <div\n class=\"inner-scroll\"\n id=\"modal-body\"\n >\n <div class=\"card-block p-r-24 p-l-24 sticky-top bg-component separator-bottom\">\n <c8y-package-version-select\n [packageContextPath]=\"plugin?.contextPath\"\n [(ngModel)]=\"applicationVersion\"\n ></c8y-package-version-select>\n <div\n class=\"alert alert-info\"\n role=\"alert\"\n *ngIf=\"plugin?.version && plugin.version === applicationVersion?.version\"\n >\n <span\n translate\n ngNonBindable\n [translateParams]=\"applicationVersion\"\n >\n Select another version, as {{ version }} is currently used.\n </span>\n </div>\n <div class=\"form-group\">\n <label class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"updateAll\"\n />\n <span></span>\n <span\n translate\n ngNonBindable\n [translateParams]=\"plugin\"\n >\n Set version for all plugins using the same context path \"{{ contextPath }}\".\n </span>\n </label>\n </div>\n <p class=\"legend form-block\">\n {{ 'Change log' | translate }}\n </p>\n </div>\n <div class=\"card-block p-l-24 p-r-24\">\n\n <div\n class=\"markdown-content markdown-content--to-h3\"\n >\n <c8y-contents-changelog\n [package]=\"plugin.originApp\"\n [selectedVersion]=\"applicationVersion?.version\"\n [previousVersion]=\"plugin?.version\"\n ></c8y-contents-changelog>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Set version' | translate }}\"\n [disabled]=\"!applicationVersion || plugin?.version === applicationVersion?.version\"\n (click)=\"update()\"\n >\n {{ 'Set version' | translate }}\n </button>\n </div>\n</div>" }]
1615
1616
  }], ctorParameters: () => [{ type: i1$1.BsModalRef }, { type: i2.PluginsService }, { type: i2.AlertService }, { type: i1.EcosystemService }, { type: i2.GainsightService }] });
1616
1617
 
1617
1618
  class ApplicationPluginReadmeComponent {
@@ -1853,7 +1854,7 @@ class ApplicationPluginsComponent {
1853
1854
  {
1854
1855
  type: 'customUpdate',
1855
1856
  text: gettext('Update'),
1856
- icon: 'caret-square-o-up',
1857
+ icon: 'installing-updates',
1857
1858
  showIf: plugin => {
1858
1859
  return (plugin.status === ApplicationPluginStatus.OUTDATED ||
1859
1860
  plugin.status === ApplicationPluginStatus.REVOKED);
@@ -1863,7 +1864,7 @@ class ApplicationPluginsComponent {
1863
1864
  {
1864
1865
  type: 'customDowngrade',
1865
1866
  text: gettext('Downgrade'),
1866
- icon: 'caret-square-o-down',
1867
+ icon: 'installing-updates',
1867
1868
  showIf: (plugin) => {
1868
1869
  if (plugin.scope === PluginsExportScopes.SELF ||
1869
1870
  plugin.scope === PluginsExportScopes.SELF_OPTIONAL) {
@@ -1894,7 +1895,7 @@ class ApplicationPluginsComponent {
1894
1895
  async updatePlugin(app, plugin, downgrade = false) {
1895
1896
  try {
1896
1897
  await this.bsModalService.show(UpdatePluginOfAppComponent, {
1897
- class: 'modal-sm',
1898
+ class: 'modal-md',
1898
1899
  ariaDescribedby: 'modal-body',
1899
1900
  ariaLabelledBy: 'modal-title',
1900
1901
  initialState: {
@@ -2797,6 +2798,7 @@ class PackageContentsComponent {
2797
2798
  async ngOnChanges(changes) {
2798
2799
  if (changes.selectedVersion?.currentValue) {
2799
2800
  this.loadManifest(this.selectedVersion);
2801
+ this.previousVersion = this.getPreviousVersion();
2800
2802
  }
2801
2803
  }
2802
2804
  async loadManifest(version) {
@@ -2814,12 +2816,22 @@ class PackageContentsComponent {
2814
2816
  }
2815
2817
  return undefined;
2816
2818
  }
2819
+ getPreviousVersion() {
2820
+ if (this.package.applicationVersions.length === 1) {
2821
+ return null;
2822
+ }
2823
+ const selectedVersionIndex = this.package.applicationVersions.findIndex(version => version.version === this.selectedVersion);
2824
+ if (selectedVersionIndex === 0) {
2825
+ return null;
2826
+ }
2827
+ return this.package.applicationVersions[selectedVersionIndex - 1].version;
2828
+ }
2817
2829
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageContentsComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: i4.ApplicationService }, { token: i2.AlertService }, { token: i2.ContextRouteService }], target: i0.ɵɵFactoryTarget.Component }); }
2818
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PackageContentsComponent, selector: "c8y-package-contents", inputs: { selectedVersion: "selectedVersion", selectedPlugin: "selectedPlugin" }, outputs: { showOverview: "showOverview" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"inner-scroll\">\n <ng-container *ngIf=\"!selectedVersionManifest && !isLoading\">\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [horizontal]=\"true\"\n [title]=\"'No package selected' | translate\"\n [subtitle]=\"'Select a package from the list to display the package contents.' | translate\"\n ></c8y-ui-empty-state>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </ng-container>\n\n <ng-container *ngIf=\"selectedVersionManifest && !isLoading\">\n <!-- DETAILS -->\n <div class=\"card-block p-t-0\">\n <c8y-properties-list\n [data]=\"selectedVersionManifest\"\n [emptyLabel]=\"'--'\"\n [properties]=\"packageVersionProperties\"\n >\n </c8y-properties-list>\n \n <!-- APPS -->\n <c8y-contents-apps\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n ></c8y-contents-apps>\n\n <!-- PLUGINS -->\n <c8y-contents-plugins\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-contents-plugins>\n </div>\n </ng-container>\n</div>\n", dependencies: [{ kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: i2.PropertiesListComponent, selector: "c8y-properties-list", inputs: ["properties", "title", "icon", "data", "groups", "noParse", "emptyLabel"] }, { kind: "component", type: PackageVersionsPluginsComponent, selector: "c8y-contents-plugins", inputs: ["selectedVersionManifest", "selectedPlugin"], outputs: ["showOverview"] }, { kind: "component", type: PackageVersionsAppsComponent, selector: "c8y-contents-apps", inputs: ["selectedVersionManifest"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
2830
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PackageContentsComponent, selector: "c8y-package-contents", inputs: { selectedVersion: "selectedVersion", selectedPlugin: "selectedPlugin" }, outputs: { showOverview: "showOverview" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!selectedVersionManifest && !isLoading\">\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [title]=\"'No package selected' | translate\"\n [subtitle]=\"'Select a package from the list to display the package contents.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n</ng-container>\n\n<ng-container *ngIf=\"selectedVersionManifest && !isLoading\">\n <!-- DETAILS -->\n <div class=\"card-block\">\n <c8y-properties-list\n [data]=\"selectedVersionManifest\"\n [emptyLabel]=\"'--'\"\n [properties]=\"packageVersionProperties\"\n ></c8y-properties-list>\n\n <!-- APPS -->\n <c8y-contents-apps\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n ></c8y-contents-apps>\n\n <!-- PLUGINS -->\n <c8y-contents-plugins\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-contents-plugins>\n\n <!-- CHANGELOG -->\n <p class=\"legend form-block\">\n {{ 'Change log' | translate }}\n </p>\n\n <c8y-contents-changelog\n [package]=\"package\"\n [selectedVersion]=\"selectedVersion\"\n [previousVersion]=\"previousVersion\"\n ></c8y-contents-changelog>\n </div>\n</ng-container>\n", dependencies: [{ kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: i2.PropertiesListComponent, selector: "c8y-properties-list", inputs: ["properties", "title", "icon", "data", "groups", "noParse", "emptyLabel"] }, { kind: "component", type: i1.PackageChangelogComponent, selector: "c8y-contents-changelog", inputs: ["package", "selectedVersion", "previousVersion"] }, { kind: "component", type: PackageVersionsPluginsComponent, selector: "c8y-contents-plugins", inputs: ["selectedVersionManifest", "selectedPlugin"], outputs: ["showOverview"] }, { kind: "component", type: PackageVersionsAppsComponent, selector: "c8y-contents-apps", inputs: ["selectedVersionManifest"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
2819
2831
  }
2820
2832
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageContentsComponent, decorators: [{
2821
2833
  type: Component,
2822
- args: [{ selector: 'c8y-package-contents', template: "<div class=\"inner-scroll\">\n <ng-container *ngIf=\"!selectedVersionManifest && !isLoading\">\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [horizontal]=\"true\"\n [title]=\"'No package selected' | translate\"\n [subtitle]=\"'Select a package from the list to display the package contents.' | translate\"\n ></c8y-ui-empty-state>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </ng-container>\n\n <ng-container *ngIf=\"selectedVersionManifest && !isLoading\">\n <!-- DETAILS -->\n <div class=\"card-block p-t-0\">\n <c8y-properties-list\n [data]=\"selectedVersionManifest\"\n [emptyLabel]=\"'--'\"\n [properties]=\"packageVersionProperties\"\n >\n </c8y-properties-list>\n \n <!-- APPS -->\n <c8y-contents-apps\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n ></c8y-contents-apps>\n\n <!-- PLUGINS -->\n <c8y-contents-plugins\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-contents-plugins>\n </div>\n </ng-container>\n</div>\n" }]
2834
+ args: [{ selector: 'c8y-package-contents', template: "<ng-container *ngIf=\"!selectedVersionManifest && !isLoading\">\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'big-parcel'\"\n [title]=\"'No package selected' | translate\"\n [subtitle]=\"'Select a package from the list to display the package contents.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n</ng-container>\n\n<ng-container *ngIf=\"selectedVersionManifest && !isLoading\">\n <!-- DETAILS -->\n <div class=\"card-block\">\n <c8y-properties-list\n [data]=\"selectedVersionManifest\"\n [emptyLabel]=\"'--'\"\n [properties]=\"packageVersionProperties\"\n ></c8y-properties-list>\n\n <!-- APPS -->\n <c8y-contents-apps\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n ></c8y-contents-apps>\n\n <!-- PLUGINS -->\n <c8y-contents-plugins\n class=\"p-t-16 d-block\"\n [selectedVersionManifest]=\"selectedVersionManifest\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-contents-plugins>\n\n <!-- CHANGELOG -->\n <p class=\"legend form-block\">\n {{ 'Change log' | translate }}\n </p>\n\n <c8y-contents-changelog\n [package]=\"package\"\n [selectedVersion]=\"selectedVersion\"\n [previousVersion]=\"previousVersion\"\n ></c8y-contents-changelog>\n </div>\n</ng-container>\n" }]
2823
2835
  }], ctorParameters: () => [{ type: i1$2.ActivatedRoute }, { type: i4.ApplicationService }, { type: i2.AlertService }, { type: i2.ContextRouteService }], propDecorators: { selectedVersion: [{
2824
2836
  type: Input
2825
2837
  }], selectedPlugin: [{
@@ -3041,6 +3053,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3041
3053
  type: Injectable
3042
3054
  }], ctorParameters: () => [{ type: i1.EcosystemService }] });
3043
3055
 
3056
+ class PackageChangelogTabComponent {
3057
+ constructor(activatedRoute, contextRouteService) {
3058
+ this.activatedRoute = activatedRoute;
3059
+ this.contextRouteService = contextRouteService;
3060
+ this.package = {};
3061
+ }
3062
+ async ngOnInit() {
3063
+ this.package = this.contextRouteService.getContextData(this.activatedRoute)?.contextData;
3064
+ }
3065
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageChangelogTabComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: i2.ContextRouteService }], target: i0.ɵɵFactoryTarget.Component }); }
3066
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PackageChangelogTabComponent, isStandalone: true, selector: "c8y-package-changelog-tab", ngImport: i0, template: "<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"package?.name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Change logs' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-contents-changelog [package]=\"package\"></c8y-contents-changelog>\n", dependencies: [{ kind: "component", type: PackageChangelogComponent, selector: "c8y-contents-changelog", inputs: ["package", "selectedVersion", "previousVersion"] }, { kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "pipe", type: HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
3067
+ }
3068
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageChangelogTabComponent, decorators: [{
3069
+ type: Component,
3070
+ args: [{ selector: 'c8y-package-changelog-tab', standalone: true, imports: [
3071
+ PackageChangelogComponent,
3072
+ TitleComponent,
3073
+ HumanizeAppNamePipe,
3074
+ BreadcrumbComponent,
3075
+ BreadcrumbItemComponent,
3076
+ C8yTranslatePipe,
3077
+ AsyncPipe
3078
+ ], template: "<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"package?.name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Change logs' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-contents-changelog [package]=\"package\"></c8y-contents-changelog>\n" }]
3079
+ }], ctorParameters: () => [{ type: i1$2.ActivatedRoute }, { type: i2.ContextRouteService }] });
3080
+
3081
+ class PackageChangelogGuard {
3082
+ constructor() {
3083
+ this.pluginsService = inject(PluginsService);
3084
+ this.router = inject(Router);
3085
+ }
3086
+ async canActivate(route) {
3087
+ const app = route.data.contextData || route.parent.data.contextData;
3088
+ const packageChangelogUrl = `/apps/${app.contextPath}/`;
3089
+ const changelog = await this.pluginsService.getChangelogFileContent(packageChangelogUrl);
3090
+ return !!changelog;
3091
+ }
3092
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageChangelogGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3093
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageChangelogGuard }); }
3094
+ }
3095
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageChangelogGuard, decorators: [{
3096
+ type: Injectable
3097
+ }] });
3098
+
3044
3099
  const ecosystemMainRoutes = [
3045
3100
  {
3046
3101
  path: 'ecosystem/application',
@@ -3113,9 +3168,18 @@ const applicationDetailsRoutes = [
3113
3168
  icon: 'c8y-modules',
3114
3169
  label: gettext('Versions'),
3115
3170
  context: ViewContext.Extension,
3116
- priority: 1,
3171
+ priority: 5,
3117
3172
  canActivate: [PackageGuard, PackageVersionsGuard]
3118
3173
  },
3174
+ {
3175
+ path: 'package-changelog',
3176
+ component: PackageChangelogTabComponent,
3177
+ icon: 'list',
3178
+ label: gettext('Change log'),
3179
+ context: ViewContext.Extension,
3180
+ priority: 1,
3181
+ canActivate: [PackageGuard, PackageChangelogGuard]
3182
+ },
3119
3183
  {
3120
3184
  path: 'properties',
3121
3185
  component: ApplicationPropertiesComponent,
@@ -3157,13 +3221,15 @@ class EcosystemModule {
3157
3221
  LicenseConfirmModule,
3158
3222
  IconSelectorModule,
3159
3223
  A11yModule,
3160
- ArchivedConfirmModule], exports: [ApplicationPropertiesComponent, UpdateApplicationModalComponent] }); }
3224
+ ArchivedConfirmModule,
3225
+ PackageChangelogTabComponent], exports: [ApplicationPropertiesComponent, UpdateApplicationModalComponent] }); }
3161
3226
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EcosystemModule, providers: [
3162
3227
  hookTab(EcosystemTabs),
3163
3228
  hookNavigator(EcosystemNavigationFactory),
3164
3229
  hookRoute(applicationDetailsRoutes),
3165
3230
  PackageGuard,
3166
3231
  PackageVersionsGuard,
3232
+ PackageChangelogGuard,
3167
3233
  ApplicationPropertiesGuard,
3168
3234
  hookWizard({
3169
3235
  wizardId: EcosystemWizards.APPLICATION_UPLOAD,
@@ -3211,7 +3277,8 @@ class EcosystemModule {
3211
3277
  LicenseConfirmModule,
3212
3278
  IconSelectorModule,
3213
3279
  A11yModule,
3214
- ArchivedConfirmModule] }); }
3280
+ ArchivedConfirmModule,
3281
+ PackageChangelogTabComponent] }); }
3215
3282
  }
3216
3283
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EcosystemModule, decorators: [{
3217
3284
  type: NgModule,
@@ -3251,7 +3318,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3251
3318
  LicenseConfirmModule,
3252
3319
  IconSelectorModule,
3253
3320
  A11yModule,
3254
- ArchivedConfirmModule
3321
+ ArchivedConfirmModule,
3322
+ PackageChangelogTabComponent
3255
3323
  ],
3256
3324
  exports: [ApplicationPropertiesComponent, UpdateApplicationModalComponent],
3257
3325
  providers: [
@@ -3260,6 +3328,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3260
3328
  hookRoute(applicationDetailsRoutes),
3261
3329
  PackageGuard,
3262
3330
  PackageVersionsGuard,
3331
+ PackageChangelogGuard,
3263
3332
  ApplicationPropertiesGuard,
3264
3333
  hookWizard({
3265
3334
  wizardId: EcosystemWizards.APPLICATION_UPLOAD,