Socket
Socket
Sign inDemoInstall

dndlist

Package Overview
Dependencies
0
Maintainers
1
Versions
28
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    dndlist

drag and drop list


Version published
Weekly downloads
0
decreased by-100%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

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'.

Keywords

FAQs

Last updated on 20 Mar 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc