cloud-ide-element 0.0.1 → 1.0.0

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.
Files changed (50) hide show
  1. package/README.md +271 -24
  2. package/esm2022/lib/components/confirmation-modal/confirmation-modal.component.mjs +182 -0
  3. package/esm2022/lib/components/data-grid/data-grid.component.mjs +1363 -0
  4. package/esm2022/lib/components/data-grid/data-grid.types.mjs +37 -0
  5. package/esm2022/lib/components/dropdown/dropdown.component.mjs +396 -0
  6. package/esm2022/lib/components/global-notifications/global-notifications.component.mjs +30 -0
  7. package/esm2022/lib/components/json-editor/json-editor.component.mjs +521 -0
  8. package/esm2022/lib/components/skeleton-loader/skeleton-loader.component.mjs +33 -0
  9. package/esm2022/lib/components/toast-notification/toast-notification.component.mjs +152 -0
  10. package/esm2022/lib/elements/button/cide-ele-button.component.mjs +249 -0
  11. package/esm2022/lib/elements/file-input/file-input.component.mjs +83 -0
  12. package/esm2022/lib/elements/icon/icon.component.mjs +5 -3
  13. package/esm2022/lib/elements/input/input.component.mjs +34 -20
  14. package/esm2022/lib/elements/select/select.component.mjs +471 -0
  15. package/esm2022/lib/elements/tab/cide-ele-tab.component.mjs +74 -0
  16. package/esm2022/lib/elements/textarea/textarea.component.mjs +157 -0
  17. package/esm2022/lib/services/confirmation.service.mjs +151 -0
  18. package/esm2022/lib/services/dropdown-manager.service.mjs +93 -0
  19. package/esm2022/lib/services/notification.service.mjs +196 -0
  20. package/esm2022/lib/utils/directives/resizer/resizer.directive.mjs +231 -0
  21. package/esm2022/lib/utils/directives/tooltip/tooltip.directive.mjs +294 -0
  22. package/esm2022/lib/utils/services/elements/elements.service.mjs +9 -7
  23. package/esm2022/public-api.mjs +23 -2
  24. package/fesm2022/cloud-ide-element.mjs +4646 -47
  25. package/fesm2022/cloud-ide-element.mjs.map +1 -1
  26. package/lib/components/confirmation-modal/confirmation-modal.component.d.ts +16 -0
  27. package/lib/components/data-grid/data-grid.component.d.ts +244 -0
  28. package/lib/components/data-grid/data-grid.types.d.ts +146 -0
  29. package/lib/components/dropdown/dropdown.component.d.ts +75 -0
  30. package/lib/components/global-notifications/global-notifications.component.d.ts +5 -0
  31. package/lib/components/json-editor/json-editor.component.d.ts +116 -0
  32. package/lib/components/skeleton-loader/skeleton-loader.component.d.ts +11 -0
  33. package/lib/components/toast-notification/toast-notification.component.d.ts +13 -0
  34. package/lib/elements/button/cide-ele-button.component.d.ts +85 -0
  35. package/lib/elements/file-input/file-input.component.d.ts +25 -0
  36. package/lib/elements/input/input.component.d.ts +7 -4
  37. package/lib/elements/select/select.component.d.ts +91 -0
  38. package/lib/elements/tab/cide-ele-tab.component.d.ts +26 -0
  39. package/lib/elements/textarea/textarea.component.d.ts +47 -0
  40. package/lib/services/confirmation.service.d.ts +65 -0
  41. package/lib/services/dropdown-manager.service.d.ts +22 -0
  42. package/lib/services/notification.service.d.ts +81 -0
  43. package/lib/utils/directives/resizer/resizer.directive.d.ts +44 -0
  44. package/lib/utils/directives/tooltip/tooltip.directive.d.ts +43 -0
  45. package/package.json +32 -4
  46. package/public-api.d.ts +18 -1
  47. package/src/lib/assets/css/cide-ele-style.scss +85 -0
  48. package/src/lib/assets/css/cide-ele-variable.scss +336 -0
  49. package/esm2022/lib/elements/button/button.component.mjs +0 -60
  50. package/lib/elements/button/button.component.d.ts +0 -27
@@ -0,0 +1,85 @@
1
+ import { ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges } from '@angular/core';
2
+ import { CideElementsService } from '../../../public-api';
3
+ import { NavigationExtras, Router } from '@angular/router';
4
+ import * as i0 from "@angular/core";
5
+ export type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'text' | 'link' | 'success' | 'danger' | 'warning' | 'info' | 'ghost';
6
+ export type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
7
+ export type ButtonType = 'button' | 'submit' | 'reset';
8
+ export type ButtonShape = 'default' | 'rounded' | 'pill' | 'square';
9
+ export type ButtonElevation = 'none' | 'low' | 'medium' | 'high';
10
+ /**
11
+ * Advanced Angular button component that provides a comprehensive button implementation
12
+ * with loading state, styling variants, animations, tooltips, and other features.
13
+ *
14
+ * This component uses proper Angular templating to avoid hydration issues (NG0500).
15
+ */
16
+ export declare class CideEleButtonComponent implements OnInit, OnChanges, OnDestroy {
17
+ private elementService;
18
+ private router;
19
+ private renderer;
20
+ private elementRef;
21
+ private destroy$;
22
+ private clickCount;
23
+ private clickDebouncer$;
24
+ constructor(elementService: CideElementsService, router: Router, renderer: Renderer2, elementRef: ElementRef);
25
+ /**
26
+ * @description Label of button like Submit, Update, Add, etc.
27
+ * Note: it is only used in case you did not set label between tags (via ng-content)
28
+ */
29
+ label: string;
30
+ /** @description Button style variant */
31
+ variant: ButtonVariant;
32
+ /** @description Button size */
33
+ size: ButtonSize;
34
+ /** @description Button HTML type attribute */
35
+ type: ButtonType;
36
+ /** @description Button shape */
37
+ shape: ButtonShape;
38
+ /** @description Button shadow elevation */
39
+ elevation: ButtonElevation;
40
+ /** @description Button disabled state */
41
+ disabled: boolean | null;
42
+ /** @description Unique ID of control, used to differentiate elements */
43
+ id: string;
44
+ /** @description Enables loading state with spinner */
45
+ loading: boolean;
46
+ /** @description Makes button take full width of container */
47
+ fullWidth: boolean;
48
+ /** @description Icon to display on the left side of the button */
49
+ leftIcon: string;
50
+ /** @description Icon to display on the right side of the button */
51
+ rightIcon: string;
52
+ /** @description Additional CSS classes to apply */
53
+ customClass: string;
54
+ /** @description Tooltip text to display on hover */
55
+ tooltip: string;
56
+ /** @description Aria label for accessibility */
57
+ ariaLabel: string;
58
+ /** @description Test ID for automated testing */
59
+ testId: string;
60
+ /** @description Route to navigate to when clicked (for link buttons) */
61
+ routerLink: string | unknown[];
62
+ /** @description Router navigation extras */
63
+ routerExtras: NavigationExtras;
64
+ /** @description Prevent multiple rapid clicks (debounce) */
65
+ preventDoubleClick: boolean;
66
+ /** @description Animation on click */
67
+ animated: boolean;
68
+ /**
69
+ * @description Click event of button
70
+ */
71
+ btnClick: EventEmitter<MouseEvent>;
72
+ /**
73
+ * @description Double click event
74
+ */
75
+ doubleClick: EventEmitter<MouseEvent>;
76
+ onClick(event: MouseEvent): void;
77
+ private handleClick;
78
+ private addClickAnimation;
79
+ ngOnInit(): void;
80
+ ngOnChanges(changes: SimpleChanges): void;
81
+ ngOnDestroy(): void;
82
+ getControlData(): Promise<void>;
83
+ static ɵfac: i0.ɵɵFactoryDeclaration<CideEleButtonComponent, never>;
84
+ static ɵcmp: i0.ɵɵ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>;
85
+ }
@@ -0,0 +1,25 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { ControlValueAccessor } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ export declare class CideEleFileInputComponent implements ControlValueAccessor {
5
+ label: string;
6
+ accept: string;
7
+ multiple: boolean;
8
+ disabled: boolean;
9
+ helperText: string;
10
+ errorText: string;
11
+ id: string;
12
+ fileChange: EventEmitter<FileList | null>;
13
+ files: FileList | null;
14
+ fileNames: string[];
15
+ private onChange;
16
+ private onTouched;
17
+ writeValue(files: FileList | null): void;
18
+ registerOnChange(fn: (files: FileList | null) => void): void;
19
+ registerOnTouched(fn: () => void): void;
20
+ setDisabledState(isDisabled: boolean): void;
21
+ onFileSelected(event: Event): void;
22
+ clearFiles(): void;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<CideEleFileInputComponent, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<CideEleFileInputComponent, "cide-ele-file-input", never, { "label": { "alias": "label"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "helperText": { "alias": "helperText"; "required": false; }; "errorText": { "alias": "errorText"; "required": false; }; }, { "fileChange": "fileChange"; }, never, never, true, never>;
25
+ }
@@ -1,7 +1,6 @@
1
1
  import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
2
2
  import { AbstractControl, ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';
3
3
  import { CapitalizePipe } from '../../utils/pipes/capitalize/capitalize.pipe';
4
- import { CideElementsService } from '../../utils/services/elements/elements.service';
5
4
  import { autocapitalizeType, autocompleteType, controlType, elementStyleType, inputType, labelDirType, labelPlacementType, themeSize } from 'cloud-ide-lms-model';
6
5
  import * as i0 from "@angular/core";
7
6
  /** @description type to register error related to control */
@@ -17,7 +16,7 @@ export type ValidationStatus = {
17
16
  export declare class CideInputComponent implements ControlValueAccessor, Validator, OnChanges, OnInit {
18
17
  capitalizePipe: CapitalizePipe;
19
18
  private elementService;
20
- constructor(capitalizePipe: CapitalizePipe, elementService: CideElementsService);
19
+ constructor();
21
20
  /**
22
21
  * @description to se the visual of control like solid control offerd by material design or outline with a border
23
22
  * @options solid | outline | standard
@@ -68,6 +67,10 @@ export declare class CideInputComponent implements ControlValueAccessor, Validat
68
67
  /** @description to get input value using one way binding like: [ngModel] or by two way binding [(ngModel)] */
69
68
  ngModel: inputType;
70
69
  option: string[];
70
+ /** @description min value for number type control */
71
+ min: number;
72
+ /** @description max value for number type control */
73
+ max: number;
71
74
  /**
72
75
  * @description
73
76
  * Holds the size of the component like Small, Extra small, Large
@@ -89,7 +92,7 @@ export declare class CideInputComponent implements ControlValueAccessor, Validat
89
92
  /** @description when control is touched then the will maid true by the us to check it is touched or not, when we will set this true we will call the onTouched callback method of angualr to inform angular that somthis is changed and control is touched */
90
93
  isTouched: boolean;
91
94
  /** @description we will take type of control in type but is may be not exactly which input's type so we need to get type and set actule type to our input, also when type is set password but in calse view in textt then inuut type need to change to text */
92
- typeInternal: "text" | "password";
95
+ typeInternal: controlType;
93
96
  /** @description if traling is set the it is assigned by it, but some case tarling icon not as it is set need tro be changed at runtime, like password visibility hide and show */
94
97
  trailingIconInternal: string;
95
98
  isTrailingIconAllwedClick: boolean;
@@ -175,5 +178,5 @@ export declare class CideInputComponent implements ControlValueAccessor, Validat
175
178
  */
176
179
  detectTypeChange(): void;
177
180
  static ɵfac: i0.ɵɵFactoryDeclaration<CideInputComponent, never>;
178
- static ɵcmp: i0.ɵɵ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; }; "size": { "alias": "size"; "required": false; }; }, { "ngModelChange": "ngModelChange"; }, never, never, true, never>;
181
+ static ɵcmp: i0.ɵɵ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>;
179
182
  }
@@ -0,0 +1,91 @@
1
+ import { EventEmitter, OnChanges, OnInit, SimpleChanges, QueryList, AfterContentInit, ElementRef, OnDestroy } from '@angular/core';
2
+ import { AbstractControl, ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';
3
+ import { themeSize, elementStyleType, labelPlacementType, labelDirType, selectSearchType } from 'cloud-ide-lms-model';
4
+ import * as i0 from "@angular/core";
5
+ export interface SelectOption {
6
+ value: string | number;
7
+ label: string;
8
+ disabled?: boolean;
9
+ }
10
+ export declare class CideSelectOptionComponent {
11
+ private elementRef;
12
+ value: string | number;
13
+ disabled: boolean;
14
+ get label(): string;
15
+ constructor(elementRef: ElementRef);
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<CideSelectOptionComponent, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<CideSelectOptionComponent, "cide-ele-select-option", never, { "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, ["*"], true, never>;
18
+ }
19
+ export declare class CideSelectComponent implements ControlValueAccessor, Validator, OnInit, OnChanges, AfterContentInit, OnDestroy {
20
+ private elementRef;
21
+ optionComponents: QueryList<CideSelectOptionComponent>;
22
+ searchInputRef: ElementRef<HTMLInputElement>;
23
+ label: string;
24
+ labelHide: boolean;
25
+ placeholder: string;
26
+ helperText: string;
27
+ errorText: string;
28
+ required: boolean;
29
+ disabled: boolean;
30
+ id: string;
31
+ ngModel: string | number;
32
+ size: themeSize;
33
+ fill: elementStyleType;
34
+ labelPlacement: labelPlacementType;
35
+ labelDir: labelDirType;
36
+ leadingIcon: string;
37
+ trailingIcon: string;
38
+ clearInput: boolean;
39
+ options: SelectOption[];
40
+ multiple: boolean;
41
+ searchable: boolean;
42
+ showSearchInput: boolean;
43
+ loading: boolean;
44
+ ngModelChange: EventEmitter<any>;
45
+ selectionChange: EventEmitter<SelectOption>;
46
+ searchChange: EventEmitter<selectSearchType>;
47
+ isOpen: boolean;
48
+ isTouched: boolean;
49
+ isValid: boolean;
50
+ searchTerm: string;
51
+ filteredOptions: SelectOption[];
52
+ dropdownPosition: 'bottom' | 'top';
53
+ private isDropdownInteraction;
54
+ private debugId;
55
+ private timeoutIds;
56
+ private interactionCount;
57
+ private maxInteractionCount;
58
+ constructor(elementRef: ElementRef);
59
+ onChange: (value: string | number) => void;
60
+ onTouched: () => void;
61
+ onValidate: () => void;
62
+ ngOnInit(): void;
63
+ ngAfterContentInit(): void;
64
+ ngOnChanges(changes: SimpleChanges): void;
65
+ writeValue(value: string | number): void;
66
+ registerOnChange(fn: (value: string | number) => void): void;
67
+ registerOnTouched(fn: () => void): void;
68
+ setDisabledState(isDisabled: boolean): void;
69
+ validate(control: AbstractControl): ValidationErrors | null;
70
+ validateValue(value: string | number): ValidationErrors | null;
71
+ toggleDropdown(): void;
72
+ ngOnDestroy(): void;
73
+ private onWindowResize;
74
+ private calculateDropdownPosition;
75
+ selectOption(option: SelectOption): void;
76
+ onBlur(): void;
77
+ focusControl(): void;
78
+ clearSelection(): void;
79
+ getSelectedOptionLabel(): string;
80
+ filterOptions(): void;
81
+ onSearchInput(event: Event): void;
82
+ onDropdownMouseDown(): void;
83
+ onDropdownMouseUp(): void;
84
+ isOptionSelected(option: SelectOption): boolean;
85
+ trackByValue(index: number, option: SelectOption): string | number;
86
+ private logDebug;
87
+ private clearTimeouts;
88
+ private addTimeout;
89
+ static ɵfac: i0.ɵɵFactoryDeclaration<CideSelectComponent, never>;
90
+ static ɵcmp: i0.ɵɵComponentDeclaration<CideSelectComponent, "cide-ele-select", 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; }; "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; }; "options": { "alias": "options"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "showSearchInput": { "alias": "showSearchInput"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; }, { "ngModelChange": "ngModelChange"; "selectionChange": "change"; "searchChange": "searchChange"; }, ["optionComponents"], never, true, never>;
91
+ }
@@ -0,0 +1,26 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export interface TabItem {
4
+ id: string;
5
+ label: string;
6
+ disabled?: boolean;
7
+ icon?: string;
8
+ badge?: string | number;
9
+ }
10
+ export declare class CideEleTabComponent implements OnInit {
11
+ tabs: TabItem[];
12
+ activeTabId?: string;
13
+ size: 'sm' | 'md' | 'lg';
14
+ variant: 'default' | 'pills' | 'underline';
15
+ fullWidth: boolean;
16
+ disabled: boolean;
17
+ tabChange: EventEmitter<TabItem>;
18
+ activeTab: import("@angular/core").WritableSignal<string>;
19
+ ngOnInit(): void;
20
+ onTabClick(tab: TabItem): void;
21
+ isActive(tabId: string): boolean;
22
+ getTabClasses(tab: TabItem): string;
23
+ getContainerClasses(): string;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<CideEleTabComponent, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<CideEleTabComponent, "cide-ele-tab", never, { "tabs": { "alias": "tabs"; "required": false; }; "activeTabId": { "alias": "activeTabId"; "required": false; }; "size": { "alias": "size"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "tabChange": "tabChange"; }, never, never, true, never>;
26
+ }
@@ -0,0 +1,47 @@
1
+ import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
2
+ import { AbstractControl, ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';
3
+ import { themeSize, elementStyleType, labelPlacementType, labelDirType } from 'cloud-ide-lms-model';
4
+ import * as i0 from "@angular/core";
5
+ export declare class CideTextareaComponent implements ControlValueAccessor, Validator, OnInit, OnChanges {
6
+ label: string;
7
+ labelHide: boolean;
8
+ placeholder: string;
9
+ helperText: string;
10
+ errorText: string;
11
+ required: boolean;
12
+ disabled: boolean;
13
+ minlength: number;
14
+ maxlength: number;
15
+ rows: number | string;
16
+ id: string;
17
+ ngModel: string;
18
+ size: themeSize;
19
+ fill: elementStyleType;
20
+ labelPlacement: labelPlacementType;
21
+ labelDir: labelDirType;
22
+ leadingIcon: string;
23
+ trailingIcon: string;
24
+ clearInput: boolean;
25
+ trailingIconInternal: string;
26
+ isTrailingIconAllwedClick: boolean;
27
+ ngModelChange: EventEmitter<string>;
28
+ isTouched: boolean;
29
+ isValid: boolean;
30
+ onChange: (value: string) => void;
31
+ onTouched: () => void;
32
+ onValidate: () => void;
33
+ ngOnInit(): void;
34
+ ngOnChanges(changes: SimpleChanges): void;
35
+ writeValue(value: string): void;
36
+ registerOnChange(fn: (value: string) => void): void;
37
+ registerOnTouched(fn: () => void): void;
38
+ setDisabledState(isDisabled: boolean): void;
39
+ validate(control: AbstractControl): ValidationErrors | null;
40
+ validateValue(value: string): ValidationErrors | null;
41
+ onInput(event: Event): void;
42
+ onBlur(): void;
43
+ ClearInputValue(): void;
44
+ trailingIconClick(): void;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<CideTextareaComponent, never>;
46
+ static ɵcmp: i0.ɵɵ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>;
47
+ }
@@ -0,0 +1,65 @@
1
+ import { TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export interface ConfirmationRequest<T = unknown> {
4
+ id: string;
5
+ title: string;
6
+ message: string;
7
+ type: 'danger' | 'warning' | 'info' | 'success';
8
+ icon?: string;
9
+ confirmText?: string;
10
+ cancelText?: string;
11
+ customTemplate?: TemplateRef<unknown>;
12
+ customData?: T;
13
+ resolve: (value: boolean | T) => void;
14
+ reject: (reason?: unknown) => void;
15
+ }
16
+ export interface ConfirmationOptions<T = unknown> {
17
+ title: string;
18
+ message: string;
19
+ type?: 'danger' | 'warning' | 'info' | 'success';
20
+ icon?: string;
21
+ confirmText?: string;
22
+ cancelText?: string;
23
+ customTemplate?: TemplateRef<unknown>;
24
+ customData?: T;
25
+ }
26
+ export declare class ConfirmationService {
27
+ private confirmationQueue;
28
+ private currentRequest;
29
+ hasActiveConfirmation: import("@angular/core").Signal<boolean>;
30
+ queueLength: import("@angular/core").Signal<number>;
31
+ constructor();
32
+ /**
33
+ * Ask for confirmation with a simple yes/no dialog
34
+ */
35
+ ask(options: ConfirmationOptions<unknown>): Promise<boolean>;
36
+ /**
37
+ * Ask for confirmation with custom template and return custom data
38
+ */
39
+ askWithTemplate<T = unknown>(options: ConfirmationOptions<T> & {
40
+ customTemplate: TemplateRef<unknown>;
41
+ }): Promise<T>;
42
+ /**
43
+ * Quick confirmation for dangerous actions
44
+ */
45
+ confirmDelete(itemName?: string): Promise<boolean>;
46
+ /**
47
+ * Quick confirmation for permanent actions
48
+ */
49
+ confirmPermanentAction(action: string, itemName?: string): Promise<boolean>;
50
+ /**
51
+ * Quick confirmation for safe actions
52
+ */
53
+ confirmSafeAction(action: string, itemName?: string): Promise<boolean>;
54
+ private addToQueue;
55
+ private processQueue;
56
+ confirmCurrentRequest(data?: unknown): void;
57
+ cancelCurrentRequest(): void;
58
+ private removeCurrentRequest;
59
+ private generateId;
60
+ private getDefaultIcon;
61
+ getCurrentRequest(): import("@angular/core").WritableSignal<ConfirmationRequest<unknown> | null>;
62
+ getHasActiveConfirmation(): import("@angular/core").Signal<boolean>;
63
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationService, never>;
64
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConfirmationService>;
65
+ }
@@ -0,0 +1,22 @@
1
+ import * as i0 from "@angular/core";
2
+ export interface DropdownInstance {
3
+ id: string;
4
+ close: () => void;
5
+ element?: Element;
6
+ }
7
+ export declare class DropdownManagerService {
8
+ private activeDropdowns;
9
+ private documentClickListener?;
10
+ private escapeKeyListener?;
11
+ constructor();
12
+ private initializeGlobalListeners;
13
+ registerDropdown(dropdown: DropdownInstance): void;
14
+ unregisterDropdown(id: string): void;
15
+ closeAllDropdowns(): void;
16
+ closeDropdown(id: string): void;
17
+ isDropdownOpen(id: string): boolean;
18
+ private handleDocumentClick;
19
+ ngOnDestroy(): void;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<DropdownManagerService, never>;
21
+ static ɵprov: i0.ɵɵInjectableDeclaration<DropdownManagerService>;
22
+ }
@@ -0,0 +1,81 @@
1
+ import * as i0 from "@angular/core";
2
+ export interface NotificationOptions {
3
+ message: string;
4
+ type?: 'success' | 'error' | 'warning' | 'info';
5
+ duration?: number;
6
+ showUndo?: boolean;
7
+ undoAction?: () => void;
8
+ undoText?: string;
9
+ icon?: string;
10
+ title?: string;
11
+ }
12
+ export interface NotificationItem {
13
+ id: string;
14
+ message: string;
15
+ type: 'success' | 'error' | 'warning' | 'info';
16
+ duration: number;
17
+ showUndo: boolean;
18
+ undoAction?: () => void;
19
+ undoText: string;
20
+ icon: string;
21
+ title?: string;
22
+ timestamp: number;
23
+ isVisible: boolean;
24
+ }
25
+ export declare class NotificationService {
26
+ private notifications;
27
+ private maxNotifications;
28
+ activeNotifications: import("@angular/core").Signal<NotificationItem[]>;
29
+ constructor();
30
+ /**
31
+ * Show a success notification
32
+ */
33
+ success(message: string, options?: Partial<NotificationOptions>): string;
34
+ /**
35
+ * Show an error notification
36
+ */
37
+ error(message: string, options?: Partial<NotificationOptions>): string;
38
+ /**
39
+ * Show a warning notification
40
+ */
41
+ warning(message: string, options?: Partial<NotificationOptions>): string;
42
+ /**
43
+ * Show an info notification
44
+ */
45
+ info(message: string, options?: Partial<NotificationOptions>): string;
46
+ /**
47
+ * Show a notification with undo functionality
48
+ */
49
+ showWithUndo(message: string, undoAction: () => void, options?: Partial<NotificationOptions>): string;
50
+ /**
51
+ * Show a notification for reversible destructive actions
52
+ */
53
+ showReversibleAction(action: string, itemName: string, undoAction: () => void, options?: Partial<NotificationOptions>): string;
54
+ /**
55
+ * Show a notification for background tasks
56
+ */
57
+ showBackgroundTask(taskName: string, isComplete?: boolean, options?: Partial<NotificationOptions>): string;
58
+ /**
59
+ * Core show method
60
+ */
61
+ private show;
62
+ /**
63
+ * Remove a specific notification
64
+ */
65
+ remove(id: string): void;
66
+ /**
67
+ * Remove all notifications
68
+ */
69
+ clearAll(): void;
70
+ /**
71
+ * Execute undo action for a notification
72
+ */
73
+ executeUndo(id: string): void;
74
+ private addNotification;
75
+ private generateId;
76
+ private getDefaultIcon;
77
+ getNotifications(): import("@angular/core").WritableSignal<NotificationItem[]>;
78
+ getActiveNotifications(): import("@angular/core").Signal<NotificationItem[]>;
79
+ static ɵfac: i0.ɵɵFactoryDeclaration<NotificationService, never>;
80
+ static ɵprov: i0.ɵɵInjectableDeclaration<NotificationService>;
81
+ }
@@ -0,0 +1,44 @@
1
+ import { ElementRef, EventEmitter, OnInit, Renderer2 } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export type CideEleResizerDirection = 'horizontal' | 'vertical';
4
+ export type CideEleResizerDirectionTo = "right-to-left" | "left-to-right" | "";
5
+ export declare class CideEleResizerDirective implements OnInit {
6
+ private el;
7
+ private renderer;
8
+ direction: CideEleResizerDirection;
9
+ to: CideEleResizerDirectionTo;
10
+ prevElementSelector: string;
11
+ nextElementSelector: string;
12
+ parentElementSelector: string;
13
+ minPrevSize: number;
14
+ minNextSize: number;
15
+ usePercentage: boolean;
16
+ resizeStart: EventEmitter<void>;
17
+ resizing: EventEmitter<{
18
+ prevSize: number;
19
+ nextSize: number;
20
+ }>;
21
+ resizeEnd: EventEmitter<{
22
+ prevSize: number;
23
+ nextSize: number;
24
+ }>;
25
+ private isResizing;
26
+ private startPosition;
27
+ private prevElement;
28
+ private nextElement;
29
+ private prevSize;
30
+ private nextSize;
31
+ private containerSize;
32
+ private startPrevSize;
33
+ private startNextSize;
34
+ constructor(el: ElementRef, renderer: Renderer2);
35
+ ngOnInit(): void;
36
+ onMouseDown(event: MouseEvent): void;
37
+ private onMouseMove;
38
+ private onMouseUp;
39
+ private getPrevElement;
40
+ private getNextElement;
41
+ private getSizeProperty;
42
+ static ɵfac: i0.ɵɵFactoryDeclaration<CideEleResizerDirective, never>;
43
+ static ɵdir: i0.ɵɵ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>;
44
+ }
@@ -0,0 +1,43 @@
1
+ import { ElementRef, OnDestroy, OnInit, Renderer2 } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';
4
+ export type TooltipType = 'default' | 'success' | 'warning' | 'error' | 'info' | 'light' | 'dark';
5
+ export declare class TooltipDirective implements OnInit, OnDestroy {
6
+ private el;
7
+ private renderer;
8
+ cideEleTooltip: string;
9
+ tooltipColor: string;
10
+ tooltipBg: string;
11
+ tooltipPlacement: TooltipPlacement;
12
+ tooltipType: TooltipType;
13
+ tooltipDelay: number;
14
+ tooltipDir: TooltipPlacement;
15
+ tooltipShowArrow: boolean;
16
+ tooltipMultiline: boolean;
17
+ tooltipMaxWidth: string;
18
+ tooltipInteractive: boolean;
19
+ tooltipClass: string;
20
+ private tooltipElement;
21
+ private visible;
22
+ private showTimeout;
23
+ private hideTimeout;
24
+ private hideDelay;
25
+ private interactiveMouseLeaveHandler;
26
+ constructor(el: ElementRef, renderer: Renderer2);
27
+ ngOnInit(): void;
28
+ onMouseEnter(): void;
29
+ onFocus(): void;
30
+ onMouseLeave(): void;
31
+ onBlur(): void;
32
+ onClick(): void;
33
+ ngOnDestroy(): void;
34
+ private clearTimeouts;
35
+ private show;
36
+ private hide;
37
+ private createTooltip;
38
+ private styleTooltip;
39
+ private positionTooltip;
40
+ private destroyTooltip;
41
+ static ɵfac: i0.ɵɵFactoryDeclaration<TooltipDirective, never>;
42
+ static ɵdir: i0.ɵɵ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>;
43
+ }
package/package.json CHANGED
@@ -1,6 +1,31 @@
1
1
  {
2
2
  "name": "cloud-ide-element",
3
- "version": "0.0.1",
3
+ "version": "1.0.0",
4
+ "description": "A comprehensive Angular UI component library with data grid, form elements, and utilities",
5
+ "keywords": [
6
+ "angular",
7
+ "ui",
8
+ "components",
9
+ "data-grid",
10
+ "form",
11
+ "typescript",
12
+ "tailwind",
13
+ "responsive"
14
+ ],
15
+ "author": "CIDE-LMS Team",
16
+ "license": "MIT",
17
+ "homepage": "https://github.com/your-org/cloud-ide-element#readme",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/your-org/cloud-ide-element.git"
21
+ },
22
+ "bugs": {
23
+ "url": "https://github.com/your-org/cloud-ide-element/issues"
24
+ },
25
+ "engines": {
26
+ "node": ">=18.0.0",
27
+ "npm": ">=8.0.0"
28
+ },
4
29
  "peerDependencies": {
5
30
  "@angular/common": "^18.0.0",
6
31
  "@angular/core": "^18.0.0"
@@ -9,9 +34,10 @@
9
34
  "tslib": "^2.3.0"
10
35
  },
11
36
  "sideEffects": false,
12
- "module": "fesm2022/cloud-ide-element.mjs",
13
- "typings": "index.d.ts",
14
37
  "exports": {
38
+ "./style": {
39
+ "sass": "./lib/assets/css/cide-ele-variable.scss"
40
+ },
15
41
  "./package.json": {
16
42
  "default": "./package.json"
17
43
  },
@@ -21,5 +47,7 @@
21
47
  "esm": "./esm2022/cloud-ide-element.mjs",
22
48
  "default": "./fesm2022/cloud-ide-element.mjs"
23
49
  }
24
- }
50
+ },
51
+ "module": "fesm2022/cloud-ide-element.mjs",
52
+ "typings": "index.d.ts"
25
53
  }