Browse Source

chore: auto merge branches (#43575)

chore: merge master into feature
pull/42757/merge
github-actions[bot] 1 year ago
committed by GitHub
parent
commit
b0d69a6878
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      CHANGELOG.en-US.md
  2. 4
      CHANGELOG.zh-CN.md
  3. 2
      components/affix/index.tsx
  4. 4
      components/alert/__tests__/__snapshots__/demo-extend.test.ts.snap
  5. 4
      components/alert/__tests__/__snapshots__/demo.test.ts.snap
  6. 4
      components/alert/demo/action.tsx
  7. 4
      components/alert/demo/closable.tsx
  8. 2
      components/alert/index.ts
  9. 2
      components/anchor/index.ts
  10. 2
      components/app/index.tsx
  11. 8
      components/auto-complete/index.tsx
  12. 2
      components/avatar/index.ts
  13. 6
      components/back-top/index.tsx
  14. 2
      components/badge/index.tsx
  15. 2
      components/breadcrumb/index.ts
  16. 2
      components/button/demo/loading.md
  17. 2
      components/button/index.en-US.md
  18. 2
      components/button/index.ts
  19. 2
      components/button/index.zh-CN.md
  20. 7
      components/button/style/index.ts
  21. 2
      components/calendar/index.ts
  22. 2
      components/card/index.ts
  23. 2
      components/carousel/index.tsx
  24. 2
      components/cascader/index.tsx
  25. 2
      components/checkbox/Checkbox.tsx
  26. 4
      components/checkbox/index.ts
  27. 2
      components/col/index.ts
  28. 2
      components/collapse/index.ts
  29. 4
      components/color-picker/index.ts
  30. 2
      components/config-provider/index.tsx
  31. 2
      components/date-picker/index.ts
  32. 2
      components/descriptions/index.tsx
  33. 2
      components/divider/index.tsx
  34. 4
      components/drawer/index.tsx
  35. 2
      components/dropdown/index.ts
  36. 2
      components/dropdown/index.zh-CN.md
  37. 2
      components/empty/index.tsx
  38. 4
      components/float-button/index.ts
  39. 2
      components/form/Form.tsx
  40. 16
      components/form/index.ts
  41. 4
      components/grid/index.ts
  42. 2
      components/image/index.tsx
  43. 2
      components/index.ts
  44. 2
      components/input-number/index.tsx
  45. 2
      components/input/index.ts
  46. 2
      components/layout/index.ts
  47. 3
      components/list/context.ts
  48. 2
      components/list/index.tsx
  49. 2
      components/locale/index.tsx
  50. 2
      components/mentions/index.tsx
  51. 8
      components/menu/index.tsx
  52. 2
      components/message/index.tsx
  53. 2
      components/modal/index.tsx
  54. 2
      components/notification/index.tsx
  55. 2
      components/pagination/index.ts
  56. 2
      components/popconfirm/index.tsx
  57. 2
      components/popover/index.tsx
  58. 2
      components/progress/index.tsx
  59. 2
      components/qrcode/index.tsx
  60. 2
      components/radio/index.tsx
  61. 2
      components/rate/index.tsx
  62. 2
      components/result/index.tsx
  63. 2
      components/row/index.tsx
  64. 2
      components/segmented/index.tsx
  65. 291
      components/select/__tests__/__snapshots__/demo-extend.test.ts.snap
  66. 193
      components/select/__tests__/__snapshots__/demo.test.tsx.snap
  67. 7
      components/select/demo/placement-debug.md
  68. 59
      components/select/demo/placement-debug.tsx
  69. 1
      components/select/index.en-US.md
  70. 7
      components/select/index.tsx
  71. 1
      components/select/index.zh-CN.md
  72. 5
      components/select/useBuiltinPlacements.tsx
  73. 2
      components/skeleton/index.tsx
  74. 2
      components/slider/index.tsx
  75. 3
      components/space/Compact.tsx
  76. 8
      components/space/Item.tsx
  77. 4
      components/space/index.tsx
  78. 4
      components/spin/index.tsx
  79. 4
      components/statistic/index.tsx
  80. 2
      components/steps/index.tsx
  81. 2
      components/style/index.ts
  82. 2
      components/switch/index.tsx
  83. 6
      components/table/index.ts
  84. 2
      components/tabs/index.tsx
  85. 2
      components/tag/CheckableTag.tsx
  86. 6
      components/tag/__tests__/index.test.tsx
  87. 4
      components/tag/index.tsx
  88. 2
      components/theme/index.ts
  89. 2
      components/time-picker/index.tsx
  90. 7
      components/timeline/TimelineItem.tsx
  91. 2
      components/timeline/index.ts
  92. 2
      components/tooltip/index.tsx
  93. 2
      components/tour/index.tsx
  94. 2
      components/transfer/index.tsx
  95. 2
      components/tree-select/index.tsx
  96. 12
      components/tree/index.ts
  97. 2
      components/typography/index.ts
  98. 3
      components/upload/UploadList/index.tsx
  99. 2
      components/upload/index.ts
  100. 6
      package.json

4
CHANGELOG.en-US.md

@ -31,7 +31,7 @@ timeline: true
- 🆕 Image supports `imageRender`, `toolbarRender` attributes to support custom rendering of preview images and toolbars, also supports new props such as `onTransform`, `minScale`, `maxScale`. Image.PreviewGroup supports `items` attribute to pass in list data, and fixes that the native attributes of the img tag are not passed to preview images The problem. [#43075](https://github.com/ant-design/ant-design/pull/43075) [@linxianxi](https://github.com/linxianxi)
- 🆕 Modify the layout style of the Image preview, the `preview` attribute supports `closeIcon`, Image.PreviewGroup supports the `fallback` attribute, and fixes the problem of loading preview resources in advance. [#43167](https://github.com/ant-design/ant-design/pull/43167) [@linxianxi](https://github.com/linxianxi)
- 🆕 Changed the layout style, Preview now supports `closeIcon`, PreviewGroup now supports `fallback`, and fixed an issue where preview resources would be loaded at the beginning.[#43167](https://github.com/ant-design/ant-design/pull/43167) [@linxianxi](https://github.com/linxianxi)
- 🛠 InputNumber was refactored to use rc-input. (#42762)。[#42762](https://github.com/ant-design/ant-design/pull/42762) [@muxin](https://github.com/muxin)
- 🛠 InputNumber was refactored to use rc-input. (#43000)。[#42762](https://github.com/ant-design/ant-design/pull/43000) [@MuxinFeng](https://github.com/MuxinFeng)
- 🛠 Resolved Circular dependency issue in vite, rollup, meteor and microbundle. [#42750](https://github.com/ant-design/ant-design/pull/42750). Thanks to [@jrr997](https://github.com/jrr997), [@kiner-tang](https://github.com/kiner-tang) and [@MuxinFeng](https://github.com/MuxinFeng) for their contributions.
- 🐞 Remove default values (empty string) of `className` prop in Anchor, CollapsePanel, and Input.Group. [#43481](https://github.com/ant-design/ant-design/pull/43481) [@thinkasany](https://github.com/thinkasany)
- 🐞 Fix Upload progress bar missing fade motion. [#43471](https://github.com/ant-design/ant-design/pull/43471)
@ -838,7 +838,7 @@ timeline: true
- 🐞 Fix Tree config `checkable` and `blockNode` not makes `title` stretch issue. [#39209](https://github.com/ant-design/ant-design/pull/39209) [@Wxh16144](https://github.com/Wxh16144)
- 🐞 Fix Dropdown sub menu missing motion. [#39235](https://github.com/ant-design/ant-design/pull/39235)
- 💄 Fix RangePicker time panel padding style. [#39228](https://github.com/ant-design/ant-design/pull/39228)
- 🐞 Fix Card action button round style. [#39210](https://github.com/ant-design/ant-design/pull/39210) [@muxin](https://github.com/muxin)
- 🐞 Fix Card action button round style. [#39210](https://github.com/ant-design/ant-design/pull/39210) [@MuxinFeng](https://github.com/MuxinFeng)
- 🐞 Fix Badge wave effect color not follow `color`. [#39182](https://github.com/ant-design/ant-design/pull/39182) [@li-jia-nan](https://github.com/li-jia-nan)
- 🐞 Fix Radio disabled status check style. [#39165](https://github.com/ant-design/ant-design/pull/39165) [@Wxh16144](https://github.com/Wxh16144)
- 🐞 Fixed TextArea count style when `resize` is not `none`. [#39121](https://github.com/ant-design/ant-design/pull/39121) [@51wangping](https://github.com/51wangping)

4
CHANGELOG.zh-CN.md

@ -31,7 +31,7 @@ timeline: true
- 🆕 Anchor 添加 `replace` 属性。[#43006](https://github.com/ant-design/ant-design/pull/43006) [@ds1371dani](https://github.com/ds1371dani)
- 🆕 Image 支持 `imageRender`、`toolbarRender` 属性以支持预览图和工具栏的自定义渲染,还支持了 `onTransform`、`minScale`、`maxScale` 等新属性,Image.PreviewGroup 支持 `items` 属性传入列表数据,并修复了 img 标签的原生属性没有传递给预览图的问题。[#43075](https://github.com/ant-design/ant-design/pull/43075) [@linxianxi](https://github.com/linxianxi)
- 🆕 修改 Image 预览图的布局风格,`preview` 属性支持 `closeIcon`,Image.PreviewGroup 支持 `fallback` 属性,修复加载预览资源提前加载的问题。[#43167](https://github.com/ant-design/ant-design/pull/43167) [@linxianxi](https://github.com/linxianxi)
- 🛠 InputNumber 使用 rc-input 进行重构。[#42762](https://github.com/ant-design/ant-design/pull/42762) [@muxin](https://github.com/muxin)
- 🛠 InputNumber 使用 rc-input 进行重构。[#43000](https://github.com/ant-design/ant-design/pull/43000) [@MuxinFeng](https://github.com/MuxinFeng)
- 🛠 解决 vite、rollup、meteor、microbundle 等构建工具中遇到的循环依赖问题,并增加相关的检测。[#42750](https://github.com/ant-design/ant-design/pull/42750),感谢 [@jrr997](https://github.com/jrr997)、[@kiner-tang](https://github.com/kiner-tang) 和 [@MuxinFeng](https://github.com/MuxinFeng) 的贡献。
- 🐞 移除 Anchor/CollapsePanel/Input.Group 组件中 `className` 属性的默认值(空字符串)。 [#43481](https://github.com/ant-design/ant-design/pull/43481) [@thinkasany](https://github.com/thinkasany)
- 🐞 修复 Upload 上传进度条延迟消失且丢失动画效果的问题。[#43471](https://github.com/ant-design/ant-design/pull/43471)
@ -839,7 +839,7 @@ timeline: true
- 🐞 修复 Tree `checkable``blockNode` 配合时,`title` 元素不拉伸的问题。[#39209](https://github.com/ant-design/ant-design/pull/39209) [@Wxh16144](https://github.com/Wxh16144)
- 🐞 修复 Dropdown 二级菜单丢失动画的问题。[#39235](https://github.com/ant-design/ant-design/pull/39235)
- 💄 修复 RangePicker 内时间面板的 padding 样式。[#39228](https://github.com/ant-design/ant-design/pull/39228)
- 🐞 修复 Card 的按钮组圆角样式。[#39210](https://github.com/ant-design/ant-design/pull/39210) [@muxin](https://github.com/muxin)
- 🐞 修复 Card 的按钮组圆角样式。[#39210](https://github.com/ant-design/ant-design/pull/39210) [@MuxinFeng](https://github.com/MuxinFeng)
- 🐞 修复了 Badge 自定义颜色的时候,波纹的颜色不会跟着小圆点颜色发生变化的问题。[#39182](https://github.com/ant-design/ant-design/pull/39182) [@li-jia-nan](https://github.com/li-jia-nan)
- 🐞 修复 Radio 禁用状态选中样式。[#39165](https://github.com/ant-design/ant-design/pull/39165) [@Wxh16144](https://github.com/Wxh16144)
- 🐞 修复 TextArea `resize` 不是 `none` 时计数文字的样式问题。[#39121](https://github.com/ant-design/ant-design/pull/39121) [@51wangping](https://github.com/51wangping)

2
components/affix/index.tsx

@ -1,3 +1,5 @@
'use client';
import classNames from 'classnames';
import ResizeObserver from 'rc-resize-observer';
import omit from 'rc-util/lib/omit';

4
components/alert/__tests__/__snapshots__/demo-extend.test.ts.snap

@ -165,7 +165,7 @@ exports[`renders components/alert/demo/action.tsx extend context correctly 1`] =
class="ant-space-item"
>
<button
class="ant-btn ant-btn-ghost ant-btn-sm"
class="ant-btn ant-btn-text ant-btn-sm"
type="button"
>
<span>
@ -247,7 +247,7 @@ exports[`renders components/alert/demo/action.tsx extend context correctly 1`] =
class="ant-space-item"
>
<button
class="ant-btn ant-btn-ghost ant-btn-sm ant-btn-dangerous"
class="ant-btn ant-btn-default ant-btn-sm ant-btn-background-ghost ant-btn-dangerous"
type="button"
>
<span>

4
components/alert/__tests__/__snapshots__/demo.test.ts.snap

@ -165,7 +165,7 @@ exports[`renders components/alert/demo/action.tsx correctly 1`] = `
class="ant-space-item"
>
<button
class="ant-btn ant-btn-ghost ant-btn-sm"
class="ant-btn ant-btn-text ant-btn-sm"
type="button"
>
<span>
@ -247,7 +247,7 @@ exports[`renders components/alert/demo/action.tsx correctly 1`] = `
class="ant-space-item"
>
<button
class="ant-btn ant-btn-ghost ant-btn-sm ant-btn-dangerous"
class="ant-btn ant-btn-default ant-btn-sm ant-btn-background-ghost ant-btn-dangerous"
type="button"
>
<span>

4
components/alert/demo/action.tsx

@ -30,7 +30,7 @@ const App: React.FC = () => (
type="warning"
action={
<Space>
<Button size="small" type="ghost">
<Button type="text" size="small" ghost>
Done
</Button>
</Space>
@ -46,7 +46,7 @@ const App: React.FC = () => (
<Button size="small" type="primary">
Accept
</Button>
<Button size="small" danger type="ghost">
<Button size="small" danger ghost>
Decline
</Button>
</Space>

4
components/alert/demo/closable.tsx

@ -10,14 +10,14 @@ const App: React.FC = () => (
<Alert
message="Warning Text Warning Text Warning TextW arning Text Warning Text Warning TextWarning Text"
type="warning"
closeIcon
closable
onClose={onClose}
/>
<Alert
message="Error Text"
description="Error Description Error Description Error Description Error Description Error Description Error Description"
type="error"
closeIcon
closable
onClose={onClose}
/>
</Space>

2
components/alert/index.ts

@ -1,3 +1,5 @@
'use client';
import type { AlertProps } from './Alert';
import InternalAlert from './Alert';
import ErrorBoundary from './ErrorBoundary';

2
components/anchor/index.ts

@ -1,3 +1,5 @@
'use client';
import InternalAnchor from './Anchor';
import AnchorLink from './AnchorLink';

2
components/app/index.tsx

@ -1,3 +1,5 @@
'use client';
import classNames from 'classnames';
import type { ReactNode } from 'react';
import React, { useContext } from 'react';

8
components/auto-complete/index.tsx

@ -1,10 +1,4 @@
/**
* TODO: 4.0
*
* - Remove `dataSource`
* - `size` not work with customizeInput
* - CustomizeInput not feedback `ENTER` key since accessibility enhancement
*/
'use client';
import classNames from 'classnames';
import type { BaseSelectRef } from 'rc-select';

2
components/avatar/index.ts

@ -1,3 +1,5 @@
'use client';
import type { ForwardRefExoticComponent, RefAttributes } from 'react';
import type { AvatarProps } from './avatar';
import InternalAvatar from './avatar';

6
components/back-top/index.tsx

@ -1,15 +1,17 @@
'use client';
import VerticalAlignTopOutlined from '@ant-design/icons/VerticalAlignTopOutlined';
import classNames from 'classnames';
import CSSMotion from 'rc-motion';
import omit from 'rc-util/lib/omit';
import * as React from 'react';
import type { ConfigConsumerProps } from '../config-provider';
import { ConfigContext } from '../config-provider';
import getScroll from '../_util/getScroll';
import { cloneElement } from '../_util/reactNode';
import scrollTo from '../_util/scrollTo';
import throttleByAnimationFrame from '../_util/throttleByAnimationFrame';
import warning from '../_util/warning';
import type { ConfigConsumerProps } from '../config-provider';
import { ConfigContext } from '../config-provider';
import useStyle from './style';
export interface BackTopProps {

2
components/badge/index.tsx

@ -1,3 +1,5 @@
'use client';
import classnames from 'classnames';
import CSSMotion from 'rc-motion';
import * as React from 'react';

2
components/breadcrumb/index.ts

@ -1,3 +1,5 @@
'use client';
import Breadcrumb from './Breadcrumb';
export type { BreadcrumbProps } from './Breadcrumb';

2
components/button/demo/loading.md

@ -1,6 +1,6 @@
## zh-CN
添加 `loading` 属性即可让按钮处于加载状态,最后个按钮演示点击后进入加载状态。
添加 `loading` 属性即可让按钮处于加载状态,最后个按钮演示点击后进入加载状态。
## en-US

2
components/button/index.en-US.md

@ -67,7 +67,7 @@ Different button styles can be generated by setting Button properties. The recom
| size | Set the size of button | `large` \| `middle` \| `small` | `middle` | |
| styles | Semantic DOM style | Record<SemanticDOM, CSSProperties> | - | 5.4.0 |
| target | Same as target attribute of a, works when href is specified | string | - | |
| type | Can be set to `primary` `ghost` `dashed` `link` `text` `default` | string | `default` | |
| type | Set button type | `primary` \| `dashed` \| `link` \| `text` \| `default` | `default` | |
| onClick | Set the handler to handle `click` event | (event: MouseEvent) => void | - | |
It accepts all props which native buttons support.

2
components/button/index.ts

@ -1,3 +1,5 @@
'use client';
import Button from './button';
export type { SizeType as ButtonSize } from '../config-provider/SizeContext';

2
components/button/index.zh-CN.md

@ -72,7 +72,7 @@ group:
| size | 设置按钮大小 | `large` \| `middle` \| `small` | `middle` | |
| styles | 语义化结构 style | Record<SemanticDOM, CSSProperties> | - | 5.4.0 |
| target | 相当于 a 链接的 target 属性,href 存在时生效 | string | - | |
| type | 设置按钮类型 | `primary` \| `ghost` \| `dashed` \| `link` \| `text` \| `default` | `default` | |
| type | 设置按钮类型 | `primary` \| `dashed` \| `link` \| `text` \| `default` | `default` | |
| onClick | 点击按钮时的回调 | (event: MouseEvent) => void | - | |
支持原生 button 的其他所有属性。

7
components/button/style/index.ts

@ -409,6 +409,13 @@ const genTypeButtonStyle: GenerateStyle<ButtonToken> = (token) => {
[`${componentCls}-dashed`]: genDashedButtonStyle(token),
[`${componentCls}-link`]: genLinkButtonStyle(token),
[`${componentCls}-text`]: genTextButtonStyle(token),
[`${componentCls}-ghost`]: genGhostButtonStyle(
token.componentCls,
token.colorBgContainer,
token.colorBgContainer,
token.colorTextDisabled,
token.colorBorder,
),
};
};

2
components/calendar/index.ts

@ -1,3 +1,5 @@
'use client';
import type { Dayjs } from 'dayjs';
import dayjsGenerateConfig from 'rc-picker/lib/generate/dayjs';
import type { CalendarProps } from './generateCalendar';

2
components/card/index.ts

@ -1,3 +1,5 @@
'use client';
import InternalCard from './Card';
import Grid from './Grid';
import Meta from './Meta';

2
components/carousel/index.tsx

@ -1,3 +1,5 @@
'use client';
import type { Settings } from '@ant-design/react-slick';
import SlickCarousel from '@ant-design/react-slick';
import classNames from 'classnames';

2
components/cascader/index.tsx

@ -1,3 +1,5 @@
'use client';
import LeftOutlined from '@ant-design/icons/LeftOutlined';
import LoadingOutlined from '@ant-design/icons/LoadingOutlined';
import RightOutlined from '@ant-design/icons/RightOutlined';

2
components/checkbox/Checkbox.tsx

@ -113,8 +113,8 @@ const InternalCheckbox: React.ForwardRefRenderFunction<CheckboxRef, CheckboxProp
checkboxProps.checked = checkboxGroup.value.includes(restProps.value);
}
const classString = classNames(
`${prefixCls}-wrapper`,
{
[`${prefixCls}-wrapper`]: true,
[`${prefixCls}-rtl`]: direction === 'rtl',
[`${prefixCls}-wrapper-checked`]: checkboxProps.checked,
[`${prefixCls}-wrapper-disabled`]: mergedDisabled,

4
components/checkbox/index.ts

@ -1,11 +1,13 @@
'use client';
import type * as React from 'react';
import type { CheckboxProps } from './Checkbox';
import InternalCheckbox from './Checkbox';
import Group from './Group';
export type { CheckboxRef } from 'rc-checkbox';
export type { CheckboxChangeEvent, CheckboxProps } from './Checkbox';
export type { CheckboxGroupProps, CheckboxOptionType } from './Group';
export type { CheckboxRef } from 'rc-checkbox';
type CompoundedComponent = React.ForwardRefExoticComponent<
CheckboxProps & React.RefAttributes<HTMLInputElement>

2
components/col/index.ts

@ -1,3 +1,5 @@
'use client';
import { Col, type ColProps, type ColSize } from '../grid';
export type { ColProps, ColSize };

2
components/collapse/index.ts

@ -1,3 +1,5 @@
'use client';
import Collapse from './Collapse';
export type { CollapseProps } from './Collapse';

4
components/color-picker/index.ts

@ -1,6 +1,8 @@
'use client';
import ColorPicker from './ColorPicker';
export type { Color } from './color';
export type { ColorPickerProps } from './ColorPicker';
export type { Color } from './color';
export default ColorPicker;

2
components/config-provider/index.tsx

@ -1,3 +1,5 @@
'use client';
import { createTheme } from '@ant-design/cssinjs';
import IconContext from '@ant-design/icons/lib/components/Context';
import type { ValidateMessages } from 'rc-field-form/lib/interface';

2
components/date-picker/index.ts

@ -1,3 +1,5 @@
'use client';
import type { Dayjs } from 'dayjs';
import dayjsGenerateConfig from 'rc-picker/lib/generate/dayjs';
import genPurePanel from '../_util/PurePanel';

2
components/descriptions/index.tsx

@ -1,3 +1,5 @@
'use client';
/* eslint-disable react/no-array-index-key */
import classNames from 'classnames';
import toArray from 'rc-util/lib/Children/toArray';

2
components/divider/index.tsx

@ -1,3 +1,5 @@
'use client';
import classNames from 'classnames';
import * as React from 'react';
import warning from '../_util/warning';

4
components/drawer/index.tsx

@ -1,3 +1,5 @@
'use client';
import classNames from 'classnames';
import type { DrawerProps as RcDrawerProps } from 'rc-drawer';
import RcDrawer from 'rc-drawer';
@ -15,7 +17,7 @@ import { NoCompactStyle } from '../space/Compact';
import useStyle from './style';
const SizeTypes = ['default', 'large'] as const;
type sizeType = (typeof SizeTypes)[number];
type sizeType = typeof SizeTypes[number];
export interface PushState {
distance: string | number;

2
components/dropdown/index.ts

@ -1,3 +1,5 @@
'use client';
import InternalDropdown from './dropdown';
import DropdownButton from './dropdown-button';

2
components/dropdown/index.zh-CN.md

@ -84,6 +84,6 @@ demo:
## FAQ
### Dropdown 在水平方向超出屏幕时会被挤压怎么办?
### Dropdown 在水平方向超出屏幕时会被挤压怎么办?
你可以通过 `width: max-content` 来解决这个问题,参考 [#43025](https://github.com/ant-design/ant-design/issues/43025#issuecomment-1594394135)。

2
components/empty/index.tsx

@ -1,3 +1,5 @@
'use client';
import classNames from 'classnames';
import * as React from 'react';
import { ConfigContext } from '../config-provider';

4
components/float-button/index.ts

@ -1,6 +1,8 @@
'use client';
import BackTop from './BackTop';
import FloatButton from './FloatButton';
import FloatButtonGroup from './FloatButtonGroup';
import BackTop from './BackTop';
import PurePanel from './PurePanel';
FloatButton.BackTop = BackTop;

2
components/form/Form.tsx

@ -101,8 +101,8 @@ const InternalForm: React.ForwardRefRenderFunction<FormInstance, FormProps> = (p
const formClassName = classNames(
prefixCls,
`${prefixCls}-${layout}`,
{
[`${prefixCls}-${layout}`]: true,
[`${prefixCls}-hide-required-mark`]: mergedRequiredMark === false,
[`${prefixCls}-rtl`]: direction === 'rtl',
[`${prefixCls}-${mergedSize}`]: mergedSize,

16
components/form/index.ts

@ -1,14 +1,16 @@
'use client';
import type { Rule, RuleObject, RuleRender } from 'rc-field-form/lib/interface';
import warning from '../_util/warning';
import { FormProvider } from './context';
import ErrorList, { type ErrorListProps } from './ErrorList';
import InternalForm, { type FormInstance, type FormProps, useForm, useWatch } from './Form';
import InternalForm, { useForm, useWatch, type FormInstance, type FormProps } from './Form';
import Item, { type FormItemProps } from './FormItem';
import List, {
type FormListFieldData,
type FormListOperation,
type FormListProps,
} from './FormList';
import { FormProvider } from './context';
import useFormInstance from './hooks/useFormInstance';
type InternalFormType = typeof InternalForm;
@ -44,16 +46,16 @@ Form.create = () => {
};
export type {
ErrorListProps,
FormInstance,
FormProps,
FormItemProps,
ErrorListProps,
FormListFieldData,
FormListOperation,
FormListProps,
FormProps,
Rule,
RuleObject,
RuleRender,
FormListProps,
FormListFieldData,
FormListOperation,
};
export default Form;

4
components/grid/index.ts

@ -1,3 +1,5 @@
'use client';
import Col from './col';
import useInternalBreakpoint from './hooks/useBreakpoint';
import Row from './row';
@ -9,6 +11,6 @@ function useBreakpoint() {
export type { ColProps, ColSize } from './col';
export type { RowProps } from './row';
export { Row, Col };
export { Col, Row };
export default { useBreakpoint };

2
components/image/index.tsx

@ -1,3 +1,5 @@
'use client';
import EyeOutlined from '@ant-design/icons/EyeOutlined';
import classNames from 'classnames';
import RcImage, { type ImageProps } from 'rc-image';

2
components/index.ts

@ -1,3 +1,5 @@
'use client';
export type { Breakpoint } from './_util/responsiveObserver';
export { default as Affix } from './affix';
export type { AffixProps } from './affix';

2
components/input-number/index.tsx

@ -1,3 +1,5 @@
'use client';
import DownOutlined from '@ant-design/icons/DownOutlined';
import UpOutlined from '@ant-design/icons/UpOutlined';
import type { ValueType } from '@rc-component/mini-decimal';

2
components/input/index.ts

@ -1,3 +1,5 @@
'use client';
import type * as React from 'react';
import Group from './Group';
import type { InputProps, InputRef } from './Input';

2
components/layout/index.ts

@ -1,3 +1,5 @@
'use client';
import InternalLayout, { Content, Footer, Header } from './layout';
import Sider from './Sider';

3
components/list/context.ts

@ -1,7 +1,8 @@
import React from 'react';
import type { ListGridType } from '.';
export interface ListConsumerProps {
grid?: any;
grid?: ListGridType;
itemLayout?: string;
}

2
components/list/index.tsx

@ -1,3 +1,5 @@
'use client';
import classNames from 'classnames';
// eslint-disable-next-line import/no-named-as-default
import * as React from 'react';

2
components/locale/index.tsx

@ -1,3 +1,5 @@
'use client';
import type { ValidateMessages } from 'rc-field-form/lib/interface';
import * as React from 'react';
import warning from '../_util/warning';

2
components/mentions/index.tsx

@ -1,3 +1,5 @@
'use client';
import classNames from 'classnames';
import RcMentions from 'rc-mentions';
import type {

8
components/menu/index.tsx

@ -1,19 +1,21 @@
'use client';
import type { MenuRef as RcMenuRef } from 'rc-menu';
import { ItemGroup } from 'rc-menu';
import * as React from 'react';
import { forwardRef, useImperativeHandle, useRef } from 'react';
import type { MenuProps } from './menu';
import InternalMenu from './menu';
import { SiderContext } from '../layout/Sider';
import type { MenuTheme } from './MenuContext';
import MenuDivider from './MenuDivider';
import Item, { type MenuItemProps } from './MenuItem';
import SubMenu, { type SubMenuProps } from './SubMenu';
import type { ItemType, MenuItemType } from './hooks/useItems';
import type { MenuProps } from './menu';
import InternalMenu from './menu';
export type { MenuItemGroupProps } from 'rc-menu';
export type { MenuDividerProps } from './MenuDivider';
export type { MenuTheme, SubMenuProps, MenuItemProps, MenuProps };
export type { MenuItemProps, MenuProps, MenuTheme, SubMenuProps };
export type MenuRef = {
menu: RcMenuRef | null;

2
components/message/index.tsx

@ -1,3 +1,5 @@
'use client';
import { render } from 'rc-util/lib/React/render';
import * as React from 'react';
import ConfigProvider, { globalConfig, warnContext } from '../config-provider';

2
components/modal/index.tsx

@ -1,3 +1,5 @@
'use client';
import type { ModalStaticFunctions } from './confirm';
import confirm, {
modalGlobalConfig,

2
components/notification/index.tsx

@ -1,3 +1,5 @@
'use client';
import { render } from 'rc-util/lib/React/render';
import * as React from 'react';
import ConfigProvider, { globalConfig, warnContext } from '../config-provider';

2
components/pagination/index.ts

@ -1,3 +1,5 @@
'use client';
import Pagination from './Pagination';
export type { PaginationConfig, PaginationProps } from './Pagination';

2
components/popconfirm/index.tsx

@ -1,3 +1,5 @@
'use client';
import ExclamationCircleFilled from '@ant-design/icons/ExclamationCircleFilled';
import classNames from 'classnames';
import KeyCode from 'rc-util/lib/KeyCode';

2
components/popover/index.tsx

@ -1,3 +1,5 @@
'use client';
import classNames from 'classnames';
import * as React from 'react';
import type { RenderFunction } from '../_util/getRenderPropValue';

2
components/progress/index.tsx

@ -1,3 +1,5 @@
'use client';
import Progress from './progress';
export type { ProgressAriaProps, ProgressProps } from './progress';

2
components/qrcode/index.tsx

@ -1,3 +1,5 @@
'use client';
import { ReloadOutlined } from '@ant-design/icons';
import classNames from 'classnames';
import { QRCodeCanvas, QRCodeSVG } from 'qrcode.react';

2
components/radio/index.tsx

@ -1,3 +1,5 @@
'use client';
import type * as React from 'react';
import Group from './group';
import type { RadioProps } from './interface';

2
components/rate/index.tsx

@ -1,3 +1,5 @@
'use client';
import StarFilled from '@ant-design/icons/StarFilled';
import classNames from 'classnames';
import RcRate from 'rc-rate';

2
components/result/index.tsx

@ -1,3 +1,5 @@
'use client';
import CheckCircleFilled from '@ant-design/icons/CheckCircleFilled';
import CloseCircleFilled from '@ant-design/icons/CloseCircleFilled';
import ExclamationCircleFilled from '@ant-design/icons/ExclamationCircleFilled';

2
components/row/index.tsx

@ -1,3 +1,5 @@
'use client';
import { Row, type RowProps } from '../grid';
export type { RowProps };

2
components/segmented/index.tsx

@ -1,3 +1,5 @@
'use client';
import classNames from 'classnames';
import type {
SegmentedLabeledOption as RcSegmentedLabeledOption,

291
components/select/__tests__/__snapshots__/demo-extend.test.ts.snap

@ -6656,6 +6656,297 @@ Array [
]
`;
exports[`renders components/select/demo/placement-debug.tsx extend context correctly 1`] = `
<div
style="height: 100%; min-height: 500px; display: flex; flex-direction: column; justify-content: center; align-items: center; position: relative;"
>
<div
class="ant-space ant-space-horizontal ant-space-align-center"
style="position: absolute; top: 0px; left: 50%; transform: translateX(-50%);"
>
<div
class="ant-space-item"
style="margin-right: 8px;"
>
<div
class="ant-radio-group ant-radio-group-outline"
>
<label
class="ant-radio-button-wrapper ant-radio-button-wrapper-checked"
>
<span
class="ant-radio-button ant-radio-button-checked"
>
<input
checked=""
class="ant-radio-button-input"
type="radio"
value="topLeft"
/>
<span
class="ant-radio-button-inner"
/>
</span>
<span>
TL
</span>
</label>
<label
class="ant-radio-button-wrapper"
>
<span
class="ant-radio-button"
>
<input
class="ant-radio-button-input"
type="radio"
value="topRight"
/>
<span
class="ant-radio-button-inner"
/>
</span>
<span>
TR
</span>
</label>
<label
class="ant-radio-button-wrapper"
>
<span
class="ant-radio-button"
>
<input
class="ant-radio-button-input"
type="radio"
value="bottomLeft"
/>
<span
class="ant-radio-button-inner"
/>
</span>
<span>
BL
</span>
</label>
<label
class="ant-radio-button-wrapper"
>
<span
class="ant-radio-button"
>
<input
class="ant-radio-button-input"
type="radio"
value="bottomRight"
/>
<span
class="ant-radio-button-inner"
/>
</span>
<span>
BR
</span>
</label>
</div>
</div>
<div
class="ant-space-item"
style="margin-right: 8px;"
>
<button
aria-checked="false"
class="ant-switch"
role="switch"
type="button"
>
<div
class="ant-switch-handle"
/>
<span
class="ant-switch-inner"
>
<span
class="ant-switch-inner-checked"
/>
<span
class="ant-switch-inner-unchecked"
/>
</span>
</button>
</div>
<div
class="ant-space-item"
>
<button
class="ant-btn ant-btn-default"
type="button"
>
<span>
Random
</span>
</button>
</div>
</div>
<div
class="ant-select ant-select-single ant-select-show-arrow"
style="width: 120px;"
>
<div
class="ant-select-selector"
>
<span
class="ant-select-selection-search"
>
<input
aria-activedescendant="rc_select_TEST_OR_SSR_list_0"
aria-autocomplete="list"
aria-controls="rc_select_TEST_OR_SSR_list"
aria-expanded="false"
aria-haspopup="listbox"
aria-owns="rc_select_TEST_OR_SSR_list"
autocomplete="off"
class="ant-select-selection-search-input"
id="rc_select_TEST_OR_SSR"
readonly=""
role="combobox"
style="opacity: 0;"
type="search"
unselectable="on"
value=""
/>
</span>
<span
class="ant-select-selection-placeholder"
/>
</div>
<div
class="ant-select-dropdown ant-slide-down-appear ant-slide-down-appear-prepare ant-slide-down ant-select-dropdown-placement-topLeft"
style="--arrow-x: 0px; --arrow-y: 0px; left: -1000vw; top: -1000vh; box-sizing: border-box; width: 200px;"
>
<div>
<div
id="rc_select_TEST_OR_SSR_list"
role="listbox"
style="height: 0px; width: 0px; overflow: hidden;"
>
<div
aria-label="Option 0"
aria-selected="false"
id="rc_select_TEST_OR_SSR_list_0"
role="option"
>
0
</div>
<div
aria-label="Option 1"
aria-selected="false"
id="rc_select_TEST_OR_SSR_list_1"
role="option"
>
1
</div>
</div>
<div
class="rc-virtual-list"
style="position: relative;"
>
<div
class="rc-virtual-list-holder"
style="max-height: 256px; overflow-y: auto;"
>
<div>
<div
class="rc-virtual-list-holder-inner"
style="display: flex; flex-direction: column;"
>
<div
aria-selected="false"
class="ant-select-item ant-select-item-option ant-select-item-option-active"
title="Option 0"
>
<div
class="ant-select-item-option-content"
>
Option 0
</div>
<span
aria-hidden="true"
class="ant-select-item-option-state"
style="user-select: none;"
unselectable="on"
/>
</div>
<div
aria-selected="false"
class="ant-select-item ant-select-item-option"
title="Option 1"
>
<div
class="ant-select-item-option-content"
>
Option 1
</div>
<span
aria-hidden="true"
class="ant-select-item-option-state"
style="user-select: none;"
unselectable="on"
/>
</div>
<div
aria-selected="false"
class="ant-select-item ant-select-item-option"
title="Option 2"
>
<div
class="ant-select-item-option-content"
>
Option 2
</div>
<span
aria-hidden="true"
class="ant-select-item-option-state"
style="user-select: none;"
unselectable="on"
/>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<span
aria-hidden="true"
class="ant-select-arrow"
style="user-select: none;"
unselectable="on"
>
<span
aria-label="down"
class="anticon anticon-down ant-select-suffix"
role="img"
>
<svg
aria-hidden="true"
data-icon="down"
fill="currentColor"
focusable="false"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"
/>
</svg>
</span>
</span>
</div>
</div>
`;
exports[`renders components/select/demo/responsive.tsx extend context correctly 1`] = `
<div
class="ant-space ant-space-vertical"

193
components/select/__tests__/__snapshots__/demo.test.tsx.snap

@ -2158,6 +2158,199 @@ Array [
]
`;
exports[`renders components/select/demo/placement-debug.tsx correctly 1`] = `
<div
style="height:100%;min-height:500px;display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative"
>
<div
class="ant-space ant-space-horizontal ant-space-align-center"
style="position:absolute;top:0;left:50%;transform:translateX(-50%)"
>
<div
class="ant-space-item"
style="margin-right:8px"
>
<div
class="ant-radio-group ant-radio-group-outline"
>
<label
class="ant-radio-button-wrapper ant-radio-button-wrapper-checked"
>
<span
class="ant-radio-button ant-radio-button-checked"
>
<input
checked=""
class="ant-radio-button-input"
type="radio"
value="topLeft"
/>
<span
class="ant-radio-button-inner"
/>
</span>
<span>
TL
</span>
</label>
<label
class="ant-radio-button-wrapper"
>
<span
class="ant-radio-button"
>
<input
class="ant-radio-button-input"
type="radio"
value="topRight"
/>
<span
class="ant-radio-button-inner"
/>
</span>
<span>
TR
</span>
</label>
<label
class="ant-radio-button-wrapper"
>
<span
class="ant-radio-button"
>
<input
class="ant-radio-button-input"
type="radio"
value="bottomLeft"
/>
<span
class="ant-radio-button-inner"
/>
</span>
<span>
BL
</span>
</label>
<label
class="ant-radio-button-wrapper"
>
<span
class="ant-radio-button"
>
<input
class="ant-radio-button-input"
type="radio"
value="bottomRight"
/>
<span
class="ant-radio-button-inner"
/>
</span>
<span>
BR
</span>
</label>
</div>
</div>
<div
class="ant-space-item"
style="margin-right:8px"
>
<button
aria-checked="false"
class="ant-switch"
role="switch"
type="button"
>
<div
class="ant-switch-handle"
/>
<span
class="ant-switch-inner"
>
<span
class="ant-switch-inner-checked"
/>
<span
class="ant-switch-inner-unchecked"
/>
</span>
</button>
</div>
<div
class="ant-space-item"
>
<button
class="ant-btn ant-btn-default"
type="button"
>
<span>
Random
</span>
</button>
</div>
</div>
<div
class="ant-select ant-select-single ant-select-show-arrow"
style="width:120px"
>
<div
class="ant-select-selector"
>
<span
class="ant-select-selection-search"
>
<input
aria-activedescendant="undefined_list_0"
aria-autocomplete="list"
aria-controls="undefined_list"
aria-expanded="false"
aria-haspopup="listbox"
aria-owns="undefined_list"
autocomplete="off"
class="ant-select-selection-search-input"
readonly=""
role="combobox"
style="opacity:0"
type="search"
unselectable="on"
value=""
/>
</span>
<span
class="ant-select-selection-placeholder"
/>
</div>
<span
aria-hidden="true"
class="ant-select-arrow"
style="user-select:none;-webkit-user-select:none"
unselectable="on"
>
<span
aria-label="down"
class="anticon anticon-down ant-select-suffix"
role="img"
>
<svg
aria-hidden="true"
data-icon="down"
fill="currentColor"
focusable="false"
height="1em"
viewBox="64 64 896 896"
width="1em"
>
<path
d="M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"
/>
</svg>
</span>
</span>
</div>
</div>
`;
exports[`renders components/select/demo/responsive.tsx correctly 1`] = `
<div
class="ant-space ant-space-vertical"

7
components/select/demo/placement-debug.md

@ -0,0 +1,7 @@
## zh-CN
可以通过 `placement` 手动指定弹出的位置。
## en-US
You can manually specify the position of the popup via `placement`.

59
components/select/demo/placement-debug.tsx

@ -0,0 +1,59 @@
import React, { useState } from 'react';
import type { RadioChangeEvent } from 'antd';
import { Button, Radio, Select, Space, Switch } from 'antd';
import type { SelectCommonPlacement } from 'antd/es/_util/motion';
const randomOptions = (count?: number) => {
const length = count ?? Math.floor(Math.random() * 5) + 1;
// Random 1 ~ 5 options
return Array.from({ length }).map((_, index) => ({
value: index,
label: `Option ${index}`,
}));
};
const App: React.FC = () => {
const [placement, SetPlacement] = useState<SelectCommonPlacement>('topLeft');
const [open, setOpen] = useState(false);
const [options, setOptions] = useState(() => randomOptions(3));
const placementChange = (e: RadioChangeEvent) => {
SetPlacement(e.target.value);
};
return (
<div
style={{
height: '100%',
minHeight: 500,
display: 'flex',
flexDirection: 'column',
justifyContent: 'center',
alignItems: 'center',
position: 'relative',
}}
>
<Space style={{ position: 'absolute', top: 0, left: '50%', transform: 'translateX(-50%)' }}>
<Radio.Group value={placement} onChange={placementChange}>
<Radio.Button value="topLeft">TL</Radio.Button>
<Radio.Button value="topRight">TR</Radio.Button>
<Radio.Button value="bottomLeft">BL</Radio.Button>
<Radio.Button value="bottomRight">BR</Radio.Button>
</Radio.Group>
<Switch checked={open} onChange={() => setOpen((o) => !o)} />
<Button onClick={() => setOptions(randomOptions())}>Random</Button>
</Space>
<Select
open={open}
style={{ width: 120 }}
placement={placement}
options={options}
popupMatchSelectWidth={200}
/>
</div>
);
};
export default App;

1
components/select/index.en-US.md

@ -40,6 +40,7 @@ Select component to select value from options.
<code src="./demo/big-data.tsx">Big Data</code>
<code src="./demo/status.tsx">Status</code>
<code src="./demo/placement.tsx">Placement</code>
<code src="./demo/placement-debug.tsx" debug>Dynamic Height</code>
<code src="./demo/debug.tsx" debug>4.0 Debug</code>
<code src="./demo/render-panel.tsx" debug>\_InternalPanelDoNotUseOrYouWillBeFired</code>
<code src="./demo/option-label-center.tsx" debug>Options label Centered</code>

7
components/select/index.tsx

@ -1,3 +1,5 @@
'use client';
// TODO: 4.0 - codemod should help to change `filterOption` to support node props.
import classNames from 'classnames';
import type { BaseSelectRef, SelectProps as RcSelectProps } from 'rc-select';
@ -165,7 +167,10 @@ const InternalSelect = <
prefixCls,
});
const selectProps = omit(props as typeof props & { itemIcon: any }, ['suffixIcon', 'itemIcon']);
const selectProps = omit(props as typeof props & { itemIcon: React.ReactNode }, [
'suffixIcon',
'itemIcon',
]);
const rcSelectRtlDropdownClassName = classNames(
popupClassName || dropdownClassName,

1
components/select/index.zh-CN.md

@ -41,6 +41,7 @@ demo:
<code src="./demo/big-data.tsx">大数据</code>
<code src="./demo/status.tsx">自定义状态</code>
<code src="./demo/placement.tsx">弹出位置</code>
<code src="./demo/placement-debug.tsx" debug>动态高度</code>
<code src="./demo/debug.tsx" debug>4.0 Debug</code>
<code src="./demo/render-panel.tsx" debug>\_InternalPanelDoNotUseOrYouWillBeFired</code>
<code src="./demo/option-label-center.tsx" debug>选项文本居中</code>

5
components/select/useBuiltinPlacements.tsx

@ -4,13 +4,16 @@ import type { PopupOverflow } from '../config-provider/context';
const getBuiltInPlacements = (popupOverflow?: PopupOverflow): Record<string, AlignType> => {
const htmlRegion: AlignType['htmlRegion'] = popupOverflow === 'scroll' ? 'scroll' : 'visible';
const sharedConfig = {
const sharedConfig: AlignType = {
overflow: {
adjustX: true,
adjustY: true,
shiftY: true,
},
htmlRegion,
_experimental: {
dynamicInset: true,
},
};
return {

2
components/skeleton/index.tsx

@ -1,3 +1,5 @@
'use client';
import Skeleton from './Skeleton';
export type { SkeletonProps } from './Skeleton';

2
components/slider/index.tsx

@ -1,3 +1,5 @@
'use client';
import classNames from 'classnames';
import type { SliderProps as RcSliderProps } from 'rc-slider';
import RcSlider from 'rc-slider';

3
components/space/Compact.tsx

@ -30,8 +30,7 @@ export const useCompactItemContext = (prefixCls: string, direction: DirectionTyp
const { compactDirection, isFirstItem, isLastItem } = compactItemContext;
const separator = compactDirection === 'vertical' ? '-vertical-' : '-';
return classNames({
[`${prefixCls}-compact${separator}item`]: true,
return classNames(`${prefixCls}-compact${separator}item`, {
[`${prefixCls}-compact${separator}first-item`]: isFirstItem,
[`${prefixCls}-compact${separator}last-item`]: isLastItem,
[`${prefixCls}-compact${separator}item-rtl`]: direction === 'rtl',

8
components/space/Item.tsx

@ -12,7 +12,7 @@ export interface ItemProps {
style?: React.CSSProperties;
}
export default function Item({
const Item: React.FC<ItemProps> = ({
className,
direction,
index,
@ -21,7 +21,7 @@ export default function Item({
split,
wrap,
style: customStyle,
}: ItemProps) {
}) => {
const { horizontalSize, verticalSize, latestIndex, supportFlexGap } =
React.useContext(SpaceContext);
@ -56,4 +56,6 @@ export default function Item({
)}
</>
);
}
};
export default Item;

4
components/space/index.tsx

@ -1,3 +1,5 @@
'use client';
import classNames from 'classnames';
import toArray from 'rc-util/lib/Children/toArray';
import * as React from 'react';
@ -10,7 +12,7 @@ import Item from './Item';
import { SpaceContextProvider } from './context';
import useStyle from './style';
export type { SpaceContext } from './context';
export { SpaceContext } from './context';
export type SpaceSize = SizeType | number;

4
components/spin/index.tsx

@ -1,3 +1,5 @@
'use client';
import classNames from 'classnames';
import omit from 'rc-util/lib/omit';
import * as React from 'react';
@ -9,7 +11,7 @@ import { ConfigContext } from '../config-provider';
import useStyle from './style/index';
const SpinSizes = ['small', 'default', 'large'] as const;
export type SpinSize = (typeof SpinSizes)[number];
export type SpinSize = typeof SpinSizes[number];
export type SpinIndicator = React.ReactElement<HTMLElement>;
export interface SpinProps {

4
components/statistic/index.tsx

@ -1,9 +1,11 @@
'use client';
import type { CountdownProps } from './Countdown';
import Countdown from './Countdown';
import type { StatisticProps } from './Statistic';
import Statistic from './Statistic';
export type { StatisticProps, CountdownProps };
export type { CountdownProps, StatisticProps };
type CompoundedComponent = {
Countdown: typeof Countdown;

2
components/steps/index.tsx

@ -1,3 +1,5 @@
'use client';
import CheckOutlined from '@ant-design/icons/CheckOutlined';
import CloseOutlined from '@ant-design/icons/CloseOutlined';
import classNames from 'classnames';

2
components/style/index.ts

@ -1,3 +1,5 @@
'use client';
/* eslint-disable import/prefer-default-export */
import type { CSSObject } from '@ant-design/cssinjs';
import type { AliasToken, DerivativeToken } from '../theme/internal';

2
components/switch/index.tsx

@ -1,3 +1,5 @@
'use client';
import LoadingOutlined from '@ant-design/icons/LoadingOutlined';
import classNames from 'classnames';
import RcSwitch from 'rc-switch';

6
components/table/index.ts

@ -1,8 +1,10 @@
'use client';
import { type TablePaginationConfig, type TableProps } from './InternalTable';
import Table from './Table';
export type { ColumnProps } from './Column';
export type { ColumnGroupType, ColumnsType, ColumnType } from './interface';
export type { TableProps, TablePaginationConfig };
export type { ColumnGroupType, ColumnType, ColumnsType } from './interface';
export type { TablePaginationConfig, TableProps };
export default Table;

2
components/tabs/index.tsx

@ -1,3 +1,5 @@
'use client';
import CloseOutlined from '@ant-design/icons/CloseOutlined';
import EllipsisOutlined from '@ant-design/icons/EllipsisOutlined';
import PlusOutlined from '@ant-design/icons/PlusOutlined';

2
components/tag/CheckableTag.tsx

@ -40,8 +40,8 @@ const CheckableTag: React.FC<CheckableTagProps> = (props) => {
const cls = classNames(
prefixCls,
`${prefixCls}-checkable`,
{
[`${prefixCls}-checkable`]: true,
[`${prefixCls}-checkable-checked`]: checked,
},
className,

6
components/tag/__tests__/index.test.tsx

@ -1,6 +1,7 @@
import React from 'react';
import { Simulate } from 'react-dom/test-utils';
import { CheckCircleOutlined } from '@ant-design/icons';
import Tag from '..';
import { resetWarned } from '../../_util/warning';
@ -135,6 +136,11 @@ describe('Tag', () => {
expect(onClick).not.toHaveBeenCalled();
});
it('should only render icon when no children', () => {
const { container } = render(<Tag icon={<CheckCircleOutlined />} />);
expect(container.querySelector('.ant-tag ')?.childElementCount).toBe(1);
});
it('deprecated warning', () => {
resetWarned();
const errSpy = jest.spyOn(console, 'error').mockImplementation(() => {});

4
components/tag/index.tsx

@ -1,3 +1,5 @@
'use client';
import CloseOutlined from '@ant-design/icons/CloseOutlined';
import classNames from 'classnames';
import * as React from 'react';
@ -128,7 +130,7 @@ const InternalTag: React.ForwardRefRenderFunction<HTMLSpanElement, TagProps> = (
const kids: React.ReactNode = iconNode ? (
<>
{iconNode}
<span>{children}</span>
{children && <span>{children}</span>}
</>
) : (
children

2
components/theme/index.ts

@ -1,3 +1,5 @@
'use client';
/* eslint-disable import/prefer-default-export */
import getDesignToken from './getDesignToken';
import type { GlobalToken } from './interface';

2
components/time-picker/index.tsx

@ -1,3 +1,5 @@
'use client';
import type { Dayjs } from 'dayjs';
import * as React from 'react';
import genPurePanel from '../_util/PurePanel';

7
components/timeline/TimelineItem.tsx

@ -1,7 +1,7 @@
import classNames from 'classnames';
import * as React from 'react';
import { ConfigContext } from '../config-provider';
import type { LiteralUnion } from '../_util/type';
import { ConfigContext } from '../config-provider';
type Color = 'blue' | 'red' | 'green' | 'gray';
@ -39,8 +39,8 @@ const TimelineItem: React.FC<TimelineItemProps> = ({
const prefixCls = getPrefixCls('timeline', customizePrefixCls);
const itemClassName = classNames(
`${prefixCls}-item`,
{
[`${prefixCls}-item`]: true,
[`${prefixCls}-item-pending`]: pending,
},
className,
@ -48,8 +48,7 @@ const TimelineItem: React.FC<TimelineItemProps> = ({
const customColor = /blue|red|green|gray/.test(color || '') ? undefined : color;
const dotClassName = classNames({
[`${prefixCls}-item-head`]: true,
const dotClassName = classNames(`${prefixCls}-item-head`, {
[`${prefixCls}-item-head-custom`]: !!dot,
[`${prefixCls}-item-head-${color}`]: !customColor,
});

2
components/timeline/index.ts

@ -1,3 +1,5 @@
'use client';
import Timeline from './Timeline';
export type { TimelineProps } from './Timeline';

2
components/tooltip/index.tsx

@ -1,3 +1,5 @@
'use client';
import type { BuildInPlacements } from '@rc-component/trigger';
import classNames from 'classnames';
import RcTooltip from 'rc-tooltip';

2
components/tour/index.tsx

@ -1,3 +1,5 @@
'use client';
import RCTour from '@rc-component/tour';
import classNames from 'classnames';
import React, { useContext } from 'react';

2
components/transfer/index.tsx

@ -1,3 +1,5 @@
'use client';
import classNames from 'classnames';
import type { ChangeEvent, CSSProperties } from 'react';
import React, { useCallback, useContext } from 'react';

2
components/tree-select/index.tsx

@ -1,3 +1,5 @@
'use client';
import classNames from 'classnames';
import type { BaseSelectRef } from 'rc-select';
import type { Placement } from 'rc-select/lib/BaseSelect';

12
components/tree/index.ts

@ -1,28 +1,30 @@
'use client';
import type RcTree from 'rc-tree';
import { TreeNode } from 'rc-tree';
import type { BasicDataNode } from 'rc-tree';
import { TreeNode } from 'rc-tree';
import type { DataNode } from 'rc-tree/lib/interface';
import DirectoryTree from './DirectoryTree';
import type { TreeProps } from './Tree';
import TreePure from './Tree';
import DirectoryTree from './DirectoryTree';
export type { DataNode };
export type { EventDataNode } from 'rc-tree/lib/interface';
export type {
DirectoryTreeProps,
ExpandAction as DirectoryTreeExpandAction,
DirectoryTreeProps,
} from './DirectoryTree';
export type {
AntdTreeNodeAttribute,
AntTreeNode,
AntTreeNodeCheckedEvent,
AntTreeNodeExpandedEvent,
AntTreeNodeMouseEvent,
AntTreeNodeProps,
AntTreeNodeSelectedEvent,
AntdTreeNodeAttribute,
TreeProps,
} from './Tree';
export type { DataNode };
type CompoundedComponent = (<T extends BasicDataNode | DataNode = DataNode>(
props: React.PropsWithChildren<TreeProps<T>> & { ref?: React.Ref<RcTree> },

2
components/typography/index.ts

@ -1,3 +1,5 @@
'use client';
import Link from './Link';
import Paragraph from './Paragraph';
import Text from './Text';

3
components/upload/UploadList/index.tsx

@ -165,8 +165,7 @@ const InternalUploadList: React.ForwardRefRenderFunction<UploadListRef, UploadLi
const prefixCls = getPrefixCls('upload', customizePrefixCls);
const rootPrefixCls = getPrefixCls();
const listClassNames = classNames({
[`${prefixCls}-list`]: true,
const listClassNames = classNames(`${prefixCls}-list`, {
[`${prefixCls}-list-${listType}`]: true,
});

2
components/upload/index.ts

@ -1,3 +1,5 @@
'use client';
import Dragger from './Dragger';
import type { UploadProps } from './Upload';
import InternalUpload, { LIST_IGNORE } from './Upload';

6
package.json

@ -129,7 +129,7 @@
"rc-drawer": "~6.2.0",
"rc-dropdown": "~4.1.0",
"rc-field-form": "~1.34.0",
"rc-image": "~7.0.0-2",
"rc-image": "~7.0.0",
"rc-input": "~1.1.0",
"rc-input-number": "~8.0.0",
"rc-mentions": "~2.5.0",
@ -284,7 +284,7 @@
"remark-cli": "^11.0.0",
"remark-lint": "^9.0.0",
"remark-preset-lint-recommended": "^6.0.0",
"rome": "^12.0.0",
"rome": "12.1.3-nightly.f65b0d9",
"semver": "^7.3.5",
"simple-git": "^3.0.0",
"size-limit": "^8.1.0",
@ -322,7 +322,7 @@
"mode": "npm"
},
"lint-staged": {
"*.{ts,tsx,js,jsx}": "prettier --ignore-unknown --write",
"*.{ts,tsx,js,jsx}": "rome format --write",
"*.{json,less,md}": "prettier --ignore-unknown --write"
}
}

Loading…
Cancel
Save