diff --git a/packages/material-ui/src/Popover/Popover.js b/packages/material-ui/src/Popover/Popover.js index 24c186276d5e70..751ddc431261a8 100644 --- a/packages/material-ui/src/Popover/Popover.js +++ b/packages/material-ui/src/Popover/Popover.js @@ -8,6 +8,7 @@ import debounce from 'debounce'; // < 1kb payload overhead when lodash/debounce import EventListener from 'react-event-listener'; import ownerDocument from '../utils/ownerDocument'; import ownerWindow from '../utils/ownerWindow'; +import { createChainedFunction } from '../utils/helpers'; import withStyles from '../styles/withStyles'; import Modal from '../Modal'; import Grow from '../Grow'; @@ -300,7 +301,7 @@ class Popover extends React.Component { transformOrigin, TransitionComponent, transitionDuration: transitionDurationProp, - TransitionProps, + TransitionProps = {}, ...other } = this.props; @@ -329,13 +330,13 @@ class Popover extends React.Component { in={open} onEnter={onEnter} onEntered={onEntered} - onEntering={this.handleEntering} onExit={onExit} onExited={onExited} onExiting={onExiting} role={role} timeout={transitionDuration} {...TransitionProps} + onEntering={createChainedFunction(this.handleEntering, TransitionProps.onEntering)} > ', () => { assert.strictEqual(wrapper.find(TransitionComponent).props().timeout, undefined); }); }); + + describe('prop: TransitionProp', () => { + it('should fire Popover transition event callbacks', () => { + const handler1 = spy(); + const handler2 = spy(); + const wrapper = shallow( + +
+ , + ); + + wrapper.find(Grow).simulate('entering', { style: {} }); + assert.strictEqual(handler1.callCount, 1); + assert.strictEqual(handler2.callCount, 1); + }); + }); });