I am currently trying to write a tree control and I have the following custom attributes (draggable and dropplable): Draggable is as follows:
@customAttribute('draggable')
@inject(Element)
export class Draggable {
   constructor(element) {
   this.element = element;
}
valueChanged(newValue){
   var el = this.element;
   el.draggable = true;
   el.addEventListener('dragstart', function(e) {
     e.dataTransfer.effectAllowed = 'move';
           // etc.
     if (e.stopPropagation)
       e.stopPropagation();
     return false;
   }, false);
   el.addEventListener('dragend', function (e) {
    this.classList.remove('drag');
    return false;
   }, false);
 }
}
etc. From the droppable attribute I was thinking about a pub/sub mechanism where a view model will pick up the drop and add the data to the tree array.
Is this the best way to do this in aurelia or can I follow some other technique? I guess in angularjs I would do it this way or via the rootscope of the tree.
What are my options?