diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/base.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/base.tsx index f3c673c8325..2d6863b3250 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/base.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/base.tsx @@ -49,6 +49,7 @@ import type { SortConfig, } from '@/app/workspace/[workspaceId]/components' import { FloatingOverflowText, Resource } from '@/app/workspace/[workspaceId]/components' +import { DocumentTagsModal } from '@/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components' import { ActionBar, AddConnectorModal, @@ -342,6 +343,8 @@ export function KnowledgeBase({ const [contextMenuDocument, setContextMenuDocument] = useState(null) const [showRenameModal, setShowRenameModal] = useState(false) const [documentToRename, setDocumentToRename] = useState(null) + const [showDocumentTagsModal, setShowDocumentTagsModal] = useState(false) + const [documentForTagsId, setDocumentForTagsId] = useState(null) const showAddConnectorModal = addConnectorType != null const updateAddConnectorParam = useCallback( (value: string | null) => { @@ -531,6 +534,14 @@ export function KnowledgeBase({ setShowRenameModal(true) } + /** + * Opens the document tags modal + */ + const handleViewDocumentTags = (doc: DocumentData) => { + setDocumentForTagsId(doc.id) + setShowDocumentTagsModal(true) + } + /** * Saves the renamed document */ @@ -1345,6 +1356,17 @@ export function KnowledgeBase({ /> )} + {documentForTagsId && ( + doc.id === documentForTagsId) ?? null} + onDocumentUpdate={(updates) => updateDocument(documentForTagsId, updates)} + /> + )} + 0 - : false - } selectedCount={selectedDocuments.size} enabledCount={enabledCount} disabledCount={disabledCount} @@ -1413,16 +1430,8 @@ export function KnowledgeBase({ : undefined } onViewTags={ - contextMenuDocument && selectedDocuments.size === 1 - ? () => { - const urlParams = new URLSearchParams({ - kbName: knowledgeBaseName, - docName: contextMenuDocument.filename || 'Document', - }) - router.push( - `/workspace/${workspaceId}/knowledge/${id}/${contextMenuDocument.id}?${urlParams.toString()}` - ) - } + contextMenuDocument && selectedDocuments.size === 1 && userPermissions.canEdit + ? () => handleViewDocumentTags(contextMenuDocument) : undefined } onDelete={ diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/document-context-menu/document-context-menu.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/document-context-menu/document-context-menu.tsx index bb751cf2502..7050da64725 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/document-context-menu/document-context-menu.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/document-context-menu/document-context-menu.tsx @@ -22,7 +22,6 @@ interface DocumentContextMenuProps { onAddDocument?: () => void isDocumentEnabled?: boolean hasDocument: boolean - hasTags?: boolean disableRename?: boolean disableToggleEnabled?: boolean disableDelete?: boolean @@ -50,7 +49,6 @@ export function DocumentContextMenu({ onAddDocument, isDocumentEnabled = true, hasDocument, - hasTags = false, disableRename = false, disableToggleEnabled = false, disableDelete = false, @@ -70,7 +68,7 @@ export function DocumentContextMenu({ } const hasNavigationSection = !isMultiSelect && (!!onOpenInNewTab || !!onOpenSource) - const hasEditSection = !isMultiSelect && (!!onRename || (hasTags && !!onViewTags)) + const hasEditSection = !isMultiSelect && (!!onRename || !!onViewTags) const hasStateSection = !!onToggleEnabled const hasDestructiveSection = !!onDelete @@ -121,10 +119,10 @@ export function DocumentContextMenu({ Rename )} - {!isMultiSelect && hasTags && onViewTags && ( + {!isMultiSelect && onViewTags && ( - View tags + Tags )} {hasEditSection && (hasStateSection || hasDestructiveSection) && (