angular-traversal
Version:
A traversal navigation library for Angular (v2+)
53 lines • 4.58 kB
JavaScript
import { Directive, HostBinding, Input, HostListener } from '@angular/core';
import { Traverser } from './traverser';
import { Normalizer } from './normalizer';
export class TraverserButton {
constructor(traverser) {
this.traverser = traverser;
}
onClick(event) {
event.preventDefault();
if (!!this.traverseTo) {
this.traverser.traverse(this.traverseTo);
}
}
}
TraverserButton.decorators = [
{ type: Directive, args: [{
selector: ':not(a)[traverseTo]',
},] }
];
TraverserButton.ctorParameters = () => [
{ type: Traverser }
];
TraverserButton.propDecorators = {
traverseTo: [{ type: Input }],
onClick: [{ type: HostListener, args: ['click', ['$event'],] }]
};
export class TraverserLink extends TraverserButton {
constructor(privateTraverser, normalizer) {
super(privateTraverser);
this.privateTraverser = privateTraverser;
this.normalizer = normalizer;
}
ngOnInit() {
if (!!this.traverseTo) {
this.href =
this.privateTraverser.getPrefix() +
this.normalizer.normalize(this.privateTraverser.getFullPath(this.traverseTo));
}
}
}
TraverserLink.decorators = [
{ type: Directive, args: [{
selector: 'a[traverseTo]',
},] }
];
TraverserLink.ctorParameters = () => [
{ type: Traverser },
{ type: Normalizer }
];
TraverserLink.propDecorators = {
href: [{ type: HostBinding }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhdmVyc2VyLmxpbmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90cmF2ZXJzYWwvc3JjL2xpYi90cmF2ZXJzZXIubGluay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUsxQyxNQUFNLE9BQU8sZUFBZTtJQUd4QixZQUFvQixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO0lBQUcsQ0FBQztJQUc1QyxPQUFPLENBQUMsS0FBaUI7UUFDckIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzVDO0lBQ0wsQ0FBQzs7O1lBZEosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxxQkFBcUI7YUFDbEM7OztZQUxRLFNBQVM7Ozt5QkFPYixLQUFLO3NCQUlMLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBWXJDLE1BQU0sT0FBTyxhQUFjLFNBQVEsZUFBZTtJQUc5QyxZQUFvQixnQkFBMkIsRUFBVSxVQUFzQjtRQUMzRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQURSLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBVztRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7SUFFL0UsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxJQUFJO2dCQUNMLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUU7b0JBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7U0FDckY7SUFDTCxDQUFDOzs7WUFoQkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxlQUFlO2FBQzVCOzs7WUF0QlEsU0FBUztZQUNULFVBQVU7OzttQkF1QmQsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhdmVyc2VyIH0gZnJvbSAnLi90cmF2ZXJzZXInO1xuaW1wb3J0IHsgTm9ybWFsaXplciB9IGZyb20gJy4vbm9ybWFsaXplcic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnOm5vdChhKVt0cmF2ZXJzZVRvXScsXG59KVxuZXhwb3J0IGNsYXNzIFRyYXZlcnNlckJ1dHRvbiB7XG4gICAgQElucHV0KCkgdHJhdmVyc2VUbz86IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhdmVyc2VyOiBUcmF2ZXJzZXIpIHt9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25DbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoISF0aGlzLnRyYXZlcnNlVG8pIHtcbiAgICAgICAgICAgIHRoaXMudHJhdmVyc2VyLnRyYXZlcnNlKHRoaXMudHJhdmVyc2VUbyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnYVt0cmF2ZXJzZVRvXScsXG59KVxuZXhwb3J0IGNsYXNzIFRyYXZlcnNlckxpbmsgZXh0ZW5kcyBUcmF2ZXJzZXJCdXR0b24gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygpIGhyZWY/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByaXZhdGVUcmF2ZXJzZXI6IFRyYXZlcnNlciwgcHJpdmF0ZSBub3JtYWxpemVyOiBOb3JtYWxpemVyKSB7XG4gICAgICAgIHN1cGVyKHByaXZhdGVUcmF2ZXJzZXIpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAoISF0aGlzLnRyYXZlcnNlVG8pIHtcbiAgICAgICAgICAgIHRoaXMuaHJlZiA9XG4gICAgICAgICAgICAgICAgdGhpcy5wcml2YXRlVHJhdmVyc2VyLmdldFByZWZpeCgpICtcbiAgICAgICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZXIubm9ybWFsaXplKHRoaXMucHJpdmF0ZVRyYXZlcnNlci5nZXRGdWxsUGF0aCh0aGlzLnRyYXZlcnNlVG8pKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==