feat: agent strategy form support required mark

pull/12560/head
AkaraChen 1 year ago
parent b964c713bd
commit 641395b3ec

@ -82,6 +82,7 @@ export const AgentStrategy = memo((props: AgentStrategyProps) => {
availableNodes={availableNodes} availableNodes={availableNodes}
nodesOutputVars={nodeOutputVars} nodesOutputVars={nodeOutputVars}
isSupportJinja={def.template?.enabled} isSupportJinja={def.template?.enabled}
required={def.required}
varList={[]} varList={[]}
modelConfig={ modelConfig={
defaultModel.data defaultModel.data
@ -107,7 +108,13 @@ export const AgentStrategy = memo((props: AgentStrategyProps) => {
const onChange = (value: number) => { const onChange = (value: number) => {
props.onChange({ ...props.value, [schema.variable]: value }) props.onChange({ ...props.value, [schema.variable]: value })
} }
return <Field title={renderI18nObject(def.label)} tooltip={def.tooltip && renderI18nObject(def.tooltip)} inline> return <Field
title={<>
{renderI18nObject(def.label)} {def.required && <span className='text-red-500'>*</span>}
</>}
tooltip={def.tooltip && renderI18nObject(def.tooltip)}
inline
>
<div className='flex w-[200px] items-center gap-3'> <div className='flex w-[200px] items-center gap-3'>
<Slider <Slider
value={value} value={value}
@ -140,7 +147,12 @@ export const AgentStrategy = memo((props: AgentStrategyProps) => {
props.onChange({ ...props.value, [schema.variable]: value }) props.onChange({ ...props.value, [schema.variable]: value })
} }
return ( return (
<Field title={renderI18nObject(schema.label)} tooltip={schema.tooltip && renderI18nObject(schema.tooltip)}> <Field
title={<>
{renderI18nObject(schema.label)} {schema.required && <span className='text-red-500'>*</span>}
</>}
tooltip={schema.tooltip && renderI18nObject(schema.tooltip)}
>
<ToolSelector <ToolSelector
scope={schema.scope} scope={schema.scope}
value={value} value={value}
@ -163,6 +175,7 @@ export const AgentStrategy = memo((props: AgentStrategyProps) => {
tooltip={schema.tooltip && renderI18nObject(schema.tooltip)} tooltip={schema.tooltip && renderI18nObject(schema.tooltip)}
onChange={onChange} onChange={onChange}
supportCollapse supportCollapse
required={schema.required}
/> />
) )
} }

@ -1,18 +1,17 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC, ReactNode } from 'react'
import React from 'react' import React from 'react'
import { import {
RiArrowDownSLine, RiArrowDownSLine,
} from '@remixicon/react' } from '@remixicon/react'
import { useBoolean } from 'ahooks' import { useBoolean } from 'ahooks'
import type { DefaultTFuncReturn } from 'i18next'
import cn from '@/utils/classnames' import cn from '@/utils/classnames'
import Tooltip from '@/app/components/base/tooltip' import Tooltip from '@/app/components/base/tooltip'
type Props = { type Props = {
className?: string className?: string
title: JSX.Element | string | DefaultTFuncReturn title: ReactNode
tooltip?: React.ReactNode tooltip?: ReactNode
isSubTitle?: boolean isSubTitle?: boolean
supportFold?: boolean supportFold?: boolean
children?: JSX.Element | string | null children?: JSX.Element | string | null

@ -75,6 +75,7 @@ type Props = {
editorContainerClassName?: string editorContainerClassName?: string
placeholderClassName?: string placeholderClassName?: string
titleClassName?: string titleClassName?: string
required?: boolean
} }
const Editor: FC<Props> = ({ const Editor: FC<Props> = ({
@ -110,6 +111,7 @@ const Editor: FC<Props> = ({
placeholderClassName, placeholderClassName,
titleClassName, titleClassName,
editorContainerClassName, editorContainerClassName,
required,
}) => { }) => {
const { t } = useTranslation() const { t } = useTranslation()
const { eventEmitter } = useEventEmitterContextContext() const { eventEmitter } = useEventEmitterContextContext()
@ -147,7 +149,7 @@ const Editor: FC<Props> = ({
<div className={cn(isFocus ? 'bg-gray-50' : 'bg-gray-100', isExpand && 'h-full flex flex-col', 'rounded-lg', containerClassName)}> <div className={cn(isFocus ? 'bg-gray-50' : 'bg-gray-100', isExpand && 'h-full flex flex-col', 'rounded-lg', containerClassName)}>
<div className={cn('pt-1 pl-3 pr-2 flex justify-between items-center', headerClassName)}> <div className={cn('pt-1 pl-3 pr-2 flex justify-between items-center', headerClassName)}>
<div className='flex gap-2'> <div className='flex gap-2'>
<div className={cn('leading-4 text-xs font-semibold text-gray-700 uppercase', titleClassName)}>{title}</div> <div className={cn('leading-4 text-xs font-semibold text-gray-700 uppercase', titleClassName)}>{title} {required && <span className='text-red-500'>*</span>}</div>
{titleTooltip && <Tooltip popupContent={titleTooltip} />} {titleTooltip && <Tooltip popupContent={titleTooltip} />}
</div> </div>
<div className='flex items-center'> <div className='flex items-center'>

Loading…
Cancel
Save