@hisptz/react-ui
Version:
A collection of reusable complex DHIS2 react ui components.
72 lines • 2.29 kB
JavaScript
import { find } from "lodash";
import React from "react";
import CustomAccordion from "./components/CustomAccordion";
import DataSource from "./components/DataSource";
export default function DataConfigurationArea(_ref) {
let {
groups,
onItemClick,
editableTitle,
onGroupTitleEdit,
deletableGroups,
onGroupDelete,
onItemDelete,
deletableItems,
groupFooter,
draggableItems,
onItemDragEnd,
selectedItems,
titleRightAdornment,
defaultExpanded
} = _ref;
return /*#__PURE__*/React.createElement("div", {
className: "column"
}, groups.map((_ref2, groupIndex) => {
let {
id: groupId,
name,
items
} = _ref2;
return /*#__PURE__*/React.createElement(CustomAccordion, {
defaultExpanded: defaultExpanded,
draggableChildren: draggableItems,
onDragEnd: result => {
if (onItemDragEnd) {
onItemDragEnd(groupId, result);
}
},
onDelete: onGroupDelete,
deletable: deletableGroups,
onTitleChange: onGroupTitleEdit,
editableTitle: editableTitle,
key: "".concat(groupId, "-accordion"),
id: groupId,
title: name,
footer: /*#__PURE__*/React.createElement("div", null, groupFooter ? groupFooter({
id: groupId,
name,
items
}, groupIndex) : null),
titleRightAdornment: titleRightAdornment
}, /*#__PURE__*/React.createElement("div", {
className: "column"
}, items === null || items === void 0 ? void 0 : items.map((item, index) => /*#__PURE__*/React.createElement("div", {
style: {
padding: "8px 0"
},
key: "".concat(item.id, "-item")
}, /*#__PURE__*/React.createElement(DataSource, {
index: index,
draggable: draggableItems,
subLabel: item.subLabel,
icon: item.icon,
deletable: deletableItems,
onDelete: id => onItemDelete && onItemDelete(groupId, id),
onClick: itemId => onItemClick(groupId, itemId),
id: item.id,
label: item.name,
selected: Boolean(find(selectedItems, selectedItem => selectedItem.groupId === groupId && selectedItem.itemId === item.id))
})))));
}));
}
export { DataSource as DataConfigurationAreaItem, CustomAccordion as DataConfigurationAreaGroup };