@douyinfe/semi-ui 2.54.0-beta.0 → 2.54.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.
@@ -284,8 +284,8 @@ class Avatar extends _baseComponent.default {
284
284
  }
285
285
  }
286
286
  render() {
287
- var _a, _b;
288
- const _c = this.props,
287
+ var _a;
288
+ const _b = this.props,
289
289
  {
290
290
  shape,
291
291
  children,
@@ -304,8 +304,8 @@ class Avatar extends _baseComponent.default {
304
304
  topSlot,
305
305
  border,
306
306
  contentMotion
307
- } = _c,
308
- others = __rest(_c, ["shape", "children", "size", "color", "className", "hoverMask", "onClick", "imgAttr", "src", "srcSet", "style", "alt", "gap", "bottomSlot", "topSlot", "border", "contentMotion"]);
307
+ } = _b,
308
+ others = __rest(_b, ["shape", "children", "size", "color", "className", "hoverMask", "onClick", "imgAttr", "src", "srcSet", "style", "alt", "gap", "bottomSlot", "topSlot", "border", "contentMotion"]);
309
309
  const {
310
310
  isImgExist,
311
311
  hoverContent,
@@ -335,8 +335,8 @@ class Avatar extends _baseComponent.default {
335
335
  }), this.getContent(), hoverRender);
336
336
  if (border) {
337
337
  const borderStyle = {};
338
- if (border === null || border === void 0 ? void 0 : border.color) {
339
- borderStyle['borderColor'] = border.color;
338
+ if (typeof border === 'object' && (border === null || border === void 0 ? void 0 : border.color)) {
339
+ borderStyle['borderColor'] = border === null || border === void 0 ? void 0 : border.color;
340
340
  }
341
341
  avatar = /*#__PURE__*/_react.default.createElement("div", {
342
342
  style: Object.assign({
@@ -347,11 +347,11 @@ class Avatar extends _baseComponent.default {
347
347
  className: (0, _classnames.default)([`${prefixCls}-additionalBorder`, `${prefixCls}-additionalBorder-${size}`, {
348
348
  [`${prefixCls}-${shape}`]: shape
349
349
  }])
350
- }), ((_a = this.props.border) === null || _a === void 0 ? void 0 : _a.motion) && /*#__PURE__*/_react.default.createElement("span", {
350
+ }), typeof this.props.border === 'object' && this.props.border.motion && /*#__PURE__*/_react.default.createElement("span", {
351
351
  style: borderStyle,
352
352
  className: (0, _classnames.default)([`${prefixCls}-additionalBorder`, `${prefixCls}-additionalBorder-${size}`, {
353
353
  [`${prefixCls}-${shape}`]: shape,
354
- [`${prefixCls}-additionalBorder-animated`]: (_b = this.props.border) === null || _b === void 0 ? void 0 : _b.motion
354
+ [`${prefixCls}-additionalBorder-animated`]: typeof this.props.border === 'object' && ((_a = this.props.border) === null || _a === void 0 ? void 0 : _a.motion)
355
355
  }])
356
356
  }));
357
357
  }
@@ -39,7 +39,7 @@ export interface AvatarProps extends BaseProps {
39
39
  border?: {
40
40
  color?: string;
41
41
  motion?: boolean;
42
- } & boolean;
42
+ } | boolean;
43
43
  contentMotion?: boolean;
44
44
  }
45
45
  export type AvatarGroupShape = 'circle' | 'square';
@@ -125,7 +125,7 @@ declare class Nav extends BaseComponent<NavProps, NavState> {
125
125
  constructor(props: NavProps);
126
126
  static getDerivedStateFromProps(props: NavProps, state: NavState): Partial<NavState>;
127
127
  componentDidMount(): void;
128
- componentDidUpdate(prevProps: NavProps, prevState: NavState): void;
128
+ componentDidUpdate(prevProps: NavProps): void;
129
129
  get adapter(): NavigationAdapter<NavProps, NavState>;
130
130
  /**
131
131
  * Render navigation items recursively
@@ -97,24 +97,19 @@ class Nav extends _baseComponent.default {
97
97
  componentDidMount() {
98
98
  // override BaseComponent
99
99
  }
100
- componentDidUpdate(prevProps, prevState) {
100
+ componentDidUpdate(prevProps) {
101
101
  if (prevProps.items !== this.props.items || prevProps.children !== this.props.children) {
102
102
  this.foundation.init();
103
103
  } else {
104
104
  this.foundation.handleItemsChange(false);
105
- const {
106
- selectedKeys
107
- } = this.state;
108
105
  if (this.props.selectedKeys && !(0, _isEqual2.default)(prevProps.selectedKeys, this.props.selectedKeys)) {
109
106
  this.adapter.updateSelectedKeys(this.props.selectedKeys);
107
+ const willOpenKeys = this.foundation.getWillOpenKeys(this.state.itemKeysMap);
108
+ this.adapter.updateOpenKeys(willOpenKeys);
110
109
  }
111
110
  if (this.props.openKeys && !(0, _isEqual2.default)(prevProps.openKeys, this.props.openKeys)) {
112
111
  this.adapter.updateOpenKeys(this.props.openKeys);
113
112
  }
114
- if (!(0, _isEqual2.default)(selectedKeys, prevState.selectedKeys)) {
115
- const parentSelectKeys = this.foundation.selectLevelZeroParentKeys(null, ...selectedKeys);
116
- this.adapter.addSelectedKeys(...parentSelectKeys);
117
- }
118
113
  }
119
114
  }
120
115
  get adapter() {
@@ -140,9 +135,20 @@ class Nav extends _baseComponent.default {
140
135
  }),
141
136
  addSelectedKeys: createAddKeysFn(this, 'selectedKeys'),
142
137
  removeSelectedKeys: createRemoveKeysFn(this, 'selectedKeys'),
143
- updateSelectedKeys: selectedKeys => this.setState({
144
- selectedKeys: [...selectedKeys]
145
- }),
138
+ /**
139
+ * when `includeParentKeys` is `true`, select a nested nav item will select parent nav sub
140
+ */
141
+ updateSelectedKeys: function (selectedKeys) {
142
+ let includeParentKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
143
+ let willUpdateSelectedKeys = selectedKeys;
144
+ if (includeParentKeys) {
145
+ const parentSelectKeys = _this.foundation.selectLevelZeroParentKeys(null, selectedKeys);
146
+ willUpdateSelectedKeys = Array.from(new Set(selectedKeys.concat(parentSelectKeys)));
147
+ }
148
+ _this.setState({
149
+ selectedKeys: willUpdateSelectedKeys
150
+ });
151
+ },
146
152
  updateOpenKeys: openKeys => this.setState({
147
153
  openKeys: [...openKeys]
148
154
  }),
@@ -147,7 +147,9 @@ class Base extends _react.Component {
147
147
  expandable,
148
148
  expandText
149
149
  } = this.getEllipsisOpt();
150
- const overflowed = !expanded && (isOverflowed || isTruncated);
150
+ const canUseCSSEllipsis = this.canUseCSSEllipsis();
151
+ // If the css is truncated, use isOverflowed to judge. If the css is truncated, use isTruncated to judge.
152
+ const overflowed = !expanded && (canUseCSSEllipsis ? isOverflowed : isTruncated);
151
153
  const noExpandText = !expandable && (0, _isUndefined2.default)(expandText);
152
154
  const show = noExpandText && overflowed && showTooltip;
153
155
  if (!show) {
@@ -457,7 +459,7 @@ class Base extends _react.Component {
457
459
  newState.isOverflowed = false;
458
460
  newState.ellipsisContent = props.children;
459
461
  newState.expanded = false;
460
- newState.isTruncated = false;
462
+ newState.isTruncated = true;
461
463
  }
462
464
  return newState;
463
465
  }
@@ -6,9 +6,9 @@ import BaseComponent from '../_base/baseComponent';
6
6
  import type { FileItem, RenderFileItemProps, UploadListType, PromptPositionType, BeforeUploadProps, AfterUploadProps, OnChangeProps, customRequestArgs, CustomError } from './interface';
7
7
  import { Locale } from '../locale/interface';
8
8
  import '@douyinfe/semi-foundation/lib/cjs/upload/upload.css';
9
- import type { CustomFile, UploadAdapter, BeforeUploadObjectResult, AfterUploadResult } from '@douyinfe/semi-foundation/lib/cjs/upload/foundation';
9
+ import type { CustomFile, UploadAdapter, BeforeUploadObjectResult, AfterUploadResult, FileItemStatus } from '@douyinfe/semi-foundation/lib/cjs/upload/foundation';
10
10
  import type { ValidateStatus } from '../_base/baseComponent';
11
- export type { FileItem, RenderFileItemProps, UploadListType, PromptPositionType, BeforeUploadProps, AfterUploadProps, OnChangeProps, customRequestArgs, CustomError, BeforeUploadObjectResult, AfterUploadResult, };
11
+ export type { FileItem, FileItemStatus, RenderFileItemProps, UploadListType, PromptPositionType, BeforeUploadProps, AfterUploadProps, OnChangeProps, customRequestArgs, CustomError, BeforeUploadObjectResult, AfterUploadResult, };
12
12
  export interface UploadProps {
13
13
  accept?: string;
14
14
  action: string;
@@ -265,8 +265,8 @@ export default class Avatar extends BaseComponent {
265
265
  }
266
266
  }
267
267
  render() {
268
- var _a, _b;
269
- const _c = this.props,
268
+ var _a;
269
+ const _b = this.props,
270
270
  {
271
271
  shape,
272
272
  children,
@@ -285,8 +285,8 @@ export default class Avatar extends BaseComponent {
285
285
  topSlot,
286
286
  border,
287
287
  contentMotion
288
- } = _c,
289
- others = __rest(_c, ["shape", "children", "size", "color", "className", "hoverMask", "onClick", "imgAttr", "src", "srcSet", "style", "alt", "gap", "bottomSlot", "topSlot", "border", "contentMotion"]);
288
+ } = _b,
289
+ others = __rest(_b, ["shape", "children", "size", "color", "className", "hoverMask", "onClick", "imgAttr", "src", "srcSet", "style", "alt", "gap", "bottomSlot", "topSlot", "border", "contentMotion"]);
290
290
  const {
291
291
  isImgExist,
292
292
  hoverContent,
@@ -316,8 +316,8 @@ export default class Avatar extends BaseComponent {
316
316
  }), this.getContent(), hoverRender);
317
317
  if (border) {
318
318
  const borderStyle = {};
319
- if (border === null || border === void 0 ? void 0 : border.color) {
320
- borderStyle['borderColor'] = border.color;
319
+ if (typeof border === 'object' && (border === null || border === void 0 ? void 0 : border.color)) {
320
+ borderStyle['borderColor'] = border === null || border === void 0 ? void 0 : border.color;
321
321
  }
322
322
  avatar = /*#__PURE__*/React.createElement("div", {
323
323
  style: Object.assign({
@@ -328,11 +328,11 @@ export default class Avatar extends BaseComponent {
328
328
  className: cls([`${prefixCls}-additionalBorder`, `${prefixCls}-additionalBorder-${size}`, {
329
329
  [`${prefixCls}-${shape}`]: shape
330
330
  }])
331
- }), ((_a = this.props.border) === null || _a === void 0 ? void 0 : _a.motion) && /*#__PURE__*/React.createElement("span", {
331
+ }), typeof this.props.border === 'object' && this.props.border.motion && /*#__PURE__*/React.createElement("span", {
332
332
  style: borderStyle,
333
333
  className: cls([`${prefixCls}-additionalBorder`, `${prefixCls}-additionalBorder-${size}`, {
334
334
  [`${prefixCls}-${shape}`]: shape,
335
- [`${prefixCls}-additionalBorder-animated`]: (_b = this.props.border) === null || _b === void 0 ? void 0 : _b.motion
335
+ [`${prefixCls}-additionalBorder-animated`]: typeof this.props.border === 'object' && ((_a = this.props.border) === null || _a === void 0 ? void 0 : _a.motion)
336
336
  }])
337
337
  }));
338
338
  }
@@ -39,7 +39,7 @@ export interface AvatarProps extends BaseProps {
39
39
  border?: {
40
40
  color?: string;
41
41
  motion?: boolean;
42
- } & boolean;
42
+ } | boolean;
43
43
  contentMotion?: boolean;
44
44
  }
45
45
  export type AvatarGroupShape = 'circle' | 'square';
@@ -125,7 +125,7 @@ declare class Nav extends BaseComponent<NavProps, NavState> {
125
125
  constructor(props: NavProps);
126
126
  static getDerivedStateFromProps(props: NavProps, state: NavState): Partial<NavState>;
127
127
  componentDidMount(): void;
128
- componentDidUpdate(prevProps: NavProps, prevState: NavState): void;
128
+ componentDidUpdate(prevProps: NavProps): void;
129
129
  get adapter(): NavigationAdapter<NavProps, NavState>;
130
130
  /**
131
131
  * Render navigation items recursively
@@ -88,24 +88,19 @@ class Nav extends BaseComponent {
88
88
  componentDidMount() {
89
89
  // override BaseComponent
90
90
  }
91
- componentDidUpdate(prevProps, prevState) {
91
+ componentDidUpdate(prevProps) {
92
92
  if (prevProps.items !== this.props.items || prevProps.children !== this.props.children) {
93
93
  this.foundation.init();
94
94
  } else {
95
95
  this.foundation.handleItemsChange(false);
96
- const {
97
- selectedKeys
98
- } = this.state;
99
96
  if (this.props.selectedKeys && !_isEqual(prevProps.selectedKeys, this.props.selectedKeys)) {
100
97
  this.adapter.updateSelectedKeys(this.props.selectedKeys);
98
+ const willOpenKeys = this.foundation.getWillOpenKeys(this.state.itemKeysMap);
99
+ this.adapter.updateOpenKeys(willOpenKeys);
101
100
  }
102
101
  if (this.props.openKeys && !_isEqual(prevProps.openKeys, this.props.openKeys)) {
103
102
  this.adapter.updateOpenKeys(this.props.openKeys);
104
103
  }
105
- if (!_isEqual(selectedKeys, prevState.selectedKeys)) {
106
- const parentSelectKeys = this.foundation.selectLevelZeroParentKeys(null, ...selectedKeys);
107
- this.adapter.addSelectedKeys(...parentSelectKeys);
108
- }
109
104
  }
110
105
  }
111
106
  get adapter() {
@@ -131,9 +126,20 @@ class Nav extends BaseComponent {
131
126
  }),
132
127
  addSelectedKeys: createAddKeysFn(this, 'selectedKeys'),
133
128
  removeSelectedKeys: createRemoveKeysFn(this, 'selectedKeys'),
134
- updateSelectedKeys: selectedKeys => this.setState({
135
- selectedKeys: [...selectedKeys]
136
- }),
129
+ /**
130
+ * when `includeParentKeys` is `true`, select a nested nav item will select parent nav sub
131
+ */
132
+ updateSelectedKeys: function (selectedKeys) {
133
+ let includeParentKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
134
+ let willUpdateSelectedKeys = selectedKeys;
135
+ if (includeParentKeys) {
136
+ const parentSelectKeys = _this.foundation.selectLevelZeroParentKeys(null, selectedKeys);
137
+ willUpdateSelectedKeys = Array.from(new Set(selectedKeys.concat(parentSelectKeys)));
138
+ }
139
+ _this.setState({
140
+ selectedKeys: willUpdateSelectedKeys
141
+ });
142
+ },
137
143
  updateOpenKeys: openKeys => this.setState({
138
144
  openKeys: [...openKeys]
139
145
  }),
@@ -138,7 +138,9 @@ export default class Base extends Component {
138
138
  expandable,
139
139
  expandText
140
140
  } = this.getEllipsisOpt();
141
- const overflowed = !expanded && (isOverflowed || isTruncated);
141
+ const canUseCSSEllipsis = this.canUseCSSEllipsis();
142
+ // If the css is truncated, use isOverflowed to judge. If the css is truncated, use isTruncated to judge.
143
+ const overflowed = !expanded && (canUseCSSEllipsis ? isOverflowed : isTruncated);
142
144
  const noExpandText = !expandable && _isUndefined(expandText);
143
145
  const show = noExpandText && overflowed && showTooltip;
144
146
  if (!show) {
@@ -448,7 +450,7 @@ export default class Base extends Component {
448
450
  newState.isOverflowed = false;
449
451
  newState.ellipsisContent = props.children;
450
452
  newState.expanded = false;
451
- newState.isTruncated = false;
453
+ newState.isTruncated = true;
452
454
  }
453
455
  return newState;
454
456
  }
@@ -6,9 +6,9 @@ import BaseComponent from '../_base/baseComponent';
6
6
  import type { FileItem, RenderFileItemProps, UploadListType, PromptPositionType, BeforeUploadProps, AfterUploadProps, OnChangeProps, customRequestArgs, CustomError } from './interface';
7
7
  import { Locale } from '../locale/interface';
8
8
  import '@douyinfe/semi-foundation/lib/es/upload/upload.css';
9
- import type { CustomFile, UploadAdapter, BeforeUploadObjectResult, AfterUploadResult } from '@douyinfe/semi-foundation/lib/es/upload/foundation';
9
+ import type { CustomFile, UploadAdapter, BeforeUploadObjectResult, AfterUploadResult, FileItemStatus } from '@douyinfe/semi-foundation/lib/es/upload/foundation';
10
10
  import type { ValidateStatus } from '../_base/baseComponent';
11
- export type { FileItem, RenderFileItemProps, UploadListType, PromptPositionType, BeforeUploadProps, AfterUploadProps, OnChangeProps, customRequestArgs, CustomError, BeforeUploadObjectResult, AfterUploadResult, };
11
+ export type { FileItem, FileItemStatus, RenderFileItemProps, UploadListType, PromptPositionType, BeforeUploadProps, AfterUploadProps, OnChangeProps, customRequestArgs, CustomError, BeforeUploadObjectResult, AfterUploadResult, };
12
12
  export interface UploadProps {
13
13
  accept?: string;
14
14
  action: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@douyinfe/semi-ui",
3
- "version": "2.54.0-beta.0",
3
+ "version": "2.54.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.54.0-beta.0",
24
- "@douyinfe/semi-animation-react": "2.54.0-beta.0",
25
- "@douyinfe/semi-foundation": "2.54.0-beta.0",
26
- "@douyinfe/semi-icons": "2.54.0-beta.0",
27
- "@douyinfe/semi-illustrations": "2.54.0-beta.0",
28
- "@douyinfe/semi-theme-default": "2.54.0-beta.0",
23
+ "@douyinfe/semi-animation": "2.54.1",
24
+ "@douyinfe/semi-animation-react": "2.54.1",
25
+ "@douyinfe/semi-foundation": "2.54.1",
26
+ "@douyinfe/semi-icons": "2.54.1",
27
+ "@douyinfe/semi-illustrations": "2.54.1",
28
+ "@douyinfe/semi-theme-default": "2.54.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": "b661fb2006bd11849e02af7f8e1b412c59b94781",
78
+ "gitHead": "29a9d7e115640dd1e9d8559609d9e4ee44dcfd12",
79
79
  "devDependencies": {
80
80
  "@babel/plugin-proposal-decorators": "^7.15.8",
81
81
  "@babel/plugin-transform-runtime": "^7.15.8",