lemo-crm/web/app/components/status-toggle-button.js
2022-06-24 21:56:55 +08:00

52 lines
1.7 KiB
JavaScript

import { computed, set } from '@ember/object';
import { alias } from '@ember/object/computed';
import { merge } from '@ember/polyfills';
import BaseComponent from './basic-component';
export default BaseComponent.extend({
tagName: 'a',
attributeBindings: ['title', 'data-original-title', 'role', 'data-rel'],
role: 'button',
'data-rel': 'tooltip',
enabledText: 'Enable',
disabledText: 'Disable',
enabledOp: 'enable',
disabledOp: 'disable',
enabled: alias('model.enabled'),
title: computed('enabled', function() {
let me = this;
return this.get('enabled') ? me.get('disabledText') : me.get('enabledText');
}),
'data-original-title': alias('title'),
op: computed('enabled', function() {
let me = this;
return this.get('enabled') ?
me.get('disabledOp') || me.get('disabledText')
: me.get('enabledOp') || me.get('enabledText');
}),
iconSizeClass: 'bigger-120',
didReceiveAttrs() {
let me = this;
if (me.get('iconOnly')) {
me.set('iconSizeClass', 'bigger-130');
me.set('classNameBindings', ['enabled:orange:light-green']);
}
else {
me.set('classNameBindings',
['enabled:btn-warning:btn-success',
'iconOnly::btn',
'iconOnly::btn-xs']);
}
},
click() {
let me = this;
me.dialog.confirm('Are you sure to ' + me.get('title') + ' row?', () => {
let model = me.get('model');
set(model, 'enabled', !me.get('enabled'));
let params = me.get('params');
me.get('service').update(params ?
merge(params, model) : model, true);
});
}
});