UNPKG

@bee-design/ui

Version:

Bee Design React UI Library.

109 lines (108 loc) 8.29 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = __importStar(require("react")); var Checkbox_1 = __importDefault(require("../../Checkbox")); var column_1 = __importDefault(require("./column")); var classNames_1 = __importDefault(require("../../_util/classNames")); var useComponent_1 = __importDefault(require("../hooks/useComponent")); var constant_1 = require("../constant"); var ConfigProvider_1 = require("../../ConfigProvider"); function THead(props) { var sorter = props.sorter, expandedRowRender = props.expandedRowRender, _a = props.expandProps, expandProps = _a === void 0 ? {} : _a, onSort = props.onSort, onHandleFilter = props.onHandleFilter, onHandleFilterReset = props.onHandleFilterReset, onHeaderRow = props.onHeaderRow, prefixCls = props.prefixCls, currentFilters = props.currentFilters, components = props.components, data = props.data, selectedRowKeys = props.selectedRowKeys, rowSelection = props.rowSelection, _b = props.allSelectedRowKeys, allSelectedRowKeys = _b === void 0 ? [] : _b, groupColumns = props.groupColumns, stickyOffsets = props.stickyOffsets, groupStickyClassNames = props.groupStickyClassNames, showSorterTooltip = props.showSorterTooltip; var rtl = (0, react_1.useContext)(ConfigProvider_1.ConfigContext).rtl; var _c = (0, useComponent_1.default)(components), ComponentThead = _c.ComponentThead, ComponentHeaderRow = _c.ComponentHeaderRow, getHeaderComponentOperations = _c.getHeaderComponentOperations; var _checkbox = rowSelection && (rowSelection.type === 'checkbox' || !('type' in rowSelection)); var _checkAll = rowSelection && 'checkAll' in rowSelection ? rowSelection.checkAll : true; var isRadio = rowSelection && rowSelection.type === 'radio'; var expandColumnTitle = expandProps.columnTitle; var currentSelectedRowKeys = (0, react_1.useMemo)(function () { var tempSet = new Set(allSelectedRowKeys); return selectedRowKeys.filter(function (v) { return tempSet.has(v); }); }, [selectedRowKeys, allSelectedRowKeys]); var selectionRowSpanProps = groupColumns.length > 1 ? { rowSpan: groupColumns.length } : {}; var operationClassName = (0, classNames_1.default)(prefixCls + "-th", prefixCls + "-operation"); return (react_1.default.createElement(ComponentThead, null, groupColumns.map(function (row, index) { var headerRowProps = onHeaderRow && onHeaderRow(row, index); var selectionNode = (_checkbox || isRadio) && index === 0 && (react_1.default.createElement("th", { className: (0, classNames_1.default)(operationClassName, prefixCls + "-" + (isRadio ? 'radio' : 'checkbox')) }, react_1.default.createElement("div", { className: prefixCls + "-th-item" }, _checkAll && !isRadio ? (react_1.default.createElement(Checkbox_1.default, { indeterminate: data && currentSelectedRowKeys.length > 0 && currentSelectedRowKeys.length !== allSelectedRowKeys.length, checked: data && currentSelectedRowKeys.length !== 0 && currentSelectedRowKeys.length === allSelectedRowKeys.length, disabled: !allSelectedRowKeys.length, onChange: props.onCheckAll })) : null, rowSelection && rowSelection.columnTitle))); var expandNode = expandedRowRender && (react_1.default.createElement("th", { className: (0, classNames_1.default)(operationClassName, prefixCls + "-expand") }, expandColumnTitle && (react_1.default.createElement("div", { className: prefixCls + "-th-item" }, expandColumnTitle)))); var stickyClassNames = groupStickyClassNames[index]; var headerOperations = getHeaderComponentOperations({ selectionNode: selectionNode, expandNode: expandNode, }); return (react_1.default.createElement(ComponentHeaderRow, __assign({}, headerRowProps, { key: index, className: prefixCls + "-tr" }), row.map(function (column, colIndex) { var _a; var _b, _c, _d, _e; var stickyOffset = stickyOffsets[colIndex]; var stickyClassName = stickyClassNames[colIndex]; if (column.$$isOperation) { var node = column.node; var isExtraOperation = true; if (column.title === constant_1.INTERNAL_SELECTION_KEY) { node = (_b = headerOperations.find(function (o) { return o.name === 'selectionNode'; })) === null || _b === void 0 ? void 0 : _b.node; isExtraOperation = false; } if (column.title === constant_1.INTERNAL_EXPAND_KEY) { node = (_c = headerOperations.find(function (o) { return o.name === 'expandNode'; })) === null || _c === void 0 ? void 0 : _c.node; isExtraOperation = false; } var operationNode = node; return react_1.default.cloneElement(operationNode, __assign(__assign(__assign({ key: column.key || colIndex }, operationNode.props), selectionRowSpanProps), { className: (0, classNames_1.default)(isExtraOperation ? operationClassName : '', (_d = operationNode === null || operationNode === void 0 ? void 0 : operationNode.props) === null || _d === void 0 ? void 0 : _d.className, stickyClassName), style: __assign(__assign(__assign({}, (_e = operationNode === null || operationNode === void 0 ? void 0 : operationNode.props) === null || _e === void 0 ? void 0 : _e.style), (column.fixed === 'left' ? (_a = {}, _a[rtl ? 'right' : 'left'] = stickyOffset, _a) : {})), { width: column.width, minWidth: column.width }) })); } var headerCellProps = column.onHeaderCell && column.onHeaderCell(column, colIndex); var columnClassName = (0, classNames_1.default)(stickyClassName, column.className); var columnFixedStyle = {}; if (column.fixed === 'left') { columnFixedStyle[rtl ? 'right' : 'left'] = stickyOffset; } if (column.fixed === 'right') { columnFixedStyle[rtl ? 'left' : 'right'] = stickyOffset; } return (react_1.default.createElement(column_1.default, __assign({ key: column.key, index: colIndex, onSort: onSort, onHandleFilter: onHandleFilter, onHandleFilterReset: onHandleFilterReset, currentSorter: sorter, currentFilters: currentFilters, _key: column.key || column.dataIndex || colIndex }, column, { column: column, headerCellProps: headerCellProps, prefixCls: prefixCls, components: components, className: columnClassName, columnFixedStyle: columnFixedStyle, showSorterTooltip: showSorterTooltip }))); }))); }))); } exports.default = THead;