@douyinfe/semi-ui 2.48.0 → 2.49.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/css/semi.css +4 -0
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +319 -293
- 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/banner/index.d.ts +2 -2
- package/lib/cjs/banner/index.js +2 -2
- package/lib/cjs/breadcrumb/item.d.ts +1 -1
- package/lib/cjs/breadcrumb/item.js +1 -1
- package/lib/cjs/calendar/dayCalendar.d.ts +1 -0
- package/lib/cjs/calendar/dayCalendar.js +4 -1
- package/lib/cjs/calendar/dayCol.d.ts +2 -0
- package/lib/cjs/calendar/dayCol.js +6 -6
- package/lib/cjs/calendar/index.d.ts +1 -0
- package/lib/cjs/calendar/index.js +1 -0
- package/lib/cjs/calendar/interface.d.ts +2 -1
- package/lib/cjs/calendar/rangeCalendar.js +4 -2
- package/lib/cjs/calendar/weekCalendar.js +4 -2
- package/lib/cjs/image/interface.d.ts +3 -3
- package/lib/cjs/image/previewFooter.js +5 -8
- package/lib/cjs/image/previewHeader.d.ts +2 -2
- package/lib/cjs/image/previewHeader.js +9 -8
- package/lib/cjs/image/previewImage.d.ts +1 -12
- package/lib/cjs/image/previewImage.js +23 -83
- package/lib/cjs/image/previewInner.d.ts +11 -2
- package/lib/cjs/image/previewInner.js +60 -42
- package/lib/cjs/modal/Modal.d.ts +1 -1
- package/lib/cjs/modal/Modal.js +1 -1
- package/lib/cjs/navigation/SubNav.d.ts +1 -1
- package/lib/cjs/navigation/SubNav.js +1 -1
- package/lib/cjs/popconfirm/index.d.ts +1 -1
- package/lib/cjs/popconfirm/index.js +1 -1
- package/lib/cjs/sideSheet/SideSheetContent.d.ts +3 -1
- package/lib/cjs/sideSheet/SideSheetContent.js +6 -3
- package/lib/cjs/table/Body/BaseRow.d.ts +3 -0
- package/lib/cjs/table/Body/BaseRow.js +4 -1
- package/lib/cjs/table/Body/ExpandedRow.d.ts +1 -0
- package/lib/cjs/table/Body/ExpandedRow.js +4 -2
- package/lib/cjs/table/Body/index.d.ts +3 -0
- package/lib/cjs/table/Body/index.js +18 -10
- package/lib/cjs/table/interface.d.ts +1 -0
- package/lib/cjs/timePicker/TimePicker.d.ts +3 -0
- package/lib/cjs/timePicker/TimePicker.js +7 -3
- package/lib/cjs/timePicker/index.d.ts +2 -0
- package/lib/cjs/toast/toast.d.ts +1 -1
- package/lib/cjs/toast/toast.js +1 -1
- package/lib/cjs/typography/util.js +5 -6
- package/lib/es/banner/index.d.ts +2 -2
- package/lib/es/banner/index.js +2 -2
- package/lib/es/breadcrumb/item.d.ts +1 -1
- package/lib/es/breadcrumb/item.js +1 -1
- package/lib/es/calendar/dayCalendar.d.ts +1 -0
- package/lib/es/calendar/dayCalendar.js +4 -1
- package/lib/es/calendar/dayCol.d.ts +2 -0
- package/lib/es/calendar/dayCol.js +6 -6
- package/lib/es/calendar/index.d.ts +1 -0
- package/lib/es/calendar/index.js +1 -0
- package/lib/es/calendar/interface.d.ts +2 -1
- package/lib/es/calendar/rangeCalendar.js +4 -2
- package/lib/es/calendar/weekCalendar.js +4 -2
- package/lib/es/image/interface.d.ts +3 -3
- package/lib/es/image/previewFooter.js +5 -8
- package/lib/es/image/previewHeader.d.ts +2 -2
- package/lib/es/image/previewHeader.js +4 -3
- package/lib/es/image/previewImage.d.ts +1 -12
- package/lib/es/image/previewImage.js +23 -83
- package/lib/es/image/previewInner.d.ts +11 -2
- package/lib/es/image/previewInner.js +60 -42
- package/lib/es/modal/Modal.d.ts +1 -1
- package/lib/es/modal/Modal.js +1 -1
- package/lib/es/navigation/SubNav.d.ts +1 -1
- package/lib/es/navigation/SubNav.js +1 -1
- package/lib/es/popconfirm/index.d.ts +1 -1
- package/lib/es/popconfirm/index.js +1 -1
- package/lib/es/sideSheet/SideSheetContent.d.ts +3 -1
- package/lib/es/sideSheet/SideSheetContent.js +6 -3
- package/lib/es/table/Body/BaseRow.d.ts +3 -0
- package/lib/es/table/Body/BaseRow.js +4 -1
- package/lib/es/table/Body/ExpandedRow.d.ts +1 -0
- package/lib/es/table/Body/ExpandedRow.js +4 -2
- package/lib/es/table/Body/index.d.ts +3 -0
- package/lib/es/table/Body/index.js +18 -10
- package/lib/es/table/interface.d.ts +1 -0
- package/lib/es/timePicker/TimePicker.d.ts +3 -0
- package/lib/es/timePicker/TimePicker.js +7 -3
- package/lib/es/timePicker/index.d.ts +2 -0
- package/lib/es/toast/toast.d.ts +1 -1
- package/lib/es/toast/toast.js +1 -1
- package/lib/es/typography/util.js +5 -6
- package/package.json +8 -8
|
@@ -21,14 +21,6 @@ var _previewContext = require("./previewContext");
|
|
|
21
21
|
var _utils = require("../_utils");
|
|
22
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
23
|
const prefixCls = _constants.cssClasses.PREFIX;
|
|
24
|
-
let startMouseDown = {
|
|
25
|
-
x: 0,
|
|
26
|
-
y: 0
|
|
27
|
-
};
|
|
28
|
-
let mouseActiveTime = null;
|
|
29
|
-
let stopTiming = false;
|
|
30
|
-
let timer = null;
|
|
31
|
-
// let bodyOverflowValue = document.body.style.overflow;
|
|
32
24
|
class PreviewInner extends _baseComponent.default {
|
|
33
25
|
get adapter() {
|
|
34
26
|
return Object.assign(Object.assign({}, super.adapter), {
|
|
@@ -112,30 +104,22 @@ class PreviewInner extends _baseComponent.default {
|
|
|
112
104
|
unregisterKeyDownListener: () => {
|
|
113
105
|
window && window.removeEventListener("keydown", this.handleKeyDown);
|
|
114
106
|
},
|
|
115
|
-
getMouseActiveTime: () => {
|
|
116
|
-
return mouseActiveTime;
|
|
117
|
-
},
|
|
118
|
-
getStopTiming: () => {
|
|
119
|
-
return stopTiming;
|
|
120
|
-
},
|
|
121
|
-
setStopTiming: value => {
|
|
122
|
-
stopTiming = value;
|
|
123
|
-
},
|
|
124
|
-
getStartMouseDown: () => {
|
|
125
|
-
return startMouseDown;
|
|
126
|
-
},
|
|
127
|
-
setStartMouseDown: (x, y) => {
|
|
128
|
-
startMouseDown = {
|
|
129
|
-
x,
|
|
130
|
-
y
|
|
131
|
-
};
|
|
132
|
-
},
|
|
133
|
-
setMouseActiveTime: time => {
|
|
134
|
-
mouseActiveTime = time;
|
|
135
|
-
},
|
|
136
107
|
getSetDownloadFunc: () => {
|
|
137
108
|
var _a, _b;
|
|
138
109
|
return (_b = (_a = this.context) === null || _a === void 0 ? void 0 : _a.setDownloadName) !== null && _b !== void 0 ? _b : this.props.setDownloadName;
|
|
110
|
+
},
|
|
111
|
+
isValidTarget: e => {
|
|
112
|
+
const headerDom = this.headerRef && this.headerRef.current;
|
|
113
|
+
const footerDom = this.footerRef && this.footerRef.current;
|
|
114
|
+
const leftIconDom = this.leftIconRef && this.leftIconRef.current;
|
|
115
|
+
const rightIconDom = this.rightIconRef && this.rightIconRef.current;
|
|
116
|
+
const target = e.target;
|
|
117
|
+
if (headerDom && headerDom.contains(target) || footerDom && footerDom.contains(target) || leftIconDom && leftIconDom.contains(target) || rightIconDom && rightIconDom.contains(target)) {
|
|
118
|
+
// Move in the operation area, return false
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
// Move in the preview area except the operation area, return true
|
|
122
|
+
return true;
|
|
139
123
|
}
|
|
140
124
|
});
|
|
141
125
|
}
|
|
@@ -168,9 +152,6 @@ class PreviewInner extends _baseComponent.default {
|
|
|
168
152
|
this.handleMouseMove = e => {
|
|
169
153
|
this.foundation.handleMouseMove(e);
|
|
170
154
|
};
|
|
171
|
-
this.handleMouseEvent = (e, event) => {
|
|
172
|
-
this.foundation.handleMouseMoveEvent(e, event);
|
|
173
|
-
};
|
|
174
155
|
this.handleKeyDown = e => {
|
|
175
156
|
this.foundation.handleKeyDown(e);
|
|
176
157
|
};
|
|
@@ -183,6 +164,31 @@ class PreviewInner extends _baseComponent.default {
|
|
|
183
164
|
this.handleMouseDown = e => {
|
|
184
165
|
this.foundation.handleMouseDown(e);
|
|
185
166
|
};
|
|
167
|
+
this.handleWheel = e => {
|
|
168
|
+
this.foundation.handleWheel(e);
|
|
169
|
+
};
|
|
170
|
+
// 为什么通过 addEventListener 注册 wheel 事件而不是使用 onWheel 事件?
|
|
171
|
+
// 因为 Passive Event Listeners(https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#improving_scrolling_performance_with_passive_listeners)
|
|
172
|
+
// Passive Event Listeners 是一种优化技术,用于提高滚动性能。在默认情况下,浏览器会假设事件的监听器不会调用
|
|
173
|
+
// preventDefault() 方法来阻止事件的默认行为,从而允许进行一些优化操作,例如滚动平滑。
|
|
174
|
+
// 对于 Image 而言,如果使用触控板,双指朝不同方向分开放大图片,则需要 preventDefault 防止页面整体放大。
|
|
175
|
+
// Why register wheel event through addEventListener instead of using onWheel event?
|
|
176
|
+
// Because of Passive Event Listeners(an optimization technique used to improve scrolling performance. By default,
|
|
177
|
+
// the browser will assume that event listeners will not call preventDefault() method to prevent the default behavior of the event,
|
|
178
|
+
// allowing some optimization operations such as scroll smoothing.)
|
|
179
|
+
// For Image, if we use the trackpad and spread your fingers in different directions to enlarge the image, we need to preventDefault
|
|
180
|
+
// to prevent the page from being enlarged as a whole.
|
|
181
|
+
this.registryImageWrapRef = ref => {
|
|
182
|
+
if (this.imageWrapRef) {
|
|
183
|
+
this.imageWrapRef.removeEventListener("wheel", this.handleWheel);
|
|
184
|
+
}
|
|
185
|
+
if (ref) {
|
|
186
|
+
ref.addEventListener("wheel", this.handleWheel, {
|
|
187
|
+
passive: false
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
this.imageWrapRef = ref;
|
|
191
|
+
};
|
|
186
192
|
this.state = {
|
|
187
193
|
imgSrc: [],
|
|
188
194
|
imgLoadStatus: new Map(),
|
|
@@ -199,6 +205,11 @@ class PreviewInner extends _baseComponent.default {
|
|
|
199
205
|
this.bodyOverflow = '';
|
|
200
206
|
this.originBodyWidth = '100%';
|
|
201
207
|
this.scrollBarWidth = 0;
|
|
208
|
+
this.imageWrapRef = null;
|
|
209
|
+
this.headerRef = /*#__PURE__*/_react.default.createRef();
|
|
210
|
+
this.footerRef = /*#__PURE__*/_react.default.createRef();
|
|
211
|
+
this.leftIconRef = /*#__PURE__*/_react.default.createRef();
|
|
212
|
+
this.rightIconRef = /*#__PURE__*/_react.default.createRef();
|
|
202
213
|
}
|
|
203
214
|
static getDerivedStateFromProps(props, state) {
|
|
204
215
|
const willUpdateStates = {};
|
|
@@ -214,6 +225,9 @@ class PreviewInner extends _baseComponent.default {
|
|
|
214
225
|
willUpdateStates.visible = props.visible;
|
|
215
226
|
if (props.visible) {
|
|
216
227
|
willUpdateStates.preloadAfterVisibleChange = true;
|
|
228
|
+
willUpdateStates.viewerVisible = true;
|
|
229
|
+
willUpdateStates.rotation = 0;
|
|
230
|
+
willUpdateStates.ratio = 'adaptation';
|
|
217
231
|
}
|
|
218
232
|
}
|
|
219
233
|
if ("currentIndex" in props && props.currentIndex !== state.currentIndex) {
|
|
@@ -232,10 +246,8 @@ class PreviewInner extends _baseComponent.default {
|
|
|
232
246
|
}
|
|
233
247
|
}
|
|
234
248
|
componentDidUpdate(prevProps, prevState) {
|
|
235
|
-
if (
|
|
236
|
-
|
|
237
|
-
timer && clearInterval(timer);
|
|
238
|
-
timer = setInterval(this.viewVisibleChange, 1000);
|
|
249
|
+
if (prevProps.src !== this.props.src) {
|
|
250
|
+
this.foundation.updateTimer();
|
|
239
251
|
}
|
|
240
252
|
// hide => show
|
|
241
253
|
if (!prevProps.visible && this.props.visible) {
|
|
@@ -247,7 +259,7 @@ class PreviewInner extends _baseComponent.default {
|
|
|
247
259
|
}
|
|
248
260
|
}
|
|
249
261
|
componentWillUnmount() {
|
|
250
|
-
|
|
262
|
+
this.foundation.clearTimer();
|
|
251
263
|
}
|
|
252
264
|
isInGroup() {
|
|
253
265
|
return Boolean(this.context && this.context.isGroup);
|
|
@@ -312,10 +324,10 @@ class PreviewInner extends _baseComponent.default {
|
|
|
312
324
|
style: style,
|
|
313
325
|
onMouseDown: this.handleMouseDown,
|
|
314
326
|
onMouseUp: this.handleMouseUp,
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
onMouseOut: e => this.handleMouseEvent(e.nativeEvent, "out")
|
|
327
|
+
ref: this.registryImageWrapRef,
|
|
328
|
+
onMouseMove: this.handleMouseMove
|
|
318
329
|
}, /*#__PURE__*/_react.default.createElement(_previewHeader.default, {
|
|
330
|
+
ref: this.headerRef,
|
|
319
331
|
className: (0, _classnames.default)(hideViewerCls),
|
|
320
332
|
onClose: this.handlePreviewClose,
|
|
321
333
|
renderHeader: renderHeader
|
|
@@ -326,7 +338,6 @@ class PreviewInner extends _baseComponent.default {
|
|
|
326
338
|
setRatio: this.handleAdjustRatio,
|
|
327
339
|
zoom: zoom,
|
|
328
340
|
ratio: ratio,
|
|
329
|
-
zoomStep: zoomStep,
|
|
330
341
|
rotation: rotation,
|
|
331
342
|
crossOrigin: crossOrigin,
|
|
332
343
|
onError: this.onImageError,
|
|
@@ -335,6 +346,7 @@ class PreviewInner extends _baseComponent.default {
|
|
|
335
346
|
/*#__PURE__*/
|
|
336
347
|
// eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
|
|
337
348
|
_react.default.createElement("div", {
|
|
349
|
+
ref: this.leftIconRef,
|
|
338
350
|
className: (0, _classnames.default)(`${previewPrefixCls}-icon`, `${previewPrefixCls}-prev`, hideViewerCls),
|
|
339
351
|
onClick: () => this.handleSwitchImage("prev")
|
|
340
352
|
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconArrowLeft, {
|
|
@@ -343,11 +355,13 @@ class PreviewInner extends _baseComponent.default {
|
|
|
343
355
|
/*#__PURE__*/
|
|
344
356
|
// eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
|
|
345
357
|
_react.default.createElement("div", {
|
|
358
|
+
ref: this.rightIconRef,
|
|
346
359
|
className: (0, _classnames.default)(`${previewPrefixCls}-icon`, `${previewPrefixCls}-next`, hideViewerCls),
|
|
347
360
|
onClick: () => this.handleSwitchImage("next")
|
|
348
361
|
}, /*#__PURE__*/_react.default.createElement(_semiIcons.IconArrowRight, {
|
|
349
362
|
size: "large"
|
|
350
363
|
})), /*#__PURE__*/_react.default.createElement(_previewFooter.default, {
|
|
364
|
+
forwardRef: this.footerRef,
|
|
351
365
|
className: hideViewerCls,
|
|
352
366
|
totalNum: total,
|
|
353
367
|
curPage: currentIndex + 1,
|
|
@@ -406,6 +420,8 @@ PreviewInner.propTypes = {
|
|
|
406
420
|
disableDownload: _propTypes.default.bool,
|
|
407
421
|
viewerVisibleDelay: _propTypes.default.number,
|
|
408
422
|
zIndex: _propTypes.default.number,
|
|
423
|
+
maxZoom: _propTypes.default.number,
|
|
424
|
+
minZoom: _propTypes.default.number,
|
|
409
425
|
renderHeader: _propTypes.default.func,
|
|
410
426
|
renderPreviewMenu: _propTypes.default.func,
|
|
411
427
|
getPopupContainer: _propTypes.default.func,
|
|
@@ -430,5 +446,7 @@ PreviewInner.defaultProps = {
|
|
|
430
446
|
preLoadGap: 2,
|
|
431
447
|
zIndex: 1000,
|
|
432
448
|
maskClosable: true,
|
|
433
|
-
viewerVisibleDelay: 10000
|
|
449
|
+
viewerVisibleDelay: 10000,
|
|
450
|
+
maxZoom: 5,
|
|
451
|
+
minZoom: 0.1
|
|
434
452
|
};
|
package/lib/cjs/modal/Modal.d.ts
CHANGED
|
@@ -59,7 +59,7 @@ declare class Modal extends BaseComponent<ModalReactProps, ModalState> {
|
|
|
59
59
|
getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
|
|
60
60
|
getContainerContext: PropTypes.Requireable<(...args: any[]) => any>;
|
|
61
61
|
maskFixed: PropTypes.Requireable<boolean>;
|
|
62
|
-
closeIcon: PropTypes.Requireable<
|
|
62
|
+
closeIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
63
63
|
closeOnEsc: PropTypes.Requireable<boolean>;
|
|
64
64
|
size: PropTypes.Requireable<string>;
|
|
65
65
|
keepDOM: PropTypes.Requireable<boolean>;
|
package/lib/cjs/modal/Modal.js
CHANGED
|
@@ -303,7 +303,7 @@ Modal.propTypes = {
|
|
|
303
303
|
getPopupContainer: _propTypes.default.func,
|
|
304
304
|
getContainerContext: _propTypes.default.func,
|
|
305
305
|
maskFixed: _propTypes.default.bool,
|
|
306
|
-
closeIcon: _propTypes.default.
|
|
306
|
+
closeIcon: _propTypes.default.node,
|
|
307
307
|
closeOnEsc: _propTypes.default.bool,
|
|
308
308
|
size: _propTypes.default.oneOf(_constants.strings.SIZE),
|
|
309
309
|
keepDOM: _propTypes.default.bool,
|
|
@@ -53,7 +53,7 @@ export default class SubNav extends BaseComponent<SubNavProps, SubNavState> {
|
|
|
53
53
|
/**
|
|
54
54
|
* Icon name on the left
|
|
55
55
|
*/
|
|
56
|
-
icon: PropTypes.Requireable<
|
|
56
|
+
icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
57
57
|
/**
|
|
58
58
|
* Maximum height (for animation)
|
|
59
59
|
*/
|
|
@@ -46,7 +46,7 @@ export default class Popconfirm extends BaseComponent<PopconfirmProps, Popconfir
|
|
|
46
46
|
prefixCls: PropTypes.Requireable<string>;
|
|
47
47
|
className: PropTypes.Requireable<string>;
|
|
48
48
|
style: PropTypes.Requireable<object>;
|
|
49
|
-
icon: PropTypes.Requireable<
|
|
49
|
+
icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
50
50
|
okText: PropTypes.Requireable<string>;
|
|
51
51
|
okType: PropTypes.Requireable<string>;
|
|
52
52
|
cancelText: PropTypes.Requireable<string>;
|
|
@@ -241,7 +241,7 @@ Popconfirm.propTypes = {
|
|
|
241
241
|
prefixCls: _propTypes.default.string,
|
|
242
242
|
className: _propTypes.default.string,
|
|
243
243
|
style: _propTypes.default.object,
|
|
244
|
-
icon: _propTypes.default.
|
|
244
|
+
icon: _propTypes.default.node,
|
|
245
245
|
okText: _propTypes.default.string,
|
|
246
246
|
okType: _propTypes.default.string,
|
|
247
247
|
cancelText: _propTypes.default.string,
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import React, { CSSProperties } from 'react';
|
|
1
|
+
import React, { CSSProperties, ReactNode } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { SideSheetProps } from '@douyinfe/semi-foundation/lib/cjs/sideSheet/sideSheetFoundation';
|
|
4
4
|
export interface SideSheetContentProps {
|
|
5
5
|
onClose?: (e: React.MouseEvent) => void;
|
|
6
|
+
closeIcon?: ReactNode;
|
|
6
7
|
mask?: boolean;
|
|
7
8
|
maskStyle?: CSSProperties;
|
|
8
9
|
maskClosable?: boolean;
|
|
@@ -30,6 +31,7 @@ export interface SideSheetContentProps {
|
|
|
30
31
|
export default class SideSheetContent extends React.PureComponent<SideSheetContentProps> {
|
|
31
32
|
static propTypes: {
|
|
32
33
|
onClose: PropTypes.Requireable<(...args: any[]) => any>;
|
|
34
|
+
closeIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
33
35
|
};
|
|
34
36
|
static defaultProps: {
|
|
35
37
|
onClose: (...args: any[]) => void;
|
|
@@ -66,7 +66,8 @@ class SideSheetContent extends _react.default.PureComponent {
|
|
|
66
66
|
const {
|
|
67
67
|
title,
|
|
68
68
|
closable,
|
|
69
|
-
headerStyle
|
|
69
|
+
headerStyle,
|
|
70
|
+
closeIcon
|
|
70
71
|
} = this.props;
|
|
71
72
|
let header, closer;
|
|
72
73
|
if (title) {
|
|
@@ -76,12 +77,13 @@ class SideSheetContent extends _react.default.PureComponent {
|
|
|
76
77
|
}, this.props.title);
|
|
77
78
|
}
|
|
78
79
|
if (closable) {
|
|
80
|
+
const iconType = closeIcon || /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, null);
|
|
79
81
|
closer = /*#__PURE__*/_react.default.createElement(_iconButton.default, {
|
|
80
82
|
className: `${prefixCls}-close`,
|
|
81
83
|
key: "close-btn",
|
|
82
84
|
onClick: this.close,
|
|
83
85
|
type: "tertiary",
|
|
84
|
-
icon:
|
|
86
|
+
icon: iconType,
|
|
85
87
|
theme: "borderless",
|
|
86
88
|
size: "small"
|
|
87
89
|
});
|
|
@@ -168,7 +170,8 @@ class SideSheetContent extends _react.default.PureComponent {
|
|
|
168
170
|
}
|
|
169
171
|
exports.default = SideSheetContent;
|
|
170
172
|
SideSheetContent.propTypes = {
|
|
171
|
-
onClose: _propTypes.default.func
|
|
173
|
+
onClose: _propTypes.default.func,
|
|
174
|
+
closeIcon: _propTypes.default.node
|
|
172
175
|
};
|
|
173
176
|
SideSheetContent.defaultProps = {
|
|
174
177
|
onClose: _noop2.default
|
|
@@ -43,6 +43,8 @@ export interface BaseRowProps {
|
|
|
43
43
|
style?: React.CSSProperties;
|
|
44
44
|
virtualized?: Virtualized;
|
|
45
45
|
visible: boolean;
|
|
46
|
+
/** whether display none */
|
|
47
|
+
displayNone?: boolean;
|
|
46
48
|
}
|
|
47
49
|
export default class TableRow extends BaseComponent<BaseRowProps, Record<string, any>> {
|
|
48
50
|
static propTypes: {
|
|
@@ -55,6 +57,7 @@ export default class TableRow extends BaseComponent<BaseRowProps, Record<string,
|
|
|
55
57
|
expandIcon: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike | ((...args: any[]) => any)>>;
|
|
56
58
|
expandableRow: PropTypes.Requireable<boolean>;
|
|
57
59
|
expanded: PropTypes.Requireable<boolean>;
|
|
60
|
+
displayNone: PropTypes.Requireable<boolean>;
|
|
58
61
|
expandedRow: PropTypes.Requireable<boolean>;
|
|
59
62
|
fixed: PropTypes.Requireable<NonNullable<string | boolean>>;
|
|
60
63
|
height: PropTypes.Requireable<NonNullable<string | number>>;
|
|
@@ -221,6 +221,7 @@ class TableRow extends _baseComponent.default {
|
|
|
221
221
|
record,
|
|
222
222
|
hovered,
|
|
223
223
|
expanded,
|
|
224
|
+
displayNone,
|
|
224
225
|
expandableRow,
|
|
225
226
|
level,
|
|
226
227
|
expandedRow,
|
|
@@ -238,7 +239,8 @@ class TableRow extends _baseComponent.default {
|
|
|
238
239
|
const rowCls = typeof replaceClassName === 'string' && replaceClassName.length ? replaceClassName : (0, _classnames.default)(className, `${prefixCls}-row`, {
|
|
239
240
|
[`${prefixCls}-row-selected`]: selected,
|
|
240
241
|
[`${prefixCls}-row-expanded`]: expanded,
|
|
241
|
-
[`${prefixCls}-row-hovered`]: hovered
|
|
242
|
+
[`${prefixCls}-row-hovered`]: hovered,
|
|
243
|
+
[`${prefixCls}-row-hidden`]: displayNone
|
|
242
244
|
}, customClassName);
|
|
243
245
|
const ariaProps = {};
|
|
244
246
|
if (typeof index === 'number') {
|
|
@@ -280,6 +282,7 @@ TableRow.propTypes = {
|
|
|
280
282
|
expandIcon: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.func, _propTypes.default.node]),
|
|
281
283
|
expandableRow: _propTypes.default.bool,
|
|
282
284
|
expanded: _propTypes.default.bool,
|
|
285
|
+
displayNone: _propTypes.default.bool,
|
|
283
286
|
expandedRow: _propTypes.default.bool,
|
|
284
287
|
fixed: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.bool]),
|
|
285
288
|
height: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
|
|
@@ -45,7 +45,8 @@ class TableExpandedRow extends _react.PureComponent {
|
|
|
45
45
|
style,
|
|
46
46
|
virtualized,
|
|
47
47
|
indentSize,
|
|
48
|
-
cellWidths
|
|
48
|
+
cellWidths,
|
|
49
|
+
displayNone
|
|
49
50
|
} = this.props;
|
|
50
51
|
const {
|
|
51
52
|
tableWidth,
|
|
@@ -104,7 +105,8 @@ class TableExpandedRow extends _react.PureComponent {
|
|
|
104
105
|
store: store,
|
|
105
106
|
virtualized: virtualized,
|
|
106
107
|
indentSize: indentSize,
|
|
107
|
-
cellWidths: baseRowCellWidths
|
|
108
|
+
cellWidths: baseRowCellWidths,
|
|
109
|
+
displayNone: displayNone
|
|
108
110
|
});
|
|
109
111
|
}
|
|
110
112
|
}
|
|
@@ -32,6 +32,7 @@ export interface BodyProps extends BaseProps {
|
|
|
32
32
|
renderExpandIcon: (record: Record<string, any>, isNested: boolean) => ReactNode | null;
|
|
33
33
|
headerRef?: React.MutableRefObject<HTMLDivElement> | ((instance: any) => void);
|
|
34
34
|
onScroll?: VirtualizedOnScroll;
|
|
35
|
+
keepDOM?: boolean;
|
|
35
36
|
}
|
|
36
37
|
export interface BodyState {
|
|
37
38
|
virtualizedData?: Array<FlattenData | GroupFlattenData>;
|
|
@@ -61,6 +62,8 @@ export interface RenderExpandedRowProps {
|
|
|
61
62
|
rowKey?: RowKey<Record<string, any>>;
|
|
62
63
|
virtualized?: Virtualized;
|
|
63
64
|
level?: number;
|
|
65
|
+
keepDOM?: boolean;
|
|
66
|
+
displayNone?: boolean;
|
|
64
67
|
}
|
|
65
68
|
export interface RenderSectionRowProps {
|
|
66
69
|
dataSource?: Record<string, any>[];
|
|
@@ -308,7 +308,8 @@ class Body extends _baseComponent.default {
|
|
|
308
308
|
expanded,
|
|
309
309
|
index,
|
|
310
310
|
rowKey,
|
|
311
|
-
virtualized
|
|
311
|
+
virtualized,
|
|
312
|
+
displayNone
|
|
312
313
|
} = props;
|
|
313
314
|
let key = (0, _utils.getRecordKey)(record, rowKey);
|
|
314
315
|
if (key == null) {
|
|
@@ -334,7 +335,8 @@ class Body extends _baseComponent.default {
|
|
|
334
335
|
index: index,
|
|
335
336
|
virtualized: virtualized,
|
|
336
337
|
key: (0, _utils.genExpandedRowKey)(key),
|
|
337
|
-
cellWidths: _this.cellWidths
|
|
338
|
+
cellWidths: _this.cellWidths,
|
|
339
|
+
displayNone: displayNone
|
|
338
340
|
});
|
|
339
341
|
};
|
|
340
342
|
/**
|
|
@@ -346,7 +348,8 @@ class Body extends _baseComponent.default {
|
|
|
346
348
|
groups,
|
|
347
349
|
dataSource: data,
|
|
348
350
|
rowKey,
|
|
349
|
-
expandedRowKeys
|
|
351
|
+
expandedRowKeys,
|
|
352
|
+
keepDOM
|
|
350
353
|
} = this.props;
|
|
351
354
|
const {
|
|
352
355
|
flattenedColumns
|
|
@@ -381,7 +384,7 @@ class Body extends _baseComponent.default {
|
|
|
381
384
|
expanded
|
|
382
385
|
})));
|
|
383
386
|
// Render the grouped content when the group is expanded
|
|
384
|
-
if (expanded) {
|
|
387
|
+
if (expanded || keepDOM) {
|
|
385
388
|
const dataInGroup = [];
|
|
386
389
|
group.forEach(recordKey => {
|
|
387
390
|
const record = (0, _utils.getRecord)(data, recordKey, rowKey);
|
|
@@ -392,7 +395,7 @@ class Body extends _baseComponent.default {
|
|
|
392
395
|
/**
|
|
393
396
|
* Render the contents of the group row
|
|
394
397
|
*/
|
|
395
|
-
renderedRows.push(this.renderBodyRows(dataInGroup));
|
|
398
|
+
renderedRows.push(this.renderBodyRows(dataInGroup, undefined, [], !expanded));
|
|
396
399
|
}
|
|
397
400
|
});
|
|
398
401
|
return renderedRows;
|
|
@@ -636,12 +639,14 @@ class Body extends _baseComponent.default {
|
|
|
636
639
|
let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
637
640
|
let level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
638
641
|
let renderedRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
642
|
+
let displayNone = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
639
643
|
const {
|
|
640
644
|
rowKey,
|
|
641
645
|
expandedRowRender,
|
|
642
646
|
expandedRowKeys,
|
|
643
647
|
childrenRecordName,
|
|
644
|
-
rowExpandable
|
|
648
|
+
rowExpandable,
|
|
649
|
+
keepDOM
|
|
645
650
|
} = this.props;
|
|
646
651
|
const hasExpandedRowRender = typeof expandedRowRender === 'function';
|
|
647
652
|
const expandBtnShouldInRow = this.state.cachedExpandBtnShouldInRow;
|
|
@@ -658,6 +663,7 @@ class Body extends _baseComponent.default {
|
|
|
658
663
|
renderedRows.push(this.renderBaseRow(Object.assign(Object.assign({}, this.props), {
|
|
659
664
|
columns: flattenedColumns,
|
|
660
665
|
expandBtnShouldInRow,
|
|
666
|
+
displayNone,
|
|
661
667
|
record,
|
|
662
668
|
key,
|
|
663
669
|
level,
|
|
@@ -665,13 +671,15 @@ class Body extends _baseComponent.default {
|
|
|
665
671
|
})));
|
|
666
672
|
// render expand row
|
|
667
673
|
const expanded = (0, _utils.isExpanded)(expandedRowKeys, key);
|
|
668
|
-
|
|
674
|
+
const shouldRenderExpandedRows = expanded || keepDOM;
|
|
675
|
+
if (hasExpandedRowRender && rowExpandable && rowExpandable(record) && shouldRenderExpandedRows) {
|
|
669
676
|
const currentExpandRow = this.renderExpandedRow(Object.assign(Object.assign({}, this.props), {
|
|
670
677
|
columns: flattenedColumns,
|
|
671
678
|
level,
|
|
672
679
|
index,
|
|
673
680
|
record,
|
|
674
|
-
expanded
|
|
681
|
+
expanded,
|
|
682
|
+
displayNone: displayNone || !expanded
|
|
675
683
|
}));
|
|
676
684
|
/**
|
|
677
685
|
* If expandedRowRender returns falsy, this expanded row will not be rendered
|
|
@@ -682,8 +690,8 @@ class Body extends _baseComponent.default {
|
|
|
682
690
|
}
|
|
683
691
|
}
|
|
684
692
|
// render tree data
|
|
685
|
-
if (recordHasChildren &&
|
|
686
|
-
const nestedRows = this.renderBodyRows(recordChildren, level + 1);
|
|
693
|
+
if (recordHasChildren && shouldRenderExpandedRows) {
|
|
694
|
+
const nestedRows = this.renderBodyRows(recordChildren, level + 1, [], displayNone || !expanded);
|
|
687
695
|
renderedRows.push(...nestedRows);
|
|
688
696
|
}
|
|
689
697
|
});
|
|
@@ -63,6 +63,7 @@ export type TimePickerProps = {
|
|
|
63
63
|
secondStep?: number;
|
|
64
64
|
showClear?: boolean;
|
|
65
65
|
size?: InputSize;
|
|
66
|
+
stopPropagation: boolean;
|
|
66
67
|
style?: React.CSSProperties;
|
|
67
68
|
timeZone?: string | number;
|
|
68
69
|
triggerRender?: (props?: any) => React.ReactNode;
|
|
@@ -133,6 +134,7 @@ export default class TimePicker extends BaseComponent<TimePickerProps, TimePicke
|
|
|
133
134
|
focusOnOpen: PropTypes.Requireable<boolean>;
|
|
134
135
|
autoFocus: PropTypes.Requireable<boolean>;
|
|
135
136
|
size: PropTypes.Requireable<"default" | "small" | "large">;
|
|
137
|
+
stopPropagation: PropTypes.Requireable<boolean>;
|
|
136
138
|
panels: PropTypes.Requireable<PropTypes.InferProps<{
|
|
137
139
|
panelHeader: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
|
|
138
140
|
panelFooter: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
|
|
@@ -166,6 +168,7 @@ export default class TimePicker extends BaseComponent<TimePickerProps, TimePicke
|
|
|
166
168
|
prefixCls: string;
|
|
167
169
|
inputReadOnly: boolean;
|
|
168
170
|
style: {};
|
|
171
|
+
stopPropagation: boolean;
|
|
169
172
|
className: string;
|
|
170
173
|
popupClassName: string;
|
|
171
174
|
popupStyle: {
|
|
@@ -269,9 +269,10 @@ class TimePicker extends _baseComponent.default {
|
|
|
269
269
|
scrollItemProps,
|
|
270
270
|
triggerRender,
|
|
271
271
|
motion,
|
|
272
|
-
autoAdjustOverflow
|
|
272
|
+
autoAdjustOverflow,
|
|
273
|
+
stopPropagation
|
|
273
274
|
} = _a,
|
|
274
|
-
rest = __rest(_a, ["prefixCls", "placeholder", "disabled", "defaultValue", "dropdownMargin", "className", "popupStyle", "size", "style", "locale", "localeCode", "zIndex", "getPopupContainer", "insetLabel", "insetLabelId", "inputStyle", "showClear", "panelHeader", "panelFooter", "rangeSeparator", "onOpenChange", "onChangeWithDateFirst", "popupClassName", "hideDisabledOptions", "use12Hours", "minuteStep", "hourStep", "secondStep", "scrollItemProps", "triggerRender", "motion", "autoAdjustOverflow"]);
|
|
275
|
+
rest = __rest(_a, ["prefixCls", "placeholder", "disabled", "defaultValue", "dropdownMargin", "className", "popupStyle", "size", "style", "locale", "localeCode", "zIndex", "getPopupContainer", "insetLabel", "insetLabelId", "inputStyle", "showClear", "panelHeader", "panelFooter", "rangeSeparator", "onOpenChange", "onChangeWithDateFirst", "popupClassName", "hideDisabledOptions", "use12Hours", "minuteStep", "hourStep", "secondStep", "scrollItemProps", "triggerRender", "motion", "autoAdjustOverflow", "stopPropagation"]);
|
|
275
276
|
const format = this.foundation.getDefaultFormatIfNeed();
|
|
276
277
|
const position = this.foundation.getPosition();
|
|
277
278
|
const useCustomTrigger = typeof triggerRender === 'function';
|
|
@@ -329,7 +330,8 @@ class TimePicker extends _baseComponent.default {
|
|
|
329
330
|
visible: disabled ? false : Boolean(open),
|
|
330
331
|
motion: motion,
|
|
331
332
|
margin: dropdownMargin,
|
|
332
|
-
autoAdjustOverflow: autoAdjustOverflow
|
|
333
|
+
autoAdjustOverflow: autoAdjustOverflow,
|
|
334
|
+
stopPropagation: stopPropagation
|
|
333
335
|
}, useCustomTrigger ? /*#__PURE__*/_react.default.createElement(_trigger.default, {
|
|
334
336
|
triggerRender: triggerRender,
|
|
335
337
|
disabled: disabled,
|
|
@@ -385,6 +387,7 @@ TimePicker.propTypes = Object.assign(Object.assign({
|
|
|
385
387
|
focusOnOpen: _propTypes.default.bool,
|
|
386
388
|
autoFocus: _propTypes.default.bool,
|
|
387
389
|
size: _propTypes.default.oneOf(_constants.strings.SIZE),
|
|
390
|
+
stopPropagation: _propTypes.default.bool,
|
|
388
391
|
panels: _propTypes.default.arrayOf(_propTypes.default.shape(_PanelShape.PanelShape)),
|
|
389
392
|
onFocus: _propTypes.default.func,
|
|
390
393
|
onBlur: _propTypes.default.func,
|
|
@@ -418,6 +421,7 @@ TimePicker.defaultProps = Object.assign({
|
|
|
418
421
|
prefixCls: _constants.cssClasses.PREFIX,
|
|
419
422
|
inputReadOnly: false,
|
|
420
423
|
style: {},
|
|
424
|
+
stopPropagation: true,
|
|
421
425
|
className: '',
|
|
422
426
|
popupClassName: '',
|
|
423
427
|
popupStyle: {
|
|
@@ -50,6 +50,7 @@ export default class LocaleTimePicker extends React.PureComponent<LocalePickerPr
|
|
|
50
50
|
focusOnOpen: import("prop-types").Requireable<boolean>;
|
|
51
51
|
autoFocus: import("prop-types").Requireable<boolean>;
|
|
52
52
|
size: import("prop-types").Requireable<"default" | "small" | "large">;
|
|
53
|
+
stopPropagation: import("prop-types").Requireable<boolean>;
|
|
53
54
|
panels: import("prop-types").Requireable<import("prop-types").InferProps<{
|
|
54
55
|
panelHeader: import("prop-types").Requireable<NonNullable<import("prop-types").ReactNodeLike>>;
|
|
55
56
|
panelFooter: import("prop-types").Requireable<NonNullable<import("prop-types").ReactNodeLike>>;
|
|
@@ -83,6 +84,7 @@ export default class LocaleTimePicker extends React.PureComponent<LocalePickerPr
|
|
|
83
84
|
prefixCls: string;
|
|
84
85
|
inputReadOnly: boolean;
|
|
85
86
|
style: {};
|
|
87
|
+
stopPropagation: boolean;
|
|
86
88
|
className: string;
|
|
87
89
|
popupClassName: string;
|
|
88
90
|
popupStyle: {
|
package/lib/cjs/toast/toast.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ declare class Toast extends BaseComponent<ToastReactProps, ToastState> {
|
|
|
32
32
|
showClose: PropTypes.Requireable<boolean>;
|
|
33
33
|
stack: PropTypes.Requireable<boolean>;
|
|
34
34
|
stackExpanded: PropTypes.Requireable<boolean>;
|
|
35
|
-
icon: PropTypes.Requireable<
|
|
35
|
+
icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
36
36
|
direction: PropTypes.Requireable<string>;
|
|
37
37
|
};
|
|
38
38
|
static defaultProps: {
|
package/lib/cjs/toast/toast.js
CHANGED
|
@@ -157,7 +157,7 @@ Toast.propTypes = {
|
|
|
157
157
|
showClose: _propTypes.default.bool,
|
|
158
158
|
stack: _propTypes.default.bool,
|
|
159
159
|
stackExpanded: _propTypes.default.bool,
|
|
160
|
-
icon: _propTypes.default.
|
|
160
|
+
icon: _propTypes.default.node,
|
|
161
161
|
direction: _propTypes.default.oneOf(_constants.strings.directions)
|
|
162
162
|
};
|
|
163
163
|
Toast.defaultProps = {
|
|
@@ -49,7 +49,6 @@ const getRenderText = function (originEle, rows) {
|
|
|
49
49
|
const lineHeight = pxToNumber(originStyle.lineHeight);
|
|
50
50
|
const maxHeight = Math.round(lineHeight * (rows + 1) + pxToNumber(originStyle.paddingTop) + pxToNumber(originStyle.paddingBottom));
|
|
51
51
|
// Set shadow
|
|
52
|
-
const maxWidth = parseInt(originStyle.width);
|
|
53
52
|
ellipsisContainer.setAttribute('style', originCSS);
|
|
54
53
|
ellipsisContainer.style.position = 'fixed';
|
|
55
54
|
ellipsisContainer.style.left = '0';
|
|
@@ -61,12 +60,12 @@ const getRenderText = function (originEle, rows) {
|
|
|
61
60
|
ellipsisContainer.style.webkitLineClamp = 'none';
|
|
62
61
|
// Render fake container
|
|
63
62
|
_reactDom.default.render( /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), ellipsisContainer);
|
|
64
|
-
// Check if ellipsis in measure div is
|
|
63
|
+
// Check if ellipsis in measure div is enough for content
|
|
65
64
|
function inRange() {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
return
|
|
65
|
+
// If content does not wrap due to line break strategy, width should be judged to determine whether it's in range
|
|
66
|
+
const widthInRange = ellipsisContainer.scrollWidth <= ellipsisContainer.offsetWidth;
|
|
67
|
+
const heightInRange = ellipsisContainer.scrollHeight < maxHeight;
|
|
68
|
+
return rows === 1 ? widthInRange && heightInRange : heightInRange;
|
|
70
69
|
}
|
|
71
70
|
// ========================= Find match ellipsis content =========================
|
|
72
71
|
// Create origin content holder
|
package/lib/es/banner/index.d.ts
CHANGED
|
@@ -26,8 +26,8 @@ export default class Banner extends BaseComponent<BannerProps, BannerState> {
|
|
|
26
26
|
type: PropTypes.Requireable<string>;
|
|
27
27
|
title: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
28
28
|
description: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
29
|
-
icon: PropTypes.Requireable<
|
|
30
|
-
closeIcon: PropTypes.Requireable<
|
|
29
|
+
icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
30
|
+
closeIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
31
31
|
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
32
32
|
style: PropTypes.Requireable<object>;
|
|
33
33
|
className: PropTypes.Requireable<string>;
|