cloud-ide-element 1.1.2 → 1.1.5

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/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { PipeTransform, OnChanges, OnInit, OnDestroy, EventEmitter, TemplateRef, SimpleChanges, Renderer2, ElementRef, AfterContentInit, QueryList, ViewContainerRef, Signal, AfterViewInit, Type, Injector, ComponentRef } from '@angular/core';
2
+ import { PipeTransform, OnChanges, OnInit, OnDestroy, EventEmitter, TemplateRef, SimpleChanges, ElementRef, AfterContentInit, QueryList, ViewContainerRef, Renderer2, Signal, AfterViewInit, Type, Injector, ComponentRef } from '@angular/core';
3
3
  import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors, FormGroup } from '@angular/forms';
4
- import { elementStyleType, labelPlacementType, labelDirType, autocapitalizeType, autocompleteType, controlType, inputType, themeSize, spinnerType, iconType, selectSearchType, ICoreSype, GetElementDataRequest, fileManagerListByGroupIdControllerResponse } from 'cloud-ide-lms-model';
5
- import { Router, NavigationExtras } from '@angular/router';
6
- import { BehaviorSubject, Observable } from 'rxjs';
4
+ import { elementStyleType, labelPlacementType, labelDirType, autocapitalizeType, autocompleteType, controlType, inputType, themeSize, selectSearchType, ICoreSype, GetElementDataRequest, iconType, spinnerType, fileManagerListByGroupIdControllerResponse } from 'cloud-ide-lms-model';
7
5
  import * as cloud_ide_element from 'cloud-ide-element';
6
+ import { BehaviorSubject, Observable } from 'rxjs';
7
+ import { Router, NavigationExtras } from '@angular/router';
8
8
  import { HttpClient, HttpEvent } from '@angular/common/http';
9
9
 
10
10
  declare class CapitalizePipe implements PipeTransform {
@@ -273,114 +273,6 @@ declare class CideInputComponent implements ControlValueAccessor, Validator, OnC
273
273
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideInputComponent, "cide-ele-input", never, { "fill": { "alias": "fill"; "required": false; }; "label": { "alias": "label"; "required": false; }; "labelHide": { "alias": "labelHide"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "clearInput": { "alias": "clearInput"; "required": false; }; "labelPlacement": { "alias": "labelPlacement"; "required": false; }; "labelDir": { "alias": "labelDir"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "leadingIcon": { "alias": "leadingIcon"; "required": false; }; "trailingIcon": { "alias": "trailingIcon"; "required": false; }; "helperText": { "alias": "helperText"; "required": false; }; "helperTextCollapse": { "alias": "helperTextCollapse"; "required": false; }; "hideHelperAndErrorText": { "alias": "hideHelperAndErrorText"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "minlength": { "alias": "minlength"; "required": false; }; "required": { "alias": "required"; "required": false; }; "autocapitalize": { "alias": "autocapitalize"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "type": { "alias": "type"; "required": false; }; "width": { "alias": "width"; "required": false; }; "id": { "alias": "id"; "required": false; }; "ngModel": { "alias": "ngModel"; "required": false; }; "option": { "alias": "option"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "ngModelChange": "ngModelChange"; }, never, never, true, never>;
274
274
  }
275
275
 
276
- type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'text' | 'link' | 'success' | 'danger' | 'warning' | 'info' | 'ghost';
277
- type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
278
- type ButtonType = 'button' | 'submit' | 'reset';
279
- type ButtonShape = 'default' | 'rounded' | 'pill' | 'square';
280
- type ButtonElevation = 'none' | 'low' | 'medium' | 'high';
281
- /**
282
- * Advanced Angular button component that provides a comprehensive button implementation
283
- * with loading state, styling variants, animations, tooltips, and other features.
284
- *
285
- * This component uses proper Angular templating to avoid hydration issues (NG0500).
286
- */
287
- declare class CideEleButtonComponent implements OnInit, OnChanges, OnDestroy {
288
- private elementService;
289
- private router;
290
- private renderer;
291
- private elementRef;
292
- private destroy$;
293
- private clickCount;
294
- private clickDebouncer$;
295
- constructor(elementService: CideElementsService, router: Router, renderer: Renderer2, elementRef: ElementRef);
296
- /**
297
- * @description Label of button like Submit, Update, Add, etc.
298
- * Note: it is only used in case you did not set label between tags (via ng-content)
299
- */
300
- label: string;
301
- /** @description Button style variant */
302
- variant: ButtonVariant;
303
- /** @description Button size */
304
- size: ButtonSize;
305
- /** @description Button HTML type attribute */
306
- type: ButtonType;
307
- /** @description Button shape */
308
- shape: ButtonShape;
309
- /** @description Button shadow elevation */
310
- elevation: ButtonElevation;
311
- /** @description Button disabled state */
312
- disabled: boolean | null;
313
- /** @description Unique ID of control, used to differentiate elements */
314
- id: string;
315
- /** @description Enables loading state with spinner */
316
- loading: boolean;
317
- /** @description Makes button take full width of container */
318
- fullWidth: boolean;
319
- /** @description Icon to display on the left side of the button */
320
- leftIcon: string;
321
- /** @description Icon to display on the right side of the button */
322
- rightIcon: string;
323
- /** @description Additional CSS classes to apply */
324
- customClass: string;
325
- /** @description Tooltip text to display on hover */
326
- tooltip: string;
327
- /** @description Aria label for accessibility */
328
- ariaLabel: string;
329
- /** @description Test ID for automated testing */
330
- testId: string;
331
- /** @description Route to navigate to when clicked (for link buttons) */
332
- routerLink: string | unknown[];
333
- /** @description Router navigation extras */
334
- routerExtras: NavigationExtras;
335
- /** @description Prevent multiple rapid clicks (debounce) */
336
- preventDoubleClick: boolean;
337
- /** @description Animation on click */
338
- animated: boolean;
339
- /**
340
- * @description Click event of button
341
- */
342
- btnClick: EventEmitter<Event>;
343
- /**
344
- * @description Double click event
345
- */
346
- doubleClick: EventEmitter<Event>;
347
- onClick(event: Event): void;
348
- private handleClick;
349
- private addClickAnimation;
350
- ngOnInit(): void;
351
- ngOnChanges(changes: SimpleChanges): void;
352
- ngOnDestroy(): void;
353
- getControlData(): Promise<void>;
354
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleButtonComponent, never>;
355
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleButtonComponent, "button[cideEleButton], a[cideEleButton]", never, { "label": { "alias": "label"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "type": { "alias": "type"; "required": false; }; "shape": { "alias": "shape"; "required": false; }; "elevation": { "alias": "elevation"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "id": { "alias": "id"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "leftIcon": { "alias": "leftIcon"; "required": false; }; "rightIcon": { "alias": "rightIcon"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "testId": { "alias": "testId"; "required": false; }; "routerLink": { "alias": "routerLink"; "required": false; }; "routerExtras": { "alias": "routerExtras"; "required": false; }; "preventDoubleClick": { "alias": "preventDoubleClick"; "required": false; }; "animated": { "alias": "animated"; "required": false; }; }, { "btnClick": "btnClick"; "doubleClick": "doubleClick"; }, never, ["*"], true, never>;
356
- }
357
-
358
- declare class CideSpinnerComponent {
359
- /**
360
- * @description
361
- * Holds the size of the component like Small, Extra small, Large
362
- * by Default it takes small size
363
- * or the size set by the project setup service
364
- * or it will beset for individual component
365
- *
366
- * Size Appled
367
- * Component level then setup service then finally default md
368
- * Options: "xs" | "sm" | "md" | "lg" | "xl" | "xxl"
369
- */
370
- size: themeSize;
371
- type: spinnerType;
372
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideSpinnerComponent, never>;
373
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideSpinnerComponent, "cide-ele-spinner", never, { "size": { "alias": "size"; "required": false; }; "type": { "alias": "type"; "required": false; }; }, {}, never, never, true, never>;
374
- }
375
-
376
- declare class CideIconComponent {
377
- size: themeSize;
378
- type: iconType;
379
- toolTip: string;
380
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideIconComponent, never>;
381
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideIconComponent, "cide-ele-icon", never, { "size": { "alias": "size"; "required": false; }; "type": { "alias": "type"; "required": false; }; "toolTip": { "alias": "toolTip"; "required": false; }; }, {}, never, ["*"], true, never>;
382
- }
383
-
384
276
  interface SelectOption {
385
277
  value: string | number;
386
278
  label: string;
@@ -604,7 +496,7 @@ declare class CideEleFileInputComponent implements ControlValueAccessor, OnDestr
604
496
  readonly id: _angular_core.WritableSignal<string>;
605
497
  readonly isUploading: _angular_core.WritableSignal<boolean>;
606
498
  readonly uploadProgress: _angular_core.WritableSignal<number>;
607
- readonly uploadStatus: _angular_core.WritableSignal<"error" | "start" | "success" | "uploading" | "idle">;
499
+ readonly uploadStatus: _angular_core.WritableSignal<"error" | "start" | "uploading" | "success" | "idle">;
608
500
  readonly files: _angular_core.WritableSignal<FileList | null>;
609
501
  readonly fileNames: _angular_core.WritableSignal<string[]>;
610
502
  readonly previewUrls: _angular_core.WritableSignal<string[]>;
@@ -731,7 +623,7 @@ declare class CideEleFileInputComponent implements ControlValueAccessor, OnDestr
731
623
  multiple: boolean;
732
624
  showPreview: boolean;
733
625
  autoUpload: boolean;
734
- uploadStatus: "error" | "start" | "success" | "uploading" | "idle";
626
+ uploadStatus: "error" | "start" | "uploading" | "success" | "idle";
735
627
  isUploading: boolean;
736
628
  uploadProgress: number;
737
629
  files: {
@@ -994,156 +886,107 @@ declare class CideTextareaComponent implements ControlValueAccessor, Validator,
994
886
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideTextareaComponent, "cide-ele-textarea", never, { "label": { "alias": "label"; "required": false; }; "labelHide": { "alias": "labelHide"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "helperText": { "alias": "helperText"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "minlength": { "alias": "minlength"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "id": { "alias": "id"; "required": false; }; "ngModel": { "alias": "ngModel"; "required": false; }; "size": { "alias": "size"; "required": false; }; "fill": { "alias": "fill"; "required": false; }; "labelPlacement": { "alias": "labelPlacement"; "required": false; }; "labelDir": { "alias": "labelDir"; "required": false; }; "leadingIcon": { "alias": "leadingIcon"; "required": false; }; "trailingIcon": { "alias": "trailingIcon"; "required": false; }; "clearInput": { "alias": "clearInput"; "required": false; }; }, { "ngModelChange": "ngModelChange"; }, never, never, true, never>;
995
887
  }
996
888
 
997
- interface KeyboardShortcut {
889
+ interface BreadcrumbItem {
998
890
  id: string;
999
- key: string;
1000
- ctrlKey?: boolean;
1001
- altKey?: boolean;
1002
- shiftKey?: boolean;
1003
- metaKey?: boolean;
1004
- description?: string;
1005
- action: () => void;
1006
- preventDefault?: boolean;
1007
- stopPropagation?: boolean;
891
+ label: string;
892
+ icon?: string;
893
+ url?: string;
894
+ disabled?: boolean;
895
+ type?: 'root' | 'category' | 'entity' | 'custom';
896
+ metadata?: any;
1008
897
  }
1009
- interface ShortcutOverride {
1010
- shortcutId: string;
1011
- newKey: string;
1012
- newCtrlKey?: boolean;
1013
- newAltKey?: boolean;
1014
- newShiftKey?: boolean;
1015
- newMetaKey?: boolean;
898
+ interface BreadcrumbDropdownOption {
899
+ id: string;
900
+ label: string;
901
+ icon?: string;
902
+ disabled?: boolean;
903
+ action?: () => void;
1016
904
  }
1017
- declare class KeyboardShortcutService implements OnDestroy {
1018
- private shortcuts;
1019
- private overrides;
1020
- private keydownListener?;
1021
- constructor();
1022
- ngOnDestroy(): void;
1023
- /**
1024
- * Register a new keyboard shortcut
1025
- */
1026
- register(shortcut: KeyboardShortcut): void;
1027
- /**
1028
- * Override an existing shortcut with new key combination
1029
- */
1030
- override(shortcutId: string, newKey: string, options?: {
1031
- ctrlKey?: boolean;
1032
- altKey?: boolean;
1033
- shiftKey?: boolean;
1034
- metaKey?: boolean;
1035
- }): void;
1036
- /**
1037
- * Remove a shortcut
1038
- */
1039
- unregister(shortcutId: string): void;
1040
- /**
1041
- * Remove override for a shortcut (restore original key combination)
1042
- */
1043
- removeOverride(shortcutId: string): void;
1044
- /**
1045
- * Get all registered shortcuts
1046
- */
1047
- getAllShortcuts(): KeyboardShortcut[];
1048
- /**
1049
- * Get shortcuts by category or filter
1050
- */
1051
- getShortcuts(filter?: (shortcut: KeyboardShortcut) => boolean): KeyboardShortcut[];
1052
- /**
1053
- * Check if a shortcut is registered
1054
- */
1055
- hasShortcut(shortcutId: string): boolean;
1056
- /**
1057
- * Get shortcut information
1058
- */
1059
- getShortcut(shortcutId: string): KeyboardShortcut | undefined;
1060
- /**
1061
- * Clear all shortcuts
1062
- */
1063
- clearAll(): void;
1064
- /**
1065
- * Set up global keyboard listener
1066
- */
1067
- private setupGlobalListener;
1068
- /**
1069
- * Remove global keyboard listener
1070
- */
1071
- private removeGlobalListener;
1072
- /**
1073
- * Handle keydown events
1074
- */
1075
- private handleKeydown;
1076
- /**
1077
- * Check if event matches shortcut
1078
- */
1079
- private matchesShortcut;
1080
- /**
1081
- * Check if event matches override
1082
- */
1083
- private matchesOverride;
1084
- /**
1085
- * Get human-readable key description
1086
- */
1087
- private getKeyDescription;
1088
- /**
1089
- * Get key description for a shortcut ID
1090
- */
1091
- getKeyDescriptionForShortcut(shortcutId: string): string;
1092
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<KeyboardShortcutService, never>;
1093
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<KeyboardShortcutService>;
905
+ interface BreadcrumbSeparator {
906
+ type: 'chevron' | 'slash' | 'arrow' | 'dot' | 'custom';
907
+ icon?: string;
908
+ text?: string;
1094
909
  }
1095
-
1096
- declare class CideElementsService {
1097
- cide_element_data: {
1098
- [key: string]: ICoreSype;
1099
- };
1100
- is_cide_element_data_updated: BehaviorSubject<boolean>;
1101
- getElementData(body: GetElementDataRequest): Promise<ICoreSype>;
1102
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideElementsService, never>;
1103
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<CideElementsService>;
910
+ type BreadcrumbStyle = 'modern' | 'classic' | 'minimal' | 'hierarchical';
911
+ interface BreadcrumbConfig {
912
+ style: BreadcrumbStyle;
913
+ separator: BreadcrumbSeparator;
914
+ showHomeIcon: boolean;
915
+ homeIcon: string;
916
+ maxItems: number;
917
+ showDropdownOnOverflow: boolean;
918
+ dropdownOptions: BreadcrumbDropdownOption[];
919
+ clickableItems: boolean;
920
+ showTooltips: boolean;
921
+ responsive: boolean;
922
+ compact: boolean;
923
+ animated: boolean;
1104
924
  }
1105
-
1106
- type CideEleResizerDirection = 'horizontal' | 'vertical';
1107
- type CideEleResizerDirectionTo = "right-to-left" | "left-to-right" | "";
1108
- declare class CideEleResizerDirective implements OnInit {
1109
- private el;
1110
- private renderer;
1111
- direction: CideEleResizerDirection;
1112
- to: CideEleResizerDirectionTo;
1113
- prevElementSelector: string;
1114
- nextElementSelector: string;
1115
- parentElementSelector: string;
1116
- minPrevSize: number;
1117
- minNextSize: number;
1118
- usePercentage: boolean;
1119
- resizeStart: EventEmitter<void>;
1120
- resizing: EventEmitter<{
1121
- prevSize: number;
1122
- nextSize: number;
1123
- }>;
1124
- resizeEnd: EventEmitter<{
1125
- prevSize: number;
1126
- nextSize: number;
1127
- }>;
1128
- private isResizing;
1129
- private startPosition;
1130
- private prevElement;
1131
- private nextElement;
1132
- private prevSize;
1133
- private nextSize;
1134
- private containerSize;
1135
- private startPrevSize;
1136
- private startNextSize;
1137
- constructor(el: ElementRef, renderer: Renderer2);
925
+ declare class CideEleBreadcrumbComponent implements OnInit, OnDestroy {
926
+ items: _angular_core.InputSignal<BreadcrumbItem[]>;
927
+ style: _angular_core.InputSignal<BreadcrumbStyle>;
928
+ separator: _angular_core.InputSignal<BreadcrumbSeparator>;
929
+ showHomeIcon: _angular_core.InputSignal<boolean>;
930
+ homeIcon: _angular_core.InputSignal<string>;
931
+ maxItems: _angular_core.InputSignal<number>;
932
+ showDropdownOnOverflow: _angular_core.InputSignal<boolean>;
933
+ dropdownOptions: _angular_core.InputSignal<BreadcrumbDropdownOption[]>;
934
+ clickableItems: _angular_core.InputSignal<boolean>;
935
+ showTooltips: _angular_core.InputSignal<boolean>;
936
+ responsive: _angular_core.InputSignal<boolean>;
937
+ compact: _angular_core.InputSignal<boolean>;
938
+ animated: _angular_core.InputSignal<boolean>;
939
+ loadingInput: _angular_core.InputSignal<boolean>;
940
+ disabled: _angular_core.InputSignal<boolean>;
941
+ contextId: _angular_core.InputSignal<string | undefined>;
942
+ pageCode: _angular_core.InputSignal<string | undefined>;
943
+ itemClick: EventEmitter<BreadcrumbItem>;
944
+ dropdownOptionClick: EventEmitter<BreadcrumbDropdownOption>;
945
+ homeClick: EventEmitter<void>;
946
+ private showDropdown;
947
+ private isOverflowing;
948
+ private visibleItems;
949
+ private hiddenItems;
950
+ private localItems;
951
+ private localLoading;
952
+ showDropdownSignal: _angular_core.Signal<boolean>;
953
+ isOverflowingSignal: _angular_core.Signal<boolean>;
954
+ visibleItemsSignal: _angular_core.Signal<BreadcrumbItem[]>;
955
+ hiddenItemsSignal: _angular_core.Signal<BreadcrumbItem[]>;
956
+ config: _angular_core.Signal<BreadcrumbConfig>;
957
+ effectiveLoading: _angular_core.Signal<boolean>;
958
+ private cleanupEffect?;
1138
959
  ngOnInit(): void;
1139
- onMouseDown(event: MouseEvent): void;
1140
- private onMouseMove;
1141
- private onMouseUp;
1142
- private getPrevElement;
1143
- private getNextElement;
1144
- private getSizeProperty;
1145
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleResizerDirective, never>;
1146
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CideEleResizerDirective, "[cideEleResizer]", never, { "direction": { "alias": "direction"; "required": false; }; "to": { "alias": "to"; "required": false; }; "prevElementSelector": { "alias": "prevElementSelector"; "required": false; }; "nextElementSelector": { "alias": "nextElementSelector"; "required": false; }; "parentElementSelector": { "alias": "parentElementSelector"; "required": false; }; "minPrevSize": { "alias": "minPrevSize"; "required": false; }; "minNextSize": { "alias": "minNextSize"; "required": false; }; "usePercentage": { "alias": "usePercentage"; "required": false; }; }, { "resizeStart": "resizeStart"; "resizing": "resizing"; "resizeEnd": "resizeEnd"; }, never, never, true, never>;
960
+ ngOnDestroy(): void;
961
+ onDocumentClick(event: Event): void;
962
+ private processItems;
963
+ private getConfigForStyle;
964
+ onItemClick(item: BreadcrumbItem): void;
965
+ onHomeClick(): void;
966
+ onDropdownToggle(): void;
967
+ onDropdownOptionClick(option: BreadcrumbDropdownOption): void;
968
+ getItemClasses(item: BreadcrumbItem, isLast?: boolean): string;
969
+ getContainerClasses(): string;
970
+ getSeparatorIcon(): string;
971
+ getTooltipText(item: BreadcrumbItem): string;
972
+ toggleDropdown(): void;
973
+ closeDropdown(): void;
974
+ updateItems(newItems: BreadcrumbItem[]): void;
975
+ addItem(item: BreadcrumbItem): void;
976
+ removeItem(itemId: string): void;
977
+ setLoading(value: boolean): void;
978
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleBreadcrumbComponent, never>;
979
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleBreadcrumbComponent, "cide-ele-breadcrumb", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "style": { "alias": "style"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; "showHomeIcon": { "alias": "showHomeIcon"; "required": false; "isSignal": true; }; "homeIcon": { "alias": "homeIcon"; "required": false; "isSignal": true; }; "maxItems": { "alias": "maxItems"; "required": false; "isSignal": true; }; "showDropdownOnOverflow": { "alias": "showDropdownOnOverflow"; "required": false; "isSignal": true; }; "dropdownOptions": { "alias": "dropdownOptions"; "required": false; "isSignal": true; }; "clickableItems": { "alias": "clickableItems"; "required": false; "isSignal": true; }; "showTooltips": { "alias": "showTooltips"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "animated": { "alias": "animated"; "required": false; "isSignal": true; }; "loadingInput": { "alias": "loadingInput"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "contextId": { "alias": "contextId"; "required": false; "isSignal": true; }; "pageCode": { "alias": "pageCode"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; "dropdownOptionClick": "dropdownOptionClick"; "homeClick": "homeClick"; }, never, never, true, never>;
980
+ }
981
+
982
+ declare class CideElementsService {
983
+ cide_element_data: {
984
+ [key: string]: ICoreSype;
985
+ };
986
+ is_cide_element_data_updated: BehaviorSubject<boolean>;
987
+ getElementData(body: GetElementDataRequest): Promise<ICoreSype>;
988
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideElementsService, never>;
989
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CideElementsService>;
1147
990
  }
1148
991
 
1149
992
  type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';
@@ -1188,1329 +1031,1569 @@ declare class TooltipDirective implements OnInit, OnDestroy {
1188
1031
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipDirective, "[cideEleTooltip]", never, { "cideEleTooltip": { "alias": "cideEleTooltip"; "required": false; }; "tooltipColor": { "alias": "tooltipColor"; "required": false; }; "tooltipBg": { "alias": "tooltipBg"; "required": false; }; "tooltipPlacement": { "alias": "tooltipPlacement"; "required": false; }; "tooltipType": { "alias": "tooltipType"; "required": false; }; "tooltipDelay": { "alias": "tooltipDelay"; "required": false; }; "tooltipDir": { "alias": "tooltipDir"; "required": false; }; "tooltipShowArrow": { "alias": "tooltipShowArrow"; "required": false; }; "tooltipMultiline": { "alias": "tooltipMultiline"; "required": false; }; "tooltipMaxWidth": { "alias": "tooltipMaxWidth"; "required": false; }; "tooltipInteractive": { "alias": "tooltipInteractive"; "required": false; }; "tooltipClass": { "alias": "tooltipClass"; "required": false; }; }, {}, never, never, true, never>;
1189
1032
  }
1190
1033
 
1034
+ type CideEleResizerDirection = 'horizontal' | 'vertical';
1035
+ type CideEleResizerDirectionTo = "right-to-left" | "left-to-right" | "";
1036
+ declare class CideEleResizerDirective implements OnInit {
1037
+ private el;
1038
+ private renderer;
1039
+ direction: CideEleResizerDirection;
1040
+ to: CideEleResizerDirectionTo;
1041
+ prevElementSelector: string;
1042
+ nextElementSelector: string;
1043
+ parentElementSelector: string;
1044
+ minPrevSize: number;
1045
+ minNextSize: number;
1046
+ usePercentage: boolean;
1047
+ resizeStart: EventEmitter<void>;
1048
+ resizing: EventEmitter<{
1049
+ prevSize: number;
1050
+ nextSize: number;
1051
+ }>;
1052
+ resizeEnd: EventEmitter<{
1053
+ prevSize: number;
1054
+ nextSize: number;
1055
+ }>;
1056
+ private isResizing;
1057
+ private startPosition;
1058
+ private prevElement;
1059
+ private nextElement;
1060
+ private prevSize;
1061
+ private nextSize;
1062
+ private containerSize;
1063
+ private startPrevSize;
1064
+ private startNextSize;
1065
+ constructor(el: ElementRef, renderer: Renderer2);
1066
+ ngOnInit(): void;
1067
+ onMouseDown(event: MouseEvent): void;
1068
+ private onMouseMove;
1069
+ private onMouseUp;
1070
+ private getPrevElement;
1071
+ private getNextElement;
1072
+ private getSizeProperty;
1073
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleResizerDirective, never>;
1074
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CideEleResizerDirective, "[cideEleResizer]", never, { "direction": { "alias": "direction"; "required": false; }; "to": { "alias": "to"; "required": false; }; "prevElementSelector": { "alias": "prevElementSelector"; "required": false; }; "nextElementSelector": { "alias": "nextElementSelector"; "required": false; }; "parentElementSelector": { "alias": "parentElementSelector"; "required": false; }; "minPrevSize": { "alias": "minPrevSize"; "required": false; }; "minNextSize": { "alias": "minNextSize"; "required": false; }; "usePercentage": { "alias": "usePercentage"; "required": false; }; }, { "resizeStart": "resizeStart"; "resizing": "resizing"; "resizeEnd": "resizeEnd"; }, never, never, true, never>;
1075
+ }
1076
+
1077
+ type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'text' | 'link' | 'success' | 'danger' | 'warning' | 'info' | 'ghost';
1078
+ type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
1079
+ type ButtonType = 'button' | 'submit' | 'reset';
1080
+ type ButtonShape = 'default' | 'rounded' | 'pill' | 'square';
1081
+ type ButtonElevation = 'none' | 'low' | 'medium' | 'high';
1191
1082
  /**
1192
- * Directive to display images from file manager by ID
1193
- * Usage: <img cideEleFileImage [fileId]="yourFileId" [altText]="'Image'" class="your-css-classes" />
1083
+ * Advanced Angular button component that provides a comprehensive button implementation
1084
+ * with loading state, styling variants, animations, tooltips, and other features.
1085
+ *
1086
+ * This component uses proper Angular templating to avoid hydration issues (NG0500).
1194
1087
  */
1195
- declare class CideEleFileImageDirective implements OnInit, OnDestroy {
1196
- fileId: string | null;
1197
- altText: string;
1198
- private readonly fileManagerService;
1199
- private readonly elementRef;
1200
- private readonly destroyRef;
1088
+ declare class CideEleButtonComponent implements OnInit, OnChanges, OnDestroy {
1089
+ private elementService;
1090
+ private router;
1091
+ private renderer;
1092
+ private elementRef;
1093
+ private destroy$;
1094
+ private clickCount;
1095
+ private clickDebouncer$;
1096
+ constructor(elementService: CideElementsService, router: Router, renderer: Renderer2, elementRef: ElementRef);
1097
+ /**
1098
+ * @description Label of button like Submit, Update, Add, etc.
1099
+ * Note: it is only used in case you did not set label between tags (via ng-content)
1100
+ */
1101
+ label: string;
1102
+ /** @description Button style variant */
1103
+ variant: ButtonVariant;
1104
+ /** @description Button size */
1105
+ size: ButtonSize;
1106
+ /** @description Button HTML type attribute */
1107
+ type: ButtonType;
1108
+ /** @description Button shape */
1109
+ shape: ButtonShape;
1110
+ /** @description Button shadow elevation */
1111
+ elevation: ButtonElevation;
1112
+ /** @description Button disabled state */
1113
+ disabled: boolean | null;
1114
+ /** @description Unique ID of control, used to differentiate elements */
1115
+ id: string;
1116
+ /** @description Enables loading state with spinner */
1117
+ loading: boolean;
1118
+ /** @description Makes button take full width of container */
1119
+ fullWidth: boolean;
1120
+ /** @description Icon to display on the left side of the button */
1121
+ leftIcon: string;
1122
+ /** @description Icon to display on the right side of the button */
1123
+ rightIcon: string;
1124
+ /** @description Additional CSS classes to apply */
1125
+ customClass: string;
1126
+ /** @description Tooltip text to display on hover */
1127
+ tooltip: string;
1128
+ /** @description Aria label for accessibility */
1129
+ ariaLabel: string;
1130
+ /** @description Test ID for automated testing */
1131
+ testId: string;
1132
+ /** @description Route to navigate to when clicked (for link buttons) */
1133
+ routerLink: string | unknown[];
1134
+ /** @description Router navigation extras */
1135
+ routerExtras: NavigationExtras;
1136
+ /** @description Prevent multiple rapid clicks (debounce) */
1137
+ preventDoubleClick: boolean;
1138
+ /** @description Animation on click */
1139
+ animated: boolean;
1140
+ /**
1141
+ * @description Click event of button
1142
+ */
1143
+ btnClick: EventEmitter<Event>;
1144
+ /**
1145
+ * @description Double click event
1146
+ */
1147
+ doubleClick: EventEmitter<Event>;
1148
+ onClick(event: Event): void;
1149
+ private handleClick;
1150
+ private addClickAnimation;
1201
1151
  ngOnInit(): void;
1152
+ ngOnChanges(changes: SimpleChanges): void;
1202
1153
  ngOnDestroy(): void;
1203
- private loadImage;
1204
- private displayImage;
1205
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleFileImageDirective, never>;
1206
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CideEleFileImageDirective, "[cideEleFileImage]", never, { "fileId": { "alias": "fileId"; "required": false; }; "altText": { "alias": "altText"; "required": false; }; }, {}, never, never, true, never>;
1154
+ getControlData(): Promise<void>;
1155
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleButtonComponent, never>;
1156
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleButtonComponent, "button[cideEleButton], a[cideEleButton]", never, { "label": { "alias": "label"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "type": { "alias": "type"; "required": false; }; "shape": { "alias": "shape"; "required": false; }; "elevation": { "alias": "elevation"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "id": { "alias": "id"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "leftIcon": { "alias": "leftIcon"; "required": false; }; "rightIcon": { "alias": "rightIcon"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "testId": { "alias": "testId"; "required": false; }; "routerLink": { "alias": "routerLink"; "required": false; }; "routerExtras": { "alias": "routerExtras"; "required": false; }; "preventDoubleClick": { "alias": "preventDoubleClick"; "required": false; }; "animated": { "alias": "animated"; "required": false; }; }, { "btnClick": "btnClick"; "doubleClick": "doubleClick"; }, never, ["*"], true, never>;
1207
1157
  }
1208
1158
 
1209
- declare class CideEleSkeletonLoaderComponent {
1210
- width: string;
1211
- height: string;
1212
- borderRadius: string;
1213
- count: number;
1214
- circle: boolean;
1215
- animation: 'pulse' | 'wave' | 'none';
1216
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleSkeletonLoaderComponent, never>;
1217
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleSkeletonLoaderComponent, "cide-ele-skeleton-loader", never, { "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "borderRadius": { "alias": "borderRadius"; "required": false; }; "count": { "alias": "count"; "required": false; }; "circle": { "alias": "circle"; "required": false; }; "animation": { "alias": "animation"; "required": false; }; }, {}, never, never, true, never>;
1159
+ declare class CideIconComponent {
1160
+ size: themeSize;
1161
+ type: iconType;
1162
+ toolTip: string;
1163
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideIconComponent, never>;
1164
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideIconComponent, "cide-ele-icon", never, { "size": { "alias": "size"; "required": false; }; "type": { "alias": "type"; "required": false; }; "toolTip": { "alias": "toolTip"; "required": false; }; }, {}, never, ["*"], true, never>;
1218
1165
  }
1219
1166
 
1220
- type ColumnType = 'text' | 'number' | 'date' | 'boolean' | 'status' | 'actions' | 'custom' | 'order';
1221
- type ColumnWidth = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto' | string;
1222
- type TextAlign = 'left' | 'center' | 'right';
1223
- interface GridColumn {
1224
- key: string;
1225
- header: string;
1226
- type: ColumnType;
1227
- width?: ColumnWidth;
1228
- sortable?: boolean;
1229
- searchable?: boolean;
1230
- truncate?: boolean;
1231
- align?: TextAlign;
1232
- renderer?: string;
1233
- valueGetter?: string;
1234
- formatter?: GridFormatter;
1235
- actions?: GridAction[];
1236
- statusConfig?: StatusConfig;
1167
+ declare class CideSpinnerComponent {
1168
+ /**
1169
+ * @description
1170
+ * Holds the size of the component like Small, Extra small, Large
1171
+ * by Default it takes small size
1172
+ * or the size set by the project setup service
1173
+ * or it will beset for individual component
1174
+ *
1175
+ * Size Appled
1176
+ * Component level then setup service then finally default md
1177
+ * Options: "xs" | "sm" | "md" | "lg" | "xl" | "xxl"
1178
+ */
1179
+ size: themeSize;
1180
+ type: spinnerType;
1181
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideSpinnerComponent, never>;
1182
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideSpinnerComponent, "cide-ele-spinner", never, { "size": { "alias": "size"; "required": false; }; "type": { "alias": "type"; "required": false; }; }, {}, never, never, true, never>;
1237
1183
  }
1238
- interface GridFormatter {
1239
- type: 'date' | 'currency' | 'percentage' | 'custom';
1240
- format?: string;
1241
- customFunction?: string;
1184
+
1185
+ interface NotificationOptions {
1186
+ message: string;
1187
+ type?: 'success' | 'error' | 'warning' | 'info';
1188
+ duration?: number;
1189
+ showUndo?: boolean;
1190
+ undoAction?: () => void;
1191
+ undoText?: string;
1192
+ icon?: string;
1193
+ title?: string;
1194
+ progress?: number;
1195
+ showProgress?: boolean;
1242
1196
  }
1243
- interface StatusConfig {
1244
- activeValue: string | number | boolean;
1245
- activeLabel: string;
1246
- inactiveLabel: string;
1247
- activeClass: string;
1248
- inactiveClass: string;
1249
- }
1250
- interface GridAction {
1251
- key: string;
1252
- label: string;
1253
- icon: string;
1254
- variant: 'ghost' | 'primary' | 'outline' | 'danger';
1255
- tooltip?: string;
1256
- condition?: string;
1257
- onClick: string;
1258
- }
1259
- interface GridPaginationConfig {
1260
- enabled: boolean;
1261
- pageSize: number;
1262
- pageSizeOptions: number[];
1263
- showQuickJump: boolean;
1264
- showPageInfo: boolean;
1265
- showRefresh: boolean;
1266
- }
1267
- interface GridSearchConfig {
1268
- enabled: boolean;
1269
- placeholder: string;
1270
- searchableColumns: string[];
1271
- debounceMs?: number;
1272
- }
1273
- interface GridExportConfig {
1274
- enabled: boolean;
1275
- formats: ('csv' | 'excel' | 'pdf')[];
1276
- filename?: string;
1277
- }
1278
- interface GridLoadingConfig {
1279
- useDefer: boolean;
1280
- skeletonRows: number;
1281
- showOverlay: boolean;
1282
- }
1283
- interface GridScrollConfig {
1284
- enabled: boolean;
1285
- maxHeight?: string;
1286
- minHeight?: string;
1287
- stickyHeader?: boolean;
1288
- virtualScroll?: boolean;
1289
- rowHeight?: number;
1290
- }
1291
- interface GridTreeConfig {
1292
- enabled: boolean;
1293
- primaryKey: string;
1294
- foreignKey: string;
1295
- childrenKey?: string;
1296
- levelKey?: string;
1297
- expandedKey?: string;
1298
- hasChildrenKey?: string;
1299
- }
1300
- interface GridDragDropConfig {
1301
- enabled: boolean;
1302
- dragHandle?: string;
1303
- orderField?: string;
1304
- dragClass?: string;
1305
- dropClass?: string;
1306
- }
1307
- interface GridConfiguration<T = Record<string, unknown>> {
1197
+ interface NotificationItem {
1308
1198
  id: string;
1199
+ message: string;
1200
+ type: 'success' | 'error' | 'warning' | 'info';
1201
+ duration: number;
1202
+ showUndo: boolean;
1203
+ undoAction?: () => void;
1204
+ undoText: string;
1205
+ icon: string;
1309
1206
  title?: string;
1310
- subtitle?: string;
1311
- columns: GridColumn[];
1312
- data: T[];
1313
- trackBy?: string;
1314
- pagination: GridPaginationConfig;
1315
- search: GridSearchConfig;
1316
- export?: GridExportConfig;
1317
- loading: GridLoadingConfig;
1318
- scroll?: GridScrollConfig;
1319
- tree?: GridTreeConfig;
1320
- dragDrop?: GridDragDropConfig;
1321
- responsive: boolean;
1322
- striped?: boolean;
1323
- bordered?: boolean;
1324
- compact?: boolean;
1325
- fullHeight?: boolean;
1326
- onRowClick?: string;
1327
- onSort?: string;
1328
- onPageChange?: string;
1329
- onSearch?: string;
1330
- onRefresh?: string;
1331
- onExport?: string;
1332
- onRowReorder?: string;
1333
- tableClass?: string;
1334
- headerClass?: string;
1335
- rowClass?: string;
1336
- cellClass?: string;
1337
- }
1338
- interface GridState<T = Record<string, unknown>> {
1339
- currentPage: number;
1340
- pageSize: number;
1341
- totalItems: number;
1342
- totalPages: number;
1343
- searchQuery: string;
1344
- sortColumn?: string;
1345
- sortDirection?: 'asc' | 'desc';
1346
- loading: boolean;
1347
- isRefreshing: boolean;
1348
- selectedRows: T[];
1349
- }
1350
- interface GridEvent<T = Record<string, unknown>> {
1351
- type: 'rowClick' | 'sort' | 'pageChange' | 'search' | 'refresh' | 'export' | 'action' | 'rowReorder';
1352
- data: T | T[] | string | number | null | {
1353
- sourceItem: T;
1354
- sourceIndex: number;
1355
- targetItem: T;
1356
- targetIndex: number;
1357
- newOrder: T[];
1358
- allOrders?: T[];
1359
- };
1360
- column?: GridColumn;
1361
- action?: GridAction;
1362
- }
1363
- declare const DEFAULT_GRID_CONFIG: Partial<GridConfiguration>;
1364
- type GridEventHandler<T = Record<string, unknown>> = (event: GridEvent<T>) => void;
1365
- type GridCustomRenderer<T = Record<string, unknown>> = (value: unknown, row: T, column: GridColumn) => string;
1366
- type GridCustomFormatter = (value: unknown, format?: string) => string;
1367
-
1368
- interface TemplateContext<T = Record<string, unknown>> {
1369
- $implicit: unknown;
1370
- row: T;
1371
- value: unknown;
1372
- column: GridColumn;
1207
+ timestamp: number;
1208
+ isVisible: boolean;
1209
+ progress?: number;
1210
+ showProgress?: boolean;
1373
1211
  }
1374
- type TemplateRenderer<T = Record<string, unknown>> = TemplateRef<TemplateContext<T>>;
1375
- declare class CideEleDataGridComponent<T = Record<string, unknown>> implements OnInit, OnChanges, OnDestroy {
1376
- config: GridConfiguration<T>;
1377
- templateRenderers: Record<string, unknown>;
1378
- customFormatters: Record<string, (value: unknown, format?: string) => string>;
1379
- actionHandlers: Record<string, (data: T, action?: GridAction) => void>;
1380
- serverSidePagination: boolean;
1381
- totalServerItems: number;
1382
- currentServerPage: number;
1383
- currentServerPageSize: number;
1384
- dragDropEnabled: boolean;
1385
- gridEvent: EventEmitter<GridEvent<T>>;
1386
- private internalData;
1387
- private filteredData;
1388
- currentPage: _angular_core.WritableSignal<number>;
1389
- pageSize: _angular_core.WritableSignal<number>;
1390
- totalItems: _angular_core.WritableSignal<number>;
1391
- totalPages: _angular_core.WritableSignal<number>;
1392
- searchQuery: _angular_core.WritableSignal<string>;
1393
- loading: _angular_core.WritableSignal<boolean>;
1394
- isRefreshing: _angular_core.WritableSignal<boolean>;
1395
- pageChangeLoading: _angular_core.WritableSignal<boolean>;
1396
- jumpToPage: number;
1397
- isDragOverRow: number | null;
1398
- isDragging: _angular_core.WritableSignal<boolean>;
1399
- hasOrderChanged: _angular_core.WritableSignal<boolean>;
1400
- private originalOrderIds;
1401
- private initialDataOrderIds;
1402
- private rowOrderMap;
1403
- private localReorderedData;
1404
- private searchDebounceTimer?;
1405
- private isDataUpdate;
1406
- hasNextPage: _angular_core.Signal<boolean>;
1407
- hasPreviousPage: _angular_core.Signal<boolean>;
1408
- mergedConfig: _angular_core.WritableSignal<GridConfiguration<T>>;
1409
- ngOnInit(): void;
1410
- ngOnDestroy(): void;
1411
- ngOnChanges(changes: SimpleChanges): void;
1412
- /**
1413
- * Check if the config change is only a data update
1414
- */
1415
- private isDataOnlyUpdate;
1212
+ declare class NotificationService {
1213
+ private notifications;
1214
+ private maxNotifications;
1215
+ activeNotifications: _angular_core.Signal<NotificationItem[]>;
1216
+ constructor();
1416
1217
  /**
1417
- * Update only the data without triggering full grid re-initialization
1418
- * This prevents the search input and other UI state from being reset
1218
+ * Show a success notification
1419
1219
  */
1420
- private updateDataOnly;
1421
- private mergeConfigWithDefaults;
1422
- private initializeGrid;
1220
+ success(message: string, options?: Partial<NotificationOptions>): string;
1423
1221
  /**
1424
- * Get the unique identifier for an item
1222
+ * Show an error notification
1425
1223
  */
1426
- private getItemId;
1224
+ error(message: string, options?: Partial<NotificationOptions>): string;
1427
1225
  /**
1428
- * Get the order value for an item from the config
1226
+ * Show a warning notification
1429
1227
  */
1430
- private getItemOrder;
1228
+ warning(message: string, options?: Partial<NotificationOptions>): string;
1431
1229
  /**
1432
- * Initialize the original order for drag and drop
1230
+ * Show an info notification
1433
1231
  */
1434
- private initializeOriginalOrder;
1232
+ info(message: string, options?: Partial<NotificationOptions>): string;
1435
1233
  /**
1436
- * Refresh order tracking with current data (called when data updates)
1234
+ * Show a notification with undo functionality
1437
1235
  */
1438
- private refreshOrderTracking;
1439
- private applyFilters;
1236
+ showWithUndo(message: string, undoAction: () => void, options?: Partial<NotificationOptions>): string;
1440
1237
  /**
1441
- * Preserve tree expansion state from current data
1238
+ * Show a notification for reversible destructive actions
1442
1239
  */
1443
- private preserveTreeExpansionState;
1240
+ showReversibleAction(action: string, itemName: string, undoAction: () => void, options?: Partial<NotificationOptions>): string;
1444
1241
  /**
1445
- * Apply preserved tree expansion state to new data
1242
+ * Show a notification for background tasks
1446
1243
  */
1447
- private applyTreeExpansionState;
1244
+ showBackgroundTask(taskName: string, isComplete?: boolean, options?: Partial<NotificationOptions>): string;
1448
1245
  /**
1449
- * Transform flat data to tree structure based on foreign key relationships
1246
+ * Show a progress notification
1450
1247
  */
1451
- private transformToTree;
1248
+ showProgress(message: string, progress?: number, options?: Partial<NotificationOptions>): string;
1452
1249
  /**
1453
- * Recursively calculate item level in hierarchy for unlimited depth support
1250
+ * Update progress for an existing notification
1454
1251
  */
1455
- private calculateItemLevel;
1252
+ updateProgress(id: string, progress: number, message?: string): void;
1456
1253
  /**
1457
- * Flatten tree structure for display, respecting expansion state with unlimited nesting
1254
+ * Core show method
1458
1255
  */
1459
- private flattenTreeForDisplay;
1256
+ private show;
1460
1257
  /**
1461
- * Toggle expand/collapse state of a tree item with unlimited nesting support
1258
+ * Remove a specific notification
1462
1259
  */
1463
- private toggleTreeExpand;
1464
- private updatePaginationState;
1465
- onPageChange(page: number | string): void;
1466
- onPageSizeChange(): void;
1467
- updatePageSize(value: string | number | string[]): void;
1468
- previousPage(): void;
1469
- nextPage(): void;
1470
- onJumpToPage(): void;
1471
- getEnhancedPageNumbers(): (number | string)[];
1472
- updateSearchQuery(value: inputType): void;
1473
- onSearch(): void;
1474
- onRefresh(): void;
1475
- setRefreshing(isRefreshing: boolean): void;
1476
- clearPageChangeLoading(): void;
1260
+ remove(id: string): void;
1477
1261
  /**
1478
- * Check if tree view is enabled
1262
+ * Remove all notifications
1479
1263
  */
1480
- isTreeEnabled(): boolean;
1264
+ clearAll(): void;
1481
1265
  /**
1482
- * Get tree configuration
1266
+ * Execute undo action for a notification
1483
1267
  */
1484
- getTreeConfig(): cloud_ide_element.GridTreeConfig | undefined;
1485
- /**
1486
- * Check if an item has children
1487
- */
1488
- hasChildren(item: T): boolean;
1489
- /**
1490
- * Get item level in tree
1491
- */
1492
- getItemLevel(item: T): number;
1493
- /**
1494
- * Check if item is expanded
1495
- */
1496
- isItemExpanded(item: T): boolean;
1497
- /**
1498
- * Get tree indent style
1499
- */
1500
- getTreeIndentStyle(item: T): string;
1501
- /**
1502
- * Get tree level background class for visual distinction
1503
- */
1504
- getTreeLevelClass(item: T): string;
1505
- /**
1506
- * Check if drag and drop is enabled
1507
- */
1508
- isDragDropEnabled(): boolean;
1509
- /**
1510
- * Get drag and drop configuration
1511
- */
1512
- getDragDropConfig(): cloud_ide_element.GridDragDropConfig | undefined;
1513
- /**
1514
- * Handle drag start event
1515
- */
1516
- onDragStart(event: DragEvent, item: T, index: number): void;
1517
- /**
1518
- * Handle drag over event
1519
- */
1520
- onDragOver(event: DragEvent): void;
1521
- /**
1522
- * Handle drag leave event
1523
- */
1524
- onDragLeave(event: DragEvent): void;
1525
- /**
1526
- * Handle drop event
1527
- */
1528
- onDrop(event: DragEvent, targetItem: T, targetIndex: number): void;
1529
- /**
1530
- * Handle drag end event
1531
- */
1532
- onDragEnd(event: DragEvent): void;
1533
- /**
1534
- * Calculate new order after reordering
1535
- */
1536
- private getNewOrder;
1537
- /**
1538
- * Get the current order number for a specific item
1539
- */
1540
- getCurrentOrderNumber(item: T): number;
1541
- /**
1542
- * Update the row order map with new positions after reordering
1543
- */
1544
- private updateRowOrderMap;
1545
- /**
1546
- * Check if any row has changed position by comparing old vs new positions
1547
- */
1548
- private checkIfOrderChanged;
1549
- /**
1550
- * Reset the row order map to original positions (for reset action)
1551
- * Includes all items from hierarchical structure (parents and children)
1552
- */
1553
- private resetRowOrderMap;
1554
- /**
1555
- * Update the row order map baseline to current positions (for save action)
1556
- * Includes all items from hierarchical structure (parents and children)
1557
- */
1558
- private updateRowOrderMapBaseline;
1559
- /**
1560
- * Get the current order array from the row order map
1561
- * Includes all items from hierarchical structure (parents and children)
1562
- */
1563
- private getCurrentOrderFromMap;
1564
- /**
1565
- * Get only the items that have actually changed order
1566
- * Includes all items from hierarchical structure (parents and children)
1567
- */
1568
- private getChangedOrders;
1569
- /**
1570
- * Flatten all data for order tracking (includes all hierarchical children)
1571
- * This method ensures that all items (parents and children) are included in order tracking
1572
- */
1573
- private flattenAllDataForOrderTracking;
1574
- /**
1575
- * Update local data order for visual reordering (LOCAL ONLY)
1576
- */
1577
- private updateLocalDataOrder;
1578
- /**
1579
- * Check if the current order has changed from the initial order
1580
- */
1581
- private checkOrderChanged;
1582
- onRowClick(item: T): void;
1583
- onActionClick(item: T, action: GridAction): void;
1584
- private emitEvent;
1585
- /**
1586
- * Get nested value from an object
1587
- * @param obj - The object to get the nested value from
1588
- * @param path - The path to the nested value (e.g., 'contact.email')
1589
- * @returns The nested value or undefined if not found
1590
- * @example
1591
- * const obj = { contact: { email: 'test@example.com' } };
1592
- * const value = getNestedValue(obj, 'contact.email');
1593
- * // value === 'test@example.com'
1594
- */
1595
- getNestedValue(obj: T, path: string): unknown;
1596
- /**
1597
- * Set a nested value in an object using dot notation
1598
- * @param obj The object to modify
1599
- * @param path The dot notation path (e.g., 'contact.email')
1600
- * @param value The value to set
1601
- * @example
1602
- * const obj = { contact: { email: 'old@example.com' } };
1603
- * setNestedValue(obj, 'contact.email', 'new@example.com');
1604
- * // obj.contact.email === 'new@example.com'
1605
- */
1606
- setNestedValue(obj: T, path: string, value: unknown): void;
1607
- /**
1608
- * Compare two order arrays to check if they are different
1609
- * This method can be used by parent components to check if order has actually changed
1610
- * @param currentOrder Current order array
1611
- * @param originalOrder Original order array
1612
- * @returns true if orders are different, false if they are the same
1613
- */
1614
- compareOrders(currentOrder: Array<{
1615
- id: string | undefined;
1616
- order: number | undefined;
1617
- }>, originalOrder: Array<{
1618
- id: string | undefined;
1619
- order: number | undefined;
1620
- }>): boolean;
1621
- formatValue(value: unknown, column: GridColumn): string;
1622
- private formatDate;
1623
- private formatCurrency;
1624
- private formatPercentage;
1625
- isTemplateRenderer(rendererKey: string): boolean;
1626
- getTemplateRenderer(rendererKey: string): TemplateRenderer<T> | null;
1627
- getTemplateContext(value: unknown, row: T, column: GridColumn): TemplateContext<T>;
1628
- getColumnWidthClass(width?: ColumnWidth): string;
1629
- getColumnMaxWidthClass(width?: ColumnWidth): string;
1630
- getStatusClass(value: unknown, statusConfig?: StatusConfig): string;
1631
- getStatusText(value: unknown, statusConfig?: StatusConfig): string;
1632
- getItemRangeText(): string;
1633
- getPageSizeOptions(): {
1634
- value: number;
1635
- label: string;
1636
- }[];
1637
- trackByFn(index: number, item: T): unknown;
1638
- getSkeletonArray(): number[];
1639
- get displayedData(): T[];
1640
- get columns(): GridColumn[];
1641
- get paginationConfig(): cloud_ide_element.GridPaginationConfig;
1642
- get searchConfig(): cloud_ide_element.GridSearchConfig;
1643
- get loadingConfig(): cloud_ide_element.GridLoadingConfig;
1644
- get scrollConfig(): cloud_ide_element.GridScrollConfig | undefined;
1645
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleDataGridComponent<any>, never>;
1646
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleDataGridComponent<any>, "cide-ele-data-grid", never, { "config": { "alias": "config"; "required": false; }; "templateRenderers": { "alias": "templateRenderers"; "required": false; }; "customFormatters": { "alias": "customFormatters"; "required": false; }; "actionHandlers": { "alias": "actionHandlers"; "required": false; }; "serverSidePagination": { "alias": "serverSidePagination"; "required": false; }; "totalServerItems": { "alias": "totalServerItems"; "required": false; }; "currentServerPage": { "alias": "currentServerPage"; "required": false; }; "currentServerPageSize": { "alias": "currentServerPageSize"; "required": false; }; "dragDropEnabled": { "alias": "dragDropEnabled"; "required": false; }; }, { "gridEvent": "gridEvent"; }, never, never, true, never>;
1268
+ executeUndo(id: string): void;
1269
+ private addNotification;
1270
+ private generateId;
1271
+ private getDefaultIcon;
1272
+ getNotifications(): _angular_core.WritableSignal<NotificationItem[]>;
1273
+ getActiveNotifications(): _angular_core.Signal<NotificationItem[]>;
1274
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationService, never>;
1275
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<NotificationService>;
1647
1276
  }
1648
1277
 
1649
- interface DropdownItem {
1650
- id: string;
1651
- label: string;
1652
- icon?: string;
1653
- iconColor?: string;
1654
- textColor?: string;
1655
- hoverBgColor?: string;
1656
- disabled?: boolean;
1657
- divider?: boolean;
1278
+ /**
1279
+ * File Manager Interfaces
1280
+ * Based on core_file_manager table schema
1281
+ */
1282
+ interface ICoreCyfm {
1283
+ _id?: string;
1284
+ cyfm_name?: string;
1285
+ cyfm_alt_text?: string;
1286
+ cyfm_path?: string;
1287
+ cyfm_size_in_byte?: number;
1288
+ cyfm_type?: string;
1289
+ cyfm_creation_dt?: string;
1290
+ cyfm_id_user?: string;
1291
+ cyfm_permissions?: string[];
1292
+ cyfm_tags?: string[];
1293
+ cyfm_version?: number;
1294
+ cyfm_file_status_sygmt?: string;
1295
+ cyfm_group_id?: string;
1296
+ cyfm_ismultiple?: boolean;
1297
+ cyfm_isactive?: boolean;
1658
1298
  }
1659
- interface DropdownConfig {
1660
- triggerIcon?: string;
1661
- triggerSize?: 'xs' | 'sm' | 'md' | 'lg';
1662
- triggerColor?: string;
1663
- triggerHoverColor?: string;
1664
- triggerHoverBgColor?: string;
1665
- menuWidth?: string;
1666
- menuPosition?: 'left' | 'right' | 'auto';
1667
- showArrow?: boolean;
1668
- forcePosition?: 'top' | 'bottom' | 'left' | 'right';
1669
- offsetX?: number;
1670
- offsetY?: number;
1671
- minWidth?: number;
1672
- usePortal?: boolean;
1299
+ interface ICoreFileManager extends ICoreCyfm {
1300
+ _id: string;
1301
+ cyfm_name: string;
1302
+ cyfm_path: string;
1303
+ cyfm_size_in_byte: number;
1304
+ cyfm_type: string;
1305
+ cyfm_creation_dt: string;
1306
+ cyfm_id_user: string;
1307
+ cyfm_permissions: string[];
1308
+ cyfm_tags: string[];
1309
+ cyfm_version: number;
1310
+ cyfm_file_status_sygmt: string;
1311
+ cyfm_group_id?: string;
1312
+ cyfm_ismultiple?: boolean;
1313
+ cyfm_isactive: boolean;
1673
1314
  }
1674
- interface DropdownPosition {
1675
- vertical: 'top' | 'bottom';
1676
- horizontal: 'left' | 'right';
1677
- spaceAvailable: {
1678
- top: number;
1679
- bottom: number;
1680
- left: number;
1681
- right: number;
1315
+ interface controllerResponse {
1316
+ success?: boolean;
1317
+ error_code?: string;
1318
+ message?: string;
1319
+ data?: any;
1320
+ code?: string;
1321
+ action?: string;
1322
+ total?: number;
1323
+ pageIndex?: number;
1324
+ pageSize?: number;
1325
+ controls?: {
1326
+ [key: string]: string;
1682
1327
  };
1683
1328
  }
1684
- declare class CideEleDropdownComponent implements OnInit, OnDestroy {
1685
- private destroyRef;
1686
- private dropdownManager;
1687
- private portalService;
1688
- private viewContainerRef;
1689
- private dropdownId;
1690
- private portalId;
1691
- dropdownContainer: _angular_core.Signal<ElementRef<any>>;
1692
- dropdownMenu: _angular_core.Signal<ElementRef<any> | undefined>;
1693
- dropdownMenuTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
1694
- set items(value: DropdownItem[]);
1695
- get items(): DropdownItem[];
1696
- private _items;
1697
- config: DropdownConfig;
1698
- triggerTemplate?: TemplateRef<{
1699
- $implicit: boolean;
1700
- }>;
1701
- menuTemplate?: TemplateRef<{
1702
- $implicit: DropdownItem[];
1703
- }>;
1704
- itemClick: EventEmitter<DropdownItem>;
1705
- dropdownToggle: EventEmitter<boolean>;
1706
- isOpen: _angular_core.WritableSignal<boolean>;
1707
- currentPosition: _angular_core.WritableSignal<DropdownPosition>;
1708
- ngOnInit(): void;
1709
- getTriggerClasses(): string;
1710
- getTriggerIconClasses(): string;
1711
- getMenuClasses(): string;
1712
- getMenuStyles(): string;
1713
- calculatePosition(): DropdownPosition;
1714
- private getMenuWidth;
1715
- protected getSafeConfig(): DropdownConfig;
1716
- private getEstimatedMenuHeight;
1717
- toggleDropdown(event: Event): void;
1718
- private openDropdown;
1719
- testMouseDown(item: DropdownItem): void;
1720
- onItemClick(item: DropdownItem, event: Event): void;
1721
- private createPortalDropdown;
1722
- private destroyPortalDropdown;
1723
- closeDropdown(): void;
1724
- getItemClasses(item: DropdownItem): string;
1725
- onWindowResize(): void;
1726
- onWindowScroll(): void;
1727
- ngOnDestroy(): void;
1728
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleDropdownComponent, never>;
1729
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleDropdownComponent, "cide-ele-dropdown", never, { "items": { "alias": "items"; "required": false; }; "config": { "alias": "config"; "required": false; }; "triggerTemplate": { "alias": "triggerTemplate"; "required": false; }; "menuTemplate": { "alias": "menuTemplate"; "required": false; }; }, { "itemClick": "itemClick"; "dropdownToggle": "dropdownToggle"; }, never, never, true, never>;
1329
+ type IFileManagerErrorLogger = {
1330
+ [key in keyof MFileManager]: string;
1331
+ };
1332
+ declare class MFileManager {
1333
+ cyfm_id: string;
1334
+ constructor(init: MFileManager);
1335
+ Validate?(): Partial<IFileManagerErrorLogger>;
1730
1336
  }
1731
-
1732
- interface DropdownInstance {
1733
- id: string;
1734
- close: () => void;
1735
- element?: Element;
1337
+ declare class ICoreCyfmSave implements ICoreCyfm {
1338
+ _id?: string;
1339
+ cyfm_name?: string;
1340
+ cyfm_alt_text?: string;
1341
+ cyfm_path?: string;
1342
+ cyfm_size_in_byte?: number;
1343
+ cyfm_type?: string;
1344
+ cyfm_creation_dt?: string;
1345
+ cyfm_id_user?: string;
1346
+ cyfm_permissions?: string[];
1347
+ cyfm_tags?: string[];
1348
+ cyfm_version?: number;
1349
+ cyfm_file_status_sygmt?: string;
1350
+ cyfm_group_id?: string;
1351
+ cyfm_isactive?: boolean;
1352
+ cyfm_ismultiple?: boolean;
1353
+ cyfm_file_base64: string;
1354
+ cyfm_temp_unique_id: string;
1355
+ constructor(init: ICoreCyfmSave);
1736
1356
  }
1737
- declare class DropdownManagerService {
1738
- private activeDropdowns;
1739
- private documentClickListener?;
1740
- private escapeKeyListener?;
1741
- constructor();
1742
- private initializeGlobalListeners;
1743
- registerDropdown(dropdown: DropdownInstance): void;
1744
- unregisterDropdown(id: string): void;
1745
- closeAllDropdowns(): void;
1746
- closeDropdown(id: string): void;
1747
- isDropdownOpen(id: string): boolean;
1748
- private handleDocumentClick;
1749
- ngOnDestroy(): void;
1750
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownManagerService, never>;
1751
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<DropdownManagerService>;
1357
+ declare class CoreFileManagerInsertUpdatePayload {
1358
+ core_file_manager_new: ICoreCyfmSave[];
1359
+ core_file_manager_update: ICoreCyfm[];
1360
+ core_file_manager_delete: ICoreCyfm[];
1361
+ constructor(init: CoreFileManagerInsertUpdatePayload);
1362
+ Validate?(): Partial<IFileManagerErrorLogger>;
1363
+ }
1364
+ interface fileManagerResponseData extends ICoreCyfm {
1365
+ cyfm_file_base64: string;
1366
+ }
1367
+ interface fileManagerControllerResponse extends controllerResponse {
1368
+ data?: fileManagerResponseData[];
1369
+ }
1370
+ interface CoreFileManagerInsertUpdateResponse extends controllerResponse {
1371
+ data?: {
1372
+ core_file_manager: {
1373
+ cyfm_id: string;
1374
+ cyfm_temp_unique_id: string;
1375
+ }[];
1376
+ };
1377
+ }
1378
+ interface mongooseObjectIdCreateControllerResponse extends controllerResponse {
1379
+ data?: {
1380
+ objectId: string;
1381
+ };
1382
+ }
1383
+ interface IFileUploadRequest {
1384
+ file: File;
1385
+ altText?: string;
1386
+ tags?: string[];
1387
+ permissions?: string[];
1388
+ userId?: string;
1389
+ groupId?: string;
1390
+ [key: string]: string | number | string[] | File | undefined;
1391
+ }
1392
+ interface IFileUploadResponse {
1393
+ success: boolean;
1394
+ message: string;
1395
+ data?: ICoreFileManager;
1396
+ error?: string;
1397
+ }
1398
+ interface IFileListRequest {
1399
+ pageIndex: number;
1400
+ pageSize: number;
1401
+ search?: string;
1402
+ fileType?: string;
1403
+ status?: string;
1404
+ userId?: string;
1405
+ tags?: string[];
1406
+ sortBy?: string;
1407
+ sortOrder?: 'asc' | 'desc';
1408
+ }
1409
+ interface IFileListResponse {
1410
+ success: boolean;
1411
+ message: string;
1412
+ data: ICoreFileManager[];
1413
+ total: number;
1414
+ pageIndex: number;
1415
+ pageSize: number;
1416
+ }
1417
+ interface IFileDeleteResponse {
1418
+ success: boolean;
1419
+ message: string;
1420
+ data?: string;
1421
+ }
1422
+ interface IFileUpdateRequest {
1423
+ _id: string;
1424
+ cyfm_name?: string;
1425
+ cyfm_alt_text?: string;
1426
+ cyfm_tags?: string[];
1427
+ cyfm_permissions?: string[];
1428
+ cyfm_file_status_sygmt?: string;
1429
+ cyfm_isactive?: boolean;
1430
+ }
1431
+ interface IFileUpdateResponse {
1432
+ success: boolean;
1433
+ message: string;
1434
+ data?: ICoreFileManager;
1435
+ }
1436
+ interface IFileUploadProgress {
1437
+ fileId: string;
1438
+ fileName: string;
1439
+ progress: number;
1440
+ status: 'pending' | 'uploading' | 'completed' | 'error' | 'cancelled';
1441
+ error?: string;
1442
+ uploadedFile?: any;
1443
+ }
1444
+ interface IFileUploadQueueItem extends IFileUploadProgress {
1445
+ file: File;
1446
+ }
1447
+ interface IFileFilterOptions {
1448
+ fileTypes: string[];
1449
+ statuses: string[];
1450
+ dateRange?: {
1451
+ start: Date;
1452
+ end: Date;
1453
+ };
1454
+ sizeRange?: {
1455
+ min: number;
1456
+ max: number;
1457
+ };
1458
+ tags: string[];
1459
+ }
1460
+ interface IFileGroupingOptions {
1461
+ groupBy: 'type' | 'status' | 'date' | 'size' | 'user' | 'none';
1462
+ sortBy: 'name' | 'size' | 'date' | 'type';
1463
+ sortOrder: 'asc' | 'desc';
1752
1464
  }
1753
1465
 
1754
- interface ConfirmationRequest<T = unknown> {
1755
- id: string;
1756
- title: string;
1757
- message: string;
1758
- type: 'danger' | 'warning' | 'info' | 'success';
1759
- icon?: string;
1760
- confirmText?: string;
1761
- cancelText?: string;
1762
- customTemplate?: TemplateRef<unknown>;
1763
- customData?: T;
1764
- resolve: (value: boolean | T) => void;
1765
- reject: (reason?: unknown) => void;
1466
+ interface FileUploadOptions {
1467
+ altText?: string;
1468
+ userId?: string;
1469
+ permissions?: string[];
1470
+ tags?: string[];
1471
+ fileStatus?: string;
1472
+ groupId?: string;
1473
+ isMultiple?: boolean;
1474
+ retryAttempts?: number;
1475
+ timeout?: number;
1476
+ [key: string]: string | number | string[] | undefined | boolean;
1766
1477
  }
1767
- interface ConfirmationOptions<T = unknown> {
1768
- title: string;
1769
- message: string;
1770
- type?: 'danger' | 'warning' | 'info' | 'success';
1771
- icon?: string;
1772
- confirmText?: string;
1773
- cancelText?: string;
1774
- customTemplate?: TemplateRef<unknown>;
1775
- customData?: T;
1478
+ interface UploadProgress {
1479
+ loaded: number;
1480
+ total: number;
1481
+ percentage: number;
1482
+ stage: 'reading' | 'uploading' | 'complete' | 'error';
1483
+ groupId?: string;
1776
1484
  }
1777
- declare class ConfirmationService implements OnDestroy {
1778
- private readonly confirmationQueue;
1779
- private readonly currentRequest;
1780
- readonly hasActiveConfirmation: _angular_core.Signal<boolean>;
1485
+ interface ServiceState {
1486
+ isUploading: boolean;
1487
+ uploadQueue: string[];
1488
+ activeUploads: Map<string, UploadProgress>;
1489
+ error: string | null;
1490
+ }
1491
+ declare class CideEleFileManagerService {
1492
+ private readonly http;
1493
+ private readonly destroyRef;
1494
+ private readonly _baseUrl;
1495
+ private readonly _objectIdEndpoint;
1496
+ private readonly _userId;
1497
+ private readonly _isUploading;
1498
+ private readonly _uploadQueue;
1499
+ private readonly _activeUploads;
1500
+ private readonly _fetchedFiles;
1501
+ private readonly _fileIdMapping;
1502
+ private readonly _error;
1503
+ readonly baseUrl: _angular_core.Signal<string>;
1504
+ readonly objectIdEndpoint: _angular_core.Signal<string>;
1505
+ readonly userId: _angular_core.Signal<string>;
1506
+ readonly isUploading: _angular_core.Signal<boolean>;
1507
+ readonly uploadQueue: _angular_core.Signal<string[]>;
1508
+ readonly activeUploads: _angular_core.Signal<Map<string, UploadProgress>>;
1509
+ readonly fetchedFiles: _angular_core.Signal<Map<string, any[]>>;
1510
+ readonly error: _angular_core.Signal<string | null>;
1511
+ readonly hasActiveUploads: _angular_core.Signal<boolean>;
1781
1512
  readonly queueLength: _angular_core.Signal<number>;
1513
+ readonly totalFetchedFiles: _angular_core.Signal<number>;
1514
+ readonly getFileCountByGroup: _angular_core.Signal<Map<string, number>>;
1515
+ readonly serviceState: _angular_core.Signal<{
1516
+ isUploading: boolean;
1517
+ uploadQueue: string[];
1518
+ activeUploads: Map<string, UploadProgress>;
1519
+ fetchedFiles: Map<string, any[]>;
1520
+ error: string | null;
1521
+ }>;
1782
1522
  constructor();
1783
- ngOnDestroy(): void;
1784
1523
  /**
1785
- * Ask for confirmation with a simple yes/no dialog
1524
+ * Upload a file with base64 encoding and progress tracking
1525
+ * Angular 20: Enhanced with better error handling, retry logic, and signal-based state
1526
+ * @param file The file to upload
1527
+ * @param options Upload options and additional data
1528
+ * @param progressCallback Optional callback for progress updates
1529
+ * @returns Observable with the upload response
1786
1530
  */
1787
- ask(options: ConfirmationOptions<unknown>): Promise<boolean>;
1531
+ uploadFile(file: File, options?: FileUploadOptions, progressCallback?: (progress: number) => void): Observable<CoreFileManagerInsertUpdateResponse>;
1788
1532
  /**
1789
- * Ask for confirmation with custom template and return custom data
1533
+ * Set the base URL for API calls
1534
+ * Angular 20: Using signal-based state management
1535
+ * @param url The base URL for the API
1790
1536
  */
1791
- askWithTemplate<T = unknown>(options: ConfirmationOptions<T> & {
1792
- customTemplate: TemplateRef<unknown>;
1793
- }): Promise<T>;
1537
+ setBaseUrl(url: string): void;
1794
1538
  /**
1795
- * Quick confirmation for dangerous actions
1539
+ * Set the user ID for file uploads
1540
+ * Angular 20: Using signal-based state management
1541
+ * @param userId The user ID to associate with uploaded files
1796
1542
  */
1797
- confirmDelete(itemName?: string): Promise<boolean>;
1543
+ setUserId(userId: string): void;
1798
1544
  /**
1799
- * Quick confirmation for permanent actions
1545
+ * Set the object ID generation endpoint
1546
+ * Angular 20: Using signal-based state management
1547
+ * @param endpoint The endpoint for generating object IDs (e.g., '/utility/generateObjectId')
1800
1548
  */
1801
- confirmPermanentAction(action: string, itemName?: string): Promise<boolean>;
1549
+ setObjectIdEndpoint(endpoint: string): void;
1802
1550
  /**
1803
- * Quick confirmation for safe actions
1551
+ * Generate Object ID for group uploads
1552
+ * Calls the backend API to generate a unique ObjectId for grouping multiple files
1553
+ * Uses the configurable object ID endpoint instead of hardcoded path
1554
+ * @returns Observable with the generated ObjectId
1804
1555
  */
1805
- confirmSafeAction(action: string, itemName?: string): Promise<boolean>;
1806
- private addToQueue;
1807
- private processQueue;
1808
- confirmCurrentRequest(data?: unknown): void;
1809
- cancelCurrentRequest(): void;
1810
- private removeCurrentRequest;
1811
- private generateId;
1812
- private getDefaultIcon;
1813
- getCurrentRequest(): _angular_core.WritableSignal<ConfirmationRequest<unknown> | null>;
1814
- getHasActiveConfirmation(): _angular_core.Signal<boolean>;
1815
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmationService, never>;
1816
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<ConfirmationService>;
1817
- }
1818
-
1819
- interface NotificationOptions {
1820
- message: string;
1821
- type?: 'success' | 'error' | 'warning' | 'info';
1822
- duration?: number;
1823
- showUndo?: boolean;
1824
- undoAction?: () => void;
1825
- undoText?: string;
1826
- icon?: string;
1827
- title?: string;
1828
- progress?: number;
1829
- showProgress?: boolean;
1830
- }
1831
- interface NotificationItem {
1832
- id: string;
1833
- message: string;
1834
- type: 'success' | 'error' | 'warning' | 'info';
1835
- duration: number;
1836
- showUndo: boolean;
1837
- undoAction?: () => void;
1838
- undoText: string;
1839
- icon: string;
1840
- title?: string;
1841
- timestamp: number;
1842
- isVisible: boolean;
1843
- progress?: number;
1844
- showProgress?: boolean;
1556
+ generateObjectId(): Observable<mongooseObjectIdCreateControllerResponse>;
1557
+ /**
1558
+ * Angular 20: Helper methods for state management
1559
+ */
1560
+ private generateFileId;
1561
+ private addToUploadQueue;
1562
+ private removeFromUploadQueue;
1563
+ private updateUploadProgress;
1564
+ private removeActiveUpload;
1565
+ /**
1566
+ * Angular 20: Enhanced error handling
1567
+ */
1568
+ private handleError;
1569
+ /**
1570
+ * Get file details by ID
1571
+ * @param payload The file ID to fetch details for
1572
+ * @returns Observable with file details
1573
+ */
1574
+ getFileDetails(payload: MFileManager): Observable<fileManagerControllerResponse>;
1575
+ /**
1576
+ * Get files by group ID and store them in service state
1577
+ * @param groupId The group ID to fetch files for
1578
+ * @returns Observable with files list
1579
+ */
1580
+ getFilesByGroupId(groupId: string): Observable<fileManagerListByGroupIdControllerResponse>;
1581
+ /**
1582
+ * Fetch and store files by group ID in service state
1583
+ * @param groupId The group ID to fetch files for
1584
+ * @returns Observable that completes when files are stored
1585
+ */
1586
+ fetchAndStoreFilesByGroupId(groupId: string): Observable<any[]>;
1587
+ /**
1588
+ * Get fetched files for a specific group ID
1589
+ * @param groupId The group ID to get files for
1590
+ * @returns Array of files for the group
1591
+ */
1592
+ getFetchedFilesByGroupId(groupId: string): any[];
1593
+ /**
1594
+ * Signal to trigger floating uploader visibility
1595
+ */
1596
+ private readonly _showFloatingUploader;
1597
+ private readonly _triggerGroupId;
1598
+ readonly showFloatingUploader: _angular_core.Signal<boolean>;
1599
+ readonly getTriggerGroupId: _angular_core.Signal<string | null>;
1600
+ /**
1601
+ * Trigger floating uploader to show with group ID
1602
+ * This is the ONLY way to pass group ID to floating uploader
1603
+ */
1604
+ triggerFloatingUploaderShow(groupId?: string): void;
1605
+ /**
1606
+ * Get all files (active uploads + fetched files) for a group ID
1607
+ * @param groupId The group ID to get files for
1608
+ * @returns Combined array of active and fetched files
1609
+ */
1610
+ getAllFilesForGroup(groupId: string): Array<{
1611
+ fileId: string;
1612
+ fileName: string;
1613
+ stage: string;
1614
+ percentage?: number;
1615
+ }>;
1616
+ /**
1617
+ * Get file name from file ID (extract from the ID format)
1618
+ */
1619
+ private getFileNameFromId;
1620
+ /**
1621
+ * Angular 20: Service utility methods
1622
+ */
1623
+ clearError(): void;
1624
+ getUploadProgress(fileId: string): UploadProgress | undefined;
1625
+ cancelUpload(fileId: string): void;
1626
+ /**
1627
+ * Clear all completed uploads from active uploads
1628
+ * Called when the floating uploader is closed
1629
+ */
1630
+ clearCompletedUploads(): void;
1631
+ /**
1632
+ * Remove a specific completed upload from active uploads
1633
+ */
1634
+ removeCompletedUpload(fileId: string): void;
1635
+ /**
1636
+ * Optimized method to get file count for a specific group
1637
+ * Uses computed property for better performance
1638
+ */
1639
+ getFileCountForGroup(groupId: string): number;
1640
+ /**
1641
+ * Optimized method to check if group has active uploads
1642
+ */
1643
+ hasActiveUploadsForGroup(groupId: string): boolean;
1644
+ /**
1645
+ * Angular 20: File validation utility
1646
+ */
1647
+ validateFile(file: File, maxSizeMB?: number, allowedTypes?: string[]): {
1648
+ valid: boolean;
1649
+ error?: string;
1650
+ };
1651
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleFileManagerService, never>;
1652
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CideEleFileManagerService>;
1845
1653
  }
1846
- declare class NotificationService {
1847
- private notifications;
1848
- private maxNotifications;
1849
- activeNotifications: _angular_core.Signal<NotificationItem[]>;
1850
- constructor();
1654
+
1655
+ declare class CideCoreFileManagerService {
1656
+ private http;
1657
+ private apiUrl;
1658
+ private fileListSubject;
1659
+ fileList$: Observable<ICoreFileManager[]>;
1660
+ constructor(http: HttpClient);
1851
1661
  /**
1852
- * Show a success notification
1662
+ * Get file list from API
1853
1663
  */
1854
- success(message: string, options?: Partial<NotificationOptions>): string;
1664
+ getFileList(body: IFileListRequest): Observable<IFileListResponse>;
1855
1665
  /**
1856
- * Show an error notification
1666
+ * Get file list using mock data (deprecated - use getFileList instead)
1857
1667
  */
1858
- error(message: string, options?: Partial<NotificationOptions>): string;
1668
+ getFileListWithMockData(_body: IFileListRequest): Observable<IFileListResponse>;
1859
1669
  /**
1860
- * Show a warning notification
1670
+ * Get file list from cache (if available)
1861
1671
  */
1862
- warning(message: string, options?: Partial<NotificationOptions>): string;
1672
+ getFileListFromCache(): ICoreFileManager[];
1863
1673
  /**
1864
- * Show an info notification
1674
+ * Upload file with progress tracking
1865
1675
  */
1866
- info(message: string, options?: Partial<NotificationOptions>): string;
1676
+ uploadFile(request: IFileUploadRequest): Observable<HttpEvent<IFileUploadResponse>>;
1867
1677
  /**
1868
- * Show a notification with undo functionality
1678
+ * Upload file with progress tracking (mock version - deprecated)
1869
1679
  */
1870
- showWithUndo(message: string, undoAction: () => void, options?: Partial<NotificationOptions>): string;
1680
+ uploadFileWithMockData(request: IFileUploadRequest): Observable<HttpEvent<IFileUploadResponse>>;
1871
1681
  /**
1872
- * Show a notification for reversible destructive actions
1682
+ * Update file metadata
1873
1683
  */
1874
- showReversibleAction(action: string, itemName: string, undoAction: () => void, options?: Partial<NotificationOptions>): string;
1684
+ updateFile(request: IFileUpdateRequest): Observable<IFileUpdateResponse>;
1875
1685
  /**
1876
- * Show a notification for background tasks
1686
+ * Delete file
1877
1687
  */
1878
- showBackgroundTask(taskName: string, isComplete?: boolean, options?: Partial<NotificationOptions>): string;
1688
+ deleteFile(id: string): Observable<IFileDeleteResponse>;
1879
1689
  /**
1880
- * Show a progress notification
1690
+ * Delete multiple files
1881
1691
  */
1882
- showProgress(message: string, progress?: number, options?: Partial<NotificationOptions>): string;
1692
+ deleteMultipleFiles(ids: string[]): Observable<{
1693
+ success: boolean;
1694
+ message?: string;
1695
+ data?: unknown;
1696
+ }>;
1883
1697
  /**
1884
- * Update progress for an existing notification
1698
+ * Toggle file active status
1885
1699
  */
1886
- updateProgress(id: string, progress: number, message?: string): void;
1700
+ toggleFileStatus(id: string): Observable<IFileListResponse>;
1887
1701
  /**
1888
- * Core show method
1702
+ * Get file by ID
1889
1703
  */
1890
- private show;
1704
+ getFileById(id: string): Observable<{
1705
+ success: boolean;
1706
+ message: string;
1707
+ data?: ICoreFileManager;
1708
+ }>;
1891
1709
  /**
1892
- * Remove a specific notification
1710
+ * Find file by ID
1893
1711
  */
1894
- remove(id: string): void;
1712
+ findFileById(id: string, items?: ICoreFileManager[]): ICoreFileManager | null;
1895
1713
  /**
1896
- * Remove all notifications
1714
+ * Get file size in human readable format
1897
1715
  */
1898
- clearAll(): void;
1716
+ getFileSizeDisplay(bytes: number): string;
1899
1717
  /**
1900
- * Execute undo action for a notification
1718
+ * Get file type icon
1901
1719
  */
1902
- executeUndo(id: string): void;
1903
- private addNotification;
1904
- private generateId;
1905
- private getDefaultIcon;
1906
- getNotifications(): _angular_core.WritableSignal<NotificationItem[]>;
1907
- getActiveNotifications(): _angular_core.Signal<NotificationItem[]>;
1908
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationService, never>;
1909
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<NotificationService>;
1910
- }
1911
-
1912
- /**
1913
- * File Manager Interfaces
1914
- * Based on core_file_manager table schema
1915
- */
1916
- interface ICoreCyfm {
1917
- _id?: string;
1918
- cyfm_name?: string;
1919
- cyfm_alt_text?: string;
1920
- cyfm_path?: string;
1921
- cyfm_size_in_byte?: number;
1922
- cyfm_type?: string;
1923
- cyfm_creation_dt?: string;
1924
- cyfm_id_user?: string;
1925
- cyfm_permissions?: string[];
1926
- cyfm_tags?: string[];
1927
- cyfm_version?: number;
1928
- cyfm_file_status_sygmt?: string;
1929
- cyfm_group_id?: string;
1930
- cyfm_ismultiple?: boolean;
1931
- cyfm_isactive?: boolean;
1932
- }
1933
- interface ICoreFileManager extends ICoreCyfm {
1934
- _id: string;
1935
- cyfm_name: string;
1936
- cyfm_path: string;
1937
- cyfm_size_in_byte: number;
1938
- cyfm_type: string;
1939
- cyfm_creation_dt: string;
1940
- cyfm_id_user: string;
1941
- cyfm_permissions: string[];
1942
- cyfm_tags: string[];
1943
- cyfm_version: number;
1944
- cyfm_file_status_sygmt: string;
1945
- cyfm_group_id?: string;
1946
- cyfm_ismultiple?: boolean;
1947
- cyfm_isactive: boolean;
1948
- }
1949
- interface controllerResponse {
1950
- success?: boolean;
1951
- error_code?: string;
1952
- message?: string;
1953
- data?: any;
1954
- code?: string;
1955
- action?: string;
1956
- total?: number;
1957
- pageIndex?: number;
1958
- pageSize?: number;
1959
- controls?: {
1960
- [key: string]: string;
1961
- };
1962
- }
1963
- type IFileManagerErrorLogger = {
1964
- [key in keyof MFileManager]: string;
1965
- };
1966
- declare class MFileManager {
1967
- cyfm_id: string;
1968
- constructor(init: MFileManager);
1969
- Validate?(): Partial<IFileManagerErrorLogger>;
1970
- }
1971
- declare class ICoreCyfmSave implements ICoreCyfm {
1972
- _id?: string;
1973
- cyfm_name?: string;
1974
- cyfm_alt_text?: string;
1975
- cyfm_path?: string;
1976
- cyfm_size_in_byte?: number;
1977
- cyfm_type?: string;
1978
- cyfm_creation_dt?: string;
1979
- cyfm_id_user?: string;
1980
- cyfm_permissions?: string[];
1981
- cyfm_tags?: string[];
1982
- cyfm_version?: number;
1983
- cyfm_file_status_sygmt?: string;
1984
- cyfm_group_id?: string;
1985
- cyfm_isactive?: boolean;
1986
- cyfm_ismultiple?: boolean;
1987
- cyfm_file_base64: string;
1988
- cyfm_temp_unique_id: string;
1989
- constructor(init: ICoreCyfmSave);
1990
- }
1991
- declare class CoreFileManagerInsertUpdatePayload {
1992
- core_file_manager_new: ICoreCyfmSave[];
1993
- core_file_manager_update: ICoreCyfm[];
1994
- core_file_manager_delete: ICoreCyfm[];
1995
- constructor(init: CoreFileManagerInsertUpdatePayload);
1996
- Validate?(): Partial<IFileManagerErrorLogger>;
1997
- }
1998
- interface fileManagerResponseData extends ICoreCyfm {
1999
- cyfm_file_base64: string;
2000
- }
2001
- interface fileManagerControllerResponse extends controllerResponse {
2002
- data?: fileManagerResponseData[];
2003
- }
2004
- interface CoreFileManagerInsertUpdateResponse extends controllerResponse {
2005
- data?: {
2006
- core_file_manager: {
2007
- cyfm_id: string;
2008
- cyfm_temp_unique_id: string;
2009
- }[];
2010
- };
2011
- }
2012
- interface mongooseObjectIdCreateControllerResponse extends controllerResponse {
2013
- data?: {
2014
- objectId: string;
2015
- };
2016
- }
2017
- interface IFileUploadRequest {
2018
- file: File;
2019
- altText?: string;
2020
- tags?: string[];
2021
- permissions?: string[];
2022
- userId?: string;
2023
- groupId?: string;
2024
- [key: string]: string | number | string[] | File | undefined;
2025
- }
2026
- interface IFileUploadResponse {
2027
- success: boolean;
2028
- message: string;
2029
- data?: ICoreFileManager;
2030
- error?: string;
2031
- }
2032
- interface IFileListRequest {
2033
- pageIndex: number;
2034
- pageSize: number;
2035
- search?: string;
2036
- fileType?: string;
2037
- status?: string;
2038
- userId?: string;
2039
- tags?: string[];
2040
- sortBy?: string;
2041
- sortOrder?: 'asc' | 'desc';
2042
- }
2043
- interface IFileListResponse {
2044
- success: boolean;
2045
- message: string;
2046
- data: ICoreFileManager[];
2047
- total: number;
2048
- pageIndex: number;
2049
- pageSize: number;
2050
- }
2051
- interface IFileDeleteResponse {
2052
- success: boolean;
2053
- message: string;
2054
- data?: string;
2055
- }
2056
- interface IFileUpdateRequest {
2057
- _id: string;
2058
- cyfm_name?: string;
2059
- cyfm_alt_text?: string;
2060
- cyfm_tags?: string[];
2061
- cyfm_permissions?: string[];
2062
- cyfm_file_status_sygmt?: string;
2063
- cyfm_isactive?: boolean;
2064
- }
2065
- interface IFileUpdateResponse {
2066
- success: boolean;
2067
- message: string;
2068
- data?: ICoreFileManager;
2069
- }
2070
- interface IFileUploadProgress {
2071
- fileId: string;
2072
- fileName: string;
2073
- progress: number;
2074
- status: 'pending' | 'uploading' | 'completed' | 'error' | 'cancelled';
2075
- error?: string;
2076
- uploadedFile?: any;
2077
- }
2078
- interface IFileUploadQueueItem extends IFileUploadProgress {
2079
- file: File;
1720
+ getFileTypeIcon(fileType: string): string;
1721
+ /**
1722
+ * Refresh file list from server
1723
+ */
1724
+ private refreshFileList;
1725
+ /**
1726
+ * Handle errors
1727
+ */
1728
+ private handleError;
1729
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideCoreFileManagerService, never>;
1730
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CideCoreFileManagerService>;
2080
1731
  }
2081
- interface IFileFilterOptions {
2082
- fileTypes: string[];
2083
- statuses: string[];
2084
- dateRange?: {
2085
- start: Date;
2086
- end: Date;
2087
- };
2088
- sizeRange?: {
2089
- min: number;
2090
- max: number;
2091
- };
2092
- tags: string[];
1732
+
1733
+ interface DropdownInstance {
1734
+ id: string;
1735
+ close: () => void;
1736
+ element?: Element;
2093
1737
  }
2094
- interface IFileGroupingOptions {
2095
- groupBy: 'type' | 'status' | 'date' | 'size' | 'user' | 'none';
2096
- sortBy: 'name' | 'size' | 'date' | 'type';
2097
- sortOrder: 'asc' | 'desc';
1738
+ declare class DropdownManagerService {
1739
+ private activeDropdowns;
1740
+ private documentClickListener?;
1741
+ private escapeKeyListener?;
1742
+ constructor();
1743
+ private initializeGlobalListeners;
1744
+ registerDropdown(dropdown: DropdownInstance): void;
1745
+ unregisterDropdown(id: string): void;
1746
+ closeAllDropdowns(): void;
1747
+ closeDropdown(id: string): void;
1748
+ isDropdownOpen(id: string): boolean;
1749
+ private handleDocumentClick;
1750
+ ngOnDestroy(): void;
1751
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownManagerService, never>;
1752
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<DropdownManagerService>;
2098
1753
  }
2099
1754
 
2100
- interface FileUploadOptions {
2101
- altText?: string;
2102
- userId?: string;
2103
- permissions?: string[];
2104
- tags?: string[];
2105
- fileStatus?: string;
2106
- groupId?: string;
2107
- isMultiple?: boolean;
2108
- retryAttempts?: number;
2109
- timeout?: number;
2110
- [key: string]: string | number | string[] | undefined | boolean;
2111
- }
2112
- interface UploadProgress {
2113
- loaded: number;
2114
- total: number;
2115
- percentage: number;
2116
- stage: 'reading' | 'uploading' | 'complete' | 'error';
2117
- groupId?: string;
1755
+ interface KeyboardShortcut {
1756
+ id: string;
1757
+ key: string;
1758
+ ctrlKey?: boolean;
1759
+ altKey?: boolean;
1760
+ shiftKey?: boolean;
1761
+ metaKey?: boolean;
1762
+ description?: string;
1763
+ action: () => void;
1764
+ preventDefault?: boolean;
1765
+ stopPropagation?: boolean;
2118
1766
  }
2119
- interface ServiceState {
2120
- isUploading: boolean;
2121
- uploadQueue: string[];
2122
- activeUploads: Map<string, UploadProgress>;
2123
- error: string | null;
1767
+ interface ShortcutOverride {
1768
+ shortcutId: string;
1769
+ newKey: string;
1770
+ newCtrlKey?: boolean;
1771
+ newAltKey?: boolean;
1772
+ newShiftKey?: boolean;
1773
+ newMetaKey?: boolean;
2124
1774
  }
2125
- declare class CideEleFileManagerService {
2126
- private readonly http;
2127
- private readonly destroyRef;
2128
- private readonly _baseUrl;
2129
- private readonly _objectIdEndpoint;
2130
- private readonly _userId;
2131
- private readonly _isUploading;
2132
- private readonly _uploadQueue;
2133
- private readonly _activeUploads;
2134
- private readonly _fetchedFiles;
2135
- private readonly _fileIdMapping;
2136
- private readonly _error;
2137
- readonly baseUrl: _angular_core.Signal<string>;
2138
- readonly objectIdEndpoint: _angular_core.Signal<string>;
2139
- readonly userId: _angular_core.Signal<string>;
2140
- readonly isUploading: _angular_core.Signal<boolean>;
2141
- readonly uploadQueue: _angular_core.Signal<string[]>;
2142
- readonly activeUploads: _angular_core.Signal<Map<string, UploadProgress>>;
2143
- readonly fetchedFiles: _angular_core.Signal<Map<string, any[]>>;
2144
- readonly error: _angular_core.Signal<string | null>;
2145
- readonly hasActiveUploads: _angular_core.Signal<boolean>;
2146
- readonly queueLength: _angular_core.Signal<number>;
2147
- readonly totalFetchedFiles: _angular_core.Signal<number>;
2148
- readonly getFileCountByGroup: _angular_core.Signal<Map<string, number>>;
2149
- readonly serviceState: _angular_core.Signal<{
2150
- isUploading: boolean;
2151
- uploadQueue: string[];
2152
- activeUploads: Map<string, UploadProgress>;
2153
- fetchedFiles: Map<string, any[]>;
2154
- error: string | null;
2155
- }>;
1775
+ declare class KeyboardShortcutService implements OnDestroy {
1776
+ private shortcuts;
1777
+ private overrides;
1778
+ private keydownListener?;
2156
1779
  constructor();
1780
+ ngOnDestroy(): void;
2157
1781
  /**
2158
- * Upload a file with base64 encoding and progress tracking
2159
- * Angular 20: Enhanced with better error handling, retry logic, and signal-based state
2160
- * @param file The file to upload
2161
- * @param options Upload options and additional data
2162
- * @param progressCallback Optional callback for progress updates
2163
- * @returns Observable with the upload response
1782
+ * Register a new keyboard shortcut
2164
1783
  */
2165
- uploadFile(file: File, options?: FileUploadOptions, progressCallback?: (progress: number) => void): Observable<CoreFileManagerInsertUpdateResponse>;
1784
+ register(shortcut: KeyboardShortcut): void;
2166
1785
  /**
2167
- * Set the base URL for API calls
2168
- * Angular 20: Using signal-based state management
2169
- * @param url The base URL for the API
1786
+ * Override an existing shortcut with new key combination
2170
1787
  */
2171
- setBaseUrl(url: string): void;
1788
+ override(shortcutId: string, newKey: string, options?: {
1789
+ ctrlKey?: boolean;
1790
+ altKey?: boolean;
1791
+ shiftKey?: boolean;
1792
+ metaKey?: boolean;
1793
+ }): void;
2172
1794
  /**
2173
- * Set the user ID for file uploads
2174
- * Angular 20: Using signal-based state management
2175
- * @param userId The user ID to associate with uploaded files
1795
+ * Remove a shortcut
2176
1796
  */
2177
- setUserId(userId: string): void;
1797
+ unregister(shortcutId: string): void;
2178
1798
  /**
2179
- * Set the object ID generation endpoint
2180
- * Angular 20: Using signal-based state management
2181
- * @param endpoint The endpoint for generating object IDs (e.g., '/utility/generateObjectId')
1799
+ * Remove override for a shortcut (restore original key combination)
2182
1800
  */
2183
- setObjectIdEndpoint(endpoint: string): void;
1801
+ removeOverride(shortcutId: string): void;
2184
1802
  /**
2185
- * Generate Object ID for group uploads
2186
- * Calls the backend API to generate a unique ObjectId for grouping multiple files
2187
- * Uses the configurable object ID endpoint instead of hardcoded path
2188
- * @returns Observable with the generated ObjectId
1803
+ * Get all registered shortcuts
2189
1804
  */
2190
- generateObjectId(): Observable<mongooseObjectIdCreateControllerResponse>;
1805
+ getAllShortcuts(): KeyboardShortcut[];
2191
1806
  /**
2192
- * Angular 20: Helper methods for state management
1807
+ * Get shortcuts by category or filter
2193
1808
  */
2194
- private generateFileId;
2195
- private addToUploadQueue;
2196
- private removeFromUploadQueue;
2197
- private updateUploadProgress;
2198
- private removeActiveUpload;
1809
+ getShortcuts(filter?: (shortcut: KeyboardShortcut) => boolean): KeyboardShortcut[];
2199
1810
  /**
2200
- * Angular 20: Enhanced error handling
1811
+ * Check if a shortcut is registered
2201
1812
  */
2202
- private handleError;
1813
+ hasShortcut(shortcutId: string): boolean;
2203
1814
  /**
2204
- * Get file details by ID
2205
- * @param payload The file ID to fetch details for
2206
- * @returns Observable with file details
1815
+ * Get shortcut information
2207
1816
  */
2208
- getFileDetails(payload: MFileManager): Observable<fileManagerControllerResponse>;
1817
+ getShortcut(shortcutId: string): KeyboardShortcut | undefined;
2209
1818
  /**
2210
- * Get files by group ID and store them in service state
2211
- * @param groupId The group ID to fetch files for
2212
- * @returns Observable with files list
1819
+ * Clear all shortcuts
2213
1820
  */
2214
- getFilesByGroupId(groupId: string): Observable<fileManagerListByGroupIdControllerResponse>;
1821
+ clearAll(): void;
2215
1822
  /**
2216
- * Fetch and store files by group ID in service state
2217
- * @param groupId The group ID to fetch files for
2218
- * @returns Observable that completes when files are stored
1823
+ * Set up global keyboard listener
2219
1824
  */
2220
- fetchAndStoreFilesByGroupId(groupId: string): Observable<any[]>;
1825
+ private setupGlobalListener;
1826
+ /**
1827
+ * Remove global keyboard listener
1828
+ */
1829
+ private removeGlobalListener;
1830
+ /**
1831
+ * Handle keydown events
1832
+ */
1833
+ private handleKeydown;
1834
+ /**
1835
+ * Check if event matches shortcut
1836
+ */
1837
+ private matchesShortcut;
1838
+ /**
1839
+ * Check if event matches override
1840
+ */
1841
+ private matchesOverride;
1842
+ /**
1843
+ * Get human-readable key description
1844
+ */
1845
+ private getKeyDescription;
1846
+ /**
1847
+ * Get key description for a shortcut ID
1848
+ */
1849
+ getKeyDescriptionForShortcut(shortcutId: string): string;
1850
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KeyboardShortcutService, never>;
1851
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<KeyboardShortcutService>;
1852
+ }
1853
+
1854
+ interface ConfirmationRequest<T = unknown> {
1855
+ id: string;
1856
+ title: string;
1857
+ message: string;
1858
+ type: 'danger' | 'warning' | 'info' | 'success';
1859
+ icon?: string;
1860
+ confirmText?: string;
1861
+ cancelText?: string;
1862
+ customTemplate?: TemplateRef<unknown>;
1863
+ customData?: T;
1864
+ resolve: (value: boolean | T) => void;
1865
+ reject: (reason?: unknown) => void;
1866
+ }
1867
+ interface ConfirmationOptions<T = unknown> {
1868
+ title: string;
1869
+ message: string;
1870
+ type?: 'danger' | 'warning' | 'info' | 'success';
1871
+ icon?: string;
1872
+ confirmText?: string;
1873
+ cancelText?: string;
1874
+ customTemplate?: TemplateRef<unknown>;
1875
+ customData?: T;
1876
+ }
1877
+ declare class ConfirmationService implements OnDestroy {
1878
+ private readonly confirmationQueue;
1879
+ private readonly currentRequest;
1880
+ readonly hasActiveConfirmation: _angular_core.Signal<boolean>;
1881
+ readonly queueLength: _angular_core.Signal<number>;
1882
+ constructor();
1883
+ ngOnDestroy(): void;
1884
+ /**
1885
+ * Ask for confirmation with a simple yes/no dialog
1886
+ */
1887
+ ask(options: ConfirmationOptions<unknown>): Promise<boolean>;
1888
+ /**
1889
+ * Ask for confirmation with custom template and return custom data
1890
+ */
1891
+ askWithTemplate<T = unknown>(options: ConfirmationOptions<T> & {
1892
+ customTemplate: TemplateRef<unknown>;
1893
+ }): Promise<T>;
1894
+ /**
1895
+ * Quick confirmation for dangerous actions
1896
+ */
1897
+ confirmDelete(itemName?: string): Promise<boolean>;
2221
1898
  /**
2222
- * Get fetched files for a specific group ID
2223
- * @param groupId The group ID to get files for
2224
- * @returns Array of files for the group
1899
+ * Quick confirmation for permanent actions
2225
1900
  */
2226
- getFetchedFilesByGroupId(groupId: string): any[];
1901
+ confirmPermanentAction(action: string, itemName?: string): Promise<boolean>;
2227
1902
  /**
2228
- * Signal to trigger floating uploader visibility
1903
+ * Quick confirmation for safe actions
2229
1904
  */
2230
- private readonly _showFloatingUploader;
2231
- private readonly _triggerGroupId;
2232
- readonly showFloatingUploader: _angular_core.Signal<boolean>;
2233
- readonly getTriggerGroupId: _angular_core.Signal<string | null>;
1905
+ confirmSafeAction(action: string, itemName?: string): Promise<boolean>;
1906
+ private addToQueue;
1907
+ private processQueue;
1908
+ confirmCurrentRequest(data?: unknown): void;
1909
+ cancelCurrentRequest(): void;
1910
+ private removeCurrentRequest;
1911
+ private generateId;
1912
+ private getDefaultIcon;
1913
+ getCurrentRequest(): _angular_core.WritableSignal<ConfirmationRequest<unknown> | null>;
1914
+ getHasActiveConfirmation(): _angular_core.Signal<boolean>;
1915
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmationService, never>;
1916
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ConfirmationService>;
1917
+ }
1918
+
1919
+ interface PortalPosition {
1920
+ top: number;
1921
+ left: number;
1922
+ maxHeight?: number;
1923
+ maxWidth?: number;
1924
+ minWidth?: number;
1925
+ }
1926
+ interface PortalConfig {
1927
+ triggerElement: HTMLElement;
1928
+ content: string;
1929
+ className?: string;
1930
+ position?: 'bottom' | 'top' | 'auto';
1931
+ align?: 'left' | 'right' | 'center' | 'auto';
1932
+ offsetX?: number;
1933
+ offsetY?: number;
1934
+ maxHeight?: number;
1935
+ minWidth?: number;
1936
+ closeOnClickOutside?: boolean;
1937
+ closeOnEscape?: boolean;
1938
+ }
1939
+ interface TemplatePortalConfig {
1940
+ triggerElement: HTMLElement;
1941
+ template: TemplateRef<any>;
1942
+ viewContainerRef: ViewContainerRef;
1943
+ context?: any;
1944
+ className?: string;
1945
+ position?: 'bottom' | 'top' | 'auto';
1946
+ align?: 'left' | 'right' | 'center' | 'auto';
1947
+ offsetX?: number;
1948
+ offsetY?: number;
1949
+ maxHeight?: number;
1950
+ minWidth?: number;
1951
+ closeOnClickOutside?: boolean;
1952
+ closeOnEscape?: boolean;
1953
+ }
1954
+ declare class PortalService {
1955
+ private portals;
1956
+ private templatePortals;
1957
+ private boundClickOutsideHandler;
1958
+ private boundEscapeHandler;
1959
+ private closeCallbacks;
1960
+ constructor();
2234
1961
  /**
2235
- * Trigger floating uploader to show with group ID
2236
- * This is the ONLY way to pass group ID to floating uploader
1962
+ * Create a portal with the given configuration
2237
1963
  */
2238
- triggerFloatingUploaderShow(groupId?: string): void;
1964
+ createPortal(id: string, config: PortalConfig): HTMLElement;
2239
1965
  /**
2240
- * Get all files (active uploads + fetched files) for a group ID
2241
- * @param groupId The group ID to get files for
2242
- * @returns Combined array of active and fetched files
1966
+ * Create a template-based portal with Angular template
2243
1967
  */
2244
- getAllFilesForGroup(groupId: string): Array<{
2245
- fileId: string;
2246
- fileName: string;
2247
- stage: string;
2248
- percentage?: number;
2249
- }>;
1968
+ createTemplatePortal(id: string, config: TemplatePortalConfig): HTMLElement;
2250
1969
  /**
2251
- * Get file name from file ID (extract from the ID format)
1970
+ * Update portal content
2252
1971
  */
2253
- private getFileNameFromId;
1972
+ updatePortal(id: string, content: string): void;
2254
1973
  /**
2255
- * Angular 20: Service utility methods
1974
+ * Update portal position
2256
1975
  */
2257
- clearError(): void;
2258
- getUploadProgress(fileId: string): UploadProgress | undefined;
2259
- cancelUpload(fileId: string): void;
1976
+ updatePortalPosition(id: string, config: PortalConfig): void;
2260
1977
  /**
2261
- * Clear all completed uploads from active uploads
2262
- * Called when the floating uploader is closed
1978
+ * Destroy a portal
2263
1979
  */
2264
- clearCompletedUploads(): void;
1980
+ destroyPortal(id: string): void;
2265
1981
  /**
2266
- * Remove a specific completed upload from active uploads
1982
+ * Destroy all portals
2267
1983
  */
2268
- removeCompletedUpload(fileId: string): void;
1984
+ destroyAllPortals(): void;
2269
1985
  /**
2270
- * Optimized method to get file count for a specific group
2271
- * Uses computed property for better performance
1986
+ * Register a close callback for a portal
2272
1987
  */
2273
- getFileCountForGroup(groupId: string): number;
1988
+ registerCloseCallback(id: string, callback: () => void): void;
2274
1989
  /**
2275
- * Optimized method to check if group has active uploads
1990
+ * Get portal element by ID
2276
1991
  */
2277
- hasActiveUploadsForGroup(groupId: string): boolean;
1992
+ getPortal(id: string): HTMLElement | undefined;
2278
1993
  /**
2279
- * Angular 20: File validation utility
1994
+ * Check if portal exists
2280
1995
  */
2281
- validateFile(file: File, maxSizeMB?: number, allowedTypes?: string[]): {
2282
- valid: boolean;
2283
- error?: string;
1996
+ hasPortal(id: string): boolean;
1997
+ private calculatePosition;
1998
+ private adjustPosition;
1999
+ private setupEventListeners;
2000
+ private cleanupEventListeners;
2001
+ private handleClickOutside;
2002
+ private handleEscape;
2003
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PortalService, never>;
2004
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<PortalService>;
2005
+ }
2006
+
2007
+ /**
2008
+ * Directive to display images from file manager by ID
2009
+ * Usage: <img cideEleFileImage [fileId]="yourFileId" [altText]="'Image'" class="your-css-classes" />
2010
+ */
2011
+ declare class CideEleFileImageDirective implements OnInit, OnDestroy {
2012
+ fileId: string | null;
2013
+ altText: string;
2014
+ private readonly fileManagerService;
2015
+ private readonly elementRef;
2016
+ private readonly destroyRef;
2017
+ ngOnInit(): void;
2018
+ ngOnDestroy(): void;
2019
+ private loadImage;
2020
+ private displayImage;
2021
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleFileImageDirective, never>;
2022
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CideEleFileImageDirective, "[cideEleFileImage]", never, { "fileId": { "alias": "fileId"; "required": false; }; "altText": { "alias": "altText"; "required": false; }; }, {}, never, never, true, never>;
2023
+ }
2024
+
2025
+ declare class CideFormFieldErrorComponent implements OnInit, OnChanges {
2026
+ control: AbstractControl;
2027
+ formGroup: FormGroup;
2028
+ fieldName: string;
2029
+ customMessages: {
2030
+ [key: string]: string;
2031
+ };
2032
+ private fieldLabelsMap;
2033
+ private elementService;
2034
+ formErrors: _angular_core.WritableSignal<string[]>;
2035
+ ngOnInit(): void;
2036
+ ngOnChanges(changes: SimpleChanges): void;
2037
+ private setupFormChangeListener;
2038
+ private updateFormErrors;
2039
+ private loadFormErrors;
2040
+ isFormGroupMode(): boolean;
2041
+ getFormGroupErrors(): Promise<string[]>;
2042
+ private buildFieldLabelsMap;
2043
+ getFormGroupErrorMessage(): string;
2044
+ getControlErrorMessage(control: AbstractControl, fieldName: string): string;
2045
+ getErrorMessage(): string;
2046
+ private getFieldDisplayName;
2047
+ private convertToDisplayName;
2048
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideFormFieldErrorComponent, never>;
2049
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideFormFieldErrorComponent, "cide-form-field-error", never, { "control": { "alias": "control"; "required": false; }; "formGroup": { "alias": "formGroup"; "required": false; }; "fieldName": { "alias": "fieldName"; "required": false; }; "customMessages": { "alias": "customMessages"; "required": false; }; }, {}, never, never, true, never>;
2050
+ }
2051
+
2052
+ declare class CideEleConfirmationModalComponent implements OnInit, OnDestroy {
2053
+ private readonly confirmationService;
2054
+ readonly hasActiveConfirmation: _angular_core.Signal<boolean>;
2055
+ readonly currentRequest: _angular_core.WritableSignal<cloud_ide_element.ConfirmationRequest<unknown> | null>;
2056
+ readonly customData: _angular_core.WritableSignal<unknown>;
2057
+ ngOnInit(): void;
2058
+ ngOnDestroy(): void;
2059
+ readonly getHeaderClass: _angular_core.Signal<string>;
2060
+ readonly getIconClass: _angular_core.Signal<string>;
2061
+ readonly getConfirmButtonClass: _angular_core.Signal<string>;
2062
+ onBackdropClick(event: Event): void;
2063
+ onCancel(): void;
2064
+ onConfirm(): void;
2065
+ updateCustomData(data: unknown): void;
2066
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleConfirmationModalComponent, never>;
2067
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleConfirmationModalComponent, "cide-ele-confirmation-modal", never, {}, {}, never, never, true, never>;
2068
+ }
2069
+
2070
+ declare class CideEleGlobalNotificationsComponent {
2071
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleGlobalNotificationsComponent, never>;
2072
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleGlobalNotificationsComponent, "cide-ele-global-notifications", never, {}, {}, never, never, true, never>;
2073
+ }
2074
+
2075
+ declare class CideEleToastNotificationComponent {
2076
+ private notificationService;
2077
+ activeNotifications: _angular_core.Signal<NotificationItem[]>;
2078
+ getToastClass(notification: NotificationItem): string;
2079
+ getIconClass(type: string): string;
2080
+ removeNotification(id: string): void;
2081
+ executeUndo(id: string): void;
2082
+ trackByNotification(index: number, notification: NotificationItem): string;
2083
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleToastNotificationComponent, never>;
2084
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleToastNotificationComponent, "cide-ele-toast-notification", never, {}, {}, never, never, true, never>;
2085
+ }
2086
+
2087
+ type ColumnType = 'text' | 'number' | 'date' | 'boolean' | 'status' | 'actions' | 'custom' | 'order';
2088
+ type ColumnWidth = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto' | string;
2089
+ type TextAlign = 'left' | 'center' | 'right';
2090
+ interface GridColumn {
2091
+ key: string;
2092
+ header: string;
2093
+ type: ColumnType;
2094
+ width?: ColumnWidth;
2095
+ sortable?: boolean;
2096
+ searchable?: boolean;
2097
+ truncate?: boolean;
2098
+ align?: TextAlign;
2099
+ renderer?: string;
2100
+ valueGetter?: string;
2101
+ formatter?: GridFormatter;
2102
+ actions?: GridAction[];
2103
+ statusConfig?: StatusConfig;
2104
+ }
2105
+ interface GridFormatter {
2106
+ type: 'date' | 'currency' | 'percentage' | 'custom';
2107
+ format?: string;
2108
+ customFunction?: string;
2109
+ }
2110
+ interface StatusConfig {
2111
+ activeValue: string | number | boolean;
2112
+ activeLabel: string;
2113
+ inactiveLabel: string;
2114
+ activeClass: string;
2115
+ inactiveClass: string;
2116
+ }
2117
+ interface GridAction {
2118
+ key: string;
2119
+ label: string;
2120
+ icon: string;
2121
+ variant: 'ghost' | 'primary' | 'outline' | 'danger';
2122
+ tooltip?: string;
2123
+ condition?: string;
2124
+ onClick: string;
2125
+ }
2126
+ interface GridPaginationConfig {
2127
+ enabled: boolean;
2128
+ pageSize: number;
2129
+ pageSizeOptions: number[];
2130
+ showQuickJump: boolean;
2131
+ showPageInfo: boolean;
2132
+ showRefresh: boolean;
2133
+ }
2134
+ interface GridSearchConfig {
2135
+ enabled: boolean;
2136
+ placeholder: string;
2137
+ searchableColumns: string[];
2138
+ debounceMs?: number;
2139
+ }
2140
+ interface GridExportConfig {
2141
+ enabled: boolean;
2142
+ formats: ('csv' | 'excel' | 'pdf')[];
2143
+ filename?: string;
2144
+ }
2145
+ interface GridLoadingConfig {
2146
+ useDefer: boolean;
2147
+ skeletonRows: number;
2148
+ showOverlay: boolean;
2149
+ }
2150
+ interface GridScrollConfig {
2151
+ enabled: boolean;
2152
+ maxHeight?: string;
2153
+ minHeight?: string;
2154
+ stickyHeader?: boolean;
2155
+ virtualScroll?: boolean;
2156
+ rowHeight?: number;
2157
+ }
2158
+ interface GridTreeConfig {
2159
+ enabled: boolean;
2160
+ primaryKey: string;
2161
+ foreignKey: string;
2162
+ childrenKey?: string;
2163
+ levelKey?: string;
2164
+ expandedKey?: string;
2165
+ hasChildrenKey?: string;
2166
+ }
2167
+ interface GridDragDropConfig {
2168
+ enabled: boolean;
2169
+ dragHandle?: string;
2170
+ orderField?: string;
2171
+ dragClass?: string;
2172
+ dropClass?: string;
2173
+ }
2174
+ interface GridConfiguration<T = Record<string, unknown>> {
2175
+ id: string;
2176
+ title?: string;
2177
+ subtitle?: string;
2178
+ columns: GridColumn[];
2179
+ data: T[];
2180
+ trackBy?: string;
2181
+ pagination: GridPaginationConfig;
2182
+ search: GridSearchConfig;
2183
+ export?: GridExportConfig;
2184
+ loading: GridLoadingConfig;
2185
+ scroll?: GridScrollConfig;
2186
+ tree?: GridTreeConfig;
2187
+ dragDrop?: GridDragDropConfig;
2188
+ responsive: boolean;
2189
+ striped?: boolean;
2190
+ bordered?: boolean;
2191
+ compact?: boolean;
2192
+ fullHeight?: boolean;
2193
+ onRowClick?: string;
2194
+ onSort?: string;
2195
+ onPageChange?: string;
2196
+ onSearch?: string;
2197
+ onRefresh?: string;
2198
+ onExport?: string;
2199
+ onRowReorder?: string;
2200
+ tableClass?: string;
2201
+ headerClass?: string;
2202
+ rowClass?: string;
2203
+ cellClass?: string;
2204
+ }
2205
+ interface GridState<T = Record<string, unknown>> {
2206
+ currentPage: number;
2207
+ pageSize: number;
2208
+ totalItems: number;
2209
+ totalPages: number;
2210
+ searchQuery: string;
2211
+ sortColumn?: string;
2212
+ sortDirection?: 'asc' | 'desc';
2213
+ loading: boolean;
2214
+ isRefreshing: boolean;
2215
+ selectedRows: T[];
2216
+ }
2217
+ interface GridEvent<T = Record<string, unknown>> {
2218
+ type: 'rowClick' | 'sort' | 'pageChange' | 'search' | 'refresh' | 'export' | 'action' | 'rowReorder';
2219
+ data: T | T[] | string | number | null | {
2220
+ sourceItem: T;
2221
+ sourceIndex: number;
2222
+ targetItem: T;
2223
+ targetIndex: number;
2224
+ newOrder: T[];
2225
+ allOrders?: T[];
2284
2226
  };
2285
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleFileManagerService, never>;
2286
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<CideEleFileManagerService>;
2227
+ column?: GridColumn;
2228
+ action?: GridAction;
2287
2229
  }
2230
+ declare const DEFAULT_GRID_CONFIG: Partial<GridConfiguration>;
2231
+ type GridEventHandler<T = Record<string, unknown>> = (event: GridEvent<T>) => void;
2232
+ type GridCustomRenderer<T = Record<string, unknown>> = (value: unknown, row: T, column: GridColumn) => string;
2233
+ type GridCustomFormatter = (value: unknown, format?: string) => string;
2288
2234
 
2289
- declare class CideCoreFileManagerService {
2290
- private http;
2291
- private apiUrl;
2292
- private fileListSubject;
2293
- fileList$: Observable<ICoreFileManager[]>;
2294
- constructor(http: HttpClient);
2295
- /**
2296
- * Get file list from API
2297
- */
2298
- getFileList(body: IFileListRequest): Observable<IFileListResponse>;
2299
- /**
2300
- * Get file list using mock data (deprecated - use getFileList instead)
2301
- */
2302
- getFileListWithMockData(_body: IFileListRequest): Observable<IFileListResponse>;
2303
- /**
2304
- * Get file list from cache (if available)
2305
- */
2306
- getFileListFromCache(): ICoreFileManager[];
2307
- /**
2308
- * Upload file with progress tracking
2309
- */
2310
- uploadFile(request: IFileUploadRequest): Observable<HttpEvent<IFileUploadResponse>>;
2235
+ interface TemplateContext<T = Record<string, unknown>> {
2236
+ $implicit: unknown;
2237
+ row: T;
2238
+ value: unknown;
2239
+ column: GridColumn;
2240
+ }
2241
+ type TemplateRenderer<T = Record<string, unknown>> = TemplateRef<TemplateContext<T>>;
2242
+ declare class CideEleDataGridComponent<T = Record<string, unknown>> implements OnInit, OnChanges, OnDestroy {
2243
+ config: GridConfiguration<T>;
2244
+ templateRenderers: Record<string, unknown>;
2245
+ customFormatters: Record<string, (value: unknown, format?: string) => string>;
2246
+ actionHandlers: Record<string, (data: T, action?: GridAction) => void>;
2247
+ serverSidePagination: boolean;
2248
+ totalServerItems: number;
2249
+ currentServerPage: number;
2250
+ currentServerPageSize: number;
2251
+ dragDropEnabled: boolean;
2252
+ gridEvent: EventEmitter<GridEvent<T>>;
2253
+ private internalData;
2254
+ private filteredData;
2255
+ currentPage: _angular_core.WritableSignal<number>;
2256
+ pageSize: _angular_core.WritableSignal<number>;
2257
+ totalItems: _angular_core.WritableSignal<number>;
2258
+ totalPages: _angular_core.WritableSignal<number>;
2259
+ searchQuery: _angular_core.WritableSignal<string>;
2260
+ loading: _angular_core.WritableSignal<boolean>;
2261
+ isRefreshing: _angular_core.WritableSignal<boolean>;
2262
+ pageChangeLoading: _angular_core.WritableSignal<boolean>;
2263
+ jumpToPage: number;
2264
+ isDragOverRow: number | null;
2265
+ isDragging: _angular_core.WritableSignal<boolean>;
2266
+ hasOrderChanged: _angular_core.WritableSignal<boolean>;
2267
+ private originalOrderIds;
2268
+ private initialDataOrderIds;
2269
+ private rowOrderMap;
2270
+ private localReorderedData;
2271
+ private searchDebounceTimer?;
2272
+ private isDataUpdate;
2273
+ hasNextPage: _angular_core.Signal<boolean>;
2274
+ hasPreviousPage: _angular_core.Signal<boolean>;
2275
+ mergedConfig: _angular_core.WritableSignal<GridConfiguration<T>>;
2276
+ ngOnInit(): void;
2277
+ ngOnDestroy(): void;
2278
+ ngOnChanges(changes: SimpleChanges): void;
2311
2279
  /**
2312
- * Upload file with progress tracking (mock version - deprecated)
2280
+ * Check if the config change is only a data update
2313
2281
  */
2314
- uploadFileWithMockData(request: IFileUploadRequest): Observable<HttpEvent<IFileUploadResponse>>;
2282
+ private isDataOnlyUpdate;
2315
2283
  /**
2316
- * Update file metadata
2284
+ * Update only the data without triggering full grid re-initialization
2285
+ * This prevents the search input and other UI state from being reset
2317
2286
  */
2318
- updateFile(request: IFileUpdateRequest): Observable<IFileUpdateResponse>;
2287
+ private updateDataOnly;
2288
+ private mergeConfigWithDefaults;
2289
+ private initializeGrid;
2319
2290
  /**
2320
- * Delete file
2291
+ * Get the unique identifier for an item
2321
2292
  */
2322
- deleteFile(id: string): Observable<IFileDeleteResponse>;
2293
+ private getItemId;
2323
2294
  /**
2324
- * Delete multiple files
2295
+ * Get the order value for an item from the config
2325
2296
  */
2326
- deleteMultipleFiles(ids: string[]): Observable<{
2327
- success: boolean;
2328
- message?: string;
2329
- data?: unknown;
2330
- }>;
2297
+ private getItemOrder;
2331
2298
  /**
2332
- * Toggle file active status
2299
+ * Initialize the original order for drag and drop
2333
2300
  */
2334
- toggleFileStatus(id: string): Observable<IFileListResponse>;
2301
+ private initializeOriginalOrder;
2335
2302
  /**
2336
- * Get file by ID
2303
+ * Refresh order tracking with current data (called when data updates)
2337
2304
  */
2338
- getFileById(id: string): Observable<{
2339
- success: boolean;
2340
- message: string;
2341
- data?: ICoreFileManager;
2342
- }>;
2305
+ private refreshOrderTracking;
2306
+ private applyFilters;
2343
2307
  /**
2344
- * Find file by ID
2308
+ * Preserve tree expansion state from current data
2345
2309
  */
2346
- findFileById(id: string, items?: ICoreFileManager[]): ICoreFileManager | null;
2310
+ private preserveTreeExpansionState;
2347
2311
  /**
2348
- * Get file size in human readable format
2312
+ * Apply preserved tree expansion state to new data
2349
2313
  */
2350
- getFileSizeDisplay(bytes: number): string;
2314
+ private applyTreeExpansionState;
2351
2315
  /**
2352
- * Get file type icon
2316
+ * Transform flat data to tree structure based on foreign key relationships
2353
2317
  */
2354
- getFileTypeIcon(fileType: string): string;
2318
+ private transformToTree;
2355
2319
  /**
2356
- * Refresh file list from server
2320
+ * Recursively calculate item level in hierarchy for unlimited depth support
2357
2321
  */
2358
- private refreshFileList;
2322
+ private calculateItemLevel;
2359
2323
  /**
2360
- * Handle errors
2324
+ * Flatten tree structure for display, respecting expansion state with unlimited nesting
2361
2325
  */
2362
- private handleError;
2363
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideCoreFileManagerService, never>;
2364
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<CideCoreFileManagerService>;
2365
- }
2366
-
2367
- declare class CideEleConfirmationModalComponent implements OnInit, OnDestroy {
2368
- private readonly confirmationService;
2369
- readonly hasActiveConfirmation: _angular_core.Signal<boolean>;
2370
- readonly currentRequest: _angular_core.WritableSignal<cloud_ide_element.ConfirmationRequest<unknown> | null>;
2371
- readonly customData: _angular_core.WritableSignal<unknown>;
2372
- ngOnInit(): void;
2373
- ngOnDestroy(): void;
2374
- readonly getHeaderClass: _angular_core.Signal<string>;
2375
- readonly getIconClass: _angular_core.Signal<string>;
2376
- readonly getConfirmButtonClass: _angular_core.Signal<string>;
2377
- onBackdropClick(event: Event): void;
2378
- onCancel(): void;
2379
- onConfirm(): void;
2380
- updateCustomData(data: unknown): void;
2381
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleConfirmationModalComponent, never>;
2382
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleConfirmationModalComponent, "cide-ele-confirmation-modal", never, {}, {}, never, never, true, never>;
2383
- }
2384
-
2385
- declare class CideEleToastNotificationComponent {
2386
- private notificationService;
2387
- activeNotifications: _angular_core.Signal<NotificationItem[]>;
2388
- getToastClass(notification: NotificationItem): string;
2389
- getIconClass(type: string): string;
2390
- removeNotification(id: string): void;
2391
- executeUndo(id: string): void;
2392
- trackByNotification(index: number, notification: NotificationItem): string;
2393
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleToastNotificationComponent, never>;
2394
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleToastNotificationComponent, "cide-ele-toast-notification", never, {}, {}, never, never, true, never>;
2395
- }
2396
-
2397
- declare class CideEleGlobalNotificationsComponent {
2398
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleGlobalNotificationsComponent, never>;
2399
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleGlobalNotificationsComponent, "cide-ele-global-notifications", never, {}, {}, never, never, true, never>;
2400
- }
2401
-
2402
- interface JsonEditorConfig {
2403
- /** Enable syntax highlighting */
2404
- syntaxHighlighting?: boolean;
2405
- /** Enable line numbers */
2406
- showLineNumbers?: boolean;
2407
- /** Enable auto-formatting */
2408
- autoFormat?: boolean;
2409
- /** Enable validation */
2410
- validateOnChange?: boolean;
2411
- /** Theme for the editor */
2412
- theme?: 'light' | 'dark';
2413
- /** Minimum height in pixels */
2414
- minHeight?: number;
2415
- /** Maximum height in pixels */
2416
- maxHeight?: number;
2417
- /** Placeholder text */
2418
- placeholder?: string;
2419
- /** Read-only mode */
2420
- readOnly?: boolean;
2421
- /** Show error messages */
2422
- showErrors?: boolean;
2423
- }
2424
- interface JsonEditorError {
2425
- line: number;
2426
- column: number;
2427
- message: string;
2428
- type: 'syntax' | 'validation';
2429
- }
2430
- declare class CideEleJsonEditorComponent implements OnInit, ControlValueAccessor {
2431
- label?: string;
2432
- helperText?: string;
2433
- required: boolean;
2434
- disabled: _angular_core.WritableSignal<boolean>;
2435
- showCharacterCount: boolean;
2436
- config: JsonEditorConfig;
2437
- configSignal: _angular_core.WritableSignal<JsonEditorConfig>;
2438
- valueChange: EventEmitter<string>;
2439
- objectChange: EventEmitter<object | null>;
2440
- errorsChange: EventEmitter<JsonEditorError[]>;
2441
- validChange: EventEmitter<boolean>;
2442
- jsonTextarea: _angular_core.Signal<ElementRef<HTMLTextAreaElement>>;
2443
- private destroyRef;
2444
- jsonString: _angular_core.WritableSignal<string>;
2445
- jsonObject: _angular_core.WritableSignal<object | null>;
2446
- errors: _angular_core.WritableSignal<JsonEditorError[]>;
2447
- editorId: string;
2448
- hasErrors: _angular_core.Signal<boolean>;
2449
- isValid: _angular_core.Signal<boolean>;
2450
- lineNumbers: _angular_core.Signal<number[]>;
2451
- containerClass: _angular_core.Signal<string>;
2452
- private defaultConfig;
2453
- ngOnInit(): void;
2326
+ private flattenTreeForDisplay;
2454
2327
  /**
2455
- * Handle input changes
2328
+ * Toggle expand/collapse state of a tree item with unlimited nesting support
2456
2329
  */
2457
- onInput(event: Event): void;
2330
+ private toggleTreeExpand;
2331
+ private updatePaginationState;
2332
+ onPageChange(page: number | string): void;
2333
+ onPageSizeChange(): void;
2334
+ updatePageSize(value: string | number | string[]): void;
2335
+ previousPage(): void;
2336
+ nextPage(): void;
2337
+ onJumpToPage(): void;
2338
+ getEnhancedPageNumbers(): (number | string)[];
2339
+ updateSearchQuery(value: inputType): void;
2340
+ onSearch(): void;
2341
+ onRefresh(): void;
2342
+ setRefreshing(isRefreshing: boolean): void;
2343
+ clearPageChangeLoading(): void;
2458
2344
  /**
2459
- * Handle blur event
2345
+ * Check if tree view is enabled
2460
2346
  */
2461
- onBlur(): void;
2347
+ isTreeEnabled(): boolean;
2462
2348
  /**
2463
- * Parse JSON string and emit object
2349
+ * Get tree configuration
2464
2350
  */
2465
- private parseJson;
2351
+ getTreeConfig(): cloud_ide_element.GridTreeConfig | undefined;
2466
2352
  /**
2467
- * Validate JSON and update errors
2353
+ * Check if an item has children
2468
2354
  */
2469
- private validateJson;
2355
+ hasChildren(item: T): boolean;
2470
2356
  /**
2471
- * Format JSON with proper indentation
2357
+ * Get item level in tree
2472
2358
  */
2473
- formatJson(): void;
2359
+ getItemLevel(item: T): number;
2474
2360
  /**
2475
- * Check if there's an error on a specific line
2361
+ * Check if item is expanded
2476
2362
  */
2477
- hasErrorOnLine(line: number): boolean;
2363
+ isItemExpanded(item: T): boolean;
2478
2364
  /**
2479
- * Get error ID for accessibility
2365
+ * Get tree indent style
2480
2366
  */
2481
- errorId(): string;
2367
+ getTreeIndentStyle(item: T): string;
2482
2368
  /**
2483
- * Focus the editor
2369
+ * Get tree level background class for visual distinction
2484
2370
  */
2485
- focus(): void;
2371
+ getTreeLevelClass(item: T): string;
2486
2372
  /**
2487
- * Clear the editor
2373
+ * Check if drag and drop is enabled
2488
2374
  */
2489
- clear(): void;
2375
+ isDragDropEnabled(): boolean;
2490
2376
  /**
2491
- * Get current JSON object
2377
+ * Get drag and drop configuration
2492
2378
  */
2493
- getValue(): object | null;
2379
+ getDragDropConfig(): cloud_ide_element.GridDragDropConfig | undefined;
2494
2380
  /**
2495
- * Get current JSON string
2381
+ * Handle drag start event
2496
2382
  */
2497
- getStringValue(): string;
2383
+ onDragStart(event: DragEvent, item: T, index: number): void;
2498
2384
  /**
2499
- * Check if JSON is valid
2385
+ * Handle drag over event
2500
2386
  */
2501
- isValidJson(): boolean;
2387
+ onDragOver(event: DragEvent): void;
2502
2388
  /**
2503
- * Get validation errors
2389
+ * Handle drag leave event
2504
2390
  */
2505
- getErrors(): JsonEditorError[];
2506
- writeValue(value: string | object | null | undefined): void;
2507
- registerOnChange(fn: (value: string) => void): void;
2508
- registerOnTouched(fn: () => void): void;
2509
- setDisabledState(isDisabled: boolean): void;
2510
- private onChange;
2511
- private onTouched;
2512
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleJsonEditorComponent, never>;
2513
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleJsonEditorComponent, "cide-ele-json-editor", never, { "label": { "alias": "label"; "required": false; }; "helperText": { "alias": "helperText"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "showCharacterCount": { "alias": "showCharacterCount"; "required": false; }; "config": { "alias": "config"; "required": false; }; }, { "valueChange": "valueChange"; "objectChange": "objectChange"; "errorsChange": "errorsChange"; "validChange": "validChange"; }, never, never, true, never>;
2391
+ onDragLeave(event: DragEvent): void;
2392
+ /**
2393
+ * Handle drop event
2394
+ */
2395
+ onDrop(event: DragEvent, targetItem: T, targetIndex: number): void;
2396
+ /**
2397
+ * Handle drag end event
2398
+ */
2399
+ onDragEnd(event: DragEvent): void;
2400
+ /**
2401
+ * Calculate new order after reordering
2402
+ */
2403
+ private getNewOrder;
2404
+ /**
2405
+ * Get the current order number for a specific item
2406
+ */
2407
+ getCurrentOrderNumber(item: T): number;
2408
+ /**
2409
+ * Update the row order map with new positions after reordering
2410
+ */
2411
+ private updateRowOrderMap;
2412
+ /**
2413
+ * Check if any row has changed position by comparing old vs new positions
2414
+ */
2415
+ private checkIfOrderChanged;
2416
+ /**
2417
+ * Reset the row order map to original positions (for reset action)
2418
+ * Includes all items from hierarchical structure (parents and children)
2419
+ */
2420
+ private resetRowOrderMap;
2421
+ /**
2422
+ * Update the row order map baseline to current positions (for save action)
2423
+ * Includes all items from hierarchical structure (parents and children)
2424
+ */
2425
+ private updateRowOrderMapBaseline;
2426
+ /**
2427
+ * Get the current order array from the row order map
2428
+ * Includes all items from hierarchical structure (parents and children)
2429
+ */
2430
+ private getCurrentOrderFromMap;
2431
+ /**
2432
+ * Get only the items that have actually changed order
2433
+ * Includes all items from hierarchical structure (parents and children)
2434
+ */
2435
+ private getChangedOrders;
2436
+ /**
2437
+ * Flatten all data for order tracking (includes all hierarchical children)
2438
+ * This method ensures that all items (parents and children) are included in order tracking
2439
+ */
2440
+ private flattenAllDataForOrderTracking;
2441
+ /**
2442
+ * Update local data order for visual reordering (LOCAL ONLY)
2443
+ */
2444
+ private updateLocalDataOrder;
2445
+ /**
2446
+ * Check if the current order has changed from the initial order
2447
+ */
2448
+ private checkOrderChanged;
2449
+ onRowClick(item: T): void;
2450
+ onActionClick(item: T, action: GridAction): void;
2451
+ private emitEvent;
2452
+ /**
2453
+ * Get nested value from an object
2454
+ * @param obj - The object to get the nested value from
2455
+ * @param path - The path to the nested value (e.g., 'contact.email')
2456
+ * @returns The nested value or undefined if not found
2457
+ * @example
2458
+ * const obj = { contact: { email: 'test@example.com' } };
2459
+ * const value = getNestedValue(obj, 'contact.email');
2460
+ * // value === 'test@example.com'
2461
+ */
2462
+ getNestedValue(obj: T, path: string): unknown;
2463
+ /**
2464
+ * Set a nested value in an object using dot notation
2465
+ * @param obj The object to modify
2466
+ * @param path The dot notation path (e.g., 'contact.email')
2467
+ * @param value The value to set
2468
+ * @example
2469
+ * const obj = { contact: { email: 'old@example.com' } };
2470
+ * setNestedValue(obj, 'contact.email', 'new@example.com');
2471
+ * // obj.contact.email === 'new@example.com'
2472
+ */
2473
+ setNestedValue(obj: T, path: string, value: unknown): void;
2474
+ /**
2475
+ * Compare two order arrays to check if they are different
2476
+ * This method can be used by parent components to check if order has actually changed
2477
+ * @param currentOrder Current order array
2478
+ * @param originalOrder Original order array
2479
+ * @returns true if orders are different, false if they are the same
2480
+ */
2481
+ compareOrders(currentOrder: Array<{
2482
+ id: string | undefined;
2483
+ order: number | undefined;
2484
+ }>, originalOrder: Array<{
2485
+ id: string | undefined;
2486
+ order: number | undefined;
2487
+ }>): boolean;
2488
+ formatValue(value: unknown, column: GridColumn): string;
2489
+ private formatDate;
2490
+ private formatCurrency;
2491
+ private formatPercentage;
2492
+ isTemplateRenderer(rendererKey: string): boolean;
2493
+ getTemplateRenderer(rendererKey: string): TemplateRenderer<T> | null;
2494
+ getTemplateContext(value: unknown, row: T, column: GridColumn): TemplateContext<T>;
2495
+ getColumnWidthClass(width?: ColumnWidth): string;
2496
+ getColumnMaxWidthClass(width?: ColumnWidth): string;
2497
+ getStatusClass(value: unknown, statusConfig?: StatusConfig): string;
2498
+ getStatusText(value: unknown, statusConfig?: StatusConfig): string;
2499
+ getItemRangeText(): string;
2500
+ getPageSizeOptions(): {
2501
+ value: number;
2502
+ label: string;
2503
+ }[];
2504
+ trackByFn(index: number, item: T): unknown;
2505
+ getSkeletonArray(): number[];
2506
+ get displayedData(): T[];
2507
+ get columns(): GridColumn[];
2508
+ get paginationConfig(): cloud_ide_element.GridPaginationConfig;
2509
+ get searchConfig(): cloud_ide_element.GridSearchConfig;
2510
+ get loadingConfig(): cloud_ide_element.GridLoadingConfig;
2511
+ get scrollConfig(): cloud_ide_element.GridScrollConfig | undefined;
2512
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleDataGridComponent<any>, never>;
2513
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleDataGridComponent<any>, "cide-ele-data-grid", never, { "config": { "alias": "config"; "required": false; }; "templateRenderers": { "alias": "templateRenderers"; "required": false; }; "customFormatters": { "alias": "customFormatters"; "required": false; }; "actionHandlers": { "alias": "actionHandlers"; "required": false; }; "serverSidePagination": { "alias": "serverSidePagination"; "required": false; }; "totalServerItems": { "alias": "totalServerItems"; "required": false; }; "currentServerPage": { "alias": "currentServerPage"; "required": false; }; "currentServerPageSize": { "alias": "currentServerPageSize"; "required": false; }; "dragDropEnabled": { "alias": "dragDropEnabled"; "required": false; }; }, { "gridEvent": "gridEvent"; }, never, never, true, never>;
2514
+ }
2515
+
2516
+ interface DropdownItem {
2517
+ id: string;
2518
+ label: string;
2519
+ icon?: string;
2520
+ iconColor?: string;
2521
+ textColor?: string;
2522
+ hoverBgColor?: string;
2523
+ disabled?: boolean;
2524
+ divider?: boolean;
2525
+ }
2526
+ interface DropdownConfig {
2527
+ triggerIcon?: string;
2528
+ triggerSize?: 'xs' | 'sm' | 'md' | 'lg';
2529
+ triggerColor?: string;
2530
+ triggerHoverColor?: string;
2531
+ triggerHoverBgColor?: string;
2532
+ menuWidth?: string;
2533
+ menuPosition?: 'left' | 'right' | 'auto';
2534
+ showArrow?: boolean;
2535
+ forcePosition?: 'top' | 'bottom' | 'left' | 'right';
2536
+ offsetX?: number;
2537
+ offsetY?: number;
2538
+ minWidth?: number;
2539
+ usePortal?: boolean;
2540
+ }
2541
+ interface DropdownPosition {
2542
+ vertical: 'top' | 'bottom';
2543
+ horizontal: 'left' | 'right';
2544
+ spaceAvailable: {
2545
+ top: number;
2546
+ bottom: number;
2547
+ left: number;
2548
+ right: number;
2549
+ };
2550
+ }
2551
+ declare class CideEleDropdownComponent implements OnInit, OnDestroy {
2552
+ private destroyRef;
2553
+ private dropdownManager;
2554
+ private portalService;
2555
+ private viewContainerRef;
2556
+ private dropdownId;
2557
+ private portalId;
2558
+ dropdownContainer: _angular_core.Signal<ElementRef<any>>;
2559
+ dropdownMenu: _angular_core.Signal<ElementRef<any> | undefined>;
2560
+ dropdownMenuTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
2561
+ set items(value: DropdownItem[]);
2562
+ get items(): DropdownItem[];
2563
+ private _items;
2564
+ config: DropdownConfig;
2565
+ triggerTemplate?: TemplateRef<{
2566
+ $implicit: boolean;
2567
+ }>;
2568
+ menuTemplate?: TemplateRef<{
2569
+ $implicit: DropdownItem[];
2570
+ }>;
2571
+ itemClick: EventEmitter<DropdownItem>;
2572
+ dropdownToggle: EventEmitter<boolean>;
2573
+ isOpen: _angular_core.WritableSignal<boolean>;
2574
+ currentPosition: _angular_core.WritableSignal<DropdownPosition>;
2575
+ ngOnInit(): void;
2576
+ getTriggerClasses(): string;
2577
+ getTriggerIconClasses(): string;
2578
+ getMenuClasses(): string;
2579
+ getMenuStyles(): string;
2580
+ calculatePosition(): DropdownPosition;
2581
+ private getMenuWidth;
2582
+ protected getSafeConfig(): DropdownConfig;
2583
+ private getEstimatedMenuHeight;
2584
+ toggleDropdown(event: Event): void;
2585
+ private openDropdown;
2586
+ testMouseDown(item: DropdownItem): void;
2587
+ onItemClick(item: DropdownItem, event: Event): void;
2588
+ private createPortalDropdown;
2589
+ private destroyPortalDropdown;
2590
+ closeDropdown(): void;
2591
+ getItemClasses(item: DropdownItem): string;
2592
+ onWindowResize(): void;
2593
+ onWindowScroll(): void;
2594
+ ngOnDestroy(): void;
2595
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleDropdownComponent, never>;
2596
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleDropdownComponent, "cide-ele-dropdown", never, { "items": { "alias": "items"; "required": false; }; "config": { "alias": "config"; "required": false; }; "triggerTemplate": { "alias": "triggerTemplate"; "required": false; }; "menuTemplate": { "alias": "menuTemplate"; "required": false; }; }, { "itemClick": "itemClick"; "dropdownToggle": "dropdownToggle"; }, never, never, true, never>;
2514
2597
  }
2515
2598
 
2516
2599
  interface FloatingContainerConfig {
@@ -2820,274 +2903,130 @@ declare class CideEleFloatingContainerDynamicDirective implements OnInit, OnDest
2820
2903
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CideEleFloatingContainerDynamicDirective, "[cideEleFloatingDynamic]", never, { "componentId": { "alias": "componentId"; "required": false; }; "componentConfig": { "alias": "componentConfig"; "required": false; }; "isVisible": { "alias": "isVisible"; "required": false; }; }, {}, never, never, true, never>;
2821
2904
  }
2822
2905
 
2823
- declare class FloatingContainerShortcutsService {
2824
- private keyboardShortcutService;
2825
- private containerService;
2826
- private readonly Z_INDEX_LAYERS;
2827
- constructor();
2906
+ interface JsonEditorConfig {
2907
+ /** Enable syntax highlighting */
2908
+ syntaxHighlighting?: boolean;
2909
+ /** Enable line numbers */
2910
+ showLineNumbers?: boolean;
2911
+ /** Enable auto-formatting */
2912
+ autoFormat?: boolean;
2913
+ /** Enable validation */
2914
+ validateOnChange?: boolean;
2915
+ /** Theme for the editor */
2916
+ theme?: 'light' | 'dark';
2917
+ /** Minimum height in pixels */
2918
+ minHeight?: number;
2919
+ /** Maximum height in pixels */
2920
+ maxHeight?: number;
2921
+ /** Placeholder text */
2922
+ placeholder?: string;
2923
+ /** Read-only mode */
2924
+ readOnly?: boolean;
2925
+ /** Show error messages */
2926
+ showErrors?: boolean;
2927
+ }
2928
+ interface JsonEditorError {
2929
+ line: number;
2930
+ column: number;
2931
+ message: string;
2932
+ type: 'syntax' | 'validation';
2933
+ }
2934
+ declare class CideEleJsonEditorComponent implements OnInit, ControlValueAccessor {
2935
+ label?: string;
2936
+ helperText?: string;
2937
+ required: boolean;
2938
+ disabled: _angular_core.WritableSignal<boolean>;
2939
+ showCharacterCount: boolean;
2940
+ config: JsonEditorConfig;
2941
+ configSignal: _angular_core.WritableSignal<JsonEditorConfig>;
2942
+ valueChange: EventEmitter<string>;
2943
+ objectChange: EventEmitter<object | null>;
2944
+ errorsChange: EventEmitter<JsonEditorError[]>;
2945
+ validChange: EventEmitter<boolean>;
2946
+ jsonTextarea: _angular_core.Signal<ElementRef<HTMLTextAreaElement>>;
2947
+ private destroyRef;
2948
+ jsonString: _angular_core.WritableSignal<string>;
2949
+ jsonObject: _angular_core.WritableSignal<object | null>;
2950
+ errors: _angular_core.WritableSignal<JsonEditorError[]>;
2951
+ editorId: string;
2952
+ hasErrors: _angular_core.Signal<boolean>;
2953
+ isValid: _angular_core.Signal<boolean>;
2954
+ lineNumbers: _angular_core.Signal<number[]>;
2955
+ containerClass: _angular_core.Signal<string>;
2956
+ private defaultConfig;
2957
+ ngOnInit(): void;
2828
2958
  /**
2829
- * Register default floating container shortcuts
2959
+ * Handle input changes
2830
2960
  */
2831
- private registerDefaultShortcuts;
2961
+ onInput(event: Event): void;
2832
2962
  /**
2833
- * Register number shortcuts (Alt + 1, Alt + 2, etc.)
2963
+ * Handle blur event
2834
2964
  */
2835
- private registerNumberShortcuts;
2965
+ onBlur(): void;
2836
2966
  /**
2837
- * Open new floating container
2967
+ * Parse JSON string and emit object
2838
2968
  */
2839
- private openNewContainer;
2969
+ private parseJson;
2840
2970
  /**
2841
- * Focus previous container
2971
+ * Validate JSON and update errors
2842
2972
  */
2843
- private focusPreviousContainer;
2973
+ private validateJson;
2844
2974
  /**
2845
- * Hide all containers
2975
+ * Format JSON with proper indentation
2846
2976
  */
2847
- private hideAllContainers;
2977
+ formatJson(): void;
2848
2978
  /**
2849
- * Show all containers
2979
+ * Check if there's an error on a specific line
2850
2980
  */
2851
- private showAllContainers;
2981
+ hasErrorOnLine(line: number): boolean;
2852
2982
  /**
2853
- * Minimize all containers
2983
+ * Get error ID for accessibility
2854
2984
  */
2855
- private minimizeAllContainers;
2985
+ errorId(): string;
2856
2986
  /**
2857
- * Focus container by index
2987
+ * Focus the editor
2858
2988
  */
2859
- private focusContainerByIndex;
2989
+ focus(): void;
2860
2990
  /**
2861
- * Open file uploader
2991
+ * Clear the editor
2862
2992
  */
2863
- private openFileUploader;
2993
+ clear(): void;
2864
2994
  /**
2865
- * Open entity rights sharing
2995
+ * Get current JSON object
2866
2996
  */
2867
- private openEntityRightsSharing;
2997
+ getValue(): object | null;
2868
2998
  /**
2869
- * Duplicate current container
2999
+ * Get current JSON string
2870
3000
  */
2871
- private duplicateCurrentContainer;
3001
+ getStringValue(): string;
2872
3002
  /**
2873
- * Close current container
3003
+ * Check if JSON is valid
2874
3004
  */
2875
- private closeCurrentContainer;
3005
+ isValidJson(): boolean;
2876
3006
  /**
2877
- * Toggle container visibility
3007
+ * Get validation errors
2878
3008
  */
2879
- private toggleContainerVisibility;
2880
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<FloatingContainerShortcutsService, never>;
2881
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<FloatingContainerShortcutsService>;
2882
- }
2883
-
2884
- declare class CideFormFieldErrorComponent implements OnInit, OnChanges {
2885
- control: AbstractControl;
2886
- formGroup: FormGroup;
2887
- fieldName: string;
2888
- customMessages: {
2889
- [key: string]: string;
2890
- };
2891
- private fieldLabelsMap;
2892
- private elementService;
2893
- formErrors: _angular_core.WritableSignal<string[]>;
2894
- ngOnInit(): void;
2895
- ngOnChanges(changes: SimpleChanges): void;
2896
- private setupFormChangeListener;
2897
- private updateFormErrors;
2898
- private loadFormErrors;
2899
- isFormGroupMode(): boolean;
2900
- getFormGroupErrors(): Promise<string[]>;
2901
- private buildFieldLabelsMap;
2902
- getFormGroupErrorMessage(): string;
2903
- getControlErrorMessage(control: AbstractControl, fieldName: string): string;
2904
- getErrorMessage(): string;
2905
- private getFieldDisplayName;
2906
- private convertToDisplayName;
2907
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideFormFieldErrorComponent, never>;
2908
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideFormFieldErrorComponent, "cide-form-field-error", never, { "control": { "alias": "control"; "required": false; }; "formGroup": { "alias": "formGroup"; "required": false; }; "fieldName": { "alias": "fieldName"; "required": false; }; "customMessages": { "alias": "customMessages"; "required": false; }; }, {}, never, never, true, never>;
2909
- }
2910
-
2911
- interface BreadcrumbItem$1 {
2912
- id: string;
2913
- label: string;
2914
- icon?: string;
2915
- url?: string;
2916
- disabled?: boolean;
2917
- type?: 'root' | 'category' | 'entity' | 'custom';
2918
- metadata?: any;
2919
- }
2920
- interface BreadcrumbDropdownOption$1 {
2921
- id: string;
2922
- label: string;
2923
- icon?: string;
2924
- disabled?: boolean;
2925
- action?: () => void;
2926
- }
2927
- interface BreadcrumbSeparator$1 {
2928
- type: 'chevron' | 'slash' | 'arrow' | 'dot' | 'custom';
2929
- icon?: string;
2930
- text?: string;
2931
- }
2932
- type BreadcrumbStyle$1 = 'modern' | 'classic' | 'minimal' | 'hierarchical';
2933
- interface BreadcrumbConfig$1 {
2934
- style: BreadcrumbStyle$1;
2935
- separator: BreadcrumbSeparator$1;
2936
- showHomeIcon: boolean;
2937
- homeIcon: string;
2938
- maxItems: number;
2939
- showDropdownOnOverflow: boolean;
2940
- dropdownOptions: BreadcrumbDropdownOption$1[];
2941
- clickableItems: boolean;
2942
- showTooltips: boolean;
2943
- responsive: boolean;
2944
- compact: boolean;
2945
- animated: boolean;
2946
- }
2947
- declare class CideEleBreadcrumbComponent implements OnInit, OnDestroy {
2948
- items: BreadcrumbItem$1[];
2949
- style: BreadcrumbStyle$1;
2950
- separator: BreadcrumbSeparator$1;
2951
- showHomeIcon: boolean;
2952
- homeIcon: string;
2953
- maxItems: number;
2954
- showDropdownOnOverflow: boolean;
2955
- dropdownOptions: BreadcrumbDropdownOption$1[];
2956
- clickableItems: boolean;
2957
- showTooltips: boolean;
2958
- responsive: boolean;
2959
- compact: boolean;
2960
- animated: boolean;
2961
- loading: boolean;
2962
- disabled: boolean;
2963
- itemClick: EventEmitter<BreadcrumbItem$1>;
2964
- dropdownOptionClick: EventEmitter<BreadcrumbDropdownOption$1>;
2965
- homeClick: EventEmitter<void>;
2966
- private showDropdown;
2967
- private isOverflowing;
2968
- private visibleItems;
2969
- private hiddenItems;
2970
- showDropdownSignal: _angular_core.Signal<boolean>;
2971
- isOverflowingSignal: _angular_core.Signal<boolean>;
2972
- visibleItemsSignal: _angular_core.Signal<BreadcrumbItem$1[]>;
2973
- hiddenItemsSignal: _angular_core.Signal<BreadcrumbItem$1[]>;
2974
- config: _angular_core.Signal<BreadcrumbConfig$1>;
2975
- ngOnInit(): void;
2976
- ngOnDestroy(): void;
2977
- onDocumentClick(event: Event): void;
2978
- private processItems;
2979
- private getConfigForStyle;
2980
- onItemClick(item: BreadcrumbItem$1): void;
2981
- onHomeClick(): void;
2982
- onDropdownToggle(): void;
2983
- onDropdownOptionClick(option: BreadcrumbDropdownOption$1): void;
2984
- getItemClasses(item: BreadcrumbItem$1, isLast?: boolean): string;
2985
- getContainerClasses(): string;
2986
- getSeparatorIcon(): string;
2987
- getTooltipText(item: BreadcrumbItem$1): string;
2988
- toggleDropdown(): void;
2989
- closeDropdown(): void;
2990
- updateItems(newItems: BreadcrumbItem$1[]): void;
2991
- addItem(item: BreadcrumbItem$1): void;
2992
- removeItem(itemId: string): void;
2993
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleBreadcrumbComponent, never>;
2994
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleBreadcrumbComponent, "cide-ele-breadcrumb", never, { "items": { "alias": "items"; "required": false; }; "style": { "alias": "style"; "required": false; }; "separator": { "alias": "separator"; "required": false; }; "showHomeIcon": { "alias": "showHomeIcon"; "required": false; }; "homeIcon": { "alias": "homeIcon"; "required": false; }; "maxItems": { "alias": "maxItems"; "required": false; }; "showDropdownOnOverflow": { "alias": "showDropdownOnOverflow"; "required": false; }; "dropdownOptions": { "alias": "dropdownOptions"; "required": false; }; "clickableItems": { "alias": "clickableItems"; "required": false; }; "showTooltips": { "alias": "showTooltips"; "required": false; }; "responsive": { "alias": "responsive"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "animated": { "alias": "animated"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "itemClick": "itemClick"; "dropdownOptionClick": "dropdownOptionClick"; "homeClick": "homeClick"; }, never, never, true, never>;
3009
+ getErrors(): JsonEditorError[];
3010
+ writeValue(value: string | object | null | undefined): void;
3011
+ registerOnChange(fn: (value: string) => void): void;
3012
+ registerOnTouched(fn: () => void): void;
3013
+ setDisabledState(isDisabled: boolean): void;
3014
+ private onChange;
3015
+ private onTouched;
3016
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleJsonEditorComponent, never>;
3017
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleJsonEditorComponent, "cide-ele-json-editor", never, { "label": { "alias": "label"; "required": false; }; "helperText": { "alias": "helperText"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "showCharacterCount": { "alias": "showCharacterCount"; "required": false; }; "config": { "alias": "config"; "required": false; }; }, { "valueChange": "valueChange"; "objectChange": "objectChange"; "errorsChange": "errorsChange"; "validChange": "validChange"; }, never, never, true, never>;
2995
3018
  }
2996
3019
 
2997
- interface BreadcrumbItem {
2998
- /** Unique identifier for the breadcrumb item */
2999
- id: string;
3000
- /** Display label for the breadcrumb item */
3001
- label: string;
3002
- /** Optional icon name (Material Icons) */
3003
- icon?: string;
3004
- /** Optional URL for navigation */
3005
- url?: string;
3006
- /** Whether the item is disabled */
3007
- disabled?: boolean;
3008
- /** Type of the breadcrumb item */
3009
- type?: 'root' | 'category' | 'entity' | 'custom';
3010
- /** Additional metadata for the item */
3011
- metadata?: any;
3012
- }
3013
- interface BreadcrumbDropdownOption {
3014
- /** Unique identifier for the dropdown option */
3015
- id: string;
3016
- /** Display label for the option */
3017
- label: string;
3018
- /** Optional icon name (Material Icons) */
3019
- icon?: string;
3020
- /** Whether the option is disabled */
3021
- disabled?: boolean;
3022
- /** Optional action function to execute when clicked */
3023
- action?: () => void;
3024
- }
3025
- interface BreadcrumbSeparator {
3026
- /** Type of separator to use */
3027
- type: 'chevron' | 'slash' | 'arrow' | 'dot' | 'custom';
3028
- /** Custom icon name (when type is not 'custom') */
3029
- icon?: string;
3030
- /** Custom text (when type is 'custom') */
3031
- text?: string;
3032
- }
3033
- type BreadcrumbStyle = 'modern' | 'classic' | 'minimal' | 'hierarchical';
3034
- interface BreadcrumbConfig {
3035
- /** Style variant */
3036
- style: BreadcrumbStyle;
3037
- /** Separator configuration */
3038
- separator: BreadcrumbSeparator;
3039
- /** Whether to show home icon */
3040
- showHomeIcon: boolean;
3041
- /** Home icon name */
3042
- homeIcon: string;
3043
- /** Maximum number of items to show before overflow */
3044
- maxItems: number;
3045
- /** Whether to show dropdown on overflow */
3046
- showDropdownOnOverflow: boolean;
3047
- /** Additional dropdown options */
3048
- dropdownOptions: BreadcrumbDropdownOption[];
3049
- /** Whether items are clickable */
3050
- clickableItems: boolean;
3051
- /** Whether to show tooltips */
3052
- showTooltips: boolean;
3053
- /** Whether to enable responsive behavior */
3054
- responsive: boolean;
3055
- /** Whether to use compact styling */
3056
- compact: boolean;
3057
- /** Whether to enable animations */
3058
- animated: boolean;
3059
- }
3060
- interface BreadcrumbEvents {
3061
- /** Emitted when a breadcrumb item is clicked */
3062
- itemClick: BreadcrumbItem;
3063
- /** Emitted when a dropdown option is clicked */
3064
- dropdownOptionClick: BreadcrumbDropdownOption;
3065
- /** Emitted when home icon is clicked */
3066
- homeClick: void;
3067
- }
3068
- declare const BREADCRUMB_STYLES: Record<BreadcrumbStyle, BreadcrumbConfig>;
3069
- declare class BreadcrumbUtils {
3070
- /**
3071
- * Create a breadcrumb item
3072
- */
3073
- static createItem(id: string, label: string, options?: Partial<BreadcrumbItem>): BreadcrumbItem;
3074
- /**
3075
- * Create a dropdown option
3076
- */
3077
- static createDropdownOption(id: string, label: string, options?: Partial<BreadcrumbDropdownOption>): BreadcrumbDropdownOption;
3078
- /**
3079
- * Create a separator
3080
- */
3081
- static createSeparator(type: BreadcrumbSeparator['type'], options?: Partial<BreadcrumbSeparator>): BreadcrumbSeparator;
3082
- /**
3083
- * Get default configuration for a style
3084
- */
3085
- static getDefaultConfig(style: BreadcrumbStyle): BreadcrumbConfig;
3086
- /**
3087
- * Merge configurations
3088
- */
3089
- static mergeConfig(base: BreadcrumbConfig, override: Partial<BreadcrumbConfig>): BreadcrumbConfig;
3020
+ declare class CideEleSkeletonLoaderComponent {
3021
+ width: string;
3022
+ height: string;
3023
+ borderRadius: string;
3024
+ count: number;
3025
+ circle: boolean;
3026
+ animation: 'pulse' | 'wave' | 'none';
3027
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideEleSkeletonLoaderComponent, never>;
3028
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideEleSkeletonLoaderComponent, "cide-ele-skeleton-loader", never, { "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "borderRadius": { "alias": "borderRadius"; "required": false; }; "count": { "alias": "count"; "required": false; }; "circle": { "alias": "circle"; "required": false; }; "animation": { "alias": "animation"; "required": false; }; }, {}, never, never, true, never>;
3090
3029
  }
3091
3030
 
3092
- export { BREADCRUMB_STYLES, BreadcrumbUtils, CideCoreFileManagerService, CideEleBreadcrumbComponent, CideEleButtonComponent, CideEleConfirmationModalComponent, CideEleDataGridComponent, CideEleDropdownComponent, CideEleFileImageDirective, CideEleFileInputComponent, CideEleFileManagerService, CideEleFloatingContainerComponent, CideEleFloatingContainerDynamicDirective, CideEleFloatingContainerManagerComponent, CideEleFloatingContainerService, CideEleFloatingFeaturesService, CideEleFloatingFileUploaderComponent, CideEleFloatingFileUploaderService, CideEleGlobalNotificationsComponent, CideEleJsonEditorComponent, CideEleResizerDirective, CideEleSkeletonLoaderComponent, CideEleTabComponent, CideEleToastNotificationComponent, CideElementsService, CideFormFieldErrorComponent, CideIconComponent, CideInputComponent, CideSelectComponent, CideSelectOptionComponent, CideSpinnerComponent, CideTextareaComponent, ConfirmationService, CoreFileManagerInsertUpdatePayload, DEFAULT_GRID_CONFIG, DropdownManagerService, FloatingContainerShortcutsService, ICoreCyfmSave, KeyboardShortcutService, MFileManager, NotificationService, TooltipDirective };
3093
- export type { BreadcrumbConfig, BreadcrumbDropdownOption, BreadcrumbEvents, BreadcrumbItem, BreadcrumbSeparator, BreadcrumbStyle, ButtonElevation, ButtonShape, ButtonSize, ButtonType, ButtonVariant, CideEleResizerDirection, CideEleResizerDirectionTo, ColumnType, ColumnWidth, ConfirmationOptions, ConfirmationRequest, CoreFileManagerInsertUpdateResponse, DropdownConfig, DropdownInstance, DropdownItem, DropdownPosition, ErrorValidationStatus, FileUploadData, FileUploadOptions, FileUploaderData, FloatingComponentConfig, FloatingContainerConfig, FloatingContainerInstance, FloatingFileUploaderData, GridAction, GridColumn, GridConfiguration, GridCustomFormatter, GridCustomRenderer, GridDragDropConfig, GridEvent, GridEventHandler, GridExportConfig, GridFormatter, GridLoadingConfig, GridPaginationConfig, GridScrollConfig, GridSearchConfig, GridState, GridTreeConfig, ICoreCyfm, ICoreFileManager, IFileDeleteResponse, IFileFilterOptions, IFileGroupingOptions, IFileListRequest, IFileListResponse, IFileManagerErrorLogger, IFileUpdateRequest, IFileUpdateResponse, IFileUploadProgress, IFileUploadQueueItem, IFileUploadRequest, IFileUploadResponse, JsonEditorConfig, JsonEditorError, KeyboardShortcut, NotificationItem, NotificationOptions, SelectOption, SelectOptionObject, ServiceState, ShortcutOverride, StatusConfig, TabItem, TemplateContext, TemplateRenderer, TextAlign, TooltipPlacement, TooltipType, UploadProgress, ValidationStatus, controllerResponse, fileManagerControllerResponse, fileManagerResponseData, mongooseObjectIdCreateControllerResponse };
3031
+ export { CapitalizePipe, CideCoreFileManagerService, CideEleBreadcrumbComponent, CideEleButtonComponent, CideEleConfirmationModalComponent, CideEleDataGridComponent, CideEleDropdownComponent, CideEleFileImageDirective, CideEleFileInputComponent, CideEleFileManagerService, CideEleFloatingContainerComponent, CideEleFloatingContainerDynamicDirective, CideEleFloatingContainerManagerComponent, CideEleFloatingContainerService, CideEleFloatingFeaturesService, CideEleFloatingFileUploaderComponent, CideEleFloatingFileUploaderService, CideEleGlobalNotificationsComponent, CideEleJsonEditorComponent, CideEleResizerDirective, CideEleSkeletonLoaderComponent, CideEleTabComponent, CideEleToastNotificationComponent, CideElementsService, CideFormFieldErrorComponent, CideIconComponent, CideInputComponent, CideSelectComponent, CideSelectOptionComponent, CideSpinnerComponent, CideTextareaComponent, ConfirmationService, CoreFileManagerInsertUpdatePayload, DEFAULT_GRID_CONFIG, DropdownManagerService, ICoreCyfmSave, KeyboardShortcutService, MFileManager, NotificationService, PortalService, TooltipDirective };
3032
+ export type { BreadcrumbConfig, BreadcrumbDropdownOption, BreadcrumbItem, BreadcrumbSeparator, BreadcrumbStyle, ButtonElevation, ButtonShape, ButtonSize, ButtonType, ButtonVariant, CideEleResizerDirection, CideEleResizerDirectionTo, ColumnType, ColumnWidth, ConfirmationOptions, ConfirmationRequest, CoreFileManagerInsertUpdateResponse, DropdownConfig, DropdownInstance, DropdownItem, DropdownPosition, ErrorValidationStatus, FileUploadData, FileUploadOptions, FileUploaderData, FloatingComponentConfig, FloatingContainerConfig, FloatingContainerInstance, FloatingFileUploaderData, GridAction, GridColumn, GridConfiguration, GridCustomFormatter, GridCustomRenderer, GridDragDropConfig, GridEvent, GridEventHandler, GridExportConfig, GridFormatter, GridLoadingConfig, GridPaginationConfig, GridScrollConfig, GridSearchConfig, GridState, GridTreeConfig, ICoreCyfm, ICoreFileManager, IFileDeleteResponse, IFileFilterOptions, IFileGroupingOptions, IFileListRequest, IFileListResponse, IFileManagerErrorLogger, IFileUpdateRequest, IFileUpdateResponse, IFileUploadProgress, IFileUploadQueueItem, IFileUploadRequest, IFileUploadResponse, JsonEditorConfig, JsonEditorError, KeyboardShortcut, NotificationItem, NotificationOptions, PortalConfig, PortalPosition, SelectOption, SelectOptionObject, ServiceState, ShortcutOverride, StatusConfig, TabItem, TemplateContext, TemplatePortalConfig, TemplateRenderer, TextAlign, TooltipPlacement, TooltipType, UploadProgress, ValidationStatus, controllerResponse, fileManagerControllerResponse, fileManagerResponseData, mongooseObjectIdCreateControllerResponse };