2026-04-24 09:08:12 +02:00
|
|
|
import React from 'react'
|
2026-05-06 11:12:59 +02:00
|
|
|
import { ArrowLeft } from 'lucide-react'
|
2026-04-24 09:08:12 +02:00
|
|
|
import FocusAreaNode from './FocusAreaNode'
|
|
|
|
|
import DetailPanel from './DetailPanel'
|
|
|
|
|
|
|
|
|
|
function HierarchyTab({ hierarchy, expandedNodes, selectedItem, loading, error, onToggleNode, onSelectItem, onUpdate }) {
|
|
|
|
|
if (loading && hierarchy.length === 0) {
|
2026-05-06 11:12:59 +02:00
|
|
|
return (
|
|
|
|
|
<div className="empty-state" style={{ padding: '2.5rem' }}>
|
|
|
|
|
<div className="spinner" />
|
|
|
|
|
</div>
|
|
|
|
|
)
|
2026-04-24 09:08:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
2026-05-06 11:12:59 +02:00
|
|
|
<div className="admin-hierarchy-container admin-hierarchy-layout">
|
|
|
|
|
<div className="admin-hierarchy-pane admin-hierarchy-pane--tree" hidden={!!selectedItem}>
|
|
|
|
|
<h2 className="admin-hierarchy-pane__title">Katalog-Hierarchie</h2>
|
|
|
|
|
{error && <div className="admin-matrix-alert">{error}</div>}
|
2026-04-24 09:08:12 +02:00
|
|
|
|
2026-05-06 11:12:59 +02:00
|
|
|
{hierarchy.map((fa) => (
|
2026-04-24 09:08:12 +02:00
|
|
|
<FocusAreaNode
|
|
|
|
|
key={fa.id}
|
|
|
|
|
focusArea={fa}
|
|
|
|
|
expanded={expandedNodes}
|
|
|
|
|
onToggle={onToggleNode}
|
|
|
|
|
onSelect={onSelectItem}
|
|
|
|
|
selectedId={selectedItem?.id}
|
|
|
|
|
selectedType={selectedItem?._type}
|
|
|
|
|
/>
|
|
|
|
|
))}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{selectedItem && (
|
2026-05-06 11:12:59 +02:00
|
|
|
<div className="admin-hierarchy-pane admin-hierarchy-pane--detail">
|
2026-04-24 09:08:12 +02:00
|
|
|
<button
|
2026-05-06 11:12:59 +02:00
|
|
|
type="button"
|
|
|
|
|
className="btn btn-secondary btn-small admin-hierarchy-back"
|
2026-04-24 09:08:12 +02:00
|
|
|
onClick={() => onSelectItem(null)}
|
|
|
|
|
>
|
2026-05-06 11:12:59 +02:00
|
|
|
<ArrowLeft size={16} strokeWidth={2} aria-hidden />
|
|
|
|
|
Zurück zur Übersicht
|
2026-04-24 09:08:12 +02:00
|
|
|
</button>
|
|
|
|
|
<DetailPanel item={selectedItem} onUpdate={onUpdate} focusAreas={hierarchy} />
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default HierarchyTab
|