UNPKG

@react-awesome-query-builder/mui

Version:
59 lines 2.1 kB
import _extends from "@babel/runtime/helpers/extends"; import React from "react"; import Select from "@mui/material/Select"; import MenuItem from "@mui/material/MenuItem"; import FormControl from "@mui/material/FormControl"; 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, config = _ref.config; var renderSize = config.settings.renderSize; var renderOptions = function renderOptions() { return mapListValues(listValues, function (_ref2) { var title = _ref2.title, value = _ref2.value; return /*#__PURE__*/React.createElement(MenuItem, { key: value, value: value }, title); }); }; var onChange = function onChange(e) { if (e.target.value === undefined) return; setValue(e.target.value); }; var renderValue = function renderValue(selectedValue) { if (!readonly && selectedValue == null) return placeholder; return getListValueTitle(selectedValue); }; var getListValueTitle = function getListValueTitle(selectedValue) { return mapListValues(listValues, function (_ref3) { var title = _ref3.title, value = _ref3.value; return value === selectedValue ? title : null; }).filter(function (v) { return v !== null; }).shift(); }; var hasValue = value != null; return /*#__PURE__*/React.createElement(FormControl, null, /*#__PURE__*/React.createElement(Select, _extends({ variant: "standard", autoWidth: true, displayEmpty: true, placeholder: !readonly ? placeholder : "", onChange: onChange, value: hasValue ? value : "", disabled: readonly, readOnly: readonly, renderValue: renderValue, size: renderSize }, omit(customProps, ["showSearch", "input"])), renderOptions())); });