@openedx/frontend-app-learner-dashboard 1.0.0-alpha.6 → 1.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Main.js +2 -3
- package/dist/Main.js.map +1 -1
- package/dist/app.js +1 -0
- package/dist/app.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardActions/BeginCourseButton.js +14 -5
- package/dist/containers/CourseCard/components/CourseCardActions/BeginCourseButton.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardActions/ResumeButton.js +14 -5
- package/dist/containers/CourseCard/components/CourseCardActions/ResumeButton.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardActions/SelectSessionButton.js +3 -3
- package/dist/containers/CourseCard/components/CourseCardActions/SelectSessionButton.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardActions/ViewCourseButton.js +5 -3
- package/dist/containers/CourseCard/components/CourseCardActions/ViewCourseButton.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardActions/index.js +5 -4
- package/dist/containers/CourseCard/components/CourseCardActions/index.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/CertificateBanner.js +26 -9
- package/dist/containers/CourseCard/components/CourseCardBanners/CertificateBanner.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/CourseBanner.js +12 -4
- package/dist/containers/CourseCard/components/CourseCardBanners/CourseBanner.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/hooks.js +23 -4
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/hooks.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/ApprovedContent.js +11 -5
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/ApprovedContent.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/EligibleContent.js +5 -3
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/EligibleContent.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/MustRequestContent.js +3 -3
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/MustRequestContent.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/PendingContent.js +5 -5
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/PendingContent.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/RejectedContent.js +4 -3
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/RejectedContent.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/ProviderLink.js +3 -2
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/ProviderLink.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/hooks.js +13 -5
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/hooks.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/EntitlementBanner.js +10 -6
- package/dist/containers/CourseCard/components/CourseCardBanners/EntitlementBanner.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/index.js +5 -4
- package/dist/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/index.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/index.d.ts +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/index.js +6 -2
- package/dist/containers/CourseCard/components/CourseCardBanners/index.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardDetails/hooks.d.ts +3 -3
- package/dist/containers/CourseCard/components/CourseCardDetails/hooks.js +14 -12
- package/dist/containers/CourseCard/components/CourseCardDetails/hooks.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardImage.js +7 -6
- package/dist/containers/CourseCard/components/CourseCardImage.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardMenu/SocialShareMenu.js +14 -11
- package/dist/containers/CourseCard/components/CourseCardMenu/SocialShareMenu.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardMenu/hooks.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardMenu/hooks.js +26 -6
- package/dist/containers/CourseCard/components/CourseCardMenu/hooks.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardMenu/index.js +5 -5
- package/dist/containers/CourseCard/components/CourseCardMenu/index.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardTitle.js +6 -4
- package/dist/containers/CourseCard/components/CourseCardTitle.js.map +1 -1
- package/dist/containers/CourseCard/components/RelatedProgramsBadge/hooks.js +4 -2
- package/dist/containers/CourseCard/components/RelatedProgramsBadge/hooks.js.map +1 -1
- package/dist/containers/CourseCard/components/hooks.d.ts +1 -1
- package/dist/containers/CourseCard/components/hooks.js +9 -7
- package/dist/containers/CourseCard/components/hooks.js.map +1 -1
- package/dist/containers/CourseCard/hooks.d.ts +0 -12
- package/dist/containers/CourseCard/hooks.js +0 -14
- package/dist/containers/CourseCard/hooks.js.map +1 -1
- package/dist/containers/CourseFilterControls/ActiveCourseFilters.d.ts +1 -11
- package/dist/containers/CourseFilterControls/ActiveCourseFilters.js +4 -9
- package/dist/containers/CourseFilterControls/ActiveCourseFilters.js.map +1 -1
- package/dist/containers/CourseFilterControls/CourseFilterControls.d.ts +1 -13
- package/dist/containers/CourseFilterControls/CourseFilterControls.js +26 -16
- package/dist/containers/CourseFilterControls/CourseFilterControls.js.map +1 -1
- package/dist/containers/CoursesPanel/CourseList/index.d.ts +0 -1
- package/dist/containers/CoursesPanel/CourseList/index.js +2 -3
- package/dist/containers/CoursesPanel/CourseList/index.js.map +1 -1
- package/dist/containers/CoursesPanel/NoCoursesView/index.js +4 -2
- package/dist/containers/CoursesPanel/NoCoursesView/index.js.map +1 -1
- package/dist/containers/CoursesPanel/index.js +27 -6
- package/dist/containers/CoursesPanel/index.js.map +1 -1
- package/dist/containers/Dashboard/hooks.js.map +1 -1
- package/dist/containers/Dashboard/index.js +7 -4
- package/dist/containers/Dashboard/index.js.map +1 -1
- package/dist/containers/EmailSettingsModal/hooks.js +8 -5
- package/dist/containers/EmailSettingsModal/hooks.js.map +1 -1
- package/dist/containers/RelatedProgramsModal/index.js +5 -3
- package/dist/containers/RelatedProgramsModal/index.js.map +1 -1
- package/dist/containers/SelectSessionModal/hooks.d.ts +1 -1
- package/dist/containers/SelectSessionModal/hooks.js +25 -15
- package/dist/containers/SelectSessionModal/hooks.js.map +1 -1
- package/dist/containers/UnenrollConfirmModal/components/ConfirmPane.d.ts +3 -1
- package/dist/containers/UnenrollConfirmModal/components/ConfirmPane.js +9 -3
- package/dist/containers/UnenrollConfirmModal/components/ConfirmPane.js.map +1 -1
- package/dist/containers/UnenrollConfirmModal/components/FinishedPane.d.ts +3 -3
- package/dist/containers/UnenrollConfirmModal/components/FinishedPane.js +9 -4
- package/dist/containers/UnenrollConfirmModal/components/FinishedPane.js.map +1 -1
- package/dist/containers/UnenrollConfirmModal/components/ReasonPane.d.ts +3 -2
- package/dist/containers/UnenrollConfirmModal/components/ReasonPane.js +3 -3
- package/dist/containers/UnenrollConfirmModal/components/ReasonPane.js.map +1 -1
- package/dist/containers/UnenrollConfirmModal/components/messages.d.ts +7 -7
- package/dist/containers/UnenrollConfirmModal/components/messages.js +12 -12
- package/dist/containers/UnenrollConfirmModal/components/messages.js.map +1 -1
- package/dist/containers/UnenrollConfirmModal/constants.d.ts +5 -0
- package/dist/containers/UnenrollConfirmModal/constants.js +7 -1
- package/dist/containers/UnenrollConfirmModal/constants.js.map +1 -1
- package/dist/containers/UnenrollConfirmModal/hooks/index.d.ts +1 -3
- package/dist/containers/UnenrollConfirmModal/hooks/index.js +18 -13
- package/dist/containers/UnenrollConfirmModal/hooks/index.js.map +1 -1
- package/dist/containers/UnenrollConfirmModal/hooks/reasons.d.ts +0 -2
- package/dist/containers/UnenrollConfirmModal/hooks/reasons.js +13 -15
- package/dist/containers/UnenrollConfirmModal/hooks/reasons.js.map +1 -1
- package/dist/containers/UnenrollConfirmModal/index.js +1 -1
- package/dist/containers/UnenrollConfirmModal/index.js.map +1 -1
- package/dist/data/constants/files.js +1 -1
- package/dist/data/constants/files.js.map +1 -1
- package/dist/data/constants/htmlKeys.js +1 -1
- package/dist/data/constants/htmlKeys.js.map +1 -1
- package/dist/data/context/FiltersProvider.d.ts +18 -0
- package/dist/data/context/FiltersProvider.js +37 -0
- package/dist/data/context/FiltersProvider.js.map +1 -0
- package/dist/data/context/MasqueradeProvider.d.ts +11 -0
- package/dist/data/context/MasqueradeProvider.js +19 -0
- package/dist/data/context/MasqueradeProvider.js.map +1 -0
- package/dist/data/context/SelectSessionProvider.d.ts +15 -0
- package/dist/data/context/SelectSessionProvider.js +40 -0
- package/dist/data/context/SelectSessionProvider.js.map +1 -0
- package/dist/data/context/index.d.ts +10 -0
- package/dist/data/context/index.js +8 -0
- package/dist/data/context/index.js.map +1 -0
- package/dist/data/contexts/GlobalDataContext.d.ts +15 -11
- package/dist/data/contexts/GlobalDataContext.js.map +1 -1
- package/dist/data/hooks/index.d.ts +3 -0
- package/dist/data/hooks/index.js +4 -0
- package/dist/data/hooks/index.js.map +1 -0
- package/dist/data/hooks/mutationHooks.d.ts +26 -0
- package/dist/data/hooks/mutationHooks.js +84 -0
- package/dist/data/hooks/mutationHooks.js.map +1 -0
- package/dist/data/hooks/queryHooks.d.ts +164 -0
- package/dist/data/hooks/queryHooks.js +57 -0
- package/dist/data/hooks/queryHooks.js.map +1 -0
- package/dist/data/hooks/queryKeys.d.ts +13 -0
- package/dist/data/hooks/queryKeys.js +15 -0
- package/dist/data/hooks/queryKeys.js.map +1 -0
- package/dist/data/services/lms/api.d.ts +18 -27
- package/dist/data/services/lms/api.js +77 -38
- package/dist/data/services/lms/api.js.map +1 -1
- package/dist/data/services/lms/index.js +1 -1
- package/dist/data/services/lms/index.js.map +1 -1
- package/dist/data/services/lms/urls.d.ts +0 -1
- package/dist/data/services/lms/urls.js +6 -2
- package/dist/data/services/lms/urls.js.map +1 -1
- package/dist/data/services/segment/utils.d.ts +1 -1
- package/dist/hooks/index.d.ts +5 -4
- package/dist/hooks/index.js +8 -4
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useCourseData.d.ts +2 -0
- package/dist/hooks/useCourseData.js +8 -0
- package/dist/hooks/useCourseData.js.map +1 -0
- package/dist/hooks/useCourseTrackingEvent.d.ts +2 -0
- package/dist/hooks/useCourseTrackingEvent.js +13 -0
- package/dist/hooks/useCourseTrackingEvent.js.map +1 -0
- package/dist/hooks/useEntitlementInfo.d.ts +22 -0
- package/dist/hooks/useEntitlementInfo.js +29 -0
- package/dist/hooks/useEntitlementInfo.js.map +1 -0
- package/dist/hooks/useIsMasquerading.d.ts +2 -0
- package/dist/hooks/useIsMasquerading.js +9 -0
- package/dist/hooks/useIsMasquerading.js.map +1 -0
- package/dist/providers.js +2 -2
- package/dist/providers.js.map +1 -1
- package/dist/routes.d.ts +2 -0
- package/dist/routes.js +3 -1
- package/dist/routes.js.map +1 -1
- package/dist/tracking/trackers/findCourses.d.ts +1 -1
- package/dist/tracking/trackers/socialShare.js +2 -2
- package/dist/tracking/trackers/socialShare.js.map +1 -1
- package/dist/utils/dataTransformers.d.ts +7 -0
- package/dist/utils/dataTransformers.js +58 -0
- package/dist/utils/dataTransformers.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/hooks.d.ts +5 -6
- package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/hooks.js +9 -14
- package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/hooks.js.map +1 -1
- package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/hooks.d.ts +12 -14
- package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/hooks.js +24 -34
- package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/hooks.js.map +1 -1
- package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/index.js +1 -1
- package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/index.js.map +1 -1
- package/dist/widgets/LearnerDashboardHeader/hooks.js +1 -1
- package/dist/widgets/LearnerDashboardHeader/hooks.js.map +1 -1
- package/dist/widgets/LookingForChallengeWidget/index.js +4 -2
- package/dist/widgets/LookingForChallengeWidget/index.js.map +1 -1
- package/dist/widgets/LookingForChallengeWidget/track.d.ts +1 -1
- package/package.json +19 -18
- package/dist/containers/CourseFilterControls/hooks.d.ts +0 -3
- package/dist/containers/CourseFilterControls/hooks.js +0 -48
- package/dist/containers/CourseFilterControls/hooks.js.map +0 -1
- package/dist/containers/CoursesPanel/hooks.d.ts +0 -15
- package/dist/containers/CoursesPanel/hooks.js +0 -45
- package/dist/containers/CoursesPanel/hooks.js.map +0 -1
- package/dist/containers/RelatedProgramsModal/hooks.d.ts +0 -7
- package/dist/containers/RelatedProgramsModal/hooks.js +0 -7
- package/dist/containers/RelatedProgramsModal/hooks.js.map +0 -1
- package/dist/data/contexts/MasqueradeUserContext.d.ts +0 -13
- package/dist/data/contexts/MasqueradeUserContext.js +0 -15
- package/dist/data/contexts/MasqueradeUserContext.js.map +0 -1
- package/dist/data/contexts/MasqueradeUserProvider.d.ts +0 -3
- package/dist/data/contexts/MasqueradeUserProvider.js +0 -24
- package/dist/data/contexts/MasqueradeUserProvider.js.map +0 -1
- package/dist/data/redux/app/index.d.ts +0 -2
- package/dist/data/redux/app/index.js +0 -3
- package/dist/data/redux/app/index.js.map +0 -1
- package/dist/data/redux/app/reducer.d.ts +0 -25
- package/dist/data/redux/app/reducer.js +0 -42
- package/dist/data/redux/app/reducer.js.map +0 -1
- package/dist/data/redux/app/selectors/appSelectors.d.ts +0 -17
- package/dist/data/redux/app/selectors/appSelectors.js +0 -13
- package/dist/data/redux/app/selectors/appSelectors.js.map +0 -1
- package/dist/data/redux/app/selectors/courseCard.d.ts +0 -3
- package/dist/data/redux/app/selectors/courseCard.js +0 -114
- package/dist/data/redux/app/selectors/courseCard.js.map +0 -1
- package/dist/data/redux/app/selectors/currentList.d.ts +0 -24
- package/dist/data/redux/app/selectors/currentList.js +0 -45
- package/dist/data/redux/app/selectors/currentList.js.map +0 -1
- package/dist/data/redux/app/selectors/index.d.ts +0 -2
- package/dist/data/redux/app/selectors/index.js +0 -8
- package/dist/data/redux/app/selectors/index.js.map +0 -1
- package/dist/data/redux/app/selectors/simpleSelectors.d.ts +0 -5
- package/dist/data/redux/app/selectors/simpleSelectors.js +0 -31
- package/dist/data/redux/app/selectors/simpleSelectors.js.map +0 -1
- package/dist/data/redux/hooks/app.d.ts +0 -42
- package/dist/data/redux/hooks/app.js +0 -99
- package/dist/data/redux/hooks/app.js.map +0 -1
- package/dist/data/redux/hooks/index.d.ts +0 -2
- package/dist/data/redux/hooks/index.js +0 -3
- package/dist/data/redux/hooks/index.js.map +0 -1
- package/dist/data/redux/hooks/requests.d.ts +0 -16
- package/dist/data/redux/hooks/requests.js +0 -38
- package/dist/data/redux/hooks/requests.js.map +0 -1
- package/dist/data/redux/index.d.ts +0 -6
- package/dist/data/redux/index.js +0 -26
- package/dist/data/redux/index.js.map +0 -1
- package/dist/data/redux/requests/index.d.ts +0 -2
- package/dist/data/redux/requests/index.js +0 -3
- package/dist/data/redux/requests/index.js.map +0 -1
- package/dist/data/redux/requests/reducer.d.ts +0 -36
- package/dist/data/redux/requests/reducer.js +0 -32
- package/dist/data/redux/requests/reducer.js.map +0 -1
- package/dist/data/redux/requests/selectors.d.ts +0 -21
- package/dist/data/redux/requests/selectors.js +0 -24
- package/dist/data/redux/requests/selectors.js.map +0 -1
- package/dist/data/services/lms/fakeData/courses.d.ts +0 -788
- package/dist/data/services/lms/fakeData/courses.js +0 -744
- package/dist/data/services/lms/fakeData/courses.js.map +0 -1
- package/dist/data/services/lms/fakeData/testUtils.d.ts +0 -18
- package/dist/data/services/lms/fakeData/testUtils.js +0 -31
- package/dist/data/services/lms/fakeData/testUtils.js.map +0 -1
- package/dist/data/store.d.ts +0 -12
- package/dist/data/store.js +0 -14
- package/dist/data/store.js.map +0 -1
- package/dist/data/utils.d.ts +0 -10
- package/dist/data/utils.js +0 -14
- package/dist/data/utils.js.map +0 -1
- package/dist/hooks/api.d.ts +0 -9
- package/dist/hooks/api.js +0 -96
- package/dist/hooks/api.js.map +0 -1
- package/dist/slots/CourseBannerSlot/images/course_banner_slot_default.png +0 -0
- package/dist/slots/CourseBannerSlot/images/custom_course_banner.png +0 -0
- package/dist/slots/CourseCardActionSlot/images/post_course_card_action.png +0 -0
- package/dist/slots/CourseListSlot/images/course_list_slot.png +0 -0
- package/dist/slots/CourseListSlot/images/readme_custom_course_list.png +0 -0
- package/dist/slots/DashboardModalSlot/images/dashboard_modal_slot.png +0 -0
- package/dist/slots/NoCoursesViewSlot/images/no_course_view_slot.png +0 -0
- package/dist/slots/NoCoursesViewSlot/images/readme_custom_no_courses.png +0 -0
- package/dist/slots/WidgetSidebarSlot/images/readme_custom_sidebar.png +0 -0
- package/dist/slots/WidgetSidebarSlot/images/widget_sidebar_slot.png +0 -0
- package/dist/test/inspector.d.ts +0 -28
- package/dist/test/inspector.js +0 -38
- package/dist/test/inspector.js.map +0 -1
- package/dist/test/messages.d.ts +0 -8
- package/dist/test/messages.js +0 -18
- package/dist/test/messages.js.map +0 -1
- package/dist/test/utils.d.ts +0 -2
- package/dist/test/utils.js +0 -3
- package/dist/test/utils.js.map +0 -1
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import { StrictDict } from '../../../utils';
|
|
4
|
-
import { apiHooks } from '../../../hooks';
|
|
5
|
-
import * as module from './hooks';
|
|
6
|
-
export const state = StrictDict({
|
|
7
|
-
showPageBanner: (val) => useState(val), // eslint-disable-line
|
|
8
|
-
showConfirmModal: (val) => useState(val), // eslint-disable-line
|
|
9
|
-
});
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { useInitializeLearnerHome, useSendConfirmEmail } from '../../../data/hooks';
|
|
10
3
|
export const useConfirmEmailBannerData = () => {
|
|
11
|
-
|
|
12
|
-
const {
|
|
13
|
-
const
|
|
14
|
-
const
|
|
4
|
+
var _a, _b;
|
|
5
|
+
const { data: learnerData } = useInitializeLearnerHome();
|
|
6
|
+
const isNeeded = ((_a = learnerData === null || learnerData === void 0 ? void 0 : learnerData.emailConfirmation) === null || _a === void 0 ? void 0 : _a.isNeeded) || false;
|
|
7
|
+
const sendEmailUrl = ((_b = learnerData === null || learnerData === void 0 ? void 0 : learnerData.emailConfirmation) === null || _b === void 0 ? void 0 : _b.sendEmailUrl) || '';
|
|
8
|
+
const { mutate: sendConfirmEmail } = useSendConfirmEmail(sendEmailUrl);
|
|
9
|
+
const [showPageBanner, setShowPageBanner] = useState(isNeeded);
|
|
10
|
+
const [showConfirmModal, setShowConfirmModal] = useState(false);
|
|
15
11
|
const closePageBanner = () => setShowPageBanner(false);
|
|
16
12
|
const closeConfirmModal = () => setShowConfirmModal(false);
|
|
17
13
|
const openConfirmModal = () => setShowConfirmModal(true);
|
|
18
|
-
const sendConfirmEmail = apiHooks.useSendConfirmEmail();
|
|
19
14
|
const openConfirmModalButtonClick = () => {
|
|
20
15
|
sendConfirmEmail();
|
|
21
16
|
openConfirmModal();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/widgets/LearnerDashboardHeader/ConfirmEmailBanner/hooks.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/widgets/LearnerDashboardHeader/ConfirmEmailBanner/hooks.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEhF,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE;;IAC5C,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,wBAAwB,EAAE,CAAC;IACzD,MAAM,QAAQ,GAAG,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,iBAAiB,0CAAE,QAAQ,KAAI,KAAK,CAAC;IACnE,MAAM,YAAY,GAAG,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,iBAAiB,0CAAE,YAAY,KAAI,EAAE,CAAC;IACxE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACvE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAEzD,MAAM,2BAA2B,GAAG,GAAG,EAAE;QACvC,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;QACnB,eAAe,EAAE,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,2BAA2B,GAAG,GAAG,EAAE;QACvC,iBAAiB,EAAE,CAAC;QACpB,eAAe,EAAE,CAAC;IACpB,CAAC,CAAC;IACF,OAAO;QACL,QAAQ;QACR,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,iBAAiB;QACjB,2BAA2B;QAC3B,2BAA2B;KAC5B,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,yBAAyB,CAAC","sourcesContent":["import { useState } from 'react';\n\nimport { useInitializeLearnerHome, useSendConfirmEmail } from '@src/data/hooks';\n\nexport const useConfirmEmailBannerData = () => {\n const { data: learnerData } = useInitializeLearnerHome();\n const isNeeded = learnerData?.emailConfirmation?.isNeeded || false;\n const sendEmailUrl = learnerData?.emailConfirmation?.sendEmailUrl || '';\n const { mutate: sendConfirmEmail } = useSendConfirmEmail(sendEmailUrl);\n const [showPageBanner, setShowPageBanner] = useState(isNeeded);\n const [showConfirmModal, setShowConfirmModal] = useState(false);\n const closePageBanner = () => setShowPageBanner(false);\n const closeConfirmModal = () => setShowConfirmModal(false);\n const openConfirmModal = () => setShowConfirmModal(true);\n\n const openConfirmModalButtonClick = () => {\n sendConfirmEmail();\n openConfirmModal();\n closePageBanner();\n };\n\n const userConfirmEmailButtonClick = () => {\n closeConfirmModal();\n closePageBanner();\n };\n return {\n isNeeded,\n showPageBanner,\n closePageBanner,\n showConfirmModal,\n closeConfirmModal,\n openConfirmModalButtonClick,\n userConfirmEmailButtonClick,\n };\n};\n\nexport default useConfirmEmailBannerData;\n"]}
|
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
export const state: any;
|
|
2
|
-
export function useMasqueradeInput(): {
|
|
3
|
-
handleMasqueradeInputChange: (e: any) => any;
|
|
4
|
-
masqueradeInput: any;
|
|
5
|
-
};
|
|
6
|
-
export function getMasqueradeErrorMessage(errorStatus: any): any;
|
|
7
1
|
export function useMasqueradeBarData({ authenticatedUser, }: {
|
|
8
2
|
authenticatedUser: any;
|
|
9
3
|
}): {
|
|
10
4
|
canMasquerade: any;
|
|
11
|
-
isMasquerading:
|
|
12
|
-
isMasqueradingFailed:
|
|
13
|
-
isMasqueradingPending:
|
|
14
|
-
masqueradeErrorMessage:
|
|
15
|
-
|
|
5
|
+
isMasquerading: boolean;
|
|
6
|
+
isMasqueradingFailed: boolean;
|
|
7
|
+
isMasqueradingPending: boolean;
|
|
8
|
+
masqueradeErrorMessage: {
|
|
9
|
+
id: string;
|
|
10
|
+
defaultMessage: string;
|
|
11
|
+
description: string;
|
|
12
|
+
} | null;
|
|
13
|
+
masqueradeInput: string;
|
|
16
14
|
handleMasqueradeSubmit: (user: any) => (e: any) => void;
|
|
17
|
-
handleClearMasquerade: () =>
|
|
18
|
-
handleMasqueradeInputChange: (e: any) =>
|
|
15
|
+
handleClearMasquerade: () => void;
|
|
16
|
+
handleMasqueradeInputChange: (e: any) => void;
|
|
19
17
|
formatMessage: {
|
|
20
18
|
(this: void, descriptor: import("react-intl").MessageDescriptor, values?: Record<string, import("intl-messageformat").PrimitiveType | import("intl-messageformat").FormatXMLElementFn<string, string>>, opts?: import("intl-messageformat").Options): string;
|
|
21
19
|
(this: void, descriptor: import("react-intl").MessageDescriptor, values?: Record<string, React.ReactNode | import("intl-messageformat").PrimitiveType | import("intl-messageformat").FormatXMLElementFn<string, React.ReactNode>>, opts?: import("intl-messageformat").Options): Array<React.ReactNode>;
|
|
22
20
|
};
|
|
23
21
|
};
|
|
24
|
-
export default
|
|
22
|
+
export default useMasqueradeBarData;
|
|
@@ -1,47 +1,37 @@
|
|
|
1
|
-
import { useState,
|
|
1
|
+
import { useState, useMemo } from 'react';
|
|
2
2
|
import { useIntl } from '@openedx/frontend-base';
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import * as module from './hooks';
|
|
3
|
+
import { useMasquerade } from '../../../data/context';
|
|
4
|
+
import { useInitializeLearnerHome } from '../../../data/hooks';
|
|
6
5
|
import messages from './messages';
|
|
7
|
-
export const state = StrictDict({
|
|
8
|
-
masqueradeInput: (val) => useState(val), // eslint-disable-line
|
|
9
|
-
});
|
|
10
|
-
export const useMasqueradeInput = () => {
|
|
11
|
-
const [masqueradeInput, setMasqueradeInput] = module.state.masqueradeInput('');
|
|
12
|
-
const handleMasqueradeInputChange = (e) => setMasqueradeInput(e.target.value);
|
|
13
|
-
return {
|
|
14
|
-
handleMasqueradeInputChange,
|
|
15
|
-
masqueradeInput,
|
|
16
|
-
};
|
|
17
|
-
};
|
|
18
|
-
const masqueradeErrorMessageMap = {
|
|
19
|
-
404: messages.NoStudentFound,
|
|
20
|
-
};
|
|
21
|
-
export const getMasqueradeErrorMessage = (errorStatus) => {
|
|
22
|
-
var _a;
|
|
23
|
-
if (errorStatus == null) {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
return (_a = masqueradeErrorMessageMap[errorStatus]) !== null && _a !== void 0 ? _a : messages.UnknownError;
|
|
27
|
-
};
|
|
28
6
|
export const useMasqueradeBarData = ({ authenticatedUser, }) => {
|
|
29
|
-
var _a;
|
|
30
7
|
const { formatMessage } = useIntl();
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
const {
|
|
34
|
-
const
|
|
35
|
-
const
|
|
8
|
+
const [masqueradeInput, setMasqueradeInput] = useState('');
|
|
9
|
+
const { masqueradeUser, setMasqueradeUser } = useMasquerade();
|
|
10
|
+
const { isError, error, isPending, } = useInitializeLearnerHome();
|
|
11
|
+
const handleMasqueradeInputChange = (e) => setMasqueradeInput(e.target.value);
|
|
12
|
+
const handleClearMasquerade = () => {
|
|
13
|
+
setMasqueradeUser(undefined);
|
|
14
|
+
setMasqueradeInput('');
|
|
15
|
+
};
|
|
36
16
|
const handleMasqueradeSubmit = (user) => (e) => {
|
|
37
17
|
setMasqueradeUser(user);
|
|
38
18
|
e.preventDefault();
|
|
39
19
|
};
|
|
20
|
+
const isMasqueradingFailed = !!masqueradeUser && !!masqueradeInput && isError;
|
|
21
|
+
const isMasqueradingPending = !!masqueradeUser && isPending;
|
|
22
|
+
const isMasquerading = !!masqueradeUser && !isError && !isPending;
|
|
23
|
+
const masqueradeErrorMessage = useMemo(() => {
|
|
24
|
+
var _a;
|
|
25
|
+
if (masqueradeUser && error) {
|
|
26
|
+
return (((_a = error.customAttributes) === null || _a === void 0 ? void 0 : _a.httpErrorStatus) === 404 ? messages.NoStudentFound : messages.UnknownError);
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}, [error, masqueradeUser]);
|
|
40
30
|
return {
|
|
41
31
|
canMasquerade: authenticatedUser === null || authenticatedUser === void 0 ? void 0 : authenticatedUser.administrator,
|
|
42
|
-
isMasquerading
|
|
43
|
-
isMasqueradingFailed
|
|
44
|
-
isMasqueradingPending
|
|
32
|
+
isMasquerading,
|
|
33
|
+
isMasqueradingFailed,
|
|
34
|
+
isMasqueradingPending,
|
|
45
35
|
masqueradeErrorMessage,
|
|
46
36
|
masqueradeInput,
|
|
47
37
|
handleMasqueradeSubmit,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/widgets/LearnerDashboardHeader/MasqueradeBar/hooks.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/widgets/LearnerDashboardHeader/MasqueradeBar/hooks.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,iBAAiB,GAClB,EAAE,EAAE;IACH,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3D,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,aAAa,EAAE,CAAC;IAC9D,MAAM,EACJ,OAAO,EAAE,KAAK,EAAE,SAAS,GAC1B,GAAG,wBAAwB,EAAE,CAAC;IAE/B,MAAM,2BAA2B,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9E,MAAM,qBAAqB,GAAG,GAAG,EAAE;QACjC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC7B,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC;IACF,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7C,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,cAAc,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,eAAe,IAAI,OAAO,CAAC;IAC9E,MAAM,qBAAqB,GAAG,CAAC,CAAC,cAAc,IAAI,SAAS,CAAC;IAC5D,MAAM,cAAc,GAAG,CAAC,CAAC,cAAc,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC;IAClE,MAAM,sBAAsB,GAAG,OAAO,CAAC,GAAG,EAAE;;QAC1C,IAAI,cAAc,IAAI,KAAK,EAAE,CAAC;YAC5B,OAAO,CAAC,CAAA,MAAA,KAAK,CAAC,gBAAgB,0CAAE,eAAe,MAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC7G,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IAE5B,OAAO;QACL,aAAa,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,aAAa;QAC/C,cAAc;QACd,oBAAoB;QACpB,qBAAqB;QACrB,sBAAsB;QACtB,eAAe;QACf,sBAAsB;QACtB,qBAAqB;QACrB,2BAA2B;QAC3B,aAAa;KACd,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,oBAAoB,CAAC","sourcesContent":["import { useState, useMemo } from 'react';\nimport { useIntl } from '@openedx/frontend-base';\n\nimport { useMasquerade } from '../../../data/context';\nimport { useInitializeLearnerHome } from '../../../data/hooks';\n\nimport messages from './messages';\n\nexport const useMasqueradeBarData = ({\n authenticatedUser,\n}) => {\n const { formatMessage } = useIntl();\n const [masqueradeInput, setMasqueradeInput] = useState('');\n const { masqueradeUser, setMasqueradeUser } = useMasquerade();\n const {\n isError, error, isPending,\n } = useInitializeLearnerHome();\n\n const handleMasqueradeInputChange = (e) => setMasqueradeInput(e.target.value);\n const handleClearMasquerade = () => {\n setMasqueradeUser(undefined);\n setMasqueradeInput('');\n };\n const handleMasqueradeSubmit = (user) => (e) => {\n setMasqueradeUser(user);\n e.preventDefault();\n };\n\n const isMasqueradingFailed = !!masqueradeUser && !!masqueradeInput && isError;\n const isMasqueradingPending = !!masqueradeUser && isPending;\n const isMasquerading = !!masqueradeUser && !isError && !isPending;\n const masqueradeErrorMessage = useMemo(() => {\n if (masqueradeUser && error) {\n return (error.customAttributes?.httpErrorStatus === 404 ? messages.NoStudentFound : messages.UnknownError);\n }\n return null;\n }, [error, masqueradeUser]);\n\n return {\n canMasquerade: authenticatedUser?.administrator,\n isMasquerading,\n isMasqueradingFailed,\n isMasqueradingPending,\n masqueradeErrorMessage,\n masqueradeInput,\n handleMasqueradeSubmit,\n handleClearMasquerade,\n handleMasqueradeInputChange,\n formatMessage,\n };\n};\n\nexport default useMasqueradeBarData;\n"]}
|
|
@@ -12,7 +12,7 @@ export const MasqueradeBar = () => {
|
|
|
12
12
|
if (!canMasquerade) {
|
|
13
13
|
return null;
|
|
14
14
|
}
|
|
15
|
-
return (_jsx("div", { className: "w-100 shadow-sm px-2", children: _jsx(Form, { className: "masquerade-bar w-100", children: isMasquerading ? (_jsxs(_Fragment, { children: [_jsxs(FormLabel, { inline: "true", className: "masquerade-form-label", children: [_jsx(Icon, { src: PersonSearch }), formatMessage(messages.ViewingAs)] }), _jsx(Chip, { className: "masquerade-chip", iconAfter: Close, onClick: handleClearMasquerade, children: masqueradeInput })] })) : (_jsxs(_Fragment, { children: [_jsxs(FormLabel, { inline: "true", id: "masquerade-form-label", className: "masquerade-form-label", children: [_jsx(Icon, { src: PersonSearch }), formatMessage(messages.ViewAs)] }), _jsxs(FormGroup, { isInvalid: isMasqueradingFailed, className: "masquerade-form-input", children: [_jsx(FormControl, { value: masqueradeInput, onChange: handleMasqueradeInputChange, floatingLabel: formatMessage(messages.StudentNameInput), "aria-labelledby": "masquerade-form-label" }), isMasqueradingFailed && (_jsx(FormControlFeedback, { type: "invalid", hasIcon: false, children: formatMessage(masqueradeErrorMessage) }))] }), _jsx(StatefulButton, { disabled: !masqueradeInput.length, variant: "brand", onClick: handleMasqueradeSubmit(masqueradeInput), labels: {
|
|
15
|
+
return (_jsx("div", { className: "w-100 shadow-sm px-2", children: _jsx(Form, { className: "masquerade-bar w-100", children: isMasquerading ? (_jsxs(_Fragment, { children: [_jsxs(FormLabel, { inline: "true", className: "masquerade-form-label", children: [_jsx(Icon, { src: PersonSearch }), formatMessage(messages.ViewingAs)] }), _jsx(Chip, { className: "masquerade-chip", iconAfter: Close, onClick: handleClearMasquerade, children: masqueradeInput })] })) : (_jsxs(_Fragment, { children: [_jsxs(FormLabel, { inline: "true", id: "masquerade-form-label", className: "masquerade-form-label", children: [_jsx(Icon, { src: PersonSearch }), formatMessage(messages.ViewAs)] }), _jsxs(FormGroup, { isInvalid: isMasqueradingFailed, className: "masquerade-form-input", children: [_jsx(FormControl, { value: masqueradeInput, onChange: handleMasqueradeInputChange, floatingLabel: formatMessage(messages.StudentNameInput), "aria-labelledby": "masquerade-form-label" }), isMasqueradingFailed && (_jsx(FormControlFeedback, { type: "invalid", hasIcon: false, children: formatMessage(masqueradeErrorMessage) }))] }), _jsx(StatefulButton, { disabled: !(masqueradeInput === null || masqueradeInput === void 0 ? void 0 : masqueradeInput.length), variant: "brand", onClick: handleMasqueradeSubmit(masqueradeInput), labels: {
|
|
16
16
|
default: formatMessage(messages.SubmitButton),
|
|
17
17
|
}, className: "mr-3", state: isMasqueradingPending ? 'pending' : 'default', type: "submit" })] })) }) }));
|
|
18
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/widgets/LearnerDashboardHeader/MasqueradeBar/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,cAAc,EACd,IAAI,GACL,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,MAAM,EAAE,iBAAiB,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAEtD,MAAM,EACJ,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,GACd,GAAG,oBAAoB,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAEhD,IAAI,CAAC,aAAa,EAAE,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAEpC,OAAO,CACL,cAAK,SAAS,EAAC,sBAAsB,YACnC,KAAC,IAAI,IAAC,SAAS,EAAC,sBAAsB,YACnC,cAAc,CAAC,CAAC,CAAC,CAChB,8BACE,MAAC,SAAS,IAAC,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,uBAAuB,aACxD,KAAC,IAAI,IAAC,GAAG,EAAE,YAAY,GAAI,EAC1B,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,IACxB,EACZ,KAAC,IAAI,IACH,SAAS,EAAC,iBAAiB,EAC3B,SAAS,EAAE,KAAK,EAChB,OAAO,EAAE,qBAAqB,YAE7B,eAAe,GACX,IACN,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,MAAC,SAAS,IAAC,MAAM,EAAC,MAAM,EAAC,EAAE,EAAC,uBAAuB,EAAC,SAAS,EAAC,uBAAuB,aACnF,KAAC,IAAI,IAAC,GAAG,EAAE,YAAY,GAAI,EAC1B,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IACrB,EACZ,MAAC,SAAS,IAAC,SAAS,EAAE,oBAAoB,EAAE,SAAS,EAAC,uBAAuB,aAC3E,KAAC,WAAW,IACV,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,2BAA2B,EACrC,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,qBACvC,uBAAuB,GACvC,EACD,oBAAoB,IAAI,CACvB,KAAC,mBAAmB,IAAC,IAAI,EAAC,SAAS,EAAC,OAAO,EAAE,KAAK,YAC/C,aAAa,CAAC,sBAAsB,CAAC,GAClB,CACvB,IACS,EACZ,KAAC,cAAc,IACb,QAAQ,EAAE,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/widgets/LearnerDashboardHeader/MasqueradeBar/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,cAAc,EACd,IAAI,GACL,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,MAAM,EAAE,iBAAiB,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAEtD,MAAM,EACJ,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,GACd,GAAG,oBAAoB,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAEhD,IAAI,CAAC,aAAa,EAAE,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAEpC,OAAO,CACL,cAAK,SAAS,EAAC,sBAAsB,YACnC,KAAC,IAAI,IAAC,SAAS,EAAC,sBAAsB,YACnC,cAAc,CAAC,CAAC,CAAC,CAChB,8BACE,MAAC,SAAS,IAAC,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,uBAAuB,aACxD,KAAC,IAAI,IAAC,GAAG,EAAE,YAAY,GAAI,EAC1B,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,IACxB,EACZ,KAAC,IAAI,IACH,SAAS,EAAC,iBAAiB,EAC3B,SAAS,EAAE,KAAK,EAChB,OAAO,EAAE,qBAAqB,YAE7B,eAAe,GACX,IACN,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,MAAC,SAAS,IAAC,MAAM,EAAC,MAAM,EAAC,EAAE,EAAC,uBAAuB,EAAC,SAAS,EAAC,uBAAuB,aACnF,KAAC,IAAI,IAAC,GAAG,EAAE,YAAY,GAAI,EAC1B,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IACrB,EACZ,MAAC,SAAS,IAAC,SAAS,EAAE,oBAAoB,EAAE,SAAS,EAAC,uBAAuB,aAC3E,KAAC,WAAW,IACV,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,2BAA2B,EACrC,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,qBACvC,uBAAuB,GACvC,EACD,oBAAoB,IAAI,CACvB,KAAC,mBAAmB,IAAC,IAAI,EAAC,SAAS,EAAC,OAAO,EAAE,KAAK,YAC/C,aAAa,CAAC,sBAAsB,CAAC,GAClB,CACvB,IACS,EACZ,KAAC,cAAc,IACb,QAAQ,EAAE,CAAC,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,MAAM,CAAA,EAClC,OAAO,EAAC,OAAO,EACf,OAAO,EAAE,sBAAsB,CAAC,eAAe,CAAC,EAChD,MAAM,EAAE;4BACN,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC;yBAC9C,EACD,SAAS,EAAC,MAAM,EAChB,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACpD,IAAI,EAAC,QAAQ,GACb,IACD,CACJ,GACI,GACH,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import { useContext } from 'react';\nimport { SiteContext } from '@openedx/frontend-base';\n\nimport {\n Chip,\n Form,\n FormControl,\n FormControlFeedback,\n FormLabel,\n FormGroup,\n StatefulButton,\n Icon,\n} from '@openedx/paragon';\nimport { Close, PersonSearch } from '@openedx/paragon/icons';\n\nimport messages from './messages';\nimport { useMasqueradeBarData } from './hooks';\nimport './index.scss';\n\nexport const MasqueradeBar = () => {\n const { authenticatedUser } = useContext(SiteContext);\n\n const {\n canMasquerade,\n isMasquerading,\n isMasqueradingFailed,\n isMasqueradingPending,\n masqueradeInput,\n masqueradeErrorMessage,\n handleMasqueradeInputChange,\n handleClearMasquerade,\n handleMasqueradeSubmit,\n formatMessage,\n } = useMasqueradeBarData({ authenticatedUser });\n\n if (!canMasquerade) { return null; }\n\n return (\n <div className=\"w-100 shadow-sm px-2\">\n <Form className=\"masquerade-bar w-100\">\n {isMasquerading ? (\n <>\n <FormLabel inline=\"true\" className=\"masquerade-form-label\">\n <Icon src={PersonSearch} />\n {formatMessage(messages.ViewingAs)}\n </FormLabel>\n <Chip\n className=\"masquerade-chip\"\n iconAfter={Close}\n onClick={handleClearMasquerade}\n >\n {masqueradeInput}\n </Chip>\n </>\n ) : (\n <>\n <FormLabel inline=\"true\" id=\"masquerade-form-label\" className=\"masquerade-form-label\">\n <Icon src={PersonSearch} />\n {formatMessage(messages.ViewAs)}\n </FormLabel>\n <FormGroup isInvalid={isMasqueradingFailed} className=\"masquerade-form-input\">\n <FormControl\n value={masqueradeInput}\n onChange={handleMasqueradeInputChange}\n floatingLabel={formatMessage(messages.StudentNameInput)}\n aria-labelledby=\"masquerade-form-label\"\n />\n {isMasqueradingFailed && (\n <FormControlFeedback type=\"invalid\" hasIcon={false}>\n {formatMessage(masqueradeErrorMessage)}\n </FormControlFeedback>\n )}\n </FormGroup>\n <StatefulButton\n disabled={!masqueradeInput?.length}\n variant=\"brand\"\n onClick={handleMasqueradeSubmit(masqueradeInput)}\n labels={{\n default: formatMessage(messages.SubmitButton),\n }}\n className=\"mr-3\"\n state={isMasqueradingPending ? 'pending' : 'default'}\n type=\"submit\"\n />\n </>\n )}\n </Form>\n </div>\n );\n};\n\nexport default MasqueradeBar;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { useIntl } from '@openedx/frontend-base';
|
|
3
|
-
import { StrictDict } from 'utils';
|
|
3
|
+
import { StrictDict } from '../../utils';
|
|
4
4
|
import getLearnerHeaderMenu from './LearnerDashboardMenu';
|
|
5
5
|
export const state = StrictDict({
|
|
6
6
|
isOpen: (val) => React.useState(val), // eslint-disable-line
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/widgets/LearnerDashboardHeader/hooks.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/widgets/LearnerDashboardHeader/hooks.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAE1D,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC;IAC9B,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,sBAAsB;CAC7D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,EAC5C,eAAe,EAAE,iBAAiB,GACnC,EAAE,EAAE;IACH,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,OAAO,oBAAoB,CAAC,aAAa,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;AACjF,CAAC,CAAC;AAEF,eAAe;IACb,6BAA6B;CAC9B,CAAC","sourcesContent":["import React from 'react';\nimport { useIntl } from '@openedx/frontend-base';\nimport { StrictDict } from '@src/utils';\n\nimport getLearnerHeaderMenu from './LearnerDashboardMenu';\n\nexport const state = StrictDict({\n isOpen: (val) => React.useState(val), // eslint-disable-line\n});\n\nexport const useLearnerDashboardHeaderMenu = ({\n courseSearchUrl, authenticatedUser,\n}) => {\n const { formatMessage } = useIntl();\n return getLearnerHeaderMenu(formatMessage, courseSearchUrl, authenticatedUser);\n};\n\nexport default {\n useLearnerDashboardHeaderMenu,\n};\n"]}
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useIntl } from '@openedx/frontend-base';
|
|
3
3
|
import { Card, Hyperlink, Icon } from '@openedx/paragon';
|
|
4
4
|
import { ArrowForward } from '@openedx/paragon/icons';
|
|
5
|
-
import {
|
|
5
|
+
import { useInitializeLearnerHome } from '../../data/hooks';
|
|
6
6
|
import moreCoursesSVG from '../../assets/more-courses-sidewidget.svg';
|
|
7
7
|
import { baseAppUrl } from '../../data/services/lms/urls';
|
|
8
8
|
import { findCoursesWidgetClicked } from './track';
|
|
@@ -10,8 +10,10 @@ import messages from './messages';
|
|
|
10
10
|
import './index.scss';
|
|
11
11
|
export const arrowIcon = (_jsx(Icon, { className: "mx-1", src: ArrowForward }));
|
|
12
12
|
export const LookingForChallengeWidget = () => {
|
|
13
|
+
var _a;
|
|
13
14
|
const { formatMessage } = useIntl();
|
|
14
|
-
const {
|
|
15
|
+
const { data: learnerData } = useInitializeLearnerHome();
|
|
16
|
+
const courseSearchUrl = ((_a = learnerData === null || learnerData === void 0 ? void 0 : learnerData.platformSettings) === null || _a === void 0 ? void 0 : _a.courseSearchUrl) || '';
|
|
15
17
|
const hyperlinkDestination = baseAppUrl(courseSearchUrl) || '';
|
|
16
18
|
return (_jsxs(Card, { orientation: "horizontal", id: "looking-for-challenge-widget", children: [_jsx(Card.ImageCap, { src: moreCoursesSVG, srcAlt: "course side widget" }), _jsxs(Card.Body, { className: "m-auto pr-2", children: [_jsx("h4", { children: formatMessage(messages.lookingForChallengePrompt) }), _jsx("h5", { children: _jsx(Hyperlink, { variant: "brand", destination: hyperlinkDestination, onClick: findCoursesWidgetClicked(hyperlinkDestination), className: "d-flex align-items-center", children: formatMessage(messages.findCoursesButton, { arrow: arrowIcon }) }) })] })] }));
|
|
17
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/widgets/LookingForChallengeWidget/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/widgets/LookingForChallengeWidget/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,cAAc,MAAM,0CAA0C,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAC,IAAI,IAAC,SAAS,EAAC,MAAM,EAAC,GAAG,EAAE,YAAY,GAAI,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE;;IAC5C,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,wBAAwB,EAAE,CAAC;IACzD,MAAM,eAAe,GAAG,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,0CAAE,eAAe,KAAI,EAAE,CAAC;IAC7E,MAAM,oBAAoB,GAAG,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IAE/D,OAAO,CACL,MAAC,IAAI,IAAC,WAAW,EAAC,YAAY,EAAC,EAAE,EAAC,8BAA8B,aAC9D,KAAC,IAAI,CAAC,QAAQ,IACZ,GAAG,EAAE,cAAc,EACnB,MAAM,EAAC,oBAAoB,GAC3B,EACF,MAAC,IAAI,CAAC,IAAI,IAAC,SAAS,EAAC,aAAa,aAChC,uBACG,aAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC,GAC/C,EACL,uBACE,KAAC,SAAS,IACR,OAAO,EAAC,OAAO,EACf,WAAW,EAAE,oBAAoB,EACjC,OAAO,EAAE,wBAAwB,CAAC,oBAAoB,CAAC,EACvD,SAAS,EAAC,2BAA2B,YAEpC,aAAa,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,GACtD,GACT,IACK,IACP,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,yBAAyB,CAAC,SAAS,GAAG,EAAE,CAAC;AAEzC,eAAe,yBAAyB,CAAC","sourcesContent":["import { useIntl } from '@openedx/frontend-base';\nimport { Card, Hyperlink, Icon } from '@openedx/paragon';\nimport { ArrowForward } from '@openedx/paragon/icons';\n\nimport { useInitializeLearnerHome } from '@src/data/hooks';\nimport moreCoursesSVG from '../../assets/more-courses-sidewidget.svg';\nimport { baseAppUrl } from '../../data/services/lms/urls';\n\nimport { findCoursesWidgetClicked } from './track';\nimport messages from './messages';\nimport './index.scss';\n\nexport const arrowIcon = (<Icon className=\"mx-1\" src={ArrowForward} />);\n\nexport const LookingForChallengeWidget = () => {\n const { formatMessage } = useIntl();\n const { data: learnerData } = useInitializeLearnerHome();\n const courseSearchUrl = learnerData?.platformSettings?.courseSearchUrl || '';\n const hyperlinkDestination = baseAppUrl(courseSearchUrl) || '';\n\n return (\n <Card orientation=\"horizontal\" id=\"looking-for-challenge-widget\">\n <Card.ImageCap\n src={moreCoursesSVG}\n srcAlt=\"course side widget\"\n />\n <Card.Body className=\"m-auto pr-2\">\n <h4>\n {formatMessage(messages.lookingForChallengePrompt)}\n </h4>\n <h5>\n <Hyperlink\n variant=\"brand\"\n destination={hyperlinkDestination}\n onClick={findCoursesWidgetClicked(hyperlinkDestination)}\n className=\"d-flex align-items-center\"\n >\n {formatMessage(messages.findCoursesButton, { arrow: arrowIcon })}\n </Hyperlink>\n </h5>\n </Card.Body>\n </Card>\n );\n};\n\nLookingForChallengeWidget.propTypes = {};\n\nexport default LookingForChallengeWidget;\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export const linkNames: any;
|
|
2
|
-
export function findCoursesWidgetClicked(href: any): (e: any) =>
|
|
2
|
+
export function findCoursesWidgetClicked(href: any): (e: any) => number;
|
|
3
3
|
declare namespace _default {
|
|
4
4
|
export { linkNames };
|
|
5
5
|
export { findCoursesWidgetClicked };
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openedx/frontend-app-learner-dashboard",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.7",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
|
-
"url": "git+https://github.com/
|
|
7
|
+
"url": "git+https://github.com/openedx/frontend-app-learner-dashboard.git"
|
|
8
8
|
},
|
|
9
9
|
"exports": {
|
|
10
10
|
".": "./dist/index.js",
|
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
"files": [
|
|
14
14
|
"/dist"
|
|
15
15
|
],
|
|
16
|
+
"workspaces": [
|
|
17
|
+
"packages/*"
|
|
18
|
+
],
|
|
16
19
|
"browserslist": [
|
|
17
20
|
"extends @edx/browserslist-config"
|
|
18
21
|
],
|
|
@@ -22,13 +25,18 @@
|
|
|
22
25
|
],
|
|
23
26
|
"scripts": {
|
|
24
27
|
"build": "make build",
|
|
28
|
+
"build:packages": "make build-packages",
|
|
25
29
|
"clean": "make clean",
|
|
30
|
+
"clean:packages": "make clean-packages",
|
|
26
31
|
"dev": "PORT=1996 PUBLIC_PATH=/learner-dashboard openedx dev",
|
|
32
|
+
"dev:site": "make dev-site",
|
|
33
|
+
"dev:packages": "make dev-packages",
|
|
27
34
|
"i18n_extract": "openedx formatjs extract",
|
|
28
35
|
"lint": "openedx lint .",
|
|
29
36
|
"lint:fix": "openedx lint --fix .",
|
|
30
|
-
"prepack": "npm run build",
|
|
31
|
-
"test": "openedx test --coverage --passWithNoTests"
|
|
37
|
+
"prepack": "npm run clean && npm run build",
|
|
38
|
+
"test": "openedx test --coverage --passWithNoTests",
|
|
39
|
+
"watch:build": "nodemon --exec 'npm run build'"
|
|
32
40
|
},
|
|
33
41
|
"author": "Open edX",
|
|
34
42
|
"license": "AGPL-3.0",
|
|
@@ -46,45 +54,38 @@
|
|
|
46
54
|
"@fortawesome/free-brands-svg-icons": "^5.15.4",
|
|
47
55
|
"@fortawesome/free-solid-svg-icons": "^5.15.4",
|
|
48
56
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
49
|
-
"@redux-devtools/extension": "3.3.0",
|
|
50
|
-
"@reduxjs/toolkit": "^2.0.0",
|
|
51
57
|
"classnames": "^2.3.1",
|
|
52
|
-
"filesize": "^10.0.0",
|
|
53
58
|
"font-awesome": "4.7.0",
|
|
54
59
|
"lodash": "^4.17.21",
|
|
55
60
|
"moment": "^2.29.4",
|
|
56
61
|
"prop-types": "15.8.1",
|
|
57
|
-
"react-share": "^
|
|
58
|
-
"redux-logger": "3.0.6",
|
|
59
|
-
"redux-thunk": "2.4.2",
|
|
60
|
-
"reselect": "^4.0.0"
|
|
62
|
+
"react-share": "^5.2.2"
|
|
61
63
|
},
|
|
62
64
|
"devDependencies": {
|
|
63
65
|
"@edx/browserslist-config": "^1.5.0",
|
|
64
66
|
"@testing-library/jest-dom": "^6.6.3",
|
|
65
67
|
"@testing-library/react": "^16.3.0",
|
|
66
68
|
"@testing-library/user-event": "^14.6.1",
|
|
69
|
+
"@types/jest": "^29.5.14",
|
|
67
70
|
"identity-obj-proxy": "^3.0.0",
|
|
68
71
|
"jest": "^29.7.0",
|
|
69
72
|
"jest-environment-jsdom": "^29.7.0",
|
|
70
73
|
"jest-expect-message": "^1.1.3",
|
|
71
74
|
"jest-when": "^3.6.0",
|
|
75
|
+
"nodemon": "^3.1.14",
|
|
72
76
|
"react-dev-utils": "^12.0.0",
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"tsc-alias": "^1.8.16"
|
|
77
|
+
"tsc-alias": "^1.8.16",
|
|
78
|
+
"turbo": "^2.8.20"
|
|
76
79
|
},
|
|
77
80
|
"peerDependencies": {
|
|
78
|
-
"@openedx/frontend-base": "^1.0.0-alpha.
|
|
81
|
+
"@openedx/frontend-base": "^1.0.0-alpha || 0.0.0-dev",
|
|
79
82
|
"@openedx/paragon": "^23",
|
|
80
83
|
"@tanstack/react-query": "^5",
|
|
81
84
|
"@types/react": "^18",
|
|
82
85
|
"@types/react-dom": "^18",
|
|
83
86
|
"react": "^18",
|
|
84
87
|
"react-dom": "^18",
|
|
85
|
-
"react-redux": "^8",
|
|
86
88
|
"react-router": "^6",
|
|
87
|
-
"react-router-dom": "^6"
|
|
88
|
-
"redux": "^4"
|
|
89
|
+
"react-router-dom": "^6"
|
|
89
90
|
}
|
|
90
91
|
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { useToggle } from '@openedx/paragon';
|
|
3
|
-
import { StrictDict } from '../../utils';
|
|
4
|
-
import track from '../../tracking';
|
|
5
|
-
import { reduxHooks } from '../../hooks';
|
|
6
|
-
import * as module from './hooks';
|
|
7
|
-
export const state = StrictDict({
|
|
8
|
-
target: (val) => React.useState(val), // eslint-disable-line
|
|
9
|
-
});
|
|
10
|
-
/**
|
|
11
|
-
* Sets up a toggle for the modal as well as helper functions for handling changes to the form controls.
|
|
12
|
-
*
|
|
13
|
-
* @param {array} filters Currently active course filters
|
|
14
|
-
* @param {function} setSortBy Set function for sorting the course list
|
|
15
|
-
* @returns {object} data and functions for managing the CourseFilterControls component
|
|
16
|
-
*/
|
|
17
|
-
export const useCourseFilterControlsData = ({ filters, setSortBy, }) => {
|
|
18
|
-
const [isOpen, toggleOpen, toggleClose] = useToggle(false);
|
|
19
|
-
const [target, setTarget] = module.state.target(null);
|
|
20
|
-
const addFilter = reduxHooks.useAddFilter();
|
|
21
|
-
const removeFilter = reduxHooks.useRemoveFilter();
|
|
22
|
-
const handleFilterChange = ({ target: { checked, value } }) => {
|
|
23
|
-
const update = checked ? addFilter : removeFilter;
|
|
24
|
-
update(value);
|
|
25
|
-
};
|
|
26
|
-
const handleSortChange = ({ target: { value } }) => {
|
|
27
|
-
setSortBy(value);
|
|
28
|
-
};
|
|
29
|
-
const open = () => {
|
|
30
|
-
track.filter.filterClicked();
|
|
31
|
-
toggleOpen();
|
|
32
|
-
};
|
|
33
|
-
const close = () => {
|
|
34
|
-
track.filter.filterOptionSelected(filters);
|
|
35
|
-
toggleClose();
|
|
36
|
-
};
|
|
37
|
-
return {
|
|
38
|
-
isOpen,
|
|
39
|
-
open,
|
|
40
|
-
close,
|
|
41
|
-
target,
|
|
42
|
-
setTarget,
|
|
43
|
-
handleFilterChange,
|
|
44
|
-
handleSortChange,
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
export default useCourseFilterControlsData;
|
|
48
|
-
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/containers/CourseFilterControls/hooks.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,MAAM,gBAAgB,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAElC,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC;IAC9B,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,sBAAsB;CAC7D,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,EAC1C,OAAO,EACP,SAAS,GACV,EAAE,EAAE;IACH,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEtD,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;IAElD,MAAM,kBAAkB,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QACjD,SAAS,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7B,UAAU,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC3C,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO;QACL,MAAM;QACN,IAAI;QACJ,KAAK;QACL,MAAM;QACN,SAAS;QACT,kBAAkB;QAClB,gBAAgB;KACjB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,2BAA2B,CAAC","sourcesContent":["import React from 'react';\nimport { useToggle } from '@openedx/paragon';\n\nimport { StrictDict } from '../../utils';\nimport track from '../../tracking';\nimport { reduxHooks } from '../../hooks';\n\nimport * as module from './hooks';\n\nexport const state = StrictDict({\n target: (val) => React.useState(val), // eslint-disable-line\n});\n\n/**\n * Sets up a toggle for the modal as well as helper functions for handling changes to the form controls.\n *\n * @param {array} filters Currently active course filters\n * @param {function} setSortBy Set function for sorting the course list\n * @returns {object} data and functions for managing the CourseFilterControls component\n */\nexport const useCourseFilterControlsData = ({\n filters,\n setSortBy,\n}) => {\n const [isOpen, toggleOpen, toggleClose] = useToggle(false);\n const [target, setTarget] = module.state.target(null);\n\n const addFilter = reduxHooks.useAddFilter();\n const removeFilter = reduxHooks.useRemoveFilter();\n\n const handleFilterChange = ({ target: { checked, value } }) => {\n const update = checked ? addFilter : removeFilter;\n update(value);\n };\n const handleSortChange = ({ target: { value } }) => {\n setSortBy(value);\n };\n\n const open = () => {\n track.filter.filterClicked();\n toggleOpen();\n };\n\n const close = () => {\n track.filter.filterOptionSelected(filters);\n toggleClose();\n };\n\n return {\n isOpen,\n open,\n close,\n target,\n setTarget,\n handleFilterChange,\n handleSortChange,\n };\n};\n\nexport default useCourseFilterControlsData;\n"]}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export const state: any;
|
|
2
|
-
export function useCourseListData(): {
|
|
3
|
-
pageNumber: unknown;
|
|
4
|
-
numPages: any;
|
|
5
|
-
setPageNumber: (value: any) => any;
|
|
6
|
-
visibleList: any;
|
|
7
|
-
filterOptions: {
|
|
8
|
-
sortBy: any;
|
|
9
|
-
setSortBy: any;
|
|
10
|
-
filters: unknown;
|
|
11
|
-
handleRemoveFilter: (filter: any) => () => any;
|
|
12
|
-
};
|
|
13
|
-
showFilters: boolean;
|
|
14
|
-
};
|
|
15
|
-
export default module.useCourseListData;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ListPageSize, SortKeys } from '../../data/constants/app';
|
|
3
|
-
import { reduxHooks } from '../../hooks';
|
|
4
|
-
import { StrictDict } from '../../utils';
|
|
5
|
-
import * as module from './hooks';
|
|
6
|
-
export const state = StrictDict({
|
|
7
|
-
sortBy: (val) => React.useState(val), // eslint-disable-line
|
|
8
|
-
});
|
|
9
|
-
/**
|
|
10
|
-
* Filters are fetched from the store and used to generate a list of "visible" courses.
|
|
11
|
-
* Other values returned and used for the layout of the CoursesPanel component are:
|
|
12
|
-
* the current page number, the sorting method, and whether or not to enable filters and pagination.
|
|
13
|
-
*
|
|
14
|
-
* @returns data for the CoursesPanel component
|
|
15
|
-
*/
|
|
16
|
-
export const useCourseListData = () => {
|
|
17
|
-
const filters = reduxHooks.useFilters();
|
|
18
|
-
const removeFilter = reduxHooks.useRemoveFilter();
|
|
19
|
-
const pageNumber = reduxHooks.usePageNumber();
|
|
20
|
-
const setPageNumber = reduxHooks.useSetPageNumber();
|
|
21
|
-
const [sortBy, setSortBy] = module.state.sortBy(SortKeys.enrolled);
|
|
22
|
-
const querySearch = new URLSearchParams(window.location.search);
|
|
23
|
-
const disablePagination = querySearch.get('disable_pagination');
|
|
24
|
-
const { numPages, visibleList } = reduxHooks.useCurrentCourseList({
|
|
25
|
-
sortBy,
|
|
26
|
-
filters,
|
|
27
|
-
pageSize: Number(disablePagination) === 1 ? 0 : ListPageSize,
|
|
28
|
-
});
|
|
29
|
-
const handleRemoveFilter = (filter) => () => removeFilter(filter);
|
|
30
|
-
return {
|
|
31
|
-
pageNumber,
|
|
32
|
-
numPages,
|
|
33
|
-
setPageNumber,
|
|
34
|
-
visibleList,
|
|
35
|
-
filterOptions: {
|
|
36
|
-
sortBy,
|
|
37
|
-
setSortBy,
|
|
38
|
-
filters,
|
|
39
|
-
handleRemoveFilter,
|
|
40
|
-
},
|
|
41
|
-
showFilters: filters.length > 0,
|
|
42
|
-
};
|
|
43
|
-
};
|
|
44
|
-
export default useCourseListData;
|
|
45
|
-
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/containers/CoursesPanel/hooks.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAElC,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC;IAC9B,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,sBAAsB;CAC7D,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;IACxC,MAAM,YAAY,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;IAClD,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC;IAC9C,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC;IAEpD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEnE,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAEhE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,oBAAoB,CAAC;QAChE,MAAM;QACN,OAAO;QACP,QAAQ,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;KAC7D,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAElE,OAAO;QACL,UAAU;QACV,QAAQ;QACR,aAAa;QACb,WAAW;QACX,aAAa,EAAE;YACb,MAAM;YACN,SAAS;YACT,OAAO;YACP,kBAAkB;SACnB;QACD,WAAW,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC;KAChC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC","sourcesContent":["import React from 'react';\n\nimport { ListPageSize, SortKeys } from '../../data/constants/app';\nimport { reduxHooks } from '../../hooks';\nimport { StrictDict } from '../../utils';\n\nimport * as module from './hooks';\n\nexport const state = StrictDict({\n sortBy: (val) => React.useState(val), // eslint-disable-line\n});\n\n/**\n * Filters are fetched from the store and used to generate a list of \"visible\" courses.\n * Other values returned and used for the layout of the CoursesPanel component are:\n * the current page number, the sorting method, and whether or not to enable filters and pagination.\n *\n * @returns data for the CoursesPanel component\n */\nexport const useCourseListData = () => {\n const filters = reduxHooks.useFilters();\n const removeFilter = reduxHooks.useRemoveFilter();\n const pageNumber = reduxHooks.usePageNumber();\n const setPageNumber = reduxHooks.useSetPageNumber();\n\n const [sortBy, setSortBy] = module.state.sortBy(SortKeys.enrolled);\n\n const querySearch = new URLSearchParams(window.location.search);\n const disablePagination = querySearch.get('disable_pagination');\n\n const { numPages, visibleList } = reduxHooks.useCurrentCourseList({\n sortBy,\n filters,\n pageSize: Number(disablePagination) === 1 ? 0 : ListPageSize,\n });\n\n const handleRemoveFilter = (filter) => () => removeFilter(filter);\n\n return {\n pageNumber,\n numPages,\n setPageNumber,\n visibleList,\n filterOptions: {\n sortBy,\n setSortBy,\n filters,\n handleRemoveFilter,\n },\n showFilters: filters.length > 0,\n };\n};\n\nexport default useCourseListData;\n"]}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { reduxHooks } from 'hooks';
|
|
2
|
-
export const useProgramData = ({ cardId, }) => ({
|
|
3
|
-
courseTitle: reduxHooks.useCardCourseData(cardId).title,
|
|
4
|
-
relatedPrograms: reduxHooks.useCardRelatedProgramsData(cardId).list,
|
|
5
|
-
});
|
|
6
|
-
export default useProgramData;
|
|
7
|
-
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/containers/RelatedProgramsModal/hooks.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,MAAM,GACP,EAAE,EAAE,CAAC,CAAC;IACL,WAAW,EAAE,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK;IACvD,eAAe,EAAE,UAAU,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,IAAI;CACpE,CAAC,CAAC;AAEH,eAAe,cAAc,CAAC","sourcesContent":["import { reduxHooks } from 'hooks';\n\nexport const useProgramData = ({\n cardId,\n}) => ({\n courseTitle: reduxHooks.useCardCourseData(cardId).title,\n relatedPrograms: reduxHooks.useCardRelatedProgramsData(cardId).list,\n});\n\nexport default useProgramData;\n"]}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export default MasqueradeUserContext;
|
|
2
|
-
declare const MasqueradeUserContext: import("react").Context<{
|
|
3
|
-
masqueradeUser: undefined;
|
|
4
|
-
masqueradeIsSuccess: undefined;
|
|
5
|
-
masqueradeIsPending: undefined;
|
|
6
|
-
masqueradeIsError: undefined;
|
|
7
|
-
masqueradeError: undefined;
|
|
8
|
-
setMasqueradeUser: undefined;
|
|
9
|
-
setMasqueradeIsSuccess: undefined;
|
|
10
|
-
setMasqueradeIsPending: undefined;
|
|
11
|
-
setMasqueradeIsError: undefined;
|
|
12
|
-
setMasqueradeError: undefined;
|
|
13
|
-
}>;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { createContext } from 'react';
|
|
2
|
-
const MasqueradeUserContext = createContext({
|
|
3
|
-
masqueradeUser: undefined,
|
|
4
|
-
masqueradeIsSuccess: undefined,
|
|
5
|
-
masqueradeIsPending: undefined,
|
|
6
|
-
masqueradeIsError: undefined,
|
|
7
|
-
masqueradeError: undefined,
|
|
8
|
-
setMasqueradeUser: undefined,
|
|
9
|
-
setMasqueradeIsSuccess: undefined,
|
|
10
|
-
setMasqueradeIsPending: undefined,
|
|
11
|
-
setMasqueradeIsError: undefined,
|
|
12
|
-
setMasqueradeError: undefined,
|
|
13
|
-
});
|
|
14
|
-
export default MasqueradeUserContext;
|
|
15
|
-
//# sourceMappingURL=MasqueradeUserContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MasqueradeUserContext.js","sourceRoot":"","sources":["../../../src/data/contexts/MasqueradeUserContext.jsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,MAAM,qBAAqB,GAAG,aAAa,CAAC;IAC1C,cAAc,EAAE,SAAS;IACzB,mBAAmB,EAAE,SAAS;IAC9B,mBAAmB,EAAE,SAAS;IAC9B,iBAAiB,EAAE,SAAS;IAC5B,eAAe,EAAE,SAAS;IAC1B,iBAAiB,EAAE,SAAS;IAC5B,sBAAsB,EAAE,SAAS;IACjC,sBAAsB,EAAE,SAAS;IACjC,oBAAoB,EAAE,SAAS;IAC/B,kBAAkB,EAAE,SAAS;CAC9B,CAAC,CAAC;AAEH,eAAe,qBAAqB,CAAC","sourcesContent":["import { createContext } from 'react';\n\nconst MasqueradeUserContext = createContext({\n masqueradeUser: undefined,\n masqueradeIsSuccess: undefined,\n masqueradeIsPending: undefined,\n masqueradeIsError: undefined,\n masqueradeError: undefined,\n setMasqueradeUser: undefined,\n setMasqueradeIsSuccess: undefined,\n setMasqueradeIsPending: undefined,\n setMasqueradeIsError: undefined,\n setMasqueradeError: undefined,\n});\n\nexport default MasqueradeUserContext;\n"]}
|