@zat-design/sisyphus-react 3.4.0-beta.3 → 3.4.0-beta.4

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 (34) hide show
  1. package/dist/index.esm.css +15 -32
  2. package/es/ProEditTable/index.js +15 -9
  3. package/es/ProEditTable/style/index.less +36 -55
  4. package/es/ProEditTable/utils/index.js +2 -2
  5. package/es/ProEnum/components/Group.d.ts +7 -0
  6. package/es/ProEnum/components/Group.js +42 -0
  7. package/es/ProEnum/index.js +9 -0
  8. package/es/ProEnum/propsType.d.ts +2 -2
  9. package/es/ProEnum/style/index.less +49 -0
  10. package/es/ProForm/components/render/ConfirmWrapper.d.ts +10 -0
  11. package/es/ProForm/components/render/ConfirmWrapper.js +53 -0
  12. package/es/ProForm/components/render/Render.js +10 -1
  13. package/es/ProForm/components/render/RenderFields.js +3 -1
  14. package/es/ProForm/components/render/propsType.d.ts +6 -2
  15. package/es/ProTable/components/RenderColumn/index.js +1 -2
  16. package/es/ProTable/propsType.d.ts +1 -1
  17. package/es/ProTable/utils.js +1 -1
  18. package/lib/ProEditTable/index.js +13 -7
  19. package/lib/ProEditTable/style/index.less +36 -55
  20. package/lib/ProEditTable/utils/index.js +2 -2
  21. package/lib/ProEnum/components/Group.d.ts +7 -0
  22. package/lib/ProEnum/components/Group.js +49 -0
  23. package/lib/ProEnum/index.js +9 -0
  24. package/lib/ProEnum/propsType.d.ts +2 -2
  25. package/lib/ProEnum/style/index.less +49 -0
  26. package/lib/ProForm/components/render/ConfirmWrapper.d.ts +10 -0
  27. package/lib/ProForm/components/render/ConfirmWrapper.js +59 -0
  28. package/lib/ProForm/components/render/Render.js +10 -1
  29. package/lib/ProForm/components/render/RenderFields.js +3 -1
  30. package/lib/ProForm/components/render/propsType.d.ts +6 -2
  31. package/lib/ProTable/components/RenderColumn/index.js +1 -2
  32. package/lib/ProTable/propsType.d.ts +1 -1
  33. package/lib/ProTable/utils.js +1 -1
  34. package/package.json +1 -1
@@ -4062,7 +4062,8 @@ span.ant-input-group-compact.pro-range-limit .forever-checkbox {
4062
4062
  display: flex;
4063
4063
  }
4064
4064
  .pro-edit-table .drag-wrapper .drag-icon {
4065
- margin-right: var(--zaui-space-size-xs, 4px);
4065
+ margin-right: var(--zaui-space-size-md, 16px);
4066
+ margin-left: var(--zaui-space-size-xs, 4px);
4066
4067
  cursor: pointer;
4067
4068
  }
4068
4069
  .pro-edit-table.pro-table-no-stripe .ant-table-tbody tr:nth-child(n) > td {
@@ -4081,33 +4082,24 @@ span.ant-input-group-compact.pro-range-limit .forever-checkbox {
4081
4082
  padding-left: var(--zaui-space-size-md, 16px);
4082
4083
  padding-right: var(--zaui-space-size-md, 16px);
4083
4084
  }
4084
- .pro-edit-table .ant-table-header > table .ant-table-thead > tr > th:not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]).is-required::after {
4085
- content: "";
4086
- }
4087
- .pro-edit-table .ant-table-header > table .ant-table-thead > tr > th:not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]).is-required.is-required-left::before {
4088
- content: "";
4089
- }
4090
- .pro-edit-table .ant-table-header > table .ant-table-thead > tr > th:not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]).is-required .pro-edit-table-title::after {
4091
- width: auto;
4085
+ .pro-edit-table .ant-table-header > table .ant-table-thead > tr > th:not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]).is-required.is-required-right .pro-edit-table-title::before {
4092
4086
  position: static;
4093
4087
  top: 0;
4094
4088
  display: inline-block;
4095
- margin-left: var(--zaui-space-size-xs, 4px);
4089
+ text-indent: -8px;
4096
4090
  color: #ff5050;
4097
- font-size: 14px;
4091
+ font-size: var(--zaui-font-size-md, 14px);
4098
4092
  line-height: 1;
4099
4093
  content: "*";
4100
4094
  }
4101
- .pro-edit-table .ant-table-header > table .ant-table-thead > tr > th:not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]).is-required .pro-edit-table-title.is-required-left::after {
4102
- display: none;
4103
- }
4104
- .pro-edit-table .ant-table-header > table .ant-table-thead > tr > th:not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]).is-required .pro-edit-table-title.is-required-left::before {
4095
+ .pro-edit-table .ant-table-header > table .ant-table-thead > tr > th:not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]).is-required.is-required-left .pro-edit-table-title::after {
4096
+ width: auto;
4105
4097
  position: static;
4106
4098
  top: 0;
4107
4099
  display: inline-block;
4108
- text-indent: -8px;
4100
+ margin-left: var(--zaui-space-size-xs, 4px);
4109
4101
  color: #ff5050;
4110
- font-size: var(--zaui-font-size-md, 14px);
4102
+ font-size: 14px;
4111
4103
  line-height: 1;
4112
4104
  content: "*";
4113
4105
  }
@@ -4130,33 +4122,24 @@ span.ant-input-group-compact.pro-range-limit .forever-checkbox {
4130
4122
  .pro-edit-table .ant-table-content > table td .pro-form-view-container_nowrap {
4131
4123
  white-space: normal;
4132
4124
  }
4133
- .pro-edit-table .ant-table-content > table .ant-table-thead > tr > th:not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]).is-required::after {
4134
- content: "";
4135
- }
4136
- .pro-edit-table .ant-table-content > table .ant-table-thead > tr > th:not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]).is-required.is-required-left::before {
4137
- content: "";
4138
- }
4139
- .pro-edit-table .ant-table-content > table .ant-table-thead > tr > th:not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]).is-required .pro-edit-table-title::after {
4140
- width: auto;
4125
+ .pro-edit-table .ant-table-content > table .ant-table-thead > tr > th:not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]).is-required.is-required-right .pro-edit-table-title::before {
4141
4126
  position: static;
4142
4127
  top: 0;
4143
4128
  display: inline-block;
4144
- margin-left: var(--zaui-space-size-xs, 4px);
4129
+ text-indent: -8px;
4145
4130
  color: #ff5050;
4146
4131
  font-size: var(--zaui-font-size-md, 14px);
4147
4132
  line-height: 1;
4148
4133
  content: "*";
4149
4134
  }
4150
- .pro-edit-table .ant-table-content > table .ant-table-thead > tr > th:not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]).is-required .pro-edit-table-title.is-required-left::after {
4151
- display: none;
4152
- }
4153
- .pro-edit-table .ant-table-content > table .ant-table-thead > tr > th:not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]).is-required .pro-edit-table-title.is-required-left::before {
4135
+ .pro-edit-table .ant-table-content > table .ant-table-thead > tr > th:not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]).is-required.is-required-left .pro-edit-table-title::after {
4136
+ width: auto;
4154
4137
  position: static;
4155
4138
  top: 0;
4156
4139
  display: inline-block;
4157
- text-indent: -8px;
4140
+ margin-left: var(--zaui-space-size-xs, 4px);
4158
4141
  color: #ff5050;
4159
- font-size: var(--zaui-font-size-md, 14px);
4142
+ font-size: 14px;
4160
4143
  line-height: 1;
4161
4144
  content: "*";
4162
4145
  }
@@ -12,9 +12,9 @@ import _Form from "antd/es/form";
12
12
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
13
13
  var _excluded = ["value", "onChange", "className", "columns", "type", "mode", "stripe", "draggable", "disabled", "insertType", "emptyBtnText", "actionWidth", "actionProps", "toolbarProps", "rowSelection", "onlyOneLineMsg", "deletePoConfirmMsg", "mulDeletePoConfirmMsg", "otherProps", "requiredAlign", "summary", "max", "headerRender", "pagination", "originalValues", "originalTip", "rowKey"];
14
14
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
15
- import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useRef } from 'react';
15
+ import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react';
16
16
  import { get, isArray } from 'lodash';
17
- import { useDebounceEffect, useSetState } from 'ahooks';
17
+ import { useDebounceEffect, useLocalStorageState, useSetState } from 'ahooks';
18
18
  import classnames from 'classnames';
19
19
  import { transformColumns } from './utils';
20
20
  import { getRandom, getNamePath } from './utils/tools';
@@ -22,7 +22,7 @@ import { DndWrapper, Row, Validator, Summary, RenderToolbar } from './components
22
22
  import Empty from '../assets/empty.png';
23
23
  import locale, { formatMessage } from '../locale';
24
24
  var ProEditTable = function ProEditTable(_ref, ref) {
25
- var _resetProps$id, _resetProps$id$split, _value$2;
25
+ var _resetProps$id, _resetProps$id$split, _themeConfig$data2, _value$2;
26
26
  var value = _ref.value,
27
27
  onChange = _ref.onChange,
28
28
  className = _ref.className,
@@ -43,7 +43,7 @@ var ProEditTable = function ProEditTable(_ref, ref) {
43
43
  mulDeletePoConfirmMsg = _ref.mulDeletePoConfirmMsg,
44
44
  _ref$otherProps = _ref.otherProps,
45
45
  otherProps = _ref$otherProps === void 0 ? {} : _ref$otherProps,
46
- requiredAlign = _ref.requiredAlign,
46
+ configRequiredAlign = _ref.requiredAlign,
47
47
  summary = _ref.summary,
48
48
  max = _ref.max,
49
49
  headerRender = _ref.headerRender,
@@ -65,6 +65,13 @@ var ProEditTable = function ProEditTable(_ref, ref) {
65
65
  getPrefixCls = _React$useContext.getPrefixCls;
66
66
  var prefixCls = getPrefixCls();
67
67
  disabled = (otherProps === null || otherProps === void 0 ? void 0 : otherProps.disabled) || disabled;
68
+ var _useLocalStorageState = useLocalStorageState('themeConfig'),
69
+ _useLocalStorageState2 = _slicedToArray(_useLocalStorageState, 1),
70
+ themeConfig = _useLocalStorageState2[0];
71
+ var requiredAlign = useMemo(function () {
72
+ var _ref2, _themeConfig$data$zau, _themeConfig$data;
73
+ return (_ref2 = (_themeConfig$data$zau = themeConfig === null || themeConfig === void 0 ? void 0 : (_themeConfig$data = themeConfig.data) === null || _themeConfig$data === void 0 ? void 0 : _themeConfig$data.zauiFormAlign) !== null && _themeConfig$data$zau !== void 0 ? _themeConfig$data$zau : configRequiredAlign) !== null && _ref2 !== void 0 ? _ref2 : 'left';
74
+ }, [themeConfig === null || themeConfig === void 0 ? void 0 : (_themeConfig$data2 = themeConfig.data) === null || _themeConfig$data2 === void 0 ? void 0 : _themeConfig$data2.zauiFormAlign]);
68
75
  var _useSetState = useSetState({
69
76
  _columns: columns,
70
77
  cellNamePath: [],
@@ -101,8 +108,8 @@ var ProEditTable = function ProEditTable(_ref, ref) {
101
108
  var getRowKey = function getRowKey(record) {
102
109
  var key = record.rowKey || getRandom();
103
110
  if (rowKey) {
104
- var _ref2;
105
- key = (_ref2 = typeof rowKey === 'function' ? rowKey(record) : record[rowKey]) !== null && _ref2 !== void 0 ? _ref2 : key;
111
+ var _ref3;
112
+ key = (_ref3 = typeof rowKey === 'function' ? rowKey(record) : record[rowKey]) !== null && _ref3 !== void 0 ? _ref3 : key;
106
113
  }
107
114
  return key;
108
115
  };
@@ -226,7 +233,7 @@ var ProEditTable = function ProEditTable(_ref, ref) {
226
233
  return isForbiddenBtn('mulDelete') ? rowSelection : _rowSelection;
227
234
  };
228
235
  var setColumns = /*#__PURE__*/function () {
229
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
236
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
230
237
  var nextColumns;
231
238
  return _regeneratorRuntime().wrap(function _callee$(_context) {
232
239
  while (1) switch (_context.prev = _context.next) {
@@ -245,7 +252,7 @@ var ProEditTable = function ProEditTable(_ref, ref) {
245
252
  }, _callee);
246
253
  }));
247
254
  return function setColumns() {
248
- return _ref3.apply(this, arguments);
255
+ return _ref4.apply(this, arguments);
249
256
  };
250
257
  }();
251
258
  useDebounceEffect(function () {
@@ -355,7 +362,6 @@ ForwardProEditTable.defaultProps = {
355
362
  type: 'multiple',
356
363
  mode: 'multiple',
357
364
  insertType: 'after',
358
- requiredAlign: 'right',
359
365
  value: [],
360
366
  actionProps: [],
361
367
  toolbarProps: [],
@@ -63,7 +63,8 @@
63
63
  .drag-wrapper {
64
64
  display: flex;
65
65
  .drag-icon {
66
- margin-right: var(--zaui-space-size-xs, 4px);
66
+ margin-right: var(--zaui-space-size-md, 16px);
67
+ margin-left: var(--zaui-space-size-xs, 4px);
67
68
  cursor: pointer;
68
69
  }
69
70
  }
@@ -92,33 +93,8 @@
92
93
  }
93
94
 
94
95
  .@{ant-prefix}-table-header>table .@{ant-prefix}-table-thead>tr>th:not(.@{ant-prefix}-table-selection-column):not(.@{ant-prefix}-table-row-expand-icon-cell):not([colspan]).is-required {
95
- &::after {
96
- content: "";
97
- }
98
-
99
- &.is-required-left {
100
- &::before {
101
- content: "";
102
- }
103
- }
104
- .pro-edit-table-title {
105
- &::after {
106
- width: auto;
107
- position : static;
108
- top : 0;
109
- display : inline-block;
110
- margin-left: var(--zaui-space-size-xs, 4px);
111
- color : #ff5050;
112
- font-size : 14px;
113
- line-height: 1;
114
- content : "*";
115
- }
116
-
117
- &.is-required-left {
118
- &::after {
119
- display: none;
120
- }
121
-
96
+ &.is-required-right {
97
+ .pro-edit-table-title {
122
98
  &::before {
123
99
  position : static;
124
100
  top : 0;
@@ -131,6 +107,21 @@
131
107
  }
132
108
  }
133
109
  }
110
+ &.is-required-left {
111
+ .pro-edit-table-title {
112
+ &::after {
113
+ width: auto;
114
+ position : static;
115
+ top : 0;
116
+ display : inline-block;
117
+ margin-left: var(--zaui-space-size-xs, 4px);
118
+ color : #ff5050;
119
+ font-size : 14px;
120
+ line-height: 1;
121
+ content : "*";
122
+ }
123
+ }
124
+ }
134
125
  }
135
126
 
136
127
  .@{ant-prefix}-table-scroll-horizontal {
@@ -166,33 +157,8 @@
166
157
  }
167
158
 
168
159
  .@{ant-prefix}-table-thead>tr>th:not(.@{ant-prefix}-table-selection-column):not(.@{ant-prefix}-table-row-expand-icon-cell):not([colspan]).is-required {
169
- &::after {
170
- content: "";
171
- }
172
-
173
- &.is-required-left {
174
- &::before {
175
- content: "";
176
- }
177
- }
178
- .pro-edit-table-title {
179
- &::after {
180
- width: auto;
181
- position : static;
182
- top : 0;
183
- display : inline-block;
184
- margin-left: var(--zaui-space-size-xs, 4px);
185
- color : #ff5050;
186
- font-size : var(--zaui-font-size-md, 14px);
187
- line-height: 1;
188
- content : "*";
189
- }
190
-
191
- &.is-required-left {
192
- &::after {
193
- display: none;
194
- }
195
-
160
+ &.is-required-right {
161
+ .pro-edit-table-title {
196
162
  &::before {
197
163
  position : static;
198
164
  top : 0;
@@ -205,6 +171,21 @@
205
171
  }
206
172
  }
207
173
  }
174
+ &.is-required-left {
175
+ .pro-edit-table-title {
176
+ &::after {
177
+ width: auto;
178
+ position : static;
179
+ top : 0;
180
+ display : inline-block;
181
+ margin-left: var(--zaui-space-size-xs, 4px);
182
+ color : #ff5050;
183
+ font-size : 14px;
184
+ line-height: 1;
185
+ content : "*";
186
+ }
187
+ }
188
+ }
208
189
  }
209
190
  }
210
191
  }
@@ -250,8 +250,8 @@ export var transformColumns = function transformColumns() {
250
250
  item.className = classnames(_defineProperty({
251
251
  'is-hidden': hidden,
252
252
  'is-required': required || labelRequired,
253
- 'is-required-right': requiredAlign === 'right',
254
- 'is-required-left': requiredAlign === 'left'
253
+ 'is-required-left': requiredAlign === 'left',
254
+ 'is-required-right': requiredAlign === 'right'
255
255
  }, className, className));
256
256
  // 防止重复渲染导致className重复添加
257
257
  if (item.className) {
@@ -0,0 +1,7 @@
1
+ import { ProEnum } from '../propsType';
2
+ interface Props extends Pick<ProEnum, 'value' | 'onChange' | 'dataSource'> {
3
+ fieldValue: string;
4
+ fieldLabel: string;
5
+ }
6
+ declare const Group: (props: Props) => JSX.Element;
7
+ export default Group;
@@ -0,0 +1,42 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import classNames from 'classnames';
4
+ import { useEffect, useState } from 'react';
5
+ var Group = function Group(props) {
6
+ var value = props.value,
7
+ onChange = props.onChange,
8
+ dataSource = props.dataSource,
9
+ fieldValue = props.fieldValue,
10
+ fieldLabel = props.fieldLabel;
11
+ var _useState = useState(),
12
+ _useState2 = _slicedToArray(_useState, 2),
13
+ checked = _useState2[0],
14
+ setValue = _useState2[1];
15
+ useEffect(function () {
16
+ setValue(value);
17
+ }, [value]);
18
+ var handleClick = function handleClick(val) {
19
+ setValue(val);
20
+ onChange === null || onChange === void 0 ? void 0 : onChange(val);
21
+ };
22
+ if (dataSource.length === 0) {
23
+ return _jsx("span", {
24
+ children: "-"
25
+ });
26
+ }
27
+ return _jsx("div", {
28
+ className: "pro-enum-group-root",
29
+ children: dataSource.map(function (item) {
30
+ return _jsxs("div", {
31
+ onClick: function onClick() {
32
+ return handleClick(item[fieldValue]);
33
+ },
34
+ className: classNames('pro-enum-group-item', checked === item[fieldValue] ? 'pro-enum-group-item-selected' : ''),
35
+ children: [_jsx("div", {
36
+ className: "pro-enum-group-item-after"
37
+ }), item[fieldLabel]]
38
+ }, item[fieldValue]);
39
+ })
40
+ });
41
+ };
42
+ export default Group;
@@ -20,6 +20,7 @@ import { cloneDeep, isFunction, isString, isArray, omit } from 'lodash';
20
20
  import ProSelect from '../ProSelect';
21
21
  import { useProConfig } from '../ProConfigProvider';
22
22
  import ProEnumTag from './components/Tag';
23
+ import ProEnumGroup from './components/Group';
23
24
  import Container from '../ProForm/components/Container';
24
25
  import { isObject } from './utils';
25
26
  import getEnumLabel from './utils/getEnumLabel';
@@ -205,6 +206,14 @@ var ProEnum = function ProEnum(props) {
205
206
  fieldValue: fieldValue,
206
207
  dataSource: list
207
208
  });
209
+ case 'Group':
210
+ return _jsx(ProEnumGroup, {
211
+ value: value,
212
+ onChange: onChange,
213
+ fieldLabel: label,
214
+ fieldValue: fieldValue,
215
+ dataSource: list
216
+ });
208
217
  default:
209
218
  return null;
210
219
  }
@@ -42,7 +42,7 @@ export interface ProEnumConfig {
42
42
  };
43
43
  dics: Record<string, DataOption[]>;
44
44
  }
45
- type ProEnumType = 'ProSelect' | 'Radio' | 'Checkbox' | 'Tag';
45
+ type ProEnumType = 'ProSelect' | 'Radio' | 'Checkbox' | 'Tag' | 'Group';
46
46
  export interface ProEnum {
47
47
  /** 组件展示类型、默认 ProSelect */
48
48
  type?: ProEnumType;
@@ -86,7 +86,7 @@ export type CheckboxPropsMap = {
86
86
  type?: 'Checkbox';
87
87
  } & CheckboxProps;
88
88
  export interface TagPropsMap {
89
- type?: 'Tag';
89
+ type?: 'Tag' | 'Group';
90
90
  }
91
91
  export type ProEnumProps = Omit<ProEnum, 'type'> & (PropProSelectsMap | PropRadioPropsMap | CheckboxPropsMap | TagPropsMap);
92
92
  export {};
@@ -27,4 +27,53 @@
27
27
  background-color: #f5f5f5;
28
28
  pointer-events: none;
29
29
  }
30
+
31
+ &-group-root {
32
+ display: flex;
33
+ flex-direction: row;
34
+ flex-wrap: wrap;
35
+
36
+ .pro-enum-group-item {
37
+ position: relative;
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ // margin-right: var(--zaui-space-size-sm);
42
+ margin-bottom: calc(var(--zaui-space-size-sm; 8px) * var(--zaui-size; 1));
43
+ padding: var(--zaui-space-size-xs) 10px;
44
+ background-color: #f5f5f5;
45
+ cursor: pointer;
46
+
47
+ .pro-enum-group-item-after {
48
+ position: absolute;
49
+ top: var(--zaui-space-size-xs);
50
+ right: 0;
51
+ bottom: var(--zaui-space-size-xs);
52
+ width: 1px;
53
+ // height: ;
54
+ background: var(--zaui-brand);
55
+ opacity: 0.7;
56
+ }
57
+
58
+ &:first-child {
59
+ border-top-left-radius: var(--zaui-space-size-xs);
60
+ border-bottom-left-radius: var(--zaui-space-size-xs);
61
+ }
62
+ &:last-child {
63
+ border-top-right-radius: var(--zaui-space-size-xs);
64
+ border-bottom-right-radius: var(--zaui-space-size-xs);
65
+ .pro-enum-group-item-after {
66
+ width: 0;
67
+ }
68
+ }
69
+ }
70
+
71
+ .pro-enum-group-item-selected {
72
+ color: var(--zaui-brand);
73
+ border: 1px solid var(--zaui-brand);
74
+ .pro-enum-group-item-after {
75
+ width: 0;
76
+ }
77
+ }
78
+ }
30
79
  }
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { ProFormColumnProps } from '@/ProForm/propsType';
3
+ interface Props<T = any> {
4
+ value?: T;
5
+ onChange?: (value: T, ...rest: any[]) => void;
6
+ confirmProps: ProFormColumnProps['confirmProps'];
7
+ [K: string]: any;
8
+ }
9
+ declare const ConfirmWrapper: React.FC<Props>;
10
+ export default ConfirmWrapper;
@@ -0,0 +1,53 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import "antd/es/modal/style";
3
+ import _Modal from "antd/es/modal";
4
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
5
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
6
+ var _excluded = ["onChange", "children", "confirmProps"];
7
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
8
+ import { isFunction } from 'lodash';
9
+ import React from 'react';
10
+ import ProForm from '@/ProForm';
11
+ var defaultConfirmProps = {
12
+ title: '点击确定完成修改'
13
+ };
14
+ var ConfirmWrapper = function ConfirmWrapper(props) {
15
+ var onChange = props.onChange,
16
+ children = props.children,
17
+ confirmProps = props.confirmProps,
18
+ rest = _objectWithoutProperties(props, _excluded);
19
+ var needConfirm = confirmProps.needConfirm;
20
+ var _ProForm$useFieldProp = ProForm.useFieldProps(),
21
+ form = _ProForm$useFieldProp.form;
22
+ var handleOk = function handleOk(changeProps, okProps) {
23
+ var _confirmProps$onOk;
24
+ confirmProps === null || confirmProps === void 0 ? void 0 : (_confirmProps$onOk = confirmProps.onOk) === null || _confirmProps$onOk === void 0 ? void 0 : _confirmProps$onOk.call.apply(_confirmProps$onOk, [confirmProps].concat(_toConsumableArray(okProps)));
25
+ // @ts-ignore
26
+ onChange === null || onChange === void 0 ? void 0 : onChange.apply(void 0, _toConsumableArray(changeProps));
27
+ };
28
+ var handleChange = function handleChange(value) {
29
+ for (var _len = arguments.length, other = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
30
+ other[_key - 1] = arguments[_key];
31
+ }
32
+ if (needConfirm === true || isFunction(needConfirm) && needConfirm(form.getFieldsValue())) {
33
+ _Modal.confirm(_objectSpread(_objectSpread(_objectSpread({}, defaultConfirmProps), confirmProps), {}, {
34
+ onOk: function onOk() {
35
+ for (var _len2 = arguments.length, arg = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
36
+ arg[_key2] = arguments[_key2];
37
+ }
38
+ return handleOk([value].concat(other), arg);
39
+ }
40
+ }));
41
+ } else {
42
+ onChange === null || onChange === void 0 ? void 0 : onChange.apply(void 0, [value].concat(other));
43
+ }
44
+ };
45
+ return _jsx(_Fragment, {
46
+ children: /*#__PURE__*/React.isValidElement(children) && /*#__PURE__*/React.cloneElement(children, _objectSpread(_objectSpread({}, rest), {}, {
47
+ // @ts-ignore
48
+ value: rest.value === undefined ? null : rest.value,
49
+ onChange: handleChange
50
+ }))
51
+ });
52
+ };
53
+ export default ConfirmWrapper;
@@ -31,6 +31,7 @@ import valueTypeMap from '../../utils/valueType';
31
31
  import { useChanged } from '../../utils/useChanged';
32
32
  import tipSvg from '../../../assets/tip.svg';
33
33
  import useRules from '../../utils/useRules';
34
+ import ConfirmWrapper from './ConfirmWrapper';
34
35
  // 这个组件只管渲染, 参数的整理在外部处理
35
36
  var Render = function Render(props) {
36
37
  var _ref2, _otherProps$names2;
@@ -51,7 +52,8 @@ var Render = function Render(props) {
51
52
  originalValues = props.originalValues,
52
53
  equalWith = props.equalWith,
53
54
  requiredOnView = props.requiredOnView,
54
- originalTip = props.originalTip;
55
+ originalTip = props.originalTip,
56
+ confirmProps = props.confirmProps;
55
57
  var colProps = props.colProps;
56
58
  // 剔除一些不是FormItem的属性, 防止控制台报warning
57
59
  var labelWidth = formItemProps.labelWidth,
@@ -354,6 +356,13 @@ var Render = function Render(props) {
354
356
  onChange: handleChange,
355
357
  onBlur: handleBlur
356
358
  }));
359
+ if (confirmProps === null || confirmProps === void 0 ? void 0 : confirmProps.needConfirm) {
360
+ child = _jsx(ConfirmWrapper, _objectSpread(_objectSpread({
361
+ confirmProps: confirmProps
362
+ }, childProps), {}, {
363
+ children: child
364
+ }));
365
+ }
357
366
  // 表单提示
358
367
  if (tooltip) {
359
368
  _otherFormItemProps.tooltip = {
@@ -1,6 +1,6 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- var _excluded = ["show", "type", "viewRender", "viewType", "valueType", "formItemProps", "colProps", "formItemChildProps", "fieldProps", "equalWith", "clearNotShow", "required"];
3
+ var _excluded = ["show", "type", "viewRender", "viewType", "valueType", "formItemProps", "colProps", "formItemChildProps", "fieldProps", "equalWith", "clearNotShow", "required", "confirmProps"];
4
4
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
5
5
  import React from 'react';
6
6
  import { isBoolean, isFunction, union, isString } from 'lodash';
@@ -71,6 +71,7 @@ var RenderFields = function RenderFields(props) {
71
71
  _column$clearNotShow = column.clearNotShow,
72
72
  clearNotShow = _column$clearNotShow === void 0 ? outerClearNotShow : _column$clearNotShow,
73
73
  columnRequired = column.required,
74
+ confirmProps = column.confirmProps,
74
75
  otherFormItemProps = _objectWithoutProperties(column, _excluded);
75
76
  var component = column.component;
76
77
  var _isView = typeof column.isView === 'boolean' ? column.isView : isView;
@@ -194,6 +195,7 @@ var RenderFields = function RenderFields(props) {
194
195
  component: TargetComponent,
195
196
  // @ts-ignore
196
197
  formItemProps: _formItemProps,
198
+ confirmProps: confirmProps,
197
199
  colProps: _colProps,
198
200
  componentProps: componentProps,
199
201
  otherProps: otherProps,
@@ -1,4 +1,4 @@
1
- import { ColProps, FormInstance, FormItemProps } from 'antd';
1
+ import { ColProps, FormInstance, FormItemProps, ModalFuncProps } from 'antd';
2
2
  import { NamePath } from 'antd/es/form/interface';
3
3
  import React from 'react';
4
4
  import { validate, regExp } from '@zat-design/utils';
@@ -175,7 +175,7 @@ export type ColumnPropsMap<Values = any, T = 'ProForm'> = {
175
175
  type?: 'Container';
176
176
  fieldProps?: any;
177
177
  };
178
- interface ProFormColumnProps<Values = any> extends Omit<FormItemProps<Values>, 'rules' | 'required'> {
178
+ export interface ProFormColumnProps<Values = any> extends Omit<FormItemProps<Values>, 'rules' | 'required'> {
179
179
  component?: React.ReactNode | ReactiveFunction<Values, React.ReactNode>;
180
180
  names?: NamePath[];
181
181
  show?: boolean | ReactiveFunction<Values, boolean>;
@@ -224,6 +224,9 @@ interface ProFormColumnProps<Values = any> extends Omit<FormItemProps<Values>, '
224
224
  extra?: string | React.ReactNode;
225
225
  /** 是否固定字段, 不隐藏 */
226
226
  fixed?: boolean;
227
+ confirmProps?: ModalFuncProps & {
228
+ needConfirm?: boolean | ((values: any) => boolean);
229
+ };
227
230
  }
228
231
  export type ProColumnProps<T = any> = ProFormColumnProps<T> & ColumnPropsMap<T, 'ProForm'>;
229
232
  /**
@@ -268,6 +271,7 @@ export interface RenderProps<Values = any> {
268
271
  isSelect: boolean;
269
272
  originalValues?: Values;
270
273
  requiredOnView?: boolean;
274
+ confirmProps?: ProFormColumnProps['confirmProps'];
271
275
  [name: string]: any;
272
276
  }
273
277
  export {};
@@ -80,8 +80,7 @@ var RenderColumn = function RenderColumn(props) {
80
80
  width: width
81
81
  },
82
82
  ellipsis: {
83
- tooltip: true,
84
- onEllipsis: function onEllipsis() {}
83
+ tooltip: true
85
84
  },
86
85
  children: node
87
86
  }) : '-';
@@ -24,7 +24,7 @@ export interface ProTableColumn extends Omit<ColumnType<any>, 'dataIndex'> {
24
24
  valueType?: ProTableValueType;
25
25
  format?: string;
26
26
  precision?: number;
27
- code?: string | string[] | (() => string);
27
+ code?: string | string[] | ((text: any, record: any) => string);
28
28
  copyable?: boolean;
29
29
  originalTip?: boolean;
30
30
  prefix?: string | ReactNode | ((value: any, record?: any, index?: number) => any);
@@ -208,7 +208,7 @@ export var formatColumn = function formatColumn(column, originalObj, dataSourceO
208
208
  };
209
209
  } else if (['enumName', 'enumCodeName'].includes(valueType)) {
210
210
  column.render = function (value, record, index) {
211
- var realCode = typeof code === 'function' ? code() : code;
211
+ var realCode = typeof code === 'function' ? code(value, record) : code;
212
212
  var renderValue = getEnumLabel(realCode, value, valueType === 'enumCodeName');
213
213
  var originalValue = getOriginalValue(value, record, originalObj, rowKey, dataIndex);
214
214
  var originalRenderValue = getEnumLabel(realCode, originalValue, valueType === 'enumCodeName');
@@ -25,7 +25,7 @@ var _empty = _interopRequireDefault(require("../assets/empty.png"));
25
25
  var _locale = _interopRequireWildcard(require("../locale"));
26
26
  var _excluded = ["value", "onChange", "className", "columns", "type", "mode", "stripe", "draggable", "disabled", "insertType", "emptyBtnText", "actionWidth", "actionProps", "toolbarProps", "rowSelection", "onlyOneLineMsg", "deletePoConfirmMsg", "mulDeletePoConfirmMsg", "otherProps", "requiredAlign", "summary", "max", "headerRender", "pagination", "originalValues", "originalTip", "rowKey"];
27
27
  var ProEditTable = function ProEditTable(_ref, ref) {
28
- var _resetProps$id, _resetProps$id$split, _value$2;
28
+ var _resetProps$id, _resetProps$id$split, _themeConfig$data2, _value$2;
29
29
  var value = _ref.value,
30
30
  onChange = _ref.onChange,
31
31
  className = _ref.className,
@@ -46,7 +46,7 @@ var ProEditTable = function ProEditTable(_ref, ref) {
46
46
  mulDeletePoConfirmMsg = _ref.mulDeletePoConfirmMsg,
47
47
  _ref$otherProps = _ref.otherProps,
48
48
  otherProps = _ref$otherProps === void 0 ? {} : _ref$otherProps,
49
- requiredAlign = _ref.requiredAlign,
49
+ configRequiredAlign = _ref.requiredAlign,
50
50
  summary = _ref.summary,
51
51
  max = _ref.max,
52
52
  headerRender = _ref.headerRender,
@@ -68,6 +68,13 @@ var ProEditTable = function ProEditTable(_ref, ref) {
68
68
  getPrefixCls = _React$useContext.getPrefixCls;
69
69
  var prefixCls = getPrefixCls();
70
70
  disabled = (otherProps === null || otherProps === void 0 ? void 0 : otherProps.disabled) || disabled;
71
+ var _useLocalStorageState = (0, _ahooks.useLocalStorageState)('themeConfig'),
72
+ _useLocalStorageState2 = (0, _slicedToArray2.default)(_useLocalStorageState, 1),
73
+ themeConfig = _useLocalStorageState2[0];
74
+ var requiredAlign = (0, _react.useMemo)(function () {
75
+ var _ref2, _themeConfig$data$zau, _themeConfig$data;
76
+ return (_ref2 = (_themeConfig$data$zau = themeConfig === null || themeConfig === void 0 ? void 0 : (_themeConfig$data = themeConfig.data) === null || _themeConfig$data === void 0 ? void 0 : _themeConfig$data.zauiFormAlign) !== null && _themeConfig$data$zau !== void 0 ? _themeConfig$data$zau : configRequiredAlign) !== null && _ref2 !== void 0 ? _ref2 : 'left';
77
+ }, [themeConfig === null || themeConfig === void 0 ? void 0 : (_themeConfig$data2 = themeConfig.data) === null || _themeConfig$data2 === void 0 ? void 0 : _themeConfig$data2.zauiFormAlign]);
71
78
  var _useSetState = (0, _ahooks.useSetState)({
72
79
  _columns: columns,
73
80
  cellNamePath: [],
@@ -104,8 +111,8 @@ var ProEditTable = function ProEditTable(_ref, ref) {
104
111
  var getRowKey = function getRowKey(record) {
105
112
  var key = record.rowKey || (0, _tools.getRandom)();
106
113
  if (rowKey) {
107
- var _ref2;
108
- key = (_ref2 = typeof rowKey === 'function' ? rowKey(record) : record[rowKey]) !== null && _ref2 !== void 0 ? _ref2 : key;
114
+ var _ref3;
115
+ key = (_ref3 = typeof rowKey === 'function' ? rowKey(record) : record[rowKey]) !== null && _ref3 !== void 0 ? _ref3 : key;
109
116
  }
110
117
  return key;
111
118
  };
@@ -229,7 +236,7 @@ var ProEditTable = function ProEditTable(_ref, ref) {
229
236
  return isForbiddenBtn('mulDelete') ? rowSelection : _rowSelection;
230
237
  };
231
238
  var setColumns = /*#__PURE__*/function () {
232
- var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
239
+ var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
233
240
  var nextColumns;
234
241
  return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
235
242
  while (1) switch (_context.prev = _context.next) {
@@ -248,7 +255,7 @@ var ProEditTable = function ProEditTable(_ref, ref) {
248
255
  }, _callee);
249
256
  }));
250
257
  return function setColumns() {
251
- return _ref3.apply(this, arguments);
258
+ return _ref4.apply(this, arguments);
252
259
  };
253
260
  }();
254
261
  (0, _ahooks.useDebounceEffect)(function () {
@@ -358,7 +365,6 @@ ForwardProEditTable.defaultProps = {
358
365
  type: 'multiple',
359
366
  mode: 'multiple',
360
367
  insertType: 'after',
361
- requiredAlign: 'right',
362
368
  value: [],
363
369
  actionProps: [],
364
370
  toolbarProps: [],
@@ -63,7 +63,8 @@
63
63
  .drag-wrapper {
64
64
  display: flex;
65
65
  .drag-icon {
66
- margin-right: var(--zaui-space-size-xs, 4px);
66
+ margin-right: var(--zaui-space-size-md, 16px);
67
+ margin-left: var(--zaui-space-size-xs, 4px);
67
68
  cursor: pointer;
68
69
  }
69
70
  }
@@ -92,33 +93,8 @@
92
93
  }
93
94
 
94
95
  .@{ant-prefix}-table-header>table .@{ant-prefix}-table-thead>tr>th:not(.@{ant-prefix}-table-selection-column):not(.@{ant-prefix}-table-row-expand-icon-cell):not([colspan]).is-required {
95
- &::after {
96
- content: "";
97
- }
98
-
99
- &.is-required-left {
100
- &::before {
101
- content: "";
102
- }
103
- }
104
- .pro-edit-table-title {
105
- &::after {
106
- width: auto;
107
- position : static;
108
- top : 0;
109
- display : inline-block;
110
- margin-left: var(--zaui-space-size-xs, 4px);
111
- color : #ff5050;
112
- font-size : 14px;
113
- line-height: 1;
114
- content : "*";
115
- }
116
-
117
- &.is-required-left {
118
- &::after {
119
- display: none;
120
- }
121
-
96
+ &.is-required-right {
97
+ .pro-edit-table-title {
122
98
  &::before {
123
99
  position : static;
124
100
  top : 0;
@@ -131,6 +107,21 @@
131
107
  }
132
108
  }
133
109
  }
110
+ &.is-required-left {
111
+ .pro-edit-table-title {
112
+ &::after {
113
+ width: auto;
114
+ position : static;
115
+ top : 0;
116
+ display : inline-block;
117
+ margin-left: var(--zaui-space-size-xs, 4px);
118
+ color : #ff5050;
119
+ font-size : 14px;
120
+ line-height: 1;
121
+ content : "*";
122
+ }
123
+ }
124
+ }
134
125
  }
135
126
 
136
127
  .@{ant-prefix}-table-scroll-horizontal {
@@ -166,33 +157,8 @@
166
157
  }
167
158
 
168
159
  .@{ant-prefix}-table-thead>tr>th:not(.@{ant-prefix}-table-selection-column):not(.@{ant-prefix}-table-row-expand-icon-cell):not([colspan]).is-required {
169
- &::after {
170
- content: "";
171
- }
172
-
173
- &.is-required-left {
174
- &::before {
175
- content: "";
176
- }
177
- }
178
- .pro-edit-table-title {
179
- &::after {
180
- width: auto;
181
- position : static;
182
- top : 0;
183
- display : inline-block;
184
- margin-left: var(--zaui-space-size-xs, 4px);
185
- color : #ff5050;
186
- font-size : var(--zaui-font-size-md, 14px);
187
- line-height: 1;
188
- content : "*";
189
- }
190
-
191
- &.is-required-left {
192
- &::after {
193
- display: none;
194
- }
195
-
160
+ &.is-required-right {
161
+ .pro-edit-table-title {
196
162
  &::before {
197
163
  position : static;
198
164
  top : 0;
@@ -205,6 +171,21 @@
205
171
  }
206
172
  }
207
173
  }
174
+ &.is-required-left {
175
+ .pro-edit-table-title {
176
+ &::after {
177
+ width: auto;
178
+ position : static;
179
+ top : 0;
180
+ display : inline-block;
181
+ margin-left: var(--zaui-space-size-xs, 4px);
182
+ color : #ff5050;
183
+ font-size : 14px;
184
+ line-height: 1;
185
+ content : "*";
186
+ }
187
+ }
188
+ }
208
189
  }
209
190
  }
210
191
  }
@@ -254,8 +254,8 @@ var transformColumns = exports.transformColumns = function transformColumns() {
254
254
  item.className = (0, _classnames2.default)((0, _defineProperty2.default)({
255
255
  'is-hidden': hidden,
256
256
  'is-required': required || labelRequired,
257
- 'is-required-right': requiredAlign === 'right',
258
- 'is-required-left': requiredAlign === 'left'
257
+ 'is-required-left': requiredAlign === 'left',
258
+ 'is-required-right': requiredAlign === 'right'
259
259
  }, className, className));
260
260
  // 防止重复渲染导致className重复添加
261
261
  if (item.className) {
@@ -0,0 +1,7 @@
1
+ import { ProEnum } from '../propsType';
2
+ interface Props extends Pick<ProEnum, 'value' | 'onChange' | 'dataSource'> {
3
+ fieldValue: string;
4
+ fieldLabel: string;
5
+ }
6
+ declare const Group: (props: Props) => JSX.Element;
7
+ export default Group;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ var _react = require("react");
12
+ var Group = function Group(props) {
13
+ var value = props.value,
14
+ onChange = props.onChange,
15
+ dataSource = props.dataSource,
16
+ fieldValue = props.fieldValue,
17
+ fieldLabel = props.fieldLabel;
18
+ var _useState = (0, _react.useState)(),
19
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
20
+ checked = _useState2[0],
21
+ setValue = _useState2[1];
22
+ (0, _react.useEffect)(function () {
23
+ setValue(value);
24
+ }, [value]);
25
+ var handleClick = function handleClick(val) {
26
+ setValue(val);
27
+ onChange === null || onChange === void 0 ? void 0 : onChange(val);
28
+ };
29
+ if (dataSource.length === 0) {
30
+ return (0, _jsxRuntime.jsx)("span", {
31
+ children: "-"
32
+ });
33
+ }
34
+ return (0, _jsxRuntime.jsx)("div", {
35
+ className: "pro-enum-group-root",
36
+ children: dataSource.map(function (item) {
37
+ return (0, _jsxRuntime.jsxs)("div", {
38
+ onClick: function onClick() {
39
+ return handleClick(item[fieldValue]);
40
+ },
41
+ className: (0, _classnames.default)('pro-enum-group-item', checked === item[fieldValue] ? 'pro-enum-group-item-selected' : ''),
42
+ children: [(0, _jsxRuntime.jsx)("div", {
43
+ className: "pro-enum-group-item-after"
44
+ }), item[fieldLabel]]
45
+ }, item[fieldValue]);
46
+ })
47
+ });
48
+ };
49
+ var _default = exports.default = Group;
@@ -19,6 +19,7 @@ var _lodash = require("lodash");
19
19
  var _ProSelect = _interopRequireDefault(require("../ProSelect"));
20
20
  var _ProConfigProvider = require("../ProConfigProvider");
21
21
  var _Tag = _interopRequireDefault(require("./components/Tag"));
22
+ var _Group = _interopRequireDefault(require("./components/Group"));
22
23
  var _Container = _interopRequireDefault(require("../ProForm/components/Container"));
23
24
  var _utils = require("./utils");
24
25
  var _getEnumLabel = _interopRequireDefault(require("./utils/getEnumLabel"));
@@ -206,6 +207,14 @@ var ProEnum = function ProEnum(props) {
206
207
  fieldValue: fieldValue,
207
208
  dataSource: list
208
209
  });
210
+ case 'Group':
211
+ return (0, _jsxRuntime.jsx)(_Group.default, {
212
+ value: value,
213
+ onChange: onChange,
214
+ fieldLabel: label,
215
+ fieldValue: fieldValue,
216
+ dataSource: list
217
+ });
209
218
  default:
210
219
  return null;
211
220
  }
@@ -42,7 +42,7 @@ export interface ProEnumConfig {
42
42
  };
43
43
  dics: Record<string, DataOption[]>;
44
44
  }
45
- type ProEnumType = 'ProSelect' | 'Radio' | 'Checkbox' | 'Tag';
45
+ type ProEnumType = 'ProSelect' | 'Radio' | 'Checkbox' | 'Tag' | 'Group';
46
46
  export interface ProEnum {
47
47
  /** 组件展示类型、默认 ProSelect */
48
48
  type?: ProEnumType;
@@ -86,7 +86,7 @@ export type CheckboxPropsMap = {
86
86
  type?: 'Checkbox';
87
87
  } & CheckboxProps;
88
88
  export interface TagPropsMap {
89
- type?: 'Tag';
89
+ type?: 'Tag' | 'Group';
90
90
  }
91
91
  export type ProEnumProps = Omit<ProEnum, 'type'> & (PropProSelectsMap | PropRadioPropsMap | CheckboxPropsMap | TagPropsMap);
92
92
  export {};
@@ -27,4 +27,53 @@
27
27
  background-color: #f5f5f5;
28
28
  pointer-events: none;
29
29
  }
30
+
31
+ &-group-root {
32
+ display: flex;
33
+ flex-direction: row;
34
+ flex-wrap: wrap;
35
+
36
+ .pro-enum-group-item {
37
+ position: relative;
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ // margin-right: var(--zaui-space-size-sm);
42
+ margin-bottom: calc(var(--zaui-space-size-sm; 8px) * var(--zaui-size; 1));
43
+ padding: var(--zaui-space-size-xs) 10px;
44
+ background-color: #f5f5f5;
45
+ cursor: pointer;
46
+
47
+ .pro-enum-group-item-after {
48
+ position: absolute;
49
+ top: var(--zaui-space-size-xs);
50
+ right: 0;
51
+ bottom: var(--zaui-space-size-xs);
52
+ width: 1px;
53
+ // height: ;
54
+ background: var(--zaui-brand);
55
+ opacity: 0.7;
56
+ }
57
+
58
+ &:first-child {
59
+ border-top-left-radius: var(--zaui-space-size-xs);
60
+ border-bottom-left-radius: var(--zaui-space-size-xs);
61
+ }
62
+ &:last-child {
63
+ border-top-right-radius: var(--zaui-space-size-xs);
64
+ border-bottom-right-radius: var(--zaui-space-size-xs);
65
+ .pro-enum-group-item-after {
66
+ width: 0;
67
+ }
68
+ }
69
+ }
70
+
71
+ .pro-enum-group-item-selected {
72
+ color: var(--zaui-brand);
73
+ border: 1px solid var(--zaui-brand);
74
+ .pro-enum-group-item-after {
75
+ width: 0;
76
+ }
77
+ }
78
+ }
30
79
  }
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { ProFormColumnProps } from '@/ProForm/propsType';
3
+ interface Props<T = any> {
4
+ value?: T;
5
+ onChange?: (value: T, ...rest: any[]) => void;
6
+ confirmProps: ProFormColumnProps['confirmProps'];
7
+ [K: string]: any;
8
+ }
9
+ declare const ConfirmWrapper: React.FC<Props>;
10
+ export default ConfirmWrapper;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ var _lodash = require("lodash");
13
+ var _react = _interopRequireDefault(require("react"));
14
+ var _antd = require("antd");
15
+ var _ProForm = _interopRequireDefault(require("@/ProForm"));
16
+ var _excluded = ["onChange", "children", "confirmProps"];
17
+ var defaultConfirmProps = {
18
+ title: '点击确定完成修改'
19
+ };
20
+ var ConfirmWrapper = function ConfirmWrapper(props) {
21
+ var onChange = props.onChange,
22
+ children = props.children,
23
+ confirmProps = props.confirmProps,
24
+ rest = (0, _objectWithoutProperties2.default)(props, _excluded);
25
+ var needConfirm = confirmProps.needConfirm;
26
+ var _ProForm$useFieldProp = _ProForm.default.useFieldProps(),
27
+ form = _ProForm$useFieldProp.form;
28
+ var handleOk = function handleOk(changeProps, okProps) {
29
+ var _confirmProps$onOk;
30
+ confirmProps === null || confirmProps === void 0 ? void 0 : (_confirmProps$onOk = confirmProps.onOk) === null || _confirmProps$onOk === void 0 ? void 0 : _confirmProps$onOk.call.apply(_confirmProps$onOk, [confirmProps].concat((0, _toConsumableArray2.default)(okProps)));
31
+ // @ts-ignore
32
+ onChange === null || onChange === void 0 ? void 0 : onChange.apply(void 0, (0, _toConsumableArray2.default)(changeProps));
33
+ };
34
+ var handleChange = function handleChange(value) {
35
+ for (var _len = arguments.length, other = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
36
+ other[_key - 1] = arguments[_key];
37
+ }
38
+ if (needConfirm === true || (0, _lodash.isFunction)(needConfirm) && needConfirm(form.getFieldsValue())) {
39
+ _antd.Modal.confirm((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, defaultConfirmProps), confirmProps), {}, {
40
+ onOk: function onOk() {
41
+ for (var _len2 = arguments.length, arg = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
42
+ arg[_key2] = arguments[_key2];
43
+ }
44
+ return handleOk([value].concat(other), arg);
45
+ }
46
+ }));
47
+ } else {
48
+ onChange === null || onChange === void 0 ? void 0 : onChange.apply(void 0, [value].concat(other));
49
+ }
50
+ };
51
+ return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
52
+ children: /*#__PURE__*/_react.default.isValidElement(children) && /*#__PURE__*/_react.default.cloneElement(children, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, rest), {}, {
53
+ // @ts-ignore
54
+ value: rest.value === undefined ? null : rest.value,
55
+ onChange: handleChange
56
+ }))
57
+ });
58
+ };
59
+ var _default = exports.default = ConfirmWrapper;
@@ -27,6 +27,7 @@ var _valueType = _interopRequireDefault(require("../../utils/valueType"));
27
27
  var _useChanged3 = require("../../utils/useChanged");
28
28
  var _tip = _interopRequireDefault(require("../../../assets/tip.svg"));
29
29
  var _useRules = _interopRequireDefault(require("../../utils/useRules"));
30
+ var _ConfirmWrapper = _interopRequireDefault(require("./ConfirmWrapper"));
30
31
  var _excluded = ["labelWidth", "hiddenNames", "trim", "upperCase", "className", "rules", "required", "labelRequired", "tooltip"];
31
32
  /* eslint-disable prefer-destructuring */
32
33
  // 这个组件只管渲染, 参数的整理在外部处理
@@ -49,7 +50,8 @@ var Render = function Render(props) {
49
50
  originalValues = props.originalValues,
50
51
  equalWith = props.equalWith,
51
52
  requiredOnView = props.requiredOnView,
52
- originalTip = props.originalTip;
53
+ originalTip = props.originalTip,
54
+ confirmProps = props.confirmProps;
53
55
  var colProps = props.colProps;
54
56
  // 剔除一些不是FormItem的属性, 防止控制台报warning
55
57
  var labelWidth = formItemProps.labelWidth,
@@ -352,6 +354,13 @@ var Render = function Render(props) {
352
354
  onChange: handleChange,
353
355
  onBlur: handleBlur
354
356
  }));
357
+ if (confirmProps === null || confirmProps === void 0 ? void 0 : confirmProps.needConfirm) {
358
+ child = (0, _jsxRuntime.jsx)(_ConfirmWrapper.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({
359
+ confirmProps: confirmProps
360
+ }, childProps), {}, {
361
+ children: child
362
+ }));
363
+ }
355
364
  // 表单提示
356
365
  if (tooltip) {
357
366
  _otherFormItemProps.tooltip = {
@@ -16,7 +16,7 @@ var componentMap = _interopRequireWildcard(require("../index"));
16
16
  var _utils = require("../../utils");
17
17
  var _useFieldProps = require("../../utils/useFieldProps");
18
18
  var _locale = _interopRequireDefault(require("../../../locale"));
19
- var _excluded = ["show", "type", "viewRender", "viewType", "valueType", "formItemProps", "colProps", "formItemChildProps", "fieldProps", "equalWith", "clearNotShow", "required"];
19
+ var _excluded = ["show", "type", "viewRender", "viewType", "valueType", "formItemProps", "colProps", "formItemChildProps", "fieldProps", "equalWith", "clearNotShow", "required", "confirmProps"];
20
20
  var RenderFields = function RenderFields(props) {
21
21
  var isView = props.isView,
22
22
  _props$columns = props.columns,
@@ -79,6 +79,7 @@ var RenderFields = function RenderFields(props) {
79
79
  _column$clearNotShow = column.clearNotShow,
80
80
  clearNotShow = _column$clearNotShow === void 0 ? outerClearNotShow : _column$clearNotShow,
81
81
  columnRequired = column.required,
82
+ confirmProps = column.confirmProps,
82
83
  otherFormItemProps = (0, _objectWithoutProperties2.default)(column, _excluded);
83
84
  var component = column.component;
84
85
  var _isView = typeof column.isView === 'boolean' ? column.isView : isView;
@@ -202,6 +203,7 @@ var RenderFields = function RenderFields(props) {
202
203
  component: TargetComponent,
203
204
  // @ts-ignore
204
205
  formItemProps: _formItemProps,
206
+ confirmProps: confirmProps,
205
207
  colProps: _colProps,
206
208
  componentProps: componentProps,
207
209
  otherProps: otherProps,
@@ -1,4 +1,4 @@
1
- import { ColProps, FormInstance, FormItemProps } from 'antd';
1
+ import { ColProps, FormInstance, FormItemProps, ModalFuncProps } from 'antd';
2
2
  import { NamePath } from 'antd/es/form/interface';
3
3
  import React from 'react';
4
4
  import { validate, regExp } from '@zat-design/utils';
@@ -175,7 +175,7 @@ export type ColumnPropsMap<Values = any, T = 'ProForm'> = {
175
175
  type?: 'Container';
176
176
  fieldProps?: any;
177
177
  };
178
- interface ProFormColumnProps<Values = any> extends Omit<FormItemProps<Values>, 'rules' | 'required'> {
178
+ export interface ProFormColumnProps<Values = any> extends Omit<FormItemProps<Values>, 'rules' | 'required'> {
179
179
  component?: React.ReactNode | ReactiveFunction<Values, React.ReactNode>;
180
180
  names?: NamePath[];
181
181
  show?: boolean | ReactiveFunction<Values, boolean>;
@@ -224,6 +224,9 @@ interface ProFormColumnProps<Values = any> extends Omit<FormItemProps<Values>, '
224
224
  extra?: string | React.ReactNode;
225
225
  /** 是否固定字段, 不隐藏 */
226
226
  fixed?: boolean;
227
+ confirmProps?: ModalFuncProps & {
228
+ needConfirm?: boolean | ((values: any) => boolean);
229
+ };
227
230
  }
228
231
  export type ProColumnProps<T = any> = ProFormColumnProps<T> & ColumnPropsMap<T, 'ProForm'>;
229
232
  /**
@@ -268,6 +271,7 @@ export interface RenderProps<Values = any> {
268
271
  isSelect: boolean;
269
272
  originalValues?: Values;
270
273
  requiredOnView?: boolean;
274
+ confirmProps?: ProFormColumnProps['confirmProps'];
271
275
  [name: string]: any;
272
276
  }
273
277
  export {};
@@ -84,8 +84,7 @@ var RenderColumn = function RenderColumn(props) {
84
84
  width: width
85
85
  },
86
86
  ellipsis: {
87
- tooltip: true,
88
- onEllipsis: function onEllipsis() {}
87
+ tooltip: true
89
88
  },
90
89
  children: node
91
90
  }) : '-';
@@ -24,7 +24,7 @@ export interface ProTableColumn extends Omit<ColumnType<any>, 'dataIndex'> {
24
24
  valueType?: ProTableValueType;
25
25
  format?: string;
26
26
  precision?: number;
27
- code?: string | string[] | (() => string);
27
+ code?: string | string[] | ((text: any, record: any) => string);
28
28
  copyable?: boolean;
29
29
  originalTip?: boolean;
30
30
  prefix?: string | ReactNode | ((value: any, record?: any, index?: number) => any);
@@ -215,7 +215,7 @@ var formatColumn = exports.formatColumn = function formatColumn(column, original
215
215
  };
216
216
  } else if (['enumName', 'enumCodeName'].includes(valueType)) {
217
217
  column.render = function (value, record, index) {
218
- var realCode = typeof code === 'function' ? code() : code;
218
+ var realCode = typeof code === 'function' ? code(value, record) : code;
219
219
  var renderValue = (0, _getEnumLabel.default)(realCode, value, valueType === 'enumCodeName');
220
220
  var originalValue = getOriginalValue(value, record, originalObj, rowKey, dataIndex);
221
221
  var originalRenderValue = (0, _getEnumLabel.default)(realCode, originalValue, valueType === 'enumCodeName');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zat-design/sisyphus-react",
3
- "version": "3.4.0-beta.3",
3
+ "version": "3.4.0-beta.4",
4
4
  "license": "Apache-2.0",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",