@@ -8,6 +8,7 @@ import MenuPlaceholder from './MenuPlaceholder';
88import { measure , isClassComponent } from './helpers' ;
99import { debug } from './logger.js' ;
1010import MenuOutside from './renderers/MenuOutside' ;
11+ import { menuConfig } from './config.js' ;
1112
1213const defaultOptionsContainerRenderer = options => options ;
1314const layoutsEqual = ( a , b ) => (
@@ -62,7 +63,7 @@ export default class MenuProvider extends Component {
6263 }
6364
6465 componentDidMount ( ) {
65- const { customStyles, skipInstanceCheck } = this . props ;
66+ const { customStyles = { } , skipInstanceCheck } = this . props ;
6667 if ( customStyles . menuContextWrapper ) {
6768 console . warn ( 'menuContextWrapper custom style is deprecated and it might be removed in future releases, use menuProviderWrapper instead.' ) ;
6869 }
@@ -171,10 +172,10 @@ export default class MenuProvider extends Component {
171172 if ( prev . name !== next . name ) {
172173 if ( prev !== NULL && ! prev . instance . isOpen ( ) ) {
173174 beforeSetState = ( ) => this . _beforeClose ( prev )
174- . then ( ( ) => prev . instance . props . onClose ( ) ) ;
175+ . then ( ( ) => prev . instance . props . onClose && prev . instance . props . onClose ( ) ) ;
175176 }
176177 if ( next !== NULL ) {
177- next . instance . props . onOpen ( ) ;
178+ next . instance . props . onOpen && next . instance . props . onOpen ( ) ;
178179 afterSetState = ( ) => this . _initOpen ( next ) ;
179180 }
180181 }
@@ -208,7 +209,7 @@ export default class MenuProvider extends Component {
208209 }
209210
210211 render ( ) {
211- const { style, customStyles } = this . props ;
212+ const { style, customStyles = { } } = this . props ;
212213 debug ( 'render menu' , this . isMenuOpen ( ) , this . _ownLayout ) ;
213214 return (
214215 < PopupMenuContext . Provider value = { this . menuCtx } >
@@ -262,7 +263,7 @@ export default class MenuProvider extends Component {
262263 debug ( 'on backdrop press' ) ;
263264 const menu = this . _getOpenedMenu ( ) ;
264265 if ( menu ) {
265- menu . instance . props . onBackdropPress ( ) ;
266+ menu . instance . props . onBackdropPress && menu . instance . props . onBackdropPress ( ) ;
266267 }
267268 this . closeMenu ( ) ;
268269 }
@@ -293,10 +294,10 @@ export default class MenuProvider extends Component {
293294 _makeOptions ( ) {
294295 const { instance, triggerLayout, optionsLayout } = this . _getOpenedMenu ( ) ;
295296 const options = instance . _getOptions ( ) ;
296- const { renderer, rendererProps } = instance . props ;
297+ const { renderer = menuConfig . defRenderer , rendererProps = menuConfig . defRendererProps } = instance . props ;
297298 const windowLayout = this . _ownLayout ;
298299 const safeAreaLayout = this . _safeAreaLayout ;
299- const { optionsContainerStyle, renderOptionsContainer, customStyles } = options . props ;
300+ const { optionsContainerStyle, renderOptionsContainer, customStyles = { } } = options . props ;
300301 const optionsRenderer = renderOptionsContainer || defaultOptionsContainerRenderer ;
301302 const isOutside = ! triggerLayout || ! optionsLayout ;
302303 const onLayout = e => this . _onOptionsLayout ( e , instance . getName ( ) , isOutside ) ;
@@ -349,12 +350,6 @@ MenuProvider.propTypes = {
349350 skipInstanceCheck : PropTypes . bool ,
350351}
351352
352- MenuProvider . defaultProps = {
353- customStyles : { } ,
354- backHandler : false ,
355- skipInstanceCheck : false ,
356- } ;
357-
358353const styles = StyleSheet . create ( {
359354 flex1 : {
360355 flex : 1 ,
0 commit comments