Skip to content

Commit 673be3d

Browse files
authored
Follow up to #3996: fix front-end checkbox label updating logic (#4238)
* Follow up to #3996: fix front-end checkbox label updating logic * More descriptive name
1 parent b25e6fe commit 673be3d

File tree

6 files changed

+38
-27
lines changed

6 files changed

+38
-27
lines changed

inst/www/shared/shiny.js

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

inst/www/shared/shiny.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/www/shared/shiny.min.js

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

inst/www/shared/shiny.min.js.map

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

srcts/src/bindings/input/checkbox.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
import $ from "jquery";
2+
import type { HtmlDep } from "../../shiny/render";
3+
import { renderContent } from "../../shiny/render";
24
import { hasDefinedProperty } from "../../utils";
35
import { InputBinding } from "./inputBinding";
46

57
type CheckedHTMLElement = HTMLInputElement;
68

79
type CheckboxChecked = CheckedHTMLElement["checked"];
8-
type CheckboxReceiveMessageData = { value?: CheckboxChecked; label?: string };
10+
type CheckboxReceiveMessageData = {
11+
value?: CheckboxChecked;
12+
label?: { html: string; deps: HtmlDep[] };
13+
};
914

1015
class CheckboxInputBinding extends InputBinding {
1116
find(scope: HTMLElement): JQuery<HTMLElement> {
@@ -32,18 +37,19 @@ class CheckboxInputBinding extends InputBinding {
3237
value: el.checked,
3338
};
3439
}
35-
receiveMessage(
40+
async receiveMessage(
3641
el: CheckedHTMLElement,
3742
data: CheckboxReceiveMessageData
38-
): void {
43+
): Promise<void> {
3944
if (hasDefinedProperty(data, "value")) {
4045
el.checked = data.value;
4146
}
4247

4348
// checkboxInput()'s label works different from other
4449
// input labels...the label container should always exist
4550
if (hasDefinedProperty(data, "label")) {
46-
$(el).parent().find("span").text(data.label);
51+
const labelSpan = $(el).parent().find("span");
52+
await renderContent(labelSpan, data.label);
4753
}
4854

4955
$(el).trigger("change");

srcts/types/src/bindings/input/checkbox.d.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1+
import type { HtmlDep } from "../../shiny/render";
12
import { InputBinding } from "./inputBinding";
23
type CheckedHTMLElement = HTMLInputElement;
34
type CheckboxChecked = CheckedHTMLElement["checked"];
45
type CheckboxReceiveMessageData = {
56
value?: CheckboxChecked;
6-
label?: string;
7+
label?: {
8+
html: string;
9+
deps: HtmlDep[];
10+
};
711
};
812
declare class CheckboxInputBinding extends InputBinding {
913
find(scope: HTMLElement): JQuery<HTMLElement>;
@@ -15,7 +19,7 @@ declare class CheckboxInputBinding extends InputBinding {
1519
label: string;
1620
value: CheckboxChecked;
1721
};
18-
receiveMessage(el: CheckedHTMLElement, data: CheckboxReceiveMessageData): void;
22+
receiveMessage(el: CheckedHTMLElement, data: CheckboxReceiveMessageData): Promise<void>;
1923
}
2024
export { CheckboxInputBinding };
2125
export type { CheckedHTMLElement, CheckboxReceiveMessageData };

0 commit comments

Comments
 (0)