@c8y/ngx-components 1022.44.3 → 1022.44.7

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.
@@ -1,16 +1,30 @@
1
1
  import { ViewContainerRef } from '@angular/core';
2
+ import { BottomDrawerRef } from './bottom-drawer-ref';
2
3
  import * as i0 from "@angular/core";
4
+ /**
5
+ * Bottom drawer component that slides up from the bottom of the viewport.
6
+ * Typically managed by BottomDrawerService.
7
+ */
3
8
  export declare class BottomDrawerComponent {
9
+ private drawerRef;
4
10
  drawerHost: ViewContainerRef;
5
11
  /**
6
12
  * When enabled, clicking outside the drawer will not close it.
7
13
  */
8
14
  disableClickOutside: boolean;
9
- get drawerOpen$(): import("rxjs").Observable<boolean>;
10
15
  private drawerOpenSubject$;
11
16
  private drawerOpenObs$;
17
+ constructor(drawerRef: BottomDrawerRef<unknown>);
18
+ get drawerOpen$(): import("rxjs").Observable<boolean>;
19
+ /**
20
+ * Handles Escape key press to close the drawer.
21
+ */
22
+ onEscapeKey(event: KeyboardEvent): void;
23
+ /**
24
+ * Hides the drawer with animation.
25
+ */
12
26
  hide(): void;
13
- static ɵfac: i0.ɵɵFactoryDeclaration<BottomDrawerComponent, never>;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<BottomDrawerComponent, [{ optional: true; }]>;
14
28
  static ɵcmp: i0.ɵɵComponentDeclaration<BottomDrawerComponent, "c8y-bottom-drawer", never, {}, {}, never, never, true, never>;
15
29
  }
16
30
  //# sourceMappingURL=bottom-drawer.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bottom-drawer.component.d.ts","sourceRoot":"","sources":["../../../core/bottom-drawer/bottom-drawer.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,eAAe,CAAC;;AAIvE,qBAMa,qBAAqB;IAEhC,UAAU,EAAE,gBAAgB,CAAC;IAE7B;;OAEG;IACH,mBAAmB,UAAS;IAE5B,IAAI,WAAW,uCAEd;IAED,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,cAAc,CAAwE;IAE9F,IAAI;yCAhBO,qBAAqB;2CAArB,qBAAqB;CAqBjC"}
1
+ {"version":3,"file":"bottom-drawer.component.d.ts","sourceRoot":"","sources":["../../../core/bottom-drawer/bottom-drawer.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAgD,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAI/F,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;;AAEtD;;;GAGG;AACH,qBAMa,qBAAqB;IAYR,OAAO,CAAC,SAAS;IAVzC,UAAU,EAAE,gBAAgB,CAAC;IAE7B;;OAEG;IACH,mBAAmB,UAAS;IAE5B,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,cAAc,CAAwE;gBAE9D,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC;IAEnE,IAAI,WAAW,uCAEd;IAED;;OAEG;IAEH,WAAW,CAAC,KAAK,EAAE,aAAa;IAShC;;OAEG;IACH,IAAI;yCAlCO,qBAAqB;2CAArB,qBAAqB;CAuCjC"}
@@ -4,18 +4,26 @@ import { BottomDrawerRef } from './bottom-drawer-ref';
4
4
  import { DrawerOptions } from './bottom-drawer.model';
5
5
  import * as i0 from "@angular/core";
6
6
  /**
7
- * Allows to open a component in a bottom drawer.
7
+ * Service for opening components in a bottom drawer.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const drawer = this.drawerService.openDrawer(MyComponent, {
12
+ * initialState: { data: 'some data' },
13
+ * disableClickOutside: true
14
+ * });
15
+ * ```
8
16
  */
9
17
  export declare class BottomDrawerService {
10
18
  private applicationRef;
11
19
  private router;
12
20
  constructor(applicationRef: ApplicationRef, router: Router);
13
21
  /**
14
- * Opens the provided component in a bottom drawer.
22
+ * Opens a component in a bottom drawer.
15
23
  *
16
- * @param component The component type to render in a bottom drawer.
17
- * @param options (optional) Additional options to configure bottom drawer.
18
- * @returns A reference to the bottom drawer.
24
+ * @param component - The component type to render
25
+ * @param options - Configuration options (initialState, disableClickOutside, closeOnNavigation, host)
26
+ * @returns A reference to the bottom drawer instance
19
27
  */
20
28
  openDrawer<C>(component: Type<C>, options?: DrawerOptions<C>): BottomDrawerRef<C>;
21
29
  static ɵfac: i0.ɵɵFactoryDeclaration<BottomDrawerService, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"bottom-drawer.service.d.ts","sourceRoot":"","sources":["../../../core/bottom-drawer/bottom-drawer.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAc,IAAI,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;;AAEtD;;GAEG;AACH,qBACa,mBAAmB;IAE5B,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,MAAM;gBADN,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM;IAGxB;;;;;;OAMG;IACH,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;yCAbtE,mBAAmB;6CAAnB,mBAAmB;CAgB/B"}
1
+ {"version":3,"file":"bottom-drawer.service.d.ts","sourceRoot":"","sources":["../../../core/bottom-drawer/bottom-drawer.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAc,IAAI,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;;AAEtD;;;;;;;;;;GAUG;AACH,qBACa,mBAAmB;IAE5B,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,MAAM;gBADN,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM;IAGxB;;;;;;OAMG;IACH,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;yCAbtE,mBAAmB;6CAAnB,mBAAmB;CAgB/B"}
@@ -35,6 +35,7 @@ export declare class WidgetsDashboardComponent {
35
35
  redoButtonDisabled: boolean;
36
36
  changeToRedoName: string;
37
37
  };
38
+ get isDeviceTypeDashboard(): boolean;
38
39
  settings: DashboardSettings;
39
40
  onAddWidget: EventEmitter<DashboardComponent>;
40
41
  onEditWidget: EventEmitter<WidgetChange>;
@@ -77,6 +78,13 @@ export declare class WidgetsDashboardComponent {
77
78
  private setCopyDisabledPopoverMsg;
78
79
  private confirmClosing;
79
80
  private executeResolversOfWidgets;
81
+ /**
82
+ * Recursively traverses an object/array and replaces specified keys with 'this.context'
83
+ * @param obj - The object or array to process
84
+ * @param keys - Array of keys to replace
85
+ * @returns The modified object with replaced values
86
+ */
87
+ private replaceKeysWithContext;
80
88
  static ɵfac: i0.ɵɵFactoryDeclaration<WidgetsDashboardComponent, never>;
81
89
  static ɵcmp: i0.ɵɵComponentDeclaration<WidgetsDashboardComponent, "c8y-widgets-dashboard", never, { "widgets": { "alias": "widgets"; "required": false; }; "context": { "alias": "context"; "required": false; }; "contextDashboard": { "alias": "contextDashboard"; "required": false; }; "_settings": { "alias": "settings"; "required": false; }; "isCopyDisabled": { "alias": "isCopyDisabled"; "required": false; }; "breadcrumb": { "alias": "breadcrumb"; "required": false; }; "editModeButtons": { "alias": "editModeButtons"; "required": false; }; }, { "onAddWidget": "onAddWidget"; "onEditWidget": "onEditWidget"; "onDeleteWidget": "onDeleteWidget"; "onChangeDashboard": "onChangeDashboard"; "onResize": "onResize"; "onEditDashboard": "onEditDashboard"; "onCopyDashboard": "onCopyDashboard"; "onDeleteDashboard": "onDeleteDashboard"; "onChangeStart": "onChangeStart"; "onChangeEnd": "onChangeEnd"; "onSaveDashboard": "onSaveDashboard"; "onCancelDashboard": "onCancelDashboard"; "revertChange": "revertChange"; }, never, never, true, never>;
82
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"widgets-dashboard.component.d.ts","sourceRoot":"","sources":["../../../core/dashboard/widgets-dashboard.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"widgets-dashboard.component.d.ts","sourceRoot":"","sources":["../../../core/dashboard/widgets-dashboard.component.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { ControlValueAccessor } from '@angular/forms';
3
3
  import type * as Monaco from 'monaco-editor';
4
4
  import { ThemeOptions, ThemeSwitcherService } from '@c8y/ngx-components';
5
5
  import * as i0 from "@angular/core";
6
+ export declare function initializeMonacoEnvironment(): void;
6
7
  export declare function loadMonacoEditor(): Promise<typeof Monaco>;
7
8
  /**
8
9
  * Editor component for displaying and editing code
@@ -1 +1 @@
1
- {"version":3,"file":"editor.component.d.ts","sourceRoot":"","sources":["../../editor/editor.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,SAAS,EACT,MAAM,EAEN,UAAU,EAIV,YAAY,EACZ,aAAa,EACb,SAAS,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAqB,MAAM,gBAAgB,CAAC;AACzE,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAoB,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;;AAK3F,wBAAsB,gBAAgB,2BAGrC;AAED;;;;;;GAMG;AACH,qBAaa,eAAgB,YAAW,aAAa,EAAE,SAAS,EAAE,oBAAoB,EAAE,SAAS;IA0B7F,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,aAAa;IA1BvB;;;OAGG;IACM,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,oCAAoC,CAAM;IAChF;;OAEG;IACM,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACO,UAAU,oDAA2D;IAC/E,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;IAE5C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,UAAU,CAAa;IACiB,gBAAgB,EAAE,UAAU,CAAC;IAC7E,OAAO,CAAC,aAAa,CAA2B;gBAGtC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,oBAAoB;IAK7C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAYtC,gBAAgB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAKnD,iBAAiB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAKvC,gBAAgB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAIrC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BtC,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMzC,QAAQ;IA2BR,WAAW;IAKX,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,wBAAwB;yCA/HrB,eAAe;2CAAf,eAAe;CAwI3B"}
1
+ {"version":3,"file":"editor.component.d.ts","sourceRoot":"","sources":["../../editor/editor.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,SAAS,EACT,MAAM,EAEN,UAAU,EAIV,YAAY,EACZ,aAAa,EACb,SAAS,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAqB,MAAM,gBAAgB,CAAC;AACzE,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAoB,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;;AAO3F,wBAAgB,2BAA2B,SAsB1C;AAED,wBAAsB,gBAAgB,2BAIrC;AAED;;;;;;GAMG;AACH,qBAaa,eAAgB,YAAW,aAAa,EAAE,SAAS,EAAE,oBAAoB,EAAE,SAAS;IA0B7F,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,aAAa;IA1BvB;;;OAGG;IACM,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,oCAAoC,CAAM;IAChF;;OAEG;IACM,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACO,UAAU,oDAA2D;IAC/E,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;IAE5C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,UAAU,CAAa;IACiB,gBAAgB,EAAE,UAAU,CAAC;IAC7E,OAAO,CAAC,aAAa,CAA2B;gBAGtC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,oBAAoB;IAK7C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAYtC,gBAAgB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAKnD,iBAAiB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAKvC,gBAAgB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAIrC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BtC,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMzC,QAAQ;IA2BR,WAAW;IAKX,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,wBAAwB;yCA/HrB,eAAe;2CAAf,eAAe;CAwI3B"}
@@ -2634,7 +2634,7 @@ class WidgetConfigComponent {
2634
2634
  return widgetConfig;
2635
2635
  }
2636
2636
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigComponent, deps: [{ token: WidgetService }, { token: i2.BottomDrawerRef }, { token: ContextDashboardService }, { token: WidgetConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
2637
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: WidgetConfigComponent, isStandalone: true, selector: "c8y-widget-config", host: { classAttribute: "d-contents" }, viewQueries: [{ propertyName: "configForm", first: true, predicate: ["configForm"], descendants: true }], ngImport: i0, template: "<!-- select widget -->\n<ng-container *ngIf=\"!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header j-c-center separator\">\n <div class=\"h4 text-center\">\n {{ 'Select widget' | translate }}\n </div>\n </div>\n <div class=\"card-inner-scroll fit-h bg-level-2\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0 elevation-md\"\n style=\"z-index: 2\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6 col-sm-offset-3\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n type=\"text\"\n data-cy=\"widget-config--Search\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"card-group p-l-24 p-r-24 d-grid grid__col--auto-300 gap-24 card-select m-b-0\">\n <button\n class=\"btn-clean d-col card m-b-0\"\n [title]=\"cmp.description || cmp.label | translate\"\n type=\"button\"\n data-cy=\"widget-config--widget-list\"\n *ngFor=\"let cmp of searchResult || components\"\n (click)=\"select(cmp)\"\n >\n <div\n class=\"border-bottom\"\n role=\"presentation\"\n >\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img\n class=\"widget-thumbnail\"\n alt=\"{{ cmp.label | translate }}\"\n [src]=\"cmp.previewImage\"\n />\n </ng-template>\n </div>\n <div class=\"card-block\">\n <p class=\"card-title text-truncate text-medium\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n <p\n class=\"small text-default\"\n style=\"white-space: wrap\"\n >\n {{ cmp.description | translate }}\n </p>\n </div>\n </button>\n <c8y-ui-empty-state\n class=\"p-24 grid__col--fullspan\"\n [icon]=\"'search'\"\n [title]=\"'No widgets found.' | translate\"\n [subtitle]=\"' Rephrase your search term.' | translate\"\n *ngIf=\"searchResult && searchResult.length === 0\"\n >\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </c8y-ui-empty-state>\n </div>\n </div>\n </div>\n <div class=\"card-footer text-center separator flex-no-shrink\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n </div>\n</ng-container>\n\n<!-- widget configuration -->\n<ng-container *ngIf=\"!!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header d-block separator-bottom flex-no-shrink\">\n <div\n class=\"h3 p-t-16\"\n title=\"{{ selected?.label | translate }}\"\n >\n <span>{{ selected?.label | translate }}</span>\n <button\n class=\"btn btn-default btn-sm m-l-8\"\n [title]=\"'Change widget' | translate\"\n (click)=\"backToWidgetSelection(); (false)\"\n >\n <i c8yIcon=\"replace\"></i>\n {{ 'Change widget' | translate }}\n </button>\n </div>\n <div\n class=\"p-t-8\"\n *ngIf=\"selected\"\n >\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n\n <c8y-resizable-grid\n class=\"min-height-0 flex-grow\"\n [trackId]=\"'c8y-widget-resizable-grid-size-' + (widgetConfigService.instanceId$ | async)\"\n [leftColumnWidth]=\"\n (widgetConfigService.currentConfig$ | async)?.settings?.configurationViewGridSize ||\n WIDGET_CONFIGURATION_GRID_SIZE.HALF\n \"\n >\n <div\n class=\"bg-level-1 inner-scroll\"\n left-pane\n >\n <div class=\"p-16 flex-no-shrink separator-bottom bg-level-1\">\n <c8y-form-group>\n <label\n for=\"widgetTitle\"\n translate\n >\n Widget title\n </label>\n <input\n class=\"form-control\"\n id=\"widgetTitle\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n name=\"title\"\n type=\"text\"\n required\n [(ngModel)]=\"selected?.data.title\"\n />\n </c8y-form-group>\n </div>\n\n <c8y-ui-empty-state\n class=\"p-24\"\n [icon]=\"'settings'\"\n [title]=\"'No configuration needed.' | translate\"\n [subtitle]=\"'This widget does not need any specific configuration.' | translate\"\n [horizontal]=\"true\"\n *ngIf=\"!(widgetConfigService.hasConfig$ | async)\"\n ></c8y-ui-empty-state>\n <div>\n <form\n name=\"form\"\n #configForm=\"ngForm\"\n >\n <ng-container *ngIf=\"widgetConfigService.hasConfig$ | async\">\n <ng-container *ngIf=\"widgetConfigService.providers$ | async as providers\">\n <ng-container\n *c8yComponentOutlet=\"widgetConfigRoot; providers: providers\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </form>\n </div>\n </div>\n <div\n class=\"inner-scroll p-32 p-t-0\"\n right-pane\n >\n <c8y-widget-preview [previewClasses]=\"getStyle(true)\"></c8y-widget-preview>\n\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n [columns]=\"2\"\n ></c8y-appearance-settings>\n </div>\n </c8y-resizable-grid>\n <div class=\"card-footer separator text-center\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n data-cy=\"widget-config--save-widget\"\n (click)=\"save()\"\n [disabled]=\"(contextDashboardService.formDisabled$ | async) || isSaveDisabled()\"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector", "c8yComponentOutletProviders", "c8yComponentOutletInitialState"] }, { kind: "component", type: WidgetPreviewComponent, selector: "c8y-widget-preview", inputs: ["previewClasses"] }, { kind: "component", type: AppearanceSettingsComponent, selector: "c8y-appearance-settings", inputs: ["themeClass", "headerClass", "defaultThemeClass", "defaultHeaderClass", "dashboardSettings", "possibleStylingTheme", "possibleStylingHeader", "columns"], outputs: ["themeClassChange", "headerClassChange", "onChange"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ResizableGridComponent, selector: "c8y-resizable-grid", inputs: ["leftColumnWidth", "trackId", "collapseThreshold"] }] }); }
2637
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: WidgetConfigComponent, isStandalone: true, selector: "c8y-widget-config", host: { classAttribute: "d-contents" }, viewQueries: [{ propertyName: "configForm", first: true, predicate: ["configForm"], descendants: true }], ngImport: i0, template: "<!-- select widget -->\n<ng-container *ngIf=\"!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header j-c-center separator\">\n <div class=\"h4 text-center\" id=\"drawerTitle\">\n {{ 'Select widget' | translate }}\n </div>\n </div>\n <div class=\"card-inner-scroll fit-h bg-level-2\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0 elevation-md\"\n style=\"z-index: 2\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6 col-sm-offset-3\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n type=\"text\"\n data-cy=\"widget-config--Search\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"card-group p-l-24 p-r-24 d-grid grid__col--auto-300 gap-24 card-select m-b-0\">\n <button\n class=\"btn-clean d-col card m-b-0\"\n [title]=\"cmp.description || cmp.label | translate\"\n type=\"button\"\n data-cy=\"widget-config--widget-list\"\n *ngFor=\"let cmp of searchResult || components\"\n (click)=\"select(cmp)\"\n >\n <div\n class=\"border-bottom\"\n role=\"presentation\"\n >\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img\n class=\"widget-thumbnail\"\n alt=\"{{ cmp.label | translate }}\"\n [src]=\"cmp.previewImage\"\n />\n </ng-template>\n </div>\n <div class=\"card-block\">\n <p class=\"card-title text-truncate text-medium\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n <p\n class=\"small text-default\"\n style=\"white-space: wrap\"\n >\n {{ cmp.description | translate }}\n </p>\n </div>\n </button>\n <c8y-ui-empty-state\n class=\"p-24 grid__col--fullspan\"\n [icon]=\"'search'\"\n [title]=\"'No widgets found.' | translate\"\n [subtitle]=\"' Rephrase your search term.' | translate\"\n *ngIf=\"searchResult && searchResult.length === 0\"\n >\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </c8y-ui-empty-state>\n </div>\n </div>\n </div>\n <div class=\"card-footer text-center separator flex-no-shrink\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n </div>\n</ng-container>\n\n<!-- widget configuration -->\n<ng-container *ngIf=\"!!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header d-block separator-bottom flex-no-shrink\">\n <div\n class=\"h3 p-t-16\"\n title=\"{{ selected?.label | translate }}\"\n >\n <span>{{ selected?.label | translate }}</span>\n <button\n class=\"btn btn-default btn-sm m-l-8\"\n [title]=\"'Change widget' | translate\"\n (click)=\"backToWidgetSelection(); (false)\"\n >\n <i c8yIcon=\"replace\"></i>\n {{ 'Change widget' | translate }}\n </button>\n </div>\n <div\n class=\"p-t-8\"\n *ngIf=\"selected\"\n >\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n\n <c8y-resizable-grid\n class=\"min-height-0 flex-grow\"\n [trackId]=\"'c8y-widget-resizable-grid-size-' + (widgetConfigService.instanceId$ | async)\"\n [leftColumnWidth]=\"\n (widgetConfigService.currentConfig$ | async)?.settings?.configurationViewGridSize ||\n WIDGET_CONFIGURATION_GRID_SIZE.HALF\n \"\n >\n <div\n class=\"bg-level-1 inner-scroll\"\n left-pane\n >\n <div class=\"p-16 flex-no-shrink separator-bottom bg-level-1\">\n <c8y-form-group>\n <label\n for=\"widgetTitle\"\n translate\n >\n Widget title\n </label>\n <input\n class=\"form-control\"\n id=\"widgetTitle\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n name=\"title\"\n type=\"text\"\n required\n [(ngModel)]=\"selected?.data.title\"\n />\n </c8y-form-group>\n </div>\n\n <c8y-ui-empty-state\n class=\"p-24\"\n [icon]=\"'settings'\"\n [title]=\"'No configuration needed.' | translate\"\n [subtitle]=\"'This widget does not need any specific configuration.' | translate\"\n [horizontal]=\"true\"\n *ngIf=\"!(widgetConfigService.hasConfig$ | async)\"\n ></c8y-ui-empty-state>\n <div>\n <form\n name=\"form\"\n #configForm=\"ngForm\"\n >\n <ng-container *ngIf=\"widgetConfigService.hasConfig$ | async\">\n <ng-container *ngIf=\"widgetConfigService.providers$ | async as providers\">\n <ng-container\n *c8yComponentOutlet=\"widgetConfigRoot; providers: providers\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </form>\n </div>\n </div>\n <div\n class=\"inner-scroll p-32 p-t-0\"\n right-pane\n >\n <c8y-widget-preview [previewClasses]=\"getStyle(true)\"></c8y-widget-preview>\n\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n [columns]=\"2\"\n ></c8y-appearance-settings>\n </div>\n </c8y-resizable-grid>\n <div class=\"card-footer separator text-center\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n data-cy=\"widget-config--save-widget\"\n (click)=\"save()\"\n [disabled]=\"(contextDashboardService.formDisabled$ | async) || isSaveDisabled()\"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector", "c8yComponentOutletProviders", "c8yComponentOutletInitialState"] }, { kind: "component", type: WidgetPreviewComponent, selector: "c8y-widget-preview", inputs: ["previewClasses"] }, { kind: "component", type: AppearanceSettingsComponent, selector: "c8y-appearance-settings", inputs: ["themeClass", "headerClass", "defaultThemeClass", "defaultHeaderClass", "dashboardSettings", "possibleStylingTheme", "possibleStylingHeader", "columns"], outputs: ["themeClassChange", "headerClassChange", "onChange"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ResizableGridComponent, selector: "c8y-resizable-grid", inputs: ["leftColumnWidth", "trackId", "collapseThreshold"] }] }); }
2638
2638
  }
2639
2639
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigComponent, decorators: [{
2640
2640
  type: Component,
@@ -2655,7 +2655,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
2655
2655
  C8yTranslatePipe,
2656
2656
  AsyncPipe,
2657
2657
  ResizableGridComponent
2658
- ], standalone: true, template: "<!-- select widget -->\n<ng-container *ngIf=\"!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header j-c-center separator\">\n <div class=\"h4 text-center\">\n {{ 'Select widget' | translate }}\n </div>\n </div>\n <div class=\"card-inner-scroll fit-h bg-level-2\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0 elevation-md\"\n style=\"z-index: 2\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6 col-sm-offset-3\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n type=\"text\"\n data-cy=\"widget-config--Search\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"card-group p-l-24 p-r-24 d-grid grid__col--auto-300 gap-24 card-select m-b-0\">\n <button\n class=\"btn-clean d-col card m-b-0\"\n [title]=\"cmp.description || cmp.label | translate\"\n type=\"button\"\n data-cy=\"widget-config--widget-list\"\n *ngFor=\"let cmp of searchResult || components\"\n (click)=\"select(cmp)\"\n >\n <div\n class=\"border-bottom\"\n role=\"presentation\"\n >\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img\n class=\"widget-thumbnail\"\n alt=\"{{ cmp.label | translate }}\"\n [src]=\"cmp.previewImage\"\n />\n </ng-template>\n </div>\n <div class=\"card-block\">\n <p class=\"card-title text-truncate text-medium\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n <p\n class=\"small text-default\"\n style=\"white-space: wrap\"\n >\n {{ cmp.description | translate }}\n </p>\n </div>\n </button>\n <c8y-ui-empty-state\n class=\"p-24 grid__col--fullspan\"\n [icon]=\"'search'\"\n [title]=\"'No widgets found.' | translate\"\n [subtitle]=\"' Rephrase your search term.' | translate\"\n *ngIf=\"searchResult && searchResult.length === 0\"\n >\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </c8y-ui-empty-state>\n </div>\n </div>\n </div>\n <div class=\"card-footer text-center separator flex-no-shrink\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n </div>\n</ng-container>\n\n<!-- widget configuration -->\n<ng-container *ngIf=\"!!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header d-block separator-bottom flex-no-shrink\">\n <div\n class=\"h3 p-t-16\"\n title=\"{{ selected?.label | translate }}\"\n >\n <span>{{ selected?.label | translate }}</span>\n <button\n class=\"btn btn-default btn-sm m-l-8\"\n [title]=\"'Change widget' | translate\"\n (click)=\"backToWidgetSelection(); (false)\"\n >\n <i c8yIcon=\"replace\"></i>\n {{ 'Change widget' | translate }}\n </button>\n </div>\n <div\n class=\"p-t-8\"\n *ngIf=\"selected\"\n >\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n\n <c8y-resizable-grid\n class=\"min-height-0 flex-grow\"\n [trackId]=\"'c8y-widget-resizable-grid-size-' + (widgetConfigService.instanceId$ | async)\"\n [leftColumnWidth]=\"\n (widgetConfigService.currentConfig$ | async)?.settings?.configurationViewGridSize ||\n WIDGET_CONFIGURATION_GRID_SIZE.HALF\n \"\n >\n <div\n class=\"bg-level-1 inner-scroll\"\n left-pane\n >\n <div class=\"p-16 flex-no-shrink separator-bottom bg-level-1\">\n <c8y-form-group>\n <label\n for=\"widgetTitle\"\n translate\n >\n Widget title\n </label>\n <input\n class=\"form-control\"\n id=\"widgetTitle\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n name=\"title\"\n type=\"text\"\n required\n [(ngModel)]=\"selected?.data.title\"\n />\n </c8y-form-group>\n </div>\n\n <c8y-ui-empty-state\n class=\"p-24\"\n [icon]=\"'settings'\"\n [title]=\"'No configuration needed.' | translate\"\n [subtitle]=\"'This widget does not need any specific configuration.' | translate\"\n [horizontal]=\"true\"\n *ngIf=\"!(widgetConfigService.hasConfig$ | async)\"\n ></c8y-ui-empty-state>\n <div>\n <form\n name=\"form\"\n #configForm=\"ngForm\"\n >\n <ng-container *ngIf=\"widgetConfigService.hasConfig$ | async\">\n <ng-container *ngIf=\"widgetConfigService.providers$ | async as providers\">\n <ng-container\n *c8yComponentOutlet=\"widgetConfigRoot; providers: providers\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </form>\n </div>\n </div>\n <div\n class=\"inner-scroll p-32 p-t-0\"\n right-pane\n >\n <c8y-widget-preview [previewClasses]=\"getStyle(true)\"></c8y-widget-preview>\n\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n [columns]=\"2\"\n ></c8y-appearance-settings>\n </div>\n </c8y-resizable-grid>\n <div class=\"card-footer separator text-center\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n data-cy=\"widget-config--save-widget\"\n (click)=\"save()\"\n [disabled]=\"(contextDashboardService.formDisabled$ | async) || isSaveDisabled()\"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</ng-container>\n" }]
2658
+ ], standalone: true, template: "<!-- select widget -->\n<ng-container *ngIf=\"!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header j-c-center separator\">\n <div class=\"h4 text-center\" id=\"drawerTitle\">\n {{ 'Select widget' | translate }}\n </div>\n </div>\n <div class=\"card-inner-scroll fit-h bg-level-2\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0 elevation-md\"\n style=\"z-index: 2\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6 col-sm-offset-3\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n type=\"text\"\n data-cy=\"widget-config--Search\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"card-group p-l-24 p-r-24 d-grid grid__col--auto-300 gap-24 card-select m-b-0\">\n <button\n class=\"btn-clean d-col card m-b-0\"\n [title]=\"cmp.description || cmp.label | translate\"\n type=\"button\"\n data-cy=\"widget-config--widget-list\"\n *ngFor=\"let cmp of searchResult || components\"\n (click)=\"select(cmp)\"\n >\n <div\n class=\"border-bottom\"\n role=\"presentation\"\n >\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img\n class=\"widget-thumbnail\"\n alt=\"{{ cmp.label | translate }}\"\n [src]=\"cmp.previewImage\"\n />\n </ng-template>\n </div>\n <div class=\"card-block\">\n <p class=\"card-title text-truncate text-medium\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n <p\n class=\"small text-default\"\n style=\"white-space: wrap\"\n >\n {{ cmp.description | translate }}\n </p>\n </div>\n </button>\n <c8y-ui-empty-state\n class=\"p-24 grid__col--fullspan\"\n [icon]=\"'search'\"\n [title]=\"'No widgets found.' | translate\"\n [subtitle]=\"' Rephrase your search term.' | translate\"\n *ngIf=\"searchResult && searchResult.length === 0\"\n >\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </c8y-ui-empty-state>\n </div>\n </div>\n </div>\n <div class=\"card-footer text-center separator flex-no-shrink\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n </div>\n</ng-container>\n\n<!-- widget configuration -->\n<ng-container *ngIf=\"!!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header d-block separator-bottom flex-no-shrink\">\n <div\n class=\"h3 p-t-16\"\n title=\"{{ selected?.label | translate }}\"\n >\n <span>{{ selected?.label | translate }}</span>\n <button\n class=\"btn btn-default btn-sm m-l-8\"\n [title]=\"'Change widget' | translate\"\n (click)=\"backToWidgetSelection(); (false)\"\n >\n <i c8yIcon=\"replace\"></i>\n {{ 'Change widget' | translate }}\n </button>\n </div>\n <div\n class=\"p-t-8\"\n *ngIf=\"selected\"\n >\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n\n <c8y-resizable-grid\n class=\"min-height-0 flex-grow\"\n [trackId]=\"'c8y-widget-resizable-grid-size-' + (widgetConfigService.instanceId$ | async)\"\n [leftColumnWidth]=\"\n (widgetConfigService.currentConfig$ | async)?.settings?.configurationViewGridSize ||\n WIDGET_CONFIGURATION_GRID_SIZE.HALF\n \"\n >\n <div\n class=\"bg-level-1 inner-scroll\"\n left-pane\n >\n <div class=\"p-16 flex-no-shrink separator-bottom bg-level-1\">\n <c8y-form-group>\n <label\n for=\"widgetTitle\"\n translate\n >\n Widget title\n </label>\n <input\n class=\"form-control\"\n id=\"widgetTitle\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n name=\"title\"\n type=\"text\"\n required\n [(ngModel)]=\"selected?.data.title\"\n />\n </c8y-form-group>\n </div>\n\n <c8y-ui-empty-state\n class=\"p-24\"\n [icon]=\"'settings'\"\n [title]=\"'No configuration needed.' | translate\"\n [subtitle]=\"'This widget does not need any specific configuration.' | translate\"\n [horizontal]=\"true\"\n *ngIf=\"!(widgetConfigService.hasConfig$ | async)\"\n ></c8y-ui-empty-state>\n <div>\n <form\n name=\"form\"\n #configForm=\"ngForm\"\n >\n <ng-container *ngIf=\"widgetConfigService.hasConfig$ | async\">\n <ng-container *ngIf=\"widgetConfigService.providers$ | async as providers\">\n <ng-container\n *c8yComponentOutlet=\"widgetConfigRoot; providers: providers\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </form>\n </div>\n </div>\n <div\n class=\"inner-scroll p-32 p-t-0\"\n right-pane\n >\n <c8y-widget-preview [previewClasses]=\"getStyle(true)\"></c8y-widget-preview>\n\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n [columns]=\"2\"\n ></c8y-appearance-settings>\n </div>\n </c8y-resizable-grid>\n <div class=\"card-footer separator text-center\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n data-cy=\"widget-config--save-widget\"\n (click)=\"save()\"\n [disabled]=\"(contextDashboardService.formDisabled$ | async) || isSaveDisabled()\"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</ng-container>\n" }]
2659
2659
  }], ctorParameters: () => [{ type: WidgetService }, { type: i2.BottomDrawerRef }, { type: ContextDashboardService }, { type: WidgetConfigService }], propDecorators: { configForm: [{
2660
2660
  type: ViewChild,
2661
2661
  args: ['configForm', { static: false }]