Jelajahi Sumber

Merge branch 'main' into release

pointhalo 2 tahun lalu
induk
melakukan
16ab53ae94
100 mengubah file dengan 176 tambahan dan 234 penghapusan
  1. 25 3
      .eslintrc.js
  2. 0 19
      .github/workflows/codeball.yml
  3. 1 0
      content/show/dropdown/index-en-US.md
  4. 1 0
      content/show/dropdown/index.md
  5. 1 1
      content/show/popover/index-en-US.md
  6. 1 1
      content/show/popover/index.md
  7. 21 3
      content/start/changelog/index-en-US.md
  8. 24 2
      content/start/changelog/index.md
  9. 1 1
      lerna.json
  10. 0 1
      packages/semi-animation-react/_story/auto/index.jsx
  11. 3 3
      packages/semi-animation-react/package.json
  12. 0 3
      packages/semi-animation-react/src/Animation.tsx
  13. 0 1
      packages/semi-animation-react/src/KeyFrames.tsx
  14. 0 5
      packages/semi-animation-react/src/StyledAnimation.tsx
  15. 0 1
      packages/semi-animation-react/src/StyledTransition.tsx
  16. 0 2
      packages/semi-animation-react/src/Transition.tsx
  17. 0 1
      packages/semi-animation-react/src/utils/noop.ts
  18. 0 3
      packages/semi-animation-react/src/utils/string.ts
  19. 1 1
      packages/semi-animation-styled/package.json
  20. 1 1
      packages/semi-animation/package.json
  21. 0 3
      packages/semi-animation/src/Animation.ts
  22. 0 1
      packages/semi-animation/src/getEasing.ts
  23. 0 1
      packages/semi-animation/src/interpolate.ts
  24. 0 1
      packages/semi-animation/src/shouldStopAnimation.ts
  25. 0 1
      packages/semi-animation/src/stepper.ts
  26. 0 1
      packages/semi-animation/src/stripStyle.ts
  27. 0 2
      packages/semi-animation/src/utils/Event.ts
  28. 0 1
      packages/semi-animation/src/utils/noop.ts
  29. 0 1
      packages/semi-animation/src/utils/shallowEqual.ts
  30. 1 1
      packages/semi-eslint-plugin/package.json
  31. 0 2
      packages/semi-foundation/anchor/foundation.ts
  32. 0 1
      packages/semi-foundation/anchor/linkFoundation.ts
  33. 0 1
      packages/semi-foundation/autoComplete/foundation.ts
  34. 0 2
      packages/semi-foundation/autoComplete/optionFoundation.ts
  35. 21 4
      packages/semi-foundation/avatar/constants.ts
  36. 3 3
      packages/semi-foundation/avatar/foundation.ts
  37. 0 1
      packages/semi-foundation/base/foundation.ts
  38. 0 1
      packages/semi-foundation/breadcrumb/foundation.ts
  39. 0 2
      packages/semi-foundation/calendar/eventUtil.ts
  40. 0 1
      packages/semi-foundation/calendar/foundation.ts
  41. 0 5
      packages/semi-foundation/cascader/foundation.ts
  42. 0 1
      packages/semi-foundation/checkbox/checkbox.scss
  43. 1 2
      packages/semi-foundation/checkbox/checkboxFoundation.ts
  44. 0 1
      packages/semi-foundation/checkbox/checkboxGroupFoundation.ts
  45. 1 4
      packages/semi-foundation/datePicker/foundation.ts
  46. 0 3
      packages/semi-foundation/datePicker/inputFoundation.ts
  47. 0 1
      packages/semi-foundation/datePicker/monthFoundation.ts
  48. 0 2
      packages/semi-foundation/datePicker/monthsGridFoundation.ts
  49. 0 2
      packages/semi-foundation/datePicker/yearAndMonthFoundation.ts
  50. 9 7
      packages/semi-foundation/form/foundation.ts
  51. 2 3
      packages/semi-foundation/form/interface.ts
  52. 0 3
      packages/semi-foundation/form/utils.ts
  53. 1 1
      packages/semi-foundation/image/previewImageFoundation.ts
  54. 7 5
      packages/semi-foundation/image/previewInnerFoundation.ts
  55. 0 2
      packages/semi-foundation/input/foundation.ts
  56. 0 2
      packages/semi-foundation/input/textareaFoundation.ts
  57. 0 5
      packages/semi-foundation/inputNumber/foundation.ts
  58. 3 4
      packages/semi-foundation/modal/modalFoundation.ts
  59. 0 2
      packages/semi-foundation/navigation/NavItem.ts
  60. 1 3
      packages/semi-foundation/navigation/foundation.ts
  61. 0 1
      packages/semi-foundation/navigation/itemFoundation.ts
  62. 1 2
      packages/semi-foundation/navigation/subNavFoundation.ts
  63. 0 2
      packages/semi-foundation/notification/notificationListFoundation.ts
  64. 2 2
      packages/semi-foundation/package.json
  65. 13 3
      packages/semi-foundation/pagination/foundation.ts
  66. 0 1
      packages/semi-foundation/popconfirm/popconfirmFoundation.ts
  67. 0 1
      packages/semi-foundation/radio/radioGroupFoundation.ts
  68. 0 1
      packages/semi-foundation/radio/radioInnerFoundation.ts
  69. 0 1
      packages/semi-foundation/rating/foundation.ts
  70. 0 5
      packages/semi-foundation/select/foundation.ts
  71. 0 2
      packages/semi-foundation/select/optionFoundation.ts
  72. 0 7
      packages/semi-foundation/slider/foundation.ts
  73. 0 1
      packages/semi-foundation/switch/foundation.ts
  74. 0 1
      packages/semi-foundation/table/bodyFoundation.ts
  75. 0 1
      packages/semi-foundation/table/constants.ts
  76. 0 8
      packages/semi-foundation/table/foundation.ts
  77. 0 1
      packages/semi-foundation/table/tableRowFoundation.ts
  78. 0 3
      packages/semi-foundation/table/utils.ts
  79. 19 2
      packages/semi-foundation/tag/constants.ts
  80. 0 2
      packages/semi-foundation/tagInput/foundation.ts
  81. 0 1
      packages/semi-foundation/timePicker/foundation.ts
  82. 0 2
      packages/semi-foundation/timePicker/inputFoundation.ts
  83. 0 1
      packages/semi-foundation/timePicker/utils/index.ts
  84. 1 4
      packages/semi-foundation/toast/toastFoundation.ts
  85. 0 1
      packages/semi-foundation/toast/toastListFoundation.ts
  86. 0 10
      packages/semi-foundation/tooltip/foundation.ts
  87. 0 1
      packages/semi-foundation/transfer/foundation.ts
  88. 0 1
      packages/semi-foundation/tree/foundation.ts
  89. 1 10
      packages/semi-foundation/tree/treeUtil.ts
  90. 0 1
      packages/semi-foundation/treeSelect/foundation.ts
  91. 3 1
      packages/semi-foundation/upload/foundation.ts
  92. 0 1
      packages/semi-foundation/utils/Event.ts
  93. 0 2
      packages/semi-foundation/utils/date-fns-extra.ts
  94. 0 1
      packages/semi-foundation/utils/function.ts
  95. 0 3
      packages/semi-foundation/utils/object.ts
  96. 1 1
      packages/semi-icons/package.json
  97. 1 1
      packages/semi-illustrations/package.json
  98. 2 2
      packages/semi-next/package.json
  99. 1 1
      packages/semi-rspack/package.json
  100. 1 1
      packages/semi-scss-compile/package.json

+ 25 - 3
.eslintrc.js

@@ -22,11 +22,12 @@ module.exports = {
                 indent: ['error', 4, {'SwitchCase': 1}],
                 'comma-spacing': ["error", {"before": false, "after": true}],
                 'no-multi-spaces': ["error", {ignoreEOLComments: true}],
+                'no-unused-vars': 'off', // We need to consider many scenarios of deconstruction and rest, this rule is not reasonable in component library scenarios, so turn it off globally
                 'react/display-name': 'off',
                 'key-spacing': ["error", {"beforeColon": false}],
                 'react/jsx-indent': ['error', 4],
                 'react/jsx-indent-props': ['error', 4],
-                'react/no-find-dom-node': ['warn'],
+                'react/no-find-dom-node': 'off',
                 'react/prop-types': 'off',
                 'react/prefer-stateless-function': 'off',
                 'jsx-a11y/alt-text': ["warn"],
@@ -42,6 +43,7 @@ module.exports = {
                 'jsx-a11y/mouse-events-have-key-events': ['warn'],
                 'object-curly-spacing': ['error', 'always'],
                 'space-before-blocks': ['error', 'always'],
+                'max-len': 'off'
             },
             globals: {
                 "sinon": "readonly",
@@ -61,37 +63,57 @@ module.exports = {
                 indent: 'off',
                 'comma-spacing': ["error", {"before": false, "after": true}],
                 'no-multi-spaces': ["error", {ignoreEOLComments: true}],
+                'no-unused-vars': 'off', // We need to consider many scenarios of deconstruction and rest, this rule is not reasonable in component library scenarios, so turn it off globally
                 'key-spacing': ["error", {"beforeColon": false, "afterColon": true}],
                 '@typescript-eslint/indent': ['error', 4],
                 'react/display-name': 'off',
                 'react/jsx-indent': ['error', 4],
                 'react/jsx-indent-props': ['error', 4],
-                'react/no-find-dom-node': ['warn'],
+                'react/no-find-dom-node': 'off',
                 'react/prop-types': 'off',
-                "react/no-unknown-property": ['error', { ignore: ['x-semi-prop', 'x-placement', 'x-type', 'x-label-pos', 'x-prompt-pos', 'x-field-id', 'x-extra-pos']}],
+                "react/no-unknown-property": ['error', { 
+                    ignore: [
+                        'x-semi-prop',
+                        'x-placement',
+                        'x-type',
+                        'x-label-pos',
+                        'x-prompt-pos',
+                        'x-field-id',
+                        'x-extra-pos',
+                        'x-open-type',
+                        'x-panel-yearandmonth-open-type',
+                        'x-insetinput',
+                        'x-preset-position',
+                        'x-form-id'
+                    ]}],
                 'react-hooks/rules-of-hooks': 'error',
                 'react-hooks/exhaustive-deps': 'warn',
                 'react/prefer-stateless-function': 'off',
                 '@typescript-eslint/explicit-module-boundary-types': 'off',
                 '@typescript-eslint/explicit-function-return-type': 'off',
+                '@typescript-eslint/no-empty-interface': 'off',
                 '@typescript-eslint/no-explicit-any': 'off',
                 '@typescript-eslint/naming-convention': 'off',
                 '@typescript-eslint/ban-ts-comment': 'off',
                 '@typescript-eslint/no-var-requires': 'warn',
                 '@typescript-eslint/no-inferrable-types': 'off',
                 '@typescript-eslint/no-this-alias': 'off',
+                '@typescript-eslint/no-empty-function': 'off',
                 // In scenarios where specific rest props need to be passed, some keys may be taken out first, so set 'no-unused-vars' to off
                 '@typescript-eslint/no-unused-vars': 'off',
                 'import/no-unresolved': 'off',
+                'max-len': 'off',
                 'semi': ['error', 'always'],
                 'keyword-spacing': ["error", {"before": true, "after": true}],
                 'jsx-a11y/click-events-have-key-events': ['warn'],
                 'jsx-a11y/no-noninteractive-element-interactions': ['warn'],
                 'jsx-a11y/no-autofocus': ['warn'],
+                'jsx-a11y/no-static-element-interactions': ['warn'],
                 'jsx-a11y/alt-text': ["warn"],
                 'jsx-a11y/mouse-events-have-key-events': ["warn"],
                 'jsx-a11y/html-has-lang': ['warn'],
                 'object-curly-spacing': ['error', 'always'],
+                'prefer-const': 'off',
                 'semi-design/no-import': 'error',
                 'space-before-blocks': ['error', 'always'],
                 "@typescript-eslint/type-annotation-spacing": ['error', {"after": true}],

+ 0 - 19
.github/workflows/codeball.yml

@@ -1,19 +0,0 @@
-name: Codeball
-on:
-  pull_request: {}
-  pull_request_review_comment:
-    types: [created, edited]
-
-jobs:
-  codeball_job:
-    runs-on: ubuntu-latest
-    name: Codeball
-    steps:
-      - name: Codeball
-        uses: sturdy-dev/codeball-action@v2
-        with:
-          approvePullRequests: "false"
-          labelPullRequestsWhenApproved: "true"
-          labelPullRequestsWhenReviewNeeded: "true"
-          failJobsWhenReviewNeeded: "false"
-          codeSuggestionsFromComments: "true"

+ 1 - 0
content/show/dropdown/index-en-US.md

@@ -434,6 +434,7 @@ function DropdownEvents() {
 | children | Child elements wrapped by the drop layer                                                                                                                                                                                                      | ReactNode |  |  |
 | clickToHide | Whether to close the drop-down layer automatically when clicking on the drop-down layer                                                                                                                                                       | boolean |  | **0.24.0** |
 | contentClassName | Drop-down menu root element class name                                                                                                                                                                                                        | string |  |  |
+| keepDOM | Whether to keep the internal component DOM from being destroyed when closing | boolean | false | **2.31.0** |
 | getPopupContainer | Specifies the parent DOM, and the bullet layer will be rendered to the DOM, you need to set 'position: relative`  This will change the DOM tree position, but not the view's rendering position.                                                                                                                              | function():HTMLElement | () => document.body |
 | margin | Popup layer calculates the size of the safe area when the current direction overflows, used in scenes covered by fixed elements, more detail refer to [issue#549](https://github.com/DouyinFE/semi-design/issues/549), same as Tooltip margin | object\|number |  | 2.25.0 |
 | mouseEnterDelay | After the mouse is moved into the Trigger, the display time is delayed, in milliseconds (only effective when the trigger is hover/focus)                                                                                                      | number | 50 |  |

+ 1 - 0
content/show/dropdown/index.md

@@ -432,6 +432,7 @@ function DropdownEvents() {
 | clickToHide | 在弹出层内点击时是否自动关闭弹出层                                                                                                            | boolean |  | **0.24.0** |
 | contentClassName | 下拉菜单根元素类名                                                                                                                    | string |  |  |
 | getPopupContainer | 指定父级 DOM,弹层将会渲染至该 DOM 中,自定义需要设置 `position: relative` 这会改变浮层 DOM 树位置,但不会改变视图渲染位置。                                                                         | function():HTMLElement | () => document.body |  |
+| keepDOM | 关闭时是否保留内部组件 DOM 不销毁 | boolean | false | **2.31.0** |
 | margin| 弹出层计算溢出时的增加的冗余值,详见[issue#549](https://github.com/DouyinFE/semi-design/issues/549),作用同 Tooltip margin                         | number\|object  |  |  **2.25.0**   |
 | mouseEnterDelay | 鼠标移入 Trigger 后,延迟显示的时间,单位毫秒(仅当 trigger 为 hover/focus 时生效)                                                                    | number | 50 |  |
 | mouseLeaveDelay | 鼠标移出弹出层后,延迟消失的时间,单位毫秒(仅当 trigger 为 hover/focus 时生效)                                                                          | number | 50 |  |

+ 1 - 1
content/show/popover/index-en-US.md

@@ -26,7 +26,7 @@ import { Popover } from '@douyinfe/semi-ui';
 
 Tooltip needs to apply DOM event listeners to children. If the child element is a custom component, you need to ensure that it can pass properties to the underlying DOM element 
 
-At the same time, in order to calculate the positioning of the popup layer, it is necessary to obtain the real DOM elements of the children, so Tooltip supports the following types of children 
+At the same time, in order to calculate the positioning of the popup layer, it is necessary to obtain the real DOM elements of the children, so Popover supports the following types of children 
 
 1. Class Component, it is not mandatory to bind ref, but you need to ensure that props can be transparently transmitted to the real DOM node 
 2. Use the functional component wrapped by forwardRef to transparently transmit props and ref to the real DOM node in children 

+ 1 - 1
content/show/popover/index.md

@@ -25,7 +25,7 @@ import { Popover } from '@douyinfe/semi-ui';
 
 Popover 需要将 DOM 事件监听器应用到 children 中,如果子元素是自定义的组件,你需要确保它能将属性传递至底层的 DOM 元素
 
-同时为了计算弹出层的定位,需要获取到 children 的真实 DOM 元素,因此 Tooltip 支持如下类型的 children
+同时为了计算弹出层的定位,需要获取到 children 的真实 DOM 元素,因此 Popover 支持如下类型的 children
 
 1. Class Component,不强制绑定ref,但需要确保 props 可被透传至真实的 DOM 节点上
 2. 使用 forwardRef 包裹后的函数式组件,将 props 与 ref 透传到 children 内真实的 DOM 节点上

+ 21 - 3
content/start/changelog/index-en-US.md

@@ -16,12 +16,30 @@ Version:Major.Minor.Patch (follow the **Semver** specification)
 
 ---
 
+#### 🎉 2.39.2 (2023-07-19)
+- 【Fix】
+  - Fixed the problem that the size check was not performed correctly when using replace to replace the new file after uploading a legal file during Upload showReplace [#1712](https://github.com/DouyinFE/semi-design/issues/1712)
+- 【Perf】
+  - Optimize the Pagination small size to show the problem of lag when the data is at the level of 100 million [#1714](https://github.com/DouyinFE/semi-design/pull/1714)
+- 【Chore】
+  - Unify the case of the imported type ScrollIntoViewOptions in Form Foundation [#1713](https://github.com/DouyinFE/semi-design/pull/1713) [@rashagu](https://github.com/rashagu)
+
+#### 🎉 2.39.1 (2023-07-18)
+- 【Fix】
+    - Fix the problem that the values input parameter in Form validate.then() is not scope isolated and will be affected by Field DOM mount and unmount [#1710](https://github.com/DouyinFE/semi-design/pull/1710)
+
+#### 🎉 2.39.0 (2023-07-14)
+- 【Fix】
+  - Semi Webpack Plugin modifies the logic related to animation.scss referenced by theme loader, which is compatible with some special directory organizations in pnpm scenarios [#1704](https://github.com/DouyinFE/semi-design/pull/1704)
+  - Remove the flex-wrap on the outermost side of the Checkbox [#1700](https://github.com/DouyinFE/semi-design/pull/1700)
+- 【Style】
+  - Remove disabled switch knob transformX when in active status [#1697](https://github.com/DouyinFE/semi-design/pull/1697)
+
 #### 🎉 2.39.0-beta.0 (2023-07-10)
 - 【Style】
-    - Fix the problem that the content exceeds the trigger box when displaying a long label in TreeSelect  [#623 ](https://github.com/DouyinFE/semi-design/issues/623)
+    - Fix the problem that the content exceeds the trigger box when displaying a long label in TreeSelect  [#623](https://github.com/DouyinFE/semi-design/issues/623)
 - 【Fix】
-    - Fix the problem that Anchor cannot jump when clicked in some scenarios
-
+    - Fix the problem that Anchor cannot jump when clicked in some scenarios [#1688](https://github.com/DouyinFE/semi-design/pull/1688)
 #### 🎉 2.38.2 (2023-07-10)
 - 【Fix】
     - Fixed the problem that the height was not recalculated when the TextArea placeholder was dynamically updated [@nekocode](https://github.com/nekocode) [#1690](https://github.com/DouyinFE/semi-design/pull/1690)

+ 24 - 2
content/start/changelog/index.md

@@ -13,11 +13,33 @@ Semi 版本号遵循 **Semver** 规范(主版本号-次版本号-修订版本
 -   修订版本号(patch):仅会进行 bugfix,发布时间不限
 -   不同版本间的详细关系,可查阅 [FAQ](/zh-CN/start/faq)
 
+
+#### 🎉 2.39.2 (2023-07-19)
+- 【Fix】
+    - 修复 Upload showReplace 时,上传合法文件后使用replace 替换新文件,未正确执行 size check的问题 [#1712](https://github.com/DouyinFE/semi-design/issues/1712)
+- 【Perf】
+    -  优化 Pagination small size 在亿级别数据时展示卡顿的问题 [#1714](https://github.com/DouyinFE/semi-design/pull/1714)
+- 【Chore】
+    - 统一 Form Foundation 中导入类型 ScrollIntoViewOptions 大小写 [#1713](https://github.com/DouyinFE/semi-design/pull/1713) [@rashagu](https://github.com/rashagu)
+
+
+
+#### 🎉 2.39.1 (2023-07-18)
+- 【Fix】
+  - 修复 Form validate.then() 中的 values 入参未做作用域隔离,会受到 Field DOM 挂载、卸载影响的问题 [#1710](https://github.com/DouyinFE/semi-design/pull/1710)
+
+#### 🎉 2.39.0 (2023-07-14)
+- 【Fix】
+  - Semi Webpack Plugin 修改 theme loader 引用 animation.scss 相关的逻辑,对 pnpm 场景下某些特殊目录组织兼容,解决部分项目升级构建工具后,Popover、Tooltip等可能由于动画无法正确执行,浮层无法收起的问题 [#1704](https://github.com/DouyinFE/semi-design/pull/1704)
+  - 移除 Checkbox 最外层侧 flex-wrap,解决某些特殊内容可能被意外换行的问题 [#1700](https://github.com/DouyinFE/semi-design/pull/1700)
+- 【Style】
+  - 移除 disabled switch的 knob元素在 active态的 x 轴位移 [#1697](https://github.com/DouyinFE/semi-design/pull/1697)
+
 #### 🎉 2.39.0-beta.0 (2023-07-10)
 - 【Style】
-    - 修复 TreeSelect 中在展示长 label 时内容超出 trigger 框问题  [#623 ](https://github.com/DouyinFE/semi-design/issues/623)
+    - 修复 TreeSelect 中在展示长 label 时内容超出 trigger 框问题  [#623](https://github.com/DouyinFE/semi-design/issues/623)
 - 【Fix】
-    - 修复 Anchor 在部分场景下,点击无法跳转问题
+    - 修复 Anchor 在部分场景下,点击无法跳转问题 [#1688](https://github.com/DouyinFE/semi-design/pull/1688)
     
 #### 🎉 2.38.2 (2023-07-10)
 - 【Fix】

+ 1 - 1
lerna.json

@@ -1,5 +1,5 @@
 {
     "useWorkspaces": true,
     "npmClient": "yarn",
-    "version": "2.39.0-beta.0"
+    "version": "2.39.2"
 }

+ 0 - 1
packages/semi-animation-react/_story/auto/index.jsx

@@ -1,4 +1,3 @@
-/* eslint-disable react/button-has-type */
 import React from 'react';
 import { Animation } from '@douyinfe/semi-animation-react';
 import './style.scss';

+ 3 - 3
packages/semi-animation-react/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-animation-react",
-    "version": "2.39.0-beta.0",
+    "version": "2.39.2",
     "description": "motion library for semi-ui-react",
     "keywords": [
         "motion",
@@ -25,8 +25,8 @@
         "prepublishOnly": "npm run build:lib"
     },
     "dependencies": {
-        "@douyinfe/semi-animation": "2.39.0-beta.0",
-        "@douyinfe/semi-animation-styled": "2.39.0-beta.0",
+        "@douyinfe/semi-animation": "2.39.2",
+        "@douyinfe/semi-animation-styled": "2.39.2",
         "classnames": "^2.2.6"
     },
     "devDependencies": {

+ 0 - 3
packages/semi-animation-react/src/Animation.tsx

@@ -1,5 +1,4 @@
 /* eslint-disable @typescript-eslint/ban-types */
-/* eslint-disable react/destructuring-assignment */
 import React, { PureComponent, isValidElement } from 'react';
 import PropTypes from 'prop-types';
 import { Animation as SemiAnimation, events } from '@douyinfe/semi-animation';
@@ -129,9 +128,7 @@ export default class Animation extends PureComponent<AnimationProps> {
     }
 
     initAnimation = (props?: AnimationProps) => {
-        // eslint-disable-next-line eqeqeq
         props = props == null ? this.props : props;
-        // eslint-disable-next-line prefer-const
         let { from, to, config, reverse } = props;
 
         if (reverse) {

+ 0 - 1
packages/semi-animation-react/src/KeyFrames.tsx

@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 import React, { Component, isValidElement } from 'react';
 import PropTypes from 'prop-types';
 import noop from './utils/noop';

+ 0 - 5
packages/semi-animation-react/src/StyledAnimation.tsx

@@ -1,8 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
-/* eslint-disable prefer-const */
-/* eslint-disable eqeqeq */
-/* eslint-disable import/no-duplicates */
-/* eslint-disable no-duplicate-imports */
 import React, { PureComponent, isValidElement, cloneElement, Children } from 'react';
 import PropTypes from 'prop-types';
 import classnames from 'classnames';

+ 0 - 1
packages/semi-animation-react/src/StyledTransition.tsx

@@ -1,4 +1,3 @@
-/* eslint-disable eqeqeq */
 import React, { Component } from 'react';
 import PropTypes from 'prop-types';
 import StyledAnimation, { StyledAnimationProps, StyledAnimateStyleType } from './StyledAnimation';

+ 0 - 2
packages/semi-animation-react/src/Transition.tsx

@@ -1,4 +1,3 @@
-/* eslint-disable eqeqeq */
 import Animation, { AnimationProps } from './Animation';
 import PropTypes from 'prop-types';
 import React, { Component, isValidElement } from 'react';
@@ -124,7 +123,6 @@ export default class Transition extends Component<TransitionProps, TransitionSta
 
         let children;
 
-        // eslint-disable-next-line prefer-const
         let { currentChildren, lastChildren, state } = this.state;
 
         let from = {};

+ 0 - 1
packages/semi-animation-react/src/utils/noop.ts

@@ -1,2 +1 @@
-// eslint-disable-next-line @typescript-eslint/no-empty-function
 export default function noop() { }

+ 0 - 3
packages/semi-animation-react/src/utils/string.ts

@@ -1,8 +1,6 @@
-/* eslint-disable eqeqeq */
 export function upperCase(str: string, pos: number) {
     if (typeof str === 'string') {
         return str
-            // eslint-disable-next-line @typescript-eslint/ban-ts-comment
             // @ts-ignore
             .split()
             .reduce(
@@ -16,7 +14,6 @@ export function upperCase(str: string, pos: number) {
 export function lowerCase(str: string, pos: number) {
     if (typeof str === 'string') {
         return str
-            // eslint-disable-next-line @typescript-eslint/ban-ts-comment
             // @ts-ignore
             .split()
             .reduce(

+ 1 - 1
packages/semi-animation-styled/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-animation-styled",
-    "version": "2.39.0-beta.0",
+    "version": "2.39.2",
     "description": "semi styled animation",
     "keywords": [
         "semi",

+ 1 - 1
packages/semi-animation/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-animation",
-    "version": "2.39.0-beta.0",
+    "version": "2.39.2",
     "description": "animation base library for semi-ui",
     "keywords": [
         "animation",

+ 0 - 3
packages/semi-animation/src/Animation.ts

@@ -1,6 +1,3 @@
-/* eslint-disable max-depth */
-/* eslint-disable eqeqeq */
-/* eslint-disable max-lines-per-function */
 import Event from './utils/Event';
 import shouldStopAnimation from './shouldStopAnimation';
 import shouldUseBezier from './shouldUseBezier';

+ 0 - 1
packages/semi-animation/src/getEasing.ts

@@ -104,7 +104,6 @@ export default function getEasing(easing: string) {
     if (name === 'cubic-bezier' || name === 'cubicBezier') {
         return bezier(...(args.length ? args : easingMap.linear) as BezierArgs);
     } else {
-        // eslint-disable-next-line eqeqeq
         if (!name || typeof name !== 'string' || (typeof name === 'string' && easingMap[name] == null)) {
             name = 'linear';
         }

+ 0 - 1
packages/semi-animation/src/interpolate.ts

@@ -12,7 +12,6 @@ export type FromTo = string | number | (string | number)[];
 export type Parser = (value: FromTo) => any;
 export type Formatter = (value: any[]) => any;
 
-// eslint-disable-next-line max-len
 export default function interpolate(from: FromTo, to: FromTo, ratio = 0, parser: Parser = null, formatter: Formatter = null) {
     if (typeof parser === 'function') {
         from = parser(from);

+ 0 - 1
packages/semi-animation/src/shouldStopAnimation.ts

@@ -12,7 +12,6 @@ import shouldUseBezier from './shouldUseBezier';
  *
  * @returns {boolean}
  */
-// eslint-disable-next-line max-len
 export default function shouldStopAnimation(currentStyle: Record<string, any>, style: Record<string, any>, currentVelocity: Record<string, any>, startTime: number, nowTime: number) {
     for (const key of Object.keys(style)) {
         const styleValue = style[key];

+ 0 - 1
packages/semi-animation/src/stepper.ts

@@ -20,7 +20,6 @@ const reusedTuple = [0, 0];
  * @param {number} b
  * @param {number} precision
  */
-// eslint-disable-next-line max-len
 export default function stepper(secondPerFrame: number, x: number, v: number, destX: number, k: number, b: number, precision: number) {
     // Spring stiffness, in kg / s^2
 

+ 0 - 1
packages/semi-animation/src/stripStyle.ts

@@ -1,4 +1,3 @@
-/* eslint-disable no-restricted-syntax */
 export default function stripStyle(style: Record<string, any>) {
     const ret = {};
     for (const key in style) {

+ 0 - 2
packages/semi-animation/src/utils/Event.ts

@@ -27,12 +27,10 @@ export default class Event {
                 const callbacks = this._eventMap.get(event);
                 if (Array.isArray(callbacks) && callbacks.length) {
                     let index = -1;
-                    // eslint-disable-next-line max-depth
                     while ((index = callbacks.findIndex(cb => cb === callback)) > -1) {
                         callbacks.splice(index, 1);
                     }
                 }
-            // eslint-disable-next-line eqeqeq
             } else if (callback == null) {
                 this._eventMap.delete(event);
             }

+ 0 - 1
packages/semi-animation/src/utils/noop.ts

@@ -1,2 +1 @@
-// eslint-disable-next-line @typescript-eslint/no-empty-function
 export default function noop() { }

+ 0 - 1
packages/semi-animation/src/utils/shallowEqual.ts

@@ -1,4 +1,3 @@
-/* eslint-disable no-restricted-syntax */
 export default function shallowEqual(a: any, b: any) {
     if (typeof a !== typeof b) {
         return false;

+ 1 - 1
packages/semi-eslint-plugin/package.json

@@ -1,6 +1,6 @@
 {
     "name": "eslint-plugin-semi-design",
-    "version": "2.39.0-beta.0",
+    "version": "2.39.2",
     "description": "semi ui eslint plugin",
     "keywords": [
         "semi",

+ 0 - 2
packages/semi-foundation/anchor/foundation.ts

@@ -30,10 +30,8 @@ export default class AnchorFoundation<P = Record<string, any>, S = Record<string
         super({ ...AnchorFoundation.defaultAdapter, ...adapter });
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     init = () => {};
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     destroy = () => {};
 
     addLink = (link: string) => {

+ 0 - 1
packages/semi-foundation/anchor/linkFoundation.ts

@@ -16,7 +16,6 @@ export default class LinkFoundation extends BaseFoundation<LinkAdapter> {
         // this.setInitValue();
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     destroy() {}
 
     handleAddLink() {

+ 0 - 1
packages/semi-foundation/autoComplete/foundation.ts

@@ -1,4 +1,3 @@
-/* eslint-disable prefer-const, max-len */
 import BaseFoundation, { DefaultAdapter } from '../base/foundation';
 import { isString, isNumber, isUndefined, isObject } from 'lodash';
 import warning from '../utils/warning';

+ 0 - 2
packages/semi-foundation/autoComplete/optionFoundation.ts

@@ -22,10 +22,8 @@ export default class OptionFoundation extends BaseFoundation<OptionDefaultAdapte
         super({ ...adapter });
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     init() {}
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     destroy() {}
 
     onOptionClick(option: BasicOptionProps) {

+ 21 - 4
packages/semi-foundation/avatar/constants.ts

@@ -7,9 +7,26 @@ const cssClasses = {
 const strings = {
     SHAPE: ['circle', 'square'],
     SIZE: ['extra-extra-small', 'extra-small', 'small', 'default', 'medium', 'large', 'extra-large'],
-    // eslint-disable-next-line max-len
-    COLOR: ['grey', 'red', 'pink', 'purple', 'violet', 'indigo', 'blue', 'light-blue', 'cyan', 'teal', 'green', 'light-green', 'lime', 'yellow', 'amber', 'orange', 'white'],
-    OVERLAP_FROM: ['start', 'end']
+    COLOR: [
+        'grey',
+        'red',
+        'pink',
+        'purple',
+        'violet',
+        'indigo',
+        'blue',
+        'light-blue',
+        'cyan',
+        'teal',
+        'green',
+        'light-green',
+        'lime',
+        'yellow',
+        'amber',
+        'orange',
+        'white',
+    ],
+    OVERLAP_FROM: ['start', 'end'],
 };
 
-export { cssClasses, strings };
+export { cssClasses, strings };

+ 3 - 3
packages/semi-foundation/avatar/foundation.ts

@@ -14,9 +14,9 @@ export default class AvatarFoundation<P = Record<string, any>, S = Record<string
         super({ ...adapter });
     }
 
-    init() { } // eslint-disable-line
+    init() { }
 
-    destroy() { } // eslint-disable-line
+    destroy() { }
 
     handleImgLoadError() {
         const { onError } = this.getProps();
@@ -40,7 +40,7 @@ export default class AvatarFoundation<P = Record<string, any>, S = Record<string
             if (target.matches(':focus-visible')) {
                 this._adapter.setFocusVisible(true);
             }
-        } catch (error){
+        } catch (error) {
             warning(true, 'Warning: [Semi Avatar] The current browser does not support the focus-visible');
         }
     }

+ 0 - 1
packages/semi-foundation/base/foundation.ts

@@ -8,7 +8,6 @@ import log from '../utils/log';
 import { noop } from 'lodash';
 
 export type noopFunction = (...args: any) => any;
-// eslint-disable-next-line
 export interface DefaultAdapter<P = Record<string, any>, S = Record<string, any>> {
     getContext(key: string): any;
     getContexts(): any;

+ 0 - 1
packages/semi-foundation/breadcrumb/foundation.ts

@@ -1,4 +1,3 @@
-/* eslint-disable prefer-const */
 import BaseFoundation, { DefaultAdapter } from '../base/foundation';
 import isEnterPress from '../utils/isEnterPress';
 import { BreadcrumbItemInfo, Route } from './itemFoundation';

+ 0 - 2
packages/semi-foundation/calendar/eventUtil.ts

@@ -251,7 +251,6 @@ export const filterEvents = (events: Map<string, EventObject[]>, start: Date, en
  * @returns {arr}
  * filter out event that is not in the week range
  */
-// eslint-disable-next-line max-len
 export const filterWeeklyEvents = (events: Map<string, EventObject[]>, weekStart: Date, weekStartsOn: weekStartsOnEnum ) => filterEvents(events, weekStart, addDays(endOfWeek(weekStart, { weekStartsOn }), 1));
 
 /**
@@ -331,7 +330,6 @@ export const collectDailyEvents = (events: ParsedRangeEvent[][]) => {
 };
 
 export const renderDailyEvent = (event: EventObject) => {
-    // eslint-disable-next-line prefer-const
     let { start, end, allDay, children } = event;
     let startPos,
         endPos;

+ 0 - 1
packages/semi-foundation/calendar/foundation.ts

@@ -114,7 +114,6 @@ export default class CalendarFoundation<P = Record<string, any>, S = Record<stri
         super({ ...adapter });
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     init() {
 
     }

+ 0 - 5
packages/semi-foundation/cascader/foundation.ts

@@ -226,7 +226,6 @@ export interface CascaderAdapter extends DefaultAdapter<BasicCascaderProps, Basi
     updateFocusState: (focus: boolean) => void
 }
 
-// eslint-disable-next-line max-len
 export default class CascaderFoundation extends BaseFoundation<CascaderAdapter, BasicCascaderProps, BasicCascaderInnerData> {
 
     constructor(adapter: CascaderAdapter) {
@@ -259,7 +258,6 @@ export default class CascaderFoundation extends BaseFoundation<CascaderAdapter,
         const valueProp: string | any[] = onChangeWithObject ? [] : 'value';
         if (multiple) {
             const valuePath: BasicValue = [];
-            // eslint-disable-next-line @typescript-eslint/ban-ts-comment
             // @ts-ignore
             item.forEach((checkedKey: string) => {
                 const valuePathItem = this.getItemPropPath(checkedKey, valueProp);
@@ -337,9 +335,7 @@ export default class CascaderFoundation extends BaseFoundation<CascaderAdapter,
         if (isEmpty(keyEntities[selectedKey])) {
             if (includes(selectedKey, 'not-exist-')) {
                 /* Get the value behind not-exist- */
-                // eslint-disable-next-line prefer-destructuring
                 const targetValue = selectedKey.match(/not-exist-(\S*)/)[1];
-                // eslint-disable-next-line max-depth
                 if (isEmpty(keyEntities[targetValue])) {
                     cacheValue = targetValue;
                 } else {
@@ -974,7 +970,6 @@ export default class CascaderFoundation extends BaseFoundation<CascaderAdapter,
         }
         return (Object.values(keyEntities) as BasicEntity[])
             .filter(item => item.parentKey === null && !item._notExist)
-            // eslint-disable-next-line @typescript-eslint/ban-ts-comment
             // @ts-ignore
             .sort((a, b) => parseInt(a.ind, 10) - parseInt(b.ind, 10));
     }

+ 0 - 1
packages/semi-foundation/checkbox/checkbox.scss

@@ -12,7 +12,6 @@ $module: #{$prefix}-checkbox;
     position: relative;
     display: flex;
     align-items: flex-start;
-    flex-wrap: wrap;
     @include font-size-regular;
     cursor: pointer;
     transition: background-color $transition_duration-checkbox-bg $transition_function-checkbox-bg $transition_delay-checkbox-bg,

+ 1 - 2
packages/semi-foundation/checkbox/checkboxFoundation.ts

@@ -117,7 +117,7 @@ class CheckboxFoundation<P = Record<string, any>, S = Record<string, any>> exten
             if (target.matches(':focus-visible')) {
                 this._adapter.setFocusVisible(true);
             }
-        } catch (error){
+        } catch (error) {
             warning(true, 'Warning: [Semi Checkbox] The current browser does not support the focus-visible');
         }
     }
@@ -127,7 +127,6 @@ class CheckboxFoundation<P = Record<string, any>, S = Record<string, any>> exten
         this._adapter.setFocusVisible(false);
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     destroy() {}
 }
 

+ 0 - 1
packages/semi-foundation/checkbox/checkboxGroupFoundation.ts

@@ -74,7 +74,6 @@ class CheckboxGroupFoundation extends BaseFoundation<CheckboxGroupAdapter> {
         }
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     destroy() {}
 }
 

+ 1 - 4
packages/semi-foundation/datePicker/foundation.ts

@@ -1,5 +1,3 @@
-/* eslint-disable no-nested-ternary */
-/* eslint-disable max-len, max-depth,  */
 import { format, isValid, isSameSecond, isEqual as isDateEqual, isDate } from 'date-fns';
 import { get, isObject, isString, isEqual, isFunction } from 'lodash';
 
@@ -568,7 +566,6 @@ export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapt
      * @param {String} input
      * @param {Event} e
      */
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     handleInputBlur(input = '', e?: any) {
     }
 
@@ -624,7 +621,7 @@ export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapt
         this._adapter.setRangeInputFocus(false);
         this._adapter.notifyClear(e);
     }
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
+    
     handleRangeInputBlur(value: any, e: any) {
     }
 

+ 0 - 3
packages/semi-foundation/datePicker/inputFoundation.ts

@@ -1,4 +1,3 @@
-/* eslint-disable max-len */
 import { cloneDeep, isObject, set, get } from 'lodash';
 import { format as formatFn } from 'date-fns';
 
@@ -111,10 +110,8 @@ export default class InputFoundation extends BaseFoundation<DateInputAdapter> {
         super({ ...adapter });
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     init() {}
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     destroy() {}
 
     handleClick(e: any) {

+ 0 - 1
packages/semi-foundation/datePicker/monthFoundation.ts

@@ -114,7 +114,6 @@ export default class CalendarMonthFoundation extends BaseFoundation<MonthAdapter
         this._adapter.setWeekDays(weekdays);
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     destroy() {}
 
     handleClick(day: MonthDayInfo) {

+ 0 - 2
packages/semi-foundation/datePicker/monthsGridFoundation.ts

@@ -1,4 +1,3 @@
-/* eslint-disable max-len */
 import BaseFoundation, { DefaultAdapter } from '../base/foundation';
 import { strings } from './constants';
 import {
@@ -305,7 +304,6 @@ export default class MonthsGridFoundation extends BaseFoundation<MonthsGridAdapt
         this._initDateRangePickerFromValue(values, true);
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     destroy() { }
 
     /**

+ 0 - 2
packages/semi-foundation/datePicker/yearAndMonthFoundation.ts

@@ -65,10 +65,8 @@ export default class YearAndMonthFoundation extends BaseFoundation<YearAndMonthA
         super({ ...adapter });
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     init() {}
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     destroy() {}
 
     selectYear(item: YearScrollItem, panelType?: PanelType) {

+ 9 - 7
packages/semi-foundation/form/foundation.ts

@@ -1,10 +1,9 @@
-/* eslint-disable prefer-const, max-len */
 import BaseFoundation from '../base/foundation';
 import * as ObjectUtil from '../utils/object';
 import isPromise from '../utils/isPromise';
 import { isValid } from './utils';
 import { isUndefined, isFunction, toPath } from 'lodash';
-import scrollIntoView, { Options as scrollIntoViewOptions } from 'scroll-into-view-if-needed';
+import scrollIntoView, { Options as ScrollIntoViewOptions } from 'scroll-into-view-if-needed';
 
 import { BaseFormAdapter, FormState, CallOpts, FieldState, FieldStaff, ComponentProps, setValuesConfig, ArrayFieldStaff } from './interface';
 
@@ -175,14 +174,16 @@ export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
                 maybePromisedErrors = errors;
             }
             if (!maybePromisedErrors) {
-                resolve(values);
+                const _values = this._adapter.cloneDeep(values);
+                resolve(_values);
                 this.injectErrorToField({});
             } else if (isPromise(maybePromisedErrors)) {
                 maybePromisedErrors.then(
                     (result: any) => {
                         // validate success,clear error
                         if (!result) {
-                            resolve(values);
+                            const _values = this._adapter.cloneDeep(values);
+                            resolve(_values);
                             this.injectErrorToField({});
                         } else {
                             this.data.errors = result;
@@ -237,7 +238,8 @@ export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
                 this._adapter.forceUpdate();
                 const errors = this.getError();
                 if (this._isValid(targetFields)) {
-                    resolve(values);
+                    const _values = this._adapter.cloneDeep(values);
+                    resolve(_values);
                 } else {
                     this._autoScroll();
                     reject(errors);
@@ -694,7 +696,7 @@ export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
         }
     }
 
-    _getErrorFieldAndScroll(scrollOpts?: scrollIntoViewOptions | boolean): void {
+    _getErrorFieldAndScroll(scrollOpts?: ScrollIntoViewOptions | boolean): void {
         const errorDOM = this._adapter.getAllErrorDOM();
         if (errorDOM && errorDOM.length) {
             try {
@@ -704,7 +706,7 @@ export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
         }
     }
 
-    scrollToField(field: string, scrollOpts = { behavior: 'smooth', block: 'start' } as scrollIntoViewOptions): void {
+    scrollToField(field: string, scrollOpts = { behavior: 'smooth', block: 'start' } as ScrollIntoViewOptions): void {
         if (this.getFieldExist(field)) {
             const fieldDOM = this._adapter.getFieldDOM(field);
             scrollIntoView(fieldDOM as Element, scrollOpts);

+ 2 - 3
packages/semi-foundation/form/interface.ts

@@ -1,7 +1,6 @@
 /* eslint-disable @typescript-eslint/ban-types */
-/* eslint-disable max-len */
 import { DefaultAdapter } from '../base/foundation';
-import { Options as scrollIntoViewOptions } from 'scroll-into-view-if-needed';
+import { Options as ScrollIntoViewOptions } from 'scroll-into-view-if-needed';
 
 export type BasicTriggerType = 'blur' | 'change' | 'custom' | 'mount';
 
@@ -66,7 +65,7 @@ export interface BaseFormApi<T extends object = any> {
     getValues: () => T;
     /** set value of multiple fields */
     setValues: (fieldsValue: Partial<T>, config?: setValuesConfig) => void;
-    scrollToField: <K extends keyof T>(field: K, scrollConfig?: scrollIntoViewOptions) => void
+    scrollToField: <K extends keyof T>(field: K, scrollConfig?: ScrollIntoViewOptions) => void
 }
 
 export interface CallOpts {

+ 0 - 3
packages/semi-foundation/form/utils.ts

@@ -1,6 +1,3 @@
-/* eslint-disable prefer-destructuring */
-/* eslint-disable prefer-const */
-/* eslint-disable @typescript-eslint/no-unused-vars */
 import AsyncValidator from 'async-validator';
 import { cloneDeep, toPath } from 'lodash';
 import { FieldValidateTriggerType, BasicTriggerType, ComponentProps, WithFieldOption } from './interface';

+ 1 - 1
packages/semi-foundation/image/previewImageFoundation.ts

@@ -148,7 +148,7 @@ export default class PreviewImageFoundation<P = Record<string, any>, S = Record<
     onWheel = throttle((e: any): void => {
         const { onZoom, zoomStep, maxZoom, minZoom } = this.getProps();
         const { currZoom } = this.getStates();
-        let _zoom:number;
+        let _zoom: number;
         if (e.deltaY < 0) {
             /* zoom in */
             if (currZoom + zoomStep <= maxZoom) {

+ 7 - 5
packages/semi-foundation/image/previewInnerFoundation.ts

@@ -2,13 +2,14 @@ import BaseFoundation, { DefaultAdapter } from "../base/foundation";
 import KeyCode from "../utils/keyCode";
 import { getPreloadImagArr, downloadImage, isTargetEmit } from "./utils";
 
+export type RatioType = "adaptation" | "realSize";
 export interface PreviewInnerAdapter<P = Record<string, any>, S = Record<string, any>> extends DefaultAdapter<P, S> {
     getIsInGroup: () => boolean;
     notifyChange: (index: number, direction: string) => void;
     notifyZoom: (zoom: number, increase: boolean) => void;
     notifyClose: () => void;
     notifyVisibleChange: (visible: boolean) => void;
-    notifyRatioChange: (type: string) => void;
+    notifyRatioChange: (type: RatioType) => void;
     notifyRotateChange: (angle: number) => void;
     notifyDownload: (src: string, index: number) => void;
     registerKeyDownListener: () => void;
@@ -23,6 +24,7 @@ export interface PreviewInnerAdapter<P = Record<string, any>, S = Record<string,
     enabledBodyScroll: () => void
 }
 
+
 const NOT_CLOSE_TARGETS = ["icon", "footer"];
 const STOP_CLOSE_TARGET = ["icon", "footer", "header"];
 
@@ -138,7 +140,7 @@ export default class PreviewInnerFoundation<P = Record<string, any>, S = Record<
         this._adapter.notifyClose();
     }
 
-    handleAdjustRatio = (type: string) => {
+    handleAdjustRatio = (type: RatioType) => {
         this.setState({
             ratio: type,
         } as any);
@@ -174,14 +176,14 @@ export default class PreviewInnerFoundation<P = Record<string, any>, S = Record<
         const { preLoad, preLoadGap, infinite, currentIndex } = this.getProps();
 
         const { imgSrc }= this.getStates();
-        if (!preLoad || typeof preLoadGap !== "number" || preLoadGap < 1){
+        if (!preLoad || typeof preLoadGap !== "number" || preLoadGap < 1) {
             return;
         }
 
         const preloadImages = getPreloadImagArr(imgSrc, currentIndex, preLoadGap, infinite);
         const Img = new Image();
         let index = 0;
-        function callback(e: any){
+        function callback(e: any) {
             index++;
             if (index < preloadImages.length) {
                 Img.src = preloadImages[index];
@@ -208,7 +210,7 @@ export default class PreviewInnerFoundation<P = Record<string, any>, S = Record<
     preloadSingleImage = () => {
         const { preLoad, preLoadGap, infinite } = this.getProps();
         const { imgSrc, currentIndex, direction, imgLoadStatus } = this.getStates();
-        if (!preLoad || typeof preLoadGap !== "number" || preLoadGap < 1){
+        if (!preLoad || typeof preLoadGap !== "number" || preLoadGap < 1) {
             return;
         }
         // 根据方向决定preload那个index

+ 0 - 2
packages/semi-foundation/input/foundation.ts

@@ -51,7 +51,6 @@ class InputFoundation extends BaseFoundation<InputAdapter> {
         }
     }
 
-    // eslint-disable-next-line
     setDisable() {}
 
     _setInitValue() {
@@ -120,7 +119,6 @@ class InputFoundation extends BaseFoundation<InputAdapter> {
         if (isNumber(maxLength) && maxLength >= 0 && isFunction(getValueLength) && isString(value)) {
             const valueLength = getValueLength(value);
             if (valueLength > maxLength) {
-                // eslint-disable-next-line max-len
                 console.warn('[Semi Input] The input character is truncated because the input length exceeds the maximum length limit');
                 const truncatedValue = this.handleTruncateValue(value, maxLength);
                 return truncatedValue;

+ 0 - 2
packages/semi-foundation/input/textareaFoundation.ts

@@ -52,7 +52,6 @@ export default class TextAreaFoundation extends BaseFoundation<TextAreaAdapter>
         this.setInitValue();
     }
 
-    // eslint-disable-next-line
     destroy() { }
 
     setInitValue() {
@@ -117,7 +116,6 @@ export default class TextAreaFoundation extends BaseFoundation<TextAreaAdapter>
         if (isNumber(maxLength) && maxLength >= 0 && isFunction(getValueLength) && isString(value)) {
             const valueLength = getValueLength(value);
             if (valueLength > maxLength) {
-                // eslint-disable-next-line max-len
                 console.warn('[Semi TextArea] The input character is truncated because the input length exceeds the maximum length limit');
                 const truncatedValue = this.handleTruncateValue(value, maxLength);
                 return truncatedValue;

+ 0 - 5
packages/semi-foundation/inputNumber/foundation.ts

@@ -1,6 +1,3 @@
-/* eslint-disable max-len */
-/* eslint-disable no-param-reassign */
-/* eslint-disable eqeqeq */
 import BaseFoundation, { DefaultAdapter } from '../base/foundation';
 import keyCode from '../utils/keyCode';
 import { numbers } from './constants';
@@ -177,7 +174,6 @@ class InputNumberFoundation extends BaseFoundation<InputNumberAdapter> {
                     const dotBeginStr = dotIndex > -1 ? valueAfterParser.slice(dotIndex) : '';
                     formattedNum += dotBeginStr;
                 } else if (precLength < lengthAfterDot) {
-                    // eslint-disable-next-line max-depth
                     for (let i = 0; i < lengthAfterDot - precLength; i++) {
                         formattedNum += '0';
                     }
@@ -261,7 +257,6 @@ class InputNumberFoundation extends BaseFoundation<InputNumberAdapter> {
                 }
 
                 if (willSetNum != null) {
-                    // eslint-disable-next-line max-depth
                     if (!this._isControlledComponent('value')) {
                         this._adapter.setNumber(willSetNum);
                     }

+ 3 - 4
packages/semi-foundation/modal/modalFoundation.ts

@@ -60,8 +60,8 @@ export interface ModalProps {
 export interface ModalState {
     displayNone: boolean;
     isFullScreen: boolean;
-    onOKReturnPromiseStatus?:"pending"|"fulfilled"|"rejected";
-    onCancelReturnPromiseStatus?:"pending"|"fulfilled"|"rejected"
+    onOKReturnPromiseStatus?: "pending"|"fulfilled"|"rejected";
+    onCancelReturnPromiseStatus?: "pending"|"fulfilled"|"rejected"
 }
 
 export default class ModalFoundation extends BaseFoundation<ModalAdapter> {
@@ -91,7 +91,7 @@ export default class ModalFoundation extends BaseFoundation<ModalAdapter> {
 
     handleOk(e: any) {
         const result = this._adapter.notifyOk(e);
-        if (isPromise(result)){
+        if (isPromise(result)) {
             this._adapter.setState({ onOKReturnPromiseStatus: "pending" });
             (result as Promise<any>)?.then(()=>{
                 this._adapter.setState({ onOKReturnPromiseStatus: "fulfilled" });
@@ -121,7 +121,6 @@ export default class ModalFoundation extends BaseFoundation<ModalAdapter> {
     };
 
 
-    // // eslint-disable-next-line max-len
     // mergeMotionProp = (motion: Motion, prop: string, cb: () => void) => {
     //     const mergedMotion = typeof (motion) === 'undefined' || motion ? {
     //         ...(motion as { [key: string]: (() => void) | boolean }),

+ 0 - 2
packages/semi-foundation/navigation/NavItem.ts

@@ -9,9 +9,7 @@ export default class NavItem {
     items: any[];
     toggleIcon: any;
     constructor(options: any = {}) {
-        // eslint-disable-next-line eqeqeq
         if (options == null || typeof options !== 'object') {
-            // eslint-disable-next-line no-param-reassign
             options = {
                 text: options,
                 itemKey: options,

+ 1 - 3
packages/semi-foundation/navigation/foundation.ts

@@ -1,5 +1,3 @@
-/* eslint-disable max-depth */
-/* eslint-disable max-len */
 import BaseFoundation, { DefaultAdapter } from '../base/foundation';
 import NavItem from './NavItem';
 import { ItemProps } from './itemFoundation';
@@ -199,7 +197,7 @@ export default class NavigationFoundation<P = Record<string, any>, S = Record<st
         return [...willOpenKeySet];
     }
 
-    destroy() {} // eslint-disable-line
+    destroy() {}
 
     selectLevelZeroParentKeys(itemKeysMap: ItemKey2ParentKeysMap, ...itemKeys: (string | number)[]) {
         const _itemKeysMap = isNullOrUndefined(itemKeysMap) ? this.getState('itemKeysMap') : itemKeysMap;

+ 0 - 1
packages/semi-foundation/navigation/itemFoundation.ts

@@ -60,7 +60,6 @@ export default class ItemFoundation<P = Record<string, any>, S = Record<string,
     }
 
     isValidKey(itemKey: string) {
-        // eslint-disable-next-line eqeqeq
         return itemKey != null && (typeof itemKey === 'string' || typeof itemKey === 'number');
     }
 

+ 1 - 2
packages/semi-foundation/navigation/subNavFoundation.ts

@@ -52,7 +52,7 @@ export default class SubNavFoundation<P = Record<string, any>, S = Record<string
         this._timer = null;
     }
 
-    destroy() {} // eslint-disable-line
+    destroy() {}
 
     clearDelayTimer() {
         if (this._timer) {
@@ -62,7 +62,6 @@ export default class SubNavFoundation<P = Record<string, any>, S = Record<string
     }
 
     isValidKey(itemKey: string | number) {
-        // eslint-disable-next-line eqeqeq
         return itemKey != null && (typeof itemKey === 'number' || typeof itemKey === 'string');
     }
 

+ 0 - 2
packages/semi-foundation/notification/notificationListFoundation.ts

@@ -1,10 +1,8 @@
-/* eslint-disable no-useless-constructor */
 import BaseFoundation, { DefaultAdapter } from '../base/foundation';
 import { NoticeInstance, NoticePosition, NoticeProps } from '../notification/notificationFoundation';
 import { strings } from './constants';
 
 
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
 export interface NotificationListProps {
 
 }

+ 2 - 2
packages/semi-foundation/package.json

@@ -1,13 +1,13 @@
 {
     "name": "@douyinfe/semi-foundation",
-    "version": "2.39.0-beta.0",
+    "version": "2.39.2",
     "description": "",
     "scripts": {
         "build:lib": "node ./scripts/compileLib.js",
         "prepublishOnly": "npm run build:lib"
     },
     "dependencies": {
-        "@douyinfe/semi-animation": "2.39.0-beta.0",
+        "@douyinfe/semi-animation": "2.39.2",
         "async-validator": "^3.5.0",
         "classnames": "^2.2.6",
         "date-fns": "^2.29.3",

+ 13 - 3
packages/semi-foundation/pagination/foundation.ts

@@ -1,5 +1,3 @@
-/* eslint-disable max-len */
-/* eslint-disable no-param-reassign */
 import BaseFoundation, { DefaultAdapter } from '../base/foundation';
 import { numbers } from './constants';
 
@@ -9,6 +7,7 @@ export interface PaginationAdapter<P = Record<string, any>, S = Record<string, a
     updateTotal: (total: number) => void;
     updatePageSize: (pageSize: number) => void;
     updateQuickJumpPage: (quickJumpPage: string | number) => void;
+    updateAllPageNumbers: (allPageNumbers: number[]) => void;
     setCurrentPage: (pageIndex: number) => void;
     registerKeyDownHandler: (handler: KeyDownHandler) => void;
     unregisterKeyDownHandler: (handler: KeyDownHandler) => void;
@@ -104,6 +103,18 @@ class PaginationFoundation<P = Record<string, any>, S = Record<string, any>> ext
         this._adapter.updatePageSize(pageSize);
     }
 
+    updateAllPageNumbers(total: number, pageSize: number) {
+        // only need to update in small size
+
+        const { size, hoverShowPageSelect, disabled } = this.getProps();
+        if (size !== 'small' || !hoverShowPageSelect || disabled) {
+            return;
+        } else {
+            const pageNumbers = Array.from({ length: Math.ceil(total / pageSize) }, (v, i) => i + 1);
+            this._adapter.updateAllPageNumbers(pageNumbers);
+        }
+    }
+
     goPrev() {
         const { currentPage } = this.getStates();
         if (currentPage > 1) {
@@ -203,7 +214,6 @@ class PaginationFoundation<P = Record<string, any>, S = Record<string, any>> ext
     }
 
     // TODO handle tab/enter events
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     handleKeyDown() {
     }
 

+ 0 - 1
packages/semi-foundation/popconfirm/popconfirmFoundation.ts

@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/no-empty-function */
 
 import { get } from 'lodash';
 

+ 0 - 1
packages/semi-foundation/radio/radioGroupFoundation.ts

@@ -69,6 +69,5 @@ export default class RadioGroupFoundation extends BaseFoundation<RadioGroupAdapt
         this._adapter.setValue(value);
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     destroy() {}
 }

+ 0 - 1
packages/semi-foundation/radio/radioInnerFoundation.ts

@@ -60,6 +60,5 @@ export default class RadioInnerFoundation extends BaseFoundation<RadioInnerAdapt
         }
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     destroy() {}
 }

+ 0 - 1
packages/semi-foundation/rating/foundation.ts

@@ -1,4 +1,3 @@
-/* eslint-disable no-param-reassign */
 import BaseFoundation, { DefaultAdapter } from '../base/foundation';
 import warning from '../utils/warning';
 

+ 0 - 5
packages/semi-foundation/select/foundation.ts

@@ -1,5 +1,3 @@
-/* argus-disable unPkgSensitiveInfo */
-/* eslint-disable max-len */
 import BaseFoundation, { DefaultAdapter } from '../base/foundation';
 import { isNumber, isString, isEqual, omit } from 'lodash';
 import KeyCode, { ENTER_KEY } from '../utils/keyCode';
@@ -66,7 +64,6 @@ export default class SelectFoundation extends BaseFoundation<SelectAdapter> {
     }
 
     // keyboard event listner
-    // eslint-disable-next-line @typescript-eslint/member-ordering
     _keydownHandler: (...arg: any[]) => void | null = null;
 
     init() {
@@ -896,7 +893,6 @@ export default class SelectFoundation extends BaseFoundation<SelectAdapter> {
                     index = index - 1;
                     targetLabel = keys[index];
                     targetItem = selections.get(targetLabel);
-                    // eslint-disable-next-line
                     if (index == 0 && targetItem.disabled) {
                         isAllDisabled = true;
                     }
@@ -938,7 +934,6 @@ export default class SelectFoundation extends BaseFoundation<SelectAdapter> {
     }
 
     _removeInternalKey(option: BasicOptionProps) {
-        // eslint-disable-next-line
         let newOption = { ...option };
         delete newOption._parentGroup;
         delete newOption._show;

+ 0 - 2
packages/semi-foundation/select/optionFoundation.ts

@@ -22,10 +22,8 @@ export default class OptionFoundation extends BaseFoundation<OptionDefaultAdapte
         super({ ...adapter });
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     init() {}
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     destroy() {}
 
     onOptionClick(option: BasicOptionProps) {

+ 0 - 7
packages/semi-foundation/slider/foundation.ts

@@ -1,6 +1,3 @@
-/* eslint-disable no-param-reassign */
-/* eslint-disable max-len */
-/* eslint-disable no-nested-ternary */
 import BaseFoundation, { DefaultAdapter } from '../base/foundation';
 import touchEventPolyfill from '../utils/touchPolyfill';
 import warning from '../utils/warning';
@@ -269,7 +266,6 @@ export default class SliderFoundation extends BaseFoundation<SliderAdapter> {
             startPos = vertical ? sliderY : sliderX;
         }
         //  startPos = chooseMovePos === 'max' && isDrag ? currentPos[0] : startPos;
-        // eslint-disable-next-line one-var
         let endPos;
         if (vertical && verticalReverse) {
             endPos = sliderY;
@@ -314,8 +310,6 @@ export default class SliderFoundation extends BaseFoundation<SliderAdapter> {
         } else {
             stepValue = ((pos - startPos) / len) * (max - min) + min;
         }
-        // debugger
-        // eslint-disable-next-line one-var
         let compareValue;
         if (range) {
             compareValue = isMin ? currentValue[0] : currentValue[1];
@@ -680,7 +674,6 @@ export default class SliderFoundation extends BaseFoundation<SliderAdapter> {
         }
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     onFocus = (e: any, handler: 'min'| 'max') => {
         handlePrevent(e);
         const { target } = e;

+ 0 - 1
packages/semi-foundation/switch/foundation.ts

@@ -53,6 +53,5 @@ export default class SwitchFoundation<P = Record<string, any>, S = Record<string
         this._adapter.setFocusVisible(false);
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     destroy(): void {}
 }

+ 0 - 1
packages/semi-foundation/table/bodyFoundation.ts

@@ -32,7 +32,6 @@ export default class TableBodyFoundation<P = Record<string, any>, S = Record<str
 
         if (!isObject(newExpandRelatedProps) && !newExpandRelatedProps) {
             const expandRelatedProps = strings.EXPAND_RELATED_PROPS;
-            // eslint-disable-next-line no-param-reassign
             newExpandRelatedProps = expandRelatedProps.map(key => get(props, key, undefined));
         }
         this._adapter.setCachedExpandRelatedProps(newExpandRelatedProps);

+ 0 - 1
packages/semi-foundation/table/constants.ts

@@ -1,4 +1,3 @@
-/* eslint-disable max-len */
 import { BASE_CLASS_PREFIX } from '../base/constants';
 
 const cssClasses = {

+ 0 - 8
packages/semi-foundation/table/foundation.ts

@@ -1,10 +1,3 @@
-/* eslint-disable prefer-destructuring */
-/* eslint-disable max-depth */
-/* eslint-disable max-nested-callbacks */
-/* eslint-disable max-len */
-/* eslint-disable no-param-reassign */
-/* eslint-disable eqeqeq */
-/* eslint-disable @typescript-eslint/no-empty-function */
 import {
     get,
     merge,
@@ -1040,7 +1033,6 @@ class TableFoundation<RecordType> extends BaseFoundation<TableAdapter<RecordType
         let filterObj: BaseColumnProps<RecordType> = this.getQuery(dataIndex);
         const filterDropdownVisible = visible;
 
-        // eslint-disable-next-line @typescript-eslint/no-unused-vars
         filterObj = { ...filterObj, filterDropdownVisible };
 
         if (!this._filterShowIsControlled()) {

+ 0 - 1
packages/semi-foundation/table/tableRowFoundation.ts

@@ -8,7 +8,6 @@ export interface TableRowAdapter<P = Record<string, any>, S = Record<string, any
     notifyMouseLeave: (record: Record<string, any>, e: any) => void
 }
 
-// eslint-disable-next-line max-len
 export default class TableRowFoundation<P = Record<string, any>, S = Record<string, any>> extends BaseFoundation<TableRowAdapter<P, S>, P, S> {
     handleClick(e: any) {
         const { expanded, rowKey } = this.getProps();

+ 0 - 3
packages/semi-foundation/table/utils.ts

@@ -1,6 +1,3 @@
-/* eslint-disable max-len */
-/* eslint-disable no-param-reassign */
-/* eslint-disable eqeqeq */
 import {
     isEqualWith,
     get,

+ 19 - 2
packages/semi-foundation/tag/constants.ts

@@ -1,4 +1,3 @@
-/* eslint-disable max-len */
 import { BASE_CLASS_PREFIX } from '../base/constants';
 
 const cssClasses = {
@@ -7,7 +6,25 @@ const cssClasses = {
 
 const strings = {
     TAG_SIZE: ['default', 'small', 'large'],
-    TAG_COLOR: ['grey', 'red', 'pink', 'purple', 'violet', 'indigo', 'blue', 'light-blue', 'cyan', 'teal', 'green', 'light-green', 'lime', 'yellow', 'amber', 'orange', 'white'],
+    TAG_COLOR: [
+        'grey',
+        'red',
+        'pink',
+        'purple',
+        'violet',
+        'indigo',
+        'blue',
+        'light-blue',
+        'cyan',
+        'teal',
+        'green',
+        'light-green',
+        'lime',
+        'yellow',
+        'amber',
+        'orange',
+        'white',
+    ],
     TAG_TYPE: ['light', 'solid', 'ghost'],
     AVATAR_SHAPE: ['square', 'circle'],
 };

+ 0 - 2
packages/semi-foundation/tagInput/foundation.ts

@@ -117,10 +117,8 @@ class TagInputFoundation extends BaseFoundation<TagInputAdapter> {
             const maxLen = Math.max(valueArr.length, inputArr.length);
             for (let i = 0; i < maxLen; i++) {
                 // When the input length is increasing
-                // eslint-disable-next-line max-len
                 if (!isUndefined(valueArr[i]) && (isUndefined(inputArr[i]) || valueArr[i].length > inputArr[i].length)) {
                     // When the input length exceeds maxLength
-                    // eslint-disable-next-line max-depth
                     if (valueArr[i].length > maxLength) {
                         allowChange = false;
                         isFunction(onInputExceed) && onInputExceed(value);

+ 0 - 1
packages/semi-foundation/timePicker/foundation.ts

@@ -1,4 +1,3 @@
-/* eslint-disable max-len */
 import { strings } from './constants';
 import BaseFoundation, { DefaultAdapter } from '../base/foundation';
 import {

+ 0 - 2
packages/semi-foundation/timePicker/inputFoundation.ts

@@ -13,10 +13,8 @@ class TimePickerFoundation extends BaseFoundation<TimeInputAdapter> {
         super({ ...adapter });
     }
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     init() {}
 
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
     destroy() {}
 
     handleFocus(e: any) {

+ 0 - 1
packages/semi-foundation/timePicker/utils/index.ts

@@ -1,4 +1,3 @@
-/* eslint-disable max-len */
 import { format, parse } from 'date-fns';
 import { toNumber } from 'lodash';
 import { strings } from '../constants';

+ 1 - 4
packages/semi-foundation/toast/toastFoundation.ts

@@ -35,10 +35,7 @@ export interface ToastInstance extends ToastProps{
     motion?: boolean
 }
 
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
-export interface ToastState{
-
-}
+export interface ToastState{}
 
 
 export interface ToastAdapter extends DefaultAdapter<ToastProps, ToastState>{

+ 0 - 1
packages/semi-foundation/toast/toastListFoundation.ts

@@ -1,7 +1,6 @@
 import BaseFoundation, { DefaultAdapter } from '../base/foundation';
 import { ToastInstance, ToastProps } from '../toast/toastFoundation';
 
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
 export interface ToastListProps{
 
 }

+ 0 - 10
packages/semi-foundation/tooltip/foundation.ts

@@ -1,6 +1,3 @@
-/* eslint-disable no-param-reassign */
-/* eslint-disable prefer-destructuring, max-lines-per-function, one-var, max-len, @typescript-eslint/restrict-plus-operands */
-/* argus-disable unPkgSensitiveInfo */
 import { get, isEmpty } from 'lodash';
 import { DOMRectLikeType } from '../utils/dom';
 import BaseFoundation, { DefaultAdapter } from '../base/foundation';
@@ -325,7 +322,6 @@ export default class Tooltip<P = Record<string, any>, S = Record<string, any>> e
         this._adapter.insertPortal(content, { left: -9999, top: -9999 }); // offscreen rendering
 
         if (trigger === 'custom') {
-            // eslint-disable-next-line
             this._adapter.registerClickOutsideHandler(() => {});
         }
 
@@ -367,7 +363,6 @@ export default class Tooltip<P = Record<string, any>, S = Record<string, any>> e
     }
 
     calcTransformOrigin(position: Position, triggerRect: DOMRect, translateX: number, translateY: number) {
-        // eslint-disable-next-line
         if (position && triggerRect && translateX != null && translateY != null) {
             if (this.getProp('transformFromCenter')) {
                 if (['topLeft', 'bottomLeft'].includes(position)) {
@@ -402,9 +397,7 @@ export default class Tooltip<P = Record<string, any>, S = Record<string, any>> e
             ...defaultRect,
         };
         const wrapperRect = (isEmpty(props.wrapperRect) ? props.wrapperRect : this._adapter.getWrapperBounding()) || { ...defaultRect as any };
-        // eslint-disable-next-line
         const position = props.position != null ? props.position : this.getProp('position');
-        // eslint-disable-next-line
         const SPACING = spacing != null ? spacing : this.getProp('spacing');
         const { arrowPointAtCenter, showArrow, arrowBounding } = this.getProps();
         const pointAtCenter = showArrow && arrowPointAtCenter;
@@ -600,7 +593,6 @@ export default class Tooltip<P = Record<string, any>, S = Record<string, any>> e
 
         let transform = '';
 
-        // eslint-disable-next-line
         if (translateX != null) {
             transform += `translateX(${translateX * 100}%) `;
             Object.defineProperty(style, 'translateX', {
@@ -608,7 +600,6 @@ export default class Tooltip<P = Record<string, any>, S = Record<string, any>> e
                 value: translateX,
             });
         }
-        // eslint-disable-next-line
         if (translateY != null) {
             transform += `translateY(${translateY * 100}%) `;
             Object.defineProperty(style, 'translateY', {
@@ -616,7 +607,6 @@ export default class Tooltip<P = Record<string, any>, S = Record<string, any>> e
                 value: translateY,
             });
         }
-        // eslint-disable-next-line
         if (transformOrigin != null) {
             style.transformOrigin = transformOrigin;
         }

+ 0 - 1
packages/semi-foundation/transfer/foundation.ts

@@ -42,7 +42,6 @@ export interface TransferAdapter<P = Record<string, any>, S = Record<string, any
     searchTree: (keyword: string) => void
 }
 
-// eslint-disable-next-line max-len
 export default class TransferFoundation<P = Record<string, any>, S = Record<string, any>> extends BaseFoundation<TransferAdapter<P, S>> {
     constructor(adapter: TransferAdapter<P, S>) {
         super({ ...adapter });

+ 0 - 1
packages/semi-foundation/tree/foundation.ts

@@ -674,7 +674,6 @@ export default class TreeFoundation extends BaseFoundation<TreeAdapter, BasicTre
         });
     }
 
-    // eslint-disable-next-line max-len
     handleNodeLoad(loadedKeys: Set<string>, loadingKeys: Set<string>, data: BasicTreeNodeData, resolve: (value?: any) => void) {
         const { loadData, onLoad } = this.getProps();
         const { key } = data;

+ 1 - 10
packages/semi-foundation/tree/treeUtil.ts

@@ -37,7 +37,6 @@ function isValid(val: any) {
  * @param filteredShownKeys
  * need expanded keys, provides `true` means all expanded
  */
-// eslint-disable-next-line max-len
 export function flattenTreeData(treeNodeList: any[], expandedKeys: Set<string>, filteredShownKeys: boolean | Set<any> = false) {
     const flattenList: any[] = [];
     const filterSearch = Boolean(filteredShownKeys);
@@ -61,7 +60,6 @@ export function flattenTreeData(treeNodeList: any[], expandedKeys: Set<string>,
             }
 
             // Loop treeNode children
-            // eslint-disable-next-line max-len
             if (expandedKeys.has(mergedKey) && (!filterSearch || (!isBooleanFilteredShownKeys && filteredShownKeys.has(mergedKey)))) {
                 flattenNode.children = flatten(treeNode.children || [], flattenNode);
             } else {
@@ -317,7 +315,7 @@ export function calcCheckedKeys(values: any, keyEntities: KeyEntities) {
     let halfCheckedKeys = new Set([]);
     let visited: any[] = [];
 
-    const levelMap:{[key: number]: string[]} = getSortedKeyList(keyList, keyEntities);
+    const levelMap: {[key: number]: string[]} = getSortedKeyList(keyList, keyEntities);
 
     const calcCurrLevel = (node: any) => {
         const { key, parent, level } = node;
@@ -369,7 +367,6 @@ export function calcExpandedKeys(keyList: any[] = [], keyEntities: KeyEntities,
 }
 
 /* Calculate the expanded node by value */
-// eslint-disable-next-line max-len
 export function calcExpandedKeysForValues(value: any, keyEntities: KeyEntities, isMultiple: boolean, valueEntities: any) {
     const keys = findKeysForValues(value, valueEntities, isMultiple);
     return new Set(findAncestorKeys(keys, keyEntities, false));
@@ -481,7 +478,6 @@ export function getMotionKeys(eventKey: string, expandedKeys: Set<string>, keyEn
     return res;
 }
 
-// eslint-disable-next-line max-len
 export function calcCheckedKeysForChecked(key: string, keyEntities: KeyEntities, checkedKeys: Set<string>, halfCheckedKeys: Set<string>) {
     const descendantKeys = findDescendantKeys([key], keyEntities, true);
     const nodeItem = keyEntities[key];
@@ -490,10 +486,8 @@ export function calcCheckedKeysForChecked(key: string, keyEntities: KeyEntities,
         if (!node.parent) {
             return;
         }
-        // eslint-disable-next-line @typescript-eslint/no-shadow
         const { key } = node;
         const siblingKeys = findSiblingKeys([key], keyEntities);
-        // eslint-disable-next-line @typescript-eslint/no-shadow
         const allChecked = siblingKeys.every(key => checkedKeys.has(key));
         if (!allChecked) {
             const ancestorKeys = findAncestorKeys([key], keyEntities, false);
@@ -511,7 +505,6 @@ export function calcCheckedKeysForChecked(key: string, keyEntities: KeyEntities,
     };
 }
 
-// eslint-disable-next-line max-len
 export function calcCheckedKeysForUnchecked(key: string, keyEntities: KeyEntities, checkedKeys: Set<string>, halfCheckedKeys: Set<string>) {
     const descendantKeys = findDescendantKeys([key], keyEntities, true);
     const nodeItem = keyEntities[key];
@@ -534,10 +527,8 @@ export function calcCheckedKeysForUnchecked(key: string, keyEntities: KeyEntitie
             return;
         }
         // Has a parent node, and the parent node is checked or halfChecked
-        // eslint-disable-next-line @typescript-eslint/no-shadow
         const { key } = node;
         const siblingKeys = findSiblingKeys([key], keyEntities);
-        // eslint-disable-next-line @typescript-eslint/no-shadow
         const anyChecked = siblingKeys.some(key => checkedKeys.has(key) || halfCheckedKeys.has(key));
         const ancestorKeys = findAncestorKeys([key], keyEntities, false);
         // If there is checked or halfChecked in the sibling node, you need to change the parent node to halfChecked

+ 0 - 1
packages/semi-foundation/treeSelect/foundation.ts

@@ -200,7 +200,6 @@ export interface TreeSelectAdapter<P = Record<string, any>, S = Record<string, a
     updateIsFocus: (bool: boolean) => void
 }
 
-// eslint-disable-next-line max-len
 export default class TreeSelectFoundation<P = Record<string, any>, S = Record<string, any>> extends BaseFoundation<TreeSelectAdapter<P, S>, P, S> {
 
     constructor(adapter: TreeSelectAdapter<P, S>) {

+ 3 - 1
packages/semi-foundation/upload/foundation.ts

@@ -255,7 +255,9 @@ class UploadFoundation<P = Record<string, any>, S = Record<string, any>> extends
         this._adapter.notifyChange({ currentFile: newFileItem, fileList: newFileList });
         this._adapter.updateFileList(newFileList, () => {
             this._adapter.resetReplaceInput();
-            this.upload(newFileItem);
+            if (!newFileItem._sizeInvalid) {
+                this.upload(newFileItem);
+            }
         });
     }
 

+ 0 - 1
packages/semi-foundation/utils/Event.ts

@@ -29,7 +29,6 @@ export default class Event {
                 const callbacks = this._eventMap.get(event);
                 if (Array.isArray(callbacks) && callbacks.length) {
                     let index = -1;
-                    // eslint-disable-next-line max-depth
                     while ((index = callbacks.findIndex(cb => cb === callback)) > -1) {
                         callbacks.splice(index, 1);
                     }

+ 0 - 2
packages/semi-foundation/utils/date-fns-extra.ts

@@ -1,5 +1,3 @@
-/* eslint-disable max-len */
-/* eslint-disable eqeqeq */
 import {
     toDate,
     format as dateFnsFormat,

+ 0 - 1
packages/semi-foundation/utils/function.ts

@@ -1,5 +1,4 @@
 /**
  * no operation
  */
-// eslint-disable-next-line @typescript-eslint/no-empty-function
 export function noop() {}

+ 0 - 3
packages/semi-foundation/utils/object.ts

@@ -1,5 +1,3 @@
-/* eslint-disable max-len */
-/* argus-disable unPkgSensitiveInfo */
 import {
     get as lodashGet,
     set as lodashSet,
@@ -68,7 +66,6 @@ function cleanup(obj: ObjectType, path: string[], pull = true) {
     // }
 
     // Delete object if its empty
-    // eslint-disable-next-line
     if (Array.isArray(target) && target.every(e => e == null)) {
         lodashUnset(obj, path);
     } else if (isEmptyObject(target)) {

+ 1 - 1
packages/semi-icons/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-icons",
-    "version": "2.39.0-beta.0",
+    "version": "2.39.2",
     "description": "semi icons",
     "keywords": [
         "semi",

+ 1 - 1
packages/semi-illustrations/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-illustrations",
-    "version": "2.39.0-beta.0",
+    "version": "2.39.2",
     "description": "semi illustrations",
     "keywords": [
         "semi",

+ 2 - 2
packages/semi-next/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-next",
-    "version": "2.39.0-beta.0",
+    "version": "2.39.2",
     "description": "Plugin that support Semi Design in Next.js",
     "author": "伍浩威 <[email protected]>",
     "homepage": "",
@@ -23,7 +23,7 @@
         "typescript": "^4"
     },
     "dependencies": {
-        "@douyinfe/semi-webpack-plugin": "2.39.0-beta.0"
+        "@douyinfe/semi-webpack-plugin": "2.39.2"
     },
     "gitHead": "eb34a4f25f002bb4cbcfa51f3df93bed868c831a"
 }

+ 1 - 1
packages/semi-rspack/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-rspack-plugin",
-    "version": "2.39.0-beta.0",
+    "version": "2.39.2",
     "description": "",
     "homepage": "",
     "license": "MIT",

+ 1 - 1
packages/semi-scss-compile/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-scss-compile",
-    "version": "2.39.0-beta.0",
+    "version": "2.39.2",
     "description": "compile semi scss to css",
     "author": "[email protected]",
     "license": "MIT",

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini