@openedx/frontend-app-catalog 1.0.0-alpha.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 +300 -0
- package/dist/Main.d.ts +3 -0
- package/dist/Main.js +8 -0
- package/dist/Main.js.map +1 -0
- package/dist/app.d.ts +3 -0
- package/dist/app.js +22 -0
- package/dist/app.js.map +1 -0
- package/dist/assets/images/no-course-image.svg +4 -0
- package/dist/assets/scss/_animations.scss +23 -0
- package/dist/catalog/CatalogPage.d.ts +2 -0
- package/dist/catalog/CatalogPage.js +64 -0
- package/dist/catalog/CatalogPage.js.map +1 -0
- package/dist/catalog/hooks/types.d.ts +24 -0
- package/dist/catalog/hooks/types.js +2 -0
- package/dist/catalog/hooks/types.js.map +1 -0
- package/dist/catalog/hooks/useCatalog.d.ts +29 -0
- package/dist/catalog/hooks/useCatalog.js +52 -0
- package/dist/catalog/hooks/useCatalog.js.map +1 -0
- package/dist/catalog/hooks/useCourseData.d.ts +12 -0
- package/dist/catalog/hooks/useCourseData.js +21 -0
- package/dist/catalog/hooks/useCourseData.js.map +1 -0
- package/dist/catalog/hooks/useDebouncedSearchInput.d.ts +7 -0
- package/dist/catalog/hooks/useDebouncedSearchInput.js +26 -0
- package/dist/catalog/hooks/useDebouncedSearchInput.js.map +1 -0
- package/dist/catalog/hooks/useFilter.d.ts +18 -0
- package/dist/catalog/hooks/useFilter.js +58 -0
- package/dist/catalog/hooks/useFilter.js.map +1 -0
- package/dist/catalog/hooks/usePagination.d.ts +13 -0
- package/dist/catalog/hooks/usePagination.js +25 -0
- package/dist/catalog/hooks/usePagination.js.map +1 -0
- package/dist/catalog/hooks/useSearch.d.ts +16 -0
- package/dist/catalog/hooks/useSearch.js +63 -0
- package/dist/catalog/hooks/useSearch.js.map +1 -0
- package/dist/catalog/messages.d.ts +68 -0
- package/dist/catalog/messages.js +70 -0
- package/dist/catalog/messages.js.map +1 -0
- package/dist/catalog/types.d.ts +6 -0
- package/dist/catalog/types.js +2 -0
- package/dist/catalog/types.js.map +1 -0
- package/dist/catalog/utils.d.ts +25 -0
- package/dist/catalog/utils.js +82 -0
- package/dist/catalog/utils.js.map +1 -0
- package/dist/constants.d.ts +18 -0
- package/dist/constants.js +15 -0
- package/dist/constants.js.map +1 -0
- package/dist/course-about/CourseAboutPage.d.ts +2 -0
- package/dist/course-about/CourseAboutPage.js +39 -0
- package/dist/course-about/CourseAboutPage.js.map +1 -0
- package/dist/course-about/CourseAboutPage.scss +36 -0
- package/dist/course-about/course-intro/CourseIntro.d.ts +4 -0
- package/dist/course-about/course-intro/CourseIntro.js +19 -0
- package/dist/course-about/course-intro/CourseIntro.js.map +1 -0
- package/dist/course-about/course-intro/components/EnrolledStatus.d.ts +2 -0
- package/dist/course-about/course-intro/components/EnrolledStatus.js +13 -0
- package/dist/course-about/course-intro/components/EnrolledStatus.js.map +1 -0
- package/dist/course-about/course-intro/components/EnrollmentButton.d.ts +2 -0
- package/dist/course-about/course-intro/components/EnrollmentButton.js +12 -0
- package/dist/course-about/course-intro/components/EnrollmentButton.js.map +1 -0
- package/dist/course-about/course-intro/components/StatusMessage.d.ts +2 -0
- package/dist/course-about/course-intro/components/StatusMessage.js +12 -0
- package/dist/course-about/course-intro/components/StatusMessage.js.map +1 -0
- package/dist/course-about/course-intro/components/index.d.ts +3 -0
- package/dist/course-about/course-intro/components/index.js +4 -0
- package/dist/course-about/course-intro/components/index.js.map +1 -0
- package/dist/course-about/course-intro/components/types.d.ts +18 -0
- package/dist/course-about/course-intro/components/types.js +2 -0
- package/dist/course-about/course-intro/components/types.js.map +1 -0
- package/dist/course-about/course-intro/constants.d.ts +10 -0
- package/dist/course-about/course-intro/constants.js +12 -0
- package/dist/course-about/course-intro/constants.js.map +1 -0
- package/dist/course-about/course-intro/course-media/CourseMedia.d.ts +3 -0
- package/dist/course-about/course-intro/course-media/CourseMedia.js +17 -0
- package/dist/course-about/course-intro/course-media/CourseMedia.js.map +1 -0
- package/dist/course-about/course-intro/course-media/CourseMedia.scss +24 -0
- package/dist/course-about/course-intro/course-media/messages.d.ts +8 -0
- package/dist/course-about/course-intro/course-media/messages.js +10 -0
- package/dist/course-about/course-intro/course-media/messages.js.map +1 -0
- package/dist/course-about/course-intro/course-media/types.d.ts +8 -0
- package/dist/course-about/course-intro/course-media/types.js +2 -0
- package/dist/course-about/course-intro/course-media/types.js.map +1 -0
- package/dist/course-about/course-intro/course-media/utils.d.ts +12 -0
- package/dist/course-about/course-intro/course-media/utils.js +18 -0
- package/dist/course-about/course-intro/course-media/utils.js.map +1 -0
- package/dist/course-about/course-intro/hooks/index.d.ts +2 -0
- package/dist/course-about/course-intro/hooks/index.js +3 -0
- package/dist/course-about/course-intro/hooks/index.js.map +1 -0
- package/dist/course-about/course-intro/hooks/types.d.ts +16 -0
- package/dist/course-about/course-intro/hooks/types.js +2 -0
- package/dist/course-about/course-intro/hooks/types.js.map +1 -0
- package/dist/course-about/course-intro/hooks/useEnrollmentActions.d.ts +7 -0
- package/dist/course-about/course-intro/hooks/useEnrollmentActions.js +47 -0
- package/dist/course-about/course-intro/hooks/useEnrollmentActions.js.map +1 -0
- package/dist/course-about/course-intro/hooks/useEnrollmentStatus.d.ts +4 -0
- package/dist/course-about/course-intro/hooks/useEnrollmentStatus.js +35 -0
- package/dist/course-about/course-intro/hooks/useEnrollmentStatus.js.map +1 -0
- package/dist/course-about/course-intro/messages.d.ts +43 -0
- package/dist/course-about/course-intro/messages.js +45 -0
- package/dist/course-about/course-intro/messages.js.map +1 -0
- package/dist/course-about/course-intro/utils.d.ts +4 -0
- package/dist/course-about/course-intro/utils.js +7 -0
- package/dist/course-about/course-intro/utils.js.map +1 -0
- package/dist/course-about/course-overview/index.d.ts +2 -0
- package/dist/course-about/course-overview/index.js +21 -0
- package/dist/course-about/course-overview/index.js.map +1 -0
- package/dist/course-about/course-overview/types.d.ts +4 -0
- package/dist/course-about/course-overview/types.js +2 -0
- package/dist/course-about/course-overview/types.js.map +1 -0
- package/dist/course-about/course-overview/utils.d.ts +6 -0
- package/dist/course-about/course-overview/utils.js +12 -0
- package/dist/course-about/course-overview/utils.js.map +1 -0
- package/dist/course-about/course-sidebar/CourseSidebar.d.ts +5 -0
- package/dist/course-about/course-sidebar/CourseSidebar.js +7 -0
- package/dist/course-about/course-sidebar/CourseSidebar.js.map +1 -0
- package/dist/course-about/course-sidebar/sidebar-details/SidebarDetails.d.ts +5 -0
- package/dist/course-about/course-sidebar/sidebar-details/SidebarDetails.js +38 -0
- package/dist/course-about/course-sidebar/sidebar-details/SidebarDetails.js.map +1 -0
- package/dist/course-about/course-sidebar/sidebar-details/SidebarDetailsItem.d.ts +3 -0
- package/dist/course-about/course-sidebar/sidebar-details/SidebarDetailsItem.js +5 -0
- package/dist/course-about/course-sidebar/sidebar-details/SidebarDetailsItem.js.map +1 -0
- package/dist/course-about/course-sidebar/sidebar-details/constants.d.ts +7 -0
- package/dist/course-about/course-sidebar/sidebar-details/constants.js +8 -0
- package/dist/course-about/course-sidebar/sidebar-details/constants.js.map +1 -0
- package/dist/course-about/course-sidebar/sidebar-details/messages.d.ts +43 -0
- package/dist/course-about/course-sidebar/sidebar-details/messages.js +45 -0
- package/dist/course-about/course-sidebar/sidebar-details/messages.js.map +1 -0
- package/dist/course-about/course-sidebar/sidebar-details/types.d.ts +8 -0
- package/dist/course-about/course-sidebar/sidebar-details/types.js +2 -0
- package/dist/course-about/course-sidebar/sidebar-details/types.js.map +1 -0
- package/dist/course-about/course-sidebar/sidebar-details/utils.d.ts +37 -0
- package/dist/course-about/course-sidebar/sidebar-details/utils.js +49 -0
- package/dist/course-about/course-sidebar/sidebar-details/utils.js.map +1 -0
- package/dist/course-about/course-sidebar/sidebar-social/SidebarSocial.d.ts +5 -0
- package/dist/course-about/course-sidebar/sidebar-social/SidebarSocial.js +14 -0
- package/dist/course-about/course-sidebar/sidebar-social/SidebarSocial.js.map +1 -0
- package/dist/course-about/course-sidebar/sidebar-social/SocialLinks.d.ts +5 -0
- package/dist/course-about/course-sidebar/sidebar-social/SocialLinks.js +5 -0
- package/dist/course-about/course-sidebar/sidebar-social/SocialLinks.js.map +1 -0
- package/dist/course-about/course-sidebar/sidebar-social/messages.d.ts +43 -0
- package/dist/course-about/course-sidebar/sidebar-social/messages.js +45 -0
- package/dist/course-about/course-sidebar/sidebar-social/messages.js.map +1 -0
- package/dist/course-about/course-sidebar/sidebar-social/types.d.ts +7 -0
- package/dist/course-about/course-sidebar/sidebar-social/types.js +2 -0
- package/dist/course-about/course-sidebar/sidebar-social/types.js.map +1 -0
- package/dist/course-about/course-sidebar/sidebar-social/utils.d.ts +23 -0
- package/dist/course-about/course-sidebar/sidebar-social/utils.js +71 -0
- package/dist/course-about/course-sidebar/sidebar-social/utils.js.map +1 -0
- package/dist/course-about/data/api.d.ts +10 -0
- package/dist/course-about/data/api.js +36 -0
- package/dist/course-about/data/api.js.map +1 -0
- package/dist/course-about/data/hooks.d.ts +3 -0
- package/dist/course-about/data/hooks.js +35 -0
- package/dist/course-about/data/hooks.js.map +1 -0
- package/dist/course-about/data/types.d.ts +10 -0
- package/dist/course-about/data/types.js +2 -0
- package/dist/course-about/data/types.js.map +1 -0
- package/dist/course-about/data/urls.d.ts +8 -0
- package/dist/course-about/data/urls.js +10 -0
- package/dist/course-about/data/urls.js.map +1 -0
- package/dist/course-about/layout.d.ts +31 -0
- package/dist/course-about/layout.js +11 -0
- package/dist/course-about/layout.js.map +1 -0
- package/dist/course-about/messages.d.ts +18 -0
- package/dist/course-about/messages.js +20 -0
- package/dist/course-about/messages.js.map +1 -0
- package/dist/course-about/types.d.ts +125 -0
- package/dist/course-about/types.js +2 -0
- package/dist/course-about/types.js.map +1 -0
- package/dist/data/course-list-search/api.d.ts +6 -0
- package/dist/data/course-list-search/api.js +33 -0
- package/dist/data/course-list-search/api.js.map +1 -0
- package/dist/data/course-list-search/constants.d.ts +2 -0
- package/dist/data/course-list-search/constants.js +3 -0
- package/dist/data/course-list-search/constants.js.map +1 -0
- package/dist/data/course-list-search/hooks.d.ts +5 -0
- package/dist/data/course-list-search/hooks.js +47 -0
- package/dist/data/course-list-search/hooks.js.map +1 -0
- package/dist/data/course-list-search/types.d.ts +65 -0
- package/dist/data/course-list-search/types.js +2 -0
- package/dist/data/course-list-search/types.js.map +1 -0
- package/dist/data/course-list-search/urls.d.ts +2 -0
- package/dist/data/course-list-search/urls.js +4 -0
- package/dist/data/course-list-search/urls.js.map +1 -0
- package/dist/data/course-list-search/utils.d.ts +9 -0
- package/dist/data/course-list-search/utils.js +40 -0
- package/dist/data/course-list-search/utils.js.map +1 -0
- package/dist/generic/alert-notification/index.d.ts +2 -0
- package/dist/generic/alert-notification/index.js +5 -0
- package/dist/generic/alert-notification/index.js.map +1 -0
- package/dist/generic/alert-notification/types.d.ts +6 -0
- package/dist/generic/alert-notification/types.js +2 -0
- package/dist/generic/alert-notification/types.js.map +1 -0
- package/dist/generic/course-card/index.d.ts +2 -0
- package/dist/generic/course-card/index.js +27 -0
- package/dist/generic/course-card/index.js.map +1 -0
- package/dist/generic/course-card/messages.d.ts +8 -0
- package/dist/generic/course-card/messages.js +10 -0
- package/dist/generic/course-card/messages.js.map +1 -0
- package/dist/generic/course-card/types.d.ts +35 -0
- package/dist/generic/course-card/types.js +2 -0
- package/dist/generic/course-card/types.js.map +1 -0
- package/dist/generic/course-card/utils.d.ts +10 -0
- package/dist/generic/course-card/utils.js +24 -0
- package/dist/generic/course-card/utils.js.map +1 -0
- package/dist/generic/index.d.ts +5 -0
- package/dist/generic/index.js +6 -0
- package/dist/generic/index.js.map +1 -0
- package/dist/generic/loading-spinner/index.d.ts +3 -0
- package/dist/generic/loading-spinner/index.js +10 -0
- package/dist/generic/loading-spinner/index.js.map +1 -0
- package/dist/generic/loading-spinner/messages.d.ts +8 -0
- package/dist/generic/loading-spinner/messages.js +10 -0
- package/dist/generic/loading-spinner/messages.js.map +1 -0
- package/dist/generic/loading-spinner/types.d.ts +3 -0
- package/dist/generic/loading-spinner/types.js +2 -0
- package/dist/generic/loading-spinner/types.js.map +1 -0
- package/dist/generic/sub-header/index.d.ts +2 -0
- package/dist/generic/sub-header/index.js +4 -0
- package/dist/generic/sub-header/index.js.map +1 -0
- package/dist/generic/sub-header/types.d.ts +4 -0
- package/dist/generic/sub-header/types.js +2 -0
- package/dist/generic/sub-header/types.js.map +1 -0
- package/dist/generic/video-modal/index.d.ts +2 -0
- package/dist/generic/video-modal/index.js +10 -0
- package/dist/generic/video-modal/index.js.map +1 -0
- package/dist/generic/video-modal/messages.d.ts +13 -0
- package/dist/generic/video-modal/messages.js +15 -0
- package/dist/generic/video-modal/messages.js.map +1 -0
- package/dist/generic/video-modal/types.d.ts +6 -0
- package/dist/generic/video-modal/types.js +2 -0
- package/dist/generic/video-modal/types.js.map +1 -0
- package/dist/home/HomePage.d.ts +2 -0
- package/dist/home/HomePage.js +14 -0
- package/dist/home/HomePage.js.map +1 -0
- package/dist/home/components/courses-list/CoursesList.d.ts +2 -0
- package/dist/home/components/courses-list/CoursesList.js +50 -0
- package/dist/home/components/courses-list/CoursesList.js.map +1 -0
- package/dist/home/components/courses-list/messages.d.ts +23 -0
- package/dist/home/components/courses-list/messages.js +25 -0
- package/dist/home/components/courses-list/messages.js.map +1 -0
- package/dist/home/components/home-banner/HomeBanner.d.ts +2 -0
- package/dist/home/components/home-banner/HomeBanner.js +25 -0
- package/dist/home/components/home-banner/HomeBanner.js.map +1 -0
- package/dist/home/components/home-banner/HomePageOverlay.d.ts +2 -0
- package/dist/home/components/home-banner/HomePageOverlay.js +10 -0
- package/dist/home/components/home-banner/HomePageOverlay.js.map +1 -0
- package/dist/home/components/home-banner/HomePromoVideoBtn.d.ts +3 -0
- package/dist/home/components/home-banner/HomePromoVideoBtn.js +10 -0
- package/dist/home/components/home-banner/HomePromoVideoBtn.js.map +1 -0
- package/dist/home/components/home-banner/index.scss +20 -0
- package/dist/home/components/home-banner/messages.d.ts +28 -0
- package/dist/home/components/home-banner/messages.js +30 -0
- package/dist/home/components/home-banner/messages.js.map +1 -0
- package/dist/home/components/home-banner/types.d.ts +3 -0
- package/dist/home/components/home-banner/types.js +2 -0
- package/dist/home/components/home-banner/types.js.map +1 -0
- package/dist/home/components/index.d.ts +2 -0
- package/dist/home/components/index.js +3 -0
- package/dist/home/components/index.js.map +1 -0
- package/dist/home/constants.d.ts +1 -0
- package/dist/home/constants.js +2 -0
- package/dist/home/constants.js.map +1 -0
- package/dist/home/messages.d.ts +8 -0
- package/dist/home/messages.js +10 -0
- package/dist/home/messages.js.map +1 -0
- package/dist/i18n/index.d.ts +1 -0
- package/dist/i18n/index.js +2 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/routes.d.ts +28 -0
- package/dist/routes.js +62 -0
- package/dist/routes.js.map +1 -0
- package/dist/slots/CourseAboutCourseImageSlot/index.d.ts +6 -0
- package/dist/slots/CourseAboutCourseImageSlot/index.js +9 -0
- package/dist/slots/CourseAboutCourseImageSlot/index.js.map +1 -0
- package/dist/slots/CourseAboutCourseMediaSlot/index.d.ts +9 -0
- package/dist/slots/CourseAboutCourseMediaSlot/index.js +6 -0
- package/dist/slots/CourseAboutCourseMediaSlot/index.js.map +1 -0
- package/dist/slots/CourseAboutEnrollmentButtonSlot/index.d.ts +10 -0
- package/dist/slots/CourseAboutEnrollmentButtonSlot/index.js +6 -0
- package/dist/slots/CourseAboutEnrollmentButtonSlot/index.js.map +1 -0
- package/dist/slots/CourseAboutIntroSlot/index.d.ts +6 -0
- package/dist/slots/CourseAboutIntroSlot/index.js +6 -0
- package/dist/slots/CourseAboutIntroSlot/index.js.map +1 -0
- package/dist/slots/CourseAboutIntroVideoSlots/CourseAboutIntroVideoButtonSlot/index.d.ts +6 -0
- package/dist/slots/CourseAboutIntroVideoSlots/CourseAboutIntroVideoButtonSlot/index.js +11 -0
- package/dist/slots/CourseAboutIntroVideoSlots/CourseAboutIntroVideoButtonSlot/index.js.map +1 -0
- package/dist/slots/CourseAboutIntroVideoSlots/CourseAboutIntroVideoModalContentSlot/index.d.ts +6 -0
- package/dist/slots/CourseAboutIntroVideoSlots/CourseAboutIntroVideoModalContentSlot/index.js +9 -0
- package/dist/slots/CourseAboutIntroVideoSlots/CourseAboutIntroVideoModalContentSlot/index.js.map +1 -0
- package/dist/slots/CourseAboutIntroVideoSlots/CourseAboutIntroVideoModalSlot/index.d.ts +6 -0
- package/dist/slots/CourseAboutIntroVideoSlots/CourseAboutIntroVideoModalSlot/index.js +6 -0
- package/dist/slots/CourseAboutIntroVideoSlots/CourseAboutIntroVideoModalSlot/index.js.map +1 -0
- package/dist/slots/CourseAboutIntroVideoSlots/index.d.ts +4 -0
- package/dist/slots/CourseAboutIntroVideoSlots/index.js +5 -0
- package/dist/slots/CourseAboutIntroVideoSlots/index.js.map +1 -0
- package/dist/slots/CourseAboutOverviewSlot/index.d.ts +6 -0
- package/dist/slots/CourseAboutOverviewSlot/index.js +6 -0
- package/dist/slots/CourseAboutOverviewSlot/index.js.map +1 -0
- package/dist/slots/CourseAboutSidebarCoursePriceSlot/index.d.ts +6 -0
- package/dist/slots/CourseAboutSidebarCoursePriceSlot/index.js +11 -0
- package/dist/slots/CourseAboutSidebarCoursePriceSlot/index.js.map +1 -0
- package/dist/slots/CourseAboutSidebarSlot/index.d.ts +6 -0
- package/dist/slots/CourseAboutSidebarSlot/index.js +6 -0
- package/dist/slots/CourseAboutSidebarSlot/index.js.map +1 -0
- package/dist/slots/CourseAboutSidebarSocialSlot/index.d.ts +6 -0
- package/dist/slots/CourseAboutSidebarSocialSlot/index.js +22 -0
- package/dist/slots/CourseAboutSidebarSocialSlot/index.js.map +1 -0
- package/dist/slots/CourseCatalogDataTableSlots/CourseCatalogDataTableCardViewSlot/CourseCatalogDataTableCourseCardSlot/index.d.ts +16 -0
- package/dist/slots/CourseCatalogDataTableSlots/CourseCatalogDataTableCardViewSlot/CourseCatalogDataTableCourseCardSlot/index.js +18 -0
- package/dist/slots/CourseCatalogDataTableSlots/CourseCatalogDataTableCardViewSlot/CourseCatalogDataTableCourseCardSlot/index.js.map +1 -0
- package/dist/slots/CourseCatalogDataTableSlots/CourseCatalogDataTableCardViewSlot/index.d.ts +6 -0
- package/dist/slots/CourseCatalogDataTableSlots/CourseCatalogDataTableCardViewSlot/index.js +11 -0
- package/dist/slots/CourseCatalogDataTableSlots/CourseCatalogDataTableCardViewSlot/index.js.map +1 -0
- package/dist/slots/CourseCatalogDataTableSlots/CourseCatalogDataTableControlBarSlot/index.d.ts +6 -0
- package/dist/slots/CourseCatalogDataTableSlots/CourseCatalogDataTableControlBarSlot/index.js +6 -0
- package/dist/slots/CourseCatalogDataTableSlots/CourseCatalogDataTableControlBarSlot/index.js.map +1 -0
- package/dist/slots/CourseCatalogDataTableSlots/CourseCatalogDataTableSlot/index.d.ts +23 -0
- package/dist/slots/CourseCatalogDataTableSlots/CourseCatalogDataTableSlot/index.js +17 -0
- package/dist/slots/CourseCatalogDataTableSlots/CourseCatalogDataTableSlot/index.js.map +1 -0
- package/dist/slots/CourseCatalogDataTableSlots/CourseCatalogDataTableTableFooterSlot/index.d.ts +2 -0
- package/dist/slots/CourseCatalogDataTableSlots/CourseCatalogDataTableTableFooterSlot/index.js +6 -0
- package/dist/slots/CourseCatalogDataTableSlots/CourseCatalogDataTableTableFooterSlot/index.js.map +1 -0
- package/dist/slots/CourseCatalogDataTableSlots/index.d.ts +6 -0
- package/dist/slots/CourseCatalogDataTableSlots/index.js +7 -0
- package/dist/slots/CourseCatalogDataTableSlots/index.js.map +1 -0
- package/dist/slots/CourseCatalogIntroSlot/index.d.ts +6 -0
- package/dist/slots/CourseCatalogIntroSlot/index.js +17 -0
- package/dist/slots/CourseCatalogIntroSlot/index.js.map +1 -0
- package/dist/slots/CourseCatalogSearchFieldSlot/index.d.ts +7 -0
- package/dist/slots/CourseCatalogSearchFieldSlot/index.js +21 -0
- package/dist/slots/CourseCatalogSearchFieldSlot/index.js.map +1 -0
- package/dist/slots/HomeBannerSlot/index.d.ts +2 -0
- package/dist/slots/HomeBannerSlot/index.js +6 -0
- package/dist/slots/HomeBannerSlot/index.js.map +1 -0
- package/dist/slots/HomeCourseCardSlot/index.d.ts +16 -0
- package/dist/slots/HomeCourseCardSlot/index.js +18 -0
- package/dist/slots/HomeCourseCardSlot/index.js.map +1 -0
- package/dist/slots/HomeCoursesListSlot/index.d.ts +2 -0
- package/dist/slots/HomeCoursesListSlot/index.js +6 -0
- package/dist/slots/HomeCoursesListSlot/index.js.map +1 -0
- package/dist/slots/HomeOverlayHtmlSlot/index.d.ts +2 -0
- package/dist/slots/HomeOverlayHtmlSlot/index.js +6 -0
- package/dist/slots/HomeOverlayHtmlSlot/index.js.map +1 -0
- package/dist/slots/HomePromoVideoSlots/HomePromoVideoButtonSlot/index.d.ts +4 -0
- package/dist/slots/HomePromoVideoSlots/HomePromoVideoButtonSlot/index.js +8 -0
- package/dist/slots/HomePromoVideoSlots/HomePromoVideoButtonSlot/index.js.map +1 -0
- package/dist/slots/HomePromoVideoSlots/HomePromoVideoModalContentSlot/index.d.ts +6 -0
- package/dist/slots/HomePromoVideoSlots/HomePromoVideoModalContentSlot/index.js +9 -0
- package/dist/slots/HomePromoVideoSlots/HomePromoVideoModalContentSlot/index.js.map +1 -0
- package/dist/slots/HomePromoVideoSlots/HomePromoVideoModalSlot/index.d.ts +6 -0
- package/dist/slots/HomePromoVideoSlots/HomePromoVideoModalSlot/index.js +6 -0
- package/dist/slots/HomePromoVideoSlots/HomePromoVideoModalSlot/index.js.map +1 -0
- package/dist/slots/HomePromoVideoSlots/index.d.ts +4 -0
- package/dist/slots/HomePromoVideoSlots/index.js +5 -0
- package/dist/slots/HomePromoVideoSlots/index.js.map +1 -0
- package/dist/slots/LoaderSlot/index.d.ts +3 -0
- package/dist/slots/LoaderSlot/index.js +4 -0
- package/dist/slots/LoaderSlot/index.js.map +1 -0
- package/dist/slots.d.ts +3 -0
- package/dist/slots.js +7 -0
- package/dist/slots.js.map +1 -0
- package/dist/style.scss +4 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.js +9 -0
- package/dist/utils.js.map +1 -0
- package/dist/widgets/CatalogHeader/CoursesLinkMenuItem.d.ts +3 -0
- package/dist/widgets/CatalogHeader/CoursesLinkMenuItem.js +9 -0
- package/dist/widgets/CatalogHeader/CoursesLinkMenuItem.js.map +1 -0
- package/dist/widgets/CatalogHeader/DiscoverLinkMenuItem.d.ts +3 -0
- package/dist/widgets/CatalogHeader/DiscoverLinkMenuItem.js +9 -0
- package/dist/widgets/CatalogHeader/DiscoverLinkMenuItem.js.map +1 -0
- package/dist/widgets/CatalogHeader/ExploreCoursesLinkMenuItem.d.ts +3 -0
- package/dist/widgets/CatalogHeader/ExploreCoursesLinkMenuItem.js +9 -0
- package/dist/widgets/CatalogHeader/ExploreCoursesLinkMenuItem.js.map +1 -0
- package/dist/widgets/CatalogHeader/ProgramsLinkMenuItem.d.ts +3 -0
- package/dist/widgets/CatalogHeader/ProgramsLinkMenuItem.js +9 -0
- package/dist/widgets/CatalogHeader/ProgramsLinkMenuItem.js.map +1 -0
- package/dist/widgets/CatalogHeader/app.d.ts +3 -0
- package/dist/widgets/CatalogHeader/app.js +55 -0
- package/dist/widgets/CatalogHeader/app.js.map +1 -0
- package/dist/widgets/CatalogHeader/index.d.ts +1 -0
- package/dist/widgets/CatalogHeader/index.js +2 -0
- package/dist/widgets/CatalogHeader/index.js.map +1 -0
- package/dist/widgets/CatalogHeader/messages.d.ts +32 -0
- package/dist/widgets/CatalogHeader/messages.js +25 -0
- package/dist/widgets/CatalogHeader/messages.js.map +1 -0
- package/package.json +86 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { defineMessages } from '@openedx/frontend-base';
|
|
2
|
+
const messages = defineMessages({
|
|
3
|
+
statusMessageEnrolled: {
|
|
4
|
+
id: 'category.course-about.course-intro.status-message.enrolled',
|
|
5
|
+
defaultMessage: 'You are enrolled in this course',
|
|
6
|
+
description: 'The text for the status message when the user is enrolled in the course.',
|
|
7
|
+
},
|
|
8
|
+
viewCourseBtn: {
|
|
9
|
+
id: 'category.course-about.course-intro.view-course-btn',
|
|
10
|
+
defaultMessage: 'View course',
|
|
11
|
+
description: 'The text for the button to view the course.',
|
|
12
|
+
},
|
|
13
|
+
statusMessageFull: {
|
|
14
|
+
id: 'category.course-about.course-intro.status-message.full',
|
|
15
|
+
defaultMessage: 'Course is full',
|
|
16
|
+
description: 'The text for the status message when the course is full.',
|
|
17
|
+
},
|
|
18
|
+
statusMessageEnrollmentInvitationOnly: {
|
|
19
|
+
id: 'category.course-about.course-intro.status-message.enrollment-invitation-only',
|
|
20
|
+
defaultMessage: 'Enrollment in this course is by invitation only',
|
|
21
|
+
description: 'The text for the status message when the enrollment is by invitation only.',
|
|
22
|
+
},
|
|
23
|
+
statusMessageEnrollmentClosed: {
|
|
24
|
+
id: 'category.course-about.course-intro.status-message.enrollment-closed',
|
|
25
|
+
defaultMessage: 'Enrollment is closed',
|
|
26
|
+
description: 'The text for the status message when the enrollment is closed.',
|
|
27
|
+
},
|
|
28
|
+
enrollNowBtn: {
|
|
29
|
+
id: 'category.course-about.course-intro.enroll-now-btn',
|
|
30
|
+
defaultMessage: 'Enroll now',
|
|
31
|
+
description: 'The text for the button to enroll in the course.',
|
|
32
|
+
},
|
|
33
|
+
enrollNowBtnPending: {
|
|
34
|
+
id: 'category.course-about.course-intro.enroll-now-btn-pending',
|
|
35
|
+
defaultMessage: 'Enrolling...',
|
|
36
|
+
description: 'The text for the button to enroll in the course when the enrollment is pending.',
|
|
37
|
+
},
|
|
38
|
+
statusMessageEnrollmentError: {
|
|
39
|
+
id: 'category.course-about.course-intro.status-message.enrollment-error',
|
|
40
|
+
defaultMessage: 'An error occurred. Please try again later.',
|
|
41
|
+
description: 'The text for the status message when an error occurs during enrollment.',
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
export default messages;
|
|
45
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/course-about/course-intro/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,qBAAqB,EAAE;QACrB,EAAE,EAAE,4DAA4D;QAChE,cAAc,EAAE,iCAAiC;QACjD,WAAW,EAAE,0EAA0E;KACxF;IACD,aAAa,EAAE;QACb,EAAE,EAAE,oDAAoD;QACxD,cAAc,EAAE,aAAa;QAC7B,WAAW,EAAE,6CAA6C;KAC3D;IACD,iBAAiB,EAAE;QACjB,EAAE,EAAE,wDAAwD;QAC5D,cAAc,EAAE,gBAAgB;QAChC,WAAW,EAAE,0DAA0D;KACxE;IACD,qCAAqC,EAAE;QACrC,EAAE,EAAE,8EAA8E;QAClF,cAAc,EAAE,iDAAiD;QACjE,WAAW,EAAE,4EAA4E;KAC1F;IACD,6BAA6B,EAAE;QAC7B,EAAE,EAAE,qEAAqE;QACzE,cAAc,EAAE,sBAAsB;QACtC,WAAW,EAAE,gEAAgE;KAC9E;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,mDAAmD;QACvD,cAAc,EAAE,YAAY;QAC5B,WAAW,EAAE,kDAAkD;KAChE;IACD,mBAAmB,EAAE;QACnB,EAAE,EAAE,2DAA2D;QAC/D,cAAc,EAAE,cAAc;QAC9B,WAAW,EAAE,iFAAiF;KAC/F;IACD,4BAA4B,EAAE;QAC5B,EAAE,EAAE,oEAAoE;QACxE,cAAc,EAAE,4CAA4C;QAC5D,WAAW,EAAE,yEAAyE;KACvF;CACF,CAAC,CAAC;AAEH,eAAe,QAAQ,CAAC","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n statusMessageEnrolled: {\n id: 'category.course-about.course-intro.status-message.enrolled',\n defaultMessage: 'You are enrolled in this course',\n description: 'The text for the status message when the user is enrolled in the course.',\n },\n viewCourseBtn: {\n id: 'category.course-about.course-intro.view-course-btn',\n defaultMessage: 'View course',\n description: 'The text for the button to view the course.',\n },\n statusMessageFull: {\n id: 'category.course-about.course-intro.status-message.full',\n defaultMessage: 'Course is full',\n description: 'The text for the status message when the course is full.',\n },\n statusMessageEnrollmentInvitationOnly: {\n id: 'category.course-about.course-intro.status-message.enrollment-invitation-only',\n defaultMessage: 'Enrollment in this course is by invitation only',\n description: 'The text for the status message when the enrollment is by invitation only.',\n },\n statusMessageEnrollmentClosed: {\n id: 'category.course-about.course-intro.status-message.enrollment-closed',\n defaultMessage: 'Enrollment is closed',\n description: 'The text for the status message when the enrollment is closed.',\n },\n enrollNowBtn: {\n id: 'category.course-about.course-intro.enroll-now-btn',\n defaultMessage: 'Enroll now',\n description: 'The text for the button to enroll in the course.',\n },\n enrollNowBtnPending: {\n id: 'category.course-about.course-intro.enroll-now-btn-pending',\n defaultMessage: 'Enrolling...',\n description: 'The text for the button to enroll in the course when the enrollment is pending.',\n },\n statusMessageEnrollmentError: {\n id: 'category.course-about.course-intro.status-message.enrollment-error',\n defaultMessage: 'An error occurred. Please try again later.',\n description: 'The text for the status message when an error occurs during enrollment.',\n },\n});\n\nexport default messages;\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { getAppConfig } from '@openedx/frontend-base';
|
|
2
|
+
import { appId } from '../../constants';
|
|
3
|
+
/**
|
|
4
|
+
* Returns the absolute URL to the learning home page for a given course.
|
|
5
|
+
*/
|
|
6
|
+
export const getLearningHomePageUrl = (courseId) => `${getAppConfig(appId).LEARNING_BASE_URL}/course/${courseId}/home`;
|
|
7
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/course-about/course-intro/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,iBAA2B,WAAW,QAAQ,OAAO,CAAC","sourcesContent":["import { getAppConfig } from '@openedx/frontend-base';\n\nimport { appId } from '@src/constants';\n\n/**\n * Returns the absolute URL to the learning home page for a given course.\n */\nexport const getLearningHomePageUrl = (courseId: string) => `${getAppConfig(appId).LEARNING_BASE_URL as string}/course/${courseId}/home`;\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, Container, useMediaQuery, breakpoints, Card, ActionRow, } from '@openedx/paragon';
|
|
3
|
+
import { getAuthenticatedUser, getSiteConfig, useIntl, } from '@openedx/frontend-base';
|
|
4
|
+
import messages from '../messages';
|
|
5
|
+
import { processOverviewContent } from './utils';
|
|
6
|
+
export const CourseOverview = ({ overviewData, courseId }) => {
|
|
7
|
+
const intl = useIntl();
|
|
8
|
+
const authenticatedUser = getAuthenticatedUser();
|
|
9
|
+
const isGlobalStaff = (authenticatedUser === null || authenticatedUser === void 0 ? void 0 : authenticatedUser.administrator) || false;
|
|
10
|
+
const isExtraSmall = useMediaQuery({ maxWidth: breakpoints.extraSmall.maxWidth });
|
|
11
|
+
const processedOverviewData = processOverviewContent(overviewData, getSiteConfig().lmsBaseUrl);
|
|
12
|
+
const hasOverviewContent = processedOverviewData.trim().length > 0;
|
|
13
|
+
if (!hasOverviewContent) {
|
|
14
|
+
if (!isGlobalStaff) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
return (_jsx(ActionRow, { children: _jsx(Button, { as: "a", size: "sm", block: isExtraSmall, variant: "outline-primary", href: `${getSiteConfig().cmsBaseUrl}/settings/details/${courseId}`, children: intl.formatMessage(messages.viewAboutPageInStudio) }) }));
|
|
18
|
+
}
|
|
19
|
+
return (_jsx(Container, { className: "px-0", children: _jsxs(Card, { children: [isGlobalStaff && (_jsx(Card.Header, { actions: (_jsx(ActionRow, { children: _jsx(Button, { as: "a", size: "sm", block: isExtraSmall, variant: "outline-primary", href: `${getSiteConfig().cmsBaseUrl}/settings/details/${courseId}`, children: intl.formatMessage(messages.viewAboutPageInStudio) }) })) })), _jsx(Card.Section, { children: _jsx("div", { className: "course-about-overview", dangerouslySetInnerHTML: { __html: processedOverviewData } }) })] }) }));
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/course-about/course-overview/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,GAC/D,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,oBAAoB,EAAE,aAAa,EAAE,OAAO,GAC7C,MAAM,wBAAwB,CAAC;AAEhC,OAAO,QAAQ,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAuB,EAAE,EAAE;IAChF,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,MAAM,aAAa,GAAG,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,aAAa,KAAI,KAAK,CAAC;IAChE,MAAM,YAAY,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;IAElF,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,YAAY,EAAE,aAAa,EAAE,CAAC,UAAU,CAAC,CAAC;IAC/F,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAEnE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CACL,KAAC,SAAS,cACR,KAAC,MAAM,IACL,EAAE,EAAC,GAAG,EACN,IAAI,EAAC,IAAI,EACT,KAAK,EAAE,YAAY,EACnB,OAAO,EAAC,iBAAiB,EACzB,IAAI,EAAE,GAAG,aAAa,EAAE,CAAC,UAAU,qBAAqB,QAAQ,EAAE,YAEjE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAC5C,GACC,CACb,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,SAAS,IAAC,SAAS,EAAC,MAAM,YACzB,MAAC,IAAI,eACF,aAAa,IAAI,CAChB,KAAC,IAAI,CAAC,MAAM,IACV,OAAO,EAAE,CACP,KAAC,SAAS,cACR,KAAC,MAAM,IACL,EAAE,EAAC,GAAG,EACN,IAAI,EAAC,IAAI,EACT,KAAK,EAAE,YAAY,EACnB,OAAO,EAAC,iBAAiB,EACzB,IAAI,EAAE,GAAG,aAAa,EAAE,CAAC,UAAU,qBAAqB,QAAQ,EAAE,YAEjE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAC5C,GACC,CACb,GACD,CACH,EACD,KAAC,IAAI,CAAC,OAAO,cACX,cAAK,SAAS,EAAC,uBAAuB,EAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,GAAI,GACxF,IACV,GACG,CACb,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n Button, Container, useMediaQuery, breakpoints, Card, ActionRow,\n} from '@openedx/paragon';\nimport {\n getAuthenticatedUser, getSiteConfig, useIntl,\n} from '@openedx/frontend-base';\n\nimport messages from '../messages';\nimport type { CourseOverviewProps } from './types';\nimport { processOverviewContent } from './utils';\n\nexport const CourseOverview = ({ overviewData, courseId }: CourseOverviewProps) => {\n const intl = useIntl();\n const authenticatedUser = getAuthenticatedUser();\n const isGlobalStaff = authenticatedUser?.administrator || false;\n const isExtraSmall = useMediaQuery({ maxWidth: breakpoints.extraSmall.maxWidth });\n\n const processedOverviewData = processOverviewContent(overviewData, getSiteConfig().lmsBaseUrl);\n const hasOverviewContent = processedOverviewData.trim().length > 0;\n\n if (!hasOverviewContent) {\n if (!isGlobalStaff) {\n return null;\n }\n\n return (\n <ActionRow>\n <Button\n as=\"a\"\n size=\"sm\"\n block={isExtraSmall}\n variant=\"outline-primary\"\n href={`${getSiteConfig().cmsBaseUrl}/settings/details/${courseId}`}\n >\n {intl.formatMessage(messages.viewAboutPageInStudio)}\n </Button>\n </ActionRow>\n );\n }\n\n return (\n <Container className=\"px-0\">\n <Card>\n {isGlobalStaff && (\n <Card.Header\n actions={(\n <ActionRow>\n <Button\n as=\"a\"\n size=\"sm\"\n block={isExtraSmall}\n variant=\"outline-primary\"\n href={`${getSiteConfig().cmsBaseUrl}/settings/details/${courseId}`}\n >\n {intl.formatMessage(messages.viewAboutPageInStudio)}\n </Button>\n </ActionRow>\n )}\n />\n )}\n <Card.Section>\n <div className=\"course-about-overview\" dangerouslySetInnerHTML={{ __html: processedOverviewData }} />\n </Card.Section>\n </Card>\n </Container>\n );\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/course-about/course-overview/types.ts"],"names":[],"mappings":"","sourcesContent":["export interface CourseOverviewProps {\n overviewData: string,\n courseId: string,\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Processes overview content to replace image paths
|
|
3
|
+
* @param overview - The overview HTML content
|
|
4
|
+
* @returns Processed overview content with updated image paths
|
|
5
|
+
*/
|
|
6
|
+
export declare const processOverviewContent: (overview: string, lmsBaseUrl: string) => string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Processes overview content to replace image paths
|
|
3
|
+
* @param overview - The overview HTML content
|
|
4
|
+
* @returns Processed overview content with updated image paths
|
|
5
|
+
*/
|
|
6
|
+
export const processOverviewContent = (overview, lmsBaseUrl) => {
|
|
7
|
+
if (!overview) {
|
|
8
|
+
return overview;
|
|
9
|
+
}
|
|
10
|
+
return overview.replace(/src="\/(static\/images\/|asset)/g, (_, path) => `src="${lmsBaseUrl}/${path}`);
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/course-about/course-overview/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAgB,EAAE,UAAkB,EAAU,EAAE;IACrF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CACrB,kCAAkC,EAClC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,UAAU,IAAI,IAAI,EAAE,CAC1C,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/**\n * Processes overview content to replace image paths\n * @param overview - The overview HTML content\n * @returns Processed overview content with updated image paths\n */\nexport const processOverviewContent = (overview: string, lmsBaseUrl: string): string => {\n if (!overview) {\n return overview;\n }\n\n return overview.replace(\n /src=\"\\/(static\\/images\\/|asset)/g,\n (_, path) => `src=\"${lmsBaseUrl}/${path}`,\n );\n};\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Card } from '@openedx/paragon';
|
|
3
|
+
import SidebarSocial from './sidebar-social/SidebarSocial';
|
|
4
|
+
import SidebarDetails from './sidebar-details/SidebarDetails';
|
|
5
|
+
const CourseSidebar = ({ courseAboutData }) => (_jsx(Card, { children: _jsxs(Card.Section, { className: "p-0", children: [_jsx(SidebarSocial, { courseAboutData: courseAboutData }), _jsx(SidebarDetails, { courseAboutData: courseAboutData })] }) }));
|
|
6
|
+
export default CourseSidebar;
|
|
7
|
+
//# sourceMappingURL=CourseSidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CourseSidebar.js","sourceRoot":"","sources":["../../../src/course-about/course-sidebar/CourseSidebar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAC3D,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAG9D,MAAM,aAAa,GAAG,CAAC,EAAE,eAAe,EAAwC,EAAE,EAAE,CAAC,CACnF,KAAC,IAAI,cACH,MAAC,IAAI,CAAC,OAAO,IAAC,SAAS,EAAC,KAAK,aAC3B,KAAC,aAAa,IAAC,eAAe,EAAE,eAAe,GAAI,EACnD,KAAC,cAAc,IAAC,eAAe,EAAE,eAAe,GAAI,IACvC,GACV,CACR,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import { Card } from '@openedx/paragon';\n\nimport SidebarSocial from './sidebar-social/SidebarSocial';\nimport SidebarDetails from './sidebar-details/SidebarDetails';\nimport type { CourseAboutData } from '../types';\n\nconst CourseSidebar = ({ courseAboutData }: { courseAboutData: CourseAboutData }) => (\n <Card>\n <Card.Section className=\"p-0\">\n <SidebarSocial courseAboutData={courseAboutData} />\n <SidebarDetails courseAboutData={courseAboutData} />\n </Card.Section>\n </Card>\n);\n\nexport default CourseSidebar;\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Stack, Container, Card } from '@openedx/paragon';
|
|
3
|
+
import { ListView as ListViewIcon } from '@openedx/paragon/icons';
|
|
4
|
+
import { getUrlByRouteRole, useIntl } from '@openedx/frontend-base';
|
|
5
|
+
import { Link } from 'react-router-dom';
|
|
6
|
+
import CourseAboutSidebarCoursePriceSlot from '../../../slots/CourseAboutSidebarCoursePriceSlot';
|
|
7
|
+
import { courseAboutRole } from '../../../constants';
|
|
8
|
+
import SidebarDetailsItem from './SidebarDetailsItem';
|
|
9
|
+
import { getSidebarDetails } from './utils';
|
|
10
|
+
import messages from './messages';
|
|
11
|
+
const SidebarDetails = ({ courseAboutData }) => {
|
|
12
|
+
const intl = useIntl();
|
|
13
|
+
const renderPrerequisites = () => {
|
|
14
|
+
var _a, _b;
|
|
15
|
+
if (!((_a = courseAboutData.preRequisiteCourses) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const prerequisite = courseAboutData.preRequisiteCourses[0];
|
|
19
|
+
const prerequisiteUrl = (_b = getUrlByRouteRole(courseAboutRole)) === null || _b === void 0 ? void 0 : _b.replace(':courseId', prerequisite.key);
|
|
20
|
+
if (!prerequisiteUrl) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
return (_jsxs(_Fragment, { children: [_jsx(SidebarDetailsItem, { icon: ListViewIcon, label: intl.formatMessage(messages.prerequisites), value: _jsx(Link, { to: prerequisiteUrl, children: prerequisite.display }) }, "prerequisites"), _jsx(Container, { className: "p-3", children: intl.formatMessage(messages.prerequisitesCompletion, {
|
|
24
|
+
prerequisite: _jsx(Link, { to: prerequisiteUrl, children: prerequisite.display }),
|
|
25
|
+
}) }), _jsx(Card.Divider, {})] }));
|
|
26
|
+
};
|
|
27
|
+
const renderAboutSidebarHtml = () => {
|
|
28
|
+
if (!courseAboutData.aboutSidebarHtml) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return (_jsx(Container, { className: "p-3", children: _jsx("div", { dangerouslySetInnerHTML: { __html: courseAboutData.aboutSidebarHtml } }) }));
|
|
32
|
+
};
|
|
33
|
+
return (_jsxs(Stack, { children: [getSidebarDetails(intl, courseAboutData)
|
|
34
|
+
.filter(detail => detail.show)
|
|
35
|
+
.map(detail => (_jsx(SidebarDetailsItem, { icon: detail.icon, label: detail.label, value: detail.value }, detail.key))), courseAboutData.coursePrice && (_jsx(CourseAboutSidebarCoursePriceSlot, { coursePrice: courseAboutData.coursePrice })), renderPrerequisites(), renderAboutSidebarHtml()] }));
|
|
36
|
+
};
|
|
37
|
+
export default SidebarDetails;
|
|
38
|
+
//# sourceMappingURL=SidebarDetails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarDetails.js","sourceRoot":"","sources":["../../../../src/course-about/course-sidebar/sidebar-details/SidebarDetails.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,iCAAiC,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,cAAc,GAAG,CAAC,EAAE,eAAe,EAAwC,EAAE,EAAE;IACnF,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,MAAM,mBAAmB,GAAG,GAAG,EAAE;;QAC/B,IAAI,CAAC,CAAA,MAAA,eAAe,CAAC,mBAAmB,0CAAE,MAAM,CAAA,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,MAAA,iBAAiB,CAAC,eAAe,CAAC,0CAAE,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;QAEnG,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CACL,8BACE,KAAC,kBAAkB,IAEjB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,EACjD,KAAK,EAAE,KAAC,IAAI,IAAC,EAAE,EAAE,eAAe,YAAG,YAAY,CAAC,OAAO,GAAQ,IAH3D,eAAe,CAInB,EACF,KAAC,SAAS,IAAC,SAAS,EAAC,KAAK,YACvB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,uBAAuB,EAAE;wBACpD,YAAY,EAAE,KAAC,IAAI,IAAC,EAAE,EAAE,eAAe,YAAG,YAAY,CAAC,OAAO,GAAQ;qBACvE,CAAC,GACQ,EACZ,KAAC,IAAI,CAAC,OAAO,KAAG,IACf,CACJ,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAClC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CACL,KAAC,SAAS,IAAC,SAAS,EAAC,KAAK,YAExB,cAAK,uBAAuB,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,gBAAgB,EAAE,GAAI,GACpE,CACb,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,KAAK,eACH,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC;iBACtC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;iBAC7B,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CACb,KAAC,kBAAkB,IAEjB,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,KAAK,EAAE,MAAM,CAAC,KAAK,IAHd,MAAM,CAAC,GAAG,CAIf,CACH,CAAC,EACH,eAAe,CAAC,WAAW,IAAI,CAC9B,KAAC,iCAAiC,IAAC,WAAW,EAAE,eAAe,CAAC,WAAW,GAAI,CAChF,EACA,mBAAmB,EAAE,EACrB,sBAAsB,EAAE,IACnB,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC","sourcesContent":["import { Stack, Container, Card } from '@openedx/paragon';\nimport { ListView as ListViewIcon } from '@openedx/paragon/icons';\nimport { getUrlByRouteRole, useIntl } from '@openedx/frontend-base';\nimport { Link } from 'react-router-dom';\n\nimport CourseAboutSidebarCoursePriceSlot from '@src/slots/CourseAboutSidebarCoursePriceSlot';\nimport { courseAboutRole } from '@src/constants';\nimport type { CourseAboutData } from '../../types';\nimport SidebarDetailsItem from './SidebarDetailsItem';\nimport { getSidebarDetails } from './utils';\nimport messages from './messages';\n\nconst SidebarDetails = ({ courseAboutData }: { courseAboutData: CourseAboutData }) => {\n const intl = useIntl();\n\n const renderPrerequisites = () => {\n if (!courseAboutData.preRequisiteCourses?.length) {\n return null;\n }\n\n const prerequisite = courseAboutData.preRequisiteCourses[0];\n const prerequisiteUrl = getUrlByRouteRole(courseAboutRole)?.replace(':courseId', prerequisite.key);\n\n if (!prerequisiteUrl) {\n return null;\n }\n\n return (\n <>\n <SidebarDetailsItem\n key=\"prerequisites\"\n icon={ListViewIcon}\n label={intl.formatMessage(messages.prerequisites)}\n value={<Link to={prerequisiteUrl}>{prerequisite.display}</Link>}\n />\n <Container className=\"p-3\">\n {intl.formatMessage(messages.prerequisitesCompletion, {\n prerequisite: <Link to={prerequisiteUrl}>{prerequisite.display}</Link>,\n })}\n </Container>\n <Card.Divider />\n </>\n );\n };\n\n const renderAboutSidebarHtml = () => {\n if (!courseAboutData.aboutSidebarHtml) {\n return null;\n }\n\n return (\n <Container className=\"p-3\">\n { }\n <div dangerouslySetInnerHTML={{ __html: courseAboutData.aboutSidebarHtml }} />\n </Container>\n );\n };\n\n return (\n <Stack>\n {getSidebarDetails(intl, courseAboutData)\n .filter(detail => detail.show)\n .map(detail => (\n <SidebarDetailsItem\n key={detail.key}\n icon={detail.icon}\n label={detail.label}\n value={detail.value}\n />\n ))}\n {courseAboutData.coursePrice && (\n <CourseAboutSidebarCoursePriceSlot coursePrice={courseAboutData.coursePrice} />\n )}\n {renderPrerequisites()}\n {renderAboutSidebarHtml()}\n </Stack>\n );\n};\n\nexport default SidebarDetails;\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Icon, Stack, Card } from '@openedx/paragon';
|
|
3
|
+
const SidebarDetailsItem = ({ icon, label, value }) => (_jsxs(_Fragment, { children: [_jsxs(Stack, { className: "justify-content-between flex-wrap p-3", gap: 2, direction: "horizontal", children: [_jsxs(Stack, { direction: "horizontal", gap: 2, children: [_jsx(Icon, { src: icon }), _jsx("span", { "data-testid": "sidebar-details-item-label", children: label })] }), _jsx("span", { className: "font-weight-bolder", "data-testid": "sidebar-details-item-value", children: value })] }), _jsx(Card.Divider, {})] }));
|
|
4
|
+
export default SidebarDetailsItem;
|
|
5
|
+
//# sourceMappingURL=SidebarDetailsItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarDetailsItem.js","sourceRoot":"","sources":["../../../../src/course-about/course-sidebar/sidebar-details/SidebarDetailsItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAIrD,MAAM,kBAAkB,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAA2B,EAAE,EAAE,CAAC,CAC9E,8BACE,MAAC,KAAK,IAAC,SAAS,EAAC,uCAAuC,EAAC,GAAG,EAAE,CAAC,EAAE,SAAS,EAAC,YAAY,aACrF,MAAC,KAAK,IAAC,SAAS,EAAC,YAAY,EAAC,GAAG,EAAE,CAAC,aAClC,KAAC,IAAI,IAAC,GAAG,EAAE,IAAI,GAAI,EACnB,8BAAkB,4BAA4B,YAAE,KAAK,GAAQ,IACvD,EACR,eAAM,SAAS,EAAC,oBAAoB,iBAAa,4BAA4B,YAAE,KAAK,GAAQ,IACtF,EACR,KAAC,IAAI,CAAC,OAAO,KAAG,IACf,CACJ,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["import { Icon, Stack, Card } from '@openedx/paragon';\n\nimport type { SidebarDetailsItemProps } from './types';\n\nconst SidebarDetailsItem = ({ icon, label, value }: SidebarDetailsItemProps) => (\n <>\n <Stack className=\"justify-content-between flex-wrap p-3\" gap={2} direction=\"horizontal\">\n <Stack direction=\"horizontal\" gap={2}>\n <Icon src={icon} />\n <span data-testid=\"sidebar-details-item-label\">{label}</span>\n </Stack>\n <span className=\"font-weight-bolder\" data-testid=\"sidebar-details-item-value\">{value}</span>\n </Stack>\n <Card.Divider />\n </>\n);\n\nexport default SidebarDetailsItem;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/course-about/course-sidebar/sidebar-details/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,aAAa,EAAE,eAAe;IAC9B,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,cAAc;CACpB,CAAC","sourcesContent":["export const SIDEBAR_DETAIL_KEYS = {\n COURSE_NUMBER: 'course-number',\n START_DATE: 'start-date',\n END_DATE: 'end-date',\n EFFORT: 'effort',\n REQUIREMENTS: 'requirements',\n} as const;\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
declare const messages: {
|
|
2
|
+
courseNumber: {
|
|
3
|
+
id: string;
|
|
4
|
+
defaultMessage: string;
|
|
5
|
+
description: string;
|
|
6
|
+
};
|
|
7
|
+
classesStart: {
|
|
8
|
+
id: string;
|
|
9
|
+
defaultMessage: string;
|
|
10
|
+
description: string;
|
|
11
|
+
};
|
|
12
|
+
classesEnd: {
|
|
13
|
+
id: string;
|
|
14
|
+
defaultMessage: string;
|
|
15
|
+
description: string;
|
|
16
|
+
};
|
|
17
|
+
estimatedEffort: {
|
|
18
|
+
id: string;
|
|
19
|
+
defaultMessage: string;
|
|
20
|
+
description: string;
|
|
21
|
+
};
|
|
22
|
+
price: {
|
|
23
|
+
id: string;
|
|
24
|
+
defaultMessage: string;
|
|
25
|
+
description: string;
|
|
26
|
+
};
|
|
27
|
+
requirements: {
|
|
28
|
+
id: string;
|
|
29
|
+
defaultMessage: string;
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
prerequisites: {
|
|
33
|
+
id: string;
|
|
34
|
+
defaultMessage: string;
|
|
35
|
+
description: string;
|
|
36
|
+
};
|
|
37
|
+
prerequisitesCompletion: {
|
|
38
|
+
id: string;
|
|
39
|
+
defaultMessage: string;
|
|
40
|
+
description: string;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
export default messages;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { defineMessages } from '@openedx/frontend-base';
|
|
2
|
+
const messages = defineMessages({
|
|
3
|
+
courseNumber: {
|
|
4
|
+
id: 'catalog.course-about.sidebar-details.course-number',
|
|
5
|
+
defaultMessage: 'Course number',
|
|
6
|
+
description: 'Course number label.',
|
|
7
|
+
},
|
|
8
|
+
classesStart: {
|
|
9
|
+
id: 'catalog.course-about.sidebar-details.classes-start',
|
|
10
|
+
defaultMessage: 'Classes start',
|
|
11
|
+
description: 'Classes start label.',
|
|
12
|
+
},
|
|
13
|
+
classesEnd: {
|
|
14
|
+
id: 'catalog.course-about.sidebar-details.classes-end',
|
|
15
|
+
defaultMessage: 'Classes end',
|
|
16
|
+
description: 'Classes end label.',
|
|
17
|
+
},
|
|
18
|
+
estimatedEffort: {
|
|
19
|
+
id: 'catalog.course-about.sidebar-details.estimated-effort',
|
|
20
|
+
defaultMessage: 'Estimated effort',
|
|
21
|
+
description: 'Estimated effort label.',
|
|
22
|
+
},
|
|
23
|
+
price: {
|
|
24
|
+
id: 'catalog.course-about.sidebar-details.price',
|
|
25
|
+
defaultMessage: 'Price',
|
|
26
|
+
description: 'Price label.',
|
|
27
|
+
},
|
|
28
|
+
requirements: {
|
|
29
|
+
id: 'catalog.course-about.sidebar-details.requirements',
|
|
30
|
+
defaultMessage: 'Requirements',
|
|
31
|
+
description: 'Requirements label.',
|
|
32
|
+
},
|
|
33
|
+
prerequisites: {
|
|
34
|
+
id: 'catalog.course-about.sidebar-details.prerequisites',
|
|
35
|
+
defaultMessage: 'Prerequisites',
|
|
36
|
+
description: 'Prerequisites label.',
|
|
37
|
+
},
|
|
38
|
+
prerequisitesCompletion: {
|
|
39
|
+
id: 'catalog.course-about.sidebar-details.prerequisites-completion',
|
|
40
|
+
defaultMessage: 'You must successfully complete {prerequisite} before you begin this course.',
|
|
41
|
+
description: 'Text explaining that a prerequisite course must be completed.',
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
export default messages;
|
|
45
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../src/course-about/course-sidebar/sidebar-details/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,YAAY,EAAE;QACZ,EAAE,EAAE,oDAAoD;QACxD,cAAc,EAAE,eAAe;QAC/B,WAAW,EAAE,sBAAsB;KACpC;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,oDAAoD;QACxD,cAAc,EAAE,eAAe;QAC/B,WAAW,EAAE,sBAAsB;KACpC;IACD,UAAU,EAAE;QACV,EAAE,EAAE,kDAAkD;QACtD,cAAc,EAAE,aAAa;QAC7B,WAAW,EAAE,oBAAoB;KAClC;IACD,eAAe,EAAE;QACf,EAAE,EAAE,uDAAuD;QAC3D,cAAc,EAAE,kBAAkB;QAClC,WAAW,EAAE,yBAAyB;KACvC;IACD,KAAK,EAAE;QACL,EAAE,EAAE,4CAA4C;QAChD,cAAc,EAAE,OAAO;QACvB,WAAW,EAAE,cAAc;KAC5B;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,mDAAmD;QACvD,cAAc,EAAE,cAAc;QAC9B,WAAW,EAAE,qBAAqB;KACnC;IACD,aAAa,EAAE;QACb,EAAE,EAAE,oDAAoD;QACxD,cAAc,EAAE,eAAe;QAC/B,WAAW,EAAE,sBAAsB;KACpC;IACD,uBAAuB,EAAE;QACvB,EAAE,EAAE,+DAA+D;QACnE,cAAc,EAAE,6EAA6E;QAC7F,WAAW,EAAE,+DAA+D;KAC7E;CACF,CAAC,CAAC;AAEH,eAAe,QAAQ,CAAC","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n courseNumber: {\n id: 'catalog.course-about.sidebar-details.course-number',\n defaultMessage: 'Course number',\n description: 'Course number label.',\n },\n classesStart: {\n id: 'catalog.course-about.sidebar-details.classes-start',\n defaultMessage: 'Classes start',\n description: 'Classes start label.',\n },\n classesEnd: {\n id: 'catalog.course-about.sidebar-details.classes-end',\n defaultMessage: 'Classes end',\n description: 'Classes end label.',\n },\n estimatedEffort: {\n id: 'catalog.course-about.sidebar-details.estimated-effort',\n defaultMessage: 'Estimated effort',\n description: 'Estimated effort label.',\n },\n price: {\n id: 'catalog.course-about.sidebar-details.price',\n defaultMessage: 'Price',\n description: 'Price label.',\n },\n requirements: {\n id: 'catalog.course-about.sidebar-details.requirements',\n defaultMessage: 'Requirements',\n description: 'Requirements label.',\n },\n prerequisites: {\n id: 'catalog.course-about.sidebar-details.prerequisites',\n defaultMessage: 'Prerequisites',\n description: 'Prerequisites label.',\n },\n prerequisitesCompletion: {\n id: 'catalog.course-about.sidebar-details.prerequisites-completion',\n defaultMessage: 'You must successfully complete {prerequisite} before you begin this course.',\n description: 'Text explaining that a prerequisite course must be completed.',\n },\n});\n\nexport default messages;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/course-about/course-sidebar/sidebar-details/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactNode, ComponentType } from 'react';\n\nexport interface SidebarDetailsItemProps {\n icon: ComponentType<{ className?: string }>,\n label: string,\n value?: string | ReactNode,\n}\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type IntlShape } from '../../../utils';
|
|
2
|
+
import type { CourseAboutData } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Generates an array of sidebar detail objects for course information display.
|
|
5
|
+
* Each detail object contains metadata about a specific course attribute.
|
|
6
|
+
*/
|
|
7
|
+
export declare const getSidebarDetails: (intl: IntlShape, courseAboutData: CourseAboutData) => ({
|
|
8
|
+
key: "course-number";
|
|
9
|
+
icon: any;
|
|
10
|
+
label: string;
|
|
11
|
+
value: string;
|
|
12
|
+
show: boolean;
|
|
13
|
+
} | {
|
|
14
|
+
key: "start-date";
|
|
15
|
+
icon: any;
|
|
16
|
+
label: string;
|
|
17
|
+
value: string;
|
|
18
|
+
show: boolean;
|
|
19
|
+
} | {
|
|
20
|
+
key: "end-date";
|
|
21
|
+
icon: any;
|
|
22
|
+
label: string;
|
|
23
|
+
value: string;
|
|
24
|
+
show: boolean;
|
|
25
|
+
} | {
|
|
26
|
+
key: "effort";
|
|
27
|
+
icon: any;
|
|
28
|
+
label: string;
|
|
29
|
+
value: string | null;
|
|
30
|
+
show: boolean;
|
|
31
|
+
} | {
|
|
32
|
+
key: "requirements";
|
|
33
|
+
icon: any;
|
|
34
|
+
label: string;
|
|
35
|
+
value: string;
|
|
36
|
+
show: boolean;
|
|
37
|
+
})[];
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { AccessTimeFilled as AccessTimeFilledIcon, Event as EventIcon, Info as InfoIcon, } from '@openedx/paragon/icons';
|
|
2
|
+
import { formatDate } from '../../../utils';
|
|
3
|
+
import { SIDEBAR_DETAIL_KEYS } from './constants';
|
|
4
|
+
import messages from './messages';
|
|
5
|
+
/**
|
|
6
|
+
* Generates an array of sidebar detail objects for course information display.
|
|
7
|
+
* Each detail object contains metadata about a specific course attribute.
|
|
8
|
+
*/
|
|
9
|
+
export const getSidebarDetails = (intl, courseAboutData) => {
|
|
10
|
+
var _a, _b;
|
|
11
|
+
return [
|
|
12
|
+
{
|
|
13
|
+
key: SIDEBAR_DETAIL_KEYS.COURSE_NUMBER,
|
|
14
|
+
icon: InfoIcon,
|
|
15
|
+
label: intl.formatMessage(messages.courseNumber),
|
|
16
|
+
value: courseAboutData.displayNumberWithDefault,
|
|
17
|
+
show: true,
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
key: SIDEBAR_DETAIL_KEYS.START_DATE,
|
|
21
|
+
icon: EventIcon,
|
|
22
|
+
label: intl.formatMessage(messages.classesStart),
|
|
23
|
+
value: formatDate(((_a = (courseAboutData.advertisedStart || courseAboutData.start)) !== null && _a !== void 0 ? _a : ''), intl),
|
|
24
|
+
show: !courseAboutData.startDateIsStillDefault,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
key: SIDEBAR_DETAIL_KEYS.END_DATE,
|
|
28
|
+
icon: EventIcon,
|
|
29
|
+
label: intl.formatMessage(messages.classesEnd),
|
|
30
|
+
value: formatDate(((_b = courseAboutData.end) !== null && _b !== void 0 ? _b : ''), intl),
|
|
31
|
+
show: !!courseAboutData.end,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: SIDEBAR_DETAIL_KEYS.EFFORT,
|
|
35
|
+
icon: AccessTimeFilledIcon,
|
|
36
|
+
label: intl.formatMessage(messages.estimatedEffort),
|
|
37
|
+
value: courseAboutData.effort,
|
|
38
|
+
show: !!courseAboutData.effort,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
key: SIDEBAR_DETAIL_KEYS.REQUIREMENTS,
|
|
42
|
+
icon: InfoIcon,
|
|
43
|
+
label: intl.formatMessage(messages.requirements),
|
|
44
|
+
value: courseAboutData.requirements,
|
|
45
|
+
show: !!(courseAboutData === null || courseAboutData === void 0 ? void 0 : courseAboutData.requirements),
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/course-about/course-sidebar/sidebar-details/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,IAAI,oBAAoB,EACxC,KAAK,IAAI,SAAS,EAClB,IAAI,IAAI,QAAQ,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAkB,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC;;;EAGE;AACF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAe,EACf,eAAgC,EAChC,EAAE;;IAAC,OAAA;QACH;YACE,GAAG,EAAE,mBAAmB,CAAC,aAAa;YACtC,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC;YAChD,KAAK,EAAE,eAAe,CAAC,wBAAwB;YAC/C,IAAI,EAAE,IAAI;SACX;QACD;YACE,GAAG,EAAE,mBAAmB,CAAC,UAAU;YACnC,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC;YAChD,KAAK,EAAE,UAAU,CAAC,CAAC,MAAA,CAAC,eAAe,CAAC,eAAe,IAAI,eAAe,CAAC,KAAK,CAAC,mCAAI,EAAE,CAAC,EAAE,IAAI,CAAC;YAC3F,IAAI,EAAE,CAAC,eAAe,CAAC,uBAAuB;SAC/C;QACD;YACE,GAAG,EAAE,mBAAmB,CAAC,QAAQ;YACjC,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC9C,KAAK,EAAE,UAAU,CAAC,CAAC,MAAA,eAAe,CAAC,GAAG,mCAAI,EAAE,CAAC,EAAE,IAAI,CAAC;YACpD,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG;SAC5B;QACD;YACE,GAAG,EAAE,mBAAmB,CAAC,MAAM;YAC/B,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC;YACnD,KAAK,EAAE,eAAe,CAAC,MAAM;YAC7B,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC,MAAM;SAC/B;QACD;YACE,GAAG,EAAE,mBAAmB,CAAC,YAAY;YACrC,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC;YAChD,KAAK,EAAE,eAAe,CAAC,YAAY;YACnC,IAAI,EAAE,CAAC,CAAC,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,YAAY,CAAA;SACtC;KACF,CAAA;CAAA,CAAC","sourcesContent":["import {\n AccessTimeFilled as AccessTimeFilledIcon,\n Event as EventIcon,\n Info as InfoIcon,\n} from '@openedx/paragon/icons';\n\nimport { formatDate, type IntlShape } from '@src/utils';\nimport { SIDEBAR_DETAIL_KEYS } from './constants';\nimport type { CourseAboutData } from '../../types';\nimport messages from './messages';\n\n/**\n * Generates an array of sidebar detail objects for course information display.\n * Each detail object contains metadata about a specific course attribute.\n*/\nexport const getSidebarDetails = (\n intl: IntlShape,\n courseAboutData: CourseAboutData,\n) => [\n {\n key: SIDEBAR_DETAIL_KEYS.COURSE_NUMBER,\n icon: InfoIcon,\n label: intl.formatMessage(messages.courseNumber),\n value: courseAboutData.displayNumberWithDefault,\n show: true,\n },\n {\n key: SIDEBAR_DETAIL_KEYS.START_DATE,\n icon: EventIcon,\n label: intl.formatMessage(messages.classesStart),\n value: formatDate(((courseAboutData.advertisedStart || courseAboutData.start) ?? ''), intl),\n show: !courseAboutData.startDateIsStillDefault,\n },\n {\n key: SIDEBAR_DETAIL_KEYS.END_DATE,\n icon: EventIcon,\n label: intl.formatMessage(messages.classesEnd),\n value: formatDate((courseAboutData.end ?? ''), intl),\n show: !!courseAboutData.end,\n },\n {\n key: SIDEBAR_DETAIL_KEYS.EFFORT,\n icon: AccessTimeFilledIcon,\n label: intl.formatMessage(messages.estimatedEffort),\n value: courseAboutData.effort,\n show: !!courseAboutData.effort,\n },\n {\n key: SIDEBAR_DETAIL_KEYS.REQUIREMENTS,\n icon: InfoIcon,\n label: intl.formatMessage(messages.requirements),\n value: courseAboutData.requirements,\n show: !!courseAboutData?.requirements,\n },\n];\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { Tooltip, OverlayTrigger, Card, } from '@openedx/paragon';
|
|
4
|
+
import { useIntl } from '@openedx/frontend-base';
|
|
5
|
+
import CourseAboutSidebarSocialSlot from '../../../slots/CourseAboutSidebarSocialSlot';
|
|
6
|
+
import { getSocialLinks } from './utils';
|
|
7
|
+
import messages from './messages';
|
|
8
|
+
const SidebarSocial = ({ courseAboutData }) => {
|
|
9
|
+
const intl = useIntl();
|
|
10
|
+
const socialLinks = useMemo(() => getSocialLinks(intl).map((link) => (Object.assign(Object.assign({}, link), { destination: link.destination(courseAboutData) }))), [courseAboutData, intl]);
|
|
11
|
+
return (_jsx(OverlayTrigger, { placement: "top", overlay: (_jsx(Tooltip, { id: "tooltip-top", children: intl.formatMessage(messages.socialSharingTooltip) })), children: _jsxs("header", { children: [_jsx(CourseAboutSidebarSocialSlot, { socialLinks: socialLinks }), _jsx(Card.Divider, {})] }) }));
|
|
12
|
+
};
|
|
13
|
+
export default SidebarSocial;
|
|
14
|
+
//# sourceMappingURL=SidebarSocial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarSocial.js","sourceRoot":"","sources":["../../../../src/course-about/course-sidebar/sidebar-social/SidebarSocial.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EACL,OAAO,EAAE,cAAc,EAAE,IAAI,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGjD,OAAO,4BAA4B,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,aAAa,GAAG,CAAC,EAAE,eAAe,EAAwC,EAAE,EAAE;IAClF,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,MAAM,WAAW,GAAG,OAAO,CACzB,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iCACpC,IAAI,KACP,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAC9C,CAAC,EACH,CAAC,eAAe,EAAE,IAAI,CAAC,CACxB,CAAC;IAEF,OAAO,CACL,KAAC,cAAc,IACb,SAAS,EAAC,KAAK,EACf,OAAO,EAAE,CACP,KAAC,OAAO,IAAC,EAAE,EAAC,aAAa,YACtB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC,GAC1C,CACX,YAED,6BACE,KAAC,4BAA4B,IAAC,WAAW,EAAE,WAAW,GAAI,EAC1D,KAAC,IAAI,CAAC,OAAO,KAAG,IACT,GACM,CAClB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import { useMemo } from 'react';\nimport {\n Tooltip, OverlayTrigger, Card,\n} from '@openedx/paragon';\nimport { useIntl } from '@openedx/frontend-base';\n\nimport type { CourseAboutData } from '@src/course-about/types';\nimport CourseAboutSidebarSocialSlot from '@src/slots/CourseAboutSidebarSocialSlot';\nimport { getSocialLinks } from './utils';\nimport messages from './messages';\n\nconst SidebarSocial = ({ courseAboutData }: { courseAboutData: CourseAboutData }) => {\n const intl = useIntl();\n\n const socialLinks = useMemo(\n () => getSocialLinks(intl).map((link) => ({\n ...link,\n destination: link.destination(courseAboutData),\n })),\n [courseAboutData, intl],\n );\n\n return (\n <OverlayTrigger\n placement=\"top\"\n overlay={(\n <Tooltip id=\"tooltip-top\">\n {intl.formatMessage(messages.socialSharingTooltip)}\n </Tooltip>\n )}\n >\n <header>\n <CourseAboutSidebarSocialSlot socialLinks={socialLinks} />\n <Card.Divider />\n </header>\n </OverlayTrigger>\n );\n};\n\nexport default SidebarSocial;\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Icon, Hyperlink } from '@openedx/paragon';
|
|
3
|
+
const SocialLinks = ({ socialLinks }) => (_jsx(_Fragment, { children: socialLinks.map((link) => (_jsx(Hyperlink, { destination: link.destination, children: _jsx(Icon, { src: link.icon, screenReaderText: link.screenReaderText, size: "lg" }) }, link.id))) }));
|
|
4
|
+
export default SocialLinks;
|
|
5
|
+
//# sourceMappingURL=SocialLinks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SocialLinks.js","sourceRoot":"","sources":["../../../../src/course-about/course-sidebar/sidebar-social/SocialLinks.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAInD,MAAM,WAAW,GAAG,CAAC,EAAE,WAAW,EAAiC,EAAE,EAAE,CAAC,CACtE,4BACG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACzB,KAAC,SAAS,IAAe,WAAW,EAAE,IAAI,CAAC,WAAW,YACpD,KAAC,IAAI,IACH,GAAG,EAAE,IAAI,CAAC,IAAI,EACd,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,IAAI,EAAC,IAAI,GACT,IALY,IAAI,CAAC,EAAE,CAMX,CACb,CAAC,GACD,CACJ,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import { Icon, Hyperlink } from '@openedx/paragon';\n\nimport type { SocialLink } from './types';\n\nconst SocialLinks = ({ socialLinks }: { socialLinks: SocialLink[] }) => (\n <>\n {socialLinks.map((link) => (\n <Hyperlink key={link.id} destination={link.destination}>\n <Icon\n src={link.icon}\n screenReaderText={link.screenReaderText}\n size=\"lg\"\n />\n </Hyperlink>\n ))}\n </>\n);\n\nexport default SocialLinks;\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
declare const messages: {
|
|
2
|
+
socialSharingOptionsAriaLabel: {
|
|
3
|
+
id: string;
|
|
4
|
+
defaultMessage: string;
|
|
5
|
+
description: string;
|
|
6
|
+
};
|
|
7
|
+
socialSharingTooltip: {
|
|
8
|
+
id: string;
|
|
9
|
+
defaultMessage: string;
|
|
10
|
+
description: string;
|
|
11
|
+
};
|
|
12
|
+
socialSharingTwitter: {
|
|
13
|
+
id: string;
|
|
14
|
+
defaultMessage: string;
|
|
15
|
+
description: string;
|
|
16
|
+
};
|
|
17
|
+
socialSharingFacebook: {
|
|
18
|
+
id: string;
|
|
19
|
+
defaultMessage: string;
|
|
20
|
+
description: string;
|
|
21
|
+
};
|
|
22
|
+
socialSharingEmail: {
|
|
23
|
+
id: string;
|
|
24
|
+
defaultMessage: string;
|
|
25
|
+
description: string;
|
|
26
|
+
};
|
|
27
|
+
socialSharingEmailSubject: {
|
|
28
|
+
id: string;
|
|
29
|
+
defaultMessage: string;
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
socialSharingEmailBody: {
|
|
33
|
+
id: string;
|
|
34
|
+
defaultMessage: string;
|
|
35
|
+
description: string;
|
|
36
|
+
};
|
|
37
|
+
socialSharingTwitterText: {
|
|
38
|
+
id: string;
|
|
39
|
+
defaultMessage: string;
|
|
40
|
+
description: string;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
export default messages;
|