diff --git a/web/app/components/base/drawer/index.tsx b/web/app/components/base/drawer/index.tsx
index 2a14e41205..911a785fe1 100644
--- a/web/app/components/base/drawer/index.tsx
+++ b/web/app/components/base/drawer/index.tsx
@@ -47,7 +47,7 @@ export default function Drawer({
-
<>
diff --git a/web/app/components/workflow/nodes/knowledge-retrieval/components/dataset-item.tsx b/web/app/components/workflow/nodes/knowledge-retrieval/components/dataset-item.tsx
index 4f00a4e021..2ed823200a 100644
--- a/web/app/components/workflow/nodes/knowledge-retrieval/components/dataset-item.tsx
+++ b/web/app/components/workflow/nodes/knowledge-retrieval/components/dataset-item.tsx
@@ -1,23 +1,42 @@
'use client'
import type { FC } from 'react'
-import React from 'react'
+import React, { useCallback } from 'react'
+import { useBoolean } from 'ahooks'
import type { DataSet } from '@/models/datasets'
import { DataSourceType } from '@/models/datasets'
import { Settings01, Trash03 } from '@/app/components/base/icons/src/vender/line/general'
import FileIcon from '@/app/components/base/file-icon'
import { Folder } from '@/app/components/base/icons/src/vender/solid/files'
+import SettingsModal from '@/app/components/app/configuration/dataset-config/settings-modal'
+import Drawer from '@/app/components/base/drawer'
+import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints'
type Props = {
payload: DataSet
onRemove: () => void
+ onChange: (dataSet: DataSet) => void
}
const DatasetItem: FC
= ({
payload,
onRemove,
+ onChange,
}) => {
+ const media = useBreakpoints()
+ const isMobile = media === MediaType.mobile
+
+ const [isShowSettingsModal, {
+ setTrue: showSettingsModal,
+ setFalse: hideSettingsModal,
+ }] = useBoolean(false)
+
+ const handleSave = useCallback((newDataset: DataSet) => {
+ onChange(newDataset)
+ hideSettingsModal()
+ }, [payload])
+
return (
-
+
{
payload.data_source_type === DataSourceType.FILE && (
@@ -35,10 +54,10 @@ const DatasetItem: FC
= ({
}
{payload.name}
-
+
setShowSettingsModal(true)}
+ onClick={showSettingsModal}
>
@@ -49,6 +68,15 @@ const DatasetItem: FC
= ({
+ {isShowSettingsModal && (
+
+
+
+ )}
)
}
diff --git a/web/app/components/workflow/nodes/knowledge-retrieval/components/dataset-list.tsx b/web/app/components/workflow/nodes/knowledge-retrieval/components/dataset-list.tsx
index 54cd3a285a..2cba51318b 100644
--- a/web/app/components/workflow/nodes/knowledge-retrieval/components/dataset-list.tsx
+++ b/web/app/components/workflow/nodes/knowledge-retrieval/components/dataset-list.tsx
@@ -21,6 +21,15 @@ const DatasetList: FC
= ({
onChange(newList)
}
}, [])
+
+ const handleChange = useCallback((index: number) => {
+ return (value: DataSet) => {
+ const newList = produce(list, (draft) => {
+ draft[index] = value
+ })
+ onChange(newList)
+ }
+ }, [list, onChange])
return (
{
@@ -30,6 +39,7 @@ const DatasetList: FC
= ({
key={index}
payload={item}
onRemove={handleRemove(index)}
+ onChange={handleChange(index)}
/>
)
})