flowmapblue.R icon indicating copy to clipboard operation
flowmapblue.R copied to clipboard

Intrusive CSS in shiny app

Open PaulC91 opened this issue 1 year ago • 2 comments

Hi, thanks for this great visualisation library! I noticed when adding a flowmap to a shiny dashboard that the CSS styling is being applied to the entire html document and overwriting my own CSS rules, causing issues. See example below of before and after adding a flowmap to the dashboard:

# empty dashboard
library(shiny)
library(bslib)

ui <- page_sidebar(
  theme = bs_theme(version = 5L, base_font = "serif"),
  title = "Flowmap Blue",
  sidebar = sidebar(title = "My Sidebar"),
  card(
    card_header("My Card"),
    card_body("Placeholder")
  )
)

server <- function(input, output, session) {}

shinyApp(ui, server)
Screenshot 2024-11-10 at 10 09 18
# add a flowmap
library(shiny)
library(bslib)
library(flowmapblue)

ui <- page_sidebar(
  theme = bs_theme(version = 5L, base_font = "serif"),
  title = "Flowmap Blue",
  sidebar = sidebar(title = "My Sidebar"),
  card(
    card_header("My Card"),
    card_body(flowmapblueOutput("flowmap"))
  )
)

server <- function(input, output, session) {
  output$flowmap <- renderFlowmapblue({
    flowmapblue(
      locations = ch_locations,
      flows = ch_flows,
      mapboxAccessToken = Sys.getenv('MAPBOX_ACCESS_TOKEN'),
      clustering = TRUE,
      darkMode = TRUE,
      animation = FALSE
    )
  })
}

shinyApp(ui, server)
Screenshot 2024-11-10 at 10 10 21

You can see that the flowmap background colour has been applied to the entire document body, fonts have changed and the flowmap has filled the entire card element, hiding the header title area.

Is there a way to ensure any flowmap styling is only applied within its container (the card body in this case) ?

Thanks!

PaulC91 avatar Nov 10 '24 09:11 PaulC91

Not sure if there's a workaround for the current version, but I'll keep this in mind for the next one so that the styles are isolated.

ilyabo avatar Nov 10 '24 10:11 ilyabo

@ilyabo I am guessing this is related to #14 and the fact that CSS is hardcoded into the https://github.com/FlowmapBlue/flowmapblue.R/blob/master/inst/htmlwidgets/lib/flowmap-blue.min.js file, unlike other htmlwidget-based packages, e.g. here https://github.com/davidgohel/ggiraph/tree/master/inst/htmlwidgets/lib/ggiraphjs-0.8.10

e-kotov avatar Nov 10 '24 12:11 e-kotov