From 8917b88a5a763aea34179d398ae2b07ab80d949f Mon Sep 17 00:00:00 2001 From: Attiya Ishaque Date: Tue, 7 Sep 2021 17:21:37 +0500 Subject: [PATCH] fix: design issue in discount experiment (#428) --- src/_style.scss | 17 +++++++++++- src/base-component/DiscountBanner.jsx | 32 +++++++++++++++++------ src/base-component/LargeLeftLayout.jsx | 22 +++++++++++----- src/base-component/MediumLayout.jsx | 14 +++++++--- src/base-component/SideDiscountBanner.jsx | 12 ++++++++- src/base-component/SmallLayout.jsx | 15 ++++++++--- src/base-component/messages.jsx | 5 ++++ 7 files changed, 95 insertions(+), 22 deletions(-) diff --git a/src/_style.scss b/src/_style.scss index 2f711e43..173a6947 100644 --- a/src/_style.scss +++ b/src/_style.scss @@ -513,6 +513,21 @@ select.form-control { width: 4em; height: 72px; } +.dicount-heading{ + margin-left: 7px; +} + +.hover-text:hover { + color: $black !important; + + .hover-icon { + color: $black !important; + } +} + +.hover-discount-icon:hover { + color: $white !important; +} .large-heading { margin-left: 7px; @@ -689,7 +704,7 @@ select.form-control { .dashed-border { border-style: dashed; border-width: thin; - padding: 0.5rem 1rem; + padding: 0.5rem; } @media (min-width: 1024px) { diff --git a/src/base-component/DiscountBanner.jsx b/src/base-component/DiscountBanner.jsx index ddbba816..067a5dcd 100644 --- a/src/base-component/DiscountBanner.jsx +++ b/src/base-component/DiscountBanner.jsx @@ -2,14 +2,17 @@ import React, { useState } from 'react'; import ClipboardJS from 'clipboard'; -import { FormattedMessage } from '@edx/frontend-platform/i18n'; +import { injectIntl, intlShape, FormattedMessage } from '@edx/frontend-platform/i18n'; import { faCut } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { PageBanner } from '@edx/paragon'; +import { Toast, PageBanner } from '@edx/paragon'; +import messages from './messages'; -export default function DiscountExperimentBanner() { +const DiscountExperimentBanner = (props) => { + const { intl } = props; const [show, setShow] = useState(true); + const [showToast, setToastShow] = useState(false); new ClipboardJS('.copyIcon'); // eslint-disable-line no-new const getDiscountText = () => ( @@ -23,13 +26,19 @@ export default function DiscountExperimentBanner() { return ( <> + setToastShow(false)} + show={showToast} + > + {intl.formatMessage(messages['code.copied'])} + { setShow(false); }} > - + - - EDXWELCOME + + EDXWELCOME setToastShow(true)} /> ); -} +}; + +DiscountExperimentBanner.propTypes = { + intl: intlShape.isRequired, + +}; +export default injectIntl(DiscountExperimentBanner); diff --git a/src/base-component/LargeLeftLayout.jsx b/src/base-component/LargeLeftLayout.jsx index 48b57a9d..873cabe4 100644 --- a/src/base-component/LargeLeftLayout.jsx +++ b/src/base-component/LargeLeftLayout.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useState } from 'react'; import classNames from 'classnames'; @@ -9,19 +9,28 @@ import ClipboardJS from 'clipboard'; import { faCut } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Toast } from '@edx/paragon'; import messages from './messages'; import SideDiscountBanner from './SideDiscountBanner'; const LargeLeftLayout = (props) => { const { intl, isRegistrationPage, experimentName } = props; + const [showToast, setToastShow] = useState(false); new ClipboardJS('.copyIcon'); // eslint-disable-line no-new + return (
+ setToastShow(false)} + show={showToast} + > + {intl.formatMessage(messages['code.copied'])} + {
-

+

{intl.formatMessage(messages['start.learning'])} {

{experimentName === 'variation1' && isRegistrationPage ? ( - - + + EDXWELCOME setToastShow(true)} /> diff --git a/src/base-component/MediumLayout.jsx b/src/base-component/MediumLayout.jsx index d3f1577f..e653159b 100644 --- a/src/base-component/MediumLayout.jsx +++ b/src/base-component/MediumLayout.jsx @@ -1,10 +1,10 @@ -import React from 'react'; +import React, { useState } from 'react'; import classNames from 'classnames'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import { getConfig } from '@edx/frontend-platform'; -import { Hyperlink, Image } from '@edx/paragon'; +import { Hyperlink, Image, Toast } from '@edx/paragon'; import PropTypes from 'prop-types'; import ClipboardJS from 'clipboard'; @@ -16,6 +16,7 @@ import SideDiscountBanner from './SideDiscountBanner'; const MediumLayout = (props) => { const { intl, isRegistrationPage, experimentName } = props; + const [showToast, setToastShow] = useState(false); new ClipboardJS('.copyIcon'); // eslint-disable-line no-new return ( @@ -26,6 +27,12 @@ const MediumLayout = (props) => { }, )} > + setToastShow(false)} + show={showToast} + > + {intl.formatMessage(messages['code.copied'])} +
edx @@ -57,10 +64,11 @@ const MediumLayout = (props) => { EDXWELCOME setToastShow(true)} />
diff --git a/src/base-component/SideDiscountBanner.jsx b/src/base-component/SideDiscountBanner.jsx index 2270190e..2702d880 100644 --- a/src/base-component/SideDiscountBanner.jsx +++ b/src/base-component/SideDiscountBanner.jsx @@ -12,15 +12,25 @@ export default function SideDiscountBanner() { />
); + const getCerificateMsg = () => ( + + + + ); return ( , + certificateMsg: getCerificateMsg(), }} /> diff --git a/src/base-component/SmallLayout.jsx b/src/base-component/SmallLayout.jsx index a2097a77..9f677291 100644 --- a/src/base-component/SmallLayout.jsx +++ b/src/base-component/SmallLayout.jsx @@ -1,10 +1,10 @@ -import React from 'react'; +import React, { useState } from 'react'; import classNames from 'classnames'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import { getConfig } from '@edx/frontend-platform'; -import { Hyperlink, Image } from '@edx/paragon'; +import { Hyperlink, Image, Toast } from '@edx/paragon'; import PropTypes from 'prop-types'; @@ -17,10 +17,18 @@ import SideDiscountBanner from './SideDiscountBanner'; const SmallLayout = (props) => { const { intl, isRegistrationPage, experimentName } = props; + const [showToast, setToastShow] = useState(false); new ClipboardJS('.copyIcon'); // eslint-disable-line no-new + return ( <>
+ setToastShow(false)} + show={showToast} + > + {intl.formatMessage(messages['code.copied'])} + edx @@ -51,10 +59,11 @@ const SmallLayout = (props) => { EDXWELCOME setToastShow(true)} />
diff --git a/src/base-component/messages.jsx b/src/base-component/messages.jsx index 96d61392..13191f8a 100644 --- a/src/base-component/messages.jsx +++ b/src/base-component/messages.jsx @@ -11,6 +11,11 @@ const messages = defineMessages({ defaultMessage: 'with {siteName}', description: 'Header text with site name for logistration MFE pages', }, + 'code.copied': { + id: 'code.copied', + defaultMessage: 'Code copied', + description: 'part of 15% discount code copied', + }, // authenticated user base component text 'complete.your.profile.1': { id: 'complete.your.profile.1',