diff --git a/src/containers/CourseCard/CourseCard.scss b/src/containers/CourseCard/CourseCard.scss index f1dcf55..af203b6 100644 --- a/src/containers/CourseCard/CourseCard.scss +++ b/src/containers/CourseCard/CourseCard.scss @@ -5,6 +5,12 @@ .pgn__card-image-cap { border-bottom-left-radius: 0 !important; } + .pgn__card-header-content { + margin-top: 1.5rem; + } + .course-card-content-vertical { + + } } .course-card-banners { @@ -13,4 +19,4 @@ border-top-right-radius: 0; } } -} \ No newline at end of file +} diff --git a/src/containers/CourseCard/__snapshots__/index.test.jsx.snap b/src/containers/CourseCard/__snapshots__/index.test.jsx.snap index 4d679e2..6a900cb 100644 --- a/src/containers/CourseCard/__snapshots__/index.test.jsx.snap +++ b/src/containers/CourseCard/__snapshots__/index.test.jsx.snap @@ -1,6 +1,34 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`CourseCard component snapshot 1`] = ` +exports[`CourseCard component snapshot: collapsed 1`] = ` +
+ +
+ +
+ +
+
+
+
+`; + +exports[`CourseCard component snapshot: not collapsed 1`] = `
- - - - } - title={ - - hooks.title - - } - /> - - - - - } - > - - -
- - -
diff --git a/src/containers/CourseCard/components/Banners/index.jsx b/src/containers/CourseCard/components/Banners/index.jsx deleted file mode 100644 index 8ab6694..0000000 --- a/src/containers/CourseCard/components/Banners/index.jsx +++ /dev/null @@ -1,3 +0,0 @@ -export { default as CourseBanner } from './CourseBanner'; -export { default as CertificateBanner } from './CertificateBanner'; -export { default as EntitlementBanner } from './EntitlementBanner'; diff --git a/src/containers/CourseCard/components/CourseCardActions/__snapshots__/index.test.jsx.snap b/src/containers/CourseCard/components/CourseCardActions/__snapshots__/index.test.jsx.snap index 1aab7e0..ea3187f 100644 --- a/src/containers/CourseCard/components/CourseCardActions/__snapshots__/index.test.jsx.snap +++ b/src/containers/CourseCard/components/CourseCardActions/__snapshots__/index.test.jsx.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`CourseCard Actions component does not render secondary button if null is returned for secondary props 1`] = ` -
-
+ `; exports[`CourseCard Actions component loads primary and secondary button props from hook 1`] = ` -
-
+ `; diff --git a/src/containers/CourseCard/components/CourseCardActions/index.jsx b/src/containers/CourseCard/components/CourseCardActions/index.jsx index ccda62d..8febe50 100644 --- a/src/containers/CourseCard/components/CourseCardActions/index.jsx +++ b/src/containers/CourseCard/components/CourseCardActions/index.jsx @@ -1,19 +1,19 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Button } from '@edx/paragon'; +import { ActionRow, Button } from '@edx/paragon'; import useCardActionData from './hooks'; export const CourseCardActions = ({ cardId }) => { const { primary, secondary } = useCardActionData({ cardId }); return ( -
+ {(secondary !== null) && (
+ ); }; CourseCardActions.propTypes = { diff --git a/src/containers/CourseCard/components/Banners/CertificateBanner.jsx b/src/containers/CourseCard/components/CourseCardBanners/CertificateBanner.jsx similarity index 100% rename from src/containers/CourseCard/components/Banners/CertificateBanner.jsx rename to src/containers/CourseCard/components/CourseCardBanners/CertificateBanner.jsx diff --git a/src/containers/CourseCard/components/Banners/CertificateBanner.test.jsx b/src/containers/CourseCard/components/CourseCardBanners/CertificateBanner.test.jsx similarity index 100% rename from src/containers/CourseCard/components/Banners/CertificateBanner.test.jsx rename to src/containers/CourseCard/components/CourseCardBanners/CertificateBanner.test.jsx diff --git a/src/containers/CourseCard/components/Banners/CourseBanner.jsx b/src/containers/CourseCard/components/CourseCardBanners/CourseBanner.jsx similarity index 100% rename from src/containers/CourseCard/components/Banners/CourseBanner.jsx rename to src/containers/CourseCard/components/CourseCardBanners/CourseBanner.jsx diff --git a/src/containers/CourseCard/components/Banners/CourseBanner.test.jsx b/src/containers/CourseCard/components/CourseCardBanners/CourseBanner.test.jsx similarity index 100% rename from src/containers/CourseCard/components/Banners/CourseBanner.test.jsx rename to src/containers/CourseCard/components/CourseCardBanners/CourseBanner.test.jsx diff --git a/src/containers/CourseCard/components/Banners/EntitlementBanner.jsx b/src/containers/CourseCard/components/CourseCardBanners/EntitlementBanner.jsx similarity index 100% rename from src/containers/CourseCard/components/Banners/EntitlementBanner.jsx rename to src/containers/CourseCard/components/CourseCardBanners/EntitlementBanner.jsx diff --git a/src/containers/CourseCard/components/Banners/EntitlementBanner.test.jsx b/src/containers/CourseCard/components/CourseCardBanners/EntitlementBanner.test.jsx similarity index 100% rename from src/containers/CourseCard/components/Banners/EntitlementBanner.test.jsx rename to src/containers/CourseCard/components/CourseCardBanners/EntitlementBanner.test.jsx diff --git a/src/containers/CourseCard/components/Banners/__snapshots__/CertificateBanner.test.jsx.snap b/src/containers/CourseCard/components/CourseCardBanners/__snapshots__/CertificateBanner.test.jsx.snap similarity index 100% rename from src/containers/CourseCard/components/Banners/__snapshots__/CertificateBanner.test.jsx.snap rename to src/containers/CourseCard/components/CourseCardBanners/__snapshots__/CertificateBanner.test.jsx.snap diff --git a/src/containers/CourseCard/components/Banners/__snapshots__/CourseBanner.test.jsx.snap b/src/containers/CourseCard/components/CourseCardBanners/__snapshots__/CourseBanner.test.jsx.snap similarity index 100% rename from src/containers/CourseCard/components/Banners/__snapshots__/CourseBanner.test.jsx.snap rename to src/containers/CourseCard/components/CourseCardBanners/__snapshots__/CourseBanner.test.jsx.snap diff --git a/src/containers/CourseCard/components/Banners/__snapshots__/EntitlementBanner.test.jsx.snap b/src/containers/CourseCard/components/CourseCardBanners/__snapshots__/EntitlementBanner.test.jsx.snap similarity index 100% rename from src/containers/CourseCard/components/Banners/__snapshots__/EntitlementBanner.test.jsx.snap rename to src/containers/CourseCard/components/CourseCardBanners/__snapshots__/EntitlementBanner.test.jsx.snap diff --git a/src/containers/CourseCard/components/CourseCardBanners/index.jsx b/src/containers/CourseCard/components/CourseCardBanners/index.jsx new file mode 100644 index 0000000..700ae20 --- /dev/null +++ b/src/containers/CourseCard/components/CourseCardBanners/index.jsx @@ -0,0 +1,24 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +import { hooks as appHooks } from 'data/redux'; + +import CourseBanner from './CourseBanner'; +import CertificateBanner from './CertificateBanner'; +import EntitlementBanner from './EntitlementBanner'; + +export const CourseCardBanners = ({ cardId }) => { + const { isEnrolled } = appHooks.useCardEnrollmentData(cardId); + return ( +
+ + + {isEnrolled && } +
+ ); +}; +CourseCardBanners.propTypes = { + cardId: PropTypes.string.isRequired, +}; + +export default CourseCardBanners; diff --git a/src/containers/CourseCard/components/Banners/messages.js b/src/containers/CourseCard/components/CourseCardBanners/messages.js similarity index 100% rename from src/containers/CourseCard/components/Banners/messages.js rename to src/containers/CourseCard/components/CourseCardBanners/messages.js diff --git a/src/containers/CourseCard/components/CourseCardContent.jsx b/src/containers/CourseCard/components/CourseCardContent.jsx new file mode 100644 index 0000000..1639dca --- /dev/null +++ b/src/containers/CourseCard/components/CourseCardContent.jsx @@ -0,0 +1,62 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { useIntl } from '@edx/frontend-platform/i18n'; + +// import PropTypes from 'prop-types'; +import { Card } from '@edx/paragon'; + +import { hooks as appHooks } from 'data/redux'; + +import RelatedProgramsBadge from './RelatedProgramsBadge'; +import CourseCardMenu from './CourseCardMenu'; + +import messages from '../messages'; +import CourseCardActions from './CourseCardActions'; +import CourseCardDetails from './CourseCardDetails'; + +export const CourseCardContent = ({ cardId, orientation }) => { + const { formatMessage } = useIntl(); + const { title, bannerUrl } = appHooks.useCardCourseData(cardId); + return ( + <> + + + {title}} + actions={} + /> + + + + {orientation === 'vertical' + ? ( + <> + + + + + + ) : ( + } + > + + + )} + + + ); +}; + +CourseCardContent.propTypes = { + cardId: PropTypes.string.isRequired, + orientation: PropTypes.string.isRequired, +}; + +CourseCardContent.defaultProps = {}; + +export default CourseCardContent; diff --git a/src/containers/CourseCard/components/CourseCardDetails/__snapshots__/index.test.jsx.snap b/src/containers/CourseCard/components/CourseCardDetails/__snapshots__/index.test.jsx.snap index a8948e9..68097ea 100644 --- a/src/containers/CourseCard/components/CourseCardDetails/__snapshots__/index.test.jsx.snap +++ b/src/containers/CourseCard/components/CourseCardDetails/__snapshots__/index.test.jsx.snap @@ -2,6 +2,7 @@ exports[`CourseCard Details component does not have change session button on regular course 1`] = ` provider-name @@ -13,6 +14,7 @@ exports[`CourseCard Details component does not have change session button on reg exports[`CourseCard Details component has change session button on entitlement course 1`] = ` provider-name diff --git a/src/containers/CourseCard/components/CourseCardDetails/index.jsx b/src/containers/CourseCard/components/CourseCardDetails/index.jsx index c246bd3..15db8a9 100644 --- a/src/containers/CourseCard/components/CourseCardDetails/index.jsx +++ b/src/containers/CourseCard/components/CourseCardDetails/index.jsx @@ -22,7 +22,7 @@ export const CourseCardDetails = ({ cardId }) => { } = useCardDetailsData({ cardId, dispatch }); return ( - + {providerName} • {courseNumber} {!(isEntitlement && !isFulfilled) && ( <> diff --git a/src/containers/CourseCard/components/CourseCardLayout.jsx b/src/containers/CourseCard/components/CourseCardLayout.jsx new file mode 100644 index 0000000..38246e4 --- /dev/null +++ b/src/containers/CourseCard/components/CourseCardLayout.jsx @@ -0,0 +1,33 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +import { Card } from '@edx/paragon'; + +import { useIsCollapsed } from '../hooks'; +import CourseCardBanners from './CourseCardBanners'; +import CourseCardContent from './CourseCardContent'; + +export const CourseCardLayout = ({ + cardId, +}) => { + const isCollapsed = useIsCollapsed(); + return ( +
+ +
+
+ +
+
+ +
+
+
+
+ ); +}; +CourseCardLayout.propTypes = { + cardId: PropTypes.string.isRequired, +}; + +export default CourseCardLayout; diff --git a/src/containers/CourseCard/components/RelatedProgramsBadge/__snapshots__/index.test.jsx.snap b/src/containers/CourseCard/components/RelatedProgramsBadge/__snapshots__/index.test.jsx.snap index dfe4df4..6a589a2 100644 --- a/src/containers/CourseCard/components/RelatedProgramsBadge/__snapshots__/index.test.jsx.snap +++ b/src/containers/CourseCard/components/RelatedProgramsBadge/__snapshots__/index.test.jsx.snap @@ -3,6 +3,7 @@ exports[`RelatedProgramsBadge component snapshot: 3 programs 1`] = ` -
- {authenticatedUser && ( - - )} -
- - - +
+
+
+ {isCollapsed && (
)} + {(!isCollapsed) && ( + + )} +
+ {isCollapsed && } +
+ {!isCollapsed && ()} +
+
+ {!isCollapsed && } +
+ ); }; diff --git a/src/containers/LearnerDashboardHeader/index.scss b/src/containers/LearnerDashboardHeader/index.scss index 0f1e7f8..a2210db 100644 --- a/src/containers/LearnerDashboardHeader/index.scss +++ b/src/containers/LearnerDashboardHeader/index.scss @@ -1,4 +1,10 @@ -.greetings-slash-container { +.greetings-slash-container-small { + height: 4px; + width: 40px; + transform-origin: center; + transform: rotate(-70deg); +} +.greetings-slash-container-large { height: 8px; width: 120px; transform-origin: center; diff --git a/src/containers/LearnerDashboardHeader/messages.js b/src/containers/LearnerDashboardHeader/messages.js index aba74eb..117d6d5 100644 --- a/src/containers/LearnerDashboardHeader/messages.js +++ b/src/containers/LearnerDashboardHeader/messages.js @@ -16,6 +16,11 @@ const messages = defineMessages({ defaultMessage: 'Profile', description: 'The text for the user menu Profile navigation link.', }, + viewPrograms: { + id: 'leanerDashboard.menu.viewPrograms.label', + defaultMessage: 'View Programs', + description: 'The text for the user menu View Programs navigation link.', + }, account: { id: 'leanerDashboard.menu.account.label', defaultMessage: 'Account', diff --git a/src/containers/RelatedProgramsModal/__snapshots__/index.test.jsx.snap b/src/containers/RelatedProgramsModal/__snapshots__/index.test.jsx.snap index 3dc42c9..eec07b1 100644 --- a/src/containers/RelatedProgramsModal/__snapshots__/index.test.jsx.snap +++ b/src/containers/RelatedProgramsModal/__snapshots__/index.test.jsx.snap @@ -29,49 +29,58 @@ exports[`RelatedProgramsModal snapshot: closed 1`] = `

Are you looking to expand your knowledge? Enrolling in a Program lets you take a series of courses in the subject that you're interested in

- - - - - + + + + + + + + + + + + + `; @@ -105,49 +114,58 @@ exports[`RelatedProgramsModal snapshot: open 1`] = `

Are you looking to expand your knowledge? Enrolling in a Program lets you take a series of courses in the subject that you're interested in

- - - - - + + + + + + + + + + + + + `; diff --git a/src/containers/RelatedProgramsModal/components/ProgramCard.jsx b/src/containers/RelatedProgramsModal/components/ProgramCard.jsx index 16e6ddd..fdcdde3 100644 --- a/src/containers/RelatedProgramsModal/components/ProgramCard.jsx +++ b/src/containers/RelatedProgramsModal/components/ProgramCard.jsx @@ -23,7 +23,7 @@ export const ProgramCard = ({ data }) => { ); return (

{formatMessage(messages.description)}

- - {relatedPrograms.map((programData) => ( - - ))} - + + + {relatedPrograms.map((programData) => ( + + + + ))} + +
); diff --git a/src/containers/WidgetSidebar/index.jsx b/src/containers/WidgetSidebar/index.jsx index 4b72b0f..c1b8e63 100644 --- a/src/containers/WidgetSidebar/index.jsx +++ b/src/containers/WidgetSidebar/index.jsx @@ -11,26 +11,15 @@ import './index.scss'; export const WidgetSidebar = () => (
- - {/* -
-

- -

- - - -
*/} - - + -

+

-

+ diff --git a/src/containers/WidgetSidebar/index.scss b/src/containers/WidgetSidebar/index.scss index 71ae8fc..fdf826a 100644 --- a/src/containers/WidgetSidebar/index.scss +++ b/src/containers/WidgetSidebar/index.scss @@ -1,8 +1,12 @@ @import "@edx/paragon/scss/core/core"; .widget-sidebar { margin-top: map-get($spacers, 5); - width: 400px; - flex-shrink: 0; padding-left: map-get($spacers, 2); padding-right: map-get($spacers, 2); } + +@include media-breakpoint-down(md) { + .widget-sidebar { + display: none; + } +}