Comments (2)
It seems like the behavior is different for changing sort in the list and when moving things across lists.
For changing order I can find list.value =
set.
https://github.com/Alfred-Skyblue/vue-draggable-plus/blob/main/src/useDraggable.ts#L175
But for the onAdd
and onRemove
, there's no setting of list.value
which seems like a bug to me? It seems like there's a purposeful unRef
and then the native array is sliced (or pushed to). Almost as if to intentionally avoid reactivity?
from vue-draggable-plus.
Noticed this too. Was extremely happy seeing someone took up the torch to keep vue3 up to date with sortablejs. However, using computed wrapper does not work with this package :/
This is how i've done it using the outdated vuedraggable package which i hoped would still work for this but it doesnt..
const request = ref<UpdateCustomerProductAccessRequest>({
customerId: props.customer.id,
productIds: cloneDeep(props.customer.productAccesses),
});
const productsWithoutAccess = computed({
get: () => sortedProducts.value.filter(product => !request.value.productIds.includes(product.id)),
set: (v) => {
v.forEach(product => {
const index = request.value.productIds.indexOf(product.id);
if (index >= 0) {
request.value.productIds.splice(index, 1);
}
});
},
});
const productsWithAccess = computed({
get: () => sortedProducts.value.filter(product => request.value.productIds.includes(product.id)),
set: (v) => {
v.forEach(product => {
const index = request.value.productIds.indexOf(product.id);
if (index < 0) {
request.value.productIds.push(product.id);
}
});
},
});
<div class="flex flex-col flex-1 col-span-6 overflow-hidden">
<p class="text-center text-14 mb-3 font-bold">
No Access
</p>
<Draggable v-model="productsWithoutAccess"
:animation="products.length > 50 ? 0 : 200"
:sort="false"
:disabled="false"
class="flex flex-col gap-3 bg-background p-3 flex-1 border border-border overflow-auto"
:group="{ name: 'product-accesses', pull: true, put: true }"
ghost-class="ghost">
<CustomerProductAccessesProduct v-for="product in productsWithoutAccess" :key="product.id" :product="product"/>
</Draggable>
</div>
<div class="flex flex-col flex-1 col-span-6 overflow-hidden">
<p class="text-center text-14 mb-3 font-bold">
Access
</p>
<Draggable v-model="productsWithAccess"
:animation="products.length > 50 ? 0 : 200"
:sort="false"
:disabled="false"
class="flex flex-col gap-3 bg-background p-3 flex-1 border border-border overflow-auto"
:group="{ name: 'product-accesses', pull: true, put: true }"
ghost-class="ghost">
<CustomerProductAccessesProduct v-for="product in productsWithAccess" :key="product.id" :product="product"/>
</Draggable>
</div>
</div>
the setters are not triggered when moving from list A to list B :/ I could add the data into 2 seperate ref<[]> objects but that requires more boilerplate to ensure they get populated when the api promise returns etc..
from vue-draggable-plus.
Related Issues (20)
- 如何获取拖拽组件的数据 HOT 6
- How could I get the new one and the old one with onMove event? HOT 2
- 无法导出props参数类型和各个事件的事件对象类型
- 拖拽改变顺序,UI 变了, 但是数据的顺序没变化? HOT 1
- How can I cancel drag ? HOT 1
- Why when you put a <draggable> in a v-for it breaks the animation and the group inside a v-for doesn't work? HOT 1
- 无法导入js HOT 1
- ghostClass and dragClass not applied when v-model not used
- Drag animation between lists doesn't match drag/drop behavior HOT 1
- 设置 sort 为false 还是能排序 HOT 1
- 当direction="horizontal"时 , 子元素拖动至指定区域外,拖动的子元素位置改变生效,子元素dragend事件失效 HOT 4
- Drag and Drop Outside to a div HOT 1
- Can't figure out how to use with the Primevue Datatable and TreeTable HOT 2
- Moving dynamic components between lists not working, but using cloning works.
- 自定义克隆时,放置的目标顺序错误 HOT 3
- Implementing Restricted Column Movement for Specific Items HOT 3
- 多项拖拽
- Restricted column in custom Clone HOT 3
- 当使用ul、li作为拖拽元素,进行多列表拖拽时元素顺序异常 HOT 5
- firefox 拖动会打开新标签页面 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vue-draggable-plus.