@pevil/ng-tabs
v1.0.0
Published
Angular2+ UI directives for constructing tab interfaces
Downloads
69
Maintainers
Readme
Angular UI Tabs
Install
$ npm install @pevil/ng-tabs
Usage
Import
First, import the provided module:
import { NgTabModule } from '@pevil/ng-tabs';
@NgModule({
imports: [NgTabModule]
})
export class Module {}
Building a set of tabs
3 directives are provided:
- pvlTabGroup
- pvlTab
- pvlTabPanel
First, an example of how to use them together, with more detail below
<ul pvlTabGroup [tabPanel]="characterPanel">
<li pvlTab [tabId]="'a'">
View A
<ng-template><a-component></a-component></ng-template>
</li>
<li pvlTab [tabId]="'b'">
View B
<ng-template><b-component></b-component></ng-template>
</li>
<li pvlTab [tabId]="'c'">
View C
<ng-template><img [src]="c" /></ng-template>
</li>
</ul>
<div>some other optional content that maybe you want to place before the tab panel</div>
<ng-template pvlTabPanel #putContentHere="pvlTabPanel"></ng-template>
For a more concrete example, see here or here
pvlTabGroup Use this to define a group of tabs that belong together. Here, we're defining an element as the group, where each child with the pvlTab directive (in this case each element), is a part of this tabGroup.
The [tabPanel] input expects a reference to the panel where we want to render these tabs. The optional [initialTab] input expects a string matching the tabId of whichever tab should be displayed first. If none is provided, the first tab's contents will be the default.
pvlTab As described above, we want to apply the pvlTab directive to each element that describes a tab. In this case we have 3 elements, where the tabs themselves will display [View A, View B, View C]. Each element with a pvlTab directive also uses an to define the data that should be rendered in the panel when the tab is selected.
The [tabId] input expects a string id, unique to the other tabs in this tab group.
Whichever tab is active will have the css class .pvl-active-tab
applied to it
pvlTabPanel Apply this to an element, wherever you want the content defined by each tab to render. Also remember to grab a reference to the directive, in order to pass that as an input to the tabGroup directive (in our example, we did that with #putContentHere="pvlTabPanel")
Demo
Run local demo by:
- Cloning the repo
- Run
$ npm run build.all
cd demo
python3 -m http.server 4300
- open localhost:4300 in a browser
OR visit this plunkr