UNPKG

wix-style-react

Version:
56 lines (46 loc) 1.83 kB
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;