@masterteam/dashboard-builder 0.0.41 → 0.0.43

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,45 +1,45 @@
1
- {
2
- "name": "@masterteam/dashboard-builder",
3
- "version": "0.0.41",
4
- "publishConfig": {
5
- "directory": "../../../dist/masterteam/dashboard-builder",
6
- "linkDirectory": true,
7
- "access": "public"
8
- },
9
- "peerDependencies": {
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
- "@masterteam/components": "^0.0.203",
19
- "@masterteam/icons": "^0.0.17",
20
- "@masterteam/timeline": "^0.0.15",
21
- "angular-gridster2": "^18.0.1",
22
- "echarts": "^5.5.0",
23
- "postcss": "^8.5.9",
24
- "primeng": "21.1.5",
25
- "rxjs": "^7.8.2",
26
- "tailwindcss": "^4.2.2"
27
- },
28
- "dependencies": {
29
- "tslib": "^2.8.1",
30
- "angular-gridster2": "^18.0.1"
31
- },
32
- "sideEffects": false,
33
- "module": "fesm2022/masterteam-dashboard-builder.mjs",
34
- "typings": "types/masterteam-dashboard-builder.d.ts",
35
- "exports": {
36
- "./package.json": {
37
- "default": "./package.json"
38
- },
39
- ".": {
40
- "types": "./types/masterteam-dashboard-builder.d.ts",
41
- "default": "./fesm2022/masterteam-dashboard-builder.mjs"
42
- }
43
- },
44
- "type": "module"
45
- }
1
+ {
2
+ "name": "@masterteam/dashboard-builder",
3
+ "version": "0.0.43",
4
+ "publishConfig": {
5
+ "directory": "../../../dist/masterteam/dashboard-builder",
6
+ "linkDirectory": true,
7
+ "access": "public"
8
+ },
9
+ "peerDependencies": {
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
+ "@masterteam/components": "^0.0.204",
19
+ "@masterteam/icons": "^0.0.17",
20
+ "@masterteam/timeline": "^0.0.15",
21
+ "angular-gridster2": "^18.0.1",
22
+ "echarts": "^5.5.0",
23
+ "postcss": "^8.5.9",
24
+ "primeng": "21.1.5",
25
+ "rxjs": "^7.8.2",
26
+ "tailwindcss": "^4.2.2"
27
+ },
28
+ "dependencies": {
29
+ "tslib": "^2.8.1",
30
+ "angular-gridster2": "^18.0.1"
31
+ },
32
+ "sideEffects": false,
33
+ "module": "fesm2022/masterteam-dashboard-builder.mjs",
34
+ "typings": "types/masterteam-dashboard-builder.d.ts",
35
+ "exports": {
36
+ "./package.json": {
37
+ "default": "./package.json"
38
+ },
39
+ ".": {
40
+ "types": "./types/masterteam-dashboard-builder.d.ts",
41
+ "default": "./fesm2022/masterteam-dashboard-builder.mjs"
42
+ }
43
+ },
44
+ "type": "module"
45
+ }
@@ -507,6 +507,7 @@ type ItemCardMenuAction = {
507
507
  };
508
508
  declare class ItemCardMenuComponent {
509
509
  private readonly transloco;
510
+ private readonly filtersActionVisible;
510
511
  /** Whether to allow duplicate (excluded for layout/group widgets). */
511
512
  readonly allowDuplicate: _angular_core.InputSignal<boolean>;
512
513
  /** Whether the chart has a linked dialog already. */
@@ -2272,6 +2273,7 @@ declare class DashboardBuilder implements OnInit, OnDestroy {
2272
2273
  duplicateChart(chart: DashboardChartItem): void;
2273
2274
  /** Whether the kebab menu should appear on this chart card. */
2274
2275
  showContextToolbar(chart: DashboardChartItem): boolean;
2276
+ isPropertiesListChart(chart: DashboardChartItem): boolean;
2275
2277
  editItem(chart: DashboardChartItem, parentItem?: DashboardChartItem, defaultTab?: 'general' | 'dataSource' | 'actions'): void;
2276
2278
  deleteItem(chart: DashboardChartItem): void;
2277
2279
  private confirmDelete;
@@ -3145,6 +3147,9 @@ type FilterFieldType = 'dropdownTVService' | 'lookup' | 'status' | 'phaseGate' |
3145
3147
  /** Selection item for dropdown configuration */
3146
3148
  interface FilterSelectionItem {
3147
3149
  id: number;
3150
+ service?: string | null;
3151
+ selector?: string | null;
3152
+ selectorName?: string | null;
3148
3153
  moduleType?: string;
3149
3154
  moduleId?: number;
3150
3155
  filters?: any[];
@@ -3464,6 +3469,7 @@ declare class EChartComponent implements OnInit, AfterViewInit, OnChanges, OnDes
3464
3469
  * Process legends for custom legend display
3465
3470
  */
3466
3471
  private processLegends;
3472
+ private hasPieSeries;
3467
3473
  /**
3468
3474
  * Toggle legend item visibility
3469
3475
  */
@@ -3524,7 +3530,6 @@ declare class EChartComponent implements OnInit, AfterViewInit, OnChanges, OnDes
3524
3530
  private applyConfiguredLegend;
3525
3531
  private mapLegendConfig;
3526
3532
  private applyLegendSideCoordinates;
3527
- private getResponsivePieRadius;
3528
3533
  private estimateCategoryCount;
3529
3534
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EChartComponent, never>;
3530
3535
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EChartComponent, "mt-echart", never, { "dashboardId": { "alias": "dashboardId"; "required": false; "isSignal": true; }; "chartConfig": { "alias": "chartConfig"; "required": false; "isSignal": true; }; "configurationItem": { "alias": "configurationItem"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "inGroup": { "alias": "inGroup"; "required": false; "isSignal": true; }; "headerHidden": { "alias": "headerHidden"; "required": false; "isSignal": true; }; }, { "chartClick": "chartClick"; }, never, never, true, never>;
@@ -4073,7 +4078,7 @@ declare class TopbarCardComponent implements OnInit, OnDestroy {
4073
4078
  readonly iconColor: _angular_core.Signal<any>;
4074
4079
  readonly iconBackgroundColor: _angular_core.Signal<any>;
4075
4080
  readonly borderColor: _angular_core.Signal<any>;
4076
- readonly borderWidth: _angular_core.Signal<1 | 0>;
4081
+ readonly borderWidth: _angular_core.Signal<0 | 1>;
4077
4082
  readonly padding: _angular_core.Signal<number>;
4078
4083
  readonly titleFontSize: _angular_core.Signal<number>;
4079
4084
  readonly subtitleFontSize: _angular_core.Signal<number>;
@@ -5528,25 +5533,8 @@ declare class ManageBreadcrumb implements OnInit {
5528
5533
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ManageBreadcrumb, "mt-manage-breadcrumb", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5529
5534
  }
5530
5535
 
5531
- /**
5532
- * Translation pair
5533
- */
5534
- interface Translation {
5535
- ar: string;
5536
- en: string;
5537
- }
5538
- /**
5539
- * Property Translations map
5540
- */
5541
- interface PropertyTranslations {
5542
- [key: string]: Translation;
5543
- }
5544
-
5545
5536
  interface ManageFilterOnPageResult {
5546
5537
  filters: FilterField[];
5547
- bulkSelection?: ISelection[];
5548
- bulkOperation?: 'applyFilters' | 'deleteFilters';
5549
- labels?: PropertyTranslations;
5550
5538
  }
5551
5539
  /**
5552
5540
  * Manage Filter On Page Component
@@ -5565,27 +5553,17 @@ declare class ManageFilterOnPage implements OnInit {
5565
5553
  private ref;
5566
5554
  /** Input: Initial filters data */
5567
5555
  readonly data: _angular_core.InputSignal<FilterField[]>;
5568
- /** All charts and dialogs on the selected dashboard. */
5569
- readonly chartItems: _angular_core.InputSignal<(DashboardChartItem | DashboardDialogItem)[]>;
5570
5556
  /** Input: Available lookups for dropdown */
5571
5557
  readonly lookups: _angular_core.InputSignal<any[]>;
5572
5558
  /** Input: Available level schemas */
5573
5559
  readonly levelsSchema: _angular_core.InputSignal<any[]>;
5574
5560
  /** Filters configuration */
5575
5561
  readonly filtersConfig: _angular_core.WritableSignal<FilterField[]>;
5576
- /** Bulk selection filters to apply/delete across matching charts. */
5577
- readonly bulkSelection: _angular_core.WritableSignal<ISelection[]>;
5578
- /** Labels to apply to all table/dialog table charts. */
5579
- readonly bulkLabels: _angular_core.WritableSignal<PropertyTranslations>;
5580
5562
  /** Level logs for status filter */
5581
5563
  readonly levelLogs: _angular_core.WritableSignal<any[]>;
5582
- readonly bulkPropertyOptions: _angular_core.Signal<IProperty[]>;
5583
- readonly bulkPropertyKeys: _angular_core.Signal<string[]>;
5584
5564
  ngOnInit(): void;
5585
5565
  /** Handle filter configuration changes */
5586
5566
  onFiltersChange(filters: FilterField[]): void;
5587
- onBulkSelectionChange(selections: ISelection[]): void;
5588
- onBulkLabelsChange(labels: PropertyTranslations): void;
5589
5567
  /**
5590
5568
  * Hook for hosts that want to feed level-log values into the filter
5591
5569
  * dialog. The host listens to `(loadLevelLogs)` (when consumers wire it)
@@ -5595,16 +5573,26 @@ declare class ManageFilterOnPage implements OnInit {
5595
5573
  onLoadLevelLogs(_schemaLevelId: number): void;
5596
5574
  /** Save and close the dialog */
5597
5575
  save(): void;
5598
- applyBulkFilters(): void;
5599
- deleteBulkFilters(): void;
5600
- applyBulkLabels(): void;
5601
5576
  /** Cancel and close the dialog */
5602
5577
  close(): void;
5603
5578
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ManageFilterOnPage, never>;
5604
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ManageFilterOnPage, "mt-manage-filter-on-page", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "chartItems": { "alias": "chartItems"; "required": false; "isSignal": true; }; "lookups": { "alias": "lookups"; "required": false; "isSignal": true; }; "levelsSchema": { "alias": "levelsSchema"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5579
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ManageFilterOnPage, "mt-manage-filter-on-page", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "lookups": { "alias": "lookups"; "required": false; "isSignal": true; }; "levelsSchema": { "alias": "levelsSchema"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5605
5580
  }
5606
5581
 
5582
+ interface ModuleProperties$1 {
5583
+ moduleName: string;
5584
+ selectorName: string | null;
5585
+ selector: string;
5586
+ properties: IProperty[];
5587
+ }
5607
5588
  declare class DynamicFiltersConfig implements ControlValueAccessor {
5589
+ private readonly dashboardService;
5590
+ private readonly destroyRef;
5591
+ private readonly emptySelections;
5592
+ private readonly emptyModulesProperties;
5593
+ private readonly emptyProperties;
5594
+ private readonly propertiesFlatCache;
5595
+ private readonly dropdownPropertiesSignatureByIndex;
5608
5596
  /** Available lookups from parent context */
5609
5597
  readonly lookups: _angular_core.InputSignal<any[]>;
5610
5598
  /** Available level schemas from parent context */
@@ -5617,6 +5605,10 @@ declare class DynamicFiltersConfig implements ControlValueAccessor {
5617
5605
  readonly loadLevelLogs: _angular_core.OutputEmitterRef<number>;
5618
5606
  /** Filter fields data */
5619
5607
  readonly filterFields: _angular_core.WritableSignal<FilterField[]>;
5608
+ /** Active dropdown selection editor. Heavy nested editors stay lazy. */
5609
+ readonly activeDropdownConfigIndex: _angular_core.WritableSignal<number | null>;
5610
+ /** Properties loaded for dropdown-by-selection fields. */
5611
+ readonly fieldModulesProperties: _angular_core.WritableSignal<Record<number, ModuleProperties$1[]>>;
5620
5612
  /** Paste configuration state */
5621
5613
  readonly showPasteArea: _angular_core.WritableSignal<boolean>;
5622
5614
  readonly pasteContent: _angular_core.WritableSignal<string>;
@@ -5645,6 +5637,16 @@ declare class DynamicFiltersConfig implements ControlValueAccessor {
5645
5637
  onFieldTypeChange(index: number, type: FilterFieldType): void;
5646
5638
  /** Handle schema level change for status/phaseGate */
5647
5639
  onSchemaLevelChange(index: number, schemaLevelId: number): void;
5640
+ updateDropdownSelections(index: number, selections: ISelection[]): void;
5641
+ onDropdownModuleChange(index: number, _event: {
5642
+ selectionId: number;
5643
+ selector: string;
5644
+ selectorName?: string | null;
5645
+ }): void;
5646
+ openDropdownConfig(index: number, field: FilterField): void;
5647
+ closeDropdownConfig(index: number): void;
5648
+ isDropdownConfigOpen(index: number): boolean;
5649
+ updateSelectedProperties(index: number, properties: string[]): void;
5648
5650
  /** Copy current configuration to clipboard */
5649
5651
  copyConfiguration(): void;
5650
5652
  /** Toggle paste area visibility */
@@ -5653,8 +5655,30 @@ declare class DynamicFiltersConfig implements ControlValueAccessor {
5653
5655
  applyPastedConfiguration(): void;
5654
5656
  /** Track by function for ngFor */
5655
5657
  trackByIndex(index: number): number;
5658
+ getFieldTitle(field: FilterField, index: number): string;
5659
+ getFieldTypeLabel(type: FilterFieldType): string;
5660
+ requiresKey(type: FilterFieldType): boolean;
5661
+ requiresName(type: FilterFieldType): boolean;
5662
+ supportsRequired(field: FilterField): boolean;
5663
+ supportsMultiple(field: FilterField): boolean;
5664
+ hasTypeConfiguration(field: FilterField): boolean;
5665
+ getDropdownSelections(field: FilterField): ISelection[];
5666
+ getSelectedProperties(field: FilterField): string[];
5667
+ getModulesPropertiesForField(index: number): ModuleProperties$1[];
5668
+ getPropertiesFlatForField(index: number): IProperty[];
5669
+ getDropdownSummary(field: FilterField): string;
5656
5670
  /** Notify parent of changes */
5657
5671
  private notifyChange;
5672
+ private normalizeField;
5673
+ private createConfigurationForType;
5674
+ private ensurePayload;
5675
+ private loadDropdownProperties;
5676
+ private setFieldModulesProperties;
5677
+ private extractModuleTypeFromSelector;
5678
+ private normalizeSelections;
5679
+ private getSelectionSignature;
5680
+ private removeCachedFieldState;
5681
+ private resetDropdownCaches;
5658
5682
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicFiltersConfig, never>;
5659
5683
  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>;
5660
5684
  }