@edx/frontend-app-learner-dashboard 1.2.0 → 1.3.0

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 (168) hide show
  1. package/dist/containers/CourseCard/components/CourseCardActions/index.js +2 -1
  2. package/dist/containers/CourseCard/components/CourseCardActions/index.js.map +1 -1
  3. package/dist/containers/CourseCard/components/CourseCardDetails/hooks.js +4 -4
  4. package/dist/containers/CourseCard/components/CourseCardDetails/hooks.js.map +1 -1
  5. package/dist/widgets/LearnerDashboardPlugins/app.js +70 -0
  6. package/dist/widgets/LearnerDashboardPlugins/app.js.map +1 -1
  7. package/dist/widgets/LearnerDashboardPlugins/career-menu/index.d.ts +2 -0
  8. package/dist/widgets/LearnerDashboardPlugins/career-menu/index.js +22 -0
  9. package/dist/widgets/LearnerDashboardPlugins/career-menu/index.js.map +1 -0
  10. package/dist/widgets/LearnerDashboardPlugins/career-menu/messages.d.ts +16 -0
  11. package/dist/widgets/LearnerDashboardPlugins/career-menu/messages.js +15 -0
  12. package/dist/widgets/LearnerDashboardPlugins/career-menu/messages.js.map +1 -0
  13. package/dist/widgets/LearnerDashboardPlugins/chatbot/HelpChatbot.d.ts +2 -0
  14. package/dist/widgets/LearnerDashboardPlugins/chatbot/HelpChatbot.js +25 -0
  15. package/dist/widgets/LearnerDashboardPlugins/chatbot/HelpChatbot.js.map +1 -0
  16. package/dist/widgets/LearnerDashboardPlugins/chatbot/data/five9.d.ts +3 -0
  17. package/dist/widgets/LearnerDashboardPlugins/chatbot/data/five9.js +5 -0
  18. package/dist/widgets/LearnerDashboardPlugins/chatbot/data/five9.js.map +1 -0
  19. package/dist/widgets/LearnerDashboardPlugins/chatbot/index.d.ts +2 -0
  20. package/dist/widgets/LearnerDashboardPlugins/chatbot/index.js +3 -0
  21. package/dist/widgets/LearnerDashboardPlugins/chatbot/index.js.map +1 -0
  22. package/dist/widgets/LearnerDashboardPlugins/cohesion-wrapper/CohesionWrapper.d.ts +2 -0
  23. package/dist/widgets/LearnerDashboardPlugins/cohesion-wrapper/CohesionWrapper.js +33 -0
  24. package/dist/widgets/LearnerDashboardPlugins/cohesion-wrapper/CohesionWrapper.js.map +1 -0
  25. package/dist/widgets/LearnerDashboardPlugins/cohesion-wrapper/index.d.ts +2 -0
  26. package/dist/widgets/LearnerDashboardPlugins/cohesion-wrapper/index.js +3 -0
  27. package/dist/widgets/LearnerDashboardPlugins/cohesion-wrapper/index.js.map +1 -0
  28. package/dist/widgets/LearnerDashboardPlugins/course-banner/Banner.d.ts +24 -0
  29. package/dist/widgets/LearnerDashboardPlugins/course-banner/Banner.js +19 -0
  30. package/dist/widgets/LearnerDashboardPlugins/course-banner/Banner.js.map +1 -0
  31. package/dist/widgets/LearnerDashboardPlugins/course-banner/CourseBanner.d.ts +10 -0
  32. package/dist/widgets/LearnerDashboardPlugins/course-banner/CourseBanner.js +31 -0
  33. package/dist/widgets/LearnerDashboardPlugins/course-banner/CourseBanner.js.map +1 -0
  34. package/dist/widgets/LearnerDashboardPlugins/course-banner/formatDate.d.ts +2 -0
  35. package/dist/widgets/LearnerDashboardPlugins/course-banner/formatDate.js +13 -0
  36. package/dist/widgets/LearnerDashboardPlugins/course-banner/formatDate.js.map +1 -0
  37. package/dist/widgets/LearnerDashboardPlugins/course-banner/index.d.ts +2 -0
  38. package/dist/widgets/LearnerDashboardPlugins/course-banner/index.js +3 -0
  39. package/dist/widgets/LearnerDashboardPlugins/course-banner/index.js.map +1 -0
  40. package/dist/widgets/LearnerDashboardPlugins/course-banner/messages.d.ts +56 -0
  41. package/dist/widgets/LearnerDashboardPlugins/course-banner/messages.js +40 -0
  42. package/dist/widgets/LearnerDashboardPlugins/course-banner/messages.js.map +1 -0
  43. package/dist/widgets/LearnerDashboardPlugins/dashboard-menu/index.d.ts +2 -0
  44. package/dist/widgets/LearnerDashboardPlugins/dashboard-menu/index.js +23 -0
  45. package/dist/widgets/LearnerDashboardPlugins/dashboard-menu/index.js.map +1 -0
  46. package/dist/widgets/LearnerDashboardPlugins/dashboard-menu/messages.d.ts +24 -0
  47. package/dist/widgets/LearnerDashboardPlugins/dashboard-menu/messages.js +20 -0
  48. package/dist/widgets/LearnerDashboardPlugins/dashboard-menu/messages.js.map +1 -0
  49. package/dist/widgets/LearnerDashboardPlugins/dashboard-modal/EnterpriseDashboardModal.d.ts +2 -0
  50. package/dist/widgets/LearnerDashboardPlugins/dashboard-modal/EnterpriseDashboardModal.js +20 -0
  51. package/dist/widgets/LearnerDashboardPlugins/dashboard-modal/EnterpriseDashboardModal.js.map +1 -0
  52. package/dist/widgets/LearnerDashboardPlugins/dashboard-modal/EnterpriseDashboardModalWrapper.d.ts +2 -0
  53. package/dist/widgets/LearnerDashboardPlugins/dashboard-modal/EnterpriseDashboardModalWrapper.js +17 -0
  54. package/dist/widgets/LearnerDashboardPlugins/dashboard-modal/EnterpriseDashboardModalWrapper.js.map +1 -0
  55. package/dist/widgets/LearnerDashboardPlugins/dashboard-modal/hooks/hooks.d.ts +10 -0
  56. package/dist/widgets/LearnerDashboardPlugins/dashboard-modal/hooks/hooks.js +34 -0
  57. package/dist/widgets/LearnerDashboardPlugins/dashboard-modal/hooks/hooks.js.map +1 -0
  58. package/dist/widgets/LearnerDashboardPlugins/dashboard-modal/index.d.ts +2 -0
  59. package/dist/widgets/LearnerDashboardPlugins/dashboard-modal/index.js +3 -0
  60. package/dist/widgets/LearnerDashboardPlugins/dashboard-modal/index.js.map +1 -0
  61. package/dist/widgets/LearnerDashboardPlugins/dashboard-modal/messages.d.ts +32 -0
  62. package/dist/widgets/LearnerDashboardPlugins/dashboard-modal/messages.js +25 -0
  63. package/dist/widgets/LearnerDashboardPlugins/dashboard-modal/messages.js.map +1 -0
  64. package/dist/widgets/LearnerDashboardPlugins/mocks/optimizely/index.d.ts +10 -0
  65. package/dist/widgets/LearnerDashboardPlugins/mocks/optimizely/index.js +10 -0
  66. package/dist/widgets/LearnerDashboardPlugins/mocks/optimizely/index.js.map +1 -0
  67. package/dist/widgets/LearnerDashboardPlugins/no-courses-view/index.d.ts +2 -0
  68. package/dist/widgets/LearnerDashboardPlugins/no-courses-view/index.js +37 -0
  69. package/dist/widgets/LearnerDashboardPlugins/no-courses-view/index.js.map +1 -0
  70. package/dist/widgets/LearnerDashboardPlugins/no-courses-view/index.scss +13 -0
  71. package/dist/widgets/LearnerDashboardPlugins/no-courses-view/messages.d.ts +32 -0
  72. package/dist/widgets/LearnerDashboardPlugins/no-courses-view/messages.js +25 -0
  73. package/dist/widgets/LearnerDashboardPlugins/no-courses-view/messages.js.map +1 -0
  74. package/dist/widgets/LearnerDashboardPlugins/notices-redirect/api.d.ts +9 -0
  75. package/dist/widgets/LearnerDashboardPlugins/notices-redirect/api.js +32 -0
  76. package/dist/widgets/LearnerDashboardPlugins/notices-redirect/api.js.map +1 -0
  77. package/dist/widgets/LearnerDashboardPlugins/notices-redirect/hooks.d.ts +4 -0
  78. package/dist/widgets/LearnerDashboardPlugins/notices-redirect/hooks.js +32 -0
  79. package/dist/widgets/LearnerDashboardPlugins/notices-redirect/hooks.js.map +1 -0
  80. package/dist/widgets/LearnerDashboardPlugins/notices-redirect/index.d.ts +8 -0
  81. package/dist/widgets/LearnerDashboardPlugins/notices-redirect/index.js +14 -0
  82. package/dist/widgets/LearnerDashboardPlugins/notices-redirect/index.js.map +1 -0
  83. package/dist/widgets/LearnerDashboardPlugins/notices-redirect/messages.d.ts +8 -0
  84. package/dist/widgets/LearnerDashboardPlugins/notices-redirect/messages.js +10 -0
  85. package/dist/widgets/LearnerDashboardPlugins/notices-redirect/messages.js.map +1 -0
  86. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/ProgressiveProfilingEntry.d.ts +1 -0
  87. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/ProgressiveProfilingEntry.js +23 -0
  88. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/ProgressiveProfilingEntry.js.map +1 -0
  89. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/ProgressiveProfilingModal.d.ts +14 -0
  90. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/ProgressiveProfilingModal.js +51 -0
  91. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/ProgressiveProfilingModal.js.map +1 -0
  92. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/api/service.d.ts +1 -0
  93. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/api/service.js +35 -0
  94. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/api/service.js.map +1 -0
  95. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/data/progressiveProfilingFields.d.ts +22 -0
  96. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/data/progressiveProfilingFields.js +33 -0
  97. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/data/progressiveProfilingFields.js.map +1 -0
  98. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/field-renderer/FieldRenderer.d.ts +21 -0
  99. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/field-renderer/FieldRenderer.js +29 -0
  100. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/field-renderer/FieldRenderer.js.map +1 -0
  101. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/field-renderer/index.d.ts +1 -0
  102. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/field-renderer/index.js +2 -0
  103. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/field-renderer/index.js.map +1 -0
  104. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/hooks/useClearProgressiveProfilingQueryParams.d.ts +1 -0
  105. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/hooks/useClearProgressiveProfilingQueryParams.js +10 -0
  106. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/hooks/useClearProgressiveProfilingQueryParams.js.map +1 -0
  107. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/hooks/useProgressiveProfilingForm.d.ts +11 -0
  108. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/hooks/useProgressiveProfilingForm.js +50 -0
  109. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/hooks/useProgressiveProfilingForm.js.map +1 -0
  110. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/hooks/useProgressiveProfilingTrigger.d.ts +3 -0
  111. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/hooks/useProgressiveProfilingTrigger.js +8 -0
  112. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/hooks/useProgressiveProfilingTrigger.js.map +1 -0
  113. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/index.d.ts +2 -0
  114. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/index.js +3 -0
  115. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/index.js.map +1 -0
  116. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/ProgressiveProfiling.d.ts +2 -0
  117. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/ProgressiveProfiling.js +82 -0
  118. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/ProgressiveProfiling.js.map +1 -0
  119. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/ProgressiveProfilingPageModal.d.ts +13 -0
  120. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/ProgressiveProfilingPageModal.js +26 -0
  121. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/ProgressiveProfilingPageModal.js.map +1 -0
  122. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/components/welcome-page-layout/LargeLayout.d.ts +19 -0
  123. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/components/welcome-page-layout/LargeLayout.js +34 -0
  124. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/components/welcome-page-layout/LargeLayout.js.map +1 -0
  125. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/components/welcome-page-layout/MediumLayout.d.ts +19 -0
  126. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/components/welcome-page-layout/MediumLayout.js +35 -0
  127. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/components/welcome-page-layout/MediumLayout.js.map +1 -0
  128. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/components/welcome-page-layout/SmallLayout.d.ts +19 -0
  129. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/components/welcome-page-layout/SmallLayout.js +36 -0
  130. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/components/welcome-page-layout/SmallLayout.js.map +1 -0
  131. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/components/welcome-page-layout/index.d.ts +3 -0
  132. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/components/welcome-page-layout/index.js +4 -0
  133. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/components/welcome-page-layout/index.js.map +1 -0
  134. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/components/welcome-page-layout/messages.d.ts +33 -0
  135. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/components/welcome-page-layout/messages.js +35 -0
  136. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/components/welcome-page-layout/messages.js.map +1 -0
  137. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/index.d.ts +20 -0
  138. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/index.js +24 -0
  139. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/base-container/index.js.map +1 -0
  140. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/index.d.ts +1 -0
  141. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/index.js +2 -0
  142. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/index.js.map +1 -0
  143. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/index.scss +269 -0
  144. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/messages.d.ts +58 -0
  145. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/messages.js +62 -0
  146. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/messages.js.map +1 -0
  147. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/service/getThirdPartyAuthContext.d.ts +5 -0
  148. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/service/getThirdPartyAuthContext.js +31 -0
  149. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/service/getThirdPartyAuthContext.js.map +1 -0
  150. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/utils/constants.d.ts +5 -0
  151. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/utils/constants.js +6 -0
  152. package/dist/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/utils/constants.js.map +1 -0
  153. package/dist/widgets/LearnerDashboardPlugins/tracking/trackers/enterpriseDashboardModal.d.ts +9 -0
  154. package/dist/widgets/LearnerDashboardPlugins/tracking/trackers/enterpriseDashboardModal.js +29 -0
  155. package/dist/widgets/LearnerDashboardPlugins/tracking/trackers/enterpriseDashboardModal.js.map +1 -0
  156. package/dist/widgets/LearnerDashboardPlugins/tracking/trackers/exploreCourses.d.ts +2 -0
  157. package/dist/widgets/LearnerDashboardPlugins/tracking/trackers/exploreCourses.js +46 -0
  158. package/dist/widgets/LearnerDashboardPlugins/tracking/trackers/exploreCourses.js.map +1 -0
  159. package/dist/widgets/LearnerDashboardPlugins/tracking/trackers/progressiveProfiling.d.ts +14 -0
  160. package/dist/widgets/LearnerDashboardPlugins/tracking/trackers/progressiveProfiling.js +24 -0
  161. package/dist/widgets/LearnerDashboardPlugins/tracking/trackers/progressiveProfiling.js.map +1 -0
  162. package/dist/widgets/LearnerDashboardPlugins/ucl-wrapper/UclWrapper.d.ts +2 -0
  163. package/dist/widgets/LearnerDashboardPlugins/ucl-wrapper/UclWrapper.js +36 -0
  164. package/dist/widgets/LearnerDashboardPlugins/ucl-wrapper/UclWrapper.js.map +1 -0
  165. package/dist/widgets/LearnerDashboardPlugins/ucl-wrapper/index.d.ts +2 -0
  166. package/dist/widgets/LearnerDashboardPlugins/ucl-wrapper/index.js +3 -0
  167. package/dist/widgets/LearnerDashboardPlugins/ucl-wrapper/index.js.map +1 -0
  168. package/package.json +4 -1
@@ -0,0 +1,14 @@
1
+ // eslint-disable-next-line import/no-named-as-default
2
+ import useNoticesRedirectData from './hooks';
3
+ /**
4
+ * This component uses the platform-plugin-notices plugin to function.
5
+ * If the user has an unacknowledged notice, they will be rerouted off
6
+ * course home and onto a full-screen notice page. If the plugin is not
7
+ * installed, or there are no notices, we just passthrough this component.
8
+ */
9
+ const NoticesRedirect = () => {
10
+ useNoticesRedirectData();
11
+ return null;
12
+ };
13
+ export default NoticesRedirect;
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/widgets/LearnerDashboardPlugins/notices-redirect/index.jsx"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,sBAAsB,MAAM,SAAS,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,sBAAsB,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC","sourcesContent":["// eslint-disable-next-line import/no-named-as-default\nimport useNoticesRedirectData from './hooks';\n\n/**\n * This component uses the platform-plugin-notices plugin to function.\n * If the user has an unacknowledged notice, they will be rerouted off\n * course home and onto a full-screen notice page. If the plugin is not\n * installed, or there are no notices, we just passthrough this component.\n */\nconst NoticesRedirect = () => {\n useNoticesRedirectData();\n return null;\n};\n\nexport default NoticesRedirect;\n"]}
@@ -0,0 +1,8 @@
1
+ export default messages;
2
+ declare namespace messages {
3
+ namespace error404Message {
4
+ let id: string;
5
+ let defaultMessage: string;
6
+ let description: string;
7
+ }
8
+ }
@@ -0,0 +1,10 @@
1
+ import { defineMessages } from '@openedx/frontend-base';
2
+ const messages = defineMessages({
3
+ error404Message: {
4
+ id: 'learner-dash.notices.error404Message',
5
+ defaultMessage: 'This probably happened because the notices plugin is not installed on platform.',
6
+ description: 'Error message when notices API returns 404',
7
+ },
8
+ });
9
+ export default messages;
10
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../src/widgets/LearnerDashboardPlugins/notices-redirect/messages.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,eAAe,EAAE;QACf,EAAE,EAAE,sCAAsC;QAC1C,cAAc,EAAE,iFAAiF;QACjG,WAAW,EAAE,4CAA4C;KAC1D;CACF,CAAC,CAAC;AAEH,eAAe,QAAQ,CAAC","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n error404Message: {\n id: 'learner-dash.notices.error404Message',\n defaultMessage: 'This probably happened because the notices plugin is not installed on platform.',\n description: 'Error message when notices API returns 404',\n },\n});\n\nexport default messages;\n"]}
@@ -0,0 +1 @@
1
+ export function ProgressiveProfilingEntry(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React, { useEffect, useState } from 'react';
3
+ import { getAuthenticatedUser } from '@openedx/frontend-base';
4
+ import ProgressiveProfilingModal from './ProgressiveProfilingModal';
5
+ import useProgressiveProfilingTrigger from './hooks/useProgressiveProfilingTrigger';
6
+ import useClearProgressiveProfilingQueryParams from './hooks/useClearProgressiveProfilingQueryParams';
7
+ import { trackProgressiveProfilingQuestionaireModalFormOpened } from '../tracking/trackers/progressiveProfiling';
8
+ const ProgressiveProfilingEntry = () => {
9
+ var _a;
10
+ const [isOpen, setIsOpen] = useState(false);
11
+ const username = (_a = getAuthenticatedUser()) === null || _a === void 0 ? void 0 : _a.username;
12
+ const { shouldOpen } = useProgressiveProfilingTrigger();
13
+ const clearTrigger = useClearProgressiveProfilingQueryParams();
14
+ useEffect(() => {
15
+ if (shouldOpen && username) {
16
+ setIsOpen(true);
17
+ trackProgressiveProfilingQuestionaireModalFormOpened({ host: window.location.origin });
18
+ }
19
+ }, [shouldOpen, username]);
20
+ return (_jsx(ProgressiveProfilingModal, { isOpen: isOpen, onClose: () => setIsOpen(false), clearTrigger: clearTrigger }));
21
+ };
22
+ export { ProgressiveProfilingEntry };
23
+ //# sourceMappingURL=ProgressiveProfilingEntry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressiveProfilingEntry.js","sourceRoot":"","sources":["../../../../src/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/ProgressiveProfilingEntry.jsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,yBAAyB,MAAM,6BAA6B,CAAC;AACpE,OAAO,8BAA8B,MAAM,wCAAwC,CAAC;AACpF,OAAO,uCAAuC,MAAM,iDAAiD,CAAC;AACtG,OAAO,EAAE,oDAAoD,EAAE,MAAM,2CAA2C,CAAC;AAEjH,MAAM,yBAAyB,GAAG,GAAG,EAAE;;IACrC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,QAAQ,GAAG,MAAA,oBAAoB,EAAE,0CAAE,QAAQ,CAAC;IAElD,MAAM,EAAE,UAAU,EAAE,GAAG,8BAA8B,EAAE,CAAC;IACxD,MAAM,YAAY,GAAG,uCAAuC,EAAE,CAAC;IAE/D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,oDAAoD,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE3B,OAAO,CACL,KAAC,yBAAyB,IACxB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAC/B,YAAY,EAAE,YAAY,GAC1B,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { getAuthenticatedUser } from '@openedx/frontend-base';\n\nimport ProgressiveProfilingModal from './ProgressiveProfilingModal';\nimport useProgressiveProfilingTrigger from './hooks/useProgressiveProfilingTrigger';\nimport useClearProgressiveProfilingQueryParams from './hooks/useClearProgressiveProfilingQueryParams';\nimport { trackProgressiveProfilingQuestionaireModalFormOpened } from '../tracking/trackers/progressiveProfiling';\n\nconst ProgressiveProfilingEntry = () => {\n const [isOpen, setIsOpen] = useState(false);\n\n const username = getAuthenticatedUser()?.username;\n\n const { shouldOpen } = useProgressiveProfilingTrigger();\n const clearTrigger = useClearProgressiveProfilingQueryParams();\n\n useEffect(() => {\n if (shouldOpen && username) {\n setIsOpen(true);\n trackProgressiveProfilingQuestionaireModalFormOpened({ host: window.location.origin });\n }\n }, [shouldOpen, username]);\n\n return (\n <ProgressiveProfilingModal\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n clearTrigger={clearTrigger}\n />\n );\n};\n\nexport { ProgressiveProfilingEntry };\n"]}
@@ -0,0 +1,14 @@
1
+ export default ProgressiveProfilingModal;
2
+ declare function ProgressiveProfilingModal({ isOpen, onClose, clearTrigger, }: {
3
+ isOpen: any;
4
+ onClose: any;
5
+ clearTrigger: any;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ declare namespace ProgressiveProfilingModal {
8
+ namespace propTypes {
9
+ let isOpen: PropTypes.Validator<boolean>;
10
+ let onClose: PropTypes.Validator<(...args: any[]) => any>;
11
+ let clearTrigger: PropTypes.Validator<(...args: any[]) => any>;
12
+ }
13
+ }
14
+ import PropTypes from 'prop-types';
@@ -0,0 +1,51 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ import React from 'react';
12
+ import PropTypes from 'prop-types';
13
+ import { getAppConfig } from '@openedx/frontend-base';
14
+ import { useIntl } from '@openedx/frontend-base';
15
+ import { Alert, Button, Form, Hyperlink, ModalDialog, } from '@openedx/paragon';
16
+ import { FormFieldRenderer } from './field-renderer';
17
+ import useProgressiveProfilingForm from './hooks/useProgressiveProfilingForm';
18
+ import { COMPLETE_STATE, PENDING_STATE } from './utils/constants';
19
+ import messages from './progressive-profiling-authn-replica/messages';
20
+ import { trackProgressiveProfilingSkipLinkClick, trackProgressiveProfilingSubmitClick, trackProgressiveProfilingSupportLinkClick, } from '../tracking/trackers/progressiveProfiling';
21
+ const ProgressiveProfilingModal = ({ isOpen, onClose, clearTrigger, }) => {
22
+ const { formatMessage } = useIntl();
23
+ const { loadState, submitState, error, values, fieldList, onChangeHandler, submit, } = useProgressiveProfilingForm();
24
+ const handleSubmit = (e) => __awaiter(void 0, void 0, void 0, function* () {
25
+ e.preventDefault();
26
+ const success = yield submit();
27
+ if (!success) {
28
+ return;
29
+ }
30
+ trackProgressiveProfilingSubmitClick({
31
+ isGenderSelected: !!values.gender,
32
+ isLevelOfEducationSelected: !!values.level_of_education,
33
+ host: window.location.origin,
34
+ });
35
+ clearTrigger();
36
+ onClose();
37
+ });
38
+ const handleSkip = () => {
39
+ trackProgressiveProfilingSkipLinkClick({ host: window.location.origin });
40
+ clearTrigger();
41
+ onClose();
42
+ };
43
+ return (_jsxs(ModalDialog, { isOpen: isOpen, onClose: () => { }, hasCloseButton: false, size: "md", title: formatMessage(messages['progressive.profiling.page.heading']), children: [_jsx(ModalDialog.Header, { children: _jsx(ModalDialog.Title, { children: formatMessage(messages['progressive.profiling.page.heading']) }) }), _jsxs(ModalDialog.Body, { children: [error && (_jsxs(Alert, { variant: "danger", children: [_jsx(Alert.Heading, { children: formatMessage(messages['welcome.page.error.heading']) }), _jsx("p", { children: formatMessage(messages['welcome.page.error.message']) })] })), _jsxs(Form, { id: "profileForm", onSubmit: handleSubmit, children: [fieldList.map((fieldData) => (_jsx(FormFieldRenderer, { fieldData: fieldData, value: values[fieldData.name], onChangeHandler: onChangeHandler }, fieldData.name))), (getAppConfig().AUTHN_PROGRESSIVE_PROFILING_SUPPORT_LINK) && (_jsx("div", { className: "mt-2", children: _jsx(Hyperlink, { destination: getAppConfig().AUTHN_PROGRESSIVE_PROFILING_SUPPORT_LINK, target: "_blank", showLaunchIcon: false, onClick: () => trackProgressiveProfilingSupportLinkClick({ host: window.location.origin }), children: formatMessage(messages['optional.fields.information.link']) }) }))] })] }), _jsxs(ModalDialog.Footer, { children: [_jsx(Button, { variant: "link", onClick: handleSkip, disabled: submitState === PENDING_STATE, children: formatMessage(messages['optional.fields.skip.button']) }), _jsx(Button, { variant: "brand", type: "submit", form: "profileForm", disabled: loadState !== COMPLETE_STATE || submitState === PENDING_STATE, children: formatMessage(messages['optional.fields.submit.button']) })] })] }));
44
+ };
45
+ ProgressiveProfilingModal.propTypes = {
46
+ isOpen: PropTypes.bool.isRequired,
47
+ onClose: PropTypes.func.isRequired,
48
+ clearTrigger: PropTypes.func.isRequired,
49
+ };
50
+ export default ProgressiveProfilingModal;
51
+ //# sourceMappingURL=ProgressiveProfilingModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressiveProfilingModal.js","sourceRoot":"","sources":["../../../../src/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/ProgressiveProfilingModal.jsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { getAppConfig } from '@openedx/frontend-base';\nimport { useIntl } from '@openedx/frontend-base';\nimport {\n Alert, Button, Form, Hyperlink, ModalDialog,\n} from '@openedx/paragon';\n\nimport { FormFieldRenderer } from './field-renderer';\nimport useProgressiveProfilingForm from './hooks/useProgressiveProfilingForm';\nimport { COMPLETE_STATE, PENDING_STATE } from './utils/constants';\nimport messages from './progressive-profiling-authn-replica/messages';\nimport {\n trackProgressiveProfilingSkipLinkClick, trackProgressiveProfilingSubmitClick,\n trackProgressiveProfilingSupportLinkClick,\n} from '../tracking/trackers/progressiveProfiling';\n\nconst ProgressiveProfilingModal = ({\n isOpen, onClose, clearTrigger,\n}) => {\n const { formatMessage } = useIntl();\n const {\n loadState, submitState, error, values, fieldList, onChangeHandler, submit,\n } = useProgressiveProfilingForm();\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n const success = await submit();\n if (!success) { return; }\n\n trackProgressiveProfilingSubmitClick({\n isGenderSelected: !!values.gender,\n isLevelOfEducationSelected: !!values.level_of_education,\n host: window.location.origin,\n });\n\n clearTrigger();\n onClose();\n };\n\n const handleSkip = () => {\n trackProgressiveProfilingSkipLinkClick({ host: window.location.origin });\n clearTrigger();\n onClose();\n };\n\n return (\n <ModalDialog\n isOpen={isOpen}\n onClose={() => {}}\n hasCloseButton={false}\n size=\"md\"\n title={formatMessage(messages['progressive.profiling.page.heading'])}\n >\n <ModalDialog.Header>\n <ModalDialog.Title>\n {formatMessage(messages['progressive.profiling.page.heading'])}\n </ModalDialog.Title>\n </ModalDialog.Header>\n\n <ModalDialog.Body>\n {error && (\n <Alert variant=\"danger\">\n <Alert.Heading>{formatMessage(messages['welcome.page.error.heading'])}</Alert.Heading>\n <p>{formatMessage(messages['welcome.page.error.message'])}</p>\n </Alert>\n )}\n <Form id=\"profileForm\" onSubmit={handleSubmit}>\n {fieldList.map((fieldData) => (\n <FormFieldRenderer\n key={fieldData.name}\n fieldData={fieldData}\n value={values[fieldData.name]}\n onChangeHandler={onChangeHandler}\n />\n ))}\n\n {(getAppConfig().AUTHN_PROGRESSIVE_PROFILING_SUPPORT_LINK) && (\n <div className=\"mt-2\">\n <Hyperlink\n destination={getAppConfig().AUTHN_PROGRESSIVE_PROFILING_SUPPORT_LINK}\n target=\"_blank\"\n showLaunchIcon={false}\n onClick={() => trackProgressiveProfilingSupportLinkClick({ host: window.location.origin })}\n >\n {formatMessage(messages['optional.fields.information.link'])}\n </Hyperlink>\n </div>\n )}\n </Form>\n </ModalDialog.Body>\n <ModalDialog.Footer>\n <Button variant=\"link\" onClick={handleSkip} disabled={submitState === PENDING_STATE}>\n {formatMessage(messages['optional.fields.skip.button'])}\n </Button>\n <Button variant=\"brand\" type=\"submit\" form=\"profileForm\" disabled={loadState !== COMPLETE_STATE || submitState === PENDING_STATE}>\n {formatMessage(messages['optional.fields.submit.button'])}\n </Button>\n </ModalDialog.Footer>\n </ModalDialog>\n );\n};\n\nProgressiveProfilingModal.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n clearTrigger: PropTypes.func.isRequired,\n};\n\nexport default ProgressiveProfilingModal;\n"]}
@@ -0,0 +1 @@
1
+ export function saveProgressiveProfiling(values: any, extendedProfileFieldNames?: any[]): Promise<void>;
@@ -0,0 +1,35 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { getAppConfig, snakeCaseObject } from '@openedx/frontend-base';
11
+ import { getAuthenticatedUser, getAuthenticatedHttpClient } from '@openedx/frontend-base';
12
+ export function saveProgressiveProfiling(values_1) {
13
+ return __awaiter(this, arguments, void 0, function* (values, extendedProfileFieldNames = []) {
14
+ const payload = Object.assign({}, values);
15
+ const extendedProfile = [];
16
+ const authenticatedUser = getAuthenticatedUser();
17
+ const client = getAuthenticatedHttpClient();
18
+ extendedProfileFieldNames.forEach((fieldName) => {
19
+ if (payload[fieldName] !== undefined && payload[fieldName] !== '') {
20
+ extendedProfile.push({
21
+ fieldName,
22
+ fieldValue: payload[fieldName],
23
+ });
24
+ }
25
+ delete payload[fieldName];
26
+ });
27
+ if (extendedProfile.length) {
28
+ payload.extendedProfile = extendedProfile;
29
+ }
30
+ yield client.patch(`${getAppConfig().LMS_BASE_URL}/api/user/v1/accounts/${authenticatedUser.username}`, snakeCaseObject(payload), {
31
+ headers: { 'Content-Type': 'application/merge-patch+json' },
32
+ });
33
+ });
34
+ }
35
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../../../src/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/api/service.js"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAE1F,MAAM,UAAgB,wBAAwB;yDAAC,MAAM,EAAE,yBAAyB,GAAG,EAAE;QACnF,MAAM,OAAO,qBAAQ,MAAM,CAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,0BAA0B,EAAE,CAAC;QAE5C,yBAAyB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YAC9C,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;gBAClE,eAAe,CAAC,IAAI,CAAC;oBACnB,SAAS;oBACT,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC;iBAC/B,CAAC,CAAC;YACL,CAAC;YAED,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC;QAC5C,CAAC;QAED,MAAM,MAAM,CAAC,KAAK,CAChB,GAAG,YAAY,EAAE,CAAC,YAAY,yBAAyB,iBAAiB,CAAC,QAAQ,EAAE,EACnF,eAAe,CAAC,OAAO,CAAC,EACxB;YACE,OAAO,EAAE,EAAE,cAAc,EAAE,8BAA8B,EAAE;SAC5D,CACF,CAAC;IACJ,CAAC;CAAA","sourcesContent":["import { getAppConfig, snakeCaseObject } from '@openedx/frontend-base';\nimport { getAuthenticatedUser, getAuthenticatedHttpClient } from '@openedx/frontend-base';\n\nexport async function saveProgressiveProfiling(values, extendedProfileFieldNames = []) {\n const payload = { ...values };\n const extendedProfile = [];\n const authenticatedUser = getAuthenticatedUser();\n const client = getAuthenticatedHttpClient();\n\n extendedProfileFieldNames.forEach((fieldName) => {\n if (payload[fieldName] !== undefined && payload[fieldName] !== '') {\n extendedProfile.push({\n fieldName,\n fieldValue: payload[fieldName],\n });\n }\n\n delete payload[fieldName];\n });\n\n if (extendedProfile.length) {\n payload.extendedProfile = extendedProfile;\n }\n\n await client.patch(\n `${getAppConfig().LMS_BASE_URL}/api/user/v1/accounts/${authenticatedUser.username}`,\n snakeCaseObject(payload),\n {\n headers: { 'Content-Type': 'application/merge-patch+json' },\n },\n );\n}\n"]}
@@ -0,0 +1,22 @@
1
+ export namespace progressiveProfilingFields {
2
+ namespace fields {
3
+ namespace gender {
4
+ let name: string;
5
+ let type: string;
6
+ let label: string;
7
+ let options: string[][];
8
+ }
9
+ namespace level_of_education {
10
+ let name_1: string;
11
+ export { name_1 as name };
12
+ let type_1: string;
13
+ export { type_1 as type };
14
+ let label_1: string;
15
+ export { label_1 as label };
16
+ let options_1: string[][];
17
+ export { options_1 as options };
18
+ }
19
+ }
20
+ let extendedProfile: never[];
21
+ let redirectUrl: string;
22
+ }
@@ -0,0 +1,33 @@
1
+ export const progressiveProfilingFields = {
2
+ fields: {
3
+ gender: {
4
+ name: 'gender',
5
+ type: 'select',
6
+ label: 'Gender',
7
+ options: [
8
+ ['f', 'Female'],
9
+ ['m', 'Male'],
10
+ ['o', 'Other'],
11
+ ],
12
+ },
13
+ level_of_education: {
14
+ name: 'level_of_education',
15
+ type: 'select',
16
+ label: 'Level of Education',
17
+ options: [
18
+ ['p', 'Doctorate'],
19
+ ['m', 'Master\'s or professional degree'],
20
+ ['b', 'Bachelor\'s Degree'],
21
+ ['a', 'Associate Degree'],
22
+ ['hs', 'Secondary/High School'],
23
+ ['jhs', 'Junior secondary/junior high/middle school'],
24
+ ['el', 'Elementary/primary school'],
25
+ ['none', 'No formal education'],
26
+ ['other', 'Other education'],
27
+ ],
28
+ },
29
+ },
30
+ extendedProfile: [],
31
+ redirectUrl: '',
32
+ };
33
+ //# sourceMappingURL=progressiveProfilingFields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progressiveProfilingFields.js","sourceRoot":"","sources":["../../../../../src/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/data/progressiveProfilingFields.js"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,MAAM,EAAE;QACN,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE;gBACP,CAAC,GAAG,EAAE,QAAQ,CAAC;gBACf,CAAC,GAAG,EAAE,MAAM,CAAC;gBACb,CAAC,GAAG,EAAE,OAAO,CAAC;aACf;SACF;QACD,kBAAkB,EAAE;YAClB,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,oBAAoB;YAC3B,OAAO,EAAE;gBACP,CAAC,GAAG,EAAE,WAAW,CAAC;gBAClB,CAAC,GAAG,EAAE,kCAAkC,CAAC;gBACzC,CAAC,GAAG,EAAE,oBAAoB,CAAC;gBAC3B,CAAC,GAAG,EAAE,kBAAkB,CAAC;gBACzB,CAAC,IAAI,EAAE,uBAAuB,CAAC;gBAC/B,CAAC,KAAK,EAAE,4CAA4C,CAAC;gBACrD,CAAC,IAAI,EAAE,2BAA2B,CAAC;gBACnC,CAAC,MAAM,EAAE,qBAAqB,CAAC;gBAC/B,CAAC,OAAO,EAAE,iBAAiB,CAAC;aAC7B;SACF;KACF;IACD,eAAe,EAAE,EAAE;IACnB,WAAW,EAAE,EAAE;CAChB,CAAC","sourcesContent":["export const progressiveProfilingFields = {\n fields: {\n gender: {\n name: 'gender',\n type: 'select',\n label: 'Gender',\n options: [\n ['f', 'Female'],\n ['m', 'Male'],\n ['o', 'Other'],\n ],\n },\n level_of_education: {\n name: 'level_of_education',\n type: 'select',\n label: 'Level of Education',\n options: [\n ['p', 'Doctorate'],\n ['m', 'Master\\'s or professional degree'],\n ['b', 'Bachelor\\'s Degree'],\n ['a', 'Associate Degree'],\n ['hs', 'Secondary/High School'],\n ['jhs', 'Junior secondary/junior high/middle school'],\n ['el', 'Elementary/primary school'],\n ['none', 'No formal education'],\n ['other', 'Other education'],\n ],\n },\n },\n extendedProfile: [],\n redirectUrl: '',\n};\n"]}
@@ -0,0 +1,21 @@
1
+ export default FormFieldRenderer;
2
+ declare function FormFieldRenderer({ fieldData, value, onChangeHandler, className, }: {
3
+ fieldData: any;
4
+ value: any;
5
+ onChangeHandler: any;
6
+ className: any;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ declare namespace FormFieldRenderer {
9
+ namespace propTypes {
10
+ let fieldData: PropTypes.Validator<NonNullable<PropTypes.InferProps<{
11
+ name: PropTypes.Validator<string>;
12
+ type: PropTypes.Validator<string>;
13
+ label: PropTypes.Requireable<string>;
14
+ options: PropTypes.Requireable<((string | null | undefined)[] | null | undefined)[]>;
15
+ }>>>;
16
+ let value: PropTypes.Requireable<NonNullable<string | boolean | null | undefined>>;
17
+ let onChangeHandler: PropTypes.Validator<(...args: any[]) => any>;
18
+ let className: PropTypes.Requireable<string>;
19
+ }
20
+ }
21
+ import PropTypes from 'prop-types';
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import { Form } from '@openedx/paragon';
5
+ const FormFieldRenderer = ({ fieldData, value, onChangeHandler, className, }) => {
6
+ switch (fieldData.type) {
7
+ case 'select':
8
+ return (_jsx(Form.Group, { controlId: fieldData.name, children: _jsxs(Form.Control, { as: "select", className: className, name: fieldData.name, value: value !== null && value !== void 0 ? value : '', onChange: onChangeHandler, floatingLabel: fieldData.label, children: [_jsx("option", { value: "", children: fieldData.label }), fieldData.options.map(option => (_jsx("option", { value: option[0], children: option[1] }, option[0])))] }) }));
9
+ case 'textarea':
10
+ return (_jsx(Form.Group, { controlId: fieldData.name, children: _jsx(Form.Control, { as: "textarea", className: className, name: fieldData.name, value: value !== null && value !== void 0 ? value : '', onChange: onChangeHandler, floatingLabel: fieldData.label }) }));
11
+ case 'checkbox':
12
+ return (_jsx(Form.Group, { controlId: fieldData.name, children: _jsx(Form.Checkbox, { id: fieldData.name, name: fieldData.name, checked: !!value, onChange: onChangeHandler, children: fieldData.label }) }));
13
+ default:
14
+ return (_jsx(Form.Group, { controlId: fieldData.name, children: _jsx(Form.Control, { className: className, name: fieldData.name, value: value !== null && value !== void 0 ? value : '', onChange: onChangeHandler, floatingLabel: fieldData.label }) }));
15
+ }
16
+ };
17
+ FormFieldRenderer.propTypes = {
18
+ fieldData: PropTypes.shape({
19
+ name: PropTypes.string.isRequired,
20
+ type: PropTypes.string.isRequired,
21
+ label: PropTypes.string,
22
+ options: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)),
23
+ }).isRequired,
24
+ value: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
25
+ onChangeHandler: PropTypes.func.isRequired,
26
+ className: PropTypes.string,
27
+ };
28
+ export default FormFieldRenderer;
29
+ //# sourceMappingURL=FieldRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldRenderer.js","sourceRoot":"","sources":["../../../../../src/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/field-renderer/FieldRenderer.jsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Form } from '@openedx/paragon';\n\nconst FormFieldRenderer = ({\n fieldData, value, onChangeHandler, className,\n}) => {\n switch (fieldData.type) {\n case 'select':\n return (\n <Form.Group controlId={fieldData.name}>\n <Form.Control\n as=\"select\"\n className={className}\n name={fieldData.name}\n value={value ?? ''}\n onChange={onChangeHandler}\n floatingLabel={fieldData.label}\n >\n <option value=\"\">{fieldData.label}</option>\n {fieldData.options.map(option => (\n <option key={option[0]} value={option[0]}>\n {option[1]}\n </option>\n ))}\n </Form.Control>\n </Form.Group>\n );\n\n case 'textarea':\n return (\n <Form.Group controlId={fieldData.name}>\n <Form.Control\n as=\"textarea\"\n className={className}\n name={fieldData.name}\n value={value ?? ''}\n onChange={onChangeHandler}\n floatingLabel={fieldData.label}\n />\n </Form.Group>\n );\n\n case 'checkbox':\n return (\n <Form.Group controlId={fieldData.name}>\n <Form.Checkbox\n id={fieldData.name}\n name={fieldData.name}\n checked={!!value}\n onChange={onChangeHandler}\n >\n {fieldData.label}\n </Form.Checkbox>\n </Form.Group>\n );\n\n default:\n return (\n <Form.Group controlId={fieldData.name}>\n <Form.Control\n className={className}\n name={fieldData.name}\n value={value ?? ''}\n onChange={onChangeHandler}\n floatingLabel={fieldData.label}\n />\n </Form.Group>\n );\n }\n};\n\nFormFieldRenderer.propTypes = {\n fieldData: PropTypes.shape({\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n label: PropTypes.string,\n options: PropTypes.arrayOf(\n PropTypes.arrayOf(PropTypes.string),\n ),\n }).isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n onChangeHandler: PropTypes.func.isRequired,\n className: PropTypes.string,\n};\n\nexport default FormFieldRenderer;\n"]}
@@ -0,0 +1 @@
1
+ export { default as FormFieldRenderer } from "./FieldRenderer";
@@ -0,0 +1,2 @@
1
+ export { default as FormFieldRenderer } from './FieldRenderer';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/field-renderer/index.jsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["export { default as FormFieldRenderer } from './FieldRenderer';\n"]}
@@ -0,0 +1 @@
1
+ export default function useClearProgressiveProfilingQueryParams(): () => void;
@@ -0,0 +1,10 @@
1
+ import { useCallback } from 'react';
2
+ import { PROGRESSIVE_PROFILING_QUERY_PARAM } from '../utils/constants';
3
+ export default function useClearProgressiveProfilingQueryParams() {
4
+ return useCallback(() => {
5
+ const currentUrl = new URL(window.location.href);
6
+ currentUrl.searchParams.delete(PROGRESSIVE_PROFILING_QUERY_PARAM);
7
+ window.history.replaceState({}, '', currentUrl.toString());
8
+ }, []);
9
+ }
10
+ //# sourceMappingURL=useClearProgressiveProfilingQueryParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useClearProgressiveProfilingQueryParams.js","sourceRoot":"","sources":["../../../../../src/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/hooks/useClearProgressiveProfilingQueryParams.jsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,iCAAiC,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,CAAC,OAAO,UAAU,uCAAuC;IAC7D,OAAO,WAAW,CAAC,GAAG,EAAE;QACtB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEjD,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC;QAElE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7D,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC","sourcesContent":["import { useCallback } from 'react';\nimport { PROGRESSIVE_PROFILING_QUERY_PARAM } from '../utils/constants';\n\nexport default function useClearProgressiveProfilingQueryParams() {\n return useCallback(() => {\n const currentUrl = new URL(window.location.href);\n\n currentUrl.searchParams.delete(PROGRESSIVE_PROFILING_QUERY_PARAM);\n\n window.history.replaceState({}, '', currentUrl.toString());\n }, []);\n}\n"]}
@@ -0,0 +1,11 @@
1
+ export default function useProgressiveProfilingForm(): {
2
+ loadState: string;
3
+ submitState: string;
4
+ error: null;
5
+ values: {};
6
+ fieldList: any[];
7
+ onChangeHandler: (event: any) => void;
8
+ submit: () => Promise<boolean>;
9
+ redirectUrl: string;
10
+ extendedProfileFieldNames: never[];
11
+ };
@@ -0,0 +1,50 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { useMemo, useState } from 'react';
11
+ import { COMPLETE_STATE, DEFAULT_STATE, PENDING_STATE, } from '../utils/constants';
12
+ import { saveProgressiveProfiling } from '../api/service';
13
+ import { progressiveProfilingFields } from '../data/progressiveProfilingFields';
14
+ export default function useProgressiveProfilingForm() {
15
+ const [submitState, setSubmitState] = useState(DEFAULT_STATE);
16
+ const [error, setError] = useState(null);
17
+ const [values, setValues] = useState({});
18
+ const fieldData = progressiveProfilingFields;
19
+ const fieldList = useMemo(() => Object.keys(fieldData.fields).map((key) => fieldData.fields[key]), [fieldData]);
20
+ const onChangeHandler = (event) => {
21
+ const { name, type, value, checked, } = event.target;
22
+ setValues((prev) => (Object.assign(Object.assign({}, prev), { [name]: type === 'checkbox' ? checked : value })));
23
+ };
24
+ const submit = () => __awaiter(this, void 0, void 0, function* () {
25
+ try {
26
+ setSubmitState(PENDING_STATE);
27
+ setError(null);
28
+ yield saveProgressiveProfiling(values, fieldData.extendedProfile || []);
29
+ setSubmitState(COMPLETE_STATE);
30
+ return true;
31
+ }
32
+ catch (err) {
33
+ setSubmitState(DEFAULT_STATE);
34
+ setError(err);
35
+ return false;
36
+ }
37
+ });
38
+ return {
39
+ loadState: COMPLETE_STATE,
40
+ submitState,
41
+ error,
42
+ values,
43
+ fieldList,
44
+ onChangeHandler,
45
+ submit,
46
+ redirectUrl: fieldData.redirectUrl || '',
47
+ extendedProfileFieldNames: fieldData.extendedProfile || [],
48
+ };
49
+ }
50
+ //# sourceMappingURL=useProgressiveProfilingForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProgressiveProfilingForm.js","sourceRoot":"","sources":["../../../../../src/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/hooks/useProgressiveProfilingForm.jsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EACL,cAAc,EAAE,aAAa,EAAE,aAAa,GAC7C,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAEhF,MAAM,CAAC,OAAO,UAAU,2BAA2B;IACjD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEzC,MAAM,SAAS,GAAG,0BAA0B,CAAC;IAE7C,MAAM,SAAS,GAAG,OAAO,CACvB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EACvE,CAAC,SAAS,CAAC,CACZ,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE;QAChC,MAAM,EACJ,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,GAC3B,GAAG,KAAK,CAAC,MAAM,CAAC;QACjB,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iCACf,IAAI,KACP,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAC7C,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,CAAC;YACH,cAAc,CAAC,aAAa,CAAC,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,wBAAwB,CAAC,MAAM,EAAE,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;YACxE,cAAc,CAAC,cAAc,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,cAAc,CAAC,aAAa,CAAC,CAAC;YAC9B,QAAQ,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAA,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,cAAc;QACzB,WAAW;QACX,KAAK;QACL,MAAM;QACN,SAAS;QACT,eAAe;QACf,MAAM;QACN,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,EAAE;QACxC,yBAAyB,EAAE,SAAS,CAAC,eAAe,IAAI,EAAE;KAC3D,CAAC;AACJ,CAAC","sourcesContent":["import { useMemo, useState } from 'react';\nimport {\n COMPLETE_STATE, DEFAULT_STATE, PENDING_STATE,\n} from '../utils/constants';\nimport { saveProgressiveProfiling } from '../api/service';\nimport { progressiveProfilingFields } from '../data/progressiveProfilingFields';\n\nexport default function useProgressiveProfilingForm() {\n const [submitState, setSubmitState] = useState(DEFAULT_STATE);\n const [error, setError] = useState(null);\n const [values, setValues] = useState({});\n\n const fieldData = progressiveProfilingFields;\n\n const fieldList = useMemo(\n () => Object.keys(fieldData.fields).map((key) => fieldData.fields[key]),\n [fieldData],\n );\n\n const onChangeHandler = (event) => {\n const {\n name, type, value, checked,\n } = event.target;\n setValues((prev) => ({\n ...prev,\n [name]: type === 'checkbox' ? checked : value,\n }));\n };\n\n const submit = async () => {\n try {\n setSubmitState(PENDING_STATE);\n setError(null);\n await saveProgressiveProfiling(values, fieldData.extendedProfile || []);\n setSubmitState(COMPLETE_STATE);\n return true;\n } catch (err) {\n setSubmitState(DEFAULT_STATE);\n setError(err);\n return false;\n }\n };\n\n return {\n loadState: COMPLETE_STATE,\n submitState,\n error,\n values,\n fieldList,\n onChangeHandler,\n submit,\n redirectUrl: fieldData.redirectUrl || '',\n extendedProfileFieldNames: fieldData.extendedProfile || [],\n };\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export default function useProgressiveProfilingTrigger(): {
2
+ shouldOpen: boolean;
3
+ };
@@ -0,0 +1,8 @@
1
+ import { PROGRESSIVE_PROFILING_QUERY_PARAM } from '../utils/constants';
2
+ export default function useProgressiveProfilingTrigger() {
3
+ const params = new URLSearchParams(window.location.search);
4
+ return {
5
+ shouldOpen: params.get(PROGRESSIVE_PROFILING_QUERY_PARAM) === 'true',
6
+ };
7
+ }
8
+ //# sourceMappingURL=useProgressiveProfilingTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProgressiveProfilingTrigger.js","sourceRoot":"","sources":["../../../../../src/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/hooks/useProgressiveProfilingTrigger.jsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,CAAC,OAAO,UAAU,8BAA8B;IACpD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3D,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,iCAAiC,CAAC,KAAK,MAAM;KACrE,CAAC;AACJ,CAAC","sourcesContent":["import { PROGRESSIVE_PROFILING_QUERY_PARAM } from '../utils/constants';\n\nexport default function useProgressiveProfilingTrigger() {\n const params = new URLSearchParams(window.location.search);\n\n return {\n shouldOpen: params.get(PROGRESSIVE_PROFILING_QUERY_PARAM) === 'true',\n };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export default ProgressiveProfilingEntry;
2
+ import { ProgressiveProfilingEntry } from './ProgressiveProfilingEntry';
@@ -0,0 +1,3 @@
1
+ import { ProgressiveProfilingEntry } from './ProgressiveProfilingEntry';
2
+ export default ProgressiveProfilingEntry;
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/index.jsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,eAAe,yBAAyB,CAAC","sourcesContent":["import { ProgressiveProfilingEntry } from './ProgressiveProfilingEntry';\n\nexport default ProgressiveProfilingEntry;\n"]}
@@ -0,0 +1,2 @@
1
+ export default ProgressiveProfilingPage;
2
+ declare function ProgressiveProfilingPage(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,82 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ import React, { useEffect, useState } from 'react';
12
+ import { useNavigate } from 'react-router-dom';
13
+ import { Helmet } from 'react-helmet';
14
+ import { useIntl } from '@openedx/frontend-base';
15
+ import { getAppConfig } from '@openedx/frontend-base';
16
+ import { getAuthenticatedUser, getAuthenticatedHttpClient } from '@openedx/frontend-base';
17
+ import { identifyAuthenticatedUser } from '@openedx/frontend-base';
18
+ import { Form, Hyperlink, StatefulButton, Alert, } from '@openedx/paragon';
19
+ import messages from './messages';
20
+ import useProgressiveProfilingForm from '../hooks/useProgressiveProfilingForm';
21
+ import BaseContainer from './base-container';
22
+ import { FormFieldRenderer } from '../field-renderer';
23
+ import ProgressiveProfilingPageModal from './ProgressiveProfilingPageModal';
24
+ import getThirdPartyAuthContext from './service/getThirdPartyAuthContext';
25
+ import { trackProgressiveProfilingSkipLinkClick, trackProgressiveProfilingSubmitClick, trackProgressiveProfilingSupportLinkClick, trackProgressiveProfilingPageViewed, } from '../../tracking/trackers/progressiveProfiling';
26
+ import { PENDING_STATE, COMPLETE_STATE } from '../utils/constants';
27
+ import './index.scss';
28
+ const ProgressiveProfilingPage = () => {
29
+ const navigate = useNavigate();
30
+ const { formatMessage } = useIntl();
31
+ const authenticatedUser = getAuthenticatedUser();
32
+ const client = getAuthenticatedHttpClient();
33
+ const { loadState, submitState, error, values, fieldList, onChangeHandler, submit, } = useProgressiveProfilingForm(authenticatedUser.username, client);
34
+ const [showModal, setShowModal] = useState(false);
35
+ const handleSubmit = (e) => __awaiter(void 0, void 0, void 0, function* () {
36
+ e.preventDefault();
37
+ const success = yield submit();
38
+ if (!success) {
39
+ return;
40
+ }
41
+ trackProgressiveProfilingSubmitClick({
42
+ isGenderSelected: !!values.gender,
43
+ isYearOfBirthSelected: !!values.year_of_birth,
44
+ isLevelOfEducationSelected: !!values.level_of_education,
45
+ isWorkExperienceSelected: !!values.work_experience,
46
+ });
47
+ navigate('/', { replace: true });
48
+ });
49
+ const handleSkip = () => {
50
+ trackProgressiveProfilingSkipLinkClick();
51
+ setShowModal(true);
52
+ };
53
+ const [mfeContext, setMfeContext] = useState(null);
54
+ useEffect(() => {
55
+ const fetchContext = () => __awaiter(void 0, void 0, void 0, function* () {
56
+ try {
57
+ const data = yield getThirdPartyAuthContext();
58
+ setMfeContext(data);
59
+ }
60
+ catch (err) {
61
+ // Allow the page to render even if enterprise context cannot be fetched.
62
+ setMfeContext(null);
63
+ }
64
+ });
65
+ fetchContext();
66
+ }, []);
67
+ useEffect(() => {
68
+ const userId = authenticatedUser === null || authenticatedUser === void 0 ? void 0 : authenticatedUser.userId;
69
+ if (userId) {
70
+ identifyAuthenticatedUser(userId);
71
+ trackProgressiveProfilingPageViewed();
72
+ }
73
+ }, [authenticatedUser === null || authenticatedUser === void 0 ? void 0 : authenticatedUser.userId]);
74
+ return (_jsxs(BaseContainer, { enterpriseBranding: mfeContext, children: [_jsx(Helmet, { children: _jsx("title", { children: formatMessage(messages['progressive.profiling.page.title'], { siteName: getAppConfig().SITE_NAME }) }) }), _jsx(ProgressiveProfilingPageModal, { isOpen: showModal, redirectUrl: "/" }), _jsxs("div", { className: "mw-xs m-4 pp-page-content", children: [_jsx("div", { children: _jsx("h2", { className: "pp-page__heading text-primary", children: formatMessage(messages['progressive.profiling.page.heading']) }) }), _jsx("hr", { className: "border-light-700 mb-4" }), error && (_jsxs(Alert, { variant: "danger", children: [_jsx(Alert.Heading, { children: formatMessage(messages['welcome.page.error.heading']) }), _jsx("p", { children: formatMessage(messages['welcome.page.error.message']) })] })), _jsxs(Form, { children: [fieldList.map((fieldData) => (_jsx(FormFieldRenderer, { fieldData: fieldData, value: values[fieldData.name], onChangeHandler: onChangeHandler }, fieldData.name))), (getAppConfig().AUTHN_PROGRESSIVE_PROFILING_SUPPORT_LINK) && (_jsx("span", { className: "pp-page__support-link", children: _jsx(Hyperlink, { isInline: true, variant: "muted", destination: getAppConfig().AUTHN_PROGRESSIVE_PROFILING_SUPPORT_LINK, target: "_blank", showLaunchIcon: false, onClick: () => (trackProgressiveProfilingSupportLinkClick()), children: formatMessage(messages['optional.fields.information.link']) }) })), _jsxs("div", { className: "d-flex mt-4 mb-3", children: [_jsx(StatefulButton, { type: "submit", variant: "brand", className: "pp-page__button-width", state: submitState, labels: {
75
+ default: formatMessage(messages['optional.fields.submit.button']),
76
+ pending: '',
77
+ }, onClick: handleSubmit, onMouseDown: (e) => e.preventDefault(), disabled: loadState !== COMPLETE_STATE || submitState === PENDING_STATE }), _jsx(StatefulButton, { className: "text-gray-700 font-weight-500", type: "button", variant: "link", labels: {
78
+ default: formatMessage(messages['optional.fields.skip.button']),
79
+ }, onClick: handleSkip, onMouseDown: (e) => e.preventDefault() })] })] })] })] }));
80
+ };
81
+ export default ProgressiveProfilingPage;
82
+ //# sourceMappingURL=ProgressiveProfiling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressiveProfiling.js","sourceRoot":"","sources":["../../../../../src/widgets/LearnerDashboardPlugins/progressive-profiling-dashboard/progressive-profiling-authn-replica/ProgressiveProfiling.jsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Helmet } from 'react-helmet';\nimport { useIntl } from '@openedx/frontend-base';\nimport { getAppConfig } from '@openedx/frontend-base';\nimport { getAuthenticatedUser, getAuthenticatedHttpClient } from '@openedx/frontend-base';\nimport { identifyAuthenticatedUser } from '@openedx/frontend-base';\nimport {\n Form, Hyperlink, StatefulButton, Alert,\n} from '@openedx/paragon';\nimport messages from './messages';\n\nimport useProgressiveProfilingForm from '../hooks/useProgressiveProfilingForm';\n\nimport BaseContainer from './base-container';\nimport { FormFieldRenderer } from '../field-renderer';\nimport ProgressiveProfilingPageModal from './ProgressiveProfilingPageModal';\n\nimport getThirdPartyAuthContext from './service/getThirdPartyAuthContext';\n\nimport {\n trackProgressiveProfilingSkipLinkClick, trackProgressiveProfilingSubmitClick,\n trackProgressiveProfilingSupportLinkClick, trackProgressiveProfilingPageViewed,\n} from '../../tracking/trackers/progressiveProfiling';\n\nimport { PENDING_STATE, COMPLETE_STATE } from '../utils/constants';\n\nimport './index.scss';\n\nconst ProgressiveProfilingPage = () => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const authenticatedUser = getAuthenticatedUser();\n const client = getAuthenticatedHttpClient();\n const {\n loadState, submitState, error, values, fieldList, onChangeHandler, submit,\n } = useProgressiveProfilingForm(authenticatedUser.username, client);\n const [showModal, setShowModal] = useState(false);\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n const success = await submit();\n if (!success) { return; }\n\n trackProgressiveProfilingSubmitClick({\n isGenderSelected: !!values.gender,\n isYearOfBirthSelected: !!values.year_of_birth,\n isLevelOfEducationSelected: !!values.level_of_education,\n isWorkExperienceSelected: !!values.work_experience,\n });\n navigate('/', { replace: true });\n };\n\n const handleSkip = () => {\n trackProgressiveProfilingSkipLinkClick();\n setShowModal(true);\n };\n\n const [mfeContext, setMfeContext] = useState(null);\n\n useEffect(() => {\n const fetchContext = async () => {\n try {\n const data = await getThirdPartyAuthContext();\n setMfeContext(data);\n } catch (err) {\n // Allow the page to render even if enterprise context cannot be fetched.\n setMfeContext(null);\n }\n };\n fetchContext();\n }, []);\n\n useEffect(() => {\n const userId = authenticatedUser?.userId;\n if (userId) {\n identifyAuthenticatedUser(userId);\n trackProgressiveProfilingPageViewed();\n }\n }, [authenticatedUser?.userId]);\n\n return (\n <BaseContainer enterpriseBranding={mfeContext}>\n <Helmet>\n <title>{formatMessage(\n messages['progressive.profiling.page.title'],\n { siteName: getAppConfig().SITE_NAME },\n )}\n </title>\n </Helmet>\n <ProgressiveProfilingPageModal isOpen={showModal} redirectUrl=\"/\" />\n <div className=\"mw-xs m-4 pp-page-content\">\n <div>\n <h2 className=\"pp-page__heading text-primary\">{formatMessage(messages['progressive.profiling.page.heading'])}</h2>\n </div><hr className=\"border-light-700 mb-4\" />\n {error && (\n <Alert variant=\"danger\">\n <Alert.Heading>{formatMessage(messages['welcome.page.error.heading'])}</Alert.Heading>\n <p>{formatMessage(messages['welcome.page.error.message'])}</p>\n </Alert>\n )}\n <Form>\n {fieldList.map((fieldData) => (\n <FormFieldRenderer\n key={fieldData.name}\n fieldData={fieldData}\n value={values[fieldData.name]}\n onChangeHandler={onChangeHandler}\n />\n ))}\n {(getAppConfig().AUTHN_PROGRESSIVE_PROFILING_SUPPORT_LINK) && (\n <span className=\"pp-page__support-link\">\n <Hyperlink\n isInline\n variant=\"muted\"\n destination={getAppConfig().AUTHN_PROGRESSIVE_PROFILING_SUPPORT_LINK}\n target=\"_blank\"\n showLaunchIcon={false}\n onClick={() => (trackProgressiveProfilingSupportLinkClick())}\n >\n {formatMessage(messages['optional.fields.information.link'])}\n </Hyperlink>\n </span>\n )}\n <div className=\"d-flex mt-4 mb-3\">\n <StatefulButton\n type=\"submit\"\n variant=\"brand\"\n className=\"pp-page__button-width\"\n state={submitState}\n labels={{\n default: formatMessage(messages['optional.fields.submit.button']),\n pending: '',\n }}\n onClick={handleSubmit}\n onMouseDown={(e) => e.preventDefault()}\n disabled={loadState !== COMPLETE_STATE || submitState === PENDING_STATE}\n />\n <StatefulButton\n className=\"text-gray-700 font-weight-500\"\n type=\"button\"\n variant=\"link\"\n labels={{\n default: formatMessage(messages['optional.fields.skip.button']),\n }}\n onClick={handleSkip}\n onMouseDown={(e) => e.preventDefault()}\n />\n </div>\n </Form>\n </div>\n </BaseContainer>\n );\n};\n\nexport default ProgressiveProfilingPage;\n"]}