0.2.3 • Published 8 years ago

react-rtab v0.2.3

Weekly downloads
29
License
-
Repository
github
Last release
8 years ago

react-rtab

React tab-panel component.

installation

npm install --save react-rtab

Examples

see fourwingsy.github.io/react-rtab

Description

React-rtab use Models to rendering tab component.

the R in 'R'tab stands for Repeatedly, Rendered models.

Models should be an array of Model {tab: TabModel, panel: PanelModel}

TabModel could be an object with renderer, or plain text. PanelModel could be an object with renderer, Getter Function or ReactElement (this is syntactic sugar for static panel document).

Parameters and Models

PropsTypeDefault valueDescription
modelsarrayOf(Model)-REQUIRED, contains data of tabs
ModelshapeOf({  tab: TabModel,   panel: PanelModel})-Data Model for rendering a tab and panel
TabModelObject or string-
tabRenderer(TabModel) => ReactElement(tabModel) => <span>{tabModel}</span>REQUIRED WHEN TabModel is an Object. If TabModel is string, tabRenderer will be it's default.
PanelModelObject, Getter function, or ReactElement
panelRenderer(PanelModel) => ReactElementundefinedREQUIRED unless PanelModel is ReactElement.
tabPositionstring"top"Where to render tabs. "left" will render vertical tabs. "right" or "bottom" is not implemented yet.
activeTabIndexnumber0Select initial active tab by index of models
preserveboolfalseif preserve is false, then only one active panel will be rendered. if preserve is true, <Rtab> will mount all panels, non-active panels will be just hidden. if each panel has a dynamic component like <input>, set preserve true to preserve input value.
draggableboolfalseAdd drag-event listeners on Tab
closableboolfalseAdd closing X buttons on Tab
onChange(models) => {}undefinedWhen dragging or closing tab, original model has to changed. (models) => {this.setState({models: models})} is recommended.

Using your own template

Sometimes, you needs to use tabs functionality but you already has your own markups. Inheritance might be one of your solution. This works on v0.2.0 or later.

Just Remember Two functions. this.renderTabs() and this.renderPanel()

But also remember this. Theming CSS will not work with your template. You have to write your own, new CSS.

class OwnTabs extends Rtab {
  render() {
    return (
      <div className="myOwnClass">
        <ul className="blabla-tabs">{this.renderTabs()}</ul>
        <div className="blabla-panels"}>{this.renderPanel()}</div>
      </div>
    )
  }
}
0.2.3

8 years ago

0.2.2

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago