angular-cn/public/docs/_examples/homepage-tabs/ts/src/ui_tabs.ts

51 lines
1.2 KiB
TypeScript
Raw Normal View History

2015-12-15 15:34:29 -05:00
// #docregion
import {Component, Directive, Input, QueryList,
ViewContainerRef, TemplateRef, ContentChildren} from 'angular2/core';
@Directive({
selector: '[ui-pane]'
})
export class UiPane {
@Input() title: string;
private _active:boolean = false;
constructor(public viewContainer: ViewContainerRef,
public templateRef: TemplateRef) { }
@Input() set active(active: boolean) {
if (active == this._active) return;
this._active = active;
if (active) {
this.viewContainer.createEmbeddedView(this.templateRef);
} else {
this.viewContainer.remove(0);
}
}
get active(): boolean {
return this._active;
}
}
@Component({
selector: 'ui-tabs',
template: `
<ul class="nav nav-tabs">
<li *ngFor="var pane of panes"
(click)="select(pane)"
role="presentation" [class.active]="pane.active">
<a href="javascript: false">{{pane.title}}</a>
</li>
</ul>
<ng-content></ng-content>
`
})
export class UiTabs {
@ContentChildren(UiPane) panes: QueryList<UiPane>;
select(pane: UiPane) {
this.panes.toArray().forEach((p: UiPane) => p.active = p == pane);
}
}