mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-05-29 17:45:12 +08:00
56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
'use client'
|
|
import { useBoolean } from 'ahooks'
|
|
import type { FC } from 'react'
|
|
import React, { useEffect } from 'react'
|
|
import { useTranslation } from 'react-i18next'
|
|
import cn from '@/utils/classnames'
|
|
import { Settings04 } from '@/app/components/base/icons/src/vender/line/general'
|
|
import { ChevronRight } from '@/app/components/base/icons/src/vender/line/arrows'
|
|
const I18N_PREFIX = 'datasetCreation.stepOne.website'
|
|
|
|
type Props = {
|
|
className?: string
|
|
children: React.ReactNode
|
|
controlFoldOptions?: number
|
|
}
|
|
|
|
const OptionsWrap: FC<Props> = ({
|
|
className = '',
|
|
children,
|
|
controlFoldOptions,
|
|
}) => {
|
|
const { t } = useTranslation()
|
|
|
|
const [fold, {
|
|
toggle: foldToggle,
|
|
setTrue: foldHide,
|
|
}] = useBoolean(false)
|
|
|
|
useEffect(() => {
|
|
if (controlFoldOptions)
|
|
foldHide()
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
}, [controlFoldOptions])
|
|
return (
|
|
<div className={cn(className, !fold ? 'mb-0' : 'mb-3')}>
|
|
<div
|
|
className='flex justify-between items-center h-[26px] py-1 cursor-pointer select-none'
|
|
onClick={foldToggle}
|
|
>
|
|
<div className='flex items-center text-gray-700'>
|
|
<Settings04 className='mr-1 w-4 h-4' />
|
|
<div className='text-[13px] font-semibold text-gray-800 uppercase'>{t(`${I18N_PREFIX}.options`)}</div>
|
|
</div>
|
|
<ChevronRight className={cn(!fold && 'rotate-90', 'w-4 h-4 text-gray-500')} />
|
|
</div>
|
|
{!fold && (
|
|
<div className='mb-4'>
|
|
{children}
|
|
</div>
|
|
)}
|
|
|
|
</div>
|
|
)
|
|
}
|
|
export default React.memo(OptionsWrap)
|