[CLAUDE] FE-User: PE InfoTab inline edit + PeListPanel pencil edit hover mirror
Chunk 2/3 — mirror y hệt Chunk 1 sang fe-user (rule §3.9). 3 file: ~ components/pe/PeDetailTabs.tsx — InfoTab inline edit + autoEditHeader prop ~ components/pe/PeListPanel.tsx — pencil icon group-hover absolute right ~ pages/pe/PurchaseEvaluationWorkspacePage.tsx — URL editHeader=1 wiring Verify: npm run build fe-user pass · 0 TS error. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@ -34,6 +34,7 @@ export function PurchaseEvaluationWorkspacePage() {
|
||||
const phase = sp.get('phase') ?? ''
|
||||
const selectedId = sp.get('id')
|
||||
const mode = sp.get('mode') // 'new' | null
|
||||
const autoEditHeader = sp.get('editHeader') === '1'
|
||||
|
||||
const detail = useQuery({
|
||||
queryKey: ['pe-detail', selectedId],
|
||||
@ -77,17 +78,18 @@ export function PurchaseEvaluationWorkspacePage() {
|
||||
</header>
|
||||
|
||||
<div className="grid flex-1 grid-cols-1 overflow-hidden lg:grid-cols-[320px_1fr]">
|
||||
{/* Panel 1: List pure picker + sticky create */}
|
||||
{/* Panel 1: List pure picker + sticky create + pencil edit hover */}
|
||||
<PeListPanel
|
||||
typeFilter={typeFilter}
|
||||
selectedId={selectedId}
|
||||
search={search}
|
||||
phase={phase}
|
||||
onSelect={id => setParams({ id, mode: null })}
|
||||
onSelect={id => setParams({ id, mode: null, editHeader: null })}
|
||||
onSearchChange={q => setParams({ q })}
|
||||
onPhaseChange={p => setParams({ phase: p })}
|
||||
showCreateButton
|
||||
onCreate={() => setParams({ mode: 'new', id: null })}
|
||||
onCreate={() => setParams({ mode: 'new', id: null, editHeader: null })}
|
||||
onEditClick={id => setParams({ id, mode: null, editHeader: '1' })}
|
||||
/>
|
||||
|
||||
{/* Panel 2: Empty | Header form | Detail tabs (workspace mode) */}
|
||||
@ -117,9 +119,10 @@ export function PurchaseEvaluationWorkspacePage() {
|
||||
{selectedId && detail.data && (
|
||||
<PeDetailTabs
|
||||
evaluation={detail.data}
|
||||
onBack={() => setParams({ id: null })}
|
||||
onBack={() => setParams({ id: null, editHeader: null })}
|
||||
onDelete={() => del.mutate(detail.data!.id)}
|
||||
mode="workspace"
|
||||
autoEditHeader={autoEditHeader}
|
||||
/>
|
||||
)}
|
||||
</main>
|
||||
|
||||
Reference in New Issue
Block a user