@openedx/frontend-app-instructor-dashboard 1.0.0-alpha.2 → 1.0.0-alpha.21

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 (261) hide show
  1. package/dist/Main.d.ts +1 -1
  2. package/dist/Main.js +4 -13
  3. package/dist/Main.js.map +1 -1
  4. package/dist/app.js +2 -11
  5. package/dist/app.js.map +1 -1
  6. package/dist/certificates/CertificatesPage.d.ts +1 -0
  7. package/dist/certificates/CertificatesPage.js +162 -2
  8. package/dist/certificates/CertificatesPage.js.map +1 -1
  9. package/dist/certificates/CertificatesPage.scss +81 -0
  10. package/dist/certificates/components/CertificateTable.d.ts +14 -0
  11. package/dist/certificates/components/CertificateTable.js +85 -0
  12. package/dist/certificates/components/CertificateTable.js.map +1 -0
  13. package/dist/certificates/components/CertificatesPageHeader.d.ts +7 -0
  14. package/dist/certificates/components/CertificatesPageHeader.js +11 -0
  15. package/dist/certificates/components/CertificatesPageHeader.js.map +1 -0
  16. package/dist/certificates/components/CertificatesToolbar.d.ts +10 -0
  17. package/dist/certificates/components/CertificatesToolbar.js +12 -0
  18. package/dist/certificates/components/CertificatesToolbar.js.map +1 -0
  19. package/dist/certificates/components/DisableCertificatesModal.d.ts +9 -0
  20. package/dist/certificates/components/DisableCertificatesModal.js +16 -0
  21. package/dist/certificates/components/DisableCertificatesModal.js.map +1 -0
  22. package/dist/certificates/components/FilterDropdown.d.ts +8 -0
  23. package/dist/certificates/components/FilterDropdown.js +50 -0
  24. package/dist/certificates/components/FilterDropdown.js.map +1 -0
  25. package/dist/certificates/components/GenerationHistoryTable.d.ts +11 -0
  26. package/dist/certificates/components/GenerationHistoryTable.js +40 -0
  27. package/dist/certificates/components/GenerationHistoryTable.js.map +1 -0
  28. package/dist/certificates/components/GrantExceptionsModal.d.ts +8 -0
  29. package/dist/certificates/components/GrantExceptionsModal.js +10 -0
  30. package/dist/certificates/components/GrantExceptionsModal.js.map +1 -0
  31. package/dist/certificates/components/InvalidateCertificateModal.d.ts +8 -0
  32. package/dist/certificates/components/InvalidateCertificateModal.js +10 -0
  33. package/dist/certificates/components/InvalidateCertificateModal.js.map +1 -0
  34. package/dist/certificates/components/IssuedCertificatesTab.d.ts +18 -0
  35. package/dist/certificates/components/IssuedCertificatesTab.js +6 -0
  36. package/dist/certificates/components/IssuedCertificatesTab.js.map +1 -0
  37. package/dist/certificates/components/LearnerActionModal.d.ts +16 -0
  38. package/dist/certificates/components/LearnerActionModal.js +22 -0
  39. package/dist/certificates/components/LearnerActionModal.js.map +1 -0
  40. package/dist/certificates/components/RemoveInvalidationModal.d.ts +9 -0
  41. package/dist/certificates/components/RemoveInvalidationModal.js +10 -0
  42. package/dist/certificates/components/RemoveInvalidationModal.js.map +1 -0
  43. package/dist/certificates/constants.d.ts +15 -0
  44. package/dist/certificates/constants.js +16 -0
  45. package/dist/certificates/constants.js.map +1 -0
  46. package/dist/certificates/data/api.d.ts +9 -0
  47. package/dist/certificates/data/api.js +63 -0
  48. package/dist/certificates/data/api.js.map +1 -0
  49. package/dist/certificates/data/apiHook.d.ts +30 -0
  50. package/dist/certificates/data/apiHook.js +90 -0
  51. package/dist/certificates/data/apiHook.js.map +1 -0
  52. package/dist/certificates/data/dummyData.d.ts +2 -0
  53. package/dist/certificates/data/dummyData.js +234 -0
  54. package/dist/certificates/data/dummyData.js.map +1 -0
  55. package/dist/certificates/data/queryKeys.d.ts +8 -0
  56. package/dist/certificates/data/queryKeys.js +8 -0
  57. package/dist/certificates/data/queryKeys.js.map +1 -0
  58. package/dist/certificates/messages.d.ts +313 -0
  59. package/dist/certificates/messages.js +315 -0
  60. package/dist/certificates/messages.js.map +1 -0
  61. package/dist/certificates/types.d.ts +61 -0
  62. package/dist/certificates/types.js +26 -0
  63. package/dist/certificates/types.js.map +1 -0
  64. package/dist/certificates/utils/errorHandling.d.ts +10 -0
  65. package/dist/certificates/utils/errorHandling.js +3 -0
  66. package/dist/certificates/utils/errorHandling.js.map +1 -0
  67. package/dist/certificates/utils/filterUtils.d.ts +4 -0
  68. package/dist/certificates/utils/filterUtils.js +31 -0
  69. package/dist/certificates/utils/filterUtils.js.map +1 -0
  70. package/dist/certificates/utils/index.d.ts +2 -0
  71. package/dist/certificates/utils/index.js +2 -0
  72. package/dist/certificates/utils/index.js.map +1 -0
  73. package/dist/cohorts/data/queryKeys.d.ts +4 -4
  74. package/dist/components/ActionCard.d.ts +2 -2
  75. package/dist/components/ActionCard.js +1 -1
  76. package/dist/components/ActionCard.js.map +1 -1
  77. package/dist/components/PendingTasks.d.ts +3 -1
  78. package/dist/components/PendingTasks.js +3 -2
  79. package/dist/components/PendingTasks.js.map +1 -1
  80. package/dist/components/SpecifyLearnerField.d.ts +4 -1
  81. package/dist/components/SpecifyLearnerField.js +24 -10
  82. package/dist/components/SpecifyLearnerField.js.map +1 -1
  83. package/dist/components/SpecifyProblemField.d.ts +13 -0
  84. package/dist/components/SpecifyProblemField.js +46 -0
  85. package/dist/components/SpecifyProblemField.js.map +1 -0
  86. package/dist/components/UsernameFilter.d.ts +7 -0
  87. package/dist/components/UsernameFilter.js +19 -0
  88. package/dist/components/UsernameFilter.js.map +1 -0
  89. package/dist/components/messages.d.ts +30 -0
  90. package/dist/components/messages.js +30 -0
  91. package/dist/components/messages.js.map +1 -1
  92. package/dist/constants.d.ts +2 -1
  93. package/dist/constants.js +2 -1
  94. package/dist/constants.js.map +1 -1
  95. package/dist/courseInfo/types.d.ts +2 -0
  96. package/dist/courseInfo/types.js.map +1 -1
  97. package/dist/courseTeam/CourseTeamPage.js +20 -2
  98. package/dist/courseTeam/CourseTeamPage.js.map +1 -1
  99. package/dist/courseTeam/components/AddTeamMemberModal.d.ts +6 -0
  100. package/dist/courseTeam/components/AddTeamMemberModal.js +60 -0
  101. package/dist/courseTeam/components/AddTeamMemberModal.js.map +1 -0
  102. package/dist/courseTeam/components/EditTeamMemberModal.d.ts +8 -0
  103. package/dist/courseTeam/components/EditTeamMemberModal.js +90 -0
  104. package/dist/courseTeam/components/EditTeamMemberModal.js.map +1 -0
  105. package/dist/courseTeam/components/MembersContent.d.ts +6 -0
  106. package/dist/courseTeam/components/MembersContent.js +48 -0
  107. package/dist/courseTeam/components/MembersContent.js.map +1 -0
  108. package/dist/courseTeam/components/RoleFilter.d.ts +7 -0
  109. package/dist/courseTeam/components/RoleFilter.js +22 -0
  110. package/dist/courseTeam/components/RoleFilter.js.map +1 -0
  111. package/dist/courseTeam/components/RolesContent.d.ts +3 -0
  112. package/dist/courseTeam/components/RolesContent.js +25 -0
  113. package/dist/courseTeam/components/RolesContent.js.map +1 -0
  114. package/dist/courseTeam/data/api.d.ts +6 -0
  115. package/dist/courseTeam/data/api.js +38 -0
  116. package/dist/courseTeam/data/api.js.map +1 -0
  117. package/dist/courseTeam/data/apiHook.d.ts +11 -0
  118. package/dist/courseTeam/data/apiHook.js +32 -0
  119. package/dist/courseTeam/data/apiHook.js.map +1 -0
  120. package/dist/courseTeam/data/queryKeys.d.ts +7 -0
  121. package/dist/courseTeam/data/queryKeys.js +14 -0
  122. package/dist/courseTeam/data/queryKeys.js.map +1 -0
  123. package/dist/courseTeam/messages.d.ts +243 -0
  124. package/dist/courseTeam/messages.js +245 -0
  125. package/dist/courseTeam/messages.js.map +1 -0
  126. package/dist/courseTeam/types.d.ts +22 -0
  127. package/dist/courseTeam/types.js +3 -0
  128. package/dist/courseTeam/types.js.map +1 -0
  129. package/dist/data/api.d.ts +2 -1
  130. package/dist/data/api.js +9 -3
  131. package/dist/data/api.js.map +1 -1
  132. package/dist/data/apiHook.d.ts +1 -0
  133. package/dist/data/apiHook.js +10 -2
  134. package/dist/data/apiHook.js.map +1 -1
  135. package/dist/data/queryKeys.d.ts +10 -6
  136. package/dist/data/queryKeys.js +4 -0
  137. package/dist/data/queryKeys.js.map +1 -1
  138. package/dist/dataDownloads/data/queryKeys.d.ts +3 -3
  139. package/dist/dateExtensions/components/AddExtensionModal.d.ts +1 -1
  140. package/dist/dateExtensions/components/AddExtensionModal.js +5 -6
  141. package/dist/dateExtensions/components/AddExtensionModal.js.map +1 -1
  142. package/dist/dateExtensions/components/DateExtensionsList.js +2 -13
  143. package/dist/dateExtensions/components/DateExtensionsList.js.map +1 -1
  144. package/dist/dateExtensions/data/apiHook.d.ts +2 -2
  145. package/dist/dateExtensions/data/apiHook.js +4 -4
  146. package/dist/dateExtensions/data/apiHook.js.map +1 -1
  147. package/dist/dateExtensions/data/queryKeys.d.ts +5 -5
  148. package/dist/dateExtensions/messages.d.ts +0 -5
  149. package/dist/dateExtensions/messages.js +1 -6
  150. package/dist/dateExtensions/messages.js.map +1 -1
  151. package/dist/enrollments/EnrollmentsPage.js +41 -7
  152. package/dist/enrollments/EnrollmentsPage.js.map +1 -1
  153. package/dist/enrollments/components/AddBetaTestersModal.d.ts +6 -0
  154. package/dist/enrollments/components/AddBetaTestersModal.js +61 -0
  155. package/dist/enrollments/components/AddBetaTestersModal.js.map +1 -0
  156. package/dist/enrollments/components/EnrollLearnersModal.d.ts +6 -0
  157. package/dist/enrollments/components/EnrollLearnersModal.js +53 -0
  158. package/dist/enrollments/components/EnrollLearnersModal.js.map +1 -0
  159. package/dist/enrollments/components/EnrollmentStatusModal.js +3 -3
  160. package/dist/enrollments/components/EnrollmentStatusModal.js.map +1 -1
  161. package/dist/enrollments/components/EnrollmentsList.d.ts +3 -2
  162. package/dist/enrollments/components/EnrollmentsList.js +13 -14
  163. package/dist/enrollments/components/EnrollmentsList.js.map +1 -1
  164. package/dist/enrollments/components/UnenrollModal.d.ts +1 -1
  165. package/dist/enrollments/components/UnenrollModal.js +29 -3
  166. package/dist/enrollments/components/UnenrollModal.js.map +1 -1
  167. package/dist/enrollments/components/UpdateBetaTesterModal.d.ts +8 -0
  168. package/dist/enrollments/components/UpdateBetaTesterModal.js +52 -0
  169. package/dist/enrollments/components/UpdateBetaTesterModal.js.map +1 -0
  170. package/dist/enrollments/data/api.d.ts +3 -1
  171. package/dist/enrollments/data/api.js +11 -1
  172. package/dist/enrollments/data/api.js.map +1 -1
  173. package/dist/enrollments/data/apiHook.d.ts +5 -3
  174. package/dist/enrollments/data/apiHook.js +21 -3
  175. package/dist/enrollments/data/apiHook.js.map +1 -1
  176. package/dist/enrollments/data/queryKeys.d.ts +5 -5
  177. package/dist/enrollments/data/queryKeys.js.map +1 -1
  178. package/dist/enrollments/messages.d.ts +121 -1
  179. package/dist/enrollments/messages.js +126 -6
  180. package/dist/enrollments/messages.js.map +1 -1
  181. package/dist/enrollments/types.d.ts +24 -0
  182. package/dist/enrollments/types.js.map +1 -1
  183. package/dist/grading/GradingPage.js +15 -2
  184. package/dist/grading/GradingPage.js.map +1 -1
  185. package/dist/grading/components/GradingActionRow.d.ts +2 -0
  186. package/dist/grading/components/GradingActionRow.js +28 -0
  187. package/dist/grading/components/GradingActionRow.js.map +1 -0
  188. package/dist/grading/components/GradingConfigurationModal.d.ts +6 -0
  189. package/dist/grading/components/GradingConfigurationModal.js +14 -0
  190. package/dist/grading/components/GradingConfigurationModal.js.map +1 -0
  191. package/dist/grading/components/GradingLearnerContent.d.ts +7 -0
  192. package/dist/grading/components/GradingLearnerContent.js +114 -0
  193. package/dist/grading/components/GradingLearnerContent.js.map +1 -0
  194. package/dist/grading/data/api.d.ts +6 -0
  195. package/dist/grading/data/api.js +59 -0
  196. package/dist/grading/data/api.js.map +1 -0
  197. package/dist/grading/data/apiHook.d.ts +6 -0
  198. package/dist/grading/data/apiHook.js +29 -0
  199. package/dist/grading/data/apiHook.js.map +1 -0
  200. package/dist/grading/data/queryKeys.d.ts +9 -0
  201. package/dist/grading/data/queryKeys.js +8 -0
  202. package/dist/grading/data/queryKeys.js.map +1 -0
  203. package/dist/grading/messages.d.ts +173 -0
  204. package/dist/grading/messages.js +175 -0
  205. package/dist/grading/messages.js.map +1 -0
  206. package/dist/grading/types.d.ts +11 -0
  207. package/dist/grading/types.js +2 -0
  208. package/dist/grading/types.js.map +1 -0
  209. package/dist/hooks/useDebouncedFilter.d.ts +1 -0
  210. package/dist/hooks/useDebouncedFilter.js +5 -0
  211. package/dist/hooks/useDebouncedFilter.js.map +1 -1
  212. package/dist/index.d.ts +2 -3
  213. package/dist/index.js +2 -3
  214. package/dist/index.js.map +1 -1
  215. package/dist/instructorNav/InstructorNav.js +1 -1
  216. package/dist/instructorNav/InstructorNav.js.map +1 -1
  217. package/dist/provides.d.ts +4 -0
  218. package/dist/provides.js +7 -0
  219. package/dist/provides.js.map +1 -0
  220. package/dist/routes.d.ts +1 -1
  221. package/dist/routes.js +5 -4
  222. package/dist/routes.js.map +1 -1
  223. package/dist/specialExams/SpecialExamsPage.js +10 -2
  224. package/dist/specialExams/SpecialExamsPage.js.map +1 -1
  225. package/dist/specialExams/components/Allowances.d.ts +2 -0
  226. package/dist/specialExams/components/Allowances.js +6 -0
  227. package/dist/specialExams/components/Allowances.js.map +1 -0
  228. package/dist/specialExams/components/AttemptsList.d.ts +3 -0
  229. package/dist/specialExams/components/AttemptsList.js +44 -0
  230. package/dist/specialExams/components/AttemptsList.js.map +1 -0
  231. package/dist/specialExams/data/api.d.ts +3 -0
  232. package/dist/specialExams/data/api.js +23 -0
  233. package/dist/specialExams/data/api.js.map +1 -0
  234. package/dist/specialExams/data/apiHook.d.ts +2 -0
  235. package/dist/specialExams/data/apiHook.js +9 -0
  236. package/dist/specialExams/data/apiHook.js.map +1 -0
  237. package/dist/specialExams/data/queryKeys.d.ts +5 -0
  238. package/dist/specialExams/data/queryKeys.js +6 -0
  239. package/dist/specialExams/data/queryKeys.js.map +1 -0
  240. package/dist/specialExams/messages.d.ts +58 -0
  241. package/dist/specialExams/messages.js +60 -0
  242. package/dist/specialExams/messages.js.map +1 -0
  243. package/dist/specialExams/types.d.ts +13 -0
  244. package/dist/specialExams/types.js +2 -0
  245. package/dist/specialExams/types.js.map +1 -0
  246. package/dist/style.scss +16 -0
  247. package/dist/testUtils.js +1 -1
  248. package/dist/testUtils.js.map +1 -1
  249. package/dist/types/index.d.ts +1 -0
  250. package/dist/types/index.js.map +1 -1
  251. package/dist/utils/formatters.d.ts +5 -0
  252. package/dist/utils/formatters.js +10 -0
  253. package/dist/utils/formatters.js.map +1 -1
  254. package/package.json +2 -5
  255. package/dist/app.scss +0 -10
  256. package/dist/providers/QueryProvider.d.ts +0 -6
  257. package/dist/providers/QueryProvider.js +0 -16
  258. package/dist/providers/QueryProvider.js.map +0 -1
  259. package/dist/providers.d.ts +0 -3
  260. package/dist/providers.js +0 -8
  261. package/dist/providers.js.map +0 -1
@@ -0,0 +1,315 @@
1
+ import { defineMessages } from '@openedx/frontend-base';
2
+ const messages = defineMessages({
3
+ pageTitle: {
4
+ id: 'instruct.certificates.pageTitle',
5
+ defaultMessage: 'Certificates',
6
+ description: 'Title for certificates page',
7
+ },
8
+ grantExceptionsButton: {
9
+ id: 'instruct.certificates.grantExceptionsButton',
10
+ defaultMessage: 'Grant Exception(s)',
11
+ description: 'Button to grant certificate exceptions',
12
+ },
13
+ invalidateCertificateButton: {
14
+ id: 'instruct.certificates.invalidateCertificateButton',
15
+ defaultMessage: 'Invalidate Certificate',
16
+ description: 'Button to invalidate certificates',
17
+ },
18
+ disableCertificatesButton: {
19
+ id: 'instruct.certificates.disableCertificatesButton',
20
+ defaultMessage: 'Disable Certificates',
21
+ description: 'Button to disable certificate generation',
22
+ },
23
+ regenerateCertificatesButton: {
24
+ id: 'instruct.certificates.regenerateCertificatesButton',
25
+ defaultMessage: 'Regenerate Certificates',
26
+ description: 'Button to regenerate certificates',
27
+ },
28
+ issuedCertificatesTab: {
29
+ id: 'instruct.certificates.issuedCertificatesTab',
30
+ defaultMessage: 'Issued Certificates',
31
+ description: 'Tab label for issued certificates',
32
+ },
33
+ generationHistoryTab: {
34
+ id: 'instruct.certificates.generationHistoryTab',
35
+ defaultMessage: 'Certificate Generation History',
36
+ description: 'Tab label for certificate generation history',
37
+ },
38
+ searchPlaceholder: {
39
+ id: 'instruct.certificates.searchPlaceholder',
40
+ defaultMessage: 'Search by username or email',
41
+ description: 'Placeholder text for search input',
42
+ },
43
+ filterAllLearners: {
44
+ id: 'instruct.certificates.filterAllLearners',
45
+ defaultMessage: 'All Learners',
46
+ description: 'Filter option for all learners',
47
+ },
48
+ filterReceived: {
49
+ id: 'instruct.certificates.filterReceived',
50
+ defaultMessage: 'Received',
51
+ description: 'Filter option for learners who received certificates',
52
+ },
53
+ filterNotReceived: {
54
+ id: 'instruct.certificates.filterNotReceived',
55
+ defaultMessage: 'Not Received',
56
+ description: 'Filter option for learners who did not receive certificates',
57
+ },
58
+ filterAuditPassing: {
59
+ id: 'instruct.certificates.filterAuditPassing',
60
+ defaultMessage: 'Audit - Passing',
61
+ description: 'Filter option for audit learners who are passing',
62
+ },
63
+ filterAuditNotPassing: {
64
+ id: 'instruct.certificates.filterAuditNotPassing',
65
+ defaultMessage: 'Audit - Not Passing',
66
+ description: 'Filter option for audit learners who are not passing',
67
+ },
68
+ filterErrorState: {
69
+ id: 'instruct.certificates.filterErrorState',
70
+ defaultMessage: 'Error State',
71
+ description: 'Filter option for error states',
72
+ },
73
+ filterGrantedExceptions: {
74
+ id: 'instruct.certificates.filterGrantedExceptions',
75
+ defaultMessage: 'Granted Exceptions',
76
+ description: 'Filter option for granted exceptions',
77
+ },
78
+ filterInvalidated: {
79
+ id: 'instruct.certificates.filterInvalidated',
80
+ defaultMessage: 'Invalidated',
81
+ description: 'Filter option for invalidated certificates',
82
+ },
83
+ columnUsername: {
84
+ id: 'instruct.certificates.columnUsername',
85
+ defaultMessage: 'Username',
86
+ description: 'Table column header for username',
87
+ },
88
+ columnEmail: {
89
+ id: 'instruct.certificates.columnEmail',
90
+ defaultMessage: 'Email',
91
+ description: 'Table column header for email',
92
+ },
93
+ columnEnrollmentTrack: {
94
+ id: 'instruct.certificates.columnEnrollmentTrack',
95
+ defaultMessage: 'Enrollment Track',
96
+ description: 'Table column header for enrollment track',
97
+ },
98
+ columnCertificateStatus: {
99
+ id: 'instruct.certificates.columnCertificateStatus',
100
+ defaultMessage: 'Certificate Status',
101
+ description: 'Table column header for certificate status',
102
+ },
103
+ columnSpecialCase: {
104
+ id: 'instruct.certificates.columnSpecialCase',
105
+ defaultMessage: 'Special Case',
106
+ description: 'Table column header for special case',
107
+ },
108
+ columnExceptionGranted: {
109
+ id: 'instruct.certificates.columnExceptionGranted',
110
+ defaultMessage: 'Exception Granted',
111
+ description: 'Table column header for exception granted',
112
+ },
113
+ columnExceptionNotes: {
114
+ id: 'instruct.certificates.columnExceptionNotes',
115
+ defaultMessage: 'Exception Notes',
116
+ description: 'Table column header for exception notes',
117
+ },
118
+ columnInvalidatedBy: {
119
+ id: 'instruct.certificates.columnInvalidatedBy',
120
+ defaultMessage: 'Invalidated By',
121
+ description: 'Table column header for invalidated by',
122
+ },
123
+ columnInvalidationDate: {
124
+ id: 'instruct.certificates.columnInvalidationDate',
125
+ defaultMessage: 'Invalidation Date',
126
+ description: 'Table column header for invalidation date',
127
+ },
128
+ columnInvalidationNote: {
129
+ id: 'instruct.certificates.columnInvalidationNote',
130
+ defaultMessage: 'Invalidation Note',
131
+ description: 'Table column header for invalidation note',
132
+ },
133
+ columnActions: {
134
+ id: 'instruct.certificates.columnActions',
135
+ defaultMessage: 'Actions',
136
+ description: 'Table column header for actions',
137
+ },
138
+ removeExceptionAction: {
139
+ id: 'instruct.certificates.removeExceptionAction',
140
+ defaultMessage: 'Remove Exception',
141
+ description: 'Action menu item to remove exception',
142
+ },
143
+ removeInvalidationAction: {
144
+ id: 'instruct.certificates.removeInvalidationAction',
145
+ defaultMessage: 'Remove Invalidation',
146
+ description: 'Action menu item to remove invalidation',
147
+ },
148
+ noDataMessage: {
149
+ id: 'instruct.certificates.noDataMessage',
150
+ defaultMessage: 'No certificates found',
151
+ description: 'Message when no certificates are found',
152
+ },
153
+ exceptionRemovedToast: {
154
+ id: 'instruct.certificates.exceptionRemovedToast',
155
+ defaultMessage: 'Exception removed for {email}',
156
+ description: 'Toast message when exception is removed',
157
+ },
158
+ invalidationRemovedToast: {
159
+ id: 'instruct.certificates.invalidationRemovedToast',
160
+ defaultMessage: 'The certificate for {email} has been re-validated and the system is re-running the grade for this learner.',
161
+ description: 'Toast message when invalidation is removed',
162
+ },
163
+ exceptionsGrantedToast: {
164
+ id: 'instruct.certificates.exceptionsGrantedToast',
165
+ defaultMessage: 'Exceptions granted for {count} learner(s)',
166
+ description: 'Toast message when exceptions are granted',
167
+ },
168
+ certificatesInvalidatedToast: {
169
+ id: 'instruct.certificates.certificatesInvalidatedToast',
170
+ defaultMessage: 'Certificates invalidated for {count} learner(s)',
171
+ description: 'Toast message when certificates are invalidated',
172
+ },
173
+ grantExceptionsModalTitle: {
174
+ id: 'instruct.certificates.grantExceptionsModalTitle',
175
+ defaultMessage: 'Grant Certificate Exceptions',
176
+ description: 'Title for grant exceptions modal',
177
+ },
178
+ grantExceptionsModalDescription: {
179
+ id: 'instruct.certificates.grantExceptionsModalDescription',
180
+ defaultMessage: 'Enter usernames or emails, or upload a CSV file to grant certificate exceptions.',
181
+ description: 'Description for grant exceptions modal',
182
+ },
183
+ invalidateCertificateModalTitle: {
184
+ id: 'instruct.certificates.invalidateCertificateModalTitle',
185
+ defaultMessage: 'Invalidate Certificates',
186
+ description: 'Title for invalidate certificate modal',
187
+ },
188
+ invalidateCertificateModalDescription: {
189
+ id: 'instruct.certificates.invalidateCertificateModalDescription',
190
+ defaultMessage: 'Enter usernames or emails, or upload a CSV file to invalidate certificates.',
191
+ description: 'Description for invalidate certificate modal',
192
+ },
193
+ removeInvalidationModalTitle: {
194
+ id: 'instruct.certificates.removeInvalidationModalTitle',
195
+ defaultMessage: 'Remove Invalidation',
196
+ description: 'Title for remove invalidation modal',
197
+ },
198
+ removeInvalidationModalMessage: {
199
+ id: 'instruct.certificates.removeInvalidationModalMessage',
200
+ defaultMessage: 'Are you sure you want to remove invalidation for {email}?',
201
+ description: 'Message for remove invalidation confirmation modal',
202
+ },
203
+ disableCertificatesModalTitle: {
204
+ id: 'instruct.certificates.disableCertificatesModalTitle',
205
+ defaultMessage: 'Disable Certificate Generation',
206
+ description: 'Title for disable certificates modal',
207
+ },
208
+ disableCertificatesModalMessage: {
209
+ id: 'instruct.certificates.disableCertificatesModalMessage',
210
+ defaultMessage: 'Students will not be able to receive certificates until certificate generation is re-enabled. Are you sure you want to disable certificate generation?',
211
+ description: 'Message for disable certificates modal',
212
+ },
213
+ enableCertificatesModalTitle: {
214
+ id: 'instruct.certificates.enableCertificatesModalTitle',
215
+ defaultMessage: 'Enable Certificate Generation',
216
+ description: 'Title for enable certificates modal',
217
+ },
218
+ enableCertificatesModalMessage: {
219
+ id: 'instruct.certificates.enableCertificatesModalMessage',
220
+ defaultMessage: 'Are you sure you want to enable certificate generation for this course?',
221
+ description: 'Message for enable certificates modal',
222
+ },
223
+ notesLabel: {
224
+ id: 'instruct.certificates.notesLabel',
225
+ defaultMessage: 'Notes (Optional)',
226
+ description: 'Label for notes field',
227
+ },
228
+ notesPlaceholder: {
229
+ id: 'instruct.certificates.notesPlaceholder',
230
+ defaultMessage: 'Enter notes...',
231
+ description: 'Placeholder for notes field',
232
+ },
233
+ learnersLabel: {
234
+ id: 'instruct.certificates.learnersLabel',
235
+ defaultMessage: 'Username or Email',
236
+ description: 'Label for learners field',
237
+ },
238
+ learnersPlaceholder: {
239
+ id: 'instruct.certificates.learnersPlaceholder',
240
+ defaultMessage: 'Enter usernames or emails (one per line)',
241
+ description: 'Placeholder for learners field',
242
+ },
243
+ cancel: {
244
+ id: 'instruct.certificates.cancel',
245
+ defaultMessage: 'Cancel',
246
+ description: 'Cancel button text',
247
+ },
248
+ confirm: {
249
+ id: 'instruct.certificates.confirm',
250
+ defaultMessage: 'Confirm',
251
+ description: 'Confirm button text',
252
+ },
253
+ submit: {
254
+ id: 'instruct.certificates.submit',
255
+ defaultMessage: 'Submit',
256
+ description: 'Submit button text',
257
+ },
258
+ columnTaskName: {
259
+ id: 'instruct.certificates.columnTaskName',
260
+ defaultMessage: 'Task Name',
261
+ description: 'Table column header for task name',
262
+ },
263
+ columnDate: {
264
+ id: 'instruct.certificates.columnDate',
265
+ defaultMessage: 'Date',
266
+ description: 'Table column header for date',
267
+ },
268
+ columnDetails: {
269
+ id: 'instruct.certificates.columnDetails',
270
+ defaultMessage: 'Details',
271
+ description: 'Table column header for details',
272
+ },
273
+ noTasksMessage: {
274
+ id: 'instruct.certificates.noTasksMessage',
275
+ defaultMessage: 'No certificate generation tasks found',
276
+ description: 'Message when no tasks are found',
277
+ },
278
+ errorGrantException: {
279
+ id: 'instruct.certificates.errorGrantException',
280
+ defaultMessage: 'Failed to grant exceptions',
281
+ description: 'Error message when granting exceptions fails',
282
+ },
283
+ errorInvalidateCertificate: {
284
+ id: 'instruct.certificates.errorInvalidateCertificate',
285
+ defaultMessage: 'Failed to invalidate certificates',
286
+ description: 'Error message when invalidating certificates fails',
287
+ },
288
+ errorRemoveException: {
289
+ id: 'instruct.certificates.errorRemoveException',
290
+ defaultMessage: 'Failed to remove exception',
291
+ description: 'Error message when removing exception fails',
292
+ },
293
+ errorRemoveInvalidation: {
294
+ id: 'instruct.certificates.errorRemoveInvalidation',
295
+ defaultMessage: 'Failed to remove invalidation',
296
+ description: 'Error message when removing invalidation fails',
297
+ },
298
+ errorToggleCertificateGeneration: {
299
+ id: 'instruct.certificates.errorToggleCertificateGeneration',
300
+ defaultMessage: 'Failed to toggle certificate generation',
301
+ description: 'Error message when toggling certificate generation fails',
302
+ },
303
+ successEnableCertificates: {
304
+ id: 'instruct.certificates.successEnableCertificates',
305
+ defaultMessage: 'Certificate generation enabled',
306
+ description: 'Success message when certificate generation is enabled',
307
+ },
308
+ successDisableCertificates: {
309
+ id: 'instruct.certificates.successDisableCertificates',
310
+ defaultMessage: 'Certificate generation disabled',
311
+ description: 'Success message when certificate generation is disabled',
312
+ },
313
+ });
314
+ export default messages;
315
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/certificates/messages.ts"],"names":[],"mappings":"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","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n pageTitle: {\n id: 'instruct.certificates.pageTitle',\n defaultMessage: 'Certificates',\n description: 'Title for certificates page',\n },\n grantExceptionsButton: {\n id: 'instruct.certificates.grantExceptionsButton',\n defaultMessage: 'Grant Exception(s)',\n description: 'Button to grant certificate exceptions',\n },\n invalidateCertificateButton: {\n id: 'instruct.certificates.invalidateCertificateButton',\n defaultMessage: 'Invalidate Certificate',\n description: 'Button to invalidate certificates',\n },\n disableCertificatesButton: {\n id: 'instruct.certificates.disableCertificatesButton',\n defaultMessage: 'Disable Certificates',\n description: 'Button to disable certificate generation',\n },\n regenerateCertificatesButton: {\n id: 'instruct.certificates.regenerateCertificatesButton',\n defaultMessage: 'Regenerate Certificates',\n description: 'Button to regenerate certificates',\n },\n issuedCertificatesTab: {\n id: 'instruct.certificates.issuedCertificatesTab',\n defaultMessage: 'Issued Certificates',\n description: 'Tab label for issued certificates',\n },\n generationHistoryTab: {\n id: 'instruct.certificates.generationHistoryTab',\n defaultMessage: 'Certificate Generation History',\n description: 'Tab label for certificate generation history',\n },\n searchPlaceholder: {\n id: 'instruct.certificates.searchPlaceholder',\n defaultMessage: 'Search by username or email',\n description: 'Placeholder text for search input',\n },\n filterAllLearners: {\n id: 'instruct.certificates.filterAllLearners',\n defaultMessage: 'All Learners',\n description: 'Filter option for all learners',\n },\n filterReceived: {\n id: 'instruct.certificates.filterReceived',\n defaultMessage: 'Received',\n description: 'Filter option for learners who received certificates',\n },\n filterNotReceived: {\n id: 'instruct.certificates.filterNotReceived',\n defaultMessage: 'Not Received',\n description: 'Filter option for learners who did not receive certificates',\n },\n filterAuditPassing: {\n id: 'instruct.certificates.filterAuditPassing',\n defaultMessage: 'Audit - Passing',\n description: 'Filter option for audit learners who are passing',\n },\n filterAuditNotPassing: {\n id: 'instruct.certificates.filterAuditNotPassing',\n defaultMessage: 'Audit - Not Passing',\n description: 'Filter option for audit learners who are not passing',\n },\n filterErrorState: {\n id: 'instruct.certificates.filterErrorState',\n defaultMessage: 'Error State',\n description: 'Filter option for error states',\n },\n filterGrantedExceptions: {\n id: 'instruct.certificates.filterGrantedExceptions',\n defaultMessage: 'Granted Exceptions',\n description: 'Filter option for granted exceptions',\n },\n filterInvalidated: {\n id: 'instruct.certificates.filterInvalidated',\n defaultMessage: 'Invalidated',\n description: 'Filter option for invalidated certificates',\n },\n columnUsername: {\n id: 'instruct.certificates.columnUsername',\n defaultMessage: 'Username',\n description: 'Table column header for username',\n },\n columnEmail: {\n id: 'instruct.certificates.columnEmail',\n defaultMessage: 'Email',\n description: 'Table column header for email',\n },\n columnEnrollmentTrack: {\n id: 'instruct.certificates.columnEnrollmentTrack',\n defaultMessage: 'Enrollment Track',\n description: 'Table column header for enrollment track',\n },\n columnCertificateStatus: {\n id: 'instruct.certificates.columnCertificateStatus',\n defaultMessage: 'Certificate Status',\n description: 'Table column header for certificate status',\n },\n columnSpecialCase: {\n id: 'instruct.certificates.columnSpecialCase',\n defaultMessage: 'Special Case',\n description: 'Table column header for special case',\n },\n columnExceptionGranted: {\n id: 'instruct.certificates.columnExceptionGranted',\n defaultMessage: 'Exception Granted',\n description: 'Table column header for exception granted',\n },\n columnExceptionNotes: {\n id: 'instruct.certificates.columnExceptionNotes',\n defaultMessage: 'Exception Notes',\n description: 'Table column header for exception notes',\n },\n columnInvalidatedBy: {\n id: 'instruct.certificates.columnInvalidatedBy',\n defaultMessage: 'Invalidated By',\n description: 'Table column header for invalidated by',\n },\n columnInvalidationDate: {\n id: 'instruct.certificates.columnInvalidationDate',\n defaultMessage: 'Invalidation Date',\n description: 'Table column header for invalidation date',\n },\n columnInvalidationNote: {\n id: 'instruct.certificates.columnInvalidationNote',\n defaultMessage: 'Invalidation Note',\n description: 'Table column header for invalidation note',\n },\n columnActions: {\n id: 'instruct.certificates.columnActions',\n defaultMessage: 'Actions',\n description: 'Table column header for actions',\n },\n removeExceptionAction: {\n id: 'instruct.certificates.removeExceptionAction',\n defaultMessage: 'Remove Exception',\n description: 'Action menu item to remove exception',\n },\n removeInvalidationAction: {\n id: 'instruct.certificates.removeInvalidationAction',\n defaultMessage: 'Remove Invalidation',\n description: 'Action menu item to remove invalidation',\n },\n noDataMessage: {\n id: 'instruct.certificates.noDataMessage',\n defaultMessage: 'No certificates found',\n description: 'Message when no certificates are found',\n },\n exceptionRemovedToast: {\n id: 'instruct.certificates.exceptionRemovedToast',\n defaultMessage: 'Exception removed for {email}',\n description: 'Toast message when exception is removed',\n },\n invalidationRemovedToast: {\n id: 'instruct.certificates.invalidationRemovedToast',\n defaultMessage: 'The certificate for {email} has been re-validated and the system is re-running the grade for this learner.',\n description: 'Toast message when invalidation is removed',\n },\n exceptionsGrantedToast: {\n id: 'instruct.certificates.exceptionsGrantedToast',\n defaultMessage: 'Exceptions granted for {count} learner(s)',\n description: 'Toast message when exceptions are granted',\n },\n certificatesInvalidatedToast: {\n id: 'instruct.certificates.certificatesInvalidatedToast',\n defaultMessage: 'Certificates invalidated for {count} learner(s)',\n description: 'Toast message when certificates are invalidated',\n },\n grantExceptionsModalTitle: {\n id: 'instruct.certificates.grantExceptionsModalTitle',\n defaultMessage: 'Grant Certificate Exceptions',\n description: 'Title for grant exceptions modal',\n },\n grantExceptionsModalDescription: {\n id: 'instruct.certificates.grantExceptionsModalDescription',\n defaultMessage: 'Enter usernames or emails, or upload a CSV file to grant certificate exceptions.',\n description: 'Description for grant exceptions modal',\n },\n invalidateCertificateModalTitle: {\n id: 'instruct.certificates.invalidateCertificateModalTitle',\n defaultMessage: 'Invalidate Certificates',\n description: 'Title for invalidate certificate modal',\n },\n invalidateCertificateModalDescription: {\n id: 'instruct.certificates.invalidateCertificateModalDescription',\n defaultMessage: 'Enter usernames or emails, or upload a CSV file to invalidate certificates.',\n description: 'Description for invalidate certificate modal',\n },\n removeInvalidationModalTitle: {\n id: 'instruct.certificates.removeInvalidationModalTitle',\n defaultMessage: 'Remove Invalidation',\n description: 'Title for remove invalidation modal',\n },\n removeInvalidationModalMessage: {\n id: 'instruct.certificates.removeInvalidationModalMessage',\n defaultMessage: 'Are you sure you want to remove invalidation for {email}?',\n description: 'Message for remove invalidation confirmation modal',\n },\n disableCertificatesModalTitle: {\n id: 'instruct.certificates.disableCertificatesModalTitle',\n defaultMessage: 'Disable Certificate Generation',\n description: 'Title for disable certificates modal',\n },\n disableCertificatesModalMessage: {\n id: 'instruct.certificates.disableCertificatesModalMessage',\n defaultMessage: 'Students will not be able to receive certificates until certificate generation is re-enabled. Are you sure you want to disable certificate generation?',\n description: 'Message for disable certificates modal',\n },\n enableCertificatesModalTitle: {\n id: 'instruct.certificates.enableCertificatesModalTitle',\n defaultMessage: 'Enable Certificate Generation',\n description: 'Title for enable certificates modal',\n },\n enableCertificatesModalMessage: {\n id: 'instruct.certificates.enableCertificatesModalMessage',\n defaultMessage: 'Are you sure you want to enable certificate generation for this course?',\n description: 'Message for enable certificates modal',\n },\n notesLabel: {\n id: 'instruct.certificates.notesLabel',\n defaultMessage: 'Notes (Optional)',\n description: 'Label for notes field',\n },\n notesPlaceholder: {\n id: 'instruct.certificates.notesPlaceholder',\n defaultMessage: 'Enter notes...',\n description: 'Placeholder for notes field',\n },\n learnersLabel: {\n id: 'instruct.certificates.learnersLabel',\n defaultMessage: 'Username or Email',\n description: 'Label for learners field',\n },\n learnersPlaceholder: {\n id: 'instruct.certificates.learnersPlaceholder',\n defaultMessage: 'Enter usernames or emails (one per line)',\n description: 'Placeholder for learners field',\n },\n cancel: {\n id: 'instruct.certificates.cancel',\n defaultMessage: 'Cancel',\n description: 'Cancel button text',\n },\n confirm: {\n id: 'instruct.certificates.confirm',\n defaultMessage: 'Confirm',\n description: 'Confirm button text',\n },\n submit: {\n id: 'instruct.certificates.submit',\n defaultMessage: 'Submit',\n description: 'Submit button text',\n },\n columnTaskName: {\n id: 'instruct.certificates.columnTaskName',\n defaultMessage: 'Task Name',\n description: 'Table column header for task name',\n },\n columnDate: {\n id: 'instruct.certificates.columnDate',\n defaultMessage: 'Date',\n description: 'Table column header for date',\n },\n columnDetails: {\n id: 'instruct.certificates.columnDetails',\n defaultMessage: 'Details',\n description: 'Table column header for details',\n },\n noTasksMessage: {\n id: 'instruct.certificates.noTasksMessage',\n defaultMessage: 'No certificate generation tasks found',\n description: 'Message when no tasks are found',\n },\n errorGrantException: {\n id: 'instruct.certificates.errorGrantException',\n defaultMessage: 'Failed to grant exceptions',\n description: 'Error message when granting exceptions fails',\n },\n errorInvalidateCertificate: {\n id: 'instruct.certificates.errorInvalidateCertificate',\n defaultMessage: 'Failed to invalidate certificates',\n description: 'Error message when invalidating certificates fails',\n },\n errorRemoveException: {\n id: 'instruct.certificates.errorRemoveException',\n defaultMessage: 'Failed to remove exception',\n description: 'Error message when removing exception fails',\n },\n errorRemoveInvalidation: {\n id: 'instruct.certificates.errorRemoveInvalidation',\n defaultMessage: 'Failed to remove invalidation',\n description: 'Error message when removing invalidation fails',\n },\n errorToggleCertificateGeneration: {\n id: 'instruct.certificates.errorToggleCertificateGeneration',\n defaultMessage: 'Failed to toggle certificate generation',\n description: 'Error message when toggling certificate generation fails',\n },\n successEnableCertificates: {\n id: 'instruct.certificates.successEnableCertificates',\n defaultMessage: 'Certificate generation enabled',\n description: 'Success message when certificate generation is enabled',\n },\n successDisableCertificates: {\n id: 'instruct.certificates.successDisableCertificates',\n defaultMessage: 'Certificate generation disabled',\n description: 'Success message when certificate generation is disabled',\n },\n});\n\nexport default messages;\n"]}
@@ -0,0 +1,61 @@
1
+ import type { PaginationParams } from '../types';
2
+ export declare enum CertificateFilter {
3
+ ALL_LEARNERS = "all",
4
+ RECEIVED = "received",
5
+ NOT_RECEIVED = "not_received",
6
+ AUDIT_PASSING = "audit_passing",
7
+ AUDIT_NOT_PASSING = "audit_not_passing",
8
+ ERROR_STATE = "error",
9
+ GRANTED_EXCEPTIONS = "granted_exceptions",
10
+ INVALIDATED = "invalidated"
11
+ }
12
+ export declare enum CertificateStatus {
13
+ RECEIVED = "downloadable",
14
+ NOT_RECEIVED = "notpassing",
15
+ AUDIT_PASSING = "audit_passing",
16
+ AUDIT_NOT_PASSING = "audit_notpassing",
17
+ ERROR_STATE = "error"
18
+ }
19
+ export declare enum SpecialCase {
20
+ NONE = "",
21
+ INVALIDATION = "invalidated",
22
+ EXCEPTION = "exception"
23
+ }
24
+ export interface CertificateData {
25
+ username: string;
26
+ email: string;
27
+ enrollmentTrack: string;
28
+ certificateStatus: CertificateStatus;
29
+ specialCase: SpecialCase;
30
+ exceptionGranted?: string;
31
+ exceptionNotes?: string;
32
+ invalidatedBy?: string;
33
+ invalidationDate?: string;
34
+ invalidationNote?: string;
35
+ }
36
+ export interface InstructorTask {
37
+ taskId: string;
38
+ taskName: string;
39
+ taskState: string;
40
+ taskOutput?: string;
41
+ created: string;
42
+ updated: string;
43
+ }
44
+ export interface CertificateQueryParams extends PaginationParams {
45
+ filter: CertificateFilter;
46
+ search: string;
47
+ }
48
+ export interface GrantExceptionRequest {
49
+ learners: string;
50
+ notes?: string;
51
+ }
52
+ export interface InvalidateCertificateRequest {
53
+ learners: string;
54
+ notes?: string;
55
+ }
56
+ export interface RemoveExceptionRequest {
57
+ username: string;
58
+ }
59
+ export interface RemoveInvalidationRequest {
60
+ username: string;
61
+ }
@@ -0,0 +1,26 @@
1
+ export var CertificateFilter;
2
+ (function (CertificateFilter) {
3
+ CertificateFilter["ALL_LEARNERS"] = "all";
4
+ CertificateFilter["RECEIVED"] = "received";
5
+ CertificateFilter["NOT_RECEIVED"] = "not_received";
6
+ CertificateFilter["AUDIT_PASSING"] = "audit_passing";
7
+ CertificateFilter["AUDIT_NOT_PASSING"] = "audit_not_passing";
8
+ CertificateFilter["ERROR_STATE"] = "error";
9
+ CertificateFilter["GRANTED_EXCEPTIONS"] = "granted_exceptions";
10
+ CertificateFilter["INVALIDATED"] = "invalidated";
11
+ })(CertificateFilter || (CertificateFilter = {}));
12
+ export var CertificateStatus;
13
+ (function (CertificateStatus) {
14
+ CertificateStatus["RECEIVED"] = "downloadable";
15
+ CertificateStatus["NOT_RECEIVED"] = "notpassing";
16
+ CertificateStatus["AUDIT_PASSING"] = "audit_passing";
17
+ CertificateStatus["AUDIT_NOT_PASSING"] = "audit_notpassing";
18
+ CertificateStatus["ERROR_STATE"] = "error";
19
+ })(CertificateStatus || (CertificateStatus = {}));
20
+ export var SpecialCase;
21
+ (function (SpecialCase) {
22
+ SpecialCase["NONE"] = "";
23
+ SpecialCase["INVALIDATION"] = "invalidated";
24
+ SpecialCase["EXCEPTION"] = "exception";
25
+ })(SpecialCase || (SpecialCase = {}));
26
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/certificates/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,iBASX;AATD,WAAY,iBAAiB;IAC3B,yCAAoB,CAAA;IACpB,0CAAqB,CAAA;IACrB,kDAA6B,CAAA;IAC7B,oDAA+B,CAAA;IAC/B,4DAAuC,CAAA;IACvC,0CAAqB,CAAA;IACrB,8DAAyC,CAAA;IACzC,gDAA2B,CAAA;AAC7B,CAAC,EATW,iBAAiB,KAAjB,iBAAiB,QAS5B;AAED,MAAM,CAAN,IAAY,iBAMX;AAND,WAAY,iBAAiB;IAC3B,8CAAyB,CAAA;IACzB,gDAA2B,CAAA;IAC3B,oDAA+B,CAAA;IAC/B,2DAAsC,CAAA;IACtC,0CAAqB,CAAA;AACvB,CAAC,EANW,iBAAiB,KAAjB,iBAAiB,QAM5B;AAED,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,wBAAS,CAAA;IACT,2CAA4B,CAAA;IAC5B,sCAAuB,CAAA;AACzB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB","sourcesContent":["import type { PaginationParams } from '@src/types';\n\nexport enum CertificateFilter {\n ALL_LEARNERS = 'all',\n RECEIVED = 'received',\n NOT_RECEIVED = 'not_received',\n AUDIT_PASSING = 'audit_passing',\n AUDIT_NOT_PASSING = 'audit_not_passing',\n ERROR_STATE = 'error',\n GRANTED_EXCEPTIONS = 'granted_exceptions',\n INVALIDATED = 'invalidated',\n}\n\nexport enum CertificateStatus {\n RECEIVED = 'downloadable',\n NOT_RECEIVED = 'notpassing',\n AUDIT_PASSING = 'audit_passing',\n AUDIT_NOT_PASSING = 'audit_notpassing',\n ERROR_STATE = 'error',\n}\n\nexport enum SpecialCase {\n NONE = '',\n INVALIDATION = 'invalidated',\n EXCEPTION = 'exception',\n}\n\nexport interface CertificateData {\n username: string,\n email: string,\n enrollmentTrack: string,\n certificateStatus: CertificateStatus,\n specialCase: SpecialCase,\n exceptionGranted?: string,\n exceptionNotes?: string,\n invalidatedBy?: string,\n invalidationDate?: string,\n invalidationNote?: string,\n}\n\nexport interface InstructorTask {\n taskId: string,\n taskName: string,\n taskState: string,\n taskOutput?: string,\n created: string,\n updated: string,\n}\n\nexport interface CertificateQueryParams extends PaginationParams {\n filter: CertificateFilter,\n search: string,\n}\n\nexport interface GrantExceptionRequest {\n learners: string,\n notes?: string,\n}\n\nexport interface InvalidateCertificateRequest {\n learners: string,\n notes?: string,\n}\n\nexport interface RemoveExceptionRequest {\n username: string,\n}\n\nexport interface RemoveInvalidationRequest {\n username: string,\n}\n"]}
@@ -0,0 +1,10 @@
1
+ export interface ApiError {
2
+ response?: {
3
+ data?: {
4
+ error?: string;
5
+ };
6
+ };
7
+ message?: string;
8
+ }
9
+ export declare const getErrorMessage: (error: ApiError, fallbackMessage: string) => string;
10
+ export declare const parseLearnersCount: (learners: string) => number;
@@ -0,0 +1,3 @@
1
+ export const getErrorMessage = (error, fallbackMessage) => { var _a, _b; return ((_b = (_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.error) || (error === null || error === void 0 ? void 0 : error.message) || fallbackMessage; };
2
+ export const parseLearnersCount = (learners) => learners.split(/[\n,]/).filter((l) => l.trim()).length;
3
+ //# sourceMappingURL=errorHandling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorHandling.js","sourceRoot":"","sources":["../../../src/certificates/utils/errorHandling.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAe,EAAE,eAAuB,EAAU,EAAE,eAClF,OAAA,CAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,IAAI,0CAAE,KAAK,MAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAA,IAAI,eAAe,CAAA,EAAA,CAAC;AAEpE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAgB,EAAU,EAAE,CAC7D,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC","sourcesContent":["export interface ApiError {\n response?: {\n data?: {\n error?: string,\n },\n },\n message?: string,\n}\n\nexport const getErrorMessage = (error: ApiError, fallbackMessage: string): string =>\n error?.response?.data?.error || error?.message || fallbackMessage;\n\nexport const parseLearnersCount = (learners: string): number =>\n learners.split(/[\\n,]/).filter((l) => l.trim()).length;\n"]}
@@ -0,0 +1,4 @@
1
+ import { CertificateData, CertificateFilter } from '../types';
2
+ export declare const matchesFilter: (item: CertificateData, filter: CertificateFilter) => boolean;
3
+ export declare const matchesSearch: (item: CertificateData, search: string) => boolean;
4
+ export declare const filterCertificates: (data: CertificateData[], filter: CertificateFilter, search: string) => CertificateData[];
@@ -0,0 +1,31 @@
1
+ import { CertificateFilter, CertificateStatus, SpecialCase } from '../types';
2
+ export const matchesFilter = (item, filter) => {
3
+ switch (filter) {
4
+ case CertificateFilter.RECEIVED:
5
+ return item.certificateStatus === CertificateStatus.RECEIVED;
6
+ case CertificateFilter.NOT_RECEIVED:
7
+ return item.certificateStatus === CertificateStatus.NOT_RECEIVED;
8
+ case CertificateFilter.AUDIT_PASSING:
9
+ return item.certificateStatus === CertificateStatus.AUDIT_PASSING;
10
+ case CertificateFilter.AUDIT_NOT_PASSING:
11
+ return item.certificateStatus === CertificateStatus.AUDIT_NOT_PASSING;
12
+ case CertificateFilter.ERROR_STATE:
13
+ return item.certificateStatus === CertificateStatus.ERROR_STATE;
14
+ case CertificateFilter.GRANTED_EXCEPTIONS:
15
+ return item.specialCase === SpecialCase.EXCEPTION;
16
+ case CertificateFilter.INVALIDATED:
17
+ return item.specialCase === SpecialCase.INVALIDATION;
18
+ case CertificateFilter.ALL_LEARNERS:
19
+ default:
20
+ return true;
21
+ }
22
+ };
23
+ export const matchesSearch = (item, search) => {
24
+ if (!search)
25
+ return true;
26
+ const searchLower = search.toLowerCase();
27
+ return (item.username.toLowerCase().includes(searchLower)
28
+ || item.email.toLowerCase().includes(searchLower));
29
+ };
30
+ export const filterCertificates = (data, filter, search) => data.filter((item) => matchesFilter(item, filter) && matchesSearch(item, search));
31
+ //# sourceMappingURL=filterUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterUtils.js","sourceRoot":"","sources":["../../../src/certificates/utils/filterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE9F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAqB,EAAE,MAAyB,EAAW,EAAE;IACzF,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,iBAAiB,CAAC,QAAQ;YAC7B,OAAO,IAAI,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,QAAQ,CAAC;QAC/D,KAAK,iBAAiB,CAAC,YAAY;YACjC,OAAO,IAAI,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,YAAY,CAAC;QACnE,KAAK,iBAAiB,CAAC,aAAa;YAClC,OAAO,IAAI,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,aAAa,CAAC;QACpE,KAAK,iBAAiB,CAAC,iBAAiB;YACtC,OAAO,IAAI,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,iBAAiB,CAAC;QACxE,KAAK,iBAAiB,CAAC,WAAW;YAChC,OAAO,IAAI,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,WAAW,CAAC;QAClE,KAAK,iBAAiB,CAAC,kBAAkB;YACvC,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,CAAC;QACpD,KAAK,iBAAiB,CAAC,WAAW;YAChC,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,YAAY,CAAC;QACvD,KAAK,iBAAiB,CAAC,YAAY,CAAC;QACpC;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAqB,EAAE,MAAc,EAAW,EAAE;IAC9E,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACzC,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;WAC9C,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAClD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAuB,EACvB,MAAyB,EACzB,MAAc,EACK,EAAE,CACrB,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC","sourcesContent":["import { CertificateData, CertificateFilter, CertificateStatus, SpecialCase } from '../types';\n\nexport const matchesFilter = (item: CertificateData, filter: CertificateFilter): boolean => {\n switch (filter) {\n case CertificateFilter.RECEIVED:\n return item.certificateStatus === CertificateStatus.RECEIVED;\n case CertificateFilter.NOT_RECEIVED:\n return item.certificateStatus === CertificateStatus.NOT_RECEIVED;\n case CertificateFilter.AUDIT_PASSING:\n return item.certificateStatus === CertificateStatus.AUDIT_PASSING;\n case CertificateFilter.AUDIT_NOT_PASSING:\n return item.certificateStatus === CertificateStatus.AUDIT_NOT_PASSING;\n case CertificateFilter.ERROR_STATE:\n return item.certificateStatus === CertificateStatus.ERROR_STATE;\n case CertificateFilter.GRANTED_EXCEPTIONS:\n return item.specialCase === SpecialCase.EXCEPTION;\n case CertificateFilter.INVALIDATED:\n return item.specialCase === SpecialCase.INVALIDATION;\n case CertificateFilter.ALL_LEARNERS:\n default:\n return true;\n }\n};\n\nexport const matchesSearch = (item: CertificateData, search: string): boolean => {\n if (!search) return true;\n const searchLower = search.toLowerCase();\n return (\n item.username.toLowerCase().includes(searchLower)\n || item.email.toLowerCase().includes(searchLower)\n );\n};\n\nexport const filterCertificates = (\n data: CertificateData[],\n filter: CertificateFilter,\n search: string,\n): CertificateData[] =>\n data.filter((item) => matchesFilter(item, filter) && matchesSearch(item, search));\n"]}
@@ -0,0 +1,2 @@
1
+ export { getErrorMessage } from './errorHandling';
2
+ export type { ApiError } from './errorHandling';
@@ -0,0 +1,2 @@
1
+ export { getErrorMessage } from './errorHandling';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/certificates/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["export { getErrorMessage } from './errorHandling';\nexport type { ApiError } from './errorHandling';\n"]}
@@ -1,7 +1,7 @@
1
1
  export declare const cohortsQueryKeys: {
2
- all: readonly ["org.openedx.frontend.app.instructor", "cohorts"];
3
- byCourse: (courseId: string) => readonly ["org.openedx.frontend.app.instructor", "cohorts", "byCourse", string];
4
- list: (courseId: string) => readonly ["org.openedx.frontend.app.instructor", "cohorts", "byCourse", string, string, "list"];
2
+ all: readonly ["org.openedx.frontend.app.instructorDashboard", "cohorts"];
3
+ byCourse: (courseId: string) => readonly ["org.openedx.frontend.app.instructorDashboard", "cohorts", "byCourse", string];
4
+ list: (courseId: string) => readonly ["org.openedx.frontend.app.instructorDashboard", "cohorts", "byCourse", string, string, "list"];
5
5
  enabled: (courseId: string) => readonly ["cohortsEnabled", string];
6
- contentGroups: (courseId: string) => readonly ["org.openedx.frontend.app.instructor", "cohorts", "byCourse", string, "contentGroups"];
6
+ contentGroups: (courseId: string) => readonly ["org.openedx.frontend.app.instructorDashboard", "cohorts", "byCourse", string, "contentGroups"];
7
7
  };
@@ -1,5 +1,5 @@
1
- interface ActionCardProps {
2
- buttonLabel: string;
1
+ export interface ActionCardProps {
2
+ buttonLabel?: string;
3
3
  customAction?: React.ReactNode;
4
4
  description: string;
5
5
  hasBorderBottom?: boolean;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Button, Card } from '@openedx/paragon';
3
3
  const ActionCard = ({ buttonLabel, customAction, description, hasBorderBottom = true, isLoading = false, title, onButtonClick, }) => {
4
- return (_jsxs(Card, { className: `bg-light-200 py-2 border-gray-500 rounded-0 shadow-none ${hasBorderBottom ? 'border-bottom' : ''}`, orientation: "horizontal", children: [_jsx(Card.Body, { className: "flex-grow-1", children: _jsxs(Card.Section, { children: [_jsx("h4", { className: "mb-2", children: title }), _jsx("p", { className: "text-muted mb-0", children: description })] }) }), _jsx(Card.Footer, { className: "d-flex align-items-center justify-content-end", children: customAction !== null && customAction !== void 0 ? customAction : (_jsx(Button, { onClick: onButtonClick, disabled: isLoading, variant: "primary", children: buttonLabel })) })] }));
4
+ return (_jsxs(Card, { className: `bg-light-200 pb-2 mt-2 border-gray-500 rounded-0 shadow-none ${hasBorderBottom ? 'border-bottom' : ''}`, orientation: "horizontal", children: [_jsx(Card.Body, { className: "flex-grow-1", children: _jsxs(Card.Section, { className: "pl-0", children: [_jsx("h4", { className: "text-primary-700 mb-2", children: title }), _jsx("p", { className: "text-primary-500 mb-0", children: description })] }) }), _jsx(Card.Footer, { className: "d-flex align-items-center justify-content-end", children: customAction !== null && customAction !== void 0 ? customAction : (buttonLabel && onButtonClick && (_jsx(Button, { onClick: onButtonClick, disabled: isLoading, variant: "primary", children: buttonLabel }))) })] }));
5
5
  };
6
6
  export default ActionCard;
7
7
  //# sourceMappingURL=ActionCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionCard.js","sourceRoot":"","sources":["../../src/components/ActionCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAYhD,MAAM,UAAU,GAAG,CAAC,EAClB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,eAAe,GAAG,IAAI,EACtB,SAAS,GAAG,KAAK,EACjB,KAAK,EACL,aAAa,GACG,EAAE,EAAE;IACpB,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAE,2DAA2D,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,EAAC,YAAY,aAC5I,KAAC,IAAI,CAAC,IAAI,IAAC,SAAS,EAAC,aAAa,YAChC,MAAC,IAAI,CAAC,OAAO,eACX,aAAI,SAAS,EAAC,MAAM,YAAE,KAAK,GAAM,EACjC,YAAG,SAAS,EAAC,iBAAiB,YAAE,WAAW,GAAK,IACnC,GACL,EACZ,KAAC,IAAI,CAAC,MAAM,IAAC,SAAS,EAAC,+CAA+C,YACnE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,CACf,KAAC,MAAM,IACL,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAC,SAAS,YAEhB,WAAW,GACL,CACV,GACW,IACT,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import { Button, Card } from '@openedx/paragon';\n\ninterface ActionCardProps {\n buttonLabel: string,\n customAction?: React.ReactNode,\n description: string,\n hasBorderBottom?: boolean,\n isLoading?: boolean,\n title: string,\n onButtonClick?: () => void,\n}\n\nconst ActionCard = ({\n buttonLabel,\n customAction,\n description,\n hasBorderBottom = true,\n isLoading = false,\n title,\n onButtonClick,\n}: ActionCardProps) => {\n return (\n <Card className={`bg-light-200 py-2 border-gray-500 rounded-0 shadow-none ${hasBorderBottom ? 'border-bottom' : ''}`} orientation=\"horizontal\">\n <Card.Body className=\"flex-grow-1\">\n <Card.Section>\n <h4 className=\"mb-2\">{title}</h4>\n <p className=\"text-muted mb-0\">{description}</p>\n </Card.Section>\n </Card.Body>\n <Card.Footer className=\"d-flex align-items-center justify-content-end\">\n {customAction ?? (\n <Button\n onClick={onButtonClick}\n disabled={isLoading}\n variant=\"primary\"\n >\n {buttonLabel}\n </Button>\n )}\n </Card.Footer>\n </Card>\n );\n};\n\nexport default ActionCard;\n"]}
1
+ {"version":3,"file":"ActionCard.js","sourceRoot":"","sources":["../../src/components/ActionCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAYhD,MAAM,UAAU,GAAG,CAAC,EAClB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,eAAe,GAAG,IAAI,EACtB,SAAS,GAAG,KAAK,EACjB,KAAK,EACL,aAAa,GACG,EAAE,EAAE;IACpB,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAE,gEAAgE,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,EAAC,YAAY,aACjJ,KAAC,IAAI,CAAC,IAAI,IAAC,SAAS,EAAC,aAAa,YAChC,MAAC,IAAI,CAAC,OAAO,IAAC,SAAS,EAAC,MAAM,aAC5B,aAAI,SAAS,EAAC,uBAAuB,YAAE,KAAK,GAAM,EAClD,YAAG,SAAS,EAAC,uBAAuB,YAAE,WAAW,GAAK,IACzC,GACL,EACZ,KAAC,IAAI,CAAC,MAAM,IAAC,SAAS,EAAC,+CAA+C,YACnE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,CAAC,WAAW,IAAI,aAAa,IAAI,CAChD,KAAC,MAAM,IACL,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAC,SAAS,YAEhB,WAAW,GACL,CACV,CAAC,GACU,IACT,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import { Button, Card } from '@openedx/paragon';\n\nexport interface ActionCardProps {\n buttonLabel?: string,\n customAction?: React.ReactNode,\n description: string,\n hasBorderBottom?: boolean,\n isLoading?: boolean,\n title: string,\n onButtonClick?: () => void,\n}\n\nconst ActionCard = ({\n buttonLabel,\n customAction,\n description,\n hasBorderBottom = true,\n isLoading = false,\n title,\n onButtonClick,\n}: ActionCardProps) => {\n return (\n <Card className={`bg-light-200 pb-2 mt-2 border-gray-500 rounded-0 shadow-none ${hasBorderBottom ? 'border-bottom' : ''}`} orientation=\"horizontal\">\n <Card.Body className=\"flex-grow-1\">\n <Card.Section className=\"pl-0\">\n <h4 className=\"text-primary-700 mb-2\">{title}</h4>\n <p className=\"text-primary-500 mb-0\">{description}</p>\n </Card.Section>\n </Card.Body>\n <Card.Footer className=\"d-flex align-items-center justify-content-end\">\n {customAction ?? (buttonLabel && onButtonClick && (\n <Button\n onClick={onButtonClick}\n disabled={isLoading}\n variant=\"primary\"\n >\n {buttonLabel}\n </Button>\n ))}\n </Card.Footer>\n </Card>\n );\n};\n\nexport default ActionCard;\n"]}
@@ -1,5 +1,7 @@
1
1
  interface PendingTasksProps {
2
2
  isPolling?: boolean;
3
+ isOpen?: boolean;
4
+ onToggle?: () => void;
3
5
  }
4
- declare const PendingTasks: ({ isPolling }: PendingTasksProps) => import("react/jsx-runtime").JSX.Element;
6
+ declare const PendingTasks: ({ isPolling, isOpen, onToggle }: PendingTasksProps) => import("react/jsx-runtime").JSX.Element;
5
7
  export { PendingTasks };
@@ -7,7 +7,7 @@ import { ExpandLess, ExpandMore } from '@openedx/paragon/icons';
7
7
  import { usePendingTasks } from '../data/apiHook';
8
8
  import { useParams } from 'react-router';
9
9
  import { ObjectCell } from './ObjectCell';
10
- const PendingTasks = ({ isPolling = false }) => {
10
+ const PendingTasks = ({ isPolling = false, isOpen = false, onToggle }) => {
11
11
  const intl = useIntl();
12
12
  const { courseId = '' } = useParams();
13
13
  const { data: tasks, isLoading } = usePendingTasks(courseId, { enablePolling: isPolling });
@@ -32,7 +32,8 @@ const PendingTasks = ({ isPolling = false }) => {
32
32
  }
33
33
  return (_jsx(DataTable, { columns: tableColumns, data: tasks, RowStatusComponent: () => null }));
34
34
  };
35
- return (_jsxs(Collapsible.Advanced, { className: "mt-4 pt-4 border-top", styling: "basic", children: [_jsxs(Collapsible.Trigger, { className: "collapsible-trigger d-flex border-0 align-items-center text-decoration-none", children: [_jsx("div", { className: "d-flex", children: _jsx("h3", { className: "text-primary-700", children: intl.formatMessage(messages.pendingTasksTitle) }) }), _jsx(Collapsible.Visible, { whenClosed: true, children: _jsx("div", { className: "pl-2 d-flex", children: _jsx(Icon, { className: "text-primary-500", src: ExpandMore }) }) }), _jsx(Collapsible.Visible, { whenOpen: true, children: _jsx("div", { className: "pl-2 d-flex", children: _jsx(Icon, { className: "text-primary-500", src: ExpandLess }) }) })] }), _jsx(Collapsible.Body, { children: renderContent() })] }));
35
+ const collapsibleProps = onToggle ? { open: isOpen, onToggle } : {};
36
+ return (_jsxs(Collapsible.Advanced, Object.assign({ className: "mt-4 pt-4 border-top", styling: "basic" }, collapsibleProps, { children: [_jsxs(Collapsible.Trigger, { className: "collapsible-trigger d-flex border-0 align-items-center text-decoration-none", children: [_jsx("div", { className: "d-flex", children: _jsx("h3", { className: "text-primary-700", children: intl.formatMessage(messages.pendingTasksTitle) }) }), _jsx(Collapsible.Visible, { whenClosed: true, children: _jsx("div", { className: "pl-2 d-flex", children: _jsx(Icon, { className: "text-primary-500", src: ExpandMore }) }) }), _jsx(Collapsible.Visible, { whenOpen: true, children: _jsx("div", { className: "pl-2 d-flex", children: _jsx(Icon, { className: "text-primary-500", src: ExpandLess }) }) })] }), _jsx(Collapsible.Body, { children: renderContent() })] })));
36
37
  };
37
38
  export { PendingTasks };
38
39
  //# sourceMappingURL=PendingTasks.js.map