@openedx/frontend-app-learner-dashboard 1.0.0-alpha.6 → 1.0.0-alpha.8

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 (282) hide show
  1. package/dist/Main.js +2 -3
  2. package/dist/Main.js.map +1 -1
  3. package/dist/app.js +1 -2
  4. package/dist/app.js.map +1 -1
  5. package/dist/containers/CourseCard/components/CourseCardActions/BeginCourseButton.js +14 -5
  6. package/dist/containers/CourseCard/components/CourseCardActions/BeginCourseButton.js.map +1 -1
  7. package/dist/containers/CourseCard/components/CourseCardActions/ResumeButton.js +14 -5
  8. package/dist/containers/CourseCard/components/CourseCardActions/ResumeButton.js.map +1 -1
  9. package/dist/containers/CourseCard/components/CourseCardActions/SelectSessionButton.js +3 -3
  10. package/dist/containers/CourseCard/components/CourseCardActions/SelectSessionButton.js.map +1 -1
  11. package/dist/containers/CourseCard/components/CourseCardActions/ViewCourseButton.js +5 -3
  12. package/dist/containers/CourseCard/components/CourseCardActions/ViewCourseButton.js.map +1 -1
  13. package/dist/containers/CourseCard/components/CourseCardActions/index.js +5 -4
  14. package/dist/containers/CourseCard/components/CourseCardActions/index.js.map +1 -1
  15. package/dist/containers/CourseCard/components/CourseCardBanners/CertificateBanner.js +26 -9
  16. package/dist/containers/CourseCard/components/CourseCardBanners/CertificateBanner.js.map +1 -1
  17. package/dist/containers/CourseCard/components/CourseCardBanners/CourseBanner.js +12 -4
  18. package/dist/containers/CourseCard/components/CourseCardBanners/CourseBanner.js.map +1 -1
  19. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/hooks.js +23 -4
  20. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/hooks.js.map +1 -1
  21. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/ApprovedContent.js +11 -5
  22. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/ApprovedContent.js.map +1 -1
  23. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/EligibleContent.js +5 -3
  24. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/EligibleContent.js.map +1 -1
  25. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/MustRequestContent.js +3 -3
  26. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/MustRequestContent.js.map +1 -1
  27. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/PendingContent.js +5 -5
  28. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/PendingContent.js.map +1 -1
  29. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/RejectedContent.js +4 -3
  30. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/RejectedContent.js.map +1 -1
  31. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/ProviderLink.js +3 -2
  32. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/ProviderLink.js.map +1 -1
  33. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/hooks.js +13 -5
  34. package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/hooks.js.map +1 -1
  35. package/dist/containers/CourseCard/components/CourseCardBanners/EntitlementBanner.js +10 -6
  36. package/dist/containers/CourseCard/components/CourseCardBanners/EntitlementBanner.js.map +1 -1
  37. package/dist/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/index.js +5 -4
  38. package/dist/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/index.js.map +1 -1
  39. package/dist/containers/CourseCard/components/CourseCardBanners/index.d.ts +1 -1
  40. package/dist/containers/CourseCard/components/CourseCardBanners/index.js +6 -2
  41. package/dist/containers/CourseCard/components/CourseCardBanners/index.js.map +1 -1
  42. package/dist/containers/CourseCard/components/CourseCardDetails/hooks.d.ts +3 -3
  43. package/dist/containers/CourseCard/components/CourseCardDetails/hooks.js +14 -12
  44. package/dist/containers/CourseCard/components/CourseCardDetails/hooks.js.map +1 -1
  45. package/dist/containers/CourseCard/components/CourseCardImage.js +7 -6
  46. package/dist/containers/CourseCard/components/CourseCardImage.js.map +1 -1
  47. package/dist/containers/CourseCard/components/CourseCardMenu/SocialShareMenu.js +14 -11
  48. package/dist/containers/CourseCard/components/CourseCardMenu/SocialShareMenu.js.map +1 -1
  49. package/dist/containers/CourseCard/components/CourseCardMenu/hooks.d.ts +10 -0
  50. package/dist/containers/CourseCard/components/CourseCardMenu/hooks.js +26 -6
  51. package/dist/containers/CourseCard/components/CourseCardMenu/hooks.js.map +1 -1
  52. package/dist/containers/CourseCard/components/CourseCardMenu/index.js +5 -5
  53. package/dist/containers/CourseCard/components/CourseCardMenu/index.js.map +1 -1
  54. package/dist/containers/CourseCard/components/CourseCardTitle.js +6 -4
  55. package/dist/containers/CourseCard/components/CourseCardTitle.js.map +1 -1
  56. package/dist/containers/CourseCard/components/RelatedProgramsBadge/hooks.js +4 -2
  57. package/dist/containers/CourseCard/components/RelatedProgramsBadge/hooks.js.map +1 -1
  58. package/dist/containers/CourseCard/components/hooks.d.ts +1 -1
  59. package/dist/containers/CourseCard/components/hooks.js +9 -7
  60. package/dist/containers/CourseCard/components/hooks.js.map +1 -1
  61. package/dist/containers/CourseCard/hooks.d.ts +0 -12
  62. package/dist/containers/CourseCard/hooks.js +0 -14
  63. package/dist/containers/CourseCard/hooks.js.map +1 -1
  64. package/dist/containers/CourseFilterControls/ActiveCourseFilters.d.ts +1 -11
  65. package/dist/containers/CourseFilterControls/ActiveCourseFilters.js +4 -9
  66. package/dist/containers/CourseFilterControls/ActiveCourseFilters.js.map +1 -1
  67. package/dist/containers/CourseFilterControls/CourseFilterControls.d.ts +1 -13
  68. package/dist/containers/CourseFilterControls/CourseFilterControls.js +26 -16
  69. package/dist/containers/CourseFilterControls/CourseFilterControls.js.map +1 -1
  70. package/dist/containers/CoursesPanel/CourseList/index.d.ts +0 -1
  71. package/dist/containers/CoursesPanel/CourseList/index.js +2 -3
  72. package/dist/containers/CoursesPanel/CourseList/index.js.map +1 -1
  73. package/dist/containers/CoursesPanel/NoCoursesView/index.js +4 -2
  74. package/dist/containers/CoursesPanel/NoCoursesView/index.js.map +1 -1
  75. package/dist/containers/CoursesPanel/index.js +27 -6
  76. package/dist/containers/CoursesPanel/index.js.map +1 -1
  77. package/dist/containers/Dashboard/hooks.js.map +1 -1
  78. package/dist/containers/Dashboard/index.js +7 -4
  79. package/dist/containers/Dashboard/index.js.map +1 -1
  80. package/dist/containers/EmailSettingsModal/hooks.js +8 -5
  81. package/dist/containers/EmailSettingsModal/hooks.js.map +1 -1
  82. package/dist/containers/RelatedProgramsModal/index.js +5 -3
  83. package/dist/containers/RelatedProgramsModal/index.js.map +1 -1
  84. package/dist/containers/SelectSessionModal/hooks.d.ts +1 -1
  85. package/dist/containers/SelectSessionModal/hooks.js +25 -15
  86. package/dist/containers/SelectSessionModal/hooks.js.map +1 -1
  87. package/dist/containers/UnenrollConfirmModal/components/ConfirmPane.d.ts +3 -1
  88. package/dist/containers/UnenrollConfirmModal/components/ConfirmPane.js +9 -3
  89. package/dist/containers/UnenrollConfirmModal/components/ConfirmPane.js.map +1 -1
  90. package/dist/containers/UnenrollConfirmModal/components/FinishedPane.d.ts +3 -3
  91. package/dist/containers/UnenrollConfirmModal/components/FinishedPane.js +9 -4
  92. package/dist/containers/UnenrollConfirmModal/components/FinishedPane.js.map +1 -1
  93. package/dist/containers/UnenrollConfirmModal/components/ReasonPane.d.ts +3 -2
  94. package/dist/containers/UnenrollConfirmModal/components/ReasonPane.js +3 -3
  95. package/dist/containers/UnenrollConfirmModal/components/ReasonPane.js.map +1 -1
  96. package/dist/containers/UnenrollConfirmModal/components/messages.d.ts +7 -7
  97. package/dist/containers/UnenrollConfirmModal/components/messages.js +12 -12
  98. package/dist/containers/UnenrollConfirmModal/components/messages.js.map +1 -1
  99. package/dist/containers/UnenrollConfirmModal/constants.d.ts +5 -0
  100. package/dist/containers/UnenrollConfirmModal/constants.js +7 -1
  101. package/dist/containers/UnenrollConfirmModal/constants.js.map +1 -1
  102. package/dist/containers/UnenrollConfirmModal/hooks/index.d.ts +1 -3
  103. package/dist/containers/UnenrollConfirmModal/hooks/index.js +18 -13
  104. package/dist/containers/UnenrollConfirmModal/hooks/index.js.map +1 -1
  105. package/dist/containers/UnenrollConfirmModal/hooks/reasons.d.ts +0 -2
  106. package/dist/containers/UnenrollConfirmModal/hooks/reasons.js +13 -15
  107. package/dist/containers/UnenrollConfirmModal/hooks/reasons.js.map +1 -1
  108. package/dist/containers/UnenrollConfirmModal/index.js +1 -1
  109. package/dist/containers/UnenrollConfirmModal/index.js.map +1 -1
  110. package/dist/data/constants/files.js +1 -1
  111. package/dist/data/constants/files.js.map +1 -1
  112. package/dist/data/constants/htmlKeys.js +1 -1
  113. package/dist/data/constants/htmlKeys.js.map +1 -1
  114. package/dist/data/context/FiltersProvider.d.ts +18 -0
  115. package/dist/data/context/FiltersProvider.js +37 -0
  116. package/dist/data/context/FiltersProvider.js.map +1 -0
  117. package/dist/data/context/MasqueradeProvider.d.ts +11 -0
  118. package/dist/data/context/MasqueradeProvider.js +19 -0
  119. package/dist/data/context/MasqueradeProvider.js.map +1 -0
  120. package/dist/data/context/SelectSessionProvider.d.ts +15 -0
  121. package/dist/data/context/SelectSessionProvider.js +40 -0
  122. package/dist/data/context/SelectSessionProvider.js.map +1 -0
  123. package/dist/data/context/index.d.ts +10 -0
  124. package/dist/data/context/index.js +8 -0
  125. package/dist/data/context/index.js.map +1 -0
  126. package/dist/data/contexts/GlobalDataContext.d.ts +15 -11
  127. package/dist/data/contexts/GlobalDataContext.js.map +1 -1
  128. package/dist/data/hooks/index.d.ts +3 -0
  129. package/dist/data/hooks/index.js +4 -0
  130. package/dist/data/hooks/index.js.map +1 -0
  131. package/dist/data/hooks/mutationHooks.d.ts +26 -0
  132. package/dist/data/hooks/mutationHooks.js +84 -0
  133. package/dist/data/hooks/mutationHooks.js.map +1 -0
  134. package/dist/data/hooks/queryHooks.d.ts +164 -0
  135. package/dist/data/hooks/queryHooks.js +57 -0
  136. package/dist/data/hooks/queryHooks.js.map +1 -0
  137. package/dist/data/hooks/queryKeys.d.ts +13 -0
  138. package/dist/data/hooks/queryKeys.js +15 -0
  139. package/dist/data/hooks/queryKeys.js.map +1 -0
  140. package/dist/data/services/lms/api.d.ts +18 -27
  141. package/dist/data/services/lms/api.js +77 -38
  142. package/dist/data/services/lms/api.js.map +1 -1
  143. package/dist/data/services/lms/index.js +1 -1
  144. package/dist/data/services/lms/index.js.map +1 -1
  145. package/dist/data/services/lms/urls.d.ts +0 -1
  146. package/dist/data/services/lms/urls.js +6 -2
  147. package/dist/data/services/lms/urls.js.map +1 -1
  148. package/dist/data/services/segment/utils.d.ts +1 -1
  149. package/dist/hooks/index.d.ts +5 -4
  150. package/dist/hooks/index.js +8 -4
  151. package/dist/hooks/index.js.map +1 -1
  152. package/dist/hooks/useCourseData.d.ts +2 -0
  153. package/dist/hooks/useCourseData.js +8 -0
  154. package/dist/hooks/useCourseData.js.map +1 -0
  155. package/dist/hooks/useCourseTrackingEvent.d.ts +2 -0
  156. package/dist/hooks/useCourseTrackingEvent.js +13 -0
  157. package/dist/hooks/useCourseTrackingEvent.js.map +1 -0
  158. package/dist/hooks/useEntitlementInfo.d.ts +22 -0
  159. package/dist/hooks/useEntitlementInfo.js +29 -0
  160. package/dist/hooks/useEntitlementInfo.js.map +1 -0
  161. package/dist/hooks/useIsMasquerading.d.ts +2 -0
  162. package/dist/hooks/useIsMasquerading.js +9 -0
  163. package/dist/hooks/useIsMasquerading.js.map +1 -0
  164. package/dist/i18n/index.d.ts +1 -25
  165. package/dist/i18n/index.js +1 -25
  166. package/dist/i18n/index.js.map +1 -1
  167. package/dist/providers.js +2 -2
  168. package/dist/providers.js.map +1 -1
  169. package/dist/routes.d.ts +2 -0
  170. package/dist/routes.js +3 -1
  171. package/dist/routes.js.map +1 -1
  172. package/dist/tracking/trackers/findCourses.d.ts +1 -1
  173. package/dist/tracking/trackers/socialShare.js +2 -2
  174. package/dist/tracking/trackers/socialShare.js.map +1 -1
  175. package/dist/utils/dataTransformers.d.ts +7 -0
  176. package/dist/utils/dataTransformers.js +58 -0
  177. package/dist/utils/dataTransformers.js.map +1 -0
  178. package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/hooks.d.ts +5 -6
  179. package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/hooks.js +9 -14
  180. package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/hooks.js.map +1 -1
  181. package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/hooks.d.ts +12 -14
  182. package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/hooks.js +24 -34
  183. package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/hooks.js.map +1 -1
  184. package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/index.js +1 -1
  185. package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/index.js.map +1 -1
  186. package/dist/widgets/LearnerDashboardHeader/hooks.js +1 -1
  187. package/dist/widgets/LearnerDashboardHeader/hooks.js.map +1 -1
  188. package/dist/widgets/LookingForChallengeWidget/index.js +4 -2
  189. package/dist/widgets/LookingForChallengeWidget/index.js.map +1 -1
  190. package/dist/widgets/LookingForChallengeWidget/track.d.ts +1 -1
  191. package/package.json +26 -18
  192. package/dist/containers/CourseFilterControls/hooks.d.ts +0 -3
  193. package/dist/containers/CourseFilterControls/hooks.js +0 -48
  194. package/dist/containers/CourseFilterControls/hooks.js.map +0 -1
  195. package/dist/containers/CoursesPanel/hooks.d.ts +0 -15
  196. package/dist/containers/CoursesPanel/hooks.js +0 -45
  197. package/dist/containers/CoursesPanel/hooks.js.map +0 -1
  198. package/dist/containers/RelatedProgramsModal/hooks.d.ts +0 -7
  199. package/dist/containers/RelatedProgramsModal/hooks.js +0 -7
  200. package/dist/containers/RelatedProgramsModal/hooks.js.map +0 -1
  201. package/dist/data/contexts/MasqueradeUserContext.d.ts +0 -13
  202. package/dist/data/contexts/MasqueradeUserContext.js +0 -15
  203. package/dist/data/contexts/MasqueradeUserContext.js.map +0 -1
  204. package/dist/data/contexts/MasqueradeUserProvider.d.ts +0 -3
  205. package/dist/data/contexts/MasqueradeUserProvider.js +0 -24
  206. package/dist/data/contexts/MasqueradeUserProvider.js.map +0 -1
  207. package/dist/data/redux/app/index.d.ts +0 -2
  208. package/dist/data/redux/app/index.js +0 -3
  209. package/dist/data/redux/app/index.js.map +0 -1
  210. package/dist/data/redux/app/reducer.d.ts +0 -25
  211. package/dist/data/redux/app/reducer.js +0 -42
  212. package/dist/data/redux/app/reducer.js.map +0 -1
  213. package/dist/data/redux/app/selectors/appSelectors.d.ts +0 -17
  214. package/dist/data/redux/app/selectors/appSelectors.js +0 -13
  215. package/dist/data/redux/app/selectors/appSelectors.js.map +0 -1
  216. package/dist/data/redux/app/selectors/courseCard.d.ts +0 -3
  217. package/dist/data/redux/app/selectors/courseCard.js +0 -114
  218. package/dist/data/redux/app/selectors/courseCard.js.map +0 -1
  219. package/dist/data/redux/app/selectors/currentList.d.ts +0 -24
  220. package/dist/data/redux/app/selectors/currentList.js +0 -45
  221. package/dist/data/redux/app/selectors/currentList.js.map +0 -1
  222. package/dist/data/redux/app/selectors/index.d.ts +0 -2
  223. package/dist/data/redux/app/selectors/index.js +0 -8
  224. package/dist/data/redux/app/selectors/index.js.map +0 -1
  225. package/dist/data/redux/app/selectors/simpleSelectors.d.ts +0 -5
  226. package/dist/data/redux/app/selectors/simpleSelectors.js +0 -31
  227. package/dist/data/redux/app/selectors/simpleSelectors.js.map +0 -1
  228. package/dist/data/redux/hooks/app.d.ts +0 -42
  229. package/dist/data/redux/hooks/app.js +0 -99
  230. package/dist/data/redux/hooks/app.js.map +0 -1
  231. package/dist/data/redux/hooks/index.d.ts +0 -2
  232. package/dist/data/redux/hooks/index.js +0 -3
  233. package/dist/data/redux/hooks/index.js.map +0 -1
  234. package/dist/data/redux/hooks/requests.d.ts +0 -16
  235. package/dist/data/redux/hooks/requests.js +0 -38
  236. package/dist/data/redux/hooks/requests.js.map +0 -1
  237. package/dist/data/redux/index.d.ts +0 -6
  238. package/dist/data/redux/index.js +0 -26
  239. package/dist/data/redux/index.js.map +0 -1
  240. package/dist/data/redux/requests/index.d.ts +0 -2
  241. package/dist/data/redux/requests/index.js +0 -3
  242. package/dist/data/redux/requests/index.js.map +0 -1
  243. package/dist/data/redux/requests/reducer.d.ts +0 -36
  244. package/dist/data/redux/requests/reducer.js +0 -32
  245. package/dist/data/redux/requests/reducer.js.map +0 -1
  246. package/dist/data/redux/requests/selectors.d.ts +0 -21
  247. package/dist/data/redux/requests/selectors.js +0 -24
  248. package/dist/data/redux/requests/selectors.js.map +0 -1
  249. package/dist/data/services/lms/fakeData/courses.d.ts +0 -788
  250. package/dist/data/services/lms/fakeData/courses.js +0 -744
  251. package/dist/data/services/lms/fakeData/courses.js.map +0 -1
  252. package/dist/data/services/lms/fakeData/testUtils.d.ts +0 -18
  253. package/dist/data/services/lms/fakeData/testUtils.js +0 -31
  254. package/dist/data/services/lms/fakeData/testUtils.js.map +0 -1
  255. package/dist/data/store.d.ts +0 -12
  256. package/dist/data/store.js +0 -14
  257. package/dist/data/store.js.map +0 -1
  258. package/dist/data/utils.d.ts +0 -10
  259. package/dist/data/utils.js +0 -14
  260. package/dist/data/utils.js.map +0 -1
  261. package/dist/hooks/api.d.ts +0 -9
  262. package/dist/hooks/api.js +0 -96
  263. package/dist/hooks/api.js.map +0 -1
  264. package/dist/slots/CourseBannerSlot/images/course_banner_slot_default.png +0 -0
  265. package/dist/slots/CourseBannerSlot/images/custom_course_banner.png +0 -0
  266. package/dist/slots/CourseCardActionSlot/images/post_course_card_action.png +0 -0
  267. package/dist/slots/CourseListSlot/images/course_list_slot.png +0 -0
  268. package/dist/slots/CourseListSlot/images/readme_custom_course_list.png +0 -0
  269. package/dist/slots/DashboardModalSlot/images/dashboard_modal_slot.png +0 -0
  270. package/dist/slots/NoCoursesViewSlot/images/no_course_view_slot.png +0 -0
  271. package/dist/slots/NoCoursesViewSlot/images/readme_custom_no_courses.png +0 -0
  272. package/dist/slots/WidgetSidebarSlot/images/readme_custom_sidebar.png +0 -0
  273. package/dist/slots/WidgetSidebarSlot/images/widget_sidebar_slot.png +0 -0
  274. package/dist/test/inspector.d.ts +0 -28
  275. package/dist/test/inspector.js +0 -38
  276. package/dist/test/inspector.js.map +0 -1
  277. package/dist/test/messages.d.ts +0 -8
  278. package/dist/test/messages.js +0 -18
  279. package/dist/test/messages.js.map +0 -1
  280. package/dist/test/utils.d.ts +0 -2
  281. package/dist/test/utils.js +0 -3
  282. package/dist/test/utils.js.map +0 -1
@@ -3,12 +3,17 @@ const messages = defineMessages({
3
3
  confirmHeader: {
4
4
  id: 'learner-dash.unenrollConfirm.confirm.header',
5
5
  description: 'Header for confirm unenroll modal',
6
- defaultMessage: 'Unenroll from course?',
6
+ defaultMessage: 'Confirm Unenrollment',
7
+ },
8
+ confirmText: {
9
+ id: 'learner-dash.unenrollConfirm.confirm.text',
10
+ description: 'Text for confirm unenroll modal',
11
+ defaultMessage: 'Are you sure you want to unenroll from the course {courseTitle} ?',
7
12
  },
8
13
  confirmCancel: {
9
14
  id: 'learner-dash.unenrollConfirm.confirm.cancel',
10
15
  description: 'Cancel action for confirm unenroll modal',
11
- defaultMessage: 'Never mind',
16
+ defaultMessage: 'Cancel',
12
17
  },
13
18
  confirmUnenroll: {
14
19
  id: 'learner-dash.unenrollConfirm.confirm.unenroll',
@@ -18,7 +23,7 @@ const messages = defineMessages({
18
23
  reasonHeading: {
19
24
  id: 'learner-dash.unenrollConfirm.confirm.reason.heading',
20
25
  description: 'Heading for unenroll reason modal',
21
- defaultMessage: `What's your main reason for unenrolling?`,
26
+ defaultMessage: 'Why are you unenrolling?',
22
27
  },
23
28
  reasonSkip: {
24
29
  id: 'learner-dash.unenrollConfirm.confirm.reason.skip',
@@ -28,27 +33,22 @@ const messages = defineMessages({
28
33
  reasonSubmit: {
29
34
  id: 'learner-dash.unenrollConfirm.confirm.reason.submit',
30
35
  description: 'Submit action for unenroll reason modal',
31
- defaultMessage: 'Submit reason',
36
+ defaultMessage: 'Unenroll',
32
37
  },
33
38
  finishHeading: {
34
39
  id: 'learner-dash.unenrollConfirm.confirm.finish.heading',
35
40
  description: 'Heading for unenroll finish modal',
36
- defaultMessage: 'You are unenrolled',
37
- },
38
- finishThanksText: {
39
- id: 'learner-dash.unenrollConfirm.confirm.finish.thanks-text',
40
- description: 'Thank you message on unenroll modal for providing a reason',
41
- defaultMessage: 'Thank you for sharing your reason for unenrolling. ',
41
+ defaultMessage: 'Unenrollment Successful',
42
42
  },
43
43
  finishText: {
44
44
  id: 'learner-dash.unenrollConfirm.confirm.finish.text',
45
45
  description: 'Text for unenroll finish modal',
46
- defaultMessage: 'This course will be removed from your dashboard.',
46
+ defaultMessage: 'You have been unenrolled from the course {courseTitle}',
47
47
  },
48
48
  finishReturn: {
49
49
  id: 'learner-dash.unenrollConfirm.confirm.finish.return',
50
50
  description: 'Return action for unenroll finish modal',
51
- defaultMessage: 'Return to dashboard',
51
+ defaultMessage: 'Ok',
52
52
  },
53
53
  });
54
54
  export default messages;
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../src/containers/UnenrollConfirmModal/components/messages.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,aAAa,EAAE;QACb,EAAE,EAAE,6CAA6C;QACjD,WAAW,EAAE,mCAAmC;QAChD,cAAc,EAAE,uBAAuB;KACxC;IACD,aAAa,EAAE;QACb,EAAE,EAAE,6CAA6C;QACjD,WAAW,EAAE,0CAA0C;QACvD,cAAc,EAAE,YAAY;KAC7B;IACD,eAAe,EAAE;QACf,EAAE,EAAE,+CAA+C;QACnD,WAAW,EAAE,2CAA2C;QACxD,cAAc,EAAE,UAAU;KAC3B;IACD,aAAa,EAAE;QACb,EAAE,EAAE,qDAAqD;QACzD,WAAW,EAAE,mCAAmC;QAChD,cAAc,EAAE,0CAA0C;KAC3D;IACD,UAAU,EAAE;QACV,EAAE,EAAE,kDAAkD;QACtD,WAAW,EAAE,uCAAuC;QACpD,cAAc,EAAE,aAAa;KAC9B;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,oDAAoD;QACxD,WAAW,EAAE,yCAAyC;QACtD,cAAc,EAAE,eAAe;KAChC;IACD,aAAa,EAAE;QACb,EAAE,EAAE,qDAAqD;QACzD,WAAW,EAAE,mCAAmC;QAChD,cAAc,EAAE,oBAAoB;KACrC;IACD,gBAAgB,EAAE;QAChB,EAAE,EAAE,yDAAyD;QAC7D,WAAW,EAAE,4DAA4D;QACzE,cAAc,EAAE,sDAAsD;KACvE;IACD,UAAU,EAAE;QACV,EAAE,EAAE,kDAAkD;QACtD,WAAW,EAAE,gCAAgC;QAC7C,cAAc,EAAE,kDAAkD;KACnE;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,oDAAoD;QACxD,WAAW,EAAE,yCAAyC;QACtD,cAAc,EAAE,qBAAqB;KACtC;CACF,CAAC,CAAC;AAEH,eAAe,QAAQ,CAAC","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n confirmHeader: {\n id: 'learner-dash.unenrollConfirm.confirm.header',\n description: 'Header for confirm unenroll modal',\n defaultMessage: 'Unenroll from course?',\n },\n confirmCancel: {\n id: 'learner-dash.unenrollConfirm.confirm.cancel',\n description: 'Cancel action for confirm unenroll modal',\n defaultMessage: 'Never mind',\n },\n confirmUnenroll: {\n id: 'learner-dash.unenrollConfirm.confirm.unenroll',\n description: 'Confirm action for confirm unenroll modal',\n defaultMessage: 'Unenroll',\n },\n reasonHeading: {\n id: 'learner-dash.unenrollConfirm.confirm.reason.heading',\n description: 'Heading for unenroll reason modal',\n defaultMessage: `What's your main reason for unenrolling?`,\n },\n reasonSkip: {\n id: 'learner-dash.unenrollConfirm.confirm.reason.skip',\n description: 'Skip action for unenroll reason modal',\n defaultMessage: 'Skip survey',\n },\n reasonSubmit: {\n id: 'learner-dash.unenrollConfirm.confirm.reason.submit',\n description: 'Submit action for unenroll reason modal',\n defaultMessage: 'Submit reason',\n },\n finishHeading: {\n id: 'learner-dash.unenrollConfirm.confirm.finish.heading',\n description: 'Heading for unenroll finish modal',\n defaultMessage: 'You are unenrolled',\n },\n finishThanksText: {\n id: 'learner-dash.unenrollConfirm.confirm.finish.thanks-text',\n description: 'Thank you message on unenroll modal for providing a reason',\n defaultMessage: 'Thank you for sharing your reason for unenrolling. ',\n },\n finishText: {\n id: 'learner-dash.unenrollConfirm.confirm.finish.text',\n description: 'Text for unenroll finish modal',\n defaultMessage: 'This course will be removed from your dashboard.',\n },\n finishReturn: {\n id: 'learner-dash.unenrollConfirm.confirm.finish.return',\n description: 'Return action for unenroll finish modal',\n defaultMessage: 'Return to dashboard',\n },\n});\n\nexport default messages;\n"]}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../src/containers/UnenrollConfirmModal/components/messages.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,aAAa,EAAE;QACb,EAAE,EAAE,6CAA6C;QACjD,WAAW,EAAE,mCAAmC;QAChD,cAAc,EAAE,sBAAsB;KACvC;IACD,WAAW,EAAE;QACX,EAAE,EAAE,2CAA2C;QAC/C,WAAW,EAAE,iCAAiC;QAC9C,cAAc,EAAE,mEAAmE;KACpF;IACD,aAAa,EAAE;QACb,EAAE,EAAE,6CAA6C;QACjD,WAAW,EAAE,0CAA0C;QACvD,cAAc,EAAE,QAAQ;KACzB;IACD,eAAe,EAAE;QACf,EAAE,EAAE,+CAA+C;QACnD,WAAW,EAAE,2CAA2C;QACxD,cAAc,EAAE,UAAU;KAC3B;IACD,aAAa,EAAE;QACb,EAAE,EAAE,qDAAqD;QACzD,WAAW,EAAE,mCAAmC;QAChD,cAAc,EAAE,0BAA0B;KAC3C;IACD,UAAU,EAAE;QACV,EAAE,EAAE,kDAAkD;QACtD,WAAW,EAAE,uCAAuC;QACpD,cAAc,EAAE,aAAa;KAC9B;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,oDAAoD;QACxD,WAAW,EAAE,yCAAyC;QACtD,cAAc,EAAE,UAAU;KAC3B;IACD,aAAa,EAAE;QACb,EAAE,EAAE,qDAAqD;QACzD,WAAW,EAAE,mCAAmC;QAChD,cAAc,EAAE,yBAAyB;KAC1C;IACD,UAAU,EAAE;QACV,EAAE,EAAE,kDAAkD;QACtD,WAAW,EAAE,gCAAgC;QAC7C,cAAc,EAAE,wDAAwD;KACzE;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,oDAAoD;QACxD,WAAW,EAAE,yCAAyC;QACtD,cAAc,EAAE,IAAI;KACrB;CACF,CAAC,CAAC;AAEH,eAAe,QAAQ,CAAC","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n confirmHeader: {\n id: 'learner-dash.unenrollConfirm.confirm.header',\n description: 'Header for confirm unenroll modal',\n defaultMessage: 'Confirm Unenrollment',\n },\n confirmText: {\n id: 'learner-dash.unenrollConfirm.confirm.text',\n description: 'Text for confirm unenroll modal',\n defaultMessage: 'Are you sure you want to unenroll from the course {courseTitle} ?',\n },\n confirmCancel: {\n id: 'learner-dash.unenrollConfirm.confirm.cancel',\n description: 'Cancel action for confirm unenroll modal',\n defaultMessage: 'Cancel',\n },\n confirmUnenroll: {\n id: 'learner-dash.unenrollConfirm.confirm.unenroll',\n description: 'Confirm action for confirm unenroll modal',\n defaultMessage: 'Unenroll',\n },\n reasonHeading: {\n id: 'learner-dash.unenrollConfirm.confirm.reason.heading',\n description: 'Heading for unenroll reason modal',\n defaultMessage: 'Why are you unenrolling?',\n },\n reasonSkip: {\n id: 'learner-dash.unenrollConfirm.confirm.reason.skip',\n description: 'Skip action for unenroll reason modal',\n defaultMessage: 'Skip survey',\n },\n reasonSubmit: {\n id: 'learner-dash.unenrollConfirm.confirm.reason.submit',\n description: 'Submit action for unenroll reason modal',\n defaultMessage: 'Unenroll',\n },\n finishHeading: {\n id: 'learner-dash.unenrollConfirm.confirm.finish.heading',\n description: 'Heading for unenroll finish modal',\n defaultMessage: 'Unenrollment Successful',\n },\n finishText: {\n id: 'learner-dash.unenrollConfirm.confirm.finish.text',\n description: 'Text for unenroll finish modal',\n defaultMessage: 'You have been unenrolled from the course {courseTitle}',\n },\n finishReturn: {\n id: 'learner-dash.unenrollConfirm.confirm.finish.return',\n description: 'Return action for unenroll finish modal',\n defaultMessage: 'Ok',\n },\n});\n\nexport default messages;\n"]}
@@ -52,6 +52,11 @@ declare const messages: {
52
52
  description: string;
53
53
  defaultMessage: string;
54
54
  };
55
+ [reasonKeys.preferNotToSay]: {
56
+ id: string;
57
+ description: string;
58
+ defaultMessage: string;
59
+ };
55
60
  customPlaceholder: {
56
61
  id: string;
57
62
  description: string;
@@ -11,17 +11,18 @@ export const reasonKeys = StrictDict({
11
11
  quality: 'quality',
12
12
  easy: 'easy',
13
13
  custom: 'custom',
14
+ preferNotToSay: 'prefer-not-to-say',
14
15
  });
15
16
  export const order = [
16
17
  reasonKeys.prereqs,
17
18
  reasonKeys.difficulty,
19
+ reasonKeys.easy,
18
20
  reasonKeys.goals,
19
21
  reasonKeys.broken,
20
22
  reasonKeys.time,
21
23
  reasonKeys.browse,
22
24
  reasonKeys.support,
23
25
  reasonKeys.quality,
24
- reasonKeys.easy,
25
26
  ];
26
27
  const messages = defineMessages({
27
28
  [reasonKeys.prereqs]: {
@@ -74,6 +75,11 @@ const messages = defineMessages({
74
75
  description: 'Unenroll custom reason option placeholder text',
75
76
  defaultMessage: 'Other',
76
77
  },
78
+ [reasonKeys.preferNotToSay]: {
79
+ id: 'learner-dash.unenrollConfirm.reasons.prefer-not-to-say',
80
+ description: 'Unenroll reason option - prefer not to say',
81
+ defaultMessage: 'I prefer not to say',
82
+ },
77
83
  });
78
84
  export default {
79
85
  messages,
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/containers/UnenrollConfirmModal/constants.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,UAAU,CAAC,OAAO;IAClB,UAAU,CAAC,UAAU;IACrB,UAAU,CAAC,KAAK;IAChB,UAAU,CAAC,MAAM;IACjB,UAAU,CAAC,IAAI;IACf,UAAU,CAAC,MAAM;IACjB,UAAU,CAAC,OAAO;IAClB,UAAU,CAAC,OAAO;IAClB,UAAU,CAAC,IAAI;CAChB,CAAC;AAEF,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACpB,EAAE,EAAE,8CAA8C;QAClD,WAAW,EAAE,gDAAgD;QAC7D,cAAc,EAAE,qDAAqD;KACtE;IACD,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QACvB,EAAE,EAAE,iDAAiD;QACrD,WAAW,EAAE,+CAA+C;QAC5D,cAAc,EAAE,kCAAkC;KACnD;IACD,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QAClB,EAAE,EAAE,4CAA4C;QAChD,WAAW,EAAE,wCAAwC;QACrD,cAAc,EAAE,mCAAmC;KACpD;IACD,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACnB,EAAE,EAAE,6CAA6C;QACjD,WAAW,EAAE,2CAA2C;QACxD,cAAc,EAAE,sBAAsB;KACvC;IACD,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACjB,EAAE,EAAE,2CAA2C;QAC/C,WAAW,EAAE,uCAAuC;QACpD,cAAc,EAAE,uBAAuB;KACxC;IACD,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACnB,EAAE,EAAE,6CAA6C;QACjD,WAAW,EAAE,2CAA2C;QACxD,cAAc,EAAE,sCAAsC;KACvD;IACD,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACpB,EAAE,EAAE,8CAA8C;QAClD,WAAW,EAAE,0CAA0C;QACvD,cAAc,EAAE,6BAA6B;KAC9C;IACD,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACpB,EAAE,EAAE,8CAA8C;QAClD,WAAW,EAAE,0CAA0C;QACvD,cAAc,EAAE,gDAAgD;KACjE;IACD,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACjB,EAAE,EAAE,2CAA2C;QAC/C,WAAW,EAAE,mCAAmC;QAChD,cAAc,EAAE,kCAAkC;KACnD;IACD,iBAAiB,EAAE;QACjB,EAAE,EAAE,yDAAyD;QAC7D,WAAW,EAAE,gDAAgD;QAC7D,cAAc,EAAE,OAAO;KACxB;CACF,CAAC,CAAC;AAEH,eAAe;IACb,QAAQ;IACR,KAAK;IACL,UAAU;CACX,CAAC","sourcesContent":["import { StrictDict } from '../../utils';\nimport { defineMessages } from '@openedx/frontend-base';\n\nexport const reasonKeys = StrictDict({\n prereqs: 'prereqs',\n difficulty: 'difficulty',\n goals: 'goals',\n broken: 'broken',\n time: 'time',\n browse: 'browse',\n support: 'support',\n quality: 'quality',\n easy: 'easy',\n custom: 'custom',\n});\n\nexport const order = [\n reasonKeys.prereqs,\n reasonKeys.difficulty,\n reasonKeys.goals,\n reasonKeys.broken,\n reasonKeys.time,\n reasonKeys.browse,\n reasonKeys.support,\n reasonKeys.quality,\n reasonKeys.easy,\n];\n\nconst messages = defineMessages({\n [reasonKeys.prereqs]: {\n id: 'learner-dash.unenrollConfirm.reasons.prereqs',\n description: 'Unenroll reason option - missing prerequisites',\n defaultMessage: `I don't have the academic or language prerequisites`,\n },\n [reasonKeys.difficulty]: {\n id: 'learner-dash.unenrollConfirm.reasons.difficulty',\n description: 'Unenroll reason option - material is too hard',\n defaultMessage: 'The course material was too hard',\n },\n [reasonKeys.goals]: {\n id: 'learner-dash.unenrollConfirm.reasons.goals',\n description: 'Unenroll reason option - goals-related',\n defaultMessage: `This won't help me reach my goals`,\n },\n [reasonKeys.broken]: {\n id: 'learner-dash.unenrollConfirm.reasons.broken',\n description: 'Unenroll reason option - something broken',\n defaultMessage: 'Something was broken',\n },\n [reasonKeys.time]: {\n id: 'learner-dash.unenrollConfirm.reasons.time',\n description: 'Unenroll reason option - time-related',\n defaultMessage: `I don't have the time`,\n },\n [reasonKeys.browse]: {\n id: 'learner-dash.unenrollConfirm.reasons.browse',\n description: 'Unenroll reason option - wanted to browse',\n defaultMessage: 'I just wanted to browse the material',\n },\n [reasonKeys.support]: {\n id: 'learner-dash.unenrollConfirm.reasons.support',\n description: 'Unenroll reason option - lacking support',\n defaultMessage: `I don't have enough support`,\n },\n [reasonKeys.quality]: {\n id: 'learner-dash.unenrollConfirm.reasons.quality',\n description: 'Unenroll reason option - quality-related',\n defaultMessage: 'I am not happy with the quality of the content',\n },\n [reasonKeys.easy]: {\n id: 'learner-dash.unenrollConfirm.reasons.easy',\n description: 'Unenroll reason option - too easy',\n defaultMessage: 'The course material was too easy',\n },\n customPlaceholder: {\n id: 'learner-dash.unenrollConfirm.reasons.custom-placeholder',\n description: 'Unenroll custom reason option placeholder text',\n defaultMessage: 'Other',\n },\n});\n\nexport default {\n messages,\n order,\n reasonKeys,\n};\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/containers/UnenrollConfirmModal/constants.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,cAAc,EAAE,mBAAmB;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,UAAU,CAAC,OAAO;IAClB,UAAU,CAAC,UAAU;IACrB,UAAU,CAAC,IAAI;IACf,UAAU,CAAC,KAAK;IAChB,UAAU,CAAC,MAAM;IACjB,UAAU,CAAC,IAAI;IACf,UAAU,CAAC,MAAM;IACjB,UAAU,CAAC,OAAO;IAClB,UAAU,CAAC,OAAO;CACnB,CAAC;AAEF,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACpB,EAAE,EAAE,8CAA8C;QAClD,WAAW,EAAE,gDAAgD;QAC7D,cAAc,EAAE,qDAAqD;KACtE;IACD,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QACvB,EAAE,EAAE,iDAAiD;QACrD,WAAW,EAAE,+CAA+C;QAC5D,cAAc,EAAE,kCAAkC;KACnD;IACD,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QAClB,EAAE,EAAE,4CAA4C;QAChD,WAAW,EAAE,wCAAwC;QACrD,cAAc,EAAE,mCAAmC;KACpD;IACD,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACnB,EAAE,EAAE,6CAA6C;QACjD,WAAW,EAAE,2CAA2C;QACxD,cAAc,EAAE,sBAAsB;KACvC;IACD,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACjB,EAAE,EAAE,2CAA2C;QAC/C,WAAW,EAAE,uCAAuC;QACpD,cAAc,EAAE,uBAAuB;KACxC;IACD,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACnB,EAAE,EAAE,6CAA6C;QACjD,WAAW,EAAE,2CAA2C;QACxD,cAAc,EAAE,sCAAsC;KACvD;IACD,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACpB,EAAE,EAAE,8CAA8C;QAClD,WAAW,EAAE,0CAA0C;QACvD,cAAc,EAAE,6BAA6B;KAC9C;IACD,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACpB,EAAE,EAAE,8CAA8C;QAClD,WAAW,EAAE,0CAA0C;QACvD,cAAc,EAAE,gDAAgD;KACjE;IACD,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACjB,EAAE,EAAE,2CAA2C;QAC/C,WAAW,EAAE,mCAAmC;QAChD,cAAc,EAAE,kCAAkC;KACnD;IACD,iBAAiB,EAAE;QACjB,EAAE,EAAE,yDAAyD;QAC7D,WAAW,EAAE,gDAAgD;QAC7D,cAAc,EAAE,OAAO;KACxB;IACD,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;QAC3B,EAAE,EAAE,wDAAwD;QAC5D,WAAW,EAAE,4CAA4C;QACzD,cAAc,EAAE,qBAAqB;KACtC;CACF,CAAC,CAAC;AAEH,eAAe;IACb,QAAQ;IACR,KAAK;IACL,UAAU;CACX,CAAC","sourcesContent":["import { StrictDict } from '../../utils';\nimport { defineMessages } from '@openedx/frontend-base';\n\nexport const reasonKeys = StrictDict({\n prereqs: 'prereqs',\n difficulty: 'difficulty',\n goals: 'goals',\n broken: 'broken',\n time: 'time',\n browse: 'browse',\n support: 'support',\n quality: 'quality',\n easy: 'easy',\n custom: 'custom',\n preferNotToSay: 'prefer-not-to-say',\n});\n\nexport const order = [\n reasonKeys.prereqs,\n reasonKeys.difficulty,\n reasonKeys.easy,\n reasonKeys.goals,\n reasonKeys.broken,\n reasonKeys.time,\n reasonKeys.browse,\n reasonKeys.support,\n reasonKeys.quality,\n];\n\nconst messages = defineMessages({\n [reasonKeys.prereqs]: {\n id: 'learner-dash.unenrollConfirm.reasons.prereqs',\n description: 'Unenroll reason option - missing prerequisites',\n defaultMessage: `I don't have the academic or language prerequisites`,\n },\n [reasonKeys.difficulty]: {\n id: 'learner-dash.unenrollConfirm.reasons.difficulty',\n description: 'Unenroll reason option - material is too hard',\n defaultMessage: 'The course material was too hard',\n },\n [reasonKeys.goals]: {\n id: 'learner-dash.unenrollConfirm.reasons.goals',\n description: 'Unenroll reason option - goals-related',\n defaultMessage: `This won't help me reach my goals`,\n },\n [reasonKeys.broken]: {\n id: 'learner-dash.unenrollConfirm.reasons.broken',\n description: 'Unenroll reason option - something broken',\n defaultMessage: 'Something was broken',\n },\n [reasonKeys.time]: {\n id: 'learner-dash.unenrollConfirm.reasons.time',\n description: 'Unenroll reason option - time-related',\n defaultMessage: `I don't have the time`,\n },\n [reasonKeys.browse]: {\n id: 'learner-dash.unenrollConfirm.reasons.browse',\n description: 'Unenroll reason option - wanted to browse',\n defaultMessage: 'I just wanted to browse the material',\n },\n [reasonKeys.support]: {\n id: 'learner-dash.unenrollConfirm.reasons.support',\n description: 'Unenroll reason option - lacking support',\n defaultMessage: `I don't have enough support`,\n },\n [reasonKeys.quality]: {\n id: 'learner-dash.unenrollConfirm.reasons.quality',\n description: 'Unenroll reason option - quality-related',\n defaultMessage: 'I am not happy with the quality of the content',\n },\n [reasonKeys.easy]: {\n id: 'learner-dash.unenrollConfirm.reasons.easy',\n description: 'Unenroll reason option - too easy',\n defaultMessage: 'The course material was too easy',\n },\n customPlaceholder: {\n id: 'learner-dash.unenrollConfirm.reasons.custom-placeholder',\n description: 'Unenroll custom reason option placeholder text',\n defaultMessage: 'Other',\n },\n [reasonKeys.preferNotToSay]: {\n id: 'learner-dash.unenrollConfirm.reasons.prefer-not-to-say',\n description: 'Unenroll reason option - prefer not to say',\n defaultMessage: 'I prefer not to say',\n },\n});\n\nexport default {\n messages,\n order,\n reasonKeys,\n};\n"]}
@@ -5,17 +5,15 @@ export function useUnenrollData({ closeModal, cardId }: {
5
5
  cardId: any;
6
6
  }): {
7
7
  isConfirmed: any;
8
- confirm: () => any;
8
+ confirm: () => void;
9
9
  reason: {
10
10
  customOption: {
11
11
  value: any;
12
12
  onChange: (e: any) => any;
13
13
  };
14
14
  handleClear: () => void;
15
- handleSkip: () => void;
16
15
  handleSubmit: (e: any) => void;
17
16
  hasReason: boolean;
18
- isSkipped: any;
19
17
  isSubmitted: any;
20
18
  selectOption: (e: any) => any;
21
19
  submittedReason: any;
@@ -1,11 +1,12 @@
1
- import { useState } from 'react';
2
- import { useQueryClient } from '@tanstack/react-query';
3
- import { RequestKeys } from '../../../data/constants/requests';
1
+ import React from 'react';
2
+ import { useAppConfig } from '@openedx/frontend-base';
4
3
  import { StrictDict } from '../../../utils';
4
+ import { useCourseData } from '../../../hooks';
5
+ import { useUnenrollFromCourse } from '../../../data/hooks';
5
6
  import { useUnenrollReasons } from './reasons';
6
7
  import * as module from '.';
7
8
  export const state = StrictDict({
8
- confirmed: (val) => useState(val), // eslint-disable-line
9
+ confirmed: (val) => React.useState(val), // eslint-disable-line
9
10
  });
10
11
  export const modalStates = StrictDict({
11
12
  confirm: 'confirm',
@@ -13,14 +14,22 @@ export const modalStates = StrictDict({
13
14
  finished: 'finished',
14
15
  });
15
16
  export const useUnenrollData = ({ closeModal, cardId }) => {
17
+ var _a;
16
18
  const [isConfirmed, setIsConfirmed] = module.state.confirmed(false);
17
- const confirm = () => setIsConfirmed(true);
18
19
  const reason = useUnenrollReasons({ cardId });
19
- const queryClient = useQueryClient();
20
- const refreshList = () => queryClient.invalidateQueries({ queryKey: [RequestKeys.initialize] });
20
+ const appConfig = useAppConfig();
21
+ const courseData = useCourseData(cardId);
22
+ const courseId = (_a = courseData === null || courseData === void 0 ? void 0 : courseData.courseRun) === null || _a === void 0 ? void 0 : _a.courseId;
23
+ const { mutate: unenrollFromCourse } = useUnenrollFromCourse();
24
+ const confirm = () => {
25
+ if (!appConfig.SHOW_UNENROLL_SURVEY) {
26
+ unenrollFromCourse({ courseId });
27
+ }
28
+ setIsConfirmed(true);
29
+ };
21
30
  let modalState;
22
31
  if (isConfirmed) {
23
- modalState = (reason.isSubmitted || reason.isSkipped)
32
+ modalState = (reason.isSubmitted || !appConfig.SHOW_UNENROLL_SURVEY)
24
33
  ? modalStates.finished : modalStates.reason;
25
34
  }
26
35
  else {
@@ -31,16 +40,12 @@ export const useUnenrollData = ({ closeModal, cardId }) => {
31
40
  setIsConfirmed(false);
32
41
  reason.handleClear();
33
42
  };
34
- const closeAndRefresh = () => {
35
- refreshList();
36
- close();
37
- };
38
43
  return {
39
44
  isConfirmed,
40
45
  confirm,
41
46
  reason,
42
47
  close,
43
- closeAndRefresh,
48
+ closeAndRefresh: close,
44
49
  modalState,
45
50
  };
46
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/containers/UnenrollConfirmModal/hooks/index.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,MAAM,MAAM,GAAG,CAAC;AAE5B,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC;IAC9B,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,sBAAsB;CAC1D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;IACxD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAEhG,IAAI,UAAU,CAAC;IACf,IAAI,WAAW,EAAE,CAAC;QAChB,UAAU,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC;YACnD,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC;IACnC,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,UAAU,EAAE,CAAC;QACb,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,WAAW,EAAE,CAAC;QACd,KAAK,EAAE,CAAC;IACV,CAAC,CAAC;IAEF,OAAO;QACL,WAAW;QACX,OAAO;QACP,MAAM;QACN,KAAK;QACL,eAAe;QACf,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC","sourcesContent":["import { useState } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport { RequestKeys } from '../../../data/constants/requests';\nimport { StrictDict } from '../../../utils';\n\nimport { useUnenrollReasons } from './reasons';\nimport * as module from '.';\n\nexport const state = StrictDict({\n confirmed: (val) => useState(val), // eslint-disable-line\n});\n\nexport const modalStates = StrictDict({\n confirm: 'confirm',\n reason: 'reason',\n finished: 'finished',\n});\n\nexport const useUnenrollData = ({ closeModal, cardId }) => {\n const [isConfirmed, setIsConfirmed] = module.state.confirmed(false);\n const confirm = () => setIsConfirmed(true);\n const reason = useUnenrollReasons({ cardId });\n const queryClient = useQueryClient();\n const refreshList = () => queryClient.invalidateQueries({ queryKey: [RequestKeys.initialize] });\n\n let modalState;\n if (isConfirmed) {\n modalState = (reason.isSubmitted || reason.isSkipped)\n ? modalStates.finished : modalStates.reason;\n } else {\n modalState = modalStates.confirm;\n }\n\n const close = () => {\n closeModal();\n setIsConfirmed(false);\n reason.handleClear();\n };\n const closeAndRefresh = () => {\n refreshList();\n close();\n };\n\n return {\n isConfirmed,\n confirm,\n reason,\n close,\n closeAndRefresh,\n modalState,\n };\n};\n\nexport default useUnenrollData;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/containers/UnenrollConfirmModal/hooks/index.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,MAAM,MAAM,GAAG,CAAC;AAE5B,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC;IAC9B,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,sBAAsB;CAChE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;;IACxD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,0CAAE,QAAQ,CAAC;IAEjD,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAE/D,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;YACpC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,cAAc,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,IAAI,UAAU,CAAC;IACf,IAAI,WAAW,EAAE,CAAC;QAChB,UAAU,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC;YAClE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC;IACnC,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,UAAU,EAAE,CAAC;QACb,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,OAAO;QACL,WAAW;QACX,OAAO;QACP,MAAM;QACN,KAAK;QACL,eAAe,EAAE,KAAK;QACtB,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC","sourcesContent":["import React from 'react';\n\nimport { useAppConfig } from '@openedx/frontend-base';\nimport { StrictDict } from '@src/utils';\nimport { useCourseData } from '@src/hooks';\nimport { useUnenrollFromCourse } from '@src/data/hooks';\n\nimport { useUnenrollReasons } from './reasons';\nimport * as module from '.';\n\nexport const state = StrictDict({\n confirmed: (val) => React.useState(val), // eslint-disable-line\n});\n\nexport const modalStates = StrictDict({\n confirm: 'confirm',\n reason: 'reason',\n finished: 'finished',\n});\n\nexport const useUnenrollData = ({ closeModal, cardId }) => {\n const [isConfirmed, setIsConfirmed] = module.state.confirmed(false);\n const reason = useUnenrollReasons({ cardId });\n const appConfig = useAppConfig();\n const courseData = useCourseData(cardId);\n const courseId = courseData?.courseRun?.courseId;\n\n const { mutate: unenrollFromCourse } = useUnenrollFromCourse();\n\n const confirm = () => {\n if (!appConfig.SHOW_UNENROLL_SURVEY) {\n unenrollFromCourse({ courseId });\n }\n setIsConfirmed(true);\n };\n\n let modalState;\n if (isConfirmed) {\n modalState = (reason.isSubmitted || !appConfig.SHOW_UNENROLL_SURVEY)\n ? modalStates.finished : modalStates.reason;\n } else {\n modalState = modalStates.confirm;\n }\n\n const close = () => {\n closeModal();\n setIsConfirmed(false);\n reason.handleClear();\n };\n\n return {\n isConfirmed,\n confirm,\n reason,\n close,\n closeAndRefresh: close,\n modalState,\n };\n};\n\nexport default useUnenrollData;\n"]}
@@ -7,10 +7,8 @@ export function useUnenrollReasons({ cardId, }: {
7
7
  onChange: (e: any) => any;
8
8
  };
9
9
  handleClear: () => void;
10
- handleSkip: () => void;
11
10
  handleSubmit: (e: any) => void;
12
11
  hasReason: boolean;
13
- isSkipped: any;
14
12
  isSubmitted: any;
15
13
  selectOption: (e: any) => any;
16
14
  submittedReason: any;
@@ -1,38 +1,38 @@
1
1
  import React from 'react';
2
- import { apiHooks, reduxHooks, utilHooks, } from '../../../hooks';
2
+ import { useCourseData, useCourseTrackingEvent, utilHooks, useEntitlementInfo, } from '../../../hooks';
3
3
  import { StrictDict } from '../../../utils';
4
4
  import track from '../../../tracking';
5
+ import { useUnenrollFromCourse } from '../../../data/hooks';
5
6
  import * as module from './reasons';
7
+ import constants from '../constants';
6
8
  export const state = StrictDict({
7
9
  customOption: (val) => React.useState(val), // eslint-disable-line
8
- isSkipped: (val) => React.useState(val), // eslint-disable-line
9
10
  selectedReason: (val) => React.useState(val), // eslint-disable-line
10
11
  isSubmitted: (val) => React.useState(val), //eslint-disable-line
11
12
  });
12
13
  export const useUnenrollReasons = ({ cardId, }) => {
14
+ const courseData = useCourseData(cardId);
15
+ const { mutate: unenrollFromCourseMutation } = useUnenrollFromCourse();
13
16
  // The selected option element from the menu
14
- const [selectedReason, setSelectedReason] = module.state.selectedReason(null);
17
+ const [selectedReason, setSelectedReason] = module.state.selectedReason(constants.reasonKeys.preferNotToSay);
15
18
  // Custom option element entry value
16
19
  const [customOption, setCustomOption] = module.state.customOption('');
17
- // Did the user choose to skip selecting a reason?
18
- const [isSkipped, setIsSkipped] = module.state.isSkipped(false);
19
20
  // Did the user submit an unenrollment reason
20
21
  const [isSubmitted, setIsSubmitted] = module.state.isSubmitted(false);
21
- const { isEntitlement } = reduxHooks.useCardEntitlementData(cardId);
22
+ const { isEntitlement } = useEntitlementInfo(courseData);
22
23
  const submittedReason = selectedReason === 'custom' ? customOption : selectedReason;
23
24
  const hasReason = ![null, ''].includes(submittedReason);
24
- const handleTrackReasons = reduxHooks.useTrackCourseEvent(track.engagement.unenrollReason, cardId, submittedReason, isEntitlement);
25
- const unenrollFromCourse = apiHooks.useUnenrollFromCourse(cardId);
25
+ const handleTrackReasons = useCourseTrackingEvent(track.engagement.unenrollReason, cardId, submittedReason, isEntitlement);
26
+ const unenrollFromCourse = () => {
27
+ var _a;
28
+ const courseId = (_a = courseData === null || courseData === void 0 ? void 0 : courseData.courseRun) === null || _a === void 0 ? void 0 : _a.courseId;
29
+ unenrollFromCourseMutation({ courseId });
30
+ };
26
31
  const handleClear = () => {
27
32
  setSelectedReason(null);
28
33
  setCustomOption('');
29
- setIsSkipped(false);
30
34
  setIsSubmitted(false);
31
35
  };
32
- const handleSkip = () => {
33
- setIsSkipped(true);
34
- unenrollFromCourse();
35
- };
36
36
  const handleSubmit = (e) => {
37
37
  handleTrackReasons(e);
38
38
  setIsSubmitted(true);
@@ -43,10 +43,8 @@ export const useUnenrollReasons = ({ cardId, }) => {
43
43
  return {
44
44
  customOption: { value: customOption, onChange: handleCustomOptionChange },
45
45
  handleClear,
46
- handleSkip,
47
46
  handleSubmit,
48
47
  hasReason,
49
- isSkipped,
50
48
  isSubmitted,
51
49
  selectOption: handleSelectOption,
52
50
  submittedReason,
@@ -1 +1 @@
1
- {"version":3,"file":"reasons.js","sourceRoot":"","sources":["../../../../src/containers/UnenrollConfirmModal/hooks/reasons.js"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n apiHooks,\n reduxHooks,\n utilHooks,\n} from '../../../hooks';\nimport { StrictDict } from '../../../utils';\nimport track from '../../../tracking';\n\nimport * as module from './reasons';\n\nexport const state = StrictDict({\n customOption: (val) => React.useState(val), // eslint-disable-line\n isSkipped: (val) => React.useState(val), // eslint-disable-line\n selectedReason: (val) => React.useState(val), // eslint-disable-line\n isSubmitted: (val) => React.useState(val), //eslint-disable-line\n});\n\nexport const useUnenrollReasons = ({\n cardId,\n}) => {\n // The selected option element from the menu\n const [selectedReason, setSelectedReason] = module.state.selectedReason(null);\n // Custom option element entry value\n const [customOption, setCustomOption] = module.state.customOption('');\n\n // Did the user choose to skip selecting a reason?\n const [isSkipped, setIsSkipped] = module.state.isSkipped(false);\n // Did the user submit an unenrollment reason\n const [isSubmitted, setIsSubmitted] = module.state.isSubmitted(false);\n\n const { isEntitlement } = reduxHooks.useCardEntitlementData(cardId);\n\n const submittedReason = selectedReason === 'custom' ? customOption : selectedReason;\n const hasReason = ![null, ''].includes(submittedReason);\n\n const handleTrackReasons = reduxHooks.useTrackCourseEvent(\n track.engagement.unenrollReason,\n cardId,\n submittedReason,\n isEntitlement,\n );\n\n const unenrollFromCourse = apiHooks.useUnenrollFromCourse(cardId);\n\n const handleClear = () => {\n setSelectedReason(null);\n setCustomOption('');\n setIsSkipped(false);\n setIsSubmitted(false);\n };\n\n const handleSkip = () => {\n setIsSkipped(true);\n unenrollFromCourse();\n };\n\n const handleSubmit = (e) => {\n handleTrackReasons(e);\n setIsSubmitted(true);\n unenrollFromCourse();\n };\n\n const handleCustomOptionChange = utilHooks.useValueCallback(setCustomOption);\n const handleSelectOption = utilHooks.useValueCallback(setSelectedReason);\n\n return {\n customOption: { value: customOption, onChange: handleCustomOptionChange },\n handleClear,\n handleSkip,\n handleSubmit,\n hasReason,\n isSkipped,\n isSubmitted,\n selectOption: handleSelectOption,\n submittedReason,\n };\n};\n"]}
1
+ {"version":3,"file":"reasons.js","sourceRoot":"","sources":["../../../../src/containers/UnenrollConfirmModal/hooks/reasons.js"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n useCourseData,\n useCourseTrackingEvent,\n utilHooks,\n useEntitlementInfo,\n} from '@src/hooks';\nimport { StrictDict } from '@src/utils';\nimport track from '@src/tracking';\nimport { useUnenrollFromCourse } from '@src/data/hooks';\nimport * as module from './reasons';\nimport constants from '../constants';\n\nexport const state = StrictDict({\n customOption: (val) => React.useState(val), // eslint-disable-line\n selectedReason: (val) => React.useState(val), // eslint-disable-line\n isSubmitted: (val) => React.useState(val), //eslint-disable-line\n});\n\nexport const useUnenrollReasons = ({\n cardId,\n}) => {\n const courseData = useCourseData(cardId);\n const { mutate: unenrollFromCourseMutation } = useUnenrollFromCourse();\n // The selected option element from the menu\n const [selectedReason, setSelectedReason] = module.state.selectedReason(\n constants.reasonKeys.preferNotToSay,\n );\n // Custom option element entry value\n const [customOption, setCustomOption] = module.state.customOption('');\n\n // Did the user submit an unenrollment reason\n const [isSubmitted, setIsSubmitted] = module.state.isSubmitted(false);\n\n const { isEntitlement } = useEntitlementInfo(courseData);\n\n const submittedReason = selectedReason === 'custom' ? customOption : selectedReason;\n const hasReason = ![null, ''].includes(submittedReason);\n\n const handleTrackReasons = useCourseTrackingEvent(\n track.engagement.unenrollReason,\n cardId,\n submittedReason,\n isEntitlement,\n );\n\n const unenrollFromCourse = () => {\n const courseId = courseData?.courseRun?.courseId;\n unenrollFromCourseMutation({ courseId });\n };\n\n const handleClear = () => {\n setSelectedReason(null);\n setCustomOption('');\n setIsSubmitted(false);\n };\n\n const handleSubmit = (e) => {\n handleTrackReasons(e);\n setIsSubmitted(true);\n unenrollFromCourse();\n };\n\n const handleCustomOptionChange = utilHooks.useValueCallback(setCustomOption);\n const handleSelectOption = utilHooks.useValueCallback(setSelectedReason);\n\n return {\n customOption: { value: customOption, onChange: handleCustomOptionChange },\n handleClear,\n handleSubmit,\n hasReason,\n isSubmitted,\n selectOption: handleSelectOption,\n submittedReason,\n };\n};\n"]}
@@ -11,7 +11,7 @@ import { useUnenrollData, modalStates } from './hooks';
11
11
  export const UnenrollConfirmModal = ({ closeModal, show, cardId, }) => {
12
12
  const { confirm, reason, closeAndRefresh, close, modalState, } = useUnenrollData({ closeModal, cardId });
13
13
  const showFullscreen = modalState === modalStates.reason;
14
- return (_jsx(ModalDialog, { isOpen: show, onClose: nullMethod, hasCloseButton: false, isFullscreenOnMobile: showFullscreen, title: "", children: _jsxs("div", { className: classNames('bg-white p-3 rounded', { shadow: !showFullscreen }), style: { textAlign: 'start' }, children: [(modalState === modalStates.confirm) && (_jsx(ConfirmPane, { handleClose: close, handleConfirm: confirm })), (modalState === modalStates.finished) && (_jsx(FinishedPane, { handleClose: closeAndRefresh, gaveReason: !reason.isSkipped })), (modalState === modalStates.reason) && (_jsx(ReasonPane, { reason: reason }))] }) }));
14
+ return (_jsx(ModalDialog, { isOpen: show, onClose: nullMethod, hasCloseButton: false, isFullscreenOnMobile: showFullscreen, title: "", children: _jsxs("div", { className: classNames('bg-white p-3 rounded', { shadow: !showFullscreen }), style: { textAlign: 'start' }, children: [(modalState === modalStates.confirm) && (_jsx(ConfirmPane, { handleClose: close, handleConfirm: confirm, cardId: cardId })), (modalState === modalStates.finished) && (_jsx(FinishedPane, { handleClose: closeAndRefresh, cardId: cardId })), (modalState === modalStates.reason) && (_jsx(ReasonPane, { reason: reason, handleClose: close }))] }) }));
15
15
  };
16
16
  UnenrollConfirmModal.propTypes = {
17
17
  closeModal: PropTypes.func.isRequired,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/containers/UnenrollConfirmModal/index.jsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,UAAU,MAAM,yBAAyB,CAAC;AACjD,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,UAAU,EACV,IAAI,EACJ,MAAM,GACP,EAAE,EAAE;IACH,MAAM,EACJ,OAAO,EACP,MAAM,EACN,eAAe,EACf,KAAK,EACL,UAAU,GACX,GAAG,eAAe,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,UAAU,KAAK,WAAW,CAAC,MAAM,CAAC;IACzD,OAAO,CACL,KAAC,WAAW,IACV,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,KAAK,EACrB,oBAAoB,EAAE,cAAc,EACpC,KAAK,EAAC,EAAE,YAER,eACE,SAAS,EAAE,UAAU,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC,EAC1E,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,aAE5B,CAAC,UAAU,KAAK,WAAW,CAAC,OAAO,CAAC,IAAI,CACvC,KAAC,WAAW,IAAC,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,GAAI,CAC5D,EACA,CAAC,UAAU,KAAK,WAAW,CAAC,QAAQ,CAAC,IAAI,CACxC,KAAC,YAAY,IAAC,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,SAAS,GAAI,CAC9E,EACA,CAAC,UAAU,KAAK,WAAW,CAAC,MAAM,CAAC,IAAI,CACtC,KAAC,UAAU,IAAC,MAAM,EAAE,MAAM,GAAI,CAC/B,IACG,GACM,CACf,CAAC;AACJ,CAAC,CAAC;AACF,oBAAoB,CAAC,SAAS,GAAG;IAC/B,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IACrC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IAC/B,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;CACpC,CAAC;AAEF,eAAe,oBAAoB,CAAC","sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport { ModalDialog } from '@openedx/paragon';\n\nimport { nullMethod } from '../../utils';\n\nimport ConfirmPane from './components/ConfirmPane';\nimport ReasonPane from './components/ReasonPane';\nimport FinishedPane from './components/FinishedPane';\n\nimport { useUnenrollData, modalStates } from './hooks';\n\nexport const UnenrollConfirmModal = ({\n closeModal,\n show,\n cardId,\n}) => {\n const {\n confirm,\n reason,\n closeAndRefresh,\n close,\n modalState,\n } = useUnenrollData({ closeModal, cardId });\n const showFullscreen = modalState === modalStates.reason;\n return (\n <ModalDialog\n isOpen={show}\n onClose={nullMethod}\n hasCloseButton={false}\n isFullscreenOnMobile={showFullscreen}\n title=\"\"\n >\n <div\n className={classNames('bg-white p-3 rounded', { shadow: !showFullscreen })}\n style={{ textAlign: 'start' }}\n >\n {(modalState === modalStates.confirm) && (\n <ConfirmPane handleClose={close} handleConfirm={confirm} />\n )}\n {(modalState === modalStates.finished) && (\n <FinishedPane handleClose={closeAndRefresh} gaveReason={!reason.isSkipped} />\n )}\n {(modalState === modalStates.reason) && (\n <ReasonPane reason={reason} />\n )}\n </div>\n </ModalDialog>\n );\n};\nUnenrollConfirmModal.propTypes = {\n closeModal: PropTypes.func.isRequired,\n show: PropTypes.bool.isRequired,\n cardId: PropTypes.string.isRequired,\n};\n\nexport default UnenrollConfirmModal;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/containers/UnenrollConfirmModal/index.jsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,UAAU,MAAM,yBAAyB,CAAC;AACjD,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,UAAU,EACV,IAAI,EACJ,MAAM,GACP,EAAE,EAAE;IACH,MAAM,EACJ,OAAO,EACP,MAAM,EACN,eAAe,EACf,KAAK,EACL,UAAU,GACX,GAAG,eAAe,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,UAAU,KAAK,WAAW,CAAC,MAAM,CAAC;IACzD,OAAO,CACL,KAAC,WAAW,IACV,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,KAAK,EACrB,oBAAoB,EAAE,cAAc,EACpC,KAAK,EAAC,EAAE,YAER,eACE,SAAS,EAAE,UAAU,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC,EAC1E,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,aAE5B,CAAC,UAAU,KAAK,WAAW,CAAC,OAAO,CAAC,IAAI,CACvC,KAAC,WAAW,IAAC,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAI,CAC5E,EACA,CAAC,UAAU,KAAK,WAAW,CAAC,QAAQ,CAAC,IAAI,CACxC,KAAC,YAAY,IAAC,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAI,CAC/D,EACA,CAAC,UAAU,KAAK,WAAW,CAAC,MAAM,CAAC,IAAI,CACtC,KAAC,UAAU,IAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,GAAI,CACnD,IACG,GACM,CACf,CAAC;AACJ,CAAC,CAAC;AACF,oBAAoB,CAAC,SAAS,GAAG;IAC/B,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IACrC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IAC/B,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;CACpC,CAAC;AAEF,eAAe,oBAAoB,CAAC","sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport { ModalDialog } from '@openedx/paragon';\n\nimport { nullMethod } from '../../utils';\n\nimport ConfirmPane from './components/ConfirmPane';\nimport ReasonPane from './components/ReasonPane';\nimport FinishedPane from './components/FinishedPane';\n\nimport { useUnenrollData, modalStates } from './hooks';\n\nexport const UnenrollConfirmModal = ({\n closeModal,\n show,\n cardId,\n}) => {\n const {\n confirm,\n reason,\n closeAndRefresh,\n close,\n modalState,\n } = useUnenrollData({ closeModal, cardId });\n const showFullscreen = modalState === modalStates.reason;\n return (\n <ModalDialog\n isOpen={show}\n onClose={nullMethod}\n hasCloseButton={false}\n isFullscreenOnMobile={showFullscreen}\n title=\"\"\n >\n <div\n className={classNames('bg-white p-3 rounded', { shadow: !showFullscreen })}\n style={{ textAlign: 'start' }}\n >\n {(modalState === modalStates.confirm) && (\n <ConfirmPane handleClose={close} handleConfirm={confirm} cardId={cardId} />\n )}\n {(modalState === modalStates.finished) && (\n <FinishedPane handleClose={closeAndRefresh} cardId={cardId} />\n )}\n {(modalState === modalStates.reason) && (\n <ReasonPane reason={reason} handleClose={close} />\n )}\n </div>\n </ModalDialog>\n );\n};\nUnenrollConfirmModal.propTypes = {\n closeModal: PropTypes.func.isRequired,\n show: PropTypes.bool.isRequired,\n cardId: PropTypes.string.isRequired,\n};\n\nexport default UnenrollConfirmModal;\n"]}
@@ -1,4 +1,4 @@
1
- import { StrictDict } from 'utils';
1
+ import { StrictDict } from '../../utils';
2
2
  export const FileTypes = StrictDict({
3
3
  pdf: 'pdf',
4
4
  jpg: 'jpg',
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/data/constants/files.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;IAClC,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;CACX,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC,CAAC,QAAQ;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,OAAO;AAEpD,eAAe,SAAS,CAAC","sourcesContent":["import { StrictDict } from 'utils';\n\nexport const FileTypes = StrictDict({\n pdf: 'pdf',\n jpg: 'jpg',\n jpeg: 'jpeg',\n png: 'png',\n bmp: 'bmp',\n txt: 'txt',\n gif: 'gif',\n jfif: 'jfif',\n pjpeg: 'pjpeg',\n pjp: 'pjp',\n svg: 'svg',\n});\n\nexport const downloadSingleLimit = 1610612736; // 1.5GB\nexport const downloadAllLimit = 10737418240; // 10GB\n\nexport default FileTypes;\n"]}
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/data/constants/files.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;IAClC,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;CACX,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC,CAAC,QAAQ;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,OAAO;AAEpD,eAAe,SAAS,CAAC","sourcesContent":["import { StrictDict } from '@src/utils';\n\nexport const FileTypes = StrictDict({\n pdf: 'pdf',\n jpg: 'jpg',\n jpeg: 'jpeg',\n png: 'png',\n bmp: 'bmp',\n txt: 'txt',\n gif: 'gif',\n jfif: 'jfif',\n pjpeg: 'pjpeg',\n pjp: 'pjp',\n svg: 'svg',\n});\n\nexport const downloadSingleLimit = 1610612736; // 1.5GB\nexport const downloadAllLimit = 10737418240; // 10GB\n\nexport default FileTypes;\n"]}
@@ -1,4 +1,4 @@
1
- import { StrictDict } from 'utils';
1
+ import { StrictDict } from '../../utils';
2
2
  export const buttonStates = StrictDict({
3
3
  default: 'default',
4
4
  pending: 'pending',
@@ -1 +1 @@
1
- {"version":3,"file":"htmlKeys.js","sourceRoot":"","sources":["../../../src/data/constants/htmlKeys.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;IACrC,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;CACf,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;IAClC,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;CACb,CAAC,CAAC;AAEH,eAAe;IACb,YAAY;IACZ,SAAS;CACV,CAAC","sourcesContent":["import { StrictDict } from 'utils';\n\nexport const buttonStates = StrictDict({\n default: 'default',\n pending: 'pending',\n error: 'error',\n});\n\nexport const htmlProps = StrictDict({\n disabled: 'disabled',\n href: 'href',\n onClick: 'onClick',\n onChange: 'onChange',\n onBlur: 'onBlur',\n size: 'size',\n});\n\nexport default {\n buttonStates,\n htmlProps,\n};\n"]}
1
+ {"version":3,"file":"htmlKeys.js","sourceRoot":"","sources":["../../../src/data/constants/htmlKeys.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;IACrC,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;CACf,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;IAClC,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;CACb,CAAC,CAAC;AAEH,eAAe;IACb,YAAY;IACZ,SAAS;CACV,CAAC","sourcesContent":["import { StrictDict } from '@src/utils';\n\nexport const buttonStates = StrictDict({\n default: 'default',\n pending: 'pending',\n error: 'error',\n});\n\nexport const htmlProps = StrictDict({\n disabled: 'disabled',\n href: 'href',\n onClick: 'onClick',\n onChange: 'onChange',\n onBlur: 'onBlur',\n size: 'size',\n});\n\nexport default {\n buttonStates,\n htmlProps,\n};\n"]}
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ type SortOption = 'enrolled' | 'title';
3
+ interface FiltersContextType {
4
+ filters: string[];
5
+ sortBy: SortOption;
6
+ pageNumber: number;
7
+ setFilters: (newFilters: string[]) => void;
8
+ addFilter: (filter: string) => void;
9
+ removeFilter: (filter: string) => void;
10
+ clearFilters: () => void;
11
+ setSortBy: (sortBy: SortOption) => void;
12
+ setPageNumber: (pageNumber: number) => void;
13
+ }
14
+ export declare const FiltersProvider: ({ children }: {
15
+ children: React.ReactNode;
16
+ }) => import("react/jsx-runtime").JSX.Element;
17
+ export declare const useFilters: () => FiltersContextType;
18
+ export {};
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useState, useMemo, useCallback, } from 'react';
3
+ const FiltersContext = createContext(null);
4
+ export const FiltersProvider = ({ children }) => {
5
+ const [filters, setFilters] = useState([]);
6
+ const [sortBy, setSortBy] = useState('enrolled');
7
+ const [pageNumber, setPageNumber] = useState(1);
8
+ const addFilter = useCallback((filter) => {
9
+ setFilters(prev => [...prev, filter]);
10
+ }, []);
11
+ const removeFilter = useCallback((filter) => {
12
+ setFilters(prev => prev.filter(item => item !== filter));
13
+ }, []);
14
+ const clearFilters = useCallback(() => {
15
+ setFilters([]);
16
+ }, []);
17
+ const contextValue = useMemo(() => ({
18
+ filters,
19
+ sortBy,
20
+ pageNumber,
21
+ setFilters,
22
+ addFilter,
23
+ removeFilter,
24
+ clearFilters,
25
+ setSortBy,
26
+ setPageNumber,
27
+ }), [filters, sortBy, pageNumber, addFilter, removeFilter, clearFilters]);
28
+ return (_jsx(FiltersContext.Provider, { value: contextValue, children: children }));
29
+ };
30
+ export const useFilters = () => {
31
+ const context = useContext(FiltersContext);
32
+ if (!context) {
33
+ throw new Error('useFilters must be used within a FiltersProvider');
34
+ }
35
+ return context;
36
+ };
37
+ //# sourceMappingURL=FiltersProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FiltersProvider.js","sourceRoot":"","sources":["../../../src/data/context/FiltersProvider.tsx"],"names":[],"mappings":";AAAA,OAAc,EACZ,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,GAC1D,MAAM,OAAO,CAAC;AAgBf,MAAM,cAAc,GAAG,aAAa,CAA4B,IAAI,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE;IAC7E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAa,UAAU,CAAC,CAAC;IAC7D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,EAAE;QAC/C,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,EAAE;QAClD,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,UAAU,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,CAAC;QACL,OAAO;QACP,MAAM;QACN,UAAU;QACV,UAAU;QACV,SAAS;QACT,YAAY;QACZ,YAAY;QACZ,SAAS;QACT,aAAa;KACd,CAAC,EACF,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CACrE,CAAC;IAEF,OAAO,CACL,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YACzC,QAAQ,GACe,CAC3B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC","sourcesContent":["import React, {\n createContext, useContext, useState, useMemo, useCallback,\n} from 'react';\n\ntype SortOption = 'enrolled' | 'title';\n\ninterface FiltersContextType {\n filters: string[],\n sortBy: SortOption,\n pageNumber: number,\n setFilters: (newFilters: string[]) => void,\n addFilter: (filter: string) => void,\n removeFilter: (filter: string) => void,\n clearFilters: () => void,\n setSortBy: (sortBy: SortOption) => void,\n setPageNumber: (pageNumber: number) => void,\n}\n\nconst FiltersContext = createContext<FiltersContextType | null>(null);\n\nexport const FiltersProvider = ({ children }: { children: React.ReactNode }) => {\n const [filters, setFilters] = useState<string[]>([]);\n const [sortBy, setSortBy] = useState<SortOption>('enrolled');\n const [pageNumber, setPageNumber] = useState(1);\n\n const addFilter = useCallback((filter: string) => {\n setFilters(prev => [...prev, filter]);\n }, []);\n\n const removeFilter = useCallback((filter: string) => {\n setFilters(prev => prev.filter(item => item !== filter));\n }, []);\n\n const clearFilters = useCallback(() => {\n setFilters([]);\n }, []);\n\n const contextValue = useMemo(\n () => ({\n filters,\n sortBy,\n pageNumber,\n setFilters,\n addFilter,\n removeFilter,\n clearFilters,\n setSortBy,\n setPageNumber,\n }),\n [filters, sortBy, pageNumber, addFilter, removeFilter, clearFilters],\n );\n\n return (\n <FiltersContext.Provider value={contextValue}>\n {children}\n </FiltersContext.Provider>\n );\n};\n\nexport const useFilters = () => {\n const context = useContext(FiltersContext);\n if (!context) {\n throw new Error('useFilters must be used within a FiltersProvider');\n }\n return context;\n};\n"]}
@@ -0,0 +1,11 @@
1
+ import React, { ReactNode } from 'react';
2
+ interface MasqueradeContextType {
3
+ masqueradeUser: string | undefined;
4
+ setMasqueradeUser: (user: string | undefined) => void;
5
+ }
6
+ interface MasqueradeProviderProps {
7
+ children: ReactNode;
8
+ }
9
+ export declare const MasqueradeProvider: React.FC<MasqueradeProviderProps>;
10
+ export declare const useMasquerade: () => MasqueradeContextType;
11
+ export {};
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useMemo, useState, } from 'react';
3
+ const MasqueradeContext = createContext(null);
4
+ export const MasqueradeProvider = ({ children }) => {
5
+ const [masqueradeUser, setMasqueradeUser] = useState(undefined);
6
+ const contextValue = useMemo(() => ({
7
+ masqueradeUser,
8
+ setMasqueradeUser,
9
+ }), [masqueradeUser]);
10
+ return (_jsx(MasqueradeContext.Provider, { value: contextValue, children: children }));
11
+ };
12
+ export const useMasquerade = () => {
13
+ const context = useContext(MasqueradeContext);
14
+ if (!context) {
15
+ throw new Error('useMasquerade must be used within a MasqueradeProvider');
16
+ }
17
+ return context;
18
+ };
19
+ //# sourceMappingURL=MasqueradeProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MasqueradeProvider.js","sourceRoot":"","sources":["../../../src/data/context/MasqueradeProvider.tsx"],"names":[],"mappings":";AAAA,OAAc,EACZ,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,GAC7C,MAAM,OAAO,CAAC;AAOf,MAAM,iBAAiB,GAAG,aAAa,CAA+B,IAAI,CAAC,CAAC;AAM5E,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACpF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAqB,SAAS,CAAC,CAAC;IAEpF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAClC,cAAc;QACd,iBAAiB;KAClB,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAEtB,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAC5C,QAAQ,GACkB,CAC9B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,GAA0B,EAAE;IACvD,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC","sourcesContent":["import React, {\n createContext, useContext, useMemo, useState, ReactNode,\n} from 'react';\n\ninterface MasqueradeContextType {\n masqueradeUser: string | undefined,\n setMasqueradeUser: (user: string | undefined) => void,\n}\n\nconst MasqueradeContext = createContext<MasqueradeContextType | null>(null);\n\ninterface MasqueradeProviderProps {\n children: ReactNode,\n}\n\nexport const MasqueradeProvider: React.FC<MasqueradeProviderProps> = ({ children }) => {\n const [masqueradeUser, setMasqueradeUser] = useState<string | undefined>(undefined);\n\n const contextValue = useMemo(() => ({\n masqueradeUser,\n setMasqueradeUser,\n }), [masqueradeUser]);\n\n return (\n <MasqueradeContext.Provider value={contextValue}>\n {children}\n </MasqueradeContext.Provider>\n );\n};\n\nexport const useMasquerade = (): MasqueradeContextType => {\n const context = useContext(MasqueradeContext);\n if (!context) {\n throw new Error('useMasquerade must be used within a MasqueradeProvider');\n }\n return context;\n};\n"]}
@@ -0,0 +1,15 @@
1
+ import React, { ReactNode } from 'react';
2
+ interface SelectSessionModalState {
3
+ cardId: string | null;
4
+ }
5
+ interface SelectSessionModalContextType {
6
+ selectSessionModal: SelectSessionModalState;
7
+ updateSelectSessionModal: (cardId: string | null) => void;
8
+ closeSelectSessionModal: () => void;
9
+ }
10
+ interface SelectSessionModalProviderProps {
11
+ children: ReactNode;
12
+ }
13
+ export declare const SelectSessionModalProvider: React.FC<SelectSessionModalProviderProps>;
14
+ export declare const useSelectSessionModal: () => SelectSessionModalContextType;
15
+ export {};
@@ -0,0 +1,40 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useReducer, useMemo, useCallback, } from 'react';
3
+ const SelectSessionModalContext = createContext(null);
4
+ const initialState = {
5
+ selectSessionModal: { cardId: null },
6
+ };
7
+ const selectSessionModalReducer = (state, action) => {
8
+ switch (action.type) {
9
+ case 'UPDATE_SELECT_SESSION_MODAL':
10
+ return Object.assign(Object.assign({}, state), { selectSessionModal: { cardId: action.payload } });
11
+ case 'CLOSE_SELECT_SESSION_MODAL':
12
+ return Object.assign(Object.assign({}, state), { selectSessionModal: { cardId: null } });
13
+ /* istanbul ignore next */
14
+ default:
15
+ return state;
16
+ }
17
+ };
18
+ export const SelectSessionModalProvider = ({ children }) => {
19
+ const [state, dispatch] = useReducer(selectSessionModalReducer, initialState);
20
+ const updateSelectSessionModal = useCallback((cardId) => {
21
+ dispatch({ type: 'UPDATE_SELECT_SESSION_MODAL', payload: cardId });
22
+ }, []);
23
+ const closeSelectSessionModal = useCallback(() => {
24
+ dispatch({ type: 'CLOSE_SELECT_SESSION_MODAL' });
25
+ }, []);
26
+ const contextValue = useMemo(() => ({
27
+ selectSessionModal: state.selectSessionModal,
28
+ updateSelectSessionModal,
29
+ closeSelectSessionModal,
30
+ }), [closeSelectSessionModal, state.selectSessionModal, updateSelectSessionModal]);
31
+ return (_jsx(SelectSessionModalContext.Provider, { value: contextValue, children: children }));
32
+ };
33
+ export const useSelectSessionModal = () => {
34
+ const context = useContext(SelectSessionModalContext);
35
+ if (!context) {
36
+ throw new Error('useSelectSessionModal must be used within a SelectSessionModalProvider');
37
+ }
38
+ return context;
39
+ };
40
+ //# sourceMappingURL=SelectSessionProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectSessionProvider.js","sourceRoot":"","sources":["../../../src/data/context/SelectSessionProvider.tsx"],"names":[],"mappings":";AAAA,OAAc,EACZ,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAC9C,WAAW,GACZ,MAAM,OAAO,CAAC;AAYf,MAAM,yBAAyB,GAAG,aAAa,CAAuC,IAAI,CAAC,CAAC;AAU5F,MAAM,YAAY,GAAU;IAC1B,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;CACrC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAAC,KAAY,EAAE,MAAc,EAAS,EAAE;IACxE,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,6BAA6B;YAChC,uCACK,KAAK,KACR,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,IAC9C;QACJ,KAAK,4BAA4B;YAC/B,uCACK,KAAK,KACR,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IACpC;QACJ,0BAA0B;QAC1B;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,0BAA0B,GAA8C,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACpG,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC;IAE9E,MAAM,wBAAwB,GAAG,WAAW,CAAC,CAAC,MAAqB,EAAE,EAAE;QACrE,QAAQ,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACrE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,uBAAuB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/C,QAAQ,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;IACnD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,CAAC;QACL,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,wBAAwB;QACxB,uBAAuB;KACxB,CAAC,EACF,CAAC,uBAAuB,EAAE,KAAK,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,CAC9E,CAAC;IAEF,OAAO,CACL,KAAC,yBAAyB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YACpD,QAAQ,GAC0B,CACtC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAkC,EAAE;IACvE,MAAM,OAAO,GAAG,UAAU,CAAC,yBAAyB,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC","sourcesContent":["import React, {\n createContext, useContext, useReducer, useMemo, ReactNode,\n useCallback,\n} from 'react';\n\ninterface SelectSessionModalState {\n cardId: string | null,\n}\n\ninterface SelectSessionModalContextType {\n selectSessionModal: SelectSessionModalState,\n updateSelectSessionModal: (cardId: string | null) => void,\n closeSelectSessionModal: () => void,\n}\n\nconst SelectSessionModalContext = createContext<SelectSessionModalContextType | null>(null);\n\ninterface State {\n selectSessionModal: SelectSessionModalState,\n}\n\ntype Action =\n | { type: 'UPDATE_SELECT_SESSION_MODAL', payload: string | null }\n | { type: 'CLOSE_SELECT_SESSION_MODAL' };\n\nconst initialState: State = {\n selectSessionModal: { cardId: null },\n};\n\nconst selectSessionModalReducer = (state: State, action: Action): State => {\n switch (action.type) {\n case 'UPDATE_SELECT_SESSION_MODAL':\n return {\n ...state,\n selectSessionModal: { cardId: action.payload },\n };\n case 'CLOSE_SELECT_SESSION_MODAL':\n return {\n ...state,\n selectSessionModal: { cardId: null },\n };\n /* istanbul ignore next */\n default:\n return state;\n }\n};\n\ninterface SelectSessionModalProviderProps {\n children: ReactNode,\n}\n\nexport const SelectSessionModalProvider: React.FC<SelectSessionModalProviderProps> = ({ children }) => {\n const [state, dispatch] = useReducer(selectSessionModalReducer, initialState);\n\n const updateSelectSessionModal = useCallback((cardId: string | null) => {\n dispatch({ type: 'UPDATE_SELECT_SESSION_MODAL', payload: cardId });\n }, []);\n\n const closeSelectSessionModal = useCallback(() => {\n dispatch({ type: 'CLOSE_SELECT_SESSION_MODAL' });\n }, []);\n\n const contextValue = useMemo(\n () => ({\n selectSessionModal: state.selectSessionModal,\n updateSelectSessionModal,\n closeSelectSessionModal,\n }),\n [closeSelectSessionModal, state.selectSessionModal, updateSelectSessionModal],\n );\n\n return (\n <SelectSessionModalContext.Provider value={contextValue}>\n {children}\n </SelectSessionModalContext.Provider>\n );\n};\n\nexport const useSelectSessionModal = (): SelectSessionModalContextType => {\n const context = useContext(SelectSessionModalContext);\n if (!context) {\n throw new Error('useSelectSessionModal must be used within a SelectSessionModalProvider');\n }\n return context;\n};\n"]}
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from 'react';
2
+ import { MasqueradeProvider, useMasquerade } from './MasqueradeProvider';
3
+ import { useFilters } from './FiltersProvider';
4
+ import { useSelectSessionModal } from './SelectSessionProvider';
5
+ interface ContextProvidersProps {
6
+ children: ReactNode;
7
+ }
8
+ declare const ContextProviders: ({ children }: ContextProvidersProps) => import("react/jsx-runtime").JSX.Element;
9
+ export { MasqueradeProvider, useMasquerade, useFilters, useSelectSessionModal, };
10
+ export default ContextProviders;