diff --git a/src/pages/index.js b/src/pages/index.js index 5b91bf81a..587799d81 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -6,6 +6,7 @@ import Page from './model/Page'; export const evPfx = 'page:'; export const evPageSelect = `${evPfx}select`; +export const evPageUpdate = `${evPfx}update`; export const evPageAdd = `${evPfx}add`; export const evPageAddBefore = `${evPageAdd}:before`; export const evPageRemove = `${evPfx}remove`; @@ -22,6 +23,7 @@ export default () => { events: { select: evPageSelect, + update: evPageUpdate, add: evPageAdd, addBefore: evPageAddBefore, remove: evPageRemove, @@ -50,6 +52,9 @@ export default () => { this.select(mainPage, { silent: 1, main: 1 }); pages.on('add', (p, c, o) => em.trigger(evPageAdd, p, o)); pages.on('remove', (p, c, o) => em.trigger(evPageRemove, p, o)); + pages.on('change', (p, c) => { + em.trigger(evPageUpdate, p, p.changedAttributes(), c); + }); model.on('change:selected', this._onPageChange); return this; diff --git a/test/specs/pages/index.js b/test/specs/pages/index.js index 9bb7a26cf..3a6752d5b 100644 --- a/test/specs/pages/index.js +++ b/test/specs/pages/index.js @@ -239,4 +239,15 @@ describe('Managing pages', () => { pm.remove(page.id); expect(pm.getAll().length).toBe(1); }); + + test('Change page', () => { + const event = jest.fn(); + em.on(pm.events.update, event); + const page = pm.add({}); + const up = { name: 'Test' }; + const opts = { myopts: 1 }; + page.set(up, opts); + expect(event).toBeCalledTimes(1); + expect(event).toBeCalledWith(page, up, opts); + }); });