Sha256: 8012a6f6a1200cce6351f610b1b3dd1c12854a29fd4c220ac27ca829c6cfdeba

Contents?: true

Size: 1.9 KB

Versions: 11

Compression:

Stored size: 1.9 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

11 entries across 11 versions & 1 rubygems

Version Path
playbook_ui-12.3.1.pre.alpha.phone1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.3.1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.3.0.pre.alpha.patchtest1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.3.0 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.2.0 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.1.0 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-12.0.0 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-11.20.0.pre.alpha.passthrough1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-11.20.0.pre.alpha.railsdialog1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-11.20.0.pre.alpha.focus1 app/pb_kits/playbook/pb_radio/_radio.tsx
playbook_ui-11.20.0 app/pb_kits/playbook/pb_radio/_radio.tsx