bananas-commerce-admin
Version:
What's this, an admin for apes?
23 lines • 1.85 kB
JavaScript
import React, { useCallback, useState } from "react";
import { FormHelperText, Stack } from "@mui/material";
import FormControl from "@mui/material/FormControl";
import Grid from "@mui/material/Grid2";
import InputLabel from "@mui/material/InputLabel";
import MenuItem from "@mui/material/MenuItem";
import Select from "@mui/material/Select";
import { useCardContext } from "../../contexts/CardContext";
import LabeledValue from "../LabeledValue";
export const CardFieldSelect = ({ emptyValue, fallback = "—", fallbackPredicate = (value) => value != null && value !== "", formName, helperText, isDisabled = false, isEditable = true, isReadable = true, label, options, required = false, size = "grow", value: defaultValue = undefined, ...props }) => {
const { isCompact, isEditing } = useCardContext();
const [value, setValue] = useState(defaultValue?.label ?? emptyValue?.label ?? "");
const handleChange = useCallback((event) => {
setValue(event.target.value);
}, [setValue]);
return (React.createElement(Grid, { size: size }, isEditing && isEditable ? (React.createElement(Stack, { direction: "column" },
React.createElement(FormControl, { fullWidth: true },
React.createElement(InputLabel, null, label),
React.createElement(Select, { disabled: isDisabled, label: label, name: formName, required: required, value: value, onChange: handleChange, ...props }, options?.map((opt) => (React.createElement(MenuItem, { key: opt.id, value: opt.label }, opt.label))))),
helperText != null && React.createElement(FormHelperText, { sx: { mb: 1 } }, helperText))) : (isReadable && (React.createElement(LabeledValue, { compact: isCompact, label: label, value: fallbackPredicate(value) ? value : fallback })))));
};
export default CardFieldSelect;
//# sourceMappingURL=CardFieldSelect.js.map