0.3.0 • Published 2 months ago

dndlist v0.3.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

https://github.com/tarzandong/tzComponents.git

Drag and Drop in list component

How to use

/// main.ts
import { createApp } from 'vue'
import App from './App.vue'
//import dndComponents from 'dndlist' //global import, not recommended
import 'dndlist/style.css'

const app = createApp(App)
//app.use(dndComponents)
...
/// foo.vue
<template>
  <DNDList :list="testList" item-id="id" v-slot="{item}" @change="change" ref="listRef">
    <div>
      <div>{{ item.name }}</div>
      <div>{{ item.age + ' ' +item.id }}</div>
    </div>
  </DNDList>
</template>

<script lang='ts' setup>
import {DNDList} from 'dndlist' //import by required
  const testList = ref([
    {id:...,
    name,
    age},
    ...
  ])

  const listRef = ref(null)

  function change(list: any[], changeLog: {from: number, to: number}) {
    console.log(list)
    console.log(`you have changed the item from ${changeLog.from} to ${changeLog.to}`)
  }

  function cancelChange() {
    listRef.restore()
  }
</script>

Props and others in DNDList component

  • list: The target list you want to render in row flex display.
  • item-id: The unique id key of the list item obj, if the list is just a string[], you can keep item-id=''.
  • wrap-class?: The css class you want use on the flex wrap.
  • item-class?: The css class you want use on the list item. That item will be the parent Node of the default slot.
  • direction?: the flex-direction. can be 'row' or 'column'.
  • @change: The drop event will emit with param of the updated list and the changed item info of the index in the list.
  • method restore: The component expose a method restore to cancel the update about the list.
  • You need render the item in your own way by the default slot. please refer the example in How to use.

Notice

  • Recommand to render the slot item with fixed width & height, or the position maybe change not by your expectation.

Drag Element component

How to use

/// main.ts
same as the list component
/// foo.vue
<template>
  <DNDEle handlerId="handler" left="200px" top="500px" @drag-start="dragStart">
    <div>
      <div class="w100 h50 bcwarning" id="handler"></div>
      <div class="w100 h150 bcwhite" ></div>
    </div>
  </DNDEle>
</template>

<script lang='ts' setup>
import {DNDEle} from 'dndlist' //import by required
function dragStart(position: {x: number, y: number}) {
  console.log(position)
}  
</script>

Props and others in DNDList component

  • handlerId: string, The drag-and-drop handler element id.
  • left: string, The init left position of the target, must with unit like 'px'.
  • top: string, The init top position of the target, must with unit like 'px'.
  • notFixed: boolean, the DNDEle's default style.position is fixed, if you want to use static, you need set the prop to true.
  • emits: 2 emits as @drag-start and @drag-end, with the position param {x, y}

Notice

Once you draged the DNDEle, notFixed will be ignored, the DNDEle positon style will change to and maintain 'fixed'.

0.3.0

2 months ago

0.2.7

2 months ago

0.2.8

2 months ago

0.2.6

6 months ago

0.2.5

6 months ago

0.2.4

6 months ago

0.2.3

6 months ago

0.2.2

6 months ago

0.2.1

6 months ago

0.2.0

6 months ago

0.1.9

6 months ago

0.1.8

6 months ago

0.1.7

6 months ago

0.1.6

7 months ago

0.1.5

7 months ago

0.1.4

7 months ago

0.1.3

7 months ago

0.1.2

7 months ago

0.1.1

7 months ago

0.1.0

7 months ago

0.0.8

7 months ago

0.0.7

7 months ago

0.0.6

7 months ago

0.0.5

7 months ago

0.0.4

7 months ago

0.0.3

7 months ago

0.0.2

7 months ago

0.0.1

7 months ago