More directive TS

This commit is contained in:
Mo Bitar
2020-04-12 18:06:44 -05:00
parent 9ad2cc2d50
commit b109675e64
8 changed files with 85 additions and 50 deletions

View File

@@ -0,0 +1,50 @@
import { WebApplication } from './../../application';
import { SNComponent } from 'snjs';
import { WebDirective } from './../../types';
import template from '%/directives/component-modal.pug';
type ComponentModalScope = {
component: SNComponent
callback: () => void
onDismiss: (component: SNComponent) => void
application: WebApplication
}
export class ComponentModalCtrl implements ComponentModalScope {
$element: JQLite
component!: SNComponent
callback!: () => void
onDismiss!: (component: SNComponent) => void
application!: WebApplication
/* @ngInject */
constructor($element: JQLite) {
this.$element = $element;
}
dismiss() {
this.onDismiss && this.onDismiss(this.component);
this.callback && this.callback();
const elem = this.$element;
const scope = elem.scope();
scope.$destroy();
elem.remove();
}
}
export class ComponentModal extends WebDirective {
constructor() {
super();
this.restrict = 'E';
this.template = template;
this.controller = ComponentModalCtrl;
this.controllerAs = 'ctrl';
this.bindToController = true;
this.scope = {
component: '=',
callback: '=',
onDismiss: '&',
application: '='
};
}
}