@ui5/webcomponents-react
Version:
React Wrapper for UI5 Web Components and additional components
69 lines • 2.45 kB
JavaScript
import { forwardRef, Fragment } from 'react';
import { RenderColumnTypes } from '../types/index.js';
import { ColumnHeader } from './index.js';
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
export const ColumnHeaderContainer = /*#__PURE__*/forwardRef((props, ref) => {
const {
headerProps,
headerGroup,
resizeInfo,
isRtl,
columnVirtualizer,
uniqueId,
showVerticalEndBorder,
classNames
} = props;
const {
key,
...reactTableHeaderProps
} = headerProps;
return /*#__PURE__*/_jsx("div", {
...reactTableHeaderProps,
style: {
width: `${columnVirtualizer.getTotalSize()}px`
},
ref: ref,
"data-component-name": "AnalyticalTableHeaderRow",
children: columnVirtualizer.getVirtualItems().map((virtualColumn, index) => {
const column = headerGroup.headers[virtualColumn.index];
if (!column) {
return null;
}
const isLastColumn = !column.disableResizing && virtualColumn.index + 1 === headerGroup.headers.length;
const resizerDirectionStyle = isRtl ? {
right: `${column.totalFlexWidth + column.totalLeft - (isLastColumn ? 3 : 0)}px`,
transform: 'translateX(50%)'
} : {
left: `${column.totalFlexWidth + column.totalLeft - (isLastColumn ? 3 : 0)}px`,
transform: 'translateX(-50%)'
};
const {
key,
...rest
} = column.getHeaderProps();
return /*#__PURE__*/_jsxs(Fragment, {
children: [column.canResize && column.getResizerProps && /*#__PURE__*/_jsx("div", {
...column.getResizerProps(),
"data-resizer": true,
"data-component-name": "AnalyticalTableResizer",
className: classNames.resizer,
style: resizerDirectionStyle
}), /*#__PURE__*/_jsx(ColumnHeader, {
...rest,
showVerticalEndBorder: showVerticalEndBorder,
id: `${uniqueId}${rest?.id ?? ''}`,
columnId: rest.id,
visibleColumnIndex: index,
headerTooltip: column.headerTooltip,
isDraggable: !column.disableDragAndDrop && !resizeInfo.isResizingColumn,
virtualColumn: virtualColumn,
columnVirtualizer: columnVirtualizer,
isRtl: isRtl,
classNames: classNames,
children: column.render(RenderColumnTypes.Header)
})]
}, key);
})
}, key);
});
ColumnHeaderContainer.displayName = 'ColumnHeaderContainer';