Sha256: 46dbd7e32fa475b8f3ce9fd14343bf7481cec6969cac804d679378dc00caa02d

Contents?: true

Size: 1.25 KB

Versions: 6

Compression:

Stored size: 1.25 KB

Contents

Rev.registerComponent 'StatelessTabsAccordion',

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

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

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

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

    tab = React.cloneElement child.props.tab,
      onClick: @handleTabClick child

    content = React.cloneElement 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) ->
    if e.activeTab.key == @state.activeKey
      e.activeTab = null
    @setState activeKey: e.activeTab?.key or null
    @props.onChange e

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
revelry_core-0.1.12.6 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.12.5 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.12.4 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.12.3 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.12.2 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.12.0 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx