Sha256: 0440c3f92442cf21a342b37e02726ddfe2d95a6d93ffaeb117d0aeb27ca43410

Contents?: true

Size: 1.26 KB

Versions: 14

Compression:

Stored size: 1.26 KB

Contents

Rev.registerComponent 'StatelessTabsAccordion',

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

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

  render: ->
    <ul className="RevAccordion accordion">
      {@getNormalizedChildren().map @renderChild}
    </ul>

  renderChild: (child) ->
    active = child.key == @getActiveKey()

    className = @classSet
      "RevTabsAccordion": true
      "RevTabsAccordion is-active": true
      "accordion-navigation": true
      "active": active

    tab = React.addons.cloneWithProps child.props.tab,
      onClick: @handleTabClick child

    content = React.addons.cloneWithProps child,
      active: active

    <li key={child.key} className={className}>
      {tab}
      {content}
    </li>

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

Rev.registerComponent 'TabsAccordion',

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

  getInitialState: ->
    activeKey: null

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

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

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
revelry_core-0.1.11.0 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.10.7 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.10.6 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.10.5 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.10.4 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.10.3 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.10.2 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.10.1 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.10.0 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.9.2 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.9.1 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.9.0 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.8.6 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.8.5 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx