UNPKG

@krowdy-ui/views

Version:

React components that implement Google's Material Design.

102 lines (97 loc) 2.49 kB
import React from 'react'; import clsx from 'clsx'; import { FormControlLabel, Radio, RadioGroup } from '@krowdy-ui/core'; import { withStyles } from '@krowdy-ui/styles'; import PropTypes from 'prop-types'; export const styles = theme => ({ boxContainer: { display: 'flex', paddingTop: 12 }, isRow: { flexDirection: 'row' }, isVert: { flexDirection: 'column' }, label: { fontSize: 14 }, noLine: { margin: 0, padding: theme.spacing(1.5, 1) }, outlineRow: { margin: theme.spacing(0, 1, 0, 0) }, outlined: { '&:hover': { border: `1px solid ${theme.palette.primary[400]}` }, border: `1px solid ${theme.palette.grey[300]}`, padding: theme.spacing(1.5, 1.25) }, outlinedVert: { margin: theme.spacing(0.6, 0, 0.6, 0) }, roundBorder: { '&:hover': { border: `1px solid ${theme.palette.primary[400]}` }, border: `1px solid ${theme.palette.grey[300]}`, borderRadius: 8, minWidth: 120 } }); var _ref = /*#__PURE__*/React.createElement(Radio, { color: "primary", disableRipple: true, size: "small" }); const RadioLabelGroup = props => { const { classes, isRow, items = [], onChange = () => {}, outlined, value, name } = props; const [currentValue, setValue] = React.useState(value); const handleChange = event => { setValue(event.target.value); onChange(event); }; return /*#__PURE__*/React.createElement(RadioGroup, { className: clsx(classes.boxContainer, isRow ? classes.isRow : classes.isVert), name: name, onChange: handleChange, row: isRow, value: currentValue }, items.map((element, index) => /*#__PURE__*/React.createElement(FormControlLabel, { classes: { label: classes.label }, className: clsx(outlined ? classes.outlined && classes[`${outlined}Border`] : classes.noLine, isRow ? classes.outlineRow : classes.outlinedVert), control: _ref, key: index, label: element.label, value: element.value }))); }; process.env.NODE_ENV !== "production" ? RadioLabelGroup.propTypes = { classes: PropTypes.object, isRow: PropTypes.bool, items: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.any })), name: PropTypes.string, onChange: PropTypes.func, value: PropTypes.any } : void 0; RadioLabelGroup.muiName = 'RadioLabelGroup'; export default withStyles(styles, { name: 'KrowdyRadioLabelGroup' })(RadioLabelGroup);