diff --git a/ui-ngx/src/app/modules/home/components/widget/dynamic-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/dynamic-widget.component.ts
index 3fdae9105d..e63adcb744 100644
--- a/ui-ngx/src/app/modules/home/components/widget/dynamic-widget.component.ts
+++ b/ui-ngx/src/app/modules/home/components/widget/dynamic-widget.component.ts
@@ -40,6 +40,7 @@ import { DialogService } from '@core/services/dialog.service';
import { CustomDialogService } from '@home/components/widget/dialog/custom-dialog.service';
import { DatePipe } from '@angular/common';
import { TranslateService } from '@ngx-translate/core';
+import { DomSanitizer } from '@angular/platform-browser';
export class DynamicWidgetComponent extends PageComponent implements IDynamicWidgetComponent, OnInit, OnDestroy {
@@ -74,6 +75,7 @@ export class DynamicWidgetComponent extends PageComponent implements IDynamicWid
this.ctx.date = $injector.get(DatePipe);
this.ctx.translate = $injector.get(TranslateService);
this.ctx.http = $injector.get(HttpClient);
+ this.ctx.sanitizer = $injector.get(DomSanitizer);
this.ctx.$scope = this;
if (this.ctx.defaultSubscription) {
diff --git a/ui-ngx/src/app/modules/home/models/widget-component.models.ts b/ui-ngx/src/app/modules/home/models/widget-component.models.ts
index 96fae7bac3..289296b159 100644
--- a/ui-ngx/src/app/modules/home/models/widget-component.models.ts
+++ b/ui-ngx/src/app/modules/home/models/widget-component.models.ts
@@ -75,6 +75,7 @@ import { DatePipe } from '@angular/common';
import { TranslateService } from '@ngx-translate/core';
import { PageLink } from '@shared/models/page/page-link';
import { SortOrder } from '@shared/models/page/sort-order';
+import { DomSanitizer } from '@angular/platform-browser';
export interface IWidgetAction {
name: string;
@@ -155,6 +156,7 @@ export class WidgetContext {
date: DatePipe;
translate: TranslateService;
http: HttpClient;
+ sanitizer: DomSanitizer;
private changeDetectorValue: ChangeDetectorRef;
diff --git a/ui-ngx/src/app/shared/models/ace/service-completion.models.ts b/ui-ngx/src/app/shared/models/ace/service-completion.models.ts
index b94365a726..63bc4cd938 100644
--- a/ui-ngx/src/app/shared/models/ace/service-completion.models.ts
+++ b/ui-ngx/src/app/shared/models/ace/service-completion.models.ts
@@ -1382,5 +1382,11 @@ export const serviceCompletions: TbEditorCompletions = {
'See HttpClient for API reference.',
meta: 'service',
type: 'HttpClient'
+ },
+ sanitizer: {
+ description: 'DomSanitizer Service
' +
+ 'See DomSanitizer for API reference.',
+ meta: 'service',
+ type: 'DomSanitizer'
}
}
diff --git a/ui-ngx/src/app/shared/models/ace/widget-completion.models.ts b/ui-ngx/src/app/shared/models/ace/widget-completion.models.ts
index 53a04e92a2..acdcc080ba 100644
--- a/ui-ngx/src/app/shared/models/ace/widget-completion.models.ts
+++ b/ui-ngx/src/app/shared/models/ace/widget-completion.models.ts
@@ -579,6 +579,23 @@ export const widgetContextCompletions: TbEditorCompletions = {
}
]
},
+ pushAndOpenState: {
+ description: 'Navigate to new dashboard state and adding intermediate states.',
+ meta: 'function',
+ args: [
+ {
+ name: 'id',
+ description: 'An array state object of the target dashboard state.',
+ type: 'Array StateObject',
+ },
+ {
+ name: 'openRightLayout',
+ description: 'An optional boolean argument to force open right dashboard layout if present in mobile view mode.',
+ type: 'boolean',
+ optional: true
+ }
+ ]
+ },
updateState: {
description: 'Updates current dashboard state.',
meta: 'function',