wix-style-react
Version:
56 lines (49 loc) • 1.78 kB
JavaScript
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
import draggableDriverFactory from '../DragAndDrop/Draggable/Draggable.driver';
import { dataAttributes } from '../DragAndDrop/Draggable/constants';
import { dataHooks } from './constants';
var sortableListFactory = function sortableListFactory(_ref) {
var element = _ref.element;
var draggableDriver = draggableDriverFactory({
element: element.querySelector("[data-hook=\"".concat(dataHooks.provider, "\"]"))
});
return {
/** checks if exists */
exists: function exists() {
return !!element;
},
/** reorder sortable list items */
reorder: function reorder(_ref2) {
var removedId = _ref2.removedId,
addedId = _ref2.addedId;
draggableDriver.beginDrag({
id: removedId
});
draggableDriver.dragOver({
id: addedId
});
draggableDriver.endDrag();
},
/** reorder sortable list items by data-hook */
reorderByDataHook: function reorderByDataHook(_ref3) {
var from = _ref3.from,
to = _ref3.to;
draggableDriver.beginDrag({
dataHook: from
});
draggableDriver.dragOver({
dataHook: to
});
draggableDriver.endDrag();
},
/** get draggable item current position */
getItemCurrentPosition: function getItemCurrentPosition(_ref4) {
var dataHook = _ref4.dataHook;
var draggableItems = _toConsumableArray(element.querySelectorAll("[".concat(dataAttributes.draggableTarget, "]")));
return draggableItems.findIndex(function (item) {
return item.querySelectorAll("[".concat(dataAttributes.draggableSource, "]"))[0].getAttribute('data-hook') === dataHook;
});
}
};
};
export default sortableListFactory;