es-grid-template
Version:
es-grid-template
186 lines (182 loc) • 6.8 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireWildcard(require("react"));
var _GridStyle = require("../GridStyle");
var _TableGrid = _interopRequireDefault(require("../TableGrid"));
var _hooks = require("../hooks");
var _ColumnsGroup = require("../ColumnsGroup/ColumnsGroup");
var _columns = require("../hooks/columns");
var _becoxyIcons = require("becoxy-icons");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
// import type {ColumnsTable} from "../type";
const Group = props => {
const {
t,
id,
columns,
height,
scrollHeight,
style,
rowHoverable,
groupAble,
expandable,
dataSource,
rowKey,
getRowKey,
groupSetting,
groupColumns,
triggerGroupColumns,
onExpandClick,
...rest
} = props;
const {
defaultExpandedRowKeys,
defaultExpandAllRows
} = expandable || {};
const childrenColumnName = 'children';
const [innerExpandedKeys, setInnerExpandedKeys] = _react.default.useState(() => {
if (defaultExpandedRowKeys) {
return defaultExpandedRowKeys;
}
if (defaultExpandAllRows) {
return (0, _hooks.findAllChildrenKeys)(dataSource, getRowKey, childrenColumnName) ?? [];
}
return [];
});
_react.default.useEffect(() => {
if (defaultExpandedRowKeys) {
setInnerExpandedKeys(defaultExpandedRowKeys);
}
if (defaultExpandAllRows) {
setInnerExpandedKeys((0, _hooks.findAllChildrenKeys)(dataSource, getRowKey, childrenColumnName) ?? []);
}
}, [defaultExpandedRowKeys, defaultExpandAllRows, dataSource]);
const mergedExpandedKeys = _react.default.useMemo(() => new Set(innerExpandedKeys || []), [innerExpandedKeys]);
const onTriggerExpand = _react.default.useCallback(record => {
const key = getRowKey(record, dataSource.indexOf(record));
let newExpandedKeys;
const hasKey = mergedExpandedKeys.has(key);
if (hasKey) {
mergedExpandedKeys.delete(key);
newExpandedKeys = [...mergedExpandedKeys];
} else {
newExpandedKeys = [...mergedExpandedKeys, key];
// gọi sự kiện expand
onExpandClick?.({
expandedKeys: newExpandedKeys,
key: key,
rowData: record
});
}
setInnerExpandedKeys(newExpandedKeys);
}, [getRowKey, dataSource, mergedExpandedKeys, onExpandClick]);
const handleExpandAllGroup = () => {
setInnerExpandedKeys((0, _hooks.findAllChildrenKeys)(dataSource, getRowKey, childrenColumnName) ?? []);
};
const handleCollapseAllGroup = () => {
setInnerExpandedKeys([]);
};
const handleOnGroup = value => {
triggerGroupColumns?.(value);
};
const groupToolbar = () => {
return /*#__PURE__*/_react.default.createElement("div", {
style: {
display: 'flex',
gap: '10px',
marginRight: 10
}
}, groupSetting?.showGroupIcon !== false && /*#__PURE__*/_react.default.createElement(_ColumnsGroup.ColumnsGroup, {
t: t
// defaultGroupColumns={['name']}
,
unClearableLevel: groupSetting?.unClearableLevel
// unClearableLevel={2}
,
columns: columns ? (0, _columns.flatColumns2)(columns) : [],
columnsGrouped: groupColumns,
onSubmit: handleOnGroup
}), /*#__PURE__*/_react.default.createElement(_react.Fragment, null, innerExpandedKeys.length > 0 ? /*#__PURE__*/_react.default.createElement(_becoxyIcons.Collapse2, {
fontSize: 18,
color: '#555555',
onClick: handleCollapseAllGroup
}) : /*#__PURE__*/_react.default.createElement(_becoxyIcons.Expand2, {
fontSize: 18,
color: '#555555',
onClick: handleExpandAllGroup
})));
};
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_GridStyle.GridStyle, {
$heightTable: height,
$heightScroll: scrollHeight,
style: {
position: 'relative'
},
id: id
}, /*#__PURE__*/_react.default.createElement(_TableGrid.default, (0, _extends2.default)({}, rest, {
t: t,
id: id,
rowKey: rowKey,
columns: columns,
style: {
...style,
minHeight: height
},
rowHoverable: rowHoverable ?? true,
dataSource: dataSource,
getRowKey: getRowKey,
groupAble: groupAble,
groupSetting: groupSetting,
expandable: {
expandIconColumnIndex: 3,
defaultExpandAllRows: true,
indentSize: 25,
expandIcon: args => {
const {
record,
expanded,
onExpand
} = args;
// @ts-ignore
if (record?.children?.length > 0 || record?.isChildren) {
return expanded ? /*#__PURE__*/_react.default.createElement("button", {
onClick: e => {
e.preventDefault();
e.stopPropagation();
onExpand(record, e);
if (groupAble) {
onTriggerExpand(record);
}
},
className: 'ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-expanded'
}) : /*#__PURE__*/_react.default.createElement("button", {
onClick: e => {
e.preventDefault();
e.stopPropagation();
onExpand(record, e);
if (groupAble) {
onTriggerExpand(record);
}
},
className: 'ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-collapsed'
});
} else {
return /*#__PURE__*/_react.default.createElement("button", {
className: 'ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-spaced'
});
}
},
expandedRowKeys: groupAble ? innerExpandedKeys : undefined,
...expandable
},
groupToolbar: groupToolbar,
groupColumns: groupColumns
}))));
};
var _default = exports.default = Group;