diff --git a/src/components/OptionsSelector/BaseOptionsSelector.js b/src/components/OptionsSelector/BaseOptionsSelector.js index 78afe0f379b2..f7f94f990e38 100755 --- a/src/components/OptionsSelector/BaseOptionsSelector.js +++ b/src/components/OptionsSelector/BaseOptionsSelector.js @@ -271,6 +271,7 @@ class BaseOptionsSelector extends Component { isDisabled={this.props.isDisabled} shouldHaveOptionSeparator={this.props.shouldHaveOptionSeparator} onLayout={this.props.onLayout} + contentContainerStyles={shouldShowFooter ? [] : [this.props.safeAreaPaddingBottomStyle]} /> ) : ; return ( diff --git a/src/pages/NewChatPage.js b/src/pages/NewChatPage.js index 1c0294881360..1ede56c65ca7 100755 --- a/src/pages/NewChatPage.js +++ b/src/pages/NewChatPage.js @@ -260,6 +260,7 @@ class NewChatPage extends Component { confirmButtonText={this.props.translate('newChatPage.createGroup')} onConfirmSelection={this.createGroup} placeholderText={this.props.translate('optionsSelector.nameEmailOrPhoneNumber')} + safeAreaPaddingBottomStyle={safeAreaPaddingBottomStyle} /> ) : ( diff --git a/src/pages/ReportParticipantsPage.js b/src/pages/ReportParticipantsPage.js index e91667d4e908..e46e4e025eb3 100755 --- a/src/pages/ReportParticipantsPage.js +++ b/src/pages/ReportParticipantsPage.js @@ -72,38 +72,40 @@ const ReportParticipantsPage = (props) => { const participants = getAllParticipants(props.report, props.personalDetails); return ( - - - - {Boolean(participants.length) - && ( - { - Navigation.navigate(ROUTES.getReportParticipantRoute( - props.route.params.reportID, option.login, - )); - }} - hideSectionHeaders - showTitleTooltip - disableFocusOptions - boldStyle - optionHoveredStyle={styles.hoveredComponentBG} + + {({safeAreaPaddingBottomStyle}) => ( + <> + - )} - + + {Boolean(participants.length) && ( + { + Navigation.navigate(ROUTES.getReportParticipantRoute( + props.route.params.reportID, option.login, + )); + }} + hideSectionHeaders + showTitleTooltip + disableFocusOptions + boldStyle + optionHoveredStyle={styles.hoveredComponentBG} + contentContainerStyles={[safeAreaPaddingBottomStyle]} + /> + )} + + + )} ); }; diff --git a/src/pages/SearchPage.js b/src/pages/SearchPage.js index 3cefc6a98c3d..2e29a9395750 100755 --- a/src/pages/SearchPage.js +++ b/src/pages/SearchPage.js @@ -170,7 +170,7 @@ class SearchPage extends Component { ); return ( - {({didScreenTransitionEnd}) => ( + {({didScreenTransitionEnd, safeAreaPaddingBottomStyle}) => ( <> diff --git a/src/pages/iou/IOUCurrencySelection.js b/src/pages/iou/IOUCurrencySelection.js index e78cbd48e16f..1d4524be7d66 100644 --- a/src/pages/iou/IOUCurrencySelection.js +++ b/src/pages/iou/IOUCurrencySelection.js @@ -113,18 +113,23 @@ class IOUCurrencySelection extends Component { const headerMessage = this.state.searchValue.trim() && !this.state.currencyData.length ? this.props.translate('common.noResultsFound') : ''; return ( - - + {({safeAreaPaddingBottomStyle}) => ( + <> + + + + )} ); } diff --git a/src/pages/iou/IOUDetailsModal.js b/src/pages/iou/IOUDetailsModal.js index 4da6d6792f47..e3380122db7a 100644 --- a/src/pages/iou/IOUDetailsModal.js +++ b/src/pages/iou/IOUDetailsModal.js @@ -154,49 +154,52 @@ class IOUDetailsModal extends Component { const pendingAction = this.findPendingAction(); const iouReportStateNum = lodashGet(this.props.iouReport, 'stateNum'); const hasOutstandingIOU = lodashGet(this.props.iouReport, 'hasOutstandingIOU'); + const hasFixedFooter = hasOutstandingIOU && this.props.iouReport.managerEmail === sessionEmail; return ( - - - - {this.props.iou.loading ? : ( - - - - - - {(hasOutstandingIOU && this.props.iouReport.managerEmail === sessionEmail && ( - - this.payMoneyRequest(paymentMethodType)} - shouldShowPaypal={Boolean(lodashGet(this.props, 'iouReport.submitterPayPalMeAddress'))} - currency={lodashGet(this.props, 'iouReport.currency')} - enablePaymentsRoute={ROUTES.IOU_DETAILS_ENABLE_PAYMENTS} - addBankAccountRoute={ROUTES.IOU_DETAILS_ADD_BANK_ACCOUNT} - addDebitCardRoute={ROUTES.IOU_DETAILS_ADD_DEBIT_CARD} + + {({safeAreaPaddingBottomStyle}) => ( + + + {this.props.iou.loading ? : ( + + + - - ))} - - )} - + + + {(hasOutstandingIOU && this.props.iouReport.managerEmail === sessionEmail && ( + + this.payMoneyRequest(paymentMethodType)} + shouldShowPaypal={Boolean(lodashGet(this.props, 'iouReport.submitterPayPalMeAddress'))} + currency={lodashGet(this.props, 'iouReport.currency')} + enablePaymentsRoute={ROUTES.IOU_DETAILS_ENABLE_PAYMENTS} + addBankAccountRoute={ROUTES.IOU_DETAILS_ADD_BANK_ACCOUNT} + addDebitCardRoute={ROUTES.IOU_DETAILS_ADD_DEBIT_CARD} + chatReportID={this.props.route.params.chatReportID} + /> + + ))} + + )} + + )} ); } diff --git a/src/pages/iou/IOUModal.js b/src/pages/iou/IOUModal.js index c733ce6f8989..6acc2fb35330 100755 --- a/src/pages/iou/IOUModal.js +++ b/src/pages/iou/IOUModal.js @@ -453,6 +453,7 @@ class IOUModal extends Component { hasMultipleParticipants={this.props.hasMultipleParticipants} onAddParticipants={this.addParticipants} onStepComplete={this.navigateToNextStep} + safeAreaPaddingBottomStyle={safeAreaPaddingBottomStyle} /> )} diff --git a/src/pages/iou/steps/IOUParticipantsPage/IOUParticipantsPage.js b/src/pages/iou/steps/IOUParticipantsPage/IOUParticipantsPage.js index ac719cda4c31..38d5c7a9d46d 100644 --- a/src/pages/iou/steps/IOUParticipantsPage/IOUParticipantsPage.js +++ b/src/pages/iou/steps/IOUParticipantsPage/IOUParticipantsPage.js @@ -41,11 +41,18 @@ const propTypes = { /** Whether or not the IOU step is loading (retrieving participants) */ loading: PropTypes.bool, }), + + /** padding bottom style of safe area */ + safeAreaPaddingBottomStyle: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.object), + PropTypes.object, + ]), }; const defaultProps = { iou: {}, participants: [], + safeAreaPaddingBottomStyle: {}, }; const IOUParticipantsPage = (props) => { @@ -63,12 +70,14 @@ const IOUParticipantsPage = (props) => { onStepComplete={props.onStepComplete} participants={props.participants} onAddParticipants={props.onAddParticipants} + safeAreaPaddingBottomStyle={props.safeAreaPaddingBottomStyle} /> ) : ( ) ); diff --git a/src/pages/iou/steps/IOUParticipantsPage/IOUParticipantsRequest.js b/src/pages/iou/steps/IOUParticipantsPage/IOUParticipantsRequest.js index 0b29c1df14dd..dae9161da5fb 100755 --- a/src/pages/iou/steps/IOUParticipantsPage/IOUParticipantsRequest.js +++ b/src/pages/iou/steps/IOUParticipantsPage/IOUParticipantsRequest.js @@ -141,6 +141,7 @@ class IOUParticipantsRequest extends Component { headerMessage={headerMessage} placeholderText={this.props.translate('optionsSelector.nameEmailOrPhoneNumber')} boldStyle + safeAreaPaddingBottomStyle={this.props.safeAreaPaddingBottomStyle} /> ); } diff --git a/src/pages/iou/steps/IOUParticipantsPage/IOUParticipantsSplit.js b/src/pages/iou/steps/IOUParticipantsPage/IOUParticipantsSplit.js index 7da28e971cdc..5e71168fd693 100755 --- a/src/pages/iou/steps/IOUParticipantsPage/IOUParticipantsSplit.js +++ b/src/pages/iou/steps/IOUParticipantsPage/IOUParticipantsSplit.js @@ -13,7 +13,6 @@ import compose from '../../../../libs/compose'; import Text from '../../../../components/Text'; import personalDetailsPropType from '../../../personalDetailsPropType'; import reportPropTypes from '../../../reportPropTypes'; -import SafeAreaConsumer from '../../../../components/SafeAreaConsumer'; const propTypes = { /** Beta features list */ @@ -210,29 +209,26 @@ class IOUParticipantsSplit extends Component { maxParticipantsReached, ); return ( - - {({safeAreaPaddingBottomStyle}) => ( - 0 ? safeAreaPaddingBottomStyle : {})]}> - - {this.props.translate('common.to')} - - - - )} - + 0 ? this.props.safeAreaPaddingBottomStyle : {})]}> + + {this.props.translate('common.to')} + + + ); } } diff --git a/src/pages/settings/AboutPage/AboutPage.js b/src/pages/settings/AboutPage/AboutPage.js index a9a809c6d0a2..7c7840fdbbdb 100644 --- a/src/pages/settings/AboutPage/AboutPage.js +++ b/src/pages/settings/AboutPage/AboutPage.js @@ -62,80 +62,85 @@ const AboutPage = (props) => { return ( - Navigation.navigate(ROUTES.SETTINGS)} - onCloseButtonPress={() => Navigation.dismissModal(true)} - /> - - - - - + {({safeAreaPaddingBottomStyle}) => ( + <> + Navigation.navigate(ROUTES.SETTINGS)} + onCloseButtonPress={() => Navigation.dismissModal(true)} + /> + + + + + + + v + {pkg.version} + + + {props.translate('initialSettingsPage.aboutPage.description')} + + + + {_.map(menuItems, item => ( + item.action()} + shouldShowRightIcon + /> + ))} + + - v - {pkg.version} - - - {props.translate('initialSettingsPage.aboutPage.description')} + {props.translate( + 'initialSettingsPage.readTheTermsAndPrivacy.phrase1', + )} + {' '} + + {props.translate( + 'initialSettingsPage.readTheTermsAndPrivacy.phrase2', + )} + + {' '} + {props.translate( + 'initialSettingsPage.readTheTermsAndPrivacy.phrase3', + )} + {' '} + + {props.translate( + 'initialSettingsPage.readTheTermsAndPrivacy.phrase4', + )} + + . - - {_.map(menuItems, item => ( - item.action()} - shouldShowRightIcon - /> - ))} - - - - {props.translate( - 'initialSettingsPage.readTheTermsAndPrivacy.phrase1', - )} - {' '} - - {props.translate( - 'initialSettingsPage.readTheTermsAndPrivacy.phrase2', - )} - - {' '} - {props.translate( - 'initialSettingsPage.readTheTermsAndPrivacy.phrase3', - )} - {' '} - - {props.translate( - 'initialSettingsPage.readTheTermsAndPrivacy.phrase4', - )} - - . - - - + + + )} ); }; diff --git a/src/pages/settings/InitialSettingsPage.js b/src/pages/settings/InitialSettingsPage.js index 0c55f189bf1a..f10bca4c6037 100755 --- a/src/pages/settings/InitialSettingsPage.js +++ b/src/pages/settings/InitialSettingsPage.js @@ -244,57 +244,61 @@ class InitialSettingsPage extends React.Component { return ( - Navigation.dismissModal(true)} - /> - - - - - - - - - - - - - - {this.props.currentUserPersonalDetails.displayName - ? this.props.currentUserPersonalDetails.displayName - : Str.removeSMSDomain(this.props.session.email)} - - - {this.props.currentUserPersonalDetails.displayName && ( - - {Str.removeSMSDomain(this.props.session.email)} - - )} - - {_.map(this.getDefaultMenuItems(), (item, index) => this.getMenuItem(item, index))} - - this.signOut(true)} - onCancel={() => this.toggleSignoutConfirmModal(false)} + {({safeAreaPaddingBottomStyle}) => ( + <> + Navigation.dismissModal(true)} /> - - + + + + + + + + + + + + + + {this.props.currentUserPersonalDetails.displayName + ? this.props.currentUserPersonalDetails.displayName + : Str.removeSMSDomain(this.props.session.email)} + + + {this.props.currentUserPersonalDetails.displayName && ( + + {Str.removeSMSDomain(this.props.session.email)} + + )} + + {_.map(this.getDefaultMenuItems(), (item, index) => this.getMenuItem(item, index))} + + this.signOut(true)} + onCancel={() => this.toggleSignoutConfirmModal(false)} + /> + + + + )} ); } diff --git a/src/pages/settings/Profile/ProfilePage.js b/src/pages/settings/Profile/ProfilePage.js index 7057bf514190..e321aef312dd 100755 --- a/src/pages/settings/Profile/ProfilePage.js +++ b/src/pages/settings/Profile/ProfilePage.js @@ -133,7 +133,7 @@ class ProfilePage extends Component { }, ]; return ( - + { return ( - Navigation.navigate(ROUTES.SETTINGS_PROFILE)} - onCloseButtonPress={() => Navigation.dismissModal(true)} - /> - - {props.translate('pronounsPage.isShownOnProfile')} - - updatePronouns(option.value)} - hideSectionHeaders - optionHoveredStyle={styles.hoveredComponentBG} - shouldHaveOptionSeparator - contentContainerStyles={[styles.ph5]} - /> + {({safeAreaPaddingBottomStyle}) => ( + <> + Navigation.navigate(ROUTES.SETTINGS_PROFILE)} + onCloseButtonPress={() => Navigation.dismissModal(true)} + /> + + {props.translate('pronounsPage.isShownOnProfile')} + + updatePronouns(option.value)} + hideSectionHeaders + optionHoveredStyle={styles.hoveredComponentBG} + shouldHaveOptionSeparator + contentContainerStyles={[styles.ph5, safeAreaPaddingBottomStyle]} + /> + + )} ); }; diff --git a/src/pages/settings/Profile/TimezoneSelectPage.js b/src/pages/settings/Profile/TimezoneSelectPage.js index 7a89ac8ce73d..fd91f9a2e91f 100644 --- a/src/pages/settings/Profile/TimezoneSelectPage.js +++ b/src/pages/settings/Profile/TimezoneSelectPage.js @@ -76,21 +76,26 @@ class TimezoneSelectPage extends Component { render() { return ( - Navigation.navigate(ROUTES.SETTINGS_TIMEZONE)} - onCloseButtonPress={() => Navigation.dismissModal(true)} - /> - + {({safeAreaPaddingBottomStyle}) => ( + <> + Navigation.navigate(ROUTES.SETTINGS_TIMEZONE)} + onCloseButtonPress={() => Navigation.dismissModal(true)} + /> + + + )} ); } diff --git a/src/pages/workspace/WorkspaceInitialPage.js b/src/pages/workspace/WorkspaceInitialPage.js index fd57e35f3257..0d25f4bffcb3 100644 --- a/src/pages/workspace/WorkspaceInitialPage.js +++ b/src/pages/workspace/WorkspaceInitialPage.js @@ -148,119 +148,122 @@ class WorkspaceInitialPage extends React.Component { return ( - Navigation.navigate(ROUTES.SETTINGS_WORKSPACES)} - > - ( + Navigation.navigate(ROUTES.SETTINGS_WORKSPACES)} - onCloseButtonPress={() => Navigation.dismissModal()} - shouldShowThreeDotsButton - shouldShowGetAssistanceButton - guidesCallTaskID={CONST.GUIDES_CALL_TASK_IDS.WORKSPACE_INITIAL} - threeDotsMenuItems={[ - { - icon: Expensicons.Trashcan, - text: this.props.translate('workspace.common.delete'), - onSelected: () => this.setState({isDeleteModalOpen: true}), - }, - ]} - threeDotsAnchorPosition={styles.threeDotsPopoverOffset} - /> - - Navigation.navigate(ROUTES.SETTINGS_WORKSPACES)} + onCloseButtonPress={() => Navigation.dismissModal()} + shouldShowThreeDotsButton + shouldShowGetAssistanceButton + guidesCallTaskID={CONST.GUIDES_CALL_TASK_IDS.WORKSPACE_INITIAL} + threeDotsMenuItems={[ + { + icon: Expensicons.Trashcan, + text: this.props.translate('workspace.common.delete'), + onSelected: () => this.setState({isDeleteModalOpen: true}), + }, + ]} + threeDotsAnchorPosition={styles.threeDotsPopoverOffset} + /> + - - - - - {this.props.policy.avatar - ? ( - - ) - : ( - - )} - - {!_.isEmpty(this.props.policy.name) && ( + + + + - - - {this.props.policy.name} - - + {this.props.policy.avatar + ? ( + + ) + : ( + + )} - )} + {!_.isEmpty(this.props.policy.name) && ( + + + + {this.props.policy.name} + + + + )} + + {_.map(menuItems, item => ( + item.action()} + shouldShowRightIcon + brickRoadIndicator={item.brickRoadIndicator} + /> + ))} - {_.map(menuItems, item => ( - item.action()} - shouldShowRightIcon - brickRoadIndicator={item.brickRoadIndicator} - /> - ))} - - - - this.toggleDeleteModal(false)} - prompt={this.props.translate('workspace.common.deleteConfirmation')} - confirmText={this.props.translate('common.delete')} - cancelText={this.props.translate('common.cancel')} - danger - /> - + + + this.toggleDeleteModal(false)} + prompt={this.props.translate('workspace.common.deleteConfirmation')} + confirmText={this.props.translate('common.delete')} + cancelText={this.props.translate('common.cancel')} + danger + /> + + )} ); } diff --git a/src/pages/workspace/WorkspaceMembersPage.js b/src/pages/workspace/WorkspaceMembersPage.js index 71aaf2aa4195..6b4c50edf7fd 100644 --- a/src/pages/workspace/WorkspaceMembersPage.js +++ b/src/pages/workspace/WorkspaceMembersPage.js @@ -307,70 +307,73 @@ class WorkspaceMembersPage extends React.Component { includeSafeAreaPaddingBottom={false} style={[styles.defaultModalContainer]} > - Navigation.navigate(ROUTES.SETTINGS_WORKSPACES)} - > - Navigation.dismissModal()} - onBackButtonPress={() => Navigation.navigate(ROUTES.getWorkspaceInitialRoute(policyID))} - shouldShowGetAssistanceButton - guidesCallTaskID={CONST.GUIDES_CALL_TASK_IDS.WORKSPACE_MEMBERS} - shouldShowBackButton - /> - this.removeUsers()} - onCancel={this.hideConfirmModal} - prompt={this.props.translate('workspace.people.removeMembersPrompt')} - confirmText={this.props.translate('common.remove')} - cancelText={this.props.translate('common.cancel')} - /> - - -