Sha256: dc69196eaf7a29d75c29e107d78ec79dfe078ac5d9ecb694a6ef9d65f93e8ba1

Contents?: true

Size: 1.32 KB

Versions: 12

Compression:

Stored size: 1.32 KB

Contents

import { Controller } from "@hotwired/stimulus"
import { Sortable } from "sortablejs"
import { patch } from "../utilities/request_utility"

export default class extends Controller {
  static values = { handle: String }

  connect() {
    const itemSortable = {
      ...this.options
    }

    let containers = null
    containers = this.element.querySelectorAll("[data-sortable-tree-parent-id-value]")

    for (let i = 0; i < containers.length; i++) {
      new Sortable(containers[i], itemSortable)
    }
  }

  async end({ item, newIndex, to }) {
    if (!item.dataset.sortableTreeUpdateUrlValue) return

    const data = {
      [item.dataset.sortableTreeResourceNameValue]: {
        new_parent_id: to.dataset.sortableTreeParentIdValue,
        new_position_idx: newIndex
      }
    }

    const response = await patch(item.dataset.sortableTreeUpdateUrlValue, { body: data })

    if (!response.ok) {
      show_flash("error", "This move could not be saved.")
    }
  }

  get options() {
    return {
      group: {
        name: "sortable-tree",
        pull: true,
        put: true
      },
      handle: this.handleValue || undefined,
      swapThreshold: 0.5,
      emptyInsertThreshold: 8,
      dragClass: "item-dragged",
      draggable: ".draggable",
      animation: 350,
      forceFallback: false,
      onEnd: this.end
    }
  }
}

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
spree_backend-4.7.2 app/javascript/spree/dashboard/controllers/sortable_tree_controller.js
spree_backend-4.6.2 app/javascript/spree/dashboard/controllers/sortable_tree_controller.js
spree_backend-4.7.1 app/javascript/spree/dashboard/controllers/sortable_tree_controller.js
spree_backend-4.7.0 app/javascript/spree/dashboard/controllers/sortable_tree_controller.js
spree_backend-4.6.1 app/javascript/spree/dashboard/controllers/sortable_tree_controller.js
spree_backend-4.6.0 app/javascript/spree/dashboard/controllers/sortable_tree_controller.js
spree_backend-4.5.1 app/javascript/spree/dashboard/controllers/sortable_tree_controller.js
spree_backend-4.5.0 app/javascript/spree/dashboard/controllers/sortable_tree_controller.js
spree_backend-4.4.1 app/javascript/spree/dashboard/controllers/sortable_tree_controller.js
spree_backend-4.4.0 app/javascript/spree/dashboard/controllers/sortable_tree_controller.js
spree_backend-4.4.0.rc2 app/javascript/spree/dashboard/controllers/sortable_tree_controller.js
spree_backend-4.4.0.rc1 app/javascript/spree/dashboard/controllers/sortable_tree_controller.js