UNPKG

@react-awesome-query-builder/mui

Version:
75 lines 2.8 kB
import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import React from "react"; import IconButton from "@mui/material/IconButton"; import ExpandMoreSharpIcon from "@mui/icons-material/ExpandMoreSharp"; import FormControl from "@mui/material/FormControl"; import FormLabel from "@mui/material/FormLabel"; import Menu from "@mui/material/Menu"; import MenuItem from "@mui/material/MenuItem"; import Check from "@mui/icons-material/Check"; import ListItemIcon from "@mui/material/ListItemIcon"; import ListItemText from "@mui/material/ListItemText"; export default (function (_ref) { var valueSources = _ref.valueSources, valueSrc = _ref.valueSrc, title = _ref.title, setValueSrc = _ref.setValueSrc, readonly = _ref.readonly; var _React$useState = React.useState(null), _React$useState2 = _slicedToArray(_React$useState, 2), anchorEl = _React$useState2[0], setAnchorEl = _React$useState2[1]; var handleOpen = function handleOpen(event) { setAnchorEl(event.currentTarget); }; var handleClose = function handleClose() { setAnchorEl(null); }; var toggleOpenClose = function toggleOpenClose(event) { anchorEl ? handleClose() : handleOpen(event); }; var handleChange = function handleChange(_e, srcKey) { setValueSrc(srcKey); handleClose(); }; var renderOptions = function renderOptions(valueSources) { return valueSources.map(function (_ref2) { var _ref3 = _slicedToArray(_ref2, 2), srcKey = _ref3[0], info = _ref3[1]; var isSelected = valueSrc == srcKey || !valueSrc && srcKey == "value"; var onClick = function onClick(e) { return handleChange(e, srcKey); }; return /*#__PURE__*/React.createElement(MenuItem, { key: srcKey, value: srcKey, selected: isSelected, onClick: onClick }, !isSelected && /*#__PURE__*/React.createElement(ListItemText, { inset: true }, info.label), isSelected && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ListItemIcon, null, /*#__PURE__*/React.createElement(Check, null)), info.label)); }); }; var open = Boolean(anchorEl); return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(IconButton, { size: "small", onClick: toggleOpenClose }, /*#__PURE__*/React.createElement(ExpandMoreSharpIcon, null)), /*#__PURE__*/React.createElement(Menu, { anchorEl: anchorEl, open: open, onClose: handleClose }, /*#__PURE__*/React.createElement(FormControl, { component: "fieldset", sx: { p: 0 } }, /*#__PURE__*/React.createElement(FormLabel, { component: "legend", sx: { p: 2, pt: 0, pb: 1 } }, title), renderOptions(valueSources)))); });