celerichain-ember-uii
Version:
Fleetbase UI provides all the interface components, helpers, services and utilities for building a Fleetbase extension into the Console.
72 lines (62 loc) • 1.72 kB
JavaScript
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action, computed } from '@ember/object';
export default class ToggleComponent extends Component {
/**
* The active color of the toggle
*
* @var {Boolean}
*/
isToggled = false;
/**
* The active color of the toggle
*
* @var {String}
*/
activeColor = 'green';
/**
* The active color class.
* Defaults to `bg-green-400` but could also be:
* `bg-organge-400` `bg-yellow-400` `bg-red-400` `bg-blue-400`
*
* @var {String}
*/
('activeColor') get activeColorClass() {
return `bg-${this.activeColor}-400`;
}
/**
* Creates an instance of ToggleComponent.
*
* @memberof ToggleComponent
*/
constructor(owner, { isToggled, activeColor }) {
super(...arguments);
this.isToggled = isToggled === true;
this.activeColor = typeof activeColor === 'string' ? activeColor : 'green';
}
/**
* Event for on/of toggle
*
* @void
*/
toggle(isToggled) {
const { disabled, onToggle } = this.args;
if (disabled) {
return;
}
this.isToggled = !isToggled;
if (typeof onToggle === 'function') {
onToggle(this.isToggled);
}
}
/**
* Handle toggle argument change.
*
* @param {HTMLElement} el
* @param {Array} [isToggled]
* @memberof ToggleComponent
*/
onChange(el, [isToggled]) {
this.isToggled = isToggled === true;
}
}