fix(V0.2): 三轮反馈 5 项 —— 回滚键盘方案 / 列表卡片拖动 / 看板防误触 / 横滑整屏 / 详情页恢复
Docker Build and Push / build-image (push) Successful in 4m9s
Docker Build and Push / build-image (push) Successful in 4m9s
1. 回滚键盘遮挡统一方案 (真机测试不通过, 需求搁置): 恢复 TaskDetail/ UserPicker/CopyTaskPopup/ProjectManage 与 useKeyboardInset 到 9fea1a5^, 删除 useKeyboardInsetWatcher / .kb-safe / interactive-widget=resizes-content 2. 任务详情页样式随 1 一并恢复提交前状态 (含底部拷贝/删除按钮) 3. 列表视图换列改为卡片拖动: 新 useRowDrag (长按 400ms 行抬起, 左右 80px/列步进, 行尾徽标显示目标列, 松手落列), 移除长按 ActionSheet —— 旧长按与复选框/行点击互相误触, 抬手合成 click 落在控件上触发状态切换 4. 看板拖动防误触: 任务区禁长按文字选择与系统菜单 (输入框除外); pointercancel 只放弃不提交; 拖动结束 350ms 内抑制 click 误开详情; 状态点/⋯/子任务行 pointerdown 不冒泡, 不发起拖动 5. 看板横滑扩展到整屏: .page-transition 补 height:100% 打通 app-main → page-with-navbar 百分比链, board-wrap 撑满剩余高度 已验证: kb-safe/Watcher/onLongPress 残留引用清零, 逐文件 diff 审阅通过; 本机无 Node 运行时, 未跑 vite build
This commit is contained in:
@@ -1,13 +1,16 @@
|
||||
import { useState } from 'react'
|
||||
import TaskRow from '../../components/task/TaskRow.jsx'
|
||||
import useRowDrag from '../../components/task/useRowDrag.js'
|
||||
|
||||
// 列表视图 (T-VW-01, T-ST-04/05)
|
||||
// 按看板列分组展示; 子任务缩进 + 折叠展开
|
||||
// 子任务的添加只在任务详情页完成 (或把别的任务转为子任务), 列表页不放入口
|
||||
// 换列手势与看板一致: 长按 400ms 行抬起, 左右拖动选列, 松手落列
|
||||
// (列表只展示有任务的列, 空列需到看板视图拖入)
|
||||
export default function ListView({
|
||||
tasks, columns, onToggle, onOpen, onMore, onLongPress,
|
||||
tasks, columns, onToggle, onOpen, onMore, onMoveColumn,
|
||||
}) {
|
||||
const [collapsed, setCollapsed] = useState({})
|
||||
const drag = useRowDrag({ columns, onDrop: onMoveColumn })
|
||||
|
||||
if (!tasks || tasks.length === 0) {
|
||||
return (
|
||||
@@ -41,19 +44,21 @@ export default function ListView({
|
||||
{g.list.map((t) => {
|
||||
const kids = t.children || []
|
||||
const isCollapsed = !!collapsed[t.id]
|
||||
const dragging = drag.drag?.task?.id === t.id ? drag.drag : null
|
||||
return (
|
||||
<div key={t.id}>
|
||||
<TaskRow
|
||||
task={t}
|
||||
onToggle={onToggle}
|
||||
onClick={() => onOpen(t)}
|
||||
onClick={() => { if (!drag.justEnded()) onOpen(t) }}
|
||||
onMore={onMore}
|
||||
onLongPress={onLongPress}
|
||||
bindDrag={drag.bind}
|
||||
dragTarget={dragging ? orderedCols[dragging.toIdx] : null}
|
||||
/>
|
||||
{kids.length > 0 && (
|
||||
<>
|
||||
{!isCollapsed && kids.map((c) => (
|
||||
<TaskRow key={c.id} task={c} indent onToggle={onToggle} onClick={() => onOpen(c)} onMore={onMore} onLongPress={onLongPress} />
|
||||
<TaskRow key={c.id} task={c} indent onToggle={onToggle} onClick={() => onOpen(c)} onMore={onMore} />
|
||||
))}
|
||||
<div
|
||||
className="collapse"
|
||||
|
||||
Reference in New Issue
Block a user