@douyinfe/semi-ui 2.51.3 → 2.52.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.
Files changed (51) hide show
  1. package/dist/css/semi.css +285 -0
  2. package/dist/css/semi.min.css +1 -1
  3. package/dist/umd/semi-ui.js +434 -111
  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/_utils/index.d.ts +2 -1
  8. package/lib/cjs/_utils/index.js +0 -5
  9. package/lib/cjs/avatar/TopSlotSvg.d.ts +5 -0
  10. package/lib/cjs/avatar/TopSlotSvg.js +74 -0
  11. package/lib/cjs/avatar/index.d.ts +25 -0
  12. package/lib/cjs/avatar/index.js +126 -8
  13. package/lib/cjs/avatar/interface.d.ts +24 -1
  14. package/lib/cjs/dropdown/dropdownItem.js +2 -1
  15. package/lib/cjs/input/index.d.ts +1 -0
  16. package/lib/cjs/input/index.js +12 -4
  17. package/lib/cjs/modal/Modal.d.ts +1 -0
  18. package/lib/cjs/modal/Modal.js +11 -3
  19. package/lib/cjs/modal/confirm.d.ts +5 -0
  20. package/lib/cjs/slider/index.js +33 -1
  21. package/lib/cjs/table/ColumnFilter.d.ts +34 -18
  22. package/lib/cjs/table/ColumnFilter.js +134 -73
  23. package/lib/cjs/table/Table.d.ts +5 -5
  24. package/lib/cjs/table/Table.js +38 -13
  25. package/lib/cjs/table/index.d.ts +1 -1
  26. package/lib/cjs/table/interface.d.ts +30 -10
  27. package/lib/cjs/treeSelect/index.d.ts +2 -0
  28. package/lib/cjs/treeSelect/index.js +4 -0
  29. package/lib/es/_utils/index.d.ts +2 -1
  30. package/lib/es/_utils/index.js +0 -5
  31. package/lib/es/avatar/TopSlotSvg.d.ts +5 -0
  32. package/lib/es/avatar/TopSlotSvg.js +66 -0
  33. package/lib/es/avatar/index.d.ts +25 -0
  34. package/lib/es/avatar/index.js +126 -8
  35. package/lib/es/avatar/interface.d.ts +24 -1
  36. package/lib/es/dropdown/dropdownItem.js +2 -1
  37. package/lib/es/input/index.d.ts +1 -0
  38. package/lib/es/input/index.js +12 -4
  39. package/lib/es/modal/Modal.d.ts +1 -0
  40. package/lib/es/modal/Modal.js +11 -3
  41. package/lib/es/modal/confirm.d.ts +5 -0
  42. package/lib/es/slider/index.js +33 -1
  43. package/lib/es/table/ColumnFilter.d.ts +34 -18
  44. package/lib/es/table/ColumnFilter.js +135 -74
  45. package/lib/es/table/Table.d.ts +5 -5
  46. package/lib/es/table/Table.js +38 -13
  47. package/lib/es/table/index.d.ts +1 -1
  48. package/lib/es/table/interface.d.ts +30 -10
  49. package/lib/es/treeSelect/index.d.ts +2 -0
  50. package/lib/es/treeSelect/index.js +4 -0
  51. package/package.json +8 -8
@@ -15,6 +15,7 @@ import '@douyinfe/semi-foundation/lib/es/avatar/avatar.css';
15
15
  import { noop } from '@douyinfe/semi-foundation/lib/es/utils/function';
16
16
  import BaseComponent from '../_base/baseComponent';
17
17
  import { handlePrevent } from '@douyinfe/semi-foundation/lib/es/utils/a11y';
18
+ import TopSlotSvg from "./TopSlotSvg";
18
19
  const sizeSet = strings.SIZE;
19
20
  const shapeSet = strings.SHAPE;
20
21
  const colorSet = strings.COLOR;
@@ -88,6 +89,64 @@ export default class Avatar extends BaseComponent {
88
89
  }
89
90
  return content;
90
91
  };
92
+ this.renderBottomSlot = () => {
93
+ var _a, _b;
94
+ if (!this.props.bottomSlot) {
95
+ return null;
96
+ }
97
+ if (this.props.bottomSlot.render) {
98
+ return this.props.bottomSlot.render();
99
+ }
100
+ const renderContent = (_a = this.props.bottomSlot.render) !== null && _a !== void 0 ? _a : () => {
101
+ var _a;
102
+ const style = {};
103
+ if (this.props.bottomSlot.bgColor) {
104
+ style['backgroundColor'] = this.props.bottomSlot.bgColor;
105
+ }
106
+ if (this.props.bottomSlot.textColor) {
107
+ style['color'] = this.props.bottomSlot.textColor;
108
+ }
109
+ return /*#__PURE__*/React.createElement("span", {
110
+ style: style,
111
+ className: cls(`${prefixCls}-bottom_slot-shape_${this.props.bottomSlot.shape}`, `${prefixCls}-bottom_slot-shape_${this.props.bottomSlot.shape}-${this.props.size}`, (_a = this.props.bottomSlot.className) !== null && _a !== void 0 ? _a : "")
112
+ }, this.props.bottomSlot.text);
113
+ };
114
+ return /*#__PURE__*/React.createElement("div", {
115
+ className: cls([`${prefixCls}-bottom_slot`]),
116
+ style: (_b = this.props.bottomSlot.style) !== null && _b !== void 0 ? _b : {}
117
+ }, renderContent());
118
+ };
119
+ this.renderTopSlot = () => {
120
+ var _a, _b, _c, _d;
121
+ if (!this.props.topSlot) {
122
+ return null;
123
+ }
124
+ if (this.props.topSlot.render) {
125
+ return this.props.topSlot.render();
126
+ }
127
+ const textStyle = {};
128
+ if (this.props.topSlot.textColor) {
129
+ textStyle['color'] = this.props.topSlot.textColor;
130
+ }
131
+ return /*#__PURE__*/React.createElement("div", {
132
+ style: (_a = this.props.topSlot.style) !== null && _a !== void 0 ? _a : {},
133
+ className: cls([`${prefixCls}-top_slot-wrapper`, (_b = this.props.topSlot.className) !== null && _b !== void 0 ? _b : "", {
134
+ [`${prefixCls}-animated`]: this.props.contentMotion
135
+ }])
136
+ }, /*#__PURE__*/React.createElement("div", {
137
+ className: cls([`${prefixCls}-top_slot-bg`, `${prefixCls}-top_slot-bg-${this.props.size}`])
138
+ }, /*#__PURE__*/React.createElement("div", {
139
+ className: cls([`${prefixCls}-top_slot-bg-svg`, `${prefixCls}-top_slot-bg-svg-${this.props.size}`])
140
+ }, /*#__PURE__*/React.createElement(TopSlotSvg, {
141
+ gradientStart: (_c = this.props.topSlot.gradientStart) !== null && _c !== void 0 ? _c : "var(--semi-color-primary)",
142
+ gradientEnd: (_d = this.props.topSlot.gradientEnd) !== null && _d !== void 0 ? _d : "var(--semi-color-primary)"
143
+ }))), /*#__PURE__*/React.createElement("div", {
144
+ className: cls([`${prefixCls}-top_slot`])
145
+ }, /*#__PURE__*/React.createElement("div", {
146
+ style: textStyle,
147
+ className: cls([`${prefixCls}-top_slot-content`, `${prefixCls}-top_slot-content-${this.props.size}`])
148
+ }, this.props.topSlot.text)));
149
+ };
91
150
  this.state = {
92
151
  isImgExist: true,
93
152
  hoverContent: '',
@@ -205,7 +264,8 @@ export default class Avatar extends BaseComponent {
205
264
  }
206
265
  }
207
266
  render() {
208
- const _a = this.props,
267
+ var _a, _b;
268
+ const _c = this.props,
209
269
  {
210
270
  shape,
211
271
  children,
@@ -219,9 +279,13 @@ export default class Avatar extends BaseComponent {
219
279
  srcSet,
220
280
  style,
221
281
  alt,
222
- gap
223
- } = _a,
224
- others = __rest(_a, ["shape", "children", "size", "color", "className", "hoverMask", "onClick", "imgAttr", "src", "srcSet", "style", "alt", "gap"]);
282
+ gap,
283
+ bottomSlot,
284
+ topSlot,
285
+ border,
286
+ contentMotion
287
+ } = _c,
288
+ others = __rest(_c, ["shape", "children", "size", "color", "className", "hoverMask", "onClick", "imgAttr", "src", "srcSet", "style", "alt", "gap", "bottomSlot", "topSlot", "border", "contentMotion"]);
225
289
  const {
226
290
  isImgExist,
227
291
  hoverContent,
@@ -233,14 +297,15 @@ export default class Avatar extends BaseComponent {
233
297
  [`${prefixCls}-${size}`]: size,
234
298
  [`${prefixCls}-${color}`]: color && !isImg,
235
299
  [`${prefixCls}-img`]: isImg,
236
- [`${prefixCls}-focus`]: focusVisible
300
+ [`${prefixCls}-focus`]: focusVisible,
301
+ [`${prefixCls}-animated`]: contentMotion
237
302
  }, className);
238
303
  const hoverRender = hoverContent ? /*#__PURE__*/React.createElement("div", {
239
304
  className: `${prefixCls}-hover`,
240
305
  "x-semi-prop": "hoverContent"
241
306
  }, hoverContent) : null;
242
- return /*#__PURE__*/React.createElement("span", Object.assign({}, others, {
243
- style: style,
307
+ let avatar = /*#__PURE__*/React.createElement("span", Object.assign({}, others, {
308
+ style: border || bottomSlot || topSlot || border ? {} : style,
244
309
  className: avatarCls,
245
310
  onClick: onClick,
246
311
  onMouseEnter: this.onEnter,
@@ -248,6 +313,36 @@ export default class Avatar extends BaseComponent {
248
313
  role: 'listitem',
249
314
  ref: this.avatarRef
250
315
  }), this.getContent(), hoverRender);
316
+ if (border) {
317
+ const borderStyle = {};
318
+ if (border === null || border === void 0 ? void 0 : border.color) {
319
+ borderStyle['borderColor'] = border.color;
320
+ }
321
+ avatar = /*#__PURE__*/React.createElement("div", {
322
+ style: Object.assign({
323
+ position: "relative"
324
+ }, style)
325
+ }, avatar, /*#__PURE__*/React.createElement("span", {
326
+ style: borderStyle,
327
+ className: cls([`${prefixCls}-additionalBorder`, `${prefixCls}-additionalBorder-${size}`, {
328
+ [`${prefixCls}-${shape}`]: shape
329
+ }])
330
+ }), ((_a = this.props.border) === null || _a === void 0 ? void 0 : _a.motion) && /*#__PURE__*/React.createElement("span", {
331
+ style: borderStyle,
332
+ className: cls([`${prefixCls}-additionalBorder`, `${prefixCls}-additionalBorder-${size}`, {
333
+ [`${prefixCls}-${shape}`]: shape,
334
+ [`${prefixCls}-additionalBorder-animated`]: (_b = this.props.border) === null || _b === void 0 ? void 0 : _b.motion
335
+ }])
336
+ }));
337
+ }
338
+ if (bottomSlot || topSlot || border) {
339
+ return /*#__PURE__*/React.createElement("span", {
340
+ className: cls([`${prefixCls}-wrapper`]),
341
+ style: style
342
+ }, avatar, topSlot && ["small", "default", "medium", "large", "extra-large"].includes(size) && shape === "circle" && this.renderTopSlot(), bottomSlot && ["small", "default", "medium", "large", "extra-large"].includes(size) && this.renderBottomSlot());
343
+ } else {
344
+ return avatar;
345
+ }
251
346
  }
252
347
  }
253
348
  Avatar.defaultProps = {
@@ -275,6 +370,29 @@ Avatar.propTypes = {
275
370
  onError: PropTypes.func,
276
371
  onClick: PropTypes.func,
277
372
  onMouseEnter: PropTypes.func,
278
- onMouseLeave: PropTypes.func
373
+ onMouseLeave: PropTypes.func,
374
+ bottomSlot: PropTypes.shape({
375
+ render: PropTypes.func,
376
+ shape: PropTypes.oneOf(['circle', 'square']),
377
+ text: PropTypes.node,
378
+ bgColor: PropTypes.string,
379
+ textColor: PropTypes.string,
380
+ className: PropTypes.string,
381
+ style: PropTypes.object
382
+ }),
383
+ topSlot: PropTypes.shape({
384
+ render: PropTypes.func,
385
+ gradientStart: PropTypes.string,
386
+ gradientEnd: PropTypes.string,
387
+ text: PropTypes.node,
388
+ textColor: PropTypes.string,
389
+ className: PropTypes.string,
390
+ style: PropTypes.object
391
+ }),
392
+ border: PropTypes.oneOfType([PropTypes.shape({
393
+ color: PropTypes.string,
394
+ motion: PropTypes.bool
395
+ }), PropTypes.bool]),
396
+ contentMotion: PropTypes.bool
279
397
  };
280
398
  Avatar.elementType = 'Avatar';
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { CSSProperties } from 'react';
2
2
  import { BaseProps } from '../_base/baseComponent';
3
3
  export type AvatarShape = 'circle' | 'square';
4
4
  export type AvatarSize = 'extra-extra-small' | 'extra-small' | 'small' | 'default' | 'medium' | 'large' | 'extra-large';
@@ -18,6 +18,29 @@ export interface AvatarProps extends BaseProps {
18
18
  onMouseEnter?: React.MouseEventHandler;
19
19
  onMouseLeave?: React.MouseEventHandler;
20
20
  imgAttr?: React.ImgHTMLAttributes<HTMLImageElement>;
21
+ bottomSlot?: {
22
+ render?: () => React.ReactNode;
23
+ shape?: "circle" | "square";
24
+ text: React.ReactNode;
25
+ bgColor: string;
26
+ textColor: string;
27
+ className: string;
28
+ style?: CSSProperties;
29
+ };
30
+ topSlot?: {
31
+ render?: () => React.ReactNode;
32
+ gradientStart?: string;
33
+ gradientEnd?: string;
34
+ text: React.ReactNode;
35
+ textColor: string;
36
+ className: string;
37
+ style?: CSSProperties;
38
+ };
39
+ border?: {
40
+ color?: string;
41
+ motion?: boolean;
42
+ } & boolean;
43
+ contentMotion?: boolean;
21
44
  }
22
45
  export type AvatarGroupShape = 'circle' | 'square';
23
46
  export type AvatarGroupSize = 'extra-extra-small' | 'extra-small' | 'small' | 'default' | 'medium' | 'large' | 'extra-large';
@@ -37,7 +37,8 @@ class DropdownItem extends BaseComponent {
37
37
  const events = {};
38
38
  if (!disabled) {
39
39
  ['onClick', 'onMouseEnter', 'onMouseLeave', 'onContextMenu'].forEach(eventName => {
40
- if (eventName === "onClick") {
40
+ const isInAnotherDropdown = this.context.level !== 1;
41
+ if (isInAnotherDropdown && eventName === "onClick") {
41
42
  events["onMouseDown"] = e => {
42
43
  var _a, _b;
43
44
  if (e.button === 0) {
@@ -51,6 +51,7 @@ export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElem
51
51
  preventScroll?: boolean;
52
52
  /** internal prop, DatePicker use it */
53
53
  showClearIgnoreDisabled?: boolean;
54
+ onlyBorder?: number;
54
55
  }
55
56
  export interface InputState {
56
57
  value: React.ReactText;
@@ -333,9 +333,10 @@ class Input extends BaseComponent {
333
333
  getValueLength,
334
334
  preventScroll,
335
335
  borderless,
336
- showClearIgnoreDisabled
336
+ showClearIgnoreDisabled,
337
+ onlyBorder
337
338
  } = _a,
338
- rest = __rest(_a, ["addonAfter", "addonBefore", "autoFocus", "clearIcon", "className", "disabled", "defaultValue", "placeholder", "prefix", "mode", "insetLabel", "insetLabelId", "validateStatus", "type", "readonly", "size", "suffix", "style", "showClear", "onEnterPress", "onClear", "hideSuffix", "inputStyle", "forwardRef", "maxLength", "getValueLength", "preventScroll", "borderless", "showClearIgnoreDisabled"]);
339
+ rest = __rest(_a, ["addonAfter", "addonBefore", "autoFocus", "clearIcon", "className", "disabled", "defaultValue", "placeholder", "prefix", "mode", "insetLabel", "insetLabelId", "validateStatus", "type", "readonly", "size", "suffix", "style", "showClear", "onEnterPress", "onClear", "hideSuffix", "inputStyle", "forwardRef", "maxLength", "getValueLength", "preventScroll", "borderless", "showClearIgnoreDisabled", "onlyBorder"]);
339
340
  const {
340
341
  value,
341
342
  isFocus,
@@ -363,7 +364,8 @@ class Input extends BaseComponent {
363
364
  [`${wrapperPrefix}-modebtn`]: mode === 'password',
364
365
  [`${wrapperPrefix}-hidden`]: type === 'hidden',
365
366
  [`${wrapperPrefix}-${size}`]: size,
366
- [`${prefixCls}-borderless`]: borderless
367
+ [`${prefixCls}-borderless`]: borderless,
368
+ [`${prefixCls}-only_border`]: onlyBorder !== undefined && onlyBorder !== null
367
369
  });
368
370
  const inputCls = cls(prefixCls, {
369
371
  [`${prefixCls}-${size}`]: size,
@@ -397,12 +399,18 @@ class Input extends BaseComponent {
397
399
  if (validateStatus === 'error') {
398
400
  inputProps['aria-invalid'] = 'true';
399
401
  }
402
+ let wrapperStyle = Object.assign({}, style);
403
+ if (onlyBorder !== undefined) {
404
+ wrapperStyle = Object.assign({
405
+ borderWidth: onlyBorder
406
+ }, style);
407
+ }
400
408
  return (
401
409
  /*#__PURE__*/
402
410
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
403
411
  React.createElement("div", {
404
412
  className: wrapperCls,
405
- style: style,
413
+ style: wrapperStyle,
406
414
  onMouseEnter: e => this.handleMouseOver(e),
407
415
  onMouseLeave: e => this.handleMouseLeave(e),
408
416
  onClick: e => this.handleClick(e)
@@ -66,6 +66,7 @@ declare class Modal extends BaseComponent<ModalReactProps, ModalState> {
66
66
  lazyRender: PropTypes.Requireable<boolean>;
67
67
  direction: PropTypes.Requireable<string>;
68
68
  fullScreen: PropTypes.Requireable<boolean>;
69
+ footerFill: PropTypes.Requireable<boolean>;
69
70
  };
70
71
  static defaultProps: {
71
72
  zIndex: number;
@@ -45,7 +45,8 @@ class Modal extends BaseComponent {
45
45
  cancelText,
46
46
  confirmLoading,
47
47
  cancelLoading,
48
- hasCancel
48
+ hasCancel,
49
+ footerFill
49
50
  } = this.props;
50
51
  const getCancelButton = locale => {
51
52
  if (!hasCancel) {
@@ -56,6 +57,7 @@ class Modal extends BaseComponent {
56
57
  onClick: this.handleCancel,
57
58
  loading: cancelLoading === undefined ? this.state.onCancelReturnPromiseStatus === "pending" : cancelLoading,
58
59
  type: "tertiary",
60
+ block: footerFill,
59
61
  autoFocus: true
60
62
  }, this.props.cancelButtonProps, {
61
63
  "x-semi-children-alias": "cancelText"
@@ -64,10 +66,15 @@ class Modal extends BaseComponent {
64
66
  };
65
67
  return /*#__PURE__*/React.createElement(LocaleConsumer, {
66
68
  componentName: "Modal"
67
- }, (locale, localeCode) => /*#__PURE__*/React.createElement("div", null, getCancelButton(locale), /*#__PURE__*/React.createElement(Button, Object.assign({
69
+ }, (locale, localeCode) => /*#__PURE__*/React.createElement("div", {
70
+ className: cls({
71
+ [`${cssClasses.DIALOG}-footerfill`]: footerFill
72
+ })
73
+ }, getCancelButton(locale), /*#__PURE__*/React.createElement(Button, Object.assign({
68
74
  "aria-label": "confirm",
69
75
  type: okType,
70
76
  theme: "solid",
77
+ block: footerFill,
71
78
  loading: confirmLoading === undefined ? this.state.onOKReturnPromiseStatus === "pending" : confirmLoading,
72
79
  onClick: this.handleOk
73
80
  }, this.props.okButtonProps, {
@@ -301,7 +308,8 @@ Modal.propTypes = {
301
308
  keepDOM: PropTypes.bool,
302
309
  lazyRender: PropTypes.bool,
303
310
  direction: PropTypes.oneOf(strings.directions),
304
- fullScreen: PropTypes.bool
311
+ fullScreen: PropTypes.bool,
312
+ footerFill: PropTypes.bool
305
313
  };
306
314
  Modal.defaultProps = {
307
315
  zIndex: 1000,
@@ -51,6 +51,7 @@ export declare function withInfo(props: ModalReactProps): {
51
51
  direction?: any;
52
52
  fullScreen?: boolean;
53
53
  preventScroll?: boolean;
54
+ footerFill?: boolean;
54
55
  type: "info";
55
56
  };
56
57
  export declare function withSuccess(props: ModalReactProps): {
@@ -94,6 +95,7 @@ export declare function withSuccess(props: ModalReactProps): {
94
95
  direction?: any;
95
96
  fullScreen?: boolean;
96
97
  preventScroll?: boolean;
98
+ footerFill?: boolean;
97
99
  type: "success";
98
100
  };
99
101
  export declare function withWarning(props: ModalReactProps): {
@@ -137,6 +139,7 @@ export declare function withWarning(props: ModalReactProps): {
137
139
  direction?: any;
138
140
  fullScreen?: boolean;
139
141
  preventScroll?: boolean;
142
+ footerFill?: boolean;
140
143
  type: "warning";
141
144
  };
142
145
  export declare function withError(props: ModalReactProps): {
@@ -179,6 +182,7 @@ export declare function withError(props: ModalReactProps): {
179
182
  onOk?: (e: React.MouseEvent<Element, MouseEvent>) => void | Promise<any>;
180
183
  lazyRender?: boolean;
181
184
  fullScreen?: boolean;
185
+ footerFill?: boolean;
182
186
  type: "error";
183
187
  okButtonProps: {
184
188
  id?: string;
@@ -506,5 +510,6 @@ export declare function withConfirm(props: ModalReactProps): {
506
510
  direction?: any;
507
511
  fullScreen?: boolean;
508
512
  preventScroll?: boolean;
513
+ footerFill?: boolean;
509
514
  type: "confirm";
510
515
  };
@@ -28,6 +28,7 @@ export default class Slider extends BaseComponent {
28
28
  constructor(props) {
29
29
  super(props);
30
30
  this.renderHandle = () => {
31
+ var _a, _b, _c, _d, _e, _f, _g, _h;
31
32
  const {
32
33
  vertical,
33
34
  range,
@@ -126,6 +127,14 @@ export default class Slider extends BaseComponent {
126
127
  "aria-valuenow": currentValue,
127
128
  "aria-valuemax": max,
128
129
  "aria-valuemin": min
130
+ }), this.props.handleDot && /*#__PURE__*/React.createElement("div", {
131
+ className: cssClasses.HANDLE_DOT,
132
+ style: Object.assign(Object.assign({}, ((_a = this.props.handleDot) === null || _a === void 0 ? void 0 : _a.size) ? {
133
+ width: this.props.handleDot.size,
134
+ height: this.props.handleDot.size
135
+ } : {}), ((_b = this.props.handleDot) === null || _b === void 0 ? void 0 : _b.color) ? {
136
+ backgroundColor: this.props.handleDot.color
137
+ } : {})
129
138
  }))) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Tooltip, {
130
139
  content: tipChildren.min,
131
140
  position: "top",
@@ -177,6 +186,14 @@ export default class Slider extends BaseComponent {
177
186
  "aria-valuenow": currentValue[0],
178
187
  "aria-valuemax": currentValue[1],
179
188
  "aria-valuemin": min
189
+ }), ((_c = this.props.handleDot) === null || _c === void 0 ? void 0 : _c[0]) && /*#__PURE__*/React.createElement("div", {
190
+ className: cssClasses.HANDLE_DOT,
191
+ style: Object.assign(Object.assign({}, ((_d = this.props.handleDot[0]) === null || _d === void 0 ? void 0 : _d.size) ? {
192
+ width: this.props.handleDot[0].size,
193
+ height: this.props.handleDot[0].size
194
+ } : {}), ((_e = this.props.handleDot[0]) === null || _e === void 0 ? void 0 : _e.color) ? {
195
+ backgroundColor: this.props.handleDot[0].color
196
+ } : {})
180
197
  }))), /*#__PURE__*/React.createElement(Tooltip, {
181
198
  content: tipChildren.max,
182
199
  position: "top",
@@ -228,6 +245,14 @@ export default class Slider extends BaseComponent {
228
245
  "aria-valuenow": currentValue[1],
229
246
  "aria-valuemax": max,
230
247
  "aria-valuemin": currentValue[0]
248
+ }), ((_f = this.props.handleDot) === null || _f === void 0 ? void 0 : _f[1]) && /*#__PURE__*/React.createElement("div", {
249
+ className: cssClasses.HANDLE_DOT,
250
+ style: Object.assign(Object.assign({}, ((_g = this.props.handleDot[1]) === null || _g === void 0 ? void 0 : _g.size) ? {
251
+ width: this.props.handleDot[1].size,
252
+ height: this.props.handleDot[1].size
253
+ } : {}), ((_h = this.props.handleDot[1]) === null || _h === void 0 ? void 0 : _h.color) ? {
254
+ backgroundColor: this.props.handleDot[1].color
255
+ } : {})
231
256
  }))));
232
257
  return handleContents;
233
258
  };
@@ -644,7 +669,14 @@ Slider.propTypes = {
644
669
  showBoundary: PropTypes.bool,
645
670
  railStyle: PropTypes.object,
646
671
  verticalReverse: PropTypes.bool,
647
- getAriaValueText: PropTypes.func
672
+ getAriaValueText: PropTypes.func,
673
+ handleDot: PropTypes.oneOfType([PropTypes.shape({
674
+ size: PropTypes.string,
675
+ color: PropTypes.string
676
+ }), PropTypes.arrayOf(PropTypes.shape({
677
+ size: PropTypes.string,
678
+ color: PropTypes.string
679
+ }))])
648
680
  };
649
681
  Slider.defaultProps = {
650
682
  // allowClear: false,
@@ -1,34 +1,50 @@
1
1
  import React from 'react';
2
2
  import { DropdownProps } from '../dropdown';
3
- import { Trigger, Position } from '../tooltip';
4
3
  import { FilterIcon, Filter, OnFilterDropdownVisibleChange, RenderFilterDropdownItem } from './interface';
5
- export interface ColumnFilterProps {
4
+ export default function ColumnFilter(props?: ColumnFilterProps): React.ReactElement;
5
+ export interface ColumnFilterProps extends Omit<RenderDropdownProps, keyof RenderFilterDropdownProps> {
6
6
  prefixCls?: string;
7
7
  filteredValue?: any[];
8
8
  filterIcon?: FilterIcon;
9
9
  filterDropdown?: React.ReactElement;
10
- renderFilterDropdown?: (props: RenderDropdownProps, options: {
11
- iconElem: React.ReactNode;
12
- }) => React.ReactElement;
13
- filterDropdownProps?: DropdownProps;
14
- onFilterDropdownVisibleChange?: OnFilterDropdownVisibleChange;
15
- onSelect?: (data: OnSelectData) => void;
16
- }
17
- export default function ColumnFilter(props?: ColumnFilterProps): React.ReactElement;
18
- export interface OnSelectData {
19
- value: any;
20
- filteredValue: any;
21
- included: boolean;
22
- domEvent: React.MouseEvent<HTMLElement>;
10
+ filterDropdownProps?: FilterDropdownProps;
11
+ filters?: Filter[];
23
12
  }
24
- export interface RenderDropdownProps {
13
+ export interface RenderDropdownProps extends FilterDropdownProps, RenderFilterDropdownProps {
25
14
  filterMultiple?: boolean;
26
15
  filters?: Filter[];
27
16
  filteredValue?: any[];
28
17
  filterDropdownVisible?: boolean;
29
18
  onSelect?: (data: OnSelectData) => void;
30
19
  onFilterDropdownVisibleChange?: OnFilterDropdownVisibleChange;
31
- trigger?: Trigger;
32
- position?: Position;
20
+ renderFilterDropdown?: (props?: RenderFilterDropdownProps) => React.ReactNode;
33
21
  renderFilterDropdownItem?: RenderFilterDropdownItem;
34
22
  }
23
+ export interface FilterDropdownProps extends Omit<DropdownProps, 'render' | 'onVisibleChange'> {
24
+ }
25
+ export interface OnSelectData {
26
+ value?: any;
27
+ /** only this value is used now */
28
+ filteredValue: any;
29
+ included?: boolean;
30
+ domEvent?: React.MouseEvent<HTMLElement>;
31
+ }
32
+ export interface RenderFilterDropdownProps {
33
+ /** temporary filteredValue */
34
+ tempFilteredValue: any[];
35
+ /** set temporary filteredValue */
36
+ setTempFilteredValue: (tempFilteredValue: any[]) => void;
37
+ /** set tempFilteredValue to filteredValue. You can also pass filteredValue to directly set the filteredValue */
38
+ confirm: (props?: {
39
+ closeDropdown?: boolean;
40
+ filteredValue?: any[];
41
+ }) => void;
42
+ /** clear tempFilteredValue and filteredValue */
43
+ clear: (props?: {
44
+ closeDropdown?: boolean;
45
+ }) => void;
46
+ /** close dropdown */
47
+ close: () => void;
48
+ /** column filters */
49
+ filters?: RenderDropdownProps['filters'];
50
+ }