@eeplatform/nuxt-layer-common 1.7.23 → 1.7.25

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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @eeplatform/nuxt-layer-common
2
2
 
3
+ ## 1.7.25
4
+
5
+ ### Patch Changes
6
+
7
+ - 94e6f98: Fix get grade level query
8
+
9
+ ## 1.7.24
10
+
11
+ ### Patch Changes
12
+
13
+ - ed7b645: Restrict last grade and school year options
14
+
3
15
  ## 1.7.23
4
16
 
5
17
  ### Patch Changes
@@ -715,10 +715,24 @@
715
715
  required
716
716
  />
717
717
  <v-col cols="12">
718
- <v-text-field
718
+ <v-combobox
719
719
  v-model="enrollment.address.current.municipalityCity"
720
720
  :rules="[requiredRule]"
721
- ></v-text-field>
721
+ :items="citiesMunicipalities"
722
+ item-title="name"
723
+ item-value="name"
724
+ :hide-no-data="false"
725
+ >
726
+ <template v-slot:no-data>
727
+ <v-list-item>
728
+ <v-list-item-title>
729
+ No results matching "<strong>search</strong>".
730
+ Press
731
+ <kbd>enter</kbd> to create a new one
732
+ </v-list-item-title>
733
+ </v-list-item>
734
+ </template>
735
+ </v-combobox>
722
736
  </v-col>
723
737
  </v-row>
724
738
  </v-col>
@@ -731,10 +745,24 @@
731
745
  required
732
746
  />
733
747
  <v-col cols="12">
734
- <v-text-field
748
+ <v-combobox
735
749
  v-model="enrollment.address.current.province"
736
750
  :rules="[requiredRule]"
737
- ></v-text-field>
751
+ :items="provinces"
752
+ item-title="name"
753
+ item-value="name"
754
+ :hide-no-data="false"
755
+ >
756
+ <template v-slot:no-data>
757
+ <v-list-item>
758
+ <v-list-item-title>
759
+ No results matching "<strong>search</strong>".
760
+ Press
761
+ <kbd>enter</kbd> to create a new one
762
+ </v-list-item-title>
763
+ </v-list-item>
764
+ </template>
765
+ </v-combobox>
738
766
  </v-col>
739
767
  </v-row>
740
768
  </v-col>
@@ -750,6 +778,7 @@
750
778
  <v-text-field
751
779
  v-model="enrollment.address.current.country"
752
780
  :rules="[requiredRule]"
781
+ readonly
753
782
  ></v-text-field>
754
783
  </v-col>
755
784
  </v-row>
@@ -847,11 +876,25 @@
847
876
  required
848
877
  />
849
878
  <v-col cols="12">
850
- <v-text-field
879
+ <v-combobox
851
880
  v-model="enrollment.address.permanent.municipalityCity"
852
881
  :rules="[requiredRule]"
853
882
  :readonly="sameAsCurrentAddress"
854
- ></v-text-field>
883
+ :items="citiesMunicipalities"
884
+ item-title="name"
885
+ item-value="name"
886
+ :hide-no-data="false"
887
+ >
888
+ <template v-slot:no-data>
889
+ <v-list-item>
890
+ <v-list-item-title>
891
+ No results matching "<strong>search</strong>".
892
+ Press
893
+ <kbd>enter</kbd> to create a new one
894
+ </v-list-item-title>
895
+ </v-list-item>
896
+ </template>
897
+ </v-combobox>
855
898
  </v-col>
856
899
  </v-row>
857
900
  </v-col>
@@ -864,11 +907,25 @@
864
907
  required
865
908
  />
866
909
  <v-col cols="12">
867
- <v-text-field
910
+ <v-combobox
868
911
  v-model="enrollment.address.permanent.province"
869
912
  :rules="[requiredRule]"
870
913
  :readonly="sameAsCurrentAddress"
871
- ></v-text-field>
914
+ :items="provinces"
915
+ item-title="name"
916
+ item-value="name"
917
+ :hide-no-data="false"
918
+ >
919
+ <template v-slot:no-data>
920
+ <v-list-item>
921
+ <v-list-item-title>
922
+ No results matching "<strong>search</strong>".
923
+ Press
924
+ <kbd>enter</kbd> to create a new one
925
+ </v-list-item-title>
926
+ </v-list-item>
927
+ </template>
928
+ </v-combobox>
872
929
  </v-col>
873
930
  </v-row>
874
931
  </v-col>
@@ -1276,15 +1333,15 @@
1276
1333
  <InputLabel
1277
1334
  class="text-capitalize"
1278
1335
  title="Last Grade Level Completed"
1279
- required
1336
+ :required="!isKindergarten"
1280
1337
  />
1281
1338
  <v-col cols="12">
1282
1339
  <v-autocomplete
1283
1340
  v-model="
1284
1341
  enrollment.returningLearnerInfo.lastGradeLevelCompleted
1285
1342
  "
1286
- :rules="[requiredRule]"
1287
- :items="gradeLevels"
1343
+ :rules="isKindergarten ? [] : [requiredRule]"
1344
+ :items="allowedLastGradeLevels"
1288
1345
  ></v-autocomplete>
1289
1346
  </v-col>
1290
1347
  </v-row>
@@ -1295,14 +1352,14 @@
1295
1352
  <InputLabel
1296
1353
  class="text-capitalize"
1297
1354
  title="Last School Year Completed"
1298
- required
1355
+ :required="!isKindergarten"
1299
1356
  />
1300
1357
  <v-col cols="12">
1301
1358
  <v-autocomplete
1302
1359
  v-model="
1303
1360
  enrollment.returningLearnerInfo.lastSchoolYearCompleted
1304
1361
  "
1305
- :rules="[requiredRule]"
1362
+ :rules="isKindergarten ? [] : [requiredRule]"
1306
1363
  :items="lastSchoolYearOptions"
1307
1364
  ></v-autocomplete>
1308
1365
  </v-col>
@@ -1316,12 +1373,12 @@
1316
1373
  <InputLabel
1317
1374
  class="text-capitalize"
1318
1375
  title="Last School Attended"
1319
- required
1376
+ :required="!isKindergarten"
1320
1377
  />
1321
1378
  <v-col cols="12">
1322
1379
  <v-text-field
1323
1380
  v-model="enrollment.returningLearnerInfo.lastSchoolAttended"
1324
- :rules="[requiredRule]"
1381
+ :rules="isKindergarten ? [] : [requiredRule]"
1325
1382
  ></v-text-field>
1326
1383
  </v-col>
1327
1384
  </v-row>
@@ -1412,6 +1469,14 @@ if (prop.school) {
1412
1469
 
1413
1470
  enrollment.value.createdBy = useCookie("user", cookieConfig).value ?? "";
1414
1471
 
1472
+ // Set default country values on mount
1473
+ if (!enrollment.value.address.current.country) {
1474
+ enrollment.value.address.current.country = "Philippines";
1475
+ }
1476
+ if (!enrollment.value.address.permanent.country) {
1477
+ enrollment.value.address.permanent.country = "Philippines";
1478
+ }
1479
+
1415
1480
  const { getAll: getAllPSGC } = usePSGC();
1416
1481
 
1417
1482
  const region = ref("");
@@ -1652,6 +1717,13 @@ watch(selectedSchool, (val) => {
1652
1717
  }
1653
1718
  });
1654
1719
 
1720
+ watch(
1721
+ () => enrollment.value.gradeLevel,
1722
+ () => {
1723
+ enrollment.value.returningLearnerInfo.lastGradeLevelCompleted = "";
1724
+ }
1725
+ );
1726
+
1655
1727
  const { gradeLevels, generateSchoolYears, motherTongueOptions, tracks } =
1656
1728
  useBasicEdu();
1657
1729
 
@@ -1660,10 +1732,10 @@ const gradeLevelOffering = ref<Record<string, any>[]>([]);
1660
1732
  const { getAll: getGradeLevels } = useGradeLevel();
1661
1733
 
1662
1734
  const { data: getGradeLevelReq } = await useLazyAsyncData(
1663
- "get-grade-level-offerings" + enrollment.value.school,
1664
- () => getGradeLevels({ school: enrollment.value.school, limit: 100 }),
1735
+ "get-grade-level-offerings" + prop.school,
1736
+ () => getGradeLevels({ school: prop.school, limit: 100 }),
1665
1737
  {
1666
- watch: [() => enrollment.value.school],
1738
+ watch: [() => prop.school],
1667
1739
  }
1668
1740
  );
1669
1741
 
@@ -1695,11 +1767,81 @@ const isSeniorHighSchool = computed(() => {
1695
1767
  return ["grade-11", "grade-12"].includes(gradeLevel);
1696
1768
  });
1697
1769
 
1770
+ const isKindergarten = computed(() => {
1771
+ const gradeLevel = enrollment.value.gradeLevel;
1772
+ return gradeLevel === "kindergarten" || gradeLevel === "kinder";
1773
+ });
1774
+
1775
+ const allowedLastGradeLevels = computed(() => {
1776
+ const currentGrade = enrollment.value.gradeLevel;
1777
+ if (!currentGrade) return gradeLevels;
1778
+
1779
+ // Define grade level order
1780
+ const gradeOrder = [
1781
+ "kindergarten",
1782
+ "kinder",
1783
+ "grade-1",
1784
+ "grade-2",
1785
+ "grade-3",
1786
+ "grade-4",
1787
+ "grade-5",
1788
+ "grade-6",
1789
+ "grade-7",
1790
+ "grade-8",
1791
+ "grade-9",
1792
+ "grade-10",
1793
+ "grade-11",
1794
+ "grade-12",
1795
+ ];
1796
+
1797
+ const currentIndex = gradeOrder.indexOf(currentGrade);
1798
+ if (currentIndex === -1) return gradeLevels;
1799
+
1800
+ // Get grades that are equal to or one level below current grade
1801
+ const allowedGrades = gradeOrder.slice(
1802
+ Math.max(0, currentIndex - 1),
1803
+ currentIndex + 1
1804
+ );
1805
+
1806
+ // Filter gradeLevels to only include allowed grades
1807
+ return gradeLevels.filter((level) => {
1808
+ if (typeof level === "string") {
1809
+ return allowedGrades.includes(level);
1810
+ }
1811
+ if (typeof level === "object" && level.value) {
1812
+ return allowedGrades.includes(level.value);
1813
+ }
1814
+ return false;
1815
+ });
1816
+ });
1817
+
1698
1818
  const effectiveSchoolYearOptions = computed(() =>
1699
1819
  generateSchoolYears(0, "future")
1700
1820
  );
1701
1821
 
1702
- const lastSchoolYearOptions = generateSchoolYears(50);
1822
+ const lastSchoolYearOptions = computed(() => {
1823
+ const currentSchoolYear = enrollment.value.schoolYear;
1824
+ const allYears = generateSchoolYears(50);
1825
+
1826
+ if (!currentSchoolYear) {
1827
+ // If no school year is selected, exclude only future years (after current school year)
1828
+ const today = new Date();
1829
+ const currentYear = today.getFullYear();
1830
+ const currentMonth = today.getMonth();
1831
+ // School year typically starts in August (month 7), so if we're before August,
1832
+ // the current school year is previous year - current year
1833
+ const currentSchoolYearStart =
1834
+ currentMonth < 7 ? currentYear - 1 : currentYear;
1835
+ const currentSchoolYearStr = `${currentSchoolYearStart}-${
1836
+ currentSchoolYearStart + 1
1837
+ }`;
1838
+
1839
+ return allYears.filter((year) => year <= currentSchoolYearStr);
1840
+ }
1841
+
1842
+ // Filter out years that are >= the selected enrollment school year
1843
+ return allYears.filter((year) => year < currentSchoolYear);
1844
+ });
1703
1845
 
1704
1846
  const indigenousCommunitiesPhilippines = [
1705
1847
  // Luzon (Northern Philippines) - Cordillera Groups (Igorot Subgroups)
@@ -1794,7 +1936,7 @@ watch(enrollment, (val) => {
1794
1936
  enrollment.value.address.current.barangay = "";
1795
1937
  enrollment.value.address.current.municipalityCity = "";
1796
1938
  enrollment.value.address.current.province = "";
1797
- enrollment.value.address.current.country = "";
1939
+ enrollment.value.address.current.country = "Philippines";
1798
1940
  enrollment.value.address.current.zipCode = "";
1799
1941
  enrollment.value.address.permanent.houseNumber = "";
1800
1942
  enrollment.value.address.permanent.streetName = "";
@@ -1802,7 +1944,7 @@ watch(enrollment, (val) => {
1802
1944
  enrollment.value.address.permanent.barangay = "";
1803
1945
  enrollment.value.address.permanent.municipalityCity = "";
1804
1946
  enrollment.value.address.permanent.province = "";
1805
- enrollment.value.address.permanent.country = "";
1947
+ enrollment.value.address.permanent.country = "Philippines";
1806
1948
  enrollment.value.address.permanent.zipCode = "";
1807
1949
  }
1808
1950
  });
@@ -1822,7 +1964,7 @@ watchEffect(() => {
1822
1964
  enrollment.value.address.permanent.province =
1823
1965
  enrollment.value.address.current.province;
1824
1966
  enrollment.value.address.permanent.country =
1825
- enrollment.value.address.current.country;
1967
+ enrollment.value.address.current.country || "Philippines";
1826
1968
  enrollment.value.address.permanent.zipCode =
1827
1969
  enrollment.value.address.current.zipCode;
1828
1970
  } else {
@@ -1832,7 +1974,7 @@ watchEffect(() => {
1832
1974
  enrollment.value.address.permanent.barangay = "";
1833
1975
  enrollment.value.address.permanent.municipalityCity = "";
1834
1976
  enrollment.value.address.permanent.province = "";
1835
- enrollment.value.address.permanent.country = "";
1977
+ enrollment.value.address.permanent.country = "Philippines";
1836
1978
  enrollment.value.address.permanent.zipCode = "";
1837
1979
  }
1838
1980
  });
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@eeplatform/nuxt-layer-common",
3
3
  "license": "MIT",
4
4
  "type": "module",
5
- "version": "1.7.23",
5
+ "version": "1.7.25",
6
6
  "main": "./nuxt.config.ts",
7
7
  "publishConfig": {
8
8
  "access": "public"