feat: add trigger sort
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user