Sha256: 2efac40dca9d1d121763b08374fc6e08c48fe64ddc2ace557116095b9c7384be

Contents?: true

Size: 1.88 KB

Versions: 1

Compression:

Stored size: 1.88 KB

Contents

Rev.registerComponent 'StatelessTabContent',
  propTypes:
    activeKey: React.PropTypes.string.isRequired
    children: React.PropTypes.node.isRequired

  renderContent: (child) ->
    newProps = key: child.key
    newProps.active = true if child.key == this.props.activeKey
    React.cloneElement child, newProps

  render: ->
    <div className="RevTabs-content tabs-content">
      {@getNormalizedChildren().map @renderContent}
    </div>

Rev.registerComponent 'StatelessTabs',

  getDefaultProps: ->
    activeKey: null
    onChange: () -> # noop

  getActiveKey: -> @props.activeKey or @getNormalizedChildren()[0]?.key

  renderTab: (child) ->
    className = @classSet
      active: child.key == @getActiveKey()
      'RevTabs-tab': true

    <dd key={child.key} className={className} onClick={@handleTabClick(child)}>
      {child.props.tab}
    </dd>

  renderContent: (child) ->
    newProps = key: child.key
    newProps.active = true if child.key == @getActiveKey()
    React.cloneElement child, newProps

  render: ->
    dlClassName = @classSet
      'RevTabs-tabs': true
      tabs: true
      vertical: @props.vertical

    <div className='RevTabs'>
      <dl className={dlClassName}>
        {@getNormalizedChildren().map @renderTab}
      </dl>
      <Rev.Components.StatelessTabContent {...@props} activeKey={@getActiveKey()}>
        {@props.children}
      </Rev.Components.StatelessTabContent>
    </div>

  handleTabClick: (activeTab) -> (e) =>
    e.preventDefault()
    e.stopPropagation()
    e.activeTab = activeTab
    @props.onChange(e)

Rev.registerComponent 'Tabs',

  getDefaultProps: ->
    onChange: () -> # noop

  getInitialState: ->
    activeKey: @props.activeKey

  render: ->
    <Rev.Components.StatelessTabs
      {...@props}
      activeKey={@state.activeKey}
      onChange={@handleChange}
    />

  handleChange: (e) ->
    @setState activeKey: e.activeTab.key
    @props.onChange e

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
revelry_core-0.1.11.6 app/assets/javascripts/revelry/ui/tabs/Tabs.js.cjsx