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<
- {(getters, { commitChangedAppointment, commitDeletedAppointment }) => {
+ {(getters, {
+ commitChangedAppointment, commitDeletedAppointment,
+ cancelChangedAppointment, stopEditAppointment,
+ }) => {
const commit = this.commit(
commitChangedAppointment, commitDeletedAppointment, deletedAppointmentData,
);
+ const cancelEditing = this.cancelEditing(
+ cancelChangedAppointment, stopEditAppointment,
+ );
return (