zmdms-webui 0.0.76 → 0.0.78

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 (81) hide show
  1. package/dist/es/_virtual/Draggable.js +3 -0
  2. package/dist/es/_virtual/DraggableCore.js +3 -0
  3. package/dist/es/_virtual/Resizable.js +3 -0
  4. package/dist/es/_virtual/ResizableBox.js +3 -0
  5. package/dist/es/_virtual/_commonjsHelpers.js +29 -1
  6. package/dist/es/_virtual/cjs.js +3 -0
  7. package/dist/es/_virtual/clsx.m.js +6 -0
  8. package/dist/es/_virtual/domFns.js +3 -0
  9. package/dist/es/_virtual/getPrefix.js +3 -0
  10. package/dist/es/_virtual/index3.js +3 -0
  11. package/dist/es/_virtual/index4.js +3 -0
  12. package/dist/es/_virtual/index5.js +3 -0
  13. package/dist/es/_virtual/log.js +3 -0
  14. package/dist/es/_virtual/positionFns.js +3 -0
  15. package/dist/es/_virtual/propTypes.js +3 -0
  16. package/dist/es/_virtual/react-is.development.js +3 -0
  17. package/dist/es/_virtual/react-is.production.min.js +3 -0
  18. package/dist/es/_virtual/shims.js +3 -0
  19. package/dist/es/_virtual/utils.js +3 -0
  20. package/dist/es/button/button.js +14 -9
  21. package/dist/es/button/interface.d.ts +2 -0
  22. package/dist/es/dynamicsetting/dynamicDrawer.js +88 -5
  23. package/dist/es/dynamicsetting/dynamicSetting.js +7 -2
  24. package/dist/es/dynamicsetting/interface.d.ts +4 -0
  25. package/dist/es/dynamicsetting/moreConfig.js +36 -0
  26. package/dist/es/dynamicsetting/useDynamic.js +65 -25
  27. package/dist/es/form/form.d.ts +1 -1
  28. package/dist/es/form/form.js +18 -6
  29. package/dist/es/form/hooks.js +37 -5
  30. package/dist/es/form/interface.d.ts +7 -0
  31. package/dist/es/form/toggle.js +16 -0
  32. package/dist/es/node_modules/@ant-design/icons/es/icons/MenuOutlined.js +15 -0
  33. package/dist/es/node_modules/@ant-design/icons/es/utils.js +3 -1
  34. package/dist/es/node_modules/@ant-design/icons-svg/es/asn/MenuOutlined.js +5 -0
  35. package/dist/es/node_modules/@ant-design/icons-svg/es/asn/PlusOutlined.js +1 -1
  36. package/dist/es/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js +19 -19
  37. package/dist/es/node_modules/@babel/runtime/helpers/esm/objectSpread2.js +15 -15
  38. package/dist/es/node_modules/@babel/runtime/helpers/esm/typeof.js +6 -6
  39. package/dist/es/node_modules/antd-img-crop/dist/antd-img-crop.esm.js +7 -7
  40. package/dist/es/node_modules/clsx/dist/clsx.m.js +3 -0
  41. package/dist/es/node_modules/compare-versions/lib/esm/compareVersions.js +31 -0
  42. package/dist/es/node_modules/compare-versions/lib/esm/{index.js → utils.js} +1 -28
  43. package/dist/es/node_modules/object-assign/index.js +99 -0
  44. package/dist/es/node_modules/prop-types/checkPropTypes.js +115 -0
  45. package/dist/es/node_modules/prop-types/factoryWithThrowingShims.js +74 -0
  46. package/dist/es/node_modules/prop-types/factoryWithTypeCheckers.js +625 -0
  47. package/dist/es/node_modules/prop-types/index.js +28 -0
  48. package/dist/es/node_modules/prop-types/lib/ReactPropTypesSecret.js +21 -0
  49. package/dist/es/node_modules/prop-types/lib/has.js +11 -0
  50. package/dist/es/node_modules/react-draggable/build/cjs/Draggable.js +474 -0
  51. package/dist/es/node_modules/react-draggable/build/cjs/DraggableCore.js +580 -0
  52. package/dist/es/node_modules/react-draggable/build/cjs/cjs.js +18 -0
  53. package/dist/es/node_modules/react-draggable/build/cjs/utils/domFns.js +361 -0
  54. package/dist/es/node_modules/react-draggable/build/cjs/utils/getPrefix.js +85 -0
  55. package/dist/es/node_modules/react-draggable/build/cjs/utils/log.js +10 -0
  56. package/dist/es/node_modules/react-draggable/build/cjs/utils/positionFns.js +214 -0
  57. package/dist/es/node_modules/react-draggable/build/cjs/utils/shims.js +64 -0
  58. package/dist/es/node_modules/react-easy-crop/index.module.js +51 -18
  59. package/dist/es/node_modules/react-is/cjs/react-is.development.js +190 -0
  60. package/dist/es/node_modules/react-is/cjs/react-is.production.min.js +26 -0
  61. package/dist/es/node_modules/react-is/index.js +19 -0
  62. package/dist/es/node_modules/react-resizable/build/Resizable.js +262 -0
  63. package/dist/es/node_modules/react-resizable/build/ResizableBox.js +117 -0
  64. package/dist/es/node_modules/react-resizable/build/propTypes.js +120 -0
  65. package/dist/es/node_modules/react-resizable/build/utils.js +24 -0
  66. package/dist/es/node_modules/react-resizable/index.js +14 -0
  67. package/dist/es/node_modules/virtuallist-antd/dist/index.es.js +942 -0
  68. package/dist/es/table/components/EnhanceBodyRow.js +24 -0
  69. package/dist/es/table/components/EnhanceHeaderCell.js +41 -0
  70. package/dist/es/table/components/TitleOperation.js +1 -1
  71. package/dist/es/table/components/useDragRef.js +10 -11
  72. package/dist/es/table/interface.d.ts +14 -0
  73. package/dist/es/table/table.js +72 -25
  74. package/dist/es/table/useColumns.js +144 -66
  75. package/dist/es/table/useDynamicListByColumns.js +63 -20
  76. package/dist/es/table/utils.js +59 -21
  77. package/dist/index.dark.css +1 -1
  78. package/dist/index.default.css +1 -1
  79. package/package.json +5 -4
  80. package/dist/es/table/components/EnhanceRow.js +0 -21
  81. /package/dist/es/table/components/{EnhanceCell.js → EnhanceBodyCell.js} +0 -0
@@ -0,0 +1,3 @@
1
+ var Draggable = {};
2
+
3
+ export { Draggable as __exports };
@@ -0,0 +1,3 @@
1
+ var DraggableCore = {};
2
+
3
+ export { DraggableCore as __exports };
@@ -0,0 +1,3 @@
1
+ var Resizable = {};
2
+
3
+ export { Resizable as __exports };
@@ -0,0 +1,3 @@
1
+ var ResizableBox = {};
2
+
3
+ export { ResizableBox as __exports };
@@ -2,4 +2,32 @@ function getDefaultExportFromCjs (x) {
2
2
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
3
3
  }
4
4
 
5
- export { getDefaultExportFromCjs };
5
+ function getAugmentedNamespace(n) {
6
+ if (n.__esModule) return n;
7
+ var f = n.default;
8
+ if (typeof f == "function") {
9
+ var a = function a () {
10
+ if (this instanceof a) {
11
+ var args = [null];
12
+ args.push.apply(args, arguments);
13
+ var Ctor = Function.bind.apply(f, args);
14
+ return new Ctor();
15
+ }
16
+ return f.apply(this, arguments);
17
+ };
18
+ a.prototype = f.prototype;
19
+ } else a = {};
20
+ Object.defineProperty(a, '__esModule', {value: true});
21
+ Object.keys(n).forEach(function (k) {
22
+ var d = Object.getOwnPropertyDescriptor(n, k);
23
+ Object.defineProperty(a, k, d.get ? d : {
24
+ enumerable: true,
25
+ get: function () {
26
+ return n[k];
27
+ }
28
+ });
29
+ });
30
+ return a;
31
+ }
32
+
33
+ export { getAugmentedNamespace, getDefaultExportFromCjs };
@@ -0,0 +1,3 @@
1
+ var cjs = {exports: {}};
2
+
3
+ export { cjs as __module };
@@ -0,0 +1,6 @@
1
+ import { getAugmentedNamespace } from './_commonjsHelpers.js';
2
+ import * as clsx_m from '../node_modules/clsx/dist/clsx.m.js';
3
+
4
+ var require$$3 = /*@__PURE__*/getAugmentedNamespace(clsx_m);
5
+
6
+ export { require$$3 as default };
@@ -0,0 +1,3 @@
1
+ var domFns = {};
2
+
3
+ export { domFns as __exports };
@@ -0,0 +1,3 @@
1
+ var getPrefix = {};
2
+
3
+ export { getPrefix as __exports };
@@ -0,0 +1,3 @@
1
+ var reactResizable = {exports: {}};
2
+
3
+ export { reactResizable as __module };
@@ -0,0 +1,3 @@
1
+ var propTypes = {exports: {}};
2
+
3
+ export { propTypes as __module };
@@ -0,0 +1,3 @@
1
+ var reactIs = {exports: {}};
2
+
3
+ export { reactIs as __module };
@@ -0,0 +1,3 @@
1
+ var log = {};
2
+
3
+ export { log as __exports };
@@ -0,0 +1,3 @@
1
+ var positionFns = {};
2
+
3
+ export { positionFns as __exports };
@@ -0,0 +1,3 @@
1
+ var propTypes = {};
2
+
3
+ export { propTypes as __exports };
@@ -0,0 +1,3 @@
1
+ var reactIs_development = {};
2
+
3
+ export { reactIs_development as __exports };
@@ -0,0 +1,3 @@
1
+ var reactIs_production_min = {};
2
+
3
+ export { reactIs_production_min as __exports };
@@ -0,0 +1,3 @@
1
+ var shims = {};
2
+
3
+ export { shims as __exports };
@@ -0,0 +1,3 @@
1
+ var utils = {};
2
+
3
+ export { utils as __exports };
@@ -1,5 +1,6 @@
1
1
  import { __rest, __assign, __awaiter, __generator } from '../_virtual/_tslib.js';
2
2
  import { jsx } from 'react/jsx-runtime';
3
+ import { useState, useRef } from 'react';
3
4
  import { Button as Button$1 } from 'antd';
4
5
  import classNames from '../node_modules/classnames/index.js';
5
6
  import ButtonDownload from './buttonDownload.js';
@@ -8,46 +9,50 @@ import ButtonPreview from './buttonPreview.js';
8
9
 
9
10
  var Button = function (props) {
10
11
  var _a;
11
- var type = props.type, className = props.className, disabled = props.disabled, size = props.size, danger = props.danger, onClick = props.onClick, resetProps = __rest(props, ["type", "className", "disabled", "size", "danger", "onClick"]);
12
+ var type = props.type, className = props.className, disabled = props.disabled, size = props.size, danger = props.danger, onClick = props.onClick, _b = props.isAuth, isAuth = _b === void 0 ? true : _b, loading = props.loading, resetProps = __rest(props, ["type", "className", "disabled", "size", "danger", "onClick", "isAuth", "loading"]);
13
+ var _c = useState(), innerLoading = _c[0], setLoading = _c[1];
12
14
  var classes = classNames("zt-btn", className, (_a = {},
13
15
  _a["zt-btn-".concat(type)] = type,
14
- _a["zt-btn-disabled"] = disabled,
16
+ _a["zt-btn-disabled"] = disabled || !isAuth,
15
17
  _a["zt-btn-".concat(size)] = size,
16
18
  _a["zt-btn-dangerous"] = danger,
17
19
  _a));
18
20
  // 定义一个开关,事件没执行完成之前 不能进行下一步操作
19
- var currentBtn = {
21
+ var currentBtn = useRef({
20
22
  canClick: true,
21
- };
23
+ });
22
24
  var myOnClick = function (event) { return __awaiter(void 0, void 0, void 0, function () {
23
25
  var err_1;
24
26
  return __generator(this, function (_a) {
25
27
  switch (_a.label) {
26
28
  case 0:
27
- if (!currentBtn.canClick) {
29
+ if (!currentBtn.current.canClick) {
28
30
  return [2 /*return*/];
29
31
  }
32
+ setLoading(true);
30
33
  _a.label = 1;
31
34
  case 1:
32
35
  _a.trys.push([1, 4, , 5]);
33
- currentBtn.canClick = false;
36
+ currentBtn.current.canClick = false;
34
37
  if (!onClick) return [3 /*break*/, 3];
35
38
  return [4 /*yield*/, onClick(event)];
36
39
  case 2:
37
40
  _a.sent();
38
41
  _a.label = 3;
39
42
  case 3:
40
- currentBtn.canClick = true;
43
+ setLoading(false);
44
+ currentBtn.current.canClick = true;
41
45
  return [3 /*break*/, 5];
42
46
  case 4:
43
47
  err_1 = _a.sent();
44
- currentBtn.canClick = true;
48
+ setLoading(false);
49
+ currentBtn.current.canClick = true;
45
50
  throw err_1;
46
51
  case 5: return [2 /*return*/];
47
52
  }
48
53
  });
49
54
  }); };
50
- return (jsx(Button$1, __assign({ className: classes, type: type, disabled: disabled, size: size, danger: danger, onClick: myOnClick }, resetProps)));
55
+ return (jsx(Button$1, __assign({ className: classes, type: type, disabled: disabled || !isAuth, size: size, danger: danger, onClick: myOnClick, loading: loading || innerLoading }, resetProps)));
51
56
  };
52
57
  var ButtonCom = Button;
53
58
  ButtonCom.displayName = "ZTXK_WEBUI_Button";
@@ -5,6 +5,8 @@ import ButtonExport from './buttonExport.js';
5
5
  import ButtonPreview from './buttonPreview.js';
6
6
 
7
7
  interface IButtonProps extends ButtonProps {
8
+ /** 是否有权限 */
9
+ isAuth?: boolean;
8
10
  }
9
11
  interface ButtonComponent extends React.FC<IButtonProps> {
10
12
  displayName: string;
@@ -1,4 +1,4 @@
1
- import { __assign } from '../_virtual/_tslib.js';
1
+ import { __spreadArray, __assign } from '../_virtual/_tslib.js';
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
3
  import { memo, forwardRef, useImperativeHandle, useMemo, useCallback } from 'react';
4
4
  import { HTML5Backend } from '../node_modules/react-dnd-html5-backend/dist/index.js';
@@ -6,6 +6,7 @@ import update from '../node_modules/immutability-helper/index.js';
6
6
  import Sortable from './sortable.js';
7
7
  import { useDynamic } from './useDynamic.js';
8
8
  import { useDrawer } from './hooks.js';
9
+ import MoreConfig from './moreConfig.js';
9
10
  import SettingOutlined from '../node_modules/@ant-design/icons/es/icons/SettingOutlined.js';
10
11
  import { DndProvider } from '../node_modules/react-dnd/dist/core/DndProvider.js';
11
12
  import ButtonCom from '../button/button.js';
@@ -13,7 +14,7 @@ import { Drawer, Checkbox } from 'antd';
13
14
 
14
15
  // 这里操作的一直都是内部设置的list
15
16
  var DynamicDrawer = function (props, ref) {
16
- var list = props.list, dynamicKey = props.dynamicKey, parentDynamicKey = props.parentDynamicKey, _a = props.title, title = _a === void 0 ? "自定义配置" : _a, onCurrentListChange = props.onCurrentListChange;
17
+ var list = props.list, dynamicKey = props.dynamicKey, parentDynamicKey = props.parentDynamicKey, _a = props.title, title = _a === void 0 ? "自定义配置" : _a, onCurrentListChange = props.onCurrentListChange, isMore = props.isMore, isFixed = props.isFixed;
17
18
  // 根据外部传入的list 和本地存储信息 生成一个内部的currentDynamicList
18
19
  // 这个currentDynamicList 是可以是负责显示最终结果的
19
20
  // tempDynamicList 是操作时的临时变量 可能操作后不点击确认 直接点击取消 那么需要重置到之前的状态
@@ -23,6 +24,7 @@ var DynamicDrawer = function (props, ref) {
23
24
  useImperativeHandle(ref, function () {
24
25
  return {
25
26
  setVisible: setVisible,
27
+ onSure: onSure,
26
28
  };
27
29
  });
28
30
  // 根据item的checkod 获取当前选中项
@@ -37,6 +39,7 @@ var DynamicDrawer = function (props, ref) {
37
39
  }, [tempDynamicList]);
38
40
  // 拖拽
39
41
  var onMoveItem = useCallback(function (dragIndex, hoverIndex) {
42
+ // 由于对于固定列,不能进行拖拽排序,所以需要找出所有包含固定列的属性出来
40
43
  setTempDynamicList(function (preDynamicList) {
41
44
  var dragCard = preDynamicList[dragIndex];
42
45
  var currentList = update(preDynamicList, {
@@ -45,9 +48,37 @@ var DynamicDrawer = function (props, ref) {
45
48
  [hoverIndex, 0, dragCard],
46
49
  ],
47
50
  });
48
- return currentList;
51
+ // 处理左浮动 右浮动数据。需要重新排序
52
+ var leftList = currentList.filter(function (item) { return item.fixed === "left"; });
53
+ var middleList = currentList.filter(function (item) { return !item.fixed; });
54
+ var rightList = currentList.filter(function (item) { return item.fixed === "right"; });
55
+ return __spreadArray(__spreadArray(__spreadArray([], leftList, true), middleList, true), rightList, true);
49
56
  });
50
57
  }, [setTempDynamicList]);
58
+ // 子元素拖拽
59
+ var onChildMoveItem = useCallback(function (pIndex, pKey) {
60
+ return function (dragIndex, hoverIndex) {
61
+ // 由于对于固定列,不能进行拖拽排序,所以需要找出所有包含固定列的属性出来
62
+ setTempDynamicList(function (preDynamicList) {
63
+ var newDynamicList = preDynamicList.map(function (item) { return (__assign({}, item)); }) || [];
64
+ // 找到change的父元素
65
+ var changeCList = newDynamicList[pIndex].children || [];
66
+ var dragCard = changeCList[dragIndex];
67
+ var currentList = update(changeCList, {
68
+ $splice: [
69
+ [dragIndex, 1],
70
+ [hoverIndex, 0, dragCard],
71
+ ],
72
+ });
73
+ newDynamicList[pIndex].children = currentList;
74
+ // 处理左浮动 右浮动数据。需要重新排序
75
+ var leftList = newDynamicList.filter(function (item) { return item.fixed === "left"; });
76
+ var middleList = newDynamicList.filter(function (item) { return !item.fixed; });
77
+ var rightList = newDynamicList.filter(function (item) { return item.fixed === "right"; });
78
+ return __spreadArray(__spreadArray(__spreadArray([], leftList, true), middleList, true), rightList, true);
79
+ });
80
+ };
81
+ }, [setTempDynamicList]);
51
82
  // 确认
52
83
  var onSureHandle = function () {
53
84
  onSure && onSure(tempDynamicList);
@@ -64,10 +95,62 @@ var DynamicDrawer = function (props, ref) {
64
95
  });
65
96
  setTempDynamicList(newDynamicList);
66
97
  };
98
+ var onChildCheckboxChange = function (checkedValues, pIndex) {
99
+ var _a, _b;
100
+ var newDynamicList = tempDynamicList.map(function (item) { return (__assign({}, item)); }) || [];
101
+ // 找到change的父元素
102
+ var changeCList = ((_b = (_a = newDynamicList[pIndex].children) === null || _a === void 0 ? void 0 : _a.map) === null || _b === void 0 ? void 0 : _b.call(_a, function (item) { return (__assign({}, item)); })) ||
103
+ [] ||
104
+ [];
105
+ changeCList.forEach(function (item) {
106
+ if (!checkedValues.find(function (value) { return value === item.key; })) {
107
+ item.checked = false;
108
+ }
109
+ else {
110
+ item.checked = true;
111
+ }
112
+ });
113
+ newDynamicList[pIndex].children = changeCList;
114
+ setTempDynamicList(newDynamicList);
115
+ };
116
+ // 后期可能需要拓展功能
117
+ var onMoreChange = function (key, result) {
118
+ var newDynamicList = tempDynamicList.map(function (item) { return (__assign({}, item)); }) || [];
119
+ var currentIndex = newDynamicList.findIndex(function (item) { return key === item.key; });
120
+ var currentItem = newDynamicList[currentIndex];
121
+ // 如果什么都没改
122
+ if (currentItem.fixed === result.fixed) {
123
+ return;
124
+ }
125
+ // 可固定的列 只能是首尾的列
126
+ currentItem.fixed = result.fixed;
127
+ var leftList = newDynamicList.filter(function (item) { return item.fixed === "left"; });
128
+ var middleList = newDynamicList.filter(function (item) { return !item.fixed; });
129
+ var rightList = newDynamicList.filter(function (item) { return item.fixed === "right"; });
130
+ setTempDynamicList(__spreadArray(__spreadArray(__spreadArray([], leftList, true), middleList, true), rightList, true));
131
+ };
67
132
  /**底部按钮 */
68
133
  var renderFooter = function () { return (jsxs(Fragment, { children: [jsx(ButtonCom, __assign({ type: "default", onClick: onClose }, { children: "\u53D6\u6D88" })), jsx(ButtonCom, __assign({ type: "default", onClick: onReset }, { children: "\u91CD\u7F6E" })), jsx(ButtonCom, __assign({ type: "primary", onClick: onSureHandle }, { children: "\u786E\u5B9A" }))] })); };
69
- return (jsx(Drawer, __assign({ className: "dynamic-drawer", title: jsxs("div", { children: [jsx(SettingOutlined, { style: { fontSize: 16 } }), jsxs("span", __assign({ className: "search-drawer--title-text" }, { children: [title, jsx("span", { children: "\uFF08\u62D6\u62FD\u6392\u5E8F\uFF09" })] }))] }), width: 300, placement: "right", open: visible, closable: false, maskClosable: false, footer: renderFooter() }, { children: jsx(DndProvider, __assign({ backend: HTML5Backend, context: window }, { children: jsx(Checkbox.Group, __assign({ value: checkedValues, onChange: onCheckboxChange }, { children: tempDynamicList.map(function (item, index) {
70
- return (jsx(Sortable, __assign({ type: "search-drawer", index: index, onMoveItem: onMoveItem }, { children: jsx(Checkbox, __assign({ value: item.key, disabled: item.disabled }, { children: item.label || item.key })) }), item.key));
134
+ return (jsx(Drawer, __assign({ className: "dynamic-drawer", title: jsxs("div", { children: [jsx(SettingOutlined, { style: { fontSize: 16 } }), jsxs("span", __assign({ className: "search-drawer--title-text" }, { children: [title, jsx("span", { children: "\uFF08\u62D6\u62FD\u6392\u5E8F\uFF09" })] }))] }), width: 300, placement: "right", open: visible, closable: false, maskClosable: false, footer: renderFooter() }, { children: jsx(Checkbox.Group, __assign({ value: checkedValues, onChange: onCheckboxChange }, { children: jsx(DndProvider, __assign({ backend: HTML5Backend, context: window }, { children: tempDynamicList.map(function (item, index) {
135
+ var key = item.key, disabled = item.disabled, label = item.label, fixed = item.fixed, children = item.children;
136
+ // 得到当前选项下的子元素选中项
137
+ // TODO: 这里可以继续用递归的模式创造无限下层
138
+ var childrenCheckedValues = [];
139
+ if (Array.isArray(children)) {
140
+ children.forEach(function (item) {
141
+ if (item.checked) {
142
+ childrenCheckedValues.push(item.key);
143
+ }
144
+ });
145
+ }
146
+ return (jsxs(Sortable, __assign({ type: "search-drawer", index: index, onMoveItem: onMoveItem }, { children: [jsxs("div", __assign({ className: "zt-sortable--item" }, { children: [jsx(Checkbox, __assign({ value: key, disabled: disabled }, { children: label || key })), isMore && (!children || children.length === 0) && (jsx(MoreConfig, { fixed: fixed || "", onChange: function (result) {
147
+ onMoreChange(key, result);
148
+ }, isFixed: isFixed }))] })), Array.isArray(children) && children.length > 0 ? (jsx("div", __assign({ className: "zt-sortable--children" }, { children: jsx(Checkbox.Group, __assign({ value: childrenCheckedValues, onChange: function (checkedValues) {
149
+ onChildCheckboxChange(checkedValues, index);
150
+ } }, { children: children.map(function (cItem, cIndex) {
151
+ var cKey = cItem.key, cLabel = cItem.label, cDisabled = cItem.disabled;
152
+ return (jsx(Sortable, __assign({ type: "search-drawer-".concat(key), index: cIndex, onMoveItem: onChildMoveItem(index, key) }, { children: jsx(Checkbox, __assign({ value: cKey, disabled: cDisabled }, { children: cLabel || cKey })) }), cKey));
153
+ }) })) }))) : null] }), key));
71
154
  }) })) })) })));
72
155
  };
73
156
  DynamicDrawer.displayName = "ZTXK_WEBUI_DynamicDrawer";
@@ -11,7 +11,7 @@ import SettingOutlined from '../node_modules/@ant-design/icons/es/icons/SettingO
11
11
  // 内部根据这个list初始值,生成一个内部的currentDynamicList 作为操作 显示的数据
12
12
  // 当内部的currentDynamicList 发生改变的时候 触发currentDynamicListChange事件 通知外部,数据发生改变了
13
13
  var DynamicSetting = function (props, ref) {
14
- var dynamicKey = props.dynamicKey, parentDynamicKey = props.parentDynamicKey, defaultList = props.defaultList, children = props.children, title = props.title, onCurrentListChange = props.onCurrentListChange, hiddenOperationIcon = props.hiddenOperationIcon;
14
+ var dynamicKey = props.dynamicKey, parentDynamicKey = props.parentDynamicKey, defaultList = props.defaultList, children = props.children, title = props.title, onCurrentListChange = props.onCurrentListChange, hiddenOperationIcon = props.hiddenOperationIcon, isMore = props.isMore, isFixed = props.isFixed;
15
15
  // 内部初始list
16
16
  var _a = useState(defaultList), list = _a[0], setList = _a[1];
17
17
  var drawerRef = useRef({});
@@ -28,9 +28,14 @@ var DynamicSetting = function (props, ref) {
28
28
  var _a;
29
29
  (_a = drawerRef.current) === null || _a === void 0 ? void 0 : _a.setVisible(visible);
30
30
  },
31
+ // 外部更新数据
32
+ updateList: function (list) {
33
+ var _a;
34
+ (_a = drawerRef.current) === null || _a === void 0 ? void 0 : _a.onSure(list);
35
+ },
31
36
  };
32
37
  });
33
- return Array.isArray(list) && list.length > 0 ? (jsxs("div", __assign({ className: "ztxk-dynamic-setting" }, { children: [hiddenOperationIcon ? null : (jsx("div", __assign({ onClick: function () { var _a; return (_a = drawerRef.current) === null || _a === void 0 ? void 0 : _a.setVisible(true); } }, { children: children ? (children) : (jsx(SettingOutlined, { style: { fontSize: 18, color: "#768696" } })) }))), jsx(DynamicDrawer, { list: list, dynamicKey: dynamicKey, parentDynamicKey: parentDynamicKey, ref: drawerRef, title: title, onCurrentListChange: onCurrentListChange })] }))) : null;
38
+ return Array.isArray(list) && list.length > 0 ? (jsxs("div", __assign({ className: "ztxk-dynamic-setting" }, { children: [hiddenOperationIcon ? null : (jsx("div", __assign({ onClick: function () { var _a; return (_a = drawerRef.current) === null || _a === void 0 ? void 0 : _a.setVisible(true); } }, { children: children ? (children) : (jsx(SettingOutlined, { style: { fontSize: 18, color: "#768696" } })) }))), jsx(DynamicDrawer, { list: list, dynamicKey: dynamicKey, parentDynamicKey: parentDynamicKey, ref: drawerRef, title: title, onCurrentListChange: onCurrentListChange, isFixed: isFixed, isMore: isMore })] }))) : null;
34
39
  };
35
40
  DynamicSetting.displayName = "ZTXK_WEBUI_DynamicSetting";
36
41
  var DynamicSetting$1 = memo(forwardRef(DynamicSetting));
@@ -3,6 +3,7 @@ interface IDynamicItem {
3
3
  label?: React.ReactNode;
4
4
  disabled?: boolean;
5
5
  checked?: boolean;
6
+ children?: IDynamicItem[];
6
7
  [props: string]: any;
7
8
  }
8
9
  interface IDynamicSettingProps {
@@ -13,11 +14,14 @@ interface IDynamicSettingProps {
13
14
  children?: JSX.Element;
14
15
  title?: string;
15
16
  hiddenOperationIcon?: boolean;
17
+ isMore?: boolean;
18
+ isFixed?: boolean;
16
19
  }
17
20
  interface IRef {
18
21
  getCurrentDynamicList: (list: IDynamicItem[]) => IDynamicItem[];
19
22
  setList: React.Dispatch<React.SetStateAction<IDynamicItem[]>>;
20
23
  setVisible: (v: boolean) => void;
24
+ updateList: (list: any) => void;
21
25
  }
22
26
 
23
27
  export { IDynamicItem, IDynamicSettingProps, IRef };
@@ -0,0 +1,36 @@
1
+ import { __assign } from '../_virtual/_tslib.js';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { memo, useState } from 'react';
4
+ import { useLatest } from 'ahooks';
5
+ import MenuOutlined from '../node_modules/@ant-design/icons/es/icons/MenuOutlined.js';
6
+ import { Radio, Dropdown } from 'antd';
7
+
8
+ var MoreConfig = function (_a) {
9
+ var fixed = _a.fixed, onChange = _a.onChange, isFixed = _a.isFixed;
10
+ var _b = useState(false), open = _b[0], setOpen = _b[1];
11
+ var _c = useState(fixed), fixedValue = _c[0], setFixedValue = _c[1];
12
+ var onChangeLastestRef = useLatest(onChange);
13
+ var onFixedChange = function (e) {
14
+ setFixedValue(e.target.value);
15
+ };
16
+ var fixedItem = {
17
+ label: (jsxs("div", { children: ["\u56FA\u5B9A\uFF1A", jsxs(Radio.Group, __assign({ name: "dynamic-fixed", value: fixedValue, onChange: onFixedChange, optionType: "button", buttonStyle: "solid" }, { children: [jsx(Radio, __assign({ value: "left" }, { children: "\u5DE6" })), jsx(Radio, __assign({ value: "right" }, { children: "\u53F3" })), jsx(Radio, __assign({ value: "" }, { children: "\u65E0" }))] }))] })),
18
+ key: "0",
19
+ };
20
+ var items = [];
21
+ if (isFixed) {
22
+ items.push(fixedItem);
23
+ }
24
+ return (jsx(Dropdown, __assign({ menu: { items: items }, trigger: ["click"], open: open, onOpenChange: function (open) {
25
+ setOpen(open);
26
+ if (!open) {
27
+ onChangeLastestRef.current &&
28
+ onChangeLastestRef.current({
29
+ fixed: fixedValue,
30
+ });
31
+ }
32
+ }, placement: "bottomLeft", arrow: true, overlayClassName: "ztxk-dynamic--more--drop" }, { children: jsx(MenuOutlined, { className: "ztxk-dynamic--more" }) })));
33
+ };
34
+ var MoreConfig$1 = memo(MoreConfig);
35
+
36
+ export { MoreConfig$1 as default };
@@ -2,14 +2,73 @@ import { __assign } from '../_virtual/_tslib.js';
2
2
  import { useMemo, useState, useEffect } from 'react';
3
3
 
4
4
  var LOCALSTORAGE_LRU_MAX_SIZE = 500;
5
+ function recursionDynamicItems(list, currentDynamicList) {
6
+ // 如果缓存中有值,那么以缓存中的值为准
7
+ // key保留 其他内容替换
8
+ list.forEach(function (item, index) {
9
+ var _a;
10
+ var result = __assign({ checked: true }, item);
11
+ // 将最新的名字等同步
12
+ // 如果之前有数据,那么需要验证数据的准确性,比如修改了名字但是key没替换
13
+ var currentData = (_a = currentDynamicList === null || currentDynamicList === void 0 ? void 0 : currentDynamicList.find) === null || _a === void 0 ? void 0 : _a.call(currentDynamicList, function (currentDynamic) { return currentDynamic.key === result.key; });
14
+ if (currentData) {
15
+ currentData.label = result.label;
16
+ currentData.isFind = true; // 代表当前这个字段被找到
17
+ // 判断是否是多级表头,这里的逻辑处理是为了兼容
18
+ // 后面改造成多级表头的情况
19
+ if (item.children) {
20
+ var children = item.children; // 默认传入的配置里面的子集
21
+ // 如果缓存中没有children 那么需要添加下这个字段
22
+ if (!currentData.children) {
23
+ currentData.children = [];
24
+ }
25
+ var dynamicChildren = currentData.children; // 缓存里面的子集
26
+ recursionDynamicItems(children, dynamicChildren);
27
+ }
28
+ }
29
+ else {
30
+ // 没有从之前的字段中被找到的话,说明是业务新增的 需要添加上
31
+ // 这里存在一个问题:可能缓存中有的值已经被业务方删除了,那么需要删除掉从找到的值
32
+ // 这里不是从末尾添加。应该是按顺序添加
33
+ if (index <= currentDynamicList.length - 1) {
34
+ currentDynamicList.splice(index, 0, __assign(__assign({}, result), { isFind: true }));
35
+ }
36
+ else {
37
+ currentDynamicList.push(__assign(__assign({}, result), { isFind: true }));
38
+ }
39
+ }
40
+ });
41
+ }
42
+ function recursionDeleteDynamicItems(currentDynamicList) {
43
+ return currentDynamicList
44
+ .filter(function (item) {
45
+ if (item.isFind) {
46
+ // 这里递归找子元素删除子元素逻辑
47
+ if (Array.isArray(item.children)) {
48
+ console.log(item.children);
49
+ item.children = recursionDeleteDynamicItems(item.children);
50
+ console.log(item.children);
51
+ }
52
+ return true;
53
+ }
54
+ return false;
55
+ })
56
+ .map(function (item) {
57
+ var result = __assign({}, item);
58
+ Reflect.deleteProperty(result, "isFind");
59
+ return result;
60
+ });
61
+ }
5
62
  // 从缓存中 取到缓存的数据
6
63
  function getCurrentDynamicItems(dynamicKey, parentDynamicKey, list) {
7
- if (dynamicKey && parentDynamicKey && Array.isArray(list)) {
64
+ // 就算没有传入dynamicKey 也要走这个逻辑
65
+ // if (dynamicKey && parentDynamicKey && Array.isArray(list)) {
66
+ if (parentDynamicKey && Array.isArray(list)) {
8
67
  // 从storage中取到历史数据
9
68
  var dynamicList = [];
10
69
  try {
11
70
  var obj = JSON.parse(localStorage.getItem(parentDynamicKey) || "{}") || {};
12
- dynamicList = obj[dynamicKey];
71
+ dynamicList = dynamicKey ? obj[dynamicKey] : [];
13
72
  }
14
73
  catch (err) {
15
74
  console.log(err);
@@ -24,32 +83,13 @@ function getCurrentDynamicItems(dynamicKey, parentDynamicKey, list) {
24
83
  });
25
84
  }
26
85
  else {
27
- // 如果缓存中有值,那么以缓存中的值为准
28
- // key保留 其他内容替换
29
- list.forEach(function (item, index) {
30
- var result = __assign({ checked: true }, item);
31
- // 将最新的名字等同步
32
- // 如果之前有数据,那么需要验证数据的准确性,比如修改了名字但是key没替换
33
- var currentData = currentDynamicList_1.find(function (currentDynamic) { return currentDynamic.key === result.key; });
34
- if (currentData) {
35
- currentData.label = result.label;
36
- currentData.isFind = true; // 代表当前这个字段被找到
37
- }
38
- else {
39
- // 没有从之前的字段中被找到的话,说明是业务新增的 需要添加上
40
- currentDynamicList_1.push(__assign(__assign({}, result), { isFind: true }));
41
- }
42
- });
86
+ // 递归比对 用户传入配置 和 缓存中的配置。转换成正确的数据
87
+ recursionDynamicItems(list, currentDynamicList_1);
43
88
  }
44
89
  // 最终需要过滤掉 没从传入配置中找到的字段
45
90
  // 如果没从传入配置中找到改字段 说明 该字段已经被业务弃用删除了
46
- return currentDynamicList_1
47
- .filter(function (item) { return item.isFind; })
48
- .map(function (item) {
49
- var result = __assign({}, item);
50
- Reflect.deleteProperty(result, "isFind");
51
- return result;
52
- });
91
+ // 还要考虑多级表头 的情况,需要递归找到没有找到的值 进行删除
92
+ return recursionDeleteDynamicItems(currentDynamicList_1);
53
93
  }
54
94
  return [];
55
95
  }
@@ -2,7 +2,7 @@ import React__default from 'react';
2
2
  import { Form } from 'antd';
3
3
  import { IProFormProps } from './interface.js';
4
4
 
5
- interface FormComponent extends React__default.FC<IProFormProps> {
5
+ interface FormComponent extends React__default.ForwardRefExoticComponent<IProFormProps & React__default.RefAttributes<unknown>> {
6
6
  useForm: typeof Form.useForm;
7
7
  Item: typeof Form.Item;
8
8
  List: typeof Form.List;
@@ -1,11 +1,12 @@
1
1
  import { __rest, __assign } from '../_virtual/_tslib.js';
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
- import { memo, useMemo, useCallback } from 'react';
3
+ import { memo, forwardRef, useMemo, useCallback, useRef, useImperativeHandle } from 'react';
4
4
  import { Form as Form$1 } from 'antd';
5
5
  import classNames from '../node_modules/classnames/index.js';
6
- import { useFormPreferencesCreateNewItems, useDynamicListByItems, useBtnHandle } from './hooks.js';
6
+ import { useFormPreferencesCreateNewItems, useDynamicListByItems, useBtnHandle, useToggle } from './hooks.js';
7
7
  import FormItems from './formItems.js';
8
8
  import DefaultDom from './detaultDom.js';
9
+ import Toggle from './toggle.js';
9
10
  import DynamicSetting from '../dynamicsetting/dynamicSetting.js';
10
11
  import ButtonCom from '../button/button.js';
11
12
 
@@ -17,8 +18,8 @@ var FORM_DYNAMIC_KEY = "ztxk-webui-dynamic-form";
17
18
  // 如果两者同时存在
18
19
  // 用户配置优先,先从远端获取到 表单配置信息。
19
20
  // 给子元素设置好了表单配置信息后 接下来的内容 交给动态列配置接管
20
- var Form = function (props) {
21
- var form = props.form, bottomBorder = props.bottomBorder, _a = props.isFlex, isFlex = _a === void 0 ? true : _a, wrapClassName = props.wrapClassName, leftClassName = props.leftClassName; props.itemClassName; var rightWrapVisible = props.rightWrapVisible, rightClassName = props.rightClassName, children = props.children, dynamicKey = props.dynamicKey, formPreferences = props.formPreferences, items = props.items, outsideState = props.outsideState, onValuesChange = props.onValuesChange, onResetHandle = props.onResetHandle, onSearchHandle = props.onSearchHandle, type = props.type, directionColumn = props.directionColumn, restProps = __rest(props, ["form", "bottomBorder", "isFlex", "wrapClassName", "leftClassName", "itemClassName", "rightWrapVisible", "rightClassName", "children", "dynamicKey", "formPreferences", "items", "outsideState", "onValuesChange", "onResetHandle", "onSearchHandle", "type", "directionColumn"]);
21
+ var Form = function (props, ref) {
22
+ var form = props.form, bottomBorder = props.bottomBorder, _a = props.isFlex, isFlex = _a === void 0 ? true : _a, wrapClassName = props.wrapClassName, leftClassName = props.leftClassName; props.itemClassName; var rightWrapVisible = props.rightWrapVisible, rightClassName = props.rightClassName, children = props.children, dynamicKey = props.dynamicKey, formPreferences = props.formPreferences, items = props.items, outsideState = props.outsideState, onValuesChange = props.onValuesChange, onResetHandle = props.onResetHandle, onSearchHandle = props.onSearchHandle, type = props.type, directionColumn = props.directionColumn, isToggle = props.isToggle, toggleNum = props.toggleNum, defaultToggle = props.defaultToggle, restProps = __rest(props, ["form", "bottomBorder", "isFlex", "wrapClassName", "leftClassName", "itemClassName", "rightWrapVisible", "rightClassName", "children", "dynamicKey", "formPreferences", "items", "outsideState", "onValuesChange", "onResetHandle", "onSearchHandle", "type", "directionColumn", "isToggle", "toggleNum", "defaultToggle"]);
22
23
  // 获取新的items
23
24
  var configInfoItems = useFormPreferencesCreateNewItems(formPreferences, items).configInfoItems;
24
25
  // 根据items 和 dynamicKey 获取到动态列配置信息
@@ -77,9 +78,20 @@ var Form = function (props) {
77
78
  onSearchHandle: onSearchHandle,
78
79
  onResetHandle: onResetHandle,
79
80
  }), onSearchHandleInner = _c.onSearchHandleInner, onResetHandleInner = _c.onResetHandleInner;
80
- return (jsxs(Form$1, __assign({ form: form, onValuesChange: onValuesChangeHandle }, restProps, { className: wrapClasses }, { children: [jsx("div", __assign({ className: leftClasses }, { children: items ? (jsx(FormItems, { items: dynamicKey ? newItems : configInfoItems, outsideState: outsideState })) : (children) })), dynamicKey ? (jsx(DynamicSetting, { dynamicKey: dynamicKey, parentDynamicKey: FORM_DYNAMIC_KEY, defaultList: dynamicList, onCurrentListChange: onCurrentListChange, ref: dynamicSettingRef })) : null, rightWrapVisible ? (jsxs("div", __assign({ className: rightClasses }, { children: [jsx(ButtonCom, __assign({ type: "default", onClick: onResetHandleInner }, { children: "\u91CD\u7F6E" })), jsx(ButtonCom, __assign({ type: "primary", onClick: onSearchHandleInner }, { children: "\u67E5\u8BE2" }))] }))) : null] })));
81
+ var leftWrapRef = useRef(null);
82
+ var _d = useToggle(leftWrapRef, {
83
+ isToggle: isToggle,
84
+ toggleNum: toggleNum,
85
+ defaultToggle: defaultToggle,
86
+ }), toggle = _d.toggle, onToggleChange = _d.onToggleChange, setToggleHandle = _d.setToggleHandle;
87
+ useImperativeHandle(ref, function () {
88
+ return {
89
+ setToggleHandle: setToggleHandle,
90
+ };
91
+ });
92
+ return (jsxs(Form$1, __assign({ form: form, onValuesChange: onValuesChangeHandle }, restProps, { className: wrapClasses }, { children: [jsx("div", __assign({ className: leftClasses, ref: leftWrapRef }, { children: items ? (jsx(FormItems, { items: dynamicKey ? newItems : configInfoItems, outsideState: outsideState })) : (children) })), jsxs("div", __assign({ className: "ztxk-form--operation" }, { children: [dynamicKey ? (jsx(DynamicSetting, { dynamicKey: dynamicKey, parentDynamicKey: FORM_DYNAMIC_KEY, defaultList: dynamicList, onCurrentListChange: onCurrentListChange, ref: dynamicSettingRef })) : null, isToggle ? jsx(Toggle, { toggle: toggle, onClick: onToggleChange }) : null] })), rightWrapVisible ? (jsxs("div", __assign({ className: rightClasses }, { children: [jsx(ButtonCom, __assign({ type: "default", onClick: onResetHandleInner }, { children: "\u91CD\u7F6E" })), jsx(ButtonCom, __assign({ type: "primary", onClick: onSearchHandleInner }, { children: "\u67E5\u8BE2" }))] }))) : null] })));
81
93
  };
82
- var MemoForm = memo(Form);
94
+ var MemoForm = memo(forwardRef(Form));
83
95
  MemoForm.displayName = "ZTXK_WEBUI_Form";
84
96
  MemoForm.useForm = Form$1.useForm;
85
97
  MemoForm.Item = Form$1.Item;