Add Pending changelists view (option B)
The Changes tab now shows committed-but-not-submitted changelists as cards above the working set: expandable to their files (click to preview), each with per-CL Submit, plus Edit description / Uncommit (reopen -c default) / Discard in a ⋯ menu, and a Submit-all button. Backend adds p4_reopen_default and p4_set_desc; a small text-prompt modal edits descriptions. Preview panel now shows either the working selection or a clicked pending-CL file. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
37
src/App.css
37
src/App.css
@ -122,6 +122,43 @@ body.resizing{cursor:col-resize!important;user-select:none}
|
||||
.pushbar b{color:var(--add)}
|
||||
.pushdot{width:8px;height:8px;border-radius:50%;background:var(--add);box-shadow:0 0 8px var(--add);flex:0 0 auto}
|
||||
.pusharr{margin-left:auto;font-weight:700;font-size:14px}
|
||||
|
||||
/* pending changelists (committed, not yet submitted) */
|
||||
.pending{margin:8px 8px 2px;display:flex;flex-direction:column;gap:6px;max-height:42%;overflow-y:auto;flex:0 0 auto}
|
||||
.pending-h{display:flex;align-items:center;gap:8px;padding:1px 4px 3px}
|
||||
.pending-t{display:flex;align-items:center;gap:8px;font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;color:var(--add);font-weight:700}
|
||||
.pushall{margin-left:auto;font-size:11.5px;font-weight:600;color:var(--add);background:rgba(62,207,142,.1);border:1px solid rgba(62,207,142,.32);border-radius:8px;padding:4px 11px;cursor:pointer}
|
||||
.pushall:hover{filter:brightness(1.08)}
|
||||
.clcard{border:1px solid rgba(62,207,142,.28);background:rgba(62,207,142,.06);border-radius:11px;overflow:hidden;flex:0 0 auto}
|
||||
.clcard-h{display:flex;align-items:center;gap:9px;padding:9px 11px;cursor:pointer}
|
||||
.clcard-h:hover{background:rgba(62,207,142,.06)}
|
||||
.cl-chev{width:15px;height:15px;flex:0 0 auto;color:var(--faint);display:grid;place-items:center;transition:transform .18s;transform:rotate(-90deg)}
|
||||
.cl-chev.open{transform:rotate(0deg)}
|
||||
.cl-chev svg{width:15px;height:15px}
|
||||
.cl-num{font-family:var(--mono);font-size:12px;color:var(--accent-2);flex:0 0 auto;font-variant-numeric:tabular-nums}
|
||||
.cl-desc{flex:1;min-width:0;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
||||
.cl-count{flex:0 0 auto;font-size:11px;color:var(--faint)}
|
||||
.cl-actions{flex:0 0 auto;display:flex;align-items:center;gap:5px}
|
||||
.cl-submit{width:27px;height:27px;border:none;border-radius:8px;cursor:pointer;color:#fff;font-size:14px;font-weight:700;
|
||||
background:linear-gradient(135deg,var(--add),#1f9f6e);box-shadow:0 4px 12px -5px rgba(62,207,142,.7)}
|
||||
.cl-submit:hover{filter:brightness(1.1)}
|
||||
.cl-more{width:27px;height:27px;border:1px solid var(--border);background:var(--panel);color:var(--muted);border-radius:8px;cursor:pointer;font-size:15px;line-height:1;display:grid;place-items:center}
|
||||
.cl-more:hover{color:var(--txt);border-color:var(--accent)}
|
||||
.cl-files{border-top:1px solid rgba(62,207,142,.2);padding:4px}
|
||||
.cl-empty{padding:8px 10px;font-size:11.5px;color:var(--faint)}
|
||||
.cl-file{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:8px;cursor:pointer}
|
||||
.cl-file:hover{background:var(--hover)}
|
||||
.cl-file.sel{background:rgba(124,110,246,.14);box-shadow:inset 0 0 0 1px rgba(124,110,246,.25)}
|
||||
.cl-fname{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
|
||||
.cl-fname .n{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
||||
.cl-fname .p{font-size:10.5px;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
||||
|
||||
/* text prompt (edit description) */
|
||||
.modal-card.prompt{width:460px;max-width:calc(100vw - 40px);text-align:left;align-items:stretch}
|
||||
.modal-card.prompt h3{text-align:left}
|
||||
.prompt-label{font-size:11.5px;color:var(--faint);margin:2px 0 9px}
|
||||
.prompt-input{width:100%;min-height:96px;resize:vertical;background:var(--input-bg);border:1px solid var(--border);border-radius:10px;padding:10px 12px;font-size:13px;color:var(--txt);font-family:var(--font);outline:none;line-height:1.5}
|
||||
.prompt-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(124,110,246,.15)}
|
||||
.chhead{display:flex;align-items:center;gap:10px;padding:9px 16px;font-size:12px;color:var(--muted);border-bottom:1px solid var(--border-soft)}
|
||||
.chk{width:16px;height:16px;border-radius:6px;border:1.5px solid var(--accent);
|
||||
background:linear-gradient(145deg,var(--accent-2),var(--accent-deep));display:grid;place-items:center;flex:0 0 auto;box-shadow:0 0 8px rgba(124,110,246,.4)}
|
||||
|
||||
Reference in New Issue
Block a user