mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-02 06:07:06 +01:00
0efd00b755
* adding product tour component * updated control for prevIcon * updated app-header and product tour * updated css * updated message strings * updated tests * removed console statement * added selector for product tour * updated test * updated test * updated state with steps * Update ui/components/multichain/product-tour-popover/product-tour-popover.js Co-authored-by: Garrett Bear <gwhisten@gmail.com> * Update ui/components/multichain/product-tour-popover/product-tour-popover.js Co-authored-by: Garrett Bear <gwhisten@gmail.com> * Update ui/components/multichain/product-tour-popover/product-tour-popover.js Co-authored-by: Garrett Bear <gwhisten@gmail.com> * Update ui/components/multichain/product-tour-popover/product-tour-popover.js Co-authored-by: Garrett Bear <gwhisten@gmail.com> * Update ui/components/multichain/product-tour-popover/product-tour-popover.js Co-authored-by: Garrett Bear <gwhisten@gmail.com> * Update ui/components/multichain/product-tour-popover/product-tour-popover.js Co-authored-by: Garrett Bear <gwhisten@gmail.com> * Update ui/components/multichain/product-tour-popover/product-tour-popover.js Co-authored-by: Garrett Bear <gwhisten@gmail.com> * Update ui/components/multichain/product-tour-popover/product-tour-popover.js Co-authored-by: Garrett Bear <gwhisten@gmail.com> * Update ui/components/multichain/product-tour-popover/product-tour-popover.js Co-authored-by: Garrett Bear <gwhisten@gmail.com> * Update ui/components/multichain/product-tour-popover/product-tour-popover.scss Co-authored-by: Garrett Bear <gwhisten@gmail.com> * fixed lint errors * updated lint error * added changes for rtl support * added changes for rtl support * fixed lint errors * Some suggestions (#18676) * updated messages and indentation * fixed popup close on my final step * updated rtl classname condition --------- Co-authored-by: Garrett Bear <gwhisten@gmail.com> Co-authored-by: George Marshall <george.marshall@consensys.net>
180 lines
4.3 KiB
JavaScript
180 lines
4.3 KiB
JavaScript
import React from 'react';
|
|
import classnames from 'classnames';
|
|
import PropTypes from 'prop-types';
|
|
import Box from '../../ui/box/box';
|
|
import {
|
|
AlignItems,
|
|
BLOCK_SIZES,
|
|
BorderRadius,
|
|
BackgroundColor,
|
|
DISPLAY,
|
|
IconColor,
|
|
JustifyContent,
|
|
Size,
|
|
TextColor,
|
|
TextVariant,
|
|
TextAlign,
|
|
} from '../../../helpers/constants/design-system';
|
|
import {
|
|
ButtonBase,
|
|
ButtonIcon,
|
|
IconName,
|
|
Text,
|
|
} from '../../component-library';
|
|
import { useI18nContext } from '../../../hooks/useI18nContext';
|
|
import { Menu } from '../../ui/menu';
|
|
|
|
export const ProductTour = ({
|
|
className,
|
|
prevIcon,
|
|
title,
|
|
description,
|
|
currentStep,
|
|
totalSteps,
|
|
positionObj = '5%',
|
|
closeMenu,
|
|
anchorElement,
|
|
onClick,
|
|
prevClick,
|
|
productTourDirection,
|
|
...props
|
|
}) => {
|
|
const t = useI18nContext();
|
|
return (
|
|
<Menu
|
|
className={classnames(
|
|
'multichain-product-tour-menu',
|
|
{
|
|
'multichain-product-tour-menu--rtl': productTourDirection === 'rtl',
|
|
},
|
|
className,
|
|
)}
|
|
anchorElement={anchorElement}
|
|
onHide={closeMenu}
|
|
data-testid="multichain-product-tour-menu-popover"
|
|
{...props}
|
|
>
|
|
<Box
|
|
className="multichain-product-tour-menu__container"
|
|
backgroundColor={BackgroundColor.infoDefault}
|
|
borderRadius={BorderRadius.LG}
|
|
padding={4}
|
|
>
|
|
<Box
|
|
borderWidth={1}
|
|
className="multichain-product-tour-menu__arrow"
|
|
display={DISPLAY.FLEX}
|
|
justifyContent={JustifyContent.center}
|
|
alignItems={AlignItems.center}
|
|
style={{ right: positionObj }}
|
|
/>
|
|
<Box
|
|
display={DISPLAY.FLEX}
|
|
alignItems={AlignItems.center}
|
|
className="multichain-product-tour-menu__header"
|
|
>
|
|
{prevIcon ? (
|
|
<ButtonIcon
|
|
iconName={IconName.ArrowLeft}
|
|
size={Size.SM}
|
|
color={IconColor.infoInverse}
|
|
onClick={prevClick}
|
|
className="multichain-product-tour-menu__previous-icon"
|
|
data-testid="multichain-product-tour-menu-popover-prevIcon"
|
|
/>
|
|
) : null}
|
|
<Text
|
|
textAlign={TextAlign.Center}
|
|
variant={TextVariant.headingSm}
|
|
width={BLOCK_SIZES.FULL}
|
|
color={TextColor.infoInverse}
|
|
>
|
|
{title}
|
|
</Text>
|
|
</Box>
|
|
<Text
|
|
paddingBottom={2}
|
|
paddingTop={2}
|
|
color={TextColor.infoInverse}
|
|
variant={TextVariant.bodyMd}
|
|
>
|
|
{description}
|
|
</Text>
|
|
<Box
|
|
display={DISPLAY.FLEX}
|
|
alignItems={AlignItems.center}
|
|
justifyContent={JustifyContent.spaceBetween}
|
|
>
|
|
<Text
|
|
paddingBottom={2}
|
|
paddingTop={2}
|
|
color={TextColor.infoInverse}
|
|
variant={TextVariant.bodyMd}
|
|
>
|
|
{currentStep}/{totalSteps}
|
|
</Text>
|
|
<ButtonBase
|
|
backgroundColor={BackgroundColor.primaryInverse}
|
|
color={TextColor.primaryDefault}
|
|
className="multichain-product-tour-menu__button"
|
|
onClick={onClick}
|
|
>
|
|
{t('recoveryPhraseReminderConfirm')}
|
|
</ButtonBase>
|
|
</Box>
|
|
</Box>
|
|
</Menu>
|
|
);
|
|
};
|
|
|
|
ProductTour.propTypes = {
|
|
/**
|
|
* The element that the menu should display next to
|
|
*/
|
|
anchorElement: PropTypes.instanceOf(window.Element),
|
|
/**
|
|
* Function that closes this menu
|
|
*/
|
|
closeMenu: PropTypes.func.isRequired,
|
|
/**
|
|
* Additional classNames to be added
|
|
*/
|
|
className: PropTypes.string,
|
|
/**
|
|
* Boolean to decide whether to show prevIcon or not
|
|
*/
|
|
prevIcon: PropTypes.bool,
|
|
/**
|
|
* Title of the popover
|
|
*/
|
|
title: PropTypes.string,
|
|
/**
|
|
* Description of the popover
|
|
*/
|
|
description: PropTypes.string,
|
|
/**
|
|
* Current step in the product tour
|
|
*/
|
|
currentStep: PropTypes.string,
|
|
/**
|
|
* Total steps in the product tour
|
|
*/
|
|
totalSteps: PropTypes.string,
|
|
/**
|
|
* PositionObj to decide the position of the popover tip
|
|
*/
|
|
positionObj: PropTypes.string,
|
|
/**
|
|
* The onClick handler to be passed
|
|
*/
|
|
onClick: PropTypes.func,
|
|
/**
|
|
* The handler to be passed to prevIcon
|
|
*/
|
|
prevClick: PropTypes.func,
|
|
/**
|
|
* Direction to determine the css for menu component
|
|
*/
|
|
productTourDirection: PropTypes.string,
|
|
};
|