Skip to content

Commit

Permalink
feat: add events when opening/closing a modal
Browse files Browse the repository at this point in the history
  • Loading branch information
next-joserepresa authored and josex2r committed Oct 5, 2020
1 parent 53d53e6 commit ca50ad3
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 558 deletions.
7 changes: 6 additions & 1 deletion addon/services/modal.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ import Service from '@ember/service';
import { A } from '@ember/array';
import { getOwner } from '@ember/application';
import { isEmpty } from '@ember/utils';
import Evented from '@ember/object/evented';

export default class ModalService extends Service {
export default class ModalService extends Service.extend(Evented) {
content = A();

open(name, options = {}) {
Expand All @@ -18,6 +19,8 @@ export default class ModalService extends Service {
this.content.addObject(modal);
}

this.trigger('open', modal);

return modal.get('promise');
}

Expand All @@ -37,6 +40,8 @@ export default class ModalService extends Service {
deferred.reject(null, `Modal: closing '${modal.fullname}'`);
}
});

this.trigger('close', key);
}

isOpened(name) {
Expand Down
6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
},
"dependencies": {
"@glimmer/tracking": "^1.0.1",
"ember-cli-babel": "^7.22.1",
"ember-cli-babel": "^7.19.0",
"ember-cli-htmlbars": "^5.3.1",
"ember-task-scheduler": "^2.1.0",
"ember-transition-end": "^2.0.0"
Expand Down Expand Up @@ -109,6 +109,10 @@
"semantic-release": "^17.1.1",
"sinon": "^9.0.3"
},
"resolutions": {
"ember-cli-babel": "~7.19.0",
"babel-plugin-ember-modules-api-polyfill": "2.13.0"
},
"engines": {
"node": "10.* || >= 12"
},
Expand Down
23 changes: 23 additions & 0 deletions tests/unit/services/modal-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,4 +99,27 @@ module('Unit | Service | modal', (hooks) => {
assert.equal(service.get('content').findBy('name', 'foo').get('promise._state'), PENDING);
assert.equal(service.get('content').findBy('name', 'bar').get('promise._state'), REJECTED);
});

test('it triggers events when a modal is open/closed', (assert) => {
const done = assert.async();

service.one('open', (modal) => {
assert.ok(1, 'modal is open');
assert.equal(modal.name, 'foo', 'modal exists as first argument');
});

run(() => {
service.open('foo');
});

service.one('close', (key) => {
assert.ok(1, 'modal is closed');
assert.equal(key, 'foo', 'key exists as first argument');
done();
});

run(() => {
service.close('foo');
});
});
});

0 comments on commit ca50ad3

Please sign in to comment.