@masterteam/dashboard-builder 0.0.15 → 0.0.17

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/package.json CHANGED
@@ -1,28 +1,28 @@
1
1
  {
2
2
  "name": "@masterteam/dashboard-builder",
3
- "version": "0.0.15",
3
+ "version": "0.0.17",
4
4
  "publishConfig": {
5
5
  "directory": "../../../dist/masterteam/dashboard-builder",
6
6
  "linkDirectory": true,
7
7
  "access": "public"
8
8
  },
9
9
  "peerDependencies": {
10
- "@angular/common": "^21.0.3",
11
- "@angular/core": "^21.0.3",
12
- "@angular/forms": "^21.0.3",
13
- "@angular/cdk": "^21.0.2",
14
- "@angular/router": "^21.0.3",
15
- "@primeuix/themes": "^2.0.2",
16
- "@tailwindcss/postcss": "^4.1.17",
17
- "@jsverse/transloco": "^8.0.2",
10
+ "@angular/common": "^21.2.8",
11
+ "@angular/core": "^21.2.8",
12
+ "@angular/forms": "^21.2.8",
13
+ "@angular/cdk": "^21.2.6",
14
+ "@angular/router": "^21.2.8",
15
+ "@primeuix/themes": "^2.0.3",
16
+ "@tailwindcss/postcss": "^4.2.2",
17
+ "@jsverse/transloco": "^8.3.0",
18
18
  "angular-gridster2": "^18.0.1",
19
19
  "echarts": "^5.5.0",
20
- "postcss": "^8.5.6",
21
- "primeng": "21.0.1",
20
+ "postcss": "^8.5.9",
21
+ "primeng": "21.1.5",
22
22
  "rxjs": "^7.8.2",
23
- "tailwindcss": "^4.1.17",
24
- "@masterteam/components": "^0.0.124",
25
- "@masterteam/icons": "^0.0.14"
23
+ "tailwindcss": "^4.2.2",
24
+ "@masterteam/icons": "^0.0.14",
25
+ "@masterteam/components": "^0.0.139"
26
26
  },
27
27
  "dependencies": {
28
28
  "tslib": "^2.8.1",
@@ -39,5 +39,6 @@
39
39
  "types": "./types/masterteam-dashboard-builder.d.ts",
40
40
  "default": "./fesm2022/masterteam-dashboard-builder.mjs"
41
41
  }
42
- }
42
+ },
43
+ "type": "module"
43
44
  }
@@ -6,6 +6,7 @@ import { ContextMenu } from 'primeng/contextmenu';
6
6
  import { MenuItem } from 'primeng/api';
7
7
  import * as _angular_forms from '@angular/forms';
8
8
  import { ControlValueAccessor, FormGroup, FormArray, ValidationErrors } from '@angular/forms';
9
+ import { EntityData as EntityData$1 } from '@masterteam/components/entities';
9
10
  import { MTIcon } from '@masterteam/icons';
10
11
  import * as rxjs from 'rxjs';
11
12
  import { Observable } from 'rxjs';
@@ -736,6 +737,9 @@ declare class DashboardBuilder implements OnInit, OnDestroy {
736
737
  private dragStartY;
737
738
  private applyingDashboardData;
738
739
  private emittingDashboardData;
740
+ private readonly boundHandleDragOver;
741
+ private readonly boundHandleDrop;
742
+ private readonly boundHandleDragEnd;
739
743
  readonly menuItems: _angular_core.Signal<MenuItem[]>;
740
744
  ngOnInit(): void;
741
745
  ngOnDestroy(): void;
@@ -921,10 +925,6 @@ declare class DashboardViewer implements OnInit, OnDestroy {
921
925
  * Get icon from configAsType
922
926
  */
923
927
  getItemIcon(item: DashboardChartItem): string | null;
924
- /**
925
- * Get breadcrumb items for topbar
926
- */
927
- getBreadcrumb(item: DashboardChartItem): any[];
928
928
  /**
929
929
  * Get chart type
930
930
  */
@@ -1094,7 +1094,7 @@ type RequestType = 'level' | 'levellog' | 'log' | 'custom' | 'snapShot' | 'level
1094
1094
  /**
1095
1095
  * Chart type to component mapping
1096
1096
  */
1097
- type ComponentType = 'chart' | 'map' | 'BackgroundTextChart' | 'chartCustomWithCardInfo' | 'listOfcharts' | 'listOfCardsStatistic' | 'cardsStatistic' | 'header' | 'footer' | 'label' | 'listOfLevelCards' | 'dialog' | 'table' | 'phaseGateTable' | 'topbar' | 'timeline' | 'timelineProjectDependencies' | 'lastHistoryLevelCard' | 'entityPreview' | 'clusterStackedChart' | 'listComponentSplusCard' | 'splitterChart' | 'repeater' | 'levelCardsWithStatic' | 'phaseGateStepperCard' | 'Group';
1097
+ type ComponentType = 'chart' | 'map' | 'BackgroundTextChart' | 'chartCustomWithCardInfo' | 'listOfcharts' | 'listOfCardsStatistic' | 'cardsStatistic' | 'header' | 'footer' | 'label' | 'listOfLevelCards' | 'dialog' | 'table' | 'phaseGateTable' | 'topbar' | 'timeline' | 'timelineProjectDependencies' | 'lastHistoryLevelCard' | 'entitiesPreview' | 'entityPreview' | 'clusterStackedChart' | 'listComponentSplusCard' | 'splitterChart' | 'repeater' | 'levelCardsWithStatic' | 'phaseGateStepperCard' | 'Group';
1098
1098
  /**
1099
1099
  * EChart series data item
1100
1100
  */
@@ -1255,6 +1255,8 @@ declare class DashboardItem implements OnInit, OnDestroy {
1255
1255
  readonly chartTypeId: _angular_core.InputSignal<string | number | undefined>;
1256
1256
  /** Read-only mode */
1257
1257
  readonly readonly: _angular_core.InputSignal<boolean>;
1258
+ /** Parent page/dashboard name for topbar breadcrumb fallbacks */
1259
+ readonly pageName: _angular_core.InputSignal<string>;
1258
1260
  /** Whether this item is inside a group */
1259
1261
  readonly inGroup: _angular_core.InputSignal<boolean>;
1260
1262
  /** Whether this item is rendered inside a dialog */
@@ -1327,7 +1329,7 @@ declare class DashboardItem implements OnInit, OnDestroy {
1327
1329
  private buildParentFilter;
1328
1330
  private mergeRequestFilters;
1329
1331
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DashboardItem, never>;
1330
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DashboardItem, "mt-dashboard-item", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "chartTypeId": { "alias": "chartTypeId"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "inGroup": { "alias": "inGroup"; "required": false; "isSignal": true; }; "isDialog": { "alias": "isDialog"; "required": false; "isSignal": true; }; "queryParams": { "alias": "queryParams"; "required": false; "isSignal": true; }; "extraFilters": { "alias": "extraFilters"; "required": false; "isSignal": true; }; "ignoreQueryFilter": { "alias": "ignoreQueryFilter"; "required": false; "isSignal": true; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
1332
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DashboardItem, "mt-dashboard-item", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "chartTypeId": { "alias": "chartTypeId"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "pageName": { "alias": "pageName"; "required": false; "isSignal": true; }; "inGroup": { "alias": "inGroup"; "required": false; "isSignal": true; }; "isDialog": { "alias": "isDialog"; "required": false; "isSignal": true; }; "queryParams": { "alias": "queryParams"; "required": false; "isSignal": true; }; "extraFilters": { "alias": "extraFilters"; "required": false; "isSignal": true; }; "ignoreQueryFilter": { "alias": "ignoreQueryFilter"; "required": false; "isSignal": true; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
1331
1333
  }
1332
1334
 
1333
1335
  interface HeaderCardConfig$1 {
@@ -1840,6 +1842,116 @@ declare class EntityInfoComponent {
1840
1842
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntityInfoComponent, "mt-entity-info", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "displayType": { "alias": "displayType"; "required": false; "isSignal": true; }; "extraInfoData": { "alias": "extraInfoData"; "required": false; "isSignal": true; }; "limitWords": { "alias": "limitWords"; "required": false; "isSignal": true; }; "customClass": { "alias": "customClass"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1841
1843
  }
1842
1844
 
1845
+ interface DisplayAreaItem {
1846
+ key?: string;
1847
+ order?: number;
1848
+ }
1849
+ interface DashboardStatusDetails {
1850
+ color?: string;
1851
+ description?: string;
1852
+ }
1853
+ interface DashboardStatusValue {
1854
+ name?: string;
1855
+ details?: DashboardStatusDetails;
1856
+ }
1857
+ interface DashboardStatus {
1858
+ value?: DashboardStatusValue;
1859
+ name?: string;
1860
+ color?: string;
1861
+ details?: DashboardStatusDetails;
1862
+ }
1863
+ interface DashboardCounter {
1864
+ value?: string | number;
1865
+ }
1866
+ interface DashboardCardProperty extends EntityData$1 {
1867
+ label?: string | Record<string, string>;
1868
+ displayAreas?: DisplayAreaItem[];
1869
+ displayArea?: DisplayAreaItem[];
1870
+ }
1871
+ interface DashboardCardData {
1872
+ id?: number | string;
1873
+ name?: string;
1874
+ label?: string;
1875
+ title?: string;
1876
+ currentPhase?: string;
1877
+ status?: DashboardStatus;
1878
+ props?: DashboardCardProperty[];
1879
+ properties?: DashboardCardProperty[];
1880
+ issuesCounts?: DashboardCounter;
1881
+ risksCounts?: DashboardCounter;
1882
+ milestonesCounts?: DashboardCounter;
1883
+ [key: string]: unknown;
1884
+ }
1885
+ interface DashboardCardGroup {
1886
+ name?: string;
1887
+ label?: string;
1888
+ title?: string;
1889
+ data?: DashboardCardData[];
1890
+ [key: string]: unknown;
1891
+ }
1892
+ type DashboardTabItem = DashboardCardGroup | DashboardCardData;
1893
+ interface PropsConfigAsIndexItem$1 {
1894
+ width?: string;
1895
+ hidden?: boolean;
1896
+ }
1897
+ interface DashboardCardTabOption {
1898
+ label: string;
1899
+ value: number;
1900
+ }
1901
+ interface DashboardCardViewModel {
1902
+ trackId: string | number;
1903
+ card: DashboardCardData;
1904
+ entities: EntityData$1[];
1905
+ bodyProps: DashboardCardProperty[];
1906
+ attachments: unknown[];
1907
+ hasCounters: boolean;
1908
+ }
1909
+ declare class PropertiesCardComponent implements OnInit, OnDestroy {
1910
+ private readonly storeService;
1911
+ private readonly transloco;
1912
+ private readonly subscription;
1913
+ readonly dashboardId: _angular_core.InputSignal<string | number>;
1914
+ readonly inGroup: _angular_core.InputSignal<boolean>;
1915
+ readonly onAction: _angular_core.OutputEmitterRef<{
1916
+ type: string;
1917
+ data: unknown;
1918
+ }>;
1919
+ readonly configurationItem: _angular_core.WritableSignal<ItemConfig | null>;
1920
+ readonly cardData: _angular_core.WritableSignal<DashboardTabItem[][]>;
1921
+ readonly tabSelected: _angular_core.WritableSignal<number>;
1922
+ readonly langCode: _angular_core.Signal<string>;
1923
+ readonly isPropertiesCard: _angular_core.Signal<boolean>;
1924
+ readonly galleryMode: _angular_core.Signal<boolean>;
1925
+ readonly currentTabItems: _angular_core.Signal<DashboardTabItem[]>;
1926
+ readonly selectedProperties: _angular_core.Signal<string[]>;
1927
+ readonly propsConfigAsIndex: _angular_core.Signal<PropsConfigAsIndexItem$1[]>;
1928
+ readonly tabOptions: _angular_core.Signal<DashboardCardTabOption[]>;
1929
+ readonly showTabs: _angular_core.Signal<boolean>;
1930
+ readonly currentTabCards: _angular_core.Signal<DashboardCardViewModel[]>;
1931
+ constructor();
1932
+ ngOnInit(): void;
1933
+ ngOnDestroy(): void;
1934
+ onCardClick(card: DashboardCardData): void;
1935
+ private normalizePropertyKey;
1936
+ private clampEntitySize;
1937
+ private resolveEntitySize;
1938
+ private isCardGroup;
1939
+ private extractCards;
1940
+ private getCardProps;
1941
+ private orderProperties;
1942
+ private buildPropertiesCardEntities;
1943
+ private buildLegacyBodyProps;
1944
+ private getAttachments;
1945
+ private hasCounters;
1946
+ private resolveTabLabel;
1947
+ private readString;
1948
+ private normalizeEntityProperty;
1949
+ private resolveEntityName;
1950
+ private readLocalizedText;
1951
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PropertiesCardComponent, never>;
1952
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PropertiesCardComponent, "mt-properties-card, mt-entities-preview-card", never, { "dashboardId": { "alias": "dashboardId"; "required": true; "isSignal": true; }; "inGroup": { "alias": "inGroup"; "required": false; "isSignal": true; }; }, { "onAction": "onAction"; }, never, never, true, never>;
1953
+ }
1954
+
1843
1955
  interface PropertyConfig {
1844
1956
  width?: string;
1845
1957
  border?: string[];
@@ -1847,7 +1959,7 @@ interface PropertyConfig {
1847
1959
  colorAsProperty?: string;
1848
1960
  }
1849
1961
  interface ProcessedProperty {
1850
- propInfo: any;
1962
+ propInfo: EntityData$1;
1851
1963
  config: PropertyConfig;
1852
1964
  }
1853
1965
  declare class EntityPreviewCardComponent implements OnInit, OnDestroy {
@@ -1872,6 +1984,9 @@ declare class EntityPreviewCardComponent implements OnInit, OnDestroy {
1872
1984
  * Get current language code
1873
1985
  */
1874
1986
  private getLanguageCode;
1987
+ private normalizeEntityProperty;
1988
+ private resolveEntityName;
1989
+ private readLocalizedText;
1875
1990
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EntityPreviewCardComponent, never>;
1876
1991
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntityPreviewCardComponent, "mt-entity-preview-card", never, { "dashboardId": { "alias": "dashboardId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1877
1992
  }
@@ -1906,6 +2021,8 @@ declare class HeaderCardComponent implements OnInit, OnDestroy {
1906
2021
  readonly styleConfig: _angular_core.Signal<_masterteam_dashboard_builder.StyleConfig>;
1907
2022
  /** Card style config */
1908
2023
  readonly cardStyleConfig: _angular_core.Signal<any>;
2024
+ /** Config as type */
2025
+ readonly configAsType: _angular_core.Signal<Record<string, any>>;
1909
2026
  /** Cols from dimensions */
1910
2027
  readonly cols: _angular_core.Signal<number>;
1911
2028
  /** Is full width (cols == 36) */
@@ -1922,6 +2039,12 @@ declare class HeaderCardComponent implements OnInit, OnDestroy {
1922
2039
  readonly iconColor: _angular_core.Signal<any>;
1923
2040
  /** Icon background color */
1924
2041
  readonly iconBgColor: _angular_core.Signal<any>;
2042
+ /** Inner card padding */
2043
+ readonly padding: _angular_core.Signal<number>;
2044
+ /** Quick border color */
2045
+ readonly borderColor: _angular_core.Signal<string>;
2046
+ /** Whether explicit side borders are configured */
2047
+ readonly hasExplicitSideBorders: _angular_core.Signal<boolean>;
1925
2048
  /** Font size for title */
1926
2049
  readonly fontSizeTitle: _angular_core.Signal<string>;
1927
2050
  /** Container styles from StyleConfig */
@@ -1944,82 +2067,6 @@ declare class HeaderCardComponent implements OnInit, OnDestroy {
1944
2067
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderCardComponent, "mt-header-card", never, { "dashboardId": { "alias": "dashboardId"; "required": true; "isSignal": true; }; }, { "onAction": "onAction"; }, never, never, true, never>;
1945
2068
  }
1946
2069
 
1947
- interface LevelCardData$1 {
1948
- id: number;
1949
- name: string;
1950
- currentPhase?: string;
1951
- props: PropertyData[];
1952
- status?: PropertyData;
1953
- [key: string]: any;
1954
- }
1955
- interface PropertyData {
1956
- key: string;
1957
- normalizedKey: string;
1958
- viewType: string;
1959
- value: any;
1960
- displayAreas?: {
1961
- key: string;
1962
- order: number;
1963
- }[];
1964
- displayArea?: {
1965
- key: string;
1966
- order: number;
1967
- }[];
1968
- }
1969
- declare class LevelCardListComponent implements OnInit, OnDestroy {
1970
- private readonly storeService;
1971
- private readonly transloco;
1972
- private readonly subscription;
1973
- /** Dashboard ID */
1974
- readonly dashboardId: _angular_core.InputSignal<string | number>;
1975
- /** Whether inside a group */
1976
- readonly inGroup: _angular_core.InputSignal<boolean>;
1977
- /** Properties to hide */
1978
- readonly hideProperties: _angular_core.InputSignal<string[]>;
1979
- /** Action event output */
1980
- readonly onAction: _angular_core.OutputEmitterRef<{
1981
- type: string;
1982
- data: any;
1983
- }>;
1984
- /** Configuration item */
1985
- readonly configurationItem: _angular_core.WritableSignal<ItemConfig | null>;
1986
- /** Card data from handler */
1987
- readonly cardData: _angular_core.WritableSignal<any[][]>;
1988
- /** Currently selected tab index */
1989
- readonly tabSelected: _angular_core.WritableSignal<number>;
1990
- /** Language code */
1991
- readonly langCode: _angular_core.Signal<string>;
1992
- /** Gallery mode flag */
1993
- readonly galleryMode: _angular_core.Signal<boolean>;
1994
- /** Tabs from config */
1995
- readonly tabs: _angular_core.Signal<{
1996
- ar: string | undefined;
1997
- en: string | undefined;
1998
- }[]>;
1999
- /** Current tab data */
2000
- readonly currentTabData: _angular_core.Signal<any[]>;
2001
- ngOnInit(): void;
2002
- ngOnDestroy(): void;
2003
- /**
2004
- * Get properties for card body (displayArea: levelCard_body)
2005
- */
2006
- getBodyProps(card: LevelCardData$1): PropertyData[];
2007
- /**
2008
- * Get attachments for gallery mode
2009
- */
2010
- getAttachments(card: LevelCardData$1): any[];
2011
- /**
2012
- * Check if card has any counters
2013
- */
2014
- hasCounters(card: any): boolean;
2015
- /**
2016
- * Handle card click
2017
- */
2018
- onCardClick(card: LevelCardData$1): void;
2019
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<LevelCardListComponent, never>;
2020
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LevelCardListComponent, "mt-level-card-list", never, { "dashboardId": { "alias": "dashboardId"; "required": true; "isSignal": true; }; "inGroup": { "alias": "inGroup"; "required": false; "isSignal": true; }; "hideProperties": { "alias": "hideProperties"; "required": false; "isSignal": true; }; }, { "onAction": "onAction"; }, never, never, true, never>;
2021
- }
2022
-
2023
2070
  declare class ListStatisticCardComponent implements OnInit, OnDestroy {
2024
2071
  private readonly storeService;
2025
2072
  private readonly subscription;
@@ -2218,6 +2265,42 @@ declare class TableCardComponent implements OnInit, OnDestroy {
2218
2265
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableCardComponent, "mt-table-card", never, { "dashboardId": { "alias": "dashboardId"; "required": true; "isSignal": true; }; "inGroup": { "alias": "inGroup"; "required": false; "isSignal": true; }; }, { "onAction": "onAction"; }, never, never, true, never>;
2219
2266
  }
2220
2267
 
2268
+ interface TopbarBreadcrumbItem {
2269
+ label: string;
2270
+ link: string;
2271
+ }
2272
+ declare class TopbarCardComponent implements OnInit, OnDestroy {
2273
+ private readonly storeService;
2274
+ private readonly itemStoreService;
2275
+ private readonly subscription;
2276
+ readonly dashboardId: _angular_core.InputSignal<string | number>;
2277
+ readonly defaultBreadcrumbLabel: _angular_core.InputSignal<string>;
2278
+ readonly configurationItem: _angular_core.WritableSignal<ItemConfig | null>;
2279
+ readonly languageCode: _angular_core.Signal<string>;
2280
+ readonly queryParams: _angular_core.Signal<Record<string, any>>;
2281
+ readonly styleConfig: _angular_core.Signal<Record<string, any>>;
2282
+ readonly configAsType: _angular_core.Signal<Record<string, any>>;
2283
+ readonly cardStyleConfig: _angular_core.Signal<Record<string, any>>;
2284
+ readonly title: _angular_core.Signal<string>;
2285
+ readonly subtitleText: _angular_core.Signal<string>;
2286
+ readonly showSubtitle: _angular_core.Signal<boolean>;
2287
+ readonly icon: _angular_core.Signal<any>;
2288
+ readonly iconColor: _angular_core.Signal<any>;
2289
+ readonly iconBackgroundColor: _angular_core.Signal<any>;
2290
+ readonly borderColor: _angular_core.Signal<any>;
2291
+ readonly borderWidth: _angular_core.Signal<0 | 1>;
2292
+ readonly padding: _angular_core.Signal<number>;
2293
+ readonly titleFontSize: _angular_core.Signal<number>;
2294
+ readonly subtitleFontSize: _angular_core.Signal<number>;
2295
+ readonly subtitleColor: _angular_core.Signal<any>;
2296
+ readonly breadcrumbs: _angular_core.Signal<TopbarBreadcrumbItem[]>;
2297
+ ngOnInit(): void;
2298
+ ngOnDestroy(): void;
2299
+ isExternalLink(link: string): boolean;
2300
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TopbarCardComponent, never>;
2301
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TopbarCardComponent, "mt-topbar-card", never, { "dashboardId": { "alias": "dashboardId"; "required": true; "isSignal": true; }; "defaultBreadcrumbLabel": { "alias": "defaultBreadcrumbLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2302
+ }
2303
+
2221
2304
  declare class DashboardItemStoreService {
2222
2305
  /** Store for all dashboard items, keyed by dashboardId */
2223
2306
  private itemsStore;
@@ -3577,6 +3660,41 @@ declare class DynamicFiltersConfig implements ControlValueAccessor {
3577
3660
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicFiltersConfig, "mt-dynamic-filters-config", never, { "lookups": { "alias": "lookups"; "required": false; "isSignal": true; }; "levelsSchema": { "alias": "levelsSchema"; "required": false; "isSignal": true; }; "levelLogs": { "alias": "levelLogs"; "required": false; "isSignal": true; }; "productType": { "alias": "productType"; "required": false; "isSignal": true; }; }, { "loadLevelLogs": "loadLevelLogs"; }, never, never, true, never>;
3578
3661
  }
3579
3662
 
3663
+ interface DefaultControlConfig {
3664
+ title: string;
3665
+ titleFontSize: number;
3666
+ titleColor: string;
3667
+ showSubtitle: boolean;
3668
+ subtitle: string;
3669
+ subtitleFontSize: number;
3670
+ subtitleColor: string;
3671
+ icon: string;
3672
+ iconColor: string;
3673
+ iconBackgroundColor: string;
3674
+ backgroundColor: string;
3675
+ borderColor: string;
3676
+ borderRadius: number;
3677
+ padding: number;
3678
+ }
3679
+ declare class DefaultControlUi implements ControlValueAccessor {
3680
+ readonly showIconSettings: _angular_core.InputSignal<boolean>;
3681
+ readonly layoutComponent: _angular_core.InputSignal<"header" | "topbar" | null>;
3682
+ readonly config: _angular_core.WritableSignal<DefaultControlConfig>;
3683
+ readonly fontSizeOptions: {
3684
+ label: string;
3685
+ value: number;
3686
+ }[];
3687
+ private onChange;
3688
+ private onTouched;
3689
+ readonly supportsSubtitle: _angular_core.Signal<boolean>;
3690
+ writeValue(value: DefaultControlConfig): void;
3691
+ registerOnChange(fn: (value: DefaultControlConfig) => void): void;
3692
+ registerOnTouched(fn: () => void): void;
3693
+ updateConfig(partial: Partial<DefaultControlConfig>): void;
3694
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DefaultControlUi, never>;
3695
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DefaultControlUi, "mt-default-control-ui", never, { "showIconSettings": { "alias": "showIconSettings"; "required": false; "isSignal": true; }; "layoutComponent": { "alias": "layoutComponent"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3696
+ }
3697
+
3580
3698
  declare class ChartSettingsDrawer {
3581
3699
  private dialogRef;
3582
3700
  private drawerConfig;
@@ -3586,7 +3704,11 @@ declare class ChartSettingsDrawer {
3586
3704
  constructor();
3587
3705
  /** Active tab: 'display' or 'chartControls' */
3588
3706
  readonly activeTab: _angular_core.WritableSignal<string>;
3589
- /** Tab options - always show Display, show Chart Controls only when a chart control UI exists */
3707
+ /** Layout widgets use quick controls only */
3708
+ readonly showDisplayTab: _angular_core.Signal<boolean>;
3709
+ readonly isLayoutItem: _angular_core.Signal<boolean>;
3710
+ readonly layoutComponentName: _angular_core.Signal<"header" | "topbar" | null>;
3711
+ /** Tab options - hide Display for layout widgets, show Chart Controls when a chart control UI exists */
3590
3712
  readonly tabOptions: _angular_core.Signal<{
3591
3713
  label: string;
3592
3714
  value: string;
@@ -3598,8 +3720,8 @@ declare class ChartSettingsDrawer {
3598
3720
  readonly itemConfig: _angular_core.Signal<ItemConfig | null>;
3599
3721
  /** Determine the type of manage UI to show */
3600
3722
  readonly manageType: _angular_core.Signal<QuickManageType>;
3601
- /** Default config (full config for DefaultControlUi) */
3602
- readonly defaultConfig: _angular_core.Signal<{}>;
3723
+ /** Default control config mapped from item config */
3724
+ readonly defaultControlConfig: _angular_core.Signal<DefaultControlConfig>;
3603
3725
  /** Pie chart config - note: typo "Overried" matches old implementation */
3604
3726
  readonly pieConfig: _angular_core.Signal<any>;
3605
3727
  /** Bar chart config */
@@ -3609,7 +3731,7 @@ declare class ChartSettingsDrawer {
3609
3731
  /** Snapshot bar chart config */
3610
3732
  readonly snapshotBarConfig: _angular_core.Signal<any>;
3611
3733
  /** Update default config */
3612
- onDefaultConfigChange(config: any): void;
3734
+ onDefaultConfigChange(config: DefaultControlConfig): void;
3613
3735
  /** Update pie chart config - note: typo "Overried" matches old implementation */
3614
3736
  onPieConfigChange(config: any): void;
3615
3737
  /** Update bar chart config */
@@ -3624,6 +3746,7 @@ declare class ChartSettingsDrawer {
3624
3746
  apply(): void;
3625
3747
  /** Close without changes */
3626
3748
  close(): void;
3749
+ private isLayoutComponent;
3627
3750
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartSettingsDrawer, never>;
3628
3751
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartSettingsDrawer, "mt-chart-settings-drawer", never, {}, {}, never, never, true, never>;
3629
3752
  }
@@ -3759,6 +3882,16 @@ interface PropsConfigAsIndexItem {
3759
3882
  hidden?: boolean;
3760
3883
  border?: string[];
3761
3884
  }
3885
+ interface PropertyOption {
3886
+ label: string;
3887
+ value: string;
3888
+ }
3889
+ interface PropertiesViewRow {
3890
+ key: string;
3891
+ label: string;
3892
+ index: number;
3893
+ config: PropsConfigAsIndexItem;
3894
+ }
3762
3895
  /** Format X-Axis configuration */
3763
3896
  interface FormatXAxisConfig {
3764
3897
  type?: string | null;
@@ -3814,6 +3947,7 @@ declare class DisplaySettings {
3814
3947
  readonly fieldsToShow: _angular_core.Signal<string>;
3815
3948
  /** Check if a field should be shown */
3816
3949
  shouldShowField(fieldName: string): boolean;
3950
+ shouldShowPropertiesViewSettings(): boolean;
3817
3951
  /** Position options */
3818
3952
  readonly positionOptions: {
3819
3953
  label: string;
@@ -3938,14 +4072,24 @@ declare class DisplaySettings {
3938
4072
  /** Toggle association */
3939
4073
  readonly toggleAssociation: _angular_core.Signal<boolean>;
3940
4074
  /** Selected properties resolved from input or config */
3941
- readonly resolvedSelectedProperties: _angular_core.Signal<any[]>;
4075
+ readonly resolvedSelectedProperties: _angular_core.Signal<string[]>;
3942
4076
  /** Available properties resolved from input or selected properties */
3943
4077
  readonly resolvedAvailableProperties: _angular_core.Signal<any[]>;
4078
+ /** Selected properties as ordered options */
4079
+ readonly selectedPropertyOptions: _angular_core.Signal<PropertyOption[]>;
3944
4080
  /** Available properties as options */
3945
4081
  readonly propertyOptions: _angular_core.Signal<{
3946
4082
  label: any;
3947
4083
  value: any;
3948
4084
  }[]>;
4085
+ /** Properties view rows driven by selected properties order */
4086
+ readonly propertiesViewRows: _angular_core.Signal<PropertiesViewRow[]>;
4087
+ /** Property translations rows driven by selected properties order */
4088
+ readonly propertyTranslationRows: _angular_core.Signal<{
4089
+ key: string;
4090
+ label: string;
4091
+ translation: PropertyTranslation;
4092
+ }[]>;
3949
4093
  /** Available translation options (exclude used) */
3950
4094
  readonly availableTranslationOptions: _angular_core.Signal<{
3951
4095
  label: any;
@@ -4041,10 +4185,6 @@ declare class DisplaySettings {
4041
4185
  updateRingGaugeConfig(key: keyof RingGaugeConfig, value: any): void;
4042
4186
  /** Update card list hide properties */
4043
4187
  updateCardListHideProperties(properties: string[]): void;
4044
- /** Add props config item */
4045
- addPropsConfigItem(): void;
4046
- /** Remove props config item */
4047
- removePropsConfigItem(index: number): void;
4048
4188
  /** Update props config item */
4049
4189
  updatePropsConfigItem(index: number, key: keyof PropsConfigAsIndexItem, value: any): void;
4050
4190
  /** Update order config field */
@@ -4099,39 +4239,11 @@ declare class DisplaySettings {
4099
4239
  readonly selectedPropertyForTranslation: _angular_core.WritableSignal<string>;
4100
4240
  /** Selected property for adding colors */
4101
4241
  readonly selectedPropertyForColor: _angular_core.WritableSignal<string>;
4242
+ private resolvePropertyKey;
4102
4243
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DisplaySettings, never>;
4103
4244
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DisplaySettings, "mt-display-settings", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "chartType": { "alias": "chartType"; "required": false; "isSignal": true; }; "availableProperties": { "alias": "availableProperties"; "required": false; "isSignal": true; }; "selectedProperties": { "alias": "selectedProperties"; "required": false; "isSignal": true; }; "lookups": { "alias": "lookups"; "required": false; "isSignal": true; }; }, { "clientConfigChange": "clientConfigChange"; }, never, never, true, never>;
4104
4245
  }
4105
4246
 
4106
- interface DefaultControlConfig {
4107
- title: string;
4108
- titleFontSize: number;
4109
- titleColor: string;
4110
- showSubtitle: boolean;
4111
- subtitle: string;
4112
- subtitleFontSize: number;
4113
- subtitleColor: string;
4114
- backgroundColor: string;
4115
- borderColor: string;
4116
- borderRadius: number;
4117
- padding: number;
4118
- }
4119
- declare class DefaultControlUi implements ControlValueAccessor {
4120
- readonly config: _angular_core.WritableSignal<DefaultControlConfig>;
4121
- readonly fontSizeOptions: {
4122
- label: string;
4123
- value: number;
4124
- }[];
4125
- private onChange;
4126
- private onTouched;
4127
- writeValue(value: DefaultControlConfig): void;
4128
- registerOnChange(fn: (value: DefaultControlConfig) => void): void;
4129
- registerOnTouched(fn: () => void): void;
4130
- updateConfig(partial: Partial<DefaultControlConfig>): void;
4131
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<DefaultControlUi, never>;
4132
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DefaultControlUi, "mt-default-control-ui", never, {}, {}, never, never, true, never>;
4133
- }
4134
-
4135
4247
  /**
4136
4248
  * Pie Chart Configuration - Matches old implementation exactly
4137
4249
  */
@@ -4411,6 +4523,7 @@ declare class ManageItem implements OnInit {
4411
4523
  cancel(): void;
4412
4524
  /** Update config from child components */
4413
4525
  onConfigUpdate(partialConfig: Partial<ItemConfig>): void;
4526
+ onChartTypeChange(type: ChartTypeConfig): void;
4414
4527
  /** Update service config */
4415
4528
  onServiceConfigUpdate(partialConfig: Partial<ItemConfig['serviceConfig']>): void;
4416
4529
  /** Update client config */
@@ -4931,5 +5044,5 @@ declare class GetChartActionsPipe implements PipeTransform {
4931
5044
  */
4932
5045
  declare function cloneDeep<T>(obj: T): T;
4933
5046
 
4934
- export { ActionsSettings, BarChartHandler, BarControlUi, CHART_TYPES, CardContentComponent, CardFilterComponent, CardInfoComponent, ChartCardComponent, ChartDataService, ChartSettingsDrawer, ChartViewer, ComparisonChartHandler, DashboardBuilder, DashboardBuilderService, DashboardItem, DashboardItemStoreService, DashboardList, DashboardStoreService, DashboardViewer, DataSourceSettings, DefaultControlUi, DisplaySettings, DynamicFiltersComponent, DynamicFiltersConfig, EChartComponent, EntityInfoComponent, EntityPreviewCardComponent, FilterByGroupPipe, GaugeChartHandler, GeneralSettings, GetChartActionsPipe, HTTPMethod, HeaderCardComponent, LevelCardHandler, LevelCardListComponent, LineChartHandler, ListStatisticCardComponent, ManageBreadcrumb, ManageFilterOnPage, ManageItem, ManageItemService, ManagePages, MapChartHandler, OverviewCardHandler, PhaseGateStepperHandler, PieChartHandler, PieControlUi, RingGaugeChartHandler, SPlusChartHandler, SkeletonCardComponent, SnapshotHandler, SplitterChartHandler, StackBarChartHandler, StackBarControlUi, StaticFiltersComponent, StatisticCardComponent, TableCardComponent, TableViewHandler, TimelineHandler, addCommasToNumber, axisFormatters, cloneDeep, createAxisFormatter, createTooltipFormatter, dynamicReorder, dynamicTextReplace, formatCurrency, formatDate, formatNumber, formatPercentage, formatValue, formatWordsUnderBar, formatXAxis, generalConfiguration, getColorFromConditions, getLanguageCode, getLocalizedTitle, getNestedData, groupDatesByYearAndMonth, handleFilterForCard, handleFilterForSnapshot, handleFiltersForCustom, isMobilePlatform, sortChartData, sortDataTableView, switchAllKeysSmall, switchAllKeysToLower };
5047
+ export { ActionsSettings, BarChartHandler, BarControlUi, CHART_TYPES, CardContentComponent, CardFilterComponent, CardInfoComponent, ChartCardComponent, ChartDataService, ChartSettingsDrawer, ChartViewer, ComparisonChartHandler, DashboardBuilder, DashboardBuilderService, DashboardItem, DashboardItemStoreService, DashboardList, DashboardStoreService, DashboardViewer, DataSourceSettings, DefaultControlUi, DisplaySettings, DynamicFiltersComponent, DynamicFiltersConfig, EChartComponent, PropertiesCardComponent as EntitiesPreviewCardComponent, EntityInfoComponent, EntityPreviewCardComponent, FilterByGroupPipe, GaugeChartHandler, GeneralSettings, GetChartActionsPipe, HTTPMethod, HeaderCardComponent, LevelCardHandler, LineChartHandler, ListStatisticCardComponent, ManageBreadcrumb, ManageFilterOnPage, ManageItem, ManageItemService, ManagePages, MapChartHandler, OverviewCardHandler, PhaseGateStepperHandler, PieChartHandler, PieControlUi, PropertiesCardComponent, RingGaugeChartHandler, SPlusChartHandler, SkeletonCardComponent, SnapshotHandler, SplitterChartHandler, StackBarChartHandler, StackBarControlUi, StaticFiltersComponent, StatisticCardComponent, TableCardComponent, TableViewHandler, TimelineHandler, TopbarCardComponent, addCommasToNumber, axisFormatters, cloneDeep, createAxisFormatter, createTooltipFormatter, dynamicReorder, dynamicTextReplace, formatCurrency, formatDate, formatNumber, formatPercentage, formatValue, formatWordsUnderBar, formatXAxis, generalConfiguration, getColorFromConditions, getLanguageCode, getLocalizedTitle, getNestedData, groupDatesByYearAndMonth, handleFilterForCard, handleFilterForSnapshot, handleFiltersForCustom, isMobilePlatform, sortChartData, sortDataTableView, switchAllKeysSmall, switchAllKeysToLower };
4935
5048
  export type { ActionConfig, ApiResponse, BarChartData, BreadcrumbItem, BulkLinkChartRequest, BulkLinkChartResponse, BulkPropertiesRequest, BulkPropertiesResponse, BulkPropertiesResponseItem, BulkPropertiesResponseItemDto, BulkPropertyRequestItem, CardBorderStyleConfig, CardInfoConfig$1 as CardInfoConfig, CardStyleConfig$1 as CardStyleConfig, CatalogPropertyDto, ChartActionEvent, ChartActionsContext, ChartData, ChartDataHandled, ChartLabel, ChartLinkConfiguration, ChartTypeConfig, ClientConfig, ComponentType, CustomApi, DashboardBuilderData, DashboardChartItem, DashboardDialogItem, DashboardItemStore, DashboardListEvent, DashboardPage, DisplayConfig, EChartSeriesItem, ExcelSheet, FilterConfig, FilterOption, FormatXAxisConfig$1 as FormatXAxisConfig, GroupedModuleOption, HandleAction, HeaderCardConfig$1 as HeaderCardConfig, IModule, IModuleType, IProperty, IPropertyWithGroup, ISelection, ItemConfig, LevelCardData, LevelCardProperty, LinkChartRequest, LocalizedName, ModuleItem, ModuleSelectOption, ModuleType, ModuleValue, ModulesTreeRequest, ModulesTreeResponse, PhaseGateProperty, PhaseGateStep, PieChartData, PropertiesResponse, PropertyItem, PropertyItemOption, PropertyItemsResponse, QuickManageType, Report, ReportChartLink, ReportDashboardConfig, ReportExcelConfig, ReportType, ReportUrl, RequestType, SelectionFilter, ServiceConfig, ServiceItem, SourceLink, StaticFilterConfig, StaticFilterItem, StatisticCardData, StyleConfig, TableColumn$1 as TableColumn, TableViewData, TimelineData, TimelineItem, UnlinkChartRequest };