cloud-ide-element 1.1.1 → 1.1.3

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