cloud-ide-academics 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{cloud-ide-academics-class-program-term-create.component-D3PfbSMN.mjs → cloud-ide-academics-class-program-term-create.component-B5sVQbaC.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-class-program-term-create.component-D3PfbSMN.mjs.map → cloud-ide-academics-class-program-term-create.component-B5sVQbaC.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-cloud-ide-academics-BP1hZ-yx.mjs → cloud-ide-academics-cloud-ide-academics-Czexp3pk.mjs} +13 -24
- package/fesm2022/cloud-ide-academics-cloud-ide-academics-Czexp3pk.mjs.map +1 -0
- package/fesm2022/{cloud-ide-academics-program-class-create.component-Ds8vN9sL.mjs → cloud-ide-academics-program-class-create.component-DR31TP1Z.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-program-class-create.component-Ds8vN9sL.mjs.map → cloud-ide-academics-program-class-create.component-DR31TP1Z.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-program-class-list.component-C6VyX4hH.mjs → cloud-ide-academics-program-class-list.component-C1iTyuQ4.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-program-class-list.component-C6VyX4hH.mjs.map → cloud-ide-academics-program-class-list.component-C1iTyuQ4.mjs.map} +1 -1
- package/fesm2022/cloud-ide-academics.mjs +1 -1
- package/index.d.ts +0 -1
- package/package.json +1 -1
- package/fesm2022/cloud-ide-academics-cloud-ide-academics-BP1hZ-yx.mjs.map +0 -1
|
@@ -9,7 +9,7 @@ import { Router, ActivatedRoute } from '@angular/router';
|
|
|
9
9
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
10
10
|
import { of, forkJoin } from 'rxjs';
|
|
11
11
|
import { switchMap, catchError, map } from 'rxjs/operators';
|
|
12
|
-
import { CideInputComponent, CideTextareaComponent, CideEleButtonComponent, CideEleTabComponent, CideIconComponent, CideSelectComponent, ConfirmationService, NotificationService, CideEleDataGridComponent, CideEleDropdownComponent } from 'cloud-ide-element';
|
|
12
|
+
import { CideInputComponent, CideTextareaComponent, CideEleButtonComponent, CideEleTabComponent, CideIconComponent, CideSelectComponent, CideFormFieldErrorComponent, ConfirmationService, NotificationService, CideEleDataGridComponent, CideEleDropdownComponent } from 'cloud-ide-element';
|
|
13
13
|
import { HttpClient } from '@angular/common/http';
|
|
14
14
|
import { generateStringFromObject, cidePath, hostManagerRoutesUrl, academicsRoutesUrl, generateObjectFromString } from 'cloud-ide-lms-model';
|
|
15
15
|
import { ENTITY_SERVICE_TOKEN } from 'cloud-ide-shared';
|
|
@@ -59,7 +59,7 @@ const academicsRoutes = [
|
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
path: 'program-class-management',
|
|
62
|
-
loadComponent: () => import('./cloud-ide-academics-program-class-list.component-
|
|
62
|
+
loadComponent: () => import('./cloud-ide-academics-program-class-list.component-C1iTyuQ4.mjs').then(c => c.ProgramClassListComponent),
|
|
63
63
|
title: 'Program Class Management',
|
|
64
64
|
canActivate: [authGuard],
|
|
65
65
|
data: {
|
|
@@ -69,7 +69,7 @@ const academicsRoutes = [
|
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
path: 'program-class-management/create',
|
|
72
|
-
loadComponent: () => import('./cloud-ide-academics-program-class-create.component-
|
|
72
|
+
loadComponent: () => import('./cloud-ide-academics-program-class-create.component-DR31TP1Z.mjs').then(c => c.ProgramClassCreateComponent),
|
|
73
73
|
title: 'Create Program Class',
|
|
74
74
|
canActivate: [authGuard],
|
|
75
75
|
data: {
|
|
@@ -79,7 +79,7 @@ const academicsRoutes = [
|
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
path: 'program-class-management/edit/:query',
|
|
82
|
-
loadComponent: () => import('./cloud-ide-academics-program-class-create.component-
|
|
82
|
+
loadComponent: () => import('./cloud-ide-academics-program-class-create.component-DR31TP1Z.mjs').then(c => c.ProgramClassCreateComponent),
|
|
83
83
|
title: 'Edit Program Class',
|
|
84
84
|
canActivate: [authGuard],
|
|
85
85
|
data: {
|
|
@@ -89,7 +89,7 @@ const academicsRoutes = [
|
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
91
|
path: 'program-class-management/view/:query',
|
|
92
|
-
loadComponent: () => import('./cloud-ide-academics-program-class-create.component-
|
|
92
|
+
loadComponent: () => import('./cloud-ide-academics-program-class-create.component-DR31TP1Z.mjs').then(c => c.ProgramClassCreateComponent),
|
|
93
93
|
title: 'View Program Class',
|
|
94
94
|
canActivate: [authGuard],
|
|
95
95
|
data: {
|
|
@@ -99,7 +99,7 @@ const academicsRoutes = [
|
|
|
99
99
|
},
|
|
100
100
|
{
|
|
101
101
|
path: 'program-term-management/create',
|
|
102
|
-
loadComponent: () => import('./cloud-ide-academics-class-program-term-create.component-
|
|
102
|
+
loadComponent: () => import('./cloud-ide-academics-class-program-term-create.component-B5sVQbaC.mjs').then(c => c.ClassProgramTermCreateComponent),
|
|
103
103
|
title: 'Create Class Program Term',
|
|
104
104
|
canActivate: [authGuard],
|
|
105
105
|
data: {
|
|
@@ -109,7 +109,7 @@ const academicsRoutes = [
|
|
|
109
109
|
},
|
|
110
110
|
{
|
|
111
111
|
path: 'program-term-management/edit/:query',
|
|
112
|
-
loadComponent: () => import('./cloud-ide-academics-class-program-term-create.component-
|
|
112
|
+
loadComponent: () => import('./cloud-ide-academics-class-program-term-create.component-B5sVQbaC.mjs').then(c => c.ClassProgramTermCreateComponent),
|
|
113
113
|
title: 'Edit Class Program Term',
|
|
114
114
|
canActivate: [authGuard],
|
|
115
115
|
data: {
|
|
@@ -119,7 +119,7 @@ const academicsRoutes = [
|
|
|
119
119
|
},
|
|
120
120
|
{
|
|
121
121
|
path: 'program-term-management/view/:query',
|
|
122
|
-
loadComponent: () => import('./cloud-ide-academics-class-program-term-create.component-
|
|
122
|
+
loadComponent: () => import('./cloud-ide-academics-class-program-term-create.component-B5sVQbaC.mjs').then(c => c.ClassProgramTermCreateComponent),
|
|
123
123
|
title: 'View Class Program Term',
|
|
124
124
|
canActivate: [authGuard],
|
|
125
125
|
data: {
|
|
@@ -512,7 +512,6 @@ class AcademicYearCreateComponent {
|
|
|
512
512
|
academicYearForm;
|
|
513
513
|
activeTab = signal('basic', ...(ngDevMode ? [{ debugName: "activeTab" }] : []));
|
|
514
514
|
loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
515
|
-
error = signal(null, ...(ngDevMode ? [{ debugName: "error" }] : []));
|
|
516
515
|
// Academic year information from route
|
|
517
516
|
academicYearId = signal('', ...(ngDevMode ? [{ debugName: "academicYearId" }] : []));
|
|
518
517
|
isEditMode = signal(false, ...(ngDevMode ? [{ debugName: "isEditMode" }] : []));
|
|
@@ -583,7 +582,6 @@ class AcademicYearCreateComponent {
|
|
|
583
582
|
*/
|
|
584
583
|
loadAcademicYearData(academicYearId) {
|
|
585
584
|
this.loading.set(true);
|
|
586
|
-
this.error.set(null);
|
|
587
585
|
const payload = {
|
|
588
586
|
acayr_id: academicYearId
|
|
589
587
|
};
|
|
@@ -598,13 +596,11 @@ class AcademicYearCreateComponent {
|
|
|
598
596
|
}
|
|
599
597
|
else {
|
|
600
598
|
console.error('❌ Failed to load academic year data');
|
|
601
|
-
this.error.set('Failed to load academic year data');
|
|
602
599
|
this.loading.set(false);
|
|
603
600
|
}
|
|
604
601
|
},
|
|
605
602
|
error: (error) => {
|
|
606
603
|
console.error('❌ Error loading academic year data:', error);
|
|
607
|
-
this.error.set('Error loading academic year data');
|
|
608
604
|
this.loading.set(false);
|
|
609
605
|
}
|
|
610
606
|
});
|
|
@@ -687,8 +683,6 @@ class AcademicYearCreateComponent {
|
|
|
687
683
|
this.activeTab.set(tab.id);
|
|
688
684
|
}
|
|
689
685
|
onSubmit() {
|
|
690
|
-
// Clear any previous errors
|
|
691
|
-
this.error.set(null);
|
|
692
686
|
if (this.academicYearForm.valid && this.validateMappings()) {
|
|
693
687
|
this.loading.set(true);
|
|
694
688
|
const formData = this.academicYearForm.value;
|
|
@@ -710,7 +704,6 @@ class AcademicYearCreateComponent {
|
|
|
710
704
|
// Check if there were any mapping errors
|
|
711
705
|
if (response.mappingErrors && response.mappingErrors.length > 0) {
|
|
712
706
|
console.warn('⚠️ Some mappings failed:', response.mappingErrors);
|
|
713
|
-
this.error.set('Academic year saved but some mappings failed. Please check the mappings.');
|
|
714
707
|
}
|
|
715
708
|
else {
|
|
716
709
|
this.goBackToAcademicYearList();
|
|
@@ -718,13 +711,11 @@ class AcademicYearCreateComponent {
|
|
|
718
711
|
}
|
|
719
712
|
else {
|
|
720
713
|
console.error('❌ Failed to save academic year');
|
|
721
|
-
this.error.set(response?.message || 'Failed to save academic year');
|
|
722
714
|
}
|
|
723
715
|
this.loading.set(false);
|
|
724
716
|
},
|
|
725
717
|
error: (error) => {
|
|
726
718
|
console.error('❌ Error saving academic year:', error);
|
|
727
|
-
this.error.set('Error saving academic year');
|
|
728
719
|
this.loading.set(false);
|
|
729
720
|
}
|
|
730
721
|
});
|
|
@@ -856,7 +847,6 @@ class AcademicYearCreateComponent {
|
|
|
856
847
|
// Check required fields
|
|
857
848
|
if (!mapping.get('acayrmp_entity_id_syen')?.value) {
|
|
858
849
|
console.warn(`Mapping ${i + 1} is missing entity selection`);
|
|
859
|
-
this.error.set(`Mapping ${i + 1} requires an entity selection`);
|
|
860
850
|
return false;
|
|
861
851
|
}
|
|
862
852
|
// Check for duplicate entity selections
|
|
@@ -864,7 +854,6 @@ class AcademicYearCreateComponent {
|
|
|
864
854
|
const duplicateIndex = this.findDuplicateEntitySelection(currentEntityId, i);
|
|
865
855
|
if (duplicateIndex !== -1) {
|
|
866
856
|
console.warn(`Mapping ${i + 1} has duplicate entity selection with mapping ${duplicateIndex + 1}`);
|
|
867
|
-
this.error.set(`Mapping ${i + 1} has duplicate entity selection with mapping ${duplicateIndex + 1}`);
|
|
868
857
|
return false;
|
|
869
858
|
}
|
|
870
859
|
}
|
|
@@ -1024,7 +1013,6 @@ class AcademicYearCreateComponent {
|
|
|
1024
1013
|
// Reset all signals to their initial state
|
|
1025
1014
|
this.activeTab.set('basic');
|
|
1026
1015
|
this.loading.set(false);
|
|
1027
|
-
this.error.set(null);
|
|
1028
1016
|
this.academicYearId.set('');
|
|
1029
1017
|
this.isEditMode.set(false);
|
|
1030
1018
|
this.originalMappings.set([]);
|
|
@@ -1059,7 +1047,7 @@ class AcademicYearCreateComponent {
|
|
|
1059
1047
|
return forkJoin(deleteObservables);
|
|
1060
1048
|
}
|
|
1061
1049
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AcademicYearCreateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1062
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: AcademicYearCreateComponent, isStandalone: true, selector: "cide-core-academic-year-create", ngImport: i0, template: "<!-- \r\n ACADEMIC YEAR MASTER FORM\r\n \r\n Enterprise-Level Styling with Tailwind CSS\r\n Features: Responsive grids, proper typography, enhanced user experience\r\n-->\r\n\r\n<div class=\"tw-w-full tw-h-full\">\r\n <form class=\"tw-w-full tw-table tw-h-full tw-bg-transparent\" [formGroup]=\"academicYearForm\" [class.tw-opacity-60]=\"loading()\"\r\n (ngSubmit)=\"onSubmit()\">\r\n\r\n <!-- Simple Header Section -->\r\n <div class=\"tw-table-row tw-w-full tw-h-0\">\r\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\r\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0\">\r\n \r\n <!-- Title -->\r\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\r\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">school</cide-ele-icon>\r\n <h5 class=\"tw-text-base tw-font-medium tw-text-gray-900 tw-m-0\">\r\n {{ isEditMode() ? 'Edit Academic Year' : 'Create Academic Year' }}\r\n </h5>\r\n </div>\r\n\r\n <!-- Actions -->\r\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0 sm:tw-space-x-3\">\r\n <!-- Back button or other actions can be added here if needed -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Tab Navigation -->\r\n <div class=\"tw-table-row tw-h-0\">\r\n <div class=\"tw-table-cell tw-w-full tw-px-2 tw-py-0\">\r\n <cide-ele-tab [tabs]=\"academicYearTabs()\" [activeTabId]=\"activeTab()\" size=\"md\" variant=\"default\"\r\n (tabChange)=\"onTabChange($event)\">\r\n </cide-ele-tab>\r\n </div>\r\n </div>\r\n\r\n <!-- Tab Content -->\r\n <div class=\"tw-table-row\">\r\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-6\">\r\n <div class=\"tw-transition-opacity tw-duration-300\" [class.tw-opacity-60]=\"loading()\">\r\n @switch (activeTab()) {\r\n\r\n @case ('basic') {\r\n <!-- Basic Academic Year Information -->\r\n <div class=\"tw-space-y-6\">\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\r\n <cide-ele-input label=\"Academic Year Code *\" formControlName=\"acayr_code\"\r\n placeholder=\"e.g., AY2024-25\" size=\"md\" leadingIcon=\"code\">\r\n </cide-ele-input>\r\n\r\n <cide-ele-input label=\"Academic Year Name *\" formControlName=\"acayr_name\"\r\n placeholder=\"e.g., Academic Year 2024-2025\" size=\"md\" leadingIcon=\"school\">\r\n </cide-ele-input>\r\n </div>\r\n\r\n <div>\r\n <cide-ele-textarea label=\"Description\" formControlName=\"acayr_description\"\r\n placeholder=\"Enter detailed description of the academic year...\"\r\n rows=\"3\" size=\"md\">\r\n </cide-ele-textarea>\r\n </div>\r\n\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\r\n <cide-ele-input label=\"From Date *\" formControlName=\"acayr_from_date\" type=\"date\" size=\"md\"\r\n leadingIcon=\"calendar_today\" id=\"acayr_from_date\">\r\n </cide-ele-input>\r\n\r\n <cide-ele-input label=\"To Date *\" formControlName=\"acayr_to_date\" type=\"date\" size=\"md\"\r\n leadingIcon=\"calendar_today\" id=\"acayr_to_date\">\r\n </cide-ele-input>\r\n </div>\r\n\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-3 tw-gap-6\">\r\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\r\n <cide-ele-input formControlName=\"acayr_isactive\" type=\"checkbox\" size=\"md\">\r\n </cide-ele-input>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Active</span>\r\n <span class=\"tw-text-xs tw-text-gray-500\">Enable/disable this academic year</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\r\n <cide-ele-input formControlName=\"acayr_iscurrent\" type=\"checkbox\" size=\"md\">\r\n </cide-ele-input>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Current</span>\r\n <span class=\"tw-text-xs tw-text-gray-500\">Mark as current academic year</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\r\n <cide-ele-input formControlName=\"acayr_islocked\" type=\"checkbox\" size=\"md\">\r\n </cide-ele-input>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Locked</span>\r\n <span class=\"tw-text-xs tw-text-gray-500\">Prevent modifications</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n @case ('mapping') {\r\n <!-- Academic Year Mapping Configuration -->\r\n <div class=\"tw-bg-gradient-to-r tw-from-blue-50 tw-to-indigo-50 tw-border tw-border-blue-200 tw-rounded-xl tw-p-6\">\r\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-6\">\r\n <div class=\"tw-flex tw-items-center tw-gap-3\">\r\n <div class=\"tw-bg-blue-100 tw-p-2 tw-rounded-lg\">\r\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-6 tw-h-6\">link</cide-ele-icon>\r\n </div>\r\n <div>\r\n <h6 class=\"tw-text-lg tw-font-semibold tw-text-blue-900 tw-m-0\">Academic Year Mapping</h6>\r\n <p class=\"tw-text-sm tw-text-blue-600 tw-m-0\">Configure entity mappings for this academic year</p>\r\n </div>\r\n </div>\r\n <button cideEleButton type=\"button\" variant=\"primary\" size=\"md\" leftIcon=\"add\"\r\n (click)=\"addAcademicYearMapping()\"\r\n class=\"tw-shadow-md hover:tw-shadow-lg tw-transition-shadow\">\r\n Add New Mapping\r\n </button>\r\n </div>\r\n \r\n @if (academicYearMappingsArray.length === 0) {\r\n <div class=\"tw-text-center tw-py-12 tw-text-gray-500\">\r\n <div class=\"tw-bg-white tw-p-4 tw-rounded-full tw-w-16 tw-h-16 tw-mx-auto tw-mb-4 tw-flex tw-items-center tw-justify-center\">\r\n <cide-ele-icon class=\"tw-w-8 tw-h-8 tw-text-gray-400\">link</cide-ele-icon>\r\n </div>\r\n <h6 class=\"tw-text-base tw-font-medium tw-text-gray-600 tw-mb-2\">No Mappings Yet</h6>\r\n <p class=\"tw-text-sm tw-text-gray-500\">Click \"Add New Mapping\" to start configuring entity relationships for this academic year.</p>\r\n </div>\r\n } @else {\r\n <div class=\"tw-space-y-4\" formArrayName=\"acayr_academic_year_mappings\">\r\n @for (mapping of academicYearMappingsArray.controls; track $index) {\r\n <div class=\"tw-bg-white tw-rounded-xl tw-border tw-border-gray-200 tw-shadow-sm hover:tw-shadow-md tw-transition-shadow tw-p-6\">\r\n <div class=\"tw-flex tw-items-start tw-justify-between tw-mb-4\">\r\n <div class=\"tw-flex tw-items-center tw-gap-2\">\r\n <div class=\"tw-bg-blue-100 tw-p-2 tw-rounded-lg\">\r\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">settings</cide-ele-icon>\r\n </div>\r\n <h6 class=\"tw-text-sm tw-font-semibold tw-text-gray-900\">Mapping #{{ $index + 1 }}</h6>\r\n </div>\r\n <button cideEleButton type=\"button\" variant=\"danger\" size=\"sm\" leftIcon=\"delete\"\r\n (click)=\"removeAcademicYearMapping($index)\"\r\n class=\"tw-opacity-80 hover:tw-opacity-100 tw-transition-opacity\">\r\n Remove\r\n </button>\r\n </div>\r\n \r\n <div class=\"tw-grid tw-grid-cols-1 lg:tw-grid-cols-2 tw-gap-4\" [formGroupName]=\"$index\">\r\n <!-- Hidden Academic Year ID field (internal use only) -->\r\n <input type=\"hidden\" formControlName=\"acayrmp_academic_year_id_acayr\">\r\n \r\n <!-- Entity Selection -->\r\n <div class=\"tw-space-y-2\">\r\n <label class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Select Entity *</label>\r\n <cide-ele-select \r\n [options]=\"entityOptions()\"\r\n formControlName=\"acayrmp_entity_id_syen\"\r\n placeholder=\"Choose entity for this mapping\" \r\n size=\"md\"\r\n valueKey=\"_id\"\r\n labelKey=\"syen_name\"\r\n class=\"tw-min-w-full\"\r\n (change)=\"onMappingEntityChange($event, $index)\">\r\n </cide-ele-select>\r\n </div>\r\n \r\n <!-- Status Controls -->\r\n <div class=\"tw-space-y-2\">\r\n <div class=\"tw-grid tw-grid-cols-1 tw-gap-3\">\r\n <div class=\"tw-flex tw-items-center tw-gap-2 tw-p-3 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\r\n <cide-ele-input \r\n formControlName=\"acayrmp_islocked\" \r\n type=\"checkbox\" \r\n size=\"sm\">\r\n </cide-ele-input>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Locked</span>\r\n <span class=\"tw-text-xs tw-text-gray-500\">Prevent modifications</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"tw-flex tw-items-center tw-gap-2 tw-p-3 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\r\n <cide-ele-input \r\n formControlName=\"acayrmp_iscurrent\" \r\n type=\"checkbox\" \r\n size=\"sm\">\r\n </cide-ele-input>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Current</span>\r\n <span class=\"tw-text-xs tw-text-gray-500\">Mark as current mapping</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Mapping Validation Messages -->\r\n @if (academicYearMappingsArray.length > 0 && !isMappingsArrayValid()) {\r\n <div class=\"tw-mt-4 tw-p-4 tw-bg-yellow-50 tw-border tw-border-yellow-200 tw-rounded-lg\">\r\n <div class=\"tw-flex tw-items-center tw-gap-2\">\r\n <cide-ele-icon variant=\"warning\" size=\"sm\">warning</cide-ele-icon>\r\n <span class=\"tw-text-sm tw-font-medium tw-text-yellow-800\">\r\n Please ensure all mappings have required fields filled in.\r\n </span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <!-- Error Display -->\r\n @if (error()) {\r\n <div class=\"tw-mt-6 tw-p-4 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-lg\">\r\n <div class=\"tw-flex tw-items-center tw-gap-2\">\r\n <cide-ele-icon variant=\"red\" size=\"sm\">error</cide-ele-icon>\r\n <span class=\"tw-text-sm tw-font-medium tw-text-red-800\">{{ error() }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- Form Actions -->\r\n <div class=\"tw-table-row tw-h-0\">\r\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-2 tw-bg-gray-50 tw-border-t tw-border-gray-200\">\r\n <div class=\"tw-flex tw-justify-end tw-gap-4\">\r\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"resetForm()\" leftIcon=\"refresh\"\r\n [disabled]=\"loading()\">\r\n Reset Form\r\n </button>\r\n\r\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"cancelForm()\" leftIcon=\"close\"\r\n [disabled]=\"loading()\">\r\n Cancel\r\n </button>\r\n\r\n <button cideEleButton type=\"submit\" variant=\"primary\" [disabled]=\"loading() || academicYearForm.invalid\"\r\n [loading]=\"loading()\" leftIcon=\"save\">\r\n {{ isEditMode() ? 'Update Academic Year' : 'Create Academic Year' }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: CideInputComponent, selector: "cide-ele-input", inputs: ["fill", "label", "labelHide", "disabled", "clearInput", "labelPlacement", "labelDir", "placeholder", "leadingIcon", "trailingIcon", "helperText", "helperTextCollapse", "hideHelperAndErrorText", "errorText", "maxlength", "minlength", "required", "autocapitalize", "autocomplete", "type", "width", "id", "ngModel", "option", "min", "max", "size"], outputs: ["ngModelChange"] }, { kind: "component", type: CideTextareaComponent, selector: "cide-ele-textarea", inputs: ["label", "labelHide", "placeholder", "helperText", "errorText", "required", "disabled", "minlength", "maxlength", "rows", "id", "ngModel", "size", "fill", "labelPlacement", "labelDir", "leadingIcon", "trailingIcon", "clearInput"], outputs: ["ngModelChange"] }, { kind: "component", type: CideEleButtonComponent, selector: "button[cideEleButton], a[cideEleButton]", 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: CideEleTabComponent, selector: "cide-ele-tab", inputs: ["tabs", "activeTabId", "size", "variant", "fullWidth", "disabled"], outputs: ["tabChange"] }, { kind: "component", type: CideIconComponent, selector: "cide-ele-icon", inputs: ["size", "type", "toolTip"] }, { kind: "component", type: CideSelectComponent, selector: "cide-ele-select", inputs: ["label", "labelHide", "placeholder", "helperText", "errorText", "required", "disabled", "id", "ngModel", "size", "fill", "labelPlacement", "labelDir", "leadingIcon", "trailingIcon", "clearInput", "options", "multiple", "searchable", "showSearchInput", "loading", "valueKey", "labelKey"], outputs: ["ngModelChange", "change", "searchChange"] }] });
|
|
1050
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: AcademicYearCreateComponent, isStandalone: true, selector: "cide-core-academic-year-create", ngImport: i0, template: "<!-- \n ACADEMIC YEAR MASTER FORM\n \n Enterprise-Level Styling with Tailwind CSS\n Features: Responsive grids, proper typography, enhanced user experience\n-->\n\n<div class=\"tw-w-full tw-h-full\">\n <form class=\"tw-w-full tw-table tw-h-full tw-bg-transparent\" [formGroup]=\"academicYearForm\" [class.tw-opacity-60]=\"loading()\"\n (ngSubmit)=\"onSubmit()\">\n\n <!-- Simple Header Section -->\n <div class=\"tw-table-row tw-w-full tw-h-0\">\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0\">\n \n <!-- Title -->\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">school</cide-ele-icon>\n <h5 class=\"tw-text-base tw-font-medium tw-text-gray-900 tw-m-0\">\n {{ isEditMode() ? 'Edit Academic Year' : 'Create Academic Year' }}\n </h5>\n </div>\n\n <!-- Actions -->\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0 sm:tw-space-x-3\">\n <!-- Back button or other actions can be added here if needed -->\n </div>\n </div>\n </div>\n </div>\n\n <!-- Tab Navigation -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-w-full tw-px-2 tw-py-0\">\n <cide-ele-tab [tabs]=\"academicYearTabs()\" [activeTabId]=\"activeTab()\" size=\"md\" variant=\"default\"\n (tabChange)=\"onTabChange($event)\">\n </cide-ele-tab>\n </div>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-6\">\n <div class=\"tw-transition-opacity tw-duration-300\" [class.tw-opacity-60]=\"loading()\">\n @switch (activeTab()) {\n\n @case ('basic') {\n <!-- Basic Academic Year Information -->\n <div class=\"tw-space-y-6\">\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\n <cide-ele-input label=\"Academic Year Code *\" formControlName=\"acayr_code\"\n placeholder=\"e.g., AY2024-25\" size=\"md\" leadingIcon=\"code\">\n </cide-ele-input>\n\n <cide-ele-input label=\"Academic Year Name *\" formControlName=\"acayr_name\"\n placeholder=\"e.g., Academic Year 2024-2025\" size=\"md\" leadingIcon=\"school\">\n </cide-ele-input>\n </div>\n\n <div>\n <cide-ele-textarea label=\"Description\" formControlName=\"acayr_description\"\n placeholder=\"Enter detailed description of the academic year...\"\n rows=\"3\" size=\"md\">\n </cide-ele-textarea>\n </div>\n\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\n <cide-ele-input label=\"From Date *\" formControlName=\"acayr_from_date\" type=\"date\" size=\"md\"\n leadingIcon=\"calendar_today\" id=\"acayr_from_date\">\n </cide-ele-input>\n\n <cide-ele-input label=\"To Date *\" formControlName=\"acayr_to_date\" type=\"date\" size=\"md\"\n leadingIcon=\"calendar_today\" id=\"acayr_to_date\">\n </cide-ele-input>\n </div>\n\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-3 tw-gap-6\">\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\n <cide-ele-input formControlName=\"acayr_isactive\" type=\"checkbox\" size=\"md\">\n </cide-ele-input>\n <div class=\"tw-flex tw-flex-col\">\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Active</span>\n <span class=\"tw-text-xs tw-text-gray-500\">Enable/disable this academic year</span>\n </div>\n </div>\n\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\n <cide-ele-input formControlName=\"acayr_iscurrent\" type=\"checkbox\" size=\"md\">\n </cide-ele-input>\n <div class=\"tw-flex tw-flex-col\">\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Current</span>\n <span class=\"tw-text-xs tw-text-gray-500\">Mark as current academic year</span>\n </div>\n </div>\n\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\n <cide-ele-input formControlName=\"acayr_islocked\" type=\"checkbox\" size=\"md\">\n </cide-ele-input>\n <div class=\"tw-flex tw-flex-col\">\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Locked</span>\n <span class=\"tw-text-xs tw-text-gray-500\">Prevent modifications</span>\n </div>\n </div>\n </div>\n </div>\n }\n\n @case ('mapping') {\n <!-- Academic Year Mapping Configuration -->\n <div class=\"tw-bg-gradient-to-r tw-from-blue-50 tw-to-indigo-50 tw-border tw-border-blue-200 tw-rounded-xl tw-p-6\">\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-6\">\n <div class=\"tw-flex tw-items-center tw-gap-3\">\n <div class=\"tw-bg-blue-100 tw-p-2 tw-rounded-lg\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-6 tw-h-6\">link</cide-ele-icon>\n </div>\n <div>\n <h6 class=\"tw-text-lg tw-font-semibold tw-text-blue-900 tw-m-0\">Academic Year Mapping</h6>\n <p class=\"tw-text-sm tw-text-blue-600 tw-m-0\">Configure entity mappings for this academic year</p>\n </div>\n </div>\n <button cideEleButton type=\"button\" variant=\"primary\" size=\"md\" leftIcon=\"add\"\n (click)=\"addAcademicYearMapping()\"\n class=\"tw-shadow-md hover:tw-shadow-lg tw-transition-shadow\">\n Add New Mapping\n </button>\n </div>\n \n @if (academicYearMappingsArray.length === 0) {\n <div class=\"tw-text-center tw-py-12 tw-text-gray-500\">\n <div class=\"tw-bg-white tw-p-4 tw-rounded-full tw-w-16 tw-h-16 tw-mx-auto tw-mb-4 tw-flex tw-items-center tw-justify-center\">\n <cide-ele-icon class=\"tw-w-8 tw-h-8 tw-text-gray-400\">link</cide-ele-icon>\n </div>\n <h6 class=\"tw-text-base tw-font-medium tw-text-gray-600 tw-mb-2\">No Mappings Yet</h6>\n <p class=\"tw-text-sm tw-text-gray-500\">Click \"Add New Mapping\" to start configuring entity relationships for this academic year.</p>\n </div>\n } @else {\n <div class=\"tw-space-y-4\" formArrayName=\"acayr_academic_year_mappings\">\n @for (mapping of academicYearMappingsArray.controls; track $index) {\n <div class=\"tw-bg-white tw-rounded-xl tw-border tw-border-gray-200 tw-shadow-sm hover:tw-shadow-md tw-transition-shadow tw-p-6\">\n <div class=\"tw-flex tw-items-start tw-justify-between tw-mb-4\">\n <div class=\"tw-flex tw-items-center tw-gap-2\">\n <div class=\"tw-bg-blue-100 tw-p-2 tw-rounded-lg\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">settings</cide-ele-icon>\n </div>\n <h6 class=\"tw-text-sm tw-font-semibold tw-text-gray-900\">Mapping #{{ $index + 1 }}</h6>\n </div>\n <button cideEleButton type=\"button\" variant=\"danger\" size=\"sm\" leftIcon=\"delete\"\n (click)=\"removeAcademicYearMapping($index)\"\n class=\"tw-opacity-80 hover:tw-opacity-100 tw-transition-opacity\">\n Remove\n </button>\n </div>\n \n <div class=\"tw-grid tw-grid-cols-1 lg:tw-grid-cols-2 tw-gap-4\" [formGroupName]=\"$index\">\n <!-- Hidden Academic Year ID field (internal use only) -->\n <input type=\"hidden\" formControlName=\"acayrmp_academic_year_id_acayr\">\n \n <!-- Entity Selection -->\n <div class=\"tw-space-y-2\">\n <label class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Select Entity *</label>\n <cide-ele-select \n [options]=\"entityOptions()\"\n formControlName=\"acayrmp_entity_id_syen\"\n placeholder=\"Choose entity for this mapping\" \n size=\"md\"\n valueKey=\"_id\"\n labelKey=\"syen_name\"\n class=\"tw-min-w-full\"\n (change)=\"onMappingEntityChange($event, $index)\">\n </cide-ele-select>\n </div>\n \n <!-- Status Controls -->\n <div class=\"tw-space-y-2\">\n <div class=\"tw-grid tw-grid-cols-1 tw-gap-3\">\n <div class=\"tw-flex tw-items-center tw-gap-2 tw-p-3 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\n <cide-ele-input \n formControlName=\"acayrmp_islocked\" \n type=\"checkbox\" \n size=\"sm\">\n </cide-ele-input>\n <div class=\"tw-flex tw-flex-col\">\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Locked</span>\n <span class=\"tw-text-xs tw-text-gray-500\">Prevent modifications</span>\n </div>\n </div>\n \n <div class=\"tw-flex tw-items-center tw-gap-2 tw-p-3 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\n <cide-ele-input \n formControlName=\"acayrmp_iscurrent\" \n type=\"checkbox\" \n size=\"sm\">\n </cide-ele-input>\n <div class=\"tw-flex tw-flex-col\">\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Current</span>\n <span class=\"tw-text-xs tw-text-gray-500\">Mark as current mapping</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Mapping Validation Messages -->\n @if (academicYearMappingsArray.length > 0 && !isMappingsArrayValid()) {\n <div class=\"tw-mt-4 tw-p-4 tw-bg-yellow-50 tw-border tw-border-yellow-200 tw-rounded-lg\">\n <div class=\"tw-flex tw-items-center tw-gap-2\">\n <cide-ele-icon variant=\"warning\" size=\"sm\">warning</cide-ele-icon>\n <span class=\"tw-text-sm tw-font-medium tw-text-yellow-800\">\n Please ensure all mappings have required fields filled in.\n </span>\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n </div>\n\n <!-- Form Actions -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-2 tw-bg-gray-50 tw-border-t tw-border-gray-200\">\n <div class=\"tw-flex tw-justify-between tw-items-center tw-gap-4\">\n <!-- Form Validation Errors -->\n <cide-form-field-error [formGroup]=\"academicYearForm\"></cide-form-field-error>\n \n <!-- Action Buttons -->\n <div class=\"tw-flex tw-justify-end tw-gap-4\">\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"resetForm()\" leftIcon=\"refresh\"\n [disabled]=\"loading()\">\n Reset Form\n </button>\n\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"cancelForm()\" leftIcon=\"close\"\n [disabled]=\"loading()\">\n Cancel\n </button>\n\n <button cideEleButton type=\"submit\" variant=\"primary\" [disabled]=\"loading() || academicYearForm.invalid\"\n [loading]=\"loading()\" leftIcon=\"save\">\n {{ isEditMode() ? 'Update Academic Year' : 'Create Academic Year' }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </form>\n </div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: CideInputComponent, selector: "cide-ele-input", inputs: ["fill", "label", "labelHide", "disabled", "clearInput", "labelPlacement", "labelDir", "placeholder", "leadingIcon", "trailingIcon", "helperText", "helperTextCollapse", "hideHelperAndErrorText", "errorText", "maxlength", "minlength", "required", "autocapitalize", "autocomplete", "type", "width", "id", "ngModel", "option", "min", "max", "size"], outputs: ["ngModelChange"] }, { kind: "component", type: CideTextareaComponent, selector: "cide-ele-textarea", inputs: ["label", "labelHide", "placeholder", "helperText", "errorText", "required", "disabled", "minlength", "maxlength", "rows", "id", "ngModel", "size", "fill", "labelPlacement", "labelDir", "leadingIcon", "trailingIcon", "clearInput"], outputs: ["ngModelChange"] }, { kind: "component", type: CideEleButtonComponent, selector: "button[cideEleButton], a[cideEleButton]", 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: CideEleTabComponent, selector: "cide-ele-tab", inputs: ["tabs", "activeTabId", "size", "variant", "fullWidth", "disabled"], outputs: ["tabChange"] }, { kind: "component", type: CideIconComponent, selector: "cide-ele-icon", inputs: ["size", "type", "toolTip"] }, { kind: "component", type: CideSelectComponent, selector: "cide-ele-select", inputs: ["label", "labelHide", "placeholder", "helperText", "errorText", "required", "disabled", "id", "ngModel", "size", "fill", "labelPlacement", "labelDir", "leadingIcon", "trailingIcon", "clearInput", "options", "multiple", "searchable", "showSearchInput", "loading", "valueKey", "labelKey"], outputs: ["ngModelChange", "change", "searchChange"] }, { kind: "component", type: CideFormFieldErrorComponent, selector: "cide-form-field-error", inputs: ["control", "formGroup", "fieldName", "customMessages"] }] });
|
|
1063
1051
|
}
|
|
1064
1052
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AcademicYearCreateComponent, decorators: [{
|
|
1065
1053
|
type: Component,
|
|
@@ -1071,8 +1059,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
|
|
|
1071
1059
|
CideEleButtonComponent,
|
|
1072
1060
|
CideEleTabComponent,
|
|
1073
1061
|
CideIconComponent,
|
|
1074
|
-
CideSelectComponent
|
|
1075
|
-
], template: "<!-- \r\n ACADEMIC YEAR MASTER FORM\r\n \r\n Enterprise-Level Styling with Tailwind CSS\r\n Features: Responsive grids, proper typography, enhanced user experience\r\n-->\r\n\r\n<div class=\"tw-w-full tw-h-full\">\r\n <form class=\"tw-w-full tw-table tw-h-full tw-bg-transparent\" [formGroup]=\"academicYearForm\" [class.tw-opacity-60]=\"loading()\"\r\n (ngSubmit)=\"onSubmit()\">\r\n\r\n <!-- Simple Header Section -->\r\n <div class=\"tw-table-row tw-w-full tw-h-0\">\r\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\r\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0\">\r\n \r\n <!-- Title -->\r\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\r\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">school</cide-ele-icon>\r\n <h5 class=\"tw-text-base tw-font-medium tw-text-gray-900 tw-m-0\">\r\n {{ isEditMode() ? 'Edit Academic Year' : 'Create Academic Year' }}\r\n </h5>\r\n </div>\r\n\r\n <!-- Actions -->\r\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0 sm:tw-space-x-3\">\r\n <!-- Back button or other actions can be added here if needed -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Tab Navigation -->\r\n <div class=\"tw-table-row tw-h-0\">\r\n <div class=\"tw-table-cell tw-w-full tw-px-2 tw-py-0\">\r\n <cide-ele-tab [tabs]=\"academicYearTabs()\" [activeTabId]=\"activeTab()\" size=\"md\" variant=\"default\"\r\n (tabChange)=\"onTabChange($event)\">\r\n </cide-ele-tab>\r\n </div>\r\n </div>\r\n\r\n <!-- Tab Content -->\r\n <div class=\"tw-table-row\">\r\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-6\">\r\n <div class=\"tw-transition-opacity tw-duration-300\" [class.tw-opacity-60]=\"loading()\">\r\n @switch (activeTab()) {\r\n\r\n @case ('basic') {\r\n <!-- Basic Academic Year Information -->\r\n <div class=\"tw-space-y-6\">\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\r\n <cide-ele-input label=\"Academic Year Code *\" formControlName=\"acayr_code\"\r\n placeholder=\"e.g., AY2024-25\" size=\"md\" leadingIcon=\"code\">\r\n </cide-ele-input>\r\n\r\n <cide-ele-input label=\"Academic Year Name *\" formControlName=\"acayr_name\"\r\n placeholder=\"e.g., Academic Year 2024-2025\" size=\"md\" leadingIcon=\"school\">\r\n </cide-ele-input>\r\n </div>\r\n\r\n <div>\r\n <cide-ele-textarea label=\"Description\" formControlName=\"acayr_description\"\r\n placeholder=\"Enter detailed description of the academic year...\"\r\n rows=\"3\" size=\"md\">\r\n </cide-ele-textarea>\r\n </div>\r\n\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\r\n <cide-ele-input label=\"From Date *\" formControlName=\"acayr_from_date\" type=\"date\" size=\"md\"\r\n leadingIcon=\"calendar_today\" id=\"acayr_from_date\">\r\n </cide-ele-input>\r\n\r\n <cide-ele-input label=\"To Date *\" formControlName=\"acayr_to_date\" type=\"date\" size=\"md\"\r\n leadingIcon=\"calendar_today\" id=\"acayr_to_date\">\r\n </cide-ele-input>\r\n </div>\r\n\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-3 tw-gap-6\">\r\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\r\n <cide-ele-input formControlName=\"acayr_isactive\" type=\"checkbox\" size=\"md\">\r\n </cide-ele-input>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Active</span>\r\n <span class=\"tw-text-xs tw-text-gray-500\">Enable/disable this academic year</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\r\n <cide-ele-input formControlName=\"acayr_iscurrent\" type=\"checkbox\" size=\"md\">\r\n </cide-ele-input>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Current</span>\r\n <span class=\"tw-text-xs tw-text-gray-500\">Mark as current academic year</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\r\n <cide-ele-input formControlName=\"acayr_islocked\" type=\"checkbox\" size=\"md\">\r\n </cide-ele-input>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Locked</span>\r\n <span class=\"tw-text-xs tw-text-gray-500\">Prevent modifications</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n @case ('mapping') {\r\n <!-- Academic Year Mapping Configuration -->\r\n <div class=\"tw-bg-gradient-to-r tw-from-blue-50 tw-to-indigo-50 tw-border tw-border-blue-200 tw-rounded-xl tw-p-6\">\r\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-6\">\r\n <div class=\"tw-flex tw-items-center tw-gap-3\">\r\n <div class=\"tw-bg-blue-100 tw-p-2 tw-rounded-lg\">\r\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-6 tw-h-6\">link</cide-ele-icon>\r\n </div>\r\n <div>\r\n <h6 class=\"tw-text-lg tw-font-semibold tw-text-blue-900 tw-m-0\">Academic Year Mapping</h6>\r\n <p class=\"tw-text-sm tw-text-blue-600 tw-m-0\">Configure entity mappings for this academic year</p>\r\n </div>\r\n </div>\r\n <button cideEleButton type=\"button\" variant=\"primary\" size=\"md\" leftIcon=\"add\"\r\n (click)=\"addAcademicYearMapping()\"\r\n class=\"tw-shadow-md hover:tw-shadow-lg tw-transition-shadow\">\r\n Add New Mapping\r\n </button>\r\n </div>\r\n \r\n @if (academicYearMappingsArray.length === 0) {\r\n <div class=\"tw-text-center tw-py-12 tw-text-gray-500\">\r\n <div class=\"tw-bg-white tw-p-4 tw-rounded-full tw-w-16 tw-h-16 tw-mx-auto tw-mb-4 tw-flex tw-items-center tw-justify-center\">\r\n <cide-ele-icon class=\"tw-w-8 tw-h-8 tw-text-gray-400\">link</cide-ele-icon>\r\n </div>\r\n <h6 class=\"tw-text-base tw-font-medium tw-text-gray-600 tw-mb-2\">No Mappings Yet</h6>\r\n <p class=\"tw-text-sm tw-text-gray-500\">Click \"Add New Mapping\" to start configuring entity relationships for this academic year.</p>\r\n </div>\r\n } @else {\r\n <div class=\"tw-space-y-4\" formArrayName=\"acayr_academic_year_mappings\">\r\n @for (mapping of academicYearMappingsArray.controls; track $index) {\r\n <div class=\"tw-bg-white tw-rounded-xl tw-border tw-border-gray-200 tw-shadow-sm hover:tw-shadow-md tw-transition-shadow tw-p-6\">\r\n <div class=\"tw-flex tw-items-start tw-justify-between tw-mb-4\">\r\n <div class=\"tw-flex tw-items-center tw-gap-2\">\r\n <div class=\"tw-bg-blue-100 tw-p-2 tw-rounded-lg\">\r\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">settings</cide-ele-icon>\r\n </div>\r\n <h6 class=\"tw-text-sm tw-font-semibold tw-text-gray-900\">Mapping #{{ $index + 1 }}</h6>\r\n </div>\r\n <button cideEleButton type=\"button\" variant=\"danger\" size=\"sm\" leftIcon=\"delete\"\r\n (click)=\"removeAcademicYearMapping($index)\"\r\n class=\"tw-opacity-80 hover:tw-opacity-100 tw-transition-opacity\">\r\n Remove\r\n </button>\r\n </div>\r\n \r\n <div class=\"tw-grid tw-grid-cols-1 lg:tw-grid-cols-2 tw-gap-4\" [formGroupName]=\"$index\">\r\n <!-- Hidden Academic Year ID field (internal use only) -->\r\n <input type=\"hidden\" formControlName=\"acayrmp_academic_year_id_acayr\">\r\n \r\n <!-- Entity Selection -->\r\n <div class=\"tw-space-y-2\">\r\n <label class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Select Entity *</label>\r\n <cide-ele-select \r\n [options]=\"entityOptions()\"\r\n formControlName=\"acayrmp_entity_id_syen\"\r\n placeholder=\"Choose entity for this mapping\" \r\n size=\"md\"\r\n valueKey=\"_id\"\r\n labelKey=\"syen_name\"\r\n class=\"tw-min-w-full\"\r\n (change)=\"onMappingEntityChange($event, $index)\">\r\n </cide-ele-select>\r\n </div>\r\n \r\n <!-- Status Controls -->\r\n <div class=\"tw-space-y-2\">\r\n <div class=\"tw-grid tw-grid-cols-1 tw-gap-3\">\r\n <div class=\"tw-flex tw-items-center tw-gap-2 tw-p-3 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\r\n <cide-ele-input \r\n formControlName=\"acayrmp_islocked\" \r\n type=\"checkbox\" \r\n size=\"sm\">\r\n </cide-ele-input>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Locked</span>\r\n <span class=\"tw-text-xs tw-text-gray-500\">Prevent modifications</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"tw-flex tw-items-center tw-gap-2 tw-p-3 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\r\n <cide-ele-input \r\n formControlName=\"acayrmp_iscurrent\" \r\n type=\"checkbox\" \r\n size=\"sm\">\r\n </cide-ele-input>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Current</span>\r\n <span class=\"tw-text-xs tw-text-gray-500\">Mark as current mapping</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Mapping Validation Messages -->\r\n @if (academicYearMappingsArray.length > 0 && !isMappingsArrayValid()) {\r\n <div class=\"tw-mt-4 tw-p-4 tw-bg-yellow-50 tw-border tw-border-yellow-200 tw-rounded-lg\">\r\n <div class=\"tw-flex tw-items-center tw-gap-2\">\r\n <cide-ele-icon variant=\"warning\" size=\"sm\">warning</cide-ele-icon>\r\n <span class=\"tw-text-sm tw-font-medium tw-text-yellow-800\">\r\n Please ensure all mappings have required fields filled in.\r\n </span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <!-- Error Display -->\r\n @if (error()) {\r\n <div class=\"tw-mt-6 tw-p-4 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-lg\">\r\n <div class=\"tw-flex tw-items-center tw-gap-2\">\r\n <cide-ele-icon variant=\"red\" size=\"sm\">error</cide-ele-icon>\r\n <span class=\"tw-text-sm tw-font-medium tw-text-red-800\">{{ error() }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- Form Actions -->\r\n <div class=\"tw-table-row tw-h-0\">\r\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-2 tw-bg-gray-50 tw-border-t tw-border-gray-200\">\r\n <div class=\"tw-flex tw-justify-end tw-gap-4\">\r\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"resetForm()\" leftIcon=\"refresh\"\r\n [disabled]=\"loading()\">\r\n Reset Form\r\n </button>\r\n\r\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"cancelForm()\" leftIcon=\"close\"\r\n [disabled]=\"loading()\">\r\n Cancel\r\n </button>\r\n\r\n <button cideEleButton type=\"submit\" variant=\"primary\" [disabled]=\"loading() || academicYearForm.invalid\"\r\n [loading]=\"loading()\" leftIcon=\"save\">\r\n {{ isEditMode() ? 'Update Academic Year' : 'Create Academic Year' }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>" }]
|
|
1062
|
+
CideSelectComponent,
|
|
1063
|
+
CideFormFieldErrorComponent
|
|
1064
|
+
], template: "<!-- \n ACADEMIC YEAR MASTER FORM\n \n Enterprise-Level Styling with Tailwind CSS\n Features: Responsive grids, proper typography, enhanced user experience\n-->\n\n<div class=\"tw-w-full tw-h-full\">\n <form class=\"tw-w-full tw-table tw-h-full tw-bg-transparent\" [formGroup]=\"academicYearForm\" [class.tw-opacity-60]=\"loading()\"\n (ngSubmit)=\"onSubmit()\">\n\n <!-- Simple Header Section -->\n <div class=\"tw-table-row tw-w-full tw-h-0\">\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0\">\n \n <!-- Title -->\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">school</cide-ele-icon>\n <h5 class=\"tw-text-base tw-font-medium tw-text-gray-900 tw-m-0\">\n {{ isEditMode() ? 'Edit Academic Year' : 'Create Academic Year' }}\n </h5>\n </div>\n\n <!-- Actions -->\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0 sm:tw-space-x-3\">\n <!-- Back button or other actions can be added here if needed -->\n </div>\n </div>\n </div>\n </div>\n\n <!-- Tab Navigation -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-w-full tw-px-2 tw-py-0\">\n <cide-ele-tab [tabs]=\"academicYearTabs()\" [activeTabId]=\"activeTab()\" size=\"md\" variant=\"default\"\n (tabChange)=\"onTabChange($event)\">\n </cide-ele-tab>\n </div>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-6\">\n <div class=\"tw-transition-opacity tw-duration-300\" [class.tw-opacity-60]=\"loading()\">\n @switch (activeTab()) {\n\n @case ('basic') {\n <!-- Basic Academic Year Information -->\n <div class=\"tw-space-y-6\">\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\n <cide-ele-input label=\"Academic Year Code *\" formControlName=\"acayr_code\"\n placeholder=\"e.g., AY2024-25\" size=\"md\" leadingIcon=\"code\">\n </cide-ele-input>\n\n <cide-ele-input label=\"Academic Year Name *\" formControlName=\"acayr_name\"\n placeholder=\"e.g., Academic Year 2024-2025\" size=\"md\" leadingIcon=\"school\">\n </cide-ele-input>\n </div>\n\n <div>\n <cide-ele-textarea label=\"Description\" formControlName=\"acayr_description\"\n placeholder=\"Enter detailed description of the academic year...\"\n rows=\"3\" size=\"md\">\n </cide-ele-textarea>\n </div>\n\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\n <cide-ele-input label=\"From Date *\" formControlName=\"acayr_from_date\" type=\"date\" size=\"md\"\n leadingIcon=\"calendar_today\" id=\"acayr_from_date\">\n </cide-ele-input>\n\n <cide-ele-input label=\"To Date *\" formControlName=\"acayr_to_date\" type=\"date\" size=\"md\"\n leadingIcon=\"calendar_today\" id=\"acayr_to_date\">\n </cide-ele-input>\n </div>\n\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-3 tw-gap-6\">\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\n <cide-ele-input formControlName=\"acayr_isactive\" type=\"checkbox\" size=\"md\">\n </cide-ele-input>\n <div class=\"tw-flex tw-flex-col\">\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Active</span>\n <span class=\"tw-text-xs tw-text-gray-500\">Enable/disable this academic year</span>\n </div>\n </div>\n\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\n <cide-ele-input formControlName=\"acayr_iscurrent\" type=\"checkbox\" size=\"md\">\n </cide-ele-input>\n <div class=\"tw-flex tw-flex-col\">\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Current</span>\n <span class=\"tw-text-xs tw-text-gray-500\">Mark as current academic year</span>\n </div>\n </div>\n\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\n <cide-ele-input formControlName=\"acayr_islocked\" type=\"checkbox\" size=\"md\">\n </cide-ele-input>\n <div class=\"tw-flex tw-flex-col\">\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Locked</span>\n <span class=\"tw-text-xs tw-text-gray-500\">Prevent modifications</span>\n </div>\n </div>\n </div>\n </div>\n }\n\n @case ('mapping') {\n <!-- Academic Year Mapping Configuration -->\n <div class=\"tw-bg-gradient-to-r tw-from-blue-50 tw-to-indigo-50 tw-border tw-border-blue-200 tw-rounded-xl tw-p-6\">\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-6\">\n <div class=\"tw-flex tw-items-center tw-gap-3\">\n <div class=\"tw-bg-blue-100 tw-p-2 tw-rounded-lg\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-6 tw-h-6\">link</cide-ele-icon>\n </div>\n <div>\n <h6 class=\"tw-text-lg tw-font-semibold tw-text-blue-900 tw-m-0\">Academic Year Mapping</h6>\n <p class=\"tw-text-sm tw-text-blue-600 tw-m-0\">Configure entity mappings for this academic year</p>\n </div>\n </div>\n <button cideEleButton type=\"button\" variant=\"primary\" size=\"md\" leftIcon=\"add\"\n (click)=\"addAcademicYearMapping()\"\n class=\"tw-shadow-md hover:tw-shadow-lg tw-transition-shadow\">\n Add New Mapping\n </button>\n </div>\n \n @if (academicYearMappingsArray.length === 0) {\n <div class=\"tw-text-center tw-py-12 tw-text-gray-500\">\n <div class=\"tw-bg-white tw-p-4 tw-rounded-full tw-w-16 tw-h-16 tw-mx-auto tw-mb-4 tw-flex tw-items-center tw-justify-center\">\n <cide-ele-icon class=\"tw-w-8 tw-h-8 tw-text-gray-400\">link</cide-ele-icon>\n </div>\n <h6 class=\"tw-text-base tw-font-medium tw-text-gray-600 tw-mb-2\">No Mappings Yet</h6>\n <p class=\"tw-text-sm tw-text-gray-500\">Click \"Add New Mapping\" to start configuring entity relationships for this academic year.</p>\n </div>\n } @else {\n <div class=\"tw-space-y-4\" formArrayName=\"acayr_academic_year_mappings\">\n @for (mapping of academicYearMappingsArray.controls; track $index) {\n <div class=\"tw-bg-white tw-rounded-xl tw-border tw-border-gray-200 tw-shadow-sm hover:tw-shadow-md tw-transition-shadow tw-p-6\">\n <div class=\"tw-flex tw-items-start tw-justify-between tw-mb-4\">\n <div class=\"tw-flex tw-items-center tw-gap-2\">\n <div class=\"tw-bg-blue-100 tw-p-2 tw-rounded-lg\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">settings</cide-ele-icon>\n </div>\n <h6 class=\"tw-text-sm tw-font-semibold tw-text-gray-900\">Mapping #{{ $index + 1 }}</h6>\n </div>\n <button cideEleButton type=\"button\" variant=\"danger\" size=\"sm\" leftIcon=\"delete\"\n (click)=\"removeAcademicYearMapping($index)\"\n class=\"tw-opacity-80 hover:tw-opacity-100 tw-transition-opacity\">\n Remove\n </button>\n </div>\n \n <div class=\"tw-grid tw-grid-cols-1 lg:tw-grid-cols-2 tw-gap-4\" [formGroupName]=\"$index\">\n <!-- Hidden Academic Year ID field (internal use only) -->\n <input type=\"hidden\" formControlName=\"acayrmp_academic_year_id_acayr\">\n \n <!-- Entity Selection -->\n <div class=\"tw-space-y-2\">\n <label class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Select Entity *</label>\n <cide-ele-select \n [options]=\"entityOptions()\"\n formControlName=\"acayrmp_entity_id_syen\"\n placeholder=\"Choose entity for this mapping\" \n size=\"md\"\n valueKey=\"_id\"\n labelKey=\"syen_name\"\n class=\"tw-min-w-full\"\n (change)=\"onMappingEntityChange($event, $index)\">\n </cide-ele-select>\n </div>\n \n <!-- Status Controls -->\n <div class=\"tw-space-y-2\">\n <div class=\"tw-grid tw-grid-cols-1 tw-gap-3\">\n <div class=\"tw-flex tw-items-center tw-gap-2 tw-p-3 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\n <cide-ele-input \n formControlName=\"acayrmp_islocked\" \n type=\"checkbox\" \n size=\"sm\">\n </cide-ele-input>\n <div class=\"tw-flex tw-flex-col\">\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Locked</span>\n <span class=\"tw-text-xs tw-text-gray-500\">Prevent modifications</span>\n </div>\n </div>\n \n <div class=\"tw-flex tw-items-center tw-gap-2 tw-p-3 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\n <cide-ele-input \n formControlName=\"acayrmp_iscurrent\" \n type=\"checkbox\" \n size=\"sm\">\n </cide-ele-input>\n <div class=\"tw-flex tw-flex-col\">\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Current</span>\n <span class=\"tw-text-xs tw-text-gray-500\">Mark as current mapping</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Mapping Validation Messages -->\n @if (academicYearMappingsArray.length > 0 && !isMappingsArrayValid()) {\n <div class=\"tw-mt-4 tw-p-4 tw-bg-yellow-50 tw-border tw-border-yellow-200 tw-rounded-lg\">\n <div class=\"tw-flex tw-items-center tw-gap-2\">\n <cide-ele-icon variant=\"warning\" size=\"sm\">warning</cide-ele-icon>\n <span class=\"tw-text-sm tw-font-medium tw-text-yellow-800\">\n Please ensure all mappings have required fields filled in.\n </span>\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n </div>\n\n <!-- Form Actions -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-2 tw-bg-gray-50 tw-border-t tw-border-gray-200\">\n <div class=\"tw-flex tw-justify-between tw-items-center tw-gap-4\">\n <!-- Form Validation Errors -->\n <cide-form-field-error [formGroup]=\"academicYearForm\"></cide-form-field-error>\n \n <!-- Action Buttons -->\n <div class=\"tw-flex tw-justify-end tw-gap-4\">\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"resetForm()\" leftIcon=\"refresh\"\n [disabled]=\"loading()\">\n Reset Form\n </button>\n\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"cancelForm()\" leftIcon=\"close\"\n [disabled]=\"loading()\">\n Cancel\n </button>\n\n <button cideEleButton type=\"submit\" variant=\"primary\" [disabled]=\"loading() || academicYearForm.invalid\"\n [loading]=\"loading()\" leftIcon=\"save\">\n {{ isEditMode() ? 'Update Academic Year' : 'Create Academic Year' }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </form>\n </div>" }]
|
|
1076
1065
|
}], ctorParameters: () => [] });
|
|
1077
1066
|
|
|
1078
1067
|
var academicYearCreate_component = /*#__PURE__*/Object.freeze({
|
|
@@ -2799,4 +2788,4 @@ var classProgramBranchForm_component = /*#__PURE__*/Object.freeze({
|
|
|
2799
2788
|
*/
|
|
2800
2789
|
|
|
2801
2790
|
export { AcademicYearCreateComponent as A, CideLytProgramClassService as C, CideLytAcademicYearService as a, CideLytClassProgramBranchService as b, academicsRoutes as c, AcademicYearListComponent as d, CideLytAcademicYearMappingService as e, CideLytClassProgramBranchListComponent as f, CideLytClassProgramBranchFormComponent as g };
|
|
2802
|
-
//# sourceMappingURL=cloud-ide-academics-cloud-ide-academics-
|
|
2791
|
+
//# sourceMappingURL=cloud-ide-academics-cloud-ide-academics-Czexp3pk.mjs.map
|