@fleetbase/ember-ui
Version:
Fleetbase UI provides all the interface components, helpers, services and utilities for building a Fleetbase extension into the Console.
95 lines (83 loc) • 1.75 kB
JavaScript
import Component from '@glimmer/component';
import { action } from '@ember/object';
/**
* Kanban Card Component
*
* Usage:
* <Kanban::Card @card={{card}} />
*
* With custom template:
* <Kanban::Card @card={{card}} @template={{component "my-custom-card"}} />
*/
export default class KanbanCardComponent extends Component {
/**
* Handle card drag start
*/
onDragStart(event) {
if (this.args.onDragStart) {
this.args.onDragStart(this.card, event);
}
}
/**
* Handle card drag end
*/
onDragEnd(event) {
if (this.args.onDragEnd) {
this.args.onDragEnd(event);
}
}
/**
* Handle card click
*/
onClick(event) {
if (this.args.onClick) {
this.args.onClick(this.args.card, event);
}
}
/**
* Handle card update
*/
onUpdate(updates) {
if (this.args.onUpdate) {
this.args.onUpdate(updates);
}
}
/**
* Handle card delete
*/
onDelete() {
if (this.args.onDelete) {
this.args.onDelete();
}
}
/**
* Get card data
*/
get card() {
return this.args.card || {};
}
/**
* Check if card is draggable
*/
get isDraggable() {
return !this.args.readonly && !this.args.disabled;
}
/**
* Get card classes
*/
get cardClasses() {
let classes = 'kanban-card';
if (this.args.isDragging) {
classes += ' dragging';
}
if (this.card.priority) {
classes += ` priority-${this.card.priority}`;
}
return classes;
}
}