kist-tabify
Version:
Simple tabs and accordion interface.
199 lines (131 loc) • 3.65 kB
Markdown
# kist-tabify
Simple tabs and accordion interface.
## Installation
```sh
npm install kist-tabify --save
bower install kist-tabify --save
```
## API
### `$Element.tabify([options], [placement])`
Returns: `jQuery`
Element is container for tabs and corresponding panes. If panes can’t be found inside element, plugin will search for them outside container, beginning with `body` element.
#### options
Type: `Object|String`
##### Options defined as `Object`
###### type
Type: `String`
Default: `tab`
Type of tabbing interface. It can be either `tab` or `accordion`.
###### initial
See [placement](#placement).
###### multiSelect
Type: `Boolean`
Default: `false`
If it’s accordion interface, determines if multi tab selection is allowed.
###### tab
Type: `String`
Default: `> ul > li > a, > ul > li > button`
Selector used to collect all tab toggler elements.
###### pane
Type: `String`
Default: `> div > div`
Selector used to collect all tab pane elements.
###### changeURL
Type: `Boolean`
Default: `false`
If tab toggler elements are anchor elements, determines if URL should be update with `href` value.
###### select
Type: `Function`
Arguments: [Tab], [Pane]
Event: `tabifyselect`
Callback to run on tab selection.
###### deselect
Type: `Function`
Arguments: [Tab], [Pane]
Event: `tabifydeselect`
Callback to run on tab deselection.
###### create
Type: `Function`
Arguments: [Tab], [Pane]
Event: `tabifycreate`
Callback to run on tab instance creation.
##### Options defined as `String`
Type: `String`
###### destroy
Destroy plugin instance.
###### next
Move to next tab element.
###### prev
Move to previous tab element.
###### move
Move to tab element determined by second argument. Second argument accepts values like [options → initial](#initial).
#### placement
Type: `Integer|String|Function|Boolean`
Default: `1`
Initial element to select.
If defined as:
| Type | Description |
| --- | --- |
| `Integer` | Index of tab element to activate. |
| `String` | Value of `id` attribute, `data-tab-id` attribute or `href` attribute value of tab element to activate. |
| `Function` | Should return either index or string which correspond to integer and string values for this property. |
| `Boolean` | If true, it will active first tab element, else it won’t activate anything. |
## Examples
Default structure for tab interface.
```html
<div class="Tab">
<ul class="Tab-items">
<li class="Tab-item"><a href="#tab1" class="Tab-toggler">Tab 1</a></li>
<li class="Tab-item"><a href="#tab2" class="Tab-toggler">Tab 2</a></li>
<li class="Tab-item"><a href="#tab3" class="Tab-toggler">Tab 3</a></li>
</ul>
<div class="Tab-panes">
<div class="Tab-pane Tab-pane--1" id="tab1">
<p>Pane 1</p>
</div>
<div class="Tab-pane Tab-pane--2" id="tab2">
<p>Pane 2</p>
</div>
<div class="Tab-pane Tab-pane--3" id="tab3">
<p>Pane 3</p>
</div>
</div>
</div>
```
Setup tab instance.
```js
$('.Tab').tabify({
type: 'tab',
initial: 1,
tab: '.Tab-toggler',
pane: '.Tab-pane',
namespace: 'Foobar',
select: function ( tab, pane ) {
// I’m selected!
},
deselect: function ( tab, pane ) {
// I’m deselected!
},
create: function ( tab, pane ) {
// I’m created!
}
});
```
Move to next/previous tab.
```js
$('.Tab').tabify('prev');
$('.Tab').tabify('next');
```
Move to arbitrary tab.
```js
$('.Tab').tabify('move', 1);
$('.Tab').tabify('move', 'foo');
```
Destroy plugin instance.
```js
$('.Tab').tabify('destroy');
```
## Browser support
Tested in IE8+ and all modern browsers.
## License
MIT © [Ivan Nikolić](http://ivannikolic.com)