@ecoding/components.antd 0.4.19 → 0.4.20

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.
@@ -46,7 +46,7 @@ export class Modals extends React.Component {
46
46
  }
47
47
  render() {
48
48
  // if (!this.props.visible) return null;
49
- return (React.createElement(Modal, { className: this.state.className, wrapClassName: this.state.wrapClassName, open: this.state.open, style: this.state.style, width: this.state.width, zIndex: this.state.zIndex, mask: this.state.mask, title: typeof this.state.title === "string" ? (React.createElement("div", { style: { boxShadow: "inset 0px -1px 0px #F0F0F0", marginBottom: "20px", paddingBottom: "12px" } }, this.state.title)) : (this.state.title), closable: this.state.closable, maskClosable: this.state.maskClosable, onCancel: this.cancel, destroyOnHidden: true, keyboard: false, footer: this.state.footer === null ? null : this.state.footer ? (this.state.footer) : (React.createElement(React.Fragment, null,
49
+ return (React.createElement(Modal, { className: this.state.className, wrapClassName: this.state.wrapClassName, open: this.state.open, style: this.state.style, width: this.state.width, height: this.state.height ? this.state.height : undefined, zIndex: this.state.zIndex, mask: this.state.mask, title: typeof this.state.title === "string" ? (React.createElement("div", { style: { boxShadow: "inset 0px -1px 0px #F0F0F0", marginBottom: "20px", paddingBottom: "12px" } }, this.state.title)) : (this.state.title), closable: this.state.closable, maskClosable: this.state.maskClosable, onCancel: this.cancel, destroyOnHidden: true, keyboard: false, footer: this.state.footer === null ? null : this.state.footer ? (this.state.footer) : (React.createElement(React.Fragment, null,
50
50
  this.state.addonBefore ? this.state.addonBefore : null,
51
51
  React.createElement(Button, Object.assign({}, this.state.cancelButtonProps, { key: "back", onClick: this.cancel }), this.state.cancelText),
52
52
  React.createElement(Button, Object.assign({}, this.state.okButtonProps, { danger: this.state.okDanger, key: "submit", type: this.state.okType, loading: this.state.loading, onClick: this.ok }), this.state.okText),
@@ -3,7 +3,8 @@ import type { FilterValue, SorterResult, TableCurrentDataSource, TablePagination
3
3
  import type { ColProps } from 'antd/lib/col';
4
4
  interface TableProRef {
5
5
  clear: () => void;
6
- setSelectedRowKeys: (key: string[]) => void;
6
+ setSelectedRowKeys: (key: React.Key[]) => void;
7
+ getSelectedRowKeys: () => React.Key[];
7
8
  }
8
9
  interface IProps {
9
10
  className?: string;
@@ -27,6 +28,7 @@ interface IProps {
27
28
  bordered?: boolean;
28
29
  dataSource: any;
29
30
  columns: any[];
31
+ selectKeys?: React.Key[];
30
32
  operationColumn?: any[];
31
33
  pagination?: any;
32
34
  offsetY?: number;
@@ -35,7 +37,7 @@ interface IProps {
35
37
  filterTitle?: string;
36
38
  columnsTitle?: string;
37
39
  selectType?: "checkbox" | "radio";
38
- selectChangeHandler?: any;
40
+ selectChangeHandler?: (keys: React.Key[], selectedRows: any[]) => void;
39
41
  i18n?: any;
40
42
  locale?: TableLocale;
41
43
  }
@@ -1,15 +1,17 @@
1
1
  import React, { memo, useEffect, useMemo, useRef, useState, useImperativeHandle, forwardRef } from 'react';
2
2
  import { Popover, Button, Typography, Table } from 'antd';
3
3
  import { FilterOutlined, MenuOutlined } from '@ant-design/icons';
4
+ import { isEqual } from "@ecoding/helper.is";
4
5
  import TableProColumns from "./columns";
5
6
  import { getDelateTargetByClassName } from "../../helpers/dom";
6
7
  import FilterHorizontal from "./filters.horizontal";
7
- const TablePro = ({ className, header, buttonArea, filterArea, filters, searchInputArea, loading, rowKey, dataSource, pagination, offsetY, columns, operationColumn, bordered = false, selectChangeHandler, selectType, onChange, expandable, columnsTitle, filterTitle, locale, scrollY = '100%', scrollX, i18n, }, ref) => {
8
+ const TablePro = ({ className, header, buttonArea, filterArea, filters, searchInputArea, loading, rowKey, dataSource, pagination, offsetY, columns, operationColumn, bordered = false, selectChangeHandler, selectType, selectKeys, onChange, expandable, columnsTitle, filterTitle, locale, scrollY = '100%', scrollX, i18n, }, ref) => {
8
9
  const tableRef = useRef(null);
9
10
  const disColumnRef = useRef([]);
10
11
  const [y, setY] = useState(scrollY);
11
12
  const [innerColumns, setColumns] = useState(columns);
12
13
  const [selectedRowKeys, setSelectedRowKeys] = useState([]);
14
+ const [selectedRows, setSelectedRows] = useState([]);
13
15
  const flexColumnStyle = {
14
16
  display: 'flex',
15
17
  height: '100%',
@@ -51,7 +53,7 @@ const TablePro = ({ className, header, buttonArea, filterArea, filters, searchIn
51
53
  tempKeys.splice(index, 1);
52
54
  }
53
55
  setSelectedRowKeys(tempKeys);
54
- selectChangeHandler && selectChangeHandler(tempKeys);
56
+ selectChangeHandler && selectChangeHandler(tempKeys, selectedRows);
55
57
  };
56
58
  const onSelectAll = (selected, selectedRows, changeRows) => {
57
59
  let tempKeys = selectedRowKeys.concat([]);
@@ -68,15 +70,20 @@ const TablePro = ({ className, header, buttonArea, filterArea, filters, searchIn
68
70
  }
69
71
  });
70
72
  setSelectedRowKeys(tempKeys);
71
- selectChangeHandler && selectChangeHandler(tempKeys);
73
+ selectChangeHandler && selectChangeHandler(tempKeys, selectedRows);
72
74
  };
73
- const rowSelection = {
75
+ const rowSelection = Object.assign({}, {
74
76
  type: selectType,
75
77
  selectedRowKeys,
78
+ }, selectType === 'checkbox' ? {
76
79
  onSelect: onSelect,
77
80
  onSelectAll: onSelectAll
78
- // onChange: onSelectChange
79
- };
81
+ } : {}, selectType === 'radio' ? {
82
+ onChange: (selectedRowKeys, selectedRows) => {
83
+ setSelectedRowKeys(selectedRowKeys);
84
+ selectChangeHandler && selectChangeHandler(selectedRowKeys, selectedRows);
85
+ }
86
+ } : {});
80
87
  useEffect(() => {
81
88
  if (disColumnRef.current && disColumnRef.current.length > 0 && columns.length > 0) {
82
89
  setColumns(columns.map((c) => {
@@ -108,12 +115,20 @@ const TablePro = ({ className, header, buttonArea, filterArea, filters, searchIn
108
115
  }, 100);
109
116
  }
110
117
  }, [header, loading, innerColumns]);
118
+ useEffect(() => {
119
+ if (selectKeys && selectKeys.length > 0 && !isEqual(selectedRowKeys, selectKeys)) {
120
+ setSelectedRowKeys(selectKeys);
121
+ }
122
+ }, [selectKeys]);
111
123
  useImperativeHandle(ref, () => ({
112
124
  clear: () => {
113
125
  setSelectedRowKeys([]);
114
126
  },
115
127
  setSelectedRowKeys: (keys) => {
116
128
  setSelectedRowKeys(keys);
129
+ },
130
+ getSelectedRowKeys: () => {
131
+ return selectedRowKeys;
117
132
  }
118
133
  }));
119
134
  return (React.createElement("div", { style: flexColumnStyle, className: className || '' },
@@ -121,7 +136,7 @@ const TablePro = ({ className, header, buttonArea, filterArea, filters, searchIn
121
136
  filters ? (React.createElement(FilterHorizontal, Object.assign({ y: y, setY: setY }, filters, { i18n: i18n }))) : null,
122
137
  React.createElement("div", { style: operationWrap },
123
138
  buttonArea ? React.createElement("div", null, buttonArea) : React.createElement("div", null),
124
- React.createElement("div", null,
139
+ React.createElement("div", { style: { display: 'flex' } },
125
140
  searchInputArea ? searchInputArea : null,
126
141
  filterArea ? (React.createElement(Popover, { placement: "leftBottom", title: React.createElement(Typography.Title, { level: 5 }, filterTitleStr), content: React.cloneElement(filterArea, { hide: hideOpenFilter }), trigger: "click", open: openFilter, onOpenChange: (newOpen) => {
127
142
  setOpenFilter(newOpen);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ecoding/components.antd",
3
- "version": "0.4.19",
3
+ "version": "0.4.20",
4
4
  "author": "cxc",
5
5
  "homepage": "",
6
6
  "license": "MIT",
@@ -47,5 +47,5 @@
47
47
  "antd": "5.27.0",
48
48
  "axios": "^1.1.2"
49
49
  },
50
- "gitHead": "bef6ad3a5e418056475ddc6441da1071d38a1516"
50
+ "gitHead": "571168c21c039e8eed8da932957c8b567fa22abb"
51
51
  }
package/LICENSE.md DELETED
File without changes