mirror of https://github.com/rancher/ui.git
57 lines
1.3 KiB
JavaScript
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;
|
|
}),
|
|
});
|