@edx/frontend-app-subscription-learner-dashboard 1.30.0 → 1.31.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/containers/CourseCard/CourseCard.scss +8 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/CertificateBanner.js +1 -2
- package/dist/containers/CourseCard/components/CourseCardBanners/CertificateBanner.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/ViewCertificateBanner.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/ViewCertificateBanner.js +34 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/ViewCertificateBanner.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/ViewGradesBanner.d.ts +10 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/ViewGradesBanner.js +25 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/ViewGradesBanner.js.map +1 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/index.js +11 -2
- package/dist/containers/CourseCard/components/CourseCardBanners/index.js.map +1 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/messages.d.ts +40 -0
- package/dist/containers/CourseCard/components/CourseCardBanners/messages.js +26 -1
- package/dist/containers/CourseCard/components/CourseCardBanners/messages.js.map +1 -1
- package/dist/data/constants/app.d.ts +1 -1
- package/dist/data/constants/app.js +1 -1
- package/dist/data/constants/app.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
$link-color: #00262B !default;
|
|
2
|
+
|
|
1
3
|
.course-card {
|
|
2
4
|
.card {
|
|
3
5
|
.pgn__card-wrapper-image-cap.vertical {
|
|
@@ -69,5 +71,11 @@
|
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
73
|
}
|
|
74
|
+
|
|
75
|
+
.verified-banner{
|
|
76
|
+
.view-certificate-link, .view-grades-link {
|
|
77
|
+
color: $link-color;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
72
80
|
}
|
|
73
81
|
}
|
|
@@ -10,7 +10,6 @@ import { useInitializeSubsDashboard } from '../../../../data/hooks';
|
|
|
10
10
|
import { utilHooks, useCourseData } from '../../../../hooks';
|
|
11
11
|
import Banner from '../../../../components/Banner';
|
|
12
12
|
import messages from './messages';
|
|
13
|
-
const { useFormatDate } = utilHooks;
|
|
14
13
|
export const CertificateBanner = ({ cardId }) => {
|
|
15
14
|
const { data: learnerHomeData } = useInitializeSubsDashboard();
|
|
16
15
|
const courseData = useCourseData(cardId);
|
|
@@ -34,7 +33,7 @@ export const CertificateBanner = ({ cardId }) => {
|
|
|
34
33
|
});
|
|
35
34
|
}, [learnerHomeData]);
|
|
36
35
|
const { formatMessage } = useIntl();
|
|
37
|
-
const formatDate = useFormatDate();
|
|
36
|
+
const formatDate = utilHooks.useFormatDate();
|
|
38
37
|
const emailLink = address => _jsx(MailtoLink, { to: address, children: address });
|
|
39
38
|
if (certificate.isRestricted) {
|
|
40
39
|
return (_jsxs(Banner, { variant: "danger", children: [supportEmail ? formatMessage(messages.certRestricted, { supportEmail: emailLink(supportEmail) }) : formatMessage(messages.certRestrictedNoEmail), isVerified && ' ', isVerified && (billingEmail ? formatMessage(messages.certRefundContactBilling, { billingEmail: emailLink(billingEmail) }) : formatMessage(messages.certRefundContactBillingNoEmail))] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CertificateBanner.js","sourceRoot":"","sources":["../../../../../src/containers/CourseCard/components/CourseCardBanners/CertificateBanner.jsx"],"names":[],"mappings":";AAAA,4BAA4B;AAC5B,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,MAAM,MAAM,wBAAwB,CAAC;AAE5C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,
|
|
1
|
+
{"version":3,"file":"CertificateBanner.js","sourceRoot":"","sources":["../../../../../src/containers/CourseCard/components/CourseCardBanners/CertificateBanner.jsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable max-len */\nimport React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { MailtoLink, Hyperlink } from '@openedx/paragon';\nimport { CheckCircle } from '@openedx/paragon/icons';\nimport { useIntl } from '@openedx/frontend-base';\nimport { baseAppUrl } from '@src/data/services/lms/urls';\n\nimport { useInitializeSubsDashboard } from '@src/data/hooks';\nimport { utilHooks, useCourseData } from '@src/hooks';\nimport Banner from '@src/components/Banner';\n\nimport messages from './messages';\n\nexport const CertificateBanner = ({ cardId }) => {\n const { data: learnerHomeData } = useInitializeSubsDashboard();\n const courseData = useCourseData(cardId);\n const {\n certificate = {},\n isVerified = false,\n isAudit = false,\n isPassing = false,\n isArchived = false,\n minPassingGrade = 0,\n progressUrl = '',\n } = useMemo(() => ({\n isVerified: courseData?.enrollment?.isVerified,\n isAudit: courseData?.enrollment?.isAudit,\n certificate: courseData?.certificate || {},\n isPassing: courseData?.gradeData?.isPassing,\n isArchived: courseData?.courseRun?.isArchived,\n minPassingGrade: Math.floor((courseData?.courseRun?.minPassingGrade ?? 0) * 100),\n progressUrl: baseAppUrl(courseData?.courseRun?.progressUrl || ''),\n }), [courseData]);\n const { supportEmail, billingEmail } = useMemo(\n () => ({\n supportEmail: learnerHomeData?.platformSettings?.supportEmail,\n billingEmail: learnerHomeData?.platformSettings?.billingEmail,\n }),\n [learnerHomeData],\n );\n const { formatMessage } = useIntl();\n const formatDate = utilHooks.useFormatDate();\n\n const emailLink = address => <MailtoLink to={address}>{address}</MailtoLink>;\n\n if (certificate.isRestricted) {\n return (\n <Banner variant=\"danger\">\n { supportEmail ? formatMessage(messages.certRestricted, { supportEmail: emailLink(supportEmail) }) : formatMessage(messages.certRestrictedNoEmail)}\n {isVerified && ' '}\n {isVerified && (billingEmail ? formatMessage(messages.certRefundContactBilling, { billingEmail: emailLink(billingEmail) }) : formatMessage(messages.certRefundContactBillingNoEmail))}\n </Banner>\n );\n }\n if (certificate.isDownloadable) {\n return (\n <Banner variant=\"success\" icon={CheckCircle}>\n {formatMessage(messages.certReady)}\n {certificate.certPreviewUrl && (\n <>\n {' '}\n <Hyperlink isInline destination={baseAppUrl(certificate.certPreviewUrl)}>\n {formatMessage(messages.viewCertificate)}\n </Hyperlink>\n </>\n )}\n </Banner>\n );\n }\n if (!isPassing) {\n if (isAudit) {\n return (\n <Banner>\n {formatMessage(messages.passingGrade, { minPassingGrade })}\n </Banner>\n );\n }\n if (isArchived) {\n return (\n <Banner variant=\"warning\">\n {formatMessage(messages.notEligibleForCert)}\n {' '}\n <Hyperlink isInline destination={progressUrl}>{formatMessage(messages.viewGrades)}</Hyperlink>\n </Banner>\n );\n }\n return (\n <Banner variant=\"warning\">\n {formatMessage(messages.certMinGrade, { minPassingGrade })}\n </Banner>\n );\n }\n if (certificate.isEarned && new Date(certificate.availableDate) > new Date()) {\n return (\n <Banner>\n {formatMessage(\n messages.gradeAndCertReadyAfter,\n { availableDate: formatDate(certificate.availableDate) },\n )}\n </Banner>\n );\n }\n\n return null;\n};\nCertificateBanner.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default CertificateBanner;\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import PropTypes from 'prop-types';
|
|
2
|
+
export declare const ViewCertificateBanner: {
|
|
3
|
+
({ cardId }: {
|
|
4
|
+
cardId: any;
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
propTypes: {
|
|
7
|
+
cardId: PropTypes.Validator<string>;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
export default ViewCertificateBanner;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Hyperlink, Button, Card, Row, Col } from '@openedx/paragon';
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
import { useIntl } from '@openedx/frontend-base';
|
|
5
|
+
import { utilHooks, useCourseData } from '../../../../hooks';
|
|
6
|
+
import messages from './messages';
|
|
7
|
+
import PropTypes from 'prop-types';
|
|
8
|
+
export const ViewCertificateBanner = ({ cardId }) => {
|
|
9
|
+
const courseData = useCourseData(cardId);
|
|
10
|
+
const { isEarned = false, isVerified = false, mode = '', availableDate = '', certPreviewUrl = '', } = useMemo(() => {
|
|
11
|
+
var _a, _b, _c, _d, _e;
|
|
12
|
+
return ({
|
|
13
|
+
isEarned: ((_a = courseData === null || courseData === void 0 ? void 0 : courseData.certificate) === null || _a === void 0 ? void 0 : _a.isEarned) || false,
|
|
14
|
+
isVerified: ((_b = courseData === null || courseData === void 0 ? void 0 : courseData.enrollment) === null || _b === void 0 ? void 0 : _b.isVerified) || false,
|
|
15
|
+
mode: ((_c = courseData === null || courseData === void 0 ? void 0 : courseData.enrollment) === null || _c === void 0 ? void 0 : _c.mode) || '',
|
|
16
|
+
availableDate: ((_d = courseData === null || courseData === void 0 ? void 0 : courseData.certificate) === null || _d === void 0 ? void 0 : _d.availableDate) || '',
|
|
17
|
+
certPreviewUrl: ((_e = courseData === null || courseData === void 0 ? void 0 : courseData.certificate) === null || _e === void 0 ? void 0 : _e.certPreviewUrl) || '',
|
|
18
|
+
});
|
|
19
|
+
}, [courseData]);
|
|
20
|
+
const { formatMessage } = useIntl();
|
|
21
|
+
const formatDate = utilHooks.useFormatDate();
|
|
22
|
+
const showVerifiedBanner = isEarned && isVerified && mode === 'verified';
|
|
23
|
+
return (_jsx(Card.Status, { variant: "warning", className: "bg-light-200 verified-banner", "data-testid": "course-card-view-certificate-banner", children: _jsxs(Row, { className: "align-items-sm-center mt-1", children: [_jsx(Col, { xs: 12, sm: true, className: "pe-sm-3", children: _jsxs("p", { className: "mb-0 font-weight-semi-bold", children: [_jsx("span", { children: _jsxs("b", { children: [formatMessage(messages.congratulationsText), " "] }) }), showVerifiedBanner ? (_jsx(_Fragment, { children: formatMessage(messages.verifiedBannerText, {
|
|
24
|
+
date: formatDate(availableDate),
|
|
25
|
+
}) }))
|
|
26
|
+
: (_jsx(_Fragment, { children: formatMessage(messages.completedAndPassedBannerText, {
|
|
27
|
+
date: formatDate(availableDate),
|
|
28
|
+
}) }))] }) }), _jsxs(Col, { xs: 12, sm: "auto", className: "d-flex justify-content-start justify-content-sm-end mt-2 mt-sm-0", children: [_jsx(Button, { variant: "outline-brand", size: "md", href: certPreviewUrl || undefined, "data-testid": "view-certificate-button", className: "view-certificate-button d-none d-lg-inline-flex", target: "_blank", rel: "noopener noreferrer", role: "link", children: formatMessage(messages.viewCertificate) }), _jsx(Hyperlink, { destination: certPreviewUrl || '#', target: "_blank", rel: "noopener noreferrer", className: "d-lg-none view-certificate-link", "data-testid": "view-certificate-link", isInline: true, children: formatMessage(messages.viewCertificate) })] })] }) }));
|
|
29
|
+
};
|
|
30
|
+
ViewCertificateBanner.propTypes = {
|
|
31
|
+
cardId: PropTypes.string.isRequired,
|
|
32
|
+
};
|
|
33
|
+
export default ViewCertificateBanner;
|
|
34
|
+
//# sourceMappingURL=ViewCertificateBanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewCertificateBanner.js","sourceRoot":"","sources":["../../../../../src/containers/CourseCard/components/CourseCardBanners/ViewCertificateBanner.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Hyperlink, Button, Card, Row, Col } from '@openedx/paragon';\nimport { useMemo } from 'react';\nimport { useIntl } from '@openedx/frontend-base';\nimport { utilHooks, useCourseData } from '@src/hooks';\nimport messages from './messages';\nimport PropTypes from 'prop-types';\n\nexport const ViewCertificateBanner = ({ cardId }) => {\n const courseData = useCourseData(cardId);\n const {\n isEarned = false,\n isVerified = false,\n mode = '',\n availableDate = '',\n certPreviewUrl = '',\n } = useMemo(() => ({\n isEarned: courseData?.certificate?.isEarned || false,\n isVerified: courseData?.enrollment?.isVerified || false,\n mode: courseData?.enrollment?.mode || '',\n availableDate: courseData?.certificate?.availableDate || '',\n certPreviewUrl: courseData?.certificate?.certPreviewUrl || '',\n }), [courseData]);\n\n const { formatMessage } = useIntl();\n const formatDate = utilHooks.useFormatDate();\n\n const showVerifiedBanner = isEarned && isVerified && mode === 'verified';\n\n return (\n <Card.Status variant=\"warning\" className=\"bg-light-200 verified-banner\" data-testid=\"course-card-view-certificate-banner\">\n <Row className=\"align-items-sm-center mt-1\">\n <Col xs={12} sm className=\"pe-sm-3\">\n <p className=\"mb-0 font-weight-semi-bold\">\n <span><b>{formatMessage(messages.congratulationsText)} </b></span>\n {\n showVerifiedBanner ? (\n <>\n {formatMessage(messages.verifiedBannerText, {\n date: formatDate(availableDate),\n })}\n </>\n )\n : (\n <>\n {formatMessage(messages.completedAndPassedBannerText, {\n date: formatDate(availableDate),\n })}\n </>\n )\n }\n </p>\n </Col>\n <Col xs={12} sm=\"auto\" className=\"d-flex justify-content-start justify-content-sm-end mt-2 mt-sm-0\">\n {/* Desktop: outlined button */}\n <Button\n variant=\"outline-brand\"\n size=\"md\"\n href={certPreviewUrl || undefined}\n data-testid=\"view-certificate-button\"\n className=\"view-certificate-button d-none d-lg-inline-flex\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n role=\"link\"\n >\n {formatMessage(messages.viewCertificate)}\n </Button>\n {/* Tablet/Mobile: plain text link */}\n <Hyperlink\n destination={certPreviewUrl || '#'}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"d-lg-none view-certificate-link\"\n data-testid=\"view-certificate-link\"\n isInline\n >\n {formatMessage(messages.viewCertificate)}\n </Hyperlink>\n </Col>\n </Row>\n </Card.Status>\n );\n};\n\nViewCertificateBanner.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default ViewCertificateBanner;\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { Hyperlink, Button, Card, Row, Col } from '@openedx/paragon';
|
|
4
|
+
import { useMemo } from 'react';
|
|
5
|
+
import { useIntl } from '@openedx/frontend-base';
|
|
6
|
+
import { utilHooks, useCourseData } from '../../../../hooks';
|
|
7
|
+
import messages from './messages';
|
|
8
|
+
export const ViewGradesBanner = ({ cardId }) => {
|
|
9
|
+
const courseData = useCourseData(cardId);
|
|
10
|
+
const { endDate = '', } = useMemo(() => {
|
|
11
|
+
var _a;
|
|
12
|
+
return ({
|
|
13
|
+
endDate: ((_a = courseData === null || courseData === void 0 ? void 0 : courseData.courseRun) === null || _a === void 0 ? void 0 : _a.endDate) || '',
|
|
14
|
+
});
|
|
15
|
+
}, [courseData]);
|
|
16
|
+
const gradesLink = 'https://courses.edx.org/grades/'; // TODO: Update this when more information is available
|
|
17
|
+
const { formatMessage } = useIntl();
|
|
18
|
+
const formatDate = utilHooks.useFormatDate();
|
|
19
|
+
return (_jsx(Card.Status, { variant: "warning", className: "bg-light-200 verified-banner", "data-testid": "course-card-view-grades-banner", children: _jsxs(Row, { className: "align-items-sm-center mt-1", children: [_jsx(Col, { xs: 12, sm: true, className: "pe-sm-3", children: _jsx("p", { className: "mb-0 font-weight-semi-bold", children: _jsx("span", { children: formatMessage(messages.courseCompletedBannerText, { date: formatDate(endDate) }) }) }) }), _jsxs(Col, { xs: 12, sm: "auto", className: "d-flex justify-content-start justify-content-sm-end mt-2 mt-sm-0", children: [_jsx(Button, { variant: "outline-brand", size: "md", href: gradesLink, "data-testid": "view-grades-button", className: "view-grades-button d-none d-lg-inline-flex", target: "_blank", rel: "noopener noreferrer", role: "link", children: formatMessage(messages.viewGradesText) }), _jsx(Hyperlink, { destination: gradesLink, target: "_blank", rel: "noopener noreferrer", className: "d-lg-none view-grades-link", "data-testid": "view-grades-link", isInline: true, children: formatMessage(messages.viewGradesText) })] })] }) }));
|
|
20
|
+
};
|
|
21
|
+
ViewGradesBanner.propTypes = {
|
|
22
|
+
cardId: PropTypes.string.isRequired,
|
|
23
|
+
};
|
|
24
|
+
export default ViewGradesBanner;
|
|
25
|
+
//# sourceMappingURL=ViewGradesBanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewGradesBanner.js","sourceRoot":"","sources":["../../../../../src/containers/CourseCard/components/CourseCardBanners/ViewGradesBanner.tsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IAC7C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,EACJ,OAAO,GAAG,EAAE,GACb,GAAG,OAAO,CAAC,GAAG,EAAE;;QAAC,OAAA,CAAC;YACjB,OAAO,EAAE,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,0CAAE,OAAO,KAAI,EAAE;SAC9C,CAAC,CAAA;KAAA,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAElB,MAAM,UAAU,GAAG,iCAAiC,CAAC,CAAC,uDAAuD;IAE7G,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;IAE7C,OAAO,CACL,KAAC,IAAI,CAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,8BAA8B,iBAAa,gCAAgC,YAClH,MAAC,GAAG,IAAC,SAAS,EAAC,4BAA4B,aACzC,KAAC,GAAG,IAAC,EAAE,EAAE,EAAE,EAAE,EAAE,QAAC,SAAS,EAAC,SAAS,YACjC,YAAG,SAAS,EAAC,4BAA4B,YACvC,yBAAO,aAAa,CAAC,QAAQ,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,GAAQ,GAC7F,GACA,EACN,MAAC,GAAG,IAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAC,MAAM,EAAC,SAAS,EAAC,kEAAkE,aAEjG,KAAC,MAAM,IACL,OAAO,EAAC,eAAe,EACvB,IAAI,EAAC,IAAI,EACT,IAAI,EAAE,UAAU,iBACJ,oBAAoB,EAChC,SAAS,EAAC,4CAA4C,EACtD,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,IAAI,EAAC,MAAM,YAEV,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,GAChC,EAET,KAAC,SAAS,IACR,WAAW,EAAE,UAAU,EACvB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,4BAA4B,iBAC1B,kBAAkB,EAC9B,QAAQ,kBAEP,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,GAC7B,IACR,IACF,GACM,CACf,CAAC;AACJ,CAAC,CAAC;AAEF,gBAAgB,CAAC,SAAS,GAAG;IAC3B,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;CACpC,CAAC;AAEF,eAAe,gBAAgB,CAAC","sourcesContent":["import PropTypes from 'prop-types';\nimport { Hyperlink, Button, Card, Row, Col } from '@openedx/paragon';\nimport { useMemo } from 'react';\nimport { useIntl } from '@openedx/frontend-base';\nimport { utilHooks, useCourseData } from '@src/hooks';\nimport messages from './messages';\n\nexport const ViewGradesBanner = ({ cardId }) => {\n const courseData = useCourseData(cardId);\n const {\n endDate = '',\n } = useMemo(() => ({\n endDate: courseData?.courseRun?.endDate || '',\n }), [courseData]);\n\n const gradesLink = 'https://courses.edx.org/grades/'; // TODO: Update this when more information is available\n\n const { formatMessage } = useIntl();\n const formatDate = utilHooks.useFormatDate();\n\n return (\n <Card.Status variant=\"warning\" className=\"bg-light-200 verified-banner\" data-testid=\"course-card-view-grades-banner\">\n <Row className=\"align-items-sm-center mt-1\">\n <Col xs={12} sm className=\"pe-sm-3\">\n <p className=\"mb-0 font-weight-semi-bold\">\n <span>{formatMessage(messages.courseCompletedBannerText, { date: formatDate(endDate) })}</span>\n </p>\n </Col>\n <Col xs={12} sm=\"auto\" className=\"d-flex justify-content-start justify-content-sm-end mt-2 mt-sm-0\">\n {/* Desktop: outlined button */}\n <Button\n variant=\"outline-brand\"\n size=\"md\"\n href={gradesLink} // TODO: Update this when more information is available\n data-testid=\"view-grades-button\"\n className=\"view-grades-button d-none d-lg-inline-flex\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n role=\"link\"\n >\n {formatMessage(messages.viewGradesText)}\n </Button>\n {/* Tablet/Mobile: plain text link */}\n <Hyperlink\n destination={gradesLink} // TODO: Update this when more information is available\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"d-lg-none view-grades-link\"\n data-testid=\"view-grades-link\"\n isInline\n >\n {formatMessage(messages.viewGradesText)}\n </Hyperlink>\n </Col>\n </Row>\n </Card.Status>\n );\n};\n\nViewGradesBanner.propTypes = {\n cardId: PropTypes.string.isRequired,\n};\n\nexport default ViewGradesBanner;\n"]}
|
|
@@ -3,8 +3,10 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import { useCourseData } from '../../../../hooks';
|
|
4
4
|
import RedeemBanner from './RedeemBanner';
|
|
5
5
|
import UpgradeBanner from './UpgradeBanner';
|
|
6
|
+
import ViewCertificateBanner from './ViewCertificateBanner';
|
|
7
|
+
import ViewGradesBanner from './ViewGradesBanner';
|
|
6
8
|
export const CourseCardBanners = ({ cardId, verifiedCourse, isHistoryTab }) => {
|
|
7
|
-
var _a, _b, _c;
|
|
9
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
8
10
|
const courseData = useCourseData(cardId);
|
|
9
11
|
if (!courseData) {
|
|
10
12
|
return null;
|
|
@@ -13,7 +15,14 @@ export const CourseCardBanners = ({ cardId, verifiedCourse, isHistoryTab }) => {
|
|
|
13
15
|
const isFromNonUpgradeableCourses = (courseData === null || courseData === void 0 ? void 0 : courseData.isFromNonUpgradeableCourses) || false;
|
|
14
16
|
const upgradeUrl = (_c = (_b = courseData === null || courseData === void 0 ? void 0 : courseData.courseRun) === null || _b === void 0 ? void 0 : _b.marketingUrl) !== null && _c !== void 0 ? _c : '';
|
|
15
17
|
const showHistoryUpgradeBanner = isHistoryTab && isAuditAccessExpired && !isFromNonUpgradeableCourses;
|
|
16
|
-
|
|
18
|
+
const isDownloadable = ((_d = courseData === null || courseData === void 0 ? void 0 : courseData.certificate) === null || _d === void 0 ? void 0 : _d.isDownloadable) || false;
|
|
19
|
+
const isCompletedButNotPassed = !!((_e = courseData === null || courseData === void 0 ? void 0 : courseData.courseRun) === null || _e === void 0 ? void 0 : _e.isArchived)
|
|
20
|
+
&& ((_f = courseData === null || courseData === void 0 ? void 0 : courseData.gradeData) === null || _f === void 0 ? void 0 : _f.isPassing) === false
|
|
21
|
+
&& !((_g = courseData === null || courseData === void 0 ? void 0 : courseData.certificate) === null || _g === void 0 ? void 0 : _g.isEarned);
|
|
22
|
+
return (_jsxs("div", { className: "course-card-banners", "data-testid": "CourseCardBanners", children: [showHistoryUpgradeBanner && (_jsx(UpgradeBanner, { upgradeUrl: upgradeUrl })), (!verifiedCourse && !isAuditAccessExpired) &&
|
|
23
|
+
_jsx(RedeemBanner, {}), isDownloadable &&
|
|
24
|
+
_jsx(ViewCertificateBanner, { cardId: cardId }), isCompletedButNotPassed &&
|
|
25
|
+
_jsx(ViewGradesBanner, { cardId: cardId })] }));
|
|
17
26
|
};
|
|
18
27
|
CourseCardBanners.propTypes = {
|
|
19
28
|
cardId: PropTypes.string.isRequired,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/containers/CourseCard/components/CourseCardBanners/index.jsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,aAAa,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/containers/CourseCard/components/CourseCardBanners/index.jsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,EAAE;;IAC5E,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,oBAAoB,GAAG,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,0CAAE,oBAAoB,KAAI,KAAK,CAAC;IACnF,MAAM,2BAA2B,GAAG,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,2BAA2B,KAAI,KAAK,CAAC;IACrF,MAAM,UAAU,GAAG,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,0CAAE,YAAY,mCAAI,EAAE,CAAC;IAC7D,MAAM,wBAAwB,GAAG,YAAY,IAAI,oBAAoB,IAAI,CAAC,2BAA2B,CAAC;IACtG,MAAM,cAAc,GAAG,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,0CAAE,cAAc,KAAI,KAAK,CAAC;IACxE,MAAM,uBAAuB,GAAG,CAAC,CAAC,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,0CAAE,UAAU,CAAA;WAC7D,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,0CAAE,SAAS,MAAK,KAAK;WAC1C,CAAC,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,0CAAE,QAAQ,CAAA,CAAC;IAEzC,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,iBAAa,mBAAmB,aACjE,wBAAwB,IAAI,CAC3B,KAAC,aAAa,IAAC,UAAU,EAAE,UAAU,GAAI,CAC1C,EACA,CAAC,CAAC,cAAc,IAAI,CAAC,oBAAoB,CAAC;gBACzC,KAAC,YAAY,KAAG,EAEjB,cAAc;gBACb,KAAC,qBAAqB,IAAC,MAAM,EAAE,MAAM,GAAI,EAE1C,uBAAuB;gBACtB,KAAC,gBAAgB,IAAC,MAAM,EAAE,MAAM,GAAI,IAElC,CACP,CAAC;AACJ,CAAC,CAAC;AACF,iBAAiB,CAAC,SAAS,GAAG;IAC5B,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IACnC,cAAc,EAAE,SAAS,CAAC,IAAI;IAC9B,YAAY,EAAE,SAAS,CAAC,IAAI;CAC7B,CAAC;AAEF,eAAe,iBAAiB,CAAC","sourcesContent":["import PropTypes from 'prop-types';\n\nimport { useCourseData } from '@src/hooks';\nimport RedeemBanner from './RedeemBanner';\nimport UpgradeBanner from './UpgradeBanner';\nimport ViewCertificateBanner from './ViewCertificateBanner';\nimport ViewGradesBanner from './ViewGradesBanner';\n\nexport const CourseCardBanners = ({ cardId, verifiedCourse, isHistoryTab }) => {\n const courseData = useCourseData(cardId);\n if (!courseData) {\n return null;\n }\n\n const isAuditAccessExpired = courseData?.enrollment?.isAuditAccessExpired || false;\n const isFromNonUpgradeableCourses = courseData?.isFromNonUpgradeableCourses || false;\n const upgradeUrl = courseData?.courseRun?.marketingUrl ?? '';\n const showHistoryUpgradeBanner = isHistoryTab && isAuditAccessExpired && !isFromNonUpgradeableCourses;\n const isDownloadable = courseData?.certificate?.isDownloadable || false;\n const isCompletedButNotPassed = !!courseData?.courseRun?.isArchived\n && courseData?.gradeData?.isPassing === false\n && !courseData?.certificate?.isEarned;\n\n return (\n <div className=\"course-card-banners\" data-testid=\"CourseCardBanners\">\n {showHistoryUpgradeBanner && (\n <UpgradeBanner upgradeUrl={upgradeUrl} />\n )}\n {(!verifiedCourse && !isAuditAccessExpired) &&\n <RedeemBanner />\n }\n {isDownloadable &&\n <ViewCertificateBanner cardId={cardId} />\n }\n {isCompletedButNotPassed &&\n <ViewGradesBanner cardId={cardId} />\n }\n </div>\n );\n};\nCourseCardBanners.propTypes = {\n cardId: PropTypes.string.isRequired,\n verifiedCourse: PropTypes.bool,\n isHistoryTab: PropTypes.bool,\n};\n\nexport default CourseCardBanners;\n"]}
|
|
@@ -181,4 +181,44 @@ declare namespace messages {
|
|
|
181
181
|
let defaultMessage_22: string;
|
|
182
182
|
export { defaultMessage_22 as defaultMessage };
|
|
183
183
|
}
|
|
184
|
+
namespace verifiedBannerText {
|
|
185
|
+
let id_23: string;
|
|
186
|
+
export { id_23 as id };
|
|
187
|
+
let description_23: string;
|
|
188
|
+
export { description_23 as description };
|
|
189
|
+
let defaultMessage_23: string;
|
|
190
|
+
export { defaultMessage_23 as defaultMessage };
|
|
191
|
+
}
|
|
192
|
+
namespace completedAndPassedBannerText {
|
|
193
|
+
let id_24: string;
|
|
194
|
+
export { id_24 as id };
|
|
195
|
+
let description_24: string;
|
|
196
|
+
export { description_24 as description };
|
|
197
|
+
let defaultMessage_24: string;
|
|
198
|
+
export { defaultMessage_24 as defaultMessage };
|
|
199
|
+
}
|
|
200
|
+
namespace congratulationsText {
|
|
201
|
+
let id_25: string;
|
|
202
|
+
export { id_25 as id };
|
|
203
|
+
let description_25: string;
|
|
204
|
+
export { description_25 as description };
|
|
205
|
+
let defaultMessage_25: string;
|
|
206
|
+
export { defaultMessage_25 as defaultMessage };
|
|
207
|
+
}
|
|
208
|
+
namespace courseCompletedBannerText {
|
|
209
|
+
let id_26: string;
|
|
210
|
+
export { id_26 as id };
|
|
211
|
+
let description_26: string;
|
|
212
|
+
export { description_26 as description };
|
|
213
|
+
let defaultMessage_26: string;
|
|
214
|
+
export { defaultMessage_26 as defaultMessage };
|
|
215
|
+
}
|
|
216
|
+
namespace viewGradesText {
|
|
217
|
+
let id_27: string;
|
|
218
|
+
export { id_27 as id };
|
|
219
|
+
let description_27: string;
|
|
220
|
+
export { description_27 as description };
|
|
221
|
+
let defaultMessage_27: string;
|
|
222
|
+
export { defaultMessage_27 as defaultMessage };
|
|
223
|
+
}
|
|
184
224
|
}
|
|
@@ -53,7 +53,7 @@ const messages = defineMessages({
|
|
|
53
53
|
viewCertificate: {
|
|
54
54
|
id: 'learner-dash.courseCard.banners.viewCertificate',
|
|
55
55
|
description: 'Certificate link text',
|
|
56
|
-
defaultMessage: 'View Certificate
|
|
56
|
+
defaultMessage: 'View Certificate',
|
|
57
57
|
},
|
|
58
58
|
certMinGrade: {
|
|
59
59
|
id: 'learner-dash.courseCard.banners.certMinGrade',
|
|
@@ -115,6 +115,31 @@ const messages = defineMessages({
|
|
|
115
115
|
description: 'Upgrade button text for subscription upgrade banner',
|
|
116
116
|
defaultMessage: 'Upgrade',
|
|
117
117
|
},
|
|
118
|
+
verifiedBannerText: {
|
|
119
|
+
id: 'learner-dash.courseCard.banners.verifiedBannerText',
|
|
120
|
+
description: 'Banner text for verified courses',
|
|
121
|
+
defaultMessage: 'You passed this course on {date} and earned a verified certificate.',
|
|
122
|
+
},
|
|
123
|
+
completedAndPassedBannerText: {
|
|
124
|
+
id: 'learner-dash.courseCard.banners.completedAndPassedBannerText',
|
|
125
|
+
description: 'Banner text for completed and passed courses',
|
|
126
|
+
defaultMessage: 'You completed and passed this course on {date}.',
|
|
127
|
+
},
|
|
128
|
+
congratulationsText: {
|
|
129
|
+
id: 'learner-dash.courseCard.banners.congratulationsText',
|
|
130
|
+
description: 'Congratulations text for verified courses',
|
|
131
|
+
defaultMessage: 'Congratulations!',
|
|
132
|
+
},
|
|
133
|
+
courseCompletedBannerText: {
|
|
134
|
+
id: 'learner-dash.courseCard.banners.courseCompletedBannerText',
|
|
135
|
+
description: 'Course completed banner text for verified courses',
|
|
136
|
+
defaultMessage: 'You completed this course on {date}.',
|
|
137
|
+
},
|
|
138
|
+
viewGradesText: {
|
|
139
|
+
id: 'learner-dash.courseCard.banners.viewGradesText',
|
|
140
|
+
description: 'View grades link text for verified courses',
|
|
141
|
+
defaultMessage: 'View grades',
|
|
142
|
+
},
|
|
118
143
|
});
|
|
119
144
|
export default messages;
|
|
120
145
|
//# sourceMappingURL=messages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../../src/containers/CourseCard/components/CourseCardBanners/messages.js"],"names":[],"mappings":"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","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n auditAccessExpired: {\n id: 'learner-dash.courseCard.banners.auditAccessExpired',\n description: 'Audit access expiration banner message',\n defaultMessage: 'Your audit access to this course has expired.',\n },\n findAnotherCourse: {\n id: 'learner-dash.courseCard.banners.findAnotherCourse',\n description: 'Action prompt taking learners to course exploration',\n defaultMessage: 'Find another course',\n },\n certRestricted: {\n id: 'learner-dash.courseCard.banners.certificateRestricted',\n description: 'Restricted certificate warning message',\n defaultMessage: 'Your Certificate of Achievement is being held pending confirmation that the issuance of your Certificate is in compliance with strict U.S. embargoes on Iran, Cuba, Syria, and Sudan. If you think our system has mistakenly identified you as being connected with one of those countries, please let us know by contacting {supportEmail}.',\n },\n certRestrictedNoEmail: {\n id: 'learner-dash.courseCard.banners.certificateRestrictedNoEmail',\n description: 'Restricted certificate warning message',\n defaultMessage: 'Your Certificate of Achievement is being held pending confirmation that the issuance of your Certificate is in compliance with strict U.S. embargoes on Iran, Cuba, Syria, and Sudan. If you think our system has mistakenly identified you as being connected with one of those countries, please let us know.',\n },\n certRefundContactBilling: {\n id: 'learner-dash.courseCard.banners.certificateRefundContactBilling',\n description: 'Message to learners to contact billing for certificate refunds',\n defaultMessage: 'If you would like a refund on your Certificate of Achievement, please contact our billing address {billingEmail}',\n },\n certRefundContactBillingNoEmail: {\n id: 'learner-dash.courseCard.banners.certificateRefundContactBillingNoEmail',\n description: 'Message to learners to contact billing for certificate refunds',\n defaultMessage: 'If you would like a refund on your Certificate of Achievement, please contact us.',\n },\n passingGrade: {\n id: 'learner-dash.courseCard.banners.passingGrade',\n description: 'Message to learners with minimum passing grade for the course',\n defaultMessage: 'Grade required to pass the course: {minPassingGrade}\\u200f%',\n },\n notEligibleForCert: {\n id: 'learner-dash.courseCard.banners.notEligibleForCert',\n description: 'Certificate inelligibility message',\n defaultMessage: 'You are not eligible for a certificate.',\n },\n viewGrades: {\n id: 'learner-dash.courseCard.banners.viewGrades',\n description: 'Gradses link text',\n defaultMessage: 'View grades.',\n },\n certReady: {\n id: 'learner-dash.courseCard.banners.certReady',\n description: 'Certificate ready message',\n defaultMessage: 'Congratulations. Your certificate is ready.',\n },\n viewCertificate: {\n id: 'learner-dash.courseCard.banners.viewCertificate',\n description: 'Certificate link text',\n defaultMessage: 'View Certificate.',\n },\n certMinGrade: {\n id: 'learner-dash.courseCard.banners.certMinGrade',\n description: 'Passing grade requirement message',\n defaultMessage: 'Grade required for a certificate: {minPassingGrade}\\u200f%',\n },\n downloadCertificate: {\n id: 'learner-dash.courseCard.banners.downloadCertificate',\n description: 'Certificate download link text',\n defaultMessage: 'Download Certificate.',\n },\n gradeAndCertReadyAfter: {\n id: 'learner-dash.courseCard.banners.gradseAndCertReadyAfter',\n description: 'Grade and certificate availability date message',\n defaultMessage: 'Your grade and certificate will be ready after {availableDate}.',\n },\n entitlementUnavailable: {\n id: 'learner-dash.courseCard.banners.entitlementUnavailable',\n description: 'Entitlement course message when no sessions are available',\n defaultMessage: 'There are no sessions available at the moment. The course team will create new sessions soon. If no sessions appear, please contact {emailLink} for information.',\n },\n entitlementExpiringSoon: {\n id: 'learner-dash.courseCard.banners.entitlementExpiringSoon',\n description: 'Entitlement course message when the entitlement is expiring soon.',\n defaultMessage: 'You must {selectSessionButton} by {changeDeadline} to access the course.',\n },\n entitlementExpired: {\n id: 'learner-dash.courseCard.banners.entitlementExpired',\n description: 'Entitlement course message when the entitlement is expired.',\n defaultMessage: 'You can no longer change sessions.',\n },\n selectSession: {\n id: 'learner-dash.courseCard.banners.selectSession',\n description: 'Entitlement session selection link text',\n defaultMessage: 'select a session',\n },\n prerequisitesNotMet: {\n id: 'learner-dash.courseCard.banners.prerequisitesNotMet',\n description: 'Message to learners with unmet prerequisites',\n defaultMessage: 'You can\\'t access this course just yet because you have not met the pre-requisites.',\n },\n courseHasNotStarted: {\n id: 'learner-dash.courseCard.banners.courseHasNotStarted',\n description: 'Course has not started message',\n defaultMessage: 'You can\\'t access this course just yet because the course hasn\\'t started yet. The course will start on {startDate}.',\n },\n redeem: {\n id: 'learner-dash.courseCard.banners.redeem',\n description: 'Redeem link text',\n defaultMessage: 'Redeem',\n },\n subscriptionUpgradeBannerText: {\n id: 'learner-dash.courseCard.banners.subscriptionUpgradeBannerText',\n description: 'Banner text for subscription courses where audit access has expired',\n defaultMessage: 'This course is included in your subscription. Upgrade to get full course access.',\n },\n upgradeAction: {\n id: 'learner-dash.courseCard.banners.upgradeAction',\n description: 'Upgrade button text for subscription upgrade banner',\n defaultMessage: 'Upgrade',\n },\n});\n\nexport default messages;\n"]}
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../../src/containers/CourseCard/components/CourseCardBanners/messages.js"],"names":[],"mappings":"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","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n auditAccessExpired: {\n id: 'learner-dash.courseCard.banners.auditAccessExpired',\n description: 'Audit access expiration banner message',\n defaultMessage: 'Your audit access to this course has expired.',\n },\n findAnotherCourse: {\n id: 'learner-dash.courseCard.banners.findAnotherCourse',\n description: 'Action prompt taking learners to course exploration',\n defaultMessage: 'Find another course',\n },\n certRestricted: {\n id: 'learner-dash.courseCard.banners.certificateRestricted',\n description: 'Restricted certificate warning message',\n defaultMessage: 'Your Certificate of Achievement is being held pending confirmation that the issuance of your Certificate is in compliance with strict U.S. embargoes on Iran, Cuba, Syria, and Sudan. If you think our system has mistakenly identified you as being connected with one of those countries, please let us know by contacting {supportEmail}.',\n },\n certRestrictedNoEmail: {\n id: 'learner-dash.courseCard.banners.certificateRestrictedNoEmail',\n description: 'Restricted certificate warning message',\n defaultMessage: 'Your Certificate of Achievement is being held pending confirmation that the issuance of your Certificate is in compliance with strict U.S. embargoes on Iran, Cuba, Syria, and Sudan. If you think our system has mistakenly identified you as being connected with one of those countries, please let us know.',\n },\n certRefundContactBilling: {\n id: 'learner-dash.courseCard.banners.certificateRefundContactBilling',\n description: 'Message to learners to contact billing for certificate refunds',\n defaultMessage: 'If you would like a refund on your Certificate of Achievement, please contact our billing address {billingEmail}',\n },\n certRefundContactBillingNoEmail: {\n id: 'learner-dash.courseCard.banners.certificateRefundContactBillingNoEmail',\n description: 'Message to learners to contact billing for certificate refunds',\n defaultMessage: 'If you would like a refund on your Certificate of Achievement, please contact us.',\n },\n passingGrade: {\n id: 'learner-dash.courseCard.banners.passingGrade',\n description: 'Message to learners with minimum passing grade for the course',\n defaultMessage: 'Grade required to pass the course: {minPassingGrade}\\u200f%',\n },\n notEligibleForCert: {\n id: 'learner-dash.courseCard.banners.notEligibleForCert',\n description: 'Certificate inelligibility message',\n defaultMessage: 'You are not eligible for a certificate.',\n },\n viewGrades: {\n id: 'learner-dash.courseCard.banners.viewGrades',\n description: 'Gradses link text',\n defaultMessage: 'View grades.',\n },\n certReady: {\n id: 'learner-dash.courseCard.banners.certReady',\n description: 'Certificate ready message',\n defaultMessage: 'Congratulations. Your certificate is ready.',\n },\n viewCertificate: {\n id: 'learner-dash.courseCard.banners.viewCertificate',\n description: 'Certificate link text',\n defaultMessage: 'View Certificate',\n },\n certMinGrade: {\n id: 'learner-dash.courseCard.banners.certMinGrade',\n description: 'Passing grade requirement message',\n defaultMessage: 'Grade required for a certificate: {minPassingGrade}\\u200f%',\n },\n downloadCertificate: {\n id: 'learner-dash.courseCard.banners.downloadCertificate',\n description: 'Certificate download link text',\n defaultMessage: 'Download Certificate.',\n },\n gradeAndCertReadyAfter: {\n id: 'learner-dash.courseCard.banners.gradseAndCertReadyAfter',\n description: 'Grade and certificate availability date message',\n defaultMessage: 'Your grade and certificate will be ready after {availableDate}.',\n },\n entitlementUnavailable: {\n id: 'learner-dash.courseCard.banners.entitlementUnavailable',\n description: 'Entitlement course message when no sessions are available',\n defaultMessage: 'There are no sessions available at the moment. The course team will create new sessions soon. If no sessions appear, please contact {emailLink} for information.',\n },\n entitlementExpiringSoon: {\n id: 'learner-dash.courseCard.banners.entitlementExpiringSoon',\n description: 'Entitlement course message when the entitlement is expiring soon.',\n defaultMessage: 'You must {selectSessionButton} by {changeDeadline} to access the course.',\n },\n entitlementExpired: {\n id: 'learner-dash.courseCard.banners.entitlementExpired',\n description: 'Entitlement course message when the entitlement is expired.',\n defaultMessage: 'You can no longer change sessions.',\n },\n selectSession: {\n id: 'learner-dash.courseCard.banners.selectSession',\n description: 'Entitlement session selection link text',\n defaultMessage: 'select a session',\n },\n prerequisitesNotMet: {\n id: 'learner-dash.courseCard.banners.prerequisitesNotMet',\n description: 'Message to learners with unmet prerequisites',\n defaultMessage: 'You can\\'t access this course just yet because you have not met the pre-requisites.',\n },\n courseHasNotStarted: {\n id: 'learner-dash.courseCard.banners.courseHasNotStarted',\n description: 'Course has not started message',\n defaultMessage: 'You can\\'t access this course just yet because the course hasn\\'t started yet. The course will start on {startDate}.',\n },\n redeem: {\n id: 'learner-dash.courseCard.banners.redeem',\n description: 'Redeem link text',\n defaultMessage: 'Redeem',\n },\n subscriptionUpgradeBannerText: {\n id: 'learner-dash.courseCard.banners.subscriptionUpgradeBannerText',\n description: 'Banner text for subscription courses where audit access has expired',\n defaultMessage: 'This course is included in your subscription. Upgrade to get full course access.',\n },\n upgradeAction: {\n id: 'learner-dash.courseCard.banners.upgradeAction',\n description: 'Upgrade button text for subscription upgrade banner',\n defaultMessage: 'Upgrade',\n },\n verifiedBannerText: {\n id: 'learner-dash.courseCard.banners.verifiedBannerText',\n description: 'Banner text for verified courses',\n defaultMessage: 'You passed this course on {date} and earned a verified certificate.',\n },\n completedAndPassedBannerText: {\n id: 'learner-dash.courseCard.banners.completedAndPassedBannerText',\n description: 'Banner text for completed and passed courses',\n defaultMessage: 'You completed and passed this course on {date}.',\n },\n congratulationsText: {\n id: 'learner-dash.courseCard.banners.congratulationsText',\n description: 'Congratulations text for verified courses',\n defaultMessage: 'Congratulations!',\n },\n courseCompletedBannerText: {\n id: 'learner-dash.courseCard.banners.courseCompletedBannerText',\n description: 'Course completed banner text for verified courses',\n defaultMessage: 'You completed this course on {date}.',\n },\n viewGradesText: {\n id: 'learner-dash.courseCard.banners.viewGradesText',\n description: 'View grades link text for verified courses',\n defaultMessage: 'View grades',\n },\n});\n\nexport default messages;\n"]}
|
|
@@ -2,7 +2,7 @@ export const locationId: string;
|
|
|
2
2
|
export const SortKeys: any;
|
|
3
3
|
export const FilterKeys: any;
|
|
4
4
|
export const ListPageSize: 6;
|
|
5
|
-
export const subscriptionRenewalURL: "
|
|
5
|
+
export const subscriptionRenewalURL: "/manage-subscription";
|
|
6
6
|
export const exploreProgramsUrl: "/explore-programs";
|
|
7
7
|
export const manageSubscriptionURL: "/manage-subscription";
|
|
8
8
|
export const checkoutPageURL: "/checkout-page";
|
|
@@ -13,7 +13,7 @@ export const FilterKeys = StrictDict({
|
|
|
13
13
|
});
|
|
14
14
|
export const ListPageSize = 6;
|
|
15
15
|
// TODO : Below URL is temporary and will be removed once the subscription renewal flow is implemented in the app.
|
|
16
|
-
export const subscriptionRenewalURL = '
|
|
16
|
+
export const subscriptionRenewalURL = '/manage-subscription';
|
|
17
17
|
export const exploreProgramsUrl = '/explore-programs';
|
|
18
18
|
export const manageSubscriptionURL = '/manage-subscription';
|
|
19
19
|
export const checkoutPageURL = '/checkout-page';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/data/constants/app.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;IACjC,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;CACf,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,kHAAkH;AAClH,MAAM,CAAC,MAAM,sBAAsB,GAAG,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/data/constants/app.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;IACjC,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;CACf,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,kHAAkH;AAClH,MAAM,CAAC,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AAC7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,sBAAsB,CAAC;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAC","sourcesContent":["import { StrictDict } from '../../utils';\nexport const locationId = window.location.pathname.slice(1);\n\nexport const SortKeys = StrictDict({\n enrolled: 'enrolled',\n title: 'title',\n});\n\nexport const FilterKeys = StrictDict({\n inProgress: 'inProgress',\n notStarted: 'notStarted',\n done: 'done',\n notEnrolled: 'notEnrolled',\n upgraded: 'upgraded',\n});\n\nexport const ListPageSize = 6;\n// TODO : Below URL is temporary and will be removed once the subscription renewal flow is implemented in the app.\nexport const subscriptionRenewalURL = '/manage-subscription';\nexport const exploreProgramsUrl = '/explore-programs';\nexport const manageSubscriptionURL = '/manage-subscription';\nexport const checkoutPageURL = '/checkout-page';\n"]}
|