diff --git a/frontend/package.json b/frontend/package.json index 5d83e9c..b652c90 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "homehub-frontend", "private": true, - "version": "0.4.12", + "version": "0.4.13", "type": "module", "scripts": { "dev": "vite", diff --git a/frontend/src/components/shopping/CatalogueModal.tsx b/frontend/src/components/shopping/CatalogueModal.tsx index e9e30da..4126373 100644 --- a/frontend/src/components/shopping/CatalogueModal.tsx +++ b/frontend/src/components/shopping/CatalogueModal.tsx @@ -147,9 +147,7 @@ export default function CatalogueModal({ stores, onClose }: CatalogueModalProps) } } - async function handlePhotoChange(e: React.ChangeEvent) { - const file = e.target.files?.[0] - if (!file) return + async function uploadFile(file: File) { setUploading(true) setError(null) try { @@ -167,6 +165,11 @@ export default function CatalogueModal({ stores, onClose }: CatalogueModalProps) } } + async function handlePhotoChange(e: React.ChangeEvent) { + const file = e.target.files?.[0] + if (file) await uploadFile(file) + } + async function handleSave() { if (!form.name.trim()) return setSaving(true) @@ -200,6 +203,18 @@ export default function CatalogueModal({ stores, onClose }: CatalogueModalProps) const isFormOpen = creating || editing !== null const previewSrc = form.thumbnail_path ?? form.image_path + useEffect(() => { + if (!isFormOpen) return + function onPaste(e: ClipboardEvent) { + const item = Array.from(e.clipboardData?.items ?? []).find(i => i.type.startsWith('image/')) + if (!item) return + const file = item.getAsFile() + if (file) void uploadFile(file) + } + window.addEventListener('paste', onPaste) + return () => window.removeEventListener('paste', onPaste) + }, [isFormOpen]) + return ( {error && ( @@ -226,12 +241,17 @@ export default function CatalogueModal({ stores, onClose }: CatalogueModalProps) }}>📷 )} - +
+ + {!uploading && ( + ou Ctrl+V pour coller + )} +
{previewSrc && (