@hw-component/table 1.9.93 → 1.9.94

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 (70) hide show
  1. package/.eslintcache +1 -1
  2. package/es/DialogTable/Content.d.ts +4 -3
  3. package/es/DialogTable/Content.js +52 -3
  4. package/es/DialogTable/DwTable.js +2 -2
  5. package/es/DialogTable/ModalEditTable.d.ts +5 -0
  6. package/es/DialogTable/ModalEditTable.js +120 -0
  7. package/es/DialogTable/ModalTable.js +2 -2
  8. package/es/DialogTable/hooks.d.ts +4 -15
  9. package/es/DialogTable/hooks.js +9 -2
  10. package/es/EditTable/hooks.d.ts +9 -0
  11. package/es/EditTable/hooks.js +76 -0
  12. package/es/EditTable/index.d.ts +4 -0
  13. package/es/EditTable/index.js +181 -0
  14. package/es/EditTable/modal.d.ts +19 -0
  15. package/es/HTableBody/defaultRender.d.ts +7 -1
  16. package/es/HTableBody/defaultRender.js +11 -4
  17. package/es/HTableBody/index.js +4 -1
  18. package/es/HTableBody/modal.d.ts +3 -3
  19. package/es/HTablePagination/index.d.ts +2 -1
  20. package/es/HTablePagination/index.js +6 -4
  21. package/es/TableConfig.d.ts +5 -5
  22. package/es/index.d.ts +2 -0
  23. package/es/index.js +2 -0
  24. package/es/modal.d.ts +14 -5
  25. package/lib/DialogTable/Content.d.ts +4 -3
  26. package/lib/DialogTable/Content.js +53 -5
  27. package/lib/DialogTable/DwTable.js +1 -1
  28. package/lib/DialogTable/ModalEditTable.d.ts +5 -0
  29. package/lib/DialogTable/ModalEditTable.js +123 -0
  30. package/lib/DialogTable/ModalTable.js +1 -1
  31. package/lib/DialogTable/hooks.d.ts +4 -15
  32. package/lib/DialogTable/hooks.js +9 -2
  33. package/lib/EditTable/hooks.d.ts +9 -0
  34. package/lib/EditTable/hooks.js +78 -0
  35. package/lib/EditTable/index.d.ts +4 -0
  36. package/lib/EditTable/index.js +184 -0
  37. package/lib/EditTable/modal.d.ts +19 -0
  38. package/lib/HTableBody/defaultRender.d.ts +7 -1
  39. package/lib/HTableBody/defaultRender.js +11 -4
  40. package/lib/HTableBody/index.js +4 -1
  41. package/lib/HTableBody/modal.d.ts +3 -3
  42. package/lib/HTablePagination/index.d.ts +2 -1
  43. package/lib/HTablePagination/index.js +6 -4
  44. package/lib/TableConfig.d.ts +5 -5
  45. package/lib/index.d.ts +2 -0
  46. package/lib/index.js +4 -0
  47. package/lib/modal.d.ts +14 -5
  48. package/package.json +4 -3
  49. package/src/components/DialogTable/Content.tsx +25 -2
  50. package/src/components/DialogTable/DwTable.tsx +3 -2
  51. package/src/components/DialogTable/ModalEditTable.tsx +99 -0
  52. package/src/components/DialogTable/ModalTable.tsx +3 -2
  53. package/src/components/DialogTable/hooks.ts +15 -4
  54. package/src/components/EditTable/hooks.ts +43 -0
  55. package/src/components/EditTable/index.tsx +118 -0
  56. package/src/components/EditTable/modal.ts +26 -0
  57. package/src/components/HTableBody/defaultRender.tsx +17 -7
  58. package/src/components/HTableBody/index.tsx +1 -1
  59. package/src/components/HTableBody/modal.ts +6 -7
  60. package/src/components/HTablePagination/index.tsx +7 -3
  61. package/src/components/Table.tsx +1 -0
  62. package/src/components/TableConfig.tsx +7 -3
  63. package/src/components/index.tsx +2 -0
  64. package/src/components/modal.ts +19 -8
  65. package/src/components/render/index.tsx +1 -0
  66. package/src/pages/DwTable/index.tsx +1 -0
  67. package/src/pages/EditTable/index.tsx +70 -0
  68. package/src/pages/ModalEditTable/index.tsx +84 -0
  69. package/src/pages/Table/index.tsx +14 -15
  70. package/src/routes.tsx +12 -0
@@ -10,19 +10,29 @@ const pubProps = {
10
10
  export const emptyDefaultRender = () => {
11
11
  return <Empty image={empty_bg} description="暂无数据~" {...pubProps} />;
12
12
  };
13
- export const errorDefaultRender = (
14
- tableInstance: HTableInstance,
15
- error: Error
16
- ) => {
13
+ interface errorDefaultRenderParams {
14
+ reload?: () => void;
15
+ error: Error;
16
+ tableInstance?: HTableInstance;
17
+ }
18
+ export const errorDefaultRender = ({
19
+ error,
20
+ tableInstance,
21
+ reload,
22
+ }: errorDefaultRenderParams) => {
23
+ const pageReload = () => {
24
+ if (tableInstance) {
25
+ return tableInstance.table.reloadWithParams();
26
+ }
27
+ return reload?.();
28
+ };
17
29
  return (
18
30
  <Empty image={errorBg} description={error.message} {...pubProps}>
19
31
  <Button
20
32
  type={"primary"}
21
33
  ghost
22
34
  style={{ borderRadius: 16 }}
23
- onClick={() => {
24
- tableInstance.table.reloadWithParams();
25
- }}
35
+ onClick={pageReload}
26
36
  >
27
37
  刷新
28
38
  </Button>
@@ -129,7 +129,7 @@ export default (bodyProps: HTableBodyProps) => {
129
129
  <ConfigProvider
130
130
  renderEmpty={() => {
131
131
  if (error) {
132
- return tableErrorRender?.(tableInstance, error);
132
+ return tableErrorRender?.({ tableInstance, error });
133
133
  }
134
134
  return tableEmptyRender?.(tableInstance);
135
135
  }}
@@ -2,13 +2,15 @@ import type { OptionConfig } from "@ant-design/pro-table/lib/components/ToolBar"
2
2
  import type { Key } from "react";
3
3
  import type React from "react";
4
4
  import type { ProTableProps } from "@ant-design/pro-table";
5
- import type {
5
+ import {
6
6
  ActionRenderFn,
7
7
  ConfigDataModal,
8
+ EmptyPageRender,
9
+ ErrorPageRender,
8
10
  HRowSelection,
9
11
  HTableInstance,
10
12
  ParamsModal,
11
- } from "@/components/modal";
13
+ } from "../modal";
12
14
  import type { AffixProps } from "antd/lib/affix";
13
15
  import type { IPaginationProps } from "@/components/HTablePagination";
14
16
 
@@ -22,11 +24,8 @@ export interface HTableBodyProps
22
24
  > {
23
25
  configData?: ConfigDataModal;
24
26
  onPageChange?: (params: ParamsModal) => void;
25
- emptyRender?: (tableInstance: HTableInstance) => React.ReactNode;
26
- errorRender?: (
27
- tableInstance: HTableInstance,
28
- error: Error
29
- ) => React.ReactNode;
27
+ emptyRender?: EmptyPageRender;
28
+ errorRender?: ErrorPageRender;
30
29
  tableStyle?: React.CSSProperties;
31
30
  paginationStyle?: React.CSSProperties;
32
31
  actionRender?: ActionRenderFn;
@@ -7,6 +7,7 @@ import React, { useState } from "react";
7
7
  import type { AffixProps } from "antd/lib/affix";
8
8
  import GoTop from "../GoTop";
9
9
  import { useHTableConfigContext } from "@/components/TableConfig";
10
+
10
11
  export interface IPaginationProps extends Omit<PaginationProps, "showTotal"> {
11
12
  onPageChange?: (params: ParamsModal) => void;
12
13
  paginationStyle?: React.CSSProperties;
@@ -15,6 +16,7 @@ export interface IPaginationProps extends Omit<PaginationProps, "showTotal"> {
15
16
  actionRender?: (tableInstance: HTableInstance) => React.ReactNode;
16
17
  table?: HTableInstance;
17
18
  showTotal?: false | PaginationProps["showTotal"];
19
+ data?: Record<string, any>;
18
20
  }
19
21
  const defaultShowTotal = (totalNum: number, [showCurrent, showCurrentEnd]) => {
20
22
  return `第${showCurrent}-${showCurrentEnd}/总共${totalNum}条`;
@@ -27,26 +29,28 @@ export default ({
27
29
  actionRender,
28
30
  table,
29
31
  showTotal = defaultShowTotal,
32
+ data,
30
33
  ...props
31
34
  }: IPaginationProps) => {
32
35
  const {
33
36
  onPageChange: contextOnPageChange,
34
- data,
37
+ data: contextData,
35
38
  tableInstance: contextTableInstance,
36
39
  } = useHTableContext();
37
40
  const { paginationStyle: defaultPaginationStyle } = useHTableConfigContext({
38
41
  paginationStyle,
39
42
  });
43
+ const cuData = data || contextData;
40
44
  const tableInstance = table || contextTableInstance;
41
45
  const tableOnPageChange = onPageChange || contextOnPageChange;
42
- const { size, current, total } = data || {};
46
+ const { size, current, total } = cuData || {};
43
47
  const pageCurrent = Number.parseInt(current || "1", 10);
44
48
  const pageSize = Number.parseInt(size || "10", 10);
45
49
  const pageTotal = Number.parseInt(total || "0", 10);
46
50
  const className = useClassName("hw-table-pagination");
47
51
  const [style, setStyle] = useState({});
48
52
  const cuShowTotal = showTotal === false ? undefined : showTotal;
49
- if (!data) {
53
+ if (!cuData) {
50
54
  return <></>;
51
55
  }
52
56
  if (affixProps === false) {
@@ -8,6 +8,7 @@ import useReq from "./hooks/useReq";
8
8
  import useDispatch from "./hooks/useDispatch";
9
9
  import { useState } from "react";
10
10
  import { useClassName } from "./hooks";
11
+
11
12
  export default ({
12
13
  request,
13
14
  configData,
@@ -1,9 +1,13 @@
1
1
  import React, { useContext } from "react";
2
- import type { HTableInstance, ValueTypeConfigModal } from "./modal";
2
+ import {
3
+ EmptyPageRender,
4
+ ErrorPageRender,
5
+ ValueTypeConfigModal,
6
+ } from "./modal";
3
7
 
4
8
  interface HTableConfigContextModal {
5
- emptyRender?: (table: HTableInstance) => React.ReactNode;
6
- errorRender?: (table: HTableInstance, error: Error) => React.ReactNode;
9
+ emptyRender?: EmptyPageRender;
10
+ errorRender?: ErrorPageRender;
7
11
  headerStyle?: React.CSSProperties;
8
12
  tableStyle?: React.CSSProperties;
9
13
  paginationStyle?: React.CSSProperties;
@@ -12,3 +12,5 @@ export { default as HModalTable } from "./DialogTable/ModalTable";
12
12
  export { useHDialogTable } from "./DialogTable/hooks";
13
13
  export { default as HDwTable } from "./DialogTable/DwTable";
14
14
  export { DefaultSubComponent as HTableHeaderSubBtn } from "./HTableHeader/defaultSubComponent";
15
+ export { default as EditTable } from "./EditTable";
16
+ export { default as ModalEditTable } from "./DialogTable/ModalEditTable";
@@ -12,7 +12,8 @@ import type { TableProps } from "antd/lib/table";
12
12
  import type { AffixProps } from "antd/lib/affix";
13
13
  import type { OptionModal } from "./HTableBody/modal";
14
14
  import type { DrawerProps } from "antd";
15
- import type { IPaginationProps } from "@/components/HTablePagination";
15
+ import type { IPaginationProps } from "./HTablePagination";
16
+ import { EditTableProps } from "./EditTable/modal";
16
17
 
17
18
  export interface RowObj {
18
19
  keys?: React.Key[];
@@ -89,11 +90,8 @@ export interface HTableProps
89
90
  searchSpan?: ColProps;
90
91
  table?: HTableInstance;
91
92
  actionRender?: ActionRenderFn;
92
- emptyRender?: (tableInstance: HTableInstance) => React.ReactNode;
93
- errorRender?: (
94
- tableInstance: HTableInstance,
95
- error: Error
96
- ) => React.ReactNode;
93
+ emptyRender?: EmptyPageRender;
94
+ errorRender?: ErrorPageRender;
97
95
  hideHeader?: boolean;
98
96
  action?: Record<string, actionFn>;
99
97
  headerStyle?: React.CSSProperties;
@@ -165,15 +163,17 @@ export interface DwTableProps extends DrawerProps {
165
163
  contentRender?: (node: React.ReactNode) => React.ReactNode;
166
164
  }
167
165
 
168
- export interface ModalTableProps extends Omit<ModalProps, "onOk"> {
166
+ export interface ModalTableProps<T = HTableProps["configData"]>
167
+ extends Omit<ModalProps, "onOk"> {
169
168
  tableProps?: Omit<HTableProps, "configData" | "request">;
170
169
  dialogTable?: HDiaLogTableInstance;
171
170
  params?: Record<string, any>;
172
- configData?: HTableProps["configData"];
171
+ configData?: T;
173
172
  request?: HTableProps["request"];
174
173
  contentRender?: (node: React.ReactNode) => React.ReactNode;
175
174
  dataSource?: any[];
176
175
  onOk?: (e?: React.MouseEvent<HTMLElement>) => void;
176
+ editTableProps?: Omit<EditTableProps, "configData" | "request">;
177
177
  }
178
178
 
179
179
  export type ValueTypeConfigRenderFn = (
@@ -183,3 +183,14 @@ export type ValueTypeConfigRenderFn = (
183
183
  tableInstance: HTableInstance
184
184
  ) => React.ReactNode;
185
185
  export type ValueTypeConfigModal = Record<string, ValueTypeConfigRenderFn>;
186
+
187
+ interface ErrorRenderParams {
188
+ error: Error;
189
+ tableInstance?: HTableInstance;
190
+ reload?: VoidFunction;
191
+ }
192
+
193
+ export type ErrorPageRender = (params: ErrorRenderParams) => React.ReactNode;
194
+ export type EmptyPageRender = (
195
+ tableInstance?: HTableInstance
196
+ ) => React.ReactNode;
@@ -2,6 +2,7 @@ import type { ConfigItemModal, HTableInstance } from "@/components/modal";
2
2
  import type React from "react";
3
3
  import config from "./config";
4
4
  import type { ValueTypeConfigModal } from "../modal";
5
+
5
6
  export default (
6
7
  item: ConfigItemModal,
7
8
  tableInstance: HTableInstance,
@@ -1,5 +1,6 @@
1
1
  import { Button } from "antd";
2
2
  import { HDwTable, HModalTable, HTable, useHDialogTable } from "@/components";
3
+
3
4
  const configData = [
4
5
  {
5
6
  title: "座位",
@@ -0,0 +1,70 @@
1
+ import { EditTable } from "@/components";
2
+ import { useRef, useState } from "react";
3
+ import type { ActionType } from "@ant-design/pro-table";
4
+
5
+ const dataSource = [
6
+ {
7
+ id: 1,
8
+ title: "1",
9
+ },
10
+ {
11
+ id: 2,
12
+ title: "2",
13
+ },
14
+ {
15
+ id: 3,
16
+ title: "3",
17
+ },
18
+ {
19
+ id: 4,
20
+ title: "4",
21
+ },
22
+ {
23
+ id: 5,
24
+ title: "5",
25
+ },
26
+ ];
27
+ export default () => {
28
+ const defaultActionRef = useRef<ActionType>();
29
+ const [cuData, setCuData] = useState(dataSource);
30
+ return (
31
+ <EditTable
32
+ actionRef={defaultActionRef}
33
+ onAdd={async (data) => {
34
+ const newData = [...cuData];
35
+ newData.push({
36
+ id: newData.length + 1,
37
+ ...data,
38
+ });
39
+ setCuData(newData);
40
+ }}
41
+ onEdit={async (data) => {
42
+ const index = cuData.findIndex((e) => e.id === data.id);
43
+ cuData[index] = data;
44
+ setCuData([...cuData]);
45
+ }}
46
+ dataSource={cuData}
47
+ configData={[
48
+ { title: "标题", dataIndex: "title" },
49
+ { title: "标题2", dataIndex: "title1" },
50
+ {
51
+ title: "操作",
52
+ valueType: "option",
53
+ align: "center",
54
+ render: (text: any, record: any, _: any, action: any) => [
55
+ <a
56
+ key="editable"
57
+ type={"link"}
58
+ onClick={() => {
59
+ console.log(action);
60
+ action?.startEditable?.(record.id);
61
+ }}
62
+ >
63
+ 编辑
64
+ </a>,
65
+ ],
66
+ },
67
+ ]}
68
+ />
69
+ );
70
+ };
@@ -0,0 +1,84 @@
1
+ import { ModalEditTable, useHDialogTable } from "@/components";
2
+ import { useState } from "react";
3
+
4
+ const dataSource = [
5
+ {
6
+ id: 1,
7
+ title: "1",
8
+ },
9
+ {
10
+ id: 2,
11
+ title: "2",
12
+ },
13
+ {
14
+ id: 3,
15
+ title: "3",
16
+ },
17
+ {
18
+ id: 4,
19
+ title: "4",
20
+ },
21
+ {
22
+ id: 5,
23
+ title: "5",
24
+ },
25
+ ];
26
+
27
+ export default () => {
28
+ const dialogTable = useHDialogTable();
29
+ const [cuData, setCuData] = useState(dataSource);
30
+
31
+ return (
32
+ <div>
33
+ <div
34
+ onClick={() => {
35
+ dialogTable.show();
36
+ }}
37
+ >
38
+ 点我
39
+ </div>
40
+ <ModalEditTable
41
+ title="编辑"
42
+ dataSource={cuData}
43
+ editTableProps={{
44
+ onAdd: (data) => {
45
+ console.log("addd");
46
+ const newData = [...cuData];
47
+ newData.push({
48
+ id: newData.length + 1,
49
+ ...data,
50
+ });
51
+ setCuData(newData);
52
+ },
53
+ onEdit: (data) => {
54
+ const index = cuData.findIndex((e) => e.id === data.id);
55
+ cuData[index] = data;
56
+ setCuData([...cuData]);
57
+ },
58
+ }}
59
+ dialogTable={dialogTable}
60
+ configData={[
61
+ { title: "标题", dataIndex: "title" },
62
+ { title: "标题2", dataIndex: "title1" },
63
+ {
64
+ title: "操作",
65
+ valueType: "option",
66
+ align: "center",
67
+ render: (text: any, record: any, _: any, action: any) => [
68
+ <a
69
+ key="editable"
70
+ type={"link"}
71
+ onClick={() => {
72
+ console.log(action);
73
+ action?.startEditable?.(record.id);
74
+ }}
75
+ >
76
+ 编辑
77
+ </a>,
78
+ ],
79
+ },
80
+ ]}
81
+ />
82
+ </div>
83
+ );
84
+ };
@@ -52,24 +52,24 @@ const Testd = (props) => {
52
52
  };
53
53
  export const configData = [
54
54
  {
55
- title: '订单编号',
56
- dataIndex: 'childOrderNo',
55
+ title: "订单编号",
56
+ dataIndex: "childOrderNo",
57
57
  showSearch: true,
58
- valueType: 'copy',
58
+ valueType: "copy",
59
59
  width: 120,
60
- searchType: 'selectInput',
61
- name: 'selectInput',
60
+ searchType: "selectInput",
61
+ name: "selectInput",
62
62
  itemProps: {
63
- placeholder: '请输入',
63
+ placeholder: "请输入",
64
64
  selectProps: {
65
- options:[
65
+ options: [
66
66
  {
67
- label: '订单编号',
68
- value: 'orderNo',
67
+ label: "订单编号",
68
+ value: "orderNo",
69
69
  },
70
70
  {
71
- label: '用户id',
72
- value: 'userId',
71
+ label: "用户id",
72
+ value: "userId",
73
73
  },
74
74
  ],
75
75
  style: { width: 88 },
@@ -213,12 +213,11 @@ export default () => {
213
213
  persistenceType: "localStorage",
214
214
  }}
215
215
  formInitValues={{
216
- select: 'orderNo',
216
+ select: "orderNo",
217
217
  }}
218
-
219
218
  dataSource={[{}, {}, {}]}
220
- request={(params)=>{
221
- console.log(params)
219
+ request={(params) => {
220
+ console.log(params);
222
221
  return Promise.resolve({});
223
222
  }}
224
223
  headerTitle={
package/src/routes.tsx CHANGED
@@ -4,6 +4,8 @@ import Table from "./pages/Table";
4
4
  import ModalTable from "./pages/ModalTable";
5
5
  import TableCustomize from "./pages/TableCustomize";
6
6
  import DwTable from "./pages/DwTable";
7
+ import EditTable from "./pages/EditTable";
8
+ import ModalEditTable from "./pages/ModalEditTable";
7
9
 
8
10
  export interface RouteModal {
9
11
  path?: string;
@@ -39,6 +41,16 @@ const routes: RouteModal[] = [
39
41
  name: "dwTable",
40
42
  element: <DwTable />,
41
43
  },
44
+ {
45
+ path: "/editTable",
46
+ name: "editTable",
47
+ element: <EditTable />,
48
+ },
49
+ {
50
+ path: "/modalEditTable",
51
+ name: "modalEditTable",
52
+ element: <ModalEditTable />,
53
+ },
42
54
  ];
43
55
 
44
56
  export default routes;