import { MoveStyleUtils, Rock } from "@ruiapp/move-style"; import { Checkbox, Space } from "antd"; import { RapidCheckboxListFormInputRockConfig } from "./rapid-checkbox-list-form-input-types"; import RapidCheckboxListFormInputMeta from "./RapidCheckboxListFormInputMeta"; import { filter, get, isObject, map } from "lodash"; import type { CheckboxGroupProps, CheckboxOptionType } from "antd/lib/checkbox"; import { CSSProperties, useMemo } from "react"; import "./RapidCheckboxListFormInput.css"; import { cx } from "../../utils/classname-utility"; export default { $type: "rapidCheckboxListFormInput", Renderer(context, props: RapidCheckboxListFormInputRockConfig) { const { scope } = context; const { groupByFieldName, listTextFormat } = props; let groupItems = []; if (props.groupDataSourceCode || props.groupsDataSourceCode) { groupItems = scope.stores[props.groupDataSourceCode || props.groupsDataSourceCode]?.data?.list; } else { groupItems = props.groupItems || props.groupDataSource?.data?.list || props.groupsDataSource?.data?.list; } let listItems = []; if (props.listDataSourceCode) { listItems = scope.stores[props.listDataSourceCode]?.data?.list; } else { listItems = props.listItems || props.listDataSource?.data?.list; } const listTextFieldName = props.listTextFieldName || "name"; const listValueFieldName = props.listValueFieldName || "id"; const listDisabledFieldName = props.listDisabledFieldName || "disabled"; const groupTextFieldName = props.groupTextFieldName || "name"; const groupValueFieldName = props.groupValueFieldName || "id"; let selectedValue: string[]; if (props.valueFieldName) { selectedValue = map(props.value, (item) => { if (isObject(item)) { return get(item, props.valueFieldName); } return item; }); } else { selectedValue = props.value; } const antdProps: CheckboxGroupProps = { disabled: props.disabled, value: selectedValue, onChange: props.onChange, style: { width: "100%" }, }; const checkboxList = useMemo(() => { if (groupByFieldName) { return map(groupItems, (group, index) => { const groupValue = get(group, groupValueFieldName) || index; const itemsInGroup = filter(listItems, (item) => get(item, groupByFieldName) === groupValue); return (