NEWS.md
magrittr dependency and the %>% pipe operator it re-exported (part of #43). condformat now requires R >= 4.1 and its own examples, tests and vignette use the native base R pipe (|>) instead. If your code relied on library(condformat) making %>% available, either library(magrittr) yourself or switch to |>.gridExtra, gtable, openxlsx and rmarkdown from Imports to Suggests. These are each only needed for one specific, optional output path: openxlsx for condformat2excel()/condformat2excelsheet(), gridExtra/gtable for condformat2grob()/theme_grob(), and rmarkdown for LaTeX/PDF output via knit_print(). If you only ever use condformat’s default HTML/RStudio-viewer printing, you no longer need to install any of these. Calling one of the functions above without the corresponding package installed now stops with a clear install.packages(...) hint instead of a generic “there is no package called” error, or (for rmarkdown) failing deep inside knit_print().dplyr (>= 1.1.4), gtable (>= 0.3.6), htmlTable (>= 2.4.3), htmltools (>= 0.5.8.1), knitr (>= 1.50), openxlsx (>= 4.2.8), rmarkdown (>= 2.29), rlang (>= 1.1.6), scales (>= 1.4.0), tibble (>= 3.3.0), tidyselect (>= 1.2.1), shiny (>= 1.11.1), testthat (>= 3.2.3) and vdiffr (>= 1.0.8). gridExtra’s floor (>= 2.3) is unchanged, as that release is still the latest on CRAN as of a year ago.rule_fill_bar() is now supported in Excel output, rendered using Excel’s own native data bar conditional formatting (coloured with low) instead of being dropped with an “unsupported rule” warning. This only applies when expression is left at its default (or explicitly .col), since Excel data bars always reflect a cell’s own displayed value against a range and can’t replicate an arbitrary custom expression; in that case the data bar itself is skipped (with a warning) but the flat background/na.value cell colours are still applied, as before.condformat2excelsheet(), which writes a condformat table into a worksheet of an openxlsx workbook you’re already building, without creating or saving the workbook itself (closes #25). Its docs show how to combine condformat’s own cell styling with your own openxlsx::addStyle() calls (e.g. a number format) via stack = TRUE, since addStyle() replaces existing styles by default..col pronoun usable in the expression argument of rule_fill_discrete(), rule_fill_gradient(), rule_fill_gradient2(), rule_fill_bar(), rule_text_bold(), rule_text_color() and rule_css(). When columns selects more than one column, .col is bound to each column’s own values in turn, so a single rule call can format several columns based on each one’s own condition (closes #19): rule_fill_discrete(c(Sepal.Length, Sepal.Width), .col > 3) is now equivalent to chaining the rule once per column. expression now also defaults to .col when omitted, replacing the previous behaviour of silently using only the first selected column (with a warning) when no expression was given for a multi-column selection.condformat2excel()/condformat2excelsheet() silently discarding any pre-existing cell formatting on every export — including a Date column’s automatic format from openxlsx::writeData() — even for cells with no condformat rule applied to them. condformat2excelsheet()’s own styling now uses stack = TRUE internally, so it merges with, rather than replaces, formatting that was already there (related to #25).lockcells = TRUE being ignored (or worse, unlocking cells) for LaTeX and grob/gtable output in rule_fill_discrete(), rule_fill_gradient(), rule_fill_gradient2(), rule_text_bold() and rule_text_color(). HTML and Excel output were not affected.theme_htmlTable() discarding arguments accumulated from earlier theme_htmlTable() calls in the same pipeline, due to a %in% check against list values instead of list names.rule_fill_bar()’s na.value never being applied to background-color in HTML output: the CSS mask used to gate that assignment already excluded NA cells, so the assignment was dead code.rule_fill_bar() erroring in grob/gtable output when a value rescaled to exactly 0% of the bar width (colorRampPalette() can’t return zero colours); such cells now render with just the background colour.rule_fill_bar()’s lockcells = TRUE not protecting NA cells from later CSS/HTML rules, and not protecting any cell (NA or not) from later grob/gtable rules: the grob/gtable renderer painted every targeted cell unconditionally and never checked incoming lock state at all.rule_text_bold(), rule_text_color() and rule_css() erroring when expression evaluates to a single (scalar) value on a table with more than one row, unlike rule_fill_discrete(), rule_fill_gradient(), rule_fill_gradient2() and rule_fill_bar(), which already recycled such values to every row.inst/shinyexample/): requireNamespace() now passes quietly = TRUE, so it no longer prints a package-startup message every time the optional colourpicker dependency isn’t installed. Also modernised the legacy shinyUI()/shinyServer() wrappers to the current ui <- ... / server <- function(input, output) {...} style.theme_grob() documentationcondformat2grob() function takes an optional draw=TRUE parameter which controls whether the grob is immediately drawn during the function call. draw=FALSE allows easier use in composite figures with gridExtra::grid.arrange() or ggpubr::ggarrange() (@interzoneboy, #31)tidyselect::vars_select() (questioning) with tidyselect::eval_select()
rule_fill_bar (HTML, for now)rule_text_bold (HTML, PDF)rule_text_color (HTML, PDF)theme_htmlWidget (HTML) Customize the number of entries and the widget size.theme_kable (PDF) pass options to kabletheme_caption (HTML, PDF) Set a caption.condformat2grob: Engine to render tables as graphicsrenderCondformat works with “async” promises (if htmlwidgets 1.3 is available)theme_htmlTable now only accepts arguments to be passed to htmlTable::htmlTable. Before, it could also be used to accept number_of_entries, width, height… to customize the widget appearance. For that use case, please use theme_htmlWidget instead.condformat2widget will not accept arguments to customize the appearance of the widget. Use theme_htmlWidget instead.rule_css to let the user specify arbitrary CSS fields. For this rule there is no support for PDF or Excel output.condformat2excel to export to a specific Excel sheet (#11)condformat2latex and add regression test (#9)rescale and rescale_mid calls (recent scales use a S3 generic, so we need to import it)theme_htmlTable() now accepts the css.cell argument (thanks to 鱼飞灰 for reporting it)htmlTable. Improve/fix printing of condformatcondformatOutput and renderCondformat. Closes #3.
htmlTable package is installed.NULL when printing. Closes #4.80440ecfd16fb74e3e0aa4c6ebc623ad2ae74b15, reported in #7)