Skip to content

Commit 6eca298

Browse files
committed
fix: dragPreview 支持 offset 适当修正预览位置
1 parent 404e343 commit 6eca298

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/utils.tsx

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ export function getItemStyles(
221221
};
222222
}
223223

224-
export function getScaleItemStyles(style: CSSProperties, scale: number) {
224+
export function getScaleItemStyles(style: CSSProperties, scale: number, offset: [number, number] = [0, 0]) {
225225
if (scale >= 1) {
226226
return {
227227
transform: `scale(${scale})`,
@@ -231,8 +231,8 @@ export function getScaleItemStyles(style: CSSProperties, scale: number) {
231231
}
232232
const width = (style.width as number) * (1 / scale);
233233
const height = (style.height as number) * (1 / scale);
234-
const x = -(((width as number) * (1 - scale)) / 2);
235-
const y = -(((height as number) * (1 - scale)) / 2);
234+
const x = -(((width as number) * (1 - scale)) / 2) + offset[0];
235+
const y = -(((height as number) * (1 - scale)) / 2) + offset[1];
236236
return {
237237
transform: `translate(${x}px, ${y}px) scale(${scale})`,
238238
width: width,
@@ -257,7 +257,7 @@ export function renderItem(
257257

258258
export function dragPreview(
259259
itemRender: SortableItemRender<any>,
260-
options: { props?: any; scale?: number | (() => number) } = {}
260+
options: { props?: any; offset?: [number, number]; scale?: number | (() => number) } = {}
261261
): DragPreviewRenderer {
262262
return (data, { style }) => {
263263
const props = { data, drag: () => undefined, ...options } as any;
@@ -266,7 +266,11 @@ export function dragPreview(
266266
<div className="sortable-drag-preview" style={style}>
267267
<div
268268
className="sortable-drag-preview-container"
269-
style={getScaleItemStyles(style, typeof options.scale == 'function' ? options.scale() : options.scale)}
269+
style={getScaleItemStyles(
270+
style,
271+
typeof options.scale == 'function' ? options.scale() : options.scale,
272+
options.offset
273+
)}
270274
>
271275
{renderItem(itemRender, props)}
272276
</div>

0 commit comments

Comments
 (0)