Sha256: 3e29701398bdf1853dbabf3730e96fe962d0292a58ef548c4af9fe29eeef0e0b

Contents?: true

Size: 1.24 KB

Versions: 4

Compression:

Stored size: 1.24 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.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) ->
    @setState activeKey: e.activeTab.key
    @props.onChange e

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
revelry_core-0.1.11.6 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.11.5 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.11.2 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx
revelry_core-0.1.11.1 app/assets/javascripts/revelry/ui/tabs/TabsAccordion.js.cjsx