@autobest-ui/components 1.1.1 → 1.1.8

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 (146) hide show
  1. package/README.md +10 -10
  2. package/esm/accordion/__stories__/style.scss +58 -58
  3. package/esm/affix/__stories__/style.scss +13 -13
  4. package/esm/affix/style/index.scss +34 -34
  5. package/esm/base.scss +42 -42
  6. package/esm/carousel/__stories__/style.scss +41 -41
  7. package/esm/carousel/style/index.scss +37 -37
  8. package/esm/checkbox/style/index.scss +117 -117
  9. package/esm/collapse/__stories__/style.scss +18 -18
  10. package/esm/collapse/style/index.scss +42 -42
  11. package/esm/confirm/style/index.scss +44 -44
  12. package/esm/date-picker/calendar/grid/index.scss +85 -85
  13. package/esm/date-picker/calendar/index.scss +57 -57
  14. package/esm/date-picker/index.d.ts +1 -0
  15. package/esm/date-picker/index.js +17 -7
  16. package/esm/date-picker/style/index.css +1 -1
  17. package/esm/date-picker/style/index.scss +23 -19
  18. package/esm/drawer/style/index.scss +44 -44
  19. package/esm/ellipsis/style/index.scss +35 -35
  20. package/esm/guide/__stories__/style.scss +13 -13
  21. package/esm/guide/style/index.scss +17 -17
  22. package/esm/icon/__stories__/style.scss +39 -39
  23. package/esm/icon/style/index.scss +6 -6
  24. package/esm/index.d.ts +2 -1
  25. package/esm/input-number/style/index.scss +86 -86
  26. package/esm/lazy-image/__stories__/style.scss +9 -9
  27. package/esm/lazy-image/style/index.scss +24 -24
  28. package/esm/link-list/style/index.scss +125 -125
  29. package/esm/loading/style/index.scss +30 -30
  30. package/esm/loading-bar/style/index.scss +62 -62
  31. package/esm/loading-container/__stories__/style.scss +5 -5
  32. package/esm/loading-container/style/index.scss +27 -27
  33. package/esm/loading-icon/style/index.scss +23 -23
  34. package/esm/mask/style/index.scss +34 -34
  35. package/esm/message/style/index.scss +70 -70
  36. package/esm/modal/style/index.scss +112 -112
  37. package/esm/move/__stories__/style.scss +6 -6
  38. package/esm/move/style/index.scss +7 -7
  39. package/esm/popover/__stories__/style.scss +15 -15
  40. package/esm/popover/style/index.scss +59 -59
  41. package/esm/select/__stories__/style.scss +8 -8
  42. package/esm/select/style/index.scss +126 -126
  43. package/esm/show-more/style/index.scss +22 -22
  44. package/esm/skeleton/__stories__/style.scss +2 -2
  45. package/esm/skeleton/style/index.scss +26 -26
  46. package/esm/style.css +14 -14
  47. package/esm/table/__stories__/style.css +1 -1
  48. package/esm/table/__stories__/style.scss +33 -2
  49. package/esm/table/body/BodyRow.d.ts +19 -0
  50. package/esm/table/body/BodyRow.js +98 -0
  51. package/esm/table/body/CheckIcon.d.ts +16 -0
  52. package/esm/table/body/CheckIcon.js +35 -0
  53. package/esm/table/body/index.d.ts +24 -0
  54. package/esm/table/body/index.js +62 -0
  55. package/esm/table/header/CheckIcon.d.ts +13 -0
  56. package/esm/table/header/CheckIcon.js +37 -0
  57. package/esm/table/header/HeaderCell.d.ts +18 -0
  58. package/esm/table/{HeaderCell.js → header/HeaderCell.js} +11 -4
  59. package/esm/table/header/HeaderRow.d.ts +16 -0
  60. package/esm/table/header/HeaderRow.js +76 -0
  61. package/esm/table/index.d.ts +52 -27
  62. package/esm/table/index.js +178 -155
  63. package/esm/table/interface.d.ts +16 -3
  64. package/esm/table/style/index.css +1 -1
  65. package/esm/table/style/index.scss +51 -70
  66. package/esm/tabs/__stories__/style.scss +8 -8
  67. package/esm/tabs/style/index.css +1 -1
  68. package/esm/tabs/style/index.scss +62 -62
  69. package/esm/tooltip/style/index.scss +61 -61
  70. package/esm/trigger/style/index.scss +79 -79
  71. package/lib/accordion/__stories__/style.scss +58 -58
  72. package/lib/affix/__stories__/style.scss +13 -13
  73. package/lib/affix/style/index.scss +34 -34
  74. package/lib/base.scss +42 -42
  75. package/lib/carousel/__stories__/style.scss +41 -41
  76. package/lib/carousel/style/index.scss +37 -37
  77. package/lib/checkbox/style/index.scss +117 -117
  78. package/lib/collapse/__stories__/style.scss +18 -18
  79. package/lib/collapse/style/index.scss +42 -42
  80. package/lib/confirm/style/index.scss +44 -44
  81. package/lib/date-picker/calendar/grid/index.scss +85 -85
  82. package/lib/date-picker/calendar/index.scss +57 -57
  83. package/lib/date-picker/index.d.ts +1 -0
  84. package/lib/date-picker/index.js +17 -7
  85. package/lib/date-picker/style/index.css +1 -1
  86. package/lib/date-picker/style/index.scss +23 -19
  87. package/lib/drawer/style/index.scss +44 -44
  88. package/lib/ellipsis/style/index.scss +35 -35
  89. package/lib/guide/__stories__/style.scss +13 -13
  90. package/lib/guide/style/index.scss +17 -17
  91. package/lib/icon/__stories__/style.scss +39 -39
  92. package/lib/icon/style/index.scss +6 -6
  93. package/lib/index.d.ts +2 -1
  94. package/lib/input-number/style/index.scss +86 -86
  95. package/lib/lazy-image/__stories__/style.scss +9 -9
  96. package/lib/lazy-image/style/index.scss +24 -24
  97. package/lib/link-list/style/index.scss +125 -125
  98. package/lib/loading/style/index.scss +30 -30
  99. package/lib/loading-bar/style/index.scss +62 -62
  100. package/lib/loading-container/__stories__/style.scss +5 -5
  101. package/lib/loading-container/style/index.scss +27 -27
  102. package/lib/loading-icon/style/index.scss +23 -23
  103. package/lib/mask/style/index.scss +34 -34
  104. package/lib/message/style/index.scss +70 -70
  105. package/lib/modal/style/index.scss +112 -112
  106. package/lib/move/__stories__/style.scss +6 -6
  107. package/lib/move/style/index.scss +7 -7
  108. package/lib/popover/__stories__/style.scss +15 -15
  109. package/lib/popover/style/index.scss +59 -59
  110. package/lib/select/__stories__/style.scss +8 -8
  111. package/lib/select/style/index.scss +126 -126
  112. package/lib/show-more/style/index.scss +22 -22
  113. package/lib/skeleton/__stories__/style.scss +2 -2
  114. package/lib/skeleton/style/index.scss +26 -26
  115. package/lib/style.css +14 -14
  116. package/lib/table/__stories__/style.css +1 -1
  117. package/lib/table/__stories__/style.scss +33 -2
  118. package/lib/table/body/BodyRow.d.ts +19 -0
  119. package/lib/table/body/BodyRow.js +112 -0
  120. package/lib/table/body/CheckIcon.d.ts +16 -0
  121. package/lib/table/body/CheckIcon.js +47 -0
  122. package/lib/table/body/index.d.ts +24 -0
  123. package/lib/table/body/index.js +74 -0
  124. package/lib/table/header/CheckIcon.d.ts +13 -0
  125. package/lib/table/header/CheckIcon.js +49 -0
  126. package/lib/table/header/HeaderCell.d.ts +18 -0
  127. package/lib/table/{HeaderCell.js → header/HeaderCell.js} +11 -4
  128. package/lib/table/header/HeaderRow.d.ts +16 -0
  129. package/lib/table/header/HeaderRow.js +89 -0
  130. package/lib/table/index.d.ts +52 -27
  131. package/lib/table/index.js +177 -155
  132. package/lib/table/interface.d.ts +16 -3
  133. package/lib/table/style/index.css +1 -1
  134. package/lib/table/style/index.scss +51 -70
  135. package/lib/tabs/__stories__/style.scss +8 -8
  136. package/lib/tabs/style/index.css +1 -1
  137. package/lib/tabs/style/index.scss +62 -62
  138. package/lib/tooltip/style/index.scss +61 -61
  139. package/lib/trigger/style/index.scss +79 -79
  140. package/package.json +2 -2
  141. package/esm/table/BodyCell.d.ts +0 -6
  142. package/esm/table/BodyCell.js +0 -12
  143. package/esm/table/HeaderCell.d.ts +0 -13
  144. package/lib/table/BodyCell.d.ts +0 -6
  145. package/lib/table/BodyCell.js +0 -22
  146. package/lib/table/HeaderCell.d.ts +0 -13
@@ -1 +1 @@
1
- .ab-table-body{height:120px}
1
+ .table-demo thead{background-color:#2b5797;color:#fff}.table-demo tbody tr.ab-table-expand-row{background-color:#fafafa}.table-demo tbody tr:hover{background-color:#f3f3f3}.table-demo td,.table-demo th{padding:.16rem;border-bottom:1px solid #d0d0d0}.table-demo td.ab-table-checkbox,.table-demo th.ab-table-checkbox{padding:.16rem 0}.table-demo .merged-cell{border-left:1px solid #d0d0d0;border-right:1px solid #d0d0d0}.table-demo-expanded{font-size:.2rem}
@@ -1,3 +1,34 @@
1
- .ab-table-body {
2
- height: 120px;
1
+ .table-demo {
2
+ thead {
3
+ background-color: #2b5797;
4
+ color: #fff;
5
+ }
6
+
7
+ tbody tr {
8
+ &.ab-table-expand-row {
9
+ background-color: #fafafa;
10
+ }
11
+
12
+ &:hover {
13
+ background-color: #f3f3f3;
14
+ }
15
+ }
16
+
17
+ th, td {
18
+ padding: .16rem;
19
+ border-bottom: 1px solid #D0D0D0;
20
+
21
+ &.ab-table-checkbox {
22
+ padding: .16rem 0;
23
+ }
24
+ }
25
+
26
+ .merged-cell {
27
+ border-left: 1px solid #D0D0D0;
28
+ border-right: 1px solid #D0D0D0;
29
+ }
30
+ }
31
+
32
+ .table-demo-expanded {
33
+ font-size: .2rem;
3
34
  }
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { Column } from '../interface';
3
+ export interface BodyRowProps<T> {
4
+ className?: string;
5
+ prefixCls: string;
6
+ rowData: T;
7
+ index: number;
8
+ columns: Column<T>[];
9
+ indent: number;
10
+ CheckCell: React.ReactElement;
11
+ isExpand?: boolean;
12
+ }
13
+ declare function BodyRow<RowDataType>({ className, prefixCls: cls, rowData, index, columns, indent, CheckCell, isExpand }: BodyRowProps<RowDataType>): JSX.Element;
14
+ declare namespace BodyRow {
15
+ var defaultProps: {
16
+ isExpand: boolean;
17
+ };
18
+ }
19
+ export default BodyRow;
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _classnames = _interopRequireDefault(require("classnames"));
15
+
16
+ var _utils = require("@autobest-ui/utils");
17
+
18
+ var __assign = void 0 && (void 0).__assign || function () {
19
+ __assign = Object.assign || function (t) {
20
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
21
+ s = arguments[i];
22
+
23
+ for (var p in s) {
24
+ if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
25
+ }
26
+ }
27
+
28
+ return t;
29
+ };
30
+
31
+ return __assign.apply(this, arguments);
32
+ };
33
+
34
+ var getIndentCol = function getIndentCol(prefixCls, number) {
35
+ if (number === 0) {
36
+ return null;
37
+ }
38
+
39
+ return new Array(number).fill(false).map(function (_item, index) {
40
+ return _react.default.createElement("td", {
41
+ key: index,
42
+ className: prefixCls + "-indent"
43
+ });
44
+ });
45
+ };
46
+
47
+ function BodyRow(_a) {
48
+ var className = _a.className,
49
+ cls = _a.prefixCls,
50
+ rowData = _a.rowData,
51
+ index = _a.index,
52
+ columns = _a.columns,
53
+ indent = _a.indent,
54
+ CheckCell = _a.CheckCell,
55
+ isExpand = _a.isExpand;
56
+
57
+ var indentCell = _react.default.useMemo(function () {
58
+ return getIndentCol(cls, indent);
59
+ }, [cls, indent]);
60
+
61
+ var contentCells = [];
62
+ columns.forEach(function (col, colIndex) {
63
+ var renderer = (columns[colIndex] || {}).onRender;
64
+ var renderInfo = renderer ? renderer(rowData, index, colIndex) : rowData[col.dataIndex];
65
+ var cellProps = {};
66
+ var content;
67
+
68
+ if (renderInfo && (0, _typeof2.default)(renderInfo) === 'object' && !Array.isArray(renderInfo) && !_react.default.isValidElement(renderInfo)) {
69
+ var children = renderInfo.children,
70
+ props = renderInfo.props;
71
+ content = children;
72
+ cellProps = props;
73
+ } else {
74
+ content = renderInfo;
75
+ }
76
+
77
+ var colSpan = cellProps.colSpan,
78
+ rowSpan = cellProps.rowSpan,
79
+ className = cellProps.className;
80
+
81
+ var cellInfo = __assign(__assign({}, col), {
82
+ content: content,
83
+ colSpan: colSpan === undefined ? 1 : colSpan,
84
+ rowSpan: rowSpan === undefined ? 1 : rowSpan
85
+ });
86
+
87
+ if (cellInfo.colSpan === 0 || cellInfo.rowSpan === 0 || isExpand && !cellInfo.content) {
88
+ return;
89
+ }
90
+
91
+ contentCells.push(_react.default.createElement("td", {
92
+ className: className,
93
+ key: cellInfo.key,
94
+ colSpan: cellInfo.colSpan,
95
+ rowSpan: cellInfo.rowSpan
96
+ }, cellInfo.content));
97
+ });
98
+
99
+ if (!(0, _utils.isEmptyArray)(contentCells)) {
100
+ return _react.default.createElement("tr", {
101
+ className: (0, _classnames.default)(cls + "-row", className)
102
+ }, indentCell, CheckCell, contentCells);
103
+ }
104
+
105
+ return null;
106
+ }
107
+
108
+ BodyRow.defaultProps = {
109
+ isExpand: false
110
+ };
111
+ var _default = BodyRow;
112
+ exports.default = _default;
@@ -0,0 +1,16 @@
1
+ import React, { ReactText } from 'react';
2
+ export interface BodyRowSelectionInfo<T> {
3
+ checkIcon?: (checked: boolean, rowData: T, index: number) => React.ReactElement;
4
+ getDisabled?: (rowData: T) => boolean;
5
+ onSelect?: (checked: boolean, rowData: T) => void;
6
+ }
7
+ export interface BodyCheckIconProps<T> {
8
+ prefixCls: string;
9
+ rowData: T;
10
+ rowKey: ReactText;
11
+ rowIndex: number;
12
+ rowSelection: BodyRowSelectionInfo<T>;
13
+ selectedRowKeys: ReactText[];
14
+ }
15
+ declare const _default: React.NamedExoticComponent<BodyCheckIconProps<any>>;
16
+ export default _default;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _checkbox = _interopRequireDefault(require("../../checkbox"));
13
+
14
+ function BodyCheckIcon(_a) {
15
+ var cls = _a.prefixCls,
16
+ rowData = _a.rowData,
17
+ rowKey = _a.rowKey,
18
+ rowIndex = _a.rowIndex,
19
+ selectedRowKeys = _a.selectedRowKeys,
20
+ _b = _a.rowSelection,
21
+ checkIcon = _b.checkIcon,
22
+ getDisabled = _b.getDisabled,
23
+ onSelect = _b.onSelect;
24
+ var checked = selectedRowKeys.includes(rowKey);
25
+
26
+ if (checkIcon) {
27
+ return _react.default.createElement("td", null, checkIcon(checked, rowData, rowIndex));
28
+ }
29
+
30
+ var disabled = getDisabled(rowData);
31
+
32
+ var onCheckBoxChange = function onCheckBoxChange(checked) {
33
+ onSelect(checked, rowData);
34
+ };
35
+
36
+ return _react.default.createElement("td", {
37
+ className: cls + "-checkbox"
38
+ }, _react.default.createElement(_checkbox.default, {
39
+ checked: checked,
40
+ disabled: disabled,
41
+ onChange: onCheckBoxChange
42
+ }));
43
+ }
44
+
45
+ var _default = _react.default.memo(BodyCheckIcon);
46
+
47
+ exports.default = _default;
@@ -0,0 +1,24 @@
1
+ import React, { ReactText } from 'react';
2
+ import { BodyRowProps } from './BodyRow';
3
+ import { BodyCheckIconProps, BodyRowSelectionInfo } from './CheckIcon';
4
+ import { ColumnOnRenderReturnObjectInfo } from '../interface';
5
+ /**
6
+ * 可展开子列表
7
+ */
8
+ export interface TableExpandableInfo<T> {
9
+ expandedRowRender: (rowData: T, index: number) => React.ReactNode | React.ReactNode[] | ColumnOnRenderReturnObjectInfo;
10
+ }
11
+ export interface BodyProps<T> extends Pick<BodyRowProps<T>, 'prefixCls' | 'columns'>, Pick<BodyCheckIconProps<T>, 'selectedRowKeys'> {
12
+ /**
13
+ * 表格数据
14
+ */
15
+ dataSource: T[];
16
+ /**
17
+ * 子列表渲染(不赋值则没有子列表),详见Expandable
18
+ */
19
+ expandable?: TableExpandableInfo<T>;
20
+ getRowKey: (rowData: T) => ReactText;
21
+ rowSelection: BodyRowSelectionInfo<T>;
22
+ }
23
+ declare function Body<RowDataType>({ prefixCls, columns, dataSource, getRowKey, rowSelection, selectedRowKeys, expandable }: BodyProps<RowDataType>): JSX.Element;
24
+ export default Body;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _BodyRow = _interopRequireDefault(require("./BodyRow"));
13
+
14
+ var _CheckIcon = _interopRequireDefault(require("./CheckIcon"));
15
+
16
+ var noop = function noop() {
17
+ return null;
18
+ };
19
+
20
+ function Body(_a) {
21
+ var prefixCls = _a.prefixCls,
22
+ columns = _a.columns,
23
+ dataSource = _a.dataSource,
24
+ getRowKey = _a.getRowKey,
25
+ rowSelection = _a.rowSelection,
26
+ selectedRowKeys = _a.selectedRowKeys,
27
+ expandable = _a.expandable;
28
+ var rows = [];
29
+ var expandedRowRenderer = expandable ? expandable.expandedRowRender : noop;
30
+ dataSource.forEach(function (row, rowIndex) {
31
+ var rowKey = getRowKey(row);
32
+ var CheckCell = rowSelection ? _react.default.createElement(_CheckIcon.default, {
33
+ prefixCls: prefixCls,
34
+ rowSelection: rowSelection,
35
+ rowKey: rowKey,
36
+ rowData: row,
37
+ rowIndex: rowIndex,
38
+ selectedRowKeys: selectedRowKeys
39
+ }) : null;
40
+ rows.push(_react.default.createElement(_BodyRow.default, {
41
+ key: rowKey,
42
+ prefixCls: prefixCls,
43
+ rowData: row,
44
+ index: rowIndex,
45
+ columns: columns,
46
+ CheckCell: CheckCell,
47
+ indent: 0
48
+ }));
49
+ var expandedRowKey = rowKey + " expanded";
50
+ var expandedColumns = [{
51
+ title: null,
52
+ key: expandedRowKey,
53
+ onRender: expandedRowRenderer
54
+ }];
55
+
56
+ if (expandable) {
57
+ rows.push(_react.default.createElement(_BodyRow.default, {
58
+ key: expandedRowKey,
59
+ className: prefixCls + "-expand-row",
60
+ prefixCls: prefixCls,
61
+ rowData: row,
62
+ index: rowIndex,
63
+ columns: expandedColumns,
64
+ CheckCell: null,
65
+ indent: CheckCell ? 1 : 0,
66
+ isExpand: true
67
+ }));
68
+ }
69
+ });
70
+ return _react.default.createElement(_react.default.Fragment, null, rows);
71
+ }
72
+
73
+ var _default = Body;
74
+ exports.default = _default;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ export interface HeaderRowSelectionInfo {
3
+ checkIcon?: (checked: boolean, rowData: null, index: number) => React.ReactElement;
4
+ selectAllVisible?: boolean;
5
+ selectAllChecked: boolean;
6
+ onSelectAll?: (checked: boolean) => void;
7
+ }
8
+ interface HeaderCheckIconProps {
9
+ prefixCls: string;
10
+ rowSelection: HeaderRowSelectionInfo;
11
+ }
12
+ declare const _default: React.NamedExoticComponent<HeaderCheckIconProps>;
13
+ export default _default;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _checkbox = _interopRequireDefault(require("../../checkbox"));
13
+
14
+ function HeaderCheckIcon(_a) {
15
+ var cls = _a.prefixCls,
16
+ rowSelection = _a.rowSelection;
17
+
18
+ if (!rowSelection) {
19
+ return null;
20
+ }
21
+
22
+ if (!rowSelection.selectAllVisible) {
23
+ // 有勾选功能,但是没有全选功能,需有占位元素
24
+ return _react.default.createElement("th", null, " ");
25
+ }
26
+
27
+ var checkIcon = rowSelection.checkIcon,
28
+ selectAllChecked = rowSelection.selectAllChecked,
29
+ onSelectAll = rowSelection.onSelectAll;
30
+
31
+ if (checkIcon) {
32
+ return _react.default.createElement("th", null, checkIcon(selectAllChecked, null, -1));
33
+ }
34
+
35
+ var onCheckBoxChange = function onCheckBoxChange() {
36
+ onSelectAll(!selectAllChecked);
37
+ };
38
+
39
+ return _react.default.createElement("th", {
40
+ className: cls + "-checkbox"
41
+ }, _react.default.createElement(_checkbox.default, {
42
+ checked: selectAllChecked,
43
+ onChange: onCheckBoxChange
44
+ }));
45
+ }
46
+
47
+ var _default = _react.default.memo(HeaderCheckIcon);
48
+
49
+ exports.default = _default;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { Column } from '../interface';
3
+ export interface HeaderCellProps<T> extends Column<T> {
4
+ prefixCls: string;
5
+ isSort: boolean;
6
+ isSortedDescending?: boolean;
7
+ onSort: (sortColumn: string) => void;
8
+ /**
9
+ * 自定义排序图标,若不传,则采用默认的排序图标
10
+ * @param isSortDesc
11
+ */
12
+ sortIcon?: (isSortDesc: boolean) => React.ReactNode;
13
+ }
14
+ export default class HeaderCell<RowDataType> extends React.PureComponent<HeaderCellProps<RowDataType>> {
15
+ onClick: () => void;
16
+ renderArrow: () => {};
17
+ render(): JSX.Element;
18
+ }
@@ -11,7 +11,7 @@ var _react = _interopRequireDefault(require("react"));
11
11
 
12
12
  var _classnames = _interopRequireDefault(require("classnames"));
13
13
 
14
- var _icon = _interopRequireDefault(require("../icon"));
14
+ var _icon = _interopRequireDefault(require("../../icon"));
15
15
 
16
16
  var __extends = void 0 && (void 0).__extends || function () {
17
17
  var _extendStatics = function extendStatics(d, b) {
@@ -61,12 +61,17 @@ function (_super) {
61
61
  var _a = _this.props,
62
62
  prefixCls = _a.prefixCls,
63
63
  isSort = _a.isSort,
64
- isSortedDescending = _a.isSortedDescending;
64
+ isSortedDescending = _a.isSortedDescending,
65
+ sortIcon = _a.sortIcon;
65
66
 
66
67
  if (!isSort) {
67
68
  return null;
68
69
  }
69
70
 
71
+ if (sortIcon) {
72
+ return sortIcon(isSortedDescending);
73
+ }
74
+
70
75
  return _react.default.createElement(_icon.default, {
71
76
  className: prefixCls + "-arrow",
72
77
  name: "arrow",
@@ -83,11 +88,13 @@ function (_super) {
83
88
 
84
89
  var _b = this.props,
85
90
  prefixCls = _b.prefixCls,
91
+ className = _b.className,
86
92
  title = _b.title,
87
93
  sortName = _b.sortName,
88
- fieldName = _b.fieldName;
94
+ colSpan = _b.colSpan;
89
95
  return _react.default.createElement("th", {
90
- key: fieldName
96
+ className: className,
97
+ colSpan: colSpan
91
98
  }, _react.default.createElement("div", {
92
99
  className: (0, _classnames.default)(prefixCls + "-title", (_a = {}, _a[prefixCls + "-point"] = sortName, _a)),
93
100
  onClick: this.onClick
@@ -0,0 +1,16 @@
1
+ import { Column } from '../interface';
2
+ import { HeaderCellProps } from './HeaderCell';
3
+ import { HeaderRowSelectionInfo } from './CheckIcon';
4
+ export interface HeaderRowProps<T> extends Pick<HeaderCellProps<T>, 'sortName' | 'isSortedDescending' | 'sortIcon'> {
5
+ prefixCls: string;
6
+ columns: Column<T>[];
7
+ /**
8
+ * 点击表头触发的排序函数
9
+ * @param isSortedDescending
10
+ * @param sortName
11
+ */
12
+ onSortChange?: (isSortedDescending: boolean, sortName: string) => void;
13
+ rowSelection: HeaderRowSelectionInfo;
14
+ }
15
+ declare function HeaderRow<RowDataType>({ prefixCls: cls, columns, rowSelection, sortName, isSortedDescending, onSortChange, sortIcon }: HeaderRowProps<RowDataType>): JSX.Element;
16
+ export default HeaderRow;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _HeaderCell = _interopRequireDefault(require("./HeaderCell"));
13
+
14
+ var _CheckIcon = _interopRequireDefault(require("./CheckIcon"));
15
+
16
+ var __assign = void 0 && (void 0).__assign || function () {
17
+ __assign = Object.assign || function (t) {
18
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
19
+ s = arguments[i];
20
+
21
+ for (var p in s) {
22
+ if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
23
+ }
24
+ }
25
+
26
+ return t;
27
+ };
28
+
29
+ return __assign.apply(this, arguments);
30
+ };
31
+
32
+ function parseHeaderRows(columns) {
33
+ var rows = [];
34
+ columns.forEach(function (col) {
35
+ if ('colSpan' in col && col.colSpan === 0) {
36
+ return;
37
+ }
38
+
39
+ rows.push(__assign(__assign({}, col), {
40
+ colSpan: col.colSpan ? col.colSpan : 1
41
+ }));
42
+ });
43
+ return rows;
44
+ }
45
+
46
+ function HeaderRow(_a) {
47
+ var cls = _a.prefixCls,
48
+ columns = _a.columns,
49
+ rowSelection = _a.rowSelection,
50
+ sortName = _a.sortName,
51
+ isSortedDescending = _a.isSortedDescending,
52
+ onSortChange = _a.onSortChange,
53
+ sortIcon = _a.sortIcon;
54
+ /**
55
+ * 点击某一列的表头,触发排序
56
+ * @param name
57
+ */
58
+
59
+ var onSort = function onSort(name) {
60
+ if (!onSortChange) {
61
+ return;
62
+ }
63
+
64
+ var isSortedDesc = sortName === name ? !isSortedDescending : true;
65
+ onSortChange(isSortedDesc, name);
66
+ };
67
+
68
+ var rows = _react.default.useMemo(function () {
69
+ return parseHeaderRows(columns);
70
+ }, [columns]);
71
+
72
+ return _react.default.createElement("tr", null, _react.default.createElement(_CheckIcon.default, {
73
+ prefixCls: cls,
74
+ rowSelection: rowSelection
75
+ }), rows.map(function (item) {
76
+ return _react.default.createElement(_HeaderCell.default, __assign({
77
+ key: item.key
78
+ }, item, {
79
+ prefixCls: cls,
80
+ isSort: sortName && sortName === item.sortName,
81
+ isSortedDescending: isSortedDescending,
82
+ onSort: onSort,
83
+ sortIcon: sortIcon
84
+ }));
85
+ }));
86
+ }
87
+
88
+ var _default = HeaderRow;
89
+ exports.default = _default;