UNPKG

@react-awesome-query-builder/mui

Version:
62 lines 2.34 kB
import _extends from "@babel/runtime/helpers/extends"; import React from "react"; import MenuItem from "@mui/material/MenuItem"; import FormControl from "@mui/material/FormControl"; import Select from "@mui/material/Select"; import Checkbox from "@mui/material/Checkbox"; import ListItemText from "@mui/material/ListItemText"; import omit from "lodash/omit"; import { Utils } from "@react-awesome-query-builder/ui"; var mapListValues = Utils.ListUtils.mapListValues; export default (function (_ref) { var listValues = _ref.listValues, value = _ref.value, setValue = _ref.setValue, allowCustomValues = _ref.allowCustomValues, readonly = _ref.readonly, placeholder = _ref.placeholder, customProps = _ref.customProps; var renderOptions = function renderOptions(selectedValues) { return mapListValues(listValues, function (_ref2) { var title = _ref2.title, value = _ref2.value; return /*#__PURE__*/React.createElement(MenuItem, { key: value, value: value }, /*#__PURE__*/React.createElement(Checkbox, { checked: selectedValues.indexOf(value) > -1 }), /*#__PURE__*/React.createElement(ListItemText, { primary: title })); }); }; var renderValue = function renderValue(selectedValues) { if (!readonly && !selectedValues.length) return placeholder; var selectedTitles = mapListValues(listValues, function (_ref3) { var title = _ref3.title, value = _ref3.value; return selectedValues.indexOf(value) > -1 ? title : null; }).filter(function (v) { return v !== null; }); return selectedTitles.join(", "); }; var hasValue = value != null && value.length > 0; var onChange = function onChange(e) { if (e.target.value === undefined) return; setValue(e.target.value); }; return /*#__PURE__*/React.createElement(FormControl, null, /*#__PURE__*/React.createElement(Select, _extends({ multiple: true, variant: "standard", autoWidth: true, displayEmpty: true, label: !readonly ? placeholder : "", onChange: onChange, value: hasValue ? value : [], disabled: readonly, readOnly: readonly, renderValue: renderValue, size: "small" }, omit(customProps, ["showSearch", "input", "showCheckboxes"])), renderOptions(hasValue ? value : []))); });