ng-semantic
Version:
Angular2 building blocks based on Semantic UI
53 lines (42 loc) • 1.59 kB
text/typescript
import { Directive, ViewContainerRef, Input, OnInit, Output, EventEmitter } from "@angular/core";
declare var jQuery: any;
/**
* Implementation of Semantic UI Visibility
*
* @link http://semantic-ui.com/behaviors/visibility.html
*/
({
selector: "[smDirVisibility]"
})
export class SMVisibilityDirective implements OnInit {
() smDirVisibility: {};
() onTopVisible: EventEmitter<{}> = new EventEmitter<{}>();
() onTopPassed: EventEmitter<{}> = new EventEmitter<{}>();
() onUpdate: EventEmitter<{}> = new EventEmitter<{}>();
constructor(public element: ViewContainerRef) {}
ngOnInit(): void {
if (this.element.element.nativeElement) {
jQuery(this.element.element.nativeElement)
.visibility({
onTopPassed: (calculations: {}) => this.onTopPassed.emit(calculations),
onTopVisible: (calculations: {}) => this.onTopVisible.emit(calculations),
onUpdate: (calculations: {}) => this.onUpdate.emit(calculations),
});
}
}
}
/**
* Custom Implementation of Semantic UI Device Visibility
*
* @link http://semantic-ui.com/collections/grid.html#device-visibility
*/
({
selector: "[smDeviceVisibility]"
})
export class SMDeviceVisibilityDirective implements OnInit {
() smDeviceVisibility: string;
constructor(public element: ViewContainerRef) {}
ngOnInit(): void {
this.element.element.nativeElement.classList.add(...this.smDeviceVisibility.split(" "));
}
}