diff --git a/src/components/AddPaymentMethodMenu.js b/src/components/AddPaymentMethodMenu.js index 03b470771b29..1727cc719a19 100644 --- a/src/components/AddPaymentMethodMenu.js +++ b/src/components/AddPaymentMethodMenu.js @@ -1,18 +1,14 @@ import React from 'react'; import PropTypes from 'prop-types'; -import {View} from 'react-native'; import {withOnyx} from 'react-native-onyx'; -import Popover from './Popover'; -import MenuItem from './MenuItem'; import * as Expensicons from './Icon/Expensicons'; import withLocalize, {withLocalizePropTypes} from './withLocalize'; import compose from '../libs/compose'; import ONYXKEYS from '../ONYXKEYS'; import CONST from '../CONST'; -import * as StyleUtils from '../styles/StyleUtils'; import withWindowDimensions from './withWindowDimensions'; import Permissions from '../libs/Permissions'; -import styles from '../styles/styles'; +import PopoverMenu from './PopoverMenu'; const propTypes = { isVisible: PropTypes.bool.isRequired, @@ -42,36 +38,31 @@ const defaultProps = { }; const AddPaymentMethodMenu = props => ( - - - props.onItemSelected(CONST.PAYMENT_METHODS.BANK_ACCOUNT)} - wrapperStyle={styles.pr15} - /> - {Permissions.canUseWallet(props.betas) && ( - props.onItemSelected(CONST.PAYMENT_METHODS.DEBIT_CARD)} - wrapperStyle={styles.pr15} - /> - )} - {props.shouldShowPaypal && !props.payPalMeUsername && ( - props.onItemSelected(CONST.PAYMENT_METHODS.PAYPAL)} - wrapperStyle={styles.pr15} - /> - )} - - + onItemSelected={() => props.onClose()} + menuItems={[ + { + text: props.translate('common.bankAccount'), + icon: Expensicons.Bank, + onSelected: () => props.onItemSelected(CONST.PAYMENT_METHODS.BANK_ACCOUNT), + }, + ...(Permissions.canUseWallet(props.betas) ? [{ + text: props.translate('common.debitCard'), + icon: Expensicons.CreditCard, + onSelected: () => props.onItemSelected(CONST.PAYMENT_METHODS.DEBIT_CARD), + }, + ] : []), + ...(props.shouldShowPaypal && !props.payPalMeUsername ? [{ + text: props.translate('common.payPalMe'), + icon: Expensicons.PayPal, + onSelected: () => props.onItemSelected(CONST.PAYMENT_METHODS.PAYPAL), + }, + ] : []), + ]} + /> ); AddPaymentMethodMenu.propTypes = propTypes; diff --git a/src/stories/PopoverMenu.stories.js b/src/stories/PopoverMenu.stories.js new file mode 100644 index 000000000000..299ce3fb2d70 --- /dev/null +++ b/src/stories/PopoverMenu.stories.js @@ -0,0 +1,79 @@ +import React from 'react'; +import {SafeAreaProvider} from 'react-native-safe-area-context'; +import PopoverMenu from '../components/PopoverMenu'; +import * as Expensicons from '../components/Icon/Expensicons'; +import MenuItem from '../components/MenuItem'; +import colors from '../styles/colors'; + +/** + * We use the Component Story Format for writing stories. Follow the docs here: + * + * https://storybook.js.org/docs/react/writing-stories/introduction#component-story-format + */ +const story = { + title: 'Components/PopoverMenu', + component: PopoverMenu, +}; + +// eslint-disable-next-line react/jsx-props-no-spreading +const Template = (args) => { + const [isVisible, setIsVisible] = React.useState(false); + const toggleVisibility = () => setIsVisible(!isVisible); + return ( + <> + + + + + + ); +}; + +// Arguments can be passed to the component by binding +// See: https://storybook.js.org/docs/react/writing-stories/introduction#using-args +const Default = Template.bind({}); +Default.args = { + popoverMenu: { + anchorPosition: { + top: 80, + left: 20, + }, + }, + menuItem: { + title: 'Add payment Methods', + icon: Expensicons.Plus, + }, +}; + +export default story; +export { + Default, +};