diff --git a/01_content/src/client/index.tsx b/01_content/src/client/index.tsx index ed820c8..6c9b97b 100644 --- a/01_content/src/client/index.tsx +++ b/01_content/src/client/index.tsx @@ -943,8 +943,9 @@ function WorktableSection(props: any) { )} + {viewOptionsOpen &&
setViewOptionsOpen(false)} />} {viewOptionsOpen && ( -
+
{t('sort.label')} diff --git a/02_process/worklogs/2026-08-16_worktable-v2.md b/02_process/worklogs/2026-08-16_worktable-v2.md index 2795b4f..0abd9a1 100644 --- a/02_process/worklogs/2026-08-16_worktable-v2.md +++ b/02_process/worklogs/2026-08-16_worktable-v2.md @@ -538,3 +538,10 @@ - 用户反馈:头部 3 按钮间距比官方小,左侧拖动抓手偏小。 - 处理:.dsh-wt_actions gap 2px → 7px;.dsh-wt_handle 22×22/13px → 25×25/15px。 - 验证:functional-diag 全 STEP 回归 PASS,ERRORS_COUNT: 0(纯 CSS 改动,F5 生效)。 +## 补记(视图选项改右侧弹窗) + +- 用户反馈:视图选项(排序/管理菜单)不要下方内联展开,要和 + 新建一样从右侧弹出。 +- 处理:viewOptionsOpen 复用 popLeft/popTop(锚定侧栏右缘 + 区块顶部), + dsh-wt_menu dsh-wt_pop fixed 定位 width 200 + 透明遮罩点击关闭;与 + 弹窗互斥不变。 +- 验证:functional-diag STEP8 menuPos=fixed、menuLeft=288(侧栏右缘+8)、 + 遮罩点击关闭 PASS;全 STEP 回归 ERROR_COUNT: 0。纯客户端改动,F5 生效。 diff --git a/04_test/functional-diag.cjs b/04_test/functional-diag.cjs index b4c4673..8d84f50 100644 --- a/04_test/functional-diag.cjs +++ b/04_test/functional-diag.cjs @@ -150,6 +150,23 @@ const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); })()`); console.log('STEP7:', JSON.stringify(step7)); + // 视图选项:右侧 fixed 弹窗(对齐 + 弹窗),不再下方内联展开 + const step8 = await evaluate(`(async function(){ + var out={}; + var btn=document.querySelector('.dsh-wt_actions .dsh-wt_iconBtn:nth-child(2)'); + if(btn){ btn.click(); } + await new Promise(function(r){setTimeout(r,250)}); + var menu=document.querySelector('.dsh-wt_menu.dsh-wt_pop'); + if(menu){ var cs=getComputedStyle(menu); out.menuPos=cs.position; out.menuLeft=menu.getBoundingClientRect().left; } + out.backdrop=!!document.querySelector('.dsh-wt_popBackdrop'); + var bd=document.querySelector('.dsh-wt_popBackdrop'); + if(bd){ bd.click(); } + await new Promise(function(r){setTimeout(r,200)}); + out.closedAfterBackdrop=!document.querySelector('.dsh-wt_menu.dsh-wt_pop'); + return JSON.stringify(out); + })()`); + console.log('STEP8:', JSON.stringify(step8)); + const errors = events.filter((e) => e.method === 'Runtime.exceptionThrown' || (e.method === 'Log.entryAdded' && e.params.entry.level === 'error') ||