From 883b17f30f60fbb5e8b8691ef8afca6c477bd5ae Mon Sep 17 00:00:00 2001 From: lijianan <574980606@qq.com> Date: Fri, 21 Feb 2025 10:42:13 +0800 Subject: [PATCH 01/10] docs: update App FAQ (#52904) * docs: update App FAQ * Update components/app/index.zh-CN.md Co-authored-by: Amumu Signed-off-by: lijianan <574980606@qq.com> --------- Signed-off-by: lijianan <574980606@qq.com> Co-authored-by: Amumu --- components/app/index.en-US.md | 2 +- components/app/index.zh-CN.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/app/index.en-US.md b/components/app/index.en-US.md index 9b6c9e43f7..30bc61b1c4 100644 --- a/components/app/index.en-US.md +++ b/components/app/index.en-US.md @@ -143,4 +143,4 @@ Common props ref:[Common props](/docs/react/common-props) ### CSS Var doesn't work inside `` -Make sure the App `component` is a legit React component string, so when you're turning on CSS variables, there's a container to hold the CSS class name. +Make sure the App `component` is a valid html tag, so when you're turning on CSS variables, there's a container to hold the CSS class name. If not set, it defaults to the `div` tag. If set to `false`, no additional DOM nodes will be created, and no default styles will be provided. diff --git a/components/app/index.zh-CN.md b/components/app/index.zh-CN.md index 74f04ae9b2..bdc65e76fe 100644 --- a/components/app/index.zh-CN.md +++ b/components/app/index.zh-CN.md @@ -144,4 +144,4 @@ export default () => { ### CSS Var 在 `` 内不起作用 -请确保 App 的 `component` 是一个有效的 React 组件字符串,以便在启用 CSS 变量时,有一个容器来承载 CSS 类名。 +请确保 App 的 `component` 是一个有效的 html 标签名,以便在启用 CSS 变量时有一个容器来承载 CSS 类名。如果不设置,则默认为 `div` 标签,如果设置为 `false`,则不会创建额外的 DOM 节点,也不会提供默认样式。 From 3b5b2a036cd0bdfff921409b36b568429c2c181a Mon Sep 17 00:00:00 2001 From: afc163 Date: Fri, 21 Feb 2025 17:59:14 +0800 Subject: [PATCH 02/10] chore: enable react-scan in development (#52910) --- .dumi/theme/layouts/GlobalLayout.tsx | 27 +++++++-------------------- package.json | 2 +- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/.dumi/theme/layouts/GlobalLayout.tsx b/.dumi/theme/layouts/GlobalLayout.tsx index b69d9ec140..4cc8de6c6b 100644 --- a/.dumi/theme/layouts/GlobalLayout.tsx +++ b/.dumi/theme/layouts/GlobalLayout.tsx @@ -1,5 +1,5 @@ +import { scan } from 'react-scan'; // import this BEFORE react import React, { Suspense, useCallback, useEffect } from 'react'; -import { Monitoring } from 'react-scan/monitoring'; import { createCache, extractStyle, @@ -13,13 +13,7 @@ import { getSandpackCssText } from '@codesandbox/sandpack-react'; import { theme as antdTheme, App } from 'antd'; import type { MappingAlgorithm } from 'antd'; import type { DirectionType, ThemeConfig } from 'antd/es/config-provider'; -import { - createSearchParams, - useOutlet, - useParams, - useSearchParams, - useServerInsertedHTML, -} from 'dumi'; +import { createSearchParams, useOutlet, useSearchParams, useServerInsertedHTML } from 'dumi'; import { DarkContext } from '../../hooks/useDark'; import useLayoutState from '../../hooks/useLayoutState'; @@ -52,6 +46,10 @@ if (typeof window !== 'undefined') { location.hash = `#${hashId.replace(/^components-/, '')}`; } } + scan({ + enabled: process.env.NODE_ENV !== 'production', + log: true, // logs render info to console (default: false) + }); } const getAlgorithm = (themes: ThemeName[] = []) => @@ -70,7 +68,6 @@ const getAlgorithm = (themes: ThemeName[] = []) => const GlobalLayout: React.FC = () => { const outlet = useOutlet(); const { pathname } = useLocation(); - const params = useParams(); const [searchParams, setSearchParams] = useSearchParams(); const [{ theme = [], direction, isMobile, bannerVisible = false }, setSiteState] = useLayoutState({ @@ -233,17 +230,7 @@ const GlobalLayout: React.FC = () => { > - - {content} - } - path={pathname} - /> - + {content} diff --git a/package.json b/package.json index ee05630ccd..dd162ba46b 100644 --- a/package.json +++ b/package.json @@ -302,7 +302,7 @@ "react-intersection-observer": "^9.13.1", "react-resizable": "^3.0.5", "react-router-dom": "^7.0.1", - "react-scan": "^0.1.0", + "react-scan": "^0.1.3", "react-sticky-box": "^2.0.5", "regenerator-runtime": "^0.14.1", "rehype-stringify": "^10.0.1", From 8a3c690e77fd97ec15594e116d7ec85a550b790d Mon Sep 17 00:00:00 2001 From: DDDDD12138 <43703884+DDDDD12138@users.noreply.github.com> Date: Fri, 21 Feb 2025 19:38:21 +0800 Subject: [PATCH 03/10] demo(form): correct disabled styles (#52912) * docs[upload]: correct disabled styles * chore: update demo snap (upload, form) * chore: restore the disabled attribute --- .../form/__tests__/__snapshots__/demo-extend.test.ts.snap | 2 +- components/form/__tests__/__snapshots__/demo.test.tsx.snap | 2 +- components/form/demo/disabled.tsx | 5 ++++- .../upload/__tests__/__snapshots__/demo-extend.test.ts.snap | 4 ++-- components/upload/__tests__/__snapshots__/demo.test.ts.snap | 4 ++-- components/upload/demo/debug-disabled.tsx | 5 ++++- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/components/form/__tests__/__snapshots__/demo-extend.test.ts.snap b/components/form/__tests__/__snapshots__/demo-extend.test.ts.snap index 67572cc346..9824684fe2 100644 --- a/components/form/__tests__/__snapshots__/demo-extend.test.ts.snap +++ b/components/form/__tests__/__snapshots__/demo-extend.test.ts.snap @@ -5138,7 +5138,7 @@ Array [ type="file" /> diff --git a/components/upload/__tests__/__snapshots__/demo-extend.test.ts.snap b/components/upload/__tests__/__snapshots__/demo-extend.test.ts.snap index 943d351367..79f1fdf564 100644 --- a/components/upload/__tests__/__snapshots__/demo-extend.test.ts.snap +++ b/components/upload/__tests__/__snapshots__/demo-extend.test.ts.snap @@ -853,7 +853,7 @@ exports[`renders components/upload/demo/debug-disabled.tsx extend context correc type="file" /> From cf2b6e4542a876098c64d984216f81d26ff44e7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Feb 2025 22:00:56 +0800 Subject: [PATCH 04/10] chore(deps-dev): bump pixelmatch in the dev-dependencies group (#52914) Bumps the dev-dependencies group with 1 update: [pixelmatch](https://github.com/mapbox/pixelmatch). Updates `pixelmatch` from 6.0.0 to 7.1.0 - [Release notes](https://github.com/mapbox/pixelmatch/releases) - [Commits](https://github.com/mapbox/pixelmatch/compare/v6.0.0...v7.1.0) --- updated-dependencies: - dependency-name: pixelmatch dependency-type: direct:development update-type: version-update:semver-major dependency-group: dev-dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dd162ba46b..b5e787b24f 100644 --- a/package.json +++ b/package.json @@ -280,7 +280,7 @@ "ora": "^8.1.0", "p-all": "^5.0.0", "package-manager-detector": "^0.2.8", - "pixelmatch": "^6.0.0", + "pixelmatch": "^7.1.0", "pngjs": "^7.0.0", "prettier": "^3.4.1", "pretty-format": "^29.7.0", From 7134c5d706103bbcc4148a2a7bd0da056dc1e347 Mon Sep 17 00:00:00 2001 From: lijianan <574980606@qq.com> Date: Sat, 22 Feb 2025 13:10:25 +0800 Subject: [PATCH 05/10] docs: docs update (#52918) --- components/radio/index.zh-CN.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/radio/index.zh-CN.md b/components/radio/index.zh-CN.md index f04bc3434a..e9a811e699 100644 --- a/components/radio/index.zh-CN.md +++ b/components/radio/index.zh-CN.md @@ -21,9 +21,9 @@ return ( ); @@ -92,7 +92,7 @@ return ( ### CheckboxOptionType -| Property | Description | Type | Default | Version | +| 属性 | 说明 | 类型 | 默认值 | 版本 | | --- | --- | --- | --- | --- | | label | 用于作为 Radio 选项展示的文本 | `string` | - | 4.4.0 | | value | 关联 Radio 选项的值 | `string` \| `number` \| `boolean` | - | 4.4.0 | From ea2989831a6a00707a2f90af480104542016ea18 Mon Sep 17 00:00:00 2001 From: lijianan <574980606@qq.com> Date: Mon, 24 Feb 2025 09:48:33 +0800 Subject: [PATCH 06/10] demo: update demo (#52924) --- .../upload/demo/upload-with-aliyun-oss.tsx | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/components/upload/demo/upload-with-aliyun-oss.tsx b/components/upload/demo/upload-with-aliyun-oss.tsx index 67f7006598..0e3cd078cc 100644 --- a/components/upload/demo/upload-with-aliyun-oss.tsx +++ b/components/upload/demo/upload-with-aliyun-oss.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react'; import { UploadOutlined } from '@ant-design/icons'; import type { UploadFile, UploadProps } from 'antd'; -import { Button, Form, message, Upload } from 'antd'; +import { App, Button, Form, Upload } from 'antd'; interface OSSDataType { dir: string; @@ -17,26 +17,33 @@ interface AliyunOSSUploadProps { onChange?: (fileList: UploadFile[]) => void; } -const AliyunOSSUpload = ({ value, onChange }: AliyunOSSUploadProps) => { - const [OSSData, setOSSData] = useState(); - - // Mock get OSS api - // https://help.aliyun.com/document_detail/31988.html - const mockGetOSSData = () => ({ +// Mock get OSS api +// https://help.aliyun.com/document_detail/31988.html +const mockOSSData = () => { + const mockData = { dir: 'user-dir/', expire: '1577811661', host: 'https://660d2bd96ddfa2943b33731c.mockapi.io/api/upload', accessId: 'c2hhb2RhaG9uZw==', policy: 'eGl4aWhhaGFrdWt1ZGFkYQ==', signature: 'ZGFob25nc2hhbw==', - }); + }; + return Promise.resolve(mockData); +}; + +const AliyunOSSUpload: React.FC> = ({ value, onChange }) => { + const { message } = App.useApp(); + + const [OSSData, setOSSData] = useState(); const init = async () => { try { - const result = await mockGetOSSData(); + const result = await mockOSSData(); setOSSData(result); - } catch (error) { - message.error(error as string); + } catch (err) { + if (err instanceof Error) { + message.error(err.message); + } } }; @@ -51,10 +58,7 @@ const AliyunOSSUpload = ({ value, onChange }: AliyunOSSUploadProps) => { const onRemove = (file: UploadFile) => { const files = (value || []).filter((v) => v.url !== file.url); - - if (onChange) { - onChange(files); - } + onChange?.(files); }; const getExtraData: UploadProps['data'] = (file) => ({ @@ -65,7 +69,9 @@ const AliyunOSSUpload = ({ value, onChange }: AliyunOSSUploadProps) => { }); const beforeUpload: UploadProps['beforeUpload'] = async (file) => { - if (!OSSData) return false; + if (!OSSData) { + return false; + } const expire = Number(OSSData.expire) * 1000; @@ -98,7 +104,7 @@ const AliyunOSSUpload = ({ value, onChange }: AliyunOSSUploadProps) => { ); }; -const App: React.FC = () => ( +const Demo: React.FC = () => (
@@ -106,4 +112,4 @@ const App: React.FC = () => ( ); -export default App; +export default Demo; From e123ec16e586a4aff239ff4adab41c95c50a12ae Mon Sep 17 00:00:00 2001 From: lijianan <574980606@qq.com> Date: Mon, 24 Feb 2025 13:41:19 +0800 Subject: [PATCH 07/10] feat: Radio.Group & Checkbox.Group Option support className (#52917) --- components/checkbox/Group.tsx | 5 +++- .../__snapshots__/demo-extend.test.ts.snap | 12 ++++----- .../__snapshots__/demo.test.tsx.snap | 12 ++++----- components/checkbox/demo/group.tsx | 18 ++++++------- components/checkbox/index.en-US.md | 5 +++- components/checkbox/index.zh-CN.md | 5 +++- .../__snapshots__/demo-extend.test.ts.snap | 26 +++++++++---------- .../__snapshots__/demo.test.tsx.snap | 26 +++++++++---------- components/radio/demo/radiogroup-options.tsx | 12 ++++----- components/radio/demo/radiogroup.tsx | 4 +++ components/radio/group.tsx | 3 ++- components/radio/index.en-US.md | 9 ++++--- components/radio/index.zh-CN.md | 9 ++++--- 13 files changed, 81 insertions(+), 65 deletions(-) diff --git a/components/checkbox/Group.tsx b/components/checkbox/Group.tsx index 5656fcb993..2f658f92c5 100644 --- a/components/checkbox/Group.tsx +++ b/components/checkbox/Group.tsx @@ -14,6 +14,7 @@ export interface CheckboxOptionType { label: React.ReactNode; value: T; style?: React.CSSProperties; + className?: string; // 👈 5.25.0+ disabled?: boolean; title?: string; id?: string; @@ -125,7 +126,7 @@ const CheckboxGroup = React.forwardRef( value={option.value} checked={value.includes(option.value)} onChange={option.onChange} - className={`${groupPrefixCls}-item`} + className={classNames(`${groupPrefixCls}-item`, option.className)} style={option.style} title={option.title} id={option.id} @@ -145,6 +146,7 @@ const CheckboxGroup = React.forwardRef( registerValue, cancelValue, }; + const classString = classNames( groupPrefixCls, { @@ -156,6 +158,7 @@ const CheckboxGroup = React.forwardRef( rootCls, hashId, ); + return wrapCSSVar(
{childrenNode} diff --git a/components/checkbox/__tests__/__snapshots__/demo-extend.test.ts.snap b/components/checkbox/__tests__/__snapshots__/demo-extend.test.ts.snap index 3caf9863ad..ef9a898551 100644 --- a/components/checkbox/__tests__/__snapshots__/demo-extend.test.ts.snap +++ b/components/checkbox/__tests__/__snapshots__/demo-extend.test.ts.snap @@ -691,7 +691,7 @@ Array [ class="ant-checkbox-group" >