UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

125 lines (119 loc) 26.4 kB
import * as i0 from '@angular/core'; import { EventEmitter, Output, Input, Component, ViewChild, NgModule } from '@angular/core'; import { AuditRecordType } from '@c8y/client'; import { gettext } from '@c8y/ngx-components/gettext'; import { C8yTranslateDirective, IconDirective, C8yTranslatePipe, DatePipe, AuditLogComponent } from '@c8y/ngx-components'; import { NgIf, NgPlural, NgPluralCase, JsonPipe, NgFor, NgClass, NgTemplateOutlet } from '@angular/common'; import { PopoverDirective } from 'ngx-bootstrap/popover'; import { SingleOperationsListComponent } from '@c8y/ngx-components/operations/bulk-single-operations-list'; class OperationListItemDetailsComponent { constructor() { this.showFailedOperation = new EventEmitter(); } scrollToRetriedFromOperation(failedOperationId) { this.showFailedOperation.emit(failedOperationId); } openBulkOperationDetails(bulkOperationId) { this.bulkOperationModalDetailsService.openDetails(bulkOperationId); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OperationListItemDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: OperationListItemDetailsComponent, isStandalone: true, selector: "c8y-operation-li-details", inputs: { operation: "operation", bulkOperationModalDetailsService: "bulkOperationModalDetailsService" }, outputs: { showFailedOperation: "showFailedOperation" }, ngImport: i0, template: "<div class=\"row d-flex-md fit-h\">\n <div class=\"col-md-4 m-b-auto\">\n <div\n class=\"legend form-block\"\n translate\n >\n Details\n </div>\n <ul class=\"list-unstyled small\">\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngIf=\"operation.startDate\"\n >\n <label\n class=\"small m-0\"\n translate\n >\n Start date\n </label>\n <span class=\"m-l-auto\">{{ operation.startDate | c8yDate }}</span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngIf=\"operation.bulkOperationId\"\n >\n <label\n class=\"small m-b-auto\"\n translate\n >\n Bulk operation\n </label>\n <div class=\"m-l-auto text-right text-truncate\">\n <a\n class=\"interact\"\n (click)=\"openBulkOperationDetails(operation.bulkOperationId)\"\n >\n {{ 'See details' | translate }}\n </a>\n </div>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngIf=\"operation.creationRamp\"\n >\n <label class=\"small m-0\">\n {{ 'Delay' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ 'Delay before sending the operation to the next device.' | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <span\n class=\"m-l-auto\"\n [ngPlural]=\"operation.creationRamp\"\n >\n <ng-template ngPluralCase=\"=1\">\n {{ operation.creationRamp }}\n <span translate>second</span>\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n {{ operation.creationRamp }}\n <span translate>seconds</span>\n </ng-template>\n </span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom\">\n <label\n class=\"small m-0\"\n translate\n >\n Status\n </label>\n <span class=\"m-l-auto text-uppercase\">\n @if (operation.operationPrototype) {\n {{ operation.generalStatus.toString() | translate }}\n } @else if (operation.status) {\n {{ operation.status?.toString() | translate }}\n }\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngIf=\"operation.failureReason\"\n >\n <label\n class=\"small m-0\"\n translate\n >\n Failure reason\n </label>\n <span\n class=\"inner-scroll p-l-16 m-b-0 m-l-auto text-truncate-wrap\"\n title=\"{{ operation.failureReason | translate }}\"\n >\n {{ operation.failureReason | translate }}\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngIf=\"operation.result || operation.progress\"\n >\n <label\n class=\"small m-b-auto\"\n translate\n >\n Result\n </label>\n <div\n class=\"d-flex flex-grow m-l-auto j-c-end\"\n *ngIf=\"operation.progress; else singleOpResult\"\n >\n <div\n class=\"icon-flex m-l-auto m-r-8\"\n *ngIf=\"operation.progress.successful > 0\"\n >\n <i\n class=\"text-success m-r-4\"\n c8yIcon=\"check-circle\"\n ></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{\n bulkOperationsCountSuccessful: operation.progress.successful\n }\"\n >\n {{ bulkOperationsCountSuccessful }} successful\n </span>\n </div>\n <div\n class=\"icon-flex m-l-auto m-r-8\"\n *ngIf=\"operation.progress.failed > 0\"\n >\n <i\n class=\"text-danger m-r-4\"\n c8yIcon=\"warning\"\n ></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountFailed: operation.progress.failed }\"\n >\n {{ bulkOperationsCountFailed }} failed\n </span>\n </div>\n <div\n class=\"icon-flex m-l-auto m-r-8\"\n *ngIf=\"operation.progress.executing > 0\"\n >\n <i\n class=\"m-r-4 text-info\"\n c8yIcon=\"refresh\"\n ></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountExecuting: operation.progress.executing }\"\n >\n {{ bulkOperationsCountExecuting }} executing\n </span>\n </div>\n <div\n class=\"icon-flex m-l-auto m-r-8\"\n *ngIf=\"operation.progress.pending > 0\"\n >\n <i\n class=\"m-r-4 text-info\"\n c8yIcon=\"clock-o\"\n ></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountPending: operation.progress.pending }\"\n >\n {{ bulkOperationsCountPending }} pending\n </span>\n </div>\n </div>\n <ng-template #singleOpResult>\n <span\n class=\"inner-scroll p-l-16 m-b-0 m-l-auto text-truncate-wrap\"\n title=\"{{ operation.result }}\"\n >\n {{ operation.result }}\n </span>\n </ng-template>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngIf=\"operation.failedParentId\"\n >\n <label\n class=\"small m-0\"\n translate\n >\n Retried from\n </label>\n <span class=\"m-l-auto\">\n <button\n class=\"btn btn-default btn-xs\"\n title=\"{{ 'Scroll to parent operation.' | translate }}\"\n type=\"button\"\n (click)=\"scrollToRetriedFromOperation(operation.failedParentId)\"\n >\n {{ operation.failedParentId }}\n </button>\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngIf=\"operation.note || operation.description\"\n >\n <label\n class=\"small m-b-auto\"\n translate\n >\n Description\n </label>\n <span\n class=\"inner-scroll p-l-16 m-b-0 m-l-auto text-truncate-wrap\"\n title=\"{{ operation.note ? operation.note : (operation.description | translate) }}\"\n >\n {{ operation.note ? operation.note : (operation.description | translate) }}\n </span>\n </li>\n </ul>\n </div>\n <div class=\"col-md-8 fit-h d-flex d-col\">\n <div\n class=\"legend form-block\"\n translate\n >\n Operation\n </div>\n <pre class=\"inner-scroll p-8 m-b-0 text-pre-normal\">\n <code>{{ operation.operationPrototype || operation | json }}</code>\n </pre>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: NgPlural, selector: "[ngPlural]", inputs: ["ngPlural"] }, { kind: "directive", type: NgPluralCase, selector: "[ngPluralCase]" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OperationListItemDetailsComponent, decorators: [{ type: Component, args: [{ selector: 'c8y-operation-li-details', imports: [ C8yTranslateDirective, NgIf, PopoverDirective, NgPlural, NgPluralCase, IconDirective, C8yTranslatePipe, JsonPipe, DatePipe ], template: "<div class=\"row d-flex-md fit-h\">\n <div class=\"col-md-4 m-b-auto\">\n <div\n class=\"legend form-block\"\n translate\n >\n Details\n </div>\n <ul class=\"list-unstyled small\">\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngIf=\"operation.startDate\"\n >\n <label\n class=\"small m-0\"\n translate\n >\n Start date\n </label>\n <span class=\"m-l-auto\">{{ operation.startDate | c8yDate }}</span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngIf=\"operation.bulkOperationId\"\n >\n <label\n class=\"small m-b-auto\"\n translate\n >\n Bulk operation\n </label>\n <div class=\"m-l-auto text-right text-truncate\">\n <a\n class=\"interact\"\n (click)=\"openBulkOperationDetails(operation.bulkOperationId)\"\n >\n {{ 'See details' | translate }}\n </a>\n </div>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngIf=\"operation.creationRamp\"\n >\n <label class=\"small m-0\">\n {{ 'Delay' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ 'Delay before sending the operation to the next device.' | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <span\n class=\"m-l-auto\"\n [ngPlural]=\"operation.creationRamp\"\n >\n <ng-template ngPluralCase=\"=1\">\n {{ operation.creationRamp }}\n <span translate>second</span>\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n {{ operation.creationRamp }}\n <span translate>seconds</span>\n </ng-template>\n </span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom\">\n <label\n class=\"small m-0\"\n translate\n >\n Status\n </label>\n <span class=\"m-l-auto text-uppercase\">\n @if (operation.operationPrototype) {\n {{ operation.generalStatus.toString() | translate }}\n } @else if (operation.status) {\n {{ operation.status?.toString() | translate }}\n }\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngIf=\"operation.failureReason\"\n >\n <label\n class=\"small m-0\"\n translate\n >\n Failure reason\n </label>\n <span\n class=\"inner-scroll p-l-16 m-b-0 m-l-auto text-truncate-wrap\"\n title=\"{{ operation.failureReason | translate }}\"\n >\n {{ operation.failureReason | translate }}\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngIf=\"operation.result || operation.progress\"\n >\n <label\n class=\"small m-b-auto\"\n translate\n >\n Result\n </label>\n <div\n class=\"d-flex flex-grow m-l-auto j-c-end\"\n *ngIf=\"operation.progress; else singleOpResult\"\n >\n <div\n class=\"icon-flex m-l-auto m-r-8\"\n *ngIf=\"operation.progress.successful > 0\"\n >\n <i\n class=\"text-success m-r-4\"\n c8yIcon=\"check-circle\"\n ></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{\n bulkOperationsCountSuccessful: operation.progress.successful\n }\"\n >\n {{ bulkOperationsCountSuccessful }} successful\n </span>\n </div>\n <div\n class=\"icon-flex m-l-auto m-r-8\"\n *ngIf=\"operation.progress.failed > 0\"\n >\n <i\n class=\"text-danger m-r-4\"\n c8yIcon=\"warning\"\n ></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountFailed: operation.progress.failed }\"\n >\n {{ bulkOperationsCountFailed }} failed\n </span>\n </div>\n <div\n class=\"icon-flex m-l-auto m-r-8\"\n *ngIf=\"operation.progress.executing > 0\"\n >\n <i\n class=\"m-r-4 text-info\"\n c8yIcon=\"refresh\"\n ></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountExecuting: operation.progress.executing }\"\n >\n {{ bulkOperationsCountExecuting }} executing\n </span>\n </div>\n <div\n class=\"icon-flex m-l-auto m-r-8\"\n *ngIf=\"operation.progress.pending > 0\"\n >\n <i\n class=\"m-r-4 text-info\"\n c8yIcon=\"clock-o\"\n ></i>\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ bulkOperationsCountPending: operation.progress.pending }\"\n >\n {{ bulkOperationsCountPending }} pending\n </span>\n </div>\n </div>\n <ng-template #singleOpResult>\n <span\n class=\"inner-scroll p-l-16 m-b-0 m-l-auto text-truncate-wrap\"\n title=\"{{ operation.result }}\"\n >\n {{ operation.result }}\n </span>\n </ng-template>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngIf=\"operation.failedParentId\"\n >\n <label\n class=\"small m-0\"\n translate\n >\n Retried from\n </label>\n <span class=\"m-l-auto\">\n <button\n class=\"btn btn-default btn-xs\"\n title=\"{{ 'Scroll to parent operation.' | translate }}\"\n type=\"button\"\n (click)=\"scrollToRetriedFromOperation(operation.failedParentId)\"\n >\n {{ operation.failedParentId }}\n </button>\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngIf=\"operation.note || operation.description\"\n >\n <label\n class=\"small m-b-auto\"\n translate\n >\n Description\n </label>\n <span\n class=\"inner-scroll p-l-16 m-b-0 m-l-auto text-truncate-wrap\"\n title=\"{{ operation.note ? operation.note : (operation.description | translate) }}\"\n >\n {{ operation.note ? operation.note : (operation.description | translate) }}\n </span>\n </li>\n </ul>\n </div>\n <div class=\"col-md-8 fit-h d-flex d-col\">\n <div\n class=\"legend form-block\"\n translate\n >\n Operation\n </div>\n <pre class=\"inner-scroll p-8 m-b-0 text-pre-normal\">\n <code>{{ operation.operationPrototype || operation | json }}</code>\n </pre>\n </div>\n</div>\n" }] }], propDecorators: { operation: [{ type: Input }], bulkOperationModalDetailsService: [{ type: Input }], showFailedOperation: [{ type: Output }] } }); class OperationDetailsTabsComponent { constructor() { this.AuditRecordType = AuditRecordType; this.readOnly = false; this.onRetryFailedOperations = new EventEmitter(); this.showFailedOperation = new EventEmitter(); this.tabs = []; } ngOnInit() { this.template = this.detailsTemplate; this.tabs = [ { label: gettext('Details'), path: null, icon: 'asterisk', template: this.detailsTemplate }, { label: gettext('History of changes'), path: null, icon: 'archive', template: this.auditTemplate } ]; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OperationDetailsTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: OperationDetailsTabsComponent, isStandalone: true, selector: "c8y-operation-details-tabs", inputs: { operation: "operation", readOnly: "readOnly", bulkOperationModalDetailsService: "bulkOperationModalDetailsService" }, outputs: { onRetryFailedOperations: "onRetryFailedOperations", showFailedOperation: "showFailedOperation" }, viewQueries: [{ propertyName: "detailsTemplate", first: true, predicate: ["details"], descendants: true, static: true }, { propertyName: "auditTemplate", first: true, predicate: ["audit"], descendants: true, static: true }], ngImport: i0, template: "<div\n class=\"tabContainer\"\n #container\n>\n <ul class=\"nav nav-tabs nav-tabsc8y\">\n <li\n [ngClass]=\"{ active: tab.template === template }\"\n *ngFor=\"let tab of tabs\"\n >\n <button\n class=\"btn\"\n [title]=\"tab.label | translate\"\n (click)=\"template = tab.template\"\n >\n <i [c8yIcon]=\"tab.icon\"></i>\n <span class=\"txt\">{{ tab.label | translate }}</span>\n </button>\n </li>\n </ul>\n</div>\n\n<ng-container *ngTemplateOutlet=\"template\"></ng-container>\n\n<ng-template #details>\n <c8y-operation-li-details\n [operation]=\"operation\"\n (showFailedOperation)=\"showFailedOperation.emit($event)\"\n [bulkOperationModalDetailsService]=\"bulkOperationModalDetailsService\"\n ></c8y-operation-li-details>\n</ng-template>\n\n<ng-template #audit>\n <c8y-audit-log\n [source]=\"operation.id\"\n [type]=\"\n !!operation.operationPrototype ? AuditRecordType.BULK_OPERATION : AuditRecordType.OPERATION\n \"\n ></c8y-audit-log>\n</ng-template>\n\n<c8y-single-operations-list\n class=\"d-flex d-col\"\n *ngIf=\"operation.operationPrototype\"\n [bulkOperation]=\"operation\"\n [readOnly]=\"readOnly\"\n (onRetryFailedOperations)=\"onRetryFailedOperations.emit($event)\"\n></c8y-single-operations-list>\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: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: OperationListItemDetailsComponent, selector: "c8y-operation-li-details", inputs: ["operation", "bulkOperationModalDetailsService"], outputs: ["showFailedOperation"] }, { kind: "component", type: AuditLogComponent, selector: "c8y-audit-log", inputs: ["source", "type"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SingleOperationsListComponent, selector: "c8y-single-operations-list", inputs: ["bulkOperation", "readOnly"], outputs: ["onRetryFailedOperations"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OperationDetailsTabsComponent, decorators: [{ type: Component, args: [{ selector: 'c8y-operation-details-tabs', imports: [ NgFor, NgClass, IconDirective, NgTemplateOutlet, OperationListItemDetailsComponent, AuditLogComponent, NgIf, SingleOperationsListComponent, C8yTranslatePipe ], template: "<div\n class=\"tabContainer\"\n #container\n>\n <ul class=\"nav nav-tabs nav-tabsc8y\">\n <li\n [ngClass]=\"{ active: tab.template === template }\"\n *ngFor=\"let tab of tabs\"\n >\n <button\n class=\"btn\"\n [title]=\"tab.label | translate\"\n (click)=\"template = tab.template\"\n >\n <i [c8yIcon]=\"tab.icon\"></i>\n <span class=\"txt\">{{ tab.label | translate }}</span>\n </button>\n </li>\n </ul>\n</div>\n\n<ng-container *ngTemplateOutlet=\"template\"></ng-container>\n\n<ng-template #details>\n <c8y-operation-li-details\n [operation]=\"operation\"\n (showFailedOperation)=\"showFailedOperation.emit($event)\"\n [bulkOperationModalDetailsService]=\"bulkOperationModalDetailsService\"\n ></c8y-operation-li-details>\n</ng-template>\n\n<ng-template #audit>\n <c8y-audit-log\n [source]=\"operation.id\"\n [type]=\"\n !!operation.operationPrototype ? AuditRecordType.BULK_OPERATION : AuditRecordType.OPERATION\n \"\n ></c8y-audit-log>\n</ng-template>\n\n<c8y-single-operations-list\n class=\"d-flex d-col\"\n *ngIf=\"operation.operationPrototype\"\n [bulkOperation]=\"operation\"\n [readOnly]=\"readOnly\"\n (onRetryFailedOperations)=\"onRetryFailedOperations.emit($event)\"\n></c8y-single-operations-list>\n" }] }], propDecorators: { operation: [{ type: Input }], readOnly: [{ type: Input }], bulkOperationModalDetailsService: [{ type: Input }], onRetryFailedOperations: [{ type: Output }], showFailedOperation: [{ type: Output }], detailsTemplate: [{ type: ViewChild, args: ['details', { static: true }] }], auditTemplate: [{ type: ViewChild, args: ['audit', { static: true }] }] } }); /** * This module allows for displaying the list of single operations and their details. */ class OperationsListItemDetailsModule { static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OperationsListItemDetailsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.25", ngImport: i0, type: OperationsListItemDetailsModule, imports: [OperationListItemDetailsComponent, OperationDetailsTabsComponent], exports: [OperationListItemDetailsComponent, OperationDetailsTabsComponent] }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OperationsListItemDetailsModule, imports: [OperationDetailsTabsComponent] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OperationsListItemDetailsModule, decorators: [{ type: NgModule, args: [{ imports: [OperationListItemDetailsComponent, OperationDetailsTabsComponent], exports: [OperationListItemDetailsComponent, OperationDetailsTabsComponent] }] }] }); /** * Generated bundle index. Do not edit. */ export { OperationDetailsTabsComponent, OperationListItemDetailsComponent, OperationsListItemDetailsModule }; //# sourceMappingURL=c8y-ngx-components-operations-operations-list-item-details.mjs.map