@douyinfe/semi-ui 2.50.0-alpha.0 → 2.50.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 (99) hide show
  1. package/dist/css/semi.css +76 -160
  2. package/dist/css/semi.min.css +1 -1
  3. package/dist/umd/semi-ui.js +582 -418
  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/datePicker/yearAndMonth.js +1 -5
  14. package/lib/cjs/dropdown/index.d.ts +1 -1
  15. package/lib/cjs/form/baseForm.d.ts +2 -2
  16. package/lib/cjs/form/field.d.ts +2 -2
  17. package/lib/cjs/image/interface.d.ts +3 -3
  18. package/lib/cjs/image/previewFooter.js +5 -8
  19. package/lib/cjs/image/previewHeader.d.ts +2 -2
  20. package/lib/cjs/image/previewHeader.js +9 -8
  21. package/lib/cjs/image/previewImage.d.ts +1 -12
  22. package/lib/cjs/image/previewImage.js +23 -83
  23. package/lib/cjs/image/previewInner.d.ts +11 -2
  24. package/lib/cjs/image/previewInner.js +60 -42
  25. package/lib/cjs/index.d.ts +2 -0
  26. package/lib/cjs/index.js +14 -0
  27. package/lib/cjs/modal/confirm.d.ts +17 -17
  28. package/lib/cjs/notification/index.d.ts +8 -8
  29. package/lib/cjs/notification/index.js +6 -5
  30. package/lib/cjs/notification/notice.d.ts +1 -1
  31. package/lib/cjs/notification/notice.js +1 -1
  32. package/lib/cjs/popover/index.d.ts +1 -1
  33. package/lib/cjs/select/index.d.ts +2 -2
  34. package/lib/cjs/table/Table.d.ts +1 -1
  35. package/lib/cjs/timePicker/TimePicker.d.ts +3 -3
  36. package/lib/cjs/timePicker/TimeShape.d.ts +1 -1
  37. package/lib/cjs/timePicker/index.d.ts +2 -2
  38. package/lib/cjs/tooltip/index.d.ts +1 -1
  39. package/lib/cjs/tree/indent.d.ts +9 -0
  40. package/lib/cjs/tree/indent.js +37 -0
  41. package/lib/cjs/tree/index.d.ts +2 -0
  42. package/lib/cjs/tree/index.js +8 -3
  43. package/lib/cjs/tree/interface.d.ts +2 -0
  44. package/lib/cjs/tree/treeNode.d.ts +3 -0
  45. package/lib/cjs/tree/treeNode.js +34 -6
  46. package/lib/cjs/treeSelect/index.d.ts +4 -3
  47. package/lib/cjs/treeSelect/index.js +124 -31
  48. package/lib/cjs/typography/base.d.ts +1 -1
  49. package/lib/cjs/typography/numeral.d.ts +1 -1
  50. package/lib/cjs/typography/paragraph.d.ts +1 -1
  51. package/lib/cjs/typography/text.d.ts +1 -1
  52. package/lib/cjs/typography/title.d.ts +1 -1
  53. package/lib/es/anchor/index.d.ts +1 -1
  54. package/lib/es/autoComplete/index.d.ts +1 -1
  55. package/lib/es/button/Button.d.ts +1 -1
  56. package/lib/es/button/index.d.ts +1 -1
  57. package/lib/es/carousel/index.d.ts +1 -1
  58. package/lib/es/datePicker/datePicker.d.ts +1 -1
  59. package/lib/es/datePicker/yearAndMonth.js +1 -5
  60. package/lib/es/dropdown/index.d.ts +1 -1
  61. package/lib/es/form/baseForm.d.ts +2 -2
  62. package/lib/es/form/field.d.ts +2 -2
  63. package/lib/es/image/interface.d.ts +3 -3
  64. package/lib/es/image/previewFooter.js +5 -8
  65. package/lib/es/image/previewHeader.d.ts +2 -2
  66. package/lib/es/image/previewHeader.js +4 -3
  67. package/lib/es/image/previewImage.d.ts +1 -12
  68. package/lib/es/image/previewImage.js +23 -83
  69. package/lib/es/image/previewInner.d.ts +11 -2
  70. package/lib/es/image/previewInner.js +60 -42
  71. package/lib/es/index.d.ts +2 -0
  72. package/lib/es/index.js +2 -0
  73. package/lib/es/modal/confirm.d.ts +17 -17
  74. package/lib/es/notification/index.d.ts +8 -8
  75. package/lib/es/notification/index.js +6 -5
  76. package/lib/es/notification/notice.d.ts +1 -1
  77. package/lib/es/notification/notice.js +1 -1
  78. package/lib/es/popover/index.d.ts +1 -1
  79. package/lib/es/select/index.d.ts +2 -2
  80. package/lib/es/table/Table.d.ts +1 -1
  81. package/lib/es/timePicker/TimePicker.d.ts +3 -3
  82. package/lib/es/timePicker/TimeShape.d.ts +1 -1
  83. package/lib/es/timePicker/index.d.ts +2 -2
  84. package/lib/es/tooltip/index.d.ts +1 -1
  85. package/lib/es/tree/indent.d.ts +9 -0
  86. package/lib/es/tree/indent.js +27 -0
  87. package/lib/es/tree/index.d.ts +2 -0
  88. package/lib/es/tree/index.js +8 -3
  89. package/lib/es/tree/interface.d.ts +2 -0
  90. package/lib/es/tree/treeNode.d.ts +3 -0
  91. package/lib/es/tree/treeNode.js +34 -6
  92. package/lib/es/treeSelect/index.d.ts +4 -3
  93. package/lib/es/treeSelect/index.js +125 -32
  94. package/lib/es/typography/base.d.ts +1 -1
  95. package/lib/es/typography/numeral.d.ts +1 -1
  96. package/lib/es/typography/paragraph.d.ts +1 -1
  97. package/lib/es/typography/text.d.ts +1 -1
  98. package/lib/es/typography/title.d.ts +1 -1
  99. package/package.json +8 -8
@@ -33,20 +33,20 @@ declare class NotificationList extends BaseComponent<NotificationListProps, Noti
33
33
  constructor(props: NotificationListProps);
34
34
  context: ContextValue;
35
35
  get adapter(): NotificationListAdapter;
36
- static addNotice(notice: NoticeProps): string | number;
36
+ static addNotice(notice: NoticeProps): string;
37
37
  static removeNotice(id: string): string;
38
- static info(opts: NoticeProps): string | number;
39
- static success(opts: NoticeProps): string | number;
40
- static error(opts: NoticeProps): string | number;
41
- static warning(opts: NoticeProps): string | number;
42
- static open(opts: NoticeProps): string | number;
38
+ static info(opts: NoticeProps): string;
39
+ static success(opts: NoticeProps): string;
40
+ static error(opts: NoticeProps): string;
41
+ static warning(opts: NoticeProps): string;
42
+ static open(opts: NoticeProps): string;
43
43
  static close(id: string): string;
44
44
  static destroyAll(): void;
45
45
  static config(opts: ConfigProps): void;
46
46
  add: (noticeOpts: NoticeProps) => any;
47
47
  has: (id: string) => any;
48
- remove: (id: string | number) => void;
49
- update: (id: string | number, opts: NoticeProps) => any;
48
+ remove: (id: string) => void;
49
+ update: (id: string, opts: NoticeProps) => any;
50
50
  destroyAll: () => any;
51
51
  renderNoticeInPosition: (notices: NoticeInstance[], position: NoticePosition, removedItems?: NoticeInstance[], updatedItems?: NoticeInstance[]) => JSX.Element;
52
52
  setPosInStyle(noticeInstance: NoticeInstance): {};
@@ -110,6 +110,7 @@ class NotificationList extends BaseComponent {
110
110
  }
111
111
  static addNotice(notice) {
112
112
  var _a;
113
+ notice = Object.assign(Object.assign({}, defaultConfig), notice);
113
114
  const id = (_a = notice.id) !== null && _a !== void 0 ? _a : getUuid('notification');
114
115
  if (!ref) {
115
116
  const {
@@ -153,27 +154,27 @@ class NotificationList extends BaseComponent {
153
154
  return id;
154
155
  }
155
156
  static info(opts) {
156
- return this.addNotice(Object.assign(Object.assign(Object.assign({}, defaultConfig), opts), {
157
+ return this.addNotice(Object.assign(Object.assign({}, opts), {
157
158
  type: 'info'
158
159
  }));
159
160
  }
160
161
  static success(opts) {
161
- return this.addNotice(Object.assign(Object.assign(Object.assign({}, defaultConfig), opts), {
162
+ return this.addNotice(Object.assign(Object.assign({}, opts), {
162
163
  type: 'success'
163
164
  }));
164
165
  }
165
166
  static error(opts) {
166
- return this.addNotice(Object.assign(Object.assign(Object.assign({}, defaultConfig), opts), {
167
+ return this.addNotice(Object.assign(Object.assign({}, opts), {
167
168
  type: 'error'
168
169
  }));
169
170
  }
170
171
  static warning(opts) {
171
- return this.addNotice(Object.assign(Object.assign(Object.assign({}, defaultConfig), opts), {
172
+ return this.addNotice(Object.assign(Object.assign({}, opts), {
172
173
  type: 'warning'
173
174
  }));
174
175
  }
175
176
  static open(opts) {
176
- return this.addNotice(Object.assign(Object.assign(Object.assign({}, defaultConfig), opts), {
177
+ return this.addNotice(Object.assign(Object.assign({}, opts), {
177
178
  type: 'default'
178
179
  }));
179
180
  }
@@ -16,7 +16,7 @@ declare class Notice extends BaseComponent<NoticeReactProps, NoticeState> {
16
16
  static contextType: React.Context<ContextValue>;
17
17
  static propTypes: {
18
18
  duration: PropTypes.Requireable<number>;
19
- id: PropTypes.Requireable<NonNullable<string | number>>;
19
+ id: PropTypes.Requireable<string>;
20
20
  title: PropTypes.Requireable<PropTypes.ReactNodeLike>;
21
21
  content: PropTypes.Requireable<PropTypes.ReactNodeLike>;
22
22
  type: PropTypes.Requireable<string>;
@@ -161,7 +161,7 @@ class Notice extends BaseComponent {
161
161
  Notice.contextType = ConfigContext;
162
162
  Notice.propTypes = {
163
163
  duration: PropTypes.number,
164
- id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
164
+ id: PropTypes.string,
165
165
  title: PropTypes.node,
166
166
  content: PropTypes.node,
167
167
  type: PropTypes.oneOf(types),
@@ -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" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver">;
61
+ position: PropTypes.Requireable<"left" | "right" | "top" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver">;
62
62
  margin: PropTypes.Requireable<NonNullable<number | object>>;
63
63
  mouseEnterDelay: PropTypes.Requireable<number>;
64
64
  mouseLeaveDelay: PropTypes.Requireable<number>;
@@ -139,7 +139,7 @@ export type SelectProps = {
139
139
  onDeselect?: (value: SelectProps['value'], option: Record<string, any>) => void;
140
140
  onSelect?: (value: SelectProps['value'], option: Record<string, any>) => void;
141
141
  allowCreate?: boolean;
142
- triggerRender?: (props?: TriggerRenderProps) => React.ReactNode;
142
+ triggerRender?: (props: TriggerRenderProps) => React.ReactNode;
143
143
  onClear?: () => void;
144
144
  virtualize?: virtualListProps;
145
145
  onFocus?: (e: React.FocusEvent) => void;
@@ -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" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver">;
203
+ position: PropTypes.Requireable<"left" | "right" | "top" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "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>;
@@ -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" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver";
311
+ popoverPosition?: "left" | "right" | "top" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver";
312
312
  hideOnSinglePage?: boolean;
313
313
  hoverShowPageSelect?: boolean;
314
314
  disabled?: boolean;
@@ -63,7 +63,7 @@ export type TimePickerProps = {
63
63
  secondStep?: number;
64
64
  showClear?: boolean;
65
65
  size?: InputSize;
66
- stopPropagation: boolean;
66
+ stopPropagation?: boolean;
67
67
  style?: React.CSSProperties;
68
68
  timeZone?: string | number;
69
69
  triggerRender?: (props?: any) => React.ReactNode;
@@ -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[] | Date | number[] | Date[]>>;
108
+ value: PropTypes.Requireable<NonNullable<string | number | string[] | number[] | Date | 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[] | Date | number[] | Date[]>>;
112
+ defaultValue: PropTypes.Requireable<NonNullable<string | number | string[] | number[] | Date | 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[] | Date | number[] | Date[]>>;
9
+ declare const TimeShape: PropTypes.Requireable<NonNullable<string | number | string[] | number[] | Date | 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[] | Date | number[] | Date[]>>;
24
+ value: import("prop-types").Requireable<NonNullable<string | number | string[] | number[] | Date | 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[] | Date | number[] | Date[]>>;
28
+ defaultValue: import("prop-types").Requireable<NonNullable<string | number | string[] | number[] | Date | 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" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver" | "leftBottomOver" | "rightBottomOver">;
94
+ position: PropTypes.Requireable<"left" | "right" | "top" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "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>;
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ interface IndentProps {
3
+ prefixcls: string;
4
+ level: number;
5
+ isEnd: boolean[];
6
+ showLine: boolean;
7
+ }
8
+ declare const _default: React.MemoExoticComponent<({ prefixcls, level, isEnd, showLine }: IndentProps) => JSX.Element>;
9
+ export default _default;
@@ -0,0 +1,27 @@
1
+ import * as React from 'react';
2
+ import classNames from 'classnames';
3
+ const Indent = _ref => {
4
+ let {
5
+ prefixcls,
6
+ level,
7
+ isEnd,
8
+ showLine
9
+ } = _ref;
10
+ const baseClassName = `${prefixcls}-indent-unit`;
11
+ const list = [];
12
+ for (let i = 0; i < level; i += 1) {
13
+ list.push( /*#__PURE__*/React.createElement("span", {
14
+ key: i,
15
+ className: classNames(baseClassName, {
16
+ [`${baseClassName}-end`]: isEnd[i]
17
+ })
18
+ }));
19
+ }
20
+ return /*#__PURE__*/React.createElement("span", {
21
+ "aria-hidden": "true",
22
+ className: classNames(`${prefixcls}-indent`, {
23
+ [`${prefixcls}-indent-show-line`]: showLine
24
+ })
25
+ }, list);
26
+ };
27
+ export default /*#__PURE__*/React.memo(Indent);
@@ -39,6 +39,7 @@ declare class Tree extends BaseComponent<TreeProps, TreeState> {
39
39
  searchStyle: PropTypes.Requireable<object>;
40
40
  selectedKey: PropTypes.Requireable<string>;
41
41
  showFilteredOnly: PropTypes.Requireable<boolean>;
42
+ showLine: PropTypes.Requireable<boolean>;
42
43
  style: PropTypes.Requireable<object>;
43
44
  treeData: PropTypes.Requireable<PropTypes.InferProps<{
44
45
  key: PropTypes.Requireable<string>;
@@ -90,6 +91,7 @@ declare class Tree extends BaseComponent<TreeProps, TreeState> {
90
91
  motion: boolean;
91
92
  leafOnly: boolean;
92
93
  showFilteredOnly: boolean;
94
+ showLine: boolean;
93
95
  expandAction: boolean;
94
96
  disableStrictly: boolean;
95
97
  draggable: boolean;
@@ -153,12 +153,14 @@ class Tree extends BaseComponent {
153
153
  return null;
154
154
  }
155
155
  const {
156
- keyMaps
156
+ keyMaps,
157
+ showLine
157
158
  } = this.props;
158
- const props = _pick(treeNode, ['key', 'label', 'disabled', 'isLeaf', 'icon']);
159
+ const props = _pick(treeNode, ['key', 'label', 'disabled', 'isLeaf', 'icon', 'isEnd']);
159
160
  const children = data[_get(keyMaps, 'children', 'children')];
160
161
  !_isUndefined(children) && (props.children = children);
161
162
  return /*#__PURE__*/React.createElement(TreeNode, Object.assign({}, treeNodeProps, data, props, {
163
+ showLine: showLine,
162
164
  data: data,
163
165
  style: _isEmpty(style) ? {} : style
164
166
  }));
@@ -592,6 +594,7 @@ class Tree extends BaseComponent {
592
594
  directory,
593
595
  multiple,
594
596
  showFilteredOnly,
597
+ showLine,
595
598
  motion,
596
599
  expandAction,
597
600
  loadData,
@@ -602,7 +605,7 @@ class Tree extends BaseComponent {
602
605
  virtualize,
603
606
  checkRelation
604
607
  } = _a,
605
- rest = __rest(_a, ["blockNode", "className", "style", "filterTreeNode", "disabled", "icon", "directory", "multiple", "showFilteredOnly", "motion", "expandAction", "loadData", "renderLabel", "draggable", "renderFullLabel", "labelEllipsis", "virtualize", "checkRelation"]);
608
+ rest = __rest(_a, ["blockNode", "className", "style", "filterTreeNode", "disabled", "icon", "directory", "multiple", "showFilteredOnly", "showLine", "motion", "expandAction", "loadData", "renderLabel", "draggable", "renderFullLabel", "labelEllipsis", "virtualize", "checkRelation"]);
606
609
  const wrapperCls = cls(`${prefixcls}-wrapper`, className);
607
610
  const listCls = cls(`${prefixcls}-option-list`, {
608
611
  [`${prefixcls}-option-list-block`]: blockNode
@@ -691,6 +694,7 @@ Tree.propTypes = {
691
694
  searchStyle: PropTypes.object,
692
695
  selectedKey: PropTypes.string,
693
696
  showFilteredOnly: PropTypes.bool,
697
+ showLine: PropTypes.bool,
694
698
  style: PropTypes.object,
695
699
  treeData: PropTypes.arrayOf(PropTypes.shape({
696
700
  key: PropTypes.string,
@@ -742,6 +746,7 @@ Tree.defaultProps = {
742
746
  motion: true,
743
747
  leafOnly: false,
744
748
  showFilteredOnly: false,
749
+ showLine: false,
745
750
  expandAction: false,
746
751
  disableStrictly: false,
747
752
  draggable: false,
@@ -90,6 +90,7 @@ export interface TreeState extends BasicTreeInnerData {
90
90
  export interface TreeNodeProps extends BasicTreeNodeProps {
91
91
  children?: TreeNodeData[];
92
92
  icon?: ReactNode;
93
+ isEnd?: boolean[];
93
94
  }
94
95
  export interface TreeNodeState {
95
96
  [x: string]: any;
@@ -104,6 +105,7 @@ export interface FlattenNode extends BasicFlattenNode {
104
105
  data?: BasicTreeNodeData;
105
106
  label?: ReactNode;
106
107
  parent?: null | FlattenNode;
108
+ isEnd?: boolean[];
107
109
  }
108
110
  export interface NodeListProps {
109
111
  [x: string]: any;
@@ -22,6 +22,8 @@ export default class TreeNode extends PureComponent<TreeNodeProps, TreeNodeState
22
22
  treeNodeFilterProp: PropTypes.Requireable<string>;
23
23
  selectedKey: PropTypes.Requireable<string>;
24
24
  motionKey: PropTypes.Requireable<NonNullable<string | string[]>>;
25
+ isEnd: PropTypes.Requireable<boolean[]>;
26
+ showLine: PropTypes.Requireable<boolean>;
25
27
  };
26
28
  static defaultProps: {
27
29
  selectedKey: string;
@@ -56,6 +58,7 @@ export default class TreeNode extends PureComponent<TreeNodeProps, TreeNodeState
56
58
  isDisabled: () => boolean;
57
59
  renderArrow(): JSX.Element;
58
60
  renderCheckbox(): JSX.Element;
61
+ renderSwitcher: () => JSX.Element;
59
62
  renderIcon(): any;
60
63
  renderEmptyNode(): JSX.Element;
61
64
  renderRealLabel: () => any;
@@ -21,6 +21,7 @@ import { Checkbox } from '../checkbox';
21
21
  import TreeContext from './treeContext';
22
22
  import Spin from '../spin';
23
23
  import { getHighLightTextHTML } from '../_utils/index';
24
+ import Indent from './indent';
24
25
  const prefixcls = cssClasses.PREFIX_OPTION;
25
26
  export default class TreeNode extends PureComponent {
26
27
  constructor(props) {
@@ -195,6 +196,18 @@ export default class TreeNode extends PureComponent {
195
196
  }
196
197
  return Boolean(treeDisabled || disabled);
197
198
  };
199
+ // Switcher
200
+ this.renderSwitcher = () => {
201
+ if (this.isLeaf()) {
202
+ // if switcherIconDom is null, no render switcher span
203
+ return /*#__PURE__*/React.createElement("span", {
204
+ className: cls(`${prefixcls}-switcher`)
205
+ }, /*#__PURE__*/React.createElement("span", {
206
+ className: `${prefixcls}-switcher-leaf-line`
207
+ }));
208
+ }
209
+ return null;
210
+ };
198
211
  this.renderRealLabel = () => {
199
212
  const {
200
213
  renderLabel
@@ -234,7 +247,8 @@ export default class TreeNode extends PureComponent {
234
247
  const showIcon = !this.isLeaf();
235
248
  const {
236
249
  loading,
237
- expanded
250
+ expanded,
251
+ showLine
238
252
  } = this.props;
239
253
  if (loading) {
240
254
  return /*#__PURE__*/React.createElement(Spin, {
@@ -250,6 +264,9 @@ export default class TreeNode extends PureComponent {
250
264
  onClick: this.onExpand
251
265
  });
252
266
  }
267
+ if (showLine) {
268
+ return this.renderSwitcher();
269
+ }
253
270
  return /*#__PURE__*/React.createElement("span", {
254
271
  className: `${prefixcls}-empty-icon`
255
272
  });
@@ -333,9 +350,11 @@ export default class TreeNode extends PureComponent {
333
350
  filtered,
334
351
  treeNodeFilterProp,
335
352
  display,
336
- style
353
+ style,
354
+ isEnd,
355
+ showLine
337
356
  } = _a,
338
- rest = __rest(_a, ["eventKey", "expanded", "selected", "checked", "halfChecked", "loading", "active", "level", "empty", "filtered", "treeNodeFilterProp", "display", "style"]);
357
+ rest = __rest(_a, ["eventKey", "expanded", "selected", "checked", "halfChecked", "loading", "active", "level", "empty", "filtered", "treeNodeFilterProp", "display", "style", "isEnd", "showLine"]);
339
358
  if (empty) {
340
359
  return this.renderEmptyNode();
341
360
  }
@@ -347,6 +366,7 @@ export default class TreeNode extends PureComponent {
347
366
  dropPosition,
348
367
  labelEllipsis
349
368
  } = this.context;
369
+ const isEndNode = isEnd[isEnd.length - 1];
350
370
  const disabled = this.isDisabled();
351
371
  const dragOver = dragOverNodeKey === eventKey && dropPosition === 0;
352
372
  const dragOverGapTop = dragOverNodeKey === eventKey && dropPosition === -1;
@@ -364,7 +384,8 @@ export default class TreeNode extends PureComponent {
364
384
  [`${prefixcls}-fullLabel-draggable`]: !disabled && draggable && renderFullLabel,
365
385
  // When draggable + renderFullLabel is turned on, the style of dragover
366
386
  [`${prefixcls}-fullLabel-drag-over-gap-top`]: !disabled && dragOverGapTop && renderFullLabel,
367
- [`${prefixcls}-fullLabel-drag-over-gap-bottom`]: !disabled && dragOverGapBottom && renderFullLabel
387
+ [`${prefixcls}-fullLabel-drag-over-gap-bottom`]: !disabled && dragOverGapBottom && renderFullLabel,
388
+ [`${prefixcls}-tree-node-last-leaf`]: isEndNode
368
389
  });
369
390
  const labelProps = {
370
391
  onClick: this.onClick,
@@ -440,7 +461,12 @@ export default class TreeNode extends PureComponent {
440
461
  onDoubleClick: this.onDoubleClick,
441
462
  ref: this.setRef,
442
463
  style: style
443
- }, dragProps), this.renderArrow(), /*#__PURE__*/React.createElement("span", {
464
+ }, dragProps), /*#__PURE__*/React.createElement(Indent, {
465
+ showLine: showLine,
466
+ prefixcls: prefixcls,
467
+ level: level,
468
+ isEnd: isEnd
469
+ }), this.renderArrow(), /*#__PURE__*/React.createElement("span", {
444
470
  className: labelCls
445
471
  }, multiple ? this.renderCheckbox() : null, this.renderIcon(), /*#__PURE__*/React.createElement("span", {
446
472
  className: `${prefixcls}-label-text`
@@ -465,7 +491,9 @@ TreeNode.propTypes = {
465
491
  keyword: PropTypes.string,
466
492
  treeNodeFilterProp: PropTypes.string,
467
493
  selectedKey: PropTypes.string,
468
- motionKey: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
494
+ motionKey: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
495
+ isEnd: PropTypes.arrayOf(PropTypes.bool),
496
+ showLine: PropTypes.bool
469
497
  };
470
498
  TreeNode.defaultProps = {
471
499
  selectedKey: '',
@@ -29,7 +29,7 @@ export type RenderSelectedItemInMultiple = (treeNode: TreeNodeData, otherProps:
29
29
  content: React.ReactNode;
30
30
  };
31
31
  export type RenderSelectedItem = RenderSelectedItemInSingle | RenderSelectedItemInMultiple;
32
- export type OverrideCommonProps = 'renderFullLabel' | 'renderLabel' | 'defaultValue' | 'emptyContent' | 'filterTreeNode' | 'style' | 'treeData' | 'value' | 'onExpand' | 'keyMaps';
32
+ export type OverrideCommonProps = 'renderFullLabel' | 'renderLabel' | 'defaultValue' | 'emptyContent' | 'filterTreeNode' | 'style' | 'treeData' | 'value' | 'onExpand' | 'keyMaps' | 'showLine';
33
33
  /**
34
34
  * Type definition description:
35
35
  * TreeSelectProps inherits some properties from BasicTreeSelectProps (from foundation) and TreeProps (from semi-ui-react).
@@ -77,7 +77,7 @@ export interface TreeSelectProps extends Omit<BasicTreeSelectProps, OverrideComm
77
77
  onSelect?: (selectedKey: string, selected: boolean, selectedNode: TreeNodeData) => void;
78
78
  renderSelectedItem?: RenderSelectedItem;
79
79
  getPopupContainer?: () => HTMLElement;
80
- triggerRender?: (props?: TriggerRenderProps) => React.ReactNode;
80
+ triggerRender?: (props: TriggerRenderProps) => React.ReactNode;
81
81
  onBlur?: (e: React.MouseEvent) => void;
82
82
  onChange?: OnChange;
83
83
  onFocus?: (e: React.MouseEvent) => void;
@@ -134,6 +134,7 @@ declare class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState>
134
134
  showSearchClear: PropTypes.Requireable<boolean>;
135
135
  autoAdjustOverflow: PropTypes.Requireable<boolean>;
136
136
  showFilteredOnly: PropTypes.Requireable<boolean>;
137
+ showLine: PropTypes.Requireable<boolean>;
137
138
  motionExpand: PropTypes.Requireable<boolean>;
138
139
  emptyContent: PropTypes.Requireable<PropTypes.ReactNodeLike>;
139
140
  keyMaps: PropTypes.Requireable<object>;
@@ -190,7 +191,6 @@ declare class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState>
190
191
  triggerRef: React.RefObject<HTMLDivElement>;
191
192
  optionsRef: React.RefObject<any>;
192
193
  clickOutsideHandler: any;
193
- _flattenNodes: TreeState['flattenNodes'];
194
194
  onNodeClick: any;
195
195
  onNodeDoubleClick: any;
196
196
  onMotionEnd: any;
@@ -247,6 +247,7 @@ declare class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState>
247
247
  };
248
248
  getTreeNodeKey: (treeNode: TreeNodeData) => string;
249
249
  handlePopoverClose: (isVisible: any) => void;
250
+ afterClose: () => void;
250
251
  renderTreeNode: (treeNode: FlattenNode, ind: number, style: React.CSSProperties) => JSX.Element;
251
252
  itemKey: (index: number, data: Record<string, any>) => any;
252
253
  renderNodeList: () => JSX.Element;