@edx/frontend-plugin-advertisements 1.26.8 → 1.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/data/index.js +6 -0
  2. package/dist/data/index.js.map +1 -1
  3. package/dist/data/optimizely.js +10 -1
  4. package/dist/data/optimizely.js.map +1 -1
  5. package/dist/upgrade-modal/UpgradeModal.js +1 -1
  6. package/dist/upgrade-modal/UpgradeModal.js.map +1 -1
  7. package/dist/upgrade-notification/DefaultUpgradeNotification.js +33 -288
  8. package/dist/upgrade-notification/DefaultUpgradeNotification.js.map +1 -1
  9. package/dist/upgrade-notification/ExperimentalUpgradeNotification.js +81 -303
  10. package/dist/upgrade-notification/ExperimentalUpgradeNotification.js.map +1 -1
  11. package/dist/upgrade-notification/UpgradeNotification.js +1 -1
  12. package/dist/upgrade-notification/UpgradeNotification.js.map +1 -1
  13. package/dist/upgrade-notification/generic/AccessExpirationDateBanner.js +57 -0
  14. package/dist/upgrade-notification/generic/AccessExpirationDateBanner.js.map +1 -0
  15. package/dist/upgrade-notification/generic/ExpirationCountdown.js +102 -0
  16. package/dist/upgrade-notification/generic/ExpirationCountdown.js.map +1 -0
  17. package/dist/upgrade-notification/generic/PastExpirationCardContent.js +25 -0
  18. package/dist/upgrade-notification/generic/PastExpirationCardContent.js.map +1 -0
  19. package/dist/upgrade-notification/generic/PastExpirationDateBanner.js +57 -0
  20. package/dist/upgrade-notification/generic/PastExpirationDateBanner.js.map +1 -0
  21. package/dist/upgrade-notification/generic/UpsellFBESoonCardContent.js +81 -0
  22. package/dist/upgrade-notification/generic/UpsellFBESoonCardContent.js.map +1 -0
  23. package/dist/upgrade-notification/generic/UpsellFarAwayCardContent.js +30 -0
  24. package/dist/upgrade-notification/generic/UpsellFarAwayCardContent.js.map +1 -0
  25. package/dist/upgrade-notification/generic/index.js +49 -0
  26. package/dist/upgrade-notification/generic/index.js.map +1 -0
  27. package/dist/upgrade-notification/messages.js +51 -0
  28. package/dist/upgrade-notification/messages.js.map +1 -0
  29. package/dist/upsell-bullets/ExperimentalUpsellBullets.js +75 -31
  30. package/dist/upsell-bullets/ExperimentalUpsellBullets.js.map +1 -1
  31. package/dist/upsell-bullets/ExperimentalUpsellTable.js +157 -0
  32. package/dist/upsell-bullets/ExperimentalUpsellTable.js.map +1 -0
  33. package/dist/upsell-bullets/ExperimentalUpsellTable.scss +61 -0
  34. package/dist/upsell-bullets/UpsellBullets.js +61 -52
  35. package/dist/upsell-bullets/UpsellBullets.js.map +1 -1
  36. package/dist/upsell-bullets/UpsellBullets.scss +0 -5
  37. package/dist/upsell-bullets/index.js +0 -19
  38. package/dist/upsell-bullets/index.js.map +1 -1
  39. package/dist/upsell-bullets/messages.js +66 -0
  40. package/dist/upsell-bullets/messages.js.map +1 -0
  41. package/package.json +1 -6
@@ -27,6 +27,12 @@ Object.defineProperty(exports, "OPTIMIZELY_VTR_MODAL_EXPERIMENT", {
27
27
  return _optimizely.OPTIMIZELY_VTR_MODAL_EXPERIMENT;
28
28
  }
29
29
  });
30
+ Object.defineProperty(exports, "OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _optimizely.OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT;
34
+ }
35
+ });
30
36
  Object.defineProperty(exports, "getOptimizely", {
31
37
  enumerable: true,
32
38
  get: function () {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_optimizely","require"],"sources":["../../src/data/index.jsx"],"sourcesContent":["export {\n getOptimizely,\n OPTIMIZELY_EVENT_KEYS,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY,\n OPTIMIZELY_VTR_MODAL_EXPERIMENT,\n} from './optimizely';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_optimizely","require"],"sources":["../../src/data/index.jsx"],"sourcesContent":["export {\n getOptimizely,\n OPTIMIZELY_EVENT_KEYS,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY,\n OPTIMIZELY_VTR_MODAL_EXPERIMENT,\n OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT,\n} from './optimizely';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getOptimizely = exports.OPTIMIZELY_VTR_MODAL_EXPERIMENT = exports.OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS = exports.OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY = exports.OPTIMIZELY_EVENT_KEYS = void 0;
6
+ exports.getOptimizely = exports.OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT = exports.OPTIMIZELY_VTR_MODAL_EXPERIMENT = exports.OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS = exports.OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY = exports.OPTIMIZELY_EVENT_KEYS = void 0;
7
7
  var _reactSdk = require("@optimizely/react-sdk");
8
8
  var _frontendPlatform = require("@edx/frontend-platform");
9
9
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -48,6 +48,15 @@ const OPTIMIZELY_VTR_MODAL_EXPERIMENT = exports.OPTIMIZELY_VTR_MODAL_EXPERIMENT
48
48
  OFF: 'off'
49
49
  }
50
50
  };
51
+ const OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT = exports.OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT = {
52
+ KEY: 'cta_bullet_points_experiment',
53
+ ACTION: 'upgrade_button_click',
54
+ VARIATIONS: {
55
+ OFF: 'off',
56
+ TABLE: 'comparison table',
57
+ BULLETS: 'new bullets'
58
+ }
59
+ };
51
60
  const OPTIMIZELY_EVENT_KEYS = exports.OPTIMIZELY_EVENT_KEYS = {
52
61
  UPGRADE_BUTTON_CLICK: 'upgrade_button_click',
53
62
  DECLINE_UPGRADE_BUTTON_CLICK: 'decline_upgrade_button_click'
@@ -1 +1 @@
1
- {"version":3,"file":"optimizely.js","names":["_reactSdk","require","_frontendPlatform","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ensureConfig","DEFAULT_OPTIMIZELY_AGENT_CONFIG","eventFlushInterval","eventBatchSize","getOptimizely","OPTIMIZELY_SDK_KEY","getConfig","OPTIMIZELY_FULL_STACK_SDK_KEY","OPTIMIZELY_AGENT_CONFIG","createInstance","sdkKey","exports","OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY","OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS","CERTIFICATE_PREVIEW","CERTIFICATE_PREVIEW_WITH_COPY","CONTROL","OFF","OPTIMIZELY_VTR_MODAL_EXPERIMENT","KEY","ACTION","VARIATIONS","ON","OPTIMIZELY_EVENT_KEYS","UPGRADE_BUTTON_CLICK","DECLINE_UPGRADE_BUTTON_CLICK"],"sources":["../../src/data/optimizely.js"],"sourcesContent":["import { createInstance } from '@optimizely/react-sdk';\nimport { ensureConfig, getConfig } from '@edx/frontend-platform';\n\nensureConfig([\n 'OPTIMIZELY_FULL_STACK_SDK_KEY',\n], 'Frontend Plugin Advertisements Optimizely module');\n\nconst DEFAULT_OPTIMIZELY_AGENT_CONFIG = {\n eventFlushInterval: 1000,\n eventBatchSize: 10,\n};\n\n/**\n * Initializing the Optimizely instance at the top-level will not work, becaused it may be initialized before\n * the OPTIMIZELY_FULL_STACK_SDK_KEY is available and will not be reinitialized afterward. Wrapping the initialization\n * in a function allows components to request the instance as-needed.\n */\nconst getOptimizely = () => {\n const OPTIMIZELY_SDK_KEY = getConfig().OPTIMIZELY_FULL_STACK_SDK_KEY;\n const OPTIMIZELY_AGENT_CONFIG = getConfig().OPTIMIZELY_AGENT_CONFIG || {};\n\n if (OPTIMIZELY_SDK_KEY) {\n return createInstance({\n sdkKey: OPTIMIZELY_SDK_KEY,\n ...{\n ...DEFAULT_OPTIMIZELY_AGENT_CONFIG,\n ...OPTIMIZELY_AGENT_CONFIG,\n },\n });\n }\n\n return null;\n};\n\nconst OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY = 'verified_take_rate_preview_watermark_experimentation';\n\nconst OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS = {\n CERTIFICATE_PREVIEW: 'certificate_preview',\n CERTIFICATE_PREVIEW_WITH_COPY: 'certificate_preview_with_copy',\n CONTROL: 'control',\n OFF: 'off',\n};\n\nconst OPTIMIZELY_VTR_MODAL_EXPERIMENT = {\n KEY: 'vtr_in_course_popup_modal_all_orgs',\n ACTION: 'modal_upgrade_button_click',\n VARIATIONS: {\n ON: 'on', OFF: 'off',\n },\n};\n\nconst OPTIMIZELY_EVENT_KEYS = {\n UPGRADE_BUTTON_CLICK: 'upgrade_button_click',\n DECLINE_UPGRADE_BUTTON_CLICK: 'decline_upgrade_button_click',\n};\n\nexport {\n getOptimizely,\n OPTIMIZELY_EVENT_KEYS,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS,\n OPTIMIZELY_VTR_MODAL_EXPERIMENT,\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"optimizely.js","names":["_reactSdk","require","_frontendPlatform","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ensureConfig","DEFAULT_OPTIMIZELY_AGENT_CONFIG","eventFlushInterval","eventBatchSize","getOptimizely","OPTIMIZELY_SDK_KEY","getConfig","OPTIMIZELY_FULL_STACK_SDK_KEY","OPTIMIZELY_AGENT_CONFIG","createInstance","sdkKey","exports","OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY","OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS","CERTIFICATE_PREVIEW","CERTIFICATE_PREVIEW_WITH_COPY","CONTROL","OFF","OPTIMIZELY_VTR_MODAL_EXPERIMENT","KEY","ACTION","VARIATIONS","ON","OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT","TABLE","BULLETS","OPTIMIZELY_EVENT_KEYS","UPGRADE_BUTTON_CLICK","DECLINE_UPGRADE_BUTTON_CLICK"],"sources":["../../src/data/optimizely.js"],"sourcesContent":["import { createInstance } from '@optimizely/react-sdk';\nimport { ensureConfig, getConfig } from '@edx/frontend-platform';\n\nensureConfig([\n 'OPTIMIZELY_FULL_STACK_SDK_KEY',\n], 'Frontend Plugin Advertisements Optimizely module');\n\nconst DEFAULT_OPTIMIZELY_AGENT_CONFIG = {\n eventFlushInterval: 1000,\n eventBatchSize: 10,\n};\n\n/**\n * Initializing the Optimizely instance at the top-level will not work, becaused it may be initialized before\n * the OPTIMIZELY_FULL_STACK_SDK_KEY is available and will not be reinitialized afterward. Wrapping the initialization\n * in a function allows components to request the instance as-needed.\n */\nconst getOptimizely = () => {\n const OPTIMIZELY_SDK_KEY = getConfig().OPTIMIZELY_FULL_STACK_SDK_KEY;\n const OPTIMIZELY_AGENT_CONFIG = getConfig().OPTIMIZELY_AGENT_CONFIG || {};\n\n if (OPTIMIZELY_SDK_KEY) {\n return createInstance({\n sdkKey: OPTIMIZELY_SDK_KEY,\n ...{\n ...DEFAULT_OPTIMIZELY_AGENT_CONFIG,\n ...OPTIMIZELY_AGENT_CONFIG,\n },\n });\n }\n\n return null;\n};\n\nconst OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY = 'verified_take_rate_preview_watermark_experimentation';\n\nconst OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS = {\n CERTIFICATE_PREVIEW: 'certificate_preview',\n CERTIFICATE_PREVIEW_WITH_COPY: 'certificate_preview_with_copy',\n CONTROL: 'control',\n OFF: 'off',\n};\n\nconst OPTIMIZELY_VTR_MODAL_EXPERIMENT = {\n KEY: 'vtr_in_course_popup_modal_all_orgs',\n ACTION: 'modal_upgrade_button_click',\n VARIATIONS: {\n ON: 'on', OFF: 'off',\n },\n};\n\nconst OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT = {\n KEY: 'cta_bullet_points_experiment',\n ACTION: 'upgrade_button_click',\n VARIATIONS: {\n OFF: 'off',\n TABLE: 'comparison table',\n BULLETS: 'new bullets',\n },\n};\n\nconst OPTIMIZELY_EVENT_KEYS = {\n UPGRADE_BUTTON_CLICK: 'upgrade_button_click',\n DECLINE_UPGRADE_BUTTON_CLICK: 'decline_upgrade_button_click',\n};\n\nexport {\n getOptimizely,\n OPTIMIZELY_EVENT_KEYS,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS,\n OPTIMIZELY_VTR_MODAL_EXPERIMENT,\n OPTIMIZELY_VTR_SIDEBAR_EXPERIMENT,\n};\n"],"mappings":"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","ignoreList":[]}
@@ -179,8 +179,8 @@ const UpgradeModal = _ref => {
179
179
  className: "pl-2 text-gray-700",
180
180
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Stack, {
181
181
  gap: 3,
182
- role: "listitem",
183
182
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Stack, {
183
+ role: "listitem",
184
184
  direction: "horizontal",
185
185
  gap: 3,
186
186
  className: "align-items-start",
@@ -1 +1 @@
1
- {"version":3,"file":"UpgradeModal.js","names":["_react","require","_propTypes","_interopRequireDefault","_reactSdk","_frontendPlatform","_analytics","_i18n","_paragon","_icons","_data","_certificatePreview","_jsxRuntime","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","UpgradeModal","_ref","isOpen","close","verifiedMode","org","courseId","offer","marketingUrl","accessExpiration","optimizely","decision","useDecision","OPTIMIZELY_VTR_MODAL_EXPERIMENT","KEY","variationKey","enabled","experimentProperties","experiment_key","variation_key","upsellPageName","eventProperties","org_key","courserun_key","promotionEventProperties","creative","name","position","promotion_id","useEffect","VARIATIONS","ON","sendTrackingLogEvent","sendTrackEvent","OFF","logClick","location","linkCategory","linkName","linkType","pageName","track","ACTION","logClickPastExpiration","intl","useIntl","dateNow","Date","now","currencySymbol","price","upgradeUrl","upgradeDeadlineDate","upgradeDeadline","pastDeadline","modalTitle","formatMessage","id","defaultMessage","description","callToActionButton","jsx","Button","className","onClick","href","children","jsxs","MarketingModal","title","onClose","isBlocking","size","heroIsDark","heroNode","ModalDialog","Hero","style","background","borderTopLeftRadius","borderTopRightRadius","Content","bgColor","footerNode","ActionRow","isStacked","values","code","role","Stack","gap","direction","Icon","src","Check","linkedContent","Hyperlink","destination","getConfig","MARKETING_SITE_BASE_URL","boldContent","defaultProps","propTypes","PropTypes","shape","number","isRequired","string","func","bool","object","_default","exports","withOptimizely"],"sources":["../../src/upgrade-modal/UpgradeModal.jsx"],"sourcesContent":["import { useEffect, React } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDecision, withOptimizely } from '@optimizely/react-sdk';\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow, Button, Hyperlink, Icon, MarketingModal, ModalDialog, Stack,\n} from '@openedx/paragon';\nimport { Check } from '@openedx/paragon/icons';\nimport { OPTIMIZELY_VTR_MODAL_EXPERIMENT } from '../data';\nimport CertificatePreview from '../upgrade-notification/certificate-preview';\n\nconst UpgradeModal = ({\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n optimizely,\n}) => {\n const [decision] = useDecision(OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY);\n const { variationKey, enabled } = decision;\n\n // Experiment specific properties or data should not be sent to the tracking logs, so break this\n // object out to ensure it is only sent to Segment and not the tracking logs.\n const experimentProperties = {\n experiment_key: OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY,\n variation_key: variationKey,\n };\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 ...experimentProperties,\n };\n\n useEffect(() => {\n if (variationKey === OPTIMIZELY_VTR_MODAL_EXPERIMENT.VARIATIONS.ON) {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketmodalupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n } else if (variationKey === OPTIMIZELY_VTR_MODAL_EXPERIMENT.VARIATIONS.OFF) {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketmodalupsell.not_displayed', eventProperties);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [variationKey]);\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 ...experimentProperties,\n linkCategory: 'green_upgrade',\n linkName: `${upsellPageName}_green`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n optimizely.track(OPTIMIZELY_VTR_MODAL_EXPERIMENT.ACTION);\n };\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_modal.past_expiration.button_clicked', {\n ...eventProperties,\n ...experimentProperties,\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 { currencySymbol, price, upgradeUrl } = verifiedMode || {};\n const upgradeDeadlineDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n const pastDeadline = accessExpiration ? new Date(dateNow) > upgradeDeadlineDate : false;\n const modalTitle = intl.formatMessage({\n id: 'learning.upgrade-modal.title',\n defaultMessage: 'Pursue a verified certificate',\n description: 'Upgrade modal title',\n });\n let callToActionButton = (\n <Button\n className=\"w-100\"\n onClick={logClick}\n href={upgradeUrl}\n >\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.upgrade-button.label',\n defaultMessage: 'Upgrade for {currencySymbol}{price}',\n description: 'Label for upgrade button',\n },\n { currencySymbol, price },\n )}\n </Button>\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 if (variationKey === OPTIMIZELY_VTR_MODAL_EXPERIMENT.VARIATIONS.OFF) {\n close();\n }\n if (!enabled) {\n return null;\n }\n\n return (\n <MarketingModal\n title={modalTitle}\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\">\n {/* TODO: replace with simplified */}\n <CertificatePreview {...{ courseId, bgColor: 'bg-light-100' }} />\n </ModalDialog.Hero.Content>\n </ModalDialog.Hero>\n )}\n footerNode={(\n <ActionRow isStacked className=\"mb-2\">\n {callToActionButton}\n {offer && (\n <div className=\"text-center discount-info\">\n {intl.formatMessage({\n id: 'learning.generic.upgradeNotification.code',\n defaultMessage: 'Use code {code} at checkout',\n values: {\n code: (<span className=\"font-weight-bold\">{offer.code}</span>),\n },\n })}\n </div>\n )}\n </ActionRow>\n )}\n >\n <h2 className=\"h3 mb-3 mt-2.5\">\n {modalTitle}\n </h2>\n <div role=\"list\" className=\"pl-2 text-gray-700\">\n <Stack gap={3} role=\"listitem\">\n <Stack direction=\"horizontal\" gap={3} className=\"align-items-start\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.first-item',\n defaultMessage: 'Earn a {linkedContent} of completion to showcase your résumé',\n description: 'Message for first list item',\n },\n {\n linkedContent: (\n <Hyperlink\n className=\"font-weight-bold text-primary-500 inline-link-underline\"\n destination={`${getConfig().MARKETING_SITE_BASE_URL}/verified-certificate`}\n >\n verified certificate\n </Hyperlink>\n ),\n },\n )}\n </span>\n </Stack>\n <Stack direction=\"horizontal\" gap={3} role=\"listitem\" className=\"align-items-start\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.second-item',\n defaultMessage: 'Unlock your access to all course activities, including {boldContent}',\n description: 'Message for second list item',\n },\n {\n boldContent: (\n <span className=\"font-weight-bold\">\n graded assignments\n </span>\n ),\n },\n )}\n </span>\n </Stack>\n <Stack direction=\"horizontal\" gap={3} role=\"listitem\" className=\"align-items-start\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.third-item',\n defaultMessage: '{boldContent} to course content and materials, even after the course ends',\n description: 'Message for third list item',\n },\n {\n boldContent: (\n <span className=\"font-weight-bold\">\n Full access\n </span>\n ),\n },\n )}\n </span>\n </Stack>\n <Stack direction=\"horizontal\" gap={3} role=\"listitem\" className=\"align-items-start\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.fourth-item',\n defaultMessage: 'Support our mission at edX',\n description: 'Message for fourth list item',\n },\n )}\n </span>\n </Stack>\n </Stack>\n </div>\n </MarketingModal>\n );\n};\n\nUpgradeModal.defaultProps = {\n verifiedMode: {},\n offer: null,\n accessExpiration: 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 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 /* eslint-disable-next-line react/forbid-prop-types */\n optimizely: PropTypes.object.isRequired,\n};\n\nexport default withOptimizely(UpgradeModal);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"UpgradeModal.js","names":["_react","require","_propTypes","_interopRequireDefault","_reactSdk","_frontendPlatform","_analytics","_i18n","_paragon","_icons","_data","_certificatePreview","_jsxRuntime","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","UpgradeModal","_ref","isOpen","close","verifiedMode","org","courseId","offer","marketingUrl","accessExpiration","optimizely","decision","useDecision","OPTIMIZELY_VTR_MODAL_EXPERIMENT","KEY","variationKey","enabled","experimentProperties","experiment_key","variation_key","upsellPageName","eventProperties","org_key","courserun_key","promotionEventProperties","creative","name","position","promotion_id","useEffect","VARIATIONS","ON","sendTrackingLogEvent","sendTrackEvent","OFF","logClick","location","linkCategory","linkName","linkType","pageName","track","ACTION","logClickPastExpiration","intl","useIntl","dateNow","Date","now","currencySymbol","price","upgradeUrl","upgradeDeadlineDate","upgradeDeadline","pastDeadline","modalTitle","formatMessage","id","defaultMessage","description","callToActionButton","jsx","Button","className","onClick","href","children","jsxs","MarketingModal","title","onClose","isBlocking","size","heroIsDark","heroNode","ModalDialog","Hero","style","background","borderTopLeftRadius","borderTopRightRadius","Content","bgColor","footerNode","ActionRow","isStacked","values","code","role","Stack","gap","direction","Icon","src","Check","linkedContent","Hyperlink","destination","getConfig","MARKETING_SITE_BASE_URL","boldContent","defaultProps","propTypes","PropTypes","shape","number","isRequired","string","func","bool","object","_default","exports","withOptimizely"],"sources":["../../src/upgrade-modal/UpgradeModal.jsx"],"sourcesContent":["import { useEffect, React } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDecision, withOptimizely } from '@optimizely/react-sdk';\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow, Button, Hyperlink, Icon, MarketingModal, ModalDialog, Stack,\n} from '@openedx/paragon';\nimport { Check } from '@openedx/paragon/icons';\nimport { OPTIMIZELY_VTR_MODAL_EXPERIMENT } from '../data';\nimport CertificatePreview from '../upgrade-notification/certificate-preview';\n\nconst UpgradeModal = ({\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n optimizely,\n}) => {\n const [decision] = useDecision(OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY);\n const { variationKey, enabled } = decision;\n\n // Experiment specific properties or data should not be sent to the tracking logs, so break this\n // object out to ensure it is only sent to Segment and not the tracking logs.\n const experimentProperties = {\n experiment_key: OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY,\n variation_key: variationKey,\n };\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 ...experimentProperties,\n };\n\n useEffect(() => {\n if (variationKey === OPTIMIZELY_VTR_MODAL_EXPERIMENT.VARIATIONS.ON) {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketmodalupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n } else if (variationKey === OPTIMIZELY_VTR_MODAL_EXPERIMENT.VARIATIONS.OFF) {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketmodalupsell.not_displayed', eventProperties);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [variationKey]);\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 ...experimentProperties,\n linkCategory: 'green_upgrade',\n linkName: `${upsellPageName}_green`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n optimizely.track(OPTIMIZELY_VTR_MODAL_EXPERIMENT.ACTION);\n };\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_modal.past_expiration.button_clicked', {\n ...eventProperties,\n ...experimentProperties,\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 { currencySymbol, price, upgradeUrl } = verifiedMode || {};\n const upgradeDeadlineDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n const pastDeadline = accessExpiration ? new Date(dateNow) > upgradeDeadlineDate : false;\n const modalTitle = intl.formatMessage({\n id: 'learning.upgrade-modal.title',\n defaultMessage: 'Pursue a verified certificate',\n description: 'Upgrade modal title',\n });\n let callToActionButton = (\n <Button\n className=\"w-100\"\n onClick={logClick}\n href={upgradeUrl}\n >\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.upgrade-button.label',\n defaultMessage: 'Upgrade for {currencySymbol}{price}',\n description: 'Label for upgrade button',\n },\n { currencySymbol, price },\n )}\n </Button>\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 if (variationKey === OPTIMIZELY_VTR_MODAL_EXPERIMENT.VARIATIONS.OFF) {\n close();\n }\n if (!enabled) {\n return null;\n }\n\n return (\n <MarketingModal\n title={modalTitle}\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\">\n {/* TODO: replace with simplified */}\n <CertificatePreview {...{ courseId, bgColor: 'bg-light-100' }} />\n </ModalDialog.Hero.Content>\n </ModalDialog.Hero>\n )}\n footerNode={(\n <ActionRow isStacked className=\"mb-2\">\n {callToActionButton}\n {offer && (\n <div className=\"text-center discount-info\">\n {intl.formatMessage({\n id: 'learning.generic.upgradeNotification.code',\n defaultMessage: 'Use code {code} at checkout',\n values: {\n code: (<span className=\"font-weight-bold\">{offer.code}</span>),\n },\n })}\n </div>\n )}\n </ActionRow>\n )}\n >\n <h2 className=\"h3 mb-3 mt-2.5\">\n {modalTitle}\n </h2>\n <div role=\"list\" className=\"pl-2 text-gray-700\">\n <Stack gap={3}>\n <Stack role=\"listitem\" direction=\"horizontal\" gap={3} className=\"align-items-start\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.first-item',\n defaultMessage: 'Earn a {linkedContent} of completion to showcase your résumé',\n description: 'Message for first list item',\n },\n {\n linkedContent: (\n <Hyperlink\n className=\"font-weight-bold text-primary-500 inline-link-underline\"\n destination={`${getConfig().MARKETING_SITE_BASE_URL}/verified-certificate`}\n >\n verified certificate\n </Hyperlink>\n ),\n },\n )}\n </span>\n </Stack>\n <Stack direction=\"horizontal\" gap={3} role=\"listitem\" className=\"align-items-start\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.second-item',\n defaultMessage: 'Unlock your access to all course activities, including {boldContent}',\n description: 'Message for second list item',\n },\n {\n boldContent: (\n <span className=\"font-weight-bold\">\n graded assignments\n </span>\n ),\n },\n )}\n </span>\n </Stack>\n <Stack direction=\"horizontal\" gap={3} role=\"listitem\" className=\"align-items-start\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.third-item',\n defaultMessage: '{boldContent} to course content and materials, even after the course ends',\n description: 'Message for third list item',\n },\n {\n boldContent: (\n <span className=\"font-weight-bold\">\n Full access\n </span>\n ),\n },\n )}\n </span>\n </Stack>\n <Stack direction=\"horizontal\" gap={3} role=\"listitem\" className=\"align-items-start\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.fourth-item',\n defaultMessage: 'Support our mission at edX',\n description: 'Message for fourth list item',\n },\n )}\n </span>\n </Stack>\n </Stack>\n </div>\n </MarketingModal>\n );\n};\n\nUpgradeModal.defaultProps = {\n verifiedMode: {},\n offer: null,\n accessExpiration: 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 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 /* eslint-disable-next-line react/forbid-prop-types */\n optimizely: PropTypes.object.isRequired,\n};\n\nexport default withOptimizely(UpgradeModal);\n"],"mappings":"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","ignoreList":[]}
@@ -11,11 +11,11 @@ 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 _localStorage = require("@src/data/localStorage");
15
14
  var _upgradeButton = require("@src/generic/upgrade-button");
16
15
  var _modelStore = require("@src/generic/model-store");
17
- var _upsellBullets = require("../upsell-bullets");
18
16
  var _certificatePreview = _interopRequireDefault(require("./certificate-preview"));
17
+ var _generic = require("./generic");
18
+ var _messages = _interopRequireDefault(require("./messages"));
19
19
  var _jsxRuntime = require("react/jsx-runtime");
20
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
21
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -25,250 +25,17 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
25
25
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
26
26
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
27
27
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* eslint import/no-unresolved: 0 */
28
- const UpsellNoFBECardContent = () => /*#__PURE__*/(0, _jsxRuntime.jsxs)("ul", {
29
- className: "fa-ul upgrade-notification-ul pt-0",
30
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_upsellBullets.VerifiedCertBullet, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_upsellBullets.SupportMissionBullet, {})]
31
- });
32
- const UpsellFBEFarAwayCardContent = () => /*#__PURE__*/(0, _jsxRuntime.jsxs)("ul", {
33
- className: "fa-ul upgrade-notification-ul",
34
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_upsellBullets.VerifiedCertBullet, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_upsellBullets.UnlockGradedBullet, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_upsellBullets.FullAccessBullet, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_upsellBullets.SupportMissionBullet, {})]
35
- });
36
- const UpsellFBESoonCardContent = _ref => {
37
- let {
38
- accessExpirationDate,
39
- timezoneFormatArgs
40
- } = _ref;
41
- const includingAnyProgress = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
42
- className: "font-weight-bold",
43
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
44
- id: "advertisements.upgradeNotification.expirationAccessLoss.progress",
45
- defaultMessage: "including any progress"
46
- })
47
- });
48
- const date = /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedDate, _objectSpread({
49
- day: "numeric",
50
- month: "long",
51
- value: new Date(accessExpirationDate)
52
- }, timezoneFormatArgs), "accessDate");
53
- const benefitsOfUpgrading = /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
54
- className: "inline-link-underline font-weight-bold",
55
- rel: "noopener noreferrer",
56
- target: "_blank",
57
- href: "https://support.edx.org/hc/en-us/articles/360013426573-What-are-the-differences-between-audit-free-and-verified-paid-courses-",
58
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
59
- id: "advertisements.upgradeNotification.expirationVerifiedCert.benefits",
60
- defaultMessage: "benefits of upgrading"
61
- })
62
- });
63
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
64
- className: "upgrade-notification-text",
65
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
66
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
67
- id: "advertisements.upgradeNotification.expirationAccessLoss",
68
- defaultMessage: "You will lose all access to this course, {includingAnyProgress}, on {date}.",
69
- values: {
70
- includingAnyProgress,
71
- date
72
- }
73
- })
74
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
75
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
76
- id: "advertisements.upgradeNotification.expirationVerifiedCert",
77
- defaultMessage: "Upgrading your course enables you to pursue a verified certificate and unlocks numerous features. Learn more about the {benefitsOfUpgrading}.",
78
- values: {
79
- benefitsOfUpgrading
80
- }
81
- })
82
- })]
83
- });
84
- };
85
- UpsellFBESoonCardContent.propTypes = {
86
- accessExpirationDate: _propTypes.default.PropTypes.instanceOf(Date).isRequired,
87
- timezoneFormatArgs: _propTypes.default.shape({
88
- timeZone: _propTypes.default.string
89
- })
90
- };
91
- UpsellFBESoonCardContent.defaultProps = {
92
- timezoneFormatArgs: {}
93
- };
94
- const PastExpirationCardContent = () => /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
95
- className: "upgrade-notification-text",
96
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
97
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
98
- id: "advertisements.upgradeNotification.pastExpiration.content",
99
- defaultMessage: "The upgrade deadline for this course passed. To upgrade, enroll in the next available session."
100
- })
101
- })
102
- });
103
- const ExpirationCountdown = _ref2 => {
104
- let {
105
- courseId,
106
- hoursToExpiration,
107
- setupgradeNotificationCurrentState,
108
- type
109
- } = _ref2;
110
- let expirationText;
111
- if (hoursToExpiration >= 24) {
112
- // More than 1 day left
113
- // setupgradeNotificationCurrentState is available in NotificationTray (not course home)
114
- if (setupgradeNotificationCurrentState) {
115
- if (type === 'access') {
116
- setupgradeNotificationCurrentState('accessDaysLeft');
117
- (0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'accessDaysLeft');
118
- }
119
- if (type === 'offer') {
120
- setupgradeNotificationCurrentState('FPDdaysLeft');
121
- (0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'FPDdaysLeft');
122
- }
123
- }
124
- expirationText = /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
125
- id: "advertisements.upgradeNotification.expirationDays",
126
- defaultMessage: `{dayCount, number} {dayCount, plural,
127
- one {day}
128
- other {days}} left`,
129
- values: {
130
- dayCount: Math.floor(hoursToExpiration / 24)
131
- }
132
- });
133
- } else if (hoursToExpiration >= 1) {
134
- // More than 1 hour left
135
- // setupgradeNotificationCurrentState is available in NotificationTray (not course home)
136
- if (setupgradeNotificationCurrentState) {
137
- if (type === 'access') {
138
- setupgradeNotificationCurrentState('accessHoursLeft');
139
- (0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'accessHoursLeft');
140
- }
141
- if (type === 'offer') {
142
- setupgradeNotificationCurrentState('FPDHoursLeft');
143
- (0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'FPDHoursLeft');
144
- }
145
- }
146
- expirationText = /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
147
- id: "advertisements.upgradeNotification.expirationHours",
148
- defaultMessage: `{hourCount, number} {hourCount, plural,
149
- one {hour}
150
- other {hours}} left`,
151
- values: {
152
- hourCount: hoursToExpiration
153
- }
154
- });
155
- } else {
156
- // Less than 1 hour
157
- // setupgradeNotificationCurrentState is available in NotificationTray (not course home)
158
- if (setupgradeNotificationCurrentState) {
159
- if (type === 'access') {
160
- setupgradeNotificationCurrentState('accessLastHour');
161
- (0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'accessLastHour');
162
- }
163
- if (type === 'offer') {
164
- setupgradeNotificationCurrentState('FPDLastHour');
165
- (0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'FPDLastHour');
166
- }
167
- }
168
- expirationText = /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
169
- id: "advertisements.upgradeNotification.expirationMinutes",
170
- defaultMessage: "Less than 1 hour left"
171
- });
172
- }
173
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
174
- className: "upsell-warning",
175
- children: expirationText
176
- });
177
- };
178
- ExpirationCountdown.propTypes = {
179
- courseId: _propTypes.default.string.isRequired,
180
- hoursToExpiration: _propTypes.default.number.isRequired,
181
- setupgradeNotificationCurrentState: _propTypes.default.func,
182
- type: _propTypes.default.string
183
- };
184
- ExpirationCountdown.defaultProps = {
185
- setupgradeNotificationCurrentState: null,
186
- type: null
187
- };
188
- const AccessExpirationDateBanner = _ref3 => {
189
- let {
190
- courseId,
191
- accessExpirationDate,
192
- timezoneFormatArgs,
193
- setupgradeNotificationCurrentState
194
- } = _ref3;
195
- if (setupgradeNotificationCurrentState) {
196
- setupgradeNotificationCurrentState('accessDateView');
197
- (0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'accessDateView');
198
- }
199
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
200
- className: "upsell-warning-light",
201
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
202
- id: "advertisements.upgradeNotification.expiration",
203
- defaultMessage: "Course access will expire {date}",
204
- values: {
205
- date: /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedDate, _objectSpread({
206
- day: "numeric",
207
- month: "long",
208
- value: accessExpirationDate
209
- }, timezoneFormatArgs), "accessExpireDate")
210
- }
211
- })
212
- });
213
- };
214
- AccessExpirationDateBanner.propTypes = {
215
- courseId: _propTypes.default.string.isRequired,
216
- accessExpirationDate: _propTypes.default.PropTypes.instanceOf(Date).isRequired,
217
- timezoneFormatArgs: _propTypes.default.shape({
218
- timeZone: _propTypes.default.string
219
- }),
220
- setupgradeNotificationCurrentState: _propTypes.default.func
221
- };
222
- AccessExpirationDateBanner.defaultProps = {
223
- timezoneFormatArgs: {},
224
- setupgradeNotificationCurrentState: null
225
- };
226
- const PastExpirationDateBanner = _ref4 => {
227
- let {
228
- courseId,
229
- accessExpirationDate,
230
- timezoneFormatArgs,
231
- setupgradeNotificationCurrentState
232
- } = _ref4;
233
- if (setupgradeNotificationCurrentState) {
234
- setupgradeNotificationCurrentState('PastExpirationDate');
235
- (0, _localStorage.setLocalStorage)(`upgradeNotificationCurrentState.${courseId}`, 'PastExpirationDate');
236
- }
237
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
238
- className: "upsell-warning",
239
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
240
- id: "advertisements.upgradeNotification.pastExpiration.banner",
241
- defaultMessage: "Upgrade deadline passed on {date}",
242
- values: {
243
- date: /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedDate, _objectSpread({
244
- day: "numeric",
245
- month: "long",
246
- value: accessExpirationDate
247
- }, timezoneFormatArgs), "accessExpireDate")
248
- }
249
- })
250
- });
251
- };
252
- PastExpirationDateBanner.propTypes = {
253
- courseId: _propTypes.default.string.isRequired,
254
- accessExpirationDate: _propTypes.default.PropTypes.instanceOf(Date).isRequired,
255
- timezoneFormatArgs: _propTypes.default.shape({
256
- timeZone: _propTypes.default.string
257
- }),
258
- setupgradeNotificationCurrentState: _propTypes.default.func
259
- };
260
- PastExpirationDateBanner.defaultProps = {
261
- timezoneFormatArgs: {},
262
- setupgradeNotificationCurrentState: null
263
- };
264
- const DefaultUpgradeNotification = _ref5 => {
28
+ const DefaultUpgradeNotification = _ref => {
265
29
  let {
266
30
  id,
267
31
  courseId,
268
32
  setNotificationCurrentState,
269
33
  toggleSidebar
270
- } = _ref5;
34
+ } = _ref;
271
35
  const pluginLocationId = id;
36
+ const {
37
+ formatMessage
38
+ } = (0, _i18n.useIntl)();
272
39
  const {
273
40
  org,
274
41
  userTimezone,
@@ -290,7 +57,7 @@ const DefaultUpgradeNotification = _ref5 => {
290
57
  const correctedTime = new Date(dateNow + timeOffsetMillis);
291
58
  const accessExpirationDate = accessExpiration ? new Date(accessExpiration.expirationDate) : null;
292
59
  const pastExpirationDeadline = accessExpiration ? new Date(dateNow) > accessExpirationDate : false;
293
- const shouldDisplayBorder = pluginLocationId !== 'outline_tab_notifications';
60
+ const shouldDisplayBorder = pluginLocationId.includes('outline');
294
61
  const upsellPageName = pluginLocationId === 'outline_tab_notifications' ? 'course_home' : 'in_course';
295
62
  const setupgradeNotificationCurrentState = setNotificationCurrentState;
296
63
  const eventProperties = {
@@ -352,69 +119,55 @@ const DefaultUpgradeNotification = _ref5 => {
352
119
  if (offer) {
353
120
  // countdown to the first purchase discount if there is one
354
121
  const hoursToDiscountExpiration = Math.floor((new Date(offer.expirationDate) - correctedTime) / 1000 / 60 / 60);
355
- upgradeNotificationHeaderText = /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
356
- id: "advertisements.upgradeNotification.firstTimeLearnerDiscount",
357
- defaultMessage: "{percentage}% First-Time Learner Discount",
358
- values: {
359
- percentage: offer.percentage
360
- }
122
+ upgradeNotificationHeaderText = formatMessage(_messages.default.firstTimeLearnerDiscountHeader, {
123
+ percentage: offer.percentage
361
124
  });
362
- expirationBanner = /*#__PURE__*/(0, _jsxRuntime.jsx)(ExpirationCountdown, {
125
+ expirationBanner = /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.ExpirationCountdown, {
363
126
  courseId: courseId,
364
127
  hoursToExpiration: hoursToDiscountExpiration,
365
128
  setupgradeNotificationCurrentState: setupgradeNotificationCurrentState,
366
129
  type: "offer"
367
130
  });
368
131
  } else {
369
- upgradeNotificationHeaderText = /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
370
- id: "advertisements.upgradeNotification.accessExpiration",
371
- defaultMessage: "Upgrade your course today"
372
- });
373
- expirationBanner = /*#__PURE__*/(0, _jsxRuntime.jsx)(AccessExpirationDateBanner, {
132
+ upgradeNotificationHeaderText = formatMessage(_messages.default.accessExpirationHeader);
133
+ expirationBanner = /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.AccessExpirationDateBanner, {
374
134
  courseId: courseId,
375
135
  accessExpirationDate: accessExpirationDate,
376
136
  timezoneFormatArgs: timezoneFormatArgs,
377
137
  setupgradeNotificationCurrentState: setupgradeNotificationCurrentState
378
138
  });
379
139
  }
380
- upsellMessage = /*#__PURE__*/(0, _jsxRuntime.jsx)(UpsellFBEFarAwayCardContent, {});
140
+ upsellMessage = /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.UpsellFarAwayCardContent, {
141
+ isFBE: true
142
+ });
381
143
  } else if (hoursToAccessExpiration < 7 * 24 && hoursToAccessExpiration >= 0) {
382
144
  // more urgent messaging if there's less than 7 days left to access expiration
383
- upgradeNotificationHeaderText = /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
384
- id: "advertisements.upgradeNotification.accessExpirationUrgent",
385
- defaultMessage: "Course Access Expiration"
386
- });
387
- expirationBanner = /*#__PURE__*/(0, _jsxRuntime.jsx)(ExpirationCountdown, {
145
+ upgradeNotificationHeaderText = formatMessage(_messages.default.accessExpirationUrgentHeader);
146
+ expirationBanner = /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.ExpirationCountdown, {
388
147
  courseId: courseId,
389
148
  hoursToExpiration: hoursToAccessExpiration,
390
149
  setupgradeNotificationCurrentState: setupgradeNotificationCurrentState,
391
150
  type: "access"
392
151
  });
393
- upsellMessage = /*#__PURE__*/(0, _jsxRuntime.jsx)(UpsellFBESoonCardContent, {
152
+ upsellMessage = /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.UpsellFBESoonCardContent, {
394
153
  accessExpirationDate: accessExpirationDate,
395
154
  timezoneFormatArgs: timezoneFormatArgs
396
155
  });
397
156
  } else {
398
157
  // access expiration deadline has passed
399
- upgradeNotificationHeaderText = /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
400
- id: "advertisements.upgradeNotification.accessExpirationPast",
401
- defaultMessage: "Course Access Expiration"
402
- });
403
- expirationBanner = /*#__PURE__*/(0, _jsxRuntime.jsx)(PastExpirationDateBanner, {
158
+ upgradeNotificationHeaderText = formatMessage(_messages.default.accessExpirationPastHeader);
159
+ expirationBanner = /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.PastExpirationDateBanner, {
404
160
  courseId: courseId,
405
161
  accessExpirationDate: accessExpirationDate,
406
162
  timezoneFormatArgs: timezoneFormatArgs,
407
163
  setupgradeNotificationCurrentState: setupgradeNotificationCurrentState
408
164
  });
409
- upsellMessage = /*#__PURE__*/(0, _jsxRuntime.jsx)(PastExpirationCardContent, {});
165
+ upsellMessage = /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.PastExpirationCardContent, {});
410
166
  }
411
167
  } else {
412
168
  // FBE is turned off
413
- upgradeNotificationHeaderText = /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
414
- id: "advertisements.upgradeNotification.pursueAverifiedCertificate",
415
- defaultMessage: "Pursue a verified certificate"
416
- });
417
- upsellMessage = /*#__PURE__*/(0, _jsxRuntime.jsx)(UpsellNoFBECardContent, {});
169
+ upgradeNotificationHeaderText = formatMessage(_messages.default.pursueCertificateMessage);
170
+ upsellMessage = /*#__PURE__*/(0, _jsxRuntime.jsx)(_generic.UpsellFarAwayCardContent, {});
418
171
  }
419
172
  if (pastExpirationDeadline) {
420
173
  callToActionButton = /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Button, {
@@ -422,7 +175,7 @@ const DefaultUpgradeNotification = _ref5 => {
422
175
  onClick: logClickPastExpiration,
423
176
  href: marketingUrl,
424
177
  block: true,
425
- children: "View Course Details"
178
+ children: formatMessage(_messages.default.pastExpirationCallToActionLabel)
426
179
  });
427
180
  } else {
428
181
  callToActionButton = /*#__PURE__*/(0, _jsxRuntime.jsx)(_upgradeButton.UpgradeButton, {
@@ -436,25 +189,17 @@ const DefaultUpgradeNotification = _ref5 => {
436
189
  // if there's a first purchase discount, message the code at the bottom
437
190
  offerCode = /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
438
191
  className: "text-center discount-info",
439
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
440
- id: "advertisements.upgradeNotification.code",
441
- defaultMessage: "Use code {code} at checkout",
442
- values: {
443
- code: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
444
- className: "font-weight-bold",
445
- children: offer.code
446
- })
447
- }
192
+ children: formatMessage(_messages.default.discountCodeMessage, {
193
+ code: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
194
+ className: "font-weight-bold",
195
+ children: offer.code
196
+ })
448
197
  })
449
198
  });
450
199
  }
451
- const closeAltText = /*#__PURE__*/(0, _jsxRuntime.jsx)(_i18n.FormattedMessage, {
452
- id: "advertisements.close",
453
- defaultMessage: "Close"
454
- });
455
200
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("section", {
456
201
  className: (0, _classnames.default)('upgrade-notification small', {
457
- 'card mb-4': shouldDisplayBorder
202
+ 'pgn__card pgn__card-light card mb-4 rounded': shouldDisplayBorder
458
203
  }),
459
204
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
460
205
  id: "courseHome-upgradeNotification",
@@ -473,7 +218,7 @@ const DefaultUpgradeNotification = _ref5 => {
473
218
  iconAs: _paragon.Icon,
474
219
  onClick: toggleSidebar,
475
220
  className: "icon-hover",
476
- alt: closeAltText
221
+ alt: formatMessage(_messages.default.closeAlt)
477
222
  })
478
223
  })]
479
224
  }), expirationBanner, /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
@@ -496,5 +241,5 @@ DefaultUpgradeNotification.defaultProps = {
496
241
  setNotificationCurrentState: null,
497
242
  toggleSidebar: null
498
243
  };
499
- var _default = exports.default = (0, _i18n.injectIntl)(DefaultUpgradeNotification);
244
+ var _default = exports.default = DefaultUpgradeNotification;
500
245
  //# sourceMappingURL=DefaultUpgradeNotification.js.map