Quiero lograr que la ventana emergente, respectivamente, el menú de un TextField con la propiedad 'seleccionar' cambie el color de fondo. Seguí las instrucciones de los documentos de personalización de MUI . Tuve éxito al cambiar, es decir, el color del texto y la etiqueta de un TextField con el siguiente código.
const useStyles = makeStyles({ root: { color: "azure", '& .MuiInputLabel-root': { color: "#adadad",} } }) const TextFieldBar = (props) => { const classes = useStyles(); return ( <Stack className={classes.root} > <TextField select > <MenuItem> Option 1 </MenuItem> <MenuItem> Option 2 </MenuItem> <MenuItem> Option 3 </MenuItem> </TextField> </Stack> ) } Pero me quedo atascado cuando trato de cambiar algo de la ventana emergente cuando hace clic en un componente Select . Debo mencionar que no es exactamente un componente Seleccionar ya que estoy usando un TextField con la propiedad 'seleccionar'. Entonces mi pregunta es, qué clase debo usar para cambiar el fondo. Inspeccioné el elemento html y probé todas las clases aplicadas como en el siguiente fragmento, pero sin éxito.
const useStyles = makeStyles({ root: { '& .MuiPaper-root': {background: 'black'}; //doesn't work '& .MuiPaper-rounded': {background: 'black'}; //doesn't work '& .MuiPaper-elevation': {background: 'black'}; //doesn't work . . . } })Creo que todavía no entendía el sistema detrás de la personalización de los componentes de MUI. Es solo una suposición, pero tal vez no pueda acceder al elemento html ya que el popover/menú no es un elemento secundario del componente Stack o TextField en el que aplico mis estilos personalizados.
Estoy usando
Gracias por adelantado.
El Paper no está dentro de Select en el árbol DOM, de forma predeterminada usa el portal para mostrar la lista del menú, por eso, no puede apuntar al nombre de clase descendente a menos que use MenuProps.disablePortal . Para superar eso, MUI proporciona MenuProps para que pueda pasar los accesorios al Paper incluido el className :
<TextField select label="Select" SelectProps={{ MenuProps: { PaperProps: { className: classes.paper } } }} Ya que está usando v5 , también puede usar sx prop . Tenga en cuenta que el equipo de MUI no recomienda usar makeStyles porque está obsoleto y puede eliminarse en futuras versiones:
<TextField select label="Select" SelectProps={{ MenuProps: { PaperProps: { sx: { backgroundColor: "pink", color: "red" } } } }}Use classes o emotion styled en lugar de makeStyles
Menú Documentos MenuItem Documentos
Clases:
<MenuItem classes={{...}} > ... </MenuItem>