Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / @skava/ui   js

Repository URL to install this package:

Version: 4.2.0-a11y.0 

/ src / components / molecules / LabelWithAction / LabelWithAction.tsx

// libs
import React from 'react'
import { observer } from 'xmobx/mobx-react'
import { isFunction } from 'exotic'
import { LabelProps } from './typings'
import {
  defaultRenderLabel,
  defaultRenderLinkButton,
  defaultRenderWrapper,
} from './renderProps'

@observer
class LabelWithAction extends React.Component<LabelProps> {
  static defaultProps = {
    className: '',
    buttonLabel: '',
    renderWrapper: defaultRenderWrapper,
    renderLinkButton: defaultRenderLinkButton,
    renderLabel: defaultRenderLabel,
  }

  render() {
    const {
      renderWrapper,
      renderLinkButton,
      renderLabel,
      ...remainingProps
    } = this.props
    const { onClick } = remainingProps
    const children = isFunction(onClick)
      ? renderLinkButton(remainingProps)
      : renderLabel(remainingProps)
    const view = renderWrapper({ ...remainingProps, children })
    return view
  }
}

export { LabelWithAction }
export default LabelWithAction