Remove pinned section from OfficeHome main body and use generated docx templates
All checks were successful
Automated Container Build / build-and-push (push) Successful in 1m24s
All checks were successful
Automated Container Build / build-and-push (push) Successful in 1m24s
This commit is contained in:
parent
707719f4af
commit
3d28f767e0
4 changed files with 8 additions and 17 deletions
Binary file not shown.
Binary file not shown.
|
|
@ -487,8 +487,7 @@ export default function FileExplorer({ onLogout }: FileExplorerProps) {
|
||||||
|
|
||||||
const [pinnedFiles, setPinnedFiles] = useState<FileItem[]>([]);
|
const [pinnedFiles, setPinnedFiles] = useState<FileItem[]>([]);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (pinnedExpanded) {
|
api.listPinned().then(data => {
|
||||||
api.listPinned().then(data => {
|
|
||||||
const items = data.items || [];
|
const items = data.items || [];
|
||||||
items.sort((a: FileItem, b: FileItem) => {
|
items.sort((a: FileItem, b: FileItem) => {
|
||||||
const idxA = pinnedOrder.indexOf(a.path);
|
const idxA = pinnedOrder.indexOf(a.path);
|
||||||
|
|
@ -500,8 +499,7 @@ export default function FileExplorer({ onLogout }: FileExplorerProps) {
|
||||||
});
|
});
|
||||||
setPinnedFiles(items);
|
setPinnedFiles(items);
|
||||||
}).catch(console.error);
|
}).catch(console.error);
|
||||||
}
|
}, [pinnedOrder, pinnedRefreshCounter]);
|
||||||
}, [pinnedExpanded, pinnedOrder, pinnedRefreshCounter]);
|
|
||||||
|
|
||||||
async function handlePinnedDragEnd(sourcePath: string, destPath: string) {
|
async function handlePinnedDragEnd(sourcePath: string, destPath: string) {
|
||||||
const newOrder = [...pinnedOrder];
|
const newOrder = [...pinnedOrder];
|
||||||
|
|
@ -1908,7 +1906,8 @@ export default function FileExplorer({ onLogout }: FileExplorerProps) {
|
||||||
<OfficeHome
|
<OfficeHome
|
||||||
type={appMode}
|
type={appMode}
|
||||||
onFileSelect={(file) => setEditingFile(file)}
|
onFileSelect={(file) => setEditingFile(file)}
|
||||||
onCreateBlank={(file) => setEditingFile(file)}
|
onCreateBlank={(file) => setEditingFile(file)}
|
||||||
|
onPinChange={() => setPinnedRefreshCounter(c => c + 1)}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<div className="flex flex-1 overflow-hidden">
|
<div className="flex flex-1 overflow-hidden">
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ interface OfficeHomeProps {
|
||||||
type: 'docs' | 'slides';
|
type: 'docs' | 'slides';
|
||||||
onFileSelect: (file: FileItem) => void;
|
onFileSelect: (file: FileItem) => void;
|
||||||
onCreateBlank: (file: FileItem) => void;
|
onCreateBlank: (file: FileItem) => void;
|
||||||
|
onPinChange?: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Custom Word icon (blue)
|
// Custom Word icon (blue)
|
||||||
|
|
@ -43,7 +44,7 @@ interface ContextMenuState {
|
||||||
file: FileItem;
|
file: FileItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function OfficeHome({ type, onFileSelect, onCreateBlank }: OfficeHomeProps) {
|
export default function OfficeHome({ type, onFileSelect, onCreateBlank, onPinChange }: OfficeHomeProps) {
|
||||||
const [recentFiles, setRecentFiles] = useState<FileItem[]>([]);
|
const [recentFiles, setRecentFiles] = useState<FileItem[]>([]);
|
||||||
const [pinnedFiles, setPinnedFiles] = useState<FileItem[]>([]);
|
const [pinnedFiles, setPinnedFiles] = useState<FileItem[]>([]);
|
||||||
const [allFiles, setAllFiles] = useState<FileItem[]>([]);
|
const [allFiles, setAllFiles] = useState<FileItem[]>([]);
|
||||||
|
|
@ -161,6 +162,7 @@ export default function OfficeHome({ type, onFileSelect, onCreateBlank }: Office
|
||||||
try {
|
try {
|
||||||
await api.togglePin(file.path);
|
await api.togglePin(file.path);
|
||||||
fetchFiles();
|
fetchFiles();
|
||||||
|
if (onPinChange) onPinChange();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error("Failed to pin", err);
|
console.error("Failed to pin", err);
|
||||||
}
|
}
|
||||||
|
|
@ -318,17 +320,7 @@ export default function OfficeHome({ type, onFileSelect, onCreateBlank }: Office
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Pinned Documents */}
|
|
||||||
{pinnedFiles.length > 0 && (
|
|
||||||
<div className="py-8 px-10 border-b" style={{ borderColor: 'var(--color-border)' }}>
|
|
||||||
<div className="max-w-6xl mx-auto">
|
|
||||||
<h2 className="text-lg font-medium mb-6" style={{ color: 'var(--color-text-primary)' }}>Pinned {title.toLowerCase()}</h2>
|
|
||||||
<div className="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 gap-6">
|
|
||||||
{pinnedFiles.map(file => renderFileCard(file))}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{/* Recent Documents */}
|
{/* Recent Documents */}
|
||||||
<div className="py-8 px-10">
|
<div className="py-8 px-10">
|
||||||
|
|
|
||||||
Reference in a new issue