mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-03-01 22:10:27 +00:00
210 lines
8.3 KiB
JavaScript
210 lines
8.3 KiB
JavaScript
import _extends from 'babel-runtime/helpers/extends';
|
|
import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';
|
|
import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
|
|
import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';
|
|
import _inherits from 'babel-runtime/helpers/inherits';
|
|
|
|
var _class, _temp2;
|
|
|
|
import React from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import classnames from 'classnames';
|
|
import FilterComponent from './filter';
|
|
import SortComponent from './sort';
|
|
import CellComponent from './cell';
|
|
import ResizeComponent from './resize';
|
|
|
|
var noop = function noop() {};
|
|
var Header = (_temp2 = _class = function (_React$Component) {
|
|
_inherits(Header, _React$Component);
|
|
|
|
function Header() {
|
|
var _temp, _this, _ret;
|
|
|
|
_classCallCheck(this, Header);
|
|
|
|
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
args[_key] = arguments[_key];
|
|
}
|
|
|
|
return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.getCellRef = function (i, j, cell) {
|
|
_this.props.headerCellRef(i, j, cell);
|
|
}, _this.onSort = function (dataIndex, order, sort) {
|
|
_this.props.onSort(dataIndex, order, sort);
|
|
}, _temp), _possibleConstructorReturn(_this, _ret);
|
|
}
|
|
|
|
Header.prototype.render = function render() {
|
|
var _this2 = this;
|
|
|
|
/*eslint-disable no-unused-vars */
|
|
var _props = this.props,
|
|
prefix = _props.prefix,
|
|
className = _props.className,
|
|
children = _props.children,
|
|
Tag = _props.component,
|
|
colGroup = _props.colGroup,
|
|
columns = _props.columns,
|
|
locale = _props.locale,
|
|
filterParams = _props.filterParams,
|
|
onFilter = _props.onFilter,
|
|
components = _props.components,
|
|
affixRef = _props.affixRef,
|
|
headerCellRef = _props.headerCellRef,
|
|
onSort = _props.onSort,
|
|
sort = _props.sort,
|
|
sortIcons = _props.sortIcons,
|
|
onResizeChange = _props.onResizeChange,
|
|
pure = _props.pure,
|
|
rtl = _props.rtl,
|
|
others = _objectWithoutProperties(_props, ['prefix', 'className', 'children', 'component', 'colGroup', 'columns', 'locale', 'filterParams', 'onFilter', 'components', 'affixRef', 'headerCellRef', 'onSort', 'sort', 'sortIcons', 'onResizeChange', 'pure', 'rtl']);
|
|
|
|
var _components$Cell = components.Cell,
|
|
Cell = _components$Cell === undefined ? CellComponent : _components$Cell,
|
|
_components$Filter = components.Filter,
|
|
Filter = _components$Filter === undefined ? FilterComponent : _components$Filter,
|
|
_components$Sort = components.Sort,
|
|
Sort = _components$Sort === undefined ? SortComponent : _components$Sort,
|
|
_components$Resize = components.Resize,
|
|
Resize = _components$Resize === undefined ? ResizeComponent : _components$Resize;
|
|
|
|
var rowSpan = columns.length;
|
|
|
|
var header = columns.map(function (cols, index) {
|
|
var col = cols.map(function (col, j) {
|
|
var _classnames;
|
|
|
|
/* eslint-disable no-unused-vars, prefer-const */
|
|
var title = col.title,
|
|
colSpan = col.colSpan,
|
|
sortable = col.sortable,
|
|
resizable = col.resizable,
|
|
dataIndex = col.dataIndex,
|
|
filters = col.filters,
|
|
filterMode = col.filterMode,
|
|
filterMenuProps = col.filterMenuProps,
|
|
filterProps = col.filterProps,
|
|
width = col.width,
|
|
align = col.align,
|
|
alignHeader = col.alignHeader,
|
|
className = col.className,
|
|
__normalized = col.__normalized,
|
|
lock = col.lock,
|
|
others = _objectWithoutProperties(col, ['title', 'colSpan', 'sortable', 'resizable', 'dataIndex', 'filters', 'filterMode', 'filterMenuProps', 'filterProps', 'width', 'align', 'alignHeader', 'className', '__normalized', 'lock']);
|
|
|
|
className = classnames((_classnames = {}, _classnames[prefix + 'table-header-node'] = true, _classnames[prefix + 'table-header-resizable'] = resizable, _classnames[className] = className, _classnames));
|
|
var attrs = {},
|
|
sortElement = void 0,
|
|
filterElement = void 0,
|
|
resizeElement = void 0;
|
|
|
|
attrs.colSpan = colSpan;
|
|
|
|
// column.group doesn't have sort resize filter
|
|
if (!(col.children && col.children.length)) {
|
|
if (sortable) {
|
|
sortElement = React.createElement(Sort, {
|
|
prefix: prefix,
|
|
className: prefix + 'table-header-icon',
|
|
dataIndex: dataIndex,
|
|
onSort: _this2.onSort,
|
|
sortIcons: sortIcons,
|
|
sort: sort,
|
|
rtl: rtl,
|
|
locale: locale
|
|
});
|
|
}
|
|
if (resizable) {
|
|
resizeElement = React.createElement(Resize, {
|
|
prefix: prefix,
|
|
rtl: rtl,
|
|
dataIndex: dataIndex,
|
|
onChange: onResizeChange
|
|
});
|
|
}
|
|
|
|
if (filters) {
|
|
filterElement = filters.length ? React.createElement(Filter, {
|
|
dataIndex: dataIndex,
|
|
className: prefix + 'table-header-icon',
|
|
filters: filters,
|
|
prefix: prefix,
|
|
locale: locale,
|
|
rtl: rtl,
|
|
filterParams: filterParams,
|
|
filterMode: filterMode,
|
|
filterMenuProps: filterMenuProps,
|
|
filterProps: filterProps,
|
|
onFilter: onFilter
|
|
}) : null;
|
|
}
|
|
attrs.rowSpan = rowSpan - index;
|
|
}
|
|
|
|
if (+attrs.colSpan === 0) {
|
|
return null;
|
|
}
|
|
|
|
return React.createElement(
|
|
Cell,
|
|
_extends({}, others, attrs, {
|
|
key: j,
|
|
prefix: prefix,
|
|
pure: pure,
|
|
rtl: rtl,
|
|
cell: title,
|
|
component: 'th',
|
|
align: alignHeader ? alignHeader : align,
|
|
className: className,
|
|
ref: _this2.getCellRef.bind(_this2, index, j),
|
|
type: 'header'
|
|
}),
|
|
sortElement,
|
|
filterElement,
|
|
resizeElement
|
|
);
|
|
});
|
|
return React.createElement(
|
|
'tr',
|
|
{ key: index },
|
|
col
|
|
);
|
|
});
|
|
|
|
return React.createElement(
|
|
Tag,
|
|
_extends({ className: className }, others),
|
|
header,
|
|
children
|
|
);
|
|
};
|
|
|
|
return Header;
|
|
}(React.Component), _class.propTypes = {
|
|
children: PropTypes.any,
|
|
prefix: PropTypes.string,
|
|
pure: PropTypes.bool,
|
|
className: PropTypes.string,
|
|
component: PropTypes.string,
|
|
columns: PropTypes.array,
|
|
colGroup: PropTypes.object,
|
|
headerCellRef: PropTypes.func,
|
|
locale: PropTypes.object,
|
|
filterParams: PropTypes.object,
|
|
onFilter: PropTypes.func,
|
|
components: PropTypes.object,
|
|
sort: PropTypes.object,
|
|
sortIcons: PropTypes.object,
|
|
onSort: PropTypes.func,
|
|
onResizeChange: PropTypes.func
|
|
}, _class.defaultProps = {
|
|
component: 'thead',
|
|
columns: [],
|
|
headerCellRef: noop,
|
|
onFilter: noop,
|
|
components: {},
|
|
onSort: noop,
|
|
onResizeChange: noop
|
|
}, _temp2);
|
|
Header.displayName = 'Header';
|
|
export { Header as default }; |