wix-style-react
Version:
56 lines (46 loc) • 1.83 kB
JavaScript
import { dragAndDropDriverFactory } from '../utils/DragAndDrop/dragAndDropDriverFactory';
import { baseUniDriverFactory, findByHook } from '../../test/utils/unidriver';
import { draggableUniDriverFactory } from '../DragAndDrop/Draggable/Draggable.uni.driver';
import { dataHooks } from './constants';
export const sortableListUniDriverFactory = (base, body) => {
const getDraggableUniDriver = () =>
draggableUniDriverFactory(findByHook(base, dataHooks.provider));
return {
...baseUniDriverFactory(base, body),
/**
* reorder sortable list items
* @param {ReorderIds} ids { addedId: string | number, removedId: string | number }
* @return {Promise<void>}
* @deprecated use reorderByDataHook
*/
reorder: async ({ removedId, addedId }) => {
const draggableDriver = getDraggableUniDriver();
await draggableDriver.beginDrag({
id: removedId,
});
await draggableDriver.dragOver({ id: addedId });
await draggableDriver.endDrag({ id: addedId });
},
/**
* reorder sortable list items by data-hook
* @param {ReorderDataHooks} dataHooks { from: string, to: string }
* @return {Promise<void>}
*/
reorderByDataHook: async ({ from, to }) => {
const draggableDriver = getDraggableUniDriver();
await draggableDriver.beginDrag({
dataHook: from,
});
await draggableDriver.dragOver({ dataHook: to });
await draggableDriver.endDrag({ dataHook: to });
},
/**
* get draggable item current position
* @param {DraggableItemDetails} itemDetails { dataHook: string }
* @return {Promise<void>}
*/
getItemCurrentPosition: async ({ dataHook }) =>
dragAndDropDriverFactory({ base }).getItemPosition({ dataHook }),
};
};
export default sortableListUniDriverFactory;