@masterteam/dashboard-builder 0.0.23 → 0.0.24
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.
|
@@ -19888,29 +19888,34 @@ class DashboardBuilder {
|
|
|
19888
19888
|
this.dashboardService.getReportById(id).subscribe({
|
|
19889
19889
|
next: (response) => {
|
|
19890
19890
|
const report = response.data;
|
|
19891
|
-
this.
|
|
19891
|
+
const normalizedFilters = this.normalizeFiltersConfig(report.dashboardConfig?.filters);
|
|
19892
|
+
const normalizedReport = {
|
|
19893
|
+
...report,
|
|
19894
|
+
dashboardConfig: {
|
|
19895
|
+
...(report.dashboardConfig ?? {}),
|
|
19896
|
+
filters: [...normalizedFilters],
|
|
19897
|
+
},
|
|
19898
|
+
};
|
|
19899
|
+
this.pageConfig.set(normalizedReport);
|
|
19892
19900
|
// Handle chartLinks format from new API
|
|
19893
19901
|
if (report.chartLinks && report.chartLinks.length > 0) {
|
|
19894
19902
|
// New API: charts come from chartLinks
|
|
19895
19903
|
const charts = report.chartLinks.map((link) => {
|
|
19896
|
-
|
|
19897
|
-
const configData = typeof link.configration === 'string'
|
|
19898
|
-
? JSON.parse(link.configration)
|
|
19899
|
-
: link.configration;
|
|
19904
|
+
const configData = this.readSerializedObject(link.configration) ?? {};
|
|
19900
19905
|
// Reconstruct DashboardChartItem structure
|
|
19901
19906
|
// configData has: serviceConfig, clientConfig, x, y, cols, rows, chartTypeId, group, orderInGroup, dashboardId
|
|
19902
19907
|
return {
|
|
19903
|
-
x: configData
|
|
19904
|
-
y: configData
|
|
19905
|
-
cols: configData
|
|
19906
|
-
rows: configData
|
|
19908
|
+
x: configData['x'] ?? 0,
|
|
19909
|
+
y: configData['y'] ?? 0,
|
|
19910
|
+
cols: configData['cols'] ?? 3,
|
|
19911
|
+
rows: configData['rows'] ?? 2,
|
|
19907
19912
|
config: {
|
|
19908
|
-
serviceConfig: configData
|
|
19909
|
-
clientConfig: configData
|
|
19913
|
+
serviceConfig: configData['serviceConfig'],
|
|
19914
|
+
clientConfig: configData['clientConfig'],
|
|
19910
19915
|
},
|
|
19911
|
-
chartTypeId: configData
|
|
19912
|
-
group: configData
|
|
19913
|
-
orderInGroup: configData
|
|
19916
|
+
chartTypeId: configData['chartTypeId'],
|
|
19917
|
+
group: configData['group'],
|
|
19918
|
+
orderInGroup: configData['orderInGroup'],
|
|
19914
19919
|
// Add link metadata
|
|
19915
19920
|
id: link.id,
|
|
19916
19921
|
chartComponentId: link.chartComponentId,
|
|
@@ -19918,22 +19923,15 @@ class DashboardBuilder {
|
|
|
19918
19923
|
});
|
|
19919
19924
|
this.charts.set(charts);
|
|
19920
19925
|
this.dialogs.set([]);
|
|
19921
|
-
const filters = report.dashboardConfig?.filters
|
|
19922
|
-
? typeof report.dashboardConfig.filters === 'string'
|
|
19923
|
-
? [JSON.parse(report.dashboardConfig.filters)]
|
|
19924
|
-
: [report.dashboardConfig.filters]
|
|
19925
|
-
: [];
|
|
19926
|
-
this.filtersConfig.set(filters);
|
|
19927
19926
|
}
|
|
19928
19927
|
else {
|
|
19929
19928
|
// No chart links yet
|
|
19930
19929
|
this.charts.set([]);
|
|
19931
19930
|
this.dialogs.set([]);
|
|
19932
|
-
this.filtersConfig.set([]);
|
|
19933
19931
|
}
|
|
19934
|
-
this.
|
|
19932
|
+
this.setFiltersConfig(normalizedFilters);
|
|
19935
19933
|
this.loading.set(false);
|
|
19936
|
-
this.pageChange.emit(
|
|
19934
|
+
this.pageChange.emit(normalizedReport);
|
|
19937
19935
|
this.chartsChange.emit(this.charts());
|
|
19938
19936
|
},
|
|
19939
19937
|
error: () => {
|
|
@@ -19990,10 +19988,8 @@ class DashboardBuilder {
|
|
|
19990
19988
|
// Find matching response by dashboardId in configration
|
|
19991
19989
|
const dashboardId = chart.config?.serviceConfig?.dashboardId;
|
|
19992
19990
|
const matchingResponse = responseData.find((r) => {
|
|
19993
|
-
const config =
|
|
19994
|
-
|
|
19995
|
-
: r.configration;
|
|
19996
|
-
return config?.dashboardId === dashboardId;
|
|
19991
|
+
const config = this.readSerializedObject(r.configration);
|
|
19992
|
+
return config?.['dashboardId'] === dashboardId;
|
|
19997
19993
|
});
|
|
19998
19994
|
if (matchingResponse) {
|
|
19999
19995
|
return {
|
|
@@ -20822,8 +20818,7 @@ class DashboardBuilder {
|
|
|
20822
20818
|
this.pageConfig.set(data.page ?? null);
|
|
20823
20819
|
this.charts.set(data.charts ?? []);
|
|
20824
20820
|
this.dialogs.set(data.dialogs ?? []);
|
|
20825
|
-
this.
|
|
20826
|
-
this.dashboardService.filters.set(this.filtersConfig());
|
|
20821
|
+
this.setFiltersConfig(filters);
|
|
20827
20822
|
this.applyingDashboardData = false;
|
|
20828
20823
|
this.cdr.detectChanges();
|
|
20829
20824
|
}
|
|
@@ -20831,14 +20826,68 @@ class DashboardBuilder {
|
|
|
20831
20826
|
if (!this.standalone())
|
|
20832
20827
|
return;
|
|
20833
20828
|
this.emittingDashboardData = true;
|
|
20829
|
+
const filters = [...this.filtersConfig()];
|
|
20830
|
+
const page = this.pageConfig();
|
|
20834
20831
|
this.dashboardData.set({
|
|
20835
|
-
page:
|
|
20832
|
+
page: page
|
|
20833
|
+
? {
|
|
20834
|
+
...page,
|
|
20835
|
+
dashboardConfig: {
|
|
20836
|
+
...(page.dashboardConfig ?? {}),
|
|
20837
|
+
filters,
|
|
20838
|
+
},
|
|
20839
|
+
}
|
|
20840
|
+
: null,
|
|
20836
20841
|
charts: this.charts(),
|
|
20837
20842
|
dialogs: this.dialogs(),
|
|
20838
|
-
filters
|
|
20843
|
+
filters,
|
|
20839
20844
|
});
|
|
20840
20845
|
this.emittingDashboardData = false;
|
|
20841
20846
|
}
|
|
20847
|
+
setFiltersConfig(filters) {
|
|
20848
|
+
const normalizedFilters = this.normalizeFiltersConfig(filters);
|
|
20849
|
+
this.filtersConfig.set([...normalizedFilters]);
|
|
20850
|
+
this.dashboardService.filters.set(normalizedFilters);
|
|
20851
|
+
this.pageConfig.update((page) => page
|
|
20852
|
+
? {
|
|
20853
|
+
...page,
|
|
20854
|
+
dashboardConfig: {
|
|
20855
|
+
...(page.dashboardConfig ?? {}),
|
|
20856
|
+
filters: [...normalizedFilters],
|
|
20857
|
+
},
|
|
20858
|
+
}
|
|
20859
|
+
: page);
|
|
20860
|
+
}
|
|
20861
|
+
normalizeFiltersConfig(filters) {
|
|
20862
|
+
const parsed = this.parseSerializedValue(filters);
|
|
20863
|
+
if (Array.isArray(parsed)) {
|
|
20864
|
+
return parsed;
|
|
20865
|
+
}
|
|
20866
|
+
return parsed ? [parsed] : [];
|
|
20867
|
+
}
|
|
20868
|
+
readSerializedObject(value) {
|
|
20869
|
+
const parsed = this.parseSerializedValue(value);
|
|
20870
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
20871
|
+
return null;
|
|
20872
|
+
}
|
|
20873
|
+
return parsed;
|
|
20874
|
+
}
|
|
20875
|
+
parseSerializedValue(value) {
|
|
20876
|
+
let current = value;
|
|
20877
|
+
while (typeof current === 'string') {
|
|
20878
|
+
const trimmed = current.trim();
|
|
20879
|
+
if (!trimmed) {
|
|
20880
|
+
return null;
|
|
20881
|
+
}
|
|
20882
|
+
try {
|
|
20883
|
+
current = JSON.parse(trimmed);
|
|
20884
|
+
}
|
|
20885
|
+
catch {
|
|
20886
|
+
return current;
|
|
20887
|
+
}
|
|
20888
|
+
}
|
|
20889
|
+
return current;
|
|
20890
|
+
}
|
|
20842
20891
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: DashboardBuilder, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20843
20892
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: DashboardBuilder, isStandalone: true, selector: "mt-dashboard-builder", inputs: { isPage: { classPropertyName: "isPage", publicName: "isPage", isSignal: true, isRequired: false, transformFunction: null }, pageTitle: { classPropertyName: "pageTitle", publicName: "pageTitle", isSignal: true, isRequired: false, transformFunction: null }, backButton: { classPropertyName: "backButton", publicName: "backButton", isSignal: true, isRequired: false, transformFunction: null }, pageId: { classPropertyName: "pageId", publicName: "pageId", isSignal: true, isRequired: false, transformFunction: null }, standalone: { classPropertyName: "standalone", publicName: "standalone", isSignal: true, isRequired: false, transformFunction: null }, services: { classPropertyName: "services", publicName: "services", isSignal: true, isRequired: false, transformFunction: null }, dashboardData: { classPropertyName: "dashboardData", publicName: "dashboardData", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, informativeContext: { classPropertyName: "informativeContext", publicName: "informativeContext", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dashboardData: "dashboardDataChange", pageChange: "pageChange", chartsChange: "chartsChange", onSave: "onSave", onBack: "onBack", onAddChart: "onAddChart", onEditChart: "onEditChart" }, host: { listeners: { "window:keydown": "onKeyDown($event)" } }, viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["contextMenu"], descendants: true, isSignal: true }, { propertyName: "gridsterContainer", first: true, predicate: ["gridsterContainer"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'dashboardBuilder'\">\r\n <!-- Shared Actions Template -->\r\n <ng-template #actionsTemplate let-inPage=\"inPage\">\r\n <mt-button\r\n [label]=\"t('addWidget')\"\r\n icon=\"general.plus\"\r\n (onClick)=\"toggleWidgetPalette()\"\r\n severity=\"primary\"\r\n size=\"small\"\r\n [rounded]=\"!inPage\"\r\n />\r\n\r\n <mt-button\r\n [label]=\"t('save')\"\r\n icon=\"general.save-02\"\r\n [loading]=\"saving()\"\r\n [disabled]=\"saving()\"\r\n (onClick)=\"saveDash()\"\r\n severity=\"primary\"\r\n size=\"small\"\r\n [rounded]=\"!inPage\"\r\n />\r\n\r\n <span [class]=\"'w-px h-5 bg-surface-300'\"></span>\r\n\r\n <mt-button\r\n [icon]=\"stopActionsOnCards() ? 'media.play' : 'media.stop'\"\r\n [tooltip]=\"stopActionsOnCards() ? t('activateActions') : t('stopActions')\"\r\n (onClick)=\"stopAndActiveActions()\"\r\n [severity]=\"'warn'\"\r\n [outlined]=\"true\"\r\n size=\"small\"\r\n [rounded]=\"!inPage\"\r\n />\r\n\r\n <mt-button\r\n icon=\"general.edit-05\"\r\n [tooltip]=\"t('pageSettings')\"\r\n (onClick)=\"addOrEditPage(pageConfig()!)\"\r\n [severity]=\"'help'\"\r\n [outlined]=\"true\"\r\n size=\"small\"\r\n [rounded]=\"!inPage\"\r\n />\r\n\r\n <mt-button\r\n icon=\"general.filter-lines\"\r\n [tooltip]=\"t('manageFilter')\"\r\n (onClick)=\"openManageFilter()\"\r\n [severity]=\"'info'\"\r\n [outlined]=\"true\"\r\n size=\"small\"\r\n [rounded]=\"!inPage\"\r\n />\r\n </ng-template>\r\n\r\n <!-- Page mode -->\r\n @if (isPage()) {\r\n <mt-page\r\n [title]=\"\r\n pageTitle() ||\r\n pageConfig()?.name?.[languageCode()] ||\r\n pageConfig()?.name?.['en'] ||\r\n t('builder')\r\n \"\r\n [backButton]=\"backButton()\"\r\n (backButtonClick)=\"onBack.emit()\"\r\n >\r\n <!-- Header actions -->\r\n <ng-template #headerEnd>\r\n <div class=\"flex items-center gap-2\">\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate; context: { inPage: true }\"\r\n />\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Content -->\r\n <ng-container *ngTemplateOutlet=\"builderContent\" />\r\n </mt-page>\r\n } @else {\r\n <!-- Non-page mode -->\r\n <ng-container *ngTemplateOutlet=\"builderContent\" />\r\n }\r\n\r\n <!-- Reusable builder content template -->\r\n <ng-template #builderContent>\r\n <div class=\"relative h-full min-h-[600px]\">\r\n <!-- Loading State -->\r\n @if (loading()) {\r\n <div class=\"flex items-center justify-center h-64\">\r\n <i class=\"mti mti-spinner-third mti-spin text-4xl text-primary\"></i>\r\n </div>\r\n }\r\n\r\n <!-- Main Content -->\r\n @if (!loading() && pageConfig()) {\r\n <!-- Fixed Actions Bar (only when NOT page mode) -->\r\n @if (!isPage()) {\r\n <div\r\n class=\"fixed bottom-4 left-1/2 -translate-x-1/2 z-50 flex items-center gap-2 bg-surface-0 rounded-full shadow-lg px-4 py-2 border border-surface-200\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate; context: { inPage: false }\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Gridster Container -->\r\n <gridster\r\n #gridsterContainer\r\n [options]=\"options\"\r\n class=\"h-full min-h-[500px] bg-surface-50!\"\r\n [class.is-page]=\"isPage()\"\r\n [class.pointer-events-none]=\"readonly()\"\r\n (dragover)=\"onGridDragOver($event)\"\r\n (drop)=\"onGridDrop($event)\"\r\n >\r\n @for (chart of charts() | filterByGroup: undefined; track $index) {\r\n <gridster-item\r\n [item]=\"chart\"\r\n class=\"bg-surface-0 rounded-lg shadow-sm border border-surface-200 overflow-hidden transition-all duration-200 hover:shadow-md hover:border-surface-300\"\r\n [class.ring-2]=\"isSelected(chart)\"\r\n [class.ring-primary]=\"isSelected(chart)\"\r\n [class.ring-offset-2]=\"isSelected(chart)\"\r\n (click)=\"onSelect(chart, $event)\"\r\n >\r\n <!-- Chart Content -->\r\n <div class=\"h-full w-full relative group\">\r\n <!-- Drag Handle -->\r\n @if (!readonly()) {\r\n <div\r\n class=\"drag-handler absolute top-0 left-0 right-0 h-6 cursor-move bg-gradient-to-b from-black/10 to-transparent opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center z-10\"\r\n >\r\n <i\r\n class=\"mti mti-grip-horizontal text-white/70 text-sm\"\r\n ></i>\r\n </div>\r\n }\r\n\r\n <!-- Action Buttons -->\r\n @if (!readonly()) {\r\n <div\r\n class=\"absolute top-1 right-1 flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity z-20\"\r\n >\r\n <!-- Quick Manage Button -->\r\n @if (showQuickManageButton(chart)) {\r\n <mt-button\r\n icon=\"editor.palette\"\r\n [tooltip]=\"t('quickManage')\"\r\n (onClick)=\"openQuickManage($event, chart)\"\r\n severity=\"primary\"\r\n size=\"small\"\r\n [rounded]=\"true\"\r\n />\r\n }\r\n\r\n <!-- Breadcrumb Button (for topbar) -->\r\n @if (\r\n chart.config?.clientConfig?.componentName === \"topbar\"\r\n ) {\r\n <mt-button\r\n icon=\"general.slash-divider\"\r\n [tooltip]=\"t('manageBreadcrumb')\"\r\n (onClick)=\"openBreadcrumb(chart)\"\r\n severity=\"info\"\r\n size=\"small\"\r\n [rounded]=\"true\"\r\n />\r\n }\r\n\r\n <!-- Edit Button -->\r\n @if (\r\n chart.config?.clientConfig?.componentName !== \"header\" &&\r\n chart.config?.clientConfig?.componentName !== \"topbar\" &&\r\n chart.config?.clientConfig?.componentName !== \"Group\"\r\n ) {\r\n <mt-button\r\n icon=\"general.edit-05\"\r\n [tooltip]=\"t('edit')\"\r\n (onClick)=\"editItem(chart)\"\r\n severity=\"warn\"\r\n size=\"small\"\r\n [rounded]=\"true\"\r\n />\r\n }\r\n\r\n <!-- Delete Button -->\r\n @if (\r\n chart.config?.clientConfig?.componentName === \"Group\"\r\n ) {\r\n <mt-button\r\n icon=\"general.trash-01\"\r\n [tooltip]=\"t('removeGroup')\"\r\n (onClick)=\"removeGroup(chart)\"\r\n severity=\"danger\"\r\n size=\"small\"\r\n [rounded]=\"true\"\r\n />\r\n } @else {\r\n <mt-button\r\n icon=\"general.trash-01\"\r\n [tooltip]=\"t('delete')\"\r\n (onClick)=\"deleteItem(chart)\"\r\n severity=\"danger\"\r\n size=\"small\"\r\n [rounded]=\"true\"\r\n />\r\n }\r\n\r\n <!-- Advanced/Dialog Actions Button (pipe handles all conditions) -->\r\n @let dialogActions =\r\n chart | getChartActions: chartActionsContext;\r\n @if (dialogActions.length > 0) {\r\n <mt-button\r\n icon=\"general.dots-vertical\"\r\n [tooltip]=\"t('advanced')\"\r\n (onClick)=\"advancedPopover.toggle($event)\"\r\n severity=\"info\"\r\n size=\"small\"\r\n [rounded]=\"true\"\r\n />\r\n <p-popover #advancedPopover appendTo=\"body\">\r\n <div class=\"flex flex-col gap-1 min-w-[160px]\">\r\n @for (action of dialogActions; track action.label) {\r\n <mt-button\r\n [label]=\"action.label\"\r\n [icon]=\"action.icon\"\r\n severity=\"secondary\"\r\n [text]=\"true\"\r\n size=\"small\"\r\n (onClick)=\"\r\n action.command?.({\r\n originalEvent: $event,\r\n item: action,\r\n });\r\n advancedPopover.hide()\r\n \"\r\n />\r\n }\r\n </div>\r\n </p-popover>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Chart Rendering -->\r\n @if (!chart.loading) {\r\n <mt-dashboard-item\r\n [config]=\"chart.config\"\r\n [chartTypeId]=\"chart.chartTypeId\"\r\n [readonly]=\"readonly()\"\r\n [pageName]=\"\r\n pageConfig()?.name?.[languageCode()] ||\r\n pageConfig()?.name?.['en'] ||\r\n pageConfig()?.name?.['ar'] ||\r\n ''\r\n \"\r\n />\r\n } @else {\r\n <div class=\"flex items-center justify-center h-full\">\r\n <i\r\n class=\"mti mti-spinner-third mti-spin text-2xl text-primary\"\r\n ></i>\r\n </div>\r\n }\r\n\r\n <!-- Group Children -->\r\n @if (chart.config?.clientConfig?.componentName === \"Group\") {\r\n <div class=\"h-full flex flex-col p-2\">\r\n @for (\r\n childChart of charts()\r\n | filterByGroup\r\n : chart.config?.serviceConfig?.dashboardId;\r\n track childChart.config?.serviceConfig?.dashboardId;\r\n let idx = $index\r\n ) {\r\n @if (idx === chart.selectedGroupIndex) {\r\n <div class=\"flex-1 min-h-0\">\r\n <mt-dashboard-item\r\n [config]=\"childChart.config\"\r\n [chartTypeId]=\"childChart.chartTypeId\"\r\n [readonly]=\"readonly()\"\r\n [pageName]=\"\r\n pageConfig()?.name?.[languageCode()] ||\r\n pageConfig()?.name?.['en'] ||\r\n pageConfig()?.name?.['ar'] ||\r\n ''\r\n \"\r\n />\r\n </div>\r\n }\r\n }\r\n\r\n <!-- Group Tabs -->\r\n <div\r\n class=\"absolute bottom-0 left-0 right-0 flex gap-1 p-1 bg-surface-100 rounded-b-lg overflow-x-auto\"\r\n >\r\n @for (\r\n childChart of charts()\r\n | filterByGroup\r\n : chart.config?.serviceConfig?.dashboardId;\r\n track childChart.config?.serviceConfig?.dashboardId;\r\n let idx = $index\r\n ) {\r\n <mt-button\r\n [label]=\"\r\n childChart.config?.clientConfig?.title?.[\r\n languageCode()\r\n ] ||\r\n childChart.config?.clientConfig?.title?.['en'] ||\r\n 'Chart ' + (idx + 1)\r\n \"\r\n [severity]=\"\r\n idx === chart.selectedGroupIndex\r\n ? 'primary'\r\n : 'secondary'\r\n \"\r\n [text]=\"idx !== chart.selectedGroupIndex\"\r\n size=\"small\"\r\n (onClick)=\"chart.selectedGroupIndex = idx\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </gridster-item>\r\n }\r\n </gridster>\r\n\r\n <!-- Context Menu -->\r\n <p-contextMenu #contextMenu [model]=\"menuItems()\" appendTo=\"body\" />\r\n }\r\n\r\n <!-- Empty State -->\r\n @if (!loading() && !pageConfig()) {\r\n <div\r\n class=\"flex flex-col items-center justify-center h-64 text-muted-color\"\r\n >\r\n <i class=\"mti mti-layout text-6xl mb-4\"></i>\r\n <p class=\"text-lg\">{{ t(\"noPageSelected\") }}</p>\r\n <p class=\"text-sm\">{{ t(\"selectPageToStart\") }}</p>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [":host{display:block;height:100%}gridster{min-height:calc(100vh - 120px);height:100%}gridster .gridster-column{border-left:1px solid var(--p-primary-100)!important;border-right:1px solid var(--p-primary-100)!important}gridster .gridster-row{border-top:1px solid var(--p-primary-100)!important;border-bottom:1px solid var(--p-primary-100)!important}gridster.is-page{min-height:calc(100vh - 200px)}.mti-spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.gridster-drop-indicator{position:absolute;background:var(--p-primary-100);border:2px dashed var(--p-primary-400);border-radius:8px;pointer-events:none;z-index:100}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: GridsterModule }, { kind: "component", type: i2$2.GridsterComponent, selector: "gridster", inputs: ["options"] }, { kind: "component", type: i2$2.GridsterItemComponent, selector: "gridster-item", inputs: ["item"], outputs: ["itemInit", "itemChange", "itemResize"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: Page, selector: "mt-page", inputs: ["backButton", "backButtonIcon", "avatarIcon", "avatarStyle", "avatarShape", "title", "tabs", "activeTab", "contentClass", "contentId"], outputs: ["backButtonClick", "tabChange"] }, { kind: "component", type: Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions", "motionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: ContextMenuModule }, { kind: "component", type: i3$1.ContextMenu, selector: "p-contextMenu, p-contextmenu, p-context-menu", inputs: ["model", "triggerEvent", "target", "global", "style", "styleClass", "autoZIndex", "baseZIndex", "id", "breakpoint", "ariaLabel", "ariaLabelledBy", "pressDelay", "appendTo", "motionOptions"], outputs: ["onShow", "onHide"] }, { kind: "component", type: DashboardItem, selector: "mt-dashboard-item", inputs: ["config", "chartTypeId", "readonly", "pageName", "inGroup", "isDialog", "queryParams", "extraFilters", "ignoreQueryFilter"], outputs: ["actionTriggered"] }, { kind: "pipe", type: FilterByGroupPipe, name: "filterByGroup" }, { kind: "pipe", type: GetChartActionsPipe, name: "getChartActions" }], encapsulation: i0.ViewEncapsulation.None });
|
|
20844
20893
|
}
|