Breaking changes
-
.expect_inverse()
for Navset controllers inshiny.playwright.controllers
now requires abool
value. To keep behavior the same, use.expect_inverse(False)
. (#1668) -
.expect_layout()
for Navset controllers inshiny.playwright.controllers
is now renamed to.expect_fluid()
and requires abool
value. To keep behavior the same, use.expect_fluid(True)
(#1668) -
.expect_icon()
for Accordion controllers inshiny.playwright.controllers
now requires abool
value instead of astr
. (#1710)
New features
-
New features for
@render.data_frame
:-
Added narwhals support for
@render.data_frame
. This allows for any eager data frame supported by narwhals to be returned from a@render.data_frame
output method. All internal methods and helper methods now leverage thenarwhals
API to be data frame agnostic. (#1570) -
Added
.data_patched()
reactive calculation that applies all.cell_patches()
to.data()
. (#1719) -
Added
.update_cell_value()
method to programmatically update the contents of a data frame cell. (#1719) -
Added
.update_data()
method to update the rendered data without resetting any user sort or filter. Note, all user edits will be forgotten. (#1719)
-
-
Added narwhals support for
@render.table
. This allows for any eager data frame supported by narwhals to be returned from a@render.table
output method. (#1570) -
Shiny now supports theming via brand.yml with a single
_brand.yml
file. Callui.Theme.from_brand()
with__file__
or the path to a_brand.yml
file and pass the resulting theme to thetheme
argument ofexpress.ui.page_opts()
(Shiny Express) orui.page_*()
functions (Shiny Core) to apply the brand theme to the entire app. (#1743) -
chat_ui()
andChat.ui()
gain amessages
parameter for providing starting messages. (#1736)
Other changes
-
Incorporated
orjson
for faster data serialization in@render.data_frame
outputs. (#1570) -
Added
PageNavbar
class to the list ofshiny.playwright.controllers
for testingui.page_navbar()
. (#1668) -
Added
.expect_widths()
toNavsetPillList
inshiny.playwright.controllers
for testingui.navset_pill_list(widths=)
. (#1668) -
Added
.expect_title()
forPopover
inshiny.playwright.controllers
(#1683) -
Added
.expect_disabled()
forInputActionButton
inshiny.playwright.controllers
(#1705) -
Small improvements to the default pulse busy indicator to better blend with any background. It's also now slightly smaller by default.(#1707)
-
Added
.expect_class()
,.expect_gap()
,.expect_bg_color()
,.expect_desktop_state()
,.expect_mobile_state()
,.expect_mobile_max_height()
,.expect_title()
, and.expect_padding()
forSidebar
inshiny.playwright.controllers
(#1715) -
Modified
.expect_text()
forSidebar
inshiny.playwright.controllers
to use.loc_content
instead ofloc
for text. Also modified.expect_width()
to check the.loc_container
's style instead of the.loc
element. (#1715) -
Modified
.expect_text()
and.expect_width()
forSidebar
inshiny.playwright.controllers
to useloc_content
instead ofloc
for text. (#1715) -
Added
.expect_class()
and.expect_multiple()
forAccordion
inshiny.playwright.controllers
(#1710)
Bug fixes
-
A few fixes for
ui.Chat()
, including: -
shiny create
now uses the templateid
rather than the directory name as the default directory. (#1666) -
ui.Theme()
now works correctly on Windows when the theme requires Sass compilation. (Thanks, @yuuuxt!) (#1684) -
Fixed multiple input controllers (
InputSlider
,InputDate
,InputDateRange
,InputCheckbox
, andInputCheckboxGroup
) inshiny.playwright.controller
to check thewidth
property within thestyle
attribute. (#1691, #1696, #1702) -
Fixed multiple input controllers (
InputSwitch
,InputRadioButtons
,InputNumeric
,InputText
,InputTextArea
,InputPassword
,InputActionButton
, andInputActionLink
) inshiny.playwright.controller
to correctly validate thewidth
style property in `.expect_width(). (#1705) -
Fixed input controller
InputTextArea
inshiny.playwright.controller
to correctly validate theresize
style property in.expect_resize()
. (#1705) -
Fixed a bug in
ui.conditional_panel()
that would cause the panel to repeatedly show/hide itself when the provided condition did not evaluate to a boolean value. (#1707) -
Fixed a bug with
ui.input_slider()
when used as a range slider that made it impossible to change the slider value when both handles were at the maximum value. (#1707) -
Fixed bug in
@render.data_frame
wherebool
orobject
columns were not being rendered. (#1570) -
Fixed output controller
OutputDataFrame
inshiny.playwright.controller
to correctly assert the number of rows in.expect_nrow()
as the total number of virtual rows, not the number of currently displaying rows. (#1719) -
Fixed issue where
@render.download
did not respect the module namespacing. (Thanks, @nsiicm0!) (#1732) -
Added workaround in
Accordion
inshiny.playwright.controller
where.expect_open()
and.expect_panels()
would hang while resolving a playwright locator. (Thanks, @joesho112358!) (#1165)