@douyinfe/semi-ui 2.50.1 → 2.51.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/umd/semi-ui.js +80 -64
- package/dist/umd/semi-ui.js.map +1 -1
- package/dist/umd/semi-ui.min.js +1 -1
- package/dist/umd/semi-ui.min.js.map +1 -1
- package/lib/cjs/cascader/index.d.ts +1 -1
- package/lib/cjs/cascader/index.js +16 -28
- package/lib/cjs/dropdown/dropdownItem.js +1 -1
- package/lib/cjs/image/image.d.ts +1 -0
- package/lib/cjs/image/image.js +6 -1
- package/lib/cjs/image/interface.d.ts +6 -0
- package/lib/cjs/image/preview.d.ts +3 -0
- package/lib/cjs/image/preview.js +10 -2
- package/lib/cjs/image/previewHeader.js +3 -2
- package/lib/cjs/image/previewInner.d.ts +1 -1
- package/lib/cjs/image/previewInner.js +5 -6
- package/lib/es/cascader/index.d.ts +1 -1
- package/lib/es/cascader/index.js +17 -29
- package/lib/es/dropdown/dropdownItem.js +1 -1
- package/lib/es/image/image.d.ts +1 -0
- package/lib/es/image/image.js +6 -1
- package/lib/es/image/interface.d.ts +6 -0
- package/lib/es/image/preview.d.ts +3 -0
- package/lib/es/image/preview.js +10 -2
- package/lib/es/image/previewHeader.js +3 -2
- package/lib/es/image/previewInner.d.ts +1 -1
- package/lib/es/image/previewInner.js +5 -6
- package/package.json +8 -8
|
@@ -193,7 +193,7 @@ declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
|
|
|
193
193
|
handleInputChange: (value: string) => void;
|
|
194
194
|
handleTagRemove: (e: any, tagValuePath: Array<string | number>) => void;
|
|
195
195
|
handleRemoveByKey: (key: any) => void;
|
|
196
|
-
renderTagItem: (
|
|
196
|
+
renderTagItem: (nodeKey: string, idx: number) => string | number | boolean | React.ReactFragment | JSX.Element;
|
|
197
197
|
renderTagInput(): JSX.Element;
|
|
198
198
|
renderInput(): JSX.Element;
|
|
199
199
|
handleItemClick: (e: MouseEvent | KeyboardEvent, item: Entity | Data) => void;
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var
|
|
7
|
+
var _isObject2 = _interopRequireDefault(require("lodash/isObject"));
|
|
8
8
|
var _noop2 = _interopRequireDefault(require("lodash/noop"));
|
|
9
9
|
var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
|
|
10
10
|
var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
|
|
@@ -52,7 +52,7 @@ class Cascader extends _baseComponent.default {
|
|
|
52
52
|
} = this.state;
|
|
53
53
|
this.handleTagRemove(null, keyEntities[key].valuePath);
|
|
54
54
|
};
|
|
55
|
-
this.renderTagItem = (
|
|
55
|
+
this.renderTagItem = (nodeKey, idx) => {
|
|
56
56
|
const {
|
|
57
57
|
keyEntities,
|
|
58
58
|
disabledKeys
|
|
@@ -64,9 +64,8 @@ class Cascader extends _baseComponent.default {
|
|
|
64
64
|
displayRender,
|
|
65
65
|
disableStrictly
|
|
66
66
|
} = this.props;
|
|
67
|
-
const nodeKey = type === _constants.strings.IS_VALUE ? (0, _util.findKeysForValues)(value, keyEntities)[0] : value;
|
|
68
67
|
const isDsiabled = disabled || keyEntities[nodeKey].data.disabled || disableStrictly && disabledKeys.has(nodeKey);
|
|
69
|
-
if (
|
|
68
|
+
if (keyEntities[nodeKey]) {
|
|
70
69
|
const tagCls = (0, _classnames.default)(`${prefixcls}-selection-tag`, {
|
|
71
70
|
[`${prefixcls}-selection-tag-disabled`]: isDsiabled
|
|
72
71
|
});
|
|
@@ -193,7 +192,7 @@ class Cascader extends _baseComponent.default {
|
|
|
193
192
|
const hiddenTag = [];
|
|
194
193
|
[...realKeys].forEach((checkedKey, idx) => {
|
|
195
194
|
const notExceedMaxTagCount = !(0, _isNumber2.default)(maxTagCount) || maxTagCount >= idx + 1;
|
|
196
|
-
const item = this.renderTagItem(checkedKey, idx
|
|
195
|
+
const item = this.renderTagItem(checkedKey, idx);
|
|
197
196
|
if (notExceedMaxTagCount) {
|
|
198
197
|
displayTag.push(item);
|
|
199
198
|
} else {
|
|
@@ -236,7 +235,7 @@ class Cascader extends _baseComponent.default {
|
|
|
236
235
|
const searchable = Boolean(filterTreeNode);
|
|
237
236
|
if (!searchable) {
|
|
238
237
|
if (multiple) {
|
|
239
|
-
if (
|
|
238
|
+
if (checkedKeys.size === 0) {
|
|
240
239
|
return /*#__PURE__*/_react.default.createElement("span", {
|
|
241
240
|
className: `${prefixcls}-selection-placeholder`
|
|
242
241
|
}, placeholder);
|
|
@@ -703,27 +702,23 @@ class Cascader extends _baseComponent.default {
|
|
|
703
702
|
return firstInProps || treeDataHasChange;
|
|
704
703
|
};
|
|
705
704
|
const getRealKeys = (realValue, keyEntities) => {
|
|
706
|
-
//
|
|
707
|
-
let
|
|
705
|
+
// normalizedValue is used to save the value in two-dimensional array format
|
|
706
|
+
let normalizedValue = [];
|
|
708
707
|
if (Array.isArray(realValue)) {
|
|
709
|
-
|
|
708
|
+
normalizedValue = Array.isArray(realValue[0]) ? realValue : [realValue];
|
|
710
709
|
} else {
|
|
711
710
|
if (realValue !== undefined) {
|
|
712
|
-
|
|
711
|
+
normalizedValue = [[realValue]];
|
|
713
712
|
}
|
|
714
713
|
}
|
|
715
714
|
// formatValuePath is used to save value of valuePath
|
|
716
715
|
const formatValuePath = [];
|
|
717
|
-
|
|
718
|
-
const formatItem = onChangeWithObject ? valueItem.map(i => i === null || i === void 0 ? void 0 : i.value) : valueItem;
|
|
716
|
+
normalizedValue.forEach(valueItem => {
|
|
717
|
+
const formatItem = onChangeWithObject && (0, _isObject2.default)(valueItem[0]) ? valueItem.map(i => i === null || i === void 0 ? void 0 : i.value) : valueItem;
|
|
719
718
|
formatValuePath.push(formatItem);
|
|
720
719
|
});
|
|
721
720
|
// formatKeys is used to save key of value
|
|
722
|
-
const formatKeys =
|
|
723
|
-
formatValuePath.forEach(v => {
|
|
724
|
-
const formatKeyItem = (0, _util.findKeysForValues)(v, keyEntities);
|
|
725
|
-
!(0, _isEmpty2.default)(formatKeyItem) && formatKeys.push(formatKeyItem);
|
|
726
|
-
});
|
|
721
|
+
const formatKeys = formatValuePath.map(v => (0, _util.getKeyByValuePath)(v));
|
|
727
722
|
return formatKeys;
|
|
728
723
|
};
|
|
729
724
|
const needUpdateTreeData = needUpdate('treeData') || needUpdateData();
|
|
@@ -753,7 +748,7 @@ class Cascader extends _baseComponent.default {
|
|
|
753
748
|
if ((0, _isSet2.default)(realKeys)) {
|
|
754
749
|
realKeys = [...realKeys];
|
|
755
750
|
}
|
|
756
|
-
const calRes = (0, _treeUtil.calcCheckedKeys)(
|
|
751
|
+
const calRes = (0, _treeUtil.calcCheckedKeys)(realKeys, keyEntities);
|
|
757
752
|
const checkedKeys = new Set(calRes.checkedKeys);
|
|
758
753
|
const halfCheckedKeys = new Set(calRes.halfCheckedKeys);
|
|
759
754
|
// disableStrictly
|
|
@@ -777,7 +772,7 @@ class Cascader extends _baseComponent.default {
|
|
|
777
772
|
}
|
|
778
773
|
componentDidUpdate(prevProps) {
|
|
779
774
|
let isOptionsChanged = false;
|
|
780
|
-
if (!(0, _isEqual2.default)(prevProps.treeData, this.props.treeData)) {
|
|
775
|
+
if (!(0, _isEqual2.default)(prevProps.treeData, this.props.treeData) && !this.props.multiple) {
|
|
781
776
|
isOptionsChanged = true;
|
|
782
777
|
this.foundation.collectOptions();
|
|
783
778
|
}
|
|
@@ -801,24 +796,17 @@ class Cascader extends _baseComponent.default {
|
|
|
801
796
|
resolvedCheckedKeys
|
|
802
797
|
} = this.state;
|
|
803
798
|
const tagInputcls = (0, _classnames.default)(`${prefixcls}-tagInput-wrapper`);
|
|
804
|
-
const tagValue = [];
|
|
805
799
|
const realKeys = this.mergeType === _constants.strings.NONE_MERGE_TYPE ? checkedKeys : resolvedCheckedKeys;
|
|
806
|
-
[...realKeys].forEach(checkedKey => {
|
|
807
|
-
if (!(0, _isEmpty2.default)(keyEntities[checkedKey])) {
|
|
808
|
-
tagValue.push(keyEntities[checkedKey].valuePath);
|
|
809
|
-
}
|
|
810
|
-
});
|
|
811
800
|
return /*#__PURE__*/_react.default.createElement(_tagInput.default, {
|
|
812
801
|
className: tagInputcls,
|
|
813
802
|
ref: this.inputRef,
|
|
814
803
|
disabled: disabled,
|
|
815
804
|
size: size,
|
|
816
|
-
|
|
817
|
-
value: tagValue,
|
|
805
|
+
value: [...realKeys],
|
|
818
806
|
showRestTagsPopover: showRestTagsPopover,
|
|
819
807
|
restTagsPopoverProps: restTagsPopoverProps,
|
|
820
808
|
maxTagCount: maxTagCount,
|
|
821
|
-
renderTagItem: (value, index) => this.renderTagItem(value, index
|
|
809
|
+
renderTagItem: (value, index) => this.renderTagItem(value, index),
|
|
822
810
|
inputValue: inputValue,
|
|
823
811
|
onInputChange: this.handleInputChange,
|
|
824
812
|
// TODO Modify logic, not modify type
|
|
@@ -87,7 +87,7 @@ class DropdownItem extends _baseComponent.default {
|
|
|
87
87
|
ref: ref => forwardRef(ref),
|
|
88
88
|
className: itemclass,
|
|
89
89
|
style: style
|
|
90
|
-
}), tick, iconContent, children);
|
|
90
|
+
}, this.getDataAttr(this.props)), tick, iconContent, children);
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
DropdownItem.propTypes = {
|
package/lib/cjs/image/image.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export default class Image extends BaseComponent<ImageProps, ImageStates> {
|
|
|
20
20
|
preview: PropTypes.Requireable<NonNullable<boolean | object>>;
|
|
21
21
|
onLoad: PropTypes.Requireable<(...args: any[]) => any>;
|
|
22
22
|
onError: PropTypes.Requireable<(...args: any[]) => any>;
|
|
23
|
+
onClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
23
24
|
crossOrigin: PropTypes.Requireable<string>;
|
|
24
25
|
imageID: PropTypes.Requireable<number>;
|
|
25
26
|
};
|
package/lib/cjs/image/image.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
var _omit2 = _interopRequireDefault(require("lodash/omit"));
|
|
7
8
|
var _isUndefined2 = _interopRequireDefault(require("lodash/isUndefined"));
|
|
8
9
|
var _isObject2 = _interopRequireDefault(require("lodash/isObject"));
|
|
9
10
|
var _isBoolean2 = _interopRequireDefault(require("lodash/isBoolean"));
|
|
@@ -179,7 +180,10 @@ class Image extends _baseComponent.default {
|
|
|
179
180
|
const canPreview = loadStatus === "success" && preview && !this.isInGroup();
|
|
180
181
|
const showPreviewCursor = preview && loadStatus === "success";
|
|
181
182
|
const previewSrc = (0, _isObject2.default)(preview) ? (_a = preview.src) !== null && _a !== void 0 ? _a : src : src;
|
|
182
|
-
const previewProps = (0, _isObject2.default)(preview) ? preview
|
|
183
|
+
const previewProps = (0, _isObject2.default)(preview) && canPreview ? Object.assign(Object.assign({}, (0, _omit2.default)(preview, ['className', 'style', 'previewCls', 'previewStyle'])), {
|
|
184
|
+
className: preview === null || preview === void 0 ? void 0 : preview.previewCls,
|
|
185
|
+
style: preview === null || preview === void 0 ? void 0 : preview.previewStyle
|
|
186
|
+
}) : {};
|
|
183
187
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
184
188
|
style: outerStyle,
|
|
185
189
|
className: outerCls,
|
|
@@ -223,6 +227,7 @@ Image.propTypes = {
|
|
|
223
227
|
preview: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.object]),
|
|
224
228
|
onLoad: _propTypes.default.func,
|
|
225
229
|
onError: _propTypes.default.func,
|
|
230
|
+
onClick: _propTypes.default.func,
|
|
226
231
|
crossOrigin: _propTypes.default.string,
|
|
227
232
|
imageID: _propTypes.default.number
|
|
228
233
|
};
|
|
@@ -18,6 +18,7 @@ export interface ImageProps extends BaseProps {
|
|
|
18
18
|
preview?: boolean | PreviewProps;
|
|
19
19
|
onError?: (event: Event) => void;
|
|
20
20
|
onLoad?: (event: Event) => void;
|
|
21
|
+
onClick?: (event: any) => void;
|
|
21
22
|
crossOrigin?: "anonymous" | "use-credentials";
|
|
22
23
|
children?: ReactNode;
|
|
23
24
|
imageID?: number;
|
|
@@ -55,6 +56,8 @@ export interface PreviewProps extends BaseProps {
|
|
|
55
56
|
crossOrigin?: "anonymous" | "use-credentials";
|
|
56
57
|
maxZoom?: number;
|
|
57
58
|
minZoom?: number;
|
|
59
|
+
previewCls?: string;
|
|
60
|
+
previewStyle?: React.CSSProperties;
|
|
58
61
|
renderHeader?: (info: any) => ReactNode;
|
|
59
62
|
renderPreviewMenu?: (props: MenuProps) => ReactNode;
|
|
60
63
|
getPopupContainer?: () => HTMLElement;
|
|
@@ -70,6 +73,8 @@ export interface PreviewProps extends BaseProps {
|
|
|
70
73
|
onDownload?: (src: string, index: number) => void;
|
|
71
74
|
setDownloadName?: (src: string) => string;
|
|
72
75
|
}
|
|
76
|
+
export interface PreviewInnerProps extends Omit<PreviewProps, "previewCls" | "previewStyle"> {
|
|
77
|
+
}
|
|
73
78
|
export interface MenuProps {
|
|
74
79
|
min?: number;
|
|
75
80
|
max?: number;
|
|
@@ -108,6 +113,7 @@ export interface SliderProps {
|
|
|
108
113
|
step?: number;
|
|
109
114
|
}
|
|
110
115
|
export interface HeaderProps {
|
|
116
|
+
closable: boolean;
|
|
111
117
|
renderHeader?: (info: any) => ReactNode;
|
|
112
118
|
title?: string;
|
|
113
119
|
titleStyle?: React.CSSProperties;
|
|
@@ -31,6 +31,8 @@ export default class Preview extends BaseComponent<PreviewProps, PreviewState> {
|
|
|
31
31
|
lazyLoadMargin: PropTypes.Requireable<string>;
|
|
32
32
|
preLoad: PropTypes.Requireable<boolean>;
|
|
33
33
|
preLoadGap: PropTypes.Requireable<number>;
|
|
34
|
+
previewCls: PropTypes.Requireable<string>;
|
|
35
|
+
previewStyle: PropTypes.Requireable<object>;
|
|
34
36
|
disableDownload: PropTypes.Requireable<boolean>;
|
|
35
37
|
zIndex: PropTypes.Requireable<number>;
|
|
36
38
|
renderHeader: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -51,6 +53,7 @@ export default class Preview extends BaseComponent<PreviewProps, PreviewState> {
|
|
|
51
53
|
src: any[];
|
|
52
54
|
lazyLoad: boolean;
|
|
53
55
|
lazyLoadMargin: string;
|
|
56
|
+
closable: boolean;
|
|
54
57
|
};
|
|
55
58
|
get adapter(): {
|
|
56
59
|
getContext(key: string): any;
|
package/lib/cjs/image/preview.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
var _omit2 = _interopRequireDefault(require("lodash/omit"));
|
|
7
8
|
var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
|
|
8
9
|
var _isObject2 = _interopRequireDefault(require("lodash/isObject"));
|
|
9
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
@@ -154,6 +155,10 @@ class Preview extends _baseComponent.default {
|
|
|
154
155
|
setDownloadName
|
|
155
156
|
} = _a,
|
|
156
157
|
restProps = __rest(_a, ["src", "className", "style", "lazyLoad", "setDownloadName"]);
|
|
158
|
+
const previewInnerProps = Object.assign(Object.assign({}, (0, _omit2.default)(restProps, ['previewCls', 'previewStyle'])), {
|
|
159
|
+
className: restProps === null || restProps === void 0 ? void 0 : restProps.previewCls,
|
|
160
|
+
style: restProps === null || restProps === void 0 ? void 0 : restProps.previewStyle
|
|
161
|
+
});
|
|
157
162
|
const {
|
|
158
163
|
currentIndex,
|
|
159
164
|
visible
|
|
@@ -182,7 +187,7 @@ class Preview extends _baseComponent.default {
|
|
|
182
187
|
id: this.previewGroupId,
|
|
183
188
|
style: style,
|
|
184
189
|
className: (0, _classnames.default)(`${prefixCls}-preview-group`, className)
|
|
185
|
-
}, newChildren), /*#__PURE__*/_react.default.createElement(_previewInner.default, Object.assign({},
|
|
190
|
+
}, newChildren), /*#__PURE__*/_react.default.createElement(_previewInner.default, Object.assign({}, previewInnerProps, {
|
|
186
191
|
ref: this.previewRef,
|
|
187
192
|
src: finalSrcList,
|
|
188
193
|
currentIndex: currentIndex,
|
|
@@ -217,6 +222,8 @@ Preview.propTypes = {
|
|
|
217
222
|
lazyLoadMargin: _propTypes.default.string,
|
|
218
223
|
preLoad: _propTypes.default.bool,
|
|
219
224
|
preLoadGap: _propTypes.default.number,
|
|
225
|
+
previewCls: _propTypes.default.string,
|
|
226
|
+
previewStyle: _propTypes.default.object,
|
|
220
227
|
disableDownload: _propTypes.default.bool,
|
|
221
228
|
zIndex: _propTypes.default.number,
|
|
222
229
|
renderHeader: _propTypes.default.func,
|
|
@@ -236,5 +243,6 @@ Preview.propTypes = {
|
|
|
236
243
|
Preview.defaultProps = {
|
|
237
244
|
src: [],
|
|
238
245
|
lazyLoad: true,
|
|
239
|
-
lazyLoadMargin: "0px 100px 100px 0px"
|
|
246
|
+
lazyLoadMargin: "0px 100px 100px 0px",
|
|
247
|
+
closable: true
|
|
240
248
|
};
|
|
@@ -18,7 +18,8 @@ const Header = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
18
18
|
onClose,
|
|
19
19
|
titleStyle,
|
|
20
20
|
className,
|
|
21
|
-
renderHeader
|
|
21
|
+
renderHeader,
|
|
22
|
+
closable
|
|
22
23
|
} = _ref;
|
|
23
24
|
return /*#__PURE__*/_react.default.createElement(_previewContext.PreviewContext.Consumer, null, _ref2 => {
|
|
24
25
|
let {
|
|
@@ -35,7 +36,7 @@ const Header = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
35
36
|
}, /*#__PURE__*/_react.default.createElement("section", {
|
|
36
37
|
className: `${prefixCls}-title`,
|
|
37
38
|
style: titleStyle
|
|
38
|
-
}, renderHeader ? renderHeader(title) : title), /*#__PURE__*/_react.default.createElement("section", {
|
|
39
|
+
}, renderHeader ? renderHeader(title) : title), closable && /*#__PURE__*/_react.default.createElement("section", {
|
|
39
40
|
className: `${prefixCls}-close`,
|
|
40
41
|
onMouseUp: onClose
|
|
41
42
|
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, null)));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import BaseComponent from "../_base/baseComponent";
|
|
3
|
-
import {
|
|
3
|
+
import { PreviewInnerProps, PreviewInnerStates } from "./interface";
|
|
4
4
|
import PropTypes from "prop-types";
|
|
5
5
|
import PreviewInnerFoundation, { PreviewInnerAdapter, RatioType } from '@douyinfe/semi-foundation/lib/cjs/image/previewInnerFoundation';
|
|
6
6
|
import { PreviewContextProps } from "./previewContext";
|
|
@@ -270,6 +270,7 @@ class PreviewInner extends _baseComponent.default {
|
|
|
270
270
|
render() {
|
|
271
271
|
const {
|
|
272
272
|
getPopupContainer,
|
|
273
|
+
closable,
|
|
273
274
|
zIndex,
|
|
274
275
|
visible,
|
|
275
276
|
className,
|
|
@@ -316,13 +317,10 @@ class PreviewInner extends _baseComponent.default {
|
|
|
316
317
|
const total = imgSrc.length;
|
|
317
318
|
const showPrev = total !== 1 && (infinite || currentIndex !== 0);
|
|
318
319
|
const showNext = total !== 1 && (infinite || currentIndex !== total - 1);
|
|
319
|
-
return /*#__PURE__*/_react.default.createElement(_portal.default, {
|
|
320
|
+
return visible && /*#__PURE__*/_react.default.createElement(_portal.default, {
|
|
320
321
|
getPopupContainer: getPopupContainer,
|
|
321
322
|
style: wrapperStyle
|
|
322
|
-
},
|
|
323
|
-
/*#__PURE__*/
|
|
324
|
-
// eslint-disable-next-line jsx-a11y/mouse-events-have-key-events,jsx-a11y/no-static-element-interactions
|
|
325
|
-
_react.default.createElement("div", {
|
|
323
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
326
324
|
className: previewWrapperCls,
|
|
327
325
|
style: style,
|
|
328
326
|
onMouseDown: this.handleMouseDown,
|
|
@@ -333,7 +331,8 @@ class PreviewInner extends _baseComponent.default {
|
|
|
333
331
|
ref: this.headerRef,
|
|
334
332
|
className: (0, _classnames.default)(hideViewerCls),
|
|
335
333
|
onClose: this.handlePreviewClose,
|
|
336
|
-
renderHeader: renderHeader
|
|
334
|
+
renderHeader: renderHeader,
|
|
335
|
+
closable: closable
|
|
337
336
|
}), /*#__PURE__*/_react.default.createElement(_previewImage.default, {
|
|
338
337
|
src: imgSrc[currentIndex],
|
|
339
338
|
onZoom: this.handleZoomImage,
|
|
@@ -193,7 +193,7 @@ declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
|
|
|
193
193
|
handleInputChange: (value: string) => void;
|
|
194
194
|
handleTagRemove: (e: any, tagValuePath: Array<string | number>) => void;
|
|
195
195
|
handleRemoveByKey: (key: any) => void;
|
|
196
|
-
renderTagItem: (
|
|
196
|
+
renderTagItem: (nodeKey: string, idx: number) => string | number | boolean | React.ReactFragment | JSX.Element;
|
|
197
197
|
renderTagInput(): JSX.Element;
|
|
198
198
|
renderInput(): JSX.Element;
|
|
199
199
|
handleItemClick: (e: MouseEvent | KeyboardEvent, item: Entity | Data) => void;
|
package/lib/es/cascader/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _isObject from "lodash/isObject";
|
|
2
2
|
import _noop from "lodash/noop";
|
|
3
3
|
import _isNumber from "lodash/isNumber";
|
|
4
4
|
import _isFunction from "lodash/isFunction";
|
|
@@ -15,7 +15,7 @@ import { cssClasses, strings } from '@douyinfe/semi-foundation/lib/es/cascader/c
|
|
|
15
15
|
import { numbers as popoverNumbers } from '@douyinfe/semi-foundation/lib/es/popover/constants';
|
|
16
16
|
import '@douyinfe/semi-foundation/lib/es/cascader/cascader.css';
|
|
17
17
|
import { IconClear, IconChevronDown } from '@douyinfe/semi-icons';
|
|
18
|
-
import {
|
|
18
|
+
import { convertDataToEntities, calcMergeType, getKeyByValuePath } from '@douyinfe/semi-foundation/lib/es/cascader/util';
|
|
19
19
|
import { calcCheckedKeys, normalizeKeyList, calcDisabledKeys } from '@douyinfe/semi-foundation/lib/es/tree/treeUtil';
|
|
20
20
|
import ConfigContext from '../configProvider/context';
|
|
21
21
|
import BaseComponent from '../_base/baseComponent';
|
|
@@ -43,7 +43,7 @@ class Cascader extends BaseComponent {
|
|
|
43
43
|
} = this.state;
|
|
44
44
|
this.handleTagRemove(null, keyEntities[key].valuePath);
|
|
45
45
|
};
|
|
46
|
-
this.renderTagItem = (
|
|
46
|
+
this.renderTagItem = (nodeKey, idx) => {
|
|
47
47
|
const {
|
|
48
48
|
keyEntities,
|
|
49
49
|
disabledKeys
|
|
@@ -55,9 +55,8 @@ class Cascader extends BaseComponent {
|
|
|
55
55
|
displayRender,
|
|
56
56
|
disableStrictly
|
|
57
57
|
} = this.props;
|
|
58
|
-
const nodeKey = type === strings.IS_VALUE ? findKeysForValues(value, keyEntities)[0] : value;
|
|
59
58
|
const isDsiabled = disabled || keyEntities[nodeKey].data.disabled || disableStrictly && disabledKeys.has(nodeKey);
|
|
60
|
-
if (
|
|
59
|
+
if (keyEntities[nodeKey]) {
|
|
61
60
|
const tagCls = cls(`${prefixcls}-selection-tag`, {
|
|
62
61
|
[`${prefixcls}-selection-tag-disabled`]: isDsiabled
|
|
63
62
|
});
|
|
@@ -184,7 +183,7 @@ class Cascader extends BaseComponent {
|
|
|
184
183
|
const hiddenTag = [];
|
|
185
184
|
[...realKeys].forEach((checkedKey, idx) => {
|
|
186
185
|
const notExceedMaxTagCount = !_isNumber(maxTagCount) || maxTagCount >= idx + 1;
|
|
187
|
-
const item = this.renderTagItem(checkedKey, idx
|
|
186
|
+
const item = this.renderTagItem(checkedKey, idx);
|
|
188
187
|
if (notExceedMaxTagCount) {
|
|
189
188
|
displayTag.push(item);
|
|
190
189
|
} else {
|
|
@@ -227,7 +226,7 @@ class Cascader extends BaseComponent {
|
|
|
227
226
|
const searchable = Boolean(filterTreeNode);
|
|
228
227
|
if (!searchable) {
|
|
229
228
|
if (multiple) {
|
|
230
|
-
if (
|
|
229
|
+
if (checkedKeys.size === 0) {
|
|
231
230
|
return /*#__PURE__*/React.createElement("span", {
|
|
232
231
|
className: `${prefixcls}-selection-placeholder`
|
|
233
232
|
}, placeholder);
|
|
@@ -694,27 +693,23 @@ class Cascader extends BaseComponent {
|
|
|
694
693
|
return firstInProps || treeDataHasChange;
|
|
695
694
|
};
|
|
696
695
|
const getRealKeys = (realValue, keyEntities) => {
|
|
697
|
-
//
|
|
698
|
-
let
|
|
696
|
+
// normalizedValue is used to save the value in two-dimensional array format
|
|
697
|
+
let normalizedValue = [];
|
|
699
698
|
if (Array.isArray(realValue)) {
|
|
700
|
-
|
|
699
|
+
normalizedValue = Array.isArray(realValue[0]) ? realValue : [realValue];
|
|
701
700
|
} else {
|
|
702
701
|
if (realValue !== undefined) {
|
|
703
|
-
|
|
702
|
+
normalizedValue = [[realValue]];
|
|
704
703
|
}
|
|
705
704
|
}
|
|
706
705
|
// formatValuePath is used to save value of valuePath
|
|
707
706
|
const formatValuePath = [];
|
|
708
|
-
|
|
709
|
-
const formatItem = onChangeWithObject ? valueItem.map(i => i === null || i === void 0 ? void 0 : i.value) : valueItem;
|
|
707
|
+
normalizedValue.forEach(valueItem => {
|
|
708
|
+
const formatItem = onChangeWithObject && _isObject(valueItem[0]) ? valueItem.map(i => i === null || i === void 0 ? void 0 : i.value) : valueItem;
|
|
710
709
|
formatValuePath.push(formatItem);
|
|
711
710
|
});
|
|
712
711
|
// formatKeys is used to save key of value
|
|
713
|
-
const formatKeys =
|
|
714
|
-
formatValuePath.forEach(v => {
|
|
715
|
-
const formatKeyItem = findKeysForValues(v, keyEntities);
|
|
716
|
-
!_isEmpty(formatKeyItem) && formatKeys.push(formatKeyItem);
|
|
717
|
-
});
|
|
712
|
+
const formatKeys = formatValuePath.map(v => getKeyByValuePath(v));
|
|
718
713
|
return formatKeys;
|
|
719
714
|
};
|
|
720
715
|
const needUpdateTreeData = needUpdate('treeData') || needUpdateData();
|
|
@@ -744,7 +739,7 @@ class Cascader extends BaseComponent {
|
|
|
744
739
|
if (_isSet(realKeys)) {
|
|
745
740
|
realKeys = [...realKeys];
|
|
746
741
|
}
|
|
747
|
-
const calRes = calcCheckedKeys(
|
|
742
|
+
const calRes = calcCheckedKeys(realKeys, keyEntities);
|
|
748
743
|
const checkedKeys = new Set(calRes.checkedKeys);
|
|
749
744
|
const halfCheckedKeys = new Set(calRes.halfCheckedKeys);
|
|
750
745
|
// disableStrictly
|
|
@@ -768,7 +763,7 @@ class Cascader extends BaseComponent {
|
|
|
768
763
|
}
|
|
769
764
|
componentDidUpdate(prevProps) {
|
|
770
765
|
let isOptionsChanged = false;
|
|
771
|
-
if (!_isEqual(prevProps.treeData, this.props.treeData)) {
|
|
766
|
+
if (!_isEqual(prevProps.treeData, this.props.treeData) && !this.props.multiple) {
|
|
772
767
|
isOptionsChanged = true;
|
|
773
768
|
this.foundation.collectOptions();
|
|
774
769
|
}
|
|
@@ -792,24 +787,17 @@ class Cascader extends BaseComponent {
|
|
|
792
787
|
resolvedCheckedKeys
|
|
793
788
|
} = this.state;
|
|
794
789
|
const tagInputcls = cls(`${prefixcls}-tagInput-wrapper`);
|
|
795
|
-
const tagValue = [];
|
|
796
790
|
const realKeys = this.mergeType === strings.NONE_MERGE_TYPE ? checkedKeys : resolvedCheckedKeys;
|
|
797
|
-
[...realKeys].forEach(checkedKey => {
|
|
798
|
-
if (!_isEmpty(keyEntities[checkedKey])) {
|
|
799
|
-
tagValue.push(keyEntities[checkedKey].valuePath);
|
|
800
|
-
}
|
|
801
|
-
});
|
|
802
791
|
return /*#__PURE__*/React.createElement(TagInput, {
|
|
803
792
|
className: tagInputcls,
|
|
804
793
|
ref: this.inputRef,
|
|
805
794
|
disabled: disabled,
|
|
806
795
|
size: size,
|
|
807
|
-
|
|
808
|
-
value: tagValue,
|
|
796
|
+
value: [...realKeys],
|
|
809
797
|
showRestTagsPopover: showRestTagsPopover,
|
|
810
798
|
restTagsPopoverProps: restTagsPopoverProps,
|
|
811
799
|
maxTagCount: maxTagCount,
|
|
812
|
-
renderTagItem: (value, index) => this.renderTagItem(value, index
|
|
800
|
+
renderTagItem: (value, index) => this.renderTagItem(value, index),
|
|
813
801
|
inputValue: inputValue,
|
|
814
802
|
onInputChange: this.handleInputChange,
|
|
815
803
|
// TODO Modify logic, not modify type
|
package/lib/es/image/image.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export default class Image extends BaseComponent<ImageProps, ImageStates> {
|
|
|
20
20
|
preview: PropTypes.Requireable<NonNullable<boolean | object>>;
|
|
21
21
|
onLoad: PropTypes.Requireable<(...args: any[]) => any>;
|
|
22
22
|
onError: PropTypes.Requireable<(...args: any[]) => any>;
|
|
23
|
+
onClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
23
24
|
crossOrigin: PropTypes.Requireable<string>;
|
|
24
25
|
imageID: PropTypes.Requireable<number>;
|
|
25
26
|
};
|
package/lib/es/image/image.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _omit from "lodash/omit";
|
|
1
2
|
import _isUndefined from "lodash/isUndefined";
|
|
2
3
|
import _isObject from "lodash/isObject";
|
|
3
4
|
import _isBoolean from "lodash/isBoolean";
|
|
@@ -172,7 +173,10 @@ export default class Image extends BaseComponent {
|
|
|
172
173
|
const canPreview = loadStatus === "success" && preview && !this.isInGroup();
|
|
173
174
|
const showPreviewCursor = preview && loadStatus === "success";
|
|
174
175
|
const previewSrc = _isObject(preview) ? (_a = preview.src) !== null && _a !== void 0 ? _a : src : src;
|
|
175
|
-
const previewProps = _isObject(preview) ? preview
|
|
176
|
+
const previewProps = _isObject(preview) && canPreview ? Object.assign(Object.assign({}, _omit(preview, ['className', 'style', 'previewCls', 'previewStyle'])), {
|
|
177
|
+
className: preview === null || preview === void 0 ? void 0 : preview.previewCls,
|
|
178
|
+
style: preview === null || preview === void 0 ? void 0 : preview.previewStyle
|
|
179
|
+
}) : {};
|
|
176
180
|
return /*#__PURE__*/React.createElement("div", {
|
|
177
181
|
style: outerStyle,
|
|
178
182
|
className: outerCls,
|
|
@@ -215,6 +219,7 @@ Image.propTypes = {
|
|
|
215
219
|
preview: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),
|
|
216
220
|
onLoad: PropTypes.func,
|
|
217
221
|
onError: PropTypes.func,
|
|
222
|
+
onClick: PropTypes.func,
|
|
218
223
|
crossOrigin: PropTypes.string,
|
|
219
224
|
imageID: PropTypes.number
|
|
220
225
|
};
|
|
@@ -18,6 +18,7 @@ export interface ImageProps extends BaseProps {
|
|
|
18
18
|
preview?: boolean | PreviewProps;
|
|
19
19
|
onError?: (event: Event) => void;
|
|
20
20
|
onLoad?: (event: Event) => void;
|
|
21
|
+
onClick?: (event: any) => void;
|
|
21
22
|
crossOrigin?: "anonymous" | "use-credentials";
|
|
22
23
|
children?: ReactNode;
|
|
23
24
|
imageID?: number;
|
|
@@ -55,6 +56,8 @@ export interface PreviewProps extends BaseProps {
|
|
|
55
56
|
crossOrigin?: "anonymous" | "use-credentials";
|
|
56
57
|
maxZoom?: number;
|
|
57
58
|
minZoom?: number;
|
|
59
|
+
previewCls?: string;
|
|
60
|
+
previewStyle?: React.CSSProperties;
|
|
58
61
|
renderHeader?: (info: any) => ReactNode;
|
|
59
62
|
renderPreviewMenu?: (props: MenuProps) => ReactNode;
|
|
60
63
|
getPopupContainer?: () => HTMLElement;
|
|
@@ -70,6 +73,8 @@ export interface PreviewProps extends BaseProps {
|
|
|
70
73
|
onDownload?: (src: string, index: number) => void;
|
|
71
74
|
setDownloadName?: (src: string) => string;
|
|
72
75
|
}
|
|
76
|
+
export interface PreviewInnerProps extends Omit<PreviewProps, "previewCls" | "previewStyle"> {
|
|
77
|
+
}
|
|
73
78
|
export interface MenuProps {
|
|
74
79
|
min?: number;
|
|
75
80
|
max?: number;
|
|
@@ -108,6 +113,7 @@ export interface SliderProps {
|
|
|
108
113
|
step?: number;
|
|
109
114
|
}
|
|
110
115
|
export interface HeaderProps {
|
|
116
|
+
closable: boolean;
|
|
111
117
|
renderHeader?: (info: any) => ReactNode;
|
|
112
118
|
title?: string;
|
|
113
119
|
titleStyle?: React.CSSProperties;
|
|
@@ -31,6 +31,8 @@ export default class Preview extends BaseComponent<PreviewProps, PreviewState> {
|
|
|
31
31
|
lazyLoadMargin: PropTypes.Requireable<string>;
|
|
32
32
|
preLoad: PropTypes.Requireable<boolean>;
|
|
33
33
|
preLoadGap: PropTypes.Requireable<number>;
|
|
34
|
+
previewCls: PropTypes.Requireable<string>;
|
|
35
|
+
previewStyle: PropTypes.Requireable<object>;
|
|
34
36
|
disableDownload: PropTypes.Requireable<boolean>;
|
|
35
37
|
zIndex: PropTypes.Requireable<number>;
|
|
36
38
|
renderHeader: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -51,6 +53,7 @@ export default class Preview extends BaseComponent<PreviewProps, PreviewState> {
|
|
|
51
53
|
src: any[];
|
|
52
54
|
lazyLoad: boolean;
|
|
53
55
|
lazyLoadMargin: string;
|
|
56
|
+
closable: boolean;
|
|
54
57
|
};
|
|
55
58
|
get adapter(): {
|
|
56
59
|
getContext(key: string): any;
|
package/lib/es/image/preview.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _omit from "lodash/omit";
|
|
1
2
|
import _isEqual from "lodash/isEqual";
|
|
2
3
|
import _isObject from "lodash/isObject";
|
|
3
4
|
var __rest = this && this.__rest || function (s, e) {
|
|
@@ -145,6 +146,10 @@ export default class Preview extends BaseComponent {
|
|
|
145
146
|
setDownloadName
|
|
146
147
|
} = _a,
|
|
147
148
|
restProps = __rest(_a, ["src", "className", "style", "lazyLoad", "setDownloadName"]);
|
|
149
|
+
const previewInnerProps = Object.assign(Object.assign({}, _omit(restProps, ['previewCls', 'previewStyle'])), {
|
|
150
|
+
className: restProps === null || restProps === void 0 ? void 0 : restProps.previewCls,
|
|
151
|
+
style: restProps === null || restProps === void 0 ? void 0 : restProps.previewStyle
|
|
152
|
+
});
|
|
148
153
|
const {
|
|
149
154
|
currentIndex,
|
|
150
155
|
visible
|
|
@@ -173,7 +178,7 @@ export default class Preview extends BaseComponent {
|
|
|
173
178
|
id: this.previewGroupId,
|
|
174
179
|
style: style,
|
|
175
180
|
className: cls(`${prefixCls}-preview-group`, className)
|
|
176
|
-
}, newChildren), /*#__PURE__*/React.createElement(PreviewInner, Object.assign({},
|
|
181
|
+
}, newChildren), /*#__PURE__*/React.createElement(PreviewInner, Object.assign({}, previewInnerProps, {
|
|
177
182
|
ref: this.previewRef,
|
|
178
183
|
src: finalSrcList,
|
|
179
184
|
currentIndex: currentIndex,
|
|
@@ -207,6 +212,8 @@ Preview.propTypes = {
|
|
|
207
212
|
lazyLoadMargin: PropTypes.string,
|
|
208
213
|
preLoad: PropTypes.bool,
|
|
209
214
|
preLoadGap: PropTypes.number,
|
|
215
|
+
previewCls: PropTypes.string,
|
|
216
|
+
previewStyle: PropTypes.object,
|
|
210
217
|
disableDownload: PropTypes.bool,
|
|
211
218
|
zIndex: PropTypes.number,
|
|
212
219
|
renderHeader: PropTypes.func,
|
|
@@ -226,5 +233,6 @@ Preview.propTypes = {
|
|
|
226
233
|
Preview.defaultProps = {
|
|
227
234
|
src: [],
|
|
228
235
|
lazyLoad: true,
|
|
229
|
-
lazyLoadMargin: "0px 100px 100px 0px"
|
|
236
|
+
lazyLoadMargin: "0px 100px 100px 0px",
|
|
237
|
+
closable: true
|
|
230
238
|
};
|
|
@@ -9,7 +9,8 @@ const Header = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
9
9
|
onClose,
|
|
10
10
|
titleStyle,
|
|
11
11
|
className,
|
|
12
|
-
renderHeader
|
|
12
|
+
renderHeader,
|
|
13
|
+
closable
|
|
13
14
|
} = _ref;
|
|
14
15
|
return /*#__PURE__*/React.createElement(PreviewContext.Consumer, null, _ref2 => {
|
|
15
16
|
let {
|
|
@@ -26,7 +27,7 @@ const Header = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
26
27
|
}, /*#__PURE__*/React.createElement("section", {
|
|
27
28
|
className: `${prefixCls}-title`,
|
|
28
29
|
style: titleStyle
|
|
29
|
-
}, renderHeader ? renderHeader(title) : title), /*#__PURE__*/React.createElement("section", {
|
|
30
|
+
}, renderHeader ? renderHeader(title) : title), closable && /*#__PURE__*/React.createElement("section", {
|
|
30
31
|
className: `${prefixCls}-close`,
|
|
31
32
|
onMouseUp: onClose
|
|
32
33
|
}, /*#__PURE__*/React.createElement(IconClose, null)));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import BaseComponent from "../_base/baseComponent";
|
|
3
|
-
import {
|
|
3
|
+
import { PreviewInnerProps, PreviewInnerStates } from "./interface";
|
|
4
4
|
import PropTypes from "prop-types";
|
|
5
5
|
import PreviewInnerFoundation, { PreviewInnerAdapter, RatioType } from '@douyinfe/semi-foundation/lib/es/image/previewInnerFoundation';
|
|
6
6
|
import { PreviewContextProps } from "./previewContext";
|