@edx/frontend-app-subscription-learner-dashboard 1.0.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.
- package/LICENSE +661 -0
- package/README.rst +84 -0
- package/dist/Main.d.ts +2 -0
- package/dist/Main.js +9 -0
- package/dist/Main.js.map +1 -0
- package/dist/app.d.ts +3 -0
- package/dist/app.js +20 -0
- package/dist/app.js.map +1 -0
- package/dist/assets/empty-course.svg +49 -0
- package/dist/assets/more-courses-sidewidget.svg +52 -0
- package/dist/assets/verified-ribbon.png +0 -0
- package/dist/components/Banner.d.ts +24 -0
- package/dist/components/Banner.js +19 -0
- package/dist/components/Banner.js.map +1 -0
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -0
- package/dist/containers/CourseCard/CourseCard.scss +73 -0
- package/dist/containers/CourseCard/components/CourseCardActions/ActionButton/hooks.d.ts +2 -0
- package/dist/containers/CourseCard/components/CourseCardActions/ActionButton/hooks.js +7 -0
- package/dist/containers/CourseCard/components/CourseCardActions/ActionButton/hooks.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardActions/ActionButton/index.d.ts +2 -0
- package/dist/containers/CourseCard/components/CourseCardActions/ActionButton/index.js +10 -0
- package/dist/containers/CourseCard/components/CourseCardActions/ActionButton/index.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardActions/BeginCourseButton.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardActions/BeginCourseButton.js +31 -0
- package/dist/containers/CourseCard/components/CourseCardActions/BeginCourseButton.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardActions/ResumeButton.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardActions/ResumeButton.js +32 -0
- package/dist/containers/CourseCard/components/CourseCardActions/ResumeButton.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardActions/SelectSessionButton.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardActions/SelectSessionButton.js +19 -0
- package/dist/containers/CourseCard/components/CourseCardActions/SelectSessionButton.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardActions/ViewCourseButton.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardActions/ViewCourseButton.js +23 -0
- package/dist/containers/CourseCard/components/CourseCardActions/ViewCourseButton.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardActions/index.d.ts +12 -0
- package/dist/containers/CourseCard/components/CourseCardActions/index.js +30 -0
- package/dist/containers/CourseCard/components/CourseCardActions/index.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardActions/messages.d.ts +48 -0
- package/dist/containers/CourseCard/components/CourseCardActions/messages.js +35 -0
- package/dist/containers/CourseCard/components/CourseCardActions/messages.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CertificateBanner.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CertificateBanner.js +63 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CertificateBanner.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CourseBanner.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CourseBanner.js +36 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CourseBanner.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/hooks.d.ts +17 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/hooks.js +58 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/hooks.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/index.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/index.js +23 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/index.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/messages.d.ts +16 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/messages.js +15 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/messages.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/ApprovedContent.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/ApprovedContent.js +30 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/ApprovedContent.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/EligibleContent.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/EligibleContent.js +26 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/EligibleContent.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/MustRequestContent.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/MustRequestContent.js +27 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/MustRequestContent.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/PendingContent.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/PendingContent.js +23 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/PendingContent.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/RejectedContent.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/RejectedContent.js +22 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/RejectedContent.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/CreditContent.d.ts +30 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/CreditContent.js +27 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/CreditContent.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/CreditRequestForm/hooks.d.ts +5 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/CreditRequestForm/hooks.js +12 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/CreditRequestForm/hooks.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/CreditRequestForm/index.d.ts +19 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/CreditRequestForm/index.js +24 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/CreditRequestForm/index.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/ProviderLink.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/ProviderLink.js +16 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/components/ProviderLink.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/hooks.d.ts +9 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/hooks.js +31 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/hooks.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/messages.d.ts +88 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/messages.js +60 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/messages.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/EntitlementBanner.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/EntitlementBanner.js +42 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/EntitlementBanner.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/RedeemBanner.d.ts +2 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/RedeemBanner.js +10 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/RedeemBanner.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/ProgramsList.d.ts +13 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/ProgramsList.js +12 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/ProgramsList.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/index.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/index.js +23 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/index.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/messages.d.ts +40 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/messages.js +30 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/RelatedProgramsBanner/messages.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/index.d.ts +12 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/index.js +17 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/index.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/messages.d.ts +168 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/messages.js +110 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/messages.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardDetails/hooks.d.ts +16 -0
- package/dist/containers/CourseCard/components/CourseCardDetails/hooks.js +51 -0
- package/dist/containers/CourseCard/components/CourseCardDetails/hooks.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardDetails/index.d.ts +11 -0
- package/dist/containers/CourseCard/components/CourseCardDetails/index.js +16 -0
- package/dist/containers/CourseCard/components/CourseCardDetails/index.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardDetails/index.scss +3 -0
- package/dist/containers/CourseCard/components/CourseCardDetails/messages.d.ts +56 -0
- package/dist/containers/CourseCard/components/CourseCardDetails/messages.js +40 -0
- package/dist/containers/CourseCard/components/CourseCardDetails/messages.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardImage.d.ts +13 -0
- package/dist/containers/CourseCard/components/CourseCardImage.js +35 -0
- package/dist/containers/CourseCard/components/CourseCardImage.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardMenu/SocialShareMenu.d.ts +17 -0
- package/dist/containers/CourseCard/components/CourseCardMenu/SocialShareMenu.js +43 -0
- package/dist/containers/CourseCard/components/CourseCardMenu/SocialShareMenu.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardMenu/hooks.d.ts +26 -0
- package/dist/containers/CourseCard/components/CourseCardMenu/hooks.js +67 -0
- package/dist/containers/CourseCard/components/CourseCardMenu/hooks.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardMenu/index.d.ts +13 -0
- package/dist/containers/CourseCard/components/CourseCardMenu/index.js +34 -0
- package/dist/containers/CourseCard/components/CourseCardMenu/index.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardMenu/messages.d.ts +48 -0
- package/dist/containers/CourseCard/components/CourseCardMenu/messages.js +35 -0
- package/dist/containers/CourseCard/components/CourseCardMenu/messages.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardTitle.d.ts +11 -0
- package/dist/containers/CourseCard/components/CourseCardTitle.js +22 -0
- package/dist/containers/CourseCard/components/CourseCardTitle.js.map +1 -0
- package/dist/containers/CourseCard/components/RelatedProgramsBadge/hooks.d.ts +11 -0
- package/dist/containers/CourseCard/components/RelatedProgramsBadge/hooks.js +29 -0
- package/dist/containers/CourseCard/components/RelatedProgramsBadge/hooks.js.map +1 -0
- package/dist/containers/CourseCard/components/RelatedProgramsBadge/index.d.ts +10 -0
- package/dist/containers/CourseCard/components/RelatedProgramsBadge/index.js +20 -0
- package/dist/containers/CourseCard/components/RelatedProgramsBadge/index.js.map +1 -0
- package/dist/containers/CourseCard/components/RelatedProgramsBadge/messages.d.ts +16 -0
- package/dist/containers/CourseCard/components/RelatedProgramsBadge/messages.js +14 -0
- package/dist/containers/CourseCard/components/RelatedProgramsBadge/messages.js.map +1 -0
- package/dist/containers/CourseCard/components/hooks.d.ts +8 -0
- package/dist/containers/CourseCard/components/hooks.js +25 -0
- package/dist/containers/CourseCard/components/hooks.js.map +1 -0
- package/dist/containers/CourseCard/hooks.d.ts +1 -0
- package/dist/containers/CourseCard/hooks.js +6 -0
- package/dist/containers/CourseCard/hooks.js.map +1 -0
- package/dist/containers/CourseCard/index.d.ts +12 -0
- package/dist/containers/CourseCard/index.js +21 -0
- package/dist/containers/CourseCard/index.js.map +1 -0
- package/dist/containers/CourseCard/messages.d.ts +32 -0
- package/dist/containers/CourseCard/messages.js +25 -0
- package/dist/containers/CourseCard/messages.js.map +1 -0
- package/dist/containers/CourseFilterControls/ActiveCourseFilters.d.ts +2 -0
- package/dist/containers/CourseFilterControls/ActiveCourseFilters.js +15 -0
- package/dist/containers/CourseFilterControls/ActiveCourseFilters.js.map +1 -0
- package/dist/containers/CourseFilterControls/CourseFilterControls.d.ts +2 -0
- package/dist/containers/CourseFilterControls/CourseFilterControls.js +41 -0
- package/dist/containers/CourseFilterControls/CourseFilterControls.js.map +1 -0
- package/dist/containers/CourseFilterControls/components/Checkbox.d.ts +10 -0
- package/dist/containers/CourseFilterControls/components/Checkbox.js +15 -0
- package/dist/containers/CourseFilterControls/components/Checkbox.js.map +1 -0
- package/dist/containers/CourseFilterControls/components/FilterForm.d.ts +13 -0
- package/dist/containers/CourseFilterControls/components/FilterForm.js +25 -0
- package/dist/containers/CourseFilterControls/components/FilterForm.js.map +1 -0
- package/dist/containers/CourseFilterControls/components/SortForm.d.ts +12 -0
- package/dist/containers/CourseFilterControls/components/SortForm.js +17 -0
- package/dist/containers/CourseFilterControls/components/SortForm.js.map +1 -0
- package/dist/containers/CourseFilterControls/index.d.ts +4 -0
- package/dist/containers/CourseFilterControls/index.js +5 -0
- package/dist/containers/CourseFilterControls/index.js.map +1 -0
- package/dist/containers/CourseFilterControls/index.scss +29 -0
- package/dist/containers/CourseFilterControls/messages.d.ts +88 -0
- package/dist/containers/CourseFilterControls/messages.js +60 -0
- package/dist/containers/CourseFilterControls/messages.js.map +1 -0
- package/dist/containers/CoursesPanel/CourseList/hooks.d.ts +2 -0
- package/dist/containers/CoursesPanel/CourseList/hooks.js +7 -0
- package/dist/containers/CoursesPanel/CourseList/hooks.js.map +1 -0
- package/dist/containers/CoursesPanel/CourseList/index.d.ts +17 -0
- package/dist/containers/CoursesPanel/CourseList/index.js +22 -0
- package/dist/containers/CoursesPanel/CourseList/index.js.map +1 -0
- package/dist/containers/CoursesPanel/NoCoursesView/index.d.ts +2 -0
- package/dist/containers/CoursesPanel/NoCoursesView/index.js +17 -0
- package/dist/containers/CoursesPanel/NoCoursesView/index.js.map +1 -0
- package/dist/containers/CoursesPanel/NoCoursesView/messages.d.ts +16 -0
- package/dist/containers/CoursesPanel/NoCoursesView/messages.js +15 -0
- package/dist/containers/CoursesPanel/NoCoursesView/messages.js.map +1 -0
- package/dist/containers/CoursesPanel/index.d.ts +5 -0
- package/dist/containers/CoursesPanel/index.js +48 -0
- package/dist/containers/CoursesPanel/index.js.map +1 -0
- package/dist/containers/CoursesPanel/index.scss +42 -0
- package/dist/containers/CoursesPanel/messages.d.ts +16 -0
- package/dist/containers/CoursesPanel/messages.js +15 -0
- package/dist/containers/CoursesPanel/messages.js.map +1 -0
- package/dist/containers/Dashboard/DashboardLayout.d.ts +58 -0
- package/dist/containers/Dashboard/DashboardLayout.js +34 -0
- package/dist/containers/Dashboard/DashboardLayout.js.map +1 -0
- package/dist/containers/Dashboard/DashboardTabs.d.ts +2 -0
- package/dist/containers/Dashboard/DashboardTabs.js +34 -0
- package/dist/containers/Dashboard/DashboardTabs.js.map +1 -0
- package/dist/containers/Dashboard/DashboardTitle.d.ts +2 -0
- package/dist/containers/Dashboard/DashboardTitle.js +9 -0
- package/dist/containers/Dashboard/DashboardTitle.js.map +1 -0
- package/dist/containers/Dashboard/LoadingView.d.ts +2 -0
- package/dist/containers/Dashboard/LoadingView.js +10 -0
- package/dist/containers/Dashboard/LoadingView.js.map +1 -0
- package/dist/containers/Dashboard/hooks.d.ts +15 -0
- package/dist/containers/Dashboard/hooks.js +30 -0
- package/dist/containers/Dashboard/hooks.js.map +1 -0
- package/dist/containers/Dashboard/index.d.ts +2 -0
- package/dist/containers/Dashboard/index.js +25 -0
- package/dist/containers/Dashboard/index.js.map +1 -0
- package/dist/containers/Dashboard/index.scss +29 -0
- package/dist/containers/Dashboard/messages.d.ts +13 -0
- package/dist/containers/Dashboard/messages.js +15 -0
- package/dist/containers/Dashboard/messages.js.map +1 -0
- package/dist/containers/EmailSettingsModal/hooks.d.ts +10 -0
- package/dist/containers/EmailSettingsModal/hooks.js +27 -0
- package/dist/containers/EmailSettingsModal/hooks.js.map +1 -0
- package/dist/containers/EmailSettingsModal/index.d.ts +14 -0
- package/dist/containers/EmailSettingsModal/index.js +20 -0
- package/dist/containers/EmailSettingsModal/index.js.map +1 -0
- package/dist/containers/EmailSettingsModal/messages.d.ts +49 -0
- package/dist/containers/EmailSettingsModal/messages.js +35 -0
- package/dist/containers/EmailSettingsModal/messages.js.map +1 -0
- package/dist/containers/ProductCard/index.d.ts +4 -0
- package/dist/containers/ProductCard/index.js +8 -0
- package/dist/containers/ProductCard/index.js.map +1 -0
- package/dist/containers/ProductCard/index.scss +6 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgress.d.ts +4 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgress.js +54 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgress.js.map +1 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressHeader.d.ts +4 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressHeader.js +13 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressHeader.js.map +1 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressInfo.d.ts +4 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressInfo.js +12 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressInfo.js.map +1 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressProvider.d.ts +10 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressProvider.js +30 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressProvider.js.map +1 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/UpgradeButton/UpgradeAllButton.d.ts +4 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/UpgradeButton/UpgradeAllButton.js +29 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/UpgradeButton/UpgradeAllButton.js.map +1 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/UpgradeButton/index.d.ts +2 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/UpgradeButton/index.js +3 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/UpgradeButton/index.js.map +1 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/UpgradeButton/index.scss +7 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/UpgradeButton/messages.d.ts +8 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/UpgradeButton/messages.js +10 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/UpgradeButton/messages.js.map +1 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/index.d.ts +2 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/index.js +6 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/index.js.map +1 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/index.scss +20 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/messages.d.ts +33 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/messages.js +35 -0
- package/dist/containers/ProgramDashboard/ProgramProgress/messages.js.map +1 -0
- package/dist/containers/ProgramDashboard/assets/micromasters-icon.svg +17 -0
- package/dist/containers/ProgramDashboard/assets/professional-certificate-program-details.svg +1 -0
- package/dist/containers/ProgramDashboard/assets/rwth-aachen-university.svg +47 -0
- package/dist/containers/ProgramDashboard/assets/xseries-program-details.svg +1 -0
- package/dist/containers/ProgramDashboard/data/api.d.ts +1 -0
- package/dist/containers/ProgramDashboard/data/api.js +18 -0
- package/dist/containers/ProgramDashboard/data/api.js.map +1 -0
- package/dist/containers/ProgramDashboard/data/constants.d.ts +8 -0
- package/dist/containers/ProgramDashboard/data/constants.js +9 -0
- package/dist/containers/ProgramDashboard/data/constants.js.map +1 -0
- package/dist/containers/ProgramDashboard/data/util.d.ts +1 -0
- package/dist/containers/ProgramDashboard/data/util.js +17 -0
- package/dist/containers/ProgramDashboard/data/util.js.map +1 -0
- package/dist/containers/ProgramDashboard/index.d.ts +2 -0
- package/dist/containers/ProgramDashboard/index.js +3 -0
- package/dist/containers/ProgramDashboard/index.js.map +1 -0
- package/dist/containers/RecommendedCourse/index.d.ts +3 -0
- package/dist/containers/RecommendedCourse/index.js +16 -0
- package/dist/containers/RecommendedCourse/index.js.map +1 -0
- package/dist/containers/RecommendedCourse/index.scss +21 -0
- package/dist/containers/RecommendedCourse/messages.d.ts +8 -0
- package/dist/containers/RecommendedCourse/messages.js +10 -0
- package/dist/containers/RecommendedCourse/messages.js.map +1 -0
- package/dist/containers/RelatedProgramsModal/components/ProgramCard.d.ts +19 -0
- package/dist/containers/RelatedProgramsModal/components/ProgramCard.js +29 -0
- package/dist/containers/RelatedProgramsModal/components/ProgramCard.js.map +1 -0
- package/dist/containers/RelatedProgramsModal/components/index.scss +23 -0
- package/dist/containers/RelatedProgramsModal/components/messages.d.ts +32 -0
- package/dist/containers/RelatedProgramsModal/components/messages.js +24 -0
- package/dist/containers/RelatedProgramsModal/components/messages.js.map +1 -0
- package/dist/containers/RelatedProgramsModal/index.d.ts +14 -0
- package/dist/containers/RelatedProgramsModal/index.js +25 -0
- package/dist/containers/RelatedProgramsModal/index.js.map +1 -0
- package/dist/containers/RelatedProgramsModal/index.scss +5 -0
- package/dist/containers/RelatedProgramsModal/messages.d.ts +17 -0
- package/dist/containers/RelatedProgramsModal/messages.js +15 -0
- package/dist/containers/RelatedProgramsModal/messages.js.map +1 -0
- package/dist/containers/SelectSessionModal/constants.d.ts +1 -0
- package/dist/containers/SelectSessionModal/constants.js +2 -0
- package/dist/containers/SelectSessionModal/constants.js.map +1 -0
- package/dist/containers/SelectSessionModal/hooks.d.ts +17 -0
- package/dist/containers/SelectSessionModal/hooks.js +76 -0
- package/dist/containers/SelectSessionModal/hooks.js.map +1 -0
- package/dist/containers/SelectSessionModal/index.d.ts +2 -0
- package/dist/containers/SelectSessionModal/index.js +17 -0
- package/dist/containers/SelectSessionModal/index.js.map +1 -0
- package/dist/containers/SelectSessionModal/messages.d.ts +56 -0
- package/dist/containers/SelectSessionModal/messages.js +40 -0
- package/dist/containers/SelectSessionModal/messages.js.map +1 -0
- package/dist/containers/SubscriptionBanner/components/SubscriptionBanner.d.ts +2 -0
- package/dist/containers/SubscriptionBanner/components/SubscriptionBanner.js +72 -0
- package/dist/containers/SubscriptionBanner/components/SubscriptionBanner.js.map +1 -0
- package/dist/containers/SubscriptionBanner/index.d.ts +1 -0
- package/dist/containers/SubscriptionBanner/index.js +2 -0
- package/dist/containers/SubscriptionBanner/index.js.map +1 -0
- package/dist/containers/SubscriptionBanner/messages.d.ts +38 -0
- package/dist/containers/SubscriptionBanner/messages.js +40 -0
- package/dist/containers/SubscriptionBanner/messages.js.map +1 -0
- package/dist/containers/UnenrollConfirmModal/components/ConfirmPane.d.ts +14 -0
- package/dist/containers/UnenrollConfirmModal/components/ConfirmPane.js +22 -0
- package/dist/containers/UnenrollConfirmModal/components/ConfirmPane.js.map +1 -0
- package/dist/containers/UnenrollConfirmModal/components/FinishedPane.d.ts +12 -0
- package/dist/containers/UnenrollConfirmModal/components/FinishedPane.js +21 -0
- package/dist/containers/UnenrollConfirmModal/components/FinishedPane.js.map +1 -0
- package/dist/containers/UnenrollConfirmModal/components/ReasonPane.d.ts +22 -0
- package/dist/containers/UnenrollConfirmModal/components/ReasonPane.js +28 -0
- package/dist/containers/UnenrollConfirmModal/components/ReasonPane.js.map +1 -0
- package/dist/containers/UnenrollConfirmModal/components/messages.d.ts +80 -0
- package/dist/containers/UnenrollConfirmModal/components/messages.js +55 -0
- package/dist/containers/UnenrollConfirmModal/components/messages.js.map +1 -0
- package/dist/containers/UnenrollConfirmModal/constants.d.ts +65 -0
- package/dist/containers/UnenrollConfirmModal/constants.js +89 -0
- package/dist/containers/UnenrollConfirmModal/constants.js.map +1 -0
- package/dist/containers/UnenrollConfirmModal/hooks/index.d.ts +25 -0
- package/dist/containers/UnenrollConfirmModal/hooks/index.js +53 -0
- package/dist/containers/UnenrollConfirmModal/hooks/index.js.map +1 -0
- package/dist/containers/UnenrollConfirmModal/hooks/reasons.d.ts +15 -0
- package/dist/containers/UnenrollConfirmModal/hooks/reasons.js +53 -0
- package/dist/containers/UnenrollConfirmModal/hooks/reasons.js.map +1 -0
- package/dist/containers/UnenrollConfirmModal/index.d.ts +14 -0
- package/dist/containers/UnenrollConfirmModal/index.js +22 -0
- package/dist/containers/UnenrollConfirmModal/index.js.map +1 -0
- package/dist/data/constants/app.d.ts +5 -0
- package/dist/data/constants/app.js +17 -0
- package/dist/data/constants/app.js.map +1 -0
- package/dist/data/constants/course.d.ts +11 -0
- package/dist/data/constants/course.js +17 -0
- package/dist/data/constants/course.js.map +1 -0
- package/dist/data/constants/credit.d.ts +5 -0
- package/dist/data/constants/credit.js +8 -0
- package/dist/data/constants/credit.js.map +1 -0
- package/dist/data/constants/files.d.ts +4 -0
- package/dist/data/constants/files.js +18 -0
- package/dist/data/constants/files.js.map +1 -0
- package/dist/data/constants/htmlKeys.d.ts +7 -0
- package/dist/data/constants/htmlKeys.js +19 -0
- package/dist/data/constants/htmlKeys.js.map +1 -0
- package/dist/data/constants/requests.d.ts +4 -0
- package/dist/data/constants/requests.js +31 -0
- package/dist/data/constants/requests.js.map +1 -0
- 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 +16 -0
- package/dist/data/contexts/GlobalDataContext.js +14 -0
- package/dist/data/contexts/GlobalDataContext.js.map +1 -0
- package/dist/data/contexts/GlobalDataProvider.d.ts +3 -0
- package/dist/data/contexts/GlobalDataProvider.js +15 -0
- package/dist/data/contexts/GlobalDataProvider.js.map +1 -0
- 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 +32 -0
- package/dist/data/services/lms/api.js +80 -0
- package/dist/data/services/lms/api.js.map +1 -0
- package/dist/data/services/lms/constants.d.ts +8 -0
- package/dist/data/services/lms/constants.js +16 -0
- package/dist/data/services/lms/constants.js.map +1 -0
- package/dist/data/services/lms/index.d.ts +2 -0
- package/dist/data/services/lms/index.js +8 -0
- package/dist/data/services/lms/index.js.map +1 -0
- package/dist/data/services/lms/urls.d.ts +8 -0
- package/dist/data/services/lms/urls.js +37 -0
- package/dist/data/services/lms/urls.js.map +1 -0
- package/dist/data/services/lms/utils.d.ts +6 -0
- package/dist/data/services/lms/utils.js +56 -0
- package/dist/data/services/lms/utils.js.map +1 -0
- package/dist/data/services/segment/utils.d.ts +3 -0
- package/dist/data/services/segment/utils.js +12 -0
- package/dist/data/services/segment/utils.js.map +1 -0
- package/dist/data/services/subs/api.d.ts +10 -0
- package/dist/data/services/subs/api.js +66 -0
- package/dist/data/services/subs/api.js.map +1 -0
- package/dist/data/services/subs/index.d.ts +1 -0
- package/dist/data/services/subs/index.js +2 -0
- package/dist/data/services/subs/index.js.map +1 -0
- package/dist/hooks/index.d.ts +7 -0
- package/dist/hooks/index.js +11 -0
- package/dist/hooks/index.js.map +1 -0
- 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/hooks/useRecommendedCourseData.d.ts +15 -0
- package/dist/hooks/useRecommendedCourseData.js +6 -0
- package/dist/hooks/useRecommendedCourseData.js.map +1 -0
- package/dist/hooks/utils.d.ts +7 -0
- package/dist/hooks/utils.js +14 -0
- package/dist/hooks/utils.js.map +1 -0
- package/dist/i18n/index.d.ts +25 -0
- package/dist/i18n/index.js +26 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/messages.d.ts +13 -0
- package/dist/messages.js +15 -0
- package/dist/messages.js.map +1 -0
- package/dist/providers.d.ts +3 -0
- package/dist/providers.js +8 -0
- package/dist/providers.js.map +1 -0
- package/dist/routes.d.ts +13 -0
- package/dist/routes.js +42 -0
- package/dist/routes.js.map +1 -0
- package/dist/segment.d.ts +1 -0
- package/dist/segment.js +74 -0
- package/dist/segment.js.map +1 -0
- package/dist/slots/CourseBannerSlot/index.d.ts +10 -0
- package/dist/slots/CourseBannerSlot/index.js +10 -0
- package/dist/slots/CourseBannerSlot/index.js.map +1 -0
- package/dist/slots/CourseCardActionSlot/index.d.ts +10 -0
- package/dist/slots/CourseCardActionSlot/index.js +9 -0
- package/dist/slots/CourseCardActionSlot/index.js.map +1 -0
- package/dist/slots/CourseListSlot/index.d.ts +10 -0
- package/dist/slots/CourseListSlot/index.js +9 -0
- package/dist/slots/CourseListSlot/index.js.map +1 -0
- package/dist/slots/DashboardModalSlot/index.d.ts +2 -0
- package/dist/slots/DashboardModalSlot/index.js +5 -0
- package/dist/slots/DashboardModalSlot/index.js.map +1 -0
- package/dist/slots/NoCoursesViewSlot/index.d.ts +2 -0
- package/dist/slots/NoCoursesViewSlot/index.js +6 -0
- package/dist/slots/NoCoursesViewSlot/index.js.map +1 -0
- package/dist/slots/WidgetSidebarSlot/index.d.ts +2 -0
- package/dist/slots/WidgetSidebarSlot/index.js +6 -0
- package/dist/slots/WidgetSidebarSlot/index.js.map +1 -0
- package/dist/slots.d.ts +3 -0
- package/dist/slots.js +6 -0
- package/dist/slots.js.map +1 -0
- package/dist/style.scss +36 -0
- package/dist/testUtils.d.ts +86 -0
- package/dist/testUtils.js +183 -0
- package/dist/testUtils.js.map +1 -0
- package/dist/tracking/constants.d.ts +6 -0
- package/dist/tracking/constants.js +45 -0
- package/dist/tracking/constants.js.map +1 -0
- package/dist/tracking/index.d.ts +17 -0
- package/dist/tracking/index.js +17 -0
- package/dist/tracking/index.js.map +1 -0
- package/dist/tracking/trackers/course.d.ts +13 -0
- package/dist/tracking/trackers/course.js +31 -0
- package/dist/tracking/trackers/course.js.map +1 -0
- package/dist/tracking/trackers/credit.d.ts +5 -0
- package/dist/tracking/trackers/credit.js +16 -0
- package/dist/tracking/trackers/credit.js.map +1 -0
- package/dist/tracking/trackers/engagement.d.ts +9 -0
- package/dist/tracking/trackers/engagement.js +18 -0
- package/dist/tracking/trackers/engagement.js.map +1 -0
- package/dist/tracking/trackers/entitlements.d.ts +9 -0
- package/dist/tracking/trackers/entitlements.js +27 -0
- package/dist/tracking/trackers/entitlements.js.map +1 -0
- package/dist/tracking/trackers/filter.d.ts +7 -0
- package/dist/tracking/trackers/filter.js +13 -0
- package/dist/tracking/trackers/filter.js.map +1 -0
- package/dist/tracking/trackers/findCourses.d.ts +5 -0
- package/dist/tracking/trackers/findCourses.js +7 -0
- package/dist/tracking/trackers/findCourses.js.map +1 -0
- package/dist/tracking/trackers/socialShare.d.ts +2 -0
- package/dist/tracking/trackers/socialShare.js +10 -0
- package/dist/tracking/trackers/socialShare.js.map +1 -0
- package/dist/utils/StrictDict.d.ts +2 -0
- package/dist/utils/StrictDict.js +15 -0
- package/dist/utils/StrictDict.js.map +1 -0
- 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/utils/dateFormatter.d.ts +2 -0
- package/dist/utils/dateFormatter.js +8 -0
- package/dist/utils/dateFormatter.js.map +1 -0
- package/dist/utils/hooks.d.ts +5 -0
- package/dist/utils/hooks.js +10 -0
- package/dist/utils/hooks.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/keyStore.d.ts +2 -0
- package/dist/utils/keyStore.js +4 -0
- package/dist/utils/keyStore.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/ConfirmEmailBanner.scss +3 -0
- package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/assets/confirm-email.svg +76 -0
- package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/hooks.d.ts +10 -0
- package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/hooks.js +34 -0
- package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/hooks.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/index.d.ts +2 -0
- package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/index.js +19 -0
- package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/index.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/messages.d.ts +48 -0
- package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/messages.js +35 -0
- package/dist/widgets/LearnerDashboardHeader/ConfirmEmailBanner/messages.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/CoursesLink.d.ts +1 -0
- package/dist/widgets/LearnerDashboardHeader/CoursesLink.js +8 -0
- package/dist/widgets/LearnerDashboardHeader/CoursesLink.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/DiscoverLinkMenuItem.d.ts +3 -0
- package/dist/widgets/LearnerDashboardHeader/DiscoverLinkMenuItem.js +17 -0
- package/dist/widgets/LearnerDashboardHeader/DiscoverLinkMenuItem.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/hooks.d.ts +22 -0
- package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/hooks.js +44 -0
- package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/hooks.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/index.d.ts +2 -0
- package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/index.js +20 -0
- package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/index.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/index.scss +38 -0
- package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/messages.d.ts +48 -0
- package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/messages.js +35 -0
- package/dist/widgets/LearnerDashboardHeader/MasqueradeBar/messages.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/OrderHistoryLinkMenuItem.d.ts +3 -0
- package/dist/widgets/LearnerDashboardHeader/OrderHistoryLinkMenuItem.js +15 -0
- package/dist/widgets/LearnerDashboardHeader/OrderHistoryLinkMenuItem.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/ProgramsLinkMenuItem.d.ts +3 -0
- package/dist/widgets/LearnerDashboardHeader/ProgramsLinkMenuItem.js +13 -0
- package/dist/widgets/LearnerDashboardHeader/ProgramsLinkMenuItem.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/SupportLinkMenuItem.d.ts +3 -0
- package/dist/widgets/LearnerDashboardHeader/SupportLinkMenuItem.js +15 -0
- package/dist/widgets/LearnerDashboardHeader/SupportLinkMenuItem.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/app.d.ts +3 -0
- package/dist/widgets/LearnerDashboardHeader/app.js +69 -0
- package/dist/widgets/LearnerDashboardHeader/app.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/hooks.d.ts +9 -0
- package/dist/widgets/LearnerDashboardHeader/hooks.js +15 -0
- package/dist/widgets/LearnerDashboardHeader/hooks.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/index.d.ts +1 -0
- package/dist/widgets/LearnerDashboardHeader/index.js +2 -0
- package/dist/widgets/LearnerDashboardHeader/index.js.map +1 -0
- package/dist/widgets/LearnerDashboardHeader/messages.d.ts +136 -0
- package/dist/widgets/LearnerDashboardHeader/messages.js +90 -0
- package/dist/widgets/LearnerDashboardHeader/messages.js.map +1 -0
- package/dist/widgets/LookingForChallengeWidget/index.d.ts +6 -0
- package/dist/widgets/LookingForChallengeWidget/index.js +22 -0
- package/dist/widgets/LookingForChallengeWidget/index.js.map +1 -0
- package/dist/widgets/LookingForChallengeWidget/index.scss +6 -0
- package/dist/widgets/LookingForChallengeWidget/messages.d.ts +16 -0
- package/dist/widgets/LookingForChallengeWidget/messages.js +15 -0
- package/dist/widgets/LookingForChallengeWidget/messages.js.map +1 -0
- package/dist/widgets/LookingForChallengeWidget/track.d.ts +7 -0
- package/dist/widgets/LookingForChallengeWidget/track.js +13 -0
- package/dist/widgets/LookingForChallengeWidget/track.js.map +1 -0
- package/package.json +84 -0
package/dist/segment.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// The code in this file is from Segment's website:
|
|
2
|
+
// https://segment.com/docs/sources/website/analytics.js/quickstart/
|
|
3
|
+
import { configuration } from './config';
|
|
4
|
+
(function () {
|
|
5
|
+
// Create a queue, but don't obliterate an existing one!
|
|
6
|
+
const analytics = window.analytics = window.analytics || [];
|
|
7
|
+
// If the real analytics.js is already on the page return.
|
|
8
|
+
if (analytics.initialize)
|
|
9
|
+
return;
|
|
10
|
+
// If the snippet was invoked already show an error.
|
|
11
|
+
if (analytics.invoked) {
|
|
12
|
+
if (window.console && console.error) {
|
|
13
|
+
console.error('Segment snippet included twice.');
|
|
14
|
+
}
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
// Invoked flag, to make sure the snippet
|
|
18
|
+
// is never invoked twice.
|
|
19
|
+
analytics.invoked = true;
|
|
20
|
+
// A list of the methods in Analytics.js to stub.
|
|
21
|
+
analytics.methods = [
|
|
22
|
+
'trackSubmit',
|
|
23
|
+
'trackClick',
|
|
24
|
+
'trackLink',
|
|
25
|
+
'trackForm',
|
|
26
|
+
'pageview',
|
|
27
|
+
'identify',
|
|
28
|
+
'reset',
|
|
29
|
+
'group',
|
|
30
|
+
'track',
|
|
31
|
+
'ready',
|
|
32
|
+
'alias',
|
|
33
|
+
'debug',
|
|
34
|
+
'page',
|
|
35
|
+
'once',
|
|
36
|
+
'off',
|
|
37
|
+
'on',
|
|
38
|
+
];
|
|
39
|
+
// Define a factory to create stubs. These are placeholders
|
|
40
|
+
// for methods in Analytics.js so that you never have to wait
|
|
41
|
+
// for it to load to actually record data. The `method` is
|
|
42
|
+
// stored as the first argument, so we can replay the data.
|
|
43
|
+
analytics.factory = function (method) {
|
|
44
|
+
return function () {
|
|
45
|
+
const args = Array.prototype.slice.call(arguments);
|
|
46
|
+
args.unshift(method);
|
|
47
|
+
analytics.push(args);
|
|
48
|
+
return analytics;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
// For each of our methods, generate a queueing stub.
|
|
52
|
+
for (const key of analytics.methods) {
|
|
53
|
+
analytics[key] = analytics.factory(key);
|
|
54
|
+
}
|
|
55
|
+
// Define a method to load Analytics.js from our CDN,
|
|
56
|
+
// and that will be sure to only ever load it once.
|
|
57
|
+
analytics.load = function (key, options) {
|
|
58
|
+
// Create an async script element based on your key.
|
|
59
|
+
const script = document.createElement('script');
|
|
60
|
+
script.type = 'text/javascript';
|
|
61
|
+
script.async = true;
|
|
62
|
+
script.src = `https://cdn.segment.com/analytics.js/v1/${key}/analytics.min.js`;
|
|
63
|
+
// Insert our script next to the first script element.
|
|
64
|
+
const first = document.getElementsByTagName('script')[0];
|
|
65
|
+
first.parentNode.insertBefore(script, first);
|
|
66
|
+
analytics._loadOptions = options;
|
|
67
|
+
};
|
|
68
|
+
// Add a version to keep track of what's in the wild.
|
|
69
|
+
analytics.SNIPPET_VERSION = '4.1.0';
|
|
70
|
+
// Load Analytics.js with your key, which will automatically
|
|
71
|
+
// load the tools you've enabled for your account. Boosh!
|
|
72
|
+
analytics.load(configuration.SEGMENT_KEY);
|
|
73
|
+
}());
|
|
74
|
+
//# sourceMappingURL=segment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segment.js","sourceRoot":"","sources":["../src/segment.js"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,oEAAoE;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,CAAC;IACC,wDAAwD;IACxD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;IAE5D,0DAA0D;IAC1D,IAAI,SAAS,CAAC,UAAU;QAAE,OAAO;IAEjC,oDAAoD;IACpD,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACnD,CAAC;QACD,OAAO;IACT,CAAC;IAED,yCAAyC;IACzC,0BAA0B;IAC1B,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;IAEzB,iDAAiD;IACjD,SAAS,CAAC,OAAO,GAAG;QAClB,aAAa;QACb,YAAY;QACZ,WAAW;QACX,WAAW;QACX,UAAU;QACV,UAAU;QACV,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;QACP,MAAM;QACN,MAAM;QACN,KAAK;QACL,IAAI;KACL,CAAC;IAEF,2DAA2D;IAC3D,6DAA6D;IAC7D,0DAA0D;IAC1D,2DAA2D;IAC3D,SAAS,CAAC,OAAO,GAAG,UAAU,MAAM;QAClC,OAAO;YACL,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACrB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,qDAAqD;IACrD,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACpC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,qDAAqD;IACrD,mDAAmD;IACnD,SAAS,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,OAAO;QACrC,oDAAoD;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAChC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,MAAM,CAAC,GAAG,GAAG,2CACX,GAAG,mBAAmB,CAAC;QAEzB,sDAAsD;QACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,SAAS,CAAC,YAAY,GAAG,OAAO,CAAC;IACnC,CAAC,CAAC;IAEF,qDAAqD;IACrD,SAAS,CAAC,eAAe,GAAG,OAAO,CAAC;IAEpC,4DAA4D;IAC5D,yDAAyD;IACzD,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAC5C,CAAC,EAAE,CAAC,CAAC","sourcesContent":["// The code in this file is from Segment's website:\n// https://segment.com/docs/sources/website/analytics.js/quickstart/\nimport { configuration } from './config';\n\n(function () {\n // Create a queue, but don't obliterate an existing one!\n const analytics = window.analytics = window.analytics || [];\n\n // If the real analytics.js is already on the page return.\n if (analytics.initialize) return;\n\n // If the snippet was invoked already show an error.\n if (analytics.invoked) {\n if (window.console && console.error) {\n console.error('Segment snippet included twice.');\n }\n return;\n }\n\n // Invoked flag, to make sure the snippet\n // is never invoked twice.\n analytics.invoked = true;\n\n // A list of the methods in Analytics.js to stub.\n analytics.methods = [\n 'trackSubmit',\n 'trackClick',\n 'trackLink',\n 'trackForm',\n 'pageview',\n 'identify',\n 'reset',\n 'group',\n 'track',\n 'ready',\n 'alias',\n 'debug',\n 'page',\n 'once',\n 'off',\n 'on',\n ];\n\n // Define a factory to create stubs. These are placeholders\n // for methods in Analytics.js so that you never have to wait\n // for it to load to actually record data. The `method` is\n // stored as the first argument, so we can replay the data.\n analytics.factory = function (method) {\n return function () {\n const args = Array.prototype.slice.call(arguments);\n args.unshift(method);\n analytics.push(args);\n return analytics;\n };\n };\n\n // For each of our methods, generate a queueing stub.\n for (const key of analytics.methods) {\n analytics[key] = analytics.factory(key);\n }\n\n // Define a method to load Analytics.js from our CDN,\n // and that will be sure to only ever load it once.\n analytics.load = function (key, options) {\n // Create an async script element based on your key.\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.src = `https://cdn.segment.com/analytics.js/v1/${\n key}/analytics.min.js`;\n\n // Insert our script next to the first script element.\n const first = document.getElementsByTagName('script')[0];\n first.parentNode.insertBefore(script, first);\n analytics._loadOptions = options;\n };\n\n // Add a version to keep track of what's in the wild.\n analytics.SNIPPET_VERSION = '4.1.0';\n\n // Load Analytics.js with your key, which will automatically\n // load the tools you've enabled for your account. Boosh!\n analytics.load(configuration.SEGMENT_KEY);\n}());\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export default CourseBannerSlot;
|
|
2
|
+
declare function CourseBannerSlot({ cardId }: {
|
|
3
|
+
cardId: any;
|
|
4
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare namespace CourseBannerSlot {
|
|
6
|
+
namespace propTypes {
|
|
7
|
+
let cardId: PropTypes.Validator<string>;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
import PropTypes from 'prop-types';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { Slot } from '@openedx/frontend-base';
|
|
4
|
+
import CourseBanner from '../../containers/CourseCard/components/CourseCardBanners/CourseBanner';
|
|
5
|
+
const CourseBannerSlot = ({ cardId }) => (_jsx(Slot, { id: "org.openedx.frontend.slot.learnerDashboard.courseCardBanner.v1", cardId: cardId, children: _jsx(CourseBanner, { cardId: cardId }) }));
|
|
6
|
+
CourseBannerSlot.propTypes = {
|
|
7
|
+
cardId: PropTypes.string.isRequired,
|
|
8
|
+
};
|
|
9
|
+
export default CourseBannerSlot;
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/slots/CourseBannerSlot/index.jsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,YAAY,MAAM,uEAAuE,CAAC;AAEjG,MAAM,gBAAgB,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CACvC,KAAC,IAAI,IACH,EAAE,EAAC,gEAAgE,EACnE,MAAM,EAAE,MAAM,YAEd,KAAC,YAAY,IAAC,MAAM,EAAE,MAAM,GAAI,GAC3B,CACR,CAAC;AAEF,gBAAgB,CAAC,SAAS,GAAG;IAC3B,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;CACpC,CAAC;AAEF,eAAe,gBAAgB,CAAC","sourcesContent":["import PropTypes from 'prop-types';\nimport { Slot } from '@openedx/frontend-base';\nimport CourseBanner from '../../containers/CourseCard/components/CourseCardBanners/CourseBanner';\n\nconst CourseBannerSlot = ({ cardId }) => (\n <Slot\n id=\"org.openedx.frontend.slot.learnerDashboard.courseCardBanner.v1\"\n cardId={cardId}\n >\n <CourseBanner cardId={cardId} />\n </Slot>\n);\n\nCourseBannerSlot.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default CourseBannerSlot;\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export default CourseCardActionSlot;
|
|
2
|
+
declare function CourseCardActionSlot({ cardId }: {
|
|
3
|
+
cardId: any;
|
|
4
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare namespace CourseCardActionSlot {
|
|
6
|
+
namespace propTypes {
|
|
7
|
+
let cardId: PropTypes.Validator<string>;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
import PropTypes from 'prop-types';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { Slot } from '@openedx/frontend-base';
|
|
4
|
+
const CourseCardActionSlot = ({ cardId }) => (_jsx(Slot, { id: "org.openedx.frontend.slot.learnerDashboard.courseCardAction.v1", cardId: cardId }));
|
|
5
|
+
CourseCardActionSlot.propTypes = {
|
|
6
|
+
cardId: PropTypes.string.isRequired,
|
|
7
|
+
};
|
|
8
|
+
export default CourseCardActionSlot;
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/slots/CourseCardActionSlot/index.jsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,MAAM,oBAAoB,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAC3C,KAAC,IAAI,IACH,EAAE,EAAC,gEAAgE,EACnE,MAAM,EAAE,MAAM,GACd,CACH,CAAC;AAEF,oBAAoB,CAAC,SAAS,GAAG;IAC/B,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;CACpC,CAAC;AAEF,eAAe,oBAAoB,CAAC","sourcesContent":["import PropTypes from 'prop-types';\nimport { Slot } from '@openedx/frontend-base';\n\nconst CourseCardActionSlot = ({ cardId }) => (\n <Slot\n id=\"org.openedx.frontend.slot.learnerDashboard.courseCardAction.v1\"\n cardId={cardId}\n />\n);\n\nCourseCardActionSlot.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default CourseCardActionSlot;\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function CourseListSlot({ courseListData }: {
|
|
2
|
+
courseListData: any;
|
|
3
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export namespace CourseListSlot {
|
|
5
|
+
namespace propTypes {
|
|
6
|
+
export { courseListDataShape as courseListData };
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export default CourseListSlot;
|
|
10
|
+
import { courseListDataShape } from '../../containers/CoursesPanel/CourseList';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Slot } from '@openedx/frontend-base';
|
|
3
|
+
import { CourseList, courseListDataShape } from '../../containers/CoursesPanel/CourseList';
|
|
4
|
+
export const CourseListSlot = ({ courseListData }) => (_jsx(Slot, { id: "org.openedx.frontend.slot.learnerDashboard.courseList.v1", courseListData: courseListData, children: _jsx(CourseList, { courseListData: courseListData }) }));
|
|
5
|
+
CourseListSlot.propTypes = {
|
|
6
|
+
courseListData: courseListDataShape,
|
|
7
|
+
};
|
|
8
|
+
export default CourseListSlot;
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/slots/CourseListSlot/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAE3F,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CACpD,KAAC,IAAI,IACH,EAAE,EAAC,0DAA0D,EAC7D,cAAc,EAAE,cAAc,YAE9B,KAAC,UAAU,IAAC,cAAc,EAAE,cAAc,GAAI,GACzC,CACR,CAAC;AAEF,cAAc,CAAC,SAAS,GAAG;IACzB,cAAc,EAAE,mBAAmB;CACpC,CAAC;AAEF,eAAe,cAAc,CAAC","sourcesContent":["import { Slot } from '@openedx/frontend-base';\nimport { CourseList, courseListDataShape } from '../../containers/CoursesPanel/CourseList';\n\nexport const CourseListSlot = ({ courseListData }) => (\n <Slot\n id=\"org.openedx.frontend.slot.learnerDashboard.courseList.v1\"\n courseListData={courseListData}\n >\n <CourseList courseListData={courseListData} />\n </Slot>\n);\n\nCourseListSlot.propTypes = {\n courseListData: courseListDataShape,\n};\n\nexport default CourseListSlot;\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Slot } from '@openedx/frontend-base';
|
|
3
|
+
const DashboardModalSlot = () => (_jsx(Slot, { id: "org.openedx.frontend.slot.learnerDashboard.dashboardModal.v1" }));
|
|
4
|
+
export default DashboardModalSlot;
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/slots/DashboardModalSlot/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,CAC/B,KAAC,IAAI,IAAC,EAAE,EAAC,8DAA8D,GAAG,CAC3E,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["import { Slot } from '@openedx/frontend-base';\n\nconst DashboardModalSlot = () => (\n <Slot id=\"org.openedx.frontend.slot.learnerDashboard.dashboardModal.v1\" />\n);\n\nexport default DashboardModalSlot;\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Slot } from '@openedx/frontend-base';
|
|
3
|
+
import NoCoursesView from '../../containers/CoursesPanel/NoCoursesView';
|
|
4
|
+
export const NoCoursesViewSlot = () => (_jsx(Slot, { id: "org.openedx.frontend.slot.learnerDashboard.noCoursesView.v1", children: _jsx(NoCoursesView, {}) }));
|
|
5
|
+
export default NoCoursesViewSlot;
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/slots/NoCoursesViewSlot/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,aAAa,MAAM,6CAA6C,CAAC;AAExE,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,CACrC,KAAC,IAAI,IAAC,EAAE,EAAC,6DAA6D,YACpE,KAAC,aAAa,KAAG,GACZ,CACR,CAAC;AAEF,eAAe,iBAAiB,CAAC","sourcesContent":["import { Slot } from '@openedx/frontend-base';\n\nimport NoCoursesView from '../../containers/CoursesPanel/NoCoursesView';\n\nexport const NoCoursesViewSlot = () => (\n <Slot id=\"org.openedx.frontend.slot.learnerDashboard.noCoursesView.v1\">\n <NoCoursesView />\n </Slot>\n);\n\nexport default NoCoursesViewSlot;\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Slot } from '@openedx/frontend-base';
|
|
3
|
+
import LookingForChallengeWidget from '../../widgets/LookingForChallengeWidget';
|
|
4
|
+
export const WidgetSidebarSlot = () => (_jsx(Slot, { id: "org.openedx.frontend.slot.learnerDashboard.widgetSidebar.v1", children: _jsx(LookingForChallengeWidget, {}) }));
|
|
5
|
+
export default WidgetSidebarSlot;
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/slots/WidgetSidebarSlot/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,yBAAyB,MAAM,yCAAyC,CAAC;AAEhF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,CACrC,KAAC,IAAI,IAAC,EAAE,EAAC,6DAA6D,YACpE,KAAC,yBAAyB,KAAG,GACxB,CACR,CAAC;AAEF,eAAe,iBAAiB,CAAC","sourcesContent":["import { Slot } from '@openedx/frontend-base';\nimport LookingForChallengeWidget from '../../widgets/LookingForChallengeWidget';\n\nexport const WidgetSidebarSlot = () => (\n <Slot id=\"org.openedx.frontend.slot.learnerDashboard.widgetSidebar.v1\">\n <LookingForChallengeWidget />\n </Slot>\n);\n\nexport default WidgetSidebarSlot;\n"]}
|
package/dist/slots.d.ts
ADDED
package/dist/slots.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slots.js","sourceRoot":"","sources":["../src/slots.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,MAAM,KAAK,GAAoB;IAC7B,GAAI,yBAAyB,CAAC,KAAY;CAC3C,CAAC;AAEF,eAAe,KAAK,CAAC","sourcesContent":["import { SlotOperation } from '@openedx/frontend-base';\n\nimport { learnerDashboardHeaderApp } from './widgets/LearnerDashboardHeader';\n\nconst slots: SlotOperation[] = [\n ...(learnerDashboardHeaderApp.slots as [])\n];\n\nexport default slots;\n"]}
|
package/dist/style.scss
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
$fa-font-path: "~font-awesome/fonts";
|
|
2
|
+
@import "~font-awesome/scss/font-awesome";
|
|
3
|
+
|
|
4
|
+
$input-focus-box-shadow: var(--pgn-elevation-form-input-base); // hack to get upgrade to paragon 4.0.0 to work
|
|
5
|
+
|
|
6
|
+
#learnerDashboardRoot {
|
|
7
|
+
main {
|
|
8
|
+
flex-grow: 1;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// Removing a odd 1.5 scaling on checkboxes.:
|
|
12
|
+
input[type=checkbox] {
|
|
13
|
+
transform: none;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.text-ellipsis {
|
|
17
|
+
overflow: hidden;
|
|
18
|
+
text-overflow: ellipsis;
|
|
19
|
+
white-space: nowrap;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.alert.alert-info .alert-icon {
|
|
23
|
+
color: black;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
#paragon-portal-root {
|
|
27
|
+
.pgn__modal-layer {
|
|
28
|
+
.pgn__modal-close-container {
|
|
29
|
+
right: 1rem !important;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
.confirm-modal .pgn__modal-body {
|
|
33
|
+
overflow: hidden;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export function formatMessage(msg: any, values: any): any;
|
|
2
|
+
export function mockNestedComponent(name: string, contents: obj): func;
|
|
3
|
+
export function mockNestedComponents(mapping: obj): obj;
|
|
4
|
+
/**
|
|
5
|
+
* Mock utility for working with useState in a hooks module.
|
|
6
|
+
* Expects/requires an object containing the state object in order to ensure
|
|
7
|
+
* the mock behavior works appropriately.
|
|
8
|
+
*
|
|
9
|
+
* Expected format:
|
|
10
|
+
* hooks = { state: { <key>: (val) => React.createRef(val), ... } }
|
|
11
|
+
*
|
|
12
|
+
* Returns a utility for mocking useState and providing access to specific state values
|
|
13
|
+
* and setState methods, as well as allowing per-test configuration of useState value returns.
|
|
14
|
+
*
|
|
15
|
+
* Example usage:
|
|
16
|
+
* // hooks.js
|
|
17
|
+
* import * as module from './hooks';
|
|
18
|
+
* const state = {
|
|
19
|
+
* isOpen: (val) => React.useState(val),
|
|
20
|
+
* hasDoors: (val) => React.useState(val),
|
|
21
|
+
* selected: (val) => React.useState(val),
|
|
22
|
+
* };
|
|
23
|
+
* ...
|
|
24
|
+
* export const exampleHook = () => {
|
|
25
|
+
* const [isOpen, setIsOpen] = module.state.isOpen(false);
|
|
26
|
+
* if (!isOpen) { return null; }
|
|
27
|
+
* return { isOpen, setIsOpen };
|
|
28
|
+
* }
|
|
29
|
+
* ...
|
|
30
|
+
*
|
|
31
|
+
* // hooks.test.js
|
|
32
|
+
* import * as hooks from './hooks';
|
|
33
|
+
* const state = new MockUseState(hooks)
|
|
34
|
+
* ...
|
|
35
|
+
* describe('state hooks', () => {
|
|
36
|
+
* state.testGetter(state.keys.isOpen);
|
|
37
|
+
* state.testGetter(state.keys.hasDoors);
|
|
38
|
+
* state.testGetter(state.keys.selected);
|
|
39
|
+
* });
|
|
40
|
+
* describe('exampleHook', () => {
|
|
41
|
+
* beforeEach(() => { state.mock(); });
|
|
42
|
+
* it('returns null if isOpen is default value', () => {
|
|
43
|
+
* expect(hooks.exampleHook()).toEqual(null);
|
|
44
|
+
* });
|
|
45
|
+
* it('returns isOpen and setIsOpen if isOpen is not null', () => {
|
|
46
|
+
* state.mockVal(state.keys.isOpen, true);
|
|
47
|
+
* expect(hooks.exampleHook()).toEqual({
|
|
48
|
+
* isOpen: true,
|
|
49
|
+
* setIsOpen: state.setState[state.keys.isOpen],
|
|
50
|
+
* });
|
|
51
|
+
* });
|
|
52
|
+
* afterEach(() => { state.restore(); });
|
|
53
|
+
* });
|
|
54
|
+
*
|
|
55
|
+
* @param {obj} hooks - hooks module containing a 'state' object
|
|
56
|
+
*/
|
|
57
|
+
export class MockUseState {
|
|
58
|
+
constructor(hooks: any);
|
|
59
|
+
hooks: any;
|
|
60
|
+
oldState: any;
|
|
61
|
+
setState: {};
|
|
62
|
+
stateVals: {};
|
|
63
|
+
/**
|
|
64
|
+
* Replace the hook module's state object with a mocked version, initialized to default values.
|
|
65
|
+
*/
|
|
66
|
+
mock(): void;
|
|
67
|
+
/**
|
|
68
|
+
* Restore the hook module's state object to the actual code.
|
|
69
|
+
*/
|
|
70
|
+
restore(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Mock the state getter associated with a single key to return a specific value one time.
|
|
73
|
+
* @param {string} key - state key (from this.keys)
|
|
74
|
+
* @param {any} val - new value to be returned by the useState call.
|
|
75
|
+
*/
|
|
76
|
+
mockVal(key: string, val: any): void;
|
|
77
|
+
testGetter(key: any): void;
|
|
78
|
+
/**
|
|
79
|
+
* @return {object} - StrictDict of state object keys
|
|
80
|
+
*/
|
|
81
|
+
get keys(): object;
|
|
82
|
+
expectInitializedWith(key: any, value: any): void;
|
|
83
|
+
expectSetStateCalledWith(key: any, value: any): void;
|
|
84
|
+
get values(): any;
|
|
85
|
+
}
|
|
86
|
+
export function mockLocation(href: any): void;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import react from 'react';
|
|
3
|
+
import { StrictDict } from './utils';
|
|
4
|
+
/**
|
|
5
|
+
* Mocked formatMessage provided by react-intl
|
|
6
|
+
*/
|
|
7
|
+
export const formatMessage = (msg, values) => {
|
|
8
|
+
let message = msg.defaultMessage;
|
|
9
|
+
if (values === undefined) {
|
|
10
|
+
return message;
|
|
11
|
+
}
|
|
12
|
+
// check if value is not a primitive type.
|
|
13
|
+
if (Object.values(values).filter(value => Object(value) === value).length) {
|
|
14
|
+
return _jsx("format-message-function", { message: msg, values });
|
|
15
|
+
}
|
|
16
|
+
Object.keys(values).forEach((key) => {
|
|
17
|
+
message = message.replaceAll(`{${key}}`, values[key]);
|
|
18
|
+
});
|
|
19
|
+
return message;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Mock a single component, or a nested component so that its children render nicely
|
|
23
|
+
* in snapshots.
|
|
24
|
+
* @param {string} name - parent component name
|
|
25
|
+
* @param {obj} contents - object of child components with intended component
|
|
26
|
+
* render name.
|
|
27
|
+
* @return {func} - mock component with nested children.
|
|
28
|
+
*
|
|
29
|
+
* usage:
|
|
30
|
+
* mockNestedComponent('Card', { Body: 'Card.Body', Form: { Control: { Feedback: 'Form.Control.Feedback' }}... });
|
|
31
|
+
* mockNestedComponent('IconButton', 'IconButton');
|
|
32
|
+
*/
|
|
33
|
+
export const mockNestedComponent = (name, contents) => {
|
|
34
|
+
if (typeof contents === 'function') {
|
|
35
|
+
return contents();
|
|
36
|
+
}
|
|
37
|
+
if (typeof contents !== 'object') {
|
|
38
|
+
return contents;
|
|
39
|
+
}
|
|
40
|
+
const fn = () => name;
|
|
41
|
+
Object.defineProperty(fn, 'name', { value: name });
|
|
42
|
+
Object.keys(contents).forEach((nestedName) => {
|
|
43
|
+
const value = contents[nestedName];
|
|
44
|
+
fn[nestedName] = typeof value !== 'object'
|
|
45
|
+
? value
|
|
46
|
+
: mockNestedComponent(`${name}.${nestedName}`, value);
|
|
47
|
+
});
|
|
48
|
+
return fn;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Mock a module of components. nested components will be rendered nicely in snapshots.
|
|
52
|
+
* @param {obj} mapping - component module mock config.
|
|
53
|
+
* @return {obj} - module of flat and nested components that will render nicely in snapshots.
|
|
54
|
+
* usage:
|
|
55
|
+
* mockNestedComponents({
|
|
56
|
+
* Card: { Body: 'Card.Body' },
|
|
57
|
+
* IconButton: 'IconButton',
|
|
58
|
+
* })
|
|
59
|
+
*/
|
|
60
|
+
export const mockNestedComponents = (mapping) => Object.entries(mapping).reduce((obj, [name, value]) => (Object.assign(Object.assign({}, obj), { [name]: mockNestedComponent(name, value) })), {});
|
|
61
|
+
/**
|
|
62
|
+
* Mock utility for working with useState in a hooks module.
|
|
63
|
+
* Expects/requires an object containing the state object in order to ensure
|
|
64
|
+
* the mock behavior works appropriately.
|
|
65
|
+
*
|
|
66
|
+
* Expected format:
|
|
67
|
+
* hooks = { state: { <key>: (val) => React.createRef(val), ... } }
|
|
68
|
+
*
|
|
69
|
+
* Returns a utility for mocking useState and providing access to specific state values
|
|
70
|
+
* and setState methods, as well as allowing per-test configuration of useState value returns.
|
|
71
|
+
*
|
|
72
|
+
* Example usage:
|
|
73
|
+
* // hooks.js
|
|
74
|
+
* import * as module from './hooks';
|
|
75
|
+
* const state = {
|
|
76
|
+
* isOpen: (val) => React.useState(val),
|
|
77
|
+
* hasDoors: (val) => React.useState(val),
|
|
78
|
+
* selected: (val) => React.useState(val),
|
|
79
|
+
* };
|
|
80
|
+
* ...
|
|
81
|
+
* export const exampleHook = () => {
|
|
82
|
+
* const [isOpen, setIsOpen] = module.state.isOpen(false);
|
|
83
|
+
* if (!isOpen) { return null; }
|
|
84
|
+
* return { isOpen, setIsOpen };
|
|
85
|
+
* }
|
|
86
|
+
* ...
|
|
87
|
+
*
|
|
88
|
+
* // hooks.test.js
|
|
89
|
+
* import * as hooks from './hooks';
|
|
90
|
+
* const state = new MockUseState(hooks)
|
|
91
|
+
* ...
|
|
92
|
+
* describe('state hooks', () => {
|
|
93
|
+
* state.testGetter(state.keys.isOpen);
|
|
94
|
+
* state.testGetter(state.keys.hasDoors);
|
|
95
|
+
* state.testGetter(state.keys.selected);
|
|
96
|
+
* });
|
|
97
|
+
* describe('exampleHook', () => {
|
|
98
|
+
* beforeEach(() => { state.mock(); });
|
|
99
|
+
* it('returns null if isOpen is default value', () => {
|
|
100
|
+
* expect(hooks.exampleHook()).toEqual(null);
|
|
101
|
+
* });
|
|
102
|
+
* it('returns isOpen and setIsOpen if isOpen is not null', () => {
|
|
103
|
+
* state.mockVal(state.keys.isOpen, true);
|
|
104
|
+
* expect(hooks.exampleHook()).toEqual({
|
|
105
|
+
* isOpen: true,
|
|
106
|
+
* setIsOpen: state.setState[state.keys.isOpen],
|
|
107
|
+
* });
|
|
108
|
+
* });
|
|
109
|
+
* afterEach(() => { state.restore(); });
|
|
110
|
+
* });
|
|
111
|
+
*
|
|
112
|
+
* @param {obj} hooks - hooks module containing a 'state' object
|
|
113
|
+
*/
|
|
114
|
+
export class MockUseState {
|
|
115
|
+
constructor(hooks) {
|
|
116
|
+
this.hooks = hooks;
|
|
117
|
+
this.oldState = null;
|
|
118
|
+
this.setState = {};
|
|
119
|
+
this.stateVals = {};
|
|
120
|
+
this.mock = this.mock.bind(this);
|
|
121
|
+
this.restore = this.restore.bind(this);
|
|
122
|
+
this.mockVal = this.mockVal.bind(this);
|
|
123
|
+
this.testGetter = this.testGetter.bind(this);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* @return {object} - StrictDict of state object keys
|
|
127
|
+
*/
|
|
128
|
+
get keys() {
|
|
129
|
+
return StrictDict(Object.keys(this.hooks.state).reduce((obj, key) => (Object.assign(Object.assign({}, obj), { [key]: key })), {}));
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Replace the hook module's state object with a mocked version, initialized to default values.
|
|
133
|
+
*/
|
|
134
|
+
mock() {
|
|
135
|
+
this.oldState = this.hooks.state;
|
|
136
|
+
Object.keys(this.keys).forEach(key => {
|
|
137
|
+
this.hooks.state[key] = jest.fn(val => {
|
|
138
|
+
this.stateVals[key] = val;
|
|
139
|
+
return [val, this.setState[key]];
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
this.setState = Object.keys(this.keys).reduce((obj, key) => (Object.assign(Object.assign({}, obj), { [key]: jest.fn(val => {
|
|
143
|
+
this.hooks.state[key] = val;
|
|
144
|
+
}) })), {});
|
|
145
|
+
}
|
|
146
|
+
expectInitializedWith(key, value) {
|
|
147
|
+
expect(this.hooks.state[key]).toHaveBeenCalledWith(value);
|
|
148
|
+
}
|
|
149
|
+
expectSetStateCalledWith(key, value) {
|
|
150
|
+
expect(this.setState[key]).toHaveBeenCalledWith(value);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Restore the hook module's state object to the actual code.
|
|
154
|
+
*/
|
|
155
|
+
restore() {
|
|
156
|
+
this.hooks.state = this.oldState;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Mock the state getter associated with a single key to return a specific value one time.
|
|
160
|
+
* @param {string} key - state key (from this.keys)
|
|
161
|
+
* @param {any} val - new value to be returned by the useState call.
|
|
162
|
+
*/
|
|
163
|
+
mockVal(key, val) {
|
|
164
|
+
this.hooks.state[key].mockReturnValueOnce([val, this.setState[key]]);
|
|
165
|
+
}
|
|
166
|
+
testGetter(key) {
|
|
167
|
+
test(`${key} state getter should return useState passthrough`, () => {
|
|
168
|
+
const testValue = 'some value';
|
|
169
|
+
const useState = (val) => ({ useState: val });
|
|
170
|
+
jest.spyOn(react, 'useState').mockImplementationOnce(useState);
|
|
171
|
+
expect(this.hooks.state[key](testValue)).toEqual(useState(testValue));
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
get values() {
|
|
175
|
+
return StrictDict(Object.assign({}, this.hooks.state));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
export const mockLocation = (href) => {
|
|
179
|
+
delete global.window.location;
|
|
180
|
+
global.window = Object.create(window);
|
|
181
|
+
global.window.location = { href };
|
|
182
|
+
};
|
|
183
|
+
//# sourceMappingURL=testUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../src/testUtils.js"],"names":[],"mappings":"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","sourcesContent":["import react from 'react';\n\nimport { StrictDict } from '@src/utils';\n\n/**\n * Mocked formatMessage provided by react-intl\n */\nexport const formatMessage = (msg, values) => {\n let message = msg.defaultMessage;\n if (values === undefined) {\n return message;\n }\n // check if value is not a primitive type.\n if (Object.values(values).filter(value => Object(value) === value).length) {\n return <format-message-function {...{ message: msg, values }} />;\n }\n Object.keys(values).forEach((key) => {\n message = message.replaceAll(`{${key}}`, values[key]);\n });\n return message;\n};\n\n/**\n * Mock a single component, or a nested component so that its children render nicely\n * in snapshots.\n * @param {string} name - parent component name\n * @param {obj} contents - object of child components with intended component\n * render name.\n * @return {func} - mock component with nested children.\n *\n * usage:\n * mockNestedComponent('Card', { Body: 'Card.Body', Form: { Control: { Feedback: 'Form.Control.Feedback' }}... });\n * mockNestedComponent('IconButton', 'IconButton');\n */\nexport const mockNestedComponent = (name, contents) => {\n if (typeof contents === 'function') {\n return contents();\n }\n if (typeof contents !== 'object') {\n return contents;\n }\n const fn = () => name;\n Object.defineProperty(fn, 'name', { value: name });\n Object.keys(contents).forEach((nestedName) => {\n const value = contents[nestedName];\n fn[nestedName] = typeof value !== 'object'\n ? value\n : mockNestedComponent(`${name}.${nestedName}`, value);\n });\n return fn;\n};\n\n/**\n * Mock a module of components. nested components will be rendered nicely in snapshots.\n * @param {obj} mapping - component module mock config.\n * @return {obj} - module of flat and nested components that will render nicely in snapshots.\n * usage:\n * mockNestedComponents({\n * Card: { Body: 'Card.Body' },\n * IconButton: 'IconButton',\n * })\n */\nexport const mockNestedComponents = (mapping) => Object.entries(mapping).reduce(\n (obj, [name, value]) => ({\n ...obj,\n [name]: mockNestedComponent(name, value),\n }),\n {},\n);\n\n/**\n * Mock utility for working with useState in a hooks module.\n * Expects/requires an object containing the state object in order to ensure\n * the mock behavior works appropriately.\n *\n * Expected format:\n * hooks = { state: { <key>: (val) => React.createRef(val), ... } }\n *\n * Returns a utility for mocking useState and providing access to specific state values\n * and setState methods, as well as allowing per-test configuration of useState value returns.\n *\n * Example usage:\n * // hooks.js\n * import * as module from './hooks';\n * const state = {\n * isOpen: (val) => React.useState(val),\n * hasDoors: (val) => React.useState(val),\n * selected: (val) => React.useState(val),\n * };\n * ...\n * export const exampleHook = () => {\n * const [isOpen, setIsOpen] = module.state.isOpen(false);\n * if (!isOpen) { return null; }\n * return { isOpen, setIsOpen };\n * }\n * ...\n *\n * // hooks.test.js\n * import * as hooks from './hooks';\n * const state = new MockUseState(hooks)\n * ...\n * describe('state hooks', () => {\n * state.testGetter(state.keys.isOpen);\n * state.testGetter(state.keys.hasDoors);\n * state.testGetter(state.keys.selected);\n * });\n * describe('exampleHook', () => {\n * beforeEach(() => { state.mock(); });\n * it('returns null if isOpen is default value', () => {\n * expect(hooks.exampleHook()).toEqual(null);\n * });\n * it('returns isOpen and setIsOpen if isOpen is not null', () => {\n * state.mockVal(state.keys.isOpen, true);\n * expect(hooks.exampleHook()).toEqual({\n * isOpen: true,\n * setIsOpen: state.setState[state.keys.isOpen],\n * });\n * });\n * afterEach(() => { state.restore(); });\n * });\n *\n * @param {obj} hooks - hooks module containing a 'state' object\n */\nexport class MockUseState {\n constructor(hooks) {\n this.hooks = hooks;\n this.oldState = null;\n this.setState = {};\n this.stateVals = {};\n\n this.mock = this.mock.bind(this);\n this.restore = this.restore.bind(this);\n this.mockVal = this.mockVal.bind(this);\n this.testGetter = this.testGetter.bind(this);\n }\n\n /**\n * @return {object} - StrictDict of state object keys\n */\n get keys() {\n return StrictDict(Object.keys(this.hooks.state).reduce(\n (obj, key) => ({ ...obj, [key]: key }),\n {},\n ));\n }\n\n /**\n * Replace the hook module's state object with a mocked version, initialized to default values.\n */\n mock() {\n this.oldState = this.hooks.state;\n Object.keys(this.keys).forEach(key => {\n this.hooks.state[key] = jest.fn(val => {\n this.stateVals[key] = val;\n return [val, this.setState[key]];\n });\n });\n this.setState = Object.keys(this.keys).reduce(\n (obj, key) => ({\n ...obj,\n [key]: jest.fn(val => {\n this.hooks.state[key] = val;\n }),\n }),\n {},\n );\n }\n\n expectInitializedWith(key, value) {\n expect(this.hooks.state[key]).toHaveBeenCalledWith(value);\n }\n\n expectSetStateCalledWith(key, value) {\n expect(this.setState[key]).toHaveBeenCalledWith(value);\n }\n\n /**\n * Restore the hook module's state object to the actual code.\n */\n restore() {\n this.hooks.state = this.oldState;\n }\n\n /**\n * Mock the state getter associated with a single key to return a specific value one time.\n * @param {string} key - state key (from this.keys)\n * @param {any} val - new value to be returned by the useState call.\n */\n mockVal(key, val) {\n this.hooks.state[key].mockReturnValueOnce([val, this.setState[key]]);\n }\n\n testGetter(key) {\n test(`${key} state getter should return useState passthrough`, () => {\n const testValue = 'some value';\n const useState = (val) => ({ useState: val });\n jest.spyOn(react, 'useState').mockImplementationOnce(useState);\n expect(this.hooks.state[key](testValue)).toEqual(useState(testValue));\n });\n }\n\n get values() {\n return StrictDict({ ...this.hooks.state });\n }\n}\n\nexport const mockLocation = (href) => {\n delete global.window.location;\n global.window = Object.create(window);\n global.window.location = { href };\n};\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { StrictDict } from '../utils';
|
|
2
|
+
export const categories = StrictDict({
|
|
3
|
+
dashboard: 'dashboard',
|
|
4
|
+
userEngagement: 'user-engagement',
|
|
5
|
+
searchButton: 'search_button',
|
|
6
|
+
credit: 'credit',
|
|
7
|
+
filter: 'filter',
|
|
8
|
+
});
|
|
9
|
+
export const events = StrictDict({
|
|
10
|
+
enterCourseClicked: 'enterCourseClicked',
|
|
11
|
+
courseImageClicked: 'courseImageClicked',
|
|
12
|
+
courseTitleClicked: 'courseTitleClicked',
|
|
13
|
+
courseOptionsDropdownClicked: 'courseOptionsDropdownClicked',
|
|
14
|
+
shareClicked: 'shareClicked',
|
|
15
|
+
userSettingsChanged: 'userSettingsChanged',
|
|
16
|
+
newSession: 'newSession',
|
|
17
|
+
switchSession: 'switchSession',
|
|
18
|
+
leaveSession: 'leaveSession',
|
|
19
|
+
unenrollReason: 'unenrollReason',
|
|
20
|
+
entitlementUnenrollReason: 'entitlementUnenrollReason',
|
|
21
|
+
});
|
|
22
|
+
export const eventNames = StrictDict({
|
|
23
|
+
enterCourseClicked: 'edx.bi.dashboard.enter_course.clicked',
|
|
24
|
+
courseImageClicked: 'edx.bi.dashboard.course_image.clicked',
|
|
25
|
+
courseTitleClicked: 'edx.bi.dashboard.course_title.clicked',
|
|
26
|
+
courseOptionsDropdownClicked: 'edx.bi.dashboard.course_options_dropdown.clicked',
|
|
27
|
+
shareClicked: 'edx.course.share_clicked',
|
|
28
|
+
userSettingsChanged: 'edx.user.settings.changed',
|
|
29
|
+
newSession: 'course-dashboard.new-session',
|
|
30
|
+
switchSession: 'course-dashboard.switch-session',
|
|
31
|
+
leaveSession: 'course-dashboard.leave-session',
|
|
32
|
+
unenrollReason: 'unenrollment_reason.selected',
|
|
33
|
+
entitlementUnenrollReason: 'entitlement_unenrollment_reason.selected',
|
|
34
|
+
findCoursesClicked: 'edx.bi.dashboard.find_courses_button.clicked',
|
|
35
|
+
purchaseCredit: 'edx.bi.credit.clicked_purchase_credit',
|
|
36
|
+
filterClicked: 'course-dashboard.filter.clicked',
|
|
37
|
+
filterOptionSelected: 'course-dashboard.filter_option.selected',
|
|
38
|
+
});
|
|
39
|
+
export const linkNames = StrictDict({
|
|
40
|
+
learnerHomeNavExplore: 'learner_home_nav_explore',
|
|
41
|
+
learnerHomeNavDropdownExplore: 'learner_home_nav_dropdown_explore',
|
|
42
|
+
});
|
|
43
|
+
export const appName = 'learner-home';
|
|
44
|
+
export default eventNames;
|
|
45
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/tracking/constants.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,iBAAiB;IACjC,YAAY,EAAE,eAAe;IAC7B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC;IAC/B,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,4BAA4B,EAAE,8BAA8B;IAC5D,YAAY,EAAE,cAAc;IAC5B,mBAAmB,EAAE,qBAAqB;IAC1C,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,yBAAyB,EAAE,2BAA2B;CACvD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,kBAAkB,EAAE,uCAAuC;IAC3D,kBAAkB,EAAE,uCAAuC;IAC3D,kBAAkB,EAAE,uCAAuC;IAC3D,4BAA4B,EAAE,kDAAkD;IAChF,YAAY,EAAE,0BAA0B;IACxC,mBAAmB,EAAE,2BAA2B;IAChD,UAAU,EAAE,8BAA8B;IAC1C,aAAa,EAAE,iCAAiC;IAChD,YAAY,EAAE,gCAAgC;IAC9C,cAAc,EAAE,8BAA8B;IAC9C,yBAAyB,EAAE,0CAA0C;IACrE,kBAAkB,EAAE,8CAA8C;IAClE,cAAc,EAAE,uCAAuC;IACvD,aAAa,EAAE,iCAAiC;IAChD,oBAAoB,EAAE,yCAAyC;CAChE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;IAClC,qBAAqB,EAAE,0BAA0B;IACjD,6BAA6B,EAAE,mCAAmC;CACnE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,cAAc,CAAC;AAEtC,eAAe,UAAU,CAAC","sourcesContent":["import { StrictDict } from '../utils';\n\nexport const categories = StrictDict({\n dashboard: 'dashboard',\n userEngagement: 'user-engagement',\n searchButton: 'search_button',\n credit: 'credit',\n filter: 'filter',\n});\n\nexport const events = StrictDict({\n enterCourseClicked: 'enterCourseClicked',\n courseImageClicked: 'courseImageClicked',\n courseTitleClicked: 'courseTitleClicked',\n courseOptionsDropdownClicked: 'courseOptionsDropdownClicked',\n shareClicked: 'shareClicked',\n userSettingsChanged: 'userSettingsChanged',\n newSession: 'newSession',\n switchSession: 'switchSession',\n leaveSession: 'leaveSession',\n unenrollReason: 'unenrollReason',\n entitlementUnenrollReason: 'entitlementUnenrollReason',\n});\n\nexport const eventNames = StrictDict({\n enterCourseClicked: 'edx.bi.dashboard.enter_course.clicked',\n courseImageClicked: 'edx.bi.dashboard.course_image.clicked',\n courseTitleClicked: 'edx.bi.dashboard.course_title.clicked',\n courseOptionsDropdownClicked: 'edx.bi.dashboard.course_options_dropdown.clicked',\n shareClicked: 'edx.course.share_clicked',\n userSettingsChanged: 'edx.user.settings.changed',\n newSession: 'course-dashboard.new-session',\n switchSession: 'course-dashboard.switch-session',\n leaveSession: 'course-dashboard.leave-session',\n unenrollReason: 'unenrollment_reason.selected',\n entitlementUnenrollReason: 'entitlement_unenrollment_reason.selected',\n findCoursesClicked: 'edx.bi.dashboard.find_courses_button.clicked',\n purchaseCredit: 'edx.bi.credit.clicked_purchase_credit',\n filterClicked: 'course-dashboard.filter.clicked',\n filterOptionSelected: 'course-dashboard.filter_option.selected',\n});\n\nexport const linkNames = StrictDict({\n learnerHomeNavExplore: 'learner_home_nav_explore',\n learnerHomeNavDropdownExplore: 'learner_home_nav_dropdown_explore',\n});\n\nexport const appName = 'learner-home';\n\nexport default eventNames;\n"]}
|