Sha256: acb9d5a97d08d54bed812d71393d94ea521285994815841783f1e60cef70539f

Contents?: true

Size: 1.89 KB

Versions: 297

Compression:

Stored size: 1.89 KB

Contents

/*eslint-disable react/no-multi-comp, flowtype/space-before-type-colon */

import React, { forwardRef } from 'react'
import Body from '../pb_body/_body'
import classnames from 'classnames'
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
import { globalProps, GlobalProps } from '../utilities/globalProps'

type RadioProps = {
  aria?: {[key: string]: string},
  alignment?: string,
  checked?: boolean,
  children?: React.ReactChild[] | React.ReactChild,
  className?: string,
  dark?: boolean,
  data?: {[key: string]: string},
  error?: boolean,
  id?: string,
  label: string,
  name?: string,
  value?: string,
  text?: string,
  onChange: (event: React.FormEvent<HTMLInputElement> | null)=>void,
} & GlobalProps

const Radio = ({
  aria = {},
  alignment,
  children,
  className,
  dark = false,
  data = {},
  error = false,
  id,
  label,
  name = 'radio_name',
  text = 'Radio Text',
  value = 'radio_text',
  onChange = () => { void 0 },
  ...props
}: RadioProps, ref: any) => {
  const ariaProps = buildAriaProps(aria)
  const dataProps = buildDataProps(data)
  const classes = classnames(
    buildCss('pb_radio_kit', alignment ),
    dark ? 'dark': null, error ? 'error': null,
    globalProps(props),
    className)

  const displayRadio = (props: RadioProps & any) => {
    if (children)
      return (children)
    else
    return (
    <input
        id={id}
        name={name}
        onChange={onChange}
        ref={ref}
        text={text}
        type="radio"
        value={value}
        {...props}
    />
  )}

  return (
    <label
        {...ariaProps}
        {...dataProps}
        className={classes}
        htmlFor={id}
    >
    <>{displayRadio(props)}</>
    <span className="pb_radio_button" />
    <Body
        dark={dark}
        status={error ? 'negative' : null}
        text={label}
        variant={null}
    />
    </label>
  )
}

export default forwardRef(Radio)

Version data entries

297 entries across 297 versions & 1 rubygems

Version Path
playbook_ui-12.7.1.pre.alpha.menu2 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.7.1.pre.alpha.menu1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.7.1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.7.0 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.6.0.pre.alpha.sectionseparator1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.6.0.pre.alpha.menuyml1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.6.0.pre.alpha.collapsible1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.6.0.pre.alpha.cssphone1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.6.0 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.5.0.pre.alpha.datepickerinput1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.5.0.pre.alpha.phonerails1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.5.0.pre.alpha.datepicker1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.5.0.pre.alpha.filter1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.5.0 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.4.0.pre.alpha.map1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.4.0.pre.alpha.devdocstest1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.4.0 app/pb_kits/playbook/pb_radio/_radio.tsx