fix(graph-pdf-chat): resolution de la propagation des clics sur le graphe et arret du detournement de copie sur le chat PDF
This commit is contained in:
@@ -86,7 +86,10 @@ export function DocumentQAOverlay({ attachment, noteId, noteContent, onClose, on
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="fixed inset-0 z-[100] flex items-center justify-center p-6 bg-black/40 backdrop-blur-sm">
|
<div
|
||||||
|
onCopy={(e) => e.stopPropagation()}
|
||||||
|
className="fixed inset-0 z-[100] flex items-center justify-center p-6 bg-black/40 backdrop-blur-sm"
|
||||||
|
>
|
||||||
<div className="w-full max-w-6xl h-[88vh] bg-background border border-border rounded-2xl shadow-2xl flex overflow-hidden">
|
<div className="w-full max-w-6xl h-[88vh] bg-background border border-border rounded-2xl shadow-2xl flex overflow-hidden">
|
||||||
{/* Left: PDF Preview */}
|
{/* Left: PDF Preview */}
|
||||||
<div className="flex-1 flex flex-col border-r border-border">
|
<div className="flex-1 flex flex-col border-r border-border">
|
||||||
|
|||||||
@@ -482,7 +482,7 @@ export function NoteGraphView({ embedded = false }: { embedded?: boolean }) {
|
|||||||
{/* Zoom to fit */}
|
{/* Zoom to fit */}
|
||||||
{!loading && graphData.nodes.length > 0 && (
|
{!loading && graphData.nodes.length > 0 && (
|
||||||
<button
|
<button
|
||||||
onClick={handleZoomToFit}
|
onClick={(e) => { e.stopPropagation(); handleZoomToFit() }}
|
||||||
className="absolute top-4 right-4 z-10 flex items-center gap-1.5 px-3 py-1.5 bg-white border border-border/50 rounded-md text-[11px] text-ink font-medium shadow-sm hover:bg-gray-50 transition-colors animate-fade-in"
|
className="absolute top-4 right-4 z-10 flex items-center gap-1.5 px-3 py-1.5 bg-white border border-border/50 rounded-md text-[11px] text-ink font-medium shadow-sm hover:bg-gray-50 transition-colors animate-fade-in"
|
||||||
>
|
>
|
||||||
<Maximize2 size={12} />
|
<Maximize2 size={12} />
|
||||||
@@ -492,7 +492,11 @@ export function NoteGraphView({ embedded = false }: { embedded?: boolean }) {
|
|||||||
|
|
||||||
{/* Cluster legend (Interactive Notebook Filter) */}
|
{/* Cluster legend (Interactive Notebook Filter) */}
|
||||||
{rawData && rawData.clusters && rawData.clusters.length > 0 && (
|
{rawData && rawData.clusters && rawData.clusters.length > 0 && (
|
||||||
<div className="absolute top-4 left-4 z-10 flex flex-col gap-2 max-h-[42vh] overflow-y-auto pr-1">
|
<div
|
||||||
|
onClick={(e) => e.stopPropagation()}
|
||||||
|
onDoubleClick={(e) => e.stopPropagation()}
|
||||||
|
className="absolute top-4 left-4 z-10 flex flex-col gap-2 max-h-[42vh] overflow-y-auto pr-1"
|
||||||
|
>
|
||||||
<span className="text-[9px] font-bold text-slate-800 uppercase tracking-wider pl-1 select-none">{t('graphView.notebooks')}</span>
|
<span className="text-[9px] font-bold text-slate-800 uppercase tracking-wider pl-1 select-none">{t('graphView.notebooks')}</span>
|
||||||
{(selectedNotebookId || focusNodeId) && (
|
{(selectedNotebookId || focusNodeId) && (
|
||||||
<div className="flex flex-col gap-1">
|
<div className="flex flex-col gap-1">
|
||||||
@@ -545,7 +549,11 @@ export function NoteGraphView({ embedded = false }: { embedded?: boolean }) {
|
|||||||
|
|
||||||
{/* Filtres de liens + seuil sémantique */}
|
{/* Filtres de liens + seuil sémantique */}
|
||||||
{!loading && !error && rawData && (
|
{!loading && !error && rawData && (
|
||||||
<div className="absolute bottom-4 left-4 z-10 flex flex-col gap-2 max-w-[220px]">
|
<div
|
||||||
|
onClick={(e) => e.stopPropagation()}
|
||||||
|
onDoubleClick={(e) => e.stopPropagation()}
|
||||||
|
className="absolute bottom-4 left-4 z-10 flex flex-col gap-2 max-w-[220px]"
|
||||||
|
>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={() => setControlsOpen(v => !v)}
|
onClick={() => setControlsOpen(v => !v)}
|
||||||
@@ -612,7 +620,11 @@ export function NoteGraphView({ embedded = false }: { embedded?: boolean }) {
|
|||||||
|
|
||||||
{/* Note detail panel */}
|
{/* Note detail panel */}
|
||||||
{selectedNode && (
|
{selectedNode && (
|
||||||
<div className="absolute inset-y-0 right-0 w-80 backdrop-blur-md bg-white/95 dark:bg-stone-900/95 border-l border-border/40 flex flex-col shadow-[0_8px_30px_rgb(0,0,0,0.06)] z-20 transition-all duration-300">
|
<div
|
||||||
|
onClick={(e) => e.stopPropagation()}
|
||||||
|
onDoubleClick={(e) => e.stopPropagation()}
|
||||||
|
className="absolute inset-y-0 right-0 w-80 backdrop-blur-md bg-white/95 dark:bg-stone-900/95 border-l border-border/40 flex flex-col shadow-[0_8px_30px_rgb(0,0,0,0.06)] z-20 transition-all duration-300"
|
||||||
|
>
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<div className="flex items-start justify-between p-5 border-b border-border/40">
|
<div className="flex items-start justify-between p-5 border-b border-border/40">
|
||||||
<div className="flex-1 min-w-0 pr-3">
|
<div className="flex-1 min-w-0 pr-3">
|
||||||
|
|||||||
Reference in New Issue
Block a user