mirror of
https://github.com/ant-design/ant-design.git
synced 2024-11-28 05:05:48 +08:00
commit
40379a3e40
4
.github/workflows/ui.yml
vendored
4
.github/workflows/ui.yml
vendored
@ -4,10 +4,6 @@ on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened]
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- next
|
||||
- feature
|
||||
|
||||
# Cancel prev CI if new commit come
|
||||
concurrency:
|
||||
|
@ -15,54 +15,79 @@ timeline: true
|
||||
|
||||
---
|
||||
|
||||
## 4.20.0-alpha.1
|
||||
## 4.20.1
|
||||
|
||||
`2022-04-18`
|
||||
`2022-04-26`
|
||||
|
||||
- 🐞 Fix Breadcrumb extra padding and margin style. [#35235](https://github.com/ant-design/ant-design/pull/35235)
|
||||
- 🐞 Fix Input.Seach inconsistent behavior of triggering `onSearch` when press enter using Chinese inputting method. [#35164](https://github.com/ant-design/ant-design/pull/35164) [@qyzzzz](https://github.com/qyzzzz)
|
||||
- 🐞 Fix circle reference between Upload and Dragger. [#34379](https://github.com/ant-design/ant-design/pull/34379) [@kanweiwei](https://github.com/kanweiwei)
|
||||
|
||||
## 4.20.0
|
||||
|
||||
`2022-04-24`
|
||||
|
||||
- 🔥 React 18 Support. Fix related known issue.
|
||||
- 🐞 Fix Form with React 18 StrictMode missing error message update. [#35096](https://github.com/ant-design/ant-design/pull/35096)
|
||||
- 🐞 Fix Notification and Message throw `createRoot` warning in React 18. [#35030](https://github.com/ant-design/ant-design/pull/35030)
|
||||
- 🐞 Fix BackTop not working in StrictMode. [#34858](https://github.com/ant-design/ant-design/pull/34858) [@tmkx](https://github.com/tmkx)
|
||||
- 🔥 New component Segmented. [#34319](https://github.com/ant-design/ant-design/pull/34319)
|
||||
- 🛠 Since v4.20.0 `Segemented` props `onChange` callback function parameter adjusted from `ChangeEvent` (v4.20.0-alpha.0, v4.20.0-alpha.1) to `value` to simplify API. [#35187](https://github.com/ant-design/ant-design/pull/35187) [@vagusX](https://github.com/vagusX)
|
||||
- Form
|
||||
- 🔥 Form support `useWatch` to get current field value. [#35036](https://github.com/ant-design/ant-design/pull/35036)
|
||||
- 🆕 Form support `useFormInstance` to get current context form instance. [#35039](https://github.com/ant-design/ant-design/pull/35039)
|
||||
- 💄 Fix Form broken layout when set `labelCol={{ sm: 24 }}` and `wrapperCol={{ sm: 24 }}`. [#34907](https://github.com/ant-design/ant-design/pull/34907)
|
||||
- 🛎 Menu support `items` for perf prepare, and `children` will be removed in next major version. [#34559](https://github.com/ant-design/ant-design/pull/34559)
|
||||
- 🆕 Image PreviewGroup Support top progress rendering. [#35038](https://github.com/ant-design/ant-design/pull/35038) [@zpc7](https://github.com/zpc7)
|
||||
- Upload
|
||||
- 🆕 Upload support `crossOrigin` for images in `picture-card` mode. [#34981](https://github.com/ant-design/ant-design/pull/34981) [@dragmove](https://github.com/dragmove)
|
||||
- 🐞 Fix Upload `prefixCls` don't work on file list. [#34944](https://github.com/ant-design/ant-design/pull/34944) [@swchen](https://github.com/swchen)
|
||||
- 💄 Improve Upload action styles. [#35052](https://github.com/ant-design/ant-design/pull/35052)
|
||||
- 🐞 Fix Notification and Message throw `createRoot` warning in React 18. [#35030](https://github.com/ant-design/ant-design/pull/35030)
|
||||
- 🐞 Fix Select and AutoComplete scroll abnormal behavior when navigate via keyboard.。[#35025](https://github.com/ant-design/ant-design/pull/35025)
|
||||
- 🐞 Fix Cascader search result do not fill the entrie panel. [#35019](https://github.com/ant-design/ant-design/pull/35019) [@boomler](https://github.com/boomler)
|
||||
- 💄 Fix Spin animation style being abnormally parsed in Parcel. [#35005](https://github.com/ant-design/ant-design/pull/35005)
|
||||
- 💄 Arrow radius use fixed value `2px`. [#34999](https://github.com/ant-design/ant-design/pull/34999)
|
||||
|
||||
## 4.20.0-alpha.0
|
||||
|
||||
`2022-04-12`
|
||||
|
||||
- 🔥 Add new component Segmented. [#34319](https://github.com/ant-design/ant-design/pull/34319)
|
||||
- Table
|
||||
- 🆕 Support reset to the default value rather than empty, when click reset in Table column filter. [#34355](https://github.com/ant-design/ant-design/pull/34355) [@heiyu4585](https://github.com/heiyu4585)
|
||||
- 💄 Fix Table head background and selection column width styling issues when `size="small"`. [#34963](https://github.com/ant-design/ant-design/pull/34963)
|
||||
- 🇩🇪 Improve German translations for Table. [#34836](https://github.com/ant-design/ant-design/pull/34836) [@pfedan](https://github.com/pfedan)
|
||||
- ⚡️ Optimize Table filter calculation perfromance. [#35064](https://github.com/ant-design/ant-design/pull/35064) [@nieyuyao](https://github.com/nieyuyao)
|
||||
- 💄 Improve small and middle size Table selection dropdown margin style. [#35173](https://github.com/ant-design/ant-design/pull/35173)
|
||||
- Tree
|
||||
- 🆕 Tree `switcherIcon` prop support render-prop. [#34470](https://github.com/ant-design/ant-design/pull/34470) [@zqran](https://github.com/zqran)
|
||||
- 🆕 Tree support `rootClassName` and `rootStyle`. [#34578](https://github.com/ant-design/ant-design/pull/34578)
|
||||
- 🆕 Anchor `getCurrentAnchor` has active link as argument. [#34799](https://github.com/ant-design/ant-design/pull/34799)
|
||||
- 🆕 Cascader supports `showCheckedStrategy ` for value display strategy. [#34568](https://github.com/ant-design/ant-design/pull/34568) [@heiyu4585](https://github.com/heiyu4585)
|
||||
- Breadcrumb
|
||||
- 🐞 Fix Breadcrumb deprecated warning of Dropdown `placement`. [#35162](https://github.com/ant-design/ant-design/pull/35162)
|
||||
- 🐞 Fix Breadcrumb show the number when is unexpected. [#35123](https://github.com/ant-design/ant-design/pull/35123)
|
||||
- ⌨️ Make structure of Breadcrumb be accessible. [#34082](https://github.com/ant-design/ant-design/pull/34082) [@VladimirOtroshchenko](https://github.com/VladimirOtroshchenko)
|
||||
- Anchor
|
||||
- 🆕 Anchor `getCurrentAnchor` has active link as argument. [#34799](https://github.com/ant-design/ant-design/pull/34799)
|
||||
- 🛠 Refactor Anchor to Function component. [#35073](https://github.com/ant-design/ant-design/pull/35073) [@LongHaoo](https://github.com/LongHaoo)
|
||||
- Cascader
|
||||
- 🆕 Cascader supports `showCheckedStrategy ` for value display strategy. [#34568](https://github.com/ant-design/ant-design/pull/34568) [@heiyu4585](https://github.com/heiyu4585)
|
||||
- 🐞 Fix Cascader search result do not fill the entrie panel. [#35019](https://github.com/ant-design/ant-design/pull/35019) [@boomler](https://github.com/boomler)
|
||||
- 🆕 Click event object can be accessed in `onCopy` function of Typography. [#34655](https://github.com/ant-design/ant-design/pull/34655) [@yzwxk](https://github.com/yzwxk)
|
||||
- 🆕 Grid supports `justify="space-evenly"`. [#34606](https://github.com/ant-design/ant-design/pull/34606) [@gp5251](https://github.com/gp5251)
|
||||
- 🆕 Support `rootClassName` property for Dialog and Image. [#34574](https://github.com/ant-design/ant-design/pull/34574) [@heiyu4585](https://github.com/heiyu4585)
|
||||
- 🐞 Fix error `Nothing was returned from render` when Skeleton use falsy `loading` props without `children`. [#34872](https://github.com/ant-design/ant-design/pull/34872) [@AlbertAZ1992](https://github.com/AlbertAZ1992)
|
||||
- 🐞 Fix BackTop not working in StrictMode. [#34858](https://github.com/ant-design/ant-design/pull/34858) [@tmkx](https://github.com/tmkx)
|
||||
- 💄 Optimize Switch disabled color to fit colorful background. [#35103](https://github.com/ant-design/ant-design/pull/35103)
|
||||
- 💄 Remove Tabs `overflow: hidden` style to fix Select and sticky Table display problem inside Tabs. [#35195](https://github.com/ant-design/ant-design/pull/35195)
|
||||
- 💄 Fix Steps style issues in RTL mode. [#35088](https://github.com/ant-design/ant-design/pull/35088) [@zpc7](https://github.com/zpc7)
|
||||
- 💄 Fix animation for standalone Badge in RTL mode. [#34899](https://github.com/ant-design/ant-design/pull/34899) [@hmz22](https://github.com/hmz22)
|
||||
- 🛠 Optimize Modal id generate logic to improve accessibility experience. [#35072](https://github.com/ant-design/ant-design/pull/35072)
|
||||
- 🐞 Fix Select and AutoComplete scroll abnormal behavior when navigate via keyboard.。[#35025](https://github.com/ant-design/ant-design/pull/35025)
|
||||
- Spin
|
||||
- 💄 Fix Spin animation style being abnormally parsed in Parcel. [#35005](https://github.com/ant-design/ant-design/pull/35005)
|
||||
- ⌨️ Spin add `aria` attribute to improve accessibility. [#34408](https://github.com/ant-design/ant-design/pull/34408) [@heiyu4585](https://github.com/heiyu4585)
|
||||
- ⌨️ Dropdown support select option by keyboard. [#34738](https://github.com/ant-design/ant-design/pull/34738)
|
||||
- 🐞 Fix Title, Text, Paragraph components cannot get `ref` bug. [#34847](https://github.com/ant-design/ant-design/pull/34847) [@MQuy](https://github.com/MQuy)
|
||||
- Input
|
||||
- 💄 Input.Group prevent components from getting style from Form.Item. [#34764](https://github.com/ant-design/ant-design/pull/34764)
|
||||
- 💄 Adjust TextArea style in Form. [#34714](https://github.com/ant-design/ant-design/pull/34714)
|
||||
- 💄 Fix Form broken layout when set `labelCol={{ sm: 24 }}` and `wrapperCol={{ sm: 24 }}`. [#34907](https://github.com/ant-design/ant-design/pull/34907)
|
||||
- 💄 Fix animation for standalone Badge in RTL mode. [#34899](https://github.com/ant-design/ant-design/pull/34899) [@hmz22](https://github.com/hmz22)
|
||||
- ⌨️ Fix `aria-checked` attribute for Checkbox, to avoid screen reader getting an incorrect status. [#34862](https://github.com/ant-design/ant-design/pull/34862) [@SpaNb4](https://github.com/SpaNb4)
|
||||
- ⌨️ Dropdown support switch options with arrow keys. [#34738](https://github.com/ant-design/ant-design/pull/34738)
|
||||
- ⌨️ Spin add `aria` attribute to improve accessibility. [#34408](https://github.com/ant-design/ant-design/pull/34408) [@heiyu4585](https://github.com/heiyu4585)
|
||||
- ⌨️ Make structure of Breadcrumb be accessible. [#34082](https://github.com/ant-design/ant-design/pull/34082) [@VladimirOtroshchenko](https://github.com/VladimirOtroshchenko)
|
||||
- 🛎 Menu support `items` for perf prepare, and `children` will be removed in next major version. [#34559](https://github.com/ant-design/ant-design/pull/34559)
|
||||
- Less
|
||||
- 💄 Replace less html selector with related variable. [#35186](https://github.com/ant-design/ant-design/pull/35186) [@jeffdrumgod](https://github.com/jeffdrumgod)
|
||||
- 💄 Modify less `danger` value from the function to variable. [#35113](https://github.com/ant-design/ant-design/pull/35113) [@TrickyPi](https://github.com/TrickyPi)
|
||||
- 🐞 Arrow border radius variable use fixed value. [#35086](https://github.com/ant-design/ant-design/pull/35086) [@MadCcc](https://github.com/MadCcc)
|
||||
- TypeScript
|
||||
- 🤖 Fixed `Upload` component `UploadChangeParam<T>` internal `fileList` not using generics. [#35158](https://github.com/ant-design/ant-design/pull/35158) [@rendaoer](https://github.com/rendaoer)
|
||||
- 🤖 Update TypeScript definition for `@types/react@18` compatible. [#35075](https://github.com/ant-design/ant-design/pull/35075) [@AliRezaBeigy](https://github.com/AliRezaBeigy) [#35076](https://github.com/ant-design/ant-design/pull/35076) [@littledian](https://github.com/littledian)
|
||||
|
||||
## 4.19.5
|
||||
|
||||
|
@ -15,54 +15,79 @@ timeline: true
|
||||
|
||||
---
|
||||
|
||||
## 4.20.0-alpha.1
|
||||
## 4.20.1
|
||||
|
||||
`2022-04-18`
|
||||
`2022-04-26`
|
||||
|
||||
- 🐞 修复 Breadcrumb 多余的 `padding` 和 `margin` 样式。[#35235](https://github.com/ant-design/ant-design/pull/35235)
|
||||
- 🐞 修复 Input.Search 在中文输入法下回车键触发 `onSearch` 的行为不一致的问题。[#35164](https://github.com/ant-design/ant-design/pull/35164) [@qyzzzz](https://github.com/qyzzzz)
|
||||
- 🐞 修复 Upload 和 Upload.Dragger 之间循环依赖的问题。[#34379](https://github.com/ant-design/ant-design/pull/34379) [@kanweiwei](https://github.com/kanweiwei)
|
||||
|
||||
## 4.20.0
|
||||
|
||||
`2022-04-24`
|
||||
|
||||
- 🔥 支持 React 18 以及严格模式,修复了相关已知问题。
|
||||
- 🐞 修复 Form 在 React 18 的 StrictMode 下,错误信息无法更新的问题。[#35096](https://github.com/ant-design/ant-design/pull/35096)
|
||||
- 🐞 修复 Notification 和 Message 在 React 18 下抛出使用 `createRoot` 的警告信息。[#35030](https://github.com/ant-design/ant-design/pull/35030)
|
||||
- 🐞 修复 BackTop 组件在严格模式下不能正常工作的问题。[#34858](https://github.com/ant-design/ant-design/pull/34858) [@tmkx](https://github.com/tmkx)
|
||||
- 🔥 新增 Segmented 分段控制器组件。[#34319](https://github.com/ant-design/ant-design/pull/34319)
|
||||
- 🛠 4.20.0 正式版后,Segemented 的 `onChange` 回调函数的参数从 `ChangeEvent` 调整为 `value`。如果你使用了 `4.20.0-alpha.0` `4.20.0-alpha.1`,请注意这个变化。[#35187](https://github.com/ant-design/ant-design/pull/35187) [@vagusX](https://github.com/vagusX)
|
||||
- Form
|
||||
- 🔥 Form 添加 `useWatch` 支持获取当前字段值。[#35036](https://github.com/ant-design/ant-design/pull/35036)
|
||||
- 🆕 Form 支持 `useFormInstance` 以获取当前上下文中的 Form 实例。[#35039](https://github.com/ant-design/ant-design/pull/35039)
|
||||
- 💄 修复 Form `labelCol={{ sm: 24 }}` 和 `wrapperCol={{ sm: 24 }}` 时样式错乱的问题。[#34907](https://github.com/ant-design/ant-design/pull/34907)
|
||||
- 🛎 Menu 添加 `items` 数据化菜单项支持以为将来性能提升做准备,并且 `children` 将会在下个大版本中废弃。[#34559](https://github.com/ant-design/ant-design/pull/34559)
|
||||
- 🆕 Image PreviewGroup 支持顶部进度渲染。[#35038](https://github.com/ant-design/ant-design/pull/35038) [@zpc7](https://github.com/zpc7)
|
||||
- Upload
|
||||
- 🆕 Upload `picture-card` 模式支持配置图片的 `crossOrigin` 属性。[#34981](https://github.com/ant-design/ant-design/pull/34981) [@dragmove](https://github.com/dragmove)
|
||||
- 🐞 修复 Upload `prefixCls` 对列表不生效的问题。[#34944](https://github.com/ant-design/ant-design/pull/34944) [@swchen](https://github.com/swchen)
|
||||
- 💄 优化 Upload 操作按钮的样式细节。[#35052](https://github.com/ant-design/ant-design/pull/35052)
|
||||
- 🐞 修复 Notification 和 Message 在 React 18 下抛出使用 `createRoot` 的警告信息。[#35030](https://github.com/ant-design/ant-design/pull/35030)
|
||||
- 🐞 修复 Select 和 AutoComplete 使用键盘向下滚动时行为异常的问题。[#35025](https://github.com/ant-design/ant-design/pull/35025)
|
||||
- 🐞 修复 Cascader 的搜索结果未占满整个面板的问题。[#35019](https://github.com/ant-design/ant-design/pull/35019) [@boomler](https://github.com/boomler)
|
||||
- 💄 修复 Spin 动画样式在 Parcel 解析异常的问题。[#35005](https://github.com/ant-design/ant-design/pull/35005)
|
||||
- 💄 箭头圆角固定为 `2px`。[#34999](https://github.com/ant-design/ant-design/pull/34999)
|
||||
|
||||
## 4.20.0-alpha.0
|
||||
|
||||
`2022-04-12`
|
||||
|
||||
- 🔥 新增组件 Segmented。[#34319](https://github.com/ant-design/ant-design/pull/34319)
|
||||
- Table
|
||||
- 🆕 Table 列筛选条件重置时,支持重置为默认值而非空值。[#34355](https://github.com/ant-design/ant-design/pull/34355) [@heiyu4585](https://github.com/heiyu4585)
|
||||
- 💄 修复 Table `size="small"` 时列头背景色和选择列宽度的样式问题。[#34963](https://github.com/ant-design/ant-design/pull/34963)
|
||||
- 🇩🇪 补全 Table 的德语国际化文案。[#34836](https://github.com/ant-design/ant-design/pull/34836) [@pfedan](https://github.com/pfedan)
|
||||
- ⚡️ 优化 Table 过滤列表的计算性能。[#35064](https://github.com/ant-design/ant-design/pull/35064) [@nieyuyao](https://github.com/nieyuyao)
|
||||
- 💄 优化 Table `size="small"` 和 `size="middle"` 时选择下拉菜单的边距样式。[#35173](https://github.com/ant-design/ant-design/pull/35173)
|
||||
- Tree
|
||||
- 🆕 Tree 组件的 `switcherIcon` 属性支持 render-prop。[#34470](https://github.com/ant-design/ant-design/pull/34470) [@zqran](https://github.com/zqran)
|
||||
- 🆕 Tree 支持 `rootClassName` and `rootStyle`。[#34578](https://github.com/ant-design/ant-design/pull/34578)
|
||||
- 🆕 Anchor `getCurrentAnchor` 参数中返回默认高亮项。[#34799](https://github.com/ant-design/ant-design/pull/34799)
|
||||
- ⌨️ Dropdown 支持方向键切换选项。[#34738](https://github.com/ant-design/ant-design/pull/34738)
|
||||
- 🆕 Cascader 添加 `showCheckedStrategy` 用于配置回填方式。[#34568](https://github.com/ant-design/ant-design/pull/34568) [@heiyu4585](https://github.com/heiyu4585)
|
||||
- Breadcrumb
|
||||
- 🐞 修复 Breadcrumb 抛出 `placement` 废弃警告的问题。[#35162](https://github.com/ant-design/ant-design/pull/35162)
|
||||
- 🐞 修复 Breadcrumb 展示非预期的数字符号的样式问题。[#35123](https://github.com/ant-design/ant-design/pull/35123)
|
||||
- ⌨️ 为 Breadcrumb 层次结构增加可访问性支持。[#34082](https://github.com/ant-design/ant-design/pull/34082) [@VladimirOtroshchenko](https://github.com/VladimirOtroshchenko)
|
||||
- Anchor
|
||||
- 🆕 Anchor `getCurrentAnchor` 参数中返回默认高亮项。[#34799](https://github.com/ant-design/ant-design/pull/34799)
|
||||
- 🛠 重构 Anchor 为函数组件。[#35073](https://github.com/ant-design/ant-design/pull/35073) [@LongHaoo](https://github.com/LongHaoo)
|
||||
- Cascader
|
||||
- 🆕 Cascader 添加 `showCheckedStrategy` 用于配置回填方式。[#34568](https://github.com/ant-design/ant-design/pull/34568) [@heiyu4585](https://github.com/heiyu4585)
|
||||
- 🐞 修复 Cascader 的搜索结果未占满整个面板的问题。[#35019](https://github.com/ant-design/ant-design/pull/35019) [@boomler](https://github.com/boomler)
|
||||
- 🆕 Typography 的 `onCopy` 方法支持获取点击事件对象。[#34655](https://github.com/ant-design/ant-design/pull/34655) [@yzwxk](https://github.com/yzwxk)
|
||||
- 🆕 Grid 支持 `justify="space-evenly"`。[#34606](https://github.com/ant-design/ant-design/pull/34606) [@gp5251](https://github.com/gp5251)
|
||||
- 🆕 Dialog 及 Image 支持 `rootClassName` 属性。[#34574](https://github.com/ant-design/ant-design/pull/34574) [@heiyu4585](https://github.com/heiyu4585)
|
||||
- 🐞 修复 Skeleton 在没有 `children` 并设置 `loading` 为 false 时提示 `Nothing was returned from render` 的问题。[#34872](https://github.com/ant-design/ant-design/pull/34872) [@AlbertAZ1992](https://github.com/AlbertAZ1992)
|
||||
- 🐞 修复 BackTop 组件在严格模式下不能正常工作的问题。[#34858](https://github.com/ant-design/ant-design/pull/34858) [@tmkx](https://github.com/tmkx)
|
||||
- 💄 优化 Switch 禁用色以更好适应非白底背景。[#35103](https://github.com/ant-design/ant-design/pull/35103)
|
||||
- 💄 移除 Tabs `overflow: hidden` 样式以修复 Select 和 sticky Table 在 Tabs 中的展现问题。[#35195](https://github.com/ant-design/ant-design/pull/35195)
|
||||
- 💄 修正 Steps 在 RTL 模式下样式问题。[#35088](https://github.com/ant-design/ant-design/pull/35088) [@zpc7](https://github.com/zpc7)
|
||||
- 💄 修复 Badge 在 RTL 模式下、独立使用时的动画效果。[#34899](https://github.com/ant-design/ant-design/pull/34899) [@hmz22](https://github.com/hmz22)
|
||||
- 🛠 优化 Modal id 生成逻辑,以优化无障碍体验。[#35072](https://github.com/ant-design/ant-design/pull/35072)
|
||||
- 🐞 修复 Select 和 AutoComplete 使用键盘向下滚动时行为异常的问题。[#35025](https://github.com/ant-design/ant-design/pull/35025)
|
||||
- Spin
|
||||
- 💄 修复 Spin 动画样式在 Parcel 解析异常的问题。[#35005](https://github.com/ant-design/ant-design/pull/35005)
|
||||
- ⌨️ Spin 添加 `aria` 属性以提升可访问性。[#34408](https://github.com/ant-design/ant-design/pull/34408) [@heiyu4585](https://github.com/heiyu4585)
|
||||
- ⌨️ Dropdown 支持方向键切换选项。[#34738](https://github.com/ant-design/ant-design/pull/34738)
|
||||
- 🐞 修复 Title、Text、Paragraph 组件不支持 `ref` 的问题。[#34847](https://github.com/ant-design/ant-design/pull/34847) [@MQuy](https://github.com/MQuy)
|
||||
- Input
|
||||
- 💄 Input.Group 对子组件屏蔽 Form.Item 的样式。[#34764](https://github.com/ant-design/ant-design/pull/34764)
|
||||
- 💄 调整 Form 下 TextArea 的样式。[#34714](https://github.com/ant-design/ant-design/pull/34714) [@MadCcc](https://github.com/MadCcc)
|
||||
- 💄 修复 Form `labelCol={{ sm: 24 }}` 和 `wrapperCol={{ sm: 24 }}` 时样式错乱的问题。[#34907](https://github.com/ant-design/ant-design/pull/34907)
|
||||
- 💄 修复 Badge 在 RTL 模式下、独立使用时的动画效果。[#34899](https://github.com/ant-design/ant-design/pull/34899) [@hmz22](https://github.com/hmz22)
|
||||
- ⌨️ 修复 Checkbox 缺少 `aria-checked` 属性导致屏幕阅读器识别错误的问题。[#34862](https://github.com/ant-design/ant-design/pull/34862) [@SpaNb4](https://github.com/SpaNb4)
|
||||
- ⌨️ Spin 添加 `aria` 属性以提升可访问性。[#34408](https://github.com/ant-design/ant-design/pull/34408) [@heiyu4585](https://github.com/heiyu4585)
|
||||
- ⌨️ 为 Breadcrumb 层次结构增加可访问性支持。[#34082](https://github.com/ant-design/ant-design/pull/34082) [@VladimirOtroshchenko](https://github.com/VladimirOtroshchenko)
|
||||
- 🛎 Menu 添加 `items` 数据化菜单项支持以为将来性能提升做准备,并且 `children` 将会在下个大版本中废弃。[#34559](https://github.com/ant-design/ant-design/pull/34559)
|
||||
- Less
|
||||
- 💄 替换 less 中的 html 选择器为对应变量。[#35186](https://github.com/ant-design/ant-design/pull/35186) [@jeffdrumgod](https://github.com/jeffdrumgod)
|
||||
- 💄 修改 less 中 `danger` 值从函数改为变量。[#35113](https://github.com/ant-design/ant-design/pull/35113) [@TrickyPi](https://github.com/TrickyPi)
|
||||
- 🐞 箭头圆角使用固定值 2px 变量。[#35086](https://github.com/ant-design/ant-design/pull/35086) [@MadCcc](https://github.com/MadCcc)
|
||||
- TypeScript
|
||||
- 🤖 修正 Upload 组件中 `UploadChangeParam<T>` 内部 `fileList` 不使用泛型问题。[#35158](https://github.com/ant-design/ant-design/pull/35158) [@rendaoer](https://github.com/rendaoer)
|
||||
- 🤖 更新 TypeScript 定义以兼容 `@types/react@18`。[#35075](https://github.com/ant-design/ant-design/pull/35075) [@AliRezaBeigy](https://github.com/AliRezaBeigy) [#35076](https://github.com/ant-design/ant-design/pull/35076) [@littledian](https://github.com/littledian)
|
||||
|
||||
## 4.19.5
|
||||
|
||||
|
@ -16,6 +16,8 @@
|
||||
ol {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
|
@ -85,4 +85,16 @@ describe('Form.typescript', () => {
|
||||
|
||||
expect(Demo).toBeTruthy();
|
||||
});
|
||||
|
||||
// TODO: @crazyair fix for value types
|
||||
it('useWatch', () => {
|
||||
const Demo = () => {
|
||||
const [form] = Form.useForm<FormValues>();
|
||||
const value = Form.useWatch('username', form);
|
||||
|
||||
return <Form form={form}>{value}</Form>;
|
||||
};
|
||||
|
||||
expect(Demo).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
@ -34,11 +34,14 @@ const Search = React.forwardRef<InputRef, SearchProps>((props, ref) => {
|
||||
disabled,
|
||||
onSearch: customOnSearch,
|
||||
onChange: customOnChange,
|
||||
onCompositionStart,
|
||||
onCompositionEnd,
|
||||
...restProps
|
||||
} = props;
|
||||
|
||||
const { getPrefixCls, direction } = React.useContext(ConfigContext);
|
||||
const contextSize = React.useContext(SizeContext);
|
||||
const composedRef = React.useRef<boolean>(false);
|
||||
|
||||
const size = customizeSize || contextSize;
|
||||
|
||||
@ -65,6 +68,13 @@ const Search = React.forwardRef<InputRef, SearchProps>((props, ref) => {
|
||||
}
|
||||
};
|
||||
|
||||
const onPressEnter = (e: React.KeyboardEvent<HTMLInputElement>) => {
|
||||
if (composedRef.current) {
|
||||
return;
|
||||
}
|
||||
onSearch(e);
|
||||
};
|
||||
|
||||
const prefixCls = getPrefixCls('input-search', customizePrefixCls);
|
||||
const inputPrefixCls = getPrefixCls('input', customizeInputPrefixCls);
|
||||
|
||||
@ -127,12 +137,24 @@ const Search = React.forwardRef<InputRef, SearchProps>((props, ref) => {
|
||||
className,
|
||||
);
|
||||
|
||||
const handleOnCompositionStart: React.CompositionEventHandler<HTMLInputElement> = e => {
|
||||
composedRef.current = true;
|
||||
onCompositionStart?.(e);
|
||||
};
|
||||
|
||||
const handleOnCompositionEnd: React.CompositionEventHandler<HTMLInputElement> = e => {
|
||||
composedRef.current = false;
|
||||
onCompositionEnd?.(e);
|
||||
};
|
||||
|
||||
return (
|
||||
<Input
|
||||
ref={composeRef<InputRef>(inputRef, ref)}
|
||||
onPressEnter={onSearch}
|
||||
onPressEnter={onPressEnter}
|
||||
{...restProps}
|
||||
size={size}
|
||||
onCompositionStart={handleOnCompositionStart}
|
||||
onCompositionEnd={handleOnCompositionEnd}
|
||||
prefixCls={inputPrefixCls}
|
||||
addonAfter={button}
|
||||
suffix={suffix}
|
||||
|
@ -161,6 +161,26 @@ describe('Input.Search', () => {
|
||||
);
|
||||
});
|
||||
|
||||
// https://github.com/ant-design/ant-design/issues/34844
|
||||
it('should not trigger onSearch when press enter using chinese inputting method', () => {
|
||||
const onSearch = jest.fn();
|
||||
const wrapper = mount(<Search defaultValue="search text" onSearch={onSearch} />);
|
||||
wrapper.find('input').simulate('compositionStart');
|
||||
wrapper.find('input').simulate('keydown', { key: 'Enter', keyCode: 13 });
|
||||
expect(onSearch).not.toHaveBeenCalled();
|
||||
|
||||
wrapper.find('input').simulate('compositionEnd');
|
||||
wrapper.find('input').simulate('keydown', { key: 'Enter', keyCode: 13 });
|
||||
expect(onSearch).toHaveBeenCalledTimes(1);
|
||||
expect(onSearch).toHaveBeenCalledWith(
|
||||
'search text',
|
||||
expect.objectContaining({
|
||||
type: 'keydown',
|
||||
preventDefault: expect.any(Function),
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
// https://github.com/ant-design/ant-design/issues/14785
|
||||
it('should support addonAfter', () => {
|
||||
const addonAfter = <span>Addon After</span>;
|
||||
|
@ -940,14 +940,16 @@ describe('Menu', () => {
|
||||
|
||||
it('should support ref', async () => {
|
||||
const ref = React.createRef();
|
||||
const wrapper = mount(
|
||||
const { container } = render(
|
||||
<Menu ref={ref}>
|
||||
<SubMenu key="sub1" title="Navigation One">
|
||||
<Menu.Item key="1">Option 1</Menu.Item>
|
||||
</SubMenu>
|
||||
</Menu>,
|
||||
);
|
||||
expect(ref.current?.menu?.list).toBe(wrapper.find('ul').first().getDOMNode());
|
||||
expect(ref.current?.menu?.list).toBe(container.querySelector('ul'));
|
||||
ref.current?.focus();
|
||||
expect(document.activeElement).toBe(container.querySelector('ul'));
|
||||
});
|
||||
|
||||
it('expandIcon', () => {
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* eslint no-use-before-define: "off" */
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { mount } from 'enzyme';
|
||||
import { render, fireEvent } from '../../../tests/utils';
|
||||
import Transfer from '..';
|
||||
|
||||
const listProps = {
|
||||
@ -34,22 +34,29 @@ const listProps = {
|
||||
};
|
||||
|
||||
describe('Transfer.Dropdown', () => {
|
||||
function clickItem(wrapper, index) {
|
||||
wrapper.find('li.ant-dropdown-menu-item').at(index).simulate('click');
|
||||
function clickItem(container: HTMLElement, index: number) {
|
||||
const items = Array.from(
|
||||
container
|
||||
// Menu
|
||||
.querySelector('.ant-dropdown-menu')!
|
||||
// Items
|
||||
.querySelectorAll('li.ant-dropdown-menu-item'),
|
||||
);
|
||||
fireEvent.click(items[index]);
|
||||
}
|
||||
|
||||
it('select all', () => {
|
||||
jest.useFakeTimers();
|
||||
|
||||
const onSelectChange = jest.fn();
|
||||
const wrapper = mount(<Transfer {...listProps} onSelectChange={onSelectChange} />);
|
||||
wrapper.find('.ant-transfer-list-header-dropdown').first().simulate('mouseenter');
|
||||
const { container } = render(<Transfer {...listProps} onSelectChange={onSelectChange} />);
|
||||
|
||||
fireEvent.mouseEnter(container.querySelector('.ant-transfer-list-header-dropdown')!);
|
||||
act(() => {
|
||||
jest.runAllTimers();
|
||||
});
|
||||
wrapper.update();
|
||||
|
||||
clickItem(wrapper.find('.ant-dropdown-menu').first(), 0);
|
||||
clickItem(container, 0);
|
||||
expect(onSelectChange).toHaveBeenCalledWith(['b', 'c', 'd', 'e'], []);
|
||||
|
||||
jest.useRealTimers();
|
||||
@ -59,23 +66,24 @@ describe('Transfer.Dropdown', () => {
|
||||
jest.useFakeTimers();
|
||||
|
||||
const onSelectChange = jest.fn();
|
||||
const wrapper = mount(<Transfer {...listProps} onSelectChange={onSelectChange} />);
|
||||
wrapper.find('.ant-transfer-list-header-dropdown').first().simulate('mouseenter');
|
||||
const { container } = render(<Transfer {...listProps} onSelectChange={onSelectChange} />);
|
||||
fireEvent.mouseEnter(container.querySelector('.ant-transfer-list-header-dropdown')!);
|
||||
act(() => {
|
||||
jest.runAllTimers();
|
||||
});
|
||||
wrapper.update();
|
||||
|
||||
clickItem(wrapper.find('.ant-dropdown-menu').first(), 1);
|
||||
clickItem(container, 1);
|
||||
expect(onSelectChange).toHaveBeenCalledWith(['b', 'c', 'd'], []);
|
||||
|
||||
jest.useRealTimers();
|
||||
});
|
||||
|
||||
it('should hide checkbox and dropdown icon when showSelectAll={false}', () => {
|
||||
const wrapper = mount(<Transfer {...listProps} showSelectAll={false} />);
|
||||
expect(wrapper.find('.ant-transfer-list-header-dropdown').length).toBe(0);
|
||||
expect(wrapper.find('.ant-transfer-list-header .ant-transfer-list-checkbox').length).toBe(0);
|
||||
const { container } = render(<Transfer {...listProps} showSelectAll={false} />);
|
||||
expect(container.querySelector('.ant-transfer-list-header-dropdown')).toBeFalsy();
|
||||
expect(
|
||||
container.querySelector('.ant-transfer-list-header .ant-transfer-list-checkbox'),
|
||||
).toBeFalsy();
|
||||
});
|
||||
|
||||
describe('select invert', () => {
|
||||
@ -83,7 +91,7 @@ describe('Transfer.Dropdown', () => {
|
||||
{ name: 'with pagination', props: listProps, index: 2, keys: ['c', 'd'] },
|
||||
{
|
||||
name: 'without pagination',
|
||||
props: { ...listProps, pagination: null },
|
||||
props: { ...listProps, pagination: null as any },
|
||||
index: 1,
|
||||
keys: ['c', 'd', 'e'],
|
||||
},
|
||||
@ -92,14 +100,13 @@ describe('Transfer.Dropdown', () => {
|
||||
jest.useFakeTimers();
|
||||
|
||||
const onSelectChange = jest.fn();
|
||||
const wrapper = mount(<Transfer {...props} onSelectChange={onSelectChange} />);
|
||||
wrapper.find('.ant-transfer-list-header-dropdown').first().simulate('mouseenter');
|
||||
const { container } = render(<Transfer {...props} onSelectChange={onSelectChange} />);
|
||||
fireEvent.mouseEnter(container.querySelector('.ant-transfer-list-header-dropdown')!);
|
||||
act(() => {
|
||||
jest.runAllTimers();
|
||||
});
|
||||
wrapper.update();
|
||||
|
||||
clickItem(wrapper.find('.ant-dropdown-menu').first(), index);
|
||||
clickItem(container, index);
|
||||
expect(onSelectChange).toHaveBeenCalledWith(keys, []);
|
||||
|
||||
jest.useRealTimers();
|
||||
@ -110,22 +117,23 @@ describe('Transfer.Dropdown', () => {
|
||||
describe('oneWay to remove', () => {
|
||||
[
|
||||
{ name: 'with pagination', props: listProps },
|
||||
{ name: 'without pagination', props: { ...listProps, pagination: null } },
|
||||
{ name: 'without pagination', props: { ...listProps, pagination: null as any } },
|
||||
].forEach(({ name, props }) => {
|
||||
it(name, () => {
|
||||
jest.useFakeTimers();
|
||||
|
||||
const onChange = jest.fn();
|
||||
const wrapper = mount(
|
||||
const { container } = render(
|
||||
<Transfer {...props} targetKeys={['b', 'c']} oneWay onChange={onChange} />,
|
||||
);
|
||||
wrapper.find('.ant-transfer-list-header-dropdown').last().simulate('mouseenter');
|
||||
|
||||
// Right dropdown
|
||||
fireEvent.mouseEnter(container.querySelectorAll('.ant-transfer-list-header-dropdown')[1]!);
|
||||
act(() => {
|
||||
jest.runAllTimers();
|
||||
});
|
||||
wrapper.update();
|
||||
|
||||
clickItem(wrapper.find('.ant-dropdown-menu').first(), 0);
|
||||
clickItem(container, 0);
|
||||
expect(onChange).toHaveBeenCalledWith([], 'left', ['b', 'c']);
|
||||
|
||||
jest.useRealTimers();
|
@ -2,7 +2,6 @@ import * as React from 'react';
|
||||
import RcUpload, { UploadProps as RcUploadProps } from 'rc-upload';
|
||||
import useMergedState from 'rc-util/lib/hooks/useMergedState';
|
||||
import classNames from 'classnames';
|
||||
import Dragger from './Dragger';
|
||||
import UploadList from './UploadList';
|
||||
import {
|
||||
RcFile,
|
||||
@ -20,7 +19,7 @@ import defaultLocale from '../locale/default';
|
||||
import { ConfigContext } from '../config-provider';
|
||||
import devWarning from '../_util/devWarning';
|
||||
|
||||
const LIST_IGNORE = `__LIST_IGNORE_${Date.now()}__`;
|
||||
export const LIST_IGNORE = `__LIST_IGNORE_${Date.now()}__`;
|
||||
|
||||
export { UploadProps };
|
||||
|
||||
@ -424,24 +423,7 @@ const InternalUpload: React.ForwardRefRenderFunction<unknown, UploadProps> = (pr
|
||||
);
|
||||
};
|
||||
|
||||
const ForwardUpload = React.forwardRef<unknown, UploadProps>(InternalUpload) as <T>(
|
||||
props: React.PropsWithChildren<UploadProps<T>> & React.RefAttributes<any>,
|
||||
) => React.ReactElement;
|
||||
|
||||
type InternalUploadType = typeof ForwardUpload;
|
||||
|
||||
interface UploadInterface extends InternalUploadType {
|
||||
defaultProps?: Partial<UploadProps>;
|
||||
displayName?: string;
|
||||
Dragger: typeof Dragger;
|
||||
LIST_IGNORE: string;
|
||||
}
|
||||
|
||||
const Upload = ForwardUpload as UploadInterface;
|
||||
|
||||
Upload.Dragger = Dragger;
|
||||
|
||||
Upload.LIST_IGNORE = LIST_IGNORE;
|
||||
const Upload = React.forwardRef<unknown, UploadProps>(InternalUpload);
|
||||
|
||||
Upload.displayName = 'Upload';
|
||||
|
||||
|
@ -1,8 +1,20 @@
|
||||
import Upload from './Upload';
|
||||
import Dragger from './Dragger';
|
||||
import InternalUpload, { LIST_IGNORE, UploadProps } from './Upload';
|
||||
|
||||
export { UploadProps, UploadListProps, UploadChangeParam, RcFile } from './interface';
|
||||
export { DraggerProps } from './Dragger';
|
||||
|
||||
type InternalUploadType = typeof InternalUpload;
|
||||
interface UploadInterface<T = any> extends InternalUploadType {
|
||||
<U extends T>(
|
||||
props: React.PropsWithChildren<UploadProps<U>> & React.RefAttributes<any>,
|
||||
): React.ReactElement;
|
||||
Dragger: typeof Dragger;
|
||||
LIST_IGNORE: string;
|
||||
}
|
||||
|
||||
const Upload = InternalUpload as UploadInterface;
|
||||
Upload.Dragger = Dragger;
|
||||
Upload.LIST_IGNORE = LIST_IGNORE;
|
||||
|
||||
export default Upload;
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "antd",
|
||||
"version": "4.20.0-alpha.1",
|
||||
"version": "4.20.1",
|
||||
"description": "An enterprise-class UI design language and React components implementation",
|
||||
"title": "Ant Design",
|
||||
"keywords": [
|
||||
|
Loading…
Reference in New Issue
Block a user