diff --git a/web/app/components/datasets/documents/create-from-pipeline/data-source/online-drive/file-list/header/breadcrumbs/bucket.tsx b/web/app/components/datasets/documents/create-from-pipeline/data-source/online-drive/file-list/header/breadcrumbs/bucket.tsx index c7ff203f2a..d18087c075 100644 --- a/web/app/components/datasets/documents/create-from-pipeline/data-source/online-drive/file-list/header/breadcrumbs/bucket.tsx +++ b/web/app/components/datasets/documents/create-from-pipeline/data-source/online-drive/file-list/header/breadcrumbs/bucket.tsx @@ -1,16 +1,31 @@ -import React from 'react' +import React, { useCallback } from 'react' import { BucketsGray } from '@/app/components/base/icons/src/public/knowledge/online-drive' import Tooltip from '@/app/components/base/tooltip' import { useTranslation } from 'react-i18next' +import cn from '@/utils/classnames' type BucketProps = { + bucketName: string + isActive?: boolean + disabled?: boolean + showSeparator?: boolean handleBackToBucketList: () => void + handleClickBucketName: () => void } const Bucket = ({ + bucketName, handleBackToBucketList, + handleClickBucketName, + disabled = false, + isActive = false, + showSeparator = true, }: BucketProps) => { const { t } = useTranslation() + const handleClickItem = useCallback(() => { + if (!disabled) + handleClickBucketName() + }, [disabled, handleClickBucketName]) return ( <> @@ -26,6 +41,19 @@ const Bucket = ({ / + + {showSeparator && /} > ) } diff --git a/web/app/components/datasets/documents/create-from-pipeline/data-source/online-drive/file-list/header/breadcrumbs/index.tsx b/web/app/components/datasets/documents/create-from-pipeline/data-source/online-drive/file-list/header/breadcrumbs/index.tsx index 1e9de5d464..8078faffa9 100644 --- a/web/app/components/datasets/documents/create-from-pipeline/data-source/online-drive/file-list/header/breadcrumbs/index.tsx +++ b/web/app/components/datasets/documents/create-from-pipeline/data-source/online-drive/file-list/header/breadcrumbs/index.tsx @@ -24,8 +24,12 @@ const Breadcrumbs = ({ const showSearchResult = !!keywords && searchResultsLength > 0 const isRoot = prefix.length === 0 && bucket === '' + const displayBreadcrumbNum = useMemo(() => { + const num = isInPipeline ? 2 : 3 + return bucket ? num - 1 : num + }, [isInPipeline, bucket]) + const breadcrumbs = useMemo(() => { - const displayBreadcrumbNum = isInPipeline ? 2 : 3 const prefixToDisplay = prefix.slice(0, displayBreadcrumbNum - 1) const collapsedBreadcrumbs = prefix.slice(displayBreadcrumbNum - 1, prefix.length - 1) return { @@ -35,7 +39,7 @@ const Breadcrumbs = ({ collapsedBreadcrumbs, lastBreadcrumb: prefix[prefix.length - 1], } - }, [isInPipeline, prefix]) + }, [displayBreadcrumbNum, prefix]) const handleBackToBucketList = useCallback(() => { setFileList([]) @@ -44,6 +48,12 @@ const Breadcrumbs = ({ setPrefix([]) }, [setBucket, setFileList, setPrefix, setSelectedFileList]) + const handleClickBucketName = useCallback(() => { + setFileList([]) + setSelectedFileList([]) + setPrefix([]) + }, [setFileList, setPrefix, setSelectedFileList]) + const handleClickBreadcrumb = useCallback((index: number) => { const newPrefix = breadcrumbs.prefixBreadcrumbs.slice(0, index - 1) setFileList([]) @@ -69,7 +79,14 @@ const Breadcrumbs = ({ {!showSearchResult && !isRoot && (