Skip to content

Commit

Permalink
feat: support var type paragraph
Browse files Browse the repository at this point in the history
  • Loading branch information
iamjoel committed Sep 12, 2023
1 parent bed53e4 commit a01fc9e
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 17 deletions.
32 changes: 20 additions & 12 deletions app/components/welcome/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,10 @@ const Welcome: FC<IWelcomeProps> = ({
return (
<div className='space-y-3'>
{promptConfig.prompt_variables.map(item => (
<div className='tablet:flex tablet:!h-9 mobile:space-y-2 tablet:space-y-0 mobile:text-xs tablet:text-sm' key={item.key}>
<label className={`flex-shrink-0 flex items-center mobile:text-gray-700 tablet:text-gray-900 mobile:font-medium pc:font-normal ${s.formLabel}`}>{item.name}</label>
<div className='tablet:flex items-start mobile:space-y-2 tablet:space-y-0 mobile:text-xs tablet:text-sm' key={item.key}>
<label className={`flex-shrink-0 flex items-center tablet:leading-9 mobile:text-gray-700 tablet:text-gray-900 mobile:font-medium pc:font-normal ${s.formLabel}`}>{item.name}</label>
{item.type === 'select'
? (
&& (
<Select
className='w-full'
defaultValue={inputs?.[item.key]}
Expand All @@ -104,16 +104,24 @@ const Welcome: FC<IWelcomeProps> = ({
allowSearch={false}
bgClassName='bg-gray-50'
/>
)
: (
<input
placeholder={item.name}
value={inputs?.[item.key] || ''}
onChange={(e) => { setInputs({ ...inputs, [item.key]: e.target.value }) }}
className={'w-full flex-grow py-2 pl-3 pr-3 box-border rounded-lg bg-gray-50'}
maxLength={item.max_length || DEFAULT_VALUE_MAX_LEN}
/>
)}
{item.type === 'string' && (
<input
placeholder={`${item.name}${!item.required ? `(${t('appDebug.variableTable.optional')})` : ''}`}
value={inputs?.[item.key] || ''}
onChange={(e) => { setInputs({ ...inputs, [item.key]: e.target.value }) }}
className={'w-full flex-grow py-2 pl-3 pr-3 box-border rounded-lg bg-gray-50'}
maxLength={item.max_length || DEFAULT_VALUE_MAX_LEN}
/>
)}
{item.type === 'paragraph' && (
<textarea
className="w-full h-[104px] flex-grow py-2 pl-3 pr-3 box-border rounded-lg bg-gray-50"
placeholder={`${item.name}${!item.required ? `(${t('appDebug.variableTable.optional')})` : ''}`}
value={inputs?.[item.key] || ''}
onChange={(e) => { setInputs({ ...inputs, [item.key]: e.target.value }) }}
/>
)}
</div>
))}
</div>
Expand Down
2 changes: 1 addition & 1 deletion types/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type { Locale } from '@/i18n'
export type PromptVariable = {
key: string
name: string
type: 'string' | 'number' | 'select'
type: string
default?: string | number
options?: string[]
max_length?: number
Expand Down
16 changes: 12 additions & 4 deletions utils/prompt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,22 @@ export const userInputsFormToPromptVariables = (useInputs: UserInputFormItem[] |
return []
const promptVariables: PromptVariable[] = []
useInputs.forEach((item: any) => {
const type = item['text-input'] ? 'string' : 'select'
const content = type === 'string' ? item['text-input'] : item.select
if (type === 'string') {
const isParagraph = !!item.paragraph
const [type, content] = (() => {
if (isParagraph)
return ['paragraph', item.paragraph]

if (item['text-input'])
return ['string', item['text-input']]

return ['select', item.select]
})()
if (type === 'string' || type === 'paragraph') {
promptVariables.push({
key: content.variable,
name: content.label,
required: content.required,
type: 'string',
type,
max_length: content.max_length,
options: [],
})
Expand Down

0 comments on commit a01fc9e

Please sign in to comment.