UNPKG

fluid-dnd

Version:

An agnostic drag and drop library to sort all kind of lists. With current support for vue, react and svelte

33 lines (32 loc) 1.36 kB
import { getScrollElement, isSameNode } from '../utils/GetStyles'; import { containstClasses } from '../utils/dom/classList'; export default class ConfigHandler { static configs = []; static addConfig(droppable, config) { const configs = ConfigHandler.configs.filter((configHandler) => !isSameNode(configHandler.droppable, droppable)); const scroll = getScrollElement(droppable); configs.push({ droppable, config, scroll }); ConfigHandler.configs = configs; } static removeObsoleteConfigs = () => { const notObsoltete = ConfigHandler.configs.filter(({ droppable }) => document.contains(droppable)); ConfigHandler.configs = notObsoltete; }; static updateScrolls(currentDroppable, droppableGroupClass) { for (const configHandler of ConfigHandler.configs) { const { droppable } = configHandler; if ((droppableGroupClass && containstClasses(droppable, droppableGroupClass)) || isSameNode(currentDroppable, droppable)) { configHandler.scroll = getScrollElement(droppable); } } } static getConfig(curerntDroppable) { const config = ConfigHandler.configs.find(({ droppable }) => isSameNode(curerntDroppable, droppable)); return config; } }