cloud-ide-core 0.0.1

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 (53) hide show
  1. package/README.md +24 -0
  2. package/esm2022/cloud-ide-core.mjs +5 -0
  3. package/esm2022/lib/cloud-ide-core.component.mjs +19 -0
  4. package/esm2022/lib/cloud-ide-core.service.mjs +14 -0
  5. package/esm2022/lib/core/department-management/components/department-list/department-list.component.mjs +768 -0
  6. package/esm2022/lib/core/department-management/index.mjs +5 -0
  7. package/esm2022/lib/core/department-management/services/department-management.service.mjs +187 -0
  8. package/esm2022/lib/core/designation-management/components/designation-list/designation-list.component.mjs +1122 -0
  9. package/esm2022/lib/core/designation-management/index.mjs +5 -0
  10. package/esm2022/lib/core/designation-management/services/designation-management.service.mjs +194 -0
  11. package/esm2022/lib/core/grade-level-management/components/grade-level-list/grade-level-list.component.mjs +794 -0
  12. package/esm2022/lib/core/grade-level-management/index.mjs +5 -0
  13. package/esm2022/lib/core/grade-level-management/services/grade-level-management.service.mjs +172 -0
  14. package/esm2022/lib/core/menu-management/components/menu-list/menu-list.component.mjs +1135 -0
  15. package/esm2022/lib/core/menu-management/index.mjs +10 -0
  16. package/esm2022/lib/core/menu-management/interfaces/menu-item.interface.mjs +11 -0
  17. package/esm2022/lib/core/menu-management/mock-data/menu-items.json +311 -0
  18. package/esm2022/lib/core/menu-management/services/menu-management.service.mjs +230 -0
  19. package/esm2022/lib/core/page-management/components/page-controls/page-controls.component.mjs +483 -0
  20. package/esm2022/lib/core/page-management/components/page-list/page-list.component.mjs +393 -0
  21. package/esm2022/lib/core/page-management/components/page-theme/page-theme.component.mjs +767 -0
  22. package/esm2022/lib/core/page-management/index.mjs +10 -0
  23. package/esm2022/lib/core/page-management/services/page-controls.service.mjs +136 -0
  24. package/esm2022/lib/core/page-management/services/page-management.service.mjs +98 -0
  25. package/esm2022/lib/core/page-management/services/page-theme.service.mjs +107 -0
  26. package/esm2022/public-api.mjs +16 -0
  27. package/fesm2022/cloud-ide-core.mjs +6859 -0
  28. package/fesm2022/cloud-ide-core.mjs.map +1 -0
  29. package/index.d.ts +5 -0
  30. package/lib/cloud-ide-core.component.d.ts +5 -0
  31. package/lib/cloud-ide-core.service.d.ts +6 -0
  32. package/lib/core/department-management/components/department-list/department-list.component.d.ts +178 -0
  33. package/lib/core/department-management/index.d.ts +2 -0
  34. package/lib/core/department-management/services/department-management.service.d.ts +68 -0
  35. package/lib/core/designation-management/components/designation-list/designation-list.component.d.ts +242 -0
  36. package/lib/core/designation-management/index.d.ts +2 -0
  37. package/lib/core/designation-management/services/designation-management.service.d.ts +69 -0
  38. package/lib/core/grade-level-management/components/grade-level-list/grade-level-list.component.d.ts +199 -0
  39. package/lib/core/grade-level-management/index.d.ts +2 -0
  40. package/lib/core/grade-level-management/services/grade-level-management.service.d.ts +69 -0
  41. package/lib/core/menu-management/components/menu-list/menu-list.component.d.ts +278 -0
  42. package/lib/core/menu-management/index.d.ts +3 -0
  43. package/lib/core/menu-management/interfaces/menu-item.interface.d.ts +30 -0
  44. package/lib/core/menu-management/services/menu-management.service.d.ts +85 -0
  45. package/lib/core/page-management/components/page-controls/page-controls.component.d.ts +126 -0
  46. package/lib/core/page-management/components/page-list/page-list.component.d.ts +91 -0
  47. package/lib/core/page-management/components/page-theme/page-theme.component.d.ts +189 -0
  48. package/lib/core/page-management/index.d.ts +6 -0
  49. package/lib/core/page-management/services/page-controls.service.d.ts +54 -0
  50. package/lib/core/page-management/services/page-management.service.d.ts +42 -0
  51. package/lib/core/page-management/services/page-theme.service.d.ts +43 -0
  52. package/package.json +25 -0
  53. package/public-api.d.ts +7 -0
@@ -0,0 +1,199 @@
1
+ import { TemplateRef } from '@angular/core';
2
+ import { ICoreSydsgl } from 'cloud-ide-lms-model';
3
+ import { GridConfiguration, GridEvent, DropdownItem } from 'cloud-ide-element';
4
+ import { TemplateContext } from 'cloud-ide-element';
5
+ import * as i0 from "@angular/core";
6
+ export declare class GradeLevelListComponent {
7
+ private destroyRef;
8
+ private gradeLevelService;
9
+ private appState;
10
+ private fb;
11
+ private router;
12
+ dragHandleRendererTemplate: import("@angular/core").Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
13
+ gradeLevelDetailsRendererTemplate: import("@angular/core").Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
14
+ gradeLevelStatusRendererTemplate: import("@angular/core").Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
15
+ actionsDropdownRendererTemplate: import("@angular/core").Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
16
+ Math: Math;
17
+ gradeLevels: import("@angular/core").WritableSignal<ICoreSydsgl[]>;
18
+ loading: import("@angular/core").WritableSignal<boolean>;
19
+ error: import("@angular/core").WritableSignal<string | null>;
20
+ selectedItems: import("@angular/core").WritableSignal<string[]>;
21
+ searchTerm: import("@angular/core").WritableSignal<string>;
22
+ retrievedGradeLevel: import("@angular/core").WritableSignal<ICoreSydsgl | null>;
23
+ isEditMode: import("@angular/core").WritableSignal<boolean>;
24
+ originalOrder: import("@angular/core").WritableSignal<ICoreSydsgl[]>;
25
+ hasOrderChanged: import("@angular/core").WritableSignal<boolean>;
26
+ currentPage: import("@angular/core").WritableSignal<number>;
27
+ pageSize: import("@angular/core").WritableSignal<number>;
28
+ totalItems: import("@angular/core").WritableSignal<number>;
29
+ quickAddForm: import("@angular/forms").FormGroup<{
30
+ sydsgl_name: import("@angular/forms").FormControl<string>;
31
+ sydsgl_description: import("@angular/forms").FormControl<string>;
32
+ sydsgl_order: import("@angular/forms").FormControl<number>;
33
+ sydsgl_isactive: import("@angular/forms").FormControl<boolean>;
34
+ sydsgl_entity_id_syen: import("@angular/forms").FormControl<string>;
35
+ }>;
36
+ gridConfig: import("@angular/core").WritableSignal<GridConfiguration<ICoreSydsgl>>;
37
+ templateRenderers: import("@angular/core").Signal<Record<string, TemplateRef<TemplateContext<Record<string, unknown>>>>>;
38
+ /**
39
+ * Get template renderers for data grid
40
+ */
41
+ getTemplateRenderers(): Record<string, TemplateRef<TemplateContext>>;
42
+ customRenderers: import("@angular/core").Signal<{
43
+ [x: string]: TemplateRef<TemplateContext<Record<string, unknown>>>;
44
+ }>;
45
+ /**
46
+ * Get custom renderers adapted for current data grid compatibility
47
+ */
48
+ getCustomRenderers(): Record<string, (value: unknown, row: ICoreSydsgl) => string>;
49
+ actionHandlers: {
50
+ onEditGradeLevel: (row: ICoreSydsgl) => void;
51
+ onToggleGradeLevel: (row: ICoreSydsgl) => void;
52
+ onDeleteGradeLevel: (row: ICoreSydsgl) => void;
53
+ onGradeLevelRowClick: (row: ICoreSydsgl) => void;
54
+ onGradeLevelRefresh: () => void;
55
+ resetOrder: () => void;
56
+ saveOrder: () => void;
57
+ };
58
+ filteredItems: import("@angular/core").Signal<ICoreSydsgl[]>;
59
+ hasSelection: import("@angular/core").Signal<boolean>;
60
+ totalPages: import("@angular/core").Signal<number>;
61
+ hasNextPage: import("@angular/core").Signal<boolean>;
62
+ hasPreviousPage: import("@angular/core").Signal<boolean>;
63
+ nextOrder: import("@angular/core").Signal<number>;
64
+ constructor();
65
+ /**
66
+ * Initialize component with modern patterns
67
+ */
68
+ private initializeComponent;
69
+ /**
70
+ * Setup event listeners for dropdown interactions
71
+ */
72
+ private setupEventListeners;
73
+ /**
74
+ * Cleanup event listeners
75
+ */
76
+ private cleanupEventListeners;
77
+ /**
78
+ * Expose global functions for dropdown interactions
79
+ */
80
+ private exposeGlobalFunctions;
81
+ /**
82
+ * Load grade levels from service
83
+ */
84
+ loadGradeLevels(): void;
85
+ /**
86
+ * Update grid data
87
+ */
88
+ private updateGridData;
89
+ /**
90
+ * Handle grid events
91
+ */
92
+ onGridEvent(event: GridEvent<ICoreSydsgl>): void;
93
+ /**
94
+ * Handle grade level refresh
95
+ */
96
+ onGradeLevelRefresh(): void;
97
+ /**
98
+ * Handle grade level reorder via drag and drop
99
+ */
100
+ onGradeLevelReorder(data: {
101
+ sourceIndex: number;
102
+ targetIndex: number;
103
+ newOrder: ICoreSydsgl[];
104
+ }): void;
105
+ /**
106
+ * Update grid data after reordering
107
+ */
108
+ private updateGridDataAfterReorder;
109
+ /**
110
+ * Save grade level order
111
+ */
112
+ saveGradeLevelOrder(): void;
113
+ /**
114
+ * Reset drag order to original state
115
+ */
116
+ resetDragOrder(): void;
117
+ /**
118
+ * Check if order has changed
119
+ */
120
+ hasOrderChanges(): boolean;
121
+ /**
122
+ * Handle grade level row click
123
+ */
124
+ onGradeLevelRowClick(gradeLevel: ICoreSydsgl): void;
125
+ /**
126
+ * Navigate to edit grade level form
127
+ */
128
+ editGradeLevel(itemId: string): void;
129
+ /**
130
+ * Get grade level by ID using the API
131
+ */
132
+ getGradeLevelById(itemId: string): void;
133
+ /**
134
+ * Populate form with grade level data for editing
135
+ */
136
+ populateFormForEdit(gradeLevel: ICoreSydsgl): void;
137
+ /**
138
+ * Delete grade level
139
+ */
140
+ deleteGradeLevel(itemId: string): void;
141
+ /**
142
+ * Toggle grade level status
143
+ */
144
+ toggleGradeLevelStatus(itemId: string): void;
145
+ /**
146
+ * Quick add or update grade level using reactive form
147
+ */
148
+ quickAddGradeLevel(): void;
149
+ /**
150
+ * Calculate the highest order from existing grade levels
151
+ */
152
+ private calculateNextOrder;
153
+ /**
154
+ * Reset the quick add form to default values
155
+ */
156
+ resetQuickAddForm(): void;
157
+ /**
158
+ * Handle click outside dropdown
159
+ */
160
+ private handleClickOutside;
161
+ /**
162
+ * Handle dropdown action clicks
163
+ */
164
+ private handleDropdownAction;
165
+ /**
166
+ * Toggle dropdown visibility
167
+ */
168
+ toggleDropdown(itemId: string): void;
169
+ /**
170
+ * Handle grade level action clicks
171
+ */
172
+ handleGradeLevelAction(action: string, itemId: string): void;
173
+ /**
174
+ * Get status display
175
+ */
176
+ getStatusDisplay(isActive: boolean): string;
177
+ /**
178
+ * Get status class for styling
179
+ */
180
+ getStatusClass(isActive: boolean): string;
181
+ /**
182
+ * Generate dropdown items for grade level actions
183
+ */
184
+ getDropdownItems(row: ICoreSydsgl): DropdownItem[];
185
+ /**
186
+ * Handle dropdown item click
187
+ */
188
+ onDropdownItemClick(item: DropdownItem, row: ICoreSydsgl): void;
189
+ /**
190
+ * Close all dropdowns
191
+ */
192
+ private closeAllDropdowns;
193
+ /**
194
+ * Track by function for ngFor
195
+ */
196
+ trackByItemId(index: number, item: ICoreSydsgl): string;
197
+ static ɵfac: i0.ɵɵFactoryDeclaration<GradeLevelListComponent, never>;
198
+ static ɵcmp: i0.ɵɵComponentDeclaration<GradeLevelListComponent, "cide-core-app-grade-level-list", never, {}, {}, never, never, true, never>;
199
+ }
@@ -0,0 +1,2 @@
1
+ export * from './components/grade-level-list/grade-level-list.component';
2
+ export * from './services/grade-level-management.service';
@@ -0,0 +1,69 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ import { ICoreSydsgl, gradeLevelControllerResponse, gradeLevelByIdControllerResponse, MGradeLevel } from 'cloud-ide-lms-model';
4
+ import * as i0 from "@angular/core";
5
+ export declare class GradeLevelManagementService {
6
+ private http;
7
+ private apiUrl;
8
+ private gradeLevelListSubject;
9
+ gradeLevelList$: Observable<ICoreSydsgl[]>;
10
+ constructor(http: HttpClient);
11
+ /**
12
+ * Get grade level list from API
13
+ */
14
+ getGradeLevelList(body: MGradeLevel): Observable<gradeLevelControllerResponse>;
15
+ /**
16
+ * Get grade level list from cache (if available)
17
+ */
18
+ getGradeLevelListFromCache(): ICoreSydsgl[];
19
+ /**
20
+ * Create new grade level
21
+ * POST ${coreRoutesUrl?.gradeLevel} - payload: MGradeLevel, response: gradeLevelInsertUpdateControllerResponse
22
+ */
23
+ createGradeLevel(gradeLevel: ICoreSydsgl): Observable<gradeLevelControllerResponse>;
24
+ /**
25
+ * Update existing grade level
26
+ * POST ${coreRoutesUrl?.gradeLevel} - payload: MGradeLevel, response: gradeLevelInsertUpdateControllerResponse
27
+ */
28
+ updateGradeLevel(id: string, gradeLevel: ICoreSydsgl): Observable<gradeLevelControllerResponse>;
29
+ /**
30
+ * Get grade level by ID
31
+ * GET ${coreRoutesUrl?.gradeLevel}/byId/:query - payload: { id }, response: gradeLevelByIdControllerResponse
32
+ */
33
+ getGradeLevelById(id: string): Observable<gradeLevelByIdControllerResponse>;
34
+ /**
35
+ * Delete grade level
36
+ * DELETE ${coreRoutesUrl?.gradeLevel}/:query - payload: { id }, response: { success: boolean }
37
+ */
38
+ deleteGradeLevel(id: string): Observable<{
39
+ success: boolean;
40
+ message?: string;
41
+ data?: unknown;
42
+ }>;
43
+ /**
44
+ * Delete multiple grade levels
45
+ */
46
+ deleteMultipleGradeLevels(ids: string[]): Observable<{
47
+ success: boolean;
48
+ message?: string;
49
+ data?: unknown;
50
+ }>;
51
+ /**
52
+ * Toggle grade level active status
53
+ */
54
+ toggleGradeLevelStatus(id: string): Observable<gradeLevelControllerResponse>;
55
+ /**
56
+ * Find grade level by ID
57
+ */
58
+ findGradeLevelById(id: string, items?: ICoreSydsgl[]): ICoreSydsgl | null;
59
+ /**
60
+ * Refresh grade level list from server
61
+ */
62
+ private refreshGradeLevelList;
63
+ /**
64
+ * Handle errors
65
+ */
66
+ private handleError;
67
+ static ɵfac: i0.ɵɵFactoryDeclaration<GradeLevelManagementService, never>;
68
+ static ɵprov: i0.ɵɵInjectableDeclaration<GradeLevelManagementService>;
69
+ }
@@ -0,0 +1,278 @@
1
+ import { TemplateRef } from '@angular/core';
2
+ import { ICoreSyme } from 'cloud-ide-lms-model';
3
+ import { GridConfiguration, GridEvent, DropdownItem } from 'cloud-ide-element';
4
+ import { TemplateContext } from 'cloud-ide-element';
5
+ import * as i0 from "@angular/core";
6
+ export declare class MenuListComponent {
7
+ private destroyRef;
8
+ private menuService;
9
+ private fb;
10
+ private router;
11
+ menuDetailsRendererTemplate: import("@angular/core").Signal<TemplateRef<TemplateContext<ICoreSyme>>>;
12
+ menuTypeRendererTemplate: import("@angular/core").Signal<TemplateRef<TemplateContext<ICoreSyme>>>;
13
+ actionsDropdownRendererTemplate: import("@angular/core").Signal<TemplateRef<TemplateContext<ICoreSyme>>>;
14
+ Math: Math;
15
+ menuItems: import("@angular/core").WritableSignal<ICoreSyme[]>;
16
+ loading: import("@angular/core").WritableSignal<boolean>;
17
+ error: import("@angular/core").WritableSignal<string | null>;
18
+ selectedItems: import("@angular/core").WritableSignal<string[]>;
19
+ searchTerm: import("@angular/core").WritableSignal<string>;
20
+ selectedParentItem: import("@angular/core").WritableSignal<ICoreSyme | null>;
21
+ retrievedMenuItem: import("@angular/core").WritableSignal<ICoreSyme | null>;
22
+ isEditMode: import("@angular/core").WritableSignal<boolean>;
23
+ originalOrder: import("@angular/core").WritableSignal<ICoreSyme[]>;
24
+ hasOrderChanged: import("@angular/core").WritableSignal<boolean>;
25
+ currentPage: import("@angular/core").WritableSignal<number>;
26
+ pageSize: import("@angular/core").WritableSignal<number>;
27
+ totalItems: import("@angular/core").WritableSignal<number>;
28
+ quickAddForm: import("@angular/forms").FormGroup<{
29
+ syme_title: import("@angular/forms").FormControl<string>;
30
+ syme_desc: import("@angular/forms").FormControl<string>;
31
+ syme_type: import("@angular/forms").FormControl<"module" | "section" | "menu" | "title">;
32
+ syme_id_syme: import("@angular/forms").FormControl<string>;
33
+ syme_path: import("@angular/forms").FormControl<string>;
34
+ syme_icon: import("@angular/forms").FormControl<string>;
35
+ syme_link: import("@angular/forms").FormControl<string>;
36
+ syme_isactive: import("@angular/forms").FormControl<boolean>;
37
+ syme_order_by: import("@angular/forms").FormControl<number>;
38
+ }>;
39
+ menuTypeOptions: import("@angular/core").Signal<{
40
+ value: string;
41
+ label: string;
42
+ }[]>;
43
+ gridConfig: import("@angular/core").WritableSignal<GridConfiguration<ICoreSyme>>;
44
+ templateRenderers: import("@angular/core").Signal<Record<string, TemplateRef<TemplateContext<ICoreSyme>>>>;
45
+ /**
46
+ * Get template renderers for data grid
47
+ * These templates are available for enhanced data grid components
48
+ */
49
+ getTemplateRenderers(): Record<string, TemplateRef<TemplateContext<ICoreSyme>>>;
50
+ customRenderers: import("@angular/core").Signal<{
51
+ [x: string]: TemplateRef<TemplateContext<ICoreSyme>>;
52
+ }>;
53
+ /**
54
+ * Get custom renderers adapted for current data grid compatibility
55
+ * Uses template-based renderers converted to string functions
56
+ */
57
+ getCustomRenderers(): Record<string, (value: unknown, row: ICoreSyme) => string>;
58
+ actionHandlers: {
59
+ onEditMenuItem: (row: ICoreSyme) => void;
60
+ onToggleMenuItem: (row: ICoreSyme) => void;
61
+ onDeleteMenuItem: (row: ICoreSyme) => void;
62
+ onMenuItemRowClick: (row: ICoreSyme) => void;
63
+ onMenuItemRefresh: () => void;
64
+ onAddChild: (row: ICoreSyme) => void;
65
+ resetOrder: () => void;
66
+ saveOrder: () => void;
67
+ };
68
+ hasSelection: import("@angular/core").Signal<boolean>;
69
+ totalPages: import("@angular/core").Signal<number>;
70
+ hasNextPage: import("@angular/core").Signal<boolean>;
71
+ hasPreviousPage: import("@angular/core").Signal<boolean>;
72
+ constructor();
73
+ /**
74
+ * Initialize component with modern patterns
75
+ */
76
+ private initializeComponent;
77
+ /**
78
+ * Setup event listeners for dropdown interactions
79
+ */
80
+ private setupEventListeners;
81
+ /**
82
+ * Cleanup event listeners
83
+ */
84
+ private cleanupEventListeners;
85
+ /**
86
+ * Expose global functions for dropdown interactions
87
+ */
88
+ private exposeGlobalFunctions;
89
+ /**
90
+ * Get default type based on parent selection (computed for reactivity)
91
+ */
92
+ private getDefaultType;
93
+ /**
94
+ * Load menu items from service
95
+ */
96
+ loadMenuItems(): void;
97
+ /**
98
+ * Handle click outside dropdown
99
+ */
100
+ private handleClickOutside;
101
+ /**
102
+ * Handle dropdown action clicks
103
+ */
104
+ private handleDropdownAction;
105
+ /**
106
+ * Update grid data
107
+ */
108
+ private updateGridData;
109
+ /**
110
+ * Handle grid events
111
+ */
112
+ onGridEvent(event: GridEvent<ICoreSyme>): void;
113
+ /**
114
+ * Handle menu item search
115
+ */
116
+ /**
117
+ * Handle menu item refresh
118
+ */
119
+ onMenuItemRefresh(): void;
120
+ /**
121
+ * Handle menu item row click
122
+ */
123
+ onMenuItemRowClick(menuItem: ICoreSyme): void;
124
+ /**
125
+ * Handle row reorder event
126
+ */
127
+ onRowReorder(data: {
128
+ sourceIndex: number;
129
+ targetIndex: number;
130
+ newOrder: ICoreSyme[];
131
+ }): void;
132
+ /**
133
+ * Update grid data after reordering
134
+ */
135
+ private updateGridDataAfterReorder;
136
+ /**
137
+ * Save menu order
138
+ */
139
+ saveMenuOrder(): void;
140
+ /**
141
+ * Reset drag order to original state
142
+ */
143
+ resetDragOrder(): void;
144
+ /**
145
+ * Check if order has changed
146
+ */
147
+ hasOrderChanges(): boolean;
148
+ /**
149
+ * Toggle item selection
150
+ */
151
+ toggleItemSelection(itemId: string): void;
152
+ /**
153
+ * Select all items on current page
154
+ */
155
+ selectAllOnPage(): void;
156
+ /**
157
+ * Clear all selections
158
+ */
159
+ clearSelection(): void;
160
+ /**
161
+ * Navigate to edit menu form
162
+ */
163
+ editMenuItem(itemId: string): void;
164
+ /**
165
+ * Get menu item by ID using the API
166
+ * GET ${coreRoutesUrl?.menu}/byId/:query - payload: MCoreSymeGetByIdPayload, response: menuByIdControllerResponse
167
+ */
168
+ getMenuItemById(itemId: string): void;
169
+ /**
170
+ * Populate form with menu item data for editing
171
+ */
172
+ populateFormForEdit(menuItem: ICoreSyme): void;
173
+ /**
174
+ * Delete menu item
175
+ */
176
+ deleteMenuItem(itemId: string): void;
177
+ /**
178
+ * Delete multiple selected items
179
+ */
180
+ deleteSelectedItems(): void;
181
+ /**
182
+ * Toggle menu item status
183
+ */
184
+ toggleItemStatus(itemId: string): void;
185
+ /**
186
+ * Update search term
187
+ */
188
+ onSearchChange(event: Event): void;
189
+ /**
190
+ * Navigate to specific page
191
+ */
192
+ goToPage(): void;
193
+ /**
194
+ * Get menu type display name
195
+ */
196
+ getMenuTypeDisplay(type: string): string;
197
+ /**
198
+ * Get status display
199
+ */
200
+ getStatusDisplay(isActive: boolean): string;
201
+ /**
202
+ * Get status class for styling
203
+ */
204
+ getStatusClass(isActive: boolean): string;
205
+ /**
206
+ * Get menu type class for styling
207
+ */
208
+ getMenuTypeClass(type: string): string;
209
+ /**
210
+ * Check if item is selected
211
+ */
212
+ isItemSelected(itemId: string): boolean;
213
+ /**
214
+ * Check if all items on current page are selected
215
+ */
216
+ isAllSelectedOnPage(): boolean;
217
+ /**
218
+ * Get pagination range
219
+ */
220
+ getPaginationRange(): number[];
221
+ /**
222
+ * Track by function for ngFor
223
+ */
224
+ trackByItemId(index: number, item: ICoreSyme): string;
225
+ /**
226
+ * Quick add or update menu item using reactive form
227
+ */
228
+ quickAddMenuItem(): void;
229
+ /**
230
+ * Reset the quick add form to default values
231
+ */
232
+ resetQuickAddForm(): void;
233
+ /**
234
+ * Handle add child button click from row action
235
+ */
236
+ onAddChild(parentItem: ICoreSyme): void;
237
+ /**
238
+ * Handle row reorder event
239
+ */
240
+ /**
241
+ * Toggle dropdown visibility
242
+ */
243
+ toggleDropdown(itemId: string): void;
244
+ /**
245
+ * Handle menu action clicks
246
+ */
247
+ handleMenuAction(action: string, itemId: string): void;
248
+ /**
249
+ * Add child menu item - sets parent and scrolls to form
250
+ */
251
+ addChildMenuItem(parentId: string, parentItem: ICoreSyme): void;
252
+ /**
253
+ * Clear selected parent
254
+ */
255
+ clearSelectedParent(): void;
256
+ /**
257
+ * Helper methods for templates
258
+ */
259
+ getMenuTypeLabel(type: string): string;
260
+ /**
261
+ * Generate dropdown items for menu actions
262
+ */
263
+ getDropdownItems(row: ICoreSyme): DropdownItem[];
264
+ /**
265
+ * Handle dropdown item click
266
+ */
267
+ onDropdownItemClick(item: DropdownItem, row: ICoreSyme): void;
268
+ /**
269
+ * Close all dropdowns
270
+ */
271
+ private closeAllDropdowns;
272
+ /**
273
+ * Test method to load sample data for debugging
274
+ */
275
+ loadTestData(): void;
276
+ static ɵfac: i0.ɵɵFactoryDeclaration<MenuListComponent, never>;
277
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuListComponent, "cide-core-app-menu-list", never, {}, {}, never, never, true, never>;
278
+ }
@@ -0,0 +1,3 @@
1
+ export * from './components/menu-list/menu-list.component';
2
+ export * from './services/menu-management.service';
3
+ export * from './interfaces/menu-item.interface';
@@ -0,0 +1,30 @@
1
+ import { MMenu } from "cloud-ide-lms-model";
2
+ /**
3
+ * Menu Reorder Request
4
+ * Used for reordering menu items
5
+ */
6
+ export interface MenuReorderRequest {
7
+ items: MMenu[];
8
+ }
9
+ /**
10
+ * Menu Type Options
11
+ * Available menu types for selection
12
+ */
13
+ export declare const MENU_TYPES: readonly [{
14
+ readonly value: "module";
15
+ readonly label: "Module";
16
+ }, {
17
+ readonly value: "section";
18
+ readonly label: "Section";
19
+ }, {
20
+ readonly value: "menu";
21
+ readonly label: "Menu Item";
22
+ }, {
23
+ readonly value: "title";
24
+ readonly label: "Title";
25
+ }];
26
+ /**
27
+ * Menu Type
28
+ * Type definition for menu types
29
+ */
30
+ export type MenuType = 'menu' | 'section' | 'title' | 'module';
@@ -0,0 +1,85 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ import { ICoreSyme, menuByIdControllerResponse, menuDeleteControllerResponse, menuListControllerResponse, MMenuListPayload } from 'cloud-ide-lms-model';
4
+ import * as i0 from "@angular/core";
5
+ export declare class MenuManagementService {
6
+ private http;
7
+ private apiUrl;
8
+ private menuListSubject;
9
+ menuList$: Observable<ICoreSyme[]>;
10
+ constructor(http: HttpClient);
11
+ /**
12
+ * Get menu list from API
13
+ */
14
+ getMenuList(body: MMenuListPayload): Observable<menuListControllerResponse>;
15
+ /**
16
+ * Get menu list using mock data
17
+ */
18
+ getMenuListWithMockData(): Observable<menuListControllerResponse>;
19
+ /**
20
+ * Get menu list from cache (if available)
21
+ */
22
+ getMenuListFromCache(): ICoreSyme[];
23
+ /**
24
+ * Create new menu item
25
+ * POST ${coreRoutesUrl?.menu} - payload: MCoreSymeInsertUpdatePayload, response: menuInsertUpdateControllerResponse
26
+ */
27
+ createMenuItem(menuItem: ICoreSyme): Observable<menuListControllerResponse>;
28
+ /**
29
+ * Update existing menu item
30
+ * POST ${coreRoutesUrl?.menu} - payload: MCoreSymeInsertUpdatePayload, response: menuInsertUpdateControllerResponse
31
+ */
32
+ updateMenuItem(id: string, menuItem: ICoreSyme): Observable<menuListControllerResponse>;
33
+ /**
34
+ * Get menu item by ID
35
+ * GET ${coreRoutesUrl?.menu}/byId/:query - payload: MCoreSymeGetByIdPayload, response: menuByIdControllerResponse
36
+ * TODO: Update to use MCoreSymeGetByIdPayload and menuByIdControllerResponse when available
37
+ */
38
+ getMenuItemById(id: string): Observable<menuByIdControllerResponse>;
39
+ /**
40
+ * Delete menu item
41
+ * DELETE ${coreRoutesUrl?.menu}/:query - payload: MCoreSymeDeletePayload, response: menuDeleteControllerResponse
42
+ * TODO: Update to use MCoreSymeDeletePayload and menuDeleteControllerResponse when available
43
+ */
44
+ deleteMenuItem(id: string): Observable<menuDeleteControllerResponse>;
45
+ /**
46
+ * Delete multiple menu items
47
+ * DELETE ${coreRoutesUrl?.menu}/:query - payload: MCoreSymeDeletePayload, response: menuDeleteControllerResponse
48
+ * TODO: Update to use MCoreSymeDeletePayload and menuDeleteControllerResponse when available
49
+ */
50
+ deleteMultipleMenuItems(ids: string[]): Observable<{
51
+ success: boolean;
52
+ message?: string;
53
+ data?: unknown;
54
+ }>;
55
+ /**
56
+ * Toggle menu item active status
57
+ */
58
+ toggleMenuItemStatus(id: string): Observable<menuListControllerResponse>;
59
+ /**
60
+ * Get available menu types
61
+ */
62
+ getMenuTypes(): Observable<string[]>;
63
+ /**
64
+ * Get available icons
65
+ */
66
+ getAvailableIcons(): Observable<string[]>;
67
+ /**
68
+ * Find menu item by ID (including nested items)
69
+ */
70
+ findMenuItemById(id: string, items?: ICoreSyme[]): ICoreSyme | null;
71
+ /**
72
+ * Get parent menu items for dropdown selection
73
+ */
74
+ getParentMenuItems(excludeId?: string): ICoreSyme[];
75
+ /**
76
+ * Refresh menu list from server
77
+ */
78
+ private refreshMenuList;
79
+ /**
80
+ * Handle errors
81
+ */
82
+ private handleError;
83
+ static ɵfac: i0.ɵɵFactoryDeclaration<MenuManagementService, never>;
84
+ static ɵprov: i0.ɵɵInjectableDeclaration<MenuManagementService>;
85
+ }