From ec173b1a1767aa52cf85fe652044d19264def699 Mon Sep 17 00:00:00 2001 From: Andreas Drivenes Date: Wed, 24 Feb 2016 03:24:50 -0800 Subject: [PATCH] Add drawerLockMode prop to DrawerLayoutAndroid Summary:Closes #5270. Closes https://github.com/facebook/react-native/pull/5534 Differential Revision: D2970771 fb-gh-sync-id: 36a814032283df7d4c469964f803b8d20d1b0c93 shipit-source-id: 36a814032283df7d4c469964f803b8d20d1b0c93 --- .../DrawerAndroid/DrawerLayoutAndroid.android.js | 14 ++++++++++++++ .../views/drawer/ReactDrawerLayoutManager.java | 13 +++++++++++++ 2 files changed, 27 insertions(+) diff --git a/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js b/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js index 4383f9f84..8bb5e12ed 100644 --- a/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +++ b/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js @@ -28,6 +28,7 @@ var INNERVIEW_REF = 'innerView'; var DrawerLayoutValidAttributes = { drawerWidth: true, drawerPosition: true, + drawerLockMode: true }; var DRAWER_STATES = [ @@ -95,6 +96,18 @@ var DrawerLayoutAndroid = React.createClass({ * from the edge of the window. */ drawerWidth: ReactPropTypes.number, + /** + * Specifies the lock mode of the drawer. The drawer can be locked in 3 states: + * - unlocked (default), meaning that the drawer will respond (open/close) to touch gestures. + * - locked closed, meaning that the drawer will stay closed and not respond to gestures. + * - locked open, meaning that the drawer will stay opened and not respond to gestures. + * The drawer may still be opened and closed programmatically (`openDrawer`/`closeDrawer`). + */ + drawerLockMode: ReactPropTypes.oneOf([ + 'unlocked', + 'locked-closed', + 'locked-open' + ]), /** * Function called whenever there is an interaction with the navigation view. */ @@ -142,6 +155,7 @@ var DrawerLayoutAndroid = React.createClass({ ref={RK_DRAWER_REF} drawerWidth={this.props.drawerWidth} drawerPosition={this.props.drawerPosition} + drawerLockMode={this.props.drawerLockMode} style={styles.base} onDrawerSlide={this._onDrawerSlide} onDrawerOpen={this._onDrawerOpen} diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.java index d1ec7f831..1926c110a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.java @@ -76,6 +76,19 @@ public class ReactDrawerLayoutManager extends ViewGroupManager