@arim-aisdc/public-components 2.2.9 → 2.3.0

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 (53) hide show
  1. package/dist/assets/iconfont/table/iconfont.css +29 -9
  2. package/dist/assets/iconfont/table/iconfont.ttf +0 -0
  3. package/dist/components/BaseInfo/BaseInfo.d.ts +1 -1
  4. package/dist/components/TableMax/TableBody/Row.js +21 -13
  5. package/dist/components/TableMax/TableBody/index.less +14 -0
  6. package/dist/components/TableMax/TableHeader/Cell.d.ts +3 -1
  7. package/dist/components/TableMax/TableHeader/Cell.js +19 -16
  8. package/dist/components/TableMax/TableHeader/index.d.ts +2 -1
  9. package/dist/components/TableMax/TableHeader/index.js +11 -20
  10. package/dist/components/TableMax/TableHeader/index.less +7 -0
  11. package/dist/components/TableMax/TableMax.d.ts +1 -2
  12. package/dist/components/TableMax/TableMax.js +11 -7
  13. package/dist/components/TableMax/components/{ColumnFilter/FilterDateRange → ColumnFilterV2/DateRange}/index.d.ts +2 -1
  14. package/dist/components/TableMax/components/ColumnFilterV2/DateRange/index.js +135 -0
  15. package/dist/components/TableMax/components/{ColumnFilter/FilterDateRange → ColumnFilterV2/DateRange}/index.less +5 -5
  16. package/dist/components/TableMax/components/ColumnFilterV2/Filter.d.ts +9 -0
  17. package/dist/components/TableMax/components/{ColumnFilter/index.js → ColumnFilterV2/Filter.js} +173 -226
  18. package/dist/components/TableMax/components/{ColumnFilter → ColumnFilterV2}/MultipleSelect/index.d.ts +3 -1
  19. package/dist/components/TableMax/components/ColumnFilterV2/MultipleSelect/index.js +124 -0
  20. package/dist/components/TableMax/components/ColumnFilterV2/MultipleSelect/index.less +32 -0
  21. package/dist/components/TableMax/components/ColumnFilterV2/NumberRange/index.d.ts +10 -0
  22. package/dist/components/TableMax/components/ColumnFilterV2/NumberRange/index.js +98 -0
  23. package/dist/components/TableMax/components/ColumnFilterV2/NumberRange/index.less +27 -0
  24. package/dist/components/TableMax/components/ColumnFilterV2/SingleSelect/index.d.ts +12 -0
  25. package/dist/components/TableMax/components/ColumnFilterV2/SingleSelect/index.js +107 -0
  26. package/dist/components/TableMax/components/ColumnFilterV2/SingleSelect/index.less +43 -0
  27. package/dist/components/TableMax/components/{ColumnFilter → ColumnFilterV2}/customFilterFns.js +1 -1
  28. package/dist/components/TableMax/components/{ColumnFilter → ColumnFilterV2}/index.d.ts +15 -1
  29. package/dist/components/TableMax/components/ColumnFilterV2/index.js +149 -0
  30. package/dist/components/TableMax/components/ColumnFilterV2/index.less +23 -0
  31. package/dist/components/TableMax/components/ColumnSetting/index.js +4 -13
  32. package/dist/components/TableMax/components/ColumnSort/customSortFns.d.ts +8 -8
  33. package/dist/components/TableMax/components/ColumnSort/customSortFns.js +43 -8
  34. package/dist/components/TableMax/components/ColumnSort/index.js +8 -1
  35. package/dist/components/TableMax/components/ColumnSort/index.less +6 -4
  36. package/dist/components/TableMax/index.d.ts +2 -2
  37. package/dist/components/TableMax/index.js +1 -1
  38. package/dist/components/TableMax/type.d.ts +33 -5
  39. package/dist/components/TableMax/type.js +21 -1
  40. package/dist/components/TableMax/utils.d.ts +13 -2
  41. package/dist/components/TableMax/utils.js +81 -8
  42. package/dist/themes/variables.less +5 -5
  43. package/dist/themes/variablesConfig.js +6 -6
  44. package/dist/utils/request.d.ts +4 -3
  45. package/dist/utils/request.js +4 -4
  46. package/package.json +1 -1
  47. package/dist/components/TableMax/components/ColumnFilter/FilterDateRange/index.js +0 -101
  48. package/dist/components/TableMax/components/ColumnFilter/MultipleSelect/index.js +0 -52
  49. package/dist/components/TableMax/components/ColumnFilter/MultipleSelect/index.less +0 -20
  50. package/dist/components/TableMax/components/ColumnFilter/SingleSelect/index.d.ts +0 -10
  51. package/dist/components/TableMax/components/ColumnFilter/SingleSelect/index.js +0 -27
  52. package/dist/components/TableMax/components/ColumnFilter/SingleSelect/index.less +0 -8
  53. /package/dist/components/TableMax/components/{ColumnFilter → ColumnFilterV2}/customFilterFns.d.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  @font-face {
2
2
  font-family: "iconfont-table"; /* Project id 4453758 */
3
- src: url('./iconfont.ttf?t=1730099737796') format('truetype');
3
+ src: url('iconfont.ttf?t=1740568199599') format('truetype');
4
4
  }
5
5
 
6
6
  .iconfont-table {
@@ -11,12 +11,36 @@
11
11
  -moz-osx-font-smoothing: grayscale;
12
12
  }
13
13
 
14
- .icon-table-a-xinzeng21:before {
15
- content: "\e62e";
14
+ .icon-table-sort:before {
15
+ content: "\e890";
16
16
  }
17
17
 
18
- .icon-table-a-download11:before {
19
- content: "\e62f";
18
+ .icon-table-filter:before {
19
+ content: "\e88e";
20
+ }
21
+
22
+ .icon-table-shengji:before {
23
+ content: "\e64a";
24
+ }
25
+
26
+ .icon-table-calendar:before {
27
+ content: "\e888";
28
+ }
29
+
30
+ .icon-table-edit:before {
31
+ content: "\e887";
32
+ }
33
+
34
+ .icon-table-pin:before {
35
+ content: "\e889";
36
+ }
37
+
38
+ .icon-table-drag:before {
39
+ content: "\e88d";
40
+ }
41
+
42
+ .icon-table-down:before {
43
+ content: "\e88f";
20
44
  }
21
45
 
22
46
  .icon-table-tight:before {
@@ -27,10 +51,6 @@
27
51
  content: "\e87f";
28
52
  }
29
53
 
30
- .icon-table-shenglvehao:before {
31
- content: "\e62d";
32
- }
33
-
34
54
  .icon-table-delete:before {
35
55
  content: "\e87c";
36
56
  }
@@ -17,7 +17,7 @@ export declare const foramtBaseInfoField: (data: any, dataField: BaseInfoFieldTy
17
17
  value: any;
18
18
  field: string;
19
19
  label?: string;
20
- text: string | Element | JSX.Element;
20
+ text: string | JSX.Element | Element;
21
21
  units?: string;
22
22
  width?: string;
23
23
  labelWidth?: string;
@@ -280,16 +280,26 @@ var Row = function Row(_ref) {
280
280
  }
281
281
  };
282
282
 
283
- // 当前行是否高亮
284
- var isHighLight = useMemo(function () {
285
- return !canSelection && String(row.id) === String(rowSelectedId) ||
286
- // 单选选中
287
- canSelection && selectRowWhenClick && row.getIsSelected() ||
288
- // 多选并且点击行时也选中
289
- canSelection && !selectRowWhenClick && String(row.id) === String(rowHighLightId) // 多选并且点击行时不选中,高亮状态单独管理
290
- ;
283
+ // 高亮色
284
+ var highLightClassName = useMemo(function () {
285
+ if (!canSelection && String(row.id) === String(rowSelectedId)) {
286
+ // 单选,选中用高亮色显示
287
+ return 'tbody-tr-highlight';
288
+ } else if (canSelection) {
289
+ // 多选
290
+ if (row.getIsSelected()) {
291
+ // checked选中用选中色
292
+ return 'tbody-tr-selected';
293
+ } else if (String(row.id) === String(rowHighLightId)) {
294
+ // 高亮状态
295
+ return 'tbody-tr-highlight';
296
+ }
297
+ }
298
+ return '';
291
299
  }, [row.id, row.getIsSelected(), rowSelectedId, selectRowWhenClick, rowHighLightId, canSelection]);
292
- console.log('row render');
300
+
301
+ // console.log('row render');
302
+
293
303
  var rowCom = function rowCom() {
294
304
  var _row;
295
305
  return /*#__PURE__*/_jsx("tr", {
@@ -305,7 +315,7 @@ var Row = function Row(_ref) {
305
315
  onClick: rowClickOrDoubleClick,
306
316
  onMouseEnter: rowMouseEnter,
307
317
  onMouseLeave: rowMouseLeave,
308
- className: "tbody-tr ".concat(isHighLight ? 'tbody-tr-selected' : '', " ").concat(dropPreviewLineClassName, " ").concat((rowClassName === null || rowClassName === void 0 ? void 0 : rowClassName(row).map(function (item) {
318
+ className: "tbody-tr ".concat(highLightClassName, " ").concat(dropPreviewLineClassName, " ").concat((rowClassName === null || rowClassName === void 0 ? void 0 : rowClassName(row).map(function (item) {
309
319
  return "".concat(item, "-").concat(theme);
310
320
  }).join(' ')) || ''),
311
321
  children: (_row = row["getVisibleCells"]) === null || _row === void 0 ? void 0 : _row.call(row).map(function (cell) {
@@ -360,9 +370,7 @@ var Row = function Row(_ref) {
360
370
  },
361
371
  children: !!(tableBodyRef !== null && tableBodyRef !== void 0 && (_tableBodyRef$current = tableBodyRef.current) !== null && _tableBodyRef$current !== void 0 && _tableBodyRef$current.clientWidth) && /*#__PURE__*/_jsx("div", {
362
372
  id: "".concat(tableId, "_expand-table"),
363
- className: "subRowWrapper"
364
- // 减去10,避免被父表滚动条覆盖
365
- ,
373
+ className: "subRowWrapper",
366
374
  style: {
367
375
  width: "".concat(tableBodyRef === null || tableBodyRef === void 0 || (_tableBodyRef$current2 = tableBodyRef.current) === null || _tableBodyRef$current2 === void 0 ? void 0 : _tableBodyRef$current2.clientWidth, "px")
368
376
  },
@@ -18,6 +18,13 @@ table {
18
18
  background-color: @globalColor0;
19
19
  border-bottom: 1px solid @tableColor2;
20
20
  }
21
+ .tbody-tr-highlight {
22
+ // display: flex;
23
+ transition: left, top;
24
+ transition-duration: 0.6s;
25
+ background-color: @rowHoverBackgroundColor;
26
+ border-bottom: 1px solid @tableColor2;
27
+ }
21
28
 
22
29
  .tbody-tr-td-editting {
23
30
  // height: auto !important;
@@ -28,6 +35,8 @@ table {
28
35
 
29
36
  .tbody-tr-td,
30
37
  .tbody-tr-td-drag,
38
+ .tbody-tr-highlight > .tbody-tr-td,
39
+ .tbody-tr-highlight > .tbody-tr-td-drag,
31
40
  .tbody-tr-selected > .tbody-tr-td,
32
41
  .tbody-tr-selected > .tbody-tr-td-drag {
33
42
  background-color: @globalColor0;
@@ -45,6 +54,11 @@ table {
45
54
  background: @selectTableRow;
46
55
  }
47
56
 
57
+ .tbody-tr-highlight > .tbody-tr-td,
58
+ .tbody-tr-highlight > .tbody-tr-td-drag {
59
+ background: @rowHoverBackgroundColor;
60
+ }
61
+
48
62
  .tbody-tr:not(.tbody-tr-selected) {
49
63
  &:hover {
50
64
  .tbody-tr-td {
@@ -12,6 +12,8 @@ type ICellType = {
12
12
  columnResizeMode: ColumnResizeMode;
13
13
  disableColumnDrag?: boolean;
14
14
  headerRowNum: number;
15
+ canFilter?: boolean;
16
+ manualFiltering: boolean;
15
17
  };
16
- declare const Cell: ({ tableContentRef, header, table, hasGroup, canSorting, getHeaderCellProps, disableColumnDrag, headerRowNum, }: ICellType) => import("react/jsx-runtime").JSX.Element;
18
+ declare const Cell: ({ tableContentRef, header, table, hasGroup, canSorting, getHeaderCellProps, disableColumnDrag, headerRowNum, canFilter, manualFiltering, }: ICellType) => import("react/jsx-runtime").JSX.Element;
17
19
  export default Cell;
@@ -22,6 +22,7 @@ import { useDrag, useDrop } from 'react-dnd';
22
22
  import { createPortal } from 'react-dom';
23
23
  import { useConfig } from "../../ConfigProvider";
24
24
  import { ColumnType } from "../TableMax";
25
+ import { ColumnFilter } from "../components/ColumnFilterV2";
25
26
  import Sort from "../components/ColumnSort";
26
27
  import "./index.less";
27
28
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -39,7 +40,9 @@ var Cell = function Cell(_ref) {
39
40
  canSorting = _ref.canSorting,
40
41
  getHeaderCellProps = _ref.getHeaderCellProps,
41
42
  disableColumnDrag = _ref.disableColumnDrag,
42
- headerRowNum = _ref.headerRowNum;
43
+ headerRowNum = _ref.headerRowNum,
44
+ canFilter = _ref.canFilter,
45
+ manualFiltering = _ref.manualFiltering;
43
46
  var _useConfig = useConfig(),
44
47
  root = _useConfig.root;
45
48
  var cannotDragColumn = [ColumnType.Darg, ColumnType.Selection, ColumnType.Expander, ColumnType.PlaceHolder];
@@ -86,7 +89,10 @@ var Cell = function Cell(_ref) {
86
89
  initPosition = _useState2[0],
87
90
  setInitPosition = _useState2[1];
88
91
  return /*#__PURE__*/_jsxs("div", {
89
- ref: dropRef,
92
+ ref: function ref(node) {
93
+ dropRef(node);
94
+ dragRef(disableColumnDrag || cannotDragColumn.includes(header.column.id) || header.column.getIsPinned() ? null : node);
95
+ },
90
96
  children: [/*#__PURE__*/_jsxs("div", {
91
97
  className: "cell-wapper ".concat(columns ? 'wapper-top-parent' : '', " table-max-header-cell-wrapper"),
92
98
  ref: previewRef,
@@ -102,13 +108,13 @@ var Cell = function Cell(_ref) {
102
108
  y: y
103
109
  });
104
110
  },
105
- children: [/*#__PURE__*/_jsxs("div", {
111
+ children: [/*#__PURE__*/_jsx("div", {
106
112
  className: "cell-left",
107
113
  onClick: header.column.getToggleSortingHandler(),
108
114
  style: {
109
115
  textAlign: columns ? 'center' : 'left'
110
116
  },
111
- children: [!cannotDragColumn.includes(header.column.id) ? /*#__PURE__*/_jsx(Tooltip, {
117
+ children: !cannotDragColumn.includes(header.column.id) ? /*#__PURE__*/_jsx(Tooltip, {
112
118
  placement: "topLeft"
113
119
  // @ts-ignore
114
120
  ,
@@ -125,17 +131,16 @@ var Cell = function Cell(_ref) {
125
131
  })
126
132
  }) :
127
133
  // @ts-ignore
128
- flexRender(columnDef.header, header.getContext()), canSorting ? /*#__PURE__*/_jsx(Sort, {
134
+ flexRender(columnDef.header, header.getContext())
135
+ }), !cannotDragColumn.includes(header.column.id) ? /*#__PURE__*/_jsxs("div", {
136
+ className: "cell-right",
137
+ children: [canSorting && header.column.getCanSort() ? /*#__PURE__*/_jsx(Sort, {
129
138
  sort: header.column.getIsSorted()
139
+ }) : null, canFilter && columnDef.enableColumnFilter !== false ? /*#__PURE__*/_jsx(ColumnFilter, {
140
+ column: header.column,
141
+ manualFiltering: manualFiltering
130
142
  }) : null]
131
- }), /*#__PURE__*/_jsx("div", {
132
- className: "cell-right",
133
- onClick: header.column.getToggleSortingHandler(),
134
- children: disableColumnDrag || cannotDragColumn.includes(header.column.id) || header.column.getIsPinned() ? null : /*#__PURE__*/_jsx("i", {
135
- ref: dragRef,
136
- className: "icon iconfont-other icon-other-drag drag-handler"
137
- })
138
- }), /*#__PURE__*/_jsx("div", {
143
+ }) : null, /*#__PURE__*/_jsx("div", {
139
144
  className: "cell-resize-handler ".concat(header.column.getIsResizing() ? 'column-is-resizing' : ''),
140
145
  onMouseDown: header.getResizeHandler(),
141
146
  onTouchStart: header.getResizeHandler()
@@ -148,9 +153,7 @@ var Cell = function Cell(_ref) {
148
153
  height: (_tableContentRef$curr = tableContentRef.current) === null || _tableContentRef$curr === void 0 ? void 0 : _tableContentRef$curr.clientHeight,
149
154
  transform: "translateX(".concat(table.getState().columnSizingInfo.deltaOffset || 0, "px)")
150
155
  }
151
- }),
152
- // document.body,
153
- root ? document.querySelector(root) : document.body) : null]
156
+ }), root ? document.querySelector(root) : document.body) : null]
154
157
  });
155
158
  };
156
159
  export default Cell;
@@ -18,6 +18,7 @@ type TableHeaderProps = {
18
18
  };
19
19
  disableColumnDrag?: boolean;
20
20
  headerRowNum: number;
21
+ manualFiltering: boolean;
21
22
  };
22
- declare const TableHeader: ({ tableContentRef, table, canFilter, enableFilters, canSorting, hasGroup, getHeaderCellProps, columnResizeMode, shadowColumnInfo, disableColumnDrag, rowHeight, headerRowNum, }: TableHeaderProps) => import("react/jsx-runtime").JSX.Element;
23
+ declare const TableHeader: ({ tableContentRef, table, canFilter, enableFilters, canSorting, hasGroup, getHeaderCellProps, columnResizeMode, shadowColumnInfo, disableColumnDrag, rowHeight, headerRowNum, manualFiltering, }: TableHeaderProps) => import("react/jsx-runtime").JSX.Element;
23
24
  export default TableHeader;
@@ -7,14 +7,15 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
7
7
  // import { Column, flexRender } from '@tanstack/react-table';
8
8
  // import { useDrag, useDrop } from 'ahooks';
9
9
 
10
- import { Filter } from "../components/ColumnFilter";
10
+ // import { Filter } from '../components/ColumnFilter';
11
+
11
12
  import Cell from "./Cell";
12
13
  import "./index.less";
13
14
  import { getPinningStyle } from "./utils";
14
15
  import { jsx as _jsx } from "react/jsx-runtime";
15
16
  import { jsxs as _jsxs } from "react/jsx-runtime";
16
17
  var TableHeader = function TableHeader(_ref) {
17
- var _headerGroups, _headerGroups2;
18
+ var _headerGroups;
18
19
  var tableContentRef = _ref.tableContentRef,
19
20
  table = _ref.table,
20
21
  canFilter = _ref.canFilter,
@@ -26,7 +27,8 @@ var TableHeader = function TableHeader(_ref) {
26
27
  shadowColumnInfo = _ref.shadowColumnInfo,
27
28
  disableColumnDrag = _ref.disableColumnDrag,
28
29
  rowHeight = _ref.rowHeight,
29
- headerRowNum = _ref.headerRowNum;
30
+ headerRowNum = _ref.headerRowNum,
31
+ manualFiltering = _ref.manualFiltering;
30
32
  var headerGroups = table.getHeaderGroups();
31
33
  var headers = (headerGroups === null || headerGroups === void 0 || (_headerGroups = headerGroups[headerGroups.length - 1]) === null || _headerGroups === void 0 ? void 0 : _headerGroups.headers) || [];
32
34
  var leftLastColumnId = shadowColumnInfo.leftLastColumnId,
@@ -40,8 +42,8 @@ var TableHeader = function TableHeader(_ref) {
40
42
  width: size
41
43
  }, header.id);
42
44
  })
43
- }), /*#__PURE__*/_jsxs("thead", {
44
- children: [headerGroups === null || headerGroups === void 0 ? void 0 : headerGroups.map(function (headerGroup) {
45
+ }), /*#__PURE__*/_jsx("thead", {
46
+ children: headerGroups === null || headerGroups === void 0 ? void 0 : headerGroups.map(function (headerGroup) {
45
47
  return /*#__PURE__*/_jsx("tr", {
46
48
  className: "table-thead-tr cus-table-thead-tr",
47
49
  style: {
@@ -62,25 +64,14 @@ var TableHeader = function TableHeader(_ref) {
62
64
  getHeaderCellProps: getHeaderCellProps,
63
65
  columnResizeMode: columnResizeMode,
64
66
  disableColumnDrag: disableColumnDrag,
65
- headerRowNum: headerRowNum
67
+ headerRowNum: headerRowNum,
68
+ canFilter: canFilter,
69
+ manualFiltering: manualFiltering
66
70
  }, header.id)
67
71
  }, header.id);
68
72
  })
69
73
  }, headerGroup.id);
70
- }), canFilter && enableFilters ? /*#__PURE__*/_jsx("tr", {
71
- className: "table-filter-tr",
72
- children: headerGroups === null || headerGroups === void 0 || (_headerGroups2 = headerGroups[headerGroups.length - 1]) === null || _headerGroups2 === void 0 || (_headerGroups2 = _headerGroups2.headers) === null || _headerGroups2 === void 0 ? void 0 : _headerGroups2.map(function (header) {
73
- return /*#__PURE__*/_jsx("th", {
74
- style: _objectSpread({}, getPinningStyle(header, table)),
75
- className: "table-filter-th ".concat(header.id === leftLastColumnId ? 'thead-tr-th-cell-fix-left-last' : '', " ").concat(header.id === rightFirstColumnId ? 'thead-tr-th-cell-fix-right-first' : ''),
76
- children: header.column.getCanFilter() ? /*#__PURE__*/_jsx("div", {
77
- children: /*#__PURE__*/_jsx(Filter, {
78
- column: header.column
79
- })
80
- }) : null
81
- }, header.id + '1');
82
- })
83
- }, "table-filter-tr") : null]
74
+ })
84
75
  })]
85
76
  });
86
77
  };
@@ -41,6 +41,7 @@ table {
41
41
  white-space: nowrap;
42
42
  display: flex;
43
43
  align-items: center;
44
+ justify-content: space-between;
44
45
 
45
46
  .cell-left-header {
46
47
  display: -webkit-box;
@@ -56,6 +57,12 @@ table {
56
57
  }
57
58
  }
58
59
 
60
+ .cell-right {
61
+ display: flex;
62
+ gap: 4px;
63
+ align-items: center;
64
+ }
65
+
59
66
  .drag-handler {
60
67
  color: @tableColor3;
61
68
  display: none;
@@ -1,7 +1,7 @@
1
1
  import { RowData } from '@tanstack/react-table';
2
2
  import React from 'react';
3
3
  import './tableMax.less';
4
- import { type TableContextType, type TableMaxProps } from './type';
4
+ import { type TableMaxProps } from './type';
5
5
  declare module '@tanstack/react-table' {
6
6
  interface TableMeta<TData extends RowData> {
7
7
  updateData: (rowIndex: number, columnId: string, value: unknown) => void;
@@ -14,7 +14,6 @@ export declare enum ColumnType {
14
14
  Expander = "expander"
15
15
  }
16
16
  export type ColumnSizing = Record<string, number>;
17
- export declare const TableContext: React.Context<TableContextType>;
18
17
  export declare const CACHE_MAX_AGE: number;
19
18
  declare const _default: React.ForwardRefExoticComponent<TableMaxProps & React.RefAttributes<unknown>>;
20
19
  export default _default;
@@ -24,19 +24,19 @@ import { useUpdateEffect } from 'ahooks';
24
24
  import { Button, Checkbox, Form, Pagination, Upload } from 'antd';
25
25
  import dayjs from 'dayjs';
26
26
  import { cloneDeep, debounce } from 'lodash';
27
- import React, { createContext, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
27
+ import React, { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
28
28
  import { useConfig } from "../ConfigProvider";
29
29
  import TableBody from "./TableBody";
30
30
  import TableHeader from "./TableHeader";
31
31
  import { InputType } from "./components/ColumnEdit";
32
- import { setDefaultFilterFn } from "./components/ColumnFilter";
33
- import customFilterFns from "./components/ColumnFilter/customFilterFns";
32
+ import { setDefaultFilterFn } from "./components/ColumnFilterV2";
33
+ import customFilterFns from "./components/ColumnFilterV2/customFilterFns";
34
34
  import ColumnSetting from "./components/ColumnSetting";
35
35
  import customSortFns, { setDefaultSortFn } from "./components/ColumnSort/customSortFns";
36
36
  import PaginationV2 from "./components/PaginationV2";
37
37
  import { useColumnWidth } from "./hooks/useColumnWidth";
38
38
  import "./tableMax.less";
39
- import { downloadExcel, getFormatFilters, getFormatSorting, operationColumnNoTooltips } from "./utils";
39
+ import { downloadExcel, getFormatFilters, getFormatFiltersV2, getFormatSorting, operationColumnNoTooltips } from "./utils";
40
40
  import { jsx as _jsx } from "react/jsx-runtime";
41
41
  import { jsxs as _jsxs } from "react/jsx-runtime";
42
42
  export var ColumnType = /*#__PURE__*/function (ColumnType) {
@@ -46,7 +46,8 @@ export var ColumnType = /*#__PURE__*/function (ColumnType) {
46
46
  ColumnType["Expander"] = "expander";
47
47
  return ColumnType;
48
48
  }({});
49
- export var TableContext = /*#__PURE__*/createContext({});
49
+ // export const TableContext = createContext<TableContextType>({} as TableContextType);
50
+
50
51
  export var CACHE_MAX_AGE = 1 * 60 * 60 * 1000;
51
52
  var getCurrentRouterName = function getCurrentRouterName() {
52
53
  return window.location.pathname.slice(1);
@@ -646,6 +647,7 @@ var TableMax = function TableMax(_ref) {
646
647
 
647
648
  // 筛选回调
648
649
  useEffect(function () {
650
+ console.log('columnFilters :>> ', tableId, columnFilters);
649
651
  var filteredRowModel = table.getRowModel();
650
652
  var filteredData = filteredRowModel.rows.map(function (item) {
651
653
  return item.original;
@@ -660,7 +662,8 @@ var TableMax = function TableMax(_ref) {
660
662
  filteredData: filteredData,
661
663
  filteredRowModel: filteredRowModel,
662
664
  filters: columnFilters,
663
- formatFilters: getFormatFilters(columns, columnFilters)
665
+ formatFilters: getFormatFilters(columns, columnFilters),
666
+ formatFiltersV2: getFormatFiltersV2(columns, columnFilters) // 动态化查询格式:https://arim-jyzx.coding.net/p/infra/wiki/3252
664
667
  });
665
668
  }
666
669
  }, [JSON.stringify(columnFilters), manualFiltering, tableId]);
@@ -980,7 +983,8 @@ var TableMax = function TableMax(_ref) {
980
983
  columnResizeMode: columnResizeMode,
981
984
  shadowColumnInfo: shadowColumnInfo,
982
985
  disableColumnDrag: disableColumnDrag,
983
- compactMode: compactMode
986
+ compactMode: compactMode,
987
+ manualFiltering: manualFiltering
984
988
  };
985
989
  var tableBodyProps = {
986
990
  tableContentRef: tableContentRef,
@@ -10,7 +10,8 @@ interface IProps {
10
10
  endDate: number | null;
11
11
  } | undefined;
12
12
  columnDef: TableMaxColumnType;
13
+ manualFiltering: boolean;
13
14
  }
14
- export declare const FilterDateRange: ({ onChange, value, columnDef }: IProps) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const DateRange: ({ onChange, value, columnDef, manualFiltering }: IProps) => import("react/jsx-runtime").JSX.Element;
15
16
  export declare const timeRangeFilter: (row: any, columnId: any, filterValue: any) => boolean;
16
17
  export {};
@@ -0,0 +1,135 @@
1
+ import { DatePicker } from 'antd';
2
+ import dayjs from 'dayjs';
3
+ import { defaultDateFormat } from "../index";
4
+ import "./index.less";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ var defaultRangePresets = [{
7
+ label: '最近7天',
8
+ value: [dayjs().add(-7, 'd'), dayjs()]
9
+ }, {
10
+ label: '最近一个月',
11
+ value: [dayjs().add(-1, 'M'), dayjs()]
12
+ }, {
13
+ label: '最近三个月',
14
+ value: [dayjs().add(-3, 'M'), dayjs()]
15
+ }, {
16
+ label: '最近半年',
17
+ value: [dayjs().add(-6, 'M'), dayjs()]
18
+ }, {
19
+ label: '最近一年',
20
+ value: [dayjs().add(-1, 'y'), dayjs()]
21
+ }];
22
+ var defaultTimeRange = [dayjs('00:00:00', 'HH:mm:ss'), dayjs('23:59:59', 'HH:mm:ss')];
23
+ export var DateRange = function DateRange(_ref) {
24
+ var onChange = _ref.onChange,
25
+ value = _ref.value,
26
+ columnDef = _ref.columnDef,
27
+ manualFiltering = _ref.manualFiltering;
28
+ var _columnDef$filterComP = columnDef.filterComProps,
29
+ _columnDef$filterComP2 = _columnDef$filterComP.format,
30
+ format = _columnDef$filterComP2 === void 0 ? defaultDateFormat : _columnDef$filterComP2,
31
+ _columnDef$filterComP3 = _columnDef$filterComP.rangePresets,
32
+ rangePresets = _columnDef$filterComP3 === void 0 ? defaultRangePresets : _columnDef$filterComP3,
33
+ showTime = _columnDef$filterComP.showTime,
34
+ _columnDef$filterComP4 = _columnDef$filterComP.picker,
35
+ picker = _columnDef$filterComP4 === void 0 ? 'date' : _columnDef$filterComP4;
36
+
37
+ // 后端筛选-开始时间
38
+ var calManualStartTime = function calManualStartTime(startTime, dateStrings) {
39
+ if (picker === 'date') {
40
+ if (format.endsWith('YY')) {
41
+ return startTime.startOf('year').format('YYYY-MM-DD HH:mm:ss');
42
+ } else if (format.endsWith('MM')) {
43
+ return startTime.startOf('month').format('YYYY-MM-DD HH:mm:ss');
44
+ } else if (format.endsWith('DD')) {
45
+ return startTime.startOf('day').format('YYYY-MM-DD HH:mm:ss');
46
+ } else if (format.endsWith('HH')) {
47
+ return startTime.startOf('hour').format('YYYY-MM-DD HH:mm:ss');
48
+ } else if (format.endsWith('mm')) {
49
+ return startTime.startOf('minute').format('YYYY-MM-DD HH:mm:ss');
50
+ } else if (format.endsWith('ss')) {
51
+ return startTime.startOf('second').format('YYYY-MM-DD HH:mm:ss');
52
+ }
53
+ } else {
54
+ return dateStrings[0];
55
+ }
56
+ };
57
+
58
+ // 后端筛选-结束时间
59
+ var calManualEndTime = function calManualEndTime(endTime, dateStrings) {
60
+ if (picker === 'date') {
61
+ if (format.endsWith('YY')) {
62
+ return endTime.endOf('year').format('YYYY-MM-DD HH:mm:ss');
63
+ } else if (format.endsWith('MM')) {
64
+ return endTime.endOf('month').format('YYYY-MM-DD HH:mm:ss');
65
+ } else if (format.endsWith('DD')) {
66
+ return endTime.endOf('day').format('YYYY-MM-DD HH:mm:ss');
67
+ } else if (format.endsWith('HH')) {
68
+ return endTime.endOf('hour').format('YYYY-MM-DD HH:mm:ss');
69
+ } else if (format.endsWith('mm')) {
70
+ return endTime.endOf('minute').format('YYYY-MM-DD HH:mm:ss');
71
+ } else if (format.endsWith('ss')) {
72
+ return endTime.endOf('second').format('YYYY-MM-DD HH:mm:ss');
73
+ }
74
+ } else {
75
+ return dateStrings[1];
76
+ }
77
+ };
78
+
79
+ // 前端筛选-计算结束时间,精确度时间后的时间取结束时间,比如精确到小时,那么分钟取59分,秒取59秒,毫秒取999毫秒
80
+ var calEndTime = function calEndTime(endTime) {
81
+ if (format.endsWith('YY')) {
82
+ return endTime.endOf('year');
83
+ } else if (format.endsWith('MM')) {
84
+ return endTime.endOf('month');
85
+ } else if (format.endsWith('DD')) {
86
+ return endTime.endOf('day');
87
+ } else if (format.endsWith('HH')) {
88
+ return endTime.endOf('hour');
89
+ } else if (format.endsWith('mm')) {
90
+ return endTime.endOf('minute');
91
+ } else if (format.endsWith('ss')) {
92
+ return endTime.endOf('second');
93
+ }
94
+ };
95
+ var onChangeDateRange = function onChangeDateRange(dates, dateStrings) {
96
+ console.log('dates :>> ', dates, dateStrings);
97
+ var newRange = {
98
+ startDate: dates && dates[0] ? manualFiltering ? calManualStartTime(dates[0], dateStrings) // 后端筛选:向外传递字符串格式的时间
99
+ : dayjs(dateStrings[0]).valueOf() // 前端筛选需要时间戳格式:去掉精确度后面的时间:把字符串转为dayjs、再转为时间戳,
100
+ : null,
101
+ endDate: dates && dates[1] ? manualFiltering ? calManualEndTime(dates[1], dateStrings) // 后端筛选:向外传递字符串格式的时间
102
+ : calEndTime(dates[1]).valueOf() // 前端筛选需要时间戳格式
103
+ : null
104
+ };
105
+ if (newRange.startDate === null && newRange.endDate === null) {
106
+ onChange(undefined);
107
+ } else {
108
+ onChange(newRange);
109
+ }
110
+ };
111
+ return /*#__PURE__*/_jsx("div", {
112
+ className: "date-range-filter-wrapper",
113
+ children: /*#__PURE__*/_jsx(DatePicker.RangePicker, {
114
+ presets: rangePresets && rangePresets.length > 0 ? rangePresets : undefined,
115
+ defaultValue: [value !== null && value !== void 0 && value.startDate ? dayjs(value === null || value === void 0 ? void 0 : value.startDate) : undefined, value !== null && value !== void 0 && value.endDate ? dayjs(value === null || value === void 0 ? void 0 : value.endDate) : undefined],
116
+ showTime: showTime === true ? {
117
+ defaultValue: defaultTimeRange
118
+ } : showTime,
119
+ format: format,
120
+ placeholder: ['开始时间', '结束时间'],
121
+ picker: picker,
122
+ onChange: onChangeDateRange,
123
+ allowEmpty: [true, true],
124
+ style: {
125
+ width: 330
126
+ }
127
+ })
128
+ });
129
+ };
130
+
131
+ // 前端筛选时的过滤函数
132
+ export var timeRangeFilter = function timeRangeFilter(row, columnId, filterValue) {
133
+ var timeMs = new Date(row.getValue(columnId)).getTime() || 0;
134
+ return !(filterValue.startDate && timeMs < filterValue.startDate || filterValue.endDate && timeMs > filterValue.endDate);
135
+ };
@@ -1,4 +1,5 @@
1
- .date-range-filter-wapper {
1
+ .date-range-filter-wrapper {
2
+ padding: 8px 12px;
2
3
  .split-wapper {
3
4
  margin: 5px 0px 0px;
4
5
  height: 2px;
@@ -17,8 +18,7 @@
17
18
  margin: 5px 0px 0px;
18
19
  }
19
20
 
20
- >div {
21
- width: 100%
21
+ > div {
22
+ width: 100%;
22
23
  }
23
-
24
- }
24
+ }
@@ -0,0 +1,9 @@
1
+ import { Column } from '@tanstack/react-table';
2
+ import React from 'react';
3
+ type IProps = {
4
+ column: Column<any, unknown>;
5
+ onCloseFilterPanel: () => void;
6
+ manualFiltering: boolean;
7
+ };
8
+ declare const Filter: React.FC<IProps>;
9
+ export default Filter;