Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Dragula(this.$refs.list, {})
- .on("drag", (card) => {
- card.classList.add(movingClass);
- })
- .on("drop", (card, list) => {
- //TODO: Слишком забористо вышло, нужно сделать проще как-то... как-то не сломав реактивность
- let cardId = card.getAttribute("card-id");
- let newStepIndex = 0;
- for (let i = 0; i < list.children.length; i++) {
- let card = list.children[i];
- if (card.classList.contains(movingClass)) {
- card.classList.remove(movingClass);
- newStepIndex = i;
- break;
- }
- }
- let newStageIndex = 0;
- for (let i = 0; i < this.$refs.wrap.children.length; i++) {
- if (this.$refs.wrap.children[i].querySelector(".dash-list") === list) {
- newStageIndex = i;
- break;
- }
- }
- let [oldStageIndex, oldStepIndex] = (() => {
- for (let istage = 0; istage < this.stages.length; istage++) {
- for (let istep = 0; istep < this.stages[istage].steps.length; istep++) {
- let step = this.stages[istage].steps[istep];
- if (step.id == cardId)
- return [istage, istep];
- }
- }
- })();
- // Отмена переноса элемента для возвращения в поток реактивности
- if (oldStepIndex > 0)
- if (newStepIndex < this.$refs.list[oldStageIndex].children.length - 1)
- this.$refs.list[oldStageIndex].insertBefore(card, this.$refs.list[oldStageIndex].children[oldStepIndex + 1]);
- else
- this.$refs.list[oldStageIndex].insertBefore(card, this.$refs.list[oldStageIndex].children[oldStepIndex]);
- else
- this.$refs.list[oldStageIndex].insertAdjacentElement("afterbegin", card);
- // Переносим элемент по средствам реактивности
- let step = this.stages[oldStageIndex].steps[oldStepIndex];
- this.stages[oldStageIndex].steps.splice(oldStepIndex, 1);
- this.stages[newStageIndex].steps.splice(newStepIndex, 0, step);
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement