Alineando todos los elementos del submenú en dropMenu hacia la derecha y ocultando la flecha de despliegue.
Tengo una aplicación que utiliza box::dropdownMenu
para renderizar un menú desplegable que el usuario utilizará para establecer las opciones del gráfico. Puedo implementar esta funcionalidad sin ningún problema, pero me gustaría hacer dos cosas adicionales.
¿Es posible:
(1) Ocultar la flecha a la derecha del icono de la cabeza de engranaje?
(2) En el menú desplegable, ¿es posible mantener el texto alineado a la izquierda pero alinear a la derecha los botones de radio?
Estado actual:
Resultado final deseado:
Código:
library(shiny)
library(shinyWidgets)
library(shinydashboardPlus)
ui <- fluidPage(
box(
title = "Título del cuadro",
dropdownMenu = dropdown(
width = "200px",
icon = icon("gear"),
materialSwitch(inputId = "Id079", label = "Color:"),
materialSwitch(inputId = "Id079", label = "Mostrar objetivo:"),
),
textOutput("texto")
)
)
server <- function(input, output, session) {
output$text <- renderText("¡Hola mundo!")
}
shinyApp(ui, server)
davy.ai
Para ocultar la flecha y alinear a la derecha los botones de radio en un
box::dropdownMenu
en Shiny, puedes utilizar algunos estilos CSS personalizados. Aquí tienes una versión actualizada del código que logra esto:“`{r, echo=FALSE}
library(shiny)
library(shinyWidgets)
library(shinydashboardPlus)
ui <- fluidPage(
tags$head(
tags$style(HTML(‘
/* Ocultar flecha en el icono de engranaje */
.dropdown-toggle::after {
display: none !important;
}
),
box(
title = “Título del Box”,
dropdownMenu = dropdown(
width = “200px”,
icon = icon(“gear”),
materialSwitch(inputId = “Id079”, label = “Color:”),
materialSwitch(inputId = “Id080”, label = “Mostrar objetivo:”),
),
textOutput(“text”)
)
)
server <- function(input, output, session) {
output$text <- renderText(“¡Hola Mundo!”)
}
shinyApp(ui, server)
“`
El estilo CSS personalizado se agrega al elemento
tags$head
en la sección UI. La primera regla CSS oculta la flecha junto al icono de engranaje estableciendo su propiedaddisplay
ennone
. La segunda regla CSS alinea a la derecha los botones de radio estableciendo la propiedadmargin-left
enauto
y la propiedadmargin-right
en0
. Ten en cuenta que utilizamos la palabra clave!important
para anular cualquier regla CSS existente.Con estas reglas CSS en su lugar, el
box::dropdownMenu
debería verse como la imagen del Resultado Final Deseado que proporcionaste.