mirror of
https://github.com/ant-design/ant-design.git
synced 2025-06-11 19:42:54 +08:00
chore(deps): update dependency react-dnd to v15 (#33940)
* chore(deps): update dependency react-dnd to v15 * fix: Tabs demo * fix: demo Co-authored-by: Renovate Bot <bot@renovateapp.com> Co-authored-by: afc163 <afc163@gmail.com>
This commit is contained in:
parent
19cc7d49e2
commit
9f30ca6b3f
@ -945,39 +945,54 @@ exports[`renders ./components/tabs/demo/custom-tab-bar-node.md extend context co
|
|||||||
style="transform:translate(0px, 0px)"
|
style="transform:translate(0px, 0px)"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="ant-tabs-tab ant-tabs-tab-active"
|
class=""
|
||||||
|
style="margin-right:24px"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
aria-selected="true"
|
class="ant-tabs-tab ant-tabs-tab-active"
|
||||||
class="ant-tabs-tab-btn"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
>
|
||||||
tab 1
|
<div
|
||||||
|
aria-selected="true"
|
||||||
|
class="ant-tabs-tab-btn"
|
||||||
|
role="tab"
|
||||||
|
tabindex="0"
|
||||||
|
>
|
||||||
|
tab 1
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="ant-tabs-tab"
|
class=""
|
||||||
|
style="margin-right:24px"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
aria-selected="false"
|
class="ant-tabs-tab"
|
||||||
class="ant-tabs-tab-btn"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
>
|
||||||
tab 2
|
<div
|
||||||
|
aria-selected="false"
|
||||||
|
class="ant-tabs-tab-btn"
|
||||||
|
role="tab"
|
||||||
|
tabindex="0"
|
||||||
|
>
|
||||||
|
tab 2
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="ant-tabs-tab"
|
class=""
|
||||||
|
style="margin-right:24px"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
aria-selected="false"
|
class="ant-tabs-tab"
|
||||||
class="ant-tabs-tab-btn"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
>
|
||||||
tab 3
|
<div
|
||||||
|
aria-selected="false"
|
||||||
|
class="ant-tabs-tab-btn"
|
||||||
|
role="tab"
|
||||||
|
tabindex="0"
|
||||||
|
>
|
||||||
|
tab 3
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
@ -831,39 +831,54 @@ exports[`renders ./components/tabs/demo/custom-tab-bar-node.md correctly 1`] = `
|
|||||||
style="transform:translate(0px, 0px)"
|
style="transform:translate(0px, 0px)"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="ant-tabs-tab ant-tabs-tab-active"
|
class=""
|
||||||
|
style="margin-right:24px"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
aria-selected="true"
|
class="ant-tabs-tab ant-tabs-tab-active"
|
||||||
class="ant-tabs-tab-btn"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
>
|
||||||
tab 1
|
<div
|
||||||
|
aria-selected="true"
|
||||||
|
class="ant-tabs-tab-btn"
|
||||||
|
role="tab"
|
||||||
|
tabindex="0"
|
||||||
|
>
|
||||||
|
tab 1
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="ant-tabs-tab"
|
class=""
|
||||||
|
style="margin-right:24px"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
aria-selected="false"
|
class="ant-tabs-tab"
|
||||||
class="ant-tabs-tab-btn"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
>
|
||||||
tab 2
|
<div
|
||||||
|
aria-selected="false"
|
||||||
|
class="ant-tabs-tab-btn"
|
||||||
|
role="tab"
|
||||||
|
tabindex="0"
|
||||||
|
>
|
||||||
|
tab 2
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="ant-tabs-tab"
|
class=""
|
||||||
|
style="margin-right:24px"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
aria-selected="false"
|
class="ant-tabs-tab"
|
||||||
class="ant-tabs-tab-btn"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
>
|
||||||
tab 3
|
<div
|
||||||
|
aria-selected="false"
|
||||||
|
class="ant-tabs-tab-btn"
|
||||||
|
role="tab"
|
||||||
|
tabindex="0"
|
||||||
|
>
|
||||||
|
tab 3
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
@ -7,60 +7,55 @@ title:
|
|||||||
|
|
||||||
## zh-CN
|
## zh-CN
|
||||||
|
|
||||||
使用 `react-dnd` 实现标签可拖拽。
|
使用 `react-dnd@15+` 实现标签可拖拽。
|
||||||
|
|
||||||
## en-US
|
## en-US
|
||||||
|
|
||||||
Use `react-dnd` to make tabs draggable.
|
Use `react-dnd@15+` to make tabs draggable.
|
||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
|
import React, { useRef, cloneElement } from 'react';
|
||||||
import { Tabs } from 'antd';
|
import { Tabs } from 'antd';
|
||||||
import { DndProvider, DragSource, DropTarget } from 'react-dnd';
|
import { DndProvider, useDrag, useDrop } from 'react-dnd';
|
||||||
import { HTML5Backend } from 'react-dnd-html5-backend';
|
import { HTML5Backend } from 'react-dnd-html5-backend';
|
||||||
|
|
||||||
const { TabPane } = Tabs;
|
const { TabPane } = Tabs;
|
||||||
|
|
||||||
// Drag & Drop node
|
const type = 'DraggableTabNode';
|
||||||
class TabNode extends React.Component {
|
|
||||||
render() {
|
|
||||||
const { connectDragSource, connectDropTarget, children } = this.props;
|
|
||||||
|
|
||||||
return connectDragSource(connectDropTarget(children));
|
const DraggableTabNode = ({ index, children, moveNode }) => {
|
||||||
}
|
const ref = useRef();
|
||||||
}
|
const [{ isOver, dropClassName }, drop] = useDrop({
|
||||||
|
accept: type,
|
||||||
const cardTarget = {
|
collect: monitor => {
|
||||||
drop(props, monitor) {
|
const { index: dragIndex } = monitor.getItem() || {};
|
||||||
const dragKey = monitor.getItem().index;
|
if (dragIndex === index) {
|
||||||
const hoverKey = props.index;
|
return {};
|
||||||
|
}
|
||||||
if (dragKey === hoverKey) {
|
return {
|
||||||
return;
|
isOver: monitor.isOver(),
|
||||||
}
|
dropClassName: 'dropping',
|
||||||
|
};
|
||||||
props.moveTabNode(dragKey, hoverKey);
|
},
|
||||||
monitor.getItem().index = hoverKey;
|
drop: item => {
|
||||||
},
|
moveNode(item.index, index);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const [, drag] = useDrag({
|
||||||
|
type,
|
||||||
|
item: { index },
|
||||||
|
collect: monitor => ({
|
||||||
|
isDragging: monitor.isDragging(),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
drop(drag(ref));
|
||||||
|
return (
|
||||||
|
<div ref={ref} style={{ marginRight: 24 }} className={isOver ? dropClassName : ''}>
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const cardSource = {
|
|
||||||
beginDrag(props) {
|
|
||||||
return {
|
|
||||||
id: props.id,
|
|
||||||
index: props.index,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
const WrapTabNode = DropTarget('DND_NODE', cardTarget, connect => ({
|
|
||||||
connectDropTarget: connect.dropTarget(),
|
|
||||||
}))(
|
|
||||||
DragSource('DND_NODE', cardSource, (connect, monitor) => ({
|
|
||||||
connectDragSource: connect.dragSource(),
|
|
||||||
isDragging: monitor.isDragging(),
|
|
||||||
}))(TabNode),
|
|
||||||
);
|
|
||||||
|
|
||||||
class DraggableTabs extends React.Component {
|
class DraggableTabs extends React.Component {
|
||||||
state = {
|
state = {
|
||||||
order: [],
|
order: [],
|
||||||
@ -90,9 +85,9 @@ class DraggableTabs extends React.Component {
|
|||||||
renderTabBar = (props, DefaultTabBar) => (
|
renderTabBar = (props, DefaultTabBar) => (
|
||||||
<DefaultTabBar {...props}>
|
<DefaultTabBar {...props}>
|
||||||
{node => (
|
{node => (
|
||||||
<WrapTabNode key={node.key} index={node.key} moveTabNode={this.moveTabNode}>
|
<DraggableTabNode key={node.key} index={node.key} moveNode={this.moveTabNode}>
|
||||||
{node}
|
{node}
|
||||||
</WrapTabNode>
|
</DraggableTabNode>
|
||||||
)}
|
)}
|
||||||
</DefaultTabBar>
|
</DefaultTabBar>
|
||||||
);
|
);
|
||||||
@ -151,3 +146,10 @@ ReactDOM.render(
|
|||||||
mountNode,
|
mountNode,
|
||||||
);
|
);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```css
|
||||||
|
.dropping {
|
||||||
|
background: #fefefe;
|
||||||
|
transition: all 0.3s;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
@ -247,7 +247,7 @@
|
|||||||
"react": "^17.0.1",
|
"react": "^17.0.1",
|
||||||
"react-color": "^2.17.3",
|
"react-color": "^2.17.3",
|
||||||
"react-copy-to-clipboard": "^5.0.1",
|
"react-copy-to-clipboard": "^5.0.1",
|
||||||
"react-dnd": "^14.0.1",
|
"react-dnd": "^15.0.0",
|
||||||
"react-dnd-html5-backend": "^15.0.0",
|
"react-dnd-html5-backend": "^15.0.0",
|
||||||
"react-dom": "^17.0.1",
|
"react-dom": "^17.0.1",
|
||||||
"react-draggable": "^4.4.3",
|
"react-draggable": "^4.4.3",
|
||||||
|
Loading…
Reference in New Issue
Block a user