@douyinfe/semi-ui 2.49.0 → 2.50.0-alpha.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.
Files changed (75) hide show
  1. package/dist/css/semi.css +1 -1
  2. package/dist/css/semi.min.css +1 -1
  3. package/dist/umd/semi-ui.js +276 -263
  4. package/dist/umd/semi-ui.js.map +1 -1
  5. package/dist/umd/semi-ui.min.js +1 -1
  6. package/dist/umd/semi-ui.min.js.map +1 -1
  7. package/lib/cjs/anchor/index.d.ts +1 -1
  8. package/lib/cjs/autoComplete/index.d.ts +1 -1
  9. package/lib/cjs/button/Button.d.ts +1 -1
  10. package/lib/cjs/button/index.d.ts +1 -1
  11. package/lib/cjs/carousel/index.d.ts +1 -1
  12. package/lib/cjs/datePicker/datePicker.d.ts +1 -1
  13. package/lib/cjs/dropdown/index.d.ts +1 -1
  14. package/lib/cjs/form/baseForm.d.ts +1 -1
  15. package/lib/cjs/form/field.d.ts +1 -1
  16. package/lib/cjs/image/interface.d.ts +3 -3
  17. package/lib/cjs/image/previewFooter.js +8 -5
  18. package/lib/cjs/image/previewHeader.d.ts +2 -2
  19. package/lib/cjs/image/previewHeader.js +8 -9
  20. package/lib/cjs/image/previewImage.d.ts +12 -1
  21. package/lib/cjs/image/previewImage.js +83 -23
  22. package/lib/cjs/image/previewInner.d.ts +2 -11
  23. package/lib/cjs/image/previewInner.js +42 -60
  24. package/lib/cjs/modal/confirm.d.ts +17 -17
  25. package/lib/cjs/popover/index.d.ts +1 -1
  26. package/lib/cjs/select/index.d.ts +1 -1
  27. package/lib/cjs/table/ColumnSorter.d.ts +3 -1
  28. package/lib/cjs/table/ColumnSorter.js +26 -15
  29. package/lib/cjs/table/Table.d.ts +1 -1
  30. package/lib/cjs/table/Table.js +1 -0
  31. package/lib/cjs/table/interface.d.ts +4 -0
  32. package/lib/cjs/timePicker/TimePicker.d.ts +2 -2
  33. package/lib/cjs/timePicker/TimeShape.d.ts +1 -1
  34. package/lib/cjs/timePicker/index.d.ts +2 -2
  35. package/lib/cjs/tooltip/index.d.ts +1 -1
  36. package/lib/cjs/typography/base.d.ts +1 -1
  37. package/lib/cjs/typography/numeral.d.ts +1 -1
  38. package/lib/cjs/typography/paragraph.d.ts +1 -1
  39. package/lib/cjs/typography/text.d.ts +1 -1
  40. package/lib/cjs/typography/title.d.ts +1 -1
  41. package/lib/es/anchor/index.d.ts +1 -1
  42. package/lib/es/autoComplete/index.d.ts +1 -1
  43. package/lib/es/button/Button.d.ts +1 -1
  44. package/lib/es/button/index.d.ts +1 -1
  45. package/lib/es/carousel/index.d.ts +1 -1
  46. package/lib/es/datePicker/datePicker.d.ts +1 -1
  47. package/lib/es/dropdown/index.d.ts +1 -1
  48. package/lib/es/form/baseForm.d.ts +1 -1
  49. package/lib/es/form/field.d.ts +1 -1
  50. package/lib/es/image/interface.d.ts +3 -3
  51. package/lib/es/image/previewFooter.js +8 -5
  52. package/lib/es/image/previewHeader.d.ts +2 -2
  53. package/lib/es/image/previewHeader.js +3 -4
  54. package/lib/es/image/previewImage.d.ts +12 -1
  55. package/lib/es/image/previewImage.js +83 -23
  56. package/lib/es/image/previewInner.d.ts +2 -11
  57. package/lib/es/image/previewInner.js +42 -60
  58. package/lib/es/modal/confirm.d.ts +17 -17
  59. package/lib/es/popover/index.d.ts +1 -1
  60. package/lib/es/select/index.d.ts +1 -1
  61. package/lib/es/table/ColumnSorter.d.ts +3 -1
  62. package/lib/es/table/ColumnSorter.js +26 -15
  63. package/lib/es/table/Table.d.ts +1 -1
  64. package/lib/es/table/Table.js +1 -0
  65. package/lib/es/table/interface.d.ts +4 -0
  66. package/lib/es/timePicker/TimePicker.d.ts +2 -2
  67. package/lib/es/timePicker/TimeShape.d.ts +1 -1
  68. package/lib/es/timePicker/index.d.ts +2 -2
  69. package/lib/es/tooltip/index.d.ts +1 -1
  70. package/lib/es/typography/base.d.ts +1 -1
  71. package/lib/es/typography/numeral.d.ts +1 -1
  72. package/lib/es/typography/paragraph.d.ts +1 -1
  73. package/lib/es/typography/text.d.ts +1 -1
  74. package/lib/es/typography/title.d.ts +1 -1
  75. package/package.json +8 -8
@@ -21,6 +21,14 @@ 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;
24
32
  class PreviewInner extends _baseComponent.default {
25
33
  get adapter() {
26
34
  return Object.assign(Object.assign({}, super.adapter), {
@@ -104,22 +112,30 @@ class PreviewInner extends _baseComponent.default {
104
112
  unregisterKeyDownListener: () => {
105
113
  window && window.removeEventListener("keydown", this.handleKeyDown);
106
114
  },
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
+ },
107
136
  getSetDownloadFunc: () => {
108
137
  var _a, _b;
109
138
  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;
123
139
  }
124
140
  });
125
141
  }
@@ -152,6 +168,9 @@ class PreviewInner extends _baseComponent.default {
152
168
  this.handleMouseMove = e => {
153
169
  this.foundation.handleMouseMove(e);
154
170
  };
171
+ this.handleMouseEvent = (e, event) => {
172
+ this.foundation.handleMouseMoveEvent(e, event);
173
+ };
155
174
  this.handleKeyDown = e => {
156
175
  this.foundation.handleKeyDown(e);
157
176
  };
@@ -164,31 +183,6 @@ class PreviewInner extends _baseComponent.default {
164
183
  this.handleMouseDown = e => {
165
184
  this.foundation.handleMouseDown(e);
166
185
  };
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
- };
192
186
  this.state = {
193
187
  imgSrc: [],
194
188
  imgLoadStatus: new Map(),
@@ -205,11 +199,6 @@ class PreviewInner extends _baseComponent.default {
205
199
  this.bodyOverflow = '';
206
200
  this.originBodyWidth = '100%';
207
201
  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();
213
202
  }
214
203
  static getDerivedStateFromProps(props, state) {
215
204
  const willUpdateStates = {};
@@ -225,9 +214,6 @@ class PreviewInner extends _baseComponent.default {
225
214
  willUpdateStates.visible = props.visible;
226
215
  if (props.visible) {
227
216
  willUpdateStates.preloadAfterVisibleChange = true;
228
- willUpdateStates.viewerVisible = true;
229
- willUpdateStates.rotation = 0;
230
- willUpdateStates.ratio = 'adaptation';
231
217
  }
232
218
  }
233
219
  if ("currentIndex" in props && props.currentIndex !== state.currentIndex) {
@@ -246,8 +232,10 @@ class PreviewInner extends _baseComponent.default {
246
232
  }
247
233
  }
248
234
  componentDidUpdate(prevProps, prevState) {
249
- if (prevProps.src !== this.props.src) {
250
- this.foundation.updateTimer();
235
+ if (prevState.visible !== this.props.visible && this.props.visible) {
236
+ mouseActiveTime = new Date().getTime();
237
+ timer && clearInterval(timer);
238
+ timer = setInterval(this.viewVisibleChange, 1000);
251
239
  }
252
240
  // hide => show
253
241
  if (!prevProps.visible && this.props.visible) {
@@ -259,7 +247,7 @@ class PreviewInner extends _baseComponent.default {
259
247
  }
260
248
  }
261
249
  componentWillUnmount() {
262
- this.foundation.clearTimer();
250
+ timer && clearInterval(timer);
263
251
  }
264
252
  isInGroup() {
265
253
  return Boolean(this.context && this.context.isGroup);
@@ -324,10 +312,10 @@ class PreviewInner extends _baseComponent.default {
324
312
  style: style,
325
313
  onMouseDown: this.handleMouseDown,
326
314
  onMouseUp: this.handleMouseUp,
327
- ref: this.registryImageWrapRef,
328
- onMouseMove: this.handleMouseMove
315
+ onMouseMove: this.handleMouseMove,
316
+ onMouseOver: e => this.handleMouseEvent(e.nativeEvent, "over"),
317
+ onMouseOut: e => this.handleMouseEvent(e.nativeEvent, "out")
329
318
  }, /*#__PURE__*/_react.default.createElement(_previewHeader.default, {
330
- ref: this.headerRef,
331
319
  className: (0, _classnames.default)(hideViewerCls),
332
320
  onClose: this.handlePreviewClose,
333
321
  renderHeader: renderHeader
@@ -338,6 +326,7 @@ class PreviewInner extends _baseComponent.default {
338
326
  setRatio: this.handleAdjustRatio,
339
327
  zoom: zoom,
340
328
  ratio: ratio,
329
+ zoomStep: zoomStep,
341
330
  rotation: rotation,
342
331
  crossOrigin: crossOrigin,
343
332
  onError: this.onImageError,
@@ -346,7 +335,6 @@ class PreviewInner extends _baseComponent.default {
346
335
  /*#__PURE__*/
347
336
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
348
337
  _react.default.createElement("div", {
349
- ref: this.leftIconRef,
350
338
  className: (0, _classnames.default)(`${previewPrefixCls}-icon`, `${previewPrefixCls}-prev`, hideViewerCls),
351
339
  onClick: () => this.handleSwitchImage("prev")
352
340
  }, /*#__PURE__*/_react.default.createElement(_semiIcons.IconArrowLeft, {
@@ -355,13 +343,11 @@ class PreviewInner extends _baseComponent.default {
355
343
  /*#__PURE__*/
356
344
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
357
345
  _react.default.createElement("div", {
358
- ref: this.rightIconRef,
359
346
  className: (0, _classnames.default)(`${previewPrefixCls}-icon`, `${previewPrefixCls}-next`, hideViewerCls),
360
347
  onClick: () => this.handleSwitchImage("next")
361
348
  }, /*#__PURE__*/_react.default.createElement(_semiIcons.IconArrowRight, {
362
349
  size: "large"
363
350
  })), /*#__PURE__*/_react.default.createElement(_previewFooter.default, {
364
- forwardRef: this.footerRef,
365
351
  className: hideViewerCls,
366
352
  totalNum: total,
367
353
  curPage: currentIndex + 1,
@@ -420,8 +406,6 @@ PreviewInner.propTypes = {
420
406
  disableDownload: _propTypes.default.bool,
421
407
  viewerVisibleDelay: _propTypes.default.number,
422
408
  zIndex: _propTypes.default.number,
423
- maxZoom: _propTypes.default.number,
424
- minZoom: _propTypes.default.number,
425
409
  renderHeader: _propTypes.default.func,
426
410
  renderPreviewMenu: _propTypes.default.func,
427
411
  getPopupContainer: _propTypes.default.func,
@@ -446,7 +430,5 @@ PreviewInner.defaultProps = {
446
430
  preLoadGap: 2,
447
431
  zIndex: 1000,
448
432
  maskClosable: true,
449
- viewerVisibleDelay: 10000,
450
- maxZoom: 5,
451
- minZoom: 0.1
433
+ viewerVisibleDelay: 10000
452
434
  };
@@ -146,36 +146,36 @@ export declare function withError(props: ModalReactProps): {
146
146
  style?: React.CSSProperties;
147
147
  className?: string;
148
148
  motion?: boolean;
149
- getPopupContainer?: () => HTMLElement;
150
149
  footer?: React.ReactNode;
151
150
  header?: React.ReactNode;
152
- direction?: any;
153
151
  mask?: boolean;
154
152
  visible?: boolean;
155
153
  zIndex?: number;
154
+ getPopupContainer?: () => HTMLElement;
155
+ direction?: any;
156
156
  width?: string | number;
157
157
  height?: string | number;
158
158
  content?: React.ReactNode;
159
- icon: string | number | boolean | React.ReactFragment | JSX.Element;
160
- onCancel?: (e: React.MouseEvent<Element, MouseEvent>) => void | Promise<any>;
161
159
  closeOnEsc?: boolean;
162
160
  preventScroll?: boolean;
161
+ icon: string | number | boolean | React.ReactFragment | JSX.Element;
163
162
  afterClose?: () => void;
164
163
  keepDOM?: boolean;
165
164
  cancelText?: string;
166
165
  okText?: string;
166
+ onCancel?: (e: React.MouseEvent<Element, MouseEvent>) => void | Promise<any>;
167
167
  closeIcon?: React.ReactNode;
168
- bodyStyle?: React.CSSProperties;
169
168
  closable?: boolean;
169
+ bodyStyle?: React.CSSProperties;
170
170
  maskClosable?: boolean;
171
171
  cancelButtonProps?: import("../button").BaseButtonProps;
172
- centered?: boolean;
173
- confirmLoading?: boolean;
172
+ okType?: import("@douyinfe/semi-foundation/lib/cjs/modal/modalFoundation").OKType;
174
173
  cancelLoading?: boolean;
174
+ confirmLoading?: boolean;
175
+ centered?: boolean;
175
176
  hasCancel?: boolean;
176
177
  maskStyle?: React.CSSProperties;
177
178
  maskFixed?: boolean;
178
- okType?: import("@douyinfe/semi-foundation/lib/cjs/modal/modalFoundation").OKType;
179
179
  onOk?: (e: React.MouseEvent<Element, MouseEvent>) => void | Promise<any>;
180
180
  lazyRender?: boolean;
181
181
  fullScreen?: boolean;
@@ -206,8 +206,6 @@ export declare function withError(props: ModalReactProps): {
206
206
  value?: string | number | readonly string[];
207
207
  onAnimationStart?: React.AnimationEventHandler<HTMLButtonElement>;
208
208
  onAnimationEnd?: React.AnimationEventHandler<HTMLButtonElement>;
209
- form?: string;
210
- slot?: string;
211
209
  prefix?: string;
212
210
  dangerouslySetInnerHTML?: {
213
211
  __html: string | TrustedHTML;
@@ -368,6 +366,8 @@ export declare function withError(props: ModalReactProps): {
368
366
  onAnimationIterationCapture?: React.AnimationEventHandler<HTMLButtonElement>;
369
367
  onTransitionEnd?: React.TransitionEventHandler<HTMLButtonElement>;
370
368
  onTransitionEndCapture?: React.TransitionEventHandler<HTMLButtonElement>;
369
+ form?: string;
370
+ slot?: string;
371
371
  hidden?: boolean;
372
372
  color?: string;
373
373
  defaultChecked?: boolean;
@@ -376,12 +376,6 @@ export declare function withError(props: ModalReactProps): {
376
376
  suppressHydrationWarning?: boolean;
377
377
  accessKey?: string;
378
378
  autoFocus?: boolean;
379
- content?: string;
380
- formAction?: string;
381
- formEncType?: string;
382
- formMethod?: string;
383
- formNoValidate?: boolean;
384
- formTarget?: string;
385
379
  contextMenu?: string;
386
380
  dir?: string;
387
381
  draggable?: boolean | "true" | "false";
@@ -392,6 +386,7 @@ export declare function withError(props: ModalReactProps): {
392
386
  inputMode?: "search" | "none" | "text" | "email" | "tel" | "url" | "numeric" | "decimal";
393
387
  nonce?: string;
394
388
  tabIndex?: number;
389
+ content?: string;
395
390
  'aria-expanded'?: boolean | "true" | "false";
396
391
  'aria-haspopup'?: boolean | "dialog" | "menu" | "grid" | "listbox" | "tree" | "true" | "false";
397
392
  'aria-controls'?: string;
@@ -428,7 +423,7 @@ export declare function withError(props: ModalReactProps): {
428
423
  'aria-colcount'?: number;
429
424
  'aria-colindex'?: number;
430
425
  'aria-colspan'?: number;
431
- 'aria-current'?: boolean | "time" | "true" | "false" | "date" | "page" | "location" | "step";
426
+ 'aria-current'?: boolean | "time" | "true" | "false" | "date" | "location" | "page" | "step";
432
427
  'aria-details'?: string;
433
428
  'aria-disabled'?: boolean | "true" | "false";
434
429
  'aria-dropeffect'?: "link" | "none" | "copy" | "move" | "execute" | "popup";
@@ -463,6 +458,11 @@ export declare function withError(props: ModalReactProps): {
463
458
  'aria-valuemin'?: number;
464
459
  'aria-valuenow'?: number;
465
460
  'aria-valuetext'?: string;
461
+ formAction?: string;
462
+ formEncType?: string;
463
+ formMethod?: string;
464
+ formNoValidate?: boolean;
465
+ formTarget?: string;
466
466
  };
467
467
  };
468
468
  export declare function withConfirm(props: ModalReactProps): {
@@ -58,7 +58,7 @@ declare class Popover extends React.PureComponent<PopoverProps, PopoverState> {
58
58
  visible: PropTypes.Requireable<boolean>;
59
59
  autoAdjustOverflow: PropTypes.Requireable<boolean>;
60
60
  motion: PropTypes.Requireable<boolean>;
61
- position: PropTypes.Requireable<"left" | "right" | "top" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver">;
61
+ position: PropTypes.Requireable<"left" | "right" | "top" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver">;
62
62
  margin: PropTypes.Requireable<NonNullable<number | object>>;
63
63
  mouseEnterDelay: PropTypes.Requireable<number>;
64
64
  mouseLeaveDelay: PropTypes.Requireable<number>;
@@ -200,7 +200,7 @@ declare class Select extends BaseComponent<SelectProps, SelectState> {
200
200
  expandRestTagsOnClick: PropTypes.Requireable<boolean>;
201
201
  onDropdownVisibleChange: PropTypes.Requireable<(...args: any[]) => any>;
202
202
  zIndex: PropTypes.Requireable<number>;
203
- position: PropTypes.Requireable<"left" | "right" | "top" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver">;
203
+ position: PropTypes.Requireable<"left" | "right" | "top" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver">;
204
204
  onSearch: PropTypes.Requireable<(...args: any[]) => any>;
205
205
  getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
206
206
  dropdownClassName: PropTypes.Requireable<string>;
@@ -1,6 +1,6 @@
1
1
  import React, { PureComponent } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { SortOrder } from './interface';
3
+ import { SortIcon, SortOrder } from './interface';
4
4
  export interface ColumnSorterProps {
5
5
  className?: string;
6
6
  style?: React.CSSProperties;
@@ -8,6 +8,7 @@ export interface ColumnSorterProps {
8
8
  prefixCls?: string;
9
9
  sortOrder?: SortOrder;
10
10
  title?: React.ReactNode;
11
+ sortIcon?: SortIcon;
11
12
  }
12
13
  export default class ColumnSorter extends PureComponent<ColumnSorterProps> {
13
14
  static propTypes: {
@@ -16,6 +17,7 @@ export default class ColumnSorter extends PureComponent<ColumnSorterProps> {
16
17
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
17
18
  prefixCls: PropTypes.Requireable<string>;
18
19
  sortOrder: PropTypes.Requireable<NonNullable<string | boolean>>;
20
+ sortIcon: PropTypes.Requireable<(...args: any[]) => any>;
19
21
  };
20
22
  static defaultProps: {
21
23
  prefixCls: "semi-table";
@@ -21,7 +21,8 @@ class ColumnSorter extends _react.PureComponent {
21
21
  onClick,
22
22
  sortOrder,
23
23
  style,
24
- title
24
+ title,
25
+ sortIcon
25
26
  } = this.props;
26
27
  const iconBtnSize = 'default';
27
28
  const upCls = (0, _classnames.default)(`${prefixCls}-column-sorter-up`, {
@@ -38,25 +39,34 @@ class ColumnSorter extends _react.PureComponent {
38
39
  'aria-label': `Current sort order is ${sortOrder ? `${sortOrder}ing` : 'none'}`,
39
40
  'aria-roledescription': 'Sort data with this column'
40
41
  };
42
+ const renderSortIcon = () => {
43
+ if (typeof sortIcon === 'function') {
44
+ return sortIcon({
45
+ sortOrder
46
+ });
47
+ } else {
48
+ return /*#__PURE__*/_react.default.createElement("div", {
49
+ style: style,
50
+ className: `${prefixCls}-column-sorter`
51
+ }, /*#__PURE__*/_react.default.createElement("span", {
52
+ className: `${upCls}`
53
+ }, /*#__PURE__*/_react.default.createElement(_semiIcons.IconCaretup, {
54
+ size: iconBtnSize
55
+ })), /*#__PURE__*/_react.default.createElement("span", {
56
+ className: `${downCls}`
57
+ }, /*#__PURE__*/_react.default.createElement(_semiIcons.IconCaretdown, {
58
+ size: iconBtnSize
59
+ })));
60
+ }
61
+ };
41
62
  return /*#__PURE__*/_react.default.createElement("div", Object.assign({
42
- role: 'button'
63
+ role: "button"
43
64
  }, ariaProps, {
44
65
  tabIndex: -1,
45
66
  className: `${prefixCls}-column-sorter-wrapper`,
46
67
  onClick: onClick,
47
68
  onKeyPress: e => (0, _isEnterPress.default)(e) && onClick(e)
48
- }), title, /*#__PURE__*/_react.default.createElement("div", {
49
- style: style,
50
- className: `${prefixCls}-column-sorter`
51
- }, /*#__PURE__*/_react.default.createElement("span", {
52
- className: `${upCls}`
53
- }, /*#__PURE__*/_react.default.createElement(_semiIcons.IconCaretup, {
54
- size: iconBtnSize
55
- })), /*#__PURE__*/_react.default.createElement("span", {
56
- className: `${downCls}`
57
- }, /*#__PURE__*/_react.default.createElement(_semiIcons.IconCaretdown, {
58
- size: iconBtnSize
59
- }))));
69
+ }), title, renderSortIcon());
60
70
  }
61
71
  }
62
72
  exports.default = ColumnSorter;
@@ -65,7 +75,8 @@ ColumnSorter.propTypes = {
65
75
  style: _propTypes.default.object,
66
76
  onClick: _propTypes.default.func,
67
77
  prefixCls: _propTypes.default.string,
68
- sortOrder: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.bool])
78
+ sortOrder: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.bool]),
79
+ sortIcon: _propTypes.default.func
69
80
  };
70
81
  ColumnSorter.defaultProps = {
71
82
  prefixCls: _constants.cssClasses.PREFIX,
@@ -308,7 +308,7 @@ declare class Table<RecordType extends Record<string, any>> extends BaseComponen
308
308
  showSizeChanger?: boolean;
309
309
  showQuickJumper?: boolean;
310
310
  popoverZIndex?: number;
311
- popoverPosition?: "left" | "right" | "top" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver";
311
+ popoverPosition?: "left" | "right" | "top" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver";
312
312
  hideOnSinglePage?: boolean;
313
313
  hoverShowPageSelect?: boolean;
314
314
  disabled?: boolean;
@@ -647,6 +647,7 @@ class Table extends _baseComponent.default {
647
647
  const sorter = /*#__PURE__*/_react.default.createElement(_ColumnSorter.default, {
648
648
  key: _constants.strings.DEFAULT_KEY_COLUMN_SORTER,
649
649
  sortOrder: sortOrder,
650
+ sortIcon: column.sortIcon,
650
651
  onClick: e => _this2.foundation.handleSort(column, e),
651
652
  title: TitleNode
652
653
  });
@@ -83,6 +83,7 @@ export interface ColumnProps<RecordType extends Record<string, any> = any> {
83
83
  sortChildrenRecord?: boolean;
84
84
  sortOrder?: SortOrder;
85
85
  sorter?: Sorter<RecordType>;
86
+ sortIcon?: SortIcon;
86
87
  title?: ColumnTitle;
87
88
  useFullRender?: boolean;
88
89
  width?: string | number;
@@ -95,6 +96,9 @@ export interface ColumnProps<RecordType extends Record<string, any> = any> {
95
96
  }
96
97
  export type Align = BaseAlign;
97
98
  export type SortOrder = BaseSortOrder;
99
+ export type SortIcon = (props: {
100
+ sortOrder: SortOrder;
101
+ }) => ReactNode;
98
102
  export type FilterIcon = boolean | React.ReactNode | FilterIconRenderFunction;
99
103
  export interface Filter extends BaseFilter {
100
104
  value?: any;
@@ -105,11 +105,11 @@ export default class TimePicker extends BaseComponent<TimePickerProps, TimePicke
105
105
  borderless: PropTypes.Requireable<boolean>;
106
106
  clearText: PropTypes.Requireable<string>;
107
107
  clearIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
108
- value: PropTypes.Requireable<NonNullable<string | number | string[] | number[] | Date | Date[]>>;
108
+ value: PropTypes.Requireable<NonNullable<string | number | string[] | Date | number[] | Date[]>>;
109
109
  inputReadOnly: PropTypes.Requireable<boolean>;
110
110
  disabled: PropTypes.Requireable<boolean>;
111
111
  showClear: PropTypes.Requireable<boolean>;
112
- defaultValue: PropTypes.Requireable<NonNullable<string | number | string[] | number[] | Date | Date[]>>;
112
+ defaultValue: PropTypes.Requireable<NonNullable<string | number | string[] | Date | number[] | Date[]>>;
113
113
  open: PropTypes.Requireable<boolean>;
114
114
  defaultOpen: PropTypes.Requireable<boolean>;
115
115
  onOpenChange: PropTypes.Requireable<(...args: any[]) => any>;
@@ -6,5 +6,5 @@ import PropTypes from 'prop-types';
6
6
  * - \[12:00:12, 12:21:12]
7
7
  * - \[[12:00:12, 12:21:12], [12:11:12, 12:32:12]]
8
8
  */
9
- declare const TimeShape: PropTypes.Requireable<NonNullable<string | number | string[] | number[] | Date | Date[]>>;
9
+ declare const TimeShape: PropTypes.Requireable<NonNullable<string | number | string[] | Date | number[] | Date[]>>;
10
10
  export { TimeShape };
@@ -21,11 +21,11 @@ export default class LocaleTimePicker extends React.PureComponent<LocalePickerPr
21
21
  borderless: import("prop-types").Requireable<boolean>;
22
22
  clearText: import("prop-types").Requireable<string>;
23
23
  clearIcon: import("prop-types").Requireable<import("prop-types").ReactNodeLike>;
24
- value: import("prop-types").Requireable<NonNullable<string | number | string[] | number[] | Date | Date[]>>;
24
+ value: import("prop-types").Requireable<NonNullable<string | number | string[] | Date | number[] | Date[]>>;
25
25
  inputReadOnly: import("prop-types").Requireable<boolean>;
26
26
  disabled: import("prop-types").Requireable<boolean>;
27
27
  showClear: import("prop-types").Requireable<boolean>;
28
- defaultValue: import("prop-types").Requireable<NonNullable<string | number | string[] | number[] | Date | Date[]>>;
28
+ defaultValue: import("prop-types").Requireable<NonNullable<string | number | string[] | Date | number[] | Date[]>>;
29
29
  open: import("prop-types").Requireable<boolean>;
30
30
  defaultOpen: import("prop-types").Requireable<boolean>;
31
31
  onOpenChange: import("prop-types").Requireable<(...args: any[]) => any>;
@@ -91,7 +91,7 @@ export default class Tooltip extends BaseComponent<TooltipProps, TooltipState> {
91
91
  children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
92
92
  motion: PropTypes.Requireable<boolean>;
93
93
  autoAdjustOverflow: PropTypes.Requireable<boolean>;
94
- position: PropTypes.Requireable<"left" | "right" | "top" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver">;
94
+ position: PropTypes.Requireable<"left" | "right" | "top" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver">;
95
95
  getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
96
96
  mouseEnterDelay: PropTypes.Requireable<number>;
97
97
  mouseLeaveDelay: PropTypes.Requireable<number>;
@@ -85,7 +85,7 @@ export default class Base extends Component<BaseTypographyProps, BaseTypographyS
85
85
  spacing: PropTypes.Requireable<"normal" | "extended">;
86
86
  strong: PropTypes.Requireable<boolean>;
87
87
  size: PropTypes.Requireable<"small" | "normal">;
88
- type: PropTypes.Requireable<"warning" | "success" | "primary" | "tertiary" | "secondary" | "danger" | "quaternary">;
88
+ type: PropTypes.Requireable<"warning" | "success" | "primary" | "secondary" | "tertiary" | "danger" | "quaternary">;
89
89
  style: PropTypes.Requireable<object>;
90
90
  className: PropTypes.Requireable<string>;
91
91
  icon: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
@@ -38,7 +38,7 @@ export default class Numeral extends PureComponent<NumeralProps> {
38
38
  underline: PropTypes.Requireable<boolean>;
39
39
  link: PropTypes.Requireable<NonNullable<boolean | object>>;
40
40
  strong: PropTypes.Requireable<boolean>;
41
- type: PropTypes.Requireable<"warning" | "success" | "primary" | "tertiary" | "secondary" | "danger" | "quaternary">;
41
+ type: PropTypes.Requireable<"warning" | "success" | "primary" | "secondary" | "tertiary" | "danger" | "quaternary">;
42
42
  size: PropTypes.Requireable<"small" | "normal">;
43
43
  style: PropTypes.Requireable<object>;
44
44
  className: PropTypes.Requireable<string>;
@@ -50,7 +50,7 @@ export default class Paragraph extends PureComponent<ParagraphProps> {
50
50
  link: PropTypes.Requireable<NonNullable<boolean | object>>;
51
51
  underline: PropTypes.Requireable<boolean>;
52
52
  strong: PropTypes.Requireable<boolean>;
53
- type: PropTypes.Requireable<"warning" | "success" | "primary" | "tertiary" | "secondary" | "danger" | "quaternary">;
53
+ type: PropTypes.Requireable<"warning" | "success" | "primary" | "secondary" | "tertiary" | "danger" | "quaternary">;
54
54
  size: PropTypes.Requireable<"small" | "normal">;
55
55
  spacing: PropTypes.Requireable<"normal" | "extended">;
56
56
  style: PropTypes.Requireable<object>;
@@ -53,7 +53,7 @@ export default class Text extends PureComponent<TextProps> {
53
53
  underline: PropTypes.Requireable<boolean>;
54
54
  link: PropTypes.Requireable<NonNullable<boolean | object>>;
55
55
  strong: PropTypes.Requireable<boolean>;
56
- type: PropTypes.Requireable<"warning" | "success" | "primary" | "tertiary" | "secondary" | "danger" | "quaternary">;
56
+ type: PropTypes.Requireable<"warning" | "success" | "primary" | "secondary" | "tertiary" | "danger" | "quaternary">;
57
57
  size: PropTypes.Requireable<"small" | "normal">;
58
58
  style: PropTypes.Requireable<object>;
59
59
  className: PropTypes.Requireable<string>;
@@ -59,7 +59,7 @@ export default class Title extends PureComponent<TitleProps> {
59
59
  link: PropTypes.Requireable<NonNullable<boolean | object>>;
60
60
  underline: PropTypes.Requireable<boolean>;
61
61
  strong: PropTypes.Requireable<boolean>;
62
- type: PropTypes.Requireable<"warning" | "success" | "primary" | "tertiary" | "secondary" | "danger" | "quaternary">;
62
+ type: PropTypes.Requireable<"warning" | "success" | "primary" | "secondary" | "tertiary" | "danger" | "quaternary">;
63
63
  heading: PropTypes.Requireable<1 | 2 | 3 | 4 | 5 | 6>;
64
64
  style: PropTypes.Requireable<object>;
65
65
  className: PropTypes.Requireable<string>;
@@ -49,7 +49,7 @@ declare class Anchor extends BaseComponent<AnchorProps, AnchorState> {
49
49
  offsetTop: PropTypes.Requireable<number>;
50
50
  targetOffset: PropTypes.Requireable<number>;
51
51
  showTooltip: PropTypes.Requireable<boolean>;
52
- position: PropTypes.Requireable<"left" | "right" | "top" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver">;
52
+ position: PropTypes.Requireable<"left" | "right" | "top" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver">;
53
53
  maxWidth: PropTypes.Requireable<NonNullable<string | number>>;
54
54
  maxHeight: PropTypes.Requireable<NonNullable<string | number>>;
55
55
  getContainer: PropTypes.Requireable<(...args: any[]) => any>;
@@ -116,7 +116,7 @@ declare class AutoComplete<T extends AutoCompleteItems> extends BaseComponent<Au
116
116
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
117
117
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
118
118
  onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
119
- position: PropTypes.Requireable<"left" | "right" | "top" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver">;
119
+ position: PropTypes.Requireable<"left" | "right" | "top" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver">;
120
120
  placeholder: PropTypes.Requireable<string>;
121
121
  prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
122
122
  onChangeWithObject: PropTypes.Requireable<boolean>;
@@ -48,7 +48,7 @@ export default class Button extends PureComponent<ButtonProps> {
48
48
  prefixCls: PropTypes.Requireable<string>;
49
49
  style: PropTypes.Requireable<object>;
50
50
  size: PropTypes.Requireable<"default" | "small" | "large">;
51
- type: PropTypes.Requireable<"warning" | "primary" | "tertiary" | "secondary" | "danger">;
51
+ type: PropTypes.Requireable<"warning" | "primary" | "secondary" | "tertiary" | "danger">;
52
52
  block: PropTypes.Requireable<boolean>;
53
53
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
54
54
  onMouseDown: PropTypes.Requireable<(...args: any[]) => any>;
@@ -23,7 +23,7 @@ declare class Button extends React.PureComponent<ButtonProps> {
23
23
  onMouseLeave: import("prop-types").Requireable<(...args: any[]) => any>;
24
24
  disabled: import("prop-types").Requireable<boolean>;
25
25
  size: import("prop-types").Requireable<"default" | "small" | "large">;
26
- type: import("prop-types").Requireable<"warning" | "primary" | "tertiary" | "secondary" | "danger">;
26
+ type: import("prop-types").Requireable<"warning" | "primary" | "secondary" | "tertiary" | "danger">;
27
27
  block: import("prop-types").Requireable<boolean>;
28
28
  onClick: import("prop-types").Requireable<(...args: any[]) => any>;
29
29
  onMouseDown: import("prop-types").Requireable<(...args: any[]) => any>;
@@ -24,7 +24,7 @@ declare class Carousel extends BaseComponent<CarouselProps, CarouselState> {
24
24
  indicatorType: PropTypes.Requireable<"line" | "dot" | "columnar">;
25
25
  theme: PropTypes.Requireable<"dark" | "light" | "primary">;
26
26
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
27
- arrowType: PropTypes.Requireable<"always" | "hover">;
27
+ arrowType: PropTypes.Requireable<"hover" | "always">;
28
28
  showArrow: PropTypes.Requireable<boolean>;
29
29
  showIndicator: PropTypes.Requireable<boolean>;
30
30
  slideDirection: PropTypes.Requireable<"left" | "right">;
@@ -91,7 +91,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
91
91
  insetLabel: PropTypes.Requireable<PropTypes.ReactNodeLike>;
92
92
  insetLabelId: PropTypes.Requireable<string>;
93
93
  zIndex: PropTypes.Requireable<number>;
94
- position: PropTypes.Requireable<"left" | "right" | "top" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver">;
94
+ position: PropTypes.Requireable<"left" | "right" | "top" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver">;
95
95
  getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
96
96
  onCancel: PropTypes.Requireable<(...args: any[]) => any>;
97
97
  onConfirm: PropTypes.Requireable<(...args: any[]) => any>;
@@ -66,7 +66,7 @@ declare class Dropdown extends BaseComponent<DropdownProps, DropdownState> {
66
66
  motion: PropTypes.Requireable<NonNullable<boolean | object>>;
67
67
  onVisibleChange: PropTypes.Requireable<(...args: any[]) => any>;
68
68
  prefixCls: PropTypes.Requireable<string>;
69
- position: PropTypes.Requireable<"left" | "right" | "top" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver">;
69
+ position: PropTypes.Requireable<"left" | "right" | "top" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver">;
70
70
  rePosKey: PropTypes.Requireable<NonNullable<string | number>>;
71
71
  render: PropTypes.Requireable<PropTypes.ReactNodeLike>;
72
72
  spacing: PropTypes.Requireable<NonNullable<number | object>>;