feat: 管理项目面板改为右侧fixed弹窗(与视图选项同锚点往下展开)
This commit is contained in:
@@ -957,8 +957,9 @@ function WorktableSection(props: any) {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{managing && <div className="dsh-wt_popBackdrop" onClick={() => setManaging(false)} />}
|
||||||
{managing && (
|
{managing && (
|
||||||
<div className="dsh-wt_manage">
|
<div className="dsh-wt_manage dsh-wt_pop" style={{ position: 'fixed', left: popLeft, top: popTop, width: 316, zIndex: 80 }}>
|
||||||
<div className="dsh-wt_manageHead">
|
<div className="dsh-wt_manageHead">
|
||||||
<span className="dsh-wt_manageTitle">{t('manage.title')}</span>
|
<span className="dsh-wt_manageTitle">{t('manage.title')}</span>
|
||||||
<button type="button" className="dsh-wt_manageDone" onClick={() => setManaging(false)}>{t('manage.done')}</button>
|
<button type="button" className="dsh-wt_manageDone" onClick={() => setManaging(false)}>{t('manage.done')}</button>
|
||||||
|
|||||||
@@ -545,3 +545,12 @@
|
|||||||
dsh-wt_menu dsh-wt_pop fixed 定位 width 200 + 透明遮罩点击关闭;与 + 弹窗互斥不变。
|
dsh-wt_menu dsh-wt_pop fixed 定位 width 200 + 透明遮罩点击关闭;与 + 弹窗互斥不变。
|
||||||
- 验证:functional-diag STEP8 menuPos=fixed、menuLeft=288(侧栏右缘+8)、
|
- 验证:functional-diag STEP8 menuPos=fixed、menuLeft=288(侧栏右缘+8)、
|
||||||
遮罩点击关闭 PASS;全 STEP 回归 ERROR_COUNT: 0。纯客户端改动,F5 生效。
|
遮罩点击关闭 PASS;全 STEP 回归 ERROR_COUNT: 0。纯客户端改动,F5 生效。
|
||||||
|
## 补记(管理项目改右侧弹窗展开)
|
||||||
|
|
||||||
|
- 用户反馈:点「管理项目…」后,管理面板应从新弹出的界面(同锚点)往下展开,
|
||||||
|
而不是从工作台原位内联展开。
|
||||||
|
- 处理:managing 时 dsh-wt_manage 加 dsh-wt_pop + fixed 定位(popLeft/popTop 与视图选项
|
||||||
|
弹窗同一锚点,宽 316),加透明遮罩点击关闭;完成按钮关闭不变;
|
||||||
|
项目卡区 data-managing 弱化保持。
|
||||||
|
- 验证:functional-diag STEP9 managePos=fixed、manageLeft=288(同弹窗锚点)、rows=3、
|
||||||
|
遮罩关闭 PASS;全 STEP 回归 ERROR_COUNT: 0。纯客户端改动,F5 生效。
|
||||||
|
|||||||
@@ -167,6 +167,26 @@ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|||||||
})()`);
|
})()`);
|
||||||
console.log('STEP8:', JSON.stringify(step8));
|
console.log('STEP8:', JSON.stringify(step8));
|
||||||
|
|
||||||
|
// 管理项目:从视图选项弹窗同锚点往下展开为 fixed 面板(不再内联展开)
|
||||||
|
const step9 = 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 items=document.querySelectorAll('.dsh-wt_menu.dsh-wt_pop .dsh-wt_menuItem');
|
||||||
|
var manageItem=items[items.length-1];
|
||||||
|
if(manageItem){ manageItem.click(); }
|
||||||
|
await new Promise(function(r){setTimeout(r,300)});
|
||||||
|
var mp=document.querySelector('.dsh-wt_manage.dsh-wt_pop');
|
||||||
|
if(mp){ var cs=getComputedStyle(mp); out.managePos=cs.position; out.manageLeft=mp.getBoundingClientRect().left; out.manageTop=mp.getBoundingClientRect().top; out.rows=mp.querySelectorAll('.dsh-wt_manageRow').length; }
|
||||||
|
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_manage.dsh-wt_pop');
|
||||||
|
return JSON.stringify(out);
|
||||||
|
})()`);
|
||||||
|
console.log('STEP9:', JSON.stringify(step9));
|
||||||
|
|
||||||
const errors = events.filter((e) =>
|
const errors = events.filter((e) =>
|
||||||
e.method === 'Runtime.exceptionThrown' ||
|
e.method === 'Runtime.exceptionThrown' ||
|
||||||
(e.method === 'Log.entryAdded' && e.params.entry.level === 'error') ||
|
(e.method === 'Log.entryAdded' && e.params.entry.level === 'error') ||
|
||||||
|
|||||||
Reference in New Issue
Block a user