Skip to content

Commit 9bd1a89

Browse files
authored
Fix disabled re-enablement (#1286)
1 parent 11970a1 commit 9bd1a89

File tree

6 files changed

+53
-7
lines changed

6 files changed

+53
-7
lines changed

inst/components/dist/components.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

inst/components/dist/components.js.map

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

inst/components/dist/components.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

inst/components/dist/components.min.js.map

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

srcts/src/components/toolbarInputButton.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class BslibToolbarInputButtonBinding extends InputBinding {
5858

5959
async receiveMessage(el: HTMLElement, message: ToolbarInputButtonMessage) {
6060
// Update disabled state
61-
if (hasDefinedProperty(message, "disabled") && message.disabled) {
61+
if (hasDefinedProperty(message, "disabled")) {
6262
(el as HTMLButtonElement).disabled = message.disabled;
6363
}
6464

tests/testthat/test-toolbar.R

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -976,3 +976,49 @@ test_that("update_toolbar_input_button() warns for blank label", {
976976
"non-empty string label"
977977
)
978978
})
979+
980+
test_that("update_toolbar_input_button() can disable and reenable button", {
981+
# Mock session that captures sendInputMessage calls
982+
session <- list(
983+
sendInputMessage = function(id, message) {
984+
session$last_id <<- id
985+
session$last_message <<- message
986+
}
987+
)
988+
989+
# Test disabling a button
990+
update_toolbar_input_button(
991+
"test_btn",
992+
label = "Test Button",
993+
disabled = TRUE,
994+
session = session
995+
)
996+
997+
expect_equal(session$last_id, "test_btn")
998+
expect_equal(session$last_message$disabled, TRUE)
999+
1000+
# Test re-enabling a button
1001+
update_toolbar_input_button(
1002+
"test_btn",
1003+
label = "Test Button",
1004+
disabled = FALSE,
1005+
session = session
1006+
)
1007+
1008+
expect_equal(session$last_id, "test_btn")
1009+
expect_equal(session$last_message$disabled, FALSE)
1010+
1011+
# Test updating multiple properties including disabled state
1012+
update_toolbar_input_button(
1013+
"test_btn",
1014+
label = "Updated",
1015+
icon = shiny::icon("check"),
1016+
disabled = TRUE,
1017+
session = session
1018+
)
1019+
1020+
expect_equal(session$last_id, "test_btn")
1021+
expect_equal(session$last_message$disabled, TRUE)
1022+
expect_true(!is.null(session$last_message$label))
1023+
expect_true(!is.null(session$last_message$icon))
1024+
})

0 commit comments

Comments
 (0)