@openedx/frontend-app-instructor-dashboard 1.0.0-alpha.4 → 1.0.0-alpha.40

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 (301) hide show
  1. package/dist/Main.d.ts +1 -1
  2. package/dist/Main.js +11 -18
  3. package/dist/Main.js.map +1 -1
  4. package/dist/app.js +0 -6
  5. package/dist/app.js.map +1 -1
  6. package/dist/certificates/CertificatesPage.d.ts +1 -0
  7. package/dist/certificates/CertificatesPage.js +312 -2
  8. package/dist/certificates/CertificatesPage.js.map +1 -1
  9. package/dist/certificates/CertificatesPage.scss +90 -0
  10. package/dist/certificates/components/CertificateTable.d.ts +14 -0
  11. package/dist/certificates/components/CertificateTable.js +88 -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 +11 -0
  17. package/dist/certificates/components/CertificatesToolbar.js +33 -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 +24 -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/GenerateCertificatesModal.d.ts +9 -0
  26. package/dist/certificates/components/GenerateCertificatesModal.js +19 -0
  27. package/dist/certificates/components/GenerateCertificatesModal.js.map +1 -0
  28. package/dist/certificates/components/GenerationHistoryTable.d.ts +11 -0
  29. package/dist/certificates/components/GenerationHistoryTable.js +25 -0
  30. package/dist/certificates/components/GenerationHistoryTable.js.map +1 -0
  31. package/dist/certificates/components/GrantExceptionsModal.d.ts +9 -0
  32. package/dist/certificates/components/GrantExceptionsModal.js +55 -0
  33. package/dist/certificates/components/GrantExceptionsModal.js.map +1 -0
  34. package/dist/certificates/components/InvalidateCertificateModal.d.ts +8 -0
  35. package/dist/certificates/components/InvalidateCertificateModal.js +26 -0
  36. package/dist/certificates/components/InvalidateCertificateModal.js.map +1 -0
  37. package/dist/certificates/components/IssuedCertificatesTab.d.ts +18 -0
  38. package/dist/certificates/components/IssuedCertificatesTab.js +6 -0
  39. package/dist/certificates/components/IssuedCertificatesTab.js.map +1 -0
  40. package/dist/certificates/components/LearnerActionModal.d.ts +16 -0
  41. package/dist/certificates/components/LearnerActionModal.js +27 -0
  42. package/dist/certificates/components/LearnerActionModal.js.map +1 -0
  43. package/dist/certificates/components/RegenerateCertificatesModal.d.ts +11 -0
  44. package/dist/certificates/components/RegenerateCertificatesModal.js +46 -0
  45. package/dist/certificates/components/RegenerateCertificatesModal.js.map +1 -0
  46. package/dist/certificates/components/RemoveExceptionModal.d.ts +9 -0
  47. package/dist/certificates/components/RemoveExceptionModal.js +10 -0
  48. package/dist/certificates/components/RemoveExceptionModal.js.map +1 -0
  49. package/dist/certificates/components/RemoveInvalidationModal.d.ts +9 -0
  50. package/dist/certificates/components/RemoveInvalidationModal.js +10 -0
  51. package/dist/certificates/components/RemoveInvalidationModal.js.map +1 -0
  52. package/dist/certificates/constants.d.ts +15 -0
  53. package/dist/certificates/constants.js +16 -0
  54. package/dist/certificates/constants.js.map +1 -0
  55. package/dist/certificates/data/api.d.ts +30 -0
  56. package/dist/certificates/data/api.js +126 -0
  57. package/dist/certificates/data/api.js.map +1 -0
  58. package/dist/certificates/data/apiHook.d.ts +63 -0
  59. package/dist/certificates/data/apiHook.js +133 -0
  60. package/dist/certificates/data/apiHook.js.map +1 -0
  61. package/dist/certificates/data/queryKeys.d.ts +9 -0
  62. package/dist/certificates/data/queryKeys.js +9 -0
  63. package/dist/certificates/data/queryKeys.js.map +1 -0
  64. package/dist/certificates/messages.d.ts +548 -0
  65. package/dist/certificates/messages.js +550 -0
  66. package/dist/certificates/messages.js.map +1 -0
  67. package/dist/certificates/types.d.ts +66 -0
  68. package/dist/certificates/types.js +26 -0
  69. package/dist/certificates/types.js.map +1 -0
  70. package/dist/certificates/utils/errorHandling.d.ts +12 -0
  71. package/dist/certificates/utils/errorHandling.js +24 -0
  72. package/dist/certificates/utils/errorHandling.js.map +1 -0
  73. package/dist/certificates/utils/filterUtils.d.ts +4 -0
  74. package/dist/certificates/utils/filterUtils.js +31 -0
  75. package/dist/certificates/utils/filterUtils.js.map +1 -0
  76. package/dist/certificates/utils/index.d.ts +2 -0
  77. package/dist/certificates/utils/index.js +2 -0
  78. package/dist/certificates/utils/index.js.map +1 -0
  79. package/dist/components/ActionCard.d.ts +2 -2
  80. package/dist/components/ActionCard.js +1 -1
  81. package/dist/components/ActionCard.js.map +1 -1
  82. package/dist/components/CodeEditor.d.ts +5 -0
  83. package/dist/components/CodeEditor.js +34 -0
  84. package/dist/components/CodeEditor.js.map +1 -0
  85. package/dist/components/PendingTasks.d.ts +3 -1
  86. package/dist/components/PendingTasks.js +3 -2
  87. package/dist/components/PendingTasks.js.map +1 -1
  88. package/dist/components/SpecifyLearnerField.d.ts +4 -1
  89. package/dist/components/SpecifyLearnerField.js +55 -15
  90. package/dist/components/SpecifyLearnerField.js.map +1 -1
  91. package/dist/components/SpecifyProblemField.d.ts +13 -0
  92. package/dist/components/SpecifyProblemField.js +52 -0
  93. package/dist/components/SpecifyProblemField.js.map +1 -0
  94. package/dist/components/UsernameFilter.d.ts +7 -0
  95. package/dist/components/UsernameFilter.js +19 -0
  96. package/dist/components/UsernameFilter.js.map +1 -0
  97. package/dist/components/messages.d.ts +45 -0
  98. package/dist/components/messages.js +45 -0
  99. package/dist/components/messages.js.map +1 -1
  100. package/dist/courseInfo/types.d.ts +5 -0
  101. package/dist/courseInfo/types.js.map +1 -1
  102. package/dist/courseTeam/CourseTeamPage.js +25 -2
  103. package/dist/courseTeam/CourseTeamPage.js.map +1 -1
  104. package/dist/courseTeam/components/AddTeamMemberModal.d.ts +6 -0
  105. package/dist/courseTeam/components/AddTeamMemberModal.js +61 -0
  106. package/dist/courseTeam/components/AddTeamMemberModal.js.map +1 -0
  107. package/dist/courseTeam/components/EditTeamMemberModal.d.ts +8 -0
  108. package/dist/courseTeam/components/EditTeamMemberModal.js +102 -0
  109. package/dist/courseTeam/components/EditTeamMemberModal.js.map +1 -0
  110. package/dist/courseTeam/components/MembersContent.d.ts +6 -0
  111. package/dist/courseTeam/components/MembersContent.js +48 -0
  112. package/dist/courseTeam/components/MembersContent.js.map +1 -0
  113. package/dist/courseTeam/components/RoleFilter.d.ts +7 -0
  114. package/dist/courseTeam/components/RoleFilter.js +22 -0
  115. package/dist/courseTeam/components/RoleFilter.js.map +1 -0
  116. package/dist/courseTeam/components/RolesContent.d.ts +3 -0
  117. package/dist/courseTeam/components/RolesContent.js +25 -0
  118. package/dist/courseTeam/components/RolesContent.js.map +1 -0
  119. package/dist/courseTeam/constants.d.ts +3 -0
  120. package/dist/courseTeam/constants.js +4 -0
  121. package/dist/courseTeam/constants.js.map +1 -0
  122. package/dist/courseTeam/data/api.d.ts +6 -0
  123. package/dist/courseTeam/data/api.js +38 -0
  124. package/dist/courseTeam/data/api.js.map +1 -0
  125. package/dist/courseTeam/data/apiHook.d.ts +8 -0
  126. package/dist/courseTeam/data/apiHook.js +32 -0
  127. package/dist/courseTeam/data/apiHook.js.map +1 -0
  128. package/dist/courseTeam/data/queryKeys.d.ts +7 -0
  129. package/dist/courseTeam/data/queryKeys.js +14 -0
  130. package/dist/courseTeam/data/queryKeys.js.map +1 -0
  131. package/dist/courseTeam/messages.d.ts +258 -0
  132. package/dist/courseTeam/messages.js +260 -0
  133. package/dist/courseTeam/messages.js.map +1 -0
  134. package/dist/courseTeam/types.d.ts +29 -0
  135. package/dist/courseTeam/types.js +3 -0
  136. package/dist/courseTeam/types.js.map +1 -0
  137. package/dist/data/api.d.ts +2 -1
  138. package/dist/data/api.js +9 -3
  139. package/dist/data/api.js.map +1 -1
  140. package/dist/data/apiHook.d.ts +1 -0
  141. package/dist/data/apiHook.js +11 -2
  142. package/dist/data/apiHook.js.map +1 -1
  143. package/dist/data/queryKeys.d.ts +4 -0
  144. package/dist/data/queryKeys.js +4 -0
  145. package/dist/data/queryKeys.js.map +1 -1
  146. package/dist/data/utils.d.ts +2 -0
  147. package/dist/data/utils.js +9 -0
  148. package/dist/data/utils.js.map +1 -0
  149. package/dist/dateExtensions/components/AddExtensionModal.d.ts +1 -1
  150. package/dist/dateExtensions/components/AddExtensionModal.js +6 -7
  151. package/dist/dateExtensions/components/AddExtensionModal.js.map +1 -1
  152. package/dist/dateExtensions/components/DateExtensionsList.js +3 -14
  153. package/dist/dateExtensions/components/DateExtensionsList.js.map +1 -1
  154. package/dist/dateExtensions/data/apiHook.d.ts +2 -2
  155. package/dist/dateExtensions/data/apiHook.js +4 -4
  156. package/dist/dateExtensions/data/apiHook.js.map +1 -1
  157. package/dist/dateExtensions/messages.d.ts +0 -5
  158. package/dist/dateExtensions/messages.js +1 -6
  159. package/dist/dateExtensions/messages.js.map +1 -1
  160. package/dist/enrollments/EnrollmentsPage.js +34 -7
  161. package/dist/enrollments/EnrollmentsPage.js.map +1 -1
  162. package/dist/enrollments/components/AddBetaTestersModal.d.ts +6 -0
  163. package/dist/enrollments/components/AddBetaTestersModal.js +69 -0
  164. package/dist/enrollments/components/AddBetaTestersModal.js.map +1 -0
  165. package/dist/enrollments/components/EnrollLearnersModal.d.ts +6 -0
  166. package/dist/enrollments/components/EnrollLearnersModal.js +53 -0
  167. package/dist/enrollments/components/EnrollLearnersModal.js.map +1 -0
  168. package/dist/enrollments/components/EnrollmentStatusModal.js +3 -3
  169. package/dist/enrollments/components/EnrollmentStatusModal.js.map +1 -1
  170. package/dist/enrollments/components/EnrollmentsList.d.ts +3 -2
  171. package/dist/enrollments/components/EnrollmentsList.js +13 -14
  172. package/dist/enrollments/components/EnrollmentsList.js.map +1 -1
  173. package/dist/enrollments/components/UnenrollModal.d.ts +1 -1
  174. package/dist/enrollments/components/UnenrollModal.js +29 -3
  175. package/dist/enrollments/components/UnenrollModal.js.map +1 -1
  176. package/dist/enrollments/components/UpdateBetaTesterModal.d.ts +8 -0
  177. package/dist/enrollments/components/UpdateBetaTesterModal.js +72 -0
  178. package/dist/enrollments/components/UpdateBetaTesterModal.js.map +1 -0
  179. package/dist/enrollments/data/api.d.ts +3 -1
  180. package/dist/enrollments/data/api.js +11 -1
  181. package/dist/enrollments/data/api.js.map +1 -1
  182. package/dist/enrollments/data/apiHook.d.ts +5 -3
  183. package/dist/enrollments/data/apiHook.js +21 -3
  184. package/dist/enrollments/data/apiHook.js.map +1 -1
  185. package/dist/enrollments/data/queryKeys.d.ts +1 -1
  186. package/dist/enrollments/data/queryKeys.js.map +1 -1
  187. package/dist/enrollments/messages.d.ts +131 -1
  188. package/dist/enrollments/messages.js +136 -6
  189. package/dist/enrollments/messages.js.map +1 -1
  190. package/dist/enrollments/types.d.ts +25 -0
  191. package/dist/enrollments/types.js.map +1 -1
  192. package/dist/grading/GradingPage.js +15 -2
  193. package/dist/grading/GradingPage.js.map +1 -1
  194. package/dist/grading/components/GradingActionRow.d.ts +2 -0
  195. package/dist/grading/components/GradingActionRow.js +20 -0
  196. package/dist/grading/components/GradingActionRow.js.map +1 -0
  197. package/dist/grading/components/GradingConfigurationModal.d.ts +6 -0
  198. package/dist/grading/components/GradingConfigurationModal.js +15 -0
  199. package/dist/grading/components/GradingConfigurationModal.js.map +1 -0
  200. package/dist/grading/components/GradingLearnerContent.d.ts +7 -0
  201. package/dist/grading/components/GradingLearnerContent.js +199 -0
  202. package/dist/grading/components/GradingLearnerContent.js.map +1 -0
  203. package/dist/grading/data/api.d.ts +6 -0
  204. package/dist/grading/data/api.js +59 -0
  205. package/dist/grading/data/api.js.map +1 -0
  206. package/dist/grading/data/apiHook.d.ts +6 -0
  207. package/dist/grading/data/apiHook.js +29 -0
  208. package/dist/grading/data/apiHook.js.map +1 -0
  209. package/dist/grading/data/queryKeys.d.ts +9 -0
  210. package/dist/grading/data/queryKeys.js +8 -0
  211. package/dist/grading/data/queryKeys.js.map +1 -0
  212. package/dist/grading/messages.d.ts +248 -0
  213. package/dist/grading/messages.js +250 -0
  214. package/dist/grading/messages.js.map +1 -0
  215. package/dist/grading/types.d.ts +11 -0
  216. package/dist/grading/types.js +2 -0
  217. package/dist/grading/types.js.map +1 -0
  218. package/dist/hooks/useDebouncedFilter.d.ts +1 -0
  219. package/dist/hooks/useDebouncedFilter.js +5 -0
  220. package/dist/hooks/useDebouncedFilter.js.map +1 -1
  221. package/dist/instructorNav/InstructorNav.js +16 -4
  222. package/dist/instructorNav/InstructorNav.js.map +1 -1
  223. package/dist/messages.d.ts +8 -0
  224. package/dist/messages.js +10 -0
  225. package/dist/messages.js.map +1 -0
  226. package/dist/pageWrapper/PageWrapper.js +3 -1
  227. package/dist/pageWrapper/PageWrapper.js.map +1 -1
  228. package/dist/providers/AccessErrorObserver.d.ts +9 -0
  229. package/dist/providers/AccessErrorObserver.js +35 -0
  230. package/dist/providers/AccessErrorObserver.js.map +1 -0
  231. package/dist/providers/AccessErrorProvider.d.ts +19 -0
  232. package/dist/providers/AccessErrorProvider.js +51 -0
  233. package/dist/providers/AccessErrorProvider.js.map +1 -0
  234. package/dist/providers/messages.d.ts +33 -0
  235. package/dist/providers/messages.js +35 -0
  236. package/dist/providers/messages.js.map +1 -0
  237. package/dist/provides.d.ts +2 -1
  238. package/dist/provides.js +3 -2
  239. package/dist/provides.js.map +1 -1
  240. package/dist/routes.d.ts +1 -1
  241. package/dist/routes.js +2 -2
  242. package/dist/routes.js.map +1 -1
  243. package/dist/slots/CourseInfoSlot/CourseInfoSlot.d.ts +2 -0
  244. package/dist/slots/CourseInfoSlot/CourseInfoSlot.js +14 -0
  245. package/dist/slots/CourseInfoSlot/CourseInfoSlot.js.map +1 -0
  246. package/dist/slots.js +13 -1
  247. package/dist/slots.js.map +1 -1
  248. package/dist/specialExams/SpecialExamsPage.js +14 -2
  249. package/dist/specialExams/SpecialExamsPage.js.map +1 -1
  250. package/dist/specialExams/components/AddAllowanceModal.d.ts +6 -0
  251. package/dist/specialExams/components/AddAllowanceModal.js +84 -0
  252. package/dist/specialExams/components/AddAllowanceModal.js.map +1 -0
  253. package/dist/specialExams/components/Allowances.d.ts +2 -0
  254. package/dist/specialExams/components/Allowances.js +89 -0
  255. package/dist/specialExams/components/Allowances.js.map +1 -0
  256. package/dist/specialExams/components/AllowancesList.d.ts +8 -0
  257. package/dist/specialExams/components/AllowancesList.js +63 -0
  258. package/dist/specialExams/components/AllowancesList.js.map +1 -0
  259. package/dist/specialExams/components/AttemptsList.d.ts +3 -0
  260. package/dist/specialExams/components/AttemptsList.js +50 -0
  261. package/dist/specialExams/components/AttemptsList.js.map +1 -0
  262. package/dist/specialExams/components/DeleteAllowanceModal.d.ts +8 -0
  263. package/dist/specialExams/components/DeleteAllowanceModal.js +29 -0
  264. package/dist/specialExams/components/DeleteAllowanceModal.js.map +1 -0
  265. package/dist/specialExams/components/EditAllowanceModal.d.ts +8 -0
  266. package/dist/specialExams/components/EditAllowanceModal.js +62 -0
  267. package/dist/specialExams/components/EditAllowanceModal.js.map +1 -0
  268. package/dist/specialExams/constants.d.ts +43 -0
  269. package/dist/specialExams/constants.js +19 -0
  270. package/dist/specialExams/constants.js.map +1 -0
  271. package/dist/specialExams/data/api.d.ts +7 -0
  272. package/dist/specialExams/data/api.js +55 -0
  273. package/dist/specialExams/data/api.js.map +1 -0
  274. package/dist/specialExams/data/apiHook.d.ts +6 -0
  275. package/dist/specialExams/data/apiHook.js +37 -0
  276. package/dist/specialExams/data/apiHook.js.map +1 -0
  277. package/dist/specialExams/data/queryKeys.d.ts +8 -0
  278. package/dist/specialExams/data/queryKeys.js +9 -0
  279. package/dist/specialExams/data/queryKeys.js.map +1 -0
  280. package/dist/specialExams/messages.d.ts +228 -0
  281. package/dist/specialExams/messages.js +230 -0
  282. package/dist/specialExams/messages.js.map +1 -0
  283. package/dist/specialExams/types.d.ts +65 -0
  284. package/dist/specialExams/types.js +2 -0
  285. package/dist/specialExams/types.js.map +1 -0
  286. package/dist/style.scss +16 -0
  287. package/dist/testUtils.js +2 -2
  288. package/dist/testUtils.js.map +1 -1
  289. package/dist/types/index.d.ts +15 -0
  290. package/dist/types/index.js.map +1 -1
  291. package/dist/utils/formatters.d.ts +5 -0
  292. package/dist/utils/formatters.js +10 -0
  293. package/dist/utils/formatters.js.map +1 -1
  294. package/package.json +6 -6
  295. package/dist/app.scss +0 -10
  296. package/dist/providers/QueryProvider.d.ts +0 -6
  297. package/dist/providers/QueryProvider.js +0 -16
  298. package/dist/providers/QueryProvider.js.map +0 -1
  299. package/dist/providers.d.ts +0 -3
  300. package/dist/providers.js +0 -8
  301. package/dist/providers.js.map +0 -1
@@ -0,0 +1,228 @@
1
+ declare const messages: {
2
+ specialExamsTitle: {
3
+ id: string;
4
+ defaultMessage: string;
5
+ description: string;
6
+ };
7
+ examAttempts: {
8
+ id: string;
9
+ defaultMessage: string;
10
+ description: string;
11
+ };
12
+ allowances: {
13
+ id: string;
14
+ defaultMessage: string;
15
+ description: string;
16
+ };
17
+ username: {
18
+ id: string;
19
+ defaultMessage: string;
20
+ description: string;
21
+ };
22
+ examName: {
23
+ id: string;
24
+ defaultMessage: string;
25
+ description: string;
26
+ };
27
+ timeLimit: {
28
+ id: string;
29
+ defaultMessage: string;
30
+ description: string;
31
+ };
32
+ type: {
33
+ id: string;
34
+ defaultMessage: string;
35
+ description: string;
36
+ };
37
+ startedAt: {
38
+ id: string;
39
+ defaultMessage: string;
40
+ description: string;
41
+ };
42
+ completedAt: {
43
+ id: string;
44
+ defaultMessage: string;
45
+ description: string;
46
+ };
47
+ status: {
48
+ id: string;
49
+ defaultMessage: string;
50
+ description: string;
51
+ };
52
+ noAttempts: {
53
+ id: string;
54
+ defaultMessage: string;
55
+ description: string;
56
+ };
57
+ noAllowances: {
58
+ id: string;
59
+ defaultMessage: string;
60
+ description: string;
61
+ };
62
+ editAllowance: {
63
+ id: string;
64
+ defaultMessage: string;
65
+ description: string;
66
+ };
67
+ email: {
68
+ id: string;
69
+ defaultMessage: string;
70
+ description: string;
71
+ };
72
+ allowanceType: {
73
+ id: string;
74
+ defaultMessage: string;
75
+ description: string;
76
+ };
77
+ allowanceValue: {
78
+ id: string;
79
+ defaultMessage: string;
80
+ description: string;
81
+ };
82
+ addAllowance: {
83
+ id: string;
84
+ defaultMessage: string;
85
+ description: string;
86
+ };
87
+ cancel: {
88
+ id: string;
89
+ defaultMessage: string;
90
+ description: string;
91
+ };
92
+ createAllowance: {
93
+ id: string;
94
+ defaultMessage: string;
95
+ description: string;
96
+ };
97
+ specifyLearners: {
98
+ id: string;
99
+ defaultMessage: string;
100
+ description: string;
101
+ };
102
+ specifyLearnersPlaceholder: {
103
+ id: string;
104
+ defaultMessage: string;
105
+ description: string;
106
+ };
107
+ selectExamType: {
108
+ id: string;
109
+ defaultMessage: string;
110
+ description: string;
111
+ };
112
+ selectExams: {
113
+ id: string;
114
+ defaultMessage: string;
115
+ description: string;
116
+ };
117
+ selectAllowanceType: {
118
+ id: string;
119
+ defaultMessage: string;
120
+ description: string;
121
+ };
122
+ addTime: {
123
+ id: string;
124
+ defaultMessage: string;
125
+ description: string;
126
+ };
127
+ addTimePlaceholder: {
128
+ id: string;
129
+ defaultMessage: string;
130
+ description: string;
131
+ };
132
+ actions: {
133
+ id: string;
134
+ defaultMessage: string;
135
+ description: string;
136
+ };
137
+ proctored: {
138
+ id: string;
139
+ defaultMessage: string;
140
+ description: string;
141
+ };
142
+ timed: {
143
+ id: string;
144
+ defaultMessage: string;
145
+ description: string;
146
+ };
147
+ timeMultiplier: {
148
+ id: string;
149
+ defaultMessage: string;
150
+ description: string;
151
+ };
152
+ additionalTime: {
153
+ id: string;
154
+ defaultMessage: string;
155
+ description: string;
156
+ };
157
+ reviewPolicy: {
158
+ id: string;
159
+ defaultMessage: string;
160
+ description: string;
161
+ };
162
+ exceptionPlaceholder: {
163
+ id: string;
164
+ defaultMessage: string;
165
+ description: string;
166
+ };
167
+ timeMultiplierPlaceholder: {
168
+ id: string;
169
+ defaultMessage: string;
170
+ description: string;
171
+ };
172
+ edit: {
173
+ id: string;
174
+ defaultMessage: string;
175
+ description: string;
176
+ };
177
+ delete: {
178
+ id: string;
179
+ defaultMessage: string;
180
+ description: string;
181
+ };
182
+ deleteAllowance: {
183
+ id: string;
184
+ defaultMessage: string;
185
+ description: string;
186
+ };
187
+ deleteConfirmation: {
188
+ id: string;
189
+ defaultMessage: string;
190
+ description: string;
191
+ };
192
+ deleteError: {
193
+ id: string;
194
+ defaultMessage: string;
195
+ description: string;
196
+ };
197
+ addAdditionalTimeGranted: {
198
+ id: string;
199
+ defaultMessage: string;
200
+ description: string;
201
+ };
202
+ addReviewPolicyException: {
203
+ id: string;
204
+ defaultMessage: string;
205
+ description: string;
206
+ };
207
+ addTimeMultiplier: {
208
+ id: string;
209
+ defaultMessage: string;
210
+ description: string;
211
+ };
212
+ addAllowanceError: {
213
+ id: string;
214
+ defaultMessage: string;
215
+ description: string;
216
+ };
217
+ editAllowanceError: {
218
+ id: string;
219
+ defaultMessage: string;
220
+ description: string;
221
+ };
222
+ cannotModifyAllowance: {
223
+ id: string;
224
+ defaultMessage: string;
225
+ description: string;
226
+ };
227
+ };
228
+ export default messages;
@@ -0,0 +1,230 @@
1
+ import { defineMessages } from '@openedx/frontend-base';
2
+ const messages = defineMessages({
3
+ specialExamsTitle: {
4
+ id: 'instruct.specialExams.title',
5
+ defaultMessage: 'Special Exams',
6
+ description: 'Title for the special exams page'
7
+ },
8
+ examAttempts: {
9
+ id: 'instruct.specialExams.examAttempts',
10
+ defaultMessage: 'Exam Attempts',
11
+ description: 'Label for the exam attempts tab'
12
+ },
13
+ allowances: {
14
+ id: 'instruct.specialExams.allowances',
15
+ defaultMessage: 'Allowances',
16
+ description: 'Label for the allowances tab'
17
+ },
18
+ username: {
19
+ id: 'instruct.specialExams.username',
20
+ defaultMessage: 'Username',
21
+ description: 'Column header for username in exam attempts list',
22
+ },
23
+ examName: {
24
+ id: 'instruct.specialExams.examName',
25
+ defaultMessage: 'Exam Name',
26
+ description: 'Column header for exam name in exam attempts list',
27
+ },
28
+ timeLimit: {
29
+ id: 'instruct.specialExams.timeLimit',
30
+ defaultMessage: 'Time Limit',
31
+ description: 'Column header for time limit in exam attempts list',
32
+ },
33
+ type: {
34
+ id: 'instruct.specialExams.type',
35
+ defaultMessage: 'Type',
36
+ description: 'Column header for type in exam attempts list',
37
+ },
38
+ startedAt: {
39
+ id: 'instruct.specialExams.startedAt',
40
+ defaultMessage: 'Started At',
41
+ description: 'Column header for started at in exam attempts list',
42
+ },
43
+ completedAt: {
44
+ id: 'instruct.specialExams.completedAt',
45
+ defaultMessage: 'Completed At',
46
+ description: 'Column header for completed at in exam attempts list',
47
+ },
48
+ status: {
49
+ id: 'instruct.specialExams.status',
50
+ defaultMessage: 'Status',
51
+ description: 'Column header for status in exam attempts list',
52
+ },
53
+ noAttempts: {
54
+ id: 'instruct.specialExams.noAttempts',
55
+ defaultMessage: 'No exam attempts found',
56
+ description: 'Message displayed when there are no exam attempts to show',
57
+ },
58
+ noAllowances: {
59
+ id: 'instruct.specialExams.noAllowances',
60
+ defaultMessage: 'No allowances found',
61
+ description: 'Message displayed when there are no allowances to show',
62
+ },
63
+ editAllowance: {
64
+ id: 'instruct.specialExams.editAllowance',
65
+ defaultMessage: 'Edit Allowance',
66
+ description: 'ARIA label for actions button and modal title when editing an allowance',
67
+ },
68
+ email: {
69
+ id: 'instruct.specialExams.email',
70
+ defaultMessage: 'Email',
71
+ description: 'Column header for email in allowances list',
72
+ },
73
+ allowanceType: {
74
+ id: 'instruct.specialExams.allowanceType',
75
+ defaultMessage: 'Allowance Type',
76
+ description: 'Column header for allowance type in allowances list',
77
+ },
78
+ allowanceValue: {
79
+ id: 'instruct.specialExams.allowanceValue',
80
+ defaultMessage: 'Allowance Value',
81
+ description: 'Column header for allowance value in allowances list',
82
+ },
83
+ addAllowance: {
84
+ id: 'instruct.specialExams.addAllowance',
85
+ defaultMessage: 'Add Allowance',
86
+ description: 'Label for the button to add a new allowance',
87
+ },
88
+ cancel: {
89
+ id: 'instruct.specialExams.cancel',
90
+ defaultMessage: 'Cancel',
91
+ description: 'Label for cancel button in add/edit allowance modal',
92
+ },
93
+ createAllowance: {
94
+ id: 'instruct.specialExams.createAllowance',
95
+ defaultMessage: 'Create Allowance',
96
+ description: 'Label for the create button in add allowance modal',
97
+ },
98
+ specifyLearners: {
99
+ id: 'instruct.specialExams.specifyLearners',
100
+ defaultMessage: 'Specify Learners',
101
+ description: 'Label for the field to specify learners in add allowance modal',
102
+ },
103
+ specifyLearnersPlaceholder: {
104
+ id: 'instruct.specialExams.specifyLearnersPlaceholder',
105
+ defaultMessage: 'Learner email addresses and/or usernames separated by commas',
106
+ description: 'Placeholder for the field to specify learners in add allowance modal',
107
+ },
108
+ selectExamType: {
109
+ id: 'instruct.specialExams.selectExamType',
110
+ defaultMessage: 'Select Exam Type',
111
+ description: 'Label for the field to select exam type in add allowance modal',
112
+ },
113
+ selectExams: {
114
+ id: 'instruct.specialExams.selectExams',
115
+ defaultMessage: 'Select Exam(s)',
116
+ description: 'Label for the field to select exams in add allowance modal',
117
+ },
118
+ selectAllowanceType: {
119
+ id: 'instruct.specialExams.selectAllowanceType',
120
+ defaultMessage: 'Select Allowance Type',
121
+ description: 'Label for the field to select allowance type in add allowance modal',
122
+ },
123
+ addTime: {
124
+ id: 'instruct.specialExams.addTime',
125
+ defaultMessage: 'Add Time',
126
+ description: 'Label for the field to enter time value in add allowance modal',
127
+ },
128
+ addTimePlaceholder: {
129
+ id: 'instruct.specialExams.addTimePlaceholder',
130
+ defaultMessage: 'Time (minutes)',
131
+ description: 'Placeholder for the field to enter time value in add allowance modal',
132
+ },
133
+ actions: {
134
+ id: 'instruct.specialExams.actions',
135
+ defaultMessage: 'Actions',
136
+ description: 'ARIA label for actions button in allowances list',
137
+ },
138
+ proctored: {
139
+ id: 'instruct.specialExams.proctored',
140
+ defaultMessage: 'Proctored',
141
+ description: 'Label for whether the special exam is proctored in the list of special exams',
142
+ },
143
+ timed: {
144
+ id: 'instruct.specialExams.timed',
145
+ defaultMessage: 'Timed',
146
+ description: 'Label for whether the special exam is timed in the list of special exams',
147
+ },
148
+ timeMultiplier: {
149
+ id: 'instruct.specialExams.timeMultiplier',
150
+ defaultMessage: 'Time Multiplier',
151
+ description: 'Label for the time multiplier value in the list of special exams',
152
+ },
153
+ additionalTime: {
154
+ id: 'instruct.specialExams.additionalTime',
155
+ defaultMessage: 'Additional Time',
156
+ description: 'Label for the additional time value in the list of special exams',
157
+ },
158
+ reviewPolicy: {
159
+ id: 'instruct.specialExams.reviewPolicy',
160
+ defaultMessage: 'Review Policy Exception',
161
+ description: 'Label for the review policy exception in the list of special exams',
162
+ },
163
+ exceptionPlaceholder: {
164
+ id: 'instruct.specialExams.exceptionPlaceholder',
165
+ defaultMessage: 'Exception',
166
+ description: 'Placeholder for the review policy exception description in add allowance modal',
167
+ },
168
+ timeMultiplierPlaceholder: {
169
+ id: 'instruct.specialExams.timeMultiplierPlaceholder',
170
+ defaultMessage: 'Multiplier (number > 1)',
171
+ description: 'Placeholder for the time multiplier value in add allowance modal',
172
+ },
173
+ edit: {
174
+ id: 'instruct.specialExams.edit',
175
+ defaultMessage: 'Edit',
176
+ description: 'Label for edit action in allowance list',
177
+ },
178
+ delete: {
179
+ id: 'instruct.specialExams.delete',
180
+ defaultMessage: 'Delete',
181
+ description: 'Label for delete action in allowance list',
182
+ },
183
+ deleteAllowance: {
184
+ id: 'instruct.specialExams.deleteAllowance',
185
+ defaultMessage: 'Delete Allowance',
186
+ description: 'Title for delete allowance confirmation modal'
187
+ },
188
+ deleteConfirmation: {
189
+ id: 'instruct.specialExams.deleteConfirmation',
190
+ defaultMessage: 'Delete allowance for {user} for {examName}?',
191
+ description: 'Delete confirmation message'
192
+ },
193
+ deleteError: {
194
+ id: 'instruct.specialExams.deleteError',
195
+ defaultMessage: 'An error occurred while deleting the allowance. Please try again.',
196
+ description: 'Error message displayed when there is an issue deleting an allowance'
197
+ },
198
+ addAdditionalTimeGranted: {
199
+ id: 'instruct.specialExams.addAdditionalTimeGranted',
200
+ defaultMessage: 'Add Time',
201
+ description: 'Label for additional time granted field in add allowance modal',
202
+ },
203
+ addReviewPolicyException: {
204
+ id: 'instruct.specialExams.addReviewPolicyException',
205
+ defaultMessage: 'Add Policy Exception',
206
+ description: 'Label for review policy exception field in add allowance modal',
207
+ },
208
+ addTimeMultiplier: {
209
+ id: 'instruct.specialExams.addTimeMultiplier',
210
+ defaultMessage: 'Add Time Multiplier',
211
+ description: 'Label for time multiplier field in add allowance modal',
212
+ },
213
+ addAllowanceError: {
214
+ id: 'instruct.specialExams.addAllowanceError',
215
+ defaultMessage: 'An error occurred while adding the allowance. Please try again.',
216
+ description: 'Error message displayed when there is an issue adding a new allowance'
217
+ },
218
+ editAllowanceError: {
219
+ id: 'instruct.specialExams.editAllowanceError',
220
+ defaultMessage: 'An error occurred while editing the allowance. Please try again.',
221
+ description: 'Error message displayed when there is an issue editing an allowance'
222
+ },
223
+ cannotModifyAllowance: {
224
+ id: 'instruct.specialExams.cannotModifyAllowance',
225
+ defaultMessage: 'Cannot {action} allowance: {username} has already attempted the exam',
226
+ description: 'Warning message shown when trying to edit or delete an allowance for a student who has already attempted the exam'
227
+ }
228
+ });
229
+ export default messages;
230
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/specialExams/messages.ts"],"names":[],"mappings":"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","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n specialExamsTitle: {\n id: 'instruct.specialExams.title',\n defaultMessage: 'Special Exams',\n description: 'Title for the special exams page'\n },\n examAttempts: {\n id: 'instruct.specialExams.examAttempts',\n defaultMessage: 'Exam Attempts',\n description: 'Label for the exam attempts tab'\n },\n allowances: {\n id: 'instruct.specialExams.allowances',\n defaultMessage: 'Allowances',\n description: 'Label for the allowances tab'\n },\n username: {\n id: 'instruct.specialExams.username',\n defaultMessage: 'Username',\n description: 'Column header for username in exam attempts list',\n },\n examName: {\n id: 'instruct.specialExams.examName',\n defaultMessage: 'Exam Name',\n description: 'Column header for exam name in exam attempts list',\n },\n timeLimit: {\n id: 'instruct.specialExams.timeLimit',\n defaultMessage: 'Time Limit',\n description: 'Column header for time limit in exam attempts list',\n },\n type: {\n id: 'instruct.specialExams.type',\n defaultMessage: 'Type',\n description: 'Column header for type in exam attempts list',\n },\n startedAt: {\n id: 'instruct.specialExams.startedAt',\n defaultMessage: 'Started At',\n description: 'Column header for started at in exam attempts list',\n },\n completedAt: {\n id: 'instruct.specialExams.completedAt',\n defaultMessage: 'Completed At',\n description: 'Column header for completed at in exam attempts list',\n },\n status: {\n id: 'instruct.specialExams.status',\n defaultMessage: 'Status',\n description: 'Column header for status in exam attempts list',\n },\n noAttempts: {\n id: 'instruct.specialExams.noAttempts',\n defaultMessage: 'No exam attempts found',\n description: 'Message displayed when there are no exam attempts to show',\n },\n noAllowances: {\n id: 'instruct.specialExams.noAllowances',\n defaultMessage: 'No allowances found',\n description: 'Message displayed when there are no allowances to show',\n },\n editAllowance: {\n id: 'instruct.specialExams.editAllowance',\n defaultMessage: 'Edit Allowance',\n description: 'ARIA label for actions button and modal title when editing an allowance',\n },\n email: {\n id: 'instruct.specialExams.email',\n defaultMessage: 'Email',\n description: 'Column header for email in allowances list',\n },\n allowanceType: {\n id: 'instruct.specialExams.allowanceType',\n defaultMessage: 'Allowance Type',\n description: 'Column header for allowance type in allowances list',\n },\n allowanceValue: {\n id: 'instruct.specialExams.allowanceValue',\n defaultMessage: 'Allowance Value',\n description: 'Column header for allowance value in allowances list',\n },\n addAllowance: {\n id: 'instruct.specialExams.addAllowance',\n defaultMessage: 'Add Allowance',\n description: 'Label for the button to add a new allowance',\n },\n cancel: {\n id: 'instruct.specialExams.cancel',\n defaultMessage: 'Cancel',\n description: 'Label for cancel button in add/edit allowance modal',\n },\n createAllowance: {\n id: 'instruct.specialExams.createAllowance',\n defaultMessage: 'Create Allowance',\n description: 'Label for the create button in add allowance modal',\n },\n specifyLearners: {\n id: 'instruct.specialExams.specifyLearners',\n defaultMessage: 'Specify Learners',\n description: 'Label for the field to specify learners in add allowance modal',\n },\n specifyLearnersPlaceholder: {\n id: 'instruct.specialExams.specifyLearnersPlaceholder',\n defaultMessage: 'Learner email addresses and/or usernames separated by commas',\n description: 'Placeholder for the field to specify learners in add allowance modal',\n },\n selectExamType: {\n id: 'instruct.specialExams.selectExamType',\n defaultMessage: 'Select Exam Type',\n description: 'Label for the field to select exam type in add allowance modal',\n },\n selectExams: {\n id: 'instruct.specialExams.selectExams',\n defaultMessage: 'Select Exam(s)',\n description: 'Label for the field to select exams in add allowance modal',\n },\n selectAllowanceType: {\n id: 'instruct.specialExams.selectAllowanceType',\n defaultMessage: 'Select Allowance Type',\n description: 'Label for the field to select allowance type in add allowance modal',\n },\n addTime: {\n id: 'instruct.specialExams.addTime',\n defaultMessage: 'Add Time',\n description: 'Label for the field to enter time value in add allowance modal',\n },\n addTimePlaceholder: {\n id: 'instruct.specialExams.addTimePlaceholder',\n defaultMessage: 'Time (minutes)',\n description: 'Placeholder for the field to enter time value in add allowance modal',\n },\n actions: {\n id: 'instruct.specialExams.actions',\n defaultMessage: 'Actions',\n description: 'ARIA label for actions button in allowances list',\n },\n proctored: {\n id: 'instruct.specialExams.proctored',\n defaultMessage: 'Proctored',\n description: 'Label for whether the special exam is proctored in the list of special exams',\n },\n timed: {\n id: 'instruct.specialExams.timed',\n defaultMessage: 'Timed',\n description: 'Label for whether the special exam is timed in the list of special exams',\n },\n timeMultiplier: {\n id: 'instruct.specialExams.timeMultiplier',\n defaultMessage: 'Time Multiplier',\n description: 'Label for the time multiplier value in the list of special exams',\n },\n additionalTime: {\n id: 'instruct.specialExams.additionalTime',\n defaultMessage: 'Additional Time',\n description: 'Label for the additional time value in the list of special exams',\n },\n reviewPolicy: {\n id: 'instruct.specialExams.reviewPolicy',\n defaultMessage: 'Review Policy Exception',\n description: 'Label for the review policy exception in the list of special exams',\n },\n exceptionPlaceholder: {\n id: 'instruct.specialExams.exceptionPlaceholder',\n defaultMessage: 'Exception',\n description: 'Placeholder for the review policy exception description in add allowance modal',\n },\n timeMultiplierPlaceholder: {\n id: 'instruct.specialExams.timeMultiplierPlaceholder',\n defaultMessage: 'Multiplier (number > 1)',\n description: 'Placeholder for the time multiplier value in add allowance modal',\n },\n edit: {\n id: 'instruct.specialExams.edit',\n defaultMessage: 'Edit',\n description: 'Label for edit action in allowance list',\n },\n delete: {\n id: 'instruct.specialExams.delete',\n defaultMessage: 'Delete',\n description: 'Label for delete action in allowance list',\n },\n deleteAllowance: {\n id: 'instruct.specialExams.deleteAllowance',\n defaultMessage: 'Delete Allowance',\n description: 'Title for delete allowance confirmation modal'\n },\n deleteConfirmation: {\n id: 'instruct.specialExams.deleteConfirmation',\n defaultMessage: 'Delete allowance for {user} for {examName}?',\n description: 'Delete confirmation message'\n },\n deleteError: {\n id: 'instruct.specialExams.deleteError',\n defaultMessage: 'An error occurred while deleting the allowance. Please try again.',\n description: 'Error message displayed when there is an issue deleting an allowance'\n },\n addAdditionalTimeGranted: {\n id: 'instruct.specialExams.addAdditionalTimeGranted',\n defaultMessage: 'Add Time',\n description: 'Label for additional time granted field in add allowance modal',\n },\n addReviewPolicyException: {\n id: 'instruct.specialExams.addReviewPolicyException',\n defaultMessage: 'Add Policy Exception',\n description: 'Label for review policy exception field in add allowance modal',\n },\n addTimeMultiplier: {\n id: 'instruct.specialExams.addTimeMultiplier',\n defaultMessage: 'Add Time Multiplier',\n description: 'Label for time multiplier field in add allowance modal',\n },\n addAllowanceError: {\n id: 'instruct.specialExams.addAllowanceError',\n defaultMessage: 'An error occurred while adding the allowance. Please try again.',\n description: 'Error message displayed when there is an issue adding a new allowance'\n },\n editAllowanceError: {\n id: 'instruct.specialExams.editAllowanceError',\n defaultMessage: 'An error occurred while editing the allowance. Please try again.',\n description: 'Error message displayed when there is an issue editing an allowance'\n },\n cannotModifyAllowance: {\n id: 'instruct.specialExams.cannotModifyAllowance',\n defaultMessage: 'Cannot {action} allowance: {username} has already attempted the exam',\n description: 'Warning message shown when trying to edit or delete an allowance for a student who has already attempted the exam'\n }\n});\n\nexport default messages;\n"]}
@@ -0,0 +1,65 @@
1
+ import { PaginationParams } from '../types';
2
+ export interface Attempt {
3
+ id: number;
4
+ user: {
5
+ username: string;
6
+ };
7
+ examId: number;
8
+ examName: string;
9
+ allowedTimeLimitMins: number;
10
+ type: string;
11
+ startTime: string;
12
+ endTime: string;
13
+ status: string;
14
+ }
15
+ export interface AttemptsParams extends PaginationParams {
16
+ emailOrUsername: string;
17
+ ordering: string;
18
+ }
19
+ export interface Allowance {
20
+ value: string;
21
+ key: string;
22
+ proctoredExam: {
23
+ examName: string;
24
+ examType: string;
25
+ id: number;
26
+ };
27
+ user: {
28
+ username: string;
29
+ email: string;
30
+ id: number;
31
+ };
32
+ id: number;
33
+ }
34
+ export interface AddAllowanceParams {
35
+ userIds: string[];
36
+ examType: string;
37
+ examIds: number[];
38
+ allowanceType: string;
39
+ value: string;
40
+ }
41
+ export interface AddAllowanceForm {
42
+ users: string;
43
+ examType: string;
44
+ examIds: number[];
45
+ allowanceType: string;
46
+ value: string;
47
+ }
48
+ export interface SpecialExam {
49
+ examName: string;
50
+ examType: string;
51
+ timeLimitMins: number;
52
+ contentId: string;
53
+ courseId: string;
54
+ dueDate: string | null;
55
+ isProctored: boolean;
56
+ isActive: boolean;
57
+ isPracticeExam: boolean;
58
+ hideAfterDue: boolean;
59
+ id: number;
60
+ }
61
+ export interface DeleteAllowanceParams {
62
+ examId: number;
63
+ userIds: number[];
64
+ allowanceType: string;
65
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/specialExams/types.ts"],"names":[],"mappings":"","sourcesContent":["import { PaginationParams } from '@src/types';\n\nexport interface Attempt {\n id: number,\n user: {\n username: string,\n },\n examId: number,\n examName: string,\n allowedTimeLimitMins: number,\n type: string,\n startTime: string,\n endTime: string,\n status: string,\n}\n\nexport interface AttemptsParams extends PaginationParams {\n emailOrUsername: string,\n ordering: string,\n}\n\nexport interface Allowance {\n value: string,\n key: string,\n proctoredExam: {\n examName: string,\n examType: string,\n id: number,\n },\n user: {\n username: string,\n email: string,\n id: number,\n },\n id: number,\n}\n\nexport interface AddAllowanceParams {\n userIds: string[],\n examType: string,\n examIds: number[],\n allowanceType: string,\n value: string,\n}\n\nexport interface AddAllowanceForm {\n users: string,\n examType: string,\n examIds: number[],\n allowanceType: string,\n value: string,\n}\n\nexport interface SpecialExam {\n examName: string,\n examType: string,\n timeLimitMins: number,\n contentId: string,\n courseId: string,\n dueDate: string | null,\n isProctored: boolean,\n isActive: boolean,\n isPracticeExam: boolean,\n hideAfterDue: boolean,\n id: number,\n}\n\nexport interface DeleteAllowanceParams {\n examId: number,\n userIds: number[],\n allowanceType: string,\n}\n"]}
@@ -0,0 +1,16 @@
1
+ .toast-container {
2
+ left: unset;
3
+ right: var(--pgn-spacing-toast-container-gutter-lg);
4
+ }
5
+
6
+ .text-prewrap {
7
+ white-space: pre-wrap;
8
+ }
9
+
10
+ .username .form-control::placeholder {
11
+ font-size: var(--pgn-typography-form-input-font-size-sm);
12
+ }
13
+
14
+ .info-tooltip .tooltip-inner {
15
+ max-width: none;
16
+ }
package/dist/testUtils.js CHANGED
@@ -4,12 +4,12 @@ import { IntlProvider } from '@openedx/frontend-base';
4
4
  import { AlertProvider } from './providers/AlertProvider';
5
5
  import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
6
6
  const queryClient = new QueryClient();
7
- export const renderWithQueryClient = (ui) => renderWithIntl(_jsx(QueryClientProvider, { client: queryClient, children: ui }));
7
+ export const renderWithQueryClient = (ui) => renderWithAlertAndIntl(_jsx(QueryClientProvider, { client: queryClient, children: ui }));
8
8
  export const renderWithIntl = (component) => {
9
9
  return render(_jsx(IntlProvider, { locale: "en", messages: {}, children: component }));
10
10
  };
11
11
  export const renderWithAlertAndIntl = (component) => {
12
- return render(_jsx(AlertProvider, { children: _jsx(IntlProvider, { locale: "en", messages: {}, children: component }) }));
12
+ return render(_jsx(IntlProvider, { locale: "en", messages: {}, children: _jsx(AlertProvider, { children: component }) }));
13
13
  };
14
14
  export const createQueryMock = (data = undefined, isLoading = false) => ({
15
15
  data,
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../src/testUtils.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEzE,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAsB,EAAE,EAAE,CAC9D,cAAc,CACZ,KAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW,YACrC,EAAE,GACiB,CACvB,CAAC;AAEJ,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,EAAE;IAC1C,OAAO,MAAM,CAAC,KAAC,YAAY,IAAC,MAAM,EAAC,IAAI,EAAC,QAAQ,EAAE,EAAE,YAAI,SAAS,GAAiB,CAAC,CAAC;AACtF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAS,EAAE,EAAE;IAClD,OAAO,MAAM,CACX,KAAC,aAAa,cACZ,KAAC,YAAY,IAAC,MAAM,EAAC,IAAI,EAAC,QAAQ,EAAE,EAAE,YACnC,SAAS,GACG,GACD,CACjB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAY,SAAS,EAAE,SAAS,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5E,IAAI;IACJ,SAAS;IACT,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,CAAC,SAAS,IAAI,IAAI,KAAK,SAAS;IAC3C,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;IACzD,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM;IAC5C,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;CACX,CAAA,CAAC","sourcesContent":["import { render } from '@testing-library/react';\nimport { IntlProvider } from '@openedx/frontend-base';\nimport { AlertProvider } from './providers/AlertProvider';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\n\nconst queryClient = new QueryClient();\n\nexport const renderWithQueryClient = (ui: React.ReactElement) =>\n renderWithIntl(\n <QueryClientProvider client={queryClient}>\n {ui}\n </QueryClientProvider>\n );\n\nexport const renderWithIntl = (component) => {\n return render(<IntlProvider locale=\"en\" messages={{}}>{ component }</IntlProvider>);\n};\n\nexport const renderWithAlertAndIntl = (component) => {\n return render(\n <AlertProvider>\n <IntlProvider locale=\"en\" messages={{}}>\n {component}\n </IntlProvider>\n </AlertProvider>\n );\n};\n\nexport const createQueryMock = (data: any = undefined, isLoading = false) => ({\n data,\n isLoading,\n error: null,\n isError: false,\n isSuccess: !isLoading && data !== undefined,\n status: isLoading ? 'loading' : data ? 'success' : 'idle',\n fetchStatus: isLoading ? 'fetching' : 'idle',\n refetch: jest.fn(),\n} as any);\n"]}
1
+ {"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../src/testUtils.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEzE,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAsB,EAAE,EAAE,CAC9D,sBAAsB,CACpB,KAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW,YACrC,EAAE,GACiB,CACvB,CAAC;AAEJ,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,EAAE;IAC1C,OAAO,MAAM,CAAC,KAAC,YAAY,IAAC,MAAM,EAAC,IAAI,EAAC,QAAQ,EAAE,EAAE,YAAI,SAAS,GAAiB,CAAC,CAAC;AACtF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAS,EAAE,EAAE;IAClD,OAAO,MAAM,CACX,KAAC,YAAY,IAAC,MAAM,EAAC,IAAI,EAAC,QAAQ,EAAE,EAAE,YACpC,KAAC,aAAa,cACX,SAAS,GACI,GACH,CAChB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAY,SAAS,EAAE,SAAS,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5E,IAAI;IACJ,SAAS;IACT,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,CAAC,SAAS,IAAI,IAAI,KAAK,SAAS;IAC3C,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;IACzD,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM;IAC5C,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;CACX,CAAA,CAAC","sourcesContent":["import { render } from '@testing-library/react';\nimport { IntlProvider } from '@openedx/frontend-base';\nimport { AlertProvider } from './providers/AlertProvider';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\n\nconst queryClient = new QueryClient();\n\nexport const renderWithQueryClient = (ui: React.ReactElement) =>\n renderWithAlertAndIntl(\n <QueryClientProvider client={queryClient}>\n {ui}\n </QueryClientProvider>\n );\n\nexport const renderWithIntl = (component) => {\n return render(<IntlProvider locale=\"en\" messages={{}}>{ component }</IntlProvider>);\n};\n\nexport const renderWithAlertAndIntl = (component) => {\n return render(\n <IntlProvider locale=\"en\" messages={{}}>\n <AlertProvider>\n {component}\n </AlertProvider>\n </IntlProvider>\n );\n};\n\nexport const createQueryMock = (data: any = undefined, isLoading = false) => ({\n data,\n isLoading,\n error: null,\n isError: false,\n isSuccess: !isLoading && data !== undefined,\n status: isLoading ? 'loading' : data ? 'success' : 'idle',\n fetchStatus: isLoading ? 'fetching' : 'idle',\n refetch: jest.fn(),\n} as any);\n"]}
@@ -37,6 +37,10 @@ export interface DataTableFetchDataProps {
37
37
  value: string;
38
38
  }[];
39
39
  pageIndex: number;
40
+ sortBy: {
41
+ id: string;
42
+ desc: boolean;
43
+ }[];
40
44
  }
41
45
  export interface Learner {
42
46
  username: string;
@@ -45,4 +49,15 @@ export interface Learner {
45
49
  }
46
50
  export interface SelectedLearner extends Learner {
47
51
  progressUrl: string;
52
+ isEnrolled: boolean;
53
+ }
54
+ export interface ProblemDetails {
55
+ currentScore: {
56
+ score: number;
57
+ total: number | null;
58
+ };
59
+ attempts: {
60
+ current: number | null;
61
+ total: number;
62
+ };
48
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAiBC,CAAC;AAMD,CAAC;AAwBD,CAAC","sourcesContent":["export interface TableCellValue<T> {\n row: {\n original: T,\n },\n}\n\nexport interface PaginationParams {\n page: number,\n pageSize: number,\n}\n\nexport interface APIError {\n response: {\n data: {\n error: string,\n },\n },\n};\n\nexport interface DataList<T> {\n count: number,\n numPages: number,\n results: T[],\n};\n\nexport interface PendingTask {\n taskType: string,\n taskInput: Record<string, any>,\n taskId: string,\n requester: string,\n taskState: string,\n created: string,\n taskOutput: Record<string, any> | null,\n durationSec: number,\n status: string,\n taskMessage: string,\n}\n\nexport interface DataTableFetchDataProps {\n filters: { id: string, value: string }[],\n pageIndex: number,\n}\n\nexport interface Learner {\n username: string,\n fullName: string,\n email: string,\n};\n\nexport interface SelectedLearner extends Learner {\n progressUrl: string,\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAiBC,CAAC;AAMD,CAAC;AAyBD,CAAC","sourcesContent":["export interface TableCellValue<T> {\n row: {\n original: T,\n },\n}\n\nexport interface PaginationParams {\n page: number,\n pageSize: number,\n}\n\nexport interface APIError {\n response: {\n data: {\n error: string,\n },\n },\n};\n\nexport interface DataList<T> {\n count: number,\n numPages: number,\n results: T[],\n};\n\nexport interface PendingTask {\n taskType: string,\n taskInput: Record<string, any>,\n taskId: string,\n requester: string,\n taskState: string,\n created: string,\n taskOutput: Record<string, any> | null,\n durationSec: number,\n status: string,\n taskMessage: string,\n}\n\nexport interface DataTableFetchDataProps {\n filters: { id: string, value: string }[],\n pageIndex: number,\n sortBy: { id: string, desc: boolean }[],\n}\n\nexport interface Learner {\n username: string,\n fullName: string,\n email: string,\n};\n\nexport interface SelectedLearner extends Learner {\n progressUrl: string,\n isEnrolled: boolean,\n}\n\nexport interface ProblemDetails {\n currentScore: {\n score: number,\n total: number | null,\n },\n attempts: {\n current: number | null,\n total: number,\n },\n}\n"]}
@@ -1 +1,6 @@
1
1
  export declare const parseObject: (input: any) => string;
2
+ export declare const parseLearnersCount: (learners: string) => number;
3
+ export declare const filterCertificates: <T extends {
4
+ username: string;
5
+ email: string;
6
+ }>(data: T[], filterFn: (item: T) => boolean, search: string) => T[];
@@ -9,4 +9,14 @@ export const parseObject = (input) => {
9
9
  return String(input);
10
10
  }
11
11
  };
12
+ export const parseLearnersCount = (learners) => learners.split(/[\n,]/).filter((l) => l.trim()).length;
13
+ export const filterCertificates = (data, filterFn, search) => {
14
+ const searchLower = search.toLowerCase();
15
+ return data.filter((item) => {
16
+ const matchesSearch = !search
17
+ || item.username.toLowerCase().includes(searchLower)
18
+ || item.email.toLowerCase().includes(searchLower);
19
+ return filterFn(item) && matchesSearch;
20
+ });
21
+ };
12
22
  //# sourceMappingURL=formatters.js.map