fix: conflict

This commit is contained in:
thinkasany 2025-01-03 11:45:36 +08:00
commit 34d8bfb861
11 changed files with 78 additions and 43 deletions

View File

@ -718,3 +718,16 @@ const MyInput = (props) => (
<MyInput />
</Form.Item>;
```
### Why does clicking the label in the form change the component state?
> Related issue: [#47031](https://github.com/ant-design/ant-design/issues/47031), [#43175](https://github.com/ant-design/ant-design/issues/43175), [#52152](https://github.com/ant-design/ant-design/issues/52152)
Form label use [HTML label](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label) elements to wrap form controls, which focuses the corresponding control when clicked. This is the native behavior of label elements, designed to improve accessibility and user experience. This standard interaction pattern makes it easier for users to interact with form controls. If you need to disable this behavior, you can use `htmlFor={null}`, though it's generally not recommended.
```diff
- <Form.Item name="switch" label="Switch">
+ <Form.Item name="switch" label="Switch" htmlFor={null}>
<Switch />
</Form.Item>
```

View File

@ -718,6 +718,19 @@ const MyInput = (props) => (
</Form.Item>;
```
### 为什么表单点击 label 会更改组件状态?
> 相关 issue[#47031](https://github.com/ant-design/ant-design/issues/47031),[#43175](https://github.com/ant-design/ant-design/issues/43175), [#52152](https://github.com/ant-design/ant-design/issues/52152)
表单 label 使用 [HTML label](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/label) 元素来包裹表单控件,从而实现点击 label 时聚焦到对应控件。这是 label 元素的原生行为,用于提升可访问性和用户体验,这种标准交互模式能让用户更容易操作表单控件。如果你不希望这种行为,可通过 `htmlFor={null}` 属性解除关联,通常不建议这样做。
```diff
- <Form.Item name="switch" label="Switch">
+ <Form.Item name="switch" label="Switch" htmlFor={null}>
<Switch />
</Form.Item>
```
### 有更多参考文档吗?
- 你可以阅读[《antd v4 Form 使用心得》](https://zhuanlan.zhihu.com/p/375753910)获得一些使用帮助以及建议。

View File

@ -119,7 +119,7 @@ export interface InternalTableProps<RecordType = AnyObject> extends TableProps<R
const InternalTable = <RecordType extends AnyObject = AnyObject>(
props: InternalTableProps<RecordType>,
ref: React.MutableRefObject<HTMLDivElement>,
ref: React.Ref<HTMLDivElement>,
) => {
const {
prefixCls: customizePrefixCls,
@ -615,4 +615,4 @@ const InternalTable = <RecordType extends AnyObject = AnyObject>(
);
};
export default React.forwardRef(InternalTable as any) as RefInternalTable;
export default React.forwardRef(InternalTable) as RefInternalTable;

View File

@ -93,8 +93,8 @@ exports[`renders components/tree/demo/basic.tsx extend context correctly 1`] = `
</span>
</div>
<div
aria-expanded="true"
class="ant-tree-treenode ant-tree-treenode-disabled ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-selected"
aria-grabbed="false"
class="ant-tree-treenode ant-tree-treenode-disabled ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked"
draggable="false"
role="treeitem"
>
@ -235,8 +235,8 @@ exports[`renders components/tree/demo/basic.tsx extend context correctly 1`] = `
</span>
</div>
<div
aria-expanded="true"
class="ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-leaf-last"
aria-grabbed="false"
class="ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-selected ant-tree-treenode-leaf-last"
draggable="false"
role="treeitem"
>
@ -282,7 +282,7 @@ exports[`renders components/tree/demo/basic.tsx extend context correctly 1`] = `
/>
</span>
<span
class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open"
class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open ant-tree-node-selected"
title="parent 1-1"
>
<span
@ -1854,7 +1854,7 @@ Array [
<div
style="margin-bottom: 16px;"
>
showLine:
showLine:
<button
aria-checked="true"
class="ant-switch ant-switch-checked"
@ -1877,7 +1877,7 @@ Array [
</button>
<br />
<br />
showIcon:
showIcon:
<button
aria-checked="true"
class="ant-switch ant-switch-checked"
@ -1900,7 +1900,7 @@ Array [
</button>
<br />
<br />
showLeafIcon:
showLeafIcon:
<button
aria-checked="true"
class="ant-switch ant-switch-checked"
@ -3490,7 +3490,7 @@ exports[`renders components/tree/demo/line.tsx extend context correctly 1`] = `
<div
style="margin-bottom: 16px;"
>
showLine:
showLine:
<button
aria-checked="true"
class="ant-switch ant-switch-checked"
@ -3513,7 +3513,7 @@ exports[`renders components/tree/demo/line.tsx extend context correctly 1`] = `
</button>
<br />
<br />
showIcon:
showIcon:
<button
aria-checked="false"
class="ant-switch"
@ -3536,7 +3536,7 @@ exports[`renders components/tree/demo/line.tsx extend context correctly 1`] = `
</button>
<br />
<br />
showLeafIcon:
showLeafIcon:
<div
class="ant-select ant-select-outlined ant-select-single ant-select-show-arrow"
>
@ -4244,8 +4244,8 @@ exports[`renders components/tree/demo/multiple-line.tsx extend context correctly
</span>
</div>
<div
aria-expanded="true"
class="ant-tree-treenode ant-tree-treenode-disabled ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-selected"
aria-grabbed="false"
class="ant-tree-treenode ant-tree-treenode-disabled ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked"
draggable="false"
role="treeitem"
>
@ -4386,8 +4386,8 @@ exports[`renders components/tree/demo/multiple-line.tsx extend context correctly
</span>
</div>
<div
aria-expanded="true"
class="ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-leaf-last"
aria-grabbed="false"
class="ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-selected ant-tree-treenode-leaf-last"
draggable="false"
role="treeitem"
>
@ -4433,7 +4433,7 @@ exports[`renders components/tree/demo/multiple-line.tsx extend context correctly
/>
</span>
<span
class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open"
class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open ant-tree-node-selected"
title="parent 1-1"
>
<span

View File

@ -93,8 +93,8 @@ exports[`renders components/tree/demo/basic.tsx correctly 1`] = `
</span>
</div>
<div
aria-expanded="true"
class="ant-tree-treenode ant-tree-treenode-disabled ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-selected"
aria-grabbed="false"
class="ant-tree-treenode ant-tree-treenode-disabled ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked"
draggable="false"
role="treeitem"
>
@ -235,8 +235,8 @@ exports[`renders components/tree/demo/basic.tsx correctly 1`] = `
</span>
</div>
<div
aria-expanded="true"
class="ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-leaf-last"
aria-grabbed="false"
class="ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-selected ant-tree-treenode-leaf-last"
draggable="false"
role="treeitem"
>
@ -282,7 +282,7 @@ exports[`renders components/tree/demo/basic.tsx correctly 1`] = `
/>
</span>
<span
class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open"
class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open ant-tree-node-selected"
title="parent 1-1"
>
<span
@ -1844,7 +1844,7 @@ Array [
<div
style="margin-bottom:16px"
>
showLine:
showLine:
<button
aria-checked="true"
class="ant-switch ant-switch-checked"
@ -1867,7 +1867,7 @@ Array [
</button>
<br />
<br />
showIcon:
showIcon:
<button
aria-checked="true"
class="ant-switch ant-switch-checked"
@ -1890,7 +1890,7 @@ Array [
</button>
<br />
<br />
showLeafIcon:
showLeafIcon:
<button
aria-checked="true"
class="ant-switch ant-switch-checked"
@ -3474,7 +3474,7 @@ exports[`renders components/tree/demo/line.tsx correctly 1`] = `
<div
style="margin-bottom:16px"
>
showLine:
showLine:
<button
aria-checked="true"
class="ant-switch ant-switch-checked"
@ -3497,7 +3497,7 @@ exports[`renders components/tree/demo/line.tsx correctly 1`] = `
</button>
<br />
<br />
showIcon:
showIcon:
<button
aria-checked="false"
class="ant-switch"
@ -4129,8 +4129,8 @@ exports[`renders components/tree/demo/multiple-line.tsx correctly 1`] = `
</span>
</div>
<div
aria-expanded="true"
class="ant-tree-treenode ant-tree-treenode-disabled ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-selected"
aria-grabbed="false"
class="ant-tree-treenode ant-tree-treenode-disabled ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked"
draggable="false"
role="treeitem"
>
@ -4271,8 +4271,8 @@ exports[`renders components/tree/demo/multiple-line.tsx correctly 1`] = `
</span>
</div>
<div
aria-expanded="true"
class="ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-leaf-last"
aria-grabbed="false"
class="ant-tree-treenode ant-tree-treenode-switcher-open ant-tree-treenode-checkbox-checked ant-tree-treenode-selected ant-tree-treenode-leaf-last"
draggable="false"
role="treeitem"
>
@ -4318,7 +4318,7 @@ exports[`renders components/tree/demo/multiple-line.tsx correctly 1`] = `
/>
</span>
<span
class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open"
class="ant-tree-node-content-wrapper ant-tree-node-content-wrapper-open ant-tree-node-selected"
title="parent 1-1"
>
<span

View File

@ -45,7 +45,7 @@ const App: React.FC = () => {
<Tree
checkable
defaultExpandedKeys={['0-0-0', '0-0-1']}
defaultSelectedKeys={['0-0-0', '0-0-1']}
defaultSelectedKeys={['0-0-1']}
defaultCheckedKeys={['0-0-0', '0-0-1']}
onSelect={onSelect}
onCheck={onCheck}

View File

@ -58,7 +58,7 @@ const App: React.FC = () => {
<Tree
checkable
defaultExpandedKeys={['0-0-0', '0-0-1']}
defaultSelectedKeys={['0-0-0', '0-0-1']}
defaultSelectedKeys={['0-0-1']}
defaultCheckedKeys={['0-0-0', '0-0-1']}
onSelect={onSelect}
onCheck={onCheck}

View File

@ -9,8 +9,8 @@ const treeData: TreeDataNode[] = [
title: 'parent 0',
key: '0-0',
children: [
{ title: 'leaf 0-0', key: '0-0-0', isLeaf: true },
{ title: 'leaf 0-1', key: '0-0-1', isLeaf: true },
{ title: 'leaf 0-0', key: '0-0-0', isLeaf: true, disabled: true },
{ title: 'leaf 0-1', key: '0-0-1', isLeaf: true, disableCheckbox: true },
],
},
{
@ -46,7 +46,9 @@ const BasicDemo = () => <DirectoryTree {...sharedProps} multiple treeData={treeD
const NormalDemo = () => <Tree {...sharedProps} defaultSelectedKeys={['0-1']} />;
const NormalCheckDemo = () => <Tree {...sharedProps} checkable defaultSelectedKeys={['0-1']} />;
const NormalCheckDemo = () => (
<Tree {...sharedProps} checkable defaultSelectedKeys={['0-1', '0-0-0', '0-0-1', '0-1-1']} />
);
const NormalDragDemo = () => <Tree {...sharedProps} draggable defaultSelectedKeys={['0-1-0']} />;

View File

@ -45,7 +45,7 @@ const App: React.FC = () => {
<Tree
checkable
defaultExpandedKeys={['0-0-0', '0-0-1']}
defaultSelectedKeys={['0-0-0', '0-0-1']}
defaultSelectedKeys={['0-0-1']}
defaultCheckedKeys={['0-0-0', '0-0-1']}
onSelect={onSelect}
onCheck={onCheck}

View File

@ -119,8 +119,8 @@ export const genBaseStyle = (prefixCls: string, token: TreeToken): CSSObject =>
nodeSelectedBg,
nodeHoverBg,
colorTextQuaternary,
controlItemBgActiveDisabled,
} = token;
return {
[treeCls]: {
...resetComponent(token),
@ -199,6 +199,11 @@ export const genBaseStyle = (prefixCls: string, token: TreeToken): CSSObject =>
},
},
[`${treeCls}-checkbox-disabled + ${treeCls}-node-selected,&${treeNodeCls}-disabled${treeNodeCls}-selected ${treeCls}-node-content-wrapper`]:
{
backgroundColor: controlItemBgActiveDisabled,
},
// not disable
[`&:not(${treeNodeCls}-disabled)`]: {
// >>> Title

View File

@ -141,7 +141,7 @@
"rc-resize-observer": "^1.4.3",
"rc-segmented": "~2.7.0",
"rc-select": "~14.16.4",
"rc-slider": "~11.1.7",
"rc-slider": "~11.1.8",
"rc-steps": "~6.0.1",
"rc-switch": "~4.1.0",
"rc-table": "~7.50.1",
@ -346,9 +346,11 @@
"mode": "npm"
},
"overrides": {
"nwsapi": "2.2.13"
"nwsapi": "2.2.13",
"react-intl": "7.0.4"
},
"resolutions": {
"nwsapi": "2.2.13"
"nwsapi": "2.2.13",
"react-intl": "7.0.4"
}
}