ember-paper
Version:
The Ember approach to Material Design.
55 lines (46 loc) • 1.69 kB
JavaScript
/* eslint-disable prettier/prettier */
/**
* @module ember-paper
*/
import Service from '@ember/service';
import { assert } from '@ember/debug';
/**
* @class PaperSidenav
* @extends Ember.Service
*/
export default Service.extend({
init() {
this._super(...arguments);
this._sidenavs = {};
},
willDestroy() {
this._super(...arguments);
delete this._sidenavs;
},
register(name, sidenav) {
if (!this._sidenavs[name]) {
this._sidenavs[name] = [];
}
this._sidenavs[name].push({ name, sidenav });
},
unregister(name, sidenav) {
assert(`You tried to unregister a sidenav named '${name}' but no such sidenav is registered`, this._sidenavs[name] && this._sidenavs[name].length);
let sidenavs = this._sidenavs[name] || [];
this._sidenavs[name] = sidenavs.filter((s) => s.sidenav !== sidenav);
},
open(name = 'default') {
assert(`You tried to open a sidenav named '${name}' but no such sidenav is registered`, this._sidenavs[name] && this._sidenavs[name].length);
let sidenavs = this._sidenavs[name] || [];
sidenavs.forEach((s) => s.sidenav.open());
},
close(name = 'default') {
assert(`You tried to close a sidenav named '${name}' but no such sidenav is registered`, this._sidenavs[name] && this._sidenavs[name].length);
let sidenavs = this._sidenavs[name] || [];
sidenavs.forEach((s) => s.sidenav.close());
},
toggle(name = 'default') {
assert(`You tried to toggle a sidenav named '${name}' but no such sidenav is registered`, this._sidenavs[name] && this._sidenavs[name].length);
let sidenavs = this._sidenavs[name] || [];
sidenavs.forEach((s) => s.sidenav.toggle());
}
});