selectizeInput eliminando los caracteres “an” de las cadenas en las opciones del menú desplegable.
Estoy construyendo una aplicación brillante donde los usuarios tienen que seleccionar ciudades para mostrar en un mapa. Hay muchas ciudades en mi base de datos, así que estoy utilizando widgets selectizeInput, con la idea de que los usuarios puedan escribir ciudades en la caja de texto para seleccionar.
Sin embargo, algo extraño está sucediendo cuando comienzo a escribir en la caja de búsqueda, las opciones de ciudad parecen tener caracteres faltantes. Específicamente, los caracteres “an” parecen estropear las cosas: “San Antonio” y “San Diego” se muestran como “S Antonio” y “S Diego”, y “Santa Ana” se muestra como “Sta Ana”. Agregué “Tánger” para ver qué sucede con una “an” que no sigue a una “S”, y aparece como “Tan”, así que estoy bastante confundido en general. ¿Alguien sabe por qué está sucediendo esto o cómo solucionarlo?
NOTA: este error no se muestra en el menú desplegable hasta que escribes ciertos caracteres (creo nuevamente, “an”). Por ejemplo, si escribes “San Diego” o “Nueva York”, puedes seleccionar estas ciudades y no ocurren errores, pero si escribes “San An-” o “Santa An-“, entonces las cosas comienzan a ponerse extrañas.
Reprex a continuación:
library(shiny)
ui <- fluidPage(
# Título de la aplicación
titlePanel("test app"),
# Barra lateral con un control deslizante para el número de bins
sidebarLayout(
sidebarPanel(
HTML("Escribe 'San Antonio' o 'Santa Ana' para reproducir el error."),
selectizeInput(
inputId = "test_city_3",
label = "Ciudad de referencia 3",
choices = c("San Antonio","Santa Ana", "Santa Cruz","Chicago",
"Nueva York","San Diego","Tánger"),
options = list(placeholder = "Ciudad de referencia 3")
)
),
# Mostrar un gráfico de la distribución generada
mainPanel(
)
)
)
# Define la lógica del servidor requerida para dibujar un histograma
server <- function(input, output) {
}
# Ejecuta la aplicación
shinyApp(ui = ui, server = server)
davy.ai
Parece que el problema está relacionado con la biblioteca selectize.js, la cual es utilizada por el widget selectizeInput en aplicaciones Shiny. Selectize.js tiene una función llamada “smart highlighting” (resaltado inteligente), la cual intenta resaltar los términos de búsqueda en los resultados, pero en algunos casos parece resaltar los caracteres incorrectos.
Una solución a este problema es desactivar el resaltado inteligente estableciendo la opción “highlight” en FALSE. Por ejemplo, el código selectizeInput en el reprex anterior podría ser modificado de la siguiente manera:
Esto debería evitar que selectize.js resalte los términos de búsqueda y mostrar los nombres de las ciudades correctamente en las opciones del menú desplegable.