Sha256: 1f5e8c56378f29757d6436f075c01c05cb3d31e11689052149cd5acb4ae87b3d

Contents?: true

Size: 1.82 KB

Versions: 465

Compression:

Stored size: 1.82 KB

Contents

import React from 'react'
import classnames from 'classnames'
import type { InputCallback } from '../types'

import {
  buildAriaProps,
  buildCss,
  buildDataProps,
  buildHtmlProps,
} from '../utilities/props'

import { GlobalProps, globalProps } from '../utilities/globalProps'

type Props = {
  aria?: { [key: string]: string },
  checked?: boolean,
  children?: React.ReactNode | React.ReactNode[],
  className?: string,
  data?: { [key: string]: string },
  disabled?: boolean,
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
  id?: string,
  name?: string,
  onChange?: InputCallback<HTMLInputElement>,
  size?: "sm" | "md",
  value?: string,
} & GlobalProps

const Toggle = ({
  aria = {},
  checked = false,
  children,
  className,
  data = {},
  disabled = false,
  id,
  htmlOptions = {},
  name,
  onChange = (): void => {
  // Function body here
  },
  size = 'sm',
  value,
  ...props
}: Props): React.ReactElement => {
  const ariaProps = buildAriaProps(aria)
  const dataProps = buildDataProps(data)
  const htmlProps = buildHtmlProps(htmlOptions)
  const css = classnames(
    buildCss('pb_toggle_kit',
      size,
      {
        on: checked,
        off: !checked,
      }
    ))

  return (
    <div
        {...ariaProps}
        {...dataProps}
        {...htmlProps}
        className={classnames(css, globalProps(props), className)}
        id={id}
    >
      <label className="pb_toggle_wrapper">
        {children && children}

        {!children &&
          <input
              {...props}
              defaultChecked={checked}
              disabled={disabled}
              name={name}
              onChange={onChange}
              type="checkbox"
              value={value}
          />
        }
        <div className="pb_toggle_control" />
      </label>
    </div>
  )
}

export default Toggle

Version data entries

465 entries across 465 versions & 1 rubygems

Version Path
playbook_ui-14.11.1.pre.alpha.PLAY17445539 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.11.1.pre.alpha.PBNTR798datepickerturbo5537 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.11.1.pre.alpha.pbntr703collapsiblerowsrails5536 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.11.1.pre.alpha.PLAY1751pbcontenttagpt25529 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.11.1.pre.alpha.PBNTR7495495 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.12.0.pre.rc.11 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.12.0.pre.rc.10 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.12.0.pre.rc.9 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.12.0.pre.rc.8 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.12.0.pre.rc.7 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.11.1.pre.alpha.play1724darkmodeauditmap5437 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.11.1.pre.alpha.PBNTR719listdraggablesimple5432 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.11.1.pre.alpha.PBNTR768stickyrightcolumn5431 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.12.0.pre.rc.6 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.11.1.pre.alpha.PBNTR718simiplifieddraggablereact5415 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.11.1.pre.alpha.play1724darkmodeauditmap5413 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.12.0.pre.rc.5 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.11.1.pre.alpha.play1724darkmodeauditmap5409 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.11.1.pre.alpha.PBNTR718simiplifieddraggablereact5400 app/pb_kits/playbook/pb_toggle/_toggle.tsx
playbook_ui-14.11.1.pre.alpha.PBNTR718simiplifieddraggablereact5392 app/pb_kits/playbook/pb_toggle/_toggle.tsx