@c8y/ngx-components 1022.6.1 → 1022.9.6
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.
- package/alarms/index.d.ts +1 -0
- package/alarms/index.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.component.d.ts +1 -3
- package/context-dashboard/context-dashboard.component.d.ts.map +1 -1
- package/core/core.module.d.ts.map +1 -1
- package/core/file-picker/file-picker.component.d.ts +5 -2
- package/core/file-picker/file-picker.component.d.ts.map +1 -1
- package/core/index.d.ts +1 -0
- package/core/index.d.ts.map +1 -1
- package/core/preview-feature/feature-cache.service.d.ts +3 -1
- package/core/preview-feature/feature-cache.service.d.ts.map +1 -1
- package/core/preview-feature/preview-feature-button.component.d.ts +3 -2
- package/core/preview-feature/preview-feature-button.component.d.ts.map +1 -1
- package/core/preview-feature/preview-feature-query-param.factory.d.ts +24 -0
- package/core/preview-feature/preview-feature-query-param.factory.d.ts.map +1 -0
- package/core/preview-feature/preview-feature-show-notification.service.d.ts +4 -1
- package/core/preview-feature/preview-feature-show-notification.service.d.ts.map +1 -1
- package/core/preview-feature/preview-feature.component.d.ts +2 -0
- package/core/preview-feature/preview-feature.component.d.ts.map +1 -1
- package/core/preview-feature/preview-feature.model.d.ts +1 -1
- package/core/preview-feature/preview-feature.model.d.ts.map +1 -1
- package/core/preview-feature/preview-feature.providers.d.ts.map +1 -1
- package/core/query-param-handler/index.d.ts +5 -0
- package/core/query-param-handler/index.d.ts.map +1 -0
- package/core/query-param-handler/query-param-bottom-drawer.service.d.ts +48 -0
- package/core/query-param-handler/query-param-bottom-drawer.service.d.ts.map +1 -0
- package/core/query-param-handler/query-param-handler.service.d.ts +31 -0
- package/core/query-param-handler/query-param-handler.service.d.ts.map +1 -0
- package/core/query-param-handler/query-param-modal-handler.service.d.ts +79 -0
- package/core/query-param-handler/query-param-modal-handler.service.d.ts.map +1 -0
- package/datapoint-explorer/view/datapoint-explorer.component.d.ts +3 -2
- package/datapoint-explorer/view/datapoint-explorer.component.d.ts.map +1 -1
- package/datapoint-explorer/view/datapoint-explorer.service.d.ts +2 -0
- package/datapoint-explorer/view/datapoint-explorer.service.d.ts.map +1 -1
- package/datapoint-explorer/view/send-as-widget-to-dashboard-modal/send-as-widget-to-dashboard-modal.component.d.ts +24 -0
- package/datapoint-explorer/view/send-as-widget-to-dashboard-modal/send-as-widget-to-dashboard-modal.component.d.ts.map +1 -0
- package/datapoint-explorer/view/send-as-widget-to-report-modal/send-as-widget-to-report-modal.component.d.ts +1 -1
- package/echart/charts.component.d.ts.map +1 -1
- package/echart/services/y-axis.service.d.ts.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +4 -20
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +121 -39
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-echart.mjs +9 -6
- package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +2 -2
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +2 -2
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs +1 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs +6 -6
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-software.mjs +4 -4
- package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sensor-phone.mjs +331 -8
- package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +25 -17
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +429 -101
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +29 -3
- package/locales/es.po +29 -3
- package/locales/fr.po +29 -3
- package/locales/ja_JP.po +28 -3
- package/locales/ko.po +29 -3
- package/locales/locales.pot +29 -3
- package/locales/nl.po +29 -3
- package/locales/pl.po +29 -3
- package/locales/pt_BR.po +29 -3
- package/locales/zh_CN.po +29 -3
- package/locales/zh_TW.po +29 -3
- package/package.json +1 -1
- package/sensor-phone/sensor-phone.module.d.ts.map +1 -1
- package/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.d.ts.map +1 -1
- package/fesm2022/c8y-ngx-components-query-param-modal-handler.mjs +0 -115
- package/fesm2022/c8y-ngx-components-query-param-modal-handler.mjs.map +0 -1
- package/query-param-modal-handler/c8y-ngx-components-query-param-modal-handler.d.ts.map +0 -1
- package/query-param-modal-handler/index.d.ts +0 -2
- package/query-param-modal-handler/index.d.ts.map +0 -1
- package/query-param-modal-handler/query-param-modal-handler.service.d.ts +0 -77
- package/query-param-modal-handler/query-param-modal-handler.service.d.ts.map +0 -1
|
@@ -1205,7 +1205,7 @@ class RealtimeSubjectService {
|
|
|
1205
1205
|
realtimeSubscription = this.realtime.resubscribe(realtimeSubscription);
|
|
1206
1206
|
}
|
|
1207
1207
|
catch (e) {
|
|
1208
|
-
console.warn(
|
|
1208
|
+
console.warn('Failed to resubscribe to channel after reconnect.', channel, e);
|
|
1209
1209
|
observer.error(e);
|
|
1210
1210
|
}
|
|
1211
1211
|
});
|
|
@@ -11179,11 +11179,11 @@ class AlertOutletComponent extends AlertOutletBase {
|
|
|
11179
11179
|
this.alertService.remove(alert);
|
|
11180
11180
|
}
|
|
11181
11181
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AlertOutletComponent, deps: [{ token: 'position', attribute: true }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11182
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: AlertOutletComponent, isStandalone: true, selector: "c8y-alert-outlet", host: { properties: { "class.static": "this.isStatic" } }, usesInheritance: true, ngImport: i0, template: "<div\n class=\"alert animated fadeInRightBig m-t-16\"\n data-cy=\"c8y-alert--message\"\n *ngFor=\"let alert of alerts | async\"\n [ngClass]=\"[getClass(alert), isDetailsShow(alert) ? 'expanded' : '']\"\n>\n <button
|
|
11182
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: AlertOutletComponent, isStandalone: true, selector: "c8y-alert-outlet", host: { properties: { "class.static": "this.isStatic" } }, usesInheritance: true, ngImport: i0, template: "<div\n class=\"alert animated fadeInRightBig m-t-16\"\n data-cy=\"c8y-alert--message\"\n *ngFor=\"let alert of alerts | async\"\n [ngClass]=\"[getClass(alert), isDetailsShow(alert) ? 'expanded' : '']\"\n>\n <button\n class=\"close\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close(alert)\"\n >\n <span\n aria-hidden=\"true\"\n data-cy=\"alert--close-alert-message\"\n >\n <i c8yIcon=\"times\"></i>\n </span>\n <span class=\"sr-only\">{{ 'Close' | translate }}</span>\n </button>\n\n <div *ngIf=\"!isTemplateRef(alert.text); else template(alert.text)\">\n <strong\n class=\"message\"\n *ngIf=\"!alert.allowHtml\"\n [textContent]=\"alert.text | translate\"\n ></strong>\n <strong\n class=\"message\"\n *ngIf=\"alert.allowHtml\"\n [innerHTML]=\"alert.text | translate\"\n ></strong>\n </div>\n <p\n class=\"text-muted m-t-8\"\n *ngIf=\"hasDetails(alert) && !isDetailsShow(alert)\"\n >\n <button\n class=\"btn btn-clean\"\n title=\"{{ 'Show details' | translate }}\"\n (click)=\"showDetails(alert)\"\n >\n <i c8yIcon=\"chevron-down\"></i>\n {{ 'Show details' | translate }}\n </button>\n </p>\n <p\n class=\"text-muted m-t-8\"\n *ngIf=\"hasDetails(alert) && isDetailsShow(alert)\"\n >\n <button\n class=\"btn btn-clean\"\n title=\"{{ 'Hide details' | translate }}\"\n (click)=\"closeDetails()\"\n >\n <i c8yIcon=\"chevron-up\"></i>\n {{ 'Hide details' | translate }}\n </button>\n </p>\n <div *ngIf=\"isDetailsShow(alert)\">\n <div *ngIf=\"!isTemplateRef(detailDisplayedAlert.contents); else template(alert.detailedData)\">\n <pre><code [textContent]=\"detailDisplayedAlert.contents | translate\"></code></pre>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
11183
11183
|
}
|
|
11184
11184
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AlertOutletComponent, decorators: [{
|
|
11185
11185
|
type: Component,
|
|
11186
|
-
args: [{ selector: 'c8y-alert-outlet', standalone: true, imports: [NgFor, NgClass, IconDirective, NgIf, C8yTranslatePipe, AsyncPipe], template: "<div\n class=\"alert animated fadeInRightBig m-t-16\"\n data-cy=\"c8y-alert--message\"\n *ngFor=\"let alert of alerts | async\"\n [ngClass]=\"[getClass(alert), isDetailsShow(alert) ? 'expanded' : '']\"\n>\n <button
|
|
11186
|
+
args: [{ selector: 'c8y-alert-outlet', standalone: true, imports: [NgFor, NgClass, IconDirective, NgIf, C8yTranslatePipe, AsyncPipe], template: "<div\n class=\"alert animated fadeInRightBig m-t-16\"\n data-cy=\"c8y-alert--message\"\n *ngFor=\"let alert of alerts | async\"\n [ngClass]=\"[getClass(alert), isDetailsShow(alert) ? 'expanded' : '']\"\n>\n <button\n class=\"close\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close(alert)\"\n >\n <span\n aria-hidden=\"true\"\n data-cy=\"alert--close-alert-message\"\n >\n <i c8yIcon=\"times\"></i>\n </span>\n <span class=\"sr-only\">{{ 'Close' | translate }}</span>\n </button>\n\n <div *ngIf=\"!isTemplateRef(alert.text); else template(alert.text)\">\n <strong\n class=\"message\"\n *ngIf=\"!alert.allowHtml\"\n [textContent]=\"alert.text | translate\"\n ></strong>\n <strong\n class=\"message\"\n *ngIf=\"alert.allowHtml\"\n [innerHTML]=\"alert.text | translate\"\n ></strong>\n </div>\n <p\n class=\"text-muted m-t-8\"\n *ngIf=\"hasDetails(alert) && !isDetailsShow(alert)\"\n >\n <button\n class=\"btn btn-clean\"\n title=\"{{ 'Show details' | translate }}\"\n (click)=\"showDetails(alert)\"\n >\n <i c8yIcon=\"chevron-down\"></i>\n {{ 'Show details' | translate }}\n </button>\n </p>\n <p\n class=\"text-muted m-t-8\"\n *ngIf=\"hasDetails(alert) && isDetailsShow(alert)\"\n >\n <button\n class=\"btn btn-clean\"\n title=\"{{ 'Hide details' | translate }}\"\n (click)=\"closeDetails()\"\n >\n <i c8yIcon=\"chevron-up\"></i>\n {{ 'Hide details' | translate }}\n </button>\n </p>\n <div *ngIf=\"isDetailsShow(alert)\">\n <div *ngIf=\"!isTemplateRef(detailDisplayedAlert.contents); else template(alert.detailedData)\">\n <pre><code [textContent]=\"detailDisplayedAlert.contents | translate\"></code></pre>\n </div>\n </div>\n</div>\n" }]
|
|
11187
11187
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
11188
11188
|
type: Attribute,
|
|
11189
11189
|
args: ['position']
|
|
@@ -22875,8 +22875,13 @@ class FilePickerComponent {
|
|
|
22875
22875
|
this.onFilesPicked = new EventEmitter();
|
|
22876
22876
|
this.maxAllowedFiles = Infinity;
|
|
22877
22877
|
this.uploadChoice = 'uploadBinary';
|
|
22878
|
+
this.allowedUploadChoices = [
|
|
22879
|
+
'uploadBinary',
|
|
22880
|
+
'uploadUrl'
|
|
22881
|
+
];
|
|
22878
22882
|
this.config = { maxlength: 2048 };
|
|
22879
22883
|
this.ValidationPattern = ValidationPattern;
|
|
22884
|
+
this.providedPopover = gettext$1('Use this option if the device will resolve the binary itself. No file is uploaded.');
|
|
22880
22885
|
}
|
|
22881
22886
|
/**
|
|
22882
22887
|
* @ignore
|
|
@@ -22929,8 +22934,13 @@ class FilePickerComponent {
|
|
|
22929
22934
|
isPopoverUsed() {
|
|
22930
22935
|
return !isEmpty(this.fileUrlPopover);
|
|
22931
22936
|
}
|
|
22937
|
+
setProvidedOption() {
|
|
22938
|
+
this.fileToSave = { url: '$PROVIDED' };
|
|
22939
|
+
delete this.fileUrl;
|
|
22940
|
+
this.onFilesPicked.emit(this.fileToSave);
|
|
22941
|
+
}
|
|
22932
22942
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FilePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22933
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: FilePickerComponent, isStandalone: true, selector: "c8y-file-picker", inputs: { maxAllowedFiles: "maxAllowedFiles", uploadChoice: "uploadChoice", fileUrl: "fileUrl", fileBinary: "fileBinary", config: "config", filePickerIndex: "filePickerIndex", fileUrlPopover: "fileUrlPopover" }, outputs: { onFilesPicked: "onFilesPicked" }, viewQueries: [{ propertyName: "dropArea", first: true, predicate: DropAreaComponent, descendants: true, static: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label
|
|
22943
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: FilePickerComponent, isStandalone: true, selector: "c8y-file-picker", inputs: { maxAllowedFiles: "maxAllowedFiles", uploadChoice: "uploadChoice", allowedUploadChoices: "allowedUploadChoices", fileUrl: "fileUrl", fileBinary: "fileBinary", config: "config", filePickerIndex: "filePickerIndex", fileUrlPopover: "fileUrlPopover" }, outputs: { onFilesPicked: "onFilesPicked" }, viewQueries: [{ propertyName: "dropArea", first: true, predicate: DropAreaComponent, descendants: true, static: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label\n class=\"c8y-radio\"\n title=\"{{ 'Upload a binary' | translate }}\"\n >\n <input\n name=\"uploadChoice-{{ filePickerIndex }}\"\n type=\"radio\"\n value=\"uploadBinary\"\n #radio\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label\n class=\"c8y-radio m-l-8\"\n title=\"{{ 'Provide a file path' | translate }}\"\n data-cy=\"file-picker--file-path-input\"\n >\n <input\n name=\"uploadChoice-{{ filePickerIndex }}\"\n type=\"radio\"\n value=\"uploadUrl\"\n #radio\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ fileUrlPopover | translate }}\"\n placement=\"top\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"isPopoverUsed()\"\n ></button>\n </label>\n <label\n class=\"c8y-radio m-l-8\"\n title=\"{{ 'Mark as provided' | translate }}\"\n *ngIf=\"allowedUploadChoices.includes('provided')\"\n >\n <input\n name=\"uploadChoice-{{ filePickerIndex }}\"\n type=\"radio\"\n value=\"provided\"\n #radio\n [(ngModel)]=\"uploadChoice\"\n (click)=\"setProvidedOption()\"\n />\n <span></span>\n <span>{{ 'Provided' | translate }}</span>\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ providedPopover | translate }}\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n [title]=\"'Drop file or click to browse' | translate\"\n [attr.aria-label]=\"'Drop file or click to browse' | translate\"\n (dropped)=\"onFileDropped($event)\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n name=\"fileUrl\"\n type=\"text\"\n required\n data-cy=\"file-picker--fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n maxlength=\"{{ config.maxlength }}\"\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$8.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$8.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1$9.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "maxFileSizeInMegaBytes", "accept"], outputs: ["dropped"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
22934
22944
|
}
|
|
22935
22945
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FilePickerComponent, decorators: [{
|
|
22936
22946
|
type: Component,
|
|
@@ -22943,7 +22953,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
22943
22953
|
IconDirective,
|
|
22944
22954
|
RequiredInputPlaceholderDirective,
|
|
22945
22955
|
C8yTranslatePipe
|
|
22946
|
-
], template: "<div class=\"form-group\">\n <label
|
|
22956
|
+
], template: "<div class=\"form-group\">\n <label\n class=\"c8y-radio\"\n title=\"{{ 'Upload a binary' | translate }}\"\n >\n <input\n name=\"uploadChoice-{{ filePickerIndex }}\"\n type=\"radio\"\n value=\"uploadBinary\"\n #radio\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label\n class=\"c8y-radio m-l-8\"\n title=\"{{ 'Provide a file path' | translate }}\"\n data-cy=\"file-picker--file-path-input\"\n >\n <input\n name=\"uploadChoice-{{ filePickerIndex }}\"\n type=\"radio\"\n value=\"uploadUrl\"\n #radio\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ fileUrlPopover | translate }}\"\n placement=\"top\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"isPopoverUsed()\"\n ></button>\n </label>\n <label\n class=\"c8y-radio m-l-8\"\n title=\"{{ 'Mark as provided' | translate }}\"\n *ngIf=\"allowedUploadChoices.includes('provided')\"\n >\n <input\n name=\"uploadChoice-{{ filePickerIndex }}\"\n type=\"radio\"\n value=\"provided\"\n #radio\n [(ngModel)]=\"uploadChoice\"\n (click)=\"setProvidedOption()\"\n />\n <span></span>\n <span>{{ 'Provided' | translate }}</span>\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ providedPopover | translate }}\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n [title]=\"'Drop file or click to browse' | translate\"\n [attr.aria-label]=\"'Drop file or click to browse' | translate\"\n (dropped)=\"onFileDropped($event)\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n name=\"fileUrl\"\n type=\"text\"\n required\n data-cy=\"file-picker--fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n maxlength=\"{{ config.maxlength }}\"\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n" }]
|
|
22947
22957
|
}], propDecorators: { dropArea: [{
|
|
22948
22958
|
type: ViewChild,
|
|
22949
22959
|
args: [DropAreaComponent, { static: true }]
|
|
@@ -22953,6 +22963,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
22953
22963
|
type: Input
|
|
22954
22964
|
}], uploadChoice: [{
|
|
22955
22965
|
type: Input
|
|
22966
|
+
}], allowedUploadChoices: [{
|
|
22967
|
+
type: Input
|
|
22956
22968
|
}], fileUrl: [{
|
|
22957
22969
|
type: Input
|
|
22958
22970
|
}], fileBinary: [{
|
|
@@ -34919,10 +34931,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
34919
34931
|
}] });
|
|
34920
34932
|
|
|
34921
34933
|
class FeatureCacheService {
|
|
34922
|
-
constructor(featureService) {
|
|
34934
|
+
constructor(featureService, appState) {
|
|
34923
34935
|
this.featureService = featureService;
|
|
34936
|
+
this.appState = appState;
|
|
34924
34937
|
this.refreshTrigger = new BehaviorSubject(undefined);
|
|
34925
|
-
this.features$ = this.
|
|
34938
|
+
this.features$ = this.appState.currentUser.pipe(switchMap(user => {
|
|
34939
|
+
if (!user) {
|
|
34940
|
+
return NEVER;
|
|
34941
|
+
}
|
|
34942
|
+
return this.refreshTrigger.pipe(switchMap(() => this.loadFeatures()));
|
|
34943
|
+
}), shareReplay(1));
|
|
34926
34944
|
}
|
|
34927
34945
|
/**
|
|
34928
34946
|
* Needed for the angularJS implmentation to show/hide some old features.
|
|
@@ -34958,13 +34976,13 @@ class FeatureCacheService {
|
|
|
34958
34976
|
return [];
|
|
34959
34977
|
}
|
|
34960
34978
|
}
|
|
34961
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FeatureCacheService, deps: [{ token: i1.FeatureService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
34979
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FeatureCacheService, deps: [{ token: i1.FeatureService }, { token: AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
34962
34980
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FeatureCacheService, providedIn: 'root' }); }
|
|
34963
34981
|
}
|
|
34964
34982
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FeatureCacheService, decorators: [{
|
|
34965
34983
|
type: Injectable,
|
|
34966
34984
|
args: [{ providedIn: 'root' }]
|
|
34967
|
-
}], ctorParameters: () => [{ type: i1.FeatureService }] });
|
|
34985
|
+
}], ctorParameters: () => [{ type: i1.FeatureService }, { type: AppStateService }] });
|
|
34968
34986
|
|
|
34969
34987
|
const HOOK_PREVIEW = new InjectionToken('HOOK_PREVIEW');
|
|
34970
34988
|
function hookPreview(preview, options) {
|
|
@@ -35086,7 +35104,378 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
35086
35104
|
args: [{ providedIn: 'root' }]
|
|
35087
35105
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: PluginsResolveService }] });
|
|
35088
35106
|
|
|
35089
|
-
const
|
|
35107
|
+
const SHOW_PREVIEW_FEATURES = 'showPreviewFeatures';
|
|
35108
|
+
|
|
35109
|
+
class PreviewFeatureButtonComponent {
|
|
35110
|
+
constructor() {
|
|
35111
|
+
this.previewService = inject(PreviewService);
|
|
35112
|
+
this.headerService = inject(HeaderService);
|
|
35113
|
+
this.router = inject(Router);
|
|
35114
|
+
this.route = inject(ActivatedRoute);
|
|
35115
|
+
this.destroy$ = new Subject();
|
|
35116
|
+
}
|
|
35117
|
+
async ngOnInit() {
|
|
35118
|
+
this.hasUnseenFeatures$ = this.previewService.hasUnseenFeatures$;
|
|
35119
|
+
this.open$ = this.headerService.rightDrawerOpen$;
|
|
35120
|
+
}
|
|
35121
|
+
async openPreviewFeature() {
|
|
35122
|
+
this.headerService.closeRightDrawer();
|
|
35123
|
+
this.router.navigate([], {
|
|
35124
|
+
relativeTo: this.route,
|
|
35125
|
+
queryParams: { showPreviewFeatures: true },
|
|
35126
|
+
queryParamsHandling: 'merge',
|
|
35127
|
+
replaceUrl: true
|
|
35128
|
+
});
|
|
35129
|
+
}
|
|
35130
|
+
ngOnDestroy() {
|
|
35131
|
+
this.destroy$.next();
|
|
35132
|
+
this.destroy$.complete();
|
|
35133
|
+
}
|
|
35134
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35135
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: PreviewFeatureButtonComponent, isStandalone: true, selector: "c8y-preview-feature-button", ngImport: i0, template: "<div class=\"separator-top p-t-8 m-t-auto c8y-right-drawer__item sticky-top\">\n <i class=\"dlt-c8y-icon-science\"></i>\n <span\n class=\"text-bold\"\n translate\n >\n Preview features\n </span>\n <span\n class=\"m-l-8 tag tag--primary\"\n *ngIf=\"hasUnseenFeatures$ | async\"\n >\n {{ 'New' | translate }}\n </span>\n</div>\n<ul class=\"list-unstyled\">\n <li class=\"c8y-right-drawer__item\">\n <small translate>\n Enable or disable experimental features. Your feedback helps us improve functionality before\n final release.\n </small>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Manage preview features' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"openPreviewFeature()\"\n >\n <i class=\"m-t-0 m-b-9 text-14 dlt-c8y-icon-settings\"></i>\n <span translate>Manage preview features</span>\n </button>\n </li>\n</ul>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
35136
|
+
}
|
|
35137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureButtonComponent, decorators: [{
|
|
35138
|
+
type: Component,
|
|
35139
|
+
args: [{ selector: 'c8y-preview-feature-button', standalone: true, imports: [C8yTranslateDirective, C8yTranslatePipe, AsyncPipe, NgIf], template: "<div class=\"separator-top p-t-8 m-t-auto c8y-right-drawer__item sticky-top\">\n <i class=\"dlt-c8y-icon-science\"></i>\n <span\n class=\"text-bold\"\n translate\n >\n Preview features\n </span>\n <span\n class=\"m-l-8 tag tag--primary\"\n *ngIf=\"hasUnseenFeatures$ | async\"\n >\n {{ 'New' | translate }}\n </span>\n</div>\n<ul class=\"list-unstyled\">\n <li class=\"c8y-right-drawer__item\">\n <small translate>\n Enable or disable experimental features. Your feedback helps us improve functionality before\n final release.\n </small>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Manage preview features' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"openPreviewFeature()\"\n >\n <i class=\"m-t-0 m-b-9 text-14 dlt-c8y-icon-settings\"></i>\n <span translate>Manage preview features</span>\n </button>\n </li>\n</ul>\n" }]
|
|
35140
|
+
}] });
|
|
35141
|
+
|
|
35142
|
+
class PreviewFeatureDrawerFactory {
|
|
35143
|
+
constructor(options, previewService, permissions) {
|
|
35144
|
+
this.options = options;
|
|
35145
|
+
this.previewService = previewService;
|
|
35146
|
+
this.permissions = permissions;
|
|
35147
|
+
this.drawerItem = {
|
|
35148
|
+
component: PreviewFeatureButtonComponent,
|
|
35149
|
+
position: 'right',
|
|
35150
|
+
priority: 80,
|
|
35151
|
+
id: 'previewFeature'
|
|
35152
|
+
};
|
|
35153
|
+
}
|
|
35154
|
+
get() {
|
|
35155
|
+
return this.shouldShowPreviewFeature$().pipe(distinctUntilChanged(), map(shouldShowPreviewFeature => {
|
|
35156
|
+
if (shouldShowPreviewFeature) {
|
|
35157
|
+
return this.drawerItem;
|
|
35158
|
+
}
|
|
35159
|
+
return [];
|
|
35160
|
+
}));
|
|
35161
|
+
}
|
|
35162
|
+
shouldShowPreviewFeature$() {
|
|
35163
|
+
return combineLatest([
|
|
35164
|
+
this.options.get$('hidePreviewFeature'),
|
|
35165
|
+
this.previewService.getAvailableFeatures$()
|
|
35166
|
+
]).pipe(map(([hidePreviewFeature, items]) => {
|
|
35167
|
+
const hasItems = items.length > 0;
|
|
35168
|
+
if (!hasItems) {
|
|
35169
|
+
return false;
|
|
35170
|
+
}
|
|
35171
|
+
const hasAdminRole = this.permissions.hasRole(Permissions.ROLE_TENANT_MANAGEMENT_ADMIN);
|
|
35172
|
+
if (hidePreviewFeature === undefined) {
|
|
35173
|
+
return hasItems && hasAdminRole;
|
|
35174
|
+
}
|
|
35175
|
+
return !hidePreviewFeature && hasItems && hasAdminRole;
|
|
35176
|
+
}));
|
|
35177
|
+
}
|
|
35178
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureDrawerFactory, deps: [{ token: OptionsService }, { token: PreviewService }, { token: Permissions }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35179
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureDrawerFactory, providedIn: 'root' }); }
|
|
35180
|
+
}
|
|
35181
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureDrawerFactory, decorators: [{
|
|
35182
|
+
type: Injectable,
|
|
35183
|
+
args: [{ providedIn: 'root' }]
|
|
35184
|
+
}], ctorParameters: () => [{ type: OptionsService }, { type: PreviewService }, { type: Permissions }] });
|
|
35185
|
+
|
|
35186
|
+
class PreviewFeatureShowNotification {
|
|
35187
|
+
constructor(previewService, permissions, appState) {
|
|
35188
|
+
this.previewService = previewService;
|
|
35189
|
+
this.permissions = permissions;
|
|
35190
|
+
this.appState = appState;
|
|
35191
|
+
this.shouldShowNotification$ = this.appState.currentUser.pipe(switchMap$1(user => {
|
|
35192
|
+
if (!user) {
|
|
35193
|
+
return of(false);
|
|
35194
|
+
}
|
|
35195
|
+
const hasAdminRole = this.permissions.hasRole(Permissions.ROLE_TENANT_MANAGEMENT_ADMIN);
|
|
35196
|
+
if (!hasAdminRole) {
|
|
35197
|
+
return of(false);
|
|
35198
|
+
}
|
|
35199
|
+
return this.previewService.hasUnseenFeatures$;
|
|
35200
|
+
}));
|
|
35201
|
+
}
|
|
35202
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureShowNotification, deps: [{ token: PreviewService }, { token: Permissions }, { token: AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35203
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureShowNotification, providedIn: 'root' }); }
|
|
35204
|
+
}
|
|
35205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureShowNotification, decorators: [{
|
|
35206
|
+
type: Injectable,
|
|
35207
|
+
args: [{ providedIn: 'root' }]
|
|
35208
|
+
}], ctorParameters: () => [{ type: PreviewService }, { type: Permissions }, { type: AppStateService }] });
|
|
35209
|
+
|
|
35210
|
+
class PluginLoadedPipe {
|
|
35211
|
+
constructor(pluginsResolve) {
|
|
35212
|
+
this.pluginsResolve = pluginsResolve;
|
|
35213
|
+
}
|
|
35214
|
+
transform(pluginName) {
|
|
35215
|
+
if (!pluginName) {
|
|
35216
|
+
return of(false);
|
|
35217
|
+
}
|
|
35218
|
+
return this.pluginsResolve.loadedPluginNames$.pipe(map$2(pluginNames => pluginNames.includes(pluginName)), distinctUntilChanged$1());
|
|
35219
|
+
}
|
|
35220
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PluginLoadedPipe, deps: [{ token: PluginsResolveService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
35221
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: PluginLoadedPipe, isStandalone: true, name: "c8yPluginLoaded" }); }
|
|
35222
|
+
}
|
|
35223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PluginLoadedPipe, decorators: [{
|
|
35224
|
+
type: Pipe,
|
|
35225
|
+
args: [{
|
|
35226
|
+
name: 'c8yPluginLoaded',
|
|
35227
|
+
standalone: true
|
|
35228
|
+
}]
|
|
35229
|
+
}], ctorParameters: () => [{ type: PluginsResolveService }] });
|
|
35230
|
+
|
|
35231
|
+
const HOOK_QUERY_PARAM = new InjectionToken('HOOK_QUERY_PARAM');
|
|
35232
|
+
function hookQueryParam(config, options) {
|
|
35233
|
+
return hookGeneric(config, HOOK_QUERY_PARAM, options);
|
|
35234
|
+
}
|
|
35235
|
+
class QueryParamHandlerService extends ExtensionPointWithoutStateForPlugins {
|
|
35236
|
+
constructor(rootInjector, router, pluginService, activatedRoute) {
|
|
35237
|
+
super(rootInjector, pluginService);
|
|
35238
|
+
this.router = router;
|
|
35239
|
+
this.activatedRoute = activatedRoute;
|
|
35240
|
+
this.items$ = this.setupItemsObservable();
|
|
35241
|
+
combineLatest([this.items$, this.activatedRoute?.queryParamMap || NEVER])
|
|
35242
|
+
.pipe(distinctUntilChanged$1(([prevItems, prevParamsMap], [currItems, currParamsMap]) => {
|
|
35243
|
+
const previousItems = prevItems.map(item => item.queryParam).sort();
|
|
35244
|
+
const currentItems = currItems.map(item => item.queryParam).sort();
|
|
35245
|
+
const itemsUnchanged = JSON.stringify(previousItems) === JSON.stringify(currentItems);
|
|
35246
|
+
const prevParams = {};
|
|
35247
|
+
prevParamsMap.keys.forEach(key => {
|
|
35248
|
+
const value = prevParamsMap.get(key);
|
|
35249
|
+
if (value !== null) {
|
|
35250
|
+
prevParams[key] = value;
|
|
35251
|
+
}
|
|
35252
|
+
});
|
|
35253
|
+
const currParams = {};
|
|
35254
|
+
currParamsMap.keys.forEach(key => {
|
|
35255
|
+
const value = currParamsMap.get(key);
|
|
35256
|
+
if (value !== null) {
|
|
35257
|
+
currParams[key] = value;
|
|
35258
|
+
}
|
|
35259
|
+
});
|
|
35260
|
+
const paramsUnchanged = JSON.stringify(prevParams) === JSON.stringify(currParams);
|
|
35261
|
+
return itemsUnchanged && paramsUnchanged;
|
|
35262
|
+
}), tap$1(([items, params]) => {
|
|
35263
|
+
items.forEach(item => {
|
|
35264
|
+
const paramValue = params.get(item.queryParam);
|
|
35265
|
+
if (paramValue !== null) {
|
|
35266
|
+
runInInjectionContext(item.injector || rootInjector, () => {
|
|
35267
|
+
item.trigger();
|
|
35268
|
+
});
|
|
35269
|
+
}
|
|
35270
|
+
});
|
|
35271
|
+
}))
|
|
35272
|
+
.subscribe();
|
|
35273
|
+
}
|
|
35274
|
+
setupItemsObservable() {
|
|
35275
|
+
return fromTrigger(this.router, this.refresh$, [
|
|
35276
|
+
getInjectedHooks(HOOK_QUERY_PARAM, this.injectors),
|
|
35277
|
+
() => this.factories
|
|
35278
|
+
]).pipe(distinctUntilChanged$1(), shareReplay$1(1));
|
|
35279
|
+
}
|
|
35280
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: QueryParamHandlerService, deps: [{ token: i0.Injector }, { token: i1$4.Router }, { token: PluginsResolveService }, { token: i1$4.ActivatedRoute, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35281
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: QueryParamHandlerService, providedIn: 'root' }); }
|
|
35282
|
+
}
|
|
35283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: QueryParamHandlerService, decorators: [{
|
|
35284
|
+
type: Injectable,
|
|
35285
|
+
args: [{
|
|
35286
|
+
providedIn: 'root'
|
|
35287
|
+
}]
|
|
35288
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1$4.Router }, { type: PluginsResolveService }, { type: i1$4.ActivatedRoute, decorators: [{
|
|
35289
|
+
type: Optional
|
|
35290
|
+
}] }] });
|
|
35291
|
+
|
|
35292
|
+
const HOOK_QUERY_PARAM_BOTTOM_DRAWER = new InjectionToken('HOOK_QUERY_PARAM_BOTTOM_DRAWER');
|
|
35293
|
+
function hookQueryParamBottomDrawer(config, options) {
|
|
35294
|
+
return hookGeneric(config, HOOK_QUERY_PARAM_BOTTOM_DRAWER, options);
|
|
35295
|
+
}
|
|
35296
|
+
class QueryParamBottomDrawerStateService extends ExtensionPointWithoutStateForPlugins {
|
|
35297
|
+
constructor(rootInjector, pluginService) {
|
|
35298
|
+
super(rootInjector, pluginService);
|
|
35299
|
+
this.items$ = this.setupItemsObservable();
|
|
35300
|
+
}
|
|
35301
|
+
setupItemsObservable() {
|
|
35302
|
+
return fromTriggerOnce(undefined, this.refresh$, [
|
|
35303
|
+
getInjectedHooks(HOOK_QUERY_PARAM_BOTTOM_DRAWER, this.injectors),
|
|
35304
|
+
() => this.factories
|
|
35305
|
+
]).pipe(distinctUntilChanged(), shareReplay(1));
|
|
35306
|
+
}
|
|
35307
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: QueryParamBottomDrawerStateService, deps: [{ token: i0.Injector }, { token: PluginsResolveService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35308
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: QueryParamBottomDrawerStateService, providedIn: 'root' }); }
|
|
35309
|
+
}
|
|
35310
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: QueryParamBottomDrawerStateService, decorators: [{
|
|
35311
|
+
type: Injectable,
|
|
35312
|
+
args: [{
|
|
35313
|
+
providedIn: 'root'
|
|
35314
|
+
}]
|
|
35315
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: PluginsResolveService }] });
|
|
35316
|
+
class QueryParamBottomDrawerFactory {
|
|
35317
|
+
constructor(queryParamBottomDrawerStateService, bottomDrawerService) {
|
|
35318
|
+
this.queryParamBottomDrawerStateService = queryParamBottomDrawerStateService;
|
|
35319
|
+
this.bottomDrawerService = bottomDrawerService;
|
|
35320
|
+
}
|
|
35321
|
+
get() {
|
|
35322
|
+
return this.queryParamBottomDrawerStateService.items$.pipe(map(items => {
|
|
35323
|
+
return items.map(item => {
|
|
35324
|
+
const config = {
|
|
35325
|
+
queryParam: item.queryParam,
|
|
35326
|
+
trigger: () => {
|
|
35327
|
+
this.handleQueryParamBottomDrawer(item);
|
|
35328
|
+
},
|
|
35329
|
+
injector: item.injector
|
|
35330
|
+
};
|
|
35331
|
+
return config;
|
|
35332
|
+
});
|
|
35333
|
+
}));
|
|
35334
|
+
}
|
|
35335
|
+
async handleQueryParamBottomDrawer(config) {
|
|
35336
|
+
const bottomDrawer = this.bottomDrawerService.openDrawer(config.component, {
|
|
35337
|
+
closeOnNavigation: config.closeOnNavigation,
|
|
35338
|
+
disableClickOutside: config.disableClickOutside
|
|
35339
|
+
});
|
|
35340
|
+
try {
|
|
35341
|
+
const result = await bottomDrawer.instance.shouldClose;
|
|
35342
|
+
if (result) {
|
|
35343
|
+
bottomDrawer.close();
|
|
35344
|
+
}
|
|
35345
|
+
}
|
|
35346
|
+
catch (e) {
|
|
35347
|
+
// intended empty
|
|
35348
|
+
}
|
|
35349
|
+
}
|
|
35350
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: QueryParamBottomDrawerFactory, deps: [{ token: QueryParamBottomDrawerStateService }, { token: BottomDrawerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35351
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: QueryParamBottomDrawerFactory, providedIn: 'root' }); }
|
|
35352
|
+
}
|
|
35353
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: QueryParamBottomDrawerFactory, decorators: [{
|
|
35354
|
+
type: Injectable,
|
|
35355
|
+
args: [{
|
|
35356
|
+
providedIn: 'root'
|
|
35357
|
+
}]
|
|
35358
|
+
}], ctorParameters: () => [{ type: QueryParamBottomDrawerStateService }, { type: BottomDrawerService }] });
|
|
35359
|
+
|
|
35360
|
+
const HOOK_QUERY_PARAM_MODAL = new InjectionToken('HOOK_QUERY_PARAM_MODAL');
|
|
35361
|
+
function hookQueryParamModal(config, options) {
|
|
35362
|
+
return hookGeneric(config, HOOK_QUERY_PARAM_MODAL, options);
|
|
35363
|
+
}
|
|
35364
|
+
/**
|
|
35365
|
+
* Service to manage the display of modals based on URL query parameter.
|
|
35366
|
+
*
|
|
35367
|
+
* This service listens for specific query parameters in the URL and opens corresponding modals when detected.
|
|
35368
|
+
* It automatically cleans up the query parameters from the URL when the modal is closed or query parameter value passed as 'false'.
|
|
35369
|
+
*/
|
|
35370
|
+
class QueryParamModalStateService extends ExtensionPointWithoutStateForPlugins {
|
|
35371
|
+
constructor(rootInjector, pluginService) {
|
|
35372
|
+
super(rootInjector, pluginService);
|
|
35373
|
+
this.items$ = this.setupItemsObservable();
|
|
35374
|
+
}
|
|
35375
|
+
setupItemsObservable() {
|
|
35376
|
+
return fromTriggerOnce(undefined, this.refresh$, [
|
|
35377
|
+
getInjectedHooks(HOOK_QUERY_PARAM_MODAL, this.injectors),
|
|
35378
|
+
() => this.factories
|
|
35379
|
+
]).pipe(distinctUntilChanged(), shareReplay(1));
|
|
35380
|
+
}
|
|
35381
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: QueryParamModalStateService, deps: [{ token: i0.Injector }, { token: PluginsResolveService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35382
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: QueryParamModalStateService, providedIn: 'root' }); }
|
|
35383
|
+
}
|
|
35384
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: QueryParamModalStateService, decorators: [{
|
|
35385
|
+
type: Injectable,
|
|
35386
|
+
args: [{
|
|
35387
|
+
providedIn: 'root'
|
|
35388
|
+
}]
|
|
35389
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: PluginsResolveService }] });
|
|
35390
|
+
class QueryParamModalFactory {
|
|
35391
|
+
constructor(queryParamModalStateService, bsModalService, router, activatedRoute) {
|
|
35392
|
+
this.queryParamModalStateService = queryParamModalStateService;
|
|
35393
|
+
this.bsModalService = bsModalService;
|
|
35394
|
+
this.router = router;
|
|
35395
|
+
this.activatedRoute = activatedRoute;
|
|
35396
|
+
this.modalCloseSubscription = null;
|
|
35397
|
+
}
|
|
35398
|
+
get() {
|
|
35399
|
+
return this.queryParamModalStateService.items$.pipe(map(items => {
|
|
35400
|
+
return items.map(item => {
|
|
35401
|
+
const config = {
|
|
35402
|
+
queryParam: item.queryParam,
|
|
35403
|
+
trigger: () => {
|
|
35404
|
+
this.handleQueryParamModal(item);
|
|
35405
|
+
},
|
|
35406
|
+
injector: item.injector
|
|
35407
|
+
};
|
|
35408
|
+
return config;
|
|
35409
|
+
});
|
|
35410
|
+
}));
|
|
35411
|
+
}
|
|
35412
|
+
/**
|
|
35413
|
+
* Handles the display of a modal based on a specific query parameter.
|
|
35414
|
+
*
|
|
35415
|
+
* @param config - Configuration object specifying the query parameter, component, and optional modal settings.
|
|
35416
|
+
* @returns An observable that listens for changes in the query parameter.
|
|
35417
|
+
*/
|
|
35418
|
+
handleQueryParamModal(config) {
|
|
35419
|
+
this.showModal(config.component, config.modalConfig);
|
|
35420
|
+
this.modalCloseSubscription = this.bsModalService.onHidden.subscribe(() => {
|
|
35421
|
+
this.removeQueryParam(config.queryParam);
|
|
35422
|
+
this.cleanup();
|
|
35423
|
+
});
|
|
35424
|
+
}
|
|
35425
|
+
/**
|
|
35426
|
+
* Removes the specified query parameter from the URL.
|
|
35427
|
+
*
|
|
35428
|
+
* @param paramKey - The key of the query parameter to remove.
|
|
35429
|
+
*/
|
|
35430
|
+
removeQueryParam(paramKey) {
|
|
35431
|
+
const queryParams = {
|
|
35432
|
+
[paramKey]: null
|
|
35433
|
+
};
|
|
35434
|
+
this.router.navigate([], {
|
|
35435
|
+
relativeTo: this.activatedRoute,
|
|
35436
|
+
queryParams,
|
|
35437
|
+
queryParamsHandling: 'merge'
|
|
35438
|
+
});
|
|
35439
|
+
}
|
|
35440
|
+
/**
|
|
35441
|
+
* Displays a modal with the specified component and configuration.
|
|
35442
|
+
*
|
|
35443
|
+
* @param component - The component to display in the modal.
|
|
35444
|
+
* @param modalConfig - Optional settings for the modal appearance and behavior.
|
|
35445
|
+
*/
|
|
35446
|
+
showModal(component, modalConfig) {
|
|
35447
|
+
this.bsModalService.show(component, modalConfig);
|
|
35448
|
+
}
|
|
35449
|
+
/**
|
|
35450
|
+
* Cleans up subscriptions related to modal events.
|
|
35451
|
+
* Ensures no memory leaks by unsubscribing from modal close events.
|
|
35452
|
+
*/
|
|
35453
|
+
cleanup() {
|
|
35454
|
+
if (this.modalCloseSubscription) {
|
|
35455
|
+
this.modalCloseSubscription.unsubscribe();
|
|
35456
|
+
this.modalCloseSubscription = null;
|
|
35457
|
+
}
|
|
35458
|
+
}
|
|
35459
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: QueryParamModalFactory, deps: [{ token: QueryParamModalStateService }, { token: i1$7.BsModalService }, { token: i1$4.Router }, { token: i1$4.ActivatedRoute, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35460
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: QueryParamModalFactory, providedIn: 'root' }); }
|
|
35461
|
+
}
|
|
35462
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: QueryParamModalFactory, decorators: [{
|
|
35463
|
+
type: Injectable,
|
|
35464
|
+
args: [{
|
|
35465
|
+
providedIn: 'root'
|
|
35466
|
+
}]
|
|
35467
|
+
}], ctorParameters: () => [{ type: QueryParamModalStateService }, { type: i1$7.BsModalService }, { type: i1$4.Router }, { type: i1$4.ActivatedRoute, decorators: [{
|
|
35468
|
+
type: Optional
|
|
35469
|
+
}] }] });
|
|
35470
|
+
|
|
35471
|
+
const QUERY_PARAM_HANDLER_PROVIDERS = [
|
|
35472
|
+
// This will ensure that the QueryParamHandlerService is initialized
|
|
35473
|
+
provideAppInitializer(() => {
|
|
35474
|
+
inject(QueryParamHandlerService);
|
|
35475
|
+
}),
|
|
35476
|
+
hookQueryParam(QueryParamBottomDrawerFactory),
|
|
35477
|
+
hookQueryParam(QueryParamModalFactory)
|
|
35478
|
+
];
|
|
35090
35479
|
|
|
35091
35480
|
class FeatureStatePipe {
|
|
35092
35481
|
constructor(previewService) {
|
|
@@ -35111,6 +35500,8 @@ class PreviewFeatureComponent {
|
|
|
35111
35500
|
this.description$ = new BehaviorSubject('');
|
|
35112
35501
|
this.previewFeatureService = inject(PreviewService);
|
|
35113
35502
|
this.markdownToHtmlPipe = inject(MarkdownToHtmlPipe);
|
|
35503
|
+
this.router = inject(Router);
|
|
35504
|
+
this.route = inject(ActivatedRoute);
|
|
35114
35505
|
this.features$ = this.previewFeatureService.getAvailableFeatures$();
|
|
35115
35506
|
this.shouldClose = new Promise(resolve => {
|
|
35116
35507
|
this.resolveClose = resolve;
|
|
@@ -35144,6 +35535,19 @@ class PreviewFeatureComponent {
|
|
|
35144
35535
|
}
|
|
35145
35536
|
close() {
|
|
35146
35537
|
this.resolveClose(true);
|
|
35538
|
+
this.router
|
|
35539
|
+
.navigate([], {
|
|
35540
|
+
relativeTo: this.route,
|
|
35541
|
+
queryParams: { showPreviewFeatures: null },
|
|
35542
|
+
queryParamsHandling: 'merge',
|
|
35543
|
+
replaceUrl: true
|
|
35544
|
+
})
|
|
35545
|
+
.then(() => {
|
|
35546
|
+
// Reload if needed
|
|
35547
|
+
if (this.previewFeatureService.reload$.value) {
|
|
35548
|
+
window.location.reload();
|
|
35549
|
+
}
|
|
35550
|
+
});
|
|
35147
35551
|
}
|
|
35148
35552
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35149
35553
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: PreviewFeatureComponent, isStandalone: true, selector: "c8y-preview-feature", host: { classAttribute: "d-contents" }, providers: [MarkdownToHtmlPipe], ngImport: i0, template: "<div class=\"card-block separator-bottom bg-component text-center flex-no-shrink p-24\">\n <div class=\"d-flex fit-w a-i-center j-c-center\">\n <i\n class=\"icon-24 m-r-8\"\n [c8yIcon]=\"'science'\"\n ></i>\n <h3\n class=\"m-0\"\n translate\n >\n Preview features\n </h3>\n </div>\n <p class=\"text-16 m-t-8\">\n {{\n 'Select any feature to view additional details and documentation. Toggle features on or off using the switches.'\n | translate\n }}\n </p>\n\n <p>\n {{\n 'These beta capabilities may change or be removed before final release. We value your feedback. The descriptions for the features below are available only in English.'\n | translate\n }}\n </p>\n</div>\n\n<div class=\"card-block p-0\">\n <div class=\"d-flex fit-h\">\n <div class=\"col-md-4 col-lg-3 p-l-0 p-r-0 sticky-top m-t-0 inner-scroll bg-level-1\">\n <div class=\"nav-tabs nav-tabs-vertical nav-tabs-vertical--wide p-t-0\">\n <div\n [class.active]=\"feature === selectedFeature\"\n class=\"d-flex fit-w a-i-center\"\n *ngFor=\"let feature of features$ | async\"\n >\n <button\n class=\"d-flex gap-4 text-truncate flex-grow min-width-0\"\n title=\"{{ feature.label }}\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n (click)=\"updateSelectedFeature(feature)\"\n >\n <i\n class=\"m-l-0\"\n [c8yIcon]=\"'science'\"\n ></i>\n <span class=\"text-truncate\">\n {{ feature.label }}\n </span>\n </button>\n <div\n class=\"a-s-stretch d-flex a-i-center separator-bottom p-r-16\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n >\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Enable or disable' | translate }}\"\n >\n <input\n [attr.aria-label]=\"feature.label\"\n type=\"checkbox\"\n [checked]=\"feature.key | featureState | async\"\n (change)=\"$event.stopPropagation(); onToggle(feature, $event)\"\n />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-md-8 col-lg-9 p-24 inner-scroll markdown-content\"\n *ngIf=\"selectedFeature\"\n >\n <span class=\"tag tag--primary h4\">\n {{ 'Feature preview' | translate }} \u2014 {{ selectedFeature.label }}\n </span>\n <div *ngIf=\"isComponent(description$.value); else stringDescription\">\n <ng-container *ngComponentOutlet=\"description$.value\"></ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n</div>\n\n<ng-template #stringDescription>\n <p [innerHTML]=\"description$.value\"></p>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$a.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$a.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: ListGroupModule }, { kind: "pipe", type: FeatureStatePipe, name: "featureState" }] }); }
|
|
@@ -35153,66 +35557,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
35153
35557
|
args: [{ selector: 'c8y-preview-feature', host: { class: 'd-contents' }, standalone: true, imports: [NgForOf, NgIf, AsyncPipe, CommonModule, ListGroupModule, FeatureStatePipe], providers: [MarkdownToHtmlPipe], template: "<div class=\"card-block separator-bottom bg-component text-center flex-no-shrink p-24\">\n <div class=\"d-flex fit-w a-i-center j-c-center\">\n <i\n class=\"icon-24 m-r-8\"\n [c8yIcon]=\"'science'\"\n ></i>\n <h3\n class=\"m-0\"\n translate\n >\n Preview features\n </h3>\n </div>\n <p class=\"text-16 m-t-8\">\n {{\n 'Select any feature to view additional details and documentation. Toggle features on or off using the switches.'\n | translate\n }}\n </p>\n\n <p>\n {{\n 'These beta capabilities may change or be removed before final release. We value your feedback. The descriptions for the features below are available only in English.'\n | translate\n }}\n </p>\n</div>\n\n<div class=\"card-block p-0\">\n <div class=\"d-flex fit-h\">\n <div class=\"col-md-4 col-lg-3 p-l-0 p-r-0 sticky-top m-t-0 inner-scroll bg-level-1\">\n <div class=\"nav-tabs nav-tabs-vertical nav-tabs-vertical--wide p-t-0\">\n <div\n [class.active]=\"feature === selectedFeature\"\n class=\"d-flex fit-w a-i-center\"\n *ngFor=\"let feature of features$ | async\"\n >\n <button\n class=\"d-flex gap-4 text-truncate flex-grow min-width-0\"\n title=\"{{ feature.label }}\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n (click)=\"updateSelectedFeature(feature)\"\n >\n <i\n class=\"m-l-0\"\n [c8yIcon]=\"'science'\"\n ></i>\n <span class=\"text-truncate\">\n {{ feature.label }}\n </span>\n </button>\n <div\n class=\"a-s-stretch d-flex a-i-center separator-bottom p-r-16\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n >\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Enable or disable' | translate }}\"\n >\n <input\n [attr.aria-label]=\"feature.label\"\n type=\"checkbox\"\n [checked]=\"feature.key | featureState | async\"\n (change)=\"$event.stopPropagation(); onToggle(feature, $event)\"\n />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-md-8 col-lg-9 p-24 inner-scroll markdown-content\"\n *ngIf=\"selectedFeature\"\n >\n <span class=\"tag tag--primary h4\">\n {{ 'Feature preview' | translate }} \u2014 {{ selectedFeature.label }}\n </span>\n <div *ngIf=\"isComponent(description$.value); else stringDescription\">\n <ng-container *ngComponentOutlet=\"description$.value\"></ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n</div>\n\n<ng-template #stringDescription>\n <p [innerHTML]=\"description$.value\"></p>\n</ng-template>\n" }]
|
|
35154
35558
|
}], ctorParameters: () => [] });
|
|
35155
35559
|
|
|
35156
|
-
class
|
|
35157
|
-
constructor() {
|
|
35158
|
-
this.previewService = inject(PreviewService);
|
|
35159
|
-
this.bottomDrawerService = inject(BottomDrawerService);
|
|
35160
|
-
this.headerService = inject(HeaderService);
|
|
35161
|
-
this.destroy$ = new Subject();
|
|
35162
|
-
}
|
|
35163
|
-
ngOnInit() {
|
|
35164
|
-
this.hasUnseenFeatures$ = this.previewService.hasUnseenFeatures$;
|
|
35165
|
-
this.open$ = this.headerService.rightDrawerOpen$;
|
|
35166
|
-
}
|
|
35167
|
-
async openPreviewFeature() {
|
|
35168
|
-
this.headerService.closeRightDrawer();
|
|
35169
|
-
const bottomDrawer = this.bottomDrawerService.openDrawer(PreviewFeatureComponent, {
|
|
35170
|
-
closeOnNavigation: false,
|
|
35171
|
-
disableClickOutside: true
|
|
35172
|
-
});
|
|
35173
|
-
bottomDrawer.onClosed$.pipe(takeUntil$1(this.destroy$)).subscribe(() => {
|
|
35174
|
-
if (this.previewService.reload$.value) {
|
|
35175
|
-
window.location.reload();
|
|
35176
|
-
}
|
|
35177
|
-
});
|
|
35178
|
-
try {
|
|
35179
|
-
const result = await bottomDrawer.instance.shouldClose;
|
|
35180
|
-
if (result) {
|
|
35181
|
-
bottomDrawer.close();
|
|
35182
|
-
}
|
|
35183
|
-
}
|
|
35184
|
-
catch (e) {
|
|
35185
|
-
// intended empty
|
|
35186
|
-
}
|
|
35187
|
-
}
|
|
35188
|
-
ngOnDestroy() {
|
|
35189
|
-
this.destroy$.next();
|
|
35190
|
-
this.destroy$.complete();
|
|
35191
|
-
}
|
|
35192
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35193
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: PreviewFeatureButtonComponent, isStandalone: true, selector: "c8y-preview-feature-button", ngImport: i0, template: "<div class=\"separator-top p-t-8 m-t-auto c8y-right-drawer__item sticky-top\">\n <i class=\"dlt-c8y-icon-science\"></i>\n <span\n class=\"text-bold\"\n translate\n >\n Preview features\n </span>\n <span\n class=\"m-l-8 tag tag--primary\"\n *ngIf=\"hasUnseenFeatures$ | async\"\n >\n {{ 'New' | translate }}\n </span>\n</div>\n<ul class=\"list-unstyled\">\n <li class=\"c8y-right-drawer__item\">\n <small translate>\n Enable or disable experimental features. Your feedback helps us improve functionality before\n final release.\n </small>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Manage preview features' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"openPreviewFeature()\"\n >\n <i class=\"m-t-0 m-b-9 text-14 dlt-c8y-icon-settings\"></i>\n <span translate>Manage preview features</span>\n </button>\n </li>\n</ul>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
35194
|
-
}
|
|
35195
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureButtonComponent, decorators: [{
|
|
35196
|
-
type: Component,
|
|
35197
|
-
args: [{ selector: 'c8y-preview-feature-button', standalone: true, imports: [C8yTranslateDirective, C8yTranslatePipe, AsyncPipe, NgIf], template: "<div class=\"separator-top p-t-8 m-t-auto c8y-right-drawer__item sticky-top\">\n <i class=\"dlt-c8y-icon-science\"></i>\n <span\n class=\"text-bold\"\n translate\n >\n Preview features\n </span>\n <span\n class=\"m-l-8 tag tag--primary\"\n *ngIf=\"hasUnseenFeatures$ | async\"\n >\n {{ 'New' | translate }}\n </span>\n</div>\n<ul class=\"list-unstyled\">\n <li class=\"c8y-right-drawer__item\">\n <small translate>\n Enable or disable experimental features. Your feedback helps us improve functionality before\n final release.\n </small>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Manage preview features' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"openPreviewFeature()\"\n >\n <i class=\"m-t-0 m-b-9 text-14 dlt-c8y-icon-settings\"></i>\n <span translate>Manage preview features</span>\n </button>\n </li>\n</ul>\n" }]
|
|
35198
|
-
}] });
|
|
35199
|
-
|
|
35200
|
-
class PreviewFeatureDrawerFactory {
|
|
35560
|
+
class PreviewFeatureQueryParamDrawerFactory {
|
|
35201
35561
|
constructor(options, previewService, permissions) {
|
|
35202
35562
|
this.options = options;
|
|
35203
35563
|
this.previewService = previewService;
|
|
35204
35564
|
this.permissions = permissions;
|
|
35205
|
-
this.
|
|
35206
|
-
|
|
35207
|
-
|
|
35208
|
-
|
|
35209
|
-
|
|
35565
|
+
this.queryParamConfig = {
|
|
35566
|
+
queryParam: SHOW_PREVIEW_FEATURES,
|
|
35567
|
+
closeOnNavigation: false,
|
|
35568
|
+
disableClickOutside: true,
|
|
35569
|
+
component: PreviewFeatureComponent
|
|
35210
35570
|
};
|
|
35211
35571
|
}
|
|
35212
35572
|
get() {
|
|
35213
35573
|
return this.shouldShowPreviewFeature$().pipe(distinctUntilChanged(), map(shouldShowPreviewFeature => {
|
|
35214
35574
|
if (shouldShowPreviewFeature) {
|
|
35215
|
-
return this.
|
|
35575
|
+
return this.queryParamConfig;
|
|
35216
35576
|
}
|
|
35217
35577
|
return [];
|
|
35218
35578
|
}));
|
|
@@ -35233,30 +35593,18 @@ class PreviewFeatureDrawerFactory {
|
|
|
35233
35593
|
return !hidePreviewFeature && hasItems && hasAdminRole;
|
|
35234
35594
|
}));
|
|
35235
35595
|
}
|
|
35236
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type:
|
|
35237
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type:
|
|
35596
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureQueryParamDrawerFactory, deps: [{ token: OptionsService }, { token: PreviewService }, { token: Permissions }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35597
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureQueryParamDrawerFactory, providedIn: 'root' }); }
|
|
35238
35598
|
}
|
|
35239
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type:
|
|
35599
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureQueryParamDrawerFactory, decorators: [{
|
|
35240
35600
|
type: Injectable,
|
|
35241
35601
|
args: [{ providedIn: 'root' }]
|
|
35242
35602
|
}], ctorParameters: () => [{ type: OptionsService }, { type: PreviewService }, { type: Permissions }] });
|
|
35243
35603
|
|
|
35244
|
-
class PreviewFeatureShowNotification {
|
|
35245
|
-
constructor(previewService) {
|
|
35246
|
-
this.previewService = previewService;
|
|
35247
|
-
this.shouldShowNotification$ = this.previewService.hasUnseenFeatures$;
|
|
35248
|
-
}
|
|
35249
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureShowNotification, deps: [{ token: PreviewService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35250
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureShowNotification, providedIn: 'root' }); }
|
|
35251
|
-
}
|
|
35252
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PreviewFeatureShowNotification, decorators: [{
|
|
35253
|
-
type: Injectable,
|
|
35254
|
-
args: [{ providedIn: 'root' }]
|
|
35255
|
-
}], ctorParameters: () => [{ type: PreviewService }] });
|
|
35256
|
-
|
|
35257
35604
|
const PREVIEW_FEATURE_PROVIDERS = [
|
|
35258
35605
|
hookDrawer(PreviewFeatureDrawerFactory),
|
|
35259
|
-
hookService('notificationService', PreviewFeatureShowNotification)
|
|
35606
|
+
hookService('notificationService', PreviewFeatureShowNotification),
|
|
35607
|
+
hookQueryParamBottomDrawer(PreviewFeatureQueryParamDrawerFactory)
|
|
35260
35608
|
];
|
|
35261
35609
|
|
|
35262
35610
|
class ChangeIconComponent {
|
|
@@ -35335,7 +35683,8 @@ class CoreModule {
|
|
|
35335
35683
|
...UiSettingsModule.providers(),
|
|
35336
35684
|
...UserModule.providers(),
|
|
35337
35685
|
...VersionModule.providers(),
|
|
35338
|
-
...PREVIEW_FEATURE_PROVIDERS
|
|
35686
|
+
...PREVIEW_FEATURE_PROVIDERS,
|
|
35687
|
+
...QUERY_PARAM_HANDLER_PROVIDERS
|
|
35339
35688
|
]
|
|
35340
35689
|
};
|
|
35341
35690
|
}
|
|
@@ -36259,27 +36608,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
36259
36608
|
class RealtimeMessage {
|
|
36260
36609
|
}
|
|
36261
36610
|
|
|
36262
|
-
class PluginLoadedPipe {
|
|
36263
|
-
constructor(pluginsResolve) {
|
|
36264
|
-
this.pluginsResolve = pluginsResolve;
|
|
36265
|
-
}
|
|
36266
|
-
transform(pluginName) {
|
|
36267
|
-
if (!pluginName) {
|
|
36268
|
-
return of(false);
|
|
36269
|
-
}
|
|
36270
|
-
return this.pluginsResolve.loadedPluginNames$.pipe(map$2(pluginNames => pluginNames.includes(pluginName)), distinctUntilChanged$1());
|
|
36271
|
-
}
|
|
36272
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PluginLoadedPipe, deps: [{ token: PluginsResolveService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
36273
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: PluginLoadedPipe, isStandalone: true, name: "c8yPluginLoaded" }); }
|
|
36274
|
-
}
|
|
36275
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PluginLoadedPipe, decorators: [{
|
|
36276
|
-
type: Pipe,
|
|
36277
|
-
args: [{
|
|
36278
|
-
name: 'c8yPluginLoaded',
|
|
36279
|
-
standalone: true
|
|
36280
|
-
}]
|
|
36281
|
-
}], ctorParameters: () => [{ type: PluginsResolveService }] });
|
|
36282
|
-
|
|
36283
36611
|
/**
|
|
36284
36612
|
* AssetTypesService is being used to manage a cache of all existing asset types.
|
|
36285
36613
|
* This service is injected in the AssetOverviewNavigationFactory class, which will trigger
|
|
@@ -36497,5 +36825,5 @@ function colorValidator(allowedModes) {
|
|
|
36497
36825
|
* Generated bundle index. Do not edit.
|
|
36498
36826
|
*/
|
|
36499
36827
|
|
|
36500
|
-
export { ACTIONS_STEPPER, AGGREGATIONS, AGGREGATION_ICONS, AGGREGATION_LABELS, AGGREGATION_LIMITS, AGGREGATION_TEXTS, AGGREGATION_VALUES, AGGREGATION_VALUES_ARR, ARRAY_VALIDATION_PREFIX, ASSET_PATH, AbstractConfigurationStrategy, ActionBarComponent, ActionBarItemComponent, ActionBarModule, ActionBarService, ActionComponent, ActionControlsExtensionService, ActionModule, ActionOutletComponent, ActionService, AggregationPickerComponent, AggregationService, AlarmRealtimeService, AlarmWithChildrenRealtimeService, AlertComponent, AlertDetailsComponent, AlertModule, AlertOutletBase, AlertOutletComponent, AlertService, AlertTextComponent, AppHrefPipe, AppIconComponent, AppStateService, AppSwitcherComponent, AppSwitcherInlineComponent, AppSwitcherService, ApplicationModule, ApplicationPluginStatus, AssetLinkPipe, AssetPropertyService, AssetTypesRealtimeService, AssetTypesService, AuditLogComponent, AuditLogModule, AuthenticationModule, BackendVersionFactory, BaseColumn, BaseFilteringFormRendererComponent, BooleanFilterMapper, BootstrapComponent, BootstrapModule, BottomDrawerComponent, BottomDrawerRef, BottomDrawerService, BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbModule, BreadcrumbOutletComponent, BreadcrumbService, BuiltInActionType, BytesPipe, C8yComponentOutlet, C8yJSONSchema, C8yStepper, C8yStepperButtons, C8yStepperIcon, C8yStepperProgress, C8yTranslateDirective, C8yTranslateModule, C8yTranslatePipe, C8yValidators, CUSTOM, CachedLocaleDictionaryService, CellRendererComponent, CellRendererContext, CellRendererDefDirective, ChangeIconComponent, ClipboardModule, ClipboardService, ColorInputComponent, ColorService, ColumnDirective, CommonModule, ConditionalTabsOutletComponent, ConfigureCustomColumnComponent, ConfirmModalComponent, ContextRouteComponent, ContextRouteGuard, ContextRouteService, CookieBannerComponent, CopyDashboardDisabledReason, CoreModule, CoreSearchModule, CountdownIntervalComponent, CountdownIntervalModule, CurrentPasswordModalComponent, CustomColumn, DATA_GRID_CONFIGURATION_CONTEXT, DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER, DATA_GRID_CONFIGURATION_STRATEGY, DEFAULT_INTERVAL_STATE, DEFAULT_INTERVAL_VALUE, DEFAULT_INTERVAL_VALUES, DRAWER_ANIMATION_TIME, DashboardChildActionComponent, DashboardChildChange, DashboardChildComponent, DashboardChildTitleComponent, DashboardComponent, DashboardModule, DataGridComponent, DataGridModule, DataGridService, DatapointLibraryValidationErrors, DateContextQueryParamNames, DateFilterMapper, DateFormatService, DatePickerComponent, DatePickerModule, DatePipe, DateTimePickerComponent, DateTimePickerModule, DefaultValidationDirective, DeviceBootstrapRealtimeService, DeviceService, DeviceStatusComponent, DeviceStatusModule, DismissAlertStrategy, DocsModule, DocsService, DrawerModule, DrawerOutletComponent, DrawerService, DropAreaComponent, DropAreaModule, DropdownDirectionDirective, DynamicBulkDetailsResolver, DynamicBulkIIdentifiedResolver, DynamicComponentAlert, DynamicComponentAlertAggregator, DynamicComponentAlertsComponent, DynamicComponentComponent, DynamicComponentErrorStrategy, DynamicComponentModule, DynamicComponentService, DynamicDatapointsResolver, DynamicFormsModule, DynamicManagedObjectResolver, DynamicResolverService, ES_MAX_TIME_MILLISECONDS, EmailsValidatorDirective, EmptyComponent, EmptyStateComponent, EmptyStateContextDirective, EventRealtimeService, ExpandableRowDirective, ExtensionPointForPlugins, ExtensionPointWithoutStateForPlugins, ExtractArrayValidationErrorsPipe, FeatureCacheService, FilePickerComponent, FilePickerFormControlComponent, FilePickerFormControlModule, FilePickerModule, FilesService, FilterInputComponent, FilterMapperFactory, FilterMapperModule, FilterMapperPipe, FilterMapperService, FilterNonArrayValidationErrorsPipe, FilteringActionType, FilteringFormRendererComponent, FilteringFormRendererContext, FilteringFormRendererDefDirective, ForOfDirective, FormGroupComponent, FormsModule, GENERIC_FILE_TYPE, GLOBAL_CONTEXT_AUTO_REFRESH, GainsightService, GenericFileIconPipe, GeoService, GetGroupIconPipe, GlobalConfigService, GridDataSource, GroupFragment, GroupService, GroupedFilterChips, GuideDocsComponent, GuideHrefDirective, HOOK_ACTION, HOOK_ACTION_BAR, HOOK_BREADCRUMB, HOOK_COMPONENTS, HOOK_CURRENT_APPLICATION, HOOK_CURRENT_TENANT, HOOK_CURRENT_USER, HOOK_DOCS, HOOK_DYNAMIC_PROVIDER_CONFIG, HOOK_NAVIGATOR_NODES, HOOK_OPTIONS, HOOK_PATTERN_MESSAGES, HOOK_PLUGIN, HOOK_PREVIEW, HOOK_ROUTE, HOOK_SEARCH, HOOK_STEPPER, HOOK_TABS, HOOK_VERSION, HOOK_WIZARD, HeaderBarComponent, HeaderCellRendererDefDirective, HeaderModule, HeaderService, HelpComponent, HelpModule, HighlightComponent, HookProviderTypes, HumanizeAppNamePipe, HumanizePipe, HumanizeValidationMessagePipe, I18nModule, INTERVAL_OPTIONS, IconDirective, IfAllowedDirective, InjectionType, InputGroupListComponent, InputGroupListContainerDirective, InterAppService, IntervalBasedReload, InventorySearchService, IpRangeInputListComponent, JsonValidationPrettifierDirective, LANGUAGES, LAST_DAY, LAST_HOUR, LAST_MINUTE, LAST_MONTH, LAST_WEEK, LOCALE_PATH, LegacyGridConfigMapperService, LegendFieldWrapper, ListDisplaySwitchComponent, ListDisplaySwitchModule, ListGroupComponent, ListGroupModule, ListItemActionComponent, ListItemBodyComponent, ListItemCheckboxComponent, ListItemCollapseComponent, ListItemComponent, ListItemDragHandleComponent, ListItemFooterComponent, ListItemIconComponent, ListItemRadioComponent, ListItemTimelineComponent, LoadMoreComponent, LoadingComponent, MAX_PAGE_SIZE, MESSAGES_CORE_I18N, ManagedObjectRealtimeService, ManagedObjectType, MapFunctionPipe, MarkdownToHtmlPipe, MaxValidationDirective, MeasurementRealtimeService, MessageBannerService, MessageDirective, MessagesComponent, MinValidationDirective, MissingTranslationCustomHandler, MoNamePipe, ModalComponent, ModalModule, ModalSelectionMode, ModalService, NEEDED_ROLE_FOR_SETUP, NEW_DASHBOARD_ROUTER_STATE_PROP, NULL_VALUE_PLACEHOLDER, NUMBER_FORMAT_REGEXP, NameTransformPipe, NavigatorBottomModule, NavigatorIconComponent, NavigatorModule, NavigatorNode, NavigatorNodeComponent, NavigatorNodeRoot, NavigatorOutletComponent, NavigatorService, NavigatorTopModule, NewPasswordComponent, NumberPipe, OperationBulkRealtimeService, OperationRealtimeService, OperationResultComponent, OptionsService, OutletDirective, PREVIEW_FEATURE_PROVIDERS, PRODUCT_EXPERIENCE_EVENT_SOURCE, PX_ACTIONS, PX_EVENT_NAME, PackageType, PasswordCheckListComponent, PasswordConfirm, PasswordConfirmModalComponent, PasswordInputComponent, PasswordService, PasswordStrengthCheckerService, PasswordStrengthComponent, PasswordStrengthService, PatternMessagesService, Permissions, PhoneValidationDirective, PlatformDetailsService, PluginLoadedPipe, PluginsExportScopes, PluginsLoaderService, PluginsModule, PluginsResolveService, PluginsService, PopoverConfirmComponent, PreviewFeatureButtonComponent, PreviewFeatureShowNotification, PreviewService, ProductExperienceDirective, ProductExperienceModule, ProgressBarComponent, PropertiesListComponent, PropertiesListModule, PropertyValueTransformService, ProviderConfigurationComponent, ProviderConfigurationModule, ProviderConfigurationNodeFactory, ProviderConfigurationRouteFactory, ProviderConfigurationService, ProviderDefinitionsService, PushStatus, PushStatusLabels, QuickLinkComponent, QuickLinkModule, RESOLVING_COMPONENT_WAIT_TIME, RadioFilterMapper, RangeComponent, RangeDirective, RangeDisplayComponent, RangeDisplayModule, RealtimeButtonComponent, RealtimeControlComponent, RealtimeMessage, RealtimeModule, RealtimeService, RealtimeSubjectService, RelativeTimePipe, RequiredInputPlaceholderDirective, ResolverServerError, RouterModule, RouterService, RouterTabsResolver, SETUP_FINISHED_STEP_ID, SHOW_BETA_PREVIEW, SearchComponent, SearchFilters, SearchInputComponent, SearchOutletComponent, SearchResultEmptyComponent, SearchService, SelectComponent, SelectFilterMapper, SelectItemDirective, SelectKeyboardService, SelectLegacyComponent, SelectModalComponent, SelectModalFilterPipe, SelectModalModule, SelectModule, SelectedItemsComponent, SelectedItemsDirective, SendStatus, SendStatusLabels, ServiceRegistry, SetupCompletedComponent, SetupComponent, SetupModule, SetupService, SetupState, SetupStepperFactory, ShortenUserNamePipe, ShouldShowMoPipe, ShowIfFilterPipe, SimpleJsonPathValidatorDirective, SimplifiedAuthService, SkipLinkDirective, StandalonePluginInjector, StateService, Status, StepperModule, StepperOutletComponent, StepperService, Steppers, StringFilterMapper, StringifyObjectPipe, SupportedApps, TabComponent, TabsModule, TabsOutletComponent, TabsService, TabsetAriaDirective, TenantUiService, TextAreaRowHeightDirective, TextareaAutoresizeDirective, ThemeSwitcherService, TimeIntervalComponent, TimePickerComponent, TimePickerModule, TitleComponent, TitleOutletComponent, TotpChallengeComponent, TotpSetupComponent, TranslateParserCustom, TranslateService, TranslationLoaderService, TreeNodeCellRendererComponent, TreeNodeColumn, TreeNodeHeaderCellRendererComponent, TypeaheadComponent, TypeaheadFilterMapper, UiSettingsComponent, UiSettingsModule, UniqueInCollectionByPathValidationDirective, UserEditComponent, UserEditModalComponent, UserEngagementsService, UserMenuItemComponent, UserMenuOutletComponent, UserMenuService, UserModule, UserNameInitialsPipe, UserPreferencesConfigurationStrategy, UserPreferencesService, UserPreferencesStorageInventory, UserPreferencesStorageLocal, UserTotpRevokeComponent, UserTotpSetupComponent, VERSION_MODULE_CONFIG, ValidationPattern, VersionListComponent, VersionModule, VersionService, ViewContext, ViewContextServices, VirtualScrollWindowDirective, VirtualScrollWindowStrategy, VirtualScrollerWrapperComponent, VisibleControlsPipe, WIDGET_TYPE_VALUES, WebSDKVersionFactory, WidgetGlobalAutoRefreshService, WidgetTimeContextActionBarPriority, WidgetTimeContextComponent, WidgetTimeContextDateRangeService, WidgetsDashboardComponent, WizardBodyComponent, WizardComponent, WizardFooterComponent, WizardHeaderComponent, WizardModalService, WizardModule, WizardOutletComponent, WizardService, ZipService, _virtualScrollWindowStrategyFactory, alertOnError, allEntriesAreEqual, asyncValidateArrayElements, colorValidator, deviceAvailabilityIconMap, extraRoutes, fromFactories, fromTrigger, fromTriggerOnce, getActivatedRoute, getAngularLocalesLanguageString, getBasicInputArrayFormFieldConfig, getDictionaryWithTrimmedKeys, getInjectedHooks, globalAutoRefreshLoading, hookAction, hookActionBar, hookBreadcrumb, hookComponent, hookCurrentApplication, hookCurrentTenant, hookCurrentUser, hookDataGridActionControls, hookDocs, hookDrawer, hookDynamicProviderConfig, hookFilterMapper, hookGeneric, hookNavigator, hookOptions, hookPatternMessages, hookPlugin, hookPreview, hookRoute, hookSearch, hookService, hookStepper, hookTab, hookUserMenu, hookVersion, hookWidget, hookWizard, initializeServices, internalApps, isEagerDynamicComponents, isExtensionFactory, isLazyDynamicComponents, isPromise, languagesFactory, loadLocale, localeId, localePathFactory, memoize, minColumnGridTrackSize, operationStatusClasses, operationStatusIcons, provideBootstrapMetadata, ratiosByColumnTypes, removeDuplicatesIds, resolveInjectedFactories, retryWithDelay, simpleJsonPathValidator, sortByPriority, stateToFactory, statusAlert, statusClasses, statusIcons, throttle, toObservable, toObservableOfArrays, tooltips, trimTranslationKey, uniqueInCollectionByPathValidator, validateArrayElements, validateInternationalPhoneNumber, viewContextRoutes, wrapperLegendFieldConfig };
|
|
36828
|
+
export { ACTIONS_STEPPER, AGGREGATIONS, AGGREGATION_ICONS, AGGREGATION_LABELS, AGGREGATION_LIMITS, AGGREGATION_TEXTS, AGGREGATION_VALUES, AGGREGATION_VALUES_ARR, ARRAY_VALIDATION_PREFIX, ASSET_PATH, AbstractConfigurationStrategy, ActionBarComponent, ActionBarItemComponent, ActionBarModule, ActionBarService, ActionComponent, ActionControlsExtensionService, ActionModule, ActionOutletComponent, ActionService, AggregationPickerComponent, AggregationService, AlarmRealtimeService, AlarmWithChildrenRealtimeService, AlertComponent, AlertDetailsComponent, AlertModule, AlertOutletBase, AlertOutletComponent, AlertService, AlertTextComponent, AppHrefPipe, AppIconComponent, AppStateService, AppSwitcherComponent, AppSwitcherInlineComponent, AppSwitcherService, ApplicationModule, ApplicationPluginStatus, AssetLinkPipe, AssetPropertyService, AssetTypesRealtimeService, AssetTypesService, AuditLogComponent, AuditLogModule, AuthenticationModule, BackendVersionFactory, BaseColumn, BaseFilteringFormRendererComponent, BooleanFilterMapper, BootstrapComponent, BootstrapModule, BottomDrawerComponent, BottomDrawerRef, BottomDrawerService, BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbModule, BreadcrumbOutletComponent, BreadcrumbService, BuiltInActionType, BytesPipe, C8yComponentOutlet, C8yJSONSchema, C8yStepper, C8yStepperButtons, C8yStepperIcon, C8yStepperProgress, C8yTranslateDirective, C8yTranslateModule, C8yTranslatePipe, C8yValidators, CUSTOM, CachedLocaleDictionaryService, CellRendererComponent, CellRendererContext, CellRendererDefDirective, ChangeIconComponent, ClipboardModule, ClipboardService, ColorInputComponent, ColorService, ColumnDirective, CommonModule, ConditionalTabsOutletComponent, ConfigureCustomColumnComponent, ConfirmModalComponent, ContextRouteComponent, ContextRouteGuard, ContextRouteService, CookieBannerComponent, CopyDashboardDisabledReason, CoreModule, CoreSearchModule, CountdownIntervalComponent, CountdownIntervalModule, CurrentPasswordModalComponent, CustomColumn, DATA_GRID_CONFIGURATION_CONTEXT, DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER, DATA_GRID_CONFIGURATION_STRATEGY, DEFAULT_INTERVAL_STATE, DEFAULT_INTERVAL_VALUE, DEFAULT_INTERVAL_VALUES, DRAWER_ANIMATION_TIME, DashboardChildActionComponent, DashboardChildChange, DashboardChildComponent, DashboardChildTitleComponent, DashboardComponent, DashboardModule, DataGridComponent, DataGridModule, DataGridService, DatapointLibraryValidationErrors, DateContextQueryParamNames, DateFilterMapper, DateFormatService, DatePickerComponent, DatePickerModule, DatePipe, DateTimePickerComponent, DateTimePickerModule, DefaultValidationDirective, DeviceBootstrapRealtimeService, DeviceService, DeviceStatusComponent, DeviceStatusModule, DismissAlertStrategy, DocsModule, DocsService, DrawerModule, DrawerOutletComponent, DrawerService, DropAreaComponent, DropAreaModule, DropdownDirectionDirective, DynamicBulkDetailsResolver, DynamicBulkIIdentifiedResolver, DynamicComponentAlert, DynamicComponentAlertAggregator, DynamicComponentAlertsComponent, DynamicComponentComponent, DynamicComponentErrorStrategy, DynamicComponentModule, DynamicComponentService, DynamicDatapointsResolver, DynamicFormsModule, DynamicManagedObjectResolver, DynamicResolverService, ES_MAX_TIME_MILLISECONDS, EmailsValidatorDirective, EmptyComponent, EmptyStateComponent, EmptyStateContextDirective, EventRealtimeService, ExpandableRowDirective, ExtensionPointForPlugins, ExtensionPointWithoutStateForPlugins, ExtractArrayValidationErrorsPipe, FeatureCacheService, FilePickerComponent, FilePickerFormControlComponent, FilePickerFormControlModule, FilePickerModule, FilesService, FilterInputComponent, FilterMapperFactory, FilterMapperModule, FilterMapperPipe, FilterMapperService, FilterNonArrayValidationErrorsPipe, FilteringActionType, FilteringFormRendererComponent, FilteringFormRendererContext, FilteringFormRendererDefDirective, ForOfDirective, FormGroupComponent, FormsModule, GENERIC_FILE_TYPE, GLOBAL_CONTEXT_AUTO_REFRESH, GainsightService, GenericFileIconPipe, GeoService, GetGroupIconPipe, GlobalConfigService, GridDataSource, GroupFragment, GroupService, GroupedFilterChips, GuideDocsComponent, GuideHrefDirective, HOOK_ACTION, HOOK_ACTION_BAR, HOOK_BREADCRUMB, HOOK_COMPONENTS, HOOK_CURRENT_APPLICATION, HOOK_CURRENT_TENANT, HOOK_CURRENT_USER, HOOK_DOCS, HOOK_DYNAMIC_PROVIDER_CONFIG, HOOK_NAVIGATOR_NODES, HOOK_OPTIONS, HOOK_PATTERN_MESSAGES, HOOK_PLUGIN, HOOK_PREVIEW, HOOK_QUERY_PARAM, HOOK_QUERY_PARAM_BOTTOM_DRAWER, HOOK_QUERY_PARAM_MODAL, HOOK_ROUTE, HOOK_SEARCH, HOOK_STEPPER, HOOK_TABS, HOOK_VERSION, HOOK_WIZARD, HeaderBarComponent, HeaderCellRendererDefDirective, HeaderModule, HeaderService, HelpComponent, HelpModule, HighlightComponent, HookProviderTypes, HumanizeAppNamePipe, HumanizePipe, HumanizeValidationMessagePipe, I18nModule, INTERVAL_OPTIONS, IconDirective, IfAllowedDirective, InjectionType, InputGroupListComponent, InputGroupListContainerDirective, InterAppService, IntervalBasedReload, InventorySearchService, IpRangeInputListComponent, JsonValidationPrettifierDirective, LANGUAGES, LAST_DAY, LAST_HOUR, LAST_MINUTE, LAST_MONTH, LAST_WEEK, LOCALE_PATH, LegacyGridConfigMapperService, LegendFieldWrapper, ListDisplaySwitchComponent, ListDisplaySwitchModule, ListGroupComponent, ListGroupModule, ListItemActionComponent, ListItemBodyComponent, ListItemCheckboxComponent, ListItemCollapseComponent, ListItemComponent, ListItemDragHandleComponent, ListItemFooterComponent, ListItemIconComponent, ListItemRadioComponent, ListItemTimelineComponent, LoadMoreComponent, LoadingComponent, MAX_PAGE_SIZE, MESSAGES_CORE_I18N, ManagedObjectRealtimeService, ManagedObjectType, MapFunctionPipe, MarkdownToHtmlPipe, MaxValidationDirective, MeasurementRealtimeService, MessageBannerService, MessageDirective, MessagesComponent, MinValidationDirective, MissingTranslationCustomHandler, MoNamePipe, ModalComponent, ModalModule, ModalSelectionMode, ModalService, NEEDED_ROLE_FOR_SETUP, NEW_DASHBOARD_ROUTER_STATE_PROP, NULL_VALUE_PLACEHOLDER, NUMBER_FORMAT_REGEXP, NameTransformPipe, NavigatorBottomModule, NavigatorIconComponent, NavigatorModule, NavigatorNode, NavigatorNodeComponent, NavigatorNodeRoot, NavigatorOutletComponent, NavigatorService, NavigatorTopModule, NewPasswordComponent, NumberPipe, OperationBulkRealtimeService, OperationRealtimeService, OperationResultComponent, OptionsService, OutletDirective, PREVIEW_FEATURE_PROVIDERS, PRODUCT_EXPERIENCE_EVENT_SOURCE, PX_ACTIONS, PX_EVENT_NAME, PackageType, PasswordCheckListComponent, PasswordConfirm, PasswordConfirmModalComponent, PasswordInputComponent, PasswordService, PasswordStrengthCheckerService, PasswordStrengthComponent, PasswordStrengthService, PatternMessagesService, Permissions, PhoneValidationDirective, PlatformDetailsService, PluginLoadedPipe, PluginsExportScopes, PluginsLoaderService, PluginsModule, PluginsResolveService, PluginsService, PopoverConfirmComponent, PreviewFeatureButtonComponent, PreviewFeatureShowNotification, PreviewService, ProductExperienceDirective, ProductExperienceModule, ProgressBarComponent, PropertiesListComponent, PropertiesListModule, PropertyValueTransformService, ProviderConfigurationComponent, ProviderConfigurationModule, ProviderConfigurationNodeFactory, ProviderConfigurationRouteFactory, ProviderConfigurationService, ProviderDefinitionsService, PushStatus, PushStatusLabels, QUERY_PARAM_HANDLER_PROVIDERS, QueryParamBottomDrawerFactory, QueryParamBottomDrawerStateService, QueryParamHandlerService, QueryParamModalFactory, QueryParamModalStateService, QuickLinkComponent, QuickLinkModule, RESOLVING_COMPONENT_WAIT_TIME, RadioFilterMapper, RangeComponent, RangeDirective, RangeDisplayComponent, RangeDisplayModule, RealtimeButtonComponent, RealtimeControlComponent, RealtimeMessage, RealtimeModule, RealtimeService, RealtimeSubjectService, RelativeTimePipe, RequiredInputPlaceholderDirective, ResolverServerError, RouterModule, RouterService, RouterTabsResolver, SETUP_FINISHED_STEP_ID, SHOW_PREVIEW_FEATURES, SearchComponent, SearchFilters, SearchInputComponent, SearchOutletComponent, SearchResultEmptyComponent, SearchService, SelectComponent, SelectFilterMapper, SelectItemDirective, SelectKeyboardService, SelectLegacyComponent, SelectModalComponent, SelectModalFilterPipe, SelectModalModule, SelectModule, SelectedItemsComponent, SelectedItemsDirective, SendStatus, SendStatusLabels, ServiceRegistry, SetupCompletedComponent, SetupComponent, SetupModule, SetupService, SetupState, SetupStepperFactory, ShortenUserNamePipe, ShouldShowMoPipe, ShowIfFilterPipe, SimpleJsonPathValidatorDirective, SimplifiedAuthService, SkipLinkDirective, StandalonePluginInjector, StateService, Status, StepperModule, StepperOutletComponent, StepperService, Steppers, StringFilterMapper, StringifyObjectPipe, SupportedApps, TabComponent, TabsModule, TabsOutletComponent, TabsService, TabsetAriaDirective, TenantUiService, TextAreaRowHeightDirective, TextareaAutoresizeDirective, ThemeSwitcherService, TimeIntervalComponent, TimePickerComponent, TimePickerModule, TitleComponent, TitleOutletComponent, TotpChallengeComponent, TotpSetupComponent, TranslateParserCustom, TranslateService, TranslationLoaderService, TreeNodeCellRendererComponent, TreeNodeColumn, TreeNodeHeaderCellRendererComponent, TypeaheadComponent, TypeaheadFilterMapper, UiSettingsComponent, UiSettingsModule, UniqueInCollectionByPathValidationDirective, UserEditComponent, UserEditModalComponent, UserEngagementsService, UserMenuItemComponent, UserMenuOutletComponent, UserMenuService, UserModule, UserNameInitialsPipe, UserPreferencesConfigurationStrategy, UserPreferencesService, UserPreferencesStorageInventory, UserPreferencesStorageLocal, UserTotpRevokeComponent, UserTotpSetupComponent, VERSION_MODULE_CONFIG, ValidationPattern, VersionListComponent, VersionModule, VersionService, ViewContext, ViewContextServices, VirtualScrollWindowDirective, VirtualScrollWindowStrategy, VirtualScrollerWrapperComponent, VisibleControlsPipe, WIDGET_TYPE_VALUES, WebSDKVersionFactory, WidgetGlobalAutoRefreshService, WidgetTimeContextActionBarPriority, WidgetTimeContextComponent, WidgetTimeContextDateRangeService, WidgetsDashboardComponent, WizardBodyComponent, WizardComponent, WizardFooterComponent, WizardHeaderComponent, WizardModalService, WizardModule, WizardOutletComponent, WizardService, ZipService, _virtualScrollWindowStrategyFactory, alertOnError, allEntriesAreEqual, asyncValidateArrayElements, colorValidator, deviceAvailabilityIconMap, extraRoutes, fromFactories, fromTrigger, fromTriggerOnce, getActivatedRoute, getAngularLocalesLanguageString, getBasicInputArrayFormFieldConfig, getDictionaryWithTrimmedKeys, getInjectedHooks, globalAutoRefreshLoading, hookAction, hookActionBar, hookBreadcrumb, hookComponent, hookCurrentApplication, hookCurrentTenant, hookCurrentUser, hookDataGridActionControls, hookDocs, hookDrawer, hookDynamicProviderConfig, hookFilterMapper, hookGeneric, hookNavigator, hookOptions, hookPatternMessages, hookPlugin, hookPreview, hookQueryParam, hookQueryParamBottomDrawer, hookQueryParamModal, hookRoute, hookSearch, hookService, hookStepper, hookTab, hookUserMenu, hookVersion, hookWidget, hookWizard, initializeServices, internalApps, isEagerDynamicComponents, isExtensionFactory, isLazyDynamicComponents, isPromise, languagesFactory, loadLocale, localeId, localePathFactory, memoize, minColumnGridTrackSize, operationStatusClasses, operationStatusIcons, provideBootstrapMetadata, ratiosByColumnTypes, removeDuplicatesIds, resolveInjectedFactories, retryWithDelay, simpleJsonPathValidator, sortByPriority, stateToFactory, statusAlert, statusClasses, statusIcons, throttle, toObservable, toObservableOfArrays, tooltips, trimTranslationKey, uniqueInCollectionByPathValidator, validateArrayElements, validateInternationalPhoneNumber, viewContextRoutes, wrapperLegendFieldConfig };
|
|
36501
36829
|
//# sourceMappingURL=c8y-ngx-components.mjs.map
|