blob: 80c881408b6a9e86a36439037596f0d4bff8c69e [file] [log] [blame]
/**
* @fileoverview added by tsickle
* Generated from: nav-links.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
import { tdCollapseAnimation, tdRotateAnimation } from '@covalent/core/common';
/**
* @record
*/
export function ITdNavNode() { }
if (false) {
/** @type {?} */
ITdNavNode.prototype.label;
/** @type {?|undefined} */
ITdNavNode.prototype.show;
}
/**
* @record
*/
export function ITdNavHeader() { }
if (false) {
/** @type {?} */
ITdNavHeader.prototype.children;
}
/**
* @record
*/
export function ITdNavExpansion() { }
if (false) {
/** @type {?|undefined} */
ITdNavExpansion.prototype.collapsable;
}
/**
* @record
*/
export function ITdLink() { }
if (false) {
/** @type {?} */
ITdLink.prototype.link;
/** @type {?} */
ITdLink.prototype.icon;
}
/** @type {?} */
let nextUniqueId = 0;
export class TdNavLinksComponent {
constructor() {
this._uniqueId = `td-nav-links-${++nextUniqueId}`;
this._collapsedSet = new Set();
this.id = this._uniqueId;
/**
* Event trigger after a navigation click
*/
this.afterNavigation = new EventEmitter();
}
/**
* @param {?} link
* @return {?}
*/
_linkClicked(link) {
this.afterNavigation.emit(link);
}
/**
* @param {?} link
* @return {?}
*/
_href(link) {
return link.link && ((/** @type {?} */ (link.link))).href;
}
/**
* @param {?} link
* @return {?}
*/
_routerLink(link) {
return link.link && ((/** @type {?} */ (link.link))).routerLink;
}
/**
* @param {?} link
* Toggles expand/collapse state of expansion link.
* Only applied when `collapsable` is true
* @return {?}
*/
_toggle(link) {
if (this._isCollapsed(link)) {
this._collapsedSet.delete(link);
}
else {
this._collapsedSet.add(link);
}
}
/**
* @param {?} link
* Returns true if the state of provided expansion link is collapsed.
* @return {?}
*/
_isCollapsed(link) {
return this._collapsedSet.has(link);
}
}
TdNavLinksComponent.decorators = [
{ type: Component, args: [{
selector: 'td-nav-links',
template: "<mat-nav-list dense *ngIf=\"links && links.length > 0\">\n <ng-template ngFor [ngForOf]=\"links\" let-link let-linkIndex=\"index\">\n <ng-container *ngIf=\"link.show === undefined || link.show\">\n <ng-container *ngIf=\"link.children?.length && !link.link\">\n <h3\n [class.td-nav-link-cursor]=\"link.collapsable\"\n matSubheader\n matRipple\n [matRippleDisabled]=\"!link.collapsable\"\n (click)=\"link.collapsable && _toggle(link)\"\n >\n <mat-icon *ngIf=\"link.icon\" [fontSet]=\"link.icon?.fontSet\">{{ link.icon?.name }}</mat-icon>\n <span [style.width.%]=\"100\">{{ link.label }}</span>\n <mat-icon [@tdRotate]=\"!_isCollapsed(link)\" *ngIf=\"link.collapsable\">keyboard_arrow_down</mat-icon>\n </h3>\n <td-nav-links\n [id]=\"id + '-' + linkIndex\"\n [@tdCollapse]=\"!!_isCollapsed(link)\"\n [links]=\"link.children\"\n ></td-nav-links>\n </ng-container>\n <ng-container *ngIf=\"link.link\">\n <a\n mat-list-item\n *ngIf=\"_href(link)\"\n [href]=\"_href(link)\"\n [target]=\"link.link.openInNewTab ? '_blank' : undefined\"\n id=\"{{ id }}-{{ linkIndex }}\"\n class=\"td-nav-link\"\n (click)=\"_linkClicked(link)\"\n >\n <mat-icon matListIcon [fontSet]=\"link.icon?.fontSet\">{{ link.icon?.name }}</mat-icon>\n <span matLine>{{ link.label }}</span>\n <mat-icon *ngIf=\"link.link.openInNewTab\">launch</mat-icon>\n </a>\n <a\n mat-list-item\n *ngIf=\"_routerLink(link)\"\n [routerLink]=\"_routerLink(link)\"\n [target]=\"link.link.openInNewTab ? '_blank' : undefined\"\n id=\"{{ id }}-{{ linkIndex }}\"\n class=\"td-nav-link\"\n (click)=\"_linkClicked(link)\"\n >\n <mat-icon matListIcon [fontSet]=\"link.icon?.fontSet\">{{ link.icon?.name }}</mat-icon>\n <span matLine>{{ link.label }}</span>\n <mat-icon *ngIf=\"link.link.openInNewTab\">launch</mat-icon>\n </a>\n </ng-container>\n </ng-container>\n </ng-template>\n</mat-nav-list>\n",
changeDetection: ChangeDetectionStrategy.OnPush,
animations: [tdCollapseAnimation, tdRotateAnimation],
styles: [":host{display:block}:host .mat-nav-list.mat-list-base{padding-top:2px}:host .mat-nav-list.mat-list-base .td-nav-link-cursor{cursor:pointer}:host .mat-nav-list.mat-list-base .mat-list-item{height:40px}:host .mat-icon{margin-right:0}"]
}] }
];
TdNavLinksComponent.propDecorators = {
id: [{ type: Input }],
links: [{ type: Input }],
afterNavigation: [{ type: Output }]
};
if (false) {
/**
* @type {?}
* @private
*/
TdNavLinksComponent.prototype._uniqueId;
/**
* @type {?}
* @private
*/
TdNavLinksComponent.prototype._collapsedSet;
/** @type {?} */
TdNavLinksComponent.prototype.id;
/**
* Links to be rendered by component.
* @type {?}
*/
TdNavLinksComponent.prototype.links;
/**
* Event trigger after a navigation click
* @type {?}
*/
TdNavLinksComponent.prototype.afterNavigation;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWxpbmtzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi9zcmMvcGxhdGZvcm0vY29yZS9uYXYtbGlua3MvIiwic291cmNlcyI6WyJuYXYtbGlua3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQUUvRSxnQ0FHQzs7O0lBRkMsMkJBQWM7O0lBQ2QsMEJBQWU7Ozs7O0FBR2pCLGtDQUVDOzs7SUFEQyxnQ0FBb0I7Ozs7O0FBR3RCLHFDQUVDOzs7SUFEQyxzQ0FBc0I7Ozs7O0FBR3hCLDZCQUdDOzs7SUFGQyx1QkFBMkc7O0lBQzNHLHVCQUF5Qzs7O0lBR3ZDLFlBQVksR0FBVyxDQUFDO0FBUzVCLE1BQU0sT0FBTyxtQkFBbUI7SUFQaEM7UUFRVSxjQUFTLEdBQVcsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLENBQUM7UUFFckQsa0JBQWEsR0FBeUIsSUFBSSxHQUFHLEVBQW1CLENBQUM7UUFFaEUsT0FBRSxHQUFXLElBQUksQ0FBQyxTQUFTLENBQUM7Ozs7UUFXM0Isb0JBQWUsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQWtDakYsQ0FBQzs7Ozs7SUFoQ0MsWUFBWSxDQUFDLElBQWE7UUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7Ozs7SUFFRCxLQUFLLENBQUMsSUFBYTtRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLElBQUksRUFBQSxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzFELENBQUM7Ozs7O0lBRUQsV0FBVyxDQUFDLElBQWE7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsbUJBQW9DLElBQUksQ0FBQyxJQUFJLEVBQUEsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUNqRixDQUFDOzs7Ozs7O0lBT0QsT0FBTyxDQUFDLElBQXFCO1FBQzNCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDOzs7Ozs7SUFNRCxZQUFZLENBQUMsSUFBcUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDOzs7WUF4REYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxjQUFjO2dCQUN4QiwwckVBQXlDO2dCQUV6QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsVUFBVSxFQUFFLENBQUMsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUM7O2FBQ3JEOzs7aUJBTUUsS0FBSztvQkFNTCxLQUFLOzhCQUtMLE1BQU07Ozs7Ozs7SUFmUCx3Q0FBNkQ7Ozs7O0lBRTdELDRDQUF5RTs7SUFFekUsaUNBQXFDOzs7OztJQU1yQyxvQ0FBZ0U7Ozs7O0lBS2hFLDhDQUErRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyB0ZENvbGxhcHNlQW5pbWF0aW9uLCB0ZFJvdGF0ZUFuaW1hdGlvbiB9IGZyb20gJ0Bjb3ZhbGVudC9jb3JlL2NvbW1vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRkTmF2Tm9kZSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHNob3c/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUZE5hdkhlYWRlciBleHRlbmRzIElUZE5hdk5vZGUge1xuICBjaGlsZHJlbjogSVRkTGlua1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUZE5hdkV4cGFuc2lvbiBleHRlbmRzIElUZE5hdkhlYWRlciB7XG4gIGNvbGxhcHNhYmxlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGRMaW5rIGV4dGVuZHMgSVRkTmF2Tm9kZSB7XG4gIGxpbms6IHsgaHJlZjogc3RyaW5nOyBvcGVuSW5OZXdUYWI/OiBib29sZWFuIH0gfCB7IHJvdXRlckxpbms6IHN0cmluZyB8IHN0cmluZ1tdOyBvcGVuSW5OZXdUYWI/OiBib29sZWFuIH07XG4gIGljb246IHsgZm9udFNldD86IHN0cmluZzsgbmFtZTogc3RyaW5nIH07XG59XG5cbmxldCBuZXh0VW5pcXVlSWQ6IG51bWJlciA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RkLW5hdi1saW5rcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXYtbGlua3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uYXYtbGlua3MuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFt0ZENvbGxhcHNlQW5pbWF0aW9uLCB0ZFJvdGF0ZUFuaW1hdGlvbl0sXG59KVxuZXhwb3J0IGNsYXNzIFRkTmF2TGlua3NDb21wb25lbnQge1xuICBwcml2YXRlIF91bmlxdWVJZDogc3RyaW5nID0gYHRkLW5hdi1saW5rcy0keysrbmV4dFVuaXF1ZUlkfWA7XG5cbiAgcHJpdmF0ZSBfY29sbGFwc2VkU2V0OiBTZXQ8SVRkTmF2RXhwYW5zaW9uPiA9IG5ldyBTZXQ8SVRkTmF2RXhwYW5zaW9uPigpO1xuXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmcgPSB0aGlzLl91bmlxdWVJZDtcblxuICAvKipcbiAgICogTGlua3MgdG8gYmUgcmVuZGVyZWQgYnkgY29tcG9uZW50LlxuICAgKi9cbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lICovXG4gIEBJbnB1dCgpIGxpbmtzOiBBcnJheTxJVGROYXZFeHBhbnNpb24gfCBJVGROYXZIZWFkZXIgfCBJVGRMaW5rPjtcblxuICAvKipcbiAgICogRXZlbnQgdHJpZ2dlciBhZnRlciBhIG5hdmlnYXRpb24gY2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKSBhZnRlck5hdmlnYXRpb246IEV2ZW50RW1pdHRlcjxJVGRMaW5rPiA9IG5ldyBFdmVudEVtaXR0ZXI8SVRkTGluaz4oKTtcblxuICBfbGlua0NsaWNrZWQobGluazogSVRkTGluayk6IHZvaWQge1xuICAgIHRoaXMuYWZ0ZXJOYXZpZ2F0aW9uLmVtaXQobGluayk7XG4gIH1cblxuICBfaHJlZihsaW5rOiBJVGRMaW5rKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbGluay5saW5rICYmICg8eyBocmVmPzogc3RyaW5nIH0+bGluay5saW5rKS5ocmVmO1xuICB9XG5cbiAgX3JvdXRlckxpbmsobGluazogSVRkTGluayk6IHN0cmluZyB8IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gbGluay5saW5rICYmICg8eyByb3V0ZXJMaW5rPzogc3RyaW5nIHwgc3RyaW5nW10gfT5saW5rLmxpbmspLnJvdXRlckxpbms7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGxpbmtcbiAgICogVG9nZ2xlcyBleHBhbmQvY29sbGFwc2Ugc3RhdGUgb2YgZXhwYW5zaW9uIGxpbmsuXG4gICAqIE9ubHkgYXBwbGllZCB3aGVuIGBjb2xsYXBzYWJsZWAgaXMgdHJ1ZVxuICAgKi9cbiAgX3RvZ2dsZShsaW5rOiBJVGROYXZFeHBhbnNpb24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNDb2xsYXBzZWQobGluaykpIHtcbiAgICAgIHRoaXMuX2NvbGxhcHNlZFNldC5kZWxldGUobGluayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2NvbGxhcHNlZFNldC5hZGQobGluayk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBsaW5rXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3RhdGUgb2YgcHJvdmlkZWQgZXhwYW5zaW9uIGxpbmsgaXMgY29sbGFwc2VkLlxuICAgKi9cbiAgX2lzQ29sbGFwc2VkKGxpbms6IElUZE5hdkV4cGFuc2lvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jb2xsYXBzZWRTZXQuaGFzKGxpbmspO1xuICB9XG59XG4iXX0=