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

53 lines (46 loc) 1.47 kB
import React from "react"; import Select from "@material-ui/core/Select"; import MenuItem from "@material-ui/core/MenuItem"; import {mapListValues} from "../../../../utils/stuff"; import FormControl from "@material-ui/core/FormControl"; import omit from "lodash/omit"; export default ({listValues, value, setValue, allowCustomValues, readonly, placeholder, customProps}) => { const renderOptions = () => mapListValues(listValues, ({title, value}) => { return <MenuItem key={value} value={value}>{title}</MenuItem>; }); const onChange = e => { if (e.target.value === undefined) return; setValue(e.target.value); }; const renderValue = (selectedValue) => { if (!readonly && selectedValue == null) return placeholder; return getListValueTitle(selectedValue); }; const getListValueTitle = (selectedValue) => mapListValues(listValues, ({title, value}) => (value === selectedValue ? title : null) ) .filter(v => v !== null) .shift(); const hasValue = value != null; return ( <FormControl> <Select autoWidth displayEmpty label={!readonly ? placeholder : ""} onChange={onChange} value={hasValue ? value : ""} disabled={readonly} readOnly={readonly} renderValue={renderValue} {...omit(customProps, ["showSearch", "input"])} > {renderOptions()} </Select> </FormControl> ); };