UNPKG

react-awesome-query-builder

Version:

User-friendly query builder for React. Please migrate to new @react-awesome-query-builder/* See https://github.com/ukrbublik/react-awesome-query-builder#migration-to-600

56 lines (50 loc) 1.75 kB
import React from "react"; import {mapListValues} from "../../../../utils/stuff"; import MenuItem from "@material-ui/core/MenuItem"; import FormControl from "@material-ui/core/FormControl"; import Select from "@material-ui/core/Select"; import Checkbox from "@material-ui/core/Checkbox"; import ListItemText from "@material-ui/core/ListItemText"; import omit from "lodash/omit"; export default ({listValues, value, setValue, allowCustomValues, readonly, placeholder, customProps}) => { const renderOptions = (selectedValues) => mapListValues(listValues, ({title, value}) => { return ( <MenuItem key={value} value={value}> <Checkbox checked={selectedValues.indexOf(value) > -1} /> <ListItemText primary={title} /> </MenuItem> ); }); const renderValue = (selectedValues) => { if (!readonly && !selectedValues.length) return placeholder; const selectedTitles = mapListValues(listValues, ({title, value}) => ( selectedValues.indexOf(value) > -1 ? title : null )).filter(v => v !== null); return selectedTitles.join(", "); }; const hasValue = value != null && value.length > 0; const onChange = e => { if (e.target.value === undefined) return; setValue(e.target.value); }; return ( <FormControl> <Select multiple autoWidth displayEmpty label={!readonly ? placeholder : ""} onChange={onChange} value={hasValue ? value : []} disabled={readonly} readOnly={readonly} renderValue={renderValue} {...omit(customProps, ["showSearch", "input", "showCheckboxes"])} > {renderOptions(hasValue ? value : [])} </Select> </FormControl> ); };