@fleetbase/ember-ui
Version:
Fleetbase UI provides all the interface components, helpers, services and utilities for building a Fleetbase extension into the Console.
55 lines (45 loc) • 1.63 kB
JavaScript
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { inject as service } from '@ember/service';
import { action, computed } from '@ember/object';
export default class ToggleComponent extends Component {
abilities;
isToggled = false;
activeColor = 'green';
permissionRequired;
disabledByPermission = false;
visible = true;
disabled = false;
get activeColorClass() {
return `bg-${this.activeColor}-400`;
}
constructor(owner, { value = false, isToggled = false, activeColor = 'green', permission = null, disabled = false, visible = true }) {
super(...arguments);
this.isToggled = isToggled;
this.activeColor = activeColor;
this.checked = value;
this.permissionRequired = permission;
this.visible = visible;
this.disabled = disabled;
if (!disabled) {
this.disabled = this.disabledByPermission = permission && this.abilities.cannot(permission);
}
}
get isOn() {
if (typeof this.args.isToggled === 'boolean') {
return this.args.isToggled;
}
return this.isToggled;
}
toggle() {
if (this.disabled) return;
this.isToggled = !this.isOn;
if (typeof this.args.onToggle === 'function') {
this.args.onToggle(this.isToggled);
}
}
onChange(el, [isToggled, disabled]) {
this.isToggled = isToggled === true;
this.disabled = disabled;
}
}