diff --git a/packages/dx-react-scheduler-material-ui/src/templates/edit-recurrence-menu/layout.jsx b/packages/dx-react-scheduler-material-ui/src/templates/edit-recurrence-menu/layout.jsx index 629709950d..5e9f25c780 100644 --- a/packages/dx-react-scheduler-material-ui/src/templates/edit-recurrence-menu/layout.jsx +++ b/packages/dx-react-scheduler-material-ui/src/templates/edit-recurrence-menu/layout.jsx @@ -24,7 +24,6 @@ export const Layout = React.memo(({ ); const onCommitButtonClick = () => { - handleClose(); commit(currentValue); }; diff --git a/packages/dx-react-scheduler/src/plugins/edit-recurrence-menu.test.tsx b/packages/dx-react-scheduler/src/plugins/edit-recurrence-menu.test.tsx index de536dff07..a2d26d90ae 100644 --- a/packages/dx-react-scheduler/src/plugins/edit-recurrence-menu.test.tsx +++ b/packages/dx-react-scheduler/src/plugins/edit-recurrence-menu.test.tsx @@ -16,6 +16,8 @@ describe('EditRecurrenceMenu', () => { action: { commitChangedAppointment: jest.fn(), commitDeletedAppointment: jest.fn(), + cancelChangedAppointment: jest.fn(), + stopEditAppointment: jest.fn(), }, }; const defaultProps = { @@ -159,4 +161,21 @@ describe('EditRecurrenceMenu', () => { expect(defaultDeps.action.commitDeletedAppointment) .toBeCalled(); }); + it('should cancel appointment editing', () => { + const tree = mount(( + + {pluginDepsToComponents(defaultDeps, { getter: {} })} + + + )); + + tree.find(defaultProps.layoutComponent).prop('handleClose')(); + + expect(defaultDeps.action.cancelChangedAppointment) + .toBeCalled(); + expect(defaultDeps.action.stopEditAppointment) + .toBeCalled(); + }); }); diff --git a/packages/dx-react-scheduler/src/plugins/edit-recurrence-menu.tsx b/packages/dx-react-scheduler/src/plugins/edit-recurrence-menu.tsx index 72f1de85cf..98bb000f0c 100644 --- a/packages/dx-react-scheduler/src/plugins/edit-recurrence-menu.tsx +++ b/packages/dx-react-scheduler/src/plugins/edit-recurrence-menu.tsx @@ -71,17 +71,25 @@ class EditRecurrenceMenuBase extends React.PureComponent< } } - commit = memoize((editAction, deleteAction, payload) => { + commit = memoize((editAction, deleteAction, payload) => (type) => { if (payload) { - return type => deleteAction({ deletedAppointmentData: payload, type }); + deleteAction({ deletedAppointmentData: payload, type }); + } else { + editAction(type); } - return type => editAction(type); + this.closeMenu(); }); closeMenu = () => { this.setState({ isOpen: false, deletedAppointmentData: null }); } + cancelEditing = memoize((cancelAction, stopEditAction) => () => { + stopEditAction(); + cancelAction(); + this.closeMenu(); + }); + availableOperations = memoize((getMessage, menuAvailableOperations) => menuAvailableOperations.map(({ value }) => ({ value, @@ -120,10 +128,16 @@ class EditRecurrenceMenuBase extends React.PureComponent<