@douyinfe/semi-ui 2.49.1 → 2.50.0-alpha.1

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 (61) hide show
  1. package/dist/css/semi.css +74 -161
  2. package/dist/css/semi.min.css +1 -1
  3. package/dist/umd/semi-ui.js +465 -389
  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/image/interface.d.ts +3 -3
  8. package/lib/cjs/image/previewFooter.js +8 -5
  9. package/lib/cjs/image/previewHeader.d.ts +2 -2
  10. package/lib/cjs/image/previewHeader.js +8 -9
  11. package/lib/cjs/image/previewImage.d.ts +12 -1
  12. package/lib/cjs/image/previewImage.js +83 -23
  13. package/lib/cjs/image/previewInner.d.ts +2 -11
  14. package/lib/cjs/image/previewInner.js +42 -60
  15. package/lib/cjs/index.d.ts +0 -2
  16. package/lib/cjs/index.js +0 -14
  17. package/lib/cjs/modal/confirm.d.ts +6 -6
  18. package/lib/cjs/notification/index.d.ts +8 -8
  19. package/lib/cjs/notification/notice.d.ts +1 -1
  20. package/lib/cjs/notification/notice.js +1 -1
  21. package/lib/cjs/table/ColumnSorter.d.ts +3 -1
  22. package/lib/cjs/table/ColumnSorter.js +26 -15
  23. package/lib/cjs/table/Table.js +1 -0
  24. package/lib/cjs/table/interface.d.ts +4 -0
  25. package/lib/cjs/tree/indent.d.ts +9 -0
  26. package/lib/cjs/tree/indent.js +37 -0
  27. package/lib/cjs/tree/index.d.ts +2 -0
  28. package/lib/cjs/tree/index.js +8 -3
  29. package/lib/cjs/tree/interface.d.ts +2 -0
  30. package/lib/cjs/tree/treeNode.d.ts +3 -0
  31. package/lib/cjs/tree/treeNode.js +34 -6
  32. package/lib/cjs/treeSelect/index.d.ts +2 -1
  33. package/lib/cjs/treeSelect/index.js +7 -2
  34. package/lib/es/image/interface.d.ts +3 -3
  35. package/lib/es/image/previewFooter.js +8 -5
  36. package/lib/es/image/previewHeader.d.ts +2 -2
  37. package/lib/es/image/previewHeader.js +3 -4
  38. package/lib/es/image/previewImage.d.ts +12 -1
  39. package/lib/es/image/previewImage.js +83 -23
  40. package/lib/es/image/previewInner.d.ts +2 -11
  41. package/lib/es/image/previewInner.js +42 -60
  42. package/lib/es/index.d.ts +0 -2
  43. package/lib/es/index.js +0 -2
  44. package/lib/es/modal/confirm.d.ts +6 -6
  45. package/lib/es/notification/index.d.ts +8 -8
  46. package/lib/es/notification/notice.d.ts +1 -1
  47. package/lib/es/notification/notice.js +1 -1
  48. package/lib/es/table/ColumnSorter.d.ts +3 -1
  49. package/lib/es/table/ColumnSorter.js +26 -15
  50. package/lib/es/table/Table.js +1 -0
  51. package/lib/es/table/interface.d.ts +4 -0
  52. package/lib/es/tree/indent.d.ts +9 -0
  53. package/lib/es/tree/indent.js +27 -0
  54. package/lib/es/tree/index.d.ts +2 -0
  55. package/lib/es/tree/index.js +8 -3
  56. package/lib/es/tree/interface.d.ts +2 -0
  57. package/lib/es/tree/treeNode.d.ts +3 -0
  58. package/lib/es/tree/treeNode.js +34 -6
  59. package/lib/es/treeSelect/index.d.ts +2 -1
  60. package/lib/es/treeSelect/index.js +7 -2
  61. package/package.json +8 -8
@@ -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).
@@ -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>;
@@ -693,10 +693,13 @@ class TreeSelect extends BaseComponent {
693
693
  key
694
694
  } = treeNode;
695
695
  const treeNodeProps = this.foundation.getTreeNodeProps(key);
696
+ const {
697
+ showLine
698
+ } = this.props;
696
699
  if (!treeNodeProps) {
697
700
  return null;
698
701
  }
699
- const props = _pick(treeNode, ['key', 'label', 'disabled', 'isLeaf', 'icon']);
702
+ const props = _pick(treeNode, ['key', 'label', 'disabled', 'isLeaf', 'icon', 'isEnd']);
700
703
  const {
701
704
  keyMaps
702
705
  } = this.props;
@@ -704,7 +707,8 @@ class TreeSelect extends BaseComponent {
704
707
  !_isUndefined(children) && (props.children = children);
705
708
  return /*#__PURE__*/React.createElement(TreeNode, Object.assign({}, treeNodeProps, data, props, {
706
709
  data: data,
707
- style: style
710
+ style: style,
711
+ showLine: showLine
708
712
  }));
709
713
  };
710
714
  this.itemKey = (index, data) => {
@@ -1238,6 +1242,7 @@ TreeSelect.propTypes = {
1238
1242
  showSearchClear: PropTypes.bool,
1239
1243
  autoAdjustOverflow: PropTypes.bool,
1240
1244
  showFilteredOnly: PropTypes.bool,
1245
+ showLine: PropTypes.bool,
1241
1246
  motionExpand: PropTypes.bool,
1242
1247
  emptyContent: PropTypes.node,
1243
1248
  keyMaps: PropTypes.object,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@douyinfe/semi-ui",
3
- "version": "2.49.1",
3
+ "version": "2.50.0-alpha.1",
4
4
  "description": "A modern, comprehensive, flexible design system and UI library. Connect DesignOps & DevOps. Quickly build beautiful React apps. Maintained by Douyin-fe team.",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es/index.js",
@@ -20,12 +20,12 @@
20
20
  "@dnd-kit/core": "^6.0.8",
21
21
  "@dnd-kit/sortable": "^7.0.2",
22
22
  "@dnd-kit/utilities": "^3.2.1",
23
- "@douyinfe/semi-animation": "2.49.1",
24
- "@douyinfe/semi-animation-react": "2.49.1",
25
- "@douyinfe/semi-foundation": "2.49.1",
26
- "@douyinfe/semi-icons": "2.49.1",
27
- "@douyinfe/semi-illustrations": "2.49.1",
28
- "@douyinfe/semi-theme-default": "2.49.1",
23
+ "@douyinfe/semi-animation": "2.50.0-alpha.1",
24
+ "@douyinfe/semi-animation-react": "2.50.0-alpha.1",
25
+ "@douyinfe/semi-foundation": "2.50.0-alpha.1",
26
+ "@douyinfe/semi-icons": "2.50.0-alpha.1",
27
+ "@douyinfe/semi-illustrations": "2.50.0-alpha.1",
28
+ "@douyinfe/semi-theme-default": "2.50.0-alpha.1",
29
29
  "async-validator": "^3.5.0",
30
30
  "classnames": "^2.2.6",
31
31
  "copy-text-to-clipboard": "^2.1.1",
@@ -75,7 +75,7 @@
75
75
  ],
76
76
  "author": "",
77
77
  "license": "MIT",
78
- "gitHead": "5a1affe04071d02da9ef9dd990bb19c5d39d0462",
78
+ "gitHead": "72a7047b76f30f4a2aa8d82a7a75c0841c2c0d08",
79
79
  "devDependencies": {
80
80
  "@babel/plugin-proposal-decorators": "^7.15.8",
81
81
  "@babel/plugin-transform-runtime": "^7.15.8",