feat(V0.2): 克隆卡片跟手浮层 + 列表组内排序 + 把手统一移到最左
Docker Build and Push / build-image (push) Successful in 1m1s
Docker Build and Push / build-image (push) Successful in 1m1s
- 浮层改为激活时克隆原卡片 (DOM clone, 淡化+投影) 挂 body 顶层, 移动直接改 transform —— 替代蓝色信息条, 所见即所拖 - 任务列表支持组内排序: 拖到本组某行上/下半显示插入指示, 松手提交 POST /projects/:id/tasks/reorder (顶层任务按展平顺序重写 sortOrder); 拖到其他分组仍为换列 - ⠿ 把手统一移到卡片最左: 打卡 / 列表任务行 / 看板卡片 (看板新增把手 即按即拖路径, 与列表同款 touchstart preventDefault 双保险) - useColumnDrag onDrop 经 ref 桥接防陈旧闭包
This commit is contained in:
+11
-12
@@ -699,18 +699,16 @@ body.me-safe-top .app-safe-top { height: 0; }
|
||||
.mv-card.dragover.after { border-bottom: 3px solid var(--color-primary); }
|
||||
.mv-card.dragover.before { border-top: 3px solid var(--color-primary); }
|
||||
|
||||
/* 拖动跟手浮层: 半透明副本随指针, 原位保留占位 */
|
||||
/* 拖动跟手浮层: 克隆原卡片淡化后挂在 body 顶层, 跟随指针 */
|
||||
.drag-ghost {
|
||||
position: fixed; left: 0; top: 0; z-index: 1000;
|
||||
display: flex; align-items: center; gap: 6px;
|
||||
background: rgba(255,255,255,.94); color: var(--color-text);
|
||||
font-size: 13px; font-weight: 600; white-space: nowrap;
|
||||
padding: 8px 12px; border-radius: 8px;
|
||||
box-shadow: 0 10px 24px rgba(15,23,42,.28);
|
||||
pointer-events: none; will-change: transform;
|
||||
}
|
||||
.drag-ghost i { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
|
||||
.drag-ghost b { color: var(--color-primary); font-weight: 600; margin-left: 4px; }
|
||||
.drag-ghost > * {
|
||||
margin: 0 !important; pointer-events: none;
|
||||
opacity: .82; border-radius: 9px;
|
||||
box-shadow: 0 12px 28px rgba(15,23,42,.28);
|
||||
}
|
||||
|
||||
/* ----- 日历视图 ----- */
|
||||
.calendar-view { padding: 0 12px 20px; }
|
||||
@@ -1221,13 +1219,14 @@ textarea.inp { resize: vertical; }
|
||||
.task-content input, .task-content textarea { -webkit-user-select: text; user-select: text; }
|
||||
.bcard, .task-row { touch-action: pan-y; }
|
||||
.bcard.dragging {
|
||||
opacity: .5; transform: scale(.97); position: relative; z-index: 6;
|
||||
box-shadow: 0 10px 22px rgba(15,23,42,.22);
|
||||
opacity: .35; outline: 2px dashed var(--color-primary); outline-offset: 1px;
|
||||
}
|
||||
.task-row.dragging {
|
||||
opacity: .55; transform: scale(.985); position: relative; z-index: 5;
|
||||
box-shadow: 0 8px 18px rgba(15,23,42,.16);
|
||||
opacity: .35; outline: 2px dashed var(--color-primary); outline-offset: 1px;
|
||||
}
|
||||
.task-row.dragover { outline: 2px solid var(--color-primary); outline-offset: 1px; }
|
||||
.task-row.dragover.after { border-bottom: 3px solid var(--color-primary); }
|
||||
.task-row.dragover.before { border-top: 3px solid var(--color-primary); }
|
||||
.drag-pill {
|
||||
font-size: 11px; font-weight: 600; color: #fff; background: var(--color-primary);
|
||||
border-radius: 999px; padding: 2px 9px; flex-shrink: 0; white-space: nowrap;
|
||||
|
||||
Reference in New Issue
Block a user