@hw-component/table 0.0.1-beta-v2 → 0.0.1-beta-v4

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.
@@ -5,8 +5,8 @@ import type { HTableInstance } from "../modal";
5
5
  interface HTableBodyProps extends Omit<ProTableProps<any, any>, "dataSource"> {
6
6
  configData: ConfigDataModal;
7
7
  onPageChange: (params: ParamsModal) => void;
8
- emptyRender?: (table: HTableInstance) => React.ReactNode;
9
- errorRender?: (table: HTableInstance) => React.ReactNode;
8
+ emptyRender?: (tableInstance: HTableInstance) => React.ReactNode;
9
+ errorRender?: (tableInstance: HTableInstance, error: Error) => React.ReactNode;
10
10
  }
11
11
  declare const _default: ({ loading, configData, pagination, onPageChange, rowSelection, rowKey, emptyRender, errorRender, ...props }: HTableBodyProps) => JSX.Element;
12
12
  export default _default;
package/es/Body/index.js CHANGED
@@ -42,7 +42,7 @@ var Body = (function (_ref) {
42
42
  var selectedRowKeys = rowSelection.selectedRowKeys,
43
43
  onChange = rowSelection.onChange;
44
44
  var _useHTableContext = useHTableContext(),
45
- table = _useHTableContext.table,
45
+ tableInstance = _useHTableContext.tableInstance,
46
46
  data = _useHTableContext.data,
47
47
  selectedRowData = _useHTableContext.selectedRowData,
48
48
  rowOnChange = _useHTableContext.rowOnChange,
@@ -60,7 +60,7 @@ var Body = (function (_ref) {
60
60
  size = _ref2.size,
61
61
  current = _ref2.current,
62
62
  total = _ref2.total;
63
- var cols = useCols(configData, table);
63
+ var cols = useCols(configData, tableInstance);
64
64
  var change = function change(key, rowData) {
65
65
  if (onChange) {
66
66
  return onChange(key, rowData);
@@ -80,12 +80,13 @@ var Body = (function (_ref) {
80
80
  children: jsx(ConfigProvider, {
81
81
  renderEmpty: function renderEmpty() {
82
82
  if (error) {
83
- return tableErrorRender === null || tableErrorRender === void 0 ? void 0 : tableErrorRender(table);
83
+ return tableErrorRender === null || tableErrorRender === void 0 ? void 0 : tableErrorRender(tableInstance, error);
84
84
  }
85
- return tableEmptyRender === null || tableEmptyRender === void 0 ? void 0 : tableEmptyRender(table);
85
+ return tableEmptyRender === null || tableEmptyRender === void 0 ? void 0 : tableEmptyRender(tableInstance);
86
86
  },
87
87
  children: jsx(ProTable, _objectSpread(_objectSpread({}, props), {}, {
88
88
  columns: cols,
89
+ tableAlertRender: false,
89
90
  search: false,
90
91
  rowSelection: _objectSpread(_objectSpread({}, rowSelection), {}, {
91
92
  selectedRowKeys: _keysInstanceProperty(selectedRowData),
@@ -1,6 +1,9 @@
1
1
  import type { ActionRenderFn } from "../modal";
2
+ import React from "react";
3
+ import type { HTableInstance, ResultModal, RowObj } from "../modal";
2
4
  interface IFooterProps {
3
5
  actionRender?: ActionRenderFn;
6
+ footerRender?: (tableInstance: HTableInstance, selectedRowData: RowObj, data?: ResultModal) => React.ReactNode;
4
7
  }
5
- declare const _default: ({ actionRender }: IFooterProps) => JSX.Element;
8
+ declare const _default: ({ actionRender, footerRender }: IFooterProps) => JSX.Element;
6
9
  export default _default;
@@ -1,6 +1,6 @@
1
1
  // welcome to hoo hoo hoo
2
2
  import _slicedToArray from '@babel/runtime-corejs3/helpers/slicedToArray';
3
- import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
4
4
  import { Typography, Card, Row, Space, Button, Affix } from 'antd';
5
5
  import { useHTableContext } from '../context.js';
6
6
  import { useState } from 'react';
@@ -8,11 +8,12 @@ import { useState } from 'react';
8
8
  var Text = Typography.Text,
9
9
  Link = Typography.Link;
10
10
  var Footer = (function (_ref) {
11
- var actionRender = _ref.actionRender;
11
+ var actionRender = _ref.actionRender,
12
+ footerRender = _ref.footerRender;
12
13
  var _useHTableContext = useHTableContext(),
13
14
  data = _useHTableContext.data,
14
15
  selectedRowData = _useHTableContext.selectedRowData,
15
- table = _useHTableContext.table;
16
+ tableInstance = _useHTableContext.tableInstance;
16
17
  var _useState = useState(false),
17
18
  _useState2 = _slicedToArray(_useState, 2),
18
19
  allCheck = _useState2[0],
@@ -20,6 +21,11 @@ var Footer = (function (_ref) {
20
21
  var _ref2 = data || {},
21
22
  total = _ref2.total;
22
23
  var num = allCheck ? total : 0;
24
+ if (footerRender) {
25
+ return jsx(Fragment, {
26
+ children: footerRender(tableInstance, selectedRowData, data)
27
+ });
28
+ }
23
29
  var dom = jsx(Card, {
24
30
  style: {
25
31
  borderRadius: 4
@@ -49,7 +55,7 @@ var Footer = (function (_ref) {
49
55
  children: num
50
56
  }), "\u6761"]
51
57
  })]
52
- }), actionRender === null || actionRender === void 0 ? void 0 : actionRender(allCheck, selectedRowData, table)]
58
+ }), actionRender === null || actionRender === void 0 ? void 0 : actionRender(allCheck, selectedRowData, tableInstance)]
53
59
  })
54
60
  });
55
61
  if (!data) {
@@ -14,8 +14,8 @@ var Header = (function (_ref) {
14
14
  span: 6
15
15
  } : _ref$searchSpan;
16
16
  var _useHTableContext = useHTableContext(),
17
- table = _useHTableContext.table;
18
- var form = table.form;
17
+ tableInstance = _useHTableContext.tableInstance;
18
+ var form = tableInstance.form;
19
19
  var nConfigData = useMemo(function () {
20
20
  return formConfigDataProvider(configData);
21
21
  }, [configData]);
package/es/Table.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import type { HTableProps } from "./modal";
2
- declare const _default: ({ request, configData, searchSpan, table, actionRender, ...props }: HTableProps) => JSX.Element;
2
+ declare const _default: ({ request, configData, searchSpan, table, actionRender, footerRender, hideHeader, ...props }: HTableProps) => JSX.Element;
3
3
  export default _default;
package/es/Table.js CHANGED
@@ -20,7 +20,7 @@ import useRowObj from './hooks/useRowObj.js';
20
20
  import { HTableContext } from './context.js';
21
21
  import { Space } from 'antd';
22
22
 
23
- var _excluded = ["request", "configData", "searchSpan", "table", "actionRender"],
23
+ var _excluded = ["request", "configData", "searchSpan", "table", "actionRender", "footerRender", "hideHeader"],
24
24
  _excluded2 = ["size", "current"];
25
25
  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; }
26
26
  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; }
@@ -30,6 +30,8 @@ var Table = (function (_ref) {
30
30
  searchSpan = _ref.searchSpan,
31
31
  table = _ref.table,
32
32
  actionRender = _ref.actionRender,
33
+ footerRender = _ref.footerRender,
34
+ hideHeader = _ref.hideHeader,
33
35
  props = _objectWithoutProperties(_ref, _excluded);
34
36
  var saveParams = useMemo(function () {
35
37
  return {
@@ -54,18 +56,19 @@ var Table = (function (_ref) {
54
56
  loading = _useRequest.loading,
55
57
  data = _useRequest.data,
56
58
  error = _useRequest.error;
57
- var cuTable = useCurrentTable({
59
+ var _useRowObj = useRowObj(),
60
+ selectedRowData = _useRowObj.selectedRowData,
61
+ rowOnChange = _useRowObj.rowOnChange;
62
+ var tableInstance = useCurrentTable({
58
63
  table: table,
59
64
  reload: function reload() {
60
65
  run(_objectSpread({}, saveParams.params));
61
- }
66
+ },
67
+ changeRowData: rowOnChange
62
68
  });
63
- var _useRowObj = useRowObj(),
64
- selectedRowData = _useRowObj.selectedRowData,
65
- rowOnChange = _useRowObj.rowOnChange;
66
69
  return jsx(HTableContext.Provider, {
67
70
  value: {
68
- table: cuTable,
71
+ tableInstance: tableInstance,
69
72
  selectedRowData: selectedRowData,
70
73
  rowOnChange: rowOnChange,
71
74
  data: data,
@@ -77,7 +80,7 @@ var Table = (function (_ref) {
77
80
  style: {
78
81
  width: "100%"
79
82
  },
80
- children: [jsx(Header, {
83
+ children: [!hideHeader && jsx(Header, {
81
84
  configData: configData,
82
85
  onFinish: run,
83
86
  searchSpan: searchSpan
@@ -87,8 +90,9 @@ var Table = (function (_ref) {
87
90
  onPageChange: function onPageChange(page) {
88
91
  run(_objectSpread(_objectSpread({}, saveParams.params), page));
89
92
  }
90
- }, props)), jsx(Footer, {
91
- actionRender: actionRender
93
+ }, props)), footerRender !== false && jsx(Footer, {
94
+ actionRender: actionRender,
95
+ footerRender: footerRender
92
96
  })]
93
97
  })
94
98
  });
@@ -2,11 +2,11 @@ import React from "react";
2
2
  import type { HTableInstance } from "./modal";
3
3
  interface HTableConfigContextModal {
4
4
  emptyRender?: (table: HTableInstance) => React.ReactNode;
5
- errorRender?: (table: HTableInstance) => React.ReactNode;
5
+ errorRender?: (table: HTableInstance, error: Error) => React.ReactNode;
6
6
  }
7
7
  export declare const HTableConfigContext: React.Context<HTableConfigContextModal | null>;
8
8
  export declare const useHTableConfigContext: ({ emptyRender, errorRender, }: HTableConfigContextModal) => {
9
- errorRender: ((table: HTableInstance) => React.ReactNode) | undefined;
9
+ errorRender: ((table: HTableInstance, error: Error) => React.ReactNode) | undefined;
10
10
  emptyRender: ((table: HTableInstance) => React.ReactNode) | undefined;
11
11
  };
12
12
  declare const Index: React.FC<HTableConfigContextModal>;
package/es/context.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import type { ResultModal, RowObj, HTableInstance } from "./modal";
3
3
  interface HContextModal {
4
- table: HTableInstance;
4
+ tableInstance: HTableInstance;
5
5
  data?: ResultModal;
6
6
  selectedRowData: RowObj;
7
7
  rowOnChange: (keys: React.Key[], rowData: any[]) => void;
@@ -1,7 +1,9 @@
1
+ import type React from "react";
1
2
  import type { ParamsModal, HTableInstance } from "../modal";
2
3
  interface currentTableParams {
3
4
  table?: HTableInstance;
4
5
  reload: (params: ParamsModal) => void;
6
+ changeRowData: (keys: React.Key[], data: any) => void;
5
7
  }
6
- declare const _default: ({ table, reload }: currentTableParams) => HTableInstance;
8
+ declare const _default: ({ table, reload, changeRowData }: currentTableParams) => HTableInstance;
7
9
  export default _default;
@@ -4,11 +4,13 @@ import useHTable from './useHTable.js';
4
4
 
5
5
  var useCurrentTable = (function (_ref) {
6
6
  var table = _ref.table,
7
- reload = _ref.reload;
7
+ reload = _ref.reload,
8
+ changeRowData = _ref.changeRowData;
8
9
  var useCurrentTable = useHTable();
9
10
  return useMemo(function () {
10
11
  var resultTable = table || useCurrentTable;
11
12
  resultTable.table.reload = reload;
13
+ resultTable.table.setSelectedRowData = changeRowData;
12
14
  return resultTable;
13
15
  }, [table]);
14
16
  });
@@ -3,6 +3,7 @@ declare const _default: () => {
3
3
  form: import("@hw-component/form/lib/Form/modal").HFormInstance;
4
4
  table: {
5
5
  reload: (params: ParamsModal) => ParamsModal;
6
+ setSelectedRowData: () => void;
6
7
  };
7
8
  };
8
9
  export default _default;
@@ -8,7 +8,8 @@ var useHTable = (function () {
8
8
  return {
9
9
  reload: function reload(params) {
10
10
  return params;
11
- }
11
+ },
12
+ setSelectedRowData: function setSelectedRowData() {}
12
13
  };
13
14
  }, []);
14
15
  return {
package/es/modal.d.ts CHANGED
@@ -18,25 +18,29 @@ export interface ParamsModal extends Record<string, any> {
18
18
  current?: number;
19
19
  }
20
20
  interface HColumns extends Omit<ProColumns, "render"> {
21
- render?: (dom: React.ReactNode, data: any, index: number, table: HTableInstance) => React.ReactNode;
21
+ render?: (dom: React.ReactNode, data: any, index: number, tableInstance: HTableInstance) => React.ReactNode;
22
22
  showSearch?: boolean;
23
23
  searchType?: HItemProps["type"];
24
24
  searchRender?: HItemProps["render"];
25
25
  }
26
26
  export type ConfigItemModal = Omit<HItemProps, "render" | "type"> & HColumns;
27
27
  export type ConfigDataModal = ConfigItemModal[];
28
- export type ActionRenderFn = (allCheck: boolean, selectedRowKeys: RowObj, xjTable: HTableInstance) => React.ReactNode;
28
+ export type ActionRenderFn = (allCheck: boolean, selectedRowKeys: RowObj, tableInstance: HTableInstance) => React.ReactNode;
29
+ type FooterRenderFn = (tableInstance: HTableInstance, selectedRowData: RowObj, data?: ResultModal) => React.ReactNode;
29
30
  export interface HTableProps extends Omit<ProTableProps<any, any>, "request"> {
30
31
  request: (params: ParamsModal) => Promise<ResultModal>;
31
32
  configData: ConfigDataModal;
32
33
  searchSpan?: ColProps;
33
34
  table?: HTableInstance;
34
35
  actionRender?: ActionRenderFn;
35
- emptyRender?: (table: HTableInstance) => React.ReactNode;
36
- errorRender?: (table: HTableInstance) => React.ReactNode;
36
+ emptyRender?: (tableInstance: HTableInstance) => React.ReactNode;
37
+ errorRender?: (tableInstance: HTableInstance, error: Error) => React.ReactNode;
38
+ footerRender?: FooterRenderFn | false;
39
+ hideHeader?: boolean;
37
40
  }
38
41
  export interface TableInstance {
39
42
  reload: (params: ParamsModal) => void;
43
+ setSelectedRowData: (keys: React.Key[], data: any) => void;
40
44
  }
41
45
  export interface HTableInstance {
42
46
  form: HFormInstance;
@@ -5,8 +5,8 @@ import type { HTableInstance } from "../modal";
5
5
  interface HTableBodyProps extends Omit<ProTableProps<any, any>, "dataSource"> {
6
6
  configData: ConfigDataModal;
7
7
  onPageChange: (params: ParamsModal) => void;
8
- emptyRender?: (table: HTableInstance) => React.ReactNode;
9
- errorRender?: (table: HTableInstance) => React.ReactNode;
8
+ emptyRender?: (tableInstance: HTableInstance) => React.ReactNode;
9
+ errorRender?: (tableInstance: HTableInstance, error: Error) => React.ReactNode;
10
10
  }
11
11
  declare const _default: ({ loading, configData, pagination, onPageChange, rowSelection, rowKey, emptyRender, errorRender, ...props }: HTableBodyProps) => JSX.Element;
12
12
  export default _default;
package/lib/Body/index.js CHANGED
@@ -45,7 +45,7 @@ var Body = (function (_ref) {
45
45
  var selectedRowKeys = rowSelection.selectedRowKeys,
46
46
  onChange = rowSelection.onChange;
47
47
  var _useHTableContext = context.useHTableContext(),
48
- table = _useHTableContext.table,
48
+ tableInstance = _useHTableContext.tableInstance,
49
49
  data = _useHTableContext.data,
50
50
  selectedRowData = _useHTableContext.selectedRowData,
51
51
  rowOnChange = _useHTableContext.rowOnChange,
@@ -63,7 +63,7 @@ var Body = (function (_ref) {
63
63
  size = _ref2.size,
64
64
  current = _ref2.current,
65
65
  total = _ref2.total;
66
- var cols = hooks.useCols(configData, table);
66
+ var cols = hooks.useCols(configData, tableInstance);
67
67
  var change = function change(key, rowData) {
68
68
  if (onChange) {
69
69
  return onChange(key, rowData);
@@ -83,12 +83,13 @@ var Body = (function (_ref) {
83
83
  children: jsxRuntime.jsx(antd.ConfigProvider, {
84
84
  renderEmpty: function renderEmpty() {
85
85
  if (error) {
86
- return tableErrorRender === null || tableErrorRender === void 0 ? void 0 : tableErrorRender(table);
86
+ return tableErrorRender === null || tableErrorRender === void 0 ? void 0 : tableErrorRender(tableInstance, error);
87
87
  }
88
- return tableEmptyRender === null || tableEmptyRender === void 0 ? void 0 : tableEmptyRender(table);
88
+ return tableEmptyRender === null || tableEmptyRender === void 0 ? void 0 : tableEmptyRender(tableInstance);
89
89
  },
90
90
  children: jsxRuntime.jsx(ProTable, _objectSpread(_objectSpread({}, props), {}, {
91
91
  columns: cols,
92
+ tableAlertRender: false,
92
93
  search: false,
93
94
  rowSelection: _objectSpread(_objectSpread({}, rowSelection), {}, {
94
95
  selectedRowKeys: _keysInstanceProperty(selectedRowData),
@@ -1,6 +1,9 @@
1
1
  import type { ActionRenderFn } from "../modal";
2
+ import React from "react";
3
+ import type { HTableInstance, ResultModal, RowObj } from "../modal";
2
4
  interface IFooterProps {
3
5
  actionRender?: ActionRenderFn;
6
+ footerRender?: (tableInstance: HTableInstance, selectedRowData: RowObj, data?: ResultModal) => React.ReactNode;
4
7
  }
5
- declare const _default: ({ actionRender }: IFooterProps) => JSX.Element;
8
+ declare const _default: ({ actionRender, footerRender }: IFooterProps) => JSX.Element;
6
9
  export default _default;
@@ -11,11 +11,12 @@ var React = require('react');
11
11
  var Text = antd.Typography.Text,
12
12
  Link = antd.Typography.Link;
13
13
  var Footer = (function (_ref) {
14
- var actionRender = _ref.actionRender;
14
+ var actionRender = _ref.actionRender,
15
+ footerRender = _ref.footerRender;
15
16
  var _useHTableContext = context.useHTableContext(),
16
17
  data = _useHTableContext.data,
17
18
  selectedRowData = _useHTableContext.selectedRowData,
18
- table = _useHTableContext.table;
19
+ tableInstance = _useHTableContext.tableInstance;
19
20
  var _useState = React.useState(false),
20
21
  _useState2 = _slicedToArray(_useState, 2),
21
22
  allCheck = _useState2[0],
@@ -23,6 +24,11 @@ var Footer = (function (_ref) {
23
24
  var _ref2 = data || {},
24
25
  total = _ref2.total;
25
26
  var num = allCheck ? total : 0;
27
+ if (footerRender) {
28
+ return jsxRuntime.jsx(jsxRuntime.Fragment, {
29
+ children: footerRender(tableInstance, selectedRowData, data)
30
+ });
31
+ }
26
32
  var dom = jsxRuntime.jsx(antd.Card, {
27
33
  style: {
28
34
  borderRadius: 4
@@ -52,7 +58,7 @@ var Footer = (function (_ref) {
52
58
  children: num
53
59
  }), "\u6761"]
54
60
  })]
55
- }), actionRender === null || actionRender === void 0 ? void 0 : actionRender(allCheck, selectedRowData, table)]
61
+ }), actionRender === null || actionRender === void 0 ? void 0 : actionRender(allCheck, selectedRowData, tableInstance)]
56
62
  })
57
63
  });
58
64
  if (!data) {
@@ -17,8 +17,8 @@ var Header = (function (_ref) {
17
17
  span: 6
18
18
  } : _ref$searchSpan;
19
19
  var _useHTableContext = context.useHTableContext(),
20
- table = _useHTableContext.table;
21
- var form$1 = table.form;
20
+ tableInstance = _useHTableContext.tableInstance;
21
+ var form$1 = tableInstance.form;
22
22
  var nConfigData = React.useMemo(function () {
23
23
  return utils.formConfigDataProvider(configData);
24
24
  }, [configData]);
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, ...props }: HTableProps) => JSX.Element;
2
+ declare const _default: ({ request, configData, searchSpan, table, actionRender, footerRender, hideHeader, ...props }: HTableProps) => JSX.Element;
3
3
  export default _default;
package/lib/Table.js CHANGED
@@ -23,7 +23,7 @@ var useRowObj = require('./hooks/useRowObj.js');
23
23
  var context = require('./context.js');
24
24
  var antd = require('antd');
25
25
 
26
- var _excluded = ["request", "configData", "searchSpan", "table", "actionRender"],
26
+ var _excluded = ["request", "configData", "searchSpan", "table", "actionRender", "footerRender", "hideHeader"],
27
27
  _excluded2 = ["size", "current"];
28
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; }
29
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; }
@@ -33,6 +33,8 @@ var Table = (function (_ref) {
33
33
  searchSpan = _ref.searchSpan,
34
34
  table = _ref.table,
35
35
  actionRender = _ref.actionRender,
36
+ footerRender = _ref.footerRender,
37
+ hideHeader = _ref.hideHeader,
36
38
  props = _objectWithoutProperties(_ref, _excluded);
37
39
  var saveParams = React.useMemo(function () {
38
40
  return {
@@ -57,18 +59,19 @@ var Table = (function (_ref) {
57
59
  loading = _useRequest.loading,
58
60
  data = _useRequest.data,
59
61
  error = _useRequest.error;
60
- var cuTable = useCurrentTable.default({
62
+ var _useRowObj = useRowObj.default(),
63
+ selectedRowData = _useRowObj.selectedRowData,
64
+ rowOnChange = _useRowObj.rowOnChange;
65
+ var tableInstance = useCurrentTable.default({
61
66
  table: table,
62
67
  reload: function reload() {
63
68
  run(_objectSpread({}, saveParams.params));
64
- }
69
+ },
70
+ changeRowData: rowOnChange
65
71
  });
66
- var _useRowObj = useRowObj.default(),
67
- selectedRowData = _useRowObj.selectedRowData,
68
- rowOnChange = _useRowObj.rowOnChange;
69
72
  return jsxRuntime.jsx(context.HTableContext.Provider, {
70
73
  value: {
71
- table: cuTable,
74
+ tableInstance: tableInstance,
72
75
  selectedRowData: selectedRowData,
73
76
  rowOnChange: rowOnChange,
74
77
  data: data,
@@ -80,7 +83,7 @@ var Table = (function (_ref) {
80
83
  style: {
81
84
  width: "100%"
82
85
  },
83
- children: [jsxRuntime.jsx(index.default, {
86
+ children: [!hideHeader && jsxRuntime.jsx(index.default, {
84
87
  configData: configData,
85
88
  onFinish: run,
86
89
  searchSpan: searchSpan
@@ -90,8 +93,9 @@ var Table = (function (_ref) {
90
93
  onPageChange: function onPageChange(page) {
91
94
  run(_objectSpread(_objectSpread({}, saveParams.params), page));
92
95
  }
93
- }, props)), jsxRuntime.jsx(index$2.default, {
94
- actionRender: actionRender
96
+ }, props)), footerRender !== false && jsxRuntime.jsx(index$2.default, {
97
+ actionRender: actionRender,
98
+ footerRender: footerRender
95
99
  })]
96
100
  })
97
101
  });
@@ -2,11 +2,11 @@ import React from "react";
2
2
  import type { HTableInstance } from "./modal";
3
3
  interface HTableConfigContextModal {
4
4
  emptyRender?: (table: HTableInstance) => React.ReactNode;
5
- errorRender?: (table: HTableInstance) => React.ReactNode;
5
+ errorRender?: (table: HTableInstance, error: Error) => React.ReactNode;
6
6
  }
7
7
  export declare const HTableConfigContext: React.Context<HTableConfigContextModal | null>;
8
8
  export declare const useHTableConfigContext: ({ emptyRender, errorRender, }: HTableConfigContextModal) => {
9
- errorRender: ((table: HTableInstance) => React.ReactNode) | undefined;
9
+ errorRender: ((table: HTableInstance, error: Error) => React.ReactNode) | undefined;
10
10
  emptyRender: ((table: HTableInstance) => React.ReactNode) | undefined;
11
11
  };
12
12
  declare const Index: React.FC<HTableConfigContextModal>;
package/lib/context.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import type { ResultModal, RowObj, HTableInstance } from "./modal";
3
3
  interface HContextModal {
4
- table: HTableInstance;
4
+ tableInstance: HTableInstance;
5
5
  data?: ResultModal;
6
6
  selectedRowData: RowObj;
7
7
  rowOnChange: (keys: React.Key[], rowData: any[]) => void;
@@ -1,7 +1,9 @@
1
+ import type React from "react";
1
2
  import type { ParamsModal, HTableInstance } from "../modal";
2
3
  interface currentTableParams {
3
4
  table?: HTableInstance;
4
5
  reload: (params: ParamsModal) => void;
6
+ changeRowData: (keys: React.Key[], data: any) => void;
5
7
  }
6
- declare const _default: ({ table, reload }: currentTableParams) => HTableInstance;
8
+ declare const _default: ({ table, reload, changeRowData }: currentTableParams) => HTableInstance;
7
9
  export default _default;
@@ -7,11 +7,13 @@ var useHTable = require('./useHTable.js');
7
7
 
8
8
  var useCurrentTable = (function (_ref) {
9
9
  var table = _ref.table,
10
- reload = _ref.reload;
10
+ reload = _ref.reload,
11
+ changeRowData = _ref.changeRowData;
11
12
  var useCurrentTable = useHTable.default();
12
13
  return React.useMemo(function () {
13
14
  var resultTable = table || useCurrentTable;
14
15
  resultTable.table.reload = reload;
16
+ resultTable.table.setSelectedRowData = changeRowData;
15
17
  return resultTable;
16
18
  }, [table]);
17
19
  });
@@ -3,6 +3,7 @@ declare const _default: () => {
3
3
  form: import("@hw-component/form/lib/Form/modal").HFormInstance;
4
4
  table: {
5
5
  reload: (params: ParamsModal) => ParamsModal;
6
+ setSelectedRowData: () => void;
6
7
  };
7
8
  };
8
9
  export default _default;
@@ -11,7 +11,8 @@ var useHTable = (function () {
11
11
  return {
12
12
  reload: function reload(params) {
13
13
  return params;
14
- }
14
+ },
15
+ setSelectedRowData: function setSelectedRowData() {}
15
16
  };
16
17
  }, []);
17
18
  return {
package/lib/modal.d.ts CHANGED
@@ -18,25 +18,29 @@ export interface ParamsModal extends Record<string, any> {
18
18
  current?: number;
19
19
  }
20
20
  interface HColumns extends Omit<ProColumns, "render"> {
21
- render?: (dom: React.ReactNode, data: any, index: number, table: HTableInstance) => React.ReactNode;
21
+ render?: (dom: React.ReactNode, data: any, index: number, tableInstance: HTableInstance) => React.ReactNode;
22
22
  showSearch?: boolean;
23
23
  searchType?: HItemProps["type"];
24
24
  searchRender?: HItemProps["render"];
25
25
  }
26
26
  export type ConfigItemModal = Omit<HItemProps, "render" | "type"> & HColumns;
27
27
  export type ConfigDataModal = ConfigItemModal[];
28
- export type ActionRenderFn = (allCheck: boolean, selectedRowKeys: RowObj, xjTable: HTableInstance) => React.ReactNode;
28
+ export type ActionRenderFn = (allCheck: boolean, selectedRowKeys: RowObj, tableInstance: HTableInstance) => React.ReactNode;
29
+ type FooterRenderFn = (tableInstance: HTableInstance, selectedRowData: RowObj, data?: ResultModal) => React.ReactNode;
29
30
  export interface HTableProps extends Omit<ProTableProps<any, any>, "request"> {
30
31
  request: (params: ParamsModal) => Promise<ResultModal>;
31
32
  configData: ConfigDataModal;
32
33
  searchSpan?: ColProps;
33
34
  table?: HTableInstance;
34
35
  actionRender?: ActionRenderFn;
35
- emptyRender?: (table: HTableInstance) => React.ReactNode;
36
- errorRender?: (table: HTableInstance) => React.ReactNode;
36
+ emptyRender?: (tableInstance: HTableInstance) => React.ReactNode;
37
+ errorRender?: (tableInstance: HTableInstance, error: Error) => React.ReactNode;
38
+ footerRender?: FooterRenderFn | false;
39
+ hideHeader?: boolean;
37
40
  }
38
41
  export interface TableInstance {
39
42
  reload: (params: ParamsModal) => void;
43
+ setSelectedRowData: (keys: React.Key[], data: any) => void;
40
44
  }
41
45
  export interface HTableInstance {
42
46
  form: HFormInstance;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hw-component/table",
3
- "version": "0.0.1-beta-v2",
3
+ "version": "0.0.1-beta-v4",
4
4
  "description": "基于antd二次开发table组件",
5
5
  "keywords": [
6
6
  "table"
@@ -11,8 +11,11 @@ import { useHTableConfigContext } from "../TableConfig";
11
11
  interface HTableBodyProps extends Omit<ProTableProps<any, any>, "dataSource"> {
12
12
  configData: ConfigDataModal;
13
13
  onPageChange: (params: ParamsModal) => void;
14
- emptyRender?: (table: HTableInstance) => React.ReactNode;
15
- errorRender?: (table: HTableInstance) => React.ReactNode;
14
+ emptyRender?: (tableInstance: HTableInstance) => React.ReactNode;
15
+ errorRender?: (
16
+ tableInstance: HTableInstance,
17
+ error: Error
18
+ ) => React.ReactNode;
16
19
  }
17
20
  const defaultRender = () => {
18
21
  return <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />;
@@ -30,14 +33,14 @@ export default ({
30
33
  }: HTableBodyProps) => {
31
34
  // @ts-ignore
32
35
  const { selectedRowKeys, onChange } = rowSelection;
33
- const { table, data, selectedRowData, rowOnChange, error } =
36
+ const { tableInstance, data, selectedRowData, rowOnChange, error } =
34
37
  useHTableContext();
35
38
  const {
36
39
  emptyRender: tableEmptyRender = defaultRender,
37
40
  errorRender: tableErrorRender = defaultRender,
38
41
  } = useHTableConfigContext({ emptyRender, errorRender });
39
42
  const { records, size, current, total } = data || {};
40
- const cols = useCols(configData, table);
43
+ const cols = useCols(configData, tableInstance);
41
44
  const change = (key: React.Key[], rowData: any[]) => {
42
45
  if (onChange) {
43
46
  return onChange(key, rowData);
@@ -50,14 +53,15 @@ export default ({
50
53
  <ConfigProvider
51
54
  renderEmpty={() => {
52
55
  if (error) {
53
- return tableErrorRender?.(table);
56
+ return tableErrorRender?.(tableInstance, error);
54
57
  }
55
- return tableEmptyRender?.(table);
58
+ return tableEmptyRender?.(tableInstance);
56
59
  }}
57
60
  >
58
61
  <ProTable
59
62
  {...props}
60
63
  columns={cols}
64
+ tableAlertRender={false}
61
65
  search={false}
62
66
  rowSelection={{
63
67
  ...rowSelection,
@@ -3,16 +3,25 @@ import { Typography } from "antd";
3
3
  import type { ActionRenderFn } from "../modal";
4
4
  import { useHTableContext } from "../context";
5
5
  import React, { useState } from "react";
6
+ import type { HTableInstance, ResultModal, RowObj } from "../modal";
6
7
 
7
8
  const { Text, Link } = Typography;
8
9
  interface IFooterProps {
9
10
  actionRender?: ActionRenderFn;
11
+ footerRender?: (
12
+ tableInstance: HTableInstance,
13
+ selectedRowData: RowObj,
14
+ data?: ResultModal
15
+ ) => React.ReactNode;
10
16
  }
11
- export default ({ actionRender }: IFooterProps) => {
12
- const { data, selectedRowData, table } = useHTableContext();
17
+ export default ({ actionRender, footerRender }: IFooterProps) => {
18
+ const { data, selectedRowData, tableInstance } = useHTableContext();
13
19
  const [allCheck, setAllCheck] = useState<boolean>(false);
14
20
  const { total } = data || {};
15
21
  const num = allCheck ? total : 0;
22
+ if (footerRender) {
23
+ return <>{footerRender(tableInstance, selectedRowData, data)}</>;
24
+ }
16
25
  const dom = (
17
26
  <Card style={{ borderRadius: 4 }} bordered={false}>
18
27
  <Row justify="space-between">
@@ -32,7 +41,7 @@ export default ({ actionRender }: IFooterProps) => {
32
41
  已选择<Link>{num}</Link>条
33
42
  </Text>
34
43
  </Space>
35
- {actionRender?.(allCheck, selectedRowData, table)}
44
+ {actionRender?.(allCheck, selectedRowData, tableInstance)}
36
45
  </Row>
37
46
  </Card>
38
47
  );
@@ -18,8 +18,8 @@ export default ({
18
18
  onFinish,
19
19
  searchSpan = { span: 6 },
20
20
  }: IHeaderProps) => {
21
- const { table } = useHTableContext();
22
- const { form } = table;
21
+ const { tableInstance } = useHTableContext();
22
+ const { form } = tableInstance;
23
23
 
24
24
  const nConfigData: HItemProps[] = useMemo(
25
25
  () => formConfigDataProvider(configData),
@@ -14,6 +14,8 @@ export default ({
14
14
  searchSpan,
15
15
  table,
16
16
  actionRender,
17
+ footerRender,
18
+ hideHeader,
17
19
  ...props
18
20
  }: HTableProps) => {
19
21
  const saveParams = useMemo(() => {
@@ -27,17 +29,18 @@ export default ({
27
29
  saveParams.params = reqParams;
28
30
  return request(reqParams);
29
31
  });
30
- const cuTable = useCurrentTable({
32
+ const { selectedRowData, rowOnChange } = useRowObj();
33
+ const tableInstance = useCurrentTable({
31
34
  table,
32
35
  reload: () => {
33
36
  run({ ...saveParams.params });
34
37
  },
38
+ changeRowData: rowOnChange,
35
39
  });
36
- const { selectedRowData, rowOnChange } = useRowObj();
37
40
  return (
38
41
  <HTableContext.Provider
39
42
  value={{
40
- table: cuTable,
43
+ tableInstance,
41
44
  selectedRowData,
42
45
  rowOnChange,
43
46
  data,
@@ -45,11 +48,13 @@ export default ({
45
48
  }}
46
49
  >
47
50
  <Space size={20} direction={"vertical"} style={{ width: "100%" }}>
48
- <Header
49
- configData={configData}
50
- onFinish={run}
51
- searchSpan={searchSpan}
52
- />
51
+ {!hideHeader && (
52
+ <Header
53
+ configData={configData}
54
+ onFinish={run}
55
+ searchSpan={searchSpan}
56
+ />
57
+ )}
53
58
  <Body
54
59
  loading={loading}
55
60
  configData={configData}
@@ -58,7 +63,9 @@ export default ({
58
63
  }}
59
64
  {...props}
60
65
  />
61
- <Footer actionRender={actionRender} />
66
+ {footerRender !== false && (
67
+ <Footer actionRender={actionRender} footerRender={footerRender} />
68
+ )}
62
69
  </Space>
63
70
  </HTableContext.Provider>
64
71
  );
@@ -3,7 +3,7 @@ import type { HTableInstance } from "./modal";
3
3
 
4
4
  interface HTableConfigContextModal {
5
5
  emptyRender?: (table: HTableInstance) => React.ReactNode;
6
- errorRender?: (table: HTableInstance) => React.ReactNode;
6
+ errorRender?: (table: HTableInstance, error: Error) => React.ReactNode;
7
7
  }
8
8
  export const HTableConfigContext =
9
9
  React.createContext<HTableConfigContextModal | null>(null);
@@ -2,7 +2,7 @@ import React, { useContext } from "react";
2
2
  import type { ResultModal, RowObj, HTableInstance } from "./modal";
3
3
 
4
4
  interface HContextModal {
5
- table: HTableInstance;
5
+ tableInstance: HTableInstance;
6
6
  data?: ResultModal;
7
7
  selectedRowData: RowObj;
8
8
  rowOnChange: (keys: React.Key[], rowData: any[]) => void;
@@ -1,3 +1,4 @@
1
+ import type React from "react";
1
2
  import { useMemo } from "react";
2
3
  import type { ParamsModal, HTableInstance } from "../modal";
3
4
  import useHTable from "../hooks/useHTable";
@@ -5,12 +6,14 @@ import useHTable from "../hooks/useHTable";
5
6
  interface currentTableParams {
6
7
  table?: HTableInstance;
7
8
  reload: (params: ParamsModal) => void;
9
+ changeRowData: (keys: React.Key[], data: any) => void;
8
10
  }
9
- export default ({ table, reload }: currentTableParams) => {
11
+ export default ({ table, reload, changeRowData }: currentTableParams) => {
10
12
  const useCurrentTable = useHTable();
11
13
  return useMemo(() => {
12
14
  const resultTable = table || useCurrentTable;
13
15
  resultTable.table.reload = reload;
16
+ resultTable.table.setSelectedRowData = changeRowData;
14
17
  return resultTable;
15
18
  }, [table]);
16
19
  };
@@ -9,6 +9,7 @@ export default () => {
9
9
  reload: (params: ParamsModal) => {
10
10
  return params;
11
11
  },
12
+ setSelectedRowData: () => {},
12
13
  };
13
14
  }, []);
14
15
  return {
@@ -26,7 +26,7 @@ interface HColumns extends Omit<ProColumns, "render"> {
26
26
  dom: React.ReactNode,
27
27
  data: any,
28
28
  index: number,
29
- table: HTableInstance
29
+ tableInstance: HTableInstance
30
30
  ) => React.ReactNode;
31
31
  showSearch?: boolean;
32
32
  searchType?: HItemProps["type"];
@@ -37,20 +37,30 @@ export type ConfigDataModal = ConfigItemModal[];
37
37
  export type ActionRenderFn = (
38
38
  allCheck: boolean,
39
39
  selectedRowKeys: RowObj,
40
- xjTable: HTableInstance
40
+ tableInstance: HTableInstance
41
+ ) => React.ReactNode;
42
+ type FooterRenderFn = (
43
+ tableInstance: HTableInstance,
44
+ selectedRowData: RowObj,
45
+ data?: ResultModal
41
46
  ) => React.ReactNode;
42
-
43
47
  export interface HTableProps extends Omit<ProTableProps<any, any>, "request"> {
44
48
  request: (params: ParamsModal) => Promise<ResultModal>;
45
49
  configData: ConfigDataModal;
46
50
  searchSpan?: ColProps;
47
51
  table?: HTableInstance;
48
52
  actionRender?: ActionRenderFn;
49
- emptyRender?: (table: HTableInstance) => React.ReactNode;
50
- errorRender?: (table: HTableInstance) => React.ReactNode;
53
+ emptyRender?: (tableInstance: HTableInstance) => React.ReactNode;
54
+ errorRender?: (
55
+ tableInstance: HTableInstance,
56
+ error: Error
57
+ ) => React.ReactNode;
58
+ footerRender?: FooterRenderFn | false;
59
+ hideHeader?: boolean;
51
60
  }
52
61
  export interface TableInstance {
53
62
  reload: (params: ParamsModal) => void;
63
+ setSelectedRowData: (keys: React.Key[], data: any) => void;
54
64
  }
55
65
  export interface HTableInstance {
56
66
  form: HFormInstance;
@@ -24,27 +24,31 @@ export default () => {
24
24
  <HTable
25
25
  configData={configData}
26
26
  rowKey={"id"}
27
+ hideHeader={true}
27
28
  emptyRender={() => {
28
29
  return <div>无数据</div>;
29
30
  }}
31
+ errorRender={(table, error) => {
32
+ return <div>{error.message}</div>;
33
+ }}
30
34
  actionRender={(allCheck, selectedRowKeys, xjTable) => {
31
35
  console.log(allCheck, selectedRowKeys, xjTable);
32
36
  return <Button>点我</Button>;
33
37
  }}
38
+ footerRender={false}
34
39
  request={(a) => {
35
- console.log("aaa", a);
36
-
37
- return new Promise((resolve) => {
40
+ return new Promise((resolve, reject) => {
38
41
  setTimeout(() => {
39
42
  resolve({
40
- records: [
41
- { name: "ddd", id: 1 },
42
- { name: "ddd", id: 2 },
43
- { name: "ddd", id: 3 },
44
- ],
45
43
  size: "10",
46
44
  current: "1",
47
- total: "1000",
45
+ total: "100",
46
+ records: [
47
+ {
48
+ id: 1,
49
+ name: "111",
50
+ },
51
+ ],
48
52
  });
49
53
  }, 2000);
50
54
  });