reactable icon indicating copy to clipboard operation
reactable copied to clipboard

How I can center the header of columns?

Open Jorge-hercas opened this issue 3 years ago • 4 comments

Hi and thanks for reading me

I am working on some tables with the "reactable" package in r, but I would like to center only the headings of each column. For example:

library(reactable)
reactable(iris,
          defaultColDef = colDef(
            header = function(value) gsub(".", " ", value, fixed = TRUE),
            cell = function(value) format(value, nsmall = 1),
            align = "center",
            minWidth = 70,
            headerStyle = list(background = "#12a09a")
          ))

Apparently the option colDef(align = "center") centers the entire column, but is there an option to only center the title?

Jorge-hercas avatar Sep 03 '21 19:09 Jorge-hercas

Hi, there's no option to align headers individually, and it's rare enough that an option probably won't be added in the future. It may be possible to align headers individually using custom styles, but unfortunately, I haven't found a good way to do that yet. I think you'd have to override some internal CSS right now, which would likely break in a future release.

glin avatar Sep 19 '21 17:09 glin

I do this in the following way

      randomColumn = colDef(
        headerStyle = list(display = "flex", justifyContent = "center"))

lukr90 avatar Sep 23 '21 10:09 lukr90

I do this in the following way

      randomColumn = colDef(
        headerStyle = list(display = "flex", justifyContent = "center"))

This approach does not work for me. Have there been any updates that allow a user to center the column header but not the column data?

judytlewis avatar Apr 18 '24 16:04 judytlewis

@judytlewis I'm doing it this way on my end.

Basically passing headerStyle in a theme like

reactableTheme(
  headerStyle = list("align-items" = "center", "text-align" = "center")
)

:warning: I have not tested it in an individual column as I want to keep styling consistent across all of the tables

library(shiny)
library(reactable)


my_table_theme <- reactableTheme(
  headerStyle = list("align-items" = "center", "text-align" = "center")
)

modified_iris <- iris
colnames(modified_iris) <- c(
  "123 456",
  "123 456 789",
  "123 456 789 012",
  "123 456 789 012 345",
  "123 456 789 012 345 678 123 456 789 012 345 678"
)

ui <- fluidPage(
  div(
    style = "width: 50%",
    reactableOutput("table")
  )
)


server <- function(input, output, session) {
  output$table <- renderReactable({
    reactable(
      data = modified_iris,
      theme = my_table_theme
    )
  })
}

shinyApp(ui, server)

image

federiva avatar Apr 19 '24 14:04 federiva