Skip to content

Commit

Permalink
Merge pull request #2516 from Expensify/Rory-FixCreateMenu
Browse files Browse the repository at this point in the history
Fix CreateMenu and mobile safari attachment picker
  • Loading branch information
AndrewGable authored Apr 22, 2021
2 parents 07370d2 + deb367f commit 889b4f5
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 125 deletions.
117 changes: 0 additions & 117 deletions src/components/CreateMenu.js

This file was deleted.

10 changes: 8 additions & 2 deletions src/components/CreateMenu/BaseCreateMenu.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ import Popover from '../Popover';
import styles from '../../styles/styles';
import withWindowDimensions, {windowDimensionsPropTypes} from '../withWindowDimensions';
import MenuItem from '../MenuItem';
import createMenuPropTypes from './CreateMenuPropTypes';
import {
propTypes as createMenuPropTypes,
defaultProps as defaultCreateMenuPropTypes,
} from './CreateMenuPropTypes';

const propTypes = {
// Callback fired when the menu is completely closed
Expand All @@ -16,17 +19,20 @@ const propTypes = {
};

const defaultProps = {
...defaultCreateMenuPropTypes,
onMenuHide: () => {},
};

class BaseCreateMenu extends PureComponent {
render() {
return (
<Popover
anchorPosition={this.props.anchorPosition}
onClose={this.props.onClose}
isVisible={this.props.isVisible}
onModalHide={this.props.onMenuHide}
anchorPosition={styles.createMenuPosition}
animationIn={this.props.animationIn}
animationOut={this.props.animationOut}
>
<View style={this.props.isSmallScreenWidth ? {} : styles.createMenuContainer}>
{this.props.menuItems.map(item => (
Expand Down
29 changes: 27 additions & 2 deletions src/components/CreateMenu/CreateMenuPropTypes.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import PropTypes from 'prop-types';

const createMenuPropTypes = {
const propTypes = {
// Callback method fired when the user requests to close the modal
onClose: PropTypes.func.isRequired,

Expand All @@ -23,6 +23,31 @@ const createMenuPropTypes = {
onSelected: PropTypes.func.isRequired,
}),
).isRequired,

// The anchor position of the CreateMenu popover
anchorPosition: PropTypes.shape({
top: PropTypes.number,
right: PropTypes.number,
bottom: PropTypes.number,
left: PropTypes.number,
}).isRequired,

// A react-native-animatable animation definition for the modal display animation.
animationIn: PropTypes.oneOfType([
PropTypes.string,
PropTypes.object,
]),

// A react-native-animatable animation definition for the modal hide animation.
animationOut: PropTypes.oneOfType([
PropTypes.string,
PropTypes.object,
]),
};

const defaultProps = {
animationIn: 'fadeIn',
animationOut: 'fadeOut',
};

export default createMenuPropTypes;
export {propTypes, defaultProps};
6 changes: 4 additions & 2 deletions src/components/CreateMenu/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import BaseCreateMenu from './BaseCreateMenu';
import createMenuPropTypes from './CreateMenuPropTypes';
import {propTypes, defaultProps} from './CreateMenuPropTypes';

/**
* The web implementation of the menu needs to trigger actions before the popup closes
Expand All @@ -23,6 +23,8 @@ const CreateMenu = (props) => {
return <BaseCreateMenu {...props} onItemSelected={selectItem} />;
};

CreateMenu.propTypes = createMenuPropTypes;
CreateMenu.propTypes = propTypes;
CreateMenu.defaultProps = defaultProps;
CreateMenu.displayName = 'CreateMenu';

export default CreateMenu;
5 changes: 3 additions & 2 deletions src/components/CreateMenu/index.native.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, {Component} from 'react';
import BaseCreateMenu from './BaseCreateMenu';
import createMenuPropTypes from './CreateMenuPropTypes';
import {propTypes, defaultProps} from './CreateMenuPropTypes';

/**
* The mobile native implementation of the CreateMenu needs to trigger actions after the popup closes
Expand Down Expand Up @@ -35,6 +35,7 @@ class CreateMenu extends Component {
}
}

CreateMenu.propTypes = createMenuPropTypes;
CreateMenu.propTypes = propTypes;
CreateMenu.defaultProps = defaultProps;

export default CreateMenu;

0 comments on commit 889b4f5

Please sign in to comment.