@hzab/list-render 1.10.17 → 1.10.19

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/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ # @hzab/list-render@1.10.19
2
+
3
+ fix: 修复 PaginationRender 的 pageSizeOptions 取值
4
+ feat: 分页支持全部选项
5
+
6
+ # @hzab/list-render@1.10.18
7
+
8
+ fix: isCancel 兼容 data-model 新老版本
9
+
1
10
  # @hzab/list-render@1.10.17
2
11
 
3
12
  fix: createMap updateMap 支持异步
package/README.md CHANGED
@@ -255,9 +255,11 @@ const Slots = {
255
255
 
256
256
  - 默认参数参考 antd pagination 组件
257
257
 
258
- | 属性名称 | 属性类型 | 必须 | 默认值 | 描述 |
259
- | --------------- | -------- | ---- | ----------------- | ------------------ |
260
- | pageSizeOptions | Array | 否 | [10, 20, 50, 100] | 可选 pageSize 数组 |
258
+ | 属性名称 | 属性类型 | 必须 | 默认值 | 描述 |
259
+ | --------------- | -------- | ---- | ----------------- | ------------------------------------------- |
260
+ | pageSizeOptions | Array | 否 | [10, 20, 50, 100] | 可选 pageSize 数组 |
261
+ | isAllSelect | boolean | 否 | false | 是否使用全部 |
262
+ | isAllSelectKey | string | 否 | "isAllSelect" | 选中全部时告知后端的字段名称,实际值为 true |
261
263
 
262
264
  #### getFieldListOpt
263
265
 
@@ -566,7 +568,6 @@ async function test() {
566
568
  ## 命令
567
569
 
568
570
  - Mac 执行该命令,设置 pre-commit 为可执行文件
569
-
570
571
  - npm run mac-chmod
571
572
  - chmod +x .husky && chmod +x .husky/pre-commit
572
573
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hzab/list-render",
3
- "version": "1.10.17",
3
+ "version": "1.10.19",
4
4
  "description": "",
5
5
  "main": "src",
6
6
  "scripts": {
@@ -5,7 +5,7 @@ model 不要定义在组件外部,避免出现 query 异常的情况。
5
5
  import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from "react";
6
6
  import { Button, message } from "antd";
7
7
  import _, { cloneDeep } from "lodash";
8
- import axios, { getCancelTokenSource } from "@hzab/data-model/src/axios";
8
+ import axiosI, { isCancel, getCancelTokenSource } from "@hzab/data-model/src/axios";
9
9
 
10
10
  import QueryRender from "./query-render";
11
11
  import Pagination from "./pagination-render";
@@ -61,6 +61,8 @@ const ListRender = forwardRef(function (props, parentRef) {
61
61
  * */
62
62
  appendUrlQueryKey = URL_PARAM_NAME,
63
63
  } = props;
64
+ const { isAllSelect = false, isAllSelectKey = "isAllSelect" } = props.paginationConf || {};
65
+
64
66
  const pageSizeOptions = props.paginationConf?.pageSizeOptions || pageSizeOptionMap[props.layout] || [10, 20, 50, 100];
65
67
  // const [pageSizeOptions, setPageSizeOptions] = useState(
66
68
  // props.paginationConf?.pageSizeOptions || pageSizeOptionMap[props.layout] || [10, 20, 50, 100],
@@ -179,9 +181,16 @@ const ListRender = forwardRef(function (props, parentRef) {
179
181
  // 重新获取 source
180
182
  getListSourceRef.current = getCancelTokenSource();
181
183
 
184
+ //处理分页特殊情况 - 全部
185
+ const getListSource = cloneDeep(mergedQueries);
186
+ if (isAllSelect && getListSource.pageSize === Infinity) {
187
+ getListSource[isAllSelectKey] = true;
188
+ getListSource.pageSize = undefined;
189
+ }
190
+
182
191
  return model
183
192
  ?.getList(
184
- cloneDeep(mergedQueries),
193
+ getListSource,
185
194
  {},
186
195
  {
187
196
  cancelToken: getListSourceRef.current?.token,
@@ -195,7 +204,9 @@ const ListRender = forwardRef(function (props, parentRef) {
195
204
  setListLoading(false);
196
205
  })
197
206
  .catch((err) => {
198
- if (axios.isCancel(err)) {
207
+ // 兼容新老版本 data-model isCancel 取法
208
+ const _isCancel = isCancel || axiosI.isCancel;
209
+ if (typeof _isCancel === "function" && _isCancel(err)) {
199
210
  console.info(`请求已取消:`, "", err.message);
200
211
  return Promise.reject(err);
201
212
  }
@@ -1,51 +1,53 @@
1
- import { useEffect, useState } from "react";
2
- import { Pagination } from "antd";
3
-
4
- import "./index.less";
5
-
6
- function PaginationRender(props) {
7
- const [pageSize, setPageSize] = useState(props.query?.pageSize || pageSizeOptions[0]);
8
- const [pageNum, setPageNumber] = useState(props.query?.pageNum || 1);
9
-
10
- useEffect(() => {
11
- const { query } = props;
12
- if (!query) {
13
- return;
14
- }
15
- if (query.pageSize && query.pageSize !== pageSize) {
16
- setPageSize(query.pageSize);
17
- }
18
- if (query.pageNum && query.pageNum !== pageNum) {
19
- setPageNumber(query.pageNum);
20
- }
21
- }, [props.query?.pageNum, props.query?.pageSize]);
22
-
23
- function onChange(page, size) {
24
- let _size = size;
25
- let _page = page;
26
- if (pageSize !== size) {
27
- _page = 1;
28
- }
29
- setPageSize(_size);
30
- setPageNumber(_page);
31
- props.onChange && props.onChange(_page, _size);
32
- }
33
-
34
- return (
35
- <div className="pagination-render-wrap">
36
- <Pagination
37
- {...(props.config || {})}
38
- className="pagination-render"
39
- current={pageNum}
40
- pageSize={pageSize}
41
- onChange={onChange}
42
- pageSizeOptions={props.pageSizeOptions}
43
- total={props.total}
44
- showTotal={(total) => `总条数 ${total} 条`}
45
- showSizeChanger
46
- />
47
- </div>
48
- );
49
- }
50
-
51
- export default PaginationRender;
1
+ import { useEffect, useState } from "react";
2
+ import { Pagination } from "antd";
3
+
4
+ import "./index.less";
5
+
6
+ function PaginationRender(props) {
7
+ const { config } = props;
8
+ const { isAllSelect = false } = config || {};
9
+ const [pageSize, setPageSize] = useState(props.query?.pageSize || props.pageSizeOptions[0]);
10
+ const [pageNum, setPageNumber] = useState(props.query?.pageNum || 1);
11
+
12
+ useEffect(() => {
13
+ const { query } = props;
14
+ if (!query) {
15
+ return;
16
+ }
17
+ if (query.pageSize && query.pageSize !== pageSize) {
18
+ setPageSize(query.pageSize);
19
+ }
20
+ if (query.pageNum && query.pageNum !== pageNum) {
21
+ setPageNumber(query.pageNum);
22
+ }
23
+ }, [props.query?.pageNum, props.query?.pageSize]);
24
+
25
+ function onChange(page, size) {
26
+ let _size = size;
27
+ let _page = page;
28
+ if (pageSize !== size) {
29
+ _page = 1;
30
+ }
31
+ setPageSize(_size);
32
+ setPageNumber(_page);
33
+ props.onChange && props.onChange(_page, _size);
34
+ }
35
+
36
+ return (
37
+ <div className="pagination-render-wrap">
38
+ <Pagination
39
+ {...(props.config || {})}
40
+ className={`pagination-render ${isAllSelect ? "pagination-infinity" : null} ${pageSize == Infinity ? "pagination-infinity-checked" : ""}`}
41
+ current={pageNum}
42
+ pageSize={pageSize}
43
+ onChange={onChange}
44
+ pageSizeOptions={isAllSelect ? [...props.pageSizeOptions, Infinity] : props.pageSizeOptions}
45
+ total={props.total}
46
+ showTotal={(total) => `总条数 ${total} 条`}
47
+ showSizeChanger
48
+ />
49
+ </div>
50
+ );
51
+ }
52
+
53
+ export default PaginationRender;