Update prese_dragdrop.js

This commit is contained in:
2025-10-19 01:37:56 +08:00
committed by GitHub
parent 68d8da496f
commit 3ff67f01f5

View File

@@ -41,8 +41,8 @@ function onDragStart(e, item) {
draggedSection = draggedItem.data('section'); draggedSection = draggedItem.data('section');
draggedOrderIndex = draggedItem.data('order-index'); draggedOrderIndex = draggedItem.data('order-index');
const popup = draggedItem.closest('.popup'); // 修复:直接查找固定的滚动容器
scrollContainer = popup.length ? popup.find('.popup-body') : null; scrollContainer = $('#amily2-preset-settings-popup').find('#prompt-editor-container');
const pos = getEventPosition(e); const pos = getEventPosition(e);
startX = pos.x; startX = pos.x;
@@ -103,24 +103,32 @@ function onDragEnd(e) {
function completeDrag() { function completeDrag() {
if (!draggedItem || !dragPlaceholder) return; if (!draggedItem || !dragPlaceholder) return;
const placeholderIndex = dragPlaceholder.index();
const sectionContainer = dragPlaceholder.closest('.mixed-list'); const sectionContainer = dragPlaceholder.closest('.mixed-list');
const order = state.getCurrentMixedOrder()[draggedSection];
const draggedElement = order[draggedOrderIndex];
order.splice(draggedOrderIndex, 1);
const newIndex = placeholderIndex > draggedOrderIndex ? placeholderIndex - 1 : placeholderIndex;
order.splice(newIndex, 0, draggedElement);
dragPlaceholder.before(draggedItem); dragPlaceholder.before(draggedItem);
const newOrder = [];
sectionContainer.find('.mixed-item').each(function(index) { sectionContainer.find('.mixed-item').each(function(index) {
$(this).attr('data-order-index', index); const $item = $(this);
$item.attr('data-order-index', index); // 更新UI索引属性
const type = $item.data('type');
if (type === 'prompt') {
newOrder.push({
type: 'prompt',
index: parseInt($item.data('prompt-index'), 10)
});
} else if (type === 'conditional') {
newOrder.push({
type: 'conditional',
id: $item.data('conditional-id')
});
}
}); });
const allOrders = state.getCurrentMixedOrder();
allOrders[draggedSection] = newOrder;
state.setCurrentMixedOrder(allOrders);
toastr.info('顺序已调整,请点击保存按钮以生效。', '', { timeOut: 3000 }); toastr.info('顺序已调整,请点击保存按钮以生效。', '', { timeOut: 3000 });
} }