@openedx/frontend-app-catalog 1.0.0-alpha.3 → 1.0.0-alpha.4
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Stack, Container, Card } from '@openedx/paragon';
|
|
3
3
|
import { ListView as ListViewIcon } from '@openedx/paragon/icons';
|
|
4
|
-
import {
|
|
4
|
+
import { resolveRouteByRole, useIntl } from '@openedx/frontend-base';
|
|
5
5
|
import { Link } from 'react-router-dom';
|
|
6
6
|
import CourseAboutSidebarCoursePriceSlot from '../../../slots/CourseAboutSidebarCoursePriceSlot';
|
|
7
7
|
import { courseAboutRole } from '../../../constants';
|
|
@@ -16,7 +16,7 @@ const SidebarDetails = ({ courseAboutData }) => {
|
|
|
16
16
|
return null;
|
|
17
17
|
}
|
|
18
18
|
const prerequisite = courseAboutData.preRequisiteCourses[0];
|
|
19
|
-
const prerequisiteUrl = (_b =
|
|
19
|
+
const prerequisiteUrl = (_b = resolveRouteByRole(courseAboutRole, { courseId: prerequisite.key })) === null || _b === void 0 ? void 0 : _b.url;
|
|
20
20
|
if (!prerequisiteUrl) {
|
|
21
21
|
return null;
|
|
22
22
|
}
|
|
@@ -1 +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,
|
|
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,kBAAkB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACrE,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,kBAAkB,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC,0CAAE,GAAG,CAAC;QAEjG,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 { resolveRouteByRole, 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 = resolveRouteByRole(courseAboutRole, { courseId: prerequisite.key })?.url;\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"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Link } from 'react-router-dom';
|
|
3
3
|
import { Card, useMediaQuery, breakpoints, Badge, } from '@openedx/paragon';
|
|
4
|
-
import {
|
|
4
|
+
import { resolveRouteByRole, useIntl } from '@openedx/frontend-base';
|
|
5
5
|
import noCourseImg from '../../assets/images/no-course-image.svg';
|
|
6
6
|
import { courseAboutRole } from '../../constants';
|
|
7
7
|
import messages from './messages';
|
|
@@ -15,7 +15,7 @@ export const CourseCard = ({ isLoading, courseId, courseOrg, courseName, courseN
|
|
|
15
15
|
advertisedStart: courseAdvertisedStart,
|
|
16
16
|
}, intl) : null;
|
|
17
17
|
const courseAboutUrl = courseId
|
|
18
|
-
? (_a =
|
|
18
|
+
? (_a = resolveRouteByRole(courseAboutRole, { courseId })) === null || _a === void 0 ? void 0 : _a.url
|
|
19
19
|
: undefined;
|
|
20
20
|
return (_jsxs(Card, { as: courseAboutUrl ? Link : 'div', to: courseAboutUrl,
|
|
21
21
|
// TODO: Temporary use of `d-flex` to fix alignment. Remove once the related Paragon issue
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generic/course-card/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EACL,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,GACxC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generic/course-card/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EACL,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,GACxC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAErE,OAAO,WAAW,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE/D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACzB,SAAS,EACT,QAAQ,EACR,SAAS,EACT,UAAU,EACV,YAAY,EACZ,cAAc,EACd,eAAe,EACf,qBAAqB,GACL,EAAE,EAAE;;IACpB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,YAAY,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE7E,MAAM,gBAAgB,GAAG,CAAC,eAAe,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;QACxF,KAAK,EAAE,eAAe;QACtB,eAAe,EAAE,qBAAqB;KACvC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEhB,MAAM,cAAc,GAAG,QAAQ;QAC7B,CAAC,CAAC,MAAA,kBAAkB,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,CAAC,0CAAE,GAAG;QACxD,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,CACL,MAAC,IAAI,IACH,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EACjC,EAAE,EAAE,cAAc;QAClB,0FAA0F;QAC1F,gEAAgE;QAChE,SAAS,EAAE,sBAAsB,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,EAAE,EACjF,WAAW,EAAE,CAAC,SAAS,EACvB,SAAS,EAAE,SAAS,iBACR,aAAa,aAEzB,KAAC,IAAI,CAAC,QAAQ,IACZ,GAAG,EAAE,eAAe,CAAC,cAAc,CAAC,EACpC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,GAAG,UAAU,IAAI,YAAY,EAAE,EACvC,uBAAuB,SACvB,EACF,KAAC,IAAI,CAAC,MAAM,IACV,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,CACR,8BACE,wBAAM,YAAY,GAAO,EACzB,KAAC,KAAK,IAAC,OAAO,EAAC,OAAO,YAAE,SAAS,GAAS,IACzC,CACJ,EACD,IAAI,EAAC,IAAI,GACT,EACF,KAAC,IAAI,CAAC,OAAO,KAAG,EAChB,KAAC,IAAI,CAAC,MAAM,IAAC,WAAW,EAAE,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE;oBACnF,SAAS,EAAE,gBAAgB;iBAC5B,CAAC,GACA,IACG,CACR,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { Link } from 'react-router-dom';\nimport {\n Card, useMediaQuery, breakpoints, Badge,\n} from '@openedx/paragon';\nimport { resolveRouteByRole, useIntl } from '@openedx/frontend-base';\n\nimport noCourseImg from '@src/assets/images/no-course-image.svg';\nimport { courseAboutRole } from '@src/constants';\n\nimport type { CourseCardProps } from './types';\nimport messages from './messages';\nimport { getFullImageUrl, getStartDateDisplay } from './utils';\n\nexport const CourseCard = ({\n isLoading,\n courseId,\n courseOrg,\n courseName,\n courseNumber,\n courseImageUrl,\n courseStartDate,\n courseAdvertisedStart,\n}: CourseCardProps) => {\n const intl = useIntl();\n const isExtraSmall = useMediaQuery({ maxWidth: breakpoints.small.maxWidth });\n\n const startDateDisplay = (courseStartDate || courseAdvertisedStart) ? getStartDateDisplay({\n start: courseStartDate,\n advertisedStart: courseAdvertisedStart,\n }, intl) : null;\n\n const courseAboutUrl = courseId\n ? resolveRouteByRole(courseAboutRole, { courseId })?.url\n : undefined;\n\n return (\n <Card\n as={courseAboutUrl ? Link : 'div'}\n to={courseAboutUrl}\n // TODO: Temporary use of `d-flex` to fix alignment. Remove once the related Paragon issue\n // (https://github.com/openedx/paragon/issues/3792) is resolved.\n className={`course-card d-flex ${isExtraSmall ? 'w-100' : 'course-card-desktop'}`}\n isClickable={!isLoading}\n isLoading={isLoading}\n data-testid=\"course-card\"\n >\n <Card.ImageCap\n src={getFullImageUrl(courseImageUrl)}\n fallbackSrc={noCourseImg}\n srcAlt={`${courseName} ${courseNumber}`}\n skeletonDuringImageLoad\n />\n <Card.Header\n title={courseName}\n subtitle={(\n <>\n <div>{courseNumber}</div>\n <Badge variant=\"light\">{courseOrg}</Badge>\n </>\n )}\n size=\"sm\"\n />\n <Card.Section />\n <Card.Footer textElement={startDateDisplay && intl.formatMessage(messages.startDate, {\n startDate: startDateDisplay,\n })}\n />\n </Card>\n );\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openedx/frontend-app-catalog",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.4",
|
|
4
|
+
"packageManager": "npm@11.12.1",
|
|
4
5
|
"description": "Frontend catalog application",
|
|
5
6
|
"repository": {
|
|
6
7
|
"type": "git",
|
|
@@ -62,6 +63,8 @@
|
|
|
62
63
|
},
|
|
63
64
|
"devDependencies": {
|
|
64
65
|
"@edx/browserslist-config": "^1.5.0",
|
|
66
|
+
"@openedx/frontend-base": "^2.0.0-alpha.15 || 0.0.0-dev",
|
|
67
|
+
"@openedx/paragon": "^23 || 0.0.0-dev",
|
|
65
68
|
"@testing-library/jest-dom": "^6.9.1",
|
|
66
69
|
"@testing-library/react": "^16.3.0",
|
|
67
70
|
"@testing-library/user-event": "^14.6.1",
|
|
@@ -72,11 +75,12 @@
|
|
|
72
75
|
"jest": "^29",
|
|
73
76
|
"nodemon": "^3.1.14",
|
|
74
77
|
"tsc-alias": "^1.8.16",
|
|
75
|
-
"turbo": "^2.9.2"
|
|
78
|
+
"turbo": "^2.9.2",
|
|
79
|
+
"typescript": "^5.9.3"
|
|
76
80
|
},
|
|
77
81
|
"peerDependencies": {
|
|
78
|
-
"@openedx/frontend-base": "^2.0.0-alpha.
|
|
79
|
-
"@openedx/paragon": "^23",
|
|
82
|
+
"@openedx/frontend-base": "^2.0.0-alpha.15 || 0.0.0-dev",
|
|
83
|
+
"@openedx/paragon": "^23 || 0.0.0-dev",
|
|
80
84
|
"@tanstack/react-query": "^5",
|
|
81
85
|
"react": "^18",
|
|
82
86
|
"react-dom": "^18",
|