@edx/frontend-plugin-advertisements 2.26.1 → 2.28.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/README.rst +3 -0
- package/dist/generic/upsell-bullets/UpsellTable.js +16 -7
- package/dist/generic/upsell-bullets/UpsellTable.js.map +1 -1
- package/dist/generic/upsell-bullets/UpsellTable.scss +17 -0
- package/dist/upgrade-modal/BaseModal.js +2 -5
- package/dist/upgrade-modal/BaseModal.js.map +1 -1
- package/dist/upgrade-modal/NextUnitButton.js +3 -1
- package/dist/upgrade-modal/NextUnitButton.js.map +1 -1
- package/dist/upgrade-modal/UpgradeModal.js +3 -3
- package/dist/upgrade-modal/UpgradeModal.js.map +1 -1
- package/dist/upgrade-notification/UpgradeNotification.js +53 -36
- package/dist/upgrade-notification/UpgradeNotification.js.map +1 -1
- package/dist/upgrade-notification/UpgradeNotification.scss +65 -0
- package/dist/upgrade-notification/certificate-preview/CertificatePreview.js +6 -1
- package/dist/upgrade-notification/certificate-preview/CertificatePreview.js.map +1 -1
- package/dist/upgrade-notification/messages.js +14 -4
- package/dist/upgrade-notification/messages.js.map +1 -1
- package/package.json +1 -1
package/README.rst
CHANGED
|
@@ -110,6 +110,9 @@ components to appear in the correct plugin slots, you will need a local ``env.co
|
|
|
110
110
|
},
|
|
111
111
|
},
|
|
112
112
|
OPTIMIZELY_FULL_STACK_SDK_KEY: 'vtr_upgrade',
|
|
113
|
+
// Optional. 'true' (any case) renders the in-house upgrade modal instead of the Red Ventures widget.
|
|
114
|
+
// Unset or any other value keeps the Red Ventures widget.
|
|
115
|
+
DISABLE_RED_VENTURES_WIDGETS: 'true',
|
|
113
116
|
};
|
|
114
117
|
|
|
115
118
|
export default config;
|
|
@@ -13,24 +13,31 @@ require("./UpsellTable.scss");
|
|
|
13
13
|
var _messages = _interopRequireDefault(require("./messages"));
|
|
14
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
15
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
+
// inlineHeader puts the section header in the table's first header cell, as the sidebar card does;
|
|
17
|
+
// the upgrade modal keeps it as a heading above the table.
|
|
16
18
|
const UpsellTable = _ref => {
|
|
17
19
|
let {
|
|
18
20
|
isFBE,
|
|
19
|
-
learningAssistantEnabled
|
|
21
|
+
learningAssistantEnabled,
|
|
22
|
+
inlineHeader
|
|
20
23
|
} = _ref;
|
|
21
24
|
const intl = (0, _i18n.useIntl)();
|
|
22
25
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Col, {
|
|
23
26
|
className: "px-4 pb-4 small",
|
|
24
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
|
|
27
|
+
children: [!inlineHeader && /*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
|
|
25
28
|
className: "mb-4 primary-500",
|
|
26
29
|
children: intl.formatMessage(_messages.default.tableSectionHeader)
|
|
27
30
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Row, {
|
|
28
31
|
className: "m-0 text-center",
|
|
29
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.
|
|
30
|
-
|
|
32
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Col, {
|
|
33
|
+
className: inlineHeader ? 'table-header-cell text-left' : undefined,
|
|
34
|
+
children: [inlineHeader && /*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
|
|
35
|
+
className: "table-header-title",
|
|
36
|
+
children: intl.formatMessage(_messages.default.tableSectionHeader)
|
|
37
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
31
38
|
className: "sr-only",
|
|
32
39
|
children: intl.formatMessage(_messages.default.featureHeader)
|
|
33
|
-
})
|
|
40
|
+
})]
|
|
34
41
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Col, {
|
|
35
42
|
className: "audit-cell top-audit-border col-2 ",
|
|
36
43
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
@@ -134,11 +141,13 @@ const UpsellTable = _ref => {
|
|
|
134
141
|
};
|
|
135
142
|
UpsellTable.defaultProps = {
|
|
136
143
|
isFBE: false,
|
|
137
|
-
learningAssistantEnabled: false
|
|
144
|
+
learningAssistantEnabled: false,
|
|
145
|
+
inlineHeader: false
|
|
138
146
|
};
|
|
139
147
|
UpsellTable.propTypes = {
|
|
140
148
|
isFBE: _propTypes.default.bool,
|
|
141
|
-
learningAssistantEnabled: _propTypes.default.bool
|
|
149
|
+
learningAssistantEnabled: _propTypes.default.bool,
|
|
150
|
+
inlineHeader: _propTypes.default.bool
|
|
142
151
|
};
|
|
143
152
|
var _default = exports.default = UpsellTable;
|
|
144
153
|
//# sourceMappingURL=UpsellTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpsellTable.js","names":["_propTypes","_interopRequireDefault","require","_i18n","_paragon","_icons","_frontendPlatform","_messages","_jsxRuntime","e","__esModule","default","UpsellTable","_ref","isFBE","learningAssistantEnabled","intl","useIntl","jsxs","Col","className","children","jsx","formatMessage","messages","tableSectionHeader","Row","featureHeader","auditHeader","verifiedHeader","certificate","certificateLink","Hyperlink","destination","getConfig","MARKETING_SITE_BASE_URL","certificateLinkText","Icon","src","CloseSmall","alt","notIncludedAltMessage","CheckCircle","includedAltMessage","grades","learningAssistant","access","defaultProps","propTypes","PropTypes","bool","_default","exports"],"sources":["../../../src/generic/upsell-bullets/UpsellTable.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Col,\n Hyperlink,\n Icon,\n Row,\n} from '@openedx/paragon';\nimport { CheckCircle, CloseSmall } from '@openedx/paragon/icons';\nimport { getConfig } from '@edx/frontend-platform';\n\nimport './UpsellTable.scss';\nimport messages from './messages';\n\nconst UpsellTable = ({ isFBE, learningAssistantEnabled }) => {\n const intl = useIntl();\n return (\n <Col className=\"px-4 pb-4 small\">\n <h3 className=\"mb-4 primary-500\">\n {intl.formatMessage(messages.tableSectionHeader)}\n </h3>\n <Row className=\"m-0 text-center\">\n <Col>\n <span className=\"sr-only\">\n {intl.formatMessage(messages.featureHeader)}\n </span>\n </Col>\n <Col className=\"audit-cell top-audit-border col-2 \">\n <div className=\"center-items\">\n {intl.formatMessage(messages.auditHeader)}\n </div>\n </Col>\n <Col className=\"verified-cell top-verified-border font-weight-bold col-2\">\n <div className=\"center-items\">\n {intl.formatMessage(messages.verifiedHeader)}\n </div>\n </Col>\n </Row>\n <Row className=\"m-0\">\n <Col className=\"feature-cell\">\n {intl.formatMessage(\n messages.certificate,\n {\n certificateLink: (\n <Hyperlink destination={`${getConfig().MARKETING_SITE_BASE_URL}/verified-certificate`}>\n {intl.formatMessage(messages.certificateLinkText)}\n </Hyperlink>\n ),\n },\n )}\n </Col>\n <Col className=\"audit-cell col-2\">\n <div className=\"center-items\">\n <Icon src={CloseSmall} alt={intl.formatMessage(messages.notIncludedAltMessage)} />\n </div>\n </Col>\n <Col className=\"verified-cell col-2\">\n <div className=\"center-items\">\n <Icon src={CheckCircle} alt={intl.formatMessage(messages.includedAltMessage)} />\n </div>\n </Col>\n </Row>\n {isFBE && (\n <Row className=\"m-0\">\n <Col className=\"feature-cell\">\n {intl.formatMessage(messages.grades)}\n </Col>\n <Col className=\"audit-cell col-2 center-items\">\n <Icon src={CloseSmall} alt={intl.formatMessage(messages.notIncludedAltMessage)} />\n </Col>\n <Col className=\"verified-cell col-2 center-items\">\n <Icon src={CheckCircle} alt={intl.formatMessage(messages.includedAltMessage)} />\n </Col>\n </Row>\n )}\n {learningAssistantEnabled && (\n <Row className=\"m-0\">\n <Col className=\"feature-cell\">\n <span>\n {intl.formatMessage(messages.learningAssistant)}\n </span>\n </Col>\n <Col className=\"audit-cell col-2 center-items\">\n <Icon src={CloseSmall} alt={intl.formatMessage(messages.notIncludedAltMessage)} />\n </Col>\n <Col className=\"verified-cell col-2 center-items\">\n <Icon src={CheckCircle} alt={intl.formatMessage(messages.includedAltMessage)} />\n </Col>\n </Row>\n )}\n <Row className=\"m-0\">\n <Col className=\"feature-cell bottom-no-border flex align-items-center pb-3\">\n {intl.formatMessage(messages.access)}\n </Col>\n <Col className=\"audit-cell bottom-audit-border col-2 pb-3 center-items\">\n <Icon src={CloseSmall} alt={intl.formatMessage(messages.notIncludedAltMessage)} />\n </Col>\n <Col className=\"verified-cell bottom-verified-border col-2 center-items pb-3\">\n <Icon src={CheckCircle} alt={intl.formatMessage(messages.includedAltMessage)} />\n </Col>\n </Row>\n </Col>\n );\n};\n\nUpsellTable.defaultProps = {\n isFBE: false,\n learningAssistantEnabled: false,\n};\n\nUpsellTable.propTypes = {\n isFBE: PropTypes.bool,\n learningAssistantEnabled: PropTypes.bool,\n};\n\nexport default UpsellTable;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"UpsellTable.js","names":["_propTypes","_interopRequireDefault","require","_i18n","_paragon","_icons","_frontendPlatform","_messages","_jsxRuntime","e","__esModule","default","UpsellTable","_ref","isFBE","learningAssistantEnabled","inlineHeader","intl","useIntl","jsxs","Col","className","children","jsx","formatMessage","messages","tableSectionHeader","Row","undefined","featureHeader","auditHeader","verifiedHeader","certificate","certificateLink","Hyperlink","destination","getConfig","MARKETING_SITE_BASE_URL","certificateLinkText","Icon","src","CloseSmall","alt","notIncludedAltMessage","CheckCircle","includedAltMessage","grades","learningAssistant","access","defaultProps","propTypes","PropTypes","bool","_default","exports"],"sources":["../../../src/generic/upsell-bullets/UpsellTable.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n Col,\n Hyperlink,\n Icon,\n Row,\n} from '@openedx/paragon';\nimport { CheckCircle, CloseSmall } from '@openedx/paragon/icons';\nimport { getConfig } from '@edx/frontend-platform';\n\nimport './UpsellTable.scss';\nimport messages from './messages';\n\n// inlineHeader puts the section header in the table's first header cell, as the sidebar card does;\n// the upgrade modal keeps it as a heading above the table.\nconst UpsellTable = ({ isFBE, learningAssistantEnabled, inlineHeader }) => {\n const intl = useIntl();\n return (\n <Col className=\"px-4 pb-4 small\">\n {!inlineHeader && (\n <h3 className=\"mb-4 primary-500\">\n {intl.formatMessage(messages.tableSectionHeader)}\n </h3>\n )}\n <Row className=\"m-0 text-center\">\n <Col className={inlineHeader ? 'table-header-cell text-left' : undefined}>\n {inlineHeader && (\n <h3 className=\"table-header-title\">\n {intl.formatMessage(messages.tableSectionHeader)}\n </h3>\n )}\n <span className=\"sr-only\">\n {intl.formatMessage(messages.featureHeader)}\n </span>\n </Col>\n <Col className=\"audit-cell top-audit-border col-2 \">\n <div className=\"center-items\">\n {intl.formatMessage(messages.auditHeader)}\n </div>\n </Col>\n <Col className=\"verified-cell top-verified-border font-weight-bold col-2\">\n <div className=\"center-items\">\n {intl.formatMessage(messages.verifiedHeader)}\n </div>\n </Col>\n </Row>\n <Row className=\"m-0\">\n <Col className=\"feature-cell\">\n {intl.formatMessage(\n messages.certificate,\n {\n certificateLink: (\n <Hyperlink destination={`${getConfig().MARKETING_SITE_BASE_URL}/verified-certificate`}>\n {intl.formatMessage(messages.certificateLinkText)}\n </Hyperlink>\n ),\n },\n )}\n </Col>\n <Col className=\"audit-cell col-2\">\n <div className=\"center-items\">\n <Icon src={CloseSmall} alt={intl.formatMessage(messages.notIncludedAltMessage)} />\n </div>\n </Col>\n <Col className=\"verified-cell col-2\">\n <div className=\"center-items\">\n <Icon src={CheckCircle} alt={intl.formatMessage(messages.includedAltMessage)} />\n </div>\n </Col>\n </Row>\n {isFBE && (\n <Row className=\"m-0\">\n <Col className=\"feature-cell\">\n {intl.formatMessage(messages.grades)}\n </Col>\n <Col className=\"audit-cell col-2 center-items\">\n <Icon src={CloseSmall} alt={intl.formatMessage(messages.notIncludedAltMessage)} />\n </Col>\n <Col className=\"verified-cell col-2 center-items\">\n <Icon src={CheckCircle} alt={intl.formatMessage(messages.includedAltMessage)} />\n </Col>\n </Row>\n )}\n {learningAssistantEnabled && (\n <Row className=\"m-0\">\n <Col className=\"feature-cell\">\n <span>\n {intl.formatMessage(messages.learningAssistant)}\n </span>\n </Col>\n <Col className=\"audit-cell col-2 center-items\">\n <Icon src={CloseSmall} alt={intl.formatMessage(messages.notIncludedAltMessage)} />\n </Col>\n <Col className=\"verified-cell col-2 center-items\">\n <Icon src={CheckCircle} alt={intl.formatMessage(messages.includedAltMessage)} />\n </Col>\n </Row>\n )}\n <Row className=\"m-0\">\n <Col className=\"feature-cell bottom-no-border flex align-items-center pb-3\">\n {intl.formatMessage(messages.access)}\n </Col>\n <Col className=\"audit-cell bottom-audit-border col-2 pb-3 center-items\">\n <Icon src={CloseSmall} alt={intl.formatMessage(messages.notIncludedAltMessage)} />\n </Col>\n <Col className=\"verified-cell bottom-verified-border col-2 center-items pb-3\">\n <Icon src={CheckCircle} alt={intl.formatMessage(messages.includedAltMessage)} />\n </Col>\n </Row>\n </Col>\n );\n};\n\nUpsellTable.defaultProps = {\n isFBE: false,\n learningAssistantEnabled: false,\n inlineHeader: false,\n};\n\nUpsellTable.propTypes = {\n isFBE: PropTypes.bool,\n learningAssistantEnabled: PropTypes.bool,\n inlineHeader: PropTypes.bool,\n};\n\nexport default UpsellTable;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -39,6 +39,23 @@
|
|
|
39
39
|
padding: 8px;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
// The section header when it sits in the first header cell (inlineHeader), aligned with the feature cells.
|
|
43
|
+
// It stays a heading for screen readers, sized as the cell text.
|
|
44
|
+
.table-header-cell {
|
|
45
|
+
display: flex;
|
|
46
|
+
align-items: center;
|
|
47
|
+
padding: 8px 8px 8px 0;
|
|
48
|
+
|
|
49
|
+
.table-header-title {
|
|
50
|
+
margin: 0;
|
|
51
|
+
font-family: inherit;
|
|
52
|
+
font-size: inherit;
|
|
53
|
+
font-weight: var(--pgn-typography-font-weight-bold);
|
|
54
|
+
line-height: inherit;
|
|
55
|
+
color: inherit;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
42
59
|
.feature-cell {
|
|
43
60
|
border-bottom: 1px solid var(--pgn-color-light-500);
|
|
44
61
|
color: var(--pgn-color-gray-700);
|
|
@@ -9,6 +9,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
9
9
|
var _i18n = require("@edx/frontend-platform/i18n");
|
|
10
10
|
var _paragon = require("@openedx/paragon");
|
|
11
11
|
var _certificatePreview = _interopRequireDefault(require("../upgrade-notification/certificate-preview"));
|
|
12
|
+
var _messages = _interopRequireDefault(require("../upgrade-notification/messages"));
|
|
12
13
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
15
|
const BaseModal = _ref => {
|
|
@@ -53,11 +54,7 @@ const BaseModal = _ref => {
|
|
|
53
54
|
className: "mb-2",
|
|
54
55
|
children: [offer && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
55
56
|
className: "text-center",
|
|
56
|
-
children: intl.formatMessage({
|
|
57
|
-
id: 'learning.generic.upgradeNotification.code',
|
|
58
|
-
defaultMessage: 'Use code {code} at checkout',
|
|
59
|
-
description: 'Message to user with code for discounted course price'
|
|
60
|
-
}, {
|
|
57
|
+
children: intl.formatMessage(_messages.default.discountCodeMessage, {
|
|
61
58
|
code: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
62
59
|
className: "font-weight-bold",
|
|
63
60
|
children: offer.code
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseModal.js","names":["_react","_interopRequireDefault","require","_propTypes","_i18n","_paragon","_certificatePreview","_jsxRuntime","e","__esModule","default","BaseModal","_ref","isOpen","close","courseId","offer","callToActionButton","children","intl","useIntl","title","formatMessage","id","defaultMessage","description","jsx","MarketingModal","onClose","isBlocking","size","heroIsDark","heroNode","ModalDialog","Hero","className","style","background","borderTopLeftRadius","borderTopRightRadius","Content","bgColor","footerNode","jsxs","ActionRow","isStacked","code","defaultProps","propTypes","PropTypes","shape","string","variationKey","isRequired","func","bool","node","_default","exports"],"sources":["../../src/upgrade-modal/BaseModal.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { ActionRow, MarketingModal, ModalDialog } from '@openedx/paragon';\nimport CertificatePreview from '../upgrade-notification/certificate-preview';\n\nconst BaseModal = ({\n isOpen,\n close,\n courseId,\n offer,\n callToActionButton,\n children,\n}) => {\n const intl = useIntl();\n const title = intl.formatMessage({\n id: 'learning.upgrade-modal.title',\n defaultMessage: 'Pursue a verified certificate',\n description: 'Upgrade modal title',\n });\n\n return (\n <MarketingModal\n title={title}\n isOpen={isOpen}\n onClose={close}\n isBlocking\n size=\"md\"\n heroIsDark\n heroNode={(\n <ModalDialog.Hero\n className=\"justify-content-center\"\n style={{\n background: 'linear-gradient(#001B1E, #0E3639)',\n borderTopLeftRadius: '6.8px',\n borderTopRightRadius: '6.8px',\n }}\n >\n <ModalDialog.Hero.Content className=\"m-0 text-primary-500 pt-4\">\n <CertificatePreview {...{ courseId, bgColor: 'bg-light-100' }} />\n </ModalDialog.Hero.Content>\n </ModalDialog.Hero>\n )}\n footerNode={(\n <ActionRow isStacked className=\"mb-2\">\n {offer && (\n <div className=\"text-center\">\n {intl.formatMessage(\n
|
|
1
|
+
{"version":3,"file":"BaseModal.js","names":["_react","_interopRequireDefault","require","_propTypes","_i18n","_paragon","_certificatePreview","_messages","_jsxRuntime","e","__esModule","default","BaseModal","_ref","isOpen","close","courseId","offer","callToActionButton","children","intl","useIntl","title","formatMessage","id","defaultMessage","description","jsx","MarketingModal","onClose","isBlocking","size","heroIsDark","heroNode","ModalDialog","Hero","className","style","background","borderTopLeftRadius","borderTopRightRadius","Content","bgColor","footerNode","jsxs","ActionRow","isStacked","upgradeNotificationMessages","discountCodeMessage","code","defaultProps","propTypes","PropTypes","shape","string","variationKey","isRequired","func","bool","node","_default","exports"],"sources":["../../src/upgrade-modal/BaseModal.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { ActionRow, MarketingModal, ModalDialog } from '@openedx/paragon';\nimport CertificatePreview from '../upgrade-notification/certificate-preview';\nimport upgradeNotificationMessages from '../upgrade-notification/messages';\n\nconst BaseModal = ({\n isOpen,\n close,\n courseId,\n offer,\n callToActionButton,\n children,\n}) => {\n const intl = useIntl();\n const title = intl.formatMessage({\n id: 'learning.upgrade-modal.title',\n defaultMessage: 'Pursue a verified certificate',\n description: 'Upgrade modal title',\n });\n\n return (\n <MarketingModal\n title={title}\n isOpen={isOpen}\n onClose={close}\n isBlocking\n size=\"md\"\n heroIsDark\n heroNode={(\n <ModalDialog.Hero\n className=\"justify-content-center\"\n style={{\n background: 'linear-gradient(#001B1E, #0E3639)',\n borderTopLeftRadius: '6.8px',\n borderTopRightRadius: '6.8px',\n }}\n >\n <ModalDialog.Hero.Content className=\"m-0 text-primary-500 pt-4\">\n <CertificatePreview {...{ courseId, bgColor: 'bg-light-100' }} />\n </ModalDialog.Hero.Content>\n </ModalDialog.Hero>\n )}\n footerNode={(\n <ActionRow isStacked className=\"mb-2\">\n {offer && (\n <div className=\"text-center\">\n {intl.formatMessage(\n upgradeNotificationMessages.discountCodeMessage,\n {\n code: (<span className=\"font-weight-bold\">{offer.code}</span>),\n },\n )}\n </div>\n )}\n {callToActionButton}\n </ActionRow>\n )}\n >\n <div className=\"mx-n4\">\n {children}\n </div>\n </MarketingModal>\n );\n};\n\nBaseModal.defaultProps = {\n offer: null,\n};\n\nBaseModal.propTypes = {\n offer: PropTypes.shape({\n code: PropTypes.string,\n }),\n // eslint-disable-next-line react/no-unused-prop-types\n variationKey: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n close: PropTypes.func.isRequired,\n isOpen: PropTypes.bool.isRequired,\n callToActionButton: PropTypes.node.isRequired,\n children: PropTypes.node.isRequired,\n};\n\nexport default BaseModal;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ exports.default = void 0;
|
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var _paragon = require("@openedx/paragon");
|
|
10
|
+
var _frontendPlatform = require("@edx/frontend-platform");
|
|
10
11
|
var _react2 = require("@edx/frontend-platform/react");
|
|
11
12
|
var _modelStore = require("@src/generic/model-store");
|
|
12
13
|
var _hooks = require("@src/data/hooks");
|
|
@@ -33,6 +34,7 @@ const NextUnitButton = _ref => {
|
|
|
33
34
|
buttonStyle,
|
|
34
35
|
isAtTop
|
|
35
36
|
} = _ref;
|
|
37
|
+
const disableRedVentures = String((0, _frontendPlatform.getConfig)().DISABLE_RED_VENTURES_WIDGETS).toLowerCase() === 'true';
|
|
36
38
|
const courseId = (0, _hooks.useContextId)();
|
|
37
39
|
const [isOpen, open, close] = (0, _paragon.useToggle)(false);
|
|
38
40
|
const {
|
|
@@ -81,7 +83,7 @@ const NextUnitButton = _ref => {
|
|
|
81
83
|
buttonText: buttonText,
|
|
82
84
|
disabled: disabled,
|
|
83
85
|
isAtTop: isAtTop
|
|
84
|
-
}), isOpen && /*#__PURE__*/(0, _jsxRuntime.jsx)(_react2.ErrorBoundary, {
|
|
86
|
+
}), isOpen && disableRedVentures && /*#__PURE__*/(0, _jsxRuntime.jsx)(_UpgradeModal.default, _objectSpread({}, modalProps)), isOpen && !disableRedVentures && /*#__PURE__*/(0, _jsxRuntime.jsx)(_react2.ErrorBoundary, {
|
|
85
87
|
fallbackComponent: /*#__PURE__*/(0, _jsxRuntime.jsx)(_UpgradeModal.default, _objectSpread({}, modalProps)),
|
|
86
88
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_dynamicExperienceSlot.default, {
|
|
87
89
|
widgetName: "MonarchResolvedDynamicExperience",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NextUnitButton.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_paragon","_react2","_modelStore","_hooks","_NextButton","_hooks2","_UpgradeModal","_dynamicExperienceSlot","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","NextUnitButton","_ref","disabled","buttonText","sequenceId","onClickHandler","nextLink","variant","buttonStyle","isAtTop","courseId","useContextId","isOpen","open","close","useToggle","verifiedMode","org","useModel","offer","marketingUrl","accessExpiration","datesBannerInfo","learningAssistantEnabled","isEnabled","useIsModalEnabled","shouldShowModalOnClick","countNextClick","useInCourseUpgradeModal","handleModal","useEffect","modalProps","useMemo","jsxs","Fragment","children","jsx","ErrorBoundary","fallbackComponent","widgetName","placement","tenantId","pluginProps","defaultProps","propTypes","PropTypes","bool","isRequired","string","unitId","func","_default","exports"],"sources":["../../src/upgrade-modal/NextUnitButton.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useToggle } from '@openedx/paragon';\nimport { ErrorBoundary } from '@edx/frontend-platform/react';\n\nimport { useModel } from '@src/generic/model-store';\nimport { useContextId } from '@src/data/hooks';\nimport NextButton from '@src/courseware/course/sequence/sequence-navigation/generic/NextButton';\nimport { useInCourseUpgradeModal, useIsModalEnabled } from './hooks';\nimport UpgradeModal from './UpgradeModal';\nimport DynamicExperienceSlot from '../dynamic-experience-slot';\n\nconst NextUnitButton = ({\n disabled,\n buttonText,\n sequenceId,\n onClickHandler,\n nextLink,\n variant,\n buttonStyle,\n isAtTop,\n}) => {\n const courseId = useContextId();\n const [isOpen, open, close] = useToggle(false);\n const {\n verifiedMode,\n org,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n offer,\n marketingUrl,\n accessExpiration,\n datesBannerInfo,\n learningAssistantEnabled,\n } = useModel('coursewareMeta', courseId);\n\n const isEnabled = useIsModalEnabled(courseId);\n const [shouldShowModalOnClick, countNextClick] = useInCourseUpgradeModal();\n\n const handleModal = () => {\n if (isEnabled) {\n countNextClick();\n if (shouldShowModalOnClick) {\n open();\n }\n }\n };\n\n useEffect(() => {\n handleModal();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sequenceId]);\n\n const modalProps = useMemo(() => ({\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n datesBannerInfo,\n learningAssistantEnabled,\n }), [\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n datesBannerInfo,\n learningAssistantEnabled,\n ]);\n\n return (\n <>\n <NextButton\n onClickHandler={onClickHandler}\n nextLink={nextLink}\n variant={variant}\n buttonStyle={buttonStyle}\n buttonText={buttonText}\n disabled={disabled}\n isAtTop={isAtTop}\n />\n\n {isOpen && (\n <ErrorBoundary fallbackComponent={<UpgradeModal {...modalProps} />}>\n <DynamicExperienceSlot\n widgetName=\"MonarchResolvedDynamicExperience\"\n placement=\"org.2u.edx.frontend.learning.upgrade.modal.v1\"\n tenantId=\"2u-edx-learning\"\n pluginProps={modalProps}\n />\n </ErrorBoundary>\n )}\n </>\n );\n};\n\nNextUnitButton.defaultProps = {\n isAtTop: false,\n};\n\nNextUnitButton.propTypes = {\n disabled: PropTypes.bool.isRequired,\n buttonText: PropTypes.string.isRequired,\n nextLink: PropTypes.string.isRequired,\n sequenceId: PropTypes.string.isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n unitId: PropTypes.string.isRequired,\n onClickHandler: PropTypes.func.isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n courseId: PropTypes.string.isRequired,\n variant: PropTypes.string.isRequired,\n buttonStyle: PropTypes.string.isRequired,\n isAtTop: PropTypes.bool,\n};\n\nexport default NextUnitButton;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"NextUnitButton.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_paragon","_frontendPlatform","_react2","_modelStore","_hooks","_NextButton","_hooks2","_UpgradeModal","_dynamicExperienceSlot","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","NextUnitButton","_ref","disabled","buttonText","sequenceId","onClickHandler","nextLink","variant","buttonStyle","isAtTop","disableRedVentures","getConfig","DISABLE_RED_VENTURES_WIDGETS","toLowerCase","courseId","useContextId","isOpen","open","close","useToggle","verifiedMode","org","useModel","offer","marketingUrl","accessExpiration","datesBannerInfo","learningAssistantEnabled","isEnabled","useIsModalEnabled","shouldShowModalOnClick","countNextClick","useInCourseUpgradeModal","handleModal","useEffect","modalProps","useMemo","jsxs","Fragment","children","jsx","ErrorBoundary","fallbackComponent","widgetName","placement","tenantId","pluginProps","defaultProps","propTypes","PropTypes","bool","isRequired","string","unitId","func","_default","exports"],"sources":["../../src/upgrade-modal/NextUnitButton.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useToggle } from '@openedx/paragon';\nimport { getConfig } from '@edx/frontend-platform';\nimport { ErrorBoundary } from '@edx/frontend-platform/react';\n\nimport { useModel } from '@src/generic/model-store';\nimport { useContextId } from '@src/data/hooks';\nimport NextButton from '@src/courseware/course/sequence/sequence-navigation/generic/NextButton';\nimport { useInCourseUpgradeModal, useIsModalEnabled } from './hooks';\nimport UpgradeModal from './UpgradeModal';\nimport DynamicExperienceSlot from '../dynamic-experience-slot';\n\nconst NextUnitButton = ({\n disabled,\n buttonText,\n sequenceId,\n onClickHandler,\n nextLink,\n variant,\n buttonStyle,\n isAtTop,\n}) => {\n const disableRedVentures = String(getConfig().DISABLE_RED_VENTURES_WIDGETS).toLowerCase() === 'true';\n const courseId = useContextId();\n const [isOpen, open, close] = useToggle(false);\n const {\n verifiedMode,\n org,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n offer,\n marketingUrl,\n accessExpiration,\n datesBannerInfo,\n learningAssistantEnabled,\n } = useModel('coursewareMeta', courseId);\n\n const isEnabled = useIsModalEnabled(courseId);\n const [shouldShowModalOnClick, countNextClick] = useInCourseUpgradeModal();\n\n const handleModal = () => {\n if (isEnabled) {\n countNextClick();\n if (shouldShowModalOnClick) {\n open();\n }\n }\n };\n\n useEffect(() => {\n handleModal();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sequenceId]);\n\n const modalProps = useMemo(() => ({\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n datesBannerInfo,\n learningAssistantEnabled,\n }), [\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n datesBannerInfo,\n learningAssistantEnabled,\n ]);\n\n return (\n <>\n <NextButton\n onClickHandler={onClickHandler}\n nextLink={nextLink}\n variant={variant}\n buttonStyle={buttonStyle}\n buttonText={buttonText}\n disabled={disabled}\n isAtTop={isAtTop}\n />\n\n {isOpen && disableRedVentures && <UpgradeModal {...modalProps} />}\n {isOpen && !disableRedVentures && (\n <ErrorBoundary fallbackComponent={<UpgradeModal {...modalProps} />}>\n <DynamicExperienceSlot\n widgetName=\"MonarchResolvedDynamicExperience\"\n placement=\"org.2u.edx.frontend.learning.upgrade.modal.v1\"\n tenantId=\"2u-edx-learning\"\n pluginProps={modalProps}\n />\n </ErrorBoundary>\n )}\n </>\n );\n};\n\nNextUnitButton.defaultProps = {\n isAtTop: false,\n};\n\nNextUnitButton.propTypes = {\n disabled: PropTypes.bool.isRequired,\n buttonText: PropTypes.string.isRequired,\n nextLink: PropTypes.string.isRequired,\n sequenceId: PropTypes.string.isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n unitId: PropTypes.string.isRequired,\n onClickHandler: PropTypes.func.isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n courseId: PropTypes.string.isRequired,\n variant: PropTypes.string.isRequired,\n buttonStyle: PropTypes.string.isRequired,\n isAtTop: PropTypes.bool,\n};\n\nexport default NextUnitButton;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -99,16 +99,16 @@ const UpgradeModal = _ref => {
|
|
|
99
99
|
})
|
|
100
100
|
});
|
|
101
101
|
}
|
|
102
|
-
return /*#__PURE__*/(0, _jsxRuntime.
|
|
102
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_BaseModal.default, {
|
|
103
103
|
isOpen,
|
|
104
104
|
close,
|
|
105
105
|
courseId,
|
|
106
106
|
offer,
|
|
107
107
|
callToActionButton,
|
|
108
|
-
children:
|
|
108
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.UpsellTable, {
|
|
109
109
|
isFBE,
|
|
110
110
|
learningAssistantEnabled
|
|
111
|
-
})
|
|
111
|
+
})
|
|
112
112
|
});
|
|
113
113
|
};
|
|
114
114
|
UpgradeModal.defaultProps = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpgradeModal.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_analytics","_i18n","_paragon","_upgradeButton","_generic","_BaseModal","_cohesion","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","UpgradeModal","_ref","isOpen","close","verifiedMode","org","courseId","offer","marketingUrl","accessExpiration","datesBannerInfo","learningAssistantEnabled","upsellPageName","eventProperties","org_key","courserun_key","promotionEventProperties","creative","name","position","promotion_id","conversion","useCohesion","useEffect","sendTrackingLogEvent","sendTrackEvent","logClick","location","linkCategory","linkName","linkType","pageName","logClickPastExpiration","intl","useIntl","dateNow","Date","now","upgradeDeadlineDate","upgradeDeadline","pastDeadline","isFBE","contentTypeGatingEnabled","callToActionButton","jsx","UpgradeButton","onClick","block","Button","className","href","children","formatMessage","id","defaultMessage","description","jsxs","UpsellTable","defaultProps","propTypes","PropTypes","shape","price","number","isRequired","currencySymbol","string","upgradeUrl","code","bool","func","_default","exports"],"sources":["../../src/upgrade-modal/UpgradeModal.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Button } from '@openedx/paragon';\n\nimport { UpgradeButton } from '@src/generic/upgrade-button';\nimport { UpsellTable } from '../generic';\nimport BaseModal from './BaseModal';\nimport { useCohesion } from '../cohesion';\n\nconst UpgradeModal = ({\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n datesBannerInfo,\n learningAssistantEnabled,\n}) => {\n const upsellPageName = 'course_sequence_modal';\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n };\n const promotionEventProperties = {\n creative: 'marketmodalupsell',\n name: 'In-Course Verification Prompt',\n position: 'marketing-modal-message',\n promotion_id: 'courseware_verified_certificate_upsell',\n ...eventProperties,\n };\n\n const { conversion } = useCohesion(courseId);\n\n useEffect(() => {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketmodalupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const logClick = () => {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketingmodal.clicked', eventProperties);\n sendTrackingLogEvent('edx.course.enrollment.upgrade.clicked', {\n ...eventProperties,\n location: 'marketing-modal-message',\n });\n sendTrackEvent('Promotion Clicked', promotionEventProperties);\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: 'green_upgrade',\n linkName: `${upsellPageName}_green`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n\n conversion('Upgraded');\n };\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_modal.past_expiration.button_clicked', {\n ...eventProperties,\n linkCategory: 'upgrade_modal',\n linkName: `${upsellPageName}_course_details`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n const intl = useIntl();\n const dateNow = Date.now();\n const upgradeDeadlineDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n const pastDeadline = accessExpiration ? new Date(dateNow) > upgradeDeadlineDate : false;\n const isFBE = !!accessExpiration && !!datesBannerInfo?.contentTypeGatingEnabled;\n\n let callToActionButton = (\n <UpgradeButton\n data-testid=\"upgrade-button\"\n offer={offer}\n onClick={logClick}\n verifiedMode={verifiedMode}\n block\n />\n );\n\n if (pastDeadline) {\n callToActionButton = (\n <Button\n className=\"w-100\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n >\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.upgrade-button.label',\n defaultMessage: 'View course details',\n description: 'Label for upgrade button',\n },\n )}\n </Button>\n );\n }\n\n return (\n <BaseModal\n {...{\n isOpen,\n close,\n courseId,\n offer,\n callToActionButton,\n }}\n >\n <UpsellTable {...{ isFBE, learningAssistantEnabled }} />;\n </BaseModal>\n );\n};\n\nUpgradeModal.defaultProps = {\n verifiedMode: {},\n offer: null,\n accessExpiration: null,\n datesBannerInfo: null,\n};\nUpgradeModal.propTypes = {\n verifiedMode: PropTypes.shape({\n price: PropTypes.number.isRequired,\n currencySymbol: PropTypes.string.isRequired,\n upgradeUrl: PropTypes.string.isRequired,\n }),\n offer: PropTypes.shape({\n code: PropTypes.string,\n }),\n accessExpiration: PropTypes.shape({\n upgradeDeadline: PropTypes.string,\n }),\n datesBannerInfo: PropTypes.shape({\n contentTypeGatingEnabled: PropTypes.bool,\n }),\n marketingUrl: PropTypes.string.isRequired,\n org: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n close: PropTypes.func.isRequired,\n isOpen: PropTypes.bool.isRequired,\n learningAssistantEnabled: PropTypes.bool.isRequired,\n};\n\nexport default UpgradeModal;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"UpgradeModal.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_analytics","_i18n","_paragon","_upgradeButton","_generic","_BaseModal","_cohesion","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","UpgradeModal","_ref","isOpen","close","verifiedMode","org","courseId","offer","marketingUrl","accessExpiration","datesBannerInfo","learningAssistantEnabled","upsellPageName","eventProperties","org_key","courserun_key","promotionEventProperties","creative","name","position","promotion_id","conversion","useCohesion","useEffect","sendTrackingLogEvent","sendTrackEvent","logClick","location","linkCategory","linkName","linkType","pageName","logClickPastExpiration","intl","useIntl","dateNow","Date","now","upgradeDeadlineDate","upgradeDeadline","pastDeadline","isFBE","contentTypeGatingEnabled","callToActionButton","jsx","UpgradeButton","onClick","block","Button","className","href","children","formatMessage","id","defaultMessage","description","UpsellTable","defaultProps","propTypes","PropTypes","shape","price","number","isRequired","currencySymbol","string","upgradeUrl","code","bool","func","_default","exports"],"sources":["../../src/upgrade-modal/UpgradeModal.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Button } from '@openedx/paragon';\n\nimport { UpgradeButton } from '@src/generic/upgrade-button';\nimport { UpsellTable } from '../generic';\nimport BaseModal from './BaseModal';\nimport { useCohesion } from '../cohesion';\n\nconst UpgradeModal = ({\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n datesBannerInfo,\n learningAssistantEnabled,\n}) => {\n const upsellPageName = 'course_sequence_modal';\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n };\n const promotionEventProperties = {\n creative: 'marketmodalupsell',\n name: 'In-Course Verification Prompt',\n position: 'marketing-modal-message',\n promotion_id: 'courseware_verified_certificate_upsell',\n ...eventProperties,\n };\n\n const { conversion } = useCohesion(courseId);\n\n useEffect(() => {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketmodalupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const logClick = () => {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketingmodal.clicked', eventProperties);\n sendTrackingLogEvent('edx.course.enrollment.upgrade.clicked', {\n ...eventProperties,\n location: 'marketing-modal-message',\n });\n sendTrackEvent('Promotion Clicked', promotionEventProperties);\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: 'green_upgrade',\n linkName: `${upsellPageName}_green`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n\n conversion('Upgraded');\n };\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_modal.past_expiration.button_clicked', {\n ...eventProperties,\n linkCategory: 'upgrade_modal',\n linkName: `${upsellPageName}_course_details`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n const intl = useIntl();\n const dateNow = Date.now();\n const upgradeDeadlineDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n const pastDeadline = accessExpiration ? new Date(dateNow) > upgradeDeadlineDate : false;\n const isFBE = !!accessExpiration && !!datesBannerInfo?.contentTypeGatingEnabled;\n\n let callToActionButton = (\n <UpgradeButton\n data-testid=\"upgrade-button\"\n offer={offer}\n onClick={logClick}\n verifiedMode={verifiedMode}\n block\n />\n );\n\n if (pastDeadline) {\n callToActionButton = (\n <Button\n className=\"w-100\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n >\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.upgrade-button.label',\n defaultMessage: 'View course details',\n description: 'Label for upgrade button',\n },\n )}\n </Button>\n );\n }\n\n return (\n <BaseModal\n {...{\n isOpen,\n close,\n courseId,\n offer,\n callToActionButton,\n }}\n >\n <UpsellTable {...{ isFBE, learningAssistantEnabled }} />\n </BaseModal>\n );\n};\n\nUpgradeModal.defaultProps = {\n verifiedMode: {},\n offer: null,\n accessExpiration: null,\n datesBannerInfo: null,\n};\nUpgradeModal.propTypes = {\n verifiedMode: PropTypes.shape({\n price: PropTypes.number.isRequired,\n currencySymbol: PropTypes.string.isRequired,\n upgradeUrl: PropTypes.string.isRequired,\n }),\n offer: PropTypes.shape({\n code: PropTypes.string,\n }),\n accessExpiration: PropTypes.shape({\n upgradeDeadline: PropTypes.string,\n }),\n datesBannerInfo: PropTypes.shape({\n contentTypeGatingEnabled: PropTypes.bool,\n }),\n marketingUrl: PropTypes.string.isRequired,\n org: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n close: PropTypes.func.isRequired,\n isOpen: PropTypes.bool.isRequired,\n learningAssistantEnabled: PropTypes.bool.isRequired,\n};\n\nexport default UpgradeModal;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,7 +11,6 @@ var _i18n = require("@edx/frontend-platform/i18n");
|
|
|
11
11
|
var _analytics = require("@edx/frontend-platform/analytics");
|
|
12
12
|
var _paragon = require("@openedx/paragon");
|
|
13
13
|
var _icons = require("@openedx/paragon/icons");
|
|
14
|
-
var _upgradeButton = require("@src/generic/upgrade-button");
|
|
15
14
|
var _modelStore = require("@src/generic/model-store");
|
|
16
15
|
var _data = require("../data");
|
|
17
16
|
var _subscriptionUpsell = require("../subscription-upsell");
|
|
@@ -20,6 +19,7 @@ var _generic = require("../generic");
|
|
|
20
19
|
var _utils = _interopRequireDefault(require("./utils"));
|
|
21
20
|
var _messages = _interopRequireDefault(require("./messages"));
|
|
22
21
|
var _cohesion = require("../cohesion");
|
|
22
|
+
require("./UpgradeNotification.scss");
|
|
23
23
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
24
24
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
25
25
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
@@ -160,31 +160,26 @@ const UpgradeNotification = _ref => {
|
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
/*
|
|
163
|
-
There are 5 parts that change
|
|
163
|
+
The card follows the Red Ventures sidebar card it replaces (LP-1471). There are 5 parts that change:
|
|
164
|
+
offerMessage, with offerCountdown in it
|
|
164
165
|
upgradeNotificationHeaderText
|
|
165
166
|
expirationBanner
|
|
166
|
-
upsellMessage
|
|
167
|
+
upsellMessage, which replaces the comparison table in the states that explain the deadline instead
|
|
167
168
|
callToActionButton
|
|
168
|
-
offerCode
|
|
169
169
|
*/
|
|
170
170
|
let upgradeNotificationHeaderText;
|
|
171
171
|
let expirationBanner;
|
|
172
172
|
let callToActionButton;
|
|
173
|
-
let
|
|
174
|
-
let
|
|
175
|
-
|
|
176
|
-
learningAssistantEnabled
|
|
177
|
-
});
|
|
173
|
+
let offerMessage;
|
|
174
|
+
let offerCountdown;
|
|
175
|
+
let upsellMessage;
|
|
178
176
|
if (isFBE) {
|
|
179
177
|
const hoursToAccessExpiration = Math.floor((accessExpirationDate - correctedTime) / 1000 / 60 / 60);
|
|
180
178
|
if (hoursToAccessExpiration >= 7 * 24) {
|
|
181
179
|
if (offer) {
|
|
182
|
-
// countdown to the first purchase discount
|
|
180
|
+
// countdown to the first purchase discount, shown with the discount in offerMessage
|
|
183
181
|
const hoursToDiscountExpiration = Math.floor((new Date(offer.expirationDate) - correctedTime) / 1000 / 60 / 60);
|
|
184
|
-
|
|
185
|
-
percentage: offer.percentage
|
|
186
|
-
});
|
|
187
|
-
expirationBanner = /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.ExpirationCountdown, {
|
|
182
|
+
offerCountdown = /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.ExpirationCountdown, {
|
|
188
183
|
courseId: courseId,
|
|
189
184
|
hoursToExpiration: hoursToDiscountExpiration,
|
|
190
185
|
setupgradeNotificationCurrentState: setupgradeNotificationCurrentState,
|
|
@@ -228,35 +223,50 @@ const UpgradeNotification = _ref => {
|
|
|
228
223
|
}
|
|
229
224
|
if (pastExpirationDeadline) {
|
|
230
225
|
callToActionButton = /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Button, {
|
|
231
|
-
variant: "
|
|
226
|
+
variant: "brand",
|
|
232
227
|
onClick: logClickPastExpiration,
|
|
233
228
|
href: marketingUrl,
|
|
234
229
|
block: true,
|
|
235
230
|
children: formatMessage(_messages.default.pastExpirationCallToActionLabel)
|
|
236
231
|
});
|
|
237
232
|
} else {
|
|
238
|
-
|
|
239
|
-
|
|
233
|
+
// Prefer the offer's url, as the host app's UpgradeButton does, in case it ever differs.
|
|
234
|
+
callToActionButton = /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Button, {
|
|
235
|
+
variant: "brand",
|
|
236
|
+
href: offer ? offer.upgradeUrl : verifiedMode.upgradeUrl,
|
|
240
237
|
onClick: logUpgradeClick,
|
|
241
|
-
|
|
242
|
-
|
|
238
|
+
block: true,
|
|
239
|
+
"data-testid": "upgrade-button",
|
|
240
|
+
children: formatMessage(_messages.default.upgradeNowButton, {
|
|
241
|
+
price: offer ? offer.discountedPrice : `${verifiedMode.currencySymbol}${verifiedMode.price}`
|
|
242
|
+
})
|
|
243
243
|
});
|
|
244
244
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
245
|
+
|
|
246
|
+
// The first purchase discount and its code, above the comparison table. Past the upgrade deadline the
|
|
247
|
+
// button goes to the course details instead, where the code can't be used.
|
|
248
|
+
if (offer && !pastExpirationDeadline) {
|
|
249
|
+
offerMessage = /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
250
|
+
className: "mb-4",
|
|
251
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
|
|
252
|
+
className: "upgrade-notification-subheader mx-4 mb-2",
|
|
253
|
+
children: formatMessage(_messages.default.firstTimeLearnerOffer, {
|
|
254
|
+
percentage: offer.percentage
|
|
253
255
|
})
|
|
254
|
-
})
|
|
256
|
+
}), offerCountdown && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
257
|
+
className: "mb-2",
|
|
258
|
+
children: offerCountdown
|
|
259
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
260
|
+
className: "font-weight-bold mx-4 mb-0",
|
|
261
|
+
children: formatMessage(_messages.default.promoCodeMessage, {
|
|
262
|
+
code: offer.code
|
|
263
|
+
})
|
|
264
|
+
})]
|
|
255
265
|
});
|
|
256
266
|
}
|
|
257
267
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("section", {
|
|
258
|
-
className: (0, _classnames.default)('upgrade-notification small', {
|
|
259
|
-
'
|
|
268
|
+
className: (0, _classnames.default)('upgrade-notification verified-upgrade-card small', {
|
|
269
|
+
'mb-4': shouldDisplayBorder
|
|
260
270
|
}),
|
|
261
271
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
262
272
|
id: "courseHome-upgradeNotification",
|
|
@@ -278,17 +288,24 @@ const UpgradeNotification = _ref => {
|
|
|
278
288
|
})
|
|
279
289
|
})]
|
|
280
290
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_certificatePreview.default, {
|
|
281
|
-
courseId: courseId
|
|
282
|
-
|
|
283
|
-
|
|
291
|
+
courseId: courseId,
|
|
292
|
+
bgColor: "bg-white"
|
|
293
|
+
}), offerMessage, upgradeNotificationHeaderText && /*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
|
|
294
|
+
className: "upgrade-notification-subheader ml-4",
|
|
284
295
|
children: upgradeNotificationHeaderText
|
|
285
296
|
}), expirationBanner, /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
286
297
|
className: "upgrade-notification-message",
|
|
287
|
-
children: upsellMessage
|
|
298
|
+
children: upsellMessage || /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.UpsellTable, {
|
|
299
|
+
isFBE,
|
|
300
|
+
learningAssistantEnabled,
|
|
301
|
+
inlineHeader: true
|
|
302
|
+
})
|
|
288
303
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
289
|
-
className:
|
|
304
|
+
className: (0, _classnames.default)('upgrade-notification-button mx-4 mb-4', {
|
|
305
|
+
'mt-4': !!upsellMessage
|
|
306
|
+
}),
|
|
290
307
|
children: callToActionButton
|
|
291
|
-
})
|
|
308
|
+
})]
|
|
292
309
|
})
|
|
293
310
|
});
|
|
294
311
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpgradeNotification.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_classnames","_i18n","_analytics","_paragon","_icons","_upgradeButton","_modelStore","_data","_subscriptionUpsell","_certificatePreview","_generic","_utils","_messages","_cohesion","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","SUBSCRIPTION_CARD_PLACEMENTS","UpgradeNotification","_ref","id","courseId","model","setNotificationCurrentState","toggleSidebar","pluginLocationId","formatMessage","useIntl","org","userTimezone","verifiedMode","useModel","marketingUrl","learningAssistantEnabled","accessExpiration","datesBannerInfo","offer","timeOffsetMillis","conversion","useCohesion","subscriptionOffer","useSubscriptionOffer","dateNow","Date","now","timezoneFormatArgs","timeZone","correctedTime","accessExpirationDate","upgradeDeadline","pastExpirationDeadline","shouldDisplayBorder","includes","isSubscriptionCardPlacement","some","placement","showSubscriptionCard","hasUpsell","upsellPageName","getUpsellPageName","setupgradeNotificationCurrentState","isFBE","contentTypeGatingEnabled","eventProperties","org_key","courserun_key","variant","promotionEventProperties","creative","name","position","promotion_id","useEffect","sendTrackingLogEvent","sendTrackEvent","logUpgradeClick","location","linkCategory","linkName","linkType","pageName","logClickPastExpiration","logSubscribeClick","banner","hoursToAccessExpiration","Math","floor","jsx","ExpirationCountdown","hoursToExpiration","type","AccessExpirationDateBanner","SubscriptionUpgradeCard","withBorder","onSubscribeClick","onPurchaseClick","onUpgradeEvent","stage","onClose","upgradeNotificationHeaderText","expirationBanner","callToActionButton","offerCode","upsellMessage","UpsellTable","hoursToDiscountExpiration","expirationDate","messages","firstTimeLearnerDiscountHeader","percentage","accessExpirationHeader","accessExpirationUrgentHeader","PAGE_NAMES","PROGRESS","UpsellFBESoonCardContent","accessExpirationPastHeader","PastExpirationDateBanner","PastExpirationCardContent","Button","onClick","href","block","children","pastExpirationCallToActionLabel","UpgradeButton","className","discountCodeMessage","code","classNames","jsxs","pursueCertificateMessage","IconButton","src","Close","size","iconAs","Icon","alt","closeAlt","propTypes","PropTypes","string","isRequired","func","defaultProps","_default","exports"],"sources":["../../src/upgrade-notification/UpgradeNotification.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { Button, Icon, IconButton } from '@openedx/paragon';\nimport { Close } from '@openedx/paragon/icons';\n\nimport { UpgradeButton } from '@src/generic/upgrade-button';\nimport { useModel } from '@src/generic/model-store';\n\nimport { PAGE_NAMES } from '../data';\nimport { SubscriptionUpgradeCard, useSubscriptionOffer } from '../subscription-upsell';\nimport CertificatePreview from './certificate-preview';\nimport {\n ExpirationCountdown,\n AccessExpirationDateBanner,\n PastExpirationDateBanner,\n PastExpirationCardContent,\n UpsellFBESoonCardContent,\n UpsellTable,\n} from '../generic';\nimport getUpsellPageName from './utils';\nimport messages from './messages';\nimport { useCohesion } from '../cohesion';\n\n// Placements that show the subscription card: course home and the courseware sidebar\n// (tray and widget). The Progress page keeps the current card.\nconst SUBSCRIPTION_CARD_PLACEMENTS = ['outline', 'notification_tray', 'notification_widget'];\n\nconst UpgradeNotification = ({\n id,\n courseId,\n model,\n setNotificationCurrentState,\n toggleSidebar,\n}) => {\n const pluginLocationId = id;\n const { formatMessage } = useIntl();\n\n const {\n org,\n userTimezone,\n verifiedMode,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n marketingUrl,\n learningAssistantEnabled,\n } = useModel('coursewareMeta', courseId);\n\n const {\n accessExpiration,\n datesBannerInfo,\n offer,\n timeOffsetMillis,\n } = useModel(model, courseId);\n\n const { conversion } = useCohesion(courseId);\n const subscriptionOffer = useSubscriptionOffer(courseId);\n\n const dateNow = Date.now();\n const timezoneFormatArgs = userTimezone ? { timeZone: userTimezone } : {};\n const correctedTime = new Date(dateNow + timeOffsetMillis);\n const accessExpirationDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n // Server time, so this agrees with the countdown and the FBE branches below.\n const pastExpirationDeadline = accessExpiration ? correctedTime > accessExpirationDate : false;\n const shouldDisplayBorder = pluginLocationId.includes('outline');\n const isSubscriptionCardPlacement = SUBSCRIPTION_CARD_PLACEMENTS.some(\n (placement) => pluginLocationId.includes(placement),\n );\n // Without an offer or anything in it to show, past the upgrade deadline, and on the Progress page,\n // today's card renders.\n const showSubscriptionCard = isSubscriptionCardPlacement && !pastExpirationDeadline && !!subscriptionOffer?.hasUpsell;\n const upsellPageName = getUpsellPageName({ id: pluginLocationId });\n const setupgradeNotificationCurrentState = setNotificationCurrentState;\n const isFBE = !!accessExpiration && !!datesBannerInfo?.contentTypeGatingEnabled;\n\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n // Tags the placements that switched to the subscription card, so reports can split them from today's card.\n ...(showSubscriptionCard && { variant: 'subscription' }),\n };\n\n const promotionEventProperties = {\n creative: 'sidebarupsell',\n name: 'In-Course Verification Prompt',\n position: 'sidebar-message',\n promotion_id: 'courseware_verified_certificate_upsell',\n ...eventProperties,\n };\n\n useEffect(() => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (!verifiedMode) {\n return null;\n }\n\n const logUpgradeClick = () => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.clicked', eventProperties);\n sendTrackingLogEvent('edx.course.enrollment.upgrade.clicked', {\n ...eventProperties,\n location: 'sidebar-message',\n });\n sendTrackEvent('Promotion Clicked', promotionEventProperties);\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: 'green_upgrade',\n linkName: `${upsellPageName}_green`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n\n conversion('Upgraded');\n };\n\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_notification.past_expiration.button_clicked', {\n ...eventProperties,\n linkCategory: 'upgrade_notification',\n linkName: `${upsellPageName}_course_details`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n const logSubscribeClick = () => {\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: 'subscription',\n linkName: `${upsellPageName}_subscribe`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n conversion('Subscribe Clicked'); // on the click, before checkout\n };\n\n if (showSubscriptionCard) { // the card handles every offer state itself\n let banner;\n if (isFBE) { // content-gated learners keep the access expiration warning and its sidebar dot stages\n const hoursToAccessExpiration = Math.floor((accessExpirationDate - correctedTime) / 1000 / 60 / 60);\n banner = hoursToAccessExpiration < (7 * 24) ? (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToAccessExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"access\"\n />\n ) : (\n <AccessExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n }\n return (\n <SubscriptionUpgradeCard\n courseId={courseId}\n withBorder={shouldDisplayBorder}\n banner={banner}\n onSubscribeClick={logSubscribeClick}\n onPurchaseClick={logUpgradeClick}\n onUpgradeEvent={(stage) => stage === 'succeeded' && logUpgradeClick()}\n onClose={toggleSidebar}\n />\n );\n }\n\n /*\n There are 5 parts that change in the upgrade card:\n upgradeNotificationHeaderText\n expirationBanner\n upsellMessage\n callToActionButton\n offerCode\n */\n let upgradeNotificationHeaderText;\n let expirationBanner;\n let callToActionButton;\n let offerCode;\n\n let upsellMessage = <UpsellTable {...{ isFBE, learningAssistantEnabled }} />;\n\n if (isFBE) {\n const hoursToAccessExpiration = Math.floor((accessExpirationDate - correctedTime) / 1000 / 60 / 60);\n\n if (hoursToAccessExpiration >= (7 * 24)) {\n if (offer) { // countdown to the first purchase discount if there is one\n const hoursToDiscountExpiration = Math.floor((new Date(offer.expirationDate) - correctedTime) / 1000 / 60 / 60);\n upgradeNotificationHeaderText = formatMessage(\n messages.firstTimeLearnerDiscountHeader,\n { percentage: (offer.percentage) },\n );\n expirationBanner = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToDiscountExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"offer\"\n />\n );\n } else {\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationHeader);\n expirationBanner = (\n <AccessExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n }\n } else if (hoursToAccessExpiration < (7 * 24) && hoursToAccessExpiration >= 0) {\n // more urgent messaging if there's less than 7 days left to access expiration\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationUrgentHeader);\n expirationBanner = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToAccessExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"access\"\n />\n );\n if (upsellPageName !== PAGE_NAMES.PROGRESS) {\n upsellMessage = (\n <UpsellFBESoonCardContent\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n />\n );\n }\n } else { // access expiration deadline has passed\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationPastHeader);\n expirationBanner = (\n <PastExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n upsellMessage = (\n <PastExpirationCardContent />\n );\n }\n }\n\n if (pastExpirationDeadline) {\n callToActionButton = (\n <Button\n variant=\"primary\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n block\n >\n {formatMessage(messages.pastExpirationCallToActionLabel)}\n </Button>\n );\n } else {\n callToActionButton = (\n <UpgradeButton\n offer={offer}\n onClick={logUpgradeClick}\n verifiedMode={verifiedMode}\n block\n />\n );\n }\n\n if (offer) { // if there's a first purchase discount, message the code at the bottom\n offerCode = (\n <div className=\"text-center discount-info\">\n {formatMessage(\n messages.discountCodeMessage,\n {\n code: (<span className=\"font-weight-bold\">{offer.code}</span>),\n },\n )}\n </div>\n );\n }\n\n return (\n <section className={classNames('upgrade-notification small', { 'pgn__card pgn__card-light card mb-4 rounded': shouldDisplayBorder })}>\n <div id=\"courseHome-upgradeNotification\">\n <h2\n className={classNames('upgrade-notification-header', {\n 'd-flex align-items-center mr-2 ml-4 my-1.5 font-size-18': !!toggleSidebar,\n 'm-4': !toggleSidebar,\n })}\n id=\"outline-sidebar-upgrade-header\"\n >\n {formatMessage(messages.pursueCertificateMessage)}\n {!!toggleSidebar && (\n <div className=\"d-inline-flex ml-auto\">\n <IconButton\n src={Close}\n size=\"sm\"\n iconAs={Icon}\n onClick={toggleSidebar}\n className=\"icon-hover\"\n alt={formatMessage(messages.closeAlt)}\n />\n </div>\n )}\n </h2>\n <CertificatePreview courseId={courseId} />\n <h3 className=\"ml-4\">\n {upgradeNotificationHeaderText}\n </h3>\n {expirationBanner}\n <div className=\"upgrade-notification-message\">\n {upsellMessage}\n </div>\n <div className=\"upgrade-notification-button m-4\">\n {callToActionButton}\n </div>\n {offerCode}\n </div>\n </section>\n );\n};\n\nUpgradeNotification.propTypes = {\n id: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n model: PropTypes.string,\n setNotificationCurrentState: PropTypes.func,\n toggleSidebar: PropTypes.func,\n};\n\nUpgradeNotification.defaultProps = {\n setNotificationCurrentState: null,\n toggleSidebar: null,\n model: 'outline',\n};\n\nexport default UpgradeNotification;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"UpgradeNotification.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_classnames","_i18n","_analytics","_paragon","_icons","_modelStore","_data","_subscriptionUpsell","_certificatePreview","_generic","_utils","_messages","_cohesion","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","SUBSCRIPTION_CARD_PLACEMENTS","UpgradeNotification","_ref","id","courseId","model","setNotificationCurrentState","toggleSidebar","pluginLocationId","formatMessage","useIntl","org","userTimezone","verifiedMode","useModel","marketingUrl","learningAssistantEnabled","accessExpiration","datesBannerInfo","offer","timeOffsetMillis","conversion","useCohesion","subscriptionOffer","useSubscriptionOffer","dateNow","Date","now","timezoneFormatArgs","timeZone","correctedTime","accessExpirationDate","upgradeDeadline","pastExpirationDeadline","shouldDisplayBorder","includes","isSubscriptionCardPlacement","some","placement","showSubscriptionCard","hasUpsell","upsellPageName","getUpsellPageName","setupgradeNotificationCurrentState","isFBE","contentTypeGatingEnabled","eventProperties","org_key","courserun_key","variant","promotionEventProperties","creative","name","position","promotion_id","useEffect","sendTrackingLogEvent","sendTrackEvent","logUpgradeClick","location","linkCategory","linkName","linkType","pageName","logClickPastExpiration","logSubscribeClick","banner","hoursToAccessExpiration","Math","floor","jsx","ExpirationCountdown","hoursToExpiration","type","AccessExpirationDateBanner","SubscriptionUpgradeCard","withBorder","onSubscribeClick","onPurchaseClick","onUpgradeEvent","stage","onClose","upgradeNotificationHeaderText","expirationBanner","callToActionButton","offerMessage","offerCountdown","upsellMessage","hoursToDiscountExpiration","expirationDate","messages","accessExpirationHeader","accessExpirationUrgentHeader","PAGE_NAMES","PROGRESS","UpsellFBESoonCardContent","accessExpirationPastHeader","PastExpirationDateBanner","PastExpirationCardContent","Button","onClick","href","block","children","pastExpirationCallToActionLabel","upgradeUrl","upgradeNowButton","price","discountedPrice","currencySymbol","jsxs","className","firstTimeLearnerOffer","percentage","promoCodeMessage","code","classNames","pursueCertificateMessage","IconButton","src","Close","size","iconAs","Icon","alt","closeAlt","bgColor","UpsellTable","inlineHeader","propTypes","PropTypes","string","isRequired","func","defaultProps","_default","exports"],"sources":["../../src/upgrade-notification/UpgradeNotification.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { Button, Icon, IconButton } from '@openedx/paragon';\nimport { Close } from '@openedx/paragon/icons';\n\nimport { useModel } from '@src/generic/model-store';\n\nimport { PAGE_NAMES } from '../data';\nimport { SubscriptionUpgradeCard, useSubscriptionOffer } from '../subscription-upsell';\nimport CertificatePreview from './certificate-preview';\nimport {\n ExpirationCountdown,\n AccessExpirationDateBanner,\n PastExpirationDateBanner,\n PastExpirationCardContent,\n UpsellFBESoonCardContent,\n UpsellTable,\n} from '../generic';\nimport getUpsellPageName from './utils';\nimport messages from './messages';\nimport { useCohesion } from '../cohesion';\nimport './UpgradeNotification.scss';\n\n// Placements that show the subscription card: course home and the courseware sidebar\n// (tray and widget). The Progress page keeps the current card.\nconst SUBSCRIPTION_CARD_PLACEMENTS = ['outline', 'notification_tray', 'notification_widget'];\n\nconst UpgradeNotification = ({\n id,\n courseId,\n model,\n setNotificationCurrentState,\n toggleSidebar,\n}) => {\n const pluginLocationId = id;\n const { formatMessage } = useIntl();\n\n const {\n org,\n userTimezone,\n verifiedMode,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n marketingUrl,\n learningAssistantEnabled,\n } = useModel('coursewareMeta', courseId);\n\n const {\n accessExpiration,\n datesBannerInfo,\n offer,\n timeOffsetMillis,\n } = useModel(model, courseId);\n\n const { conversion } = useCohesion(courseId);\n const subscriptionOffer = useSubscriptionOffer(courseId);\n\n const dateNow = Date.now();\n const timezoneFormatArgs = userTimezone ? { timeZone: userTimezone } : {};\n const correctedTime = new Date(dateNow + timeOffsetMillis);\n const accessExpirationDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n // Server time, so this agrees with the countdown and the FBE branches below.\n const pastExpirationDeadline = accessExpiration ? correctedTime > accessExpirationDate : false;\n const shouldDisplayBorder = pluginLocationId.includes('outline');\n const isSubscriptionCardPlacement = SUBSCRIPTION_CARD_PLACEMENTS.some(\n (placement) => pluginLocationId.includes(placement),\n );\n // Without an offer or anything in it to show, past the upgrade deadline, and on the Progress page,\n // today's card renders.\n const showSubscriptionCard = isSubscriptionCardPlacement && !pastExpirationDeadline && !!subscriptionOffer?.hasUpsell;\n const upsellPageName = getUpsellPageName({ id: pluginLocationId });\n const setupgradeNotificationCurrentState = setNotificationCurrentState;\n const isFBE = !!accessExpiration && !!datesBannerInfo?.contentTypeGatingEnabled;\n\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n // Tags the placements that switched to the subscription card, so reports can split them from today's card.\n ...(showSubscriptionCard && { variant: 'subscription' }),\n };\n\n const promotionEventProperties = {\n creative: 'sidebarupsell',\n name: 'In-Course Verification Prompt',\n position: 'sidebar-message',\n promotion_id: 'courseware_verified_certificate_upsell',\n ...eventProperties,\n };\n\n useEffect(() => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (!verifiedMode) {\n return null;\n }\n\n const logUpgradeClick = () => {\n sendTrackingLogEvent('edx.bi.course.upgrade.sidebarupsell.clicked', eventProperties);\n sendTrackingLogEvent('edx.course.enrollment.upgrade.clicked', {\n ...eventProperties,\n location: 'sidebar-message',\n });\n sendTrackEvent('Promotion Clicked', promotionEventProperties);\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: 'green_upgrade',\n linkName: `${upsellPageName}_green`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n\n conversion('Upgraded');\n };\n\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_notification.past_expiration.button_clicked', {\n ...eventProperties,\n linkCategory: 'upgrade_notification',\n linkName: `${upsellPageName}_course_details`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n const logSubscribeClick = () => {\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: 'subscription',\n linkName: `${upsellPageName}_subscribe`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n conversion('Subscribe Clicked'); // on the click, before checkout\n };\n\n if (showSubscriptionCard) { // the card handles every offer state itself\n let banner;\n if (isFBE) { // content-gated learners keep the access expiration warning and its sidebar dot stages\n const hoursToAccessExpiration = Math.floor((accessExpirationDate - correctedTime) / 1000 / 60 / 60);\n banner = hoursToAccessExpiration < (7 * 24) ? (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToAccessExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"access\"\n />\n ) : (\n <AccessExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n }\n return (\n <SubscriptionUpgradeCard\n courseId={courseId}\n withBorder={shouldDisplayBorder}\n banner={banner}\n onSubscribeClick={logSubscribeClick}\n onPurchaseClick={logUpgradeClick}\n onUpgradeEvent={(stage) => stage === 'succeeded' && logUpgradeClick()}\n onClose={toggleSidebar}\n />\n );\n }\n\n /*\n The card follows the Red Ventures sidebar card it replaces (LP-1471). There are 5 parts that change:\n offerMessage, with offerCountdown in it\n upgradeNotificationHeaderText\n expirationBanner\n upsellMessage, which replaces the comparison table in the states that explain the deadline instead\n callToActionButton\n */\n let upgradeNotificationHeaderText;\n let expirationBanner;\n let callToActionButton;\n let offerMessage;\n let offerCountdown;\n let upsellMessage;\n\n if (isFBE) {\n const hoursToAccessExpiration = Math.floor((accessExpirationDate - correctedTime) / 1000 / 60 / 60);\n\n if (hoursToAccessExpiration >= (7 * 24)) {\n if (offer) { // countdown to the first purchase discount, shown with the discount in offerMessage\n const hoursToDiscountExpiration = Math.floor((new Date(offer.expirationDate) - correctedTime) / 1000 / 60 / 60);\n offerCountdown = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToDiscountExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"offer\"\n />\n );\n } else {\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationHeader);\n expirationBanner = (\n <AccessExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n }\n } else if (hoursToAccessExpiration < (7 * 24) && hoursToAccessExpiration >= 0) {\n // more urgent messaging if there's less than 7 days left to access expiration\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationUrgentHeader);\n expirationBanner = (\n <ExpirationCountdown\n courseId={courseId}\n hoursToExpiration={hoursToAccessExpiration}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n type=\"access\"\n />\n );\n if (upsellPageName !== PAGE_NAMES.PROGRESS) {\n upsellMessage = (\n <UpsellFBESoonCardContent\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n />\n );\n }\n } else { // access expiration deadline has passed\n upgradeNotificationHeaderText = formatMessage(messages.accessExpirationPastHeader);\n expirationBanner = (\n <PastExpirationDateBanner\n courseId={courseId}\n accessExpirationDate={accessExpirationDate}\n timezoneFormatArgs={timezoneFormatArgs}\n setupgradeNotificationCurrentState={setupgradeNotificationCurrentState}\n />\n );\n upsellMessage = (\n <PastExpirationCardContent />\n );\n }\n }\n\n if (pastExpirationDeadline) {\n callToActionButton = (\n <Button\n variant=\"brand\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n block\n >\n {formatMessage(messages.pastExpirationCallToActionLabel)}\n </Button>\n );\n } else {\n // Prefer the offer's url, as the host app's UpgradeButton does, in case it ever differs.\n callToActionButton = (\n <Button\n variant=\"brand\"\n href={offer ? offer.upgradeUrl : verifiedMode.upgradeUrl}\n onClick={logUpgradeClick}\n block\n data-testid=\"upgrade-button\"\n >\n {formatMessage(messages.upgradeNowButton, {\n price: offer ? offer.discountedPrice : `${verifiedMode.currencySymbol}${verifiedMode.price}`,\n })}\n </Button>\n );\n }\n\n // The first purchase discount and its code, above the comparison table. Past the upgrade deadline the\n // button goes to the course details instead, where the code can't be used.\n if (offer && !pastExpirationDeadline) {\n offerMessage = (\n <div className=\"mb-4\">\n <h3 className=\"upgrade-notification-subheader mx-4 mb-2\">\n {formatMessage(messages.firstTimeLearnerOffer, { percentage: offer.percentage })}\n </h3>\n {offerCountdown && <div className=\"mb-2\">{offerCountdown}</div>}\n <p className=\"font-weight-bold mx-4 mb-0\">\n {formatMessage(messages.promoCodeMessage, { code: offer.code })}\n </p>\n </div>\n );\n }\n\n return (\n <section className={classNames('upgrade-notification verified-upgrade-card small', { 'mb-4': shouldDisplayBorder })}>\n <div id=\"courseHome-upgradeNotification\">\n <h2\n className={classNames('upgrade-notification-header', {\n 'd-flex align-items-center mr-2 ml-4 my-1.5 font-size-18': !!toggleSidebar,\n 'm-4': !toggleSidebar,\n })}\n id=\"outline-sidebar-upgrade-header\"\n >\n {formatMessage(messages.pursueCertificateMessage)}\n {!!toggleSidebar && (\n <div className=\"d-inline-flex ml-auto\">\n <IconButton\n src={Close}\n size=\"sm\"\n iconAs={Icon}\n onClick={toggleSidebar}\n className=\"icon-hover\"\n alt={formatMessage(messages.closeAlt)}\n />\n </div>\n )}\n </h2>\n <CertificatePreview courseId={courseId} bgColor=\"bg-white\" />\n {offerMessage}\n {upgradeNotificationHeaderText && (\n <h3 className=\"upgrade-notification-subheader ml-4\">\n {upgradeNotificationHeaderText}\n </h3>\n )}\n {expirationBanner}\n <div className=\"upgrade-notification-message\">\n {upsellMessage || <UpsellTable {...{ isFBE, learningAssistantEnabled }} inlineHeader />}\n </div>\n {/* The table's bottom padding spaces the button; the messages that replace it don't. */}\n <div className={classNames('upgrade-notification-button mx-4 mb-4', { 'mt-4': !!upsellMessage })}>\n {callToActionButton}\n </div>\n </div>\n </section>\n );\n};\n\nUpgradeNotification.propTypes = {\n id: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n model: PropTypes.string,\n setNotificationCurrentState: PropTypes.func,\n toggleSidebar: PropTypes.func,\n};\n\nUpgradeNotification.defaultProps = {\n setNotificationCurrentState: null,\n toggleSidebar: null,\n model: 'outline',\n};\n\nexport default UpgradeNotification;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// The verified upgrade card in the course home and courseware sidebars, styled after the Red Ventures
|
|
2
|
+
// card it replaces (LP-1471): warm grey card, white certificate, and a Verified column on the card colour.
|
|
3
|
+
.verified-upgrade-card {
|
|
4
|
+
// Keeps the header's and button's margins inside the card instead of collapsing through it.
|
|
5
|
+
display: flow-root;
|
|
6
|
+
background-color: var(--pgn-color-light-100);
|
|
7
|
+
border-radius: 1.5rem;
|
|
8
|
+
color: var(--pgn-color-black);
|
|
9
|
+
|
|
10
|
+
h2,
|
|
11
|
+
h3 {
|
|
12
|
+
color: inherit;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.upgrade-notification-header {
|
|
16
|
+
font-size: var(--pgn-typography-font-size-h4-base);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// The discount line and the access expiration headers, under the card title.
|
|
20
|
+
.upgrade-notification-subheader {
|
|
21
|
+
font-size: 1.125rem;
|
|
22
|
+
font-weight: var(--pgn-typography-font-weight-normal);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.certificate-preview {
|
|
26
|
+
border-radius: 1rem;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// The messages that replace the comparison table, inset like the rest of the card.
|
|
30
|
+
.upgrade-notification-text {
|
|
31
|
+
margin: 0 1.5rem;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.table-header-cell,
|
|
35
|
+
.feature-cell {
|
|
36
|
+
color: inherit;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// The Audit column is a plain grey block, without the table's outline on any side.
|
|
40
|
+
.audit-cell {
|
|
41
|
+
color: var(--pgn-color-gray-700);
|
|
42
|
+
background-color: var(--pgn-color-light-200);
|
|
43
|
+
border: 0;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.top-audit-border {
|
|
47
|
+
color: inherit;
|
|
48
|
+
font-weight: var(--pgn-typography-font-weight-bold);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.verified-cell {
|
|
52
|
+
color: var(--pgn-color-success-500);
|
|
53
|
+
background-color: transparent;
|
|
54
|
+
border-left-width: 2px;
|
|
55
|
+
border-right-width: 2px;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.top-verified-border {
|
|
59
|
+
border-top-width: 2px;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.bottom-verified-border {
|
|
63
|
+
border-bottom-width: 2px;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -169,7 +169,12 @@ const CertificatePreview = _ref => {
|
|
|
169
169
|
return component;
|
|
170
170
|
};
|
|
171
171
|
CertificatePreview.propTypes = {
|
|
172
|
-
courseId: _propTypes.default.string.isRequired
|
|
172
|
+
courseId: _propTypes.default.string.isRequired,
|
|
173
|
+
// A background utility class, such as bg-white.
|
|
174
|
+
bgColor: _propTypes.default.string
|
|
175
|
+
};
|
|
176
|
+
CertificatePreview.defaultProps = {
|
|
177
|
+
bgColor: ''
|
|
173
178
|
};
|
|
174
179
|
var _default = exports.default = CertificatePreview;
|
|
175
180
|
//# sourceMappingURL=CertificatePreview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CertificatePreview.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_frontendPlatform","_auth","_paragon","_modelStore","_lms_api","_Signatory","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CertificatePreview","_ref","courseId","bgColor","username","name","getAuthenticatedUser","number","org","title","useModel","platformLogoUrl","getConfig","LOGO_URL","isLoading","setIsLoading","useState","orgMetadata","setOrgMetadata","certificateName","setCertificateName","useEffect","fetchOrg","then","data","fetchVerifiedName","certName","useVerifiedNameForCerts","verifiedName","profileName","CertificatePreviewComponent","jsxs","className","children","jsx","alt","src","logo","shortName","component","Skeleton","count","height","propTypes","PropTypes","string","isRequired","_default","exports"],"sources":["../../../src/upgrade-notification/certificate-preview/CertificatePreview.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport { Skeleton } from '@openedx/paragon';\nimport { useModel } from '@src/generic/model-store';\n\nimport { fetchOrg, fetchVerifiedName } from '../../data/lms_api';\nimport Signatory from './Signatory';\nimport './CertificatePreview.scss';\n\nconst CertificatePreview = ({ courseId, bgColor }) => {\n const { username, name } = getAuthenticatedUser();\n\n const {\n number,\n org,\n title,\n } = useModel('courseHomeMeta', courseId);\n\n const platformLogoUrl = getConfig().LOGO_URL;\n\n const [isLoading, setIsLoading] = useState(true);\n const [orgMetadata, setOrgMetadata] = useState({});\n const [certificateName, setCertificateName] = useState(name);\n\n useEffect(() => {\n fetchOrg(org).then((data) => {\n setOrgMetadata(data);\n });\n\n fetchVerifiedName(username).then((data) => {\n if (data) {\n const certName = data.useVerifiedNameForCerts ? data.verifiedName : data.profileName;\n setCertificateName(certName);\n }\n });\n\n setIsLoading(false);\n }, [org, username, name]);\n\n const CertificatePreviewComponent = () => (\n <div className={`certificate-preview border m-4 p-3 ${bgColor}`}>\n <div className=\"d-flex justify-content-between\" data-testid=\"certificate-preview-header\">\n <img\n alt=\"Verified Certificate logo\"\n className=\"verified-certificate-logo\"\n src=\"https://edxuploads.s3.amazonaws.com/certificate_template_assets/122/verified-certificate-logo.svg\"\n />\n <span className=\"sr-only\">Verified Certificate</span>\n <div className=\"mb-4\">\n <div className=\"sr-only\">Supported by the following organizations</div>\n {orgMetadata?.logo\n ? (\n <img\n alt={`${orgMetadata.shortName} logo`}\n className=\"organization-logo\"\n data-testid=\"organization-logo\"\n src={orgMetadata.logo}\n />\n )\n : (<div data-testid=\"organization-short-name\">{orgMetadata.shortName}</div>)}\n </div>\n </div>\n <div className=\"d-flex justify-content-between\">\n <div className=\"certificate-statement\">\n <div className=\"certificate-statement-container d-flex flex-column\">\n <span\n className=\"certificate-statement-detail\"\n >\n This is to certify that\n </span>\n <strong\n className=\"certificate-statement-detail certificate-recipient font-weight-bold\"\n >\n {certificateName}\n </strong>\n <span\n className=\"certificate-statement-detail\"\n >\n successfully completed and received a passing grade in\n </span>\n <span\n className=\"certificate-course font-weight-bold\"\n >\n <span>{number}</span>:\n <span>{title}</span>\n </span>\n <span\n className=\"certificate-statement-detail\"\n >\n a course of study offered by {orgMetadata.shortName},\n an online learning initiative of {orgMetadata.name}.\n </span>\n </div>\n </div>\n <div className=\"signatories\">\n <div className=\"sr-only\">Noted by</div>\n <Signatory name=\"Maurilio Pugliesi\" />\n <Signatory name=\"Justine Doe, Ph.D.\" />\n </div>\n </div>\n <div className=\"certificate-identifiers\">\n <ul className=\"d-flex no-bullets stamps pt-3\">\n <li className=\"stamp\">\n <img className=\"platform-logo\" src={platformLogoUrl} alt=\"edX\" />\n </li>\n <li className=\"stamp d-flex flex-column\">\n <span className=\"title\">Verified Certificate</span>\n <span className=\"emphasized\">Issued Month / Year</span>\n </li>\n <li className=\"stamp d-flex flex-column\">\n <span className=\"title\">Valid Certificate ID</span>\n <span className=\"emphasized\">12345678901234567890</span>\n </li>\n </ul>\n </div>\n <div className=\"preview-watermark\">\n <span>PREVIEW</span>\n </div>\n </div>\n );\n\n // We can render if the call to the verified name endpoint returns a null, because we fall back to their LMS\n // profile name, but if the call to the organization endpoint fails, we cannot render the certificate because\n // we require data from this endpoint.\n let component;\n\n if (!orgMetadata) {\n component = false;\n } else if (isLoading) {\n component = (\n <Skeleton\n count={1}\n height=\"5rem\"\n />\n );\n } else {\n component = (\n <CertificatePreviewComponent />\n );\n }\n\n return (\n component\n );\n};\n\nCertificatePreview.propTypes = {\n courseId: PropTypes.string.isRequired,\n};\n\nexport default CertificatePreview;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CertificatePreview.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_frontendPlatform","_auth","_paragon","_modelStore","_lms_api","_Signatory","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CertificatePreview","_ref","courseId","bgColor","username","name","getAuthenticatedUser","number","org","title","useModel","platformLogoUrl","getConfig","LOGO_URL","isLoading","setIsLoading","useState","orgMetadata","setOrgMetadata","certificateName","setCertificateName","useEffect","fetchOrg","then","data","fetchVerifiedName","certName","useVerifiedNameForCerts","verifiedName","profileName","CertificatePreviewComponent","jsxs","className","children","jsx","alt","src","logo","shortName","component","Skeleton","count","height","propTypes","PropTypes","string","isRequired","defaultProps","_default","exports"],"sources":["../../../src/upgrade-notification/certificate-preview/CertificatePreview.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport { Skeleton } from '@openedx/paragon';\nimport { useModel } from '@src/generic/model-store';\n\nimport { fetchOrg, fetchVerifiedName } from '../../data/lms_api';\nimport Signatory from './Signatory';\nimport './CertificatePreview.scss';\n\nconst CertificatePreview = ({ courseId, bgColor }) => {\n const { username, name } = getAuthenticatedUser();\n\n const {\n number,\n org,\n title,\n } = useModel('courseHomeMeta', courseId);\n\n const platformLogoUrl = getConfig().LOGO_URL;\n\n const [isLoading, setIsLoading] = useState(true);\n const [orgMetadata, setOrgMetadata] = useState({});\n const [certificateName, setCertificateName] = useState(name);\n\n useEffect(() => {\n fetchOrg(org).then((data) => {\n setOrgMetadata(data);\n });\n\n fetchVerifiedName(username).then((data) => {\n if (data) {\n const certName = data.useVerifiedNameForCerts ? data.verifiedName : data.profileName;\n setCertificateName(certName);\n }\n });\n\n setIsLoading(false);\n }, [org, username, name]);\n\n const CertificatePreviewComponent = () => (\n <div className={`certificate-preview border m-4 p-3 ${bgColor}`}>\n <div className=\"d-flex justify-content-between\" data-testid=\"certificate-preview-header\">\n <img\n alt=\"Verified Certificate logo\"\n className=\"verified-certificate-logo\"\n src=\"https://edxuploads.s3.amazonaws.com/certificate_template_assets/122/verified-certificate-logo.svg\"\n />\n <span className=\"sr-only\">Verified Certificate</span>\n <div className=\"mb-4\">\n <div className=\"sr-only\">Supported by the following organizations</div>\n {orgMetadata?.logo\n ? (\n <img\n alt={`${orgMetadata.shortName} logo`}\n className=\"organization-logo\"\n data-testid=\"organization-logo\"\n src={orgMetadata.logo}\n />\n )\n : (<div data-testid=\"organization-short-name\">{orgMetadata.shortName}</div>)}\n </div>\n </div>\n <div className=\"d-flex justify-content-between\">\n <div className=\"certificate-statement\">\n <div className=\"certificate-statement-container d-flex flex-column\">\n <span\n className=\"certificate-statement-detail\"\n >\n This is to certify that\n </span>\n <strong\n className=\"certificate-statement-detail certificate-recipient font-weight-bold\"\n >\n {certificateName}\n </strong>\n <span\n className=\"certificate-statement-detail\"\n >\n successfully completed and received a passing grade in\n </span>\n <span\n className=\"certificate-course font-weight-bold\"\n >\n <span>{number}</span>:\n <span>{title}</span>\n </span>\n <span\n className=\"certificate-statement-detail\"\n >\n a course of study offered by {orgMetadata.shortName},\n an online learning initiative of {orgMetadata.name}.\n </span>\n </div>\n </div>\n <div className=\"signatories\">\n <div className=\"sr-only\">Noted by</div>\n <Signatory name=\"Maurilio Pugliesi\" />\n <Signatory name=\"Justine Doe, Ph.D.\" />\n </div>\n </div>\n <div className=\"certificate-identifiers\">\n <ul className=\"d-flex no-bullets stamps pt-3\">\n <li className=\"stamp\">\n <img className=\"platform-logo\" src={platformLogoUrl} alt=\"edX\" />\n </li>\n <li className=\"stamp d-flex flex-column\">\n <span className=\"title\">Verified Certificate</span>\n <span className=\"emphasized\">Issued Month / Year</span>\n </li>\n <li className=\"stamp d-flex flex-column\">\n <span className=\"title\">Valid Certificate ID</span>\n <span className=\"emphasized\">12345678901234567890</span>\n </li>\n </ul>\n </div>\n <div className=\"preview-watermark\">\n <span>PREVIEW</span>\n </div>\n </div>\n );\n\n // We can render if the call to the verified name endpoint returns a null, because we fall back to their LMS\n // profile name, but if the call to the organization endpoint fails, we cannot render the certificate because\n // we require data from this endpoint.\n let component;\n\n if (!orgMetadata) {\n component = false;\n } else if (isLoading) {\n component = (\n <Skeleton\n count={1}\n height=\"5rem\"\n />\n );\n } else {\n component = (\n <CertificatePreviewComponent />\n );\n }\n\n return (\n component\n );\n};\n\nCertificatePreview.propTypes = {\n courseId: PropTypes.string.isRequired,\n // A background utility class, such as bg-white.\n bgColor: PropTypes.string,\n};\n\nCertificatePreview.defaultProps = {\n bgColor: '',\n};\n\nexport default CertificatePreview;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,10 +16,20 @@ const messages = (0, _i18n.defineMessages)({
|
|
|
16
16
|
defaultMessage: 'Close',
|
|
17
17
|
description: 'Alternative text for close icon'
|
|
18
18
|
},
|
|
19
|
-
|
|
20
|
-
id: '
|
|
21
|
-
defaultMessage: '{percentage}%
|
|
22
|
-
description: 'Header for first
|
|
19
|
+
firstTimeLearnerOffer: {
|
|
20
|
+
id: 'advertisements.upgrade-notification.first-time-learner-offer',
|
|
21
|
+
defaultMessage: '{percentage}% off for first-time learners!',
|
|
22
|
+
description: 'Header for the first-time learner discount in the upgrade card'
|
|
23
|
+
},
|
|
24
|
+
promoCodeMessage: {
|
|
25
|
+
id: 'advertisements.upgrade-notification.promo-code',
|
|
26
|
+
defaultMessage: 'Use promo code: {code}',
|
|
27
|
+
description: 'Gives the learner the discount code to use at checkout'
|
|
28
|
+
},
|
|
29
|
+
upgradeNowButton: {
|
|
30
|
+
id: 'advertisements.upgrade-notification.upgrade-now',
|
|
31
|
+
defaultMessage: 'Upgrade now for {price}',
|
|
32
|
+
description: 'Upgrade button label with the price the learner pays, discounted when there is an offer'
|
|
23
33
|
},
|
|
24
34
|
accessExpirationHeader: {
|
|
25
35
|
id: 'learning.generic.upgradeNotification.accessExpiration',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","names":["_i18n","require","messages","defineMessages","pursueCertificateMessage","id","defaultMessage","description","closeAlt","
|
|
1
|
+
{"version":3,"file":"messages.js","names":["_i18n","require","messages","defineMessages","pursueCertificateMessage","id","defaultMessage","description","closeAlt","firstTimeLearnerOffer","promoCodeMessage","upgradeNowButton","accessExpirationHeader","accessExpirationUrgentHeader","accessExpirationPastHeader","pastExpirationCallToActionLabel","discountCodeMessage","_default","exports","default"],"sources":["../../src/upgrade-notification/messages.js"],"sourcesContent":["import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n pursueCertificateMessage: {\n id: 'advertisements.header.pursue-certificate',\n defaultMessage: 'Pursue a verified certificate',\n description: 'Text used as header for certificate advertisement',\n },\n closeAlt: {\n id: 'advertisements.close',\n defaultMessage: 'Close',\n description: 'Alternative text for close icon',\n },\n firstTimeLearnerOffer: {\n id: 'advertisements.upgrade-notification.first-time-learner-offer',\n defaultMessage: '{percentage}% off for first-time learners!',\n description: 'Header for the first-time learner discount in the upgrade card',\n },\n promoCodeMessage: {\n id: 'advertisements.upgrade-notification.promo-code',\n defaultMessage: 'Use promo code: {code}',\n description: 'Gives the learner the discount code to use at checkout',\n },\n upgradeNowButton: {\n id: 'advertisements.upgrade-notification.upgrade-now',\n defaultMessage: 'Upgrade now for {price}',\n description: 'Upgrade button label with the price the learner pays, discounted when there is an offer',\n },\n accessExpirationHeader: {\n id: 'learning.generic.upgradeNotification.accessExpiration',\n defaultMessage: 'Upgrade your course today',\n description: 'Header for access expiration countdown',\n },\n accessExpirationUrgentHeader: {\n id: 'learning.generic.upgradeNotification.accessExpirationUrgent',\n defaultMessage: 'Course Access Expiration',\n description: 'Header for access expiration countdown banner',\n },\n accessExpirationPastHeader: {\n id: 'learning.generic.upgradeNotification.accessExpirationPast',\n defaultMessage: 'Course Access Expiration',\n description: 'Header for past expiration countdown banner',\n },\n pastExpirationCallToActionLabel: {\n id: 'learning.generic.upgradeNotification.past-expiration.call-to-action-button.label',\n defaultMessage: 'View course details',\n description: 'Button label to navigate to course details for expired upgrades',\n },\n discountCodeMessage: {\n id: 'learning.generic.upgradeNotification.code',\n defaultMessage: 'Use code {code} at checkout',\n description: 'Message that provides user with a code to use at checkout',\n },\n});\n\nexport default messages;\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,MAAMC,QAAQ,GAAG,IAAAC,oBAAc,EAAC;EAC9BC,wBAAwB,EAAE;IACxBC,EAAE,EAAE,0CAA0C;IAC9CC,cAAc,EAAE,+BAA+B;IAC/CC,WAAW,EAAE;EACf,CAAC;EACDC,QAAQ,EAAE;IACRH,EAAE,EAAE,sBAAsB;IAC1BC,cAAc,EAAE,OAAO;IACvBC,WAAW,EAAE;EACf,CAAC;EACDE,qBAAqB,EAAE;IACrBJ,EAAE,EAAE,8DAA8D;IAClEC,cAAc,EAAE,4CAA4C;IAC5DC,WAAW,EAAE;EACf,CAAC;EACDG,gBAAgB,EAAE;IAChBL,EAAE,EAAE,gDAAgD;IACpDC,cAAc,EAAE,wBAAwB;IACxCC,WAAW,EAAE;EACf,CAAC;EACDI,gBAAgB,EAAE;IAChBN,EAAE,EAAE,iDAAiD;IACrDC,cAAc,EAAE,yBAAyB;IACzCC,WAAW,EAAE;EACf,CAAC;EACDK,sBAAsB,EAAE;IACtBP,EAAE,EAAE,uDAAuD;IAC3DC,cAAc,EAAE,2BAA2B;IAC3CC,WAAW,EAAE;EACf,CAAC;EACDM,4BAA4B,EAAE;IAC5BR,EAAE,EAAE,6DAA6D;IACjEC,cAAc,EAAE,0BAA0B;IAC1CC,WAAW,EAAE;EACf,CAAC;EACDO,0BAA0B,EAAE;IAC1BT,EAAE,EAAE,2DAA2D;IAC/DC,cAAc,EAAE,0BAA0B;IAC1CC,WAAW,EAAE;EACf,CAAC;EACDQ,+BAA+B,EAAE;IAC/BV,EAAE,EAAE,kFAAkF;IACtFC,cAAc,EAAE,qBAAqB;IACrCC,WAAW,EAAE;EACf,CAAC;EACDS,mBAAmB,EAAE;IACnBX,EAAE,EAAE,2CAA2C;IAC/CC,cAAc,EAAE,6BAA6B;IAC7CC,WAAW,EAAE;EACf;AACF,CAAC,CAAC;AAAC,IAAAU,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEYjB,QAAQ","ignoreList":[]}
|