@hw-component/table 0.0.4-beta-v9 → 0.0.4-beta-v16

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 (52) hide show
  1. package/es/HTableBody/AlertMsg.d.ts +6 -0
  2. package/es/HTableBody/AlertMsg.js +48 -0
  3. package/es/HTableBody/RowSelection.d.ts +9 -0
  4. package/es/HTableBody/RowSelection.js +135 -0
  5. package/es/HTableBody/hooks.d.ts +76 -76
  6. package/es/HTableBody/hooks.js +34 -7
  7. package/es/HTableBody/index.d.ts +3 -2
  8. package/es/HTableBody/index.js +42 -28
  9. package/es/HTableFooter/index.js +2 -2
  10. package/es/HTableHeader/index.js +4 -4
  11. package/es/Table.d.ts +1 -1
  12. package/es/Table.js +11 -19
  13. package/es/context.d.ts +1 -0
  14. package/es/index.css +7 -1
  15. package/es/index.d.ts +0 -1
  16. package/es/index.js +0 -1
  17. package/es/modal.d.ts +8 -5
  18. package/lib/HTableBody/AlertMsg.d.ts +6 -0
  19. package/lib/HTableBody/AlertMsg.js +51 -0
  20. package/lib/HTableBody/RowSelection.d.ts +9 -0
  21. package/lib/HTableBody/RowSelection.js +137 -0
  22. package/lib/HTableBody/hooks.d.ts +76 -76
  23. package/lib/HTableBody/hooks.js +34 -7
  24. package/lib/HTableBody/index.d.ts +3 -2
  25. package/lib/HTableBody/index.js +41 -27
  26. package/lib/HTableFooter/index.js +2 -2
  27. package/lib/HTableHeader/index.js +4 -4
  28. package/lib/Table.d.ts +1 -1
  29. package/lib/Table.js +11 -19
  30. package/lib/context.d.ts +1 -0
  31. package/lib/index.css +7 -1
  32. package/lib/index.d.ts +0 -1
  33. package/lib/index.js +0 -2
  34. package/lib/modal.d.ts +8 -5
  35. package/package.json +1 -1
  36. package/src/components/HTableBody/AlertMsg.tsx +37 -0
  37. package/src/components/HTableBody/RowSelection.tsx +111 -0
  38. package/src/components/HTableBody/{hooks.ts → hooks.tsx} +22 -7
  39. package/src/components/HTableBody/index.tsx +45 -33
  40. package/src/components/HTableHeader/index.tsx +4 -3
  41. package/src/components/HTablePagination/index.tsx +10 -13
  42. package/src/components/Table.tsx +4 -13
  43. package/src/components/context.ts +1 -0
  44. package/src/components/index.less +9 -2
  45. package/src/components/index.tsx +1 -1
  46. package/src/components/modal.ts +14 -5
  47. package/src/index.less +2 -1
  48. package/src/pages/Table/index.tsx +39 -30
  49. package/src/pages/TableCustomize/index.tsx +8 -4
  50. package/src/routes.tsx +5 -6
  51. package/es/TableCustomize.js +0 -85
  52. package/lib/TableCustomize.js +0 -88
@@ -2,6 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
6
+ var _objectWithoutProperties = require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
7
+ var _keysInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/keys');
5
8
  var _Object$keys = require('@babel/runtime-corejs3/core-js/object/keys');
6
9
  var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js/object/get-own-property-symbols');
7
10
  var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/filter');
@@ -10,9 +13,6 @@ var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/
10
13
  var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js/object/get-own-property-descriptors');
11
14
  var _Object$defineProperties = require('@babel/runtime-corejs3/core-js/object/define-properties');
12
15
  var _Object$defineProperty = require('@babel/runtime-corejs3/core-js/object/define-property');
13
- var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
14
- var _objectWithoutProperties = require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
15
- var _keysInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/keys');
16
16
  var jsxRuntime = require('react/jsx-runtime');
17
17
  var ProTable = require('@ant-design/pro-table');
18
18
  var hooks = require('./hooks.js');
@@ -22,8 +22,9 @@ var antd = require('antd');
22
22
  var TableConfig = require('../TableConfig.js');
23
23
  var index$1 = require('../HTablePagination/index.js');
24
24
  var index = require('../hooks/index.js');
25
+ var AlertMsg = require('./AlertMsg.js');
25
26
 
26
- var _excluded = ["configData", "pagination", "onPageChange", "rowSelection", "rowKey", "emptyRender", "errorRender", "tableStyle", "paginationStyle", "headerTitle"];
27
+ var _excluded = ["configData", "pagination", "onPageChange", "rowSelection", "rowKey", "emptyRender", "errorRender", "tableStyle", "paginationStyle", "headerTitle", "options", "actionRender"];
27
28
  function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
28
29
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
29
30
  var defaultRender = function defaultRender() {
@@ -31,6 +32,11 @@ var defaultRender = function defaultRender() {
31
32
  image: antd.Empty.PRESENTED_IMAGE_SIMPLE
32
33
  });
33
34
  };
35
+ var contentStyle = {
36
+ paddingLeft: 24,
37
+ paddingRight: 24,
38
+ marginBottom: 12
39
+ };
34
40
  var Body = (function (_ref) {
35
41
  var configData = _ref.configData,
36
42
  _ref$pagination = _ref.pagination,
@@ -45,9 +51,11 @@ var Body = (function (_ref) {
45
51
  tableStyle = _ref.tableStyle,
46
52
  paginationStyle = _ref.paginationStyle,
47
53
  headerTitle = _ref.headerTitle,
54
+ options = _ref.options,
55
+ actionRender = _ref.actionRender,
48
56
  props = _objectWithoutProperties(_ref, _excluded);
49
- var selectedRowKeys = rowSelection.selectedRowKeys,
50
- onChange = rowSelection.onChange;
57
+ var selectedRowKeys = rowSelection.selectedRowKeys;
58
+ rowSelection.onChange;
51
59
  var _useHTableContext = context.useHTableContext(),
52
60
  tableInstance = _useHTableContext.tableInstance,
53
61
  contextConfigData = _useHTableContext.configData,
@@ -68,21 +76,20 @@ var Body = (function (_ref) {
68
76
  var bodyConfigData = configData || contextConfigData;
69
77
  var _ref2 = data || {},
70
78
  records = _ref2.records;
71
- _ref2.size;
72
- _ref2.current;
73
- _ref2.total;
74
- var cols = hooks.useCols(bodyConfigData, tableInstance);
75
- var change = function change(key, rowData) {
76
- if (onChange) {
77
- return onChange(key, rowData);
78
- }
79
- rowOnChange(key, rowData);
80
- };
79
+ var cols = hooks.useCols({
80
+ configData: bodyConfigData,
81
+ rowSelection: rowSelection,
82
+ table: tableInstance
83
+ });
81
84
  hooks.useSynchronousKeys({
82
85
  selectedRowKeys: selectedRowKeys,
83
86
  records: records,
84
87
  rowKey: rowKey
85
88
  });
89
+ var _selectedRowData$keys = _keysInstanceProperty(selectedRowData),
90
+ keys = _selectedRowData$keys === void 0 ? [] : _selectedRowData$keys,
91
+ selectAll = selectedRowData.selectAll;
92
+ var alwaysShowAlert = keys.length > 0 || selectAll;
86
93
  var className = index.useClassName("hw-table-body");
87
94
  return jsxRuntime.jsx("div", {
88
95
  style: tableStyle,
@@ -94,16 +101,26 @@ var Body = (function (_ref) {
94
101
  }
95
102
  return tableEmptyRender === null || tableEmptyRender === void 0 ? void 0 : tableEmptyRender(tableInstance);
96
103
  },
97
- children: [jsxRuntime.jsx(ProTable, _objectSpread(_objectSpread({}, props), {}, {
98
- columns: cols,
99
- tableAlertRender: false,
100
- search: false,
101
- headerTitle: headerTitle ? /*#__PURE__*/React.cloneElement(headerTitle, {
104
+ children: [headerTitle && jsxRuntime.jsx(antd.Row, {
105
+ gutter: [0, 8],
106
+ style: contentStyle,
107
+ children: /*#__PURE__*/React.cloneElement(headerTitle, {
102
108
  selectedRowData: selectedRowData,
103
109
  allSelectChange: allSelectChange,
104
110
  rowOnChange: rowOnChange
105
- }) : null,
106
- options: {
111
+ })
112
+ }), alwaysShowAlert && jsxRuntime.jsx("div", {
113
+ style: contentStyle,
114
+ children: jsxRuntime.jsx(antd.Alert, {
115
+ message: jsxRuntime.jsx(AlertMsg.default, {
116
+ actionRender: actionRender
117
+ }),
118
+ type: "info"
119
+ })
120
+ }), jsxRuntime.jsx(ProTable, _objectSpread(_objectSpread({}, props), {}, {
121
+ columns: cols,
122
+ search: false,
123
+ options: options ? options : {
107
124
  reload: function reload() {
108
125
  tableInstance.table.reloadWithParams();
109
126
  }
@@ -111,10 +128,7 @@ var Body = (function (_ref) {
111
128
  tableStyle: {
112
129
  paddingBottom: 0
113
130
  },
114
- rowSelection: rowSelection === false ? rowSelection : _objectSpread(_objectSpread({}, rowSelection), {}, {
115
- selectedRowKeys: _keysInstanceProperty(selectedRowData),
116
- onChange: change
117
- }),
131
+ rowSelection: false,
118
132
  loading: loading,
119
133
  rowKey: rowKey,
120
134
  dataSource: records,
@@ -22,7 +22,7 @@ function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymb
22
22
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
23
23
  var Text = antd.Typography.Text,
24
24
  Link = antd.Typography.Link;
25
- var Footer = (function (_ref) {
25
+ var index = (function (_ref) {
26
26
  var actionRender = _ref.actionRender,
27
27
  footerRender = _ref.footerRender,
28
28
  footerStyle = _ref.footerStyle,
@@ -94,5 +94,5 @@ var Footer = (function (_ref) {
94
94
  });
95
95
  });
96
96
 
97
- exports.default = Footer;
97
+ exports.default = index;
98
98
  // powered by h
@@ -17,6 +17,7 @@ var context = require('../context.js');
17
17
  var form = require('@hw-component/form');
18
18
  var React = require('react');
19
19
  var utils = require('./utils.js');
20
+ var index = require('../hooks/index.js');
20
21
 
21
22
  function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
23
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -39,12 +40,11 @@ var Header = (function (_ref) {
39
40
  var nConfigData = React.useMemo(function () {
40
41
  return utils.formConfigDataProvider(headerConfigData);
41
42
  }, [configData]);
43
+ var className = index.useClassName("hw-table-header");
42
44
  return jsxRuntime.jsx(antd.Card, {
43
- style: _objectSpread({
44
- borderRadius: 4
45
- }, headerStyle),
45
+ style: _objectSpread({}, headerStyle),
46
46
  bordered: false,
47
- className: "hw_table_header",
47
+ className: "hw_table_header ".concat(className),
48
48
  bodyStyle: {
49
49
  paddingBottom: 0
50
50
  },
package/lib/Table.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import type { HTableProps } from "./modal";
2
- declare const _default: ({ request, configData, searchSpan, table, actionRender, footerRender, hideHeader, headerStyle, footerStyle, tableStyle, action, spaceSize, className, paginationStyle, footerBtnRender, ...props }: HTableProps) => JSX.Element;
2
+ declare const _default: ({ request, configData, searchSpan, table, hideHeader, headerStyle, tableStyle, action, spaceSize, className, paginationStyle, rowKey, ...props }: HTableProps) => JSX.Element;
3
3
  export default _default;
package/lib/Table.js CHANGED
@@ -16,14 +16,13 @@ var jsxRuntime = require('react/jsx-runtime');
16
16
  var index = require('./HTableHeader/index.js');
17
17
  var index$1 = require('./HTableBody/index.js');
18
18
  var useCurrentTable = require('./hooks/useCurrentTable.js');
19
- var index$2 = require('./HTableFooter/index.js');
20
19
  var useRowObj = require('./hooks/useRowObj.js');
21
20
  var context = require('./context.js');
22
21
  var antd = require('antd');
23
22
  var useReq = require('./hooks/useReq.js');
24
23
  var useDispatch = require('./hooks/useDispatch.js');
25
24
 
26
- var _excluded = ["request", "configData", "searchSpan", "table", "actionRender", "footerRender", "hideHeader", "headerStyle", "footerStyle", "tableStyle", "action", "spaceSize", "className", "paginationStyle", "footerBtnRender"];
25
+ var _excluded = ["request", "configData", "searchSpan", "table", "hideHeader", "headerStyle", "tableStyle", "action", "spaceSize", "className", "paginationStyle", "rowKey"];
27
26
  function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
28
27
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
29
28
  var Table = (function (_ref) {
@@ -31,22 +30,18 @@ var Table = (function (_ref) {
31
30
  configData = _ref.configData,
32
31
  searchSpan = _ref.searchSpan,
33
32
  table = _ref.table,
34
- actionRender = _ref.actionRender,
35
- footerRender = _ref.footerRender,
36
33
  hideHeader = _ref.hideHeader,
37
34
  _ref$headerStyle = _ref.headerStyle,
38
35
  headerStyle = _ref$headerStyle === void 0 ? {} : _ref$headerStyle,
39
- _ref$footerStyle = _ref.footerStyle,
40
- footerStyle = _ref$footerStyle === void 0 ? {} : _ref$footerStyle,
41
36
  _ref$tableStyle = _ref.tableStyle,
42
37
  tableStyle = _ref$tableStyle === void 0 ? {} : _ref$tableStyle,
43
38
  _ref$action = _ref.action,
44
- action = _ref$action === void 0 ? {} : _ref$action,
45
- _ref$spaceSize = _ref.spaceSize,
46
- spaceSize = _ref$spaceSize === void 0 ? 15 : _ref$spaceSize;
39
+ action = _ref$action === void 0 ? {} : _ref$action;
40
+ _ref.spaceSize;
47
41
  _ref.className;
48
42
  var paginationStyle = _ref.paginationStyle,
49
- footerBtnRender = _ref.footerBtnRender,
43
+ _ref$rowKey = _ref.rowKey,
44
+ rowKey = _ref$rowKey === void 0 ? "id" : _ref$rowKey,
50
45
  props = _objectWithoutProperties(_ref, _excluded);
51
46
  var _useReq = useReq.default({
52
47
  request: request
@@ -95,11 +90,12 @@ var Table = (function (_ref) {
95
90
  return run(value);
96
91
  },
97
92
  onPageChange: tableInstance.table.reloadWithParams,
98
- setSelectedRowData: setSelectedRowData
93
+ setSelectedRowData: setSelectedRowData,
94
+ rowKey: rowKey
99
95
  },
100
96
  children: jsxRuntime.jsxs(antd.Space, {
101
97
  direction: "vertical",
102
- size: spaceSize,
98
+ size: 0,
103
99
  style: {
104
100
  width: "100%"
105
101
  },
@@ -108,13 +104,9 @@ var Table = (function (_ref) {
108
104
  headerStyle: headerStyle
109
105
  }), jsxRuntime.jsx(index$1.default, _objectSpread({
110
106
  tableStyle: tableStyle,
111
- paginationStyle: paginationStyle
112
- }, props)), footerRender !== false && jsxRuntime.jsx(index$2.default, {
113
- actionRender: actionRender,
114
- footerRender: footerRender,
115
- footerStyle: footerStyle,
116
- footerBtnRender: footerBtnRender
117
- })]
107
+ paginationStyle: paginationStyle,
108
+ rowKey: rowKey
109
+ }, props))]
118
110
  })
119
111
  });
120
112
  });
package/lib/context.d.ts CHANGED
@@ -13,6 +13,7 @@ interface HContextModal extends Omit<HTableProps, "request"> {
13
13
  onFinish: (value: Record<string, any>) => Promise<any>;
14
14
  onPageChange: (value: Record<string, any>) => Promise<any>;
15
15
  setSelectedRowData: (row: RowObj) => void;
16
+ rowKey?: string;
16
17
  }
17
18
  export declare const HTableContext: React.Context<HContextModal | null>;
18
19
  export declare const useHTableContext: () => HContextModal;
package/lib/index.css CHANGED
@@ -1,5 +1,6 @@
1
1
  .ant-hw-table-body {
2
- border-radius: 4px;
2
+ border-bottom-left-radius: 4px;
3
+ border-bottom-right-radius: 4px;
3
4
  background-color: #fff;
4
5
  overflow: hidden;
5
6
  }
@@ -11,3 +12,8 @@
11
12
  border-radius: 4px;
12
13
  background-color: #ffffff;
13
14
  }
15
+ .ant-hw-table-header {
16
+ border-top-left-radius: 4px;
17
+ border-top-right-radius: 4px;
18
+ padding-bottom: 0px;
19
+ }
package/lib/index.d.ts CHANGED
@@ -2,7 +2,6 @@ import "./index.less";
2
2
  export { default as HTable } from "./Table";
3
3
  export { default as useHTable } from "./hooks/useHTable";
4
4
  export { default as HTableConfig } from "./TableConfig";
5
- export { default as TableCustomize } from "./TableCustomize";
6
5
  export { default as HTableBody } from "./HTableBody";
7
6
  export { default as HTableFooter } from "./HTableFooter";
8
7
  export { default as HTableHeader } from "./HTableHeader";
package/lib/index.js CHANGED
@@ -3,7 +3,6 @@
3
3
  var Table = require('./Table.js');
4
4
  var useHTable = require('./hooks/useHTable.js');
5
5
  var TableConfig = require('./TableConfig.js');
6
- var TableCustomize = require('./TableCustomize.js');
7
6
  var index = require('./HTableBody/index.js');
8
7
  var index$1 = require('./HTableFooter/index.js');
9
8
  var index$2 = require('./HTableHeader/index.js');
@@ -16,7 +15,6 @@ var hooks = require('./ModalTable/hooks.js');
16
15
  exports.HTable = Table.default;
17
16
  exports.useHTable = useHTable.default;
18
17
  exports.HTableConfig = TableConfig.default;
19
- exports.TableCustomize = TableCustomize.default;
20
18
  exports.HTableBody = index.default;
21
19
  exports.HTableFooter = index$1.default;
22
20
  exports.HTableHeader = index$2.default;
package/lib/modal.d.ts CHANGED
@@ -30,22 +30,22 @@ export type ConfigDataModal = ConfigItemModal[];
30
30
  export type ActionRenderFn = (selectedRowKeys: RowObj, tableInstance: HTableInstance) => React.ReactNode;
31
31
  export type FooterBtnRenderFn = (dom: React.ReactNode, total: string, selectedRowKeys: RowObj, setAllCheck: (row: RowObj) => void) => React.ReactNode;
32
32
  export type actionFn = (...arg: any[]) => void;
33
- type FooterRenderFn = (tableInstance: HTableInstance, selectedRowData: RowObj, data?: ResultModal) => React.ReactNode;
34
- export interface HTableProps extends Omit<ProTableProps<any, any>, "request" | "dataSource"> {
33
+ export interface RowSelectionOuter {
34
+ allPageCheck?: boolean;
35
+ }
36
+ export type HRowSelection = RowSelectionOuter & ProTableProps<any, any>["rowSelection"];
37
+ export interface HTableProps extends Omit<ProTableProps<any, any>, "request" | "dataSource" | "rowKey" | "rowSelection"> {
35
38
  request?: (params: ParamsModal) => Promise<ResultModal>;
36
39
  configData: ConfigDataModal;
37
40
  searchSpan?: ColProps;
38
41
  table?: HTableInstance;
39
42
  actionRender?: ActionRenderFn;
40
- footerBtnRender?: FooterBtnRenderFn;
41
43
  emptyRender?: (tableInstance: HTableInstance) => React.ReactNode;
42
44
  errorRender?: (tableInstance: HTableInstance, error: Error) => React.ReactNode;
43
- footerRender?: FooterRenderFn | false;
44
45
  hideHeader?: boolean;
45
46
  action?: Record<string, actionFn>;
46
47
  headerStyle?: React.CSSProperties;
47
48
  tableStyle?: React.CSSProperties;
48
- footerStyle?: React.CSSProperties;
49
49
  spaceSize?: number;
50
50
  className?: string;
51
51
  error?: Error;
@@ -53,6 +53,9 @@ export interface HTableProps extends Omit<ProTableProps<any, any>, "request" | "
53
53
  manual?: boolean;
54
54
  dataSource?: ResultModal;
55
55
  paginationStyle?: React.CSSProperties;
56
+ rowKey?: string;
57
+ allPageCheck?: boolean;
58
+ rowSelection?: HRowSelection;
56
59
  }
57
60
  export interface TableInstance {
58
61
  reload: (params?: ParamsModal) => Promise<any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hw-component/table",
3
- "version": "0.0.4-beta-v9",
3
+ "version": "0.0.4-beta-v16",
4
4
  "description": "基于antd二次开发table组件",
5
5
  "keywords": [
6
6
  "table"
@@ -0,0 +1,37 @@
1
+ import { Button, Row, Typography } from "antd";
2
+ import React from "react";
3
+ import { useHTableContext } from "../context";
4
+ import type { ActionRenderFn } from "../modal";
5
+ const { Text, Link } = Typography;
6
+ interface IProps {
7
+ actionRender?: ActionRenderFn;
8
+ }
9
+ export default ({ actionRender }: IProps) => {
10
+ const { data, selectedRowData, rowOnChange, tableInstance } =
11
+ useHTableContext();
12
+ const { total = "0" } = data || {};
13
+ const { keys = [], selectAll } = selectedRowData;
14
+ const totalNum = Number.parseInt(total, 10);
15
+ const showTotalNum = Number.isNaN(totalNum) ? 0 : totalNum;
16
+ const num = selectAll ? showTotalNum : keys.length;
17
+
18
+ return (
19
+ <Row justify={"space-between"} align={"middle"}>
20
+ <Text>
21
+ 已选择<Link>{num}</Link>条
22
+ </Text>
23
+ <div>
24
+ {actionRender?.(selectedRowData, tableInstance)}
25
+ <Button
26
+ type={"link"}
27
+ size={"small"}
28
+ onClick={() => {
29
+ rowOnChange([], []);
30
+ }}
31
+ >
32
+ 取消选择
33
+ </Button>
34
+ </div>
35
+ </Row>
36
+ );
37
+ };
@@ -0,0 +1,111 @@
1
+ import { useHTableContext } from "../context";
2
+ import { Checkbox, Dropdown, Menu } from "antd";
3
+ import { useMemo } from "react";
4
+ interface IRowSelectionTitleProps {
5
+ allPageCheck?: boolean;
6
+ }
7
+ export const RowSelectionTitle = ({
8
+ allPageCheck = true,
9
+ }: IRowSelectionTitleProps) => {
10
+ const {
11
+ data,
12
+ selectedRowData,
13
+ rowOnChange,
14
+ allSelectChange,
15
+ rowKey = "id",
16
+ } = useHTableContext();
17
+ const { records = [] } = data || {};
18
+ const { keys, selectAll } = selectedRowData;
19
+ const allCheck = () => {
20
+ const setKeys = records.map((item) => {
21
+ return item[rowKey];
22
+ });
23
+ rowOnChange(setKeys, records);
24
+ };
25
+ const allCancel = () => {
26
+ rowOnChange([], []);
27
+ };
28
+ const checkChange = (e) => {
29
+ const checked = e.target.checked;
30
+ if (checked) {
31
+ allCheck();
32
+ return;
33
+ }
34
+ allCancel();
35
+ };
36
+ const change = ({ key }) => {
37
+ if (key === "check") {
38
+ allCheck();
39
+ return;
40
+ }
41
+ if (key === "cancel") {
42
+ allCancel();
43
+ return;
44
+ }
45
+ if (key === "checkAll") {
46
+ allSelectChange?.(true);
47
+ return;
48
+ }
49
+ allSelectChange?.(false);
50
+ };
51
+ const len = keys?.length;
52
+ const checked = len === records.length && len !== 0;
53
+ const configItems = useMemo(() => {
54
+ const fsArray = checked
55
+ ? {
56
+ label: "取消此页数据",
57
+ key: "cancel",
58
+ }
59
+ : {
60
+ label: "选择此页数据",
61
+ key: "check",
62
+ };
63
+ const enArray = selectAll
64
+ ? {
65
+ label: "取消全部数据",
66
+ key: "cancelAll",
67
+ }
68
+ : {
69
+ label: "选择全部数据",
70
+ key: "checkAll",
71
+ };
72
+ return [fsArray, enArray];
73
+ }, [checked, selectAll]);
74
+
75
+ const menu = ()=>{
76
+ const MenuEle=(Menu as any);
77
+ return <MenuEle onClick={change} items={configItems}/>;
78
+ }
79
+ if (allPageCheck) {
80
+ return (
81
+ <Dropdown overlay={menu} arrow placement={"bottom"}>
82
+ <Checkbox checked={checked} onChange={checkChange} />
83
+ </Dropdown>
84
+ );
85
+ }
86
+ return <Checkbox checked={checked} onChange={checkChange} />;
87
+ };
88
+
89
+ interface RowSelectionBoxProps {
90
+ data: any;
91
+ }
92
+ export const RowSelectionBox = ({ data }: RowSelectionBoxProps) => {
93
+ const { selectedRowData, rowOnChange, rowKey = "id" } = useHTableContext();
94
+ const { rowData = [], keys = [] } = selectedRowData;
95
+ const key = data[rowKey];
96
+ const check = (e) => {
97
+ const checked = e.target.checked;
98
+ const newKeys = [...keys];
99
+ const newRowData = [...rowData];
100
+ if (checked) {
101
+ newKeys.push(key);
102
+ newRowData.push(data);
103
+ rowOnChange(newKeys, newRowData);
104
+ return;
105
+ }
106
+ const index = newKeys.indexOf(key);
107
+ newKeys.splice(index, 1);
108
+ newRowData.splice(index, 1);
109
+ };
110
+ return <Checkbox checked={keys.indexOf(key) !== -1} onChange={check} />;
111
+ };
@@ -1,12 +1,27 @@
1
- import type { ConfigDataModal, HTableInstance } from "../modal";
2
- import type React from "react";
1
+ import type { HTableInstance, HTableProps } from "../modal";
2
+ import React from "react";
3
3
  import { useEffect, useMemo } from "react";
4
4
  import { useHTableContext } from "../context";
5
5
  import type { GetRowKey } from "rc-table/lib/interface";
6
-
7
- export const useCols = (cols: ConfigDataModal, table: HTableInstance) => {
6
+ import { RowSelectionBox, RowSelectionTitle } from "./RowSelection";
7
+ const rowSelectionCol = (allPageCheck?: boolean) => {
8
+ return {
9
+ title: <RowSelectionTitle allPageCheck={allPageCheck} />,
10
+ dataIndex: "rowSelectionTitle",
11
+ width: 32,
12
+ render: (dom, data) => {
13
+ return <RowSelectionBox data={data} />;
14
+ },
15
+ };
16
+ };
17
+ export const useCols = ({ configData, rowSelection, table }: HTableProps) => {
8
18
  return useMemo(() => {
9
- return cols.map((item) => {
19
+ const colsArray = [...configData];
20
+ if (rowSelection !== false) {
21
+ const { allPageCheck } = rowSelection || {};
22
+ colsArray.splice(0, 0, rowSelectionCol(allPageCheck));
23
+ }
24
+ return colsArray.map((item) => {
10
25
  const { render } = item;
11
26
  return {
12
27
  ...item,
@@ -14,11 +29,11 @@ export const useCols = (cols: ConfigDataModal, table: HTableInstance) => {
14
29
  if (!render) {
15
30
  return dom;
16
31
  }
17
- return render(dom, data, index, table);
32
+ return render(dom, data, index, table as HTableInstance);
18
33
  },
19
34
  };
20
35
  });
21
- }, [cols, table]);
36
+ }, [configData, table]);
22
37
  };
23
38
  interface FilterKeysModal {
24
39
  selectedRowKeys?: React.Key[];