Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / @skava/ui   js

Repository URL to install this package:

Version: 4.2.0-a11y.0 

/ src / components / molecules / DragAndDrop / deps.ts

import { isObj } from 'exotic'
import { ProductProps } from './typings'
import { oneStorage } from '@skava/persistence'

let reOrderedProducts: Array<string> = []
const isValidProduct = (item: ProductProps) => {
  reOrderedProducts.push(item.id)
  return isObj(item) && item.id
}

const reArrangeProducts = (
  collisionProductId: string,
  currentDragId: string,
  products: Array<ProductProps>
) => {
  const temporaryProducts: Array<ProductProps> = []
  const findDrag = (item: ProductProps) => item.id === currentDragId
  if (collisionProductId !== currentDragId && collisionProductId !== 'none') {
    products.forEach(
      (item: ProductProps, index: number, array: Array<ProductProps>) => {
        if (collisionProductId === item.id) {
          const draggedItem: ProductProps = array.find(findDrag) || {}
          const dragItemIndex: number = array.findIndex(findDrag)
          if (index < dragItemIndex) {
            temporaryProducts.push(draggedItem)
            temporaryProducts.push(item)
          } else {
            temporaryProducts.push(item)
            temporaryProducts.push(draggedItem)
          }
        } else if (currentDragId !== item.id) {
          temporaryProducts.push(item)
        }
      }
    )
    reOrderedProducts = []
    const reArrangedProducts = temporaryProducts.filter(isValidProduct)
    oneStorage.set('productPosition', reOrderedProducts)

    return reArrangedProducts
  }

  return products
}

export { reArrangeProducts }