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.
- package/README.md +24 -0
- package/esm2022/cloud-ide-core.mjs +5 -0
- package/esm2022/lib/cloud-ide-core.component.mjs +19 -0
- package/esm2022/lib/cloud-ide-core.service.mjs +14 -0
- package/esm2022/lib/core/department-management/components/department-list/department-list.component.mjs +768 -0
- package/esm2022/lib/core/department-management/index.mjs +5 -0
- package/esm2022/lib/core/department-management/services/department-management.service.mjs +187 -0
- package/esm2022/lib/core/designation-management/components/designation-list/designation-list.component.mjs +1122 -0
- package/esm2022/lib/core/designation-management/index.mjs +5 -0
- package/esm2022/lib/core/designation-management/services/designation-management.service.mjs +194 -0
- package/esm2022/lib/core/grade-level-management/components/grade-level-list/grade-level-list.component.mjs +794 -0
- package/esm2022/lib/core/grade-level-management/index.mjs +5 -0
- package/esm2022/lib/core/grade-level-management/services/grade-level-management.service.mjs +172 -0
- package/esm2022/lib/core/menu-management/components/menu-list/menu-list.component.mjs +1135 -0
- package/esm2022/lib/core/menu-management/index.mjs +10 -0
- package/esm2022/lib/core/menu-management/interfaces/menu-item.interface.mjs +11 -0
- package/esm2022/lib/core/menu-management/mock-data/menu-items.json +311 -0
- package/esm2022/lib/core/menu-management/services/menu-management.service.mjs +230 -0
- package/esm2022/lib/core/page-management/components/page-controls/page-controls.component.mjs +483 -0
- package/esm2022/lib/core/page-management/components/page-list/page-list.component.mjs +393 -0
- package/esm2022/lib/core/page-management/components/page-theme/page-theme.component.mjs +767 -0
- package/esm2022/lib/core/page-management/index.mjs +10 -0
- package/esm2022/lib/core/page-management/services/page-controls.service.mjs +136 -0
- package/esm2022/lib/core/page-management/services/page-management.service.mjs +98 -0
- package/esm2022/lib/core/page-management/services/page-theme.service.mjs +107 -0
- package/esm2022/public-api.mjs +16 -0
- package/fesm2022/cloud-ide-core.mjs +6859 -0
- package/fesm2022/cloud-ide-core.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/cloud-ide-core.component.d.ts +5 -0
- package/lib/cloud-ide-core.service.d.ts +6 -0
- package/lib/core/department-management/components/department-list/department-list.component.d.ts +178 -0
- package/lib/core/department-management/index.d.ts +2 -0
- package/lib/core/department-management/services/department-management.service.d.ts +68 -0
- package/lib/core/designation-management/components/designation-list/designation-list.component.d.ts +242 -0
- package/lib/core/designation-management/index.d.ts +2 -0
- package/lib/core/designation-management/services/designation-management.service.d.ts +69 -0
- package/lib/core/grade-level-management/components/grade-level-list/grade-level-list.component.d.ts +199 -0
- package/lib/core/grade-level-management/index.d.ts +2 -0
- package/lib/core/grade-level-management/services/grade-level-management.service.d.ts +69 -0
- package/lib/core/menu-management/components/menu-list/menu-list.component.d.ts +278 -0
- package/lib/core/menu-management/index.d.ts +3 -0
- package/lib/core/menu-management/interfaces/menu-item.interface.d.ts +30 -0
- package/lib/core/menu-management/services/menu-management.service.d.ts +85 -0
- package/lib/core/page-management/components/page-controls/page-controls.component.d.ts +126 -0
- package/lib/core/page-management/components/page-list/page-list.component.d.ts +91 -0
- package/lib/core/page-management/components/page-theme/page-theme.component.d.ts +189 -0
- package/lib/core/page-management/index.d.ts +6 -0
- package/lib/core/page-management/services/page-controls.service.d.ts +54 -0
- package/lib/core/page-management/services/page-management.service.d.ts +42 -0
- package/lib/core/page-management/services/page-theme.service.d.ts +43 -0
- package/package.json +25 -0
- package/public-api.d.ts +7 -0
package/lib/core/grade-level-management/components/grade-level-list/grade-level-list.component.d.ts
ADDED
|
@@ -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,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,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
|
+
}
|