@zat-design/sisyphus-react 3.7.3-beta.3 → 3.7.3-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.css +47 -6
- package/dist/less.esm.css +47 -6
- package/es/ProEditTable/components/RenderField/ListChangedWrapper.d.ts +2 -1
- package/es/ProEditTable/components/RenderField/ListChangedWrapper.js +12 -5
- package/es/ProForm/components/combination/Container/index.js +5 -3
- package/es/ProForm/components/combination/Container/propsType.d.ts +2 -1
- package/es/ProForm/components/combination/ProNumberRange/index.js +3 -1
- package/es/ProForm/components/render/ChangedWrapper.d.ts +2 -1
- package/es/ProForm/components/render/ChangedWrapper.js +21 -7
- package/es/ProForm/components/render/RenderFields.js +1 -0
- package/es/ProForm/components/render/propsType.d.ts +2 -1
- package/es/ProForm/style/index.less +59 -6
- package/es/ProForm/utils/diffOriginal.d.ts +4 -4
- package/es/ProForm/utils/diffOriginal.js +18 -7
- package/lib/ProEditTable/components/RenderField/ListChangedWrapper.d.ts +2 -1
- package/lib/ProEditTable/components/RenderField/ListChangedWrapper.js +12 -5
- package/lib/ProForm/components/combination/Container/index.js +5 -3
- package/lib/ProForm/components/combination/Container/propsType.d.ts +2 -1
- package/lib/ProForm/components/combination/ProNumberRange/index.js +3 -1
- package/lib/ProForm/components/render/ChangedWrapper.d.ts +2 -1
- package/lib/ProForm/components/render/ChangedWrapper.js +21 -7
- package/lib/ProForm/components/render/RenderFields.js +1 -0
- package/lib/ProForm/components/render/propsType.d.ts +2 -1
- package/lib/ProForm/style/index.less +59 -6
- package/lib/ProForm/utils/diffOriginal.d.ts +4 -4
- package/lib/ProForm/utils/diffOriginal.js +18 -7
- package/package.json +1 -1
package/dist/index.esm.css
CHANGED
|
@@ -3063,7 +3063,7 @@ span.ant-input-group-compact.pro-range-limit .forever-checkbox {
|
|
|
3063
3063
|
.pro-form .pro-form-item-changed .ant-select .ant-select-selector,
|
|
3064
3064
|
.pro-form .pro-form-item-changed .ant-picker,
|
|
3065
3065
|
.pro-form .pro-form-item-changed .ant-input-number {
|
|
3066
|
-
background: var(--zaui-contract-bg, #fffaa1) !important;
|
|
3066
|
+
background: var(--change-tip-color, var(--zaui-contract-bg, #fffaa1)) !important;
|
|
3067
3067
|
}
|
|
3068
3068
|
.pro-form .pro-form-item-changed span.ant-input-affix-wrapper input,
|
|
3069
3069
|
.pro-form .pro-form-item-changed .ant-select .ant-select-selector input,
|
|
@@ -3079,25 +3079,66 @@ span.ant-input-group-compact.pro-range-limit .forever-checkbox {
|
|
|
3079
3079
|
}
|
|
3080
3080
|
.pro-form .pro-form-item-changed .ant-form-item-control:has(.ant-switch-handle),
|
|
3081
3081
|
.pro-form .pro-form-item-changed .ant-form-item-control:has(.ant-checkbox-wrapper-in-form-item) {
|
|
3082
|
-
background: var(--zaui-contract-bg, #fffaa1);
|
|
3082
|
+
background: var(--change-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3083
3083
|
border-radius: 4px;
|
|
3084
3084
|
}
|
|
3085
3085
|
.pro-form .pro-form-item-changed .ant-form-item-control-input-content > span {
|
|
3086
3086
|
border-radius: 4px;
|
|
3087
3087
|
padding: 5px 8px;
|
|
3088
|
-
background: var(--zaui-contract-bg, #fffaa1);
|
|
3088
|
+
background: var(--change-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3089
3089
|
}
|
|
3090
3090
|
.pro-form .pro-form-item-changed .ant-form-item-control-input-content > .pro-address .ant-select-selector,
|
|
3091
3091
|
.pro-form .pro-form-item-changed .ant-form-item-control-input-content > .pro-address .ant-input-affix-wrapper,
|
|
3092
3092
|
.pro-form .pro-form-item-changed .ant-form-item-control-input-content > .pro-address .ant-input-disabled {
|
|
3093
|
-
background: var(--zaui-contract-bg, #fffaa1);
|
|
3093
|
+
background: var(--change-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3094
3094
|
}
|
|
3095
3095
|
.pro-form .pro-form-item-changed .ant-form-item-control-input-content > .ant-input-group .forever-checkbox {
|
|
3096
|
-
background: var(--zaui-contract-bg, #fffaa1);
|
|
3096
|
+
background: var(--change-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3097
3097
|
}
|
|
3098
3098
|
.pro-form .pro-form-item-changed .pro-form-view-container {
|
|
3099
3099
|
padding: 4px 8px;
|
|
3100
|
-
background: var(--zaui-contract-bg, #fffaa1);
|
|
3100
|
+
background: var(--change-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3101
|
+
border-radius: 4px;
|
|
3102
|
+
}
|
|
3103
|
+
.pro-form .pro-form-item-add span.ant-input-affix-wrapper,
|
|
3104
|
+
.pro-form .pro-form-item-add .ant-select .ant-select-selector,
|
|
3105
|
+
.pro-form .pro-form-item-add .ant-picker,
|
|
3106
|
+
.pro-form .pro-form-item-add .ant-input-number {
|
|
3107
|
+
background: var(--add-tip-color, var(--zaui-contract-bg, #fffaa1)) !important;
|
|
3108
|
+
}
|
|
3109
|
+
.pro-form .pro-form-item-add span.ant-input-affix-wrapper input,
|
|
3110
|
+
.pro-form .pro-form-item-add .ant-select .ant-select-selector input,
|
|
3111
|
+
.pro-form .pro-form-item-add .ant-picker input,
|
|
3112
|
+
.pro-form .pro-form-item-add .ant-input-number input {
|
|
3113
|
+
background: transparent !important;
|
|
3114
|
+
}
|
|
3115
|
+
.pro-form .pro-form-item-add span.ant-input-affix-wrapper .ant-select-selection-placeholder,
|
|
3116
|
+
.pro-form .pro-form-item-add .ant-select .ant-select-selector .ant-select-selection-placeholder,
|
|
3117
|
+
.pro-form .pro-form-item-add .ant-picker .ant-select-selection-placeholder,
|
|
3118
|
+
.pro-form .pro-form-item-add .ant-input-number .ant-select-selection-placeholder {
|
|
3119
|
+
z-index: 9;
|
|
3120
|
+
}
|
|
3121
|
+
.pro-form .pro-form-item-add .ant-form-item-control:has(.ant-switch-handle),
|
|
3122
|
+
.pro-form .pro-form-item-add .ant-form-item-control:has(.ant-checkbox-wrapper-in-form-item) {
|
|
3123
|
+
background: var(--add-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3124
|
+
border-radius: 4px;
|
|
3125
|
+
}
|
|
3126
|
+
.pro-form .pro-form-item-add .ant-form-item-control-input-content > span {
|
|
3127
|
+
border-radius: 4px;
|
|
3128
|
+
padding: 5px 8px;
|
|
3129
|
+
background: var(--add-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3130
|
+
}
|
|
3131
|
+
.pro-form .pro-form-item-add .ant-form-item-control-input-content > .pro-address .ant-select-selector,
|
|
3132
|
+
.pro-form .pro-form-item-add .ant-form-item-control-input-content > .pro-address .ant-input-affix-wrapper,
|
|
3133
|
+
.pro-form .pro-form-item-add .ant-form-item-control-input-content > .pro-address .ant-input-disabled {
|
|
3134
|
+
background: var(--add-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3135
|
+
}
|
|
3136
|
+
.pro-form .pro-form-item-add .ant-form-item-control-input-content > .ant-input-group .forever-checkbox {
|
|
3137
|
+
background: var(--add-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3138
|
+
}
|
|
3139
|
+
.pro-form .pro-form-item-add .pro-form-view-container {
|
|
3140
|
+
padding: 4px 8px;
|
|
3141
|
+
background: var(--add-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3101
3142
|
border-radius: 4px;
|
|
3102
3143
|
}
|
|
3103
3144
|
.pro-upload .pro-upload-dragger .pro-upload-handle-box {
|
package/dist/less.esm.css
CHANGED
|
@@ -3063,7 +3063,7 @@ span.ant-input-group-compact.pro-range-limit .forever-checkbox {
|
|
|
3063
3063
|
.pro-form .pro-form-item-changed .ant-select .ant-select-selector,
|
|
3064
3064
|
.pro-form .pro-form-item-changed .ant-picker,
|
|
3065
3065
|
.pro-form .pro-form-item-changed .ant-input-number {
|
|
3066
|
-
background: var(--zaui-contract-bg, #fffaa1) !important;
|
|
3066
|
+
background: var(--change-tip-color, var(--zaui-contract-bg, #fffaa1)) !important;
|
|
3067
3067
|
}
|
|
3068
3068
|
.pro-form .pro-form-item-changed span.ant-input-affix-wrapper input,
|
|
3069
3069
|
.pro-form .pro-form-item-changed .ant-select .ant-select-selector input,
|
|
@@ -3079,25 +3079,66 @@ span.ant-input-group-compact.pro-range-limit .forever-checkbox {
|
|
|
3079
3079
|
}
|
|
3080
3080
|
.pro-form .pro-form-item-changed .ant-form-item-control:has(.ant-switch-handle),
|
|
3081
3081
|
.pro-form .pro-form-item-changed .ant-form-item-control:has(.ant-checkbox-wrapper-in-form-item) {
|
|
3082
|
-
background: var(--zaui-contract-bg, #fffaa1);
|
|
3082
|
+
background: var(--change-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3083
3083
|
border-radius: 4px;
|
|
3084
3084
|
}
|
|
3085
3085
|
.pro-form .pro-form-item-changed .ant-form-item-control-input-content > span {
|
|
3086
3086
|
border-radius: 4px;
|
|
3087
3087
|
padding: 5px 8px;
|
|
3088
|
-
background: var(--zaui-contract-bg, #fffaa1);
|
|
3088
|
+
background: var(--change-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3089
3089
|
}
|
|
3090
3090
|
.pro-form .pro-form-item-changed .ant-form-item-control-input-content > .pro-address .ant-select-selector,
|
|
3091
3091
|
.pro-form .pro-form-item-changed .ant-form-item-control-input-content > .pro-address .ant-input-affix-wrapper,
|
|
3092
3092
|
.pro-form .pro-form-item-changed .ant-form-item-control-input-content > .pro-address .ant-input-disabled {
|
|
3093
|
-
background: var(--zaui-contract-bg, #fffaa1);
|
|
3093
|
+
background: var(--change-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3094
3094
|
}
|
|
3095
3095
|
.pro-form .pro-form-item-changed .ant-form-item-control-input-content > .ant-input-group .forever-checkbox {
|
|
3096
|
-
background: var(--zaui-contract-bg, #fffaa1);
|
|
3096
|
+
background: var(--change-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3097
3097
|
}
|
|
3098
3098
|
.pro-form .pro-form-item-changed .pro-form-view-container {
|
|
3099
3099
|
padding: 4px 8px;
|
|
3100
|
-
background: var(--zaui-contract-bg, #fffaa1);
|
|
3100
|
+
background: var(--change-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3101
|
+
border-radius: 4px;
|
|
3102
|
+
}
|
|
3103
|
+
.pro-form .pro-form-item-add span.ant-input-affix-wrapper,
|
|
3104
|
+
.pro-form .pro-form-item-add .ant-select .ant-select-selector,
|
|
3105
|
+
.pro-form .pro-form-item-add .ant-picker,
|
|
3106
|
+
.pro-form .pro-form-item-add .ant-input-number {
|
|
3107
|
+
background: var(--add-tip-color, var(--zaui-contract-bg, #fffaa1)) !important;
|
|
3108
|
+
}
|
|
3109
|
+
.pro-form .pro-form-item-add span.ant-input-affix-wrapper input,
|
|
3110
|
+
.pro-form .pro-form-item-add .ant-select .ant-select-selector input,
|
|
3111
|
+
.pro-form .pro-form-item-add .ant-picker input,
|
|
3112
|
+
.pro-form .pro-form-item-add .ant-input-number input {
|
|
3113
|
+
background: transparent !important;
|
|
3114
|
+
}
|
|
3115
|
+
.pro-form .pro-form-item-add span.ant-input-affix-wrapper .ant-select-selection-placeholder,
|
|
3116
|
+
.pro-form .pro-form-item-add .ant-select .ant-select-selector .ant-select-selection-placeholder,
|
|
3117
|
+
.pro-form .pro-form-item-add .ant-picker .ant-select-selection-placeholder,
|
|
3118
|
+
.pro-form .pro-form-item-add .ant-input-number .ant-select-selection-placeholder {
|
|
3119
|
+
z-index: 9;
|
|
3120
|
+
}
|
|
3121
|
+
.pro-form .pro-form-item-add .ant-form-item-control:has(.ant-switch-handle),
|
|
3122
|
+
.pro-form .pro-form-item-add .ant-form-item-control:has(.ant-checkbox-wrapper-in-form-item) {
|
|
3123
|
+
background: var(--add-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3124
|
+
border-radius: 4px;
|
|
3125
|
+
}
|
|
3126
|
+
.pro-form .pro-form-item-add .ant-form-item-control-input-content > span {
|
|
3127
|
+
border-radius: 4px;
|
|
3128
|
+
padding: 5px 8px;
|
|
3129
|
+
background: var(--add-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3130
|
+
}
|
|
3131
|
+
.pro-form .pro-form-item-add .ant-form-item-control-input-content > .pro-address .ant-select-selector,
|
|
3132
|
+
.pro-form .pro-form-item-add .ant-form-item-control-input-content > .pro-address .ant-input-affix-wrapper,
|
|
3133
|
+
.pro-form .pro-form-item-add .ant-form-item-control-input-content > .pro-address .ant-input-disabled {
|
|
3134
|
+
background: var(--add-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3135
|
+
}
|
|
3136
|
+
.pro-form .pro-form-item-add .ant-form-item-control-input-content > .ant-input-group .forever-checkbox {
|
|
3137
|
+
background: var(--add-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3138
|
+
}
|
|
3139
|
+
.pro-form .pro-form-item-add .pro-form-view-container {
|
|
3140
|
+
padding: 4px 8px;
|
|
3141
|
+
background: var(--add-tip-color, var(--zaui-contract-bg, #fffaa1));
|
|
3101
3142
|
border-radius: 4px;
|
|
3102
3143
|
}
|
|
3103
3144
|
.pro-upload .pro-upload-dragger .pro-upload-handle-box {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { FormInstance } from 'antd';
|
|
3
3
|
import { NamePath } from 'antd/lib/form/interface';
|
|
4
|
+
import { DiffOriginalParams } from '../../../ProForm/utils/diffOriginal';
|
|
4
5
|
interface Props {
|
|
5
6
|
name?: NamePath;
|
|
6
7
|
names?: NamePath[];
|
|
@@ -9,7 +10,7 @@ interface Props {
|
|
|
9
10
|
namesStr?: NamePath;
|
|
10
11
|
originalValues?: any;
|
|
11
12
|
form: FormInstance;
|
|
12
|
-
equalWith?:
|
|
13
|
+
equalWith?: DiffOriginalParams['equalWith'];
|
|
13
14
|
[name: string]: any;
|
|
14
15
|
}
|
|
15
16
|
declare const ListChangedWrapper: React.FC<Props>;
|
|
@@ -7,6 +7,7 @@ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutPr
|
|
|
7
7
|
var _excluded = ["name", "names", "namesStr", "originalName", "originalNames", "originalValues", "form", "equalWith", "rowKeyPath", "children", "type"];
|
|
8
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
9
|
import React, { useMemo } from 'react';
|
|
10
|
+
import classNames from 'classnames';
|
|
10
11
|
import { get } from 'lodash';
|
|
11
12
|
import { diffOriginal } from '../../../ProForm/utils/diffOriginal';
|
|
12
13
|
import { useProConfig } from '../../../ProConfigProvider';
|
|
@@ -78,8 +79,8 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
|
|
|
78
79
|
children = props.children,
|
|
79
80
|
type = props.type,
|
|
80
81
|
rest = _objectWithoutProperties(props, _excluded);
|
|
81
|
-
var
|
|
82
|
-
isDiffAll =
|
|
82
|
+
var _ref2 = useProConfig('ProEditTable') || {},
|
|
83
|
+
isDiffAll = _ref2.isDiffAll;
|
|
83
84
|
var namePath = toNamePath(namesStr || name);
|
|
84
85
|
var originalNamePath = toNamePath(originalName);
|
|
85
86
|
var originalNamePaths = originalNames && toNamePaths(originalNames);
|
|
@@ -93,8 +94,8 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
|
|
|
93
94
|
form: form
|
|
94
95
|
}) : undefined;
|
|
95
96
|
var noChange = !equalWith && (!originalValues || isDiffAll ? false : isEmpty(originalValue));
|
|
96
|
-
var
|
|
97
|
-
if (!isWatch || noChange) return
|
|
97
|
+
var diffType = useMemo(function () {
|
|
98
|
+
if (!isWatch || noChange) return 'same';
|
|
98
99
|
return diffOriginal({
|
|
99
100
|
value: props.value,
|
|
100
101
|
originalValue: originalValue,
|
|
@@ -103,9 +104,15 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
|
|
|
103
104
|
// name: isString(namesStr) ? namesStr : originalName || name,
|
|
104
105
|
});
|
|
105
106
|
}, [props.value, originalValue]);
|
|
107
|
+
var isAdd = diffType === 'add';
|
|
108
|
+
var isChanged = diffType === 'changed';
|
|
106
109
|
if (!isWatch || noChange) {
|
|
107
110
|
return /*#__PURE__*/React.isValidElement(children) && /*#__PURE__*/React.cloneElement(children, _objectSpread(_objectSpread({}, children.props), rest));
|
|
108
111
|
}
|
|
112
|
+
var diffClassName = classNames({
|
|
113
|
+
'pro-form-item-changed': isChanged,
|
|
114
|
+
'pro-form-item-add': isAdd
|
|
115
|
+
});
|
|
109
116
|
return _jsx(_Tooltip, {
|
|
110
117
|
// 传入undefined 鼠标移入显示移出隐藏
|
|
111
118
|
open: isChanged ? undefined : false,
|
|
@@ -121,7 +128,7 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
|
|
|
121
128
|
})) : undefined]
|
|
122
129
|
}),
|
|
123
130
|
children: _jsx("div", {
|
|
124
|
-
className:
|
|
131
|
+
className: diffClassName,
|
|
125
132
|
children: /*#__PURE__*/React.isValidElement(children) ? /*#__PURE__*/React.cloneElement(children, _objectSpread(_objectSpread({}, children.props), rest)) : undefined
|
|
126
133
|
})
|
|
127
134
|
});
|
|
@@ -9,11 +9,12 @@ import ProCollapse from '../../../../ProLayout/components/ProCollapse';
|
|
|
9
9
|
import ProForm from '../../../../ProForm';
|
|
10
10
|
var Container = function Container(props) {
|
|
11
11
|
var children = props.children,
|
|
12
|
-
otherProps = props.otherProps,
|
|
13
12
|
className = props.className,
|
|
14
13
|
container = props.container,
|
|
15
14
|
show = props.show,
|
|
16
|
-
clearNotShow = props.clearNotShow
|
|
15
|
+
clearNotShow = props.clearNotShow,
|
|
16
|
+
diffConfig = props.diffConfig,
|
|
17
|
+
otherProps = props.otherProps;
|
|
17
18
|
var _ref = ProForm.useFieldProps() || {},
|
|
18
19
|
type = _ref.type,
|
|
19
20
|
form = _ref.form,
|
|
@@ -38,7 +39,8 @@ var Container = function Container(props) {
|
|
|
38
39
|
var childRender = function childRender() {
|
|
39
40
|
var child = _jsx(RenderFields, _objectSpread({
|
|
40
41
|
columns: _children,
|
|
41
|
-
form: form
|
|
42
|
+
form: form,
|
|
43
|
+
diffConfig: diffConfig
|
|
42
44
|
}, otherProps));
|
|
43
45
|
if (type === 'ProCollapse') {
|
|
44
46
|
return _jsx(ProCollapse, _objectSpread(_objectSpread({}, omit(props, ['otherProps', 'children', 'onBlur', 'onChange', 'placeholder', 'className'])), {}, {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { RowProps } from 'antd';
|
|
3
|
-
import { ProColumnProps, ProFormOtherProps } from '../../../propsType';
|
|
3
|
+
import { ProColumnProps, ProFormOtherProps, DiffConfigProps } from '../../../propsType';
|
|
4
4
|
export interface ContainerProps {
|
|
5
5
|
children?: ProColumnProps[];
|
|
6
6
|
otherProps?: ProFormOtherProps;
|
|
@@ -8,5 +8,6 @@ export interface ContainerProps {
|
|
|
8
8
|
className?: string;
|
|
9
9
|
container?: string | React.ReactNode;
|
|
10
10
|
show?: boolean | (() => boolean);
|
|
11
|
+
diffConfig?: DiffConfigProps;
|
|
11
12
|
clearNotShow?: boolean;
|
|
12
13
|
}
|
|
@@ -91,7 +91,9 @@ var ProNumberRange = function ProNumberRange(props) {
|
|
|
91
91
|
});
|
|
92
92
|
// 查看模式
|
|
93
93
|
if (isView || props.isView) {
|
|
94
|
-
if (isEmpty(value)) {
|
|
94
|
+
if (isEmpty(value) || (value === null || value === void 0 ? void 0 : value.every(function (item) {
|
|
95
|
+
return typeof item !== 'number';
|
|
96
|
+
}))) {
|
|
95
97
|
return viewEmpty;
|
|
96
98
|
}
|
|
97
99
|
switch (valueType) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FormInstance } from 'antd';
|
|
2
2
|
import { NamePath } from 'antd/lib/form/interface';
|
|
3
3
|
import React from 'react';
|
|
4
|
+
import { DiffOriginalParams } from '../../utils/diffOriginal';
|
|
4
5
|
import { DiffConfigProps } from '../../propsType';
|
|
5
6
|
interface Props {
|
|
6
7
|
name?: NamePath;
|
|
@@ -8,7 +9,7 @@ interface Props {
|
|
|
8
9
|
namesStr?: string;
|
|
9
10
|
diffConfig?: DiffConfigProps;
|
|
10
11
|
form: FormInstance;
|
|
11
|
-
equalWith?:
|
|
12
|
+
equalWith?: DiffOriginalParams['equalWith'];
|
|
12
13
|
[name: string]: any;
|
|
13
14
|
}
|
|
14
15
|
declare const ChangedWrapper: React.FC<Props>;
|
|
@@ -6,6 +6,7 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
|
6
6
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
7
7
|
var _excluded = ["name", "names", "namesStr", "form", "equalWith", "children", "type", "diffConfig"];
|
|
8
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
import classNames from 'classnames';
|
|
9
10
|
import { get } from 'lodash';
|
|
10
11
|
import React, { useMemo } from 'react';
|
|
11
12
|
import { diffOriginal } from '../../utils/diffOriginal';
|
|
@@ -24,7 +25,11 @@ var ChangedWrapper = function ChangedWrapper(props) {
|
|
|
24
25
|
rest = _objectWithoutProperties(props, _excluded);
|
|
25
26
|
var _useProConfig = useProConfig('ProForm'),
|
|
26
27
|
isDiffAll = _useProConfig.isDiffAll;
|
|
27
|
-
var originalValues = diffConfig.originalValues
|
|
28
|
+
var originalValues = diffConfig.originalValues,
|
|
29
|
+
_diffConfig$changeTip = diffConfig.changeTipColor,
|
|
30
|
+
changeTipColor = _diffConfig$changeTip === void 0 ? '#fffaa1' : _diffConfig$changeTip,
|
|
31
|
+
_diffConfig$addTipCol = diffConfig.addTipColor,
|
|
32
|
+
addTipColor = _diffConfig$addTipCol === void 0 ? '#d2fff4' : _diffConfig$addTipCol;
|
|
28
33
|
var toolTip = (_diffConfig$toolTip = diffConfig.toolTip) !== null && _diffConfig$toolTip !== void 0 ? _diffConfig$toolTip : true;
|
|
29
34
|
// 不渲染tooltip
|
|
30
35
|
var isWatch = toolTip && !['FormList', 'ProEditTable'].includes(type);
|
|
@@ -32,8 +37,8 @@ var ChangedWrapper = function ChangedWrapper(props) {
|
|
|
32
37
|
return get(originalValues, name);
|
|
33
38
|
}) : get(originalValues, name);
|
|
34
39
|
var noChange = !equalWith && (!originalValues || isDiffAll ? false : isEmpty(originalValue));
|
|
35
|
-
var
|
|
36
|
-
if (!isWatch || noChange) return
|
|
40
|
+
var diffType = useMemo(function () {
|
|
41
|
+
if (!isWatch || noChange) return 'same';
|
|
37
42
|
return diffOriginal({
|
|
38
43
|
originalValue: originalValue,
|
|
39
44
|
value: props.value,
|
|
@@ -42,6 +47,8 @@ var ChangedWrapper = function ChangedWrapper(props) {
|
|
|
42
47
|
// name: namesStr || name,
|
|
43
48
|
});
|
|
44
49
|
}, [isWatch, noChange, props.value, originalValue]);
|
|
50
|
+
var isAdd = diffType === 'add';
|
|
51
|
+
var isChanged = diffType === 'changed';
|
|
45
52
|
var tipContent = useMemo(function () {
|
|
46
53
|
if (!isWatch || noChange) return undefined;
|
|
47
54
|
return /*#__PURE__*/React.isValidElement(children) ? /*#__PURE__*/React.cloneElement(children, _objectSpread(_objectSpread({}, children.props), {}, {
|
|
@@ -54,12 +61,18 @@ var ChangedWrapper = function ChangedWrapper(props) {
|
|
|
54
61
|
return /*#__PURE__*/React.isValidElement(children) && /*#__PURE__*/React.cloneElement(children, _objectSpread(_objectSpread({}, children.props), rest));
|
|
55
62
|
}
|
|
56
63
|
var tipOpenCalc = function tipOpenCalc() {
|
|
57
|
-
if (!toolTip)
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
64
|
+
if (!toolTip) return false;
|
|
60
65
|
// 传入undefined 鼠标移入显示移出隐藏
|
|
61
66
|
return isChanged ? undefined : false;
|
|
62
67
|
};
|
|
68
|
+
var style = {
|
|
69
|
+
'--change-tip-color': changeTipColor || '@zaui-contract-bg',
|
|
70
|
+
'--add-tip-color': addTipColor || '@zaui-contract-bg'
|
|
71
|
+
};
|
|
72
|
+
var diffClassName = classNames({
|
|
73
|
+
'pro-form-item-changed': isChanged,
|
|
74
|
+
'pro-form-item-add': isAdd
|
|
75
|
+
});
|
|
63
76
|
return _jsx(_Tooltip, {
|
|
64
77
|
open: tipOpenCalc(),
|
|
65
78
|
getPopupContainer: function getPopupContainer(target) {
|
|
@@ -70,7 +83,8 @@ var ChangedWrapper = function ChangedWrapper(props) {
|
|
|
70
83
|
}),
|
|
71
84
|
placement: "topLeft",
|
|
72
85
|
children: _jsx("div", {
|
|
73
|
-
className:
|
|
86
|
+
className: diffClassName,
|
|
87
|
+
style: style,
|
|
74
88
|
children: /*#__PURE__*/React.isValidElement(children) ? /*#__PURE__*/React.cloneElement(children, _objectSpread(_objectSpread({}, children.props), rest)) : undefined
|
|
75
89
|
})
|
|
76
90
|
});
|
|
@@ -153,6 +153,7 @@ var RenderFields = function RenderFields(props) {
|
|
|
153
153
|
if (['ProCollapse', 'Container'].includes(_type)) {
|
|
154
154
|
componentProps.show = show;
|
|
155
155
|
componentProps.clearNotShow = clearNotShow;
|
|
156
|
+
componentProps.diffConfig = diffConfig;
|
|
156
157
|
}
|
|
157
158
|
// switch与SwitchCheckbox单独添加valuePropName
|
|
158
159
|
if (['Switch', 'SwitchCheckbox'].includes(_type)) {
|
|
@@ -31,6 +31,7 @@ import { ProTreeProps } from '../../../ProTree/propsType';
|
|
|
31
31
|
import { GroupProps as GroupCopyProps } from '../combination/Group/propsType';
|
|
32
32
|
import { ProCollapseProps } from '../../../ProLayout/components/ProCollapse/PropTypes';
|
|
33
33
|
import { DistributiveOmit, DiffConfigProps } from '../../propsType';
|
|
34
|
+
import { DiffOriginalParams } from '../../utils/diffOriginal';
|
|
34
35
|
export type ComponentMap = keyof typeof componentMap;
|
|
35
36
|
type ValidateKey = keyof typeof validate;
|
|
36
37
|
type RegExpKey = keyof typeof regExp;
|
|
@@ -201,7 +202,7 @@ export interface ProFormColumnProps<Values = any> extends Omit<FormItemProps<Val
|
|
|
201
202
|
upperCase?: boolean;
|
|
202
203
|
hiddenNames?: string[] | any[];
|
|
203
204
|
rules?: ProRule[] | ReactiveFunction<Values, ProRule[]>;
|
|
204
|
-
equalWith?:
|
|
205
|
+
equalWith?: DiffOriginalParams['equalWith'];
|
|
205
206
|
required?: boolean | boolean[] | ReactiveFunction<Values, boolean | boolean[]>;
|
|
206
207
|
labelRequired?: boolean;
|
|
207
208
|
toISOString?: boolean;
|
|
@@ -328,7 +328,7 @@
|
|
|
328
328
|
.@{ant-prefix}-select .@{ant-prefix}-select-selector,
|
|
329
329
|
.@{ant-prefix}-picker,
|
|
330
330
|
.@{ant-prefix}-input-number {
|
|
331
|
-
background: @zaui-contract-bg !important;
|
|
331
|
+
background: var(--change-tip-color, @zaui-contract-bg) !important;
|
|
332
332
|
|
|
333
333
|
input {
|
|
334
334
|
background: transparent !important;
|
|
@@ -340,7 +340,7 @@
|
|
|
340
340
|
|
|
341
341
|
.@{ant-prefix}-form-item-control:has(.@{ant-prefix}-switch-handle),
|
|
342
342
|
.@{ant-prefix}-form-item-control:has(.@{ant-prefix}-checkbox-wrapper-in-form-item) {
|
|
343
|
-
background: @zaui-contract-bg;
|
|
343
|
+
background: var(--change-tip-color, @zaui-contract-bg);
|
|
344
344
|
border-radius: 4px;
|
|
345
345
|
}
|
|
346
346
|
|
|
@@ -350,26 +350,79 @@
|
|
|
350
350
|
& > span {
|
|
351
351
|
border-radius: 4px;
|
|
352
352
|
padding: 5px 8px;
|
|
353
|
-
background: @zaui-contract-bg;
|
|
353
|
+
background: var(--change-tip-color, @zaui-contract-bg);
|
|
354
354
|
}
|
|
355
355
|
|
|
356
356
|
& > .pro-address {
|
|
357
357
|
.@{ant-prefix}-select-selector,
|
|
358
358
|
.@{ant-prefix}-input-affix-wrapper,
|
|
359
359
|
.@{ant-prefix}-input-disabled {
|
|
360
|
-
background: @zaui-contract-bg;
|
|
360
|
+
background: var(--change-tip-color, @zaui-contract-bg);
|
|
361
361
|
}
|
|
362
362
|
}
|
|
363
363
|
& > .@{ant-prefix}-input-group {
|
|
364
364
|
.forever-checkbox {
|
|
365
|
-
background: @zaui-contract-bg;
|
|
365
|
+
background: var(--change-tip-color, @zaui-contract-bg);
|
|
366
366
|
}
|
|
367
367
|
}
|
|
368
368
|
}
|
|
369
369
|
|
|
370
370
|
.pro-form-view-container {
|
|
371
371
|
padding: 4px 8px;
|
|
372
|
-
background: @zaui-contract-bg;
|
|
372
|
+
background: var(--change-tip-color, @zaui-contract-bg);
|
|
373
|
+
border-radius: 4px;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
// 比较原始值场景下 不同时的样式
|
|
379
|
+
.pro-form-item-add {
|
|
380
|
+
span.@{ant-prefix}-input-affix-wrapper,
|
|
381
|
+
.@{ant-prefix}-select .@{ant-prefix}-select-selector,
|
|
382
|
+
.@{ant-prefix}-picker,
|
|
383
|
+
.@{ant-prefix}-input-number {
|
|
384
|
+
background: var(--add-tip-color, @zaui-contract-bg) !important;
|
|
385
|
+
|
|
386
|
+
input {
|
|
387
|
+
background: transparent !important;
|
|
388
|
+
}
|
|
389
|
+
.@{ant-prefix}-select-selection-placeholder {
|
|
390
|
+
z-index: 9;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.@{ant-prefix}-form-item-control:has(.@{ant-prefix}-switch-handle),
|
|
395
|
+
.@{ant-prefix}-form-item-control:has(.@{ant-prefix}-checkbox-wrapper-in-form-item) {
|
|
396
|
+
background: var(--add-tip-color, @zaui-contract-bg);
|
|
397
|
+
border-radius: 4px;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
// 地址组件
|
|
401
|
+
.@{ant-prefix}-form-item-control-input-content {
|
|
402
|
+
// 查看模式
|
|
403
|
+
& > span {
|
|
404
|
+
border-radius: 4px;
|
|
405
|
+
padding: 5px 8px;
|
|
406
|
+
background: var(--add-tip-color, @zaui-contract-bg);
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
& > .pro-address {
|
|
410
|
+
.@{ant-prefix}-select-selector,
|
|
411
|
+
.@{ant-prefix}-input-affix-wrapper,
|
|
412
|
+
.@{ant-prefix}-input-disabled {
|
|
413
|
+
background: var(--add-tip-color, @zaui-contract-bg);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
& > .@{ant-prefix}-input-group {
|
|
417
|
+
.forever-checkbox {
|
|
418
|
+
background: var(--add-tip-color, @zaui-contract-bg);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
.pro-form-view-container {
|
|
424
|
+
padding: 4px 8px;
|
|
425
|
+
background: var(--add-tip-color, @zaui-contract-bg);
|
|
373
426
|
border-radius: 4px;
|
|
374
427
|
}
|
|
375
428
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { FormInstance } from 'antd';
|
|
2
|
-
interface
|
|
2
|
+
export interface DiffOriginalParams {
|
|
3
3
|
originalValue: any;
|
|
4
4
|
value: any;
|
|
5
5
|
form: FormInstance;
|
|
6
|
-
equalWith?: (originalValue: any, currentValue: any) => boolean;
|
|
6
|
+
equalWith?: (originalValue: any, currentValue: any) => DiffType | boolean | undefined;
|
|
7
7
|
}
|
|
8
|
-
export
|
|
9
|
-
export
|
|
8
|
+
export type DiffType = 'same' | 'add' | 'changed';
|
|
9
|
+
export declare const diffOriginal: (params: DiffOriginalParams) => DiffType;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isEqual, isFunction } from 'lodash';
|
|
2
|
+
import { isEmpty } from '../../utils';
|
|
2
3
|
var nullValue = [null, undefined, '']; // 输入框空值时可能存在的三种值 视为相等
|
|
3
4
|
export var diffOriginal = function diffOriginal(params) {
|
|
4
5
|
var originalValue = params.originalValue,
|
|
@@ -6,19 +7,29 @@ export var diffOriginal = function diffOriginal(params) {
|
|
|
6
7
|
equalWith = params.equalWith;
|
|
7
8
|
// 支持传入自定义比较事件
|
|
8
9
|
if (isFunction(equalWith)) {
|
|
9
|
-
|
|
10
|
+
var diffRes = equalWith(originalValue, value);
|
|
11
|
+
if (diffRes === undefined) return 'same';
|
|
12
|
+
if (typeof diffRes === 'boolean') {
|
|
13
|
+
return diffRes ? 'same' : 'changed';
|
|
14
|
+
}
|
|
15
|
+
return diffRes;
|
|
16
|
+
}
|
|
17
|
+
// 如果原始值为空 且当前有值的话 认为变更类型是新增
|
|
18
|
+
if (isEmpty(originalValue) && !isEmpty(value)) {
|
|
19
|
+
return 'add';
|
|
10
20
|
}
|
|
11
21
|
if (Array.isArray(originalValue)) {
|
|
12
|
-
|
|
22
|
+
var isSame = originalValue.every(function (valueItem, index) {
|
|
13
23
|
// 如果两个值有一个不是空值, 则进行深比较
|
|
14
|
-
if (!
|
|
15
|
-
return
|
|
24
|
+
if (!isEmpty(value === null || value === void 0 ? void 0 : value[index]) || !isEmpty(valueItem)) {
|
|
25
|
+
return isEqual(value === null || value === void 0 ? void 0 : value[index], valueItem);
|
|
16
26
|
}
|
|
17
|
-
return
|
|
27
|
+
return true;
|
|
18
28
|
});
|
|
29
|
+
return isSame ? 'same' : 'changed';
|
|
19
30
|
}
|
|
20
31
|
if (!nullValue.includes(value) || !nullValue.includes(originalValue)) {
|
|
21
|
-
return
|
|
32
|
+
return isEqual(value, originalValue) ? 'same' : 'changed';
|
|
22
33
|
}
|
|
23
|
-
return
|
|
34
|
+
return 'same';
|
|
24
35
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { FormInstance } from 'antd';
|
|
3
3
|
import { NamePath } from 'antd/lib/form/interface';
|
|
4
|
+
import { DiffOriginalParams } from '../../../ProForm/utils/diffOriginal';
|
|
4
5
|
interface Props {
|
|
5
6
|
name?: NamePath;
|
|
6
7
|
names?: NamePath[];
|
|
@@ -9,7 +10,7 @@ interface Props {
|
|
|
9
10
|
namesStr?: NamePath;
|
|
10
11
|
originalValues?: any;
|
|
11
12
|
form: FormInstance;
|
|
12
|
-
equalWith?:
|
|
13
|
+
equalWith?: DiffOriginalParams['equalWith'];
|
|
13
14
|
[name: string]: any;
|
|
14
15
|
}
|
|
15
16
|
declare const ListChangedWrapper: React.FC<Props>;
|
|
@@ -11,6 +11,7 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
|
|
|
11
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
13
|
var _antd = require("antd");
|
|
14
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
14
15
|
var _lodash = require("lodash");
|
|
15
16
|
var _diffOriginal = require("../../../ProForm/utils/diffOriginal");
|
|
16
17
|
var _ProConfigProvider = require("../../../ProConfigProvider");
|
|
@@ -83,8 +84,8 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
|
|
|
83
84
|
children = props.children,
|
|
84
85
|
type = props.type,
|
|
85
86
|
rest = (0, _objectWithoutProperties2.default)(props, _excluded);
|
|
86
|
-
var
|
|
87
|
-
isDiffAll =
|
|
87
|
+
var _ref2 = (0, _ProConfigProvider.useProConfig)('ProEditTable') || {},
|
|
88
|
+
isDiffAll = _ref2.isDiffAll;
|
|
88
89
|
var namePath = toNamePath(namesStr || name);
|
|
89
90
|
var originalNamePath = toNamePath(originalName);
|
|
90
91
|
var originalNamePaths = originalNames && toNamePaths(originalNames);
|
|
@@ -98,8 +99,8 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
|
|
|
98
99
|
form: form
|
|
99
100
|
}) : undefined;
|
|
100
101
|
var noChange = !equalWith && (!originalValues || isDiffAll ? false : (0, _utils.isEmpty)(originalValue));
|
|
101
|
-
var
|
|
102
|
-
if (!isWatch || noChange) return
|
|
102
|
+
var diffType = (0, _react.useMemo)(function () {
|
|
103
|
+
if (!isWatch || noChange) return 'same';
|
|
103
104
|
return (0, _diffOriginal.diffOriginal)({
|
|
104
105
|
value: props.value,
|
|
105
106
|
originalValue: originalValue,
|
|
@@ -108,9 +109,15 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
|
|
|
108
109
|
// name: isString(namesStr) ? namesStr : originalName || name,
|
|
109
110
|
});
|
|
110
111
|
}, [props.value, originalValue]);
|
|
112
|
+
var isAdd = diffType === 'add';
|
|
113
|
+
var isChanged = diffType === 'changed';
|
|
111
114
|
if (!isWatch || noChange) {
|
|
112
115
|
return /*#__PURE__*/_react.default.isValidElement(children) && /*#__PURE__*/_react.default.cloneElement(children, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, children.props), rest));
|
|
113
116
|
}
|
|
117
|
+
var diffClassName = (0, _classnames.default)({
|
|
118
|
+
'pro-form-item-changed': isChanged,
|
|
119
|
+
'pro-form-item-add': isAdd
|
|
120
|
+
});
|
|
114
121
|
return (0, _jsxRuntime.jsx)(_antd.Tooltip
|
|
115
122
|
// 传入undefined 鼠标移入显示移出隐藏
|
|
116
123
|
, {
|
|
@@ -128,7 +135,7 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
|
|
|
128
135
|
})) : undefined]
|
|
129
136
|
}),
|
|
130
137
|
children: (0, _jsxRuntime.jsx)("div", {
|
|
131
|
-
className:
|
|
138
|
+
className: diffClassName,
|
|
132
139
|
children: /*#__PURE__*/_react.default.isValidElement(children) ? /*#__PURE__*/_react.default.cloneElement(children, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, children.props), rest)) : undefined
|
|
133
140
|
})
|
|
134
141
|
});
|
|
@@ -16,11 +16,12 @@ var _ProCollapse = _interopRequireDefault(require("../../../../ProLayout/compone
|
|
|
16
16
|
var _ProForm = _interopRequireDefault(require("../../../../ProForm"));
|
|
17
17
|
var Container = function Container(props) {
|
|
18
18
|
var children = props.children,
|
|
19
|
-
otherProps = props.otherProps,
|
|
20
19
|
className = props.className,
|
|
21
20
|
container = props.container,
|
|
22
21
|
show = props.show,
|
|
23
|
-
clearNotShow = props.clearNotShow
|
|
22
|
+
clearNotShow = props.clearNotShow,
|
|
23
|
+
diffConfig = props.diffConfig,
|
|
24
|
+
otherProps = props.otherProps;
|
|
24
25
|
var _ref = _ProForm.default.useFieldProps() || {},
|
|
25
26
|
type = _ref.type,
|
|
26
27
|
form = _ref.form,
|
|
@@ -45,7 +46,8 @@ var Container = function Container(props) {
|
|
|
45
46
|
var childRender = function childRender() {
|
|
46
47
|
var child = (0, _jsxRuntime.jsx)(_RenderFields.default, (0, _objectSpread2.default)({
|
|
47
48
|
columns: _children,
|
|
48
|
-
form: form
|
|
49
|
+
form: form,
|
|
50
|
+
diffConfig: diffConfig
|
|
49
51
|
}, otherProps));
|
|
50
52
|
if (type === 'ProCollapse') {
|
|
51
53
|
return (0, _jsxRuntime.jsx)(_ProCollapse.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _lodash.omit)(props, ['otherProps', 'children', 'onBlur', 'onChange', 'placeholder', 'className'])), {}, {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { RowProps } from 'antd';
|
|
3
|
-
import { ProColumnProps, ProFormOtherProps } from '../../../propsType';
|
|
3
|
+
import { ProColumnProps, ProFormOtherProps, DiffConfigProps } from '../../../propsType';
|
|
4
4
|
export interface ContainerProps {
|
|
5
5
|
children?: ProColumnProps[];
|
|
6
6
|
otherProps?: ProFormOtherProps;
|
|
@@ -8,5 +8,6 @@ export interface ContainerProps {
|
|
|
8
8
|
className?: string;
|
|
9
9
|
container?: string | React.ReactNode;
|
|
10
10
|
show?: boolean | (() => boolean);
|
|
11
|
+
diffConfig?: DiffConfigProps;
|
|
11
12
|
clearNotShow?: boolean;
|
|
12
13
|
}
|
|
@@ -95,7 +95,9 @@ var ProNumberRange = function ProNumberRange(props) {
|
|
|
95
95
|
});
|
|
96
96
|
// 查看模式
|
|
97
97
|
if (isView || props.isView) {
|
|
98
|
-
if ((0, _lodash.isEmpty)(value)) {
|
|
98
|
+
if ((0, _lodash.isEmpty)(value) || (value === null || value === void 0 ? void 0 : value.every(function (item) {
|
|
99
|
+
return typeof item !== 'number';
|
|
100
|
+
}))) {
|
|
99
101
|
return viewEmpty;
|
|
100
102
|
}
|
|
101
103
|
switch (valueType) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FormInstance } from 'antd';
|
|
2
2
|
import { NamePath } from 'antd/lib/form/interface';
|
|
3
3
|
import React from 'react';
|
|
4
|
+
import { DiffOriginalParams } from '../../utils/diffOriginal';
|
|
4
5
|
import { DiffConfigProps } from '../../propsType';
|
|
5
6
|
interface Props {
|
|
6
7
|
name?: NamePath;
|
|
@@ -8,7 +9,7 @@ interface Props {
|
|
|
8
9
|
namesStr?: string;
|
|
9
10
|
diffConfig?: DiffConfigProps;
|
|
10
11
|
form: FormInstance;
|
|
11
|
-
equalWith?:
|
|
12
|
+
equalWith?: DiffOriginalParams['equalWith'];
|
|
12
13
|
[name: string]: any;
|
|
13
14
|
}
|
|
14
15
|
declare const ChangedWrapper: React.FC<Props>;
|
|
@@ -10,6 +10,7 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/obje
|
|
|
10
10
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
12
|
var _antd = require("antd");
|
|
13
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
14
|
var _lodash = require("lodash");
|
|
14
15
|
var _react = _interopRequireWildcard(require("react"));
|
|
15
16
|
var _diffOriginal = require("../../utils/diffOriginal");
|
|
@@ -29,7 +30,11 @@ var ChangedWrapper = function ChangedWrapper(props) {
|
|
|
29
30
|
rest = (0, _objectWithoutProperties2.default)(props, _excluded);
|
|
30
31
|
var _useProConfig = (0, _ProConfigProvider.useProConfig)('ProForm'),
|
|
31
32
|
isDiffAll = _useProConfig.isDiffAll;
|
|
32
|
-
var originalValues = diffConfig.originalValues
|
|
33
|
+
var originalValues = diffConfig.originalValues,
|
|
34
|
+
_diffConfig$changeTip = diffConfig.changeTipColor,
|
|
35
|
+
changeTipColor = _diffConfig$changeTip === void 0 ? '#fffaa1' : _diffConfig$changeTip,
|
|
36
|
+
_diffConfig$addTipCol = diffConfig.addTipColor,
|
|
37
|
+
addTipColor = _diffConfig$addTipCol === void 0 ? '#d2fff4' : _diffConfig$addTipCol;
|
|
33
38
|
var toolTip = (_diffConfig$toolTip = diffConfig.toolTip) !== null && _diffConfig$toolTip !== void 0 ? _diffConfig$toolTip : true;
|
|
34
39
|
// 不渲染tooltip
|
|
35
40
|
var isWatch = toolTip && !['FormList', 'ProEditTable'].includes(type);
|
|
@@ -37,8 +42,8 @@ var ChangedWrapper = function ChangedWrapper(props) {
|
|
|
37
42
|
return (0, _lodash.get)(originalValues, name);
|
|
38
43
|
}) : (0, _lodash.get)(originalValues, name);
|
|
39
44
|
var noChange = !equalWith && (!originalValues || isDiffAll ? false : (0, _utils.isEmpty)(originalValue));
|
|
40
|
-
var
|
|
41
|
-
if (!isWatch || noChange) return
|
|
45
|
+
var diffType = (0, _react.useMemo)(function () {
|
|
46
|
+
if (!isWatch || noChange) return 'same';
|
|
42
47
|
return (0, _diffOriginal.diffOriginal)({
|
|
43
48
|
originalValue: originalValue,
|
|
44
49
|
value: props.value,
|
|
@@ -47,6 +52,8 @@ var ChangedWrapper = function ChangedWrapper(props) {
|
|
|
47
52
|
// name: namesStr || name,
|
|
48
53
|
});
|
|
49
54
|
}, [isWatch, noChange, props.value, originalValue]);
|
|
55
|
+
var isAdd = diffType === 'add';
|
|
56
|
+
var isChanged = diffType === 'changed';
|
|
50
57
|
var tipContent = (0, _react.useMemo)(function () {
|
|
51
58
|
if (!isWatch || noChange) return undefined;
|
|
52
59
|
return /*#__PURE__*/_react.default.isValidElement(children) ? /*#__PURE__*/_react.default.cloneElement(children, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, children.props), {}, {
|
|
@@ -59,12 +66,18 @@ var ChangedWrapper = function ChangedWrapper(props) {
|
|
|
59
66
|
return /*#__PURE__*/_react.default.isValidElement(children) && /*#__PURE__*/_react.default.cloneElement(children, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, children.props), rest));
|
|
60
67
|
}
|
|
61
68
|
var tipOpenCalc = function tipOpenCalc() {
|
|
62
|
-
if (!toolTip)
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
69
|
+
if (!toolTip) return false;
|
|
65
70
|
// 传入undefined 鼠标移入显示移出隐藏
|
|
66
71
|
return isChanged ? undefined : false;
|
|
67
72
|
};
|
|
73
|
+
var style = {
|
|
74
|
+
'--change-tip-color': changeTipColor || '@zaui-contract-bg',
|
|
75
|
+
'--add-tip-color': addTipColor || '@zaui-contract-bg'
|
|
76
|
+
};
|
|
77
|
+
var diffClassName = (0, _classnames.default)({
|
|
78
|
+
'pro-form-item-changed': isChanged,
|
|
79
|
+
'pro-form-item-add': isAdd
|
|
80
|
+
});
|
|
68
81
|
return (0, _jsxRuntime.jsx)(_antd.Tooltip, {
|
|
69
82
|
open: tipOpenCalc(),
|
|
70
83
|
getPopupContainer: function getPopupContainer(target) {
|
|
@@ -75,7 +88,8 @@ var ChangedWrapper = function ChangedWrapper(props) {
|
|
|
75
88
|
}),
|
|
76
89
|
placement: "topLeft",
|
|
77
90
|
children: (0, _jsxRuntime.jsx)("div", {
|
|
78
|
-
className:
|
|
91
|
+
className: diffClassName,
|
|
92
|
+
style: style,
|
|
79
93
|
children: /*#__PURE__*/_react.default.isValidElement(children) ? /*#__PURE__*/_react.default.cloneElement(children, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, children.props), rest)) : undefined
|
|
80
94
|
})
|
|
81
95
|
});
|
|
@@ -161,6 +161,7 @@ var RenderFields = function RenderFields(props) {
|
|
|
161
161
|
if (['ProCollapse', 'Container'].includes(_type)) {
|
|
162
162
|
componentProps.show = show;
|
|
163
163
|
componentProps.clearNotShow = clearNotShow;
|
|
164
|
+
componentProps.diffConfig = diffConfig;
|
|
164
165
|
}
|
|
165
166
|
// switch与SwitchCheckbox单独添加valuePropName
|
|
166
167
|
if (['Switch', 'SwitchCheckbox'].includes(_type)) {
|
|
@@ -31,6 +31,7 @@ import { ProTreeProps } from '../../../ProTree/propsType';
|
|
|
31
31
|
import { GroupProps as GroupCopyProps } from '../combination/Group/propsType';
|
|
32
32
|
import { ProCollapseProps } from '../../../ProLayout/components/ProCollapse/PropTypes';
|
|
33
33
|
import { DistributiveOmit, DiffConfigProps } from '../../propsType';
|
|
34
|
+
import { DiffOriginalParams } from '../../utils/diffOriginal';
|
|
34
35
|
export type ComponentMap = keyof typeof componentMap;
|
|
35
36
|
type ValidateKey = keyof typeof validate;
|
|
36
37
|
type RegExpKey = keyof typeof regExp;
|
|
@@ -201,7 +202,7 @@ export interface ProFormColumnProps<Values = any> extends Omit<FormItemProps<Val
|
|
|
201
202
|
upperCase?: boolean;
|
|
202
203
|
hiddenNames?: string[] | any[];
|
|
203
204
|
rules?: ProRule[] | ReactiveFunction<Values, ProRule[]>;
|
|
204
|
-
equalWith?:
|
|
205
|
+
equalWith?: DiffOriginalParams['equalWith'];
|
|
205
206
|
required?: boolean | boolean[] | ReactiveFunction<Values, boolean | boolean[]>;
|
|
206
207
|
labelRequired?: boolean;
|
|
207
208
|
toISOString?: boolean;
|
|
@@ -328,7 +328,7 @@
|
|
|
328
328
|
.@{ant-prefix}-select .@{ant-prefix}-select-selector,
|
|
329
329
|
.@{ant-prefix}-picker,
|
|
330
330
|
.@{ant-prefix}-input-number {
|
|
331
|
-
background: @zaui-contract-bg !important;
|
|
331
|
+
background: var(--change-tip-color, @zaui-contract-bg) !important;
|
|
332
332
|
|
|
333
333
|
input {
|
|
334
334
|
background: transparent !important;
|
|
@@ -340,7 +340,7 @@
|
|
|
340
340
|
|
|
341
341
|
.@{ant-prefix}-form-item-control:has(.@{ant-prefix}-switch-handle),
|
|
342
342
|
.@{ant-prefix}-form-item-control:has(.@{ant-prefix}-checkbox-wrapper-in-form-item) {
|
|
343
|
-
background: @zaui-contract-bg;
|
|
343
|
+
background: var(--change-tip-color, @zaui-contract-bg);
|
|
344
344
|
border-radius: 4px;
|
|
345
345
|
}
|
|
346
346
|
|
|
@@ -350,26 +350,79 @@
|
|
|
350
350
|
& > span {
|
|
351
351
|
border-radius: 4px;
|
|
352
352
|
padding: 5px 8px;
|
|
353
|
-
background: @zaui-contract-bg;
|
|
353
|
+
background: var(--change-tip-color, @zaui-contract-bg);
|
|
354
354
|
}
|
|
355
355
|
|
|
356
356
|
& > .pro-address {
|
|
357
357
|
.@{ant-prefix}-select-selector,
|
|
358
358
|
.@{ant-prefix}-input-affix-wrapper,
|
|
359
359
|
.@{ant-prefix}-input-disabled {
|
|
360
|
-
background: @zaui-contract-bg;
|
|
360
|
+
background: var(--change-tip-color, @zaui-contract-bg);
|
|
361
361
|
}
|
|
362
362
|
}
|
|
363
363
|
& > .@{ant-prefix}-input-group {
|
|
364
364
|
.forever-checkbox {
|
|
365
|
-
background: @zaui-contract-bg;
|
|
365
|
+
background: var(--change-tip-color, @zaui-contract-bg);
|
|
366
366
|
}
|
|
367
367
|
}
|
|
368
368
|
}
|
|
369
369
|
|
|
370
370
|
.pro-form-view-container {
|
|
371
371
|
padding: 4px 8px;
|
|
372
|
-
background: @zaui-contract-bg;
|
|
372
|
+
background: var(--change-tip-color, @zaui-contract-bg);
|
|
373
|
+
border-radius: 4px;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
// 比较原始值场景下 不同时的样式
|
|
379
|
+
.pro-form-item-add {
|
|
380
|
+
span.@{ant-prefix}-input-affix-wrapper,
|
|
381
|
+
.@{ant-prefix}-select .@{ant-prefix}-select-selector,
|
|
382
|
+
.@{ant-prefix}-picker,
|
|
383
|
+
.@{ant-prefix}-input-number {
|
|
384
|
+
background: var(--add-tip-color, @zaui-contract-bg) !important;
|
|
385
|
+
|
|
386
|
+
input {
|
|
387
|
+
background: transparent !important;
|
|
388
|
+
}
|
|
389
|
+
.@{ant-prefix}-select-selection-placeholder {
|
|
390
|
+
z-index: 9;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.@{ant-prefix}-form-item-control:has(.@{ant-prefix}-switch-handle),
|
|
395
|
+
.@{ant-prefix}-form-item-control:has(.@{ant-prefix}-checkbox-wrapper-in-form-item) {
|
|
396
|
+
background: var(--add-tip-color, @zaui-contract-bg);
|
|
397
|
+
border-radius: 4px;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
// 地址组件
|
|
401
|
+
.@{ant-prefix}-form-item-control-input-content {
|
|
402
|
+
// 查看模式
|
|
403
|
+
& > span {
|
|
404
|
+
border-radius: 4px;
|
|
405
|
+
padding: 5px 8px;
|
|
406
|
+
background: var(--add-tip-color, @zaui-contract-bg);
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
& > .pro-address {
|
|
410
|
+
.@{ant-prefix}-select-selector,
|
|
411
|
+
.@{ant-prefix}-input-affix-wrapper,
|
|
412
|
+
.@{ant-prefix}-input-disabled {
|
|
413
|
+
background: var(--add-tip-color, @zaui-contract-bg);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
& > .@{ant-prefix}-input-group {
|
|
417
|
+
.forever-checkbox {
|
|
418
|
+
background: var(--add-tip-color, @zaui-contract-bg);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
.pro-form-view-container {
|
|
424
|
+
padding: 4px 8px;
|
|
425
|
+
background: var(--add-tip-color, @zaui-contract-bg);
|
|
373
426
|
border-radius: 4px;
|
|
374
427
|
}
|
|
375
428
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { FormInstance } from 'antd';
|
|
2
|
-
interface
|
|
2
|
+
export interface DiffOriginalParams {
|
|
3
3
|
originalValue: any;
|
|
4
4
|
value: any;
|
|
5
5
|
form: FormInstance;
|
|
6
|
-
equalWith?: (originalValue: any, currentValue: any) => boolean;
|
|
6
|
+
equalWith?: (originalValue: any, currentValue: any) => DiffType | boolean | undefined;
|
|
7
7
|
}
|
|
8
|
-
export
|
|
9
|
-
export
|
|
8
|
+
export type DiffType = 'same' | 'add' | 'changed';
|
|
9
|
+
export declare const diffOriginal: (params: DiffOriginalParams) => DiffType;
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.diffOriginal = void 0;
|
|
7
7
|
var _lodash = require("lodash");
|
|
8
|
+
var _utils = require("../../utils");
|
|
8
9
|
var nullValue = [null, undefined, '']; // 输入框空值时可能存在的三种值 视为相等
|
|
9
10
|
var diffOriginal = exports.diffOriginal = function diffOriginal(params) {
|
|
10
11
|
var originalValue = params.originalValue,
|
|
@@ -12,19 +13,29 @@ var diffOriginal = exports.diffOriginal = function diffOriginal(params) {
|
|
|
12
13
|
equalWith = params.equalWith;
|
|
13
14
|
// 支持传入自定义比较事件
|
|
14
15
|
if ((0, _lodash.isFunction)(equalWith)) {
|
|
15
|
-
|
|
16
|
+
var diffRes = equalWith(originalValue, value);
|
|
17
|
+
if (diffRes === undefined) return 'same';
|
|
18
|
+
if (typeof diffRes === 'boolean') {
|
|
19
|
+
return diffRes ? 'same' : 'changed';
|
|
20
|
+
}
|
|
21
|
+
return diffRes;
|
|
22
|
+
}
|
|
23
|
+
// 如果原始值为空 且当前有值的话 认为变更类型是新增
|
|
24
|
+
if ((0, _utils.isEmpty)(originalValue) && !(0, _utils.isEmpty)(value)) {
|
|
25
|
+
return 'add';
|
|
16
26
|
}
|
|
17
27
|
if (Array.isArray(originalValue)) {
|
|
18
|
-
|
|
28
|
+
var isSame = originalValue.every(function (valueItem, index) {
|
|
19
29
|
// 如果两个值有一个不是空值, 则进行深比较
|
|
20
|
-
if (!
|
|
21
|
-
return
|
|
30
|
+
if (!(0, _utils.isEmpty)(value === null || value === void 0 ? void 0 : value[index]) || !(0, _utils.isEmpty)(valueItem)) {
|
|
31
|
+
return (0, _lodash.isEqual)(value === null || value === void 0 ? void 0 : value[index], valueItem);
|
|
22
32
|
}
|
|
23
|
-
return
|
|
33
|
+
return true;
|
|
24
34
|
});
|
|
35
|
+
return isSame ? 'same' : 'changed';
|
|
25
36
|
}
|
|
26
37
|
if (!nullValue.includes(value) || !nullValue.includes(originalValue)) {
|
|
27
|
-
return
|
|
38
|
+
return (0, _lodash.isEqual)(value, originalValue) ? 'same' : 'changed';
|
|
28
39
|
}
|
|
29
|
-
return
|
|
40
|
+
return 'same';
|
|
30
41
|
};
|