Skip to content

Commit f51236e

Browse files
author
Rankin Zheng
committed
Add select all checkbox to ChatMark component
1 parent d9e2a35 commit f51236e

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

src/views/components/ChatMark/index.tsx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,8 @@ const ChatMark = ({ children, value, messageDone, submit = 'Submit', cancel = 'C
123123
widget["value"] = event.currentTarget.value;
124124
widgetsHandlers.setItem(index, widget);
125125
};
126+
const allChecked = widgets.every((w) => w.type === "checkbox" ? w.value === "checked" : true);
127+
const indeterminate = widgets.some((w) => w.type === "checkbox" ? w.value === "checked" : false) && !allChecked;
126128

127129
useEffect(() => {
128130
const lines = children.split("\n");
@@ -219,6 +221,7 @@ const ChatMark = ({ children, value, messageDone, submit = 'Submit', cancel = 'C
219221
let radioGroupTemp: any = [];
220222
let radioValuesTemp: any = [];
221223
let wdigetsTemp: any = [];
224+
let isFirstCheckbox = true;
222225
widgets.map((widget, index) => {
223226
if (widget.type === "text") {
224227
wdigetsTemp.push(<Text key={index}>{widget.value}</Text>);
@@ -238,6 +241,23 @@ const ChatMark = ({ children, value, messageDone, submit = 'Submit', cancel = 'C
238241
</Button>
239242
);
240243
} else if (widget.type === "checkbox") {
244+
if(isFirstCheckbox) {
245+
wdigetsTemp.push(<Checkbox
246+
classNames={{ root: classes.checkbox, label: classes.label }}
247+
disabled={disabled}
248+
key={"widget-all-" + index}
249+
label={"Select all"}
250+
size="xs"
251+
checked={allChecked}
252+
indeterminate={indeterminate}
253+
onChange={() =>
254+
widgetsHandlers.setState((current) =>
255+
current.map((w) => ( w.type==="checkbox" ? { ...w, value: allChecked ? "unchecked" : "checked" } : w ))
256+
)
257+
}
258+
/>);
259+
isFirstCheckbox = false;
260+
}
241261
wdigetsTemp.push(
242262
<Checkbox
243263
classNames={{ root: classes.checkbox, label: classes.label }}

0 commit comments

Comments
 (0)