mirror of
https://github.com/ant-design/ant-design.git
synced 2025-06-11 19:42:54 +08:00
fix: conflict
This commit is contained in:
commit
34d8bfb861
@ -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>
|
||||
```
|
||||
|
@ -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)获得一些使用帮助以及建议。
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
@ -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
|
||||
|
@ -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
|
||||
@ -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
|
||||
|
@ -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}
|
||||
|
@ -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}
|
||||
|
@ -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']} />;
|
||||
|
||||
|
@ -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}
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user