@aloudata/aloudata-design 1.9.16 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/dist/Button/style/type.less +1 -1
  2. package/dist/Checkbox/style/index.less +35 -9
  3. package/dist/ConfigProvider/getUserList.d.ts +13 -1
  4. package/dist/ConfigProvider/getUserList.js +5 -0
  5. package/dist/Icon/components/AlertTriangleDuotone.d.ts +3 -2
  6. package/dist/Icon/components/AlertTriangleDuotone.js +3 -3
  7. package/dist/Icon/components/CancelCircleDuotone.d.ts +3 -2
  8. package/dist/Icon/components/CancelCircleDuotone.js +4 -4
  9. package/dist/Icon/components/CheckCircleDuotone.d.ts +3 -2
  10. package/dist/Icon/components/CheckCircleDuotone.js +4 -4
  11. package/dist/Icon/components/ChevronDownLine.d.ts +3 -2
  12. package/dist/Icon/components/ChevronDownLine.js +3 -3
  13. package/dist/Icon/components/ChevronLeftLine.d.ts +3 -2
  14. package/dist/Icon/components/ChevronLeftLine.js +3 -3
  15. package/dist/Icon/components/ChevronRightLine.d.ts +3 -2
  16. package/dist/Icon/components/ChevronRightLine.js +3 -3
  17. package/dist/Icon/components/CloseLLine.d.ts +3 -2
  18. package/dist/Icon/components/CloseLLine.js +4 -4
  19. package/dist/Icon/components/CloseMLine.d.ts +3 -2
  20. package/dist/Icon/components/CloseMLine.js +3 -3
  21. package/dist/Icon/components/DragLine.d.ts +11 -0
  22. package/dist/Icon/components/DragLine.js +35 -0
  23. package/dist/Icon/components/EyeOffLine.d.ts +3 -2
  24. package/dist/Icon/components/EyeOffLine.js +3 -3
  25. package/dist/Icon/components/EyeOnLine.d.ts +3 -2
  26. package/dist/Icon/components/EyeOnLine.js +3 -3
  27. package/dist/Icon/components/FoldDownFill.d.ts +3 -2
  28. package/dist/Icon/components/FoldDownFill.js +4 -4
  29. package/dist/Icon/components/FoldUpFill.d.ts +3 -2
  30. package/dist/Icon/components/FoldUpFill.js +4 -4
  31. package/dist/Icon/components/InfoCircleDuotone.d.ts +3 -2
  32. package/dist/Icon/components/InfoCircleDuotone.js +3 -3
  33. package/dist/Icon/components/InfoCircleLine.d.ts +3 -2
  34. package/dist/Icon/components/InfoCircleLine.js +3 -3
  35. package/dist/Icon/components/LoadingLine.d.ts +3 -2
  36. package/dist/Icon/components/LoadingLine.js +3 -3
  37. package/dist/Icon/components/MoreVerticalLine.d.ts +3 -2
  38. package/dist/Icon/components/MoreVerticalLine.js +3 -3
  39. package/dist/Icon/components/SearchLine.d.ts +3 -2
  40. package/dist/Icon/components/SearchLine.js +3 -3
  41. package/dist/Icon/index.d.ts +1 -0
  42. package/dist/Icon/index.js +1 -0
  43. package/dist/Icon/svg/drag-line.svg +5 -0
  44. package/dist/MemberPicker/components/MemberSelection.d.ts +1 -1
  45. package/dist/MemberPicker/components/MemberSelection.js +8 -3
  46. package/dist/MemberPicker/components/MultipleOption.d.ts +5 -2
  47. package/dist/MemberPicker/components/MultipleOption.js +20 -5
  48. package/dist/MemberPicker/components/NickLabel.d.ts +3 -3
  49. package/dist/MemberPicker/components/NickLabel.js +6 -6
  50. package/dist/MemberPicker/components/Panel.d.ts +7 -4
  51. package/dist/MemberPicker/components/Panel.js +70 -20
  52. package/dist/MemberPicker/components/PanelWrapper.d.ts +14 -0
  53. package/dist/MemberPicker/components/PanelWrapper.js +126 -0
  54. package/dist/MemberPicker/components/SelectedMemberTags.d.ts +3 -2
  55. package/dist/MemberPicker/components/SelectedMemberTags.js +8 -5
  56. package/dist/MemberPicker/components/SelectorFooter.js +1 -1
  57. package/dist/MemberPicker/components/SingleOption.d.ts +3 -2
  58. package/dist/MemberPicker/components/SingleOption.js +7 -4
  59. package/dist/MemberPicker/components/UserGroupSelection.d.ts +14 -0
  60. package/dist/MemberPicker/components/UserGroupSelection.js +130 -0
  61. package/dist/MemberPicker/index.d.ts +2 -0
  62. package/dist/MemberPicker/index.js +28 -17
  63. package/dist/MemberPicker/interface.d.ts +11 -5
  64. package/dist/MemberPicker/interface.js +6 -1
  65. package/dist/MemberPicker/style/index.less +18 -3
  66. package/dist/MemberPicker/utils/getUsersWithUserId.d.ts +4 -0
  67. package/dist/MemberPicker/utils/getUsersWithUserId.js +23 -2
  68. package/dist/MemberPicker/utils/index.d.ts +6 -0
  69. package/dist/MemberPicker/utils/index.js +16 -0
  70. package/dist/Modal/index.js +1 -1
  71. package/dist/Radio/style/index.less +1 -1
  72. package/dist/ScrollArea/index.d.ts +1 -0
  73. package/dist/ScrollArea/index.js +6 -3
  74. package/dist/Table/components/Cell.d.ts +7 -0
  75. package/dist/Table/components/Cell.js +20 -0
  76. package/dist/Table/components/Header.d.ts +6 -0
  77. package/dist/Table/components/Header.js +19 -0
  78. package/dist/{AldTable → Table}/helper.d.ts +9 -2
  79. package/dist/Table/helper.js +121 -0
  80. package/dist/Table/hooks/useScroll.d.ts +26 -0
  81. package/dist/Table/hooks/useScroll.js +57 -0
  82. package/dist/Table/index.d.ts +3 -1
  83. package/dist/Table/index.js +176 -1
  84. package/dist/Table/style/index.less +106 -203
  85. package/dist/{AldTable → Table}/types.d.ts +5 -4
  86. package/dist/Tree/DirectoryTree.d.ts +20 -0
  87. package/dist/Tree/DirectoryTree.js +175 -0
  88. package/dist/Tree/Tree.d.ts +136 -0
  89. package/dist/Tree/Tree.js +130 -0
  90. package/dist/Tree/demo/basic/index.js +3 -2
  91. package/dist/Tree/demo/drag/index.d.ts +3 -0
  92. package/dist/Tree/demo/drag/index.js +52 -0
  93. package/dist/Tree/index.d.ts +19 -13
  94. package/dist/Tree/index.js +7 -17
  95. package/dist/Tree/style/checkbox.less +226 -0
  96. package/dist/Tree/style/directory.less +68 -0
  97. package/dist/Tree/style/index.less +68 -29
  98. package/dist/Tree/style/mixin.less +333 -0
  99. package/dist/Tree/style/reset.less +11 -0
  100. package/dist/Tree/style/rtl.less +68 -0
  101. package/dist/Tree/style/var.less +42 -0
  102. package/dist/Tree/utils/dictUtil.d.ts +9 -0
  103. package/dist/Tree/utils/dictUtil.js +74 -0
  104. package/dist/Tree/utils/dropIndicator.d.ts +9 -0
  105. package/dist/Tree/utils/dropIndicator.js +35 -0
  106. package/dist/Tree/utils/iconUtil.d.ts +5 -0
  107. package/dist/Tree/utils/iconUtil.js +63 -0
  108. package/dist/_utils/motion.d.ts +8 -0
  109. package/dist/_utils/motion.js +52 -0
  110. package/dist/_utils/reactNode.d.ts +8 -0
  111. package/dist/_utils/reactNode.js +15 -0
  112. package/dist/_utils/type.d.ts +9 -0
  113. package/dist/_utils/type.js +20 -0
  114. package/dist/index.d.ts +11 -13
  115. package/dist/index.js +6 -7
  116. package/dist/style/color/bezierEasing.less +110 -0
  117. package/dist/style/color/colorPalette.less +84 -0
  118. package/dist/style/color/colors.less +162 -0
  119. package/dist/style/color/tinyColor.less +1184 -0
  120. package/dist/style/core/index.less +2 -0
  121. package/dist/style/core/motion/fade.less +34 -0
  122. package/dist/style/core/motion/move.less +129 -0
  123. package/dist/style/core/motion/other.less +48 -0
  124. package/dist/style/core/motion/slide.less +131 -0
  125. package/dist/style/core/motion/zoom.less +179 -0
  126. package/dist/style/core/motion.less +22 -0
  127. package/dist/style/index.less +2 -0
  128. package/dist/style/mixins/index.less +1 -0
  129. package/dist/style/mixins/motion.less +33 -0
  130. package/dist/style/themes/default/default.less +24 -0
  131. package/dist/style/themes/default/index.less +1 -0
  132. package/package.json +2 -2
  133. package/dist/AldTable/helper.js +0 -109
  134. package/dist/AldTable/index.d.ts +0 -4
  135. package/dist/AldTable/index.js +0 -146
  136. package/dist/AldTable/style/index.d.ts +0 -2
  137. package/dist/AldTable/style/index.js +0 -2
  138. package/dist/AldTable/style/index.less +0 -135
  139. package/dist/Table/Table.d.ts +0 -6
  140. package/dist/Table/Table.js +0 -360
  141. package/dist/Table/components/Empty/index.d.ts +0 -3
  142. package/dist/Table/components/Empty/index.js +0 -14
  143. package/dist/Table/components/Loading/index.d.ts +0 -3
  144. package/dist/Table/components/Loading/index.js +0 -12
  145. package/dist/Table/components/TableBodyRowList/index.d.ts +0 -13
  146. package/dist/Table/components/TableBodyRowList/index.js +0 -75
  147. package/dist/Table/components/TableHead/index.d.ts +0 -23
  148. package/dist/Table/components/TableHead/index.js +0 -229
  149. package/dist/Table/constant.d.ts +0 -0
  150. package/dist/Table/constant.js +0 -0
  151. package/dist/Table/hooks/useFrame.d.ts +0 -7
  152. package/dist/Table/hooks/useFrame.js +0 -75
  153. package/dist/Table/interface.d.ts +0 -42
  154. package/dist/Table/interface.js +0 -1
  155. package/dist/Table/react-table-config.d.ts +0 -122
  156. package/dist/Table/style/variable.less +0 -4
  157. package/dist/Table/utils.d.ts +0 -15
  158. package/dist/Table/utils.js +0 -122
  159. /package/dist/{AldTable → Table}/types.js +0 -0
@@ -7,6 +7,7 @@ interface Props extends ScrollAreaProps {
7
7
  verticalScrollBarClassName?: string;
8
8
  onViewportScroll?: (event: React.UIEvent<HTMLDivElement>) => void;
9
9
  innerClassName?: string;
10
+ scrollBarHidden?: Array<'horizontal' | 'vertical'>;
10
11
  }
11
12
  declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>>;
12
13
  export default _default;
@@ -1,4 +1,4 @@
1
- var _excluded = ["children", "className", "innerClassName", "horizontalScrollBarClassName", "verticalScrollBarClassName", "onViewportScroll"];
1
+ var _excluded = ["children", "className", "innerClassName", "horizontalScrollBarClassName", "verticalScrollBarClassName", "onViewportScroll", "scrollBarHidden"];
2
2
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
3
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
4
4
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
@@ -12,7 +12,10 @@ var ScrollArea = function ScrollArea(props, ref) {
12
12
  horizontalScrollBarClassName = props.horizontalScrollBarClassName,
13
13
  verticalScrollBarClassName = props.verticalScrollBarClassName,
14
14
  onViewportScroll = props.onViewportScroll,
15
+ scrollBarHidden = props.scrollBarHidden,
15
16
  rest = _objectWithoutProperties(props, _excluded);
17
+ var isHorizontalScrollBarHidden = scrollBarHidden === null || scrollBarHidden === void 0 ? void 0 : scrollBarHidden.includes('horizontal');
18
+ var isVerticalScrollBarHidden = scrollBarHidden === null || scrollBarHidden === void 0 ? void 0 : scrollBarHidden.includes('vertical');
16
19
  return /*#__PURE__*/React.createElement(ScrollAreaComponent.Root, _extends({}, rest, {
17
20
  scrollHideDelay: 50,
18
21
  className: classNames('ald-scroll-area', className)
@@ -22,7 +25,7 @@ var ScrollArea = function ScrollArea(props, ref) {
22
25
  onViewportScroll === null || onViewportScroll === void 0 ? void 0 : onViewportScroll(event);
23
26
  },
24
27
  ref: ref
25
- }, children), /*#__PURE__*/React.createElement(ScrollAreaComponent.Scrollbar, {
28
+ }, children), !isVerticalScrollBarHidden && /*#__PURE__*/React.createElement(ScrollAreaComponent.Scrollbar, {
26
29
  style: {
27
30
  right: 3
28
31
  },
@@ -30,7 +33,7 @@ var ScrollArea = function ScrollArea(props, ref) {
30
33
  orientation: "vertical"
31
34
  }, /*#__PURE__*/React.createElement(ScrollAreaComponent.Thumb, {
32
35
  className: 'ald-scroll-area-thumb'
33
- })), /*#__PURE__*/React.createElement(ScrollAreaComponent.Scrollbar, {
36
+ })), !isHorizontalScrollBarHidden && /*#__PURE__*/React.createElement(ScrollAreaComponent.Scrollbar, {
34
37
  className: classNames('ald-scroll-area-bar', horizontalScrollBarClassName),
35
38
  style: {
36
39
  bottom: 3
@@ -0,0 +1,7 @@
1
+ import { Column, Row } from '@tanstack/react-table';
2
+ import React from 'react';
3
+ export default function Cell<T>(props: IProps<T>): React.JSX.Element;
4
+ export interface IProps<T> {
5
+ row: Row<T>;
6
+ column: Column<T>;
7
+ }
@@ -0,0 +1,20 @@
1
+ import classnames from 'classnames';
2
+ import _ from 'lodash';
3
+ import React from 'react';
4
+ import { prefixCls } from "../helper";
5
+ export default function Cell(props) {
6
+ var column = props.column,
7
+ row = props.row;
8
+ var meta = column.columnDef.meta;
9
+ var render = meta.render,
10
+ dataIndex = meta.dataIndex,
11
+ align = meta.align,
12
+ ellipsis = meta.ellipsis;
13
+ var colValue = _.get(row.original, dataIndex || '');
14
+ var node = render ? render(colValue, row.original, row.index) : colValue;
15
+ return /*#__PURE__*/React.createElement("div", {
16
+ className: classnames(prefixCls('td-default'), prefixCls("align-".concat(align)))
17
+ }, ellipsis ? /*#__PURE__*/React.createElement("div", {
18
+ className: prefixCls('td-ellipsis-content')
19
+ }, node) : node);
20
+ }
@@ -0,0 +1,6 @@
1
+ import { Column } from '@tanstack/react-table';
2
+ import React from 'react';
3
+ export default function Header<T>(props: IProps<T>): React.JSX.Element;
4
+ export interface IProps<T> {
5
+ column: Column<T>;
6
+ }
@@ -0,0 +1,19 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
4
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
5
+ import classnames from 'classnames';
6
+ import React from 'react';
7
+ import { prefixCls } from "../helper";
8
+ export default function Header(props) {
9
+ var column = props.column;
10
+ var _ref = column.columnDef.meta,
11
+ title = _ref.title,
12
+ dataIndex = _ref.dataIndex,
13
+ align = _ref.align,
14
+ ellipsis = _ref.ellipsis;
15
+ return typeof title === 'string' ? /*#__PURE__*/React.createElement("div", {
16
+ key: dataIndex,
17
+ className: classnames(prefixCls('th-default'), prefixCls("align-".concat(align)), _defineProperty({}, prefixCls('td-ellipsis-content'), ellipsis))
18
+ }, title) : /*#__PURE__*/React.createElement(React.Fragment, null, title);
19
+ }
@@ -1,10 +1,16 @@
1
- import { type Column } from 'react-table';
1
+ /// <reference types="react" />
2
2
  import { ITableColumn } from './types';
3
3
  export declare function getTableColumns<TDataItem extends object>({ columns, columnSizing, totalWidth, }: {
4
4
  columns: ITableColumn<TDataItem>[];
5
5
  columnSizing: boolean;
6
6
  totalWidth: number;
7
- }): Column<TDataItem>[];
7
+ }): {
8
+ accessorKey: string;
9
+ header: (props: import("./components/Header").IProps<TDataItem>) => import("react").JSX.Element;
10
+ cell: (props: import("./components/Cell").IProps<TDataItem>) => import("react").JSX.Element;
11
+ size: number;
12
+ meta: ITableColumn<TDataItem>;
13
+ }[];
8
14
  /**
9
15
  * 计算
10
16
  * @param columns
@@ -13,6 +19,7 @@ export declare function getTableColumns<TDataItem extends object>({ columns, col
13
19
  * @returns
14
20
  */
15
21
  export declare function getColumnWidths(columns: ITableColumn<unknown>[], columnSizing: boolean, totalWidth: number): number[];
22
+ export declare function getNumberFromPercentageStr(str: string): number;
16
23
  /**
17
24
  * 判断是否百分比字符串
18
25
  * @param str
@@ -0,0 +1,121 @@
1
+ import _ from 'lodash';
2
+ import Cell from "./components/Cell";
3
+ import Header from "./components/Header";
4
+ export function getTableColumns(_ref) {
5
+ var columns = _ref.columns,
6
+ columnSizing = _ref.columnSizing,
7
+ totalWidth = _ref.totalWidth;
8
+ var columnWidths = getColumnWidths(columns, columnSizing, totalWidth);
9
+ return _.map(columns, function (col, index) {
10
+ return {
11
+ // 这里还需要排除掉空字符串的情况,id 不能为 ''
12
+ accessorKey: col.dataIndex || "column-".concat(index),
13
+ header: Header,
14
+ cell: Cell,
15
+ size: columnWidths[index],
16
+ meta: col
17
+ };
18
+ });
19
+ }
20
+
21
+ /**
22
+ * 计算
23
+ * @param columns
24
+ * @param columnSizing
25
+ * @param totalWidth
26
+ * @returns
27
+ */
28
+ export function getColumnWidths(columns, columnSizing, totalWidth) {
29
+ // 可改变列宽情况,react-table 可拖动列宽要求列宽值必须是数字,因为将百分比列宽转换为数字
30
+ var DEFAULT_WIDTH = 150;
31
+ // 计算出每个列的具体宽度值
32
+ var columnWidthInfos = _.map(columns, function (col) {
33
+ var width = col.width;
34
+ if (typeof width === 'number') {
35
+ return {
36
+ width: width,
37
+ isSpecific: true
38
+ };
39
+ }
40
+ if (typeof width === 'string' && isPercentage(width)) {
41
+ var widthNum = getNumberFromPercentageStr(width);
42
+ return {
43
+ width: widthNum * totalWidth / 100,
44
+ isSpecific: false
45
+ };
46
+ }
47
+ return {
48
+ width: DEFAULT_WIDTH,
49
+ isSpecific: false,
50
+ radio: 0
51
+ };
52
+ });
53
+ var totalColumnWidth = _.sum(columnWidthInfos.map(function (col) {
54
+ return col.width;
55
+ }));
56
+ if (totalWidth !== totalColumnWidth) {
57
+ // 如果实际宽度不等于列总宽度之和,则将差额的宽度按列宽的比例分配给各个没有设置具体宽度值的列
58
+
59
+ // 指定了具体值的列的总宽度
60
+ var specificWidth = _.sum(_.filter(columnWidthInfos, function (col) {
61
+ return col.isSpecific;
62
+ }).map(function (col) {
63
+ return col.width;
64
+ }));
65
+ var offset = totalWidth - totalColumnWidth;
66
+
67
+ // 计算每个没有设置具体宽度值的列应该分到的差值的占比
68
+ var totalOffsetWidth = totalColumnWidth - specificWidth;
69
+ var newColumnWidths = columnWidthInfos.map(function (colWidthInfo) {
70
+ if (colWidthInfo.isSpecific) {
71
+ return colWidthInfo.width;
72
+ }
73
+ // 未指定具体宽度值的列,分配差值
74
+ if (totalOffsetWidth !== 0) {
75
+ var radio = colWidthInfo.width / totalOffsetWidth;
76
+ return colWidthInfo.width + offset * radio;
77
+ }
78
+ return 0;
79
+ });
80
+
81
+ // 计算新的列宽度总和
82
+ var newTotalColumnWidth = _.sum(newColumnWidths);
83
+
84
+ // 计算并处理可能存在的误差
85
+ var errorWidth = totalWidth - newTotalColumnWidth;
86
+
87
+ // 将误差加到最后一个没有指定具体值的列上
88
+ var colIndex = _.findLastIndex(columnWidthInfos, function (columnWidthInfo) {
89
+ return !columnWidthInfo.isSpecific;
90
+ });
91
+ if (colIndex !== -1) {
92
+ var newWidth = newColumnWidths[colIndex] + errorWidth;
93
+ if (newWidth >= 0) {
94
+ newColumnWidths[colIndex] += errorWidth;
95
+ }
96
+ }
97
+ return newColumnWidths;
98
+ } else {
99
+ return _.map(columnWidthInfos, function (columnWidthInfo) {
100
+ return columnWidthInfo.width;
101
+ });
102
+ }
103
+ }
104
+ export function getNumberFromPercentageStr(str) {
105
+ var numberStr = str.replace('%', '');
106
+ return parseFloat(numberStr);
107
+ }
108
+
109
+ /**
110
+ * 判断是否百分比字符串
111
+ * @param str
112
+ * @returns
113
+ */
114
+ export function isPercentage(str) {
115
+ var regex = /^100(\.\d+)?%?$|^\d{1,2}(\.\d+)?%$/;
116
+ return regex.test(str);
117
+ }
118
+ var ALD_PREFIX = 'ald-table';
119
+ export function prefixCls(className) {
120
+ return "".concat(ALD_PREFIX, "-").concat(className);
121
+ }
@@ -0,0 +1,26 @@
1
+ /// <reference types="react" />
2
+ import { IScroll } from '../types';
3
+ /**
4
+ * 横向滚动条相关逻辑
5
+ * @param props
6
+ * @returns
7
+ */
8
+ export default function useScrollX(props: IProps): {
9
+ realWidth: number | undefined;
10
+ headerRef: import("react").RefObject<HTMLDivElement>;
11
+ onBodyScroll: (e: React.UIEvent<HTMLDivElement>) => void;
12
+ };
13
+ interface IProps {
14
+ scroll: IScroll;
15
+ totalSize: {
16
+ width: number;
17
+ height: number;
18
+ } | null;
19
+ }
20
+ /**
21
+ * 获取可用实际宽度
22
+ * @param scrollX 横向宽度值
23
+ * @param width 容器的宽度
24
+ */
25
+ export declare function getRealWidth(scrollX: IScroll['x'], width: number): number;
26
+ export {};
@@ -0,0 +1,57 @@
1
+ import { useCallback, useMemo, useRef } from 'react';
2
+ import { getNumberFromPercentageStr } from "../helper";
3
+ /**
4
+ * 横向滚动条相关逻辑
5
+ * @param props
6
+ * @returns
7
+ */
8
+ export default function useScrollX(props) {
9
+ var scroll = props.scroll,
10
+ totalSize = props.totalSize;
11
+ var headerRef = useRef(null);
12
+ var animationFrameId = useRef(null);
13
+ var x = scroll.x;
14
+ var realWidth = useMemo(function () {
15
+ if (!totalSize) {
16
+ return;
17
+ }
18
+ return getRealWidth(x, totalSize.width);
19
+ }, [x, totalSize]);
20
+ var onBodyScroll = useCallback(function (e) {
21
+ // animationFrame 可以保证横向滚动时,header 和 body 不会出现不同步的情况
22
+ if (animationFrameId.current !== null) {
23
+ window.cancelAnimationFrame(animationFrameId.current);
24
+ }
25
+ var scrollLeft = e.target.scrollLeft;
26
+ animationFrameId.current = window.requestAnimationFrame(function () {
27
+ var _headerRef$current;
28
+ (_headerRef$current = headerRef.current) === null || _headerRef$current === void 0 ? void 0 : _headerRef$current.scrollTo({
29
+ left: scrollLeft
30
+ });
31
+ });
32
+ }, []);
33
+ return {
34
+ realWidth: realWidth,
35
+ headerRef: headerRef,
36
+ onBodyScroll: onBodyScroll
37
+ };
38
+ }
39
+ /**
40
+ * 获取可用实际宽度
41
+ * @param scrollX 横向宽度值
42
+ * @param width 容器的宽度
43
+ */
44
+ export function getRealWidth(scrollX, width) {
45
+ if (typeof scrollX === 'string') {
46
+ var percent = getNumberFromPercentageStr(scrollX);
47
+ if (isNaN(percent)) {
48
+ console.error('scroll.x is not percentage string');
49
+ return width;
50
+ }
51
+ return percent * width / 100;
52
+ }
53
+ if (typeof scrollX === 'number') {
54
+ return scrollX;
55
+ }
56
+ return width;
57
+ }
@@ -1,2 +1,4 @@
1
- import Table from './Table';
1
+ import React from 'react';
2
+ import { ITableProps } from './types';
3
+ declare function Table<TDataItem extends object>(props: ITableProps<TDataItem>): React.JSX.Element;
2
4
  export default Table;
@@ -1,2 +1,177 @@
1
- import Table from "./Table";
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
4
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
5
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
6
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
9
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
10
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
11
+ import { flexRender, getCoreRowModel, useReactTable } from '@tanstack/react-table';
12
+ import classnames from 'classnames';
13
+ import _ from 'lodash';
14
+ import ResizeObserver from 'rc-resize-observer';
15
+ import React, { useMemo, useState } from 'react';
16
+ import { Empty, Pagination, ScrollArea, Spin } from '..';
17
+ import { getTableColumns, prefixCls } from "./helper";
18
+ import useScrollX from "./hooks/useScroll";
19
+ // 32 行高 + 1 底线高度
20
+ var HEADER_HEIGHT = 33;
21
+ function Table(props) {
22
+ var _classnames;
23
+ var columns = props.columns,
24
+ data = props.data,
25
+ rowKey = props.rowKey,
26
+ columnSizing = props.columnSizing,
27
+ sticky = props.sticky,
28
+ loading = props.loading,
29
+ pagination = props.pagination,
30
+ _props$scroll = props.scroll,
31
+ scroll = _props$scroll === void 0 ? {} : _props$scroll,
32
+ emptyComponent = props.empty,
33
+ _props$rowClassName = props.rowClassName,
34
+ rowClassName = _props$rowClassName === void 0 ? function () {
35
+ return '';
36
+ } : _props$rowClassName;
37
+ var _useState = useState(null),
38
+ _useState2 = _slicedToArray(_useState, 2),
39
+ totalSize = _useState2[0],
40
+ setTotalSize = _useState2[1];
41
+ var y = scroll.y;
42
+ var _useScrollX = useScrollX({
43
+ totalSize: totalSize,
44
+ scroll: scroll
45
+ }),
46
+ realWidth = _useScrollX.realWidth,
47
+ onBodyScroll = _useScrollX.onBodyScroll,
48
+ headerRef = _useScrollX.headerRef;
49
+ var tableColumns = useMemo(function () {
50
+ if (!totalSize || !realWidth) {
51
+ return [];
52
+ }
53
+ return getTableColumns({
54
+ columns: columns,
55
+ columnSizing: !!columnSizing,
56
+ totalWidth: realWidth
57
+ });
58
+ }, [columns, totalSize, columnSizing, realWidth]);
59
+ var tableInstance = useReactTable({
60
+ columns: tableColumns,
61
+ data: data,
62
+ getCoreRowModel: getCoreRowModel(),
63
+ getRowId: function getRowId(row, index) {
64
+ var rowKeyStr = index;
65
+ if (typeof rowKey === 'function') {
66
+ rowKeyStr = rowKey(row);
67
+ } else if (rowKey !== undefined) {
68
+ rowKeyStr = _.get(row, rowKey, index);
69
+ }
70
+ return _.toString(rowKeyStr);
71
+ },
72
+ columnResizeMode: 'onChange'
73
+ });
74
+
75
+ // 渲染 header
76
+ var headerGroups = tableInstance.getHeaderGroups();
77
+ var _tableInstance$getRow = tableInstance.getRowModel(),
78
+ rows = _tableInstance$getRow.rows;
79
+ var isStickyWork = !!sticky && y === undefined;
80
+ var headerStyle = {};
81
+ if (isStickyWork && _.get(sticky, 'offsetHeader')) {
82
+ headerStyle.top = _.get(sticky, 'offsetHeader', 0);
83
+ }
84
+ var headerContent = /*#__PURE__*/React.createElement("div", {
85
+ className: classnames(prefixCls('header'), (_classnames = {}, _defineProperty(_classnames, prefixCls('sticky'), isStickyWork), _defineProperty(_classnames, prefixCls('overflow-x'), true), _classnames)),
86
+ ref: headerRef,
87
+ style: headerStyle
88
+ }, _.map(headerGroups, function (headerGroup) {
89
+ return /*#__PURE__*/React.createElement("div", {
90
+ className: prefixCls('tr'),
91
+ key: headerGroup.id
92
+ }, _.map(headerGroup.headers, function (header) {
93
+ var _classnames2;
94
+ return /*#__PURE__*/React.createElement("div", {
95
+ className: prefixCls('th'),
96
+ style: {
97
+ width: header.getSize()
98
+ },
99
+ key: header.id
100
+ }, flexRender(header.column.columnDef.header, header.getContext()), columnSizing && /*#__PURE__*/React.createElement("div", {
101
+ onMouseDown: header.getResizeHandler(),
102
+ onTouchStart: header.getResizeHandler(),
103
+ className: classnames(prefixCls('resizer'), (_classnames2 = {}, _defineProperty(_classnames2, prefixCls('self-resizing'), header.column.getIsResizing()), _defineProperty(_classnames2, prefixCls('resizing'), tableInstance.getState().columnSizingInfo.isResizingColumn), _classnames2))
104
+ }));
105
+ }));
106
+ }));
107
+
108
+ // 渲染 body
109
+ var bodyContent = /*#__PURE__*/React.createElement(Spin, {
110
+ spinning: !!loading,
111
+ tip: "Loading..."
112
+ }, /*#__PURE__*/React.createElement("div", {
113
+ className: prefixCls('body'),
114
+ style: {
115
+ width: tableInstance.getTotalSize()
116
+ }
117
+ }, rows.length === 0 && !loading ? emptyComponent || /*#__PURE__*/React.createElement("div", {
118
+ className: prefixCls('empty')
119
+ }, /*#__PURE__*/React.createElement(Empty, {
120
+ title: "No Data",
121
+ image: Empty.PRESENTED_IMAGE_SEARCH
122
+ })) : _.map(rows, function (row, rowIndex) {
123
+ return /*#__PURE__*/React.createElement("div", {
124
+ key: row.id,
125
+ className: classnames(prefixCls('tr'), rowClassName(row.original, rowIndex))
126
+ }, _.map(row.getVisibleCells(), function (cell) {
127
+ return /*#__PURE__*/React.createElement("div", {
128
+ className: prefixCls('td'),
129
+ key: cell.id,
130
+ style: {
131
+ width: cell.column.getSize()
132
+ }
133
+ }, flexRender(cell.column.columnDef.cell, cell.getContext()));
134
+ }));
135
+ })));
136
+ var tableContent = y && totalSize ? /*#__PURE__*/React.createElement("div", {
137
+ className: prefixCls('content')
138
+ }, /*#__PURE__*/React.createElement("div", {
139
+ className: prefixCls('header'),
140
+ style: {
141
+ height: HEADER_HEIGHT
142
+ }
143
+ }, headerContent), /*#__PURE__*/React.createElement("div", {
144
+ style: {
145
+ height: totalSize.height - HEADER_HEIGHT
146
+ },
147
+ className: prefixCls('body-scroll')
148
+ }, /*#__PURE__*/React.createElement(ScrollArea, {
149
+ onViewportScroll: onBodyScroll
150
+ }, bodyContent))) : /*#__PURE__*/React.createElement("div", {
151
+ className: prefixCls('content')
152
+ }, headerContent, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(ScrollArea, {
153
+ onViewportScroll: onBodyScroll
154
+ }, bodyContent)));
155
+ var tableStyle = {};
156
+ if (y) {
157
+ tableStyle.height = y;
158
+ }
159
+ return /*#__PURE__*/React.createElement("div", {
160
+ className: prefixCls('container'),
161
+ style: tableStyle
162
+ }, /*#__PURE__*/React.createElement(ResizeObserver, {
163
+ onResize: function onResize(size) {
164
+ // 在 Modal 中使用表格组件,偶现 width 和 offsetWidth 不一致的情况,导致表格宽度不正确,具体原因未找到
165
+ // 实践发现 offsetWidth 一直是正确的宽度
166
+ setTotalSize({
167
+ width: size.offsetWidth,
168
+ height: size.offsetHeight
169
+ });
170
+ }
171
+ }, /*#__PURE__*/React.createElement("div", {
172
+ className: classnames(prefixCls('main'), _defineProperty({}, prefixCls('overflow-hidden'), !!y))
173
+ }, tableContent)), pagination && /*#__PURE__*/React.createElement("div", {
174
+ className: prefixCls('pagination')
175
+ }, /*#__PURE__*/React.createElement(Pagination, pagination)));
176
+ }
2
177
  export default Table;