@jswork/antd-components 1.0.99 → 1.0.101

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jswork/antd-components",
3
- "version": "1.0.99",
3
+ "version": "1.0.101",
4
4
  "main": "dist/main.cjs.js",
5
5
  "module": "dist/main.esm.js",
6
6
  "types": "dist/main.d.ts",
@@ -41,6 +41,8 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "@jswork/antd-form-builder": "^1.1.27",
44
+ "@jswork/event-mitt": "^2.0.17",
45
+ "@jswork/harmony-events": "^1.2.11",
44
46
  "@jswork/loadkit": "^1.0.6",
45
47
  "@jswork/next-dom-event": "^1.0.8",
46
48
  "@jswork/next-gpid": "^1.0.4",
package/src/lib/table.tsx CHANGED
@@ -7,16 +7,24 @@
7
7
  import React from 'react';
8
8
  import { Table, TableProps } from 'antd';
9
9
  import cx from 'classnames';
10
+ import type { EventMittNamespace } from '@jswork/event-mitt';
11
+ import { ReactHarmonyEvents } from '@jswork/harmony-events';
10
12
 
11
13
  const CLASS_NAME = 'ac-table';
12
14
 
13
15
  type AcTableProps = TableProps & {
16
+ /**
17
+ * The identity name.
18
+ * @default '@'
19
+ */
20
+ name?: string;
14
21
  /**
15
22
  * 自定义数据获取函数
16
23
  * @param params { current: number; pageSize: number }
17
24
  * @returns Promise<{ data: any[]; total: number }>
18
25
  */
19
26
  fetcher: (params: { current: number; pageSize: number }) => Promise<{ data: any[]; total: number }>;
27
+ onPageChange?: (current: number, size: number) => void;
20
28
  rowKey?: string;
21
29
  defaultCurrent?: number;
22
30
  defaultPageSize?: number;
@@ -26,12 +34,22 @@ type AcTableProps = TableProps & {
26
34
  export class AcTable extends React.Component<AcTableProps, any> {
27
35
  static displayName = CLASS_NAME;
28
36
  static formSchema = CLASS_NAME;
37
+ private harmonyEvents: ReactHarmonyEvents | null = null;
38
+ static event: EventMittNamespace.EventMitt;
39
+ static events = [
40
+ 'refetch',
41
+ 'reset',
42
+ ];
43
+
29
44
  static defaultProps = {
45
+ name: '@',
30
46
  rowKey: 'id',
31
47
  defaultCurrent: 1,
32
48
  defaultPageSize: 10,
33
49
  };
34
50
 
51
+ public eventBus: EventMittNamespace.EventMitt = AcTable.event;
52
+
35
53
  constructor(props) {
36
54
  super(props);
37
55
  const { defaultCurrent, defaultPageSize } = this.props;
@@ -46,9 +64,15 @@ export class AcTable extends React.Component<AcTableProps, any> {
46
64
 
47
65
  async componentDidMount() {
48
66
  const { current, pageSize } = this.state;
67
+ this.harmonyEvents = ReactHarmonyEvents.create(this);
68
+ this.eventBus = AcTable.event;
49
69
  await this.fetchData(current, pageSize);
50
70
  }
51
71
 
72
+ componentWillUnmount() {
73
+ this.harmonyEvents?.destroy();
74
+ }
75
+
52
76
  fetchData = async (page: number, size: number) => {
53
77
  const abortController = new AbortController();
54
78
  const { fetcher } = this.props;
@@ -75,8 +99,25 @@ export class AcTable extends React.Component<AcTableProps, any> {
75
99
  }
76
100
  };
77
101
 
102
+ /* ----- public eventBus methods start ----- */
103
+ refetch = async () => {
104
+ const { current, pageSize } = this.state;
105
+ await this.fetchData(current, pageSize);
106
+ };
107
+
108
+ reset = async () => {
109
+ const { defaultCurrent, defaultPageSize } = this.props;
110
+ this.setState({
111
+ current: defaultCurrent,
112
+ pageSize: defaultPageSize,
113
+ }, () => {
114
+ void this.fetchData(defaultCurrent!, defaultPageSize!);
115
+ });
116
+ };
117
+ /* ----- public eventBus methods end ----- */
118
+
78
119
  render() {
79
- const { className, pagination, ...rest } = this.props;
120
+ const { className, pagination, onPageChange, ...rest } = this.props;
80
121
  const { dataSource, isLoading, current, pageSize, total } = this.state;
81
122
  return (
82
123
  <Table
@@ -87,6 +128,7 @@ export class AcTable extends React.Component<AcTableProps, any> {
87
128
  current,
88
129
  pageSize,
89
130
  onChange: (page, size) => {
131
+ onPageChange?.(page, size);
90
132
  this.setState({ current: page, pageSize: size }, () => {
91
133
  void this.fetchData(page, size);
92
134
  });
@@ -0,0 +1,22 @@
1
+ import { AcTable } from './table';
2
+
3
+ const useCommand = (inName?: string) => {
4
+ const name = inName || '@';
5
+ const execute = (command: string, ...args: any[]) =>
6
+ AcTable.event?.emit(`${name}:${command}`, ...args);
7
+
8
+ const listen = (cmd: string, callback: any) => AcTable.event?.on(`${name}:${cmd}`, callback);
9
+
10
+ // the command repository:
11
+ const refetch = () => execute('refetch');
12
+ const reset = () => execute('reset');
13
+
14
+ return {
15
+ listen,
16
+ execute,
17
+ refetch,
18
+ reset,
19
+ };
20
+ };
21
+
22
+ export default useCommand;