fundamental-ngx
Version:
SAP Fiori Fundamentals, implemented in Angular
87 lines • 8.74 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, ViewChild, ElementRef } from '@angular/core';
var SideNavigationLinkComponent = /** @class */ (function () {
function SideNavigationLinkComponent() {
this.hasSublist = false;
this.sublistIsOpen = false;
}
/**
* @param {?} event
* @return {?}
*/
SideNavigationLinkComponent.prototype.onKeypressHandler = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (this.hasSublist && (event.code === 'Enter' || event.code === 'Space')) {
event.preventDefault();
this.sublistIsOpen = !this.sublistIsOpen;
}
};
/**
* @return {?}
*/
SideNavigationLinkComponent.prototype.ngOnChanges = /**
* @return {?}
*/
function () {
/*
this function determines what element has been placed in ng-content and applies the fd-side-nav__link class appropriately
*/
if (!this.hasSublist) {
if (this.linkEl && this.linkEl.nativeElement) {
if (this.linkEl.nativeElement.children && this.linkEl.nativeElement.children.length > 0) {
/** @type {?} */
var children = this.linkEl.nativeElement.children;
for (var i = 0; i < children.length; i++) {
// if the item contains a child anchor element, apply 'fd-side-nav__link' class to that anchor
if (children[i].tagName === 'A') {
children[i].classList.add('fd-side-nav__link');
}
}
}
else if (this.linkEl.nativeElement.children && this.linkEl.nativeElement.children.length === 0) {
// if the item does not contain a child element, apply 'fd-side-nav__link' class to the fd-side-nav-link component
this.linkEl.nativeElement.classList.add('fd-side-nav__link');
}
}
}
};
/**
* @return {?}
*/
SideNavigationLinkComponent.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
this.ngOnChanges();
};
SideNavigationLinkComponent.decorators = [
{ type: Component, args: [{
selector: 'fd-side-nav-link',
template: "<a *ngIf=\"hasSublist\" class=\"fd-side-nav__link has-child\"\n [ngClass]=\"{'is-selected': sublistIsOpen === true}\"\n aria-haspopup=\"true\"\n role=\"button\"\n tabindex=\"0\"\n (keypress)=\"onKeypressHandler($event)\"\n (click)=\"sublistIsOpen = !sublistIsOpen\" \n [attr.aria-expanded]=\"sublistIsOpen\"\n style=\"cursor: pointer;\">\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n</a>\n<div *ngIf=\"!hasSublist\" #link>\n <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n</div>\n<div class=\"fd-side-nav__sublist\" *ngIf=\"hasSublist\" [attr.aria-hidden]=\"!sublistIsOpen\">\n <ng-content select=\"fd-side-nav-subitem\"></ng-content>\n</div>\n<ng-template #contentTpl><ng-content></ng-content></ng-template>"
}] }
];
SideNavigationLinkComponent.propDecorators = {
hasSublist: [{ type: Input }],
href: [{ type: Input }],
linkEl: [{ type: ViewChild, args: ['link',] }]
};
return SideNavigationLinkComponent;
}());
export { SideNavigationLinkComponent };
if (false) {
/** @type {?} */
SideNavigationLinkComponent.prototype.hasSublist;
/** @type {?} */
SideNavigationLinkComponent.prototype.href;
/** @type {?} */
SideNavigationLinkComponent.prototype.linkEl;
/** @type {?} */
SideNavigationLinkComponent.prototype.sublistIsOpen;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXZpZ2F0aW9uLWxpbmsuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vZnVuZGFtZW50YWwtbmd4LyIsInNvdXJjZXMiOlsibGliL3NpZGUtbmF2aWdhdGlvbi9zaWRlLW5hdmlnYXRpb24tbGluay5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLFNBQVMsRUFBRSxVQUFVLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRWxHO0lBQUE7UUFNSSxlQUFVLEdBQVksS0FBSyxDQUFDO1FBUTVCLGtCQUFhLEdBQVksS0FBSyxDQUFDO0lBa0NuQyxDQUFDOzs7OztJQWhDRyx1REFBaUI7Ozs7SUFBakIsVUFBa0IsS0FBSztRQUNuQixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxFQUFFO1lBQ3ZFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUM1QztJQUNMLENBQUM7Ozs7SUFFRCxpREFBVzs7O0lBQVg7UUFDSTs7V0FFRztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtnQkFDMUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7O3dCQUMvRSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUTtvQkFDbkQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3RDLDhGQUE4Rjt3QkFDOUYsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsRUFBRTs0QkFDN0IsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQzt5QkFDbEQ7cUJBQ0o7aUJBQ0o7cUJBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQzlGLGtIQUFrSDtvQkFDbEgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2lCQUNoRTthQUNKO1NBQ0o7SUFDTCxDQUFDOzs7O0lBRUQscURBQWU7OztJQUFmO1FBQ0ksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7O2dCQS9DSixTQUFTLFNBQUM7b0JBQ1AsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsNndCQUFvRDtpQkFDdkQ7Ozs2QkFFSSxLQUFLO3VCQUdMLEtBQUs7eUJBR0wsU0FBUyxTQUFDLE1BQU07O0lBcUNyQixrQ0FBQztDQUFBLEFBaERELElBZ0RDO1NBNUNZLDJCQUEyQjs7O0lBQ3BDLGlEQUM0Qjs7SUFFNUIsMkNBQ2E7O0lBRWIsNkNBQ21COztJQUVuQixvREFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXNpZGUtbmF2LWxpbmsnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zaWRlLW5hdmlnYXRpb24tbGluay5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2lkZU5hdmlnYXRpb25MaW5rQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICBASW5wdXQoKVxuICAgIGhhc1N1Ymxpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgaHJlZjogc3RyaW5nO1xuXG4gICAgQFZpZXdDaGlsZCgnbGluaycpXG4gICAgbGlua0VsOiBFbGVtZW50UmVmO1xuXG4gICAgc3VibGlzdElzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgb25LZXlwcmVzc0hhbmRsZXIoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzU3VibGlzdCAmJiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJyB8fCBldmVudC5jb2RlID09PSAnU3BhY2UnKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuc3VibGlzdElzT3BlbiA9ICF0aGlzLnN1Ymxpc3RJc09wZW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgLypcbiAgICAgICAgIHRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyB3aGF0IGVsZW1lbnQgaGFzIGJlZW4gcGxhY2VkIGluIG5nLWNvbnRlbnQgYW5kIGFwcGxpZXMgdGhlIGZkLXNpZGUtbmF2X19saW5rIGNsYXNzIGFwcHJvcHJpYXRlbHlcbiAgICAgICAgICovXG4gICAgICAgIGlmICghdGhpcy5oYXNTdWJsaXN0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5saW5rRWwgJiYgdGhpcy5saW5rRWwubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpbmtFbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuICYmIHRoaXMubGlua0VsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMubGlua0VsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBpdGVtIGNvbnRhaW5zIGEgY2hpbGQgYW5jaG9yIGVsZW1lbnQsIGFwcGx5ICdmZC1zaWRlLW5hdl9fbGluaycgY2xhc3MgdG8gdGhhdCBhbmNob3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXS50YWdOYW1lID09PSAnQScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltpXS5jbGFzc0xpc3QuYWRkKCdmZC1zaWRlLW5hdl9fbGluaycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxpbmtFbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuICYmIHRoaXMubGlua0VsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBpdGVtIGRvZXMgbm90IGNvbnRhaW4gYSBjaGlsZCBlbGVtZW50LCBhcHBseSAnZmQtc2lkZS1uYXZfX2xpbmsnIGNsYXNzIHRvIHRoZSBmZC1zaWRlLW5hdi1saW5rIGNvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxpbmtFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2ZkLXNpZGUtbmF2X19saW5rJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLm5nT25DaGFuZ2VzKCk7XG4gICAgfVxufVxuIl19