diff --git a/src/components/Overlay.js b/src/components/Overlay.js index e80b919b4a..b433905bda 100644 --- a/src/components/Overlay.js +++ b/src/components/Overlay.js @@ -7,8 +7,8 @@ import { Modal } from '../ui/components'; import { getCSSVariableAsNumber, getCSSVariableAsObject } from '../utils/CSSVariables'; /** - * Renders a modal window. - */ + * Renders a modal window. + */ class Overlay extends Component { constructor(props) { super(props); @@ -68,7 +68,11 @@ Overlay.defaultProps = { children: null, }; +export { + Overlay, +}; + const mapStateToProps = state => ({ useFullScreenForms: state.deviceSettings.useFullScreenForms }); -export default connect(mapStateToProps, null)(Overlay); +export default connect(mapStateToProps, null, null, { withRef: true })(Overlay); diff --git a/src/components/__tests__/Overlay.test.js b/src/components/__tests__/Overlay.test.js new file mode 100644 index 0000000000..ba166a9c27 --- /dev/null +++ b/src/components/__tests__/Overlay.test.js @@ -0,0 +1,23 @@ +/* eslint-env jest */ +import React from 'react'; +import { createStore } from 'redux'; +import TestRenderer from 'react-test-renderer'; + +import ConnectedOverlay, { Overlay } from '../Overlay'; + +describe('Connect(Overlay)', () => { + let mockStore; + + beforeEach(() => { + mockStore = createStore(() => ({ + deviceSettings: {}, + })); + }); + + it('stores a ref to support getWrappedInstance()', () => { + const ref = React.createRef(); + TestRenderer.create(); + expect(ref.current.getWrappedInstance).toBeInstanceOf(Function); + expect(ref.current.getWrappedInstance()).toBeInstanceOf(Overlay); + }); +}); diff --git a/src/containers/NodeForm.js b/src/containers/NodeForm.js index e421bc5bc0..4d2bca36d1 100644 --- a/src/containers/NodeForm.js +++ b/src/containers/NodeForm.js @@ -34,7 +34,7 @@ class NodeForm extends Component { handleSubmit = (form) => { this.props.onSubmit({ form, addAnotherNode: this.state.addAnotherNode }); - this.overlay.current.scrollContentsToTop(); + this.overlay.current.getWrappedInstance().scrollContentsToTop(); this.props.resetValues(reduxFormName); }