cloud-ide-academics 0.0.36 → 0.0.37

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 (25) hide show
  1. package/fesm2022/cloud-ide-academics-bonafide-request-form.component-Cf1e9jtg.mjs +112 -0
  2. package/fesm2022/cloud-ide-academics-bonafide-request-form.component-Cf1e9jtg.mjs.map +1 -0
  3. package/fesm2022/cloud-ide-academics-bonafide-request-list.component-CsFlYVci.mjs +121 -0
  4. package/fesm2022/cloud-ide-academics-bonafide-request-list.component-CsFlYVci.mjs.map +1 -0
  5. package/fesm2022/cloud-ide-academics-bonafide.service-B_HDaTmS.mjs +121 -0
  6. package/fesm2022/cloud-ide-academics-bonafide.service-B_HDaTmS.mjs.map +1 -0
  7. package/fesm2022/{cloud-ide-academics-class-program-term-create.component-DJQTpKeq.mjs → cloud-ide-academics-class-program-term-create.component-DJnAsJ1b.mjs} +2 -2
  8. package/fesm2022/{cloud-ide-academics-class-program-term-create.component-DJQTpKeq.mjs.map → cloud-ide-academics-class-program-term-create.component-DJnAsJ1b.mjs.map} +1 -1
  9. package/fesm2022/{cloud-ide-academics-class-program-term-list.component-BpjWSltB.mjs → cloud-ide-academics-class-program-term-list.component-C_ahVXJg.mjs} +2 -2
  10. package/fesm2022/{cloud-ide-academics-class-program-term-list.component-BpjWSltB.mjs.map → cloud-ide-academics-class-program-term-list.component-C_ahVXJg.mjs.map} +1 -1
  11. package/fesm2022/{cloud-ide-academics-cloud-ide-academics-DTKiLHAW.mjs → cloud-ide-academics-cloud-ide-academics-CI-kRbx-.mjs} +32 -13
  12. package/fesm2022/cloud-ide-academics-cloud-ide-academics-CI-kRbx-.mjs.map +1 -0
  13. package/fesm2022/{cloud-ide-academics-program-class-create.component-B6xB_hrJ.mjs → cloud-ide-academics-program-class-create.component-ChwCyeeG.mjs} +2 -2
  14. package/fesm2022/{cloud-ide-academics-program-class-create.component-B6xB_hrJ.mjs.map → cloud-ide-academics-program-class-create.component-ChwCyeeG.mjs.map} +1 -1
  15. package/fesm2022/{cloud-ide-academics-program-class-list.component-BLR9XYoZ.mjs → cloud-ide-academics-program-class-list.component-C-bRdT2a.mjs} +2 -2
  16. package/fesm2022/{cloud-ide-academics-program-class-list.component-BLR9XYoZ.mjs.map → cloud-ide-academics-program-class-list.component-C-bRdT2a.mjs.map} +1 -1
  17. package/fesm2022/{cloud-ide-academics-student-list.component-DwweQJh-.mjs → cloud-ide-academics-student-list.component-Bjwr-QFa.mjs} +200 -200
  18. package/fesm2022/cloud-ide-academics-student-list.component-Bjwr-QFa.mjs.map +1 -0
  19. package/fesm2022/{cloud-ide-academics-teacher-list.component-BaWKpb8C.mjs → cloud-ide-academics-teacher-list.component-1hEG5FBF.mjs} +204 -204
  20. package/fesm2022/cloud-ide-academics-teacher-list.component-1hEG5FBF.mjs.map +1 -0
  21. package/fesm2022/cloud-ide-academics.mjs +1 -1
  22. package/package.json +1 -1
  23. package/fesm2022/cloud-ide-academics-cloud-ide-academics-DTKiLHAW.mjs.map +0 -1
  24. package/fesm2022/cloud-ide-academics-student-list.component-DwweQJh-.mjs.map +0 -1
  25. package/fesm2022/cloud-ide-academics-teacher-list.component-BaWKpb8C.mjs.map +0 -1
@@ -104,7 +104,7 @@ class TeacherListComponent {
104
104
  }), ...(ngDevMode ? [{ debugName: "templateRenderers" }] : []));
105
105
  ngOnInit() {
106
106
  // Initialize rights for teacher management
107
- this.rightsService.initializeRights('teacher_list');
107
+ this.rightsService.initializeRights('academics_teacher_list');
108
108
  this.loadTeachers();
109
109
  }
110
110
  ngOnDestroy() {
@@ -232,107 +232,107 @@ class TeacherListComponent {
232
232
  return parts.length > 0 ? parts.join(' ') : 'Unknown';
233
233
  }
234
234
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: TeacherListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
235
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: TeacherListComponent, isStandalone: true, selector: "cide-academics-teacher-list", viewQueries: [{ propertyName: "teacherDetailsRendererTemplate", first: true, predicate: ["teacherDetailsRendererTemplate"], descendants: true, isSignal: true }, { propertyName: "contactInfoRendererTemplate", first: true, predicate: ["contactInfoRendererTemplate"], descendants: true, isSignal: true }, { propertyName: "statusRendererTemplate", first: true, predicate: ["statusRendererTemplate"], descendants: true, isSignal: true }, { propertyName: "actionsDropdownRendererTemplate", first: true, predicate: ["actionsDropdownRendererTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: `
236
- <cide-lyt-shared-wrapper [shared_wrapper_setup_param]="shared_wrapper_setup_param">
237
- <div class="tw-w-full tw-h-full tw-flex tw-flex-col tw-overflow-hidden">
238
- <!-- Header Section -->
239
- <div class="tw-flex-shrink-0 tw-w-full tw-px-4 sm:tw-px-6 tw-py-3 tw-bg-gray-50 tw-border-b tw-border-gray-200">
240
- <div class="tw-flex tw-items-center tw-justify-between">
241
- <div class="tw-flex tw-items-center tw-gap-3">
242
- <cide-ele-icon class="tw-text-purple-600 tw-w-5 tw-h-5">person</cide-ele-icon>
243
- <div>
244
- <h5 class="tw-text-sm tw-font-semibold tw-text-gray-900">Teacher Management</h5>
245
- <p class="tw-text-xs tw-text-gray-600">Manage and view all teacher profiles</p>
246
- </div>
247
- </div>
248
- @if (canCreate()) {
249
- <button cideEleButton variant="primary" size="sm" (click)="createNewTeacher()" leftIcon="add">
250
- Add Teacher
251
- </button>
252
- }
253
- </div>
254
- </div>
255
-
256
- <!-- Data Grid Section -->
257
- <div class="tw-flex-1 tw-h-auto tw-w-full tw-min-h-0 tw-relative tw-z-0 tw-overflow-hidden">
258
- <cide-ele-data-grid
259
- [config]="gridConfig()"
260
- [templateRenderers]="templateRenderers()"
261
- (gridEvent)="onGridEvent($event)">
262
- </cide-ele-data-grid>
263
- </div>
264
- </div>
265
-
266
- <!-- Teacher Details Template -->
267
- <ng-template #teacherDetailsRendererTemplate let-value="value" let-row="row" let-column="column">
268
- <div class="tw-flex tw-items-start tw-space-x-3 tw-py-3">
269
- <div class="tw-flex-shrink-0 tw-mt-0.5">
270
- <div class="tw-w-10 tw-h-10 tw-bg-purple-100 tw-rounded-lg tw-flex tw-items-center tw-justify-center">
271
- <cide-ele-icon class="tw-text-purple-600 tw-w-5 tw-h-5">person</cide-ele-icon>
272
- </div>
273
- </div>
274
- <div class="tw-min-w-0 tw-flex-1 tw-space-y-1">
275
- <div class="tw-text-sm tw-font-semibold tw-text-gray-900 tw-leading-5">
276
- {{ row?.user_fullname || getFullName(row) }}
277
- </div>
278
- @if (row?.user_type_mapping?.syutm_type_specific_id) {
279
- <div class="tw-text-xs tw-text-gray-600 tw-leading-4 tw-font-mono">
280
- <span class="tw-font-medium">Teacher ID:</span> {{ row.user_type_mapping.syutm_type_specific_id }}
281
- </div>
282
- }
283
- @if (row?.user_username) {
284
- <div class="tw-text-xs tw-text-gray-500 tw-leading-4">
285
- Username: {{ row.user_username }}
286
- </div>
287
- }
288
- </div>
289
- </div>
290
- </ng-template>
291
-
292
- <!-- Contact Info Template -->
293
- <ng-template #contactInfoRendererTemplate let-value="value" let-row="row" let-column="column">
294
- <div class="tw-py-3 tw-space-y-1">
295
- @if (row?.user_emailid) {
296
- <div class="tw-text-xs tw-text-gray-900 tw-flex tw-items-center">
297
- <cide-ele-icon class="tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2">email</cide-ele-icon>
298
- <span class="tw-truncate">{{ row.user_emailid }}</span>
299
- </div>
300
- }
301
- @if (row?.user_mobileno) {
302
- <div class="tw-text-xs tw-text-gray-600 tw-flex tw-items-center">
303
- <cide-ele-icon class="tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2">phone</cide-ele-icon>
304
- <span class="tw-truncate">{{ row.user_mobileno }}</span>
305
- </div>
306
- }
307
- </div>
308
- </ng-template>
309
-
310
- <!-- Status Template -->
311
- <ng-template #statusRendererTemplate let-value="value" let-row="row" let-column="column">
312
- <div class="tw-flex tw-items-center tw-justify-center tw-py-3">
313
- @if (row?.user_isactive) {
314
- <span class="tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-green-100 tw-text-green-800">
315
- Active
316
- </span>
317
- } @else {
318
- <span class="tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-red-100 tw-text-red-800">
319
- Inactive
320
- </span>
321
- }
322
- </div>
323
- </ng-template>
324
-
325
- <!-- Actions Template -->
326
- <ng-template #actionsDropdownRendererTemplate let-row="row" let-value="value" let-column="column">
327
- <cide-ele-dropdown
328
- [items]="getActionDropdownItems(row)"
329
- (itemClick)="onDropdownItemClick($event, row)"
330
- size="sm"
331
- variant="ghost"
332
- icon="more_vert">
333
- </cide-ele-dropdown>
334
- </ng-template>
335
- </cide-lyt-shared-wrapper>
235
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: TeacherListComponent, isStandalone: true, selector: "cide-academics-teacher-list", viewQueries: [{ propertyName: "teacherDetailsRendererTemplate", first: true, predicate: ["teacherDetailsRendererTemplate"], descendants: true, isSignal: true }, { propertyName: "contactInfoRendererTemplate", first: true, predicate: ["contactInfoRendererTemplate"], descendants: true, isSignal: true }, { propertyName: "statusRendererTemplate", first: true, predicate: ["statusRendererTemplate"], descendants: true, isSignal: true }, { propertyName: "actionsDropdownRendererTemplate", first: true, predicate: ["actionsDropdownRendererTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: `
236
+ <cide-lyt-shared-wrapper [shared_wrapper_setup_param]="shared_wrapper_setup_param">
237
+ <div class="tw-w-full tw-h-full tw-flex tw-flex-col tw-overflow-hidden">
238
+ <!-- Header Section -->
239
+ <div class="tw-flex-shrink-0 tw-w-full tw-px-4 sm:tw-px-6 tw-py-3 tw-bg-gray-50 tw-border-b tw-border-gray-200">
240
+ <div class="tw-flex tw-items-center tw-justify-between">
241
+ <div class="tw-flex tw-items-center tw-gap-3">
242
+ <cide-ele-icon class="tw-text-purple-600 tw-w-5 tw-h-5">person</cide-ele-icon>
243
+ <div>
244
+ <h5 class="tw-text-sm tw-font-semibold tw-text-gray-900">Teacher Management</h5>
245
+ <p class="tw-text-xs tw-text-gray-600">Manage and view all teacher profiles</p>
246
+ </div>
247
+ </div>
248
+ @if (canCreate()) {
249
+ <button cideEleButton variant="primary" size="sm" (click)="createNewTeacher()" leftIcon="add">
250
+ Add Teacher
251
+ </button>
252
+ }
253
+ </div>
254
+ </div>
255
+
256
+ <!-- Data Grid Section -->
257
+ <div class="tw-flex-1 tw-h-auto tw-w-full tw-min-h-0 tw-relative tw-z-0 tw-overflow-hidden">
258
+ <cide-ele-data-grid
259
+ [config]="gridConfig()"
260
+ [templateRenderers]="templateRenderers()"
261
+ (gridEvent)="onGridEvent($event)">
262
+ </cide-ele-data-grid>
263
+ </div>
264
+ </div>
265
+
266
+ <!-- Teacher Details Template -->
267
+ <ng-template #teacherDetailsRendererTemplate let-value="value" let-row="row" let-column="column">
268
+ <div class="tw-flex tw-items-start tw-space-x-3 tw-py-3">
269
+ <div class="tw-flex-shrink-0 tw-mt-0.5">
270
+ <div class="tw-w-10 tw-h-10 tw-bg-purple-100 tw-rounded-lg tw-flex tw-items-center tw-justify-center">
271
+ <cide-ele-icon class="tw-text-purple-600 tw-w-5 tw-h-5">person</cide-ele-icon>
272
+ </div>
273
+ </div>
274
+ <div class="tw-min-w-0 tw-flex-1 tw-space-y-1">
275
+ <div class="tw-text-sm tw-font-semibold tw-text-gray-900 tw-leading-5">
276
+ {{ row?.user_fullname || getFullName(row) }}
277
+ </div>
278
+ @if (row?.user_type_mapping?.syutm_type_specific_id) {
279
+ <div class="tw-text-xs tw-text-gray-600 tw-leading-4 tw-font-mono">
280
+ <span class="tw-font-medium">Teacher ID:</span> {{ row.user_type_mapping.syutm_type_specific_id }}
281
+ </div>
282
+ }
283
+ @if (row?.user_username) {
284
+ <div class="tw-text-xs tw-text-gray-500 tw-leading-4">
285
+ Username: {{ row.user_username }}
286
+ </div>
287
+ }
288
+ </div>
289
+ </div>
290
+ </ng-template>
291
+
292
+ <!-- Contact Info Template -->
293
+ <ng-template #contactInfoRendererTemplate let-value="value" let-row="row" let-column="column">
294
+ <div class="tw-py-3 tw-space-y-1">
295
+ @if (row?.user_emailid) {
296
+ <div class="tw-text-xs tw-text-gray-900 tw-flex tw-items-center">
297
+ <cide-ele-icon class="tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2">email</cide-ele-icon>
298
+ <span class="tw-truncate">{{ row.user_emailid }}</span>
299
+ </div>
300
+ }
301
+ @if (row?.user_mobileno) {
302
+ <div class="tw-text-xs tw-text-gray-600 tw-flex tw-items-center">
303
+ <cide-ele-icon class="tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2">phone</cide-ele-icon>
304
+ <span class="tw-truncate">{{ row.user_mobileno }}</span>
305
+ </div>
306
+ }
307
+ </div>
308
+ </ng-template>
309
+
310
+ <!-- Status Template -->
311
+ <ng-template #statusRendererTemplate let-value="value" let-row="row" let-column="column">
312
+ <div class="tw-flex tw-items-center tw-justify-center tw-py-3">
313
+ @if (row?.user_isactive) {
314
+ <span class="tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-green-100 tw-text-green-800">
315
+ Active
316
+ </span>
317
+ } @else {
318
+ <span class="tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-red-100 tw-text-red-800">
319
+ Inactive
320
+ </span>
321
+ }
322
+ </div>
323
+ </ng-template>
324
+
325
+ <!-- Actions Template -->
326
+ <ng-template #actionsDropdownRendererTemplate let-row="row" let-value="value" let-column="column">
327
+ <cide-ele-dropdown
328
+ [items]="getActionDropdownItems(row)"
329
+ (itemClick)="onDropdownItemClick($event, row)"
330
+ size="sm"
331
+ variant="ghost"
332
+ icon="more_vert">
333
+ </cide-ele-dropdown>
334
+ </ng-template>
335
+ </cide-lyt-shared-wrapper>
336
336
  `, isInline: true, styles: [":host{@apply tw-w-full tw-h-full tw-flex tw-flex-col;}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: CideIconComponent, selector: "cide-ele-icon", inputs: ["size", "type", "toolTip"] }, { kind: "component", type: CideEleDropdownComponent, selector: "cide-ele-dropdown", inputs: ["items", "config", "triggerTemplate", "menuTemplate"], outputs: ["itemClick", "dropdownToggle"] }, { kind: "component", type: CideEleButtonComponent, selector: "button[cideEleButton], a[cideEleButton], cide-ele-button", inputs: ["label", "variant", "size", "type", "shape", "elevation", "disabled", "id", "loading", "fullWidth", "leftIcon", "rightIcon", "customClass", "tooltip", "ariaLabel", "testId", "routerLink", "routerExtras", "preventDoubleClick", "animated"], outputs: ["btnClick", "doubleClick"] }, { kind: "component", type: CideEleDataGridComponent, selector: "cide-ele-data-grid", inputs: ["config", "templateRenderers", "customFormatters", "actionHandlers", "serverSidePagination", "totalServerItems", "currentServerPage", "currentServerPageSize", "dragDropEnabled"], outputs: ["gridEvent"] }, { kind: "component", type: CideLytSharedWrapperComponent, selector: "cide-lyt-shared-wrapper", inputs: ["shared_wrapper_setup_param", "breadcrumb_data"] }] });
337
337
  }
338
338
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: TeacherListComponent, decorators: [{
@@ -345,109 +345,109 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
345
345
  CideEleButtonComponent,
346
346
  CideEleDataGridComponent,
347
347
  CideLytSharedWrapperComponent
348
- ], template: `
349
- <cide-lyt-shared-wrapper [shared_wrapper_setup_param]="shared_wrapper_setup_param">
350
- <div class="tw-w-full tw-h-full tw-flex tw-flex-col tw-overflow-hidden">
351
- <!-- Header Section -->
352
- <div class="tw-flex-shrink-0 tw-w-full tw-px-4 sm:tw-px-6 tw-py-3 tw-bg-gray-50 tw-border-b tw-border-gray-200">
353
- <div class="tw-flex tw-items-center tw-justify-between">
354
- <div class="tw-flex tw-items-center tw-gap-3">
355
- <cide-ele-icon class="tw-text-purple-600 tw-w-5 tw-h-5">person</cide-ele-icon>
356
- <div>
357
- <h5 class="tw-text-sm tw-font-semibold tw-text-gray-900">Teacher Management</h5>
358
- <p class="tw-text-xs tw-text-gray-600">Manage and view all teacher profiles</p>
359
- </div>
360
- </div>
361
- @if (canCreate()) {
362
- <button cideEleButton variant="primary" size="sm" (click)="createNewTeacher()" leftIcon="add">
363
- Add Teacher
364
- </button>
365
- }
366
- </div>
367
- </div>
368
-
369
- <!-- Data Grid Section -->
370
- <div class="tw-flex-1 tw-h-auto tw-w-full tw-min-h-0 tw-relative tw-z-0 tw-overflow-hidden">
371
- <cide-ele-data-grid
372
- [config]="gridConfig()"
373
- [templateRenderers]="templateRenderers()"
374
- (gridEvent)="onGridEvent($event)">
375
- </cide-ele-data-grid>
376
- </div>
377
- </div>
378
-
379
- <!-- Teacher Details Template -->
380
- <ng-template #teacherDetailsRendererTemplate let-value="value" let-row="row" let-column="column">
381
- <div class="tw-flex tw-items-start tw-space-x-3 tw-py-3">
382
- <div class="tw-flex-shrink-0 tw-mt-0.5">
383
- <div class="tw-w-10 tw-h-10 tw-bg-purple-100 tw-rounded-lg tw-flex tw-items-center tw-justify-center">
384
- <cide-ele-icon class="tw-text-purple-600 tw-w-5 tw-h-5">person</cide-ele-icon>
385
- </div>
386
- </div>
387
- <div class="tw-min-w-0 tw-flex-1 tw-space-y-1">
388
- <div class="tw-text-sm tw-font-semibold tw-text-gray-900 tw-leading-5">
389
- {{ row?.user_fullname || getFullName(row) }}
390
- </div>
391
- @if (row?.user_type_mapping?.syutm_type_specific_id) {
392
- <div class="tw-text-xs tw-text-gray-600 tw-leading-4 tw-font-mono">
393
- <span class="tw-font-medium">Teacher ID:</span> {{ row.user_type_mapping.syutm_type_specific_id }}
394
- </div>
395
- }
396
- @if (row?.user_username) {
397
- <div class="tw-text-xs tw-text-gray-500 tw-leading-4">
398
- Username: {{ row.user_username }}
399
- </div>
400
- }
401
- </div>
402
- </div>
403
- </ng-template>
404
-
405
- <!-- Contact Info Template -->
406
- <ng-template #contactInfoRendererTemplate let-value="value" let-row="row" let-column="column">
407
- <div class="tw-py-3 tw-space-y-1">
408
- @if (row?.user_emailid) {
409
- <div class="tw-text-xs tw-text-gray-900 tw-flex tw-items-center">
410
- <cide-ele-icon class="tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2">email</cide-ele-icon>
411
- <span class="tw-truncate">{{ row.user_emailid }}</span>
412
- </div>
413
- }
414
- @if (row?.user_mobileno) {
415
- <div class="tw-text-xs tw-text-gray-600 tw-flex tw-items-center">
416
- <cide-ele-icon class="tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2">phone</cide-ele-icon>
417
- <span class="tw-truncate">{{ row.user_mobileno }}</span>
418
- </div>
419
- }
420
- </div>
421
- </ng-template>
422
-
423
- <!-- Status Template -->
424
- <ng-template #statusRendererTemplate let-value="value" let-row="row" let-column="column">
425
- <div class="tw-flex tw-items-center tw-justify-center tw-py-3">
426
- @if (row?.user_isactive) {
427
- <span class="tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-green-100 tw-text-green-800">
428
- Active
429
- </span>
430
- } @else {
431
- <span class="tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-red-100 tw-text-red-800">
432
- Inactive
433
- </span>
434
- }
435
- </div>
436
- </ng-template>
437
-
438
- <!-- Actions Template -->
439
- <ng-template #actionsDropdownRendererTemplate let-row="row" let-value="value" let-column="column">
440
- <cide-ele-dropdown
441
- [items]="getActionDropdownItems(row)"
442
- (itemClick)="onDropdownItemClick($event, row)"
443
- size="sm"
444
- variant="ghost"
445
- icon="more_vert">
446
- </cide-ele-dropdown>
447
- </ng-template>
448
- </cide-lyt-shared-wrapper>
348
+ ], template: `
349
+ <cide-lyt-shared-wrapper [shared_wrapper_setup_param]="shared_wrapper_setup_param">
350
+ <div class="tw-w-full tw-h-full tw-flex tw-flex-col tw-overflow-hidden">
351
+ <!-- Header Section -->
352
+ <div class="tw-flex-shrink-0 tw-w-full tw-px-4 sm:tw-px-6 tw-py-3 tw-bg-gray-50 tw-border-b tw-border-gray-200">
353
+ <div class="tw-flex tw-items-center tw-justify-between">
354
+ <div class="tw-flex tw-items-center tw-gap-3">
355
+ <cide-ele-icon class="tw-text-purple-600 tw-w-5 tw-h-5">person</cide-ele-icon>
356
+ <div>
357
+ <h5 class="tw-text-sm tw-font-semibold tw-text-gray-900">Teacher Management</h5>
358
+ <p class="tw-text-xs tw-text-gray-600">Manage and view all teacher profiles</p>
359
+ </div>
360
+ </div>
361
+ @if (canCreate()) {
362
+ <button cideEleButton variant="primary" size="sm" (click)="createNewTeacher()" leftIcon="add">
363
+ Add Teacher
364
+ </button>
365
+ }
366
+ </div>
367
+ </div>
368
+
369
+ <!-- Data Grid Section -->
370
+ <div class="tw-flex-1 tw-h-auto tw-w-full tw-min-h-0 tw-relative tw-z-0 tw-overflow-hidden">
371
+ <cide-ele-data-grid
372
+ [config]="gridConfig()"
373
+ [templateRenderers]="templateRenderers()"
374
+ (gridEvent)="onGridEvent($event)">
375
+ </cide-ele-data-grid>
376
+ </div>
377
+ </div>
378
+
379
+ <!-- Teacher Details Template -->
380
+ <ng-template #teacherDetailsRendererTemplate let-value="value" let-row="row" let-column="column">
381
+ <div class="tw-flex tw-items-start tw-space-x-3 tw-py-3">
382
+ <div class="tw-flex-shrink-0 tw-mt-0.5">
383
+ <div class="tw-w-10 tw-h-10 tw-bg-purple-100 tw-rounded-lg tw-flex tw-items-center tw-justify-center">
384
+ <cide-ele-icon class="tw-text-purple-600 tw-w-5 tw-h-5">person</cide-ele-icon>
385
+ </div>
386
+ </div>
387
+ <div class="tw-min-w-0 tw-flex-1 tw-space-y-1">
388
+ <div class="tw-text-sm tw-font-semibold tw-text-gray-900 tw-leading-5">
389
+ {{ row?.user_fullname || getFullName(row) }}
390
+ </div>
391
+ @if (row?.user_type_mapping?.syutm_type_specific_id) {
392
+ <div class="tw-text-xs tw-text-gray-600 tw-leading-4 tw-font-mono">
393
+ <span class="tw-font-medium">Teacher ID:</span> {{ row.user_type_mapping.syutm_type_specific_id }}
394
+ </div>
395
+ }
396
+ @if (row?.user_username) {
397
+ <div class="tw-text-xs tw-text-gray-500 tw-leading-4">
398
+ Username: {{ row.user_username }}
399
+ </div>
400
+ }
401
+ </div>
402
+ </div>
403
+ </ng-template>
404
+
405
+ <!-- Contact Info Template -->
406
+ <ng-template #contactInfoRendererTemplate let-value="value" let-row="row" let-column="column">
407
+ <div class="tw-py-3 tw-space-y-1">
408
+ @if (row?.user_emailid) {
409
+ <div class="tw-text-xs tw-text-gray-900 tw-flex tw-items-center">
410
+ <cide-ele-icon class="tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2">email</cide-ele-icon>
411
+ <span class="tw-truncate">{{ row.user_emailid }}</span>
412
+ </div>
413
+ }
414
+ @if (row?.user_mobileno) {
415
+ <div class="tw-text-xs tw-text-gray-600 tw-flex tw-items-center">
416
+ <cide-ele-icon class="tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2">phone</cide-ele-icon>
417
+ <span class="tw-truncate">{{ row.user_mobileno }}</span>
418
+ </div>
419
+ }
420
+ </div>
421
+ </ng-template>
422
+
423
+ <!-- Status Template -->
424
+ <ng-template #statusRendererTemplate let-value="value" let-row="row" let-column="column">
425
+ <div class="tw-flex tw-items-center tw-justify-center tw-py-3">
426
+ @if (row?.user_isactive) {
427
+ <span class="tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-green-100 tw-text-green-800">
428
+ Active
429
+ </span>
430
+ } @else {
431
+ <span class="tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-red-100 tw-text-red-800">
432
+ Inactive
433
+ </span>
434
+ }
435
+ </div>
436
+ </ng-template>
437
+
438
+ <!-- Actions Template -->
439
+ <ng-template #actionsDropdownRendererTemplate let-row="row" let-value="value" let-column="column">
440
+ <cide-ele-dropdown
441
+ [items]="getActionDropdownItems(row)"
442
+ (itemClick)="onDropdownItemClick($event, row)"
443
+ size="sm"
444
+ variant="ghost"
445
+ icon="more_vert">
446
+ </cide-ele-dropdown>
447
+ </ng-template>
448
+ </cide-lyt-shared-wrapper>
449
449
  `, styles: [":host{@apply tw-w-full tw-h-full tw-flex tw-flex-col;}\n"] }]
450
450
  }] });
451
451
 
452
452
  export { TeacherListComponent };
453
- //# sourceMappingURL=cloud-ide-academics-teacher-list.component-BaWKpb8C.mjs.map
453
+ //# sourceMappingURL=cloud-ide-academics-teacher-list.component-1hEG5FBF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-ide-academics-teacher-list.component-1hEG5FBF.mjs","sources":["../../../projects/cloud-ide-academics/src/lib/collection/teacher-management/components/teacher-list/teacher-list.component.ts"],"sourcesContent":["import { Component, OnInit, OnDestroy, inject, signal, computed, viewChild, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DestroyRef } from '@angular/core';\nimport {\n CideIconComponent,\n CideEleDropdownComponent,\n CideEleButtonComponent,\n CideEleDataGridComponent,\n CideSelectComponent,\n TemplateContext,\n DropdownItem,\n NotificationService,\n GridEvent,\n ConfirmationService\n} from 'cloud-ide-element';\nimport { CideLytSharedWrapperComponent, ComponentContextService, RightsService } from 'cloud-ide-layout';\nimport { USER_SERVICE_TOKEN, IUserMasterService } from 'cloud-ide-shared';\nimport {\n AuthUserMst,\n AuthUserMstListPayload,\n authUserMstListControllerResponse,\n generateStringFromObject,\n CoreUserTypeMapping\n} from 'cloud-ide-lms-model';\n\ninterface Teacher extends AuthUserMst, Record<string, unknown> {\n user_type_mapping?: CoreUserTypeMapping;\n teacher_id?: string;\n department?: string;\n subject?: string;\n specialization?: string;\n}\n\n@Component({\n selector: 'cide-academics-teacher-list',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CideIconComponent,\n CideEleDropdownComponent,\n CideEleButtonComponent,\n CideEleDataGridComponent,\n CideLytSharedWrapperComponent\n ],\n template: `\n <cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"shared_wrapper_setup_param\">\n <div class=\"tw-w-full tw-h-full tw-flex tw-flex-col tw-overflow-hidden\">\n <!-- Header Section -->\n <div class=\"tw-flex-shrink-0 tw-w-full tw-px-4 sm:tw-px-6 tw-py-3 tw-bg-gray-50 tw-border-b tw-border-gray-200\">\n <div class=\"tw-flex tw-items-center tw-justify-between\">\n <div class=\"tw-flex tw-items-center tw-gap-3\">\n <cide-ele-icon class=\"tw-text-purple-600 tw-w-5 tw-h-5\">person</cide-ele-icon>\n <div>\n <h5 class=\"tw-text-sm tw-font-semibold tw-text-gray-900\">Teacher Management</h5>\n <p class=\"tw-text-xs tw-text-gray-600\">Manage and view all teacher profiles</p>\n </div>\n </div>\n @if (canCreate()) {\n <button cideEleButton variant=\"primary\" size=\"sm\" (click)=\"createNewTeacher()\" leftIcon=\"add\">\n Add Teacher\n </button>\n }\n </div>\n </div>\n\n <!-- Data Grid Section -->\n <div class=\"tw-flex-1 tw-h-auto tw-w-full tw-min-h-0 tw-relative tw-z-0 tw-overflow-hidden\">\n <cide-ele-data-grid\n [config]=\"gridConfig()\"\n [templateRenderers]=\"templateRenderers()\"\n (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n </div>\n </div>\n\n <!-- Teacher Details Template -->\n <ng-template #teacherDetailsRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\n <div class=\"tw-flex tw-items-start tw-space-x-3 tw-py-3\">\n <div class=\"tw-flex-shrink-0 tw-mt-0.5\">\n <div class=\"tw-w-10 tw-h-10 tw-bg-purple-100 tw-rounded-lg tw-flex tw-items-center tw-justify-center\">\n <cide-ele-icon class=\"tw-text-purple-600 tw-w-5 tw-h-5\">person</cide-ele-icon>\n </div>\n </div>\n <div class=\"tw-min-w-0 tw-flex-1 tw-space-y-1\">\n <div class=\"tw-text-sm tw-font-semibold tw-text-gray-900 tw-leading-5\">\n {{ row?.user_fullname || getFullName(row) }}\n </div>\n @if (row?.user_type_mapping?.syutm_type_specific_id) {\n <div class=\"tw-text-xs tw-text-gray-600 tw-leading-4 tw-font-mono\">\n <span class=\"tw-font-medium\">Teacher ID:</span> {{ row.user_type_mapping.syutm_type_specific_id }}\n </div>\n }\n @if (row?.user_username) {\n <div class=\"tw-text-xs tw-text-gray-500 tw-leading-4\">\n Username: {{ row.user_username }}\n </div>\n }\n </div>\n </div>\n </ng-template>\n\n <!-- Contact Info Template -->\n <ng-template #contactInfoRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\n <div class=\"tw-py-3 tw-space-y-1\">\n @if (row?.user_emailid) {\n <div class=\"tw-text-xs tw-text-gray-900 tw-flex tw-items-center\">\n <cide-ele-icon class=\"tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2\">email</cide-ele-icon>\n <span class=\"tw-truncate\">{{ row.user_emailid }}</span>\n </div>\n }\n @if (row?.user_mobileno) {\n <div class=\"tw-text-xs tw-text-gray-600 tw-flex tw-items-center\">\n <cide-ele-icon class=\"tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2\">phone</cide-ele-icon>\n <span class=\"tw-truncate\">{{ row.user_mobileno }}</span>\n </div>\n }\n </div>\n </ng-template>\n\n <!-- Status Template -->\n <ng-template #statusRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\n <div class=\"tw-flex tw-items-center tw-justify-center tw-py-3\">\n @if (row?.user_isactive) {\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-green-100 tw-text-green-800\">\n Active\n </span>\n } @else {\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-red-100 tw-text-red-800\">\n Inactive\n </span>\n }\n </div>\n </ng-template>\n\n <!-- Actions Template -->\n <ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\" let-column=\"column\">\n <cide-ele-dropdown\n [items]=\"getActionDropdownItems(row)\"\n (itemClick)=\"onDropdownItemClick($event, row)\"\n size=\"sm\"\n variant=\"ghost\"\n icon=\"more_vert\">\n </cide-ele-dropdown>\n </ng-template>\n </cide-lyt-shared-wrapper>\n `,\n styles: [`\n :host {\n @apply tw-w-full tw-h-full tw-flex tw-flex-col;\n }\n `]\n})\nexport class TeacherListComponent implements OnInit, OnDestroy {\n shared_wrapper_setup_param = { sypg_page_code: \"academics_teacher_list\" };\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly userMasterService = inject(USER_SERVICE_TOKEN) as IUserMasterService;\n private readonly router = inject(Router);\n private readonly route = inject(ActivatedRoute);\n private readonly notificationService = inject(NotificationService);\n private readonly confirmationService = inject(ConfirmationService);\n private readonly componentContextService = inject(ComponentContextService);\n private readonly rightsService = inject(RightsService);\n\n // ViewChild for templates\n teacherDetailsRendererTemplate = viewChild<TemplateRef<TemplateContext>>('teacherDetailsRendererTemplate');\n contactInfoRendererTemplate = viewChild<TemplateRef<TemplateContext>>('contactInfoRendererTemplate');\n statusRendererTemplate = viewChild<TemplateRef<TemplateContext>>('statusRendererTemplate');\n actionsDropdownRendererTemplate = viewChild<TemplateRef<TemplateContext>>('actionsDropdownRendererTemplate');\n\n // State\n teachers = signal<Teacher[]>([]);\n loading = signal<boolean>(false);\n pageIndex = signal<number>(1);\n pageSize = signal<number>(10);\n total = signal<number>(0);\n searchQuery = signal<string>('');\n\n // Rights computed signals\n canCreate = computed(() => this.rightsService.hasRight('CREATE'));\n canEdit = computed(() => this.rightsService.hasRight('EDIT'));\n canDelete = computed(() => this.rightsService.hasRight('DELETE'));\n canView = computed(() => this.rightsService.hasRight('VIEW'));\n\n // Grid configuration\n gridConfig = computed(() => ({\n id: 'teachers-grid',\n responsive: true,\n data: this.teachers(),\n columns: [\n {\n key: 'teacher_details',\n header: 'Teacher Details',\n type: 'custom' as any,\n width: '300px',\n sortable: true,\n renderer: 'teacherDetailsRendererTemplate'\n },\n {\n key: 'contact_info',\n header: 'Contact Information',\n type: 'custom' as any,\n width: '250px',\n sortable: false,\n renderer: 'contactInfoRendererTemplate'\n },\n {\n key: 'user_isactive',\n header: 'Status',\n type: 'custom' as any,\n width: '120px',\n sortable: true,\n renderer: 'statusRendererTemplate'\n },\n {\n key: 'actions',\n header: 'Actions',\n type: 'actions' as any,\n width: '100px',\n sortable: false,\n renderer: 'actionsDropdownRendererTemplate'\n }\n ],\n pagination: {\n enabled: true,\n pageSize: this.pageSize(),\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search teachers by name, ID, email...',\n searchableColumns: ['user_fullname', 'user_username', 'user_emailid'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n rowHeight: 70\n }));\n\n templateRenderers = computed(() => ({\n teacherDetailsRendererTemplate: this.teacherDetailsRendererTemplate(),\n contactInfoRendererTemplate: this.contactInfoRendererTemplate(),\n statusRendererTemplate: this.statusRendererTemplate(),\n actionsDropdownRendererTemplate: this.actionsDropdownRendererTemplate()\n }));\n\n ngOnInit(): void {\n // Initialize rights for teacher management\n this.rightsService.initializeRights('academics_teacher_list');\n this.loadTeachers();\n }\n\n ngOnDestroy(): void {\n // Cleanup handled by takeUntilDestroyed\n }\n\n loadTeachers(): void {\n this.loading.set(true);\n const payload: AuthUserMstListPayload = {\n pageIndex: this.pageIndex(),\n pageSize: this.pageSize(),\n query: this.searchQuery() || undefined,\n pagination: true\n };\n\n this.userMasterService.getUserList(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response: authUserMstListControllerResponse) => {\n if (response.success && response.data) {\n // Filter for teachers only based on user_type_mapping\n const teachers = (response.data as Teacher[]).filter(user => \n user.user_type_mapping?.syutm_user_type === 'TEACHER'\n );\n this.teachers.set(teachers);\n this.total.set(teachers.length);\n } else {\n this.teachers.set([]);\n this.total.set(0);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error loading teachers:', error);\n this.notificationService.error('Failed to load teachers. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n onGridEvent(event: GridEvent): void {\n if (event.type === 'pageChange') {\n if (event.data && typeof event.data === 'object' && 'pageIndex' in event.data) {\n this.pageIndex.set(event.data['pageIndex'] as number);\n this.loadTeachers();\n }\n } else if (event.type === 'search') {\n if (event.data && typeof event.data === 'object' && 'query' in event.data) {\n this.searchQuery.set(event.data['query'] as string);\n this.pageIndex.set(1);\n this.loadTeachers();\n }\n } else if (event.type === 'refresh') {\n this.loadTeachers();\n }\n }\n\n getActionDropdownItems(row: Teacher): DropdownItem[] {\n return [\n { id: 'view', label: 'View Profile', icon: 'visibility' },\n { id: 'edit', label: 'Edit', icon: 'edit' },\n { id: 'delete', label: 'Delete', icon: 'delete' }\n ];\n }\n\n onDropdownItemClick(item: DropdownItem, row: Teacher): void {\n switch (item.id) {\n case 'view':\n this.viewTeacher(row);\n break;\n case 'edit':\n this.editTeacher(row);\n break;\n case 'delete':\n this.deleteTeacher(row);\n break;\n }\n }\n\n createNewTeacher(): void {\n if (!this.rightsService.hasRight('CREATE')) {\n this.notificationService.error('You do not have permission to create teachers');\n return;\n }\n this.router.navigate(['/control-panel/academics/teacher/create']);\n }\n\n viewTeacher(teacher: Teacher): void {\n if (!this.rightsService.hasRight('VIEW')) {\n this.notificationService.error('You do not have permission to view teachers');\n return;\n }\n const query = generateStringFromObject({ user_id: teacher._id });\n this.router.navigate(['/control-panel/academics/teacher/view', query]);\n }\n\n editTeacher(teacher: Teacher): void {\n if (!this.rightsService.hasRight('EDIT')) {\n this.notificationService.error('You do not have permission to edit teachers');\n return;\n }\n const query = generateStringFromObject({ user_id: teacher._id });\n this.router.navigate(['/control-panel/academics/teacher/edit', query]);\n }\n\n deleteTeacher(teacher: Teacher): void {\n if (!this.rightsService.hasRight('DELETE')) {\n this.notificationService.error('You do not have permission to delete teachers');\n return;\n }\n this.confirmationService.confirmDelete(teacher.user_fullname || 'Unknown')\n .then((confirmed) => {\n if (confirmed && teacher._id) {\n this.userMasterService.deleteUserMaster(teacher._id)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: () => {\n this.notificationService.success('Teacher deleted successfully');\n this.loadTeachers();\n },\n error: () => {\n this.notificationService.error('Failed to delete teacher');\n }\n });\n }\n })\n .catch(() => {\n // User cancelled - no action needed\n });\n }\n\n getFullName(user: any): string {\n const parts = [user.user_firstname, user.user_middlename, user.user_lastname].filter(Boolean);\n return parts.length > 0 ? parts.join(' ') : 'Unknown';\n }\n}\n\n"],"names":[],"mappings":";;;;;;;;;;;MA4Ja,oBAAoB,CAAA;AAC/B,IAAA,0BAA0B,GAAG,EAAE,cAAc,EAAE,wBAAwB,EAAE;AAExD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,iBAAiB,GAAG,MAAM,CAAC,kBAAkB,CAAuB;AACpE,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,IAAA,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACzD,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;;AAGtD,IAAA,8BAA8B,GAAG,SAAS,CAA+B,gCAAgC,0EAAC;AAC1G,IAAA,2BAA2B,GAAG,SAAS,CAA+B,6BAA6B,uEAAC;AACpG,IAAA,sBAAsB,GAAG,SAAS,CAA+B,wBAAwB,kEAAC;AAC1F,IAAA,+BAA+B,GAAG,SAAS,CAA+B,iCAAiC,2EAAC;;AAG5G,IAAA,QAAQ,GAAG,MAAM,CAAY,EAAE,oDAAC;AAChC,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,mDAAC;AAChC,IAAA,SAAS,GAAG,MAAM,CAAS,CAAC,qDAAC;AAC7B,IAAA,QAAQ,GAAG,MAAM,CAAS,EAAE,oDAAC;AAC7B,IAAA,KAAK,GAAG,MAAM,CAAS,CAAC,iDAAC;AACzB,IAAA,WAAW,GAAG,MAAM,CAAS,EAAE,uDAAC;;AAGhC,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,qDAAC;AACjE,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,mDAAC;AAC7D,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,qDAAC;AACjE,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,mDAAC;;AAG7D,IAAA,UAAU,GAAG,QAAQ,CAAC,OAAO;AAC3B,QAAA,EAAE,EAAE,eAAe;AACnB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;AACrB,QAAA,OAAO,EAAE;AACP,YAAA;AACE,gBAAA,GAAG,EAAE,iBAAiB;AACtB,gBAAA,MAAM,EAAE,iBAAiB;AACzB,gBAAA,IAAI,EAAE,QAAe;AACrB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,QAAQ,EAAE;AACX,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,cAAc;AACnB,gBAAA,MAAM,EAAE,qBAAqB;AAC7B,gBAAA,IAAI,EAAE,QAAe;AACrB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE;AACX,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,eAAe;AACpB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,IAAI,EAAE,QAAe;AACrB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,QAAQ,EAAE;AACX,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,SAAgB;AACtB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE;AACX;AACF,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzB,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAClC,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,WAAW,EAAE;AACd,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,WAAW,EAAE,uCAAuC;AACpD,YAAA,iBAAiB,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,CAAC;AACrE,YAAA,UAAU,EAAE;AACb,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,WAAW,EAAE;AACd,SAAA;AACD,QAAA,SAAS,EAAE;AACZ,KAAA,CAAC,sDAAC;AAEH,IAAA,iBAAiB,GAAG,QAAQ,CAAC,OAAO;AAClC,QAAA,8BAA8B,EAAE,IAAI,CAAC,8BAA8B,EAAE;AACrE,QAAA,2BAA2B,EAAE,IAAI,CAAC,2BAA2B,EAAE;AAC/D,QAAA,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,EAAE;AACrD,QAAA,+BAA+B,EAAE,IAAI,CAAC,+BAA+B;AACtE,KAAA,CAAC,6DAAC;IAEH,QAAQ,GAAA;;AAEN,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,wBAAwB,CAAC;QAC7D,IAAI,CAAC,YAAY,EAAE;;IAGrB,WAAW,GAAA;;;IAIX,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,MAAM,OAAO,GAA2B;AACtC,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,SAAS;AACtC,YAAA,UAAU,EAAE;SACb;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO;AACvC,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,QAA2C,KAAI;gBACpD,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;;oBAErC,MAAM,QAAQ,GAAI,QAAQ,CAAC,IAAkB,CAAC,MAAM,CAAC,IAAI,IACvD,IAAI,CAAC,iBAAiB,EAAE,eAAe,KAAK,SAAS,CACtD;AACD,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;;qBAC1B;AACL,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;AACrB,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;;AAEnB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;aACxB;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC;AAC/C,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,4CAA4C,CAAC;AAC5E,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;;AAE1B,SAAA,CAAC;;AAGN,IAAA,WAAW,CAAC,KAAgB,EAAA;AAC1B,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;AAC/B,YAAA,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,IAAI,KAAK,CAAC,IAAI,EAAE;AAC7E,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAW,CAAC;gBACrD,IAAI,CAAC,YAAY,EAAE;;;AAEhB,aAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClC,YAAA,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;AACzE,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAW,CAAC;AACnD,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,YAAY,EAAE;;;AAEhB,aAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;YACnC,IAAI,CAAC,YAAY,EAAE;;;AAIvB,IAAA,sBAAsB,CAAC,GAAY,EAAA;QACjC,OAAO;YACL,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;YACzD,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;YAC3C,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ;SAChD;;IAGH,mBAAmB,CAAC,IAAkB,EAAE,GAAY,EAAA;AAClD,QAAA,QAAQ,IAAI,CAAC,EAAE;AACb,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBACrB;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBACrB;AACF,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;gBACvB;;;IAIN,gBAAgB,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,+CAA+C,CAAC;YAC/E;;QAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,yCAAyC,CAAC,CAAC;;AAGnE,IAAA,WAAW,CAAC,OAAgB,EAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,6CAA6C,CAAC;YAC7E;;AAEF,QAAA,MAAM,KAAK,GAAG,wBAAwB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;;AAGxE,IAAA,WAAW,CAAC,OAAgB,EAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,6CAA6C,CAAC;YAC7E;;AAEF,QAAA,MAAM,KAAK,GAAG,wBAAwB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;;AAGxE,IAAA,aAAa,CAAC,OAAgB,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,+CAA+C,CAAC;YAC/E;;QAEF,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,IAAI,SAAS;AACtE,aAAA,IAAI,CAAC,CAAC,SAAS,KAAI;AAClB,YAAA,IAAI,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG;AAChD,qBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,qBAAA,SAAS,CAAC;oBACT,IAAI,EAAE,MAAK;AACT,wBAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,8BAA8B,CAAC;wBAChE,IAAI,CAAC,YAAY,EAAE;qBACpB;oBACD,KAAK,EAAE,MAAK;AACV,wBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,0BAA0B,CAAC;;AAE7D,iBAAA,CAAC;;AAER,SAAC;aACA,KAAK,CAAC,MAAK;;AAEZ,SAAC,CAAC;;AAGN,IAAA,WAAW,CAAC,IAAS,EAAA;QACnB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC7F,QAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS;;uGA7O5C,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gCAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5GrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA7GC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,sBAAsB,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,IAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,wBAAwB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FA8GpB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAxHhC,SAAS;+BACE,6BAA6B,EAAA,UAAA,EAC3B,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,WAAW;wBACX,iBAAiB;wBACjB,wBAAwB;wBACxB,sBAAsB;wBACtB,wBAAwB;wBACxB;qBACD,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqGT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,0DAAA,CAAA,EAAA;;;;;"}
@@ -1,2 +1,2 @@
1
- export { A as AcademicYearCreateComponent, e as AcademicYearListComponent, f as CideLytAcademicYearMappingService, a as CideLytAcademicYearService, h as CideLytClassProgramBranchFormComponent, g as CideLytClassProgramBranchListComponent, b as CideLytClassProgramBranchService, k as CideLytProgramSectionSelectorComponent, j as CideLytProgramTermSectionService, P as ProgramTermSectionCreateComponent, i as ProgramTermSectionListComponent, d as academicsRoutes } from './cloud-ide-academics-cloud-ide-academics-DTKiLHAW.mjs';
1
+ export { A as AcademicYearCreateComponent, e as AcademicYearListComponent, f as CideLytAcademicYearMappingService, a as CideLytAcademicYearService, h as CideLytClassProgramBranchFormComponent, g as CideLytClassProgramBranchListComponent, b as CideLytClassProgramBranchService, k as CideLytProgramSectionSelectorComponent, j as CideLytProgramTermSectionService, P as ProgramTermSectionCreateComponent, i as ProgramTermSectionListComponent, d as academicsRoutes } from './cloud-ide-academics-cloud-ide-academics-CI-kRbx-.mjs';
2
2
  //# sourceMappingURL=cloud-ide-academics.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cloud-ide-academics",
3
- "version": "0.0.36",
3
+ "version": "0.0.37",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.1.0",
6
6
  "@angular/core": "^20.1.0"