feat: add trigger sort

This commit is contained in:
kwaroran
2024-06-07 18:54:21 +09:00
parent 2e05bcbdde
commit 2f4103cf2e
2 changed files with 54 additions and 2 deletions

View File

@@ -22,7 +22,7 @@
let open = false
</script>
<div class="w-full flex flex-col pt-2 mt-2 border-t border-t-selected first:pt-0 first:mt-0 first:border-0" data-risu-idx={idx}>
<div class="w-full flex flex-col pt-2 mt-2 border-t border-t-selected first:pt-0 first:mt-0 first:border-0" data-risu-idx2={idx}>
<div class="flex items-center transition-colors w-full ">
<button class="endflex valuer border-borderc" on:click={() => {
open = !open

View File

@@ -3,8 +3,60 @@
import TriggerData from "./TriggerData.svelte";
export let value:triggerscript[] = []
export let lowLevelAble = false
import Sortable from "sortablejs";
import { sleep, sortableOptions } from "src/ts/util";
import { onDestroy, onMount } from "svelte";
let stb: Sortable = null
let ele: HTMLDivElement
let sorted = 0
let opened = 0
const createStb = () => {
stb = Sortable.create(ele, {
onEnd: async () => {
let idx:number[] = []
ele.querySelectorAll('[data-risu-idx2]').forEach((e, i) => {
idx.push(parseInt(e.getAttribute('data-risu-idx2')))
})
let newValue:triggerscript[] = []
idx.forEach((i) => {
newValue.push(value[i])
})
value = newValue
try {
stb.destroy()
} catch (error) {}
sorted += 1
await sleep(1)
createStb()
},
...sortableOptions
})
}
const onOpen = () => {
opened += 1
if(stb){
try {
stb.destroy()
} catch (error) {}
}
}
const onClose = () => {
opened -= 1
if(opened === 0){
createStb()
}
}
onMount(createStb)
onDestroy(() => {
if(stb){
try {
stb.destroy()
} catch (error) {}
}
})
</script>
@@ -14,7 +66,7 @@
{/if}
{#key sorted}
{#each value as triggerscript, i}
<TriggerData idx={i} bind:value={value[i]} lowLevelAble={lowLevelAble} onRemove={() => {
<TriggerData idx={i} bind:value={value[i]} lowLevelAble={lowLevelAble} onOpen={onOpen} onClose={onClose} onRemove={() => {
let triggerscript = value
triggerscript.splice(i, 1)
value = triggerscript