Browse Source

Merge branch 'release'

pointhalo 2 years ago
parent
commit
f8fba26837
67 changed files with 897 additions and 279 deletions
  1. 9 6
      content/basic/typography/index-en-US.md
  2. 32 28
      content/basic/typography/index.md
  3. 1 0
      content/input/cascader/index-en-US.md
  4. 66 65
      content/input/cascader/index.md
  5. 3 0
      content/input/datepicker/index-en-US.md
  6. 3 0
      content/input/datepicker/index.md
  7. 35 33
      content/input/input/index-en-US.md
  8. 36 34
      content/input/input/index.md
  9. 2 0
      content/input/select/index-en-US.md
  10. 2 0
      content/input/select/index.md
  11. 1 0
      content/input/timepicker/index-en-US.md
  12. 1 0
      content/input/timepicker/index.md
  13. 1 0
      content/input/treeselect/index-en-US.md
  14. 1 0
      content/input/treeselect/index.md
  15. 1 1
      content/navigation/anchor/index-en-US.md
  16. 2 2
      content/navigation/anchor/index.md
  17. 12 2
      content/navigation/tabs/index-en-US.md
  18. 9 3
      content/navigation/tabs/index.md
  19. 38 6
      content/show/calendar/index-en-US.md
  20. 39 5
      content/show/calendar/index.md
  21. 6 6
      content/show/carousel/index-en-US.md
  22. 7 7
      content/show/carousel/index.md
  23. 31 0
      content/start/changelog/index-en-US.md
  24. 35 3
      content/start/changelog/index.md
  25. 1 1
      lerna.json
  26. 1 1
      packages/semi-animation-react/package.json
  27. 1 1
      packages/semi-animation-styled/package.json
  28. 1 1
      packages/semi-animation/package.json
  29. 1 1
      packages/semi-eslint-plugin/package.json
  30. 1 1
      packages/semi-foundation/calendar/calendar.scss
  31. 2 1
      packages/semi-foundation/calendar/foundation.ts
  32. 8 4
      packages/semi-foundation/datePicker/_utils/getYears.ts
  33. 1 1
      packages/semi-foundation/datePicker/foundation.ts
  34. 2 1
      packages/semi-foundation/datePicker/monthsGridFoundation.ts
  35. 3 1
      packages/semi-foundation/datePicker/yearAndMonthFoundation.ts
  36. 1 1
      packages/semi-foundation/package.json
  37. 1 0
      packages/semi-foundation/typography/constants.ts
  38. 131 6
      packages/semi-foundation/typography/typography.scss
  39. 48 0
      packages/semi-foundation/typography/variables.scss
  40. 1 1
      packages/semi-icons/package.json
  41. 1 1
      packages/semi-illustrations/package.json
  42. 1 1
      packages/semi-next/package.json
  43. 1 1
      packages/semi-rspack/package.json
  44. 1 1
      packages/semi-scss-compile/package.json
  45. 1 1
      packages/semi-theme-default/package.json
  46. 28 0
      packages/semi-ui/anchor/_story/anchor.stories.jsx
  47. 2 1
      packages/semi-ui/anchor/index.tsx
  48. 8 2
      packages/semi-ui/anchor/link.tsx
  49. 67 0
      packages/semi-ui/calendar/__test__/calendar.test.js
  50. 5 1
      packages/semi-ui/calendar/dayCalendar.tsx
  51. 1 0
      packages/semi-ui/calendar/index.tsx
  52. 3 1
      packages/semi-ui/calendar/interface.ts
  53. 8 4
      packages/semi-ui/calendar/monthCalendar.tsx
  54. 21 9
      packages/semi-ui/calendar/rangeCalendar.tsx
  55. 20 8
      packages/semi-ui/calendar/weekCalendar.tsx
  56. 18 0
      packages/semi-ui/datePicker/_story/v2/FeatYearScrollRange.tsx
  57. 1 0
      packages/semi-ui/datePicker/_story/v2/index.js
  58. 8 2
      packages/semi-ui/datePicker/datePicker.tsx
  59. 3 1
      packages/semi-ui/datePicker/monthsGrid.tsx
  60. 5 3
      packages/semi-ui/datePicker/yearAndMonth.tsx
  61. 7 8
      packages/semi-ui/package.json
  62. 4 1
      packages/semi-ui/select/index.tsx
  63. 19 6
      packages/semi-ui/typography/base.tsx
  64. 1 1
      packages/semi-ui/typography/index.tsx
  65. 6 2
      packages/semi-ui/typography/title.tsx
  66. 1 1
      packages/semi-webpack/package.json
  67. 79 0
      yarn.lock

+ 9 - 6
content/basic/typography/index-en-US.md

@@ -315,10 +315,11 @@ function Demo() {
 ### Ellipsis
 
 Show ellipsis if text is overflowed. Refer to [Ellipsis Config](#Ellipsis-Config) for detailed configuration.
-> At this moment, only pure text truncation is supported.
 
 <Notice title='Notice'>
-    ellipsis only supports truncation of plain text, and does not support complex types such as reactNode. Please ensure that the content type of children is string
+    1. ellipsis only supports truncation of plain text, and does not support complex types such as reactNode. Please ensure that the content type of children is string <br/><br/>
+    2. To achieve abbreviation, ellipsis needs to have a clear width or maxWidth limit for comparison and judgment. If the width is not set by itself (for example, purely relying on the flex property to expand), or the width is an indefinite value such as 100%, the parent needs to have a clear width or maxWidth<br/><br/>
+    3. Ellipsis needs to obtain information such as the width and height of the DOM to make basic judgments. If there is a display:none style in itself or the parent, the value will be incorrect, and the abbreviation will be invalid at this time<br/>
 </Notice>
 
 ```jsx live=true
@@ -434,7 +435,7 @@ function Demo() {
 ### Typography.Text
 
 | Properties | Instructions                                                                                                                             | type                                                  | Default   | version |
-| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | --------- | ------- |
+| ---------- |------------------------------------------------------------------------------------------------------------------------------------------| ----------------------------------------------------- | --------- | ------- |
 | copyable   | Toggle whether to be copyable                                                                                                            | boolean \| object:[Copyable Config](#Copyable-Config) | false     | 0.27.0  |
 | code       | wrap with `code` element                                                                                                                 | boolean                                               | -         |         |
 | component  | Custom rendering html element                                                                                                            | html element                                          | span      |         |
@@ -444,25 +445,27 @@ function Demo() {
 | icon       | Prefix icon.                                                                                                                             | ReactNode                                             | -         | 0.27.0  |
 | link       | Toggle whether to display as a link. When passing object, the attributes will be transparently passed to the a tag                       | boolean\|object                                       | false     | 0.27.0  |
 | mark       | Marked style                                                                                                                             | boolean                                               | false     | 0.27.0  |
-| size       | Size, one of `normal`,`small`                                                                                                           | string                                                | `normal`  | 0.27.0  |
+| size       | Size, one of `normal`,`small`                                                                                                            | string                                                | `normal`  | 0.27.0  |
 | strong     | Bold style                                                                                                                               | boolean                                               | false     | 0.27.0  |
 | type       | Type, one of `primary`, `secondary`, `warning`, `danger`, `tertiary`(**v>=1.2.0**) , `quaternary`(**v>=1.2.0**), `success`(**v>=1.7.0**) | string                                                | `primary` | 0.27.0  |
 | underline  | Underlined style                                                                                                                         | boolean                                               | false     | 0.27.0  |
+| weight | set font weight                                                                                                                          |  number                                        |  | 2.34.0 |
 
 ### Typography.Title
 
 | Properties | Instructions                                                                                                                            | type                                                  | Default   | version |
-| ---------- | --------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | --------- | ------- |
+| ---------- |-----------------------------------------------------------------------------------------------------------------------------------------| ----------------------------------------------------- | --------- | ------- |
 | copyable   | Toggle whether to be copyable                                                                                                           | boolean \| object:[Copyable Config](#Copyable-Config) | false     | 0.27.0  |
 | component  | Custom rendering html element. The default is determined by heading prop                                                                | html element                                          | h1~h6     |         |
 | delete     | Deleted style                                                                                                                           | boolean                                               | false     | 0.27.0  |
 | disabled   | Disabled style                                                                                                                          | boolean                                               | false     | 0.27.0  |
 | ellipsis   | Display ellipsis when text overflows                                                                                                    | boolean\|object:Ellipsis Config                       | false     | 0.34.0  |
-| heading    | Heading level, one of 1, 2, 3,4,5,6                                                                                                | number                                                | 1         | 0.27.0  |
+| heading    | Heading level, one of 1, 2, 3,4,5,6                                                                                                     | number                                                | 1         | 0.27.0  |
 | link       | Toggle whether to display as a link. When passing object, the attributes will be transparently passed to the a tag                      | boolean\|object                                       | false     | 0.27.0  |
 | mark       | Marked style                                                                                                                            | boolean                                               | false     | 0.27.0  |
 | type       | Type, one of `primary`, `secondary`, `warning`, `danger`, `tertiary`(**v>=1.2.0**), `quaternary`(**v>=1.2.0**), `success`(**v>=1.7.0**) | string                                                | `primary` | 0.27.0  |
 | underline  | Underlined style                                                                                                                        | boolean                                               | false     | 0.27.0  |
+| weight | set font weight, one of `light`, `regular`, `medium`, `semibold`, `bold`, `default`                                                     | string, number                                        |  | 2.34.0 |
 
 ### Typography.Paragraph
 

+ 32 - 28
content/basic/typography/index.md

@@ -303,7 +303,9 @@ function Demo() {
 支持文本的省略,可以通过 `ellipsis` 配置相关参数,具体参考 [Ellipsis Config](#Ellipsis-Config)。
 
 <Notice title='注意事项'>
-    ellipsis 仅支持纯文本的截断,不支持 reactNode 等复杂类型,请确保 children 传入内容类型为 string
+    1. ellipsis 仅支持纯文本的截断,不支持 reactNode 等复杂类型,请确保 children 传入内容类型为 string <br/>
+    2. ellipsis 要实现缩略,需要有明确的 width或 maxWidth 宽度限制做对比判断。若自身未设置宽度(例如纯依靠 flex 属性撑开),或 width为 100% 等不定数值,那么父级需要有明确的 width或 maxWidth <br/>
+    3. ellipsis 需要获取 DOM 的宽高度等信息用以做基本判断,若自身或父级存在 display:none 样式会导致取值不正确,此时缩略会失效<br/>
 </Notice>
 
 
@@ -432,36 +434,39 @@ function Demo() {
 
 ### Typography.Text
 
-| 属性      | 说明                                                                                                                                      | 类型                              | 默认值    | 版本   |
-| --------- | ----------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | --------- | ------ |
-| component | 自定义渲染元素                                                                                                                            | html element                      | span      |        |
-| code      | 是否被 `code` 元素包裹                                                                                                                            | boolean                      | -      |        |
-| copyable  | 是否可拷贝                                                                                                                                | boolean \| object:[Copyable Config](#Copyable-Config) | false     | 0.27.0 |
-| delete    | 添加删除线样式                                                                                                                            | boolean                           | false     | 0.27.0 |
-| disabled  | 禁用文本                                                                                                                                  | boolean                           | false     | 0.27.0 |
-| ellipsis  | 设置自动溢出省略                                                                                                                          | boolean\|object:Ellipsis Config   | false     | 0.34.0 |
-| icon      | 前缀图标                                                                                                                                  | ReactNode                         | -         | 0.27.0 |
-| link      | 是否为链接,传object时,属性将透传给a标签                                                                                                 | boolean\|object                   | false     | 0.27.0 |
-| mark      | 添加标记样式                                                                                                                              | boolean                           | false     | 0.27.0 |
-| size      | 文本大小,可选`normal`,`small`                                                                                                           | string                            | `normal`  | 0.27.0 |
-| strong    | 是否加粗                                                                                                                                  | boolean                           | false     | 0.27.0 |
+| 属性      | 说明                                                                                                                                    | 类型                              | 默认值    | 版本   |
+| --------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | --------- | ------ |
+| component | 自定义渲染元素                                                                                                                          | html element                      | span      |        |
+| code      | 是否被 `code` 元素包裹                                                                                                                          | boolean                      | -      |        |
+| copyable  | 是否可拷贝                                                                                                                              | boolean \| object:[Copyable Config](#Copyable-Config) | false     | 0.27.0 |
+| delete    | 添加删除线样式                                                                                                                          | boolean                           | false     | 0.27.0 |
+| disabled  | 禁用文本                                                                                                                                | boolean                           | false     | 0.27.0 |
+| ellipsis  | 设置自动溢出省略                                                                                                                        | boolean\|object:Ellipsis Config   | false     | 0.34.0 |
+| icon      | 前缀图标                                                                                                                                | ReactNode                         | -         | 0.27.0 |
+| link      | 是否为链接,传object时,属性将透传给a标签                                                                                               | boolean\|object                   | false     | 0.27.0 |
+| mark      | 添加标记样式                                                                                                                            | boolean                           | false     | 0.27.0 |
+| size      | 文本大小,可选`normal`,`small`                                                                                                         | string                            | `normal`  | 0.27.0 |
+| strong    | 是否加粗                                                                                                                                | boolean                           | false     | 0.27.0 |
 | type      | 文本类型,可选 `primary`, `secondary`, `warning`, `danger`, `tertiary`(**v>=1.2.0**), `quaternary`(**v>=1.2.0**), `success`(**v>=1.7.0**) | string                            | `primary` | 0.27.0 |
-| underline | 添加下划线样式                                                                                                                            | boolean                           | false     | 0.27.0 |
+| underline | 添加下划线样式                                                                                                                          | boolean                           | false     | 0.27.0 |
+| weight | 设置字重  |  number                                        |  | 2.34.0 |
+
 
 ### Typography.Title
 
-| 属性      | 说明                                                                                                                                      | 类型                              | 默认值    | 版本   |
-| --------- | ----------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | --------- | ------ |
-| component | 自定义渲染元素,默认由 heading 决定                                                                                                       | html element                      | h1~h6     |        |
-| copyable  | 是否可拷贝                                                                                                                                | boolean \| object:[Copyable Config](#Copyable-Config) | false     | 0.27.0 |
-| delete    | 添加删除线样式                                                                                                                            | boolean                           | false     | 0.27.0 |
-| disabled  | 禁用文本                                                                                                                                  | boolean                           | false     | 0.27.0 |
-| ellipsis  | 设置自动溢出省略                                                                                                                          | boolean\|object:Ellipsis Config   | false     | 0.34.0 |
-| heading   | 标题级别,可选1, 2, 3,4,5,6,对应相应的标题                                                                                          | number                            | 1         | 0.27.0 |
-| link      | 是否为链接,传object时,属性将透传给a标签                                                                                                 | boolean\|object                   | false     | 0.27.0 |
-| mark      | 添加标记样式                                                                                                                              | boolean                           | false     | 0.27.0 |
-| type      | 文本类型,可选 `primary`, `secondary`, `warning`, `danger`, `tertiary`(**v>=1.2.0**), `quaternary`(**v>=1.2.0**), `success`(**v>=1.7.0**) | string                            | `primary` | 0.27.0 |
-| underline | 添加下划线样式                                                                                                                            | boolean                           | false     | 0.27.0 |
+| 属性      | 说明                                                                                                                                      | 类型                                                    | 默认值  | 版本     |
+| --------- | ----------------------------------------------------------------------------------------------------------------------------------------- |-------------------------------------------------------| ------- |--------|
+| component | 自定义渲染元素,默认由 heading 决定                                                                                                       | html element                                          | h1~h6   |        |
+| copyable  | 是否可拷贝                                                                                                                                | boolean \| object:[Copyable Config](#Copyable-Config) | false   | 0.27.0 |
+| delete    | 添加删除线样式                                                                                                                            | boolean                                               | false   | 0.27.0 |
+| disabled  | 禁用文本                                                                                                                                  | boolean                                               | false   | 0.27.0 |
+| ellipsis  | 设置自动溢出省略                                                                                                                          | boolean\|object:Ellipsis Config                       | false   | 0.34.0 |
+| heading   | 标题级别,可选1, 2, 3,4,5,6,对应相应的标题                                                                                          | number                                                | 1       | 0.27.0 |
+| link      | 是否为链接,传object时,属性将透传给a标签                                                                                                 | boolean\|object                                       | false   | 0.27.0 |
+| mark      | 添加标记样式                                                                                                                              | boolean                                               | false   | 0.27.0 |
+| type      | 文本类型,可选 `primary`, `secondary`, `warning`, `danger`, `tertiary`(**v>=1.2.0**), `quaternary`(**v>=1.2.0**), `success`(**v>=1.7.0**) | string                                                | `primary` | 0.27.0 |
+| underline | 添加下划线样式                                                                                                                            | boolean                                               | false   | 0.27.0 |
+| weight | 设置字重, 可选 `light`, `regular`, `medium`, `semibold`, `bold`, `default`  | string, number                                        |  | 2.34.0 |
 
 ### Typography.Paragraph
 
@@ -504,7 +509,6 @@ function Demo() {
 
 
 ### Ellipsis Config
-**v >= 0.34.0**
 
 | 属性         | 说明                                                                                                              | 类型                                                | 默认值 |
 | ------------ | ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | ------ |

+ 1 - 0
content/input/cascader/index-en-US.md

@@ -1751,6 +1751,7 @@ function Demo() {
 | arrowIcon | Customize the right drop-down arrow Icon, when the showClear switch is turned on and there is currently a selected value, hover will give priority to the clear icon  | ReactNode | - | 1.15.0 |
 | autoAdjustOverflow | Whether to automatically adjust the expansion direction of the dropdown for automatic adjustment of the expansion direction during edge occlusion | boolean | true | - |
 | autoMergeValue | Auto merge value. Specifically, after opening, when a parent node is selected, the value will not include the descendants of the node. Does not support dynamic switching | boolean | true |  1.28.0 |
+| borderless        | borderless mode  >=2.33.0                                                                                                                                                                     | boolean                         |           |
 | bottomSlot | bottom slot | ReactNode | - |  1.27.0 |
 | changeOnSelect | Toggle whether non-leaf nodes are selectable | boolean | false | - |
 | className | ClassName | string | - | - |

+ 66 - 65
content/input/cascader/index.md

@@ -1728,72 +1728,73 @@ function Demo() {
 
 ### Cascader
 
-| 属性                 | 说明                                                                                                                                      | 类型                                                                                      | 默认值                         | 版本   |
-|----------------------|-----------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|--------------------------------|--------|
-| arrowIcon            | 自定义右侧下拉箭头 Icon,当 showClear 开关打开且当前有选中值时,hover 会优先显示 clear icon                                                 | ReactNode                                                                                 | -                              | 1.15.0 |
-| autoAdjustOverflow   | 是否自动调整下拉框展开方向,用于边缘遮挡时自动调整展开方向                                                                                 | boolean                                                                                   | true                           | -      |
-| autoMergeValue       | 设置自动合并 value。具体而言是,开启后,当某个父节点被选中时,value 将不包括该节点的子孙节点。不支持动态切换                                   | boolean                                                                                   | true                           | 1.28.0 |
-| bottomSlot           | 底部插槽                                                                                                                                  | ReactNode                                                                                 | -                              | 1.27.0 |
-| changeOnSelect       | 是否允许选择非叶子节点                                                                                                                    | boolean                                                                                   | false                          | -      |
-| className            | 选择框的 className 属性                                                                                                                   | string                                                                                    | -                              | -      |
-| clearIcon            | 可用于自定义清除按钮, showClear为true时有效                                                                                               | ReactNode                                                                                 | -                              | 2.25.0 |
-| defaultOpen          | 设置是否默认打开下拉菜单                                                                                                                  | boolean                                                                                   | false                          | -      |
-| defaultValue         | 指定默认选中的条目                                                                                                                        | string\|number\|CascaderData\|(string\|number\|CascaderData)[]                            | -                              | -      |
-| disabled             | 是否禁用                                                                                                                                  | boolean                                                                                   | false                          | -      |
-| displayProp          | 设置回填选项显示的属性值                                                                                                                  | string                                                                                    | `label`                        | -      |
-| displayRender        | 设置回填格式                                                                                                                              | (selected: string[] \| Entity, idx?: number) => ReactNode                                 | selected => selected.join('/') | -      |
-| dropdownMargin       | 下拉菜单计算溢出时的增加的冗余值,详见[issue#549](https://github.com/DouyinFE/semi-design/issues/549),作用同 Tooltip margin                | object\|number                                                                            | -                              | 2.25.0 |
-| dropdownClassName    | 下拉菜单的 className 属性                                                                                                                 | string                                                                                    | -                              | -      |
-| dropdownStyle        | 下拉菜单的样式                                                                                                                            | object                                                                                    | -                              | -      |
-| emptyContent         | 当搜索无结果时展示的内容                                                                                                                  | ReactNode                                                                                 | `暂无数据`                     | -      |
-| filterLeafOnly       | 搜索结果是否只展示叶子结点路径                                                                                                            | boolean                                                                                   | true                           | 1.26.0 |
-| filterRender         | 自定义渲染筛选后的选项                                                                                                                    | (props: FilterRenderProps) => ReactNode;                                                  | -                              | 2.28.0 |
-| filterSorter         | 对筛选后的选项进行排序                                                                                                                    | (first: CascaderData, second: CascaderData, inputValue: string) => number                 | -                              | 2.28.0 |
-| filterTreeNode       | 设置筛选,默认用 treeNodeFilterProp 的值作为要筛选的 TreeNode 的属性值, data 参数自 v2.28.0 开始提供                                       | ((inputValue: string, treeNodeString: string, data?: CascaderData) => boolean) \| boolean | false                          | -      |
-| getPopupContainer    | 指定父级 DOM,下拉框将会渲染至该 DOM 中,自定义需要设置 position: relative                                                                  | () => HTMLElement                                                                         | () => document.body            | -      |
-| insetLabel           | 前缀标签别名,主要用于 Form                                                                                                                | ReactNode                                                                                 | -                              | 0.28.0 |
-| leafOnly             | 多选时设置 value 只包含叶子节点,即显示的 Tag 和 onChange 的 value 参数只包含叶子节点。不支持动态切换                                       | boolean                                                                                   | false                          | 2.2.0  |
-| loadData             | 异步加载数据,需要返回一个Promise                                                                                                          | (selectOptions: CascaderData[]) => Promise< void >                                        | -                              | 1.8.0  |
-| max                  | 多选时,限制多选选中的数量,超出 max 后将触发 onExceed 回调                                                                                 | number                                                                                    | -                              | 1.28.0 |
-| maxTagCount          | 多选时,标签的最大展示数量,超出后将以 +N 形式展示                                                                                          | number                                                                                    | -                              | 1.28.0 |
-| motion               | 设置下拉框弹出的动画                                                                                                                      | boolean                                                                                   | true                           | -      |
-| mouseEnterDelay      | 鼠标移入后,延迟显示下拉框的时间,单位毫秒                                                                                                  | number                                                                                    | 50                             | -      |
-| mouseLeaveDelay      | 鼠标移出后,延迟消失下拉框的时间,单位毫秒                                                                                                  | number                                                                                    | 50                             | -      |
-| multiple             | 设置多选                                                                                                                                  | boolean                                                                                   | false                          | 1.28.0 |
-| placeholder          | 选择框默认文字                                                                                                                            | string                                                                                    | -                              | -      |
-| position             | 方向,可选值:`top`,`topLeft`,`topRight`,`left`,`leftTop`,`leftBottom`,`right`,`rightTop`,`rightBottom`,`bottom`,`bottomLeft`,`bottomRight` | string                                                                                    | `bottom`                       | 2.16.0 |
-| prefix               | 前缀标签                                                                                                                                  | ReactNode                                                                                 | -                              | 0.28.0 |
-| preventScroll        | 指示浏览器是否应滚动文档以显示新聚焦的元素,作用于组件内的 focus 方法                                                                      | boolean                                                                                   | -                              | 2.15.0 |
-| restTagsPopoverProps | Popover 的配置属性,可以控制 position、zIndex、trigger 等,具体参考[Popover](/zh-CN/show/popover#API%20%E5%8F%82%E8%80%83)                    | PopoverProps                                                                              | {}                             | 1.28.0 |
-| searchPlaceholder    | 搜索框默认文字                                                                                                                            | string                                                                                    | -                              | -      |
-| separator            | 自定义分隔符,包括:搜索时显示在下拉框的内容以及单选时回显到 Trigger 的内容的分隔符                                                         | string                                                                                    | `/`                            | 2.2.0  |
-| showClear            | 是否展示清除按钮                                                                                                                          | boolean                                                                                   | false                          | 0.35.0 |
-| showNext             | 设置展开 Dropdown 子菜单的方式,可选: `click`、`hover`                                                                                      | string                                                                                    | `click`                        | 1.29.0 |
-| showRestTagsPopover  | 当超过 maxTagCount,hover 到 +N 时,是否通过 Popover 显示剩余内容                                                                           | boolean                                                                                   | false                          | 1.28.0 |
-| size                 | 选择框大小,可选 `large`,`small`,`default`                                                                                                 | string                                                                                    | `default`                      | -      |
-| stopPropagation      | 是否阻止下拉框上的点击事件冒泡                                                                                                            | boolean                                                                                   | true                           | -      |
-| disableStrictly      | 设置是否开启严格禁用。开启后,当节点是 disabled 的时候,则不能通过子级或者父级的关系改变选中状态                                             | boolean                                                                                   | false                          | 1.32.0 |
-| style                | 选择框的样式                                                                                                                              | CSSProperties                                                                             | -                              | -      |
-| suffix               | 后缀标签                                                                                                                                  | ReactNode                                                                                 | -                              | 0.28.0 |
-| topSlot              | 顶部插槽                                                                                                                                  | ReactNode                                                                                 | -                              | 1.27.0 |
-| treeData             | 展示数据,具体属性参考 [CascaderData](#CascaderData)                                                                                       | CascaderData[]                                                                            | []                             | -      |
-| treeNodeFilterProp   | 搜索时输入项过滤对应的 CascaderData 属性                                                                                                  | string                                                                                    | `label`                        | -      |
-| triggerRender        | 自定义触发器渲染方法                                                                                                                      | (props: TriggerRenderProps) => ReactNode                                                  | -                              | 0.34.0 |
-| validateStatus       | trigger 的校验状态,仅影响展示样式。可选: default、error、warning                                                                             | string                                                                                    | `default`                      | -      |
-| value                | (受控)选中的条目                                                                                                                          | string\|number\|CascaderData\|(string\|number\|CascaderData)[]                            | -                              | -      |
-| zIndex               | 下拉菜单的 zIndex                                                                                                                         | number                                                                                    | 1030                           | -      |
-| enableLeafClick      | 多选时,是否启动点击叶子节点选项触发勾选                                                                                                   | boolean                                                                                   | false                          | 2.2.0  |
-| onBlur               | 失焦 Cascader 的回调                                                                                                                      | (e: MouseEvent) => void                                                                   | -                              | -      |
-| onChange | 选中树节点时调用此函数,默认返回选中项 path 的 value 数组 | (value: string\|number\| CascaderData |(string\|number\|CascaderData)[]) => void | - | - |
+| 属性                 | 说明                                                                                                                                                  | 类型                                                                                      | 默认值                         | 版本   |
+|----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|--------------------------------|--------|
+| arrowIcon            | 自定义右侧下拉箭头 Icon,当 showClear 开关打开且当前有选中值时,hover 会优先显示 clear icon                                                                                      | ReactNode                                                                                 | -                              | 1.15.0 |
+| autoAdjustOverflow   | 是否自动调整下拉框展开方向,用于边缘遮挡时自动调整展开方向                                                                                                                       | boolean                                                                                   | true                           | -      |
+| autoMergeValue       | 设置自动合并 value。具体而言是,开启后,当某个父节点被选中时,value 将不包括该节点的子孙节点。不支持动态切换                                                                                        | boolean                                                                                   | true                           | 1.28.0 |
+| bottomSlot           | 底部插槽                                                                                                                                                | ReactNode                                                                                 | -                              | 1.27.0 |
+| borderless        | 无边框模式  >=2.33.0                                                                                                                                     | boolean                         |           |
+| changeOnSelect       | 是否允许选择非叶子节点                                                                                                                                         | boolean                                                                                   | false                          | -      |
+| className            | 选择框的 className 属性                                                                                                                                   | string                                                                                    | -                              | -      |
+| clearIcon            | 可用于自定义清除按钮, showClear为true时有效                                                                                                                       | ReactNode                                                                                 | -                              | 2.25.0 |
+| defaultOpen          | 设置是否默认打开下拉菜单                                                                                                                                        | boolean                                                                                   | false                          | -      |
+| defaultValue         | 指定默认选中的条目                                                                                                                                           | string\|number\|CascaderData\|(string\|number\|CascaderData)[]                            | -                              | -      |
+| disabled             | 是否禁用                                                                                                                                                | boolean                                                                                   | false                          | -      |
+| displayProp          | 设置回填选项显示的属性值                                                                                                                                        | string                                                                                    | `label`                        | -      |
+| displayRender        | 设置回填格式                                                                                                                                              | (selected: string[] \| Entity, idx?: number) => ReactNode                                 | selected => selected.join('/') | -      |
+| dropdownMargin       | 下拉菜单计算溢出时的增加的冗余值,详见[issue#549](https://github.com/DouyinFE/semi-design/issues/549),作用同 Tooltip margin                                               | object\|number                                                                            | -                              | 2.25.0 |
+| dropdownClassName    | 下拉菜单的 className 属性                                                                                                                                  | string                                                                                    | -                              | -      |
+| dropdownStyle        | 下拉菜单的样式                                                                                                                                             | object                                                                                    | -                              | -      |
+| emptyContent         | 当搜索无结果时展示的内容                                                                                                                                        | ReactNode                                                                                 | `暂无数据`                     | -      |
+| filterLeafOnly       | 搜索结果是否只展示叶子结点路径                                                                                                                                     | boolean                                                                                   | true                           | 1.26.0 |
+| filterRender         | 自定义渲染筛选后的选项                                                                                                                                         | (props: FilterRenderProps) => ReactNode;                                                  | -                              | 2.28.0 |
+| filterSorter         | 对筛选后的选项进行排序                                                                                                                                         | (first: CascaderData, second: CascaderData, inputValue: string) => number                 | -                              | 2.28.0 |
+| filterTreeNode       | 设置筛选,默认用 treeNodeFilterProp 的值作为要筛选的 TreeNode 的属性值, data 参数自 v2.28.0 开始提供                                                                           | ((inputValue: string, treeNodeString: string, data?: CascaderData) => boolean) \| boolean | false                          | -      |
+| getPopupContainer    | 指定父级 DOM,下拉框将会渲染至该 DOM 中,自定义需要设置 position: relative                                                                                                 | () => HTMLElement                                                                         | () => document.body            | -      |
+| insetLabel           | 前缀标签别名,主要用于 Form                                                                                                                                    | ReactNode                                                                                 | -                              | 0.28.0 |
+| leafOnly             | 多选时设置 value 只包含叶子节点,即显示的 Tag 和 onChange 的 value 参数只包含叶子节点。不支持动态切换                                                                                   | boolean                                                                                   | false                          | 2.2.0  |
+| loadData             | 异步加载数据,需要返回一个Promise                                                                                                                                | (selectOptions: CascaderData[]) => Promise< void >                                        | -                              | 1.8.0  |
+| max                  | 多选时,限制多选选中的数量,超出 max 后将触发 onExceed 回调                                                                                                               | number                                                                                    | -                              | 1.28.0 |
+| maxTagCount          | 多选时,标签的最大展示数量,超出后将以 +N 形式展示                                                                                                                         | number                                                                                    | -                              | 1.28.0 |
+| motion               | 设置下拉框弹出的动画                                                                                                                                          | boolean                                                                                   | true                           | -      |
+| mouseEnterDelay      | 鼠标移入后,延迟显示下拉框的时间,单位毫秒                                                                                                                               | number                                                                                    | 50                             | -      |
+| mouseLeaveDelay      | 鼠标移出后,延迟消失下拉框的时间,单位毫秒                                                                                                                               | number                                                                                    | 50                             | -      |
+| multiple             | 设置多选                                                                                                                                                | boolean                                                                                   | false                          | 1.28.0 |
+| placeholder          | 选择框默认文字                                                                                                                                             | string                                                                                    | -                              | -      |
+| position             | 方向,可选值:`top`,`topLeft`,`topRight`,`left`,`leftTop`,`leftBottom`,`right`,`rightTop`,`rightBottom`,`bottom`,`bottomLeft`,`bottomRight`                | string                                                                                    | `bottom`                       | 2.16.0 |
+| prefix               | 前缀标签                                                                                                                                                | ReactNode                                                                                 | -                              | 0.28.0 |
+| preventScroll        | 指示浏览器是否应滚动文档以显示新聚焦的元素,作用于组件内的 focus 方法                                                                                                              | boolean                                                                                   | -                              | 2.15.0 |
+| restTagsPopoverProps | Popover 的配置属性,可以控制 position、zIndex、trigger 等,具体参考[Popover](/zh-CN/show/popover#API%20%E5%8F%82%E8%80%83)                                            | PopoverProps                                                                              | {}                             | 1.28.0 |
+| searchPlaceholder    | 搜索框默认文字                                                                                                                                             | string                                                                                    | -                              | -      |
+| separator            | 自定义分隔符,包括:搜索时显示在下拉框的内容以及单选时回显到 Trigger 的内容的分隔符                                                                                                      | string                                                                                    | `/`                            | 2.2.0  |
+| showClear            | 是否展示清除按钮                                                                                                                                            | boolean                                                                                   | false                          | 0.35.0 |
+| showNext             | 设置展开 Dropdown 子菜单的方式,可选: `click`、`hover`                                                                                                            | string                                                                                    | `click`                        | 1.29.0 |
+| showRestTagsPopover  | 当超过 maxTagCount,hover 到 +N 时,是否通过 Popover 显示剩余内容                                                                                                    | boolean                                                                                   | false                          | 1.28.0 |
+| size                 | 选择框大小,可选 `large`,`small`,`default`                                                                                                                  | string                                                                                    | `default`                      | -      |
+| stopPropagation      | 是否阻止下拉框上的点击事件冒泡                                                                                                                                     | boolean                                                                                   | true                           | -      |
+| disableStrictly      | 设置是否开启严格禁用。开启后,当节点是 disabled 的时候,则不能通过子级或者父级的关系改变选中状态                                                                                               | boolean                                                                                   | false                          | 1.32.0 |
+| style                | 选择框的样式                                                                                                                                              | CSSProperties                                                                             | -                              | -      |
+| suffix               | 后缀标签                                                                                                                                                | ReactNode                                                                                 | -                              | 0.28.0 |
+| topSlot              | 顶部插槽                                                                                                                                                | ReactNode                                                                                 | -                              | 1.27.0 |
+| treeData             | 展示数据,具体属性参考 [CascaderData](#CascaderData)                                                                                                           | CascaderData[]                                                                            | []                             | -      |
+| treeNodeFilterProp   | 搜索时输入项过滤对应的 CascaderData 属性                                                                                                                         | string                                                                                    | `label`                        | -      |
+| triggerRender        | 自定义触发器渲染方法                                                                                                                                          | (props: TriggerRenderProps) => ReactNode                                                  | -                              | 0.34.0 |
+| validateStatus       | trigger 的校验状态,仅影响展示样式。可选: default、error、warning                                                                                                     | string                                                                                    | `default`                      | -      |
+| value                | (受控)选中的条目                                                                                                                                           | string\|number\|CascaderData\|(string\|number\|CascaderData)[]                            | -                              | -      |
+| zIndex               | 下拉菜单的 zIndex                                                                                                                                        | number                                                                                    | 1030                           | -      |
+| enableLeafClick      | 多选时,是否启动点击叶子节点选项触发勾选                                                                                                                                | boolean                                                                                   | false                          | 2.2.0  |
+| onBlur               | 失焦 Cascader 的回调                                                                                                                                     | (e: MouseEvent) => void                                                                   | -                              | -      |
+| onChange | 选中树节点时调用此函数,默认返回选中项 path 的 value 数组                                                                                                                 | (value: string\|number\| CascaderData |(string\|number\|CascaderData)[]) => void | - | - |
 | onChangeWithObject | 是否将选中项 option 的其他属性作为回调。设为 true 时,onChange 的入参类型会从 string/number 变为 TreeNode。此时如果是受控,也需要把 value 设置成 CascaderData 类型,且必须含有 value 的键值,defaultValue 同理 | boolean | false | 1.16.0 |
-| onClear| showClear 为 true 时,点击清空按钮触发的回调 | () => void | - | 1.29.0 |
-| onDropdownVisibleChange       | 下拉框切换时的回调   | (visible: boolean) => void | - | 0.35.0 |
-| onExceed| 多选时,超出 max 后触发的回调 | (checkedItem: Entity[]) => void | - | 1.28.0 |
-| onFocus| 聚焦 Cascader 的回调 | (e: MouseEvent) => void | - | - |
-| onListScroll | 下拉面板滚动的回调 | (e: React.Event, panel: { panelIndex: number; activeNode: CascaderData; } ) => void | - | 1.15.0 |
-| onLoad | 节点加载完毕时触发的回调 | (newLoadedKeys: Set< string >, data: CascaderData) => void |- | 1.8.0 |
-| onSearch | 文本框值变化时回调 | (value: string) => void | - | - |
-| onSelect | 被选中时调用,返回选中项的 value | (value: string \| number \| (string \| number)[]) => void| - | - |
+| onClear| showClear 为 true 时,点击清空按钮触发的回调                                                                                                                      | () => void | - | 1.29.0 |
+| onDropdownVisibleChange       | 下拉框切换时的回调                                                                                                                                           | (visible: boolean) => void | - | 0.35.0 |
+| onExceed| 多选时,超出 max 后触发的回调                                                                                                                                   | (checkedItem: Entity[]) => void | - | 1.28.0 |
+| onFocus| 聚焦 Cascader 的回调                                                                                                                                     | (e: MouseEvent) => void | - | - |
+| onListScroll | 下拉面板滚动的回调                                                                                                                                           | (e: React.Event, panel: { panelIndex: number; activeNode: CascaderData; } ) => void | - | 1.15.0 |
+| onLoad | 节点加载完毕时触发的回调                                                                                                                                        | (newLoadedKeys: Set< string >, data: CascaderData) => void |- | 1.8.0 |
+| onSearch | 文本框值变化时回调                                                                                                                                           | (value: string) => void | - | - |
+| onSelect | 被选中时调用,返回选中项的 value                                                                                                                                 | (value: string \| number \| (string \| number)[]) => void| - | - |
 
 ### CascaderData
 

+ 3 - 0
content/input/datepicker/index-en-US.md

@@ -887,6 +887,7 @@ function Demo() {
 | autoFocus          | Automatic access to focus                                                                                                                                                              | boolean   | false   | **1.10.0** |
 | autoSwitchDate     | When the year and month are changed through the left and right buttons and the drop-down menu at the top of the panel, the date is automatically switched. Only valid for `date` type. | boolean   | true    | **1.13.0** |
 | bottomSlot         | Render the bottom extra area                                                                                                                                                           | ReactNode |         | **1.22.0** |
+| borderless        | borderless mode  >=2.33.0                                                                                                                                                                     | boolean                         |           |
 | className          | Class name                                                                                                                                                                             | string    | -       |            |
 | clearIcon          | Can be used to customize the clear button, valid when showClear is true                                                                                                                | ReactNode |         | **2.25.0** |
 | defaultOpen        | Panel displays or hides by default                                                                                                                                                     | boolean   | false   |            |
@@ -924,6 +925,8 @@ function Demo() {
 | size               | Size, optional: "small," "default," "large"                                                                                                                                               | string                                                                                                                                                                                                    | 'default'                                                                             |                           |
 | spacing            | The distance between the pop-up layer and the children element                                                                                                                            | number                                                                                                                                                                                                    | 4                                                                                     | **1.9.0**                 |
 | startDateOffset    | When type is dateRange, set the start date of the selected range                                                                                                                          | (selectedDate?: Date) => Date;                                                                                                                                                                            | -                                                                                     | **1.10.0**                |
+| startYear | start year of the year scroll panel | number | 100 years before current year | **2.36.0** |
+| endYear | end year of the year scroll panel | number | 100 years after current year | **2.36.0** |
 | syncSwitchMonth    | In the scene of range, it supports synchronous switching of the month of the dual panel|boolean|false|**1.28.0**|
 | timePickerOpts     | For other parameters that can be transparently passed to the time selector, see [TimePicker·API Reference](/en-US/input/timepicker#API%20Reference)                                    |                                                                                                                                                                                                           | object                                                                                | **1.1.0**                 |
 | topSlot            | Render the top extra area                                                                                 | ReactNode                                                                                                                                                                                                 |                                                | **1.22.0**                   |

+ 3 - 0
content/input/datepicker/index.md

@@ -849,6 +849,7 @@ function Demo() {
 | autoAdjustOverflow | 浮层被遮挡时是否自动调整方向                                              | boolean   | true    | **0.34.0** |
 | autoFocus          | 自动获取焦点                                                              | boolean   | false   | **1.10.0** |
 | autoSwitchDate     | 通过面板上方左右按钮、下拉菜单更改年月时,自动切换日期。仅对 date type 生效。 | boolean   | true    | **1.13.0** |
+| borderless        | 无边框模式  >=2.33.0                                                                                                                                     | boolean                         |           |
 | bottomSlot         | 渲染底部额外区域                                                          | ReactNode |         | **1.22.0** |
 | className          | 类名                                                                      | string    | -       |            |
 | clearIcon          | 可用于自定义清除按钮, showClear为true时有效                               | ReactNode |         | **2.25.0** |
@@ -889,6 +890,8 @@ function Demo() {
 | size | 尺寸,可选值:"small", "default", "large" | string | 'default' |  |
 | spacing | 浮层与 trigger 的距离 | number | 4 | **1.9.0** |
 | startDateOffset | type 为 dateRange 时,设置单击选择范围的开始日期 | <ApiType detail='(selectedDate?: Date) => Date '>(selectedDate) => Date </ApiType>| - | **1.10.0** |
+| startYear | 滚轮的开始年 | number | 当前年前 100 年 | **2.36.0** |
+| endYear | 滚轮的结束年,结束年需要大于开始年 | number | 当前年后 100 年 | **2.36.0** |
 | stopPropagation | 是否阻止弹出层上的点击事件冒泡 | boolean | false |  |
 | style | 自定义样式 | CSSProperties |  |  |
 | syncSwitchMonth | 在范围选择的场景中,支持同步切换双面板的月份 | boolean | false | **1.28.0** |

+ 35 - 33
content/input/input/index-en-US.md

@@ -387,40 +387,41 @@ Answers to some questions:
 
 > Other attributes are same with html `<input>`
 
-| Property          | Instructions                                                                                  | type                            | Default   |
-|-------------------|-----------------------------------------------------------------------------------------------|---------------------------------|-----------|
-| aria-describedby  | Set the aria-describedby property                                                             | string                          | -         |
-| aria-errormessage | Set the aria-errormessage property                                                            | string                          | -         |
-| aria-invalid      | Set aria-invalid property                                                                     | string                          | -         |
-| aria-label        | Set aria-label properties                                                                     | string                          | -         |
-| aria-labelledby   | Set aria-labelledby properties                                                                | string                          | -         |
-| aria-required     | Set aria-required properties                                                                  | string                          | -         |
-| addonAfter        | Addon after input box                                                                         | ReactNode                       |           |
-| addonBefore       | Addon before input box                                                                        | ReactNode                       |           |
-| className         | Class name                                                                                    | string                          |           |
-| clearIcon         | Can be used to customize the clear button, valid when showClear is true  **>=2.25**           | ReactNode                       |           |
-| defaultValue      | Default value                                                                                 | ReactText                       |           |
-| disabled          | Toggle whether to disable input                                                               | boolean                         | false     |
-| getValueLength    | Custom calculated character string length                                                     | (value: string) => number       |           |
-| hideSuffix        | Toggle whether to hide suffix if clear icon is shown,by default the two icon are side by side | boolean                         | false     |
-| mode              | mode of input,optional: `password` **>= v1.3.0**                                              | string                          |           |
-| prefix            | Prefix                                                                                        | ReactNode                       |           |
+| Property          | Instructions                                                                                                                                                                                  | type                            | Default   |
+|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------|-----------|
+| aria-describedby  | Set the aria-describedby property                                                                                                                                                             | string                          | -         |
+| aria-errormessage | Set the aria-errormessage property                                                                                                                                                            | string                          | -         |
+| aria-invalid      | Set aria-invalid property                                                                                                                                                                     | string                          | -         |
+| aria-label        | Set aria-label properties                                                                                                                                                                     | string                          | -         |
+| aria-labelledby   | Set aria-labelledby properties                                                                                                                                                                | string                          | -         |
+| aria-required     | Set aria-required properties                                                                                                                                                                  | string                          | -         |
+| addonAfter        | Addon after input box                                                                                                                                                                         | ReactNode                       |           |
+| addonBefore       | Addon before input box                                                                                                                                                                        | ReactNode                       |           |
+| borderless        | borderless mode  >=2.33.0                                                                                                                                                                     | boolean                         |           |
+| className         | Class name                                                                                                                                                                                    | string                          |           |
+| clearIcon         | Can be used to customize the clear button, valid when showClear is true  **>=2.25**                                                                                                           | ReactNode                       |           |
+| defaultValue      | Default value                                                                                                                                                                                 | ReactText                       |           |
+| disabled          | Toggle whether to disable input                                                                                                                                                               | boolean                         | false     |
+| getValueLength    | Custom calculated character string length                                                                                                                                                     | (value: string) => number       |           |
+| hideSuffix        | Toggle whether to hide suffix if clear icon is shown,by default the two icon are side by side                                                                                                 | boolean                         | false     |
+| mode              | mode of input,optional: `password` **>= v1.3.0**                                                                                                                                              | string                          |           |
+| prefix            | Prefix                                                                                                                                                                                        | ReactNode                       |           |
 | preventScroll | Indicates whether the browser should scroll the document to display the newly focused element, acting on the focus method inside the component, excluding the component passed in by the user | boolean |  |  |
-| showClear         | Show clear button **>=1.0.0**                                                                 | boolean                         | false     |
-| size              | Size, one of `large`, `default`, `small`                                                      | string                          | `default` |
-| style             | Inline style                                                                                  | CSSProperties                   |           |
-| suffix            | Suffix                                                                                        | ReactNode                       |           |
-| type              | Input type attribute, same with html `<input>`                                                | string                          | text      |
-| validateStatus    | Validate status for styling only, one of `default`, `error`, `warning`                        | string                          | `default` |
-| value             | Current value of input box                                                                    | ReactText                       |           |
-| onBlur            | Callback invoked when input loses focus                                                       | function(e:event)               |           |
-| onChange          | Callback invoked when input value changes                                                     | function(value:string, e:event) |           |
-| onClear           | Callback invoked when clicking clear icon                                                     | function(e:event)               |           |
-| onEnterPress      | Callback invoked when pressing enter(keypress)                                                | function(e:event)               |           |
-| onFocus           | Callback invoked when input gets focus                                                        | function(e:event)               |           |
-| onKeyDown         | Callback invoked when keydown                                                                 | function(e:event)               |           |
-| onKeyPress        | Callback invoked when keypress                                                                | function(e:event)               |           |
-| onKeyUp           | Callback invoked when keyup                                                                   | function(e:event)               |           |
+| showClear         | Show clear button **>=1.0.0**                                                                                                                                                                 | boolean                         | false     |
+| size              | Size, one of `large`, `default`, `small`                                                                                                                                                      | string                          | `default` |
+| style             | Inline style                                                                                                                                                                                  | CSSProperties                   |           |
+| suffix            | Suffix                                                                                                                                                                                        | ReactNode                       |           |
+| type              | Input type attribute, same with html `<input>`                                                                                                                                                | string                          | text      |
+| validateStatus    | Validate status for styling only, one of `default`, `error`, `warning`                                                                                                                        | string                          | `default` |
+| value             | Current value of input box                                                                                                                                                                    | ReactText                       |           |
+| onBlur            | Callback invoked when input loses focus                                                                                                                                                       | function(e:event)               |           |
+| onChange          | Callback invoked when input value changes                                                                                                                                                     | function(value:string, e:event) |           |
+| onClear           | Callback invoked when clicking clear icon                                                                                                                                                     | function(e:event)               |           |
+| onEnterPress      | Callback invoked when pressing enter(keypress)                                                                                                                                                | function(e:event)               |           |
+| onFocus           | Callback invoked when input gets focus                                                                                                                                                        | function(e:event)               |           |
+| onKeyDown         | Callback invoked when keydown                                                                                                                                                                 | function(e:event)               |           |
+| onKeyPress        | Callback invoked when keypress                                                                                                                                                                | function(e:event)               |           |
+| onKeyUp           | Callback invoked when keyup                                                                                                                                                                   | function(e:event)               |           |
 ### TextArea
 
 > Other attributes are same with html `<textarea>`
@@ -434,6 +435,7 @@ Answers to some questions:
 | aria-labelledby   | Set aria-labelledby properties                                                                                         | string                          | -       |
 | aria-required     | Set aria-required properties                                                                                           | string                          | -       |
 | autosize          | Toggle whether to allow autosize when content height changes                                                           | boolean                         | false   |
+| borderless        | borderless mode  >=2.33.0                                                                                                                                                                     | boolean                         |           |
 | className         | Class name                                                                                                             | string                          | -       |
 | cols              | The visible width of the text control, in average character widths. If it is specified, it must be a positive integer. | number                          | -       |
 | disabled          | Disabled                                                                                                               | boolean                         | false   |

+ 36 - 34
content/input/input/index.md

@@ -397,40 +397,41 @@ import { Input, Typography, Form, TextArea, Button } from '@douyinfe/semi-ui';
 ### Input
 > 其他属性与html input 标签保持一致
 
-| 属性           | 说明                                                            | 类型                            | 默认值    |
-|----------------|---------------------------------------------------------------|---------------------------------|-----------|
-| aria-describedby   | 设置 aria-describedby 属性           | string                         | -  |
-| aria-errormessage   | 设置 aria-errormessage 属性           | string                         | -  |
-| aria-invalid   | 设置 aria-invalid 属性           | string                         | -  |
-| aria-label   | 设置 aria-label 属性           | string                         | -  |
-| aria-labelledby   | 设置 aria-labelledby 属性           | string                         | -  |
-| aria-required   | 设置 aria-required 属性           | string                         | -  |
-| addonAfter     | 后置标签                                                        | ReactNode               |           |
-| addonBefore    | 前置标签                                                        | ReactNode               |           |
-| className      | 类名                                                            | string                          |           |
-| clearIcon | 可用于自定义清除按钮, showClear为true时有效 **>=2.25.0** | ReactNode |  |
-| defaultValue   | 输入框内容默认值                                                | ReactText                          |           |
-| disabled       | 是否禁用,默认为false                                            | boolean                         | false     |
-| getValueLength| 自定义计算字符串长度                                            | (value: string) => number        |      |
-| hideSuffix     | 清除按钮与后缀标签并存时隐藏后缀标签,默认为false两者并列        | boolean                         | false     |
-| mode           | 输入框的模式,可选值password **>=v1.3.0**                        | string                          |           |
-| prefix         | 前缀标签                                                        | ReactNode               |           |
-| preventScroll | 指示浏览器是否应滚动文档以显示新聚焦的元素,作用于组件内的 focus 方法 | boolean |  |  |
-| showClear      | 输入框有内容且 hover 或 focus 时展示清除按钮 **>=1.0.0**                                            | boolean                         | false     |
-| size           | 输入框大小,large、default、small                                  | string                          | 'default' |
-| style          | 样式                                                            | CSSProperties                          |           |
-| suffix         | 后缀标签                                                        | ReactNode               |           |
-| type           | 声明input类型,同原生input标签的type属性                         | string                         | text     |
-| validateStatus | 校验状态,可选值default、error、warning,默认default。仅影响展示样式 | string                          | 'default' |
-| value          | 输入框内容                                                      | ReactText                          |           |
-| onBlur         | 输入框失去焦点时的回调                                          | function(e:event)                        |           |
-| onChange       | 输入框内容变化时的回调                                          | function(value:string, e:event) |           |
-| onClear        | 点击清除按钮时的回调                                            | function(e:event)                        |           |
-| onEnterPress   | 按回车时回调(keypress)                                          | function(e:event)               |           |
-| onFocus        | 输入框focus时的回调                                             | function(e:event)                        |           |
-| onKeyDown      | keydown回调                                                     | function(e:event)               |           |
-| onKeyPress     | keypress回调                                                    | function(e:event)               |           |
-| onKeyUp        | keyup回调                                                       | function(e:event)               |           |
+| 属性                | 说明                                              | 类型                              | 默认值    |
+|-------------------|-------------------------------------------------|---------------------------------|-----------|
+| aria-describedby  | 设置 aria-describedby 属性                          | string                          | -  |
+| aria-errormessage | 设置 aria-errormessage 属性                         | string                          | -  |
+| aria-invalid      | 设置 aria-invalid 属性                              | string                          | -  |
+| aria-label        | 设置 aria-label 属性                                | string                          | -  |
+| aria-labelledby   | 设置 aria-labelledby 属性                           | string                          | -  |
+| aria-required     | 设置 aria-required 属性                             | string                          | -  |
+| addonAfter        | 后置标签                                            | ReactNode                       |           |
+| addonBefore       | 前置标签                                            | ReactNode                       |           |
+| borderless        | 无边框模式  >=2.33.0                                 | boolean                         |           |
+| className         | 类名                                              | string                          |           |
+| clearIcon         | 可用于自定义清除按钮, showClear为true时有效 **>=2.25.0**      | ReactNode                       |  |
+| defaultValue      | 输入框内容默认值                                        | ReactText                       |           |
+| disabled          | 是否禁用,默认为false                                   | boolean                         | false     |
+| getValueLength    | 自定义计算字符串长度                                      | (value: string) => number       |      |
+| hideSuffix        | 清除按钮与后缀标签并存时隐藏后缀标签,默认为false两者并列                 | boolean                         | false     |
+| mode              | 输入框的模式,可选值password **>=v1.3.0**                 | string                          |           |
+| prefix            | 前缀标签                                            | ReactNode                       |           |
+| preventScroll     | 指示浏览器是否应滚动文档以显示新聚焦的元素,作用于组件内的 focus 方法          | boolean                         |  |  |
+| showClear         | 输入框有内容且 hover 或 focus 时展示清除按钮 **>=1.0.0**       | boolean                         | false     |
+| size              | 输入框大小,large、default、small                       | string                          | 'default' |
+| style             | 样式                                              | CSSProperties                   |           |
+| suffix            | 后缀标签                                            | ReactNode                       |           |
+| type              | 声明input类型,同原生input标签的type属性                     | string                          | text     |
+| validateStatus    | 校验状态,可选值default、error、warning,默认default。仅影响展示样式 | string                          | 'default' |
+| value             | 输入框内容                                           | ReactText                       |           |
+| onBlur            | 输入框失去焦点时的回调                                     | function(e:event)               |           |
+| onChange          | 输入框内容变化时的回调                                     | function(value:string, e:event) |           |
+| onClear           | 点击清除按钮时的回调                                      | function(e:event)               |           |
+| onEnterPress      | 按回车时回调(keypress)                                | function(e:event)               |           |
+| onFocus           | 输入框focus时的回调                                    | function(e:event)               |           |
+| onKeyDown         | keydown回调                                       | function(e:event)               |           |
+| onKeyPress        | keypress回调                                      | function(e:event)               |           |
+| onKeyUp           | keyup回调                                         | function(e:event)               |           |
 ### TextArea
 
 > 其他属性与 html textarea 标签保持一致
@@ -444,6 +445,7 @@ import { Input, Typography, Form, TextArea, Button } from '@douyinfe/semi-ui';
 | aria-labelledby   | 设置 aria-labelledby 属性           | string                         | -  |
 | aria-required   | 设置 aria-required 属性           | string                         | -  |
 | autosize     | 是否随着自动适应内容高度           | boolean                         | false  |
+| borderless        | 无边框模式  >=2.33.0                                 | boolean                         |           |
 | className    | 类名                               | string                          | -      |
 | cols         | 默认列数                           | number                          | 无     |
 | disabled     | 禁用状态                           | boolean                         | false  |

+ 2 - 0
content/input/select/index-en-US.md

@@ -1326,6 +1326,7 @@ import { Select, Checkbox } from '@douyinfe/semi-ui';
 | autoAdjustOverflow | Whether the pop-up layer automatically adjusts the direction when it is obscured (only vertical direction is supported for the time being, and the inserted parent is body) | boolean | true |
 | autoClearSearchValue | After selecting the option, whether to automatically clear the search keywords, it will take effect when mutilple and filter are both enabled | boolean | true | 2.3.0|
 | autoFocus | Whether automatically focus when component mount | boolean | false |
+| borderless        | borderless mode  >=2.33.0                                                                                                                                                                     | boolean                         |           |
 | className | The CSS class name of the wrapper element | string |  |
 | clearIcon    | Can be used to customize the clear button, valid when showClear is true                       | ReactNode                       |   | 2.25.0 |
 | clickToHide | When expanded, click on the selection box to automatically put away the drop-down list | boolean | false |
@@ -1419,6 +1420,7 @@ Some internal methods provided by Select can be accessed through ref:
 | focus       | Manually focus select           | v1.11.0 |
 | open        | Manually open dropdown list     | v0.34.0 |
 | selectAll   | Manually select all options     | v1.18.0 |
+| search(value: string, event: event)  | You can call this method through ref to search, and the search value will be set to Input          | v2.35.0 |
 
 ## Accessibility
 

+ 2 - 0
content/input/select/index.md

@@ -1385,6 +1385,7 @@ import { Select, Checkbox } from '@douyinfe/semi-ui';
 | autoAdjustOverflow | 浮层被遮挡时是否自动调整方向(暂时仅支持竖直方向,且插入的父级为 body) | boolean | true |
 | autoClearSearchValue | 选中选项后,是否自动清空搜索关键字,当 mutilple、filter 都开启时生效 | boolean | true | 2.3.0 |
 | autoFocus | 初始渲染时是否自动 focus | boolean | false |
+| borderless        | 无边框模式  >=2.33.0                                 | boolean                         |           |
 | className | 类名 | string |  |
 | clearIcon | 可用于自定义清除按钮, showClear为true时有效 | ReactNode | 2.25.0  |
 | clickToHide | 已展开时,点击选择框是否自动收起下拉列表 | boolean | false |
@@ -1485,6 +1486,7 @@ import { Select, Checkbox } from '@douyinfe/semi-ui';
 | clearInput  | 调用时可以手动清空 input 搜索框的值 | v1.18.0 |
 | deselectAll | 调用时可以手动清空所有已选项        | v1.18.0 |
 | selectAll   | 调用时可以选中所有 Option           | v1.18.0 |
+| search(value: string, event: event)| 可通过 ref 调用该方法进行搜索,该搜索值会被置给 Input   | v2.35.0 |
 
 ## Accessibility
 

+ 1 - 0
content/input/timepicker/index-en-US.md

@@ -301,6 +301,7 @@ function Demo(props = {}) {
 | --- | --- | --- | --- | --- |
 | autoAdjustOverflow | Whether the floating layer automatically adjusts its direction when it is blocked | boolean | true | **0.34.0** |
 | autoFocus | Automatic access to focus | boolean | false |
+| borderless        | borderless mode  >=2.33.0                                                                                                                                                                     | boolean                         |           |
 | className | Outer style name | string |  |
 | clearIcon | Can be used to customize the clear button, valid when showClear is true | ReactNode |  |  **2.25.0**|
 | clearText | Clear button prompt copy | string | Clear |

+ 1 - 0
content/input/timepicker/index.md

@@ -292,6 +292,7 @@ function Demo(props = {}) {
 | ------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------- | ----------------------------------------------------------------- | ------------------ |
 | autoAdjustOverflow  | 浮层被遮挡时是否自动调整方向                           | boolean                                                                           | true                                                              | **0.34.0** |
 | autoFocus           | 自动获取焦点                                           | boolean                                                                           | false                                                             |                    |
+| borderless        | 无边框模式  >=2.33.0                                                                                                                                     | boolean                         |           |
 | className           | 外层样式名                                             | string                                                                            |                                                                   |                    |
 | clearIcon | 可用于自定义清除按钮, showClear为true时有效 | ReactNode |  |**2.25.0**  |
 | clearText           | 清除按钮的提示文案                                     | string                                                                            | clear                                                             |                    |

+ 1 - 0
content/input/treeselect/index-en-US.md

@@ -1403,6 +1403,7 @@ function Demo() {
 | arrowIcon|Customize the right drop-down arrow Icon, when the showClear switch is turned on and there is currently a selected value, hover will give priority to the clear icon| ReactNode | | 1.15.0|
 |autoAdjustOverflow|Whether the pop-up layer automatically adjusts the direction when it is obscured (only vertical direction is supported for the time being, and the inserted parent is body)|boolean | true| 0.34.0|
 | autoExpandParent | Toggle whether to expand parent nodes automatically | boolean | false | 0.34.0 |
+| borderless        | borderless mode  >=2.33.0                                                                                                                                                                     | boolean                         |           |
 | checkRelation | In multiple, the relationship between the checked states of the nodes, optional: 'related'、'unRelated' | string | 'related' | 2.5.0 |
 | className                | Class name                                                                          | string                                                            | -           | -       |
 | clearIcon    | Can be used to customize the clear button, valid when showClear is true                       | ReactNode                |       | 2.25.0    |

+ 1 - 0
content/input/treeselect/index.md

@@ -1384,6 +1384,7 @@ function Demo() {
 | arrowIcon|自定义右侧下拉箭头Icon,当showClear开关打开且当前有选中值时,hover会优先显示clear icon| ReactNode | | 1.15.0|
 | autoAdjustOverflow|浮层被遮挡时是否自动调整方向(暂时仅支持竖直方向,且插入的父级为 body)|boolean | true| 0.34.0|
 | autoExpandParent | 是否自动展开父节点 | boolean | false | 0.34.0 |
+| borderless        | 无边框模式  >=2.33.0                                                                                                                                     | boolean                         |           |
 | checkRelation | 多选时,节点之间选中状态的关系,可选:'related'、'unRelated' | string | 'related' | 2.5.0 |
 | className | 选择框的 `className` 属性 | string | - | - |
 | clearIcon | 可用于自定义清除按钮, showClear为true时有效 | ReactNode | |2.25.0  |

+ 1 - 1
content/navigation/anchor/index-en-US.md

@@ -342,7 +342,7 @@ import { Anchor } from '@douyinfe/semi-ui';
 | position     | Tooltip position,same as `position` property of Tooltip component                                                  | string                              | -         | |
 | railTheme    | Style of scroll rail,one of `primary`,`tertiary`,`muted`                                                         | string                              | `primary` | |
 | scrollMotion | Animation of scroll behavior                                                                                        | boolean                             | false     | |
-| showTooltip  | Show Tooltip                                                                                                        | boolean                             | false     | |
+| showTooltip  | Toggle whether to show tooltip, if passed in as object: type,type of component to show tooltip, support Tooltip and Popover, the default is Tooltip; opts, properties that will be passed directly to the component. The object form setting is provided since version 2.36.0   | boolean \| {type: 'tooltip'\|'popover', opts: object}                             | false     | |
 | size         | Size of Anchor,one of `small`,`default`                                                                           | string                              | `default` | |
 | style        | Style object                                                                                                        | object                              | -         | |
 | targetOffset | Anchor offset from top of target                                                                     | number                              | 0         | 1.9.0 |

+ 2 - 2
content/navigation/anchor/index.md

@@ -264,7 +264,7 @@ import { Anchor } from '@douyinfe/semi-ui';
 
 ### 显示工具提示
 
-Anchor 设置 `showTooltip` 可以在 Link 超出最大宽度时显示 Link 的文字内容。默认值为 `false`。
+Anchor 设置 `showTooltip` 可以在 Link 超出最大宽度时显示 Link 的文字内容。默认值为 `false`, 更多使用参考 API 说明
 
 ```jsx live=true
 import React from 'react';
@@ -343,7 +343,7 @@ import { Anchor } from '@douyinfe/semi-ui';
 | position      | Tooltip 显示位置,可选值同 Tooltip 组件 position | string                              | -         |        |
 | railTheme     | 滑轨主题,可选值:`primary`,`tertiary`,`muted` | string                              | `primary` |        |
 | scrollMotion  | 是否开启滚动动画                                 | boolean                             | false     |        |
-| showTooltip   | 文字缩略时是否显示 Tooltip                       | boolean                             | false     |        |
+| showTooltip   | 文字缩略时是否显示 Tooltip 及相关配置, type,浮层内容承载的组件,支持 Tooltip(默认) \| Popover;opts,其他需要透传给浮层组件的属性, object 形式设置自 2.36.0 版本提供   | boolean \| {type: 'tooltip'\|'popover', opts: object}  | false     |        |
 | size          | 锚点尺寸,可选值: `small`,`default`            | string                              | `default` |        |
 | style         | 样式对象                                         | object                              | -         |        |
 | targetOffset  | 锚点滚动时距离顶部偏移量                         | number                              | 0         | 1.9.0  |

+ 12 - 2
content/navigation/tabs/index-en-US.md

@@ -18,9 +18,17 @@ import { Tabs, TabPane } from '@douyinfe/semi-ui';
 
 ### Basic Usage
 
-Tbs supports three types of styles: `line`, `button`, and `card`. By default, the first tab is selected. You could use either `tabList` to pass in an array of tabs objects, or use `<TabPane>` to create each tab. Mixed usage of two ways is not recommended and data in `tabList` will be rendered with priority.
+Tbs supports three types of styles: `line`, `button`, and `card`. By default, the first tab is selected.
+
+Tabs supports two declare ways, and the rendering process of the two is different:
+- Pass the array of objects through `tabList`, when using `tabList`, only render the currently passed node each time
+- Or use `<TabPane>` to explicitly pass in item by item. When using `<TabPane>`, all panels will be rendered by default. You can set `keepDOM={false}` to only render the current panel, and there will be no animation effect at this time .
+
+<Notice title='Notice'>
+    1. When tabList and TabPane Children are used at the same time, the data passed in through tabList will be rendered first. It is not recommended to configure both <br/>
+    2. When using TabPane Children, TabPane must be a direct child element of Tabs, otherwise Tabs will not be able to correctly collect related attributes such as itemKey and other subcomponents
+</Notice>
 
-> When you use `tabList`, only the current active tab will be rendered. For `<TabPane>`, all tabs will be rendered in DOM tree by default. You could set `keepDOM={false}` to only render current panel. No animation will be displayed in this case.
 
 ```jsx live=true
 import React from 'react';
@@ -241,8 +249,10 @@ class App extends React.Component {
                 <RadioGroup
                     onChange={e => this.onSelect(e)}
                     value={this.state.type}
+                    type='button'
                     style={{
                         display: 'flex',
+                        width: 200,
                         justifyContent: 'center',
                     }}
                 >

+ 9 - 3
content/navigation/tabs/index.md

@@ -18,10 +18,14 @@ import { Tabs, TabPane } from '@douyinfe/semi-ui';
 ### 基本用法
 
 标签栏支持三种样式的显示:线条式,按钮式,卡片式。默认选中第一项。  
-标签页支持两种传入方式:通过 `tabList` 传入标签页对象的数组,或使用 `<TabPane>` 逐项显式传入。  
-两种方式建议不要同时使用,同时使用时会优先渲染通过 `tabList` 传入的数据。
+标签页支持两种传入方式,两者渲染流程上有所区别:
+- 通过 `tabList` 传入标签页对象的数组,当使用 `tabList` 时每次只渲染当前传入的节点
+- 或使用 `<TabPane>` 逐项显式传入,使用 `<TabPane>` 时默认会渲染所有面板,可以通过设置 `keepDOM={false}` 只渲染当前面板,此时不会有动画效果。
 
-> 当使用 `tabList` 时每次只渲染当前传入的节点使用 `<TabPane>` 时默认会渲染所有面板。可以通过设置 `keepDOM={false}` 只渲染当前面板,此时不会有动画效果。
+<Notice title='注意事项'>
+    1. tabList 与 TabPane Children 同时使用时,会优先渲染通过 tabList 传入的数据。不建议同时配置 <br/>
+    2. 使用 TabPane Children 时, TabPane 必须为 Tabs 的直接子元素,否则 Tabs 将无法正确收集子组件如 itemKey 等相关属性
+</Notice>
 
 ```jsx live=true
 import React from 'react';
@@ -230,8 +234,10 @@ class App extends React.Component {
                 <RadioGroup
                     onChange={e => this.onSelect(e)}
                     value={this.state.type}
+                    type='button'
                     style={{
                         display: 'flex',
+                        width: 200,
                         justifyContent: 'center',
                     }}
                 >

+ 38 - 6
content/show/calendar/index-en-US.md

@@ -67,7 +67,7 @@ import { RadioGroup, Calendar, Radio } from '@douyinfe/semi-ui';
     const [v, setV] = useState(0);
     return (
         <div>
-            <RadioGroup defaultValue={v} aria-label="StartOfWeek" name="demo-radio-group-vertical" onChange={e => setV(e.target.value)}>
+            <RadioGroup type="button" defaultValue={v} aria-label="StartOfWeek" name="demo-radio-group-vertical" onChange={e => setV(e.target.value)}>
                 <Radio value={0}>Sunday</Radio>
                 <Radio value={1}>Mon</Radio>
                 <Radio value={2}>Tue</Radio>
@@ -105,13 +105,14 @@ You could pass in an array of event objects to `events` to render items. For det
 
 ```jsx live=true dir="column"
 import React from 'react';
-import { Calendar, RadioGroup, Radio } from '@douyinfe/semi-ui';
+import { Calendar, DatePicker, RadioGroup, Radio } from '@douyinfe/semi-ui';
 
 class Demo extends React.Component {
     constructor() {
         super();
         this.state = {
             mode: 'week',
+            displayValue: new Date(2019, 6, 23, 8, 32, 0),
         };
     }
 
@@ -120,8 +121,15 @@ class Demo extends React.Component {
             mode: e.target.value,
         });
     }
+
+    onChangeDate(e) {
+        this.setState({
+            displayValue: e,
+        });
+    }
+
     render() {
-        const { mode } = this.state;
+        const { mode, displayValue } = this.state;
         const isMonthView = mode === 'month';
         const dailyEventStyle = {
             borderRadius: '3px',
@@ -203,10 +211,9 @@ class Demo extends React.Component {
                 children: <div style={allDayStyle}>July 26th 10:00 ~ July 27th 16:00</div>,
             },
         ];
-        const displayValue = new Date(2019, 6, 23, 8, 32, 0);
         return (
             <>
-                <RadioGroup onChange={e => this.onSelect(e)} value={mode}>
+                <RadioGroup onChange={e => this.onSelect(e)} value={mode} type="button">
                     <Radio value={'day'}>Day view</Radio>
                     <Radio value={'week'}>Week view</Radio>
                     <Radio value={'month'}>Month view</Radio>
@@ -214,6 +221,9 @@ class Demo extends React.Component {
                 </RadioGroup>
                 <br />
                 <br />
+                <DatePicker value={displayValue} onChange={e => this.onChangeDate(e)} />
+                <br />
+                <br />
                 <Calendar
                     height={400}
                     mode={mode}
@@ -273,7 +283,7 @@ import { Calendar } from '@douyinfe/semi-ui';
 ```
 
 #### Customized Date Cell Style
-You could alos use `dateGridRender` to customize date cell style, e.g. backgroundColor. Please notice that in Month View, the date text on the right corner has a z-index of 3. Use a larger z-index if you would like to cover the text as well.
+You could also use `dateGridRender` to customize date cell style, e.g. backgroundColor. Please notice that in Month View, the date text on the right corner has a z-index of 3. Use a larger z-index if you would like to cover the text as well.
 ```jsx live=true dir="column"
 import React from 'react';
 import { Calendar } from '@douyinfe/semi-ui';
@@ -313,6 +323,26 @@ import { Calendar } from '@douyinfe/semi-ui';
 };
 ```
 
+#### Customized Date Render
+You could use `renderDateDisplay` to customize the display of date
+
+
+```jsx live=true dir="column"
+import React from 'react';
+import { Avatar, Calendar } from '@douyinfe/semi-ui';
+
+() => {
+    const displayValue = new Date(2023, 4, 14);
+
+    const renderDateDisplay = date => {
+        const colors = ["amber", "blue", "cyan", "green", "grey", "indigo", "lime"];
+        return <div><Avatar color={colors[date.getDay()]} size="small">{date.getDate()}</Avatar></div>;
+    };
+
+    return <Calendar height={400} mode="week" displayValue={displayValue} renderDateDisplay={renderDateDisplay} />;
+};
+```
+
 ## API Reference
 
 ### Calendar
@@ -320,6 +350,7 @@ import { Calendar } from '@douyinfe/semi-ui';
 | Properties   | Instructions                                                                                           | type                  | Default      |
 | ------------ | ------------------------------------------------------------------------------------------------------ | --------------------- | ------------ |
 | dateGridRender | Custom render for date cell or column. Use absolute positioning for elements. **v>=1.0.0** | function(dateString: string, date: Date) | - | 
+| allDayEventsRender | Custom render for events area at the top of calendar in day/range/week mode. | function(events: EventObject[]): ReactNode | - | 
 | displayValue | Display date                                                                                           | Date           | current date |
 | events       | Events for rendering, refer to event object                                                            | EventObject[]                 | -            |
 | header       | Header                                                                                                 | React.Node            | -            |
@@ -329,6 +360,7 @@ import { Calendar } from '@douyinfe/semi-ui';
 | onClick      | Callback invoked when clicking on date, basic unit for day and week mode is 0.5h, for month mode is 1d | function(e: Event, date: Date) | -            |
 | onClose | Callback invoked when event display card close in the month mode | function(e: Event) | - |
 | renderTimeDisplay | Customize the display of time in day/week mode | function(time: number): ReactNode | - |
+| renderDateDisplay | Customize the display of date | function(date: Date): ReactNode | - |
 | range | Date range to display in range mode, left-closed and right-open **v>=1.5.0** | Date[] | - |
 | scrollTop    | Scroll height for displayed content in day and week mode                                               | number                | 400          |
 | showCurrTime | Toggle whether to show red line of current time                                                        | boolean               | true         |

+ 39 - 5
content/show/calendar/index.md

@@ -59,7 +59,7 @@ import { RadioGroup, Calendar, Radio } from '@douyinfe/semi-ui';
     const [v, setV] = useState(0);
     return (
         <div>
-            <RadioGroup defaultValue={v} aria-label="周起始日" name="demo-radio-group-vertical" onChange={e => setV(e.target.value)}>
+            <RadioGroup defaultValue={v} aria-label="周起始日" type="button" name="demo-radio-group-vertical" onChange={e => setV(e.target.value)}>
                 <Radio value={0}>周日</Radio>
                 <Radio value={1}>周一</Radio>
                 <Radio value={2}>周二</Radio>
@@ -97,13 +97,14 @@ import { Calendar } from '@douyinfe/semi-ui';
 
 ```jsx live=true dir="column"
 import React from 'react';
-import { Calendar, RadioGroup, Radio } from '@douyinfe/semi-ui';
+import { Calendar, DatePicker, RadioGroup, Radio } from '@douyinfe/semi-ui';
 
 class Demo extends React.Component {
     constructor() {
         super();
         this.state = {
             mode: 'week',
+            displayValue: new Date(2019, 6, 23, 8, 32, 0),
         };
     }
 
@@ -112,8 +113,15 @@ class Demo extends React.Component {
             mode: e.target.value,
         });
     }
+
+    onChangeDate(e) {
+        this.setState({
+            displayValue: e,
+        });
+    }
+
     render() {
-        const { mode } = this.state;
+        const { mode, displayValue } = this.state;
         const isMonthView = mode === 'month';
         const dailyEventStyle = {
             borderRadius: '3px',
@@ -195,10 +203,9 @@ class Demo extends React.Component {
                 children: <div style={allDayStyle}>7月26日 10:00 ~ 7月27日 16:00</div>,
             },
         ];
-        const displayValue = new Date(2019, 6, 23, 8, 32, 0);
         return (
             <>
-                <RadioGroup onChange={e => this.onSelect(e)} value={mode}>
+                <RadioGroup onChange={e => this.onSelect(e)} value={mode} type="button">
                     <Radio value={'day'}>日视图</Radio>
                     <Radio value={'week'}>周视图</Radio>
                     <Radio value={'month'}>月视图</Radio>
@@ -206,6 +213,9 @@ class Demo extends React.Component {
                 </RadioGroup>
                 <br />
                 <br />
+                <DatePicker value={displayValue} onChange={e => this.onChangeDate(e)} />
+                <br />
+                <br />
                 <Calendar
                     height={400}
                     mode={mode}
@@ -288,6 +298,28 @@ import { Calendar } from '@douyinfe/semi-ui';
 };
 ```
 
+#### 自定义日期文案
+
+可以通过 renderDateDisplay 自定义日期文案。
+
+
+```jsx live=true dir="column"
+import React from 'react';
+import { Avatar, Calendar } from '@douyinfe/semi-ui';
+
+() => {
+    const displayValue = new Date(2023, 4, 14);
+
+    const renderDateDisplay = date => {
+        const colors = ["amber", "blue", "cyan", "green", "grey", "indigo", "lime"];
+        return <div><Avatar color={colors[date.getDay()]} size="small">{date.getDate()}</Avatar></div>;
+    };
+
+    return <Calendar height={400} mode="week" displayValue={displayValue} renderDateDisplay={renderDateDisplay} />;
+};
+```
+
+
 ## API 参考
 
 ### Calendar
@@ -295,6 +327,7 @@ import { Calendar } from '@douyinfe/semi-ui';
 | 属性 | 说明 | 类型 | 默认值 |
 | --- | --- | --- | --- |
 | dateGridRender | 自定义单元格/列渲染,需要绝对定位, **v>=1.0.0** | function(dateString: string, date: Date) | - |
+| allDayEventsRender | 自定义日/多日/周视图下的顶部事件渲染 | function(events: EventObject[]): ReactNode | - |
 | displayValue | 展示日期 | Date | 当前日期 |
 | events | 渲染事件,具体格式请参考 event object | EventObject[] | - |
 | header | 自定义头部内容 | ReactNode | - |
@@ -305,6 +338,7 @@ import { Calendar } from '@douyinfe/semi-ui';
 | onClose | 月视图下,展示所有 event 的卡片关闭时的回调 | function(e: Event) | - |
 | range | 多日视图模式下展示的日期范围,左闭右开 **v>=1.5.0** | Date[] | - |
 | renderTimeDisplay | 自定义日/周视图下的时间文案 | function(time: number): ReactNode | - |
+| renderDateDisplay | 自定义日期文案 | function(date: Date): ReactNode | - |
 | scrollTop | 日视图和周视图模式下,设置展示内容默认的滚动高度 | number | 400 |
 | showCurrTime | 显示当前时间 | boolean | true |
 | width | 日历宽度 | string\|number | - |

+ 6 - 6
content/show/carousel/index-en-US.md

@@ -151,7 +151,7 @@ import { Carousel, RadioGroup, Radio, Space, Typography } from '@douyinfe/semi-u
             <br/>
             <Space> 
                 <div>theme</div>
-                <RadioGroup onChange={e => setTheme(e.target.value)} value={theme}>
+                <RadioGroup onChange={e => setTheme(e.target.value)} value={theme} type="button">
                     <Radio value='primary'>primary</Radio>
                     <Radio value='light'>light</Radio>
                     <Radio value='dark'>dark</Radio>
@@ -236,7 +236,7 @@ import { Carousel, RadioGroup, Radio, Space, Typography } from '@douyinfe/semi-u
             <Space vertical align='start'>
                 <Space> 
                     <div>type</div>
-                    <RadioGroup onChange={e => setType(e.target.value)} value={type}>
+                    <RadioGroup onChange={e => setType(e.target.value)} value={type} type="button">
                         <Radio value='dot'>dot</Radio>
                         <Radio value='line'>line</Radio>
                         <Radio value='columnar'>columnar</Radio>
@@ -244,7 +244,7 @@ import { Carousel, RadioGroup, Radio, Space, Typography } from '@douyinfe/semi-u
                 </Space>
                 <Space> 
                     <div>position</div>
-                    <RadioGroup onChange={e => setPosition(e.target.value)} value={position}>
+                    <RadioGroup onChange={e => setPosition(e.target.value)} value={position} type="button">
                         <Radio value='left'>left</Radio>
                         <Radio value='center'>center</Radio>
                         <Radio value='right'>right</Radio>
@@ -252,7 +252,7 @@ import { Carousel, RadioGroup, Radio, Space, Typography } from '@douyinfe/semi-u
                 </Space>
                 <Space> 
                     <div>size</div>
-                    <RadioGroup onChange={e => setSize(e.target.value)} value={size}>
+                    <RadioGroup onChange={e => setSize(e.target.value)} value={size} type="button">
                         <Radio value='small'>small</Radio>
                         <Radio value='medium'>medium</Radio>
                     </RadioGroup>
@@ -334,14 +334,14 @@ import { Carousel, RadioGroup, Radio, Space, Typography } from '@douyinfe/semi-u
             <Space vertical align='start'>
                 <Space> 
                     <div>arrow</div>
-                    <RadioGroup onChange={e => setShow(e.target.value)} value={show}>
+                    <RadioGroup onChange={e => setShow(e.target.value)} value={show} type="button">
                         <Radio value={true}>show</Radio>
                         <Radio value={false}>hide</Radio>
                     </RadioGroup>
                 </Space>
                 <Space> 
                     <div>show time</div>
-                    <RadioGroup onChange={e => setArrowTypew(e.target.value)} value={arrowType}>
+                    <RadioGroup onChange={e => setArrowTypew(e.target.value)} value={arrowType} type="button">
                         <Radio value='always'>always</Radio>
                         <Radio value='hover'>hover</Radio>
                     </RadioGroup>

+ 7 - 7
content/show/carousel/index.md

@@ -150,7 +150,7 @@ import { Carousel, RadioGroup, Radio, Space, Typography } from '@douyinfe/semi-u
             <br/>
             <Space> 
                 <div>主题</div>
-                <RadioGroup onChange={e => setTheme(e.target.value)} value={theme}>
+                <RadioGroup onChange={e => setTheme(e.target.value)} value={theme} type="button">
                     <Radio value='primary'>primary</Radio>
                     <Radio value='light'>light</Radio>
                     <Radio value='dark'>dark</Radio>
@@ -235,7 +235,7 @@ import { Carousel, RadioGroup, Radio, Space, Typography } from '@douyinfe/semi-u
             <Space vertical align='start'>
                 <Space> 
                     <div>类型</div>
-                    <RadioGroup onChange={e => setType(e.target.value)} value={type}>
+                    <RadioGroup onChange={e => setType(e.target.value)} value={type} type="button">
                         <Radio value='dot'>dot</Radio>
                         <Radio value='line'>line</Radio>
                         <Radio value='columnar'>columnar</Radio>
@@ -243,7 +243,7 @@ import { Carousel, RadioGroup, Radio, Space, Typography } from '@douyinfe/semi-u
                 </Space>
                 <Space> 
                     <div>位置</div>
-                    <RadioGroup onChange={e => setPosition(e.target.value)} value={position}>
+                    <RadioGroup onChange={e => setPosition(e.target.value)} value={position} type="button">
                         <Radio value='left'>left</Radio>
                         <Radio value='center'>center</Radio>
                         <Radio value='right'>right</Radio>
@@ -251,7 +251,7 @@ import { Carousel, RadioGroup, Radio, Space, Typography } from '@douyinfe/semi-u
                 </Space>
                 <Space> 
                     <div>尺寸</div>
-                    <RadioGroup onChange={e => setSize(e.target.value)} value={size}>
+                    <RadioGroup onChange={e => setSize(e.target.value)} value={size} type="button">
                         <Radio value='small'>small</Radio>
                         <Radio value='medium'>medium</Radio>
                     </RadioGroup>
@@ -333,14 +333,14 @@ import { Carousel, RadioGroup, Radio, Space, Typography } from '@douyinfe/semi-u
             <Space vertical align='start'>
                 <Space> 
                     <div>展示箭头</div>
-                    <RadioGroup onChange={e => setShow(e.target.value)} value={show}>
+                    <RadioGroup onChange={e => setShow(e.target.value)} value={show} type="button">
                         <Radio value={true}>show</Radio>
                         <Radio value={false}>hide</Radio>
                     </RadioGroup>
                 </Space>
                 <Space> 
                     <div>展示时机</div>
-                    <RadioGroup onChange={e => setArrowTypew(e.target.value)} value={arrowType}>
+                    <RadioGroup onChange={e => setArrowTypew(e.target.value)} value={arrowType} type="button">
                         <Radio value='always'>always</Radio>
                         <Radio value='hover'>hover</Radio>
                     </RadioGroup>
@@ -599,7 +599,7 @@ class CarouselDemo extends React.Component {
         );
     };
 
-    onChange(activeIndex){
+    onChange(activeIndex) {
         this.setState({ activeIndex });
     }
 

+ 31 - 0
content/start/changelog/index-en-US.md

@@ -15,6 +15,37 @@ Version:Major.Minor.Patch (follow the **Semver** specification)
 -   **Patch version**: Only include bug fix, the release time is not limited
 
 ---
+
+
+#### 🎉 2.36.0 (2023-05-26)
+- 【Fix】
+  - Fix the problem that in the multi-day mode of the Calander, the non-full-day schedule is not displayed when the range includes time [@sylingd](https://github.com/sylingd)
+  - Fix the problem that the event parameter in Upload customRequest onSuccess is optional, but the ts type declaration is required
+  - Fix the problem that ImagePreview IntersectionObserver throw error when using under SSR(effect version 2.34.1 ~ 2.36.0-beta.0)[#1595](https://github.com/DouyinFE/semi-design/issues/1595)
+
+#### 🎉 2.36.0-beta.0 (2023-05-22)
+- 【Feat】
+  - DatePicker support startYear and endYear  [#1620](https://github.com/DouyinFE/semi-design/issues/1620)
+  - add custom top events area rendering for calendar. [@sylingd](https://github.com/sylingd)
+  - add custom date rendering or calendar. [@sylingd](https://github.com/sylingd)
+  - The showTooltip API of Anchor supports object type
+  - Typography.Title added weight API to set font weight.
+  - Select add new ref method search
+  - Nav add expandIcon to replace default arrow icon;Nav.Footer add onClick callback  [#1611](https://github.com/DouyinFE/semi-design/issues/1611)
+- 【Fix】
+  - fix TimePicker timeZone conversion problem when date-fns-tz version >= 1.3.8
+  - Fix the wrong style of Radio and Checkbox in ReactNode passed in through the tab API in Tabs  [#1615 ](https://github.com/DouyinFE/semi-design/issues/1615)
+  - when calendar's displayValue changed, the results of events rendering is wrong. [@sylingd](https://github.com/sylingd)
+  - remove the ellipsis warning when omitting is not enabled in Typography
+  - fix Table header column align bug(v2.34 ~ 2.35 affected)  [#1599](https://github.com/DouyinFE/semi-design/issues/1599)
+  - remove the outermost vertical-align top style of DatePicker  [#1561](https://github.com/DouyinFE/semi-design/issues/1561)
+  - fix the problem that select the parameter type of handleInputChange does not match the parameter type of Input onChange
+- 【Design Token】
+  - Typography Add  `$font-typography_title1-fontWeight` `$font-typography_title2-fontWeight` `$font-typography_title3-fontWeight` `$font-typography_title4-fontWeight` `$font-typography_title5-fontWeight` `$font-typography_title6-fontWeight` tokens. Used to control the font weight of different levels of Header respectively
+- 【Docs】
+  - Tabs、Typography update notice tips
+  - Slider fix some wrong spell [@inottn](https://github.com/inottn)
+
 #### 🎉 2.35.0 (2023-05-12)
 - 【Fix】
     - fix the problem that the Dropdown item is abnormal after switching tabs in collapsible Tabs

+ 35 - 3
content/start/changelog/index.md

@@ -13,20 +13,50 @@ Semi 版本号遵循 **Semver** 规范(主版本号-次版本号-修订版本
 -   修订版本号(patch):仅会进行 bugfix,发布时间不限
 -   不同版本间的详细关系,可查阅 [FAQ](/zh-CN/start/faq)
 
+#### 🎉 2.36.0 (2023-05-26)
+- 【Fix】
+  - 修复 Calander 日历多日模式中,range包括时间时不显示非全天日程的问题 [@sylingd](https://github.com/sylingd)
+  - 修复 Upload customRequest onSuccess 中 event 参数实为可选,ts类型声明却为必填的问题 
+  - 修复 ImagePreview IntersectionObserver 在 SSR 场景报错的问题(影响范围 2.34 ~ 2.36.0-beta.0)[#1595](https://github.com/DouyinFE/semi-design/issues/1595)
+
+#### 🎉 2.36.0-beta.0 (2023-05-22)
+- 【Feat】
+  - DatePicker 支持设置滚轮的开始年和结束年 [#1620](https://github.com/DouyinFE/semi-design/issues/1620)
+  - Calendar 支持自定义渲染顶部事件 [@sylingd](https://github.com/sylingd)
+  - Calendar 支持自定义日期文案 [@sylingd](https://github.com/sylingd)
+  - Nav 增加 expandIcon 自定义下拉箭头;Nav.Footer 增加 onClick 回调 [#1611](https://github.com/DouyinFE/semi-design/issues/1611)
+  - Anchor 的 showTooltip API 支持 object 类型设置
+  - Typography.Title 新增 weight API,用于控制字重
+  - Select ref 新增 search 方法暴露
+- 【Fix】
+  - 修复 TimePicker 在 date-fns-tz 版本 >= 1.3.8 时 timeZone 转换问题 [#1604](https://github.com/DouyinFE/semi-design/issues/1604)
+  - 修复 Tabs 中通过 tab API 传入的 ReactNode 中的 Radio,Checkbox 样式错误问题  [#1615](https://github.com/DouyinFE/semi-design/issues/1615)
+  - 修复 Calendar 在改变 displayValue 时,事件渲染错误 [@sylingd](https://github.com/sylingd)
+  - 修复 Typography 中省略未开启时仍抛出 ellipsis warning 的问题
+  - 修复 Table  表头 column align 对齐 bug(影响范围 v2.34 ~ 2.35) [#1599](https://github.com/DouyinFE/semi-design/issues/1599)
+  - 移除 DatePicker 最外层 vertical-align top 样式  [#1561](https://github.com/DouyinFE/semi-design/issues/1561)
+  - 修复 Select handleInputChange 参数类型与 Input onChange 参数类型不匹配问题
+- 【Design Token】
+  - Typography 新增 `$font-typography_title1-fontWeight` `$font-typography_title2-fontWeight` `$font-typography_title3-fontWeight` `$font-typography_title4-fontWeight` `$font-typography_title5-fontWeight` `$font-typography_title6-fontWeight` 用于分别控制不同级别 Header 字重
+- 【Docs】
+  - Tabs、Typography 增加 Notice 注意事项
+  - Slider 修正部分书写错误内容 [@inottn](https://github.com/inottn)
+
+
 #### 🎉 2.35.0 (2023-05-12)
 - 【Fix】
     - 修复 collapsible Tabs 切换 tab 后,Dropdown item 异常问题
     - 修复 select 单选和 renderSelectedItem 情况下,defaultValue 为 null 时不显示 placeholder 问题
-    - 修复部分情境下垂直 slider 点击跳转值错误的问题
+    - 修复 部分场景下垂直 slider 点击跳转值错误的问题
 
 #### 🎉 2.35.0-beta.0 (2023-05-10)
 - 【Fix】
-    - Avatar Cascader form input 的字重定义使用默认 $font-weight-bold
+    - Avatar、Cascader、Form、Input 的字重定义使用默认 $font-weight-bold
 
 #### 🎉 2.34.2 (2023-05-09)
 - 【Fix】
     - 修复 Input type=search 且 showClear 为true时,原生清除按钮与 Semi 清除按钮同时显示的问题  [#1598](https://github.com/DouyinFE/semi-design/issues/1598)
-    - 修复 DatePicker disabledDate 无法选择禁用边界日期问题  [#1592 ](https://github.com/DouyinFE/semi-design/issues/1592)
+    - 修复 DatePicker disabledDate 无法选择禁用边界日期问题  [#1592](https://github.com/DouyinFE/semi-design/issues/1592)
 
 #### 🎉 2.34.1 (2023-05-06)
 - 【Fix】
@@ -39,6 +69,8 @@ Semi 版本号遵循 **Semver** 规范(主版本号-次版本号-修订版本
   - 修复 Form.InputGroup 不受 Form disabled控制的问题 [#1575](https://github.com/DouyinFE/semi-design/pull/1575)
   - 修复 Typography 在父级或自身设置 white-space 为 nowrap 时截断出错问题 [#1577](https://github.com/DouyinFE/semi-design/issues/1577)
   - 修复 懒加载模式下 Image 的 src 变化,图片无法正常加载问题 [#1526](https://github.com/DouyinFE/semi-design/issues/1526)
+
+
 #### 🎉 2.34.0-beta.0 (2023-04-25)
 - 【Feat】
   - 新增 Rspack plugin,支持 Rspack 工程配置主题、prefixCls等 [@Asuka109](https://github.com/Asuka109)

+ 1 - 1
lerna.json

@@ -1,5 +1,5 @@
 {
     "useWorkspaces": true,
     "npmClient": "yarn",
-    "version": "2.35.0"
+    "version": "2.36.0"
 }

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-animation-react",
-    "version": "2.35.0",
+    "version": "2.36.0",
     "description": "motion library for semi-ui-react",
     "keywords": [
         "motion",

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-animation-styled",
-    "version": "2.35.0",
+    "version": "2.36.0",
     "description": "semi styled animation",
     "keywords": [
         "semi",

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-animation",
-    "version": "2.35.0",
+    "version": "2.36.0",
     "description": "animation base library for semi-ui",
     "keywords": [
         "animation",

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

@@ -1,6 +1,6 @@
 {
     "name": "eslint-plugin-semi-design",
-    "version": "2.35.0",
+    "version": "2.36.0",
     "description": "semi ui eslint plugin",
     "keywords": [
         "semi",

+ 1 - 1
packages/semi-foundation/calendar/calendar.scss

@@ -273,7 +273,7 @@ $module: #{$prefix}-calendar;
                 justify-content: center;
                 align-items: center;
 
-                span {
+                > span {
                     display: flex;
                     align-items: center;
                     justify-content: center;

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

@@ -201,7 +201,8 @@ export default class CalendarFoundation<P = Record<string, any>, S = Record<stri
         const { range, weekStartsOn } = this.getProps();
         const len = differenceInCalendarDays(range[1], range[0]);
         data.month = format(value, 'LLL', { locale: dateFnsLocale, weekStartsOn });
-        data.week = calcRangeData(value, range[0], len, 'week', dateFnsLocale, weekStartsOn);
+        const startDate = startOfDay(range[0]);
+        data.week = calcRangeData(value, startDate, len, 'week', dateFnsLocale, weekStartsOn);
         this._adapter.setRangeData(data);
         return data;
     }

+ 8 - 4
packages/semi-foundation/datePicker/_utils/getYears.ts

@@ -1,6 +1,10 @@
-const getYears = () => {
-    const year = new Date().getFullYear();
-    const startYear = year - 100;
-    return Array.from({ length: 200 }, (v, i) => startYear + i);
+const getYears = (startYear?: number, endYear?: number) => {
+    const currentYear = new Date().getFullYear();
+    let start = typeof startYear === 'number' ? startYear : currentYear - 100;
+    let end = typeof endYear === 'number' ? endYear : currentYear + 100;
+    if (end < start) {
+        [start, end] = [end, start];
+    }
+    return Array.from({ length: end - start + 1 }, (v, i) => start + i);
 };
 export default getYears;

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

@@ -117,7 +117,7 @@ export interface EventHandlerProps {
     onClickOutSide?: () => void
 }
 
-export interface DatePickerFoundationProps extends ElementProps, RenderProps, EventHandlerProps {
+export interface DatePickerFoundationProps extends ElementProps, RenderProps, EventHandlerProps, Pick<MonthsGridFoundationProps, 'startYear' | 'endYear'> {
     autoAdjustOverflow?: boolean;
     autoFocus?: boolean;
     autoSwitchDate?: boolean;

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

@@ -24,6 +24,7 @@ import { BaseValueType, DateInputFoundationProps, PresetPosition, ValueType } fr
 import { MonthDayInfo } from './monthFoundation';
 import { ArrayElement } from '../utils/type';
 import isValidTimeZone from './_utils/isValidTimeZone';
+import { YearAndMonthFoundationProps } from './yearAndMonthFoundation';
 
 const dateDiffFns = {
     month: differenceInCalendarMonths,
@@ -54,7 +55,7 @@ interface MonthsGridElementProps {
 export type PanelType = 'left' | 'right';
 export type YearMonthChangeType = 'prevMonth' | 'nextMonth' | 'prevYear' | 'nextYear';
 
-export interface MonthsGridFoundationProps extends MonthsGridElementProps {
+export interface MonthsGridFoundationProps extends MonthsGridElementProps, Pick<YearAndMonthFoundationProps, 'startYear' | 'endYear'> {
     type?: Type;
     /** may be null if selection is not complete when type is dateRange or dateTimeRange */
     defaultValue?: (Date | null)[];

+ 3 - 1
packages/semi-foundation/datePicker/yearAndMonthFoundation.ts

@@ -24,7 +24,9 @@ export interface YearAndMonthFoundationProps {
     renderQuickControls?: any;
     renderDateInput?: any;
     type?: Type;
-    yearAndMonthOpts?: any
+    yearAndMonthOpts?: any;
+    startYear?: number;
+    endYear?: number
 }
 
 export interface YearAndMonthFoundationState {

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-foundation",
-    "version": "2.35.0",
+    "version": "2.36.0",
     "description": "",
     "scripts": {
         "build:lib": "node ./scripts/compileLib.js",

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

@@ -5,6 +5,7 @@ const cssClasses = {
 };
 
 const strings = {
+    WEIGHT: ['light', 'regular', 'medium', 'semibold', 'bold', "default"],
     TYPE: ['primary', 'secondary', 'danger', 'warning', 'success', 'tertiary', 'quaternary'],
     SIZE: ['normal', 'small'],
     SPACING: ['normal', 'extended'],

+ 131 - 6
packages/semi-foundation/typography/typography.scss

@@ -177,49 +177,174 @@ $module: #{$prefix}-typography;
     &-paragraph {
         margin: $spacing-typography_title_paragraph-margin;
     }
+
 }
 
 // ============ Title ============
 h1.#{$module},
 .#{$module}-h1.#{$module} {
     @include font-size-header-1;
-    font-weight: $font-typography_title-fontWeight;
+    font-weight: $font-typography_title1-fontWeight;
     margin: $spacing-typography_title_h1-margin;
+
+    &.#{$module}-h1-weight-light {
+        font-weight: $font-typography_title1-light-fontWeight;
+    }
+
+    &.#{$module}-h1-weight-regular {
+        font-weight: $font-typography_title1-regular-fontWeight;
+    }
+
+    &.#{$module}-h1-weight-medium {
+        font-weight: $font-typography_title1-medium-fontWeight;
+    }
+
+    &.#{$module}-h1-weight-semibold {
+        font-weight: $font-typography_title1-semibold-fontWeight;
+    }
+
+    &.#{$module}-h1-weight-bold {
+        font-weight: $font-typography_title1-bold-fontWeight;
+    }
+
 }
 
 h2.#{$module},
 .#{$module}-h2.#{$module} {
     @include font-size-header-2;
-    font-weight: $font-typography_title-fontWeight;
+    font-weight: $font-typography_title2-fontWeight;
     margin: $spacing-typography_title_h2-margin;
+
+    &.#{$module}-h2-weight-light {
+        font-weight: $font-typography_title2-light-fontWeight;
+    }
+
+    &.#{$module}-h2-weight-regular {
+        font-weight: $font-typography_title2-regular-fontWeight;
+    }
+
+    &.#{$module}-h2-weight-medium {
+        font-weight: $font-typography_title2-medium-fontWeight;
+    }
+
+    &.#{$module}-h2-weight-semibold {
+        font-weight: $font-typography_title2-semibold-fontWeight;
+    }
+
+    &.#{$module}-h2-weight-bold {
+        font-weight: $font-typography_title2-bold-fontWeight;
+    }
+
 }
 
 h3.#{$module},
 .#{$module}-h3.#{$module} {
     @include font-size-header-3;
-    font-weight: $font-typography_title-fontWeight;
+    font-weight: $font-typography_title3-fontWeight;
     margin: $spacing-typography_title_h3-margin;
+
+    &.#{$module}-h3-weight-light {
+        font-weight: $font-typography_title3-light-fontWeight;
+    }
+
+    &.#{$module}-h3-weight-regular {
+        font-weight: $font-typography_title3-regular-fontWeight;
+    }
+
+    &.#{$module}-h3-weight-medium {
+        font-weight: $font-typography_title3-medium-fontWeight;
+    }
+
+    &.#{$module}-h3-weight-semibold {
+        font-weight: $font-typography_title3-semibold-fontWeight;
+    }
+
+    &.#{$module}-h3-weight-bold {
+        font-weight: $font-typography_title3-bold-fontWeight;
+    }
+
 }
 
 h4.#{$module},
 .#{$module}-h4.#{$module} {
     @include font-size-header-4;
-    font-weight: $font-typography_title-fontWeight;
+    font-weight: $font-typography_title4-fontWeight;
     margin: $spacing-typography_title_h4-margin;
+
+    &.#{$module}-h4-weight-light {
+        font-weight: $font-typography_title4-light-fontWeight;
+    }
+
+    &.#{$module}-h4-weight-regular {
+        font-weight: $font-typography_title4-regular-fontWeight;
+    }
+
+    &.#{$module}-h4-weight-medium {
+        font-weight: $font-typography_title4-medium-fontWeight;
+    }
+
+    &.#{$module}-h4-weight-semibold {
+        font-weight: $font-typography_title4-semibold-fontWeight;
+    }
+
+    &.#{$module}-h4-weight-bold {
+        font-weight: $font-typography_title4-bold-fontWeight;
+    }
 }
 
 h5.#{$module},
 .#{$module}-h5.#{$module} {
     @include font-size-header-5;
-    font-weight: $font-typography_title-fontWeight;
+    font-weight: $font-typography_title5-fontWeight;
     margin: $spacing-typography_title_h5-margin;
+
+    &.#{$module}-h5-weight-light {
+        font-weight: $font-typography_title5-light-fontWeight;
+    }
+
+    &.#{$module}-h5-weight-regular {
+        font-weight: $font-typography_title5-regular-fontWeight;
+    }
+
+    &.#{$module}-h5-weight-medium {
+        font-weight: $font-typography_title5-medium-fontWeight;
+    }
+
+    &.#{$module}-h5-weight-semibold {
+        font-weight: $font-typography_title5-semibold-fontWeight;
+    }
+
+    &.#{$module}-h5-weight-bold {
+        font-weight: $font-typography_title5-bold-fontWeight;
+    }
 }
 
 h6.#{$module},
 .#{$module}-h6.#{$module} {
     @include font-size-header-6;
-    font-weight: $font-typography_title-fontWeight;
+    font-weight: $font-typography_title6-fontWeight;
     margin: $spacing-typography_title_h6-margin;
+
+    &.#{$module}-h6-weight-light {
+        font-weight: $font-typography_title6-light-fontWeight;
+    }
+
+    &.#{$module}-h6-weight-regular {
+        font-weight: $font-typography_title6-regular-fontWeight;
+    }
+
+    &.#{$module}-h6-weight-medium {
+        font-weight: $font-typography_title6-medium-fontWeight;
+    }
+
+    &.#{$module}-h6-weight-semibold {
+        font-weight: $font-typography_title6-semibold-fontWeight;
+    }
+
+    &.#{$module}-h6-weight-bold {
+        font-weight: $font-typography_title6-bold-fontWeight;
+    }
+
 }
 
 // ============ Paragraph ============

+ 48 - 0
packages/semi-foundation/typography/variables.scss

@@ -27,6 +27,54 @@ $font-typography_link-fontWeight: $font-weight-bold; // 链接文本字重
 $font-typography_strong-fontWeight: $font-weight-bold; // 强调文本字重
 $font-typography_paragraph_extended-lineHeight: 24px; // 宽松行距段落文本行高
 
+$font-typography_title1-fontWeight: $font-typography_title-fontWeight; // 一级标题文本字重
+$font-typography_title2-fontWeight: $font-typography_title-fontWeight; // 二级标题文本字重
+$font-typography_title3-fontWeight: $font-typography_title-fontWeight; // 三级标题文本字重
+$font-typography_title4-fontWeight: $font-typography_title-fontWeight; // 四级标题文本字重
+$font-typography_title5-fontWeight: $font-typography_title-fontWeight; // 五级标题文本字重
+$font-typography_title6-fontWeight: $font-typography_title-fontWeight; // 六级标题文本字重
+
+
+
+
+$font-typography_title1-light-fontWeight: 200; // 一级标题文本字重 - 细
+$font-typography_title2-light-fontWeight: 200; // 二级标题文本字重 - 细
+$font-typography_title3-light-fontWeight: 200; // 三级标题文本字重 - 细
+$font-typography_title4-light-fontWeight: 200; // 四级标题文本字重 - 细
+$font-typography_title5-light-fontWeight: 200; // 五级标题文本字重 - 细
+$font-typography_title6-light-fontWeight: 200; // 六级标题文本字重 - 细
+
+$font-typography_title1-regular-fontWeight: 400; // 一级标题文本字重 - 正常
+$font-typography_title2-regular-fontWeight: 400; // 二级标题文本字重 - 正常
+$font-typography_title3-regular-fontWeight: 400; // 三级标题文本字重 - 正常
+$font-typography_title4-regular-fontWeight: 400; // 四级标题文本字重 - 正常
+$font-typography_title5-regular-fontWeight: 400; // 五级标题文本字重 - 正常
+$font-typography_title6-regular-fontWeight: 400; // 六级标题文本字重 - 正常
+
+$font-typography_title1-medium-fontWeight: 500; // 一级标题文本字重 - 中等
+$font-typography_title2-medium-fontWeight: 500; // 二级标题文本字重 - 中等
+$font-typography_title3-medium-fontWeight: 500; // 三级标题文本字重 - 中等
+$font-typography_title4-medium-fontWeight: 500; // 四级标题文本字重 - 中等
+$font-typography_title5-medium-fontWeight: 500; // 五级标题文本字重 - 中等
+$font-typography_title6-medium-fontWeight: 500; // 六级标题文本字重 - 中等
+
+$font-typography_title1-semibold-fontWeight: 600; // 一级标题文本字重 - 半粗
+$font-typography_title2-semibold-fontWeight: 600; // 二级标题文本字重 - 半粗
+$font-typography_title3-semibold-fontWeight: 600; // 三级标题文本字重 - 半粗
+$font-typography_title4-semibold-fontWeight: 600; // 三级标题文本字重 - 半粗
+$font-typography_title5-semibold-fontWeight: 600; // 三级标题文本字重 - 半粗
+$font-typography_title6-semibold-fontWeight: 600; // 三级标题文本字重 - 半粗
+
+$font-typography_title1-bold-fontWeight: 700; // 一级标题文本字重 - 粗
+$font-typography_title2-bold-fontWeight: 700; // 二级标题文本字重 - 粗
+$font-typography_title3-bold-fontWeight: 700; // 三级标题文本字重 - 粗
+$font-typography_title4-bold-fontWeight: 700; // 三级标题文本字重 - 粗
+$font-typography_title5-bold-fontWeight: 700; // 三级标题文本字重 - 粗
+$font-typography_title6-bold-fontWeight: 700; // 三级标题文本字重 - 粗
+
+
+
+
 $spacing-typography_iconPrefix-marginRight: 4px; // 带前缀文本图标右侧外边距
 $spacing-typography_expandText-marginLeft: 8px; // 支持展开文本展开按钮左侧外边距
 $spacing-typography_copyIcon-marginLeft: 4px; // 可复制文本复制图标左侧外边距

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-icons",
-    "version": "2.35.0",
+    "version": "2.36.0",
     "description": "semi icons",
     "keywords": [
         "semi",

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-illustrations",
-    "version": "2.35.0",
+    "version": "2.36.0",
     "description": "semi illustrations",
     "keywords": [
         "semi",

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-next",
-    "version": "2.35.0",
+    "version": "2.36.0",
     "description": "Plugin that support Semi Design in Next.js",
     "author": "伍浩威 <[email protected]>",
     "homepage": "",

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-rspack-plugin",
-    "version": "2.35.0",
+    "version": "2.36.0",
     "description": "",
     "homepage": "",
     "license": "MIT",

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-scss-compile",
-    "version": "2.35.0",
+    "version": "2.36.0",
     "description": "compile semi scss to css",
     "author": "[email protected]",
     "license": "MIT",

+ 1 - 1
packages/semi-theme-default/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-theme-default",
-    "version": "2.35.0",
+    "version": "2.36.0",
     "description": "semi-theme-default",
     "keywords": [
         "semi-theme",

+ 28 - 0
packages/semi-ui/anchor/_story/anchor.stories.jsx

@@ -289,4 +289,32 @@ export const AutoCollapse = () => {
         <Button onClick={()=>{console.log('sdf');setHref('#我改变啦')}}>setHref</Button>
       </div>
   )
+};
+
+export const SetTooltip = () => {
+  const getContainer = () => {
+      return document.querySelector('window');
+  };
+  return (
+      <div>
+          <Anchor
+              showTooltip={{
+                type: 'popover',
+                opts: {
+                  style: { wordBreak: 'break-all' }
+                }
+              }}
+              position={'right'}
+              getContainer={getContainer}
+              targetOffset={60}
+              offsetTop={100}
+          >
+              <Anchor.Link href="#工具提示位置" title="基本示例111111111111111111111111111111111111111111111112" />
+              <Anchor.Link href="#组件" title="组件" />
+              <Anchor.Link href="#设计语言" title="设计语言" />
+              <Anchor.Link href="#物料平台" title="物料平台" />
+              <Anchor.Link href="#主题商店" title="主题商店" />
+          </Anchor>
+      </div>
+  );
 };

+ 2 - 1
packages/semi-ui/anchor/index.tsx

@@ -11,6 +11,7 @@ import { noop, debounce, throttle } from 'lodash';
 import getUuid from '@douyinfe/semi-foundation/utils/uuid';
 import { ArrayElement } from '../_base/base';
 import ConfigContext, { ContextValue } from '../configProvider/context';
+import { ShowTooltip } from '../typography/interface';
 
 const prefixCls = cssClasses.PREFIX;
 
@@ -28,7 +29,7 @@ export interface AnchorProps {
     position?: ArrayElement<typeof strings.POSITION_SET>;
     railTheme?: ArrayElement<typeof strings.SLIDE_COLOR>;
     scrollMotion?: boolean;
-    showTooltip?: boolean;
+    showTooltip?: boolean | ShowTooltip;
     size?: ArrayElement<typeof strings.SIZE>;
     style?: React.CSSProperties;
     targetOffset?: number;

+ 8 - 2
packages/semi-ui/anchor/link.tsx

@@ -6,6 +6,7 @@ import { cssClasses } from '@douyinfe/semi-foundation/anchor/constants';
 import LinkFoundation, { LinkAdapter } from '@douyinfe/semi-foundation/anchor/linkFoundation';
 import AnchorContext, { AnchorContextType } from './anchor-context';
 import Typography from '../typography/index';
+import { isObject } from 'lodash';
 
 const prefixCls = cssClasses.PREFIX;
 
@@ -100,12 +101,17 @@ export default class Link extends BaseComponent<LinkProps, {}> {
             [`${prefixCls}-link-tooltip-active`]: active,
             [`${prefixCls}-link-tooltip-disabled`]: disabled,
         });
-        const toolTipOpt = position ? { position } : {};
         if (showTooltip) {
+            const showTooltipObj = isObject(showTooltip) ? 
+                Object.assign({ opts: {} }, showTooltip) : { opts: {} };
+            // The position can be set through showTooltip, here it is compatible with the position API
+            if (position) {
+                showTooltipObj.opts['position'] = position;
+            }
             return (
                 <Typography.Text
                     size={size === 'default' ? 'normal' : 'small'}
-                    ellipsis={{ showTooltip: { opts: { ...toolTipOpt } } }}
+                    ellipsis={{ showTooltip: showTooltipObj }}
                     type={'tertiary'}
                     className={linkTitleCls}
                 >

+ 67 - 0
packages/semi-ui/calendar/__test__/calendar.test.js

@@ -200,4 +200,71 @@ describe('Calendar', () => {
         // 2023-05-06
         expect(lastRow.find('li').last().hasClass(sameMonthClass)).toEqual(false);
     });
+
+    it('Custom renderDateDisplay', () => {
+        const displayValue = new Date(2023, 3, 1, 8, 32, 0);
+        const customPrefix = 'my-custom-render-';
+
+        let monthCalendar = mount(<Calendar
+            mode={'month'}
+            displayValue={displayValue}
+            renderDateDisplay={d => <span className={`${customPrefix}${d.getMonth()}-${d.getDate()}`} />}
+        ></Calendar>);
+
+        // 2023-04-01
+        expect(monthCalendar.find(`.${customPrefix}3-1`).length).toEqual(1);
+
+        let weekCalendar = mount(<Calendar
+            mode={'week'}
+            displayValue={displayValue}
+            renderDateDisplay={d => <span className={`${customPrefix}${d.getMonth()}-${d.getDate()}`} />}
+        ></Calendar>);
+
+        // 2023-04-01
+        expect(weekCalendar.find(`.${customPrefix}3-1`).length).toEqual(1);
+    });
+
+    it('Custom allDayEventsRender', () => {
+        const displayValue = new Date(2023, 3, 1, 8, 32, 0);
+        const customClassName = 'my-custom-render';
+        const defaultElementSelector = '.semi-calendar-event-allday';
+
+        let calendar = mount(<Calendar
+            mode={'week'}
+            displayValue={displayValue}
+            allDayEventsRender={events => <div className={customClassName} />}
+        ></Calendar>);
+
+        expect(calendar.find(`.${customClassName}`).length).toEqual(1);
+        expect(calendar.find(defaultElementSelector).length).toEqual(0);
+    });
+
+    it('test range mode RangeData fixture', () => {
+        const displayValue = new Date(2023, 3, 1, 8, 32, 0);
+        const events = [
+            {
+                key: '0',
+                allDay: false,
+                start: new Date(2023, 3, 1, 8, 32, 0),
+                end: new Date(2023, 3, 1, 9, 32, 0),
+                children: <div className="eventDay">eventDay</div>,
+            },
+        ];
+        const range = [
+            new Date(2023, 3, 1, 8, 32, 0),
+            new Date(2023, 3, 5, 8, 32, 0),
+        ];
+
+        let calendar = mount(<Calendar
+            mode="range"
+            height={400}
+            displayValue={displayValue}
+            range={range}
+            events={events}
+        ></Calendar>);
+        // force set scrollHeight to avoid skipped events render
+        calendar.childAt(0).setState({ scrollHeight: 400 });
+
+        expect(calendar.find(".eventDay").length).toBe(1);
+    });
 })

+ 5 - 1
packages/semi-ui/calendar/dayCalendar.tsx

@@ -37,6 +37,7 @@ export default class DayCalendar extends BaseComponent<DayCalendarProps, DayCale
         style: PropTypes.object,
         className: PropTypes.string,
         dateGridRender: PropTypes.func,
+        allDayEventsRender: PropTypes.func,
     };
 
     static defaultProps = {
@@ -97,7 +98,7 @@ export default class DayCalendar extends BaseComponent<DayCalendarProps, DayCale
     componentDidUpdate(prevProps: DayCalendarProps, prevState: DayCalendarState) {
         const prevEventKeys = prevState.cachedKeys;
         const nowEventKeys = this.props.events.map(event => event.key);
-        if (!isEqual(prevEventKeys, nowEventKeys)) {
+        if (!isEqual(prevEventKeys, nowEventKeys) || !isEqual(prevProps.displayValue, this.props.displayValue)) {
             this.foundation.parseDailyEvents();
         }
     }
@@ -109,6 +110,9 @@ export default class DayCalendar extends BaseComponent<DayCalendarProps, DayCale
     checkWeekend = (val: Date) => this.foundation.checkWeekend(val);
 
     renderAllDayEvents = (events: ParsedEventsWithArray['allDay']) => {
+        if (this.props.allDayEventsRender) {
+            return this.props.allDayEventsRender(this.props.events);
+        }
         const list = events.map((event, ind) => {
             const { children, key } = event;
             return (

+ 1 - 0
packages/semi-ui/calendar/index.tsx

@@ -29,6 +29,7 @@ class Calendar extends BaseComponent<CalendarProps, {}> {
         scrollTop: PropTypes.number,
         onClick: PropTypes.func,
         renderTimeDisplay: PropTypes.func,
+        renderDateDisplay: PropTypes.func,
         markWeekend: PropTypes.bool,
         width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
         height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),

+ 3 - 1
packages/semi-ui/calendar/interface.ts

@@ -18,7 +18,9 @@ export interface CalendarProps extends BaseProps {
     markWeekend?: boolean;
     width?: number | string;
     height?: number | string;
-    dateGridRender?: (dateString?: string, date?: Date) => React.ReactNode
+    renderDateDisplay?: (date: Date) => React.ReactNode;
+    dateGridRender?: (dateString?: string, date?: Date) => React.ReactNode;
+    allDayEventsRender?: (events: EventObject[]) => React.ReactNode
 }
 
 export type DayCalendarProps = Omit<CalendarProps, 'mode'>;

+ 8 - 4
packages/semi-ui/calendar/monthCalendar.tsx

@@ -158,7 +158,7 @@ export default class monthCalendar extends BaseComponent<MonthCalendarProps, Mon
                 itemLimitUpdate = true;
             }
         }
-        if (!isEqual(prevEventKeys, nowEventKeys) || itemLimitUpdate) {
+        if (!isEqual(prevEventKeys, nowEventKeys) || itemLimitUpdate || !isEqual(prevProps.displayValue, this.props.displayValue)) {
             this.foundation.parseMonthlyEvents((itemLimit || this.props.events) as any);
         }
     }
@@ -290,7 +290,7 @@ export default class monthCalendar extends BaseComponent<MonthCalendarProps, Mon
                 ref={ref => this.cardRef.set(key, ref)}
             >
                 <li key={date as any} className={listCls} onClick={e => this.handleClick(e, [date])}>
-                    {this.formatDayString(month, dayString)}
+                    {this.formatDayString(date, month, dayString)}
                     {shouldRenderCard ? text : null}
                     {this.renderCusDateGrid(date)}
                 </li>
@@ -298,7 +298,11 @@ export default class monthCalendar extends BaseComponent<MonthCalendarProps, Mon
         );
     };
 
-    formatDayString = (month: string, date: string) => {
+    formatDayString = (dateObj: Date, month: string, date: string) => {
+        const { renderDateDisplay } = this.props;
+        if (renderDateDisplay) {
+            return renderDateDisplay(dateObj);
+        }
         if (date === '1') {
             return (
                 <LocaleConsumer componentName="Calendar">
@@ -343,7 +347,7 @@ export default class monthCalendar extends BaseComponent<MonthCalendarProps, Mon
                         const shouldRenderCollapsed = Boolean(day && day[ind] && day[ind].length > itemLimit);
                         const inner = (
                             <li role="gridcell" aria-label={date.toLocaleDateString()} aria-current={isToday ? "date" : false} key={`${date}-weeksk`} className={listCls} onClick={e => this.handleClick(e, [date])}>
-                                {this.formatDayString(month, dayString)}
+                                {this.formatDayString(date, month, dayString)}
                                 {this.renderCusDateGrid(date)}
                             </li>
                         );

+ 21 - 9
packages/semi-ui/calendar/rangeCalendar.tsx

@@ -1,8 +1,8 @@
-import React from 'react';
+import React, { Fragment } from 'react';
 import cls from 'classnames';
 import PropTypes from 'prop-types';
 // eslint-disable-next-line max-len
-import CalendarFoundation, { ParsedEvents, CalendarAdapter, RangeData, ParsedRangeEvent, ParsedEventsType } from '@douyinfe/semi-foundation/calendar/foundation';
+import CalendarFoundation, { ParsedEvents, CalendarAdapter, RangeData, ParsedRangeEvent, ParsedEventsType, EventObject } from '@douyinfe/semi-foundation/calendar/foundation';
 import LocaleConsumer from '../locale/localeConsumer';
 import localeContext from '../locale/context';
 import { cssClasses } from '@douyinfe/semi-foundation/calendar/constants';
@@ -41,7 +41,9 @@ export default class RangeCalendar extends BaseComponent<RangeCalendarProps, Ran
         markWeekend: PropTypes.bool,
         scrollTop: PropTypes.number,
         renderTimeDisplay: PropTypes.func,
+        renderDateDisplay: PropTypes.func,
         dateGridRender: PropTypes.func,
+        allDayEventsRender: PropTypes.func,
         width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
         height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
         style: PropTypes.object,
@@ -110,7 +112,7 @@ export default class RangeCalendar extends BaseComponent<RangeCalendarProps, Ran
     componentDidUpdate(prevProps: RangeCalendarProps, prevState: RangeCalendarState) {
         const prevEventKeys = prevState.cachedKeys;
         const nowEventKeys = this.props.events.map(event => event.key);
-        if (!isEqual(prevEventKeys, nowEventKeys)) {
+        if (!isEqual(prevEventKeys, nowEventKeys) || !isEqual(prevProps.range, this.props.range)) {
             this.foundation.parseRangeEvents();
         }
     }
@@ -151,7 +153,7 @@ export default class RangeCalendar extends BaseComponent<RangeCalendarProps, Ran
     };
 
     renderHeader = (dateFnsLocale: Locale['dateFnsLocale']) => {
-        const { markWeekend, range } = this.props;
+        const { markWeekend, range, renderDateDisplay } = this.props;
         const { month, week } = this.foundation.getRangeData(range[0], dateFnsLocale);
         return (
             <div className={`${prefixCls}-header`}>
@@ -166,10 +168,17 @@ export default class RangeCalendar extends BaseComponent<RangeCalendarProps, Ran
                                 [`${cssClasses.PREFIX}-today`]: isToday,
                                 [`${cssClasses.PREFIX}-weekend`]: markWeekend && day.isWeekend,
                             });
-                            return (
-                                <li key={`${date.toString()}-weekheader`} className={listCls}>
+                            const dateContent = renderDateDisplay ? (
+                                renderDateDisplay(date)
+                            ) : (
+                                <Fragment>
                                     <span className={`${cssClasses.PREFIX}-today-date`}>{dayString}</span>
                                     <span>{weekday}</span>
+                                </Fragment>
+                            );
+                            return (
+                                <li key={`${date.toString()}-weekheader`} className={listCls}>
+                                    {dateContent}
                                 </li>
                             );
                         })}
@@ -180,6 +189,9 @@ export default class RangeCalendar extends BaseComponent<RangeCalendarProps, Ran
     };
 
     renderAllDayEvents = (events: Array<ParsedRangeEvent>) => {
+        if (this.props.allDayEventsRender) {
+            return this.props.allDayEventsRender(this.props.events);
+        }
         const list = events.map((event, ind) => {
             const { leftPos, width, topInd, children } = event;
             const top = `${topInd}em`;
@@ -202,11 +214,11 @@ export default class RangeCalendar extends BaseComponent<RangeCalendarProps, Ran
     };
 
     renderAllDay = (locale: Locale['Calendar']) => {
+        const { allDayEventsRender } = this.props;
         const { allDay } = this.state.parsedEvents;
         const parsed = this.foundation.parseRangeAllDayEvents(allDay);
-        const maxRowHeight = calcRowHeight(parsed);
-        const style = {
-            height: `${maxRowHeight}em`
+        const style = allDayEventsRender ? null : {
+            height: `${calcRowHeight(parsed) }em`
         };
         const { markWeekend } = this.props;
         const { week } = this.RangeData;

+ 20 - 8
packages/semi-ui/calendar/weekCalendar.tsx

@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { Fragment } from 'react';
 import cls from 'classnames';
 import PropTypes from 'prop-types';
 import CalendarFoundation, { CalendarAdapter, EventObject, ParsedEvents, ParsedEventsType, ParsedRangeEvent, WeeklyData } from '@douyinfe/semi-foundation/calendar/foundation';
@@ -39,7 +39,9 @@ export default class WeekCalendar extends BaseComponent<WeekCalendarProps, WeekC
         markWeekend: PropTypes.bool,
         scrollTop: PropTypes.number,
         renderTimeDisplay: PropTypes.func,
+        renderDateDisplay: PropTypes.func,
         dateGridRender: PropTypes.func,
+        allDayEventsRender: PropTypes.func,
         width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
         height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
         style: PropTypes.object,
@@ -108,7 +110,7 @@ export default class WeekCalendar extends BaseComponent<WeekCalendarProps, WeekC
     componentDidUpdate(prevProps: WeekCalendarProps, prevState: WeekCalendarState) {
         const prevEventKeys = prevState.cachedKeys;
         const nowEventKeys = this.props.events.map(event => event.key);
-        if (!isEqual(prevEventKeys, nowEventKeys)) {
+        if (!isEqual(prevEventKeys, nowEventKeys) || !isEqual(prevProps.displayValue, this.props.displayValue)) {
             this.foundation.parseWeeklyEvents();
         }
     }
@@ -152,7 +154,7 @@ export default class WeekCalendar extends BaseComponent<WeekCalendarProps, WeekC
     };
 
     renderHeader = (dateFnsLocale: any) => {
-        const { markWeekend, displayValue } = this.props;
+        const { markWeekend, displayValue, renderDateDisplay } = this.props;
         const { month, week } = this.foundation.getWeeklyData(displayValue, dateFnsLocale);
         return (
             <div className={`${prefixCls}-header`}>
@@ -167,10 +169,17 @@ export default class WeekCalendar extends BaseComponent<WeekCalendarProps, WeekC
                                 [`${cssClasses.PREFIX}-today`]: isToday,
                                 [`${cssClasses.PREFIX}-weekend`]: markWeekend && day.isWeekend,
                             });
-                            return (
-                                <li key={`${date.toString()}-weekheader`} className={listCls}>
+                            const dateContent = renderDateDisplay ? (
+                                renderDateDisplay(date)
+                            ) : (
+                                <Fragment>
                                     <span className={`${cssClasses.PREFIX}-today-date`}>{dayString}</span>
                                     <span>{weekday}</span>
+                                </Fragment>
+                            );
+                            return (
+                                <li key={`${date.toString()}-weekheader`} className={listCls}>
+                                    {dateContent}
                                 </li>
                             );
                         })}
@@ -181,6 +190,9 @@ export default class WeekCalendar extends BaseComponent<WeekCalendarProps, WeekC
     };
 
     renderAllDayEvents = (events: ParsedRangeEvent[]) => {
+        if (this.props.allDayEventsRender) {
+            return this.props.allDayEventsRender(this.props.events);
+        }
         const list = events.map((event, ind) => {
             const { leftPos, width, topInd, children, key } = event;
             const top = `${topInd}em`;
@@ -203,11 +215,11 @@ export default class WeekCalendar extends BaseComponent<WeekCalendarProps, WeekC
     };
 
     renderAllDay = (locale: Locale['Calendar']) => {
+        const { allDayEventsRender } = this.props;
         const { allDay } = this.state.parsedEvents;
         const parsed = this.foundation.parseWeeklyAllDayEvents(allDay);
-        const maxRowHeight = calcRowHeight(parsed);
-        const style = {
-            height: `${maxRowHeight}em`
+        const style = allDayEventsRender ? null : {
+            height: `${calcRowHeight(parsed)}em`
         };
         const { markWeekend } = this.props;
         const { week } = this.weeklyData;

+ 18 - 0
packages/semi-ui/datePicker/_story/v2/FeatYearScrollRange.tsx

@@ -0,0 +1,18 @@
+import React from 'react';
+import { DatePicker, Space } from '../../../index';
+
+App.storyName = 'year scroll range';
+
+/**
+ * @see https://github.com/DouyinFE/semi-design/issues/1620
+ */
+export default function App() {
+    return (
+        <div data-cy="container">
+            <Space vertical align="start">
+                <DatePicker type="dateTime" startYear={2000} endYear={2300} />
+                <DatePicker type="month" startYear={2000} endYear={2300} />
+            </Space>
+        </div>
+    );
+}

+ 1 - 0
packages/semi-ui/datePicker/_story/v2/index.js

@@ -24,3 +24,4 @@ export { default as FixNeedConfirmInTabs } from './FixNeedConfirmInTabs';
 export { default as DynamicDisabledDate } from './dynamicDisabledDate';
 export { default as FeatEtcGMT } from './FeatEtcGMT';
 export { default as FixDisabledDate } from './FixDisabledDate';
+export { default as FeatYearScrollRange } from './FeatYearScrollRange';

+ 8 - 2
packages/semi-ui/datePicker/datePicker.tsx

@@ -499,7 +499,9 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
             triggerRender,
             insetInput,
             presetPosition,
-            yearAndMonthOpts
+            yearAndMonthOpts,
+            startYear,
+            endYear
         } = this.props;
         const { cachedSelectedValue, rangeInputFocus } = this.state;
 
@@ -543,6 +545,8 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
                 renderQuickControls={this.renderQuickControls()}
                 renderDateInput={this.renderDateInput()}
                 yearAndMonthOpts={yearAndMonthOpts}
+                startYear={startYear}
+                endYear={endYear}
             />
         );
     }
@@ -777,7 +781,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
     };
 
     renderYearMonthPanel = (locale: Locale['DatePicker'], localeCode: string) => {
-        const { density, presetPosition, yearAndMonthOpts, type } = this.props;
+        const { density, presetPosition, yearAndMonthOpts, type, startYear, endYear } = this.props;
 
         const date = this.state.value[0];
         const year = { left: 0, right: 0 };
@@ -812,6 +816,8 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
                 renderDateInput={this.renderDateInput()}
                 type={type}
                 yearAndMonthOpts={yearAndMonthOpts}
+                startYear={startYear}
+                endYear={endYear}
             />
         );
     };

+ 3 - 1
packages/semi-ui/datePicker/monthsGrid.tsx

@@ -499,7 +499,7 @@ export default class MonthsGrid extends BaseComponent<MonthsGridProps, MonthsGri
 
     renderYearAndMonth(panelType: PanelType, panelDetail: MonthInfo) {
         const { pickerDate } = panelDetail;
-        const { locale, localeCode, density, yearAndMonthOpts } = this.props;
+        const { locale, localeCode, density, yearAndMonthOpts, startYear, endYear } = this.props;
         const y = pickerDate.getFullYear();
         const m = pickerDate.getMonth() + 1;
         return (
@@ -523,6 +523,8 @@ export default class MonthsGrid extends BaseComponent<MonthsGridProps, MonthsGri
                 }}
                 density={density}
                 yearAndMonthOpts={yearAndMonthOpts}
+                startYear={startYear}
+                endYear={endYear}
             />
         );
     }

+ 5 - 3
packages/semi-ui/datePicker/yearAndMonth.tsx

@@ -42,6 +42,8 @@ class YearAndMonth extends BaseComponent<YearAndMonthProps, YearAndMonthState> {
         renderQuickControls: PropTypes.node,
         renderDateInput: PropTypes.node,
         type: PropTypes.oneOf(strings.TYPE_SET),
+        startYear: PropTypes.number,
+        endYear: PropTypes.number,
     };
 
     static defaultProps = {
@@ -69,7 +71,7 @@ class YearAndMonth extends BaseComponent<YearAndMonthProps, YearAndMonthState> {
         currentMonth = { left: currentLeftMonth, right: currentMonth.right || currentLeftMonth + 1 };
 
         this.state = {
-            years: getYears().map(year => ({
+            years: getYears(props.startYear, props.endYear).map(year => ({
                 value: year,
                 year,
             })),
@@ -298,7 +300,7 @@ class YearAndMonth extends BaseComponent<YearAndMonthProps, YearAndMonthState> {
                             {presetPosition === "left" && type !== 'monthRange' && renderQuickControls}
                             <div>
                                 {renderDateInput}
-                                {content} 
+                                {content}
                             </div>
                             {/* todo: monthRange does not support presetPosition temporarily */}
                             {presetPosition === "right" && type !== 'monthRange' && renderQuickControls}
@@ -306,7 +308,7 @@ class YearAndMonth extends BaseComponent<YearAndMonthProps, YearAndMonthState> {
                     ) :
                         <>
                             {renderDateInput}
-                            {content} 
+                            {content}
                         </>
                 }
             </React.Fragment>

+ 7 - 8
packages/semi-ui/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-ui",
-    "version": "2.35.0",
+    "version": "2.36.0",
     "description": "",
     "main": "lib/cjs/index.js",
     "module": "lib/es/index.js",
@@ -17,12 +17,12 @@
         "lib/*"
     ],
     "dependencies": {
-        "@douyinfe/semi-animation": "2.35.0",
-        "@douyinfe/semi-animation-react": "2.35.0",
-        "@douyinfe/semi-foundation": "2.35.0",
-        "@douyinfe/semi-icons": "2.35.0",
-        "@douyinfe/semi-illustrations": "2.35.0",
-        "@douyinfe/semi-theme-default": "2.35.0",
+        "@douyinfe/semi-animation": "2.36.0",
+        "@douyinfe/semi-animation-react": "2.36.0",
+        "@douyinfe/semi-foundation": "2.36.0",
+        "@douyinfe/semi-icons": "2.36.0",
+        "@douyinfe/semi-illustrations": "2.36.0",
+        "@douyinfe/semi-theme-default": "2.36.0",
         "async-validator": "^3.5.0",
         "classnames": "^2.2.6",
         "copy-text-to-clipboard": "^2.1.1",
@@ -76,7 +76,6 @@
         "@babel/preset-env": "^7.15.8",
         "@babel/preset-react": "^7.14.5",
         "@douyinfe/semi-scss-compile": "2.23.2",
-        "@storybook/addon-knobs": "^6.3.1",
         "@types/lodash": "^4.14.176",
         "@types/react": ">=16.0.0",
         "@types/react-dom": ">=16.0.0",

+ 4 - 1
packages/semi-ui/select/index.tsx

@@ -658,7 +658,7 @@ class Select extends BaseComponent<SelectProps, SelectState> {
         }
     }
 
-    handleInputChange = (value: string, event: React.KeyboardEvent) => this.foundation.handleInputChange(value, event);
+    handleInputChange = (value: string, event: React.ChangeEvent<HTMLInputElement>) => this.foundation.handleInputChange(value, event);
 
     renderInput() {
         const { size, multiple, disabled, inputProps, filter } = this.props;
@@ -739,6 +739,9 @@ class Select extends BaseComponent<SelectProps, SelectState> {
         this.foundation.handleClearClick(e as any);
     }
 
+    search(value: string, event: React.ChangeEvent<HTMLInputElement>) {
+        this.handleInputChange(value, event);
+    }
 
     renderEmpty() {
         return <Option empty={true} emptyContent={this.props.emptyContent} />;

+ 19 - 6
packages/semi-ui/typography/base.tsx

@@ -1,4 +1,4 @@
-import React, { Component } from 'react';
+import React, { Component, CSSProperties } from 'react';
 import ReactDOM from 'react-dom';
 import cls from 'classnames';
 import PropTypes from 'prop-types';
@@ -38,7 +38,8 @@ export interface BaseTypographyProps extends BaseProps {
     children?: React.ReactNode;
     component?: React.ElementType;
     spacing?: string;
-    heading?: string
+    heading?: string;
+    weight?: string | number
 }
 
 interface BaseTypographyState {
@@ -50,6 +51,7 @@ interface BaseTypographyState {
     isTruncated: boolean;
     prevChildren: React.ReactNode
 }
+
 const prefixCls = cssClasses.PREFIX;
 const ELLIPSIS_STR = '...';
 
@@ -213,7 +215,7 @@ export default class Base extends Component<BaseTypographyProps, BaseTypographyS
         this.rafId = window.requestAnimationFrame(this.getEllipsisState.bind(this));
     };
 
-    // if need to use js overflowed:
+    // if it needs to use js overflowed:
     // 1. text is expandable 2. expandText need to be shown  3. has extra operation 4. text need to ellipse from mid
     canUseCSSEllipsis = () => {
         const { copyable } = this.props;
@@ -527,7 +529,7 @@ export default class Base extends Component<BaseTypographyProps, BaseTypographyS
             duration: 3,
             ...(typeof copyable === 'object' ? copyable : null),
         };
-        return <Copyable {...copyConfig} forwardRef={this.copyRef} />;
+        return <Copyable {...copyConfig} forwardRef={this.copyRef}/>;
     }
 
     renderIcon() {
@@ -557,6 +559,7 @@ export default class Base extends Component<BaseTypographyProps, BaseTypographyS
             size,
             link,
             heading,
+            weight,
             ...rest
         } = this.props;
         const textProps = omit(rest, [
@@ -585,6 +588,7 @@ export default class Base extends Component<BaseTypographyProps, BaseTypographyS
             </>
         );
         const hTagReg = /^h[1-6]$/;
+        const isHeader = isString(heading) && hTagReg.test(heading);
         const wrapperCls = cls(className, ellipsisCls, {
             // [`${prefixCls}-primary`]: !type || type === 'primary',
             [`${prefixCls}-${type}`]: type && !link,
@@ -592,12 +596,21 @@ export default class Base extends Component<BaseTypographyProps, BaseTypographyS
             [`${prefixCls}-link`]: link,
             [`${prefixCls}-disabled`]: disabled,
             [`${prefixCls}-${spacing}`]: spacing,
-            [`${prefixCls}-${heading}`]: isString(heading) && hTagReg.test(heading),
+            [`${prefixCls}-${heading}`]: isHeader,
+            [`${prefixCls}-${heading}-weight-${weight}`]: isHeader && weight && isNaN(Number(weight)),
         });
+
+        const textStyle: CSSProperties = {
+            ...(
+                isNaN(Number(weight)) ? {} : { fontWeight: weight }
+            ),
+            ...style
+        };
+
         return (
             <Typography
                 className={wrapperCls}
-                style={{ ...style, ...ellipsisStyle }}
+                style={{ ...textStyle, ...ellipsisStyle }}
                 component={component}
                 forwardRef={this.wrapperRef}
                 {...textProps}

+ 1 - 1
packages/semi-ui/typography/index.tsx

@@ -8,7 +8,7 @@ export type TypographyType = typeof BaseTypography & {
     Text: typeof Text;
     Title: typeof Title;
     Paragraph: typeof Paragraph;
-    Numeral: typeof Numeral;
+    Numeral: typeof Numeral
 };
 
 const Typography = BaseTypography as TypographyType;

+ 6 - 2
packages/semi-ui/typography/title.tsx

@@ -12,12 +12,13 @@ export interface CopyableConfig {
     copyTip?: React.ReactNode;
     successTip?: React.ReactNode;
     icon?: React.ReactNode;
+
     onCopy?(e: React.MouseEvent, content: string, res: boolean): void
 }
 
 export type LinkType = React.AnchorHTMLAttributes<HTMLAnchorElement> | boolean;
 
-export interface TitleProps extends Omit<React.HTMLAttributes<HTMLHeadingElement>, OmitTitleProps>{
+export interface TitleProps extends Omit<React.HTMLAttributes<HTMLHeadingElement>, OmitTitleProps> {
     className?: string;
     component?: React.ElementType;
     copyable?: CopyableConfig | boolean;
@@ -30,8 +31,10 @@ export interface TitleProps extends Omit<React.HTMLAttributes<HTMLHeadingElement
     strong?: boolean;
     style?: React.CSSProperties;
     type?: TypographyBaseType;
-    underline?: boolean
+    underline?: boolean;
+    weight?: ArrayElement<typeof strings.WEIGHT> | number
 }
+
 export default class Title extends PureComponent<TitleProps> {
     static propTypes = {
         copyable: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),
@@ -48,6 +51,7 @@ export default class Title extends PureComponent<TitleProps> {
         style: PropTypes.object,
         className: PropTypes.string,
         component: PropTypes.string,
+        weight: PropTypes.oneOfType([PropTypes.oneOf(strings.WEIGHT), PropTypes.number]),
     };
 
     static defaultProps = {

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-webpack-plugin",
-    "version": "2.35.0",
+    "version": "2.36.0",
     "description": "",
     "author": "伍浩威 <[email protected]>",
     "homepage": "",

+ 79 - 0
yarn.lock

@@ -1488,6 +1488,15 @@
     "@douyinfe/semi-animation-styled" "2.23.2"
     classnames "^2.2.6"
 
+"@douyinfe/[email protected]":
+  version "2.35.0"
+  resolved "https://registry.npmjs.org/@douyinfe/semi-animation-react/-/semi-animation-react-2.35.0.tgz#ab1455cfd970e3667c81749f0b00c037ecd5b46e"
+  integrity sha512-u7FWiKZRyGr9pIEeN8qAt9BkYLM7aKDIQYI9OjD0D5j5j6TmIZkzI+xJsnSXnNthVCrF0KRatKyy65j3DQ+xRA==
+  dependencies:
+    "@douyinfe/semi-animation" "2.12.0"
+    "@douyinfe/semi-animation-styled" "2.23.2"
+    classnames "^2.2.6"
+
 "@douyinfe/[email protected]":
   version "2.23.2"
   resolved "https://registry.npmjs.org/@douyinfe/semi-animation-styled/-/semi-animation-styled-2.23.2.tgz#f18bc074515441c297cc636ed98521e249d093c9"
@@ -1508,6 +1517,13 @@
   dependencies:
     bezier-easing "^2.1.0"
 
+"@douyinfe/[email protected]":
+  version "2.35.0"
+  resolved "https://registry.npmjs.org/@douyinfe/semi-animation/-/semi-animation-2.35.0.tgz#fc7f3cfac2d162debec8fc7fa303ef1817916f80"
+  integrity sha512-fnq/OrSw0qSwBBPX3IywUqNpyVbRV4tN71gH+IhNzhyLmcmrsF0ssSaj5T7IowDz+PTgAfuBwy9aL6MaxaBEqg==
+  dependencies:
+    bezier-easing "^2.1.0"
+
 "@douyinfe/[email protected]":
   version "2.33.1"
   resolved "https://registry.npmjs.org/@douyinfe/semi-foundation/-/semi-foundation-2.33.1.tgz#1dfe6233e35a4ed768cb580b0c9a677d1c34ffba"
@@ -1522,6 +1538,20 @@
     memoize-one "^5.2.1"
     scroll-into-view-if-needed "^2.2.24"
 
+"@douyinfe/[email protected]":
+  version "2.35.0"
+  resolved "https://registry.npmjs.org/@douyinfe/semi-foundation/-/semi-foundation-2.35.0.tgz#a718ac702538ff743729bbdbaa8d6775bf306667"
+  integrity sha512-Qj9jMguKKWsYWxbNFlCMYV8VCMntoMmOEDWc5JgBENJE8l1PcU5x5qKTwFeSHQVu3A+Cw7xhnKdMh6FBDi+S8Q==
+  dependencies:
+    "@douyinfe/semi-animation" "2.12.0"
+    async-validator "^3.5.0"
+    classnames "^2.2.6"
+    date-fns "^2.29.3"
+    date-fns-tz "^1.3.8"
+    lodash "^4.17.21"
+    memoize-one "^5.2.1"
+    scroll-into-view-if-needed "^2.2.24"
+
 "@douyinfe/[email protected]", "@douyinfe/semi-icons@latest":
   version "2.33.1"
   resolved "https://registry.yarnpkg.com/@douyinfe/semi-icons/-/semi-icons-2.33.1.tgz#8e2871d9bc0ab7e12df74e3c71802d53d69b7425"
@@ -1529,11 +1559,23 @@
   dependencies:
     classnames "^2.2.6"
 
+"@douyinfe/[email protected]", "@douyinfe/semi-icons@^2.0.0":
+  version "2.35.0"
+  resolved "https://registry.npmjs.org/@douyinfe/semi-icons/-/semi-icons-2.35.0.tgz#33131e2edfb8b0d176f9c4f5d624da930770834a"
+  integrity sha512-et993+faccNSd+Lf2uE4DzZX4s3oJbzCMgHEJjeZOFQgAYpkyKRdpSC9hnix1czLvFvVTtb6WqlstRT0lDZ2Vw==
+  dependencies:
+    classnames "^2.2.6"
+
 "@douyinfe/[email protected]":
   version "2.33.1"
   resolved "https://registry.npmjs.org/@douyinfe/semi-illustrations/-/semi-illustrations-2.33.1.tgz#530ab851f4dc32a52221c4067c778c800b9b55d7"
   integrity sha512-tTTUN8QwnQiF++sk4VBNzfkG87aYZ4iUeqk2ys8/ymVUmCZQ7y46ys020GO1MfPHRR47OMFPI82FVcH1WQtE3g==
 
+"@douyinfe/[email protected]":
+  version "2.35.0"
+  resolved "https://registry.npmjs.org/@douyinfe/semi-illustrations/-/semi-illustrations-2.35.0.tgz#dac63ac1d9bcc3d222a5799285be911bb30ab786"
+  integrity sha512-jtCyb6vX5ZcR0gdCTBaMdGm48n8b8hlWiJ1aqqGqZN/64uaFOShRFJZkL4i8U69siFHLQpFTVL1ZESHfL4TS4Q==
+
 "@douyinfe/[email protected]":
   version "2.23.2"
   resolved "https://registry.npmjs.org/@douyinfe/semi-scss-compile/-/semi-scss-compile-2.23.2.tgz#30884bb194ee9ae1e81877985e5663c3297c1ced"
@@ -1607,6 +1649,38 @@
   dependencies:
     glob "^7.1.6"
 
+"@douyinfe/[email protected]":
+  version "2.35.0"
+  resolved "https://registry.npmjs.org/@douyinfe/semi-theme-default/-/semi-theme-default-2.35.0.tgz#517bd687982d07d1a884a7b94d1edc9e7c419d45"
+  integrity sha512-zK+khIps9FiQ2WU7IPMJbVPlqvTkh/qZk9I4leSM+J1YCLz3pxrRNsU/kCxwB53QI2hOOIb0VlmKLzmwPhD9HQ==
+  dependencies:
+    glob "^7.1.6"
+
+"@douyinfe/semi-ui@^2.0.0":
+  version "2.35.0"
+  resolved "https://registry.npmjs.org/@douyinfe/semi-ui/-/semi-ui-2.35.0.tgz#f02a8ff046fc44fdccdbe8366a95ea5a92c5655a"
+  integrity sha512-mTJOlT4rm8OtDd0LMZjhAvDQCKAip32c0u5YXqz+stq55KXvE+vihisUO5aUK8HXodicyujsXO5YfTuLfaduWQ==
+  dependencies:
+    "@douyinfe/semi-animation" "2.35.0"
+    "@douyinfe/semi-animation-react" "2.35.0"
+    "@douyinfe/semi-foundation" "2.35.0"
+    "@douyinfe/semi-icons" "2.35.0"
+    "@douyinfe/semi-illustrations" "2.35.0"
+    "@douyinfe/semi-theme-default" "2.35.0"
+    async-validator "^3.5.0"
+    classnames "^2.2.6"
+    copy-text-to-clipboard "^2.1.1"
+    date-fns "^2.29.3"
+    date-fns-tz "^1.3.8"
+    lodash "^4.17.21"
+    prop-types "^15.7.2"
+    react-resizable "^1.8.0"
+    react-sortable-hoc "^2.0.0"
+    react-window "^1.8.2"
+    resize-observer-polyfill "^1.5.1"
+    scroll-into-view-if-needed "^2.2.24"
+    utility-types "^3.10.0"
+
 "@douyinfe/semi-ui@latest":
   version "2.33.1"
   resolved "https://registry.yarnpkg.com/@douyinfe/semi-ui/-/semi-ui-2.33.1.tgz#3234ca96eb3560b8299bc9750fbe59446522d9bb"
@@ -11486,6 +11560,11 @@ eslint-plugin-react@^7.20.6, eslint-plugin-react@^7.24.0:
     semver "^6.3.0"
     string.prototype.matchall "^4.0.8"
 
+eslint-plugin-semi-design@^2.33.0:
+  version "2.35.0"
+  resolved "https://registry.npmjs.org/eslint-plugin-semi-design/-/eslint-plugin-semi-design-2.35.0.tgz#8e5037d65dc1e4a5a00cf5f6db9b40ec210e0647"
+  integrity sha512-mEQKp/KjHzZ1teA/TA1817x1GVgeVuDSnqVWQzy7NOl2jNDbAymkKyTHouxHgSEmilIT4Zx8kLMP/9APEB6EoA==
+
 eslint-rule-composer@^0.3.0:
   version "0.3.0"
   resolved "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9"