ui/lib/shared/addon/resource-actions/service.js

57 lines
1.3 KiB
JavaScript

import { get } from '@ember/object';
import Service, { inject as service } from '@ember/service';
import { computed } from '@ember/object';
export default Service.extend({
model: null,
open: false,
tooltipActions: null,
actionToggle: null,
actionMenu: null,
actionContext: null,
app: service(),
setActionItems(model, context) {
this.set('model', model);
this.set('context', context);
},
triggerAction(actionName) {
this.get('model').send(actionName, this.get('context'));
},
activeActions: computed('model._availableActions.@each.{enabled,single,divider}', 'modelo', function() {
let list = (this.get('model._availableActions') || []).filter((act) => {
if ( get(act, 'single') === false || get(act, 'enabled') === false ) {
return false;
}
return true;
});
// Remove dividers at the beginning
while ( list.get('firstObject.divider') === true ) {
list.shiftObject();
}
// Remove dividers at the end
while ( list.get('lastObject.divider') === true ) {
list.popObject();
}
// Remove consecutive dividers
let last = null;
list = list.filter((act) => {
let cur = (act.divider === true);
let ok = !cur || (cur && !last);
last = cur;
return ok;
});
return list;
}),
});