chore: can show popup

This commit is contained in:
Joel 2025-08-22 16:59:04 +08:00
parent a41176b66d
commit baa77d3cda
8 changed files with 29 additions and 2 deletions

View File

@ -271,6 +271,7 @@ const PromptEditor: FC<PromptEditorProps> = ({
<> <>
<HITLInputBlock /> <HITLInputBlock />
<HITLInputBlockReplacementBlock <HITLInputBlockReplacementBlock
nodeId={hitlInputBlock.nodeId}
nodeTitle={hitlInputBlock.nodeTitle} nodeTitle={hitlInputBlock.nodeTitle}
formInputs={hitlInputBlock.formInputs} formInputs={hitlInputBlock.formInputs}
onFormInputsChange={hitlInputBlock.onFormInputsChange} onFormInputsChange={hitlInputBlock.onFormInputsChange}

View File

@ -14,6 +14,7 @@ import { useBoolean } from 'ahooks'
import Modal from '../../../modal' import Modal from '../../../modal'
type Props = { type Props = {
nodeId: string
nodeTitle: string nodeTitle: string
varName: string varName: string
isSelected: boolean isSelected: boolean
@ -24,6 +25,7 @@ type Props = {
} }
const ComponentUI: FC<Props> = ({ const ComponentUI: FC<Props> = ({
nodeId,
nodeTitle, nodeTitle,
varName, varName,
// isSelected, // isSelected,
@ -129,6 +131,7 @@ const ComponentUI: FC<Props> = ({
className='max-w-[372px] !p-0' className='max-w-[372px] !p-0'
> >
<InputField <InputField
nodeId={nodeId}
isEdit isEdit
payload={formInput} payload={formInput}
onChange={handleChange} onChange={handleChange}

View File

@ -7,6 +7,7 @@ import produce from 'immer'
type Props = { type Props = {
nodeKey: string nodeKey: string
nodeId: string
nodeTitle: string nodeTitle: string
varName: string varName: string
formInputs?: FormInputItem[] formInputs?: FormInputItem[]
@ -17,6 +18,7 @@ type Props = {
const HITLInputComponent: FC<Props> = ({ const HITLInputComponent: FC<Props> = ({
nodeKey, nodeKey,
nodeId,
nodeTitle, nodeTitle,
varName, varName,
formInputs = [], formInputs = [],
@ -45,6 +47,7 @@ const HITLInputComponent: FC<Props> = ({
className='w-full pb-1 pt-3' className='w-full pb-1 pt-3'
> >
<ComponentUi <ComponentUi
nodeId={nodeId}
nodeTitle={nodeTitle} nodeTitle={nodeTitle}
varName={varName} varName={varName}
isSelected={isSelected} isSelected={isSelected}

View File

@ -20,6 +20,7 @@ const REGEX = new RegExp(HITL_INPUT_REG)
const HITLInputReplacementBlock = ({ const HITLInputReplacementBlock = ({
// onInsert, // onInsert,
nodeId,
nodeTitle, nodeTitle,
formInputs, formInputs,
onFormInputsChange, onFormInputsChange,
@ -37,6 +38,7 @@ const HITLInputReplacementBlock = ({
const varName = textNode.getTextContent().split('.')[1].replace(/#}}$/, '') const varName = textNode.getTextContent().split('.')[1].replace(/#}}$/, '')
return $applyNodeReplacement($createHITLInputNode( return $applyNodeReplacement($createHITLInputNode(
varName, varName,
nodeId,
nodeTitle, nodeTitle,
formInputs || [], formInputs || [],
onFormInputsChange!, onFormInputsChange!,

View File

@ -5,6 +5,7 @@ import type { FormInputItem } from '@/app/components/workflow/nodes/human-input/
export type SerializedNode = SerializedLexicalNode & { export type SerializedNode = SerializedLexicalNode & {
variableName: string variableName: string
nodeId: string
nodeTitle: string nodeTitle: string
formInputs: FormInputItem[] formInputs: FormInputItem[]
onFormInputsChange: (inputs: FormInputItem[]) => void onFormInputsChange: (inputs: FormInputItem[]) => void
@ -14,6 +15,7 @@ export type SerializedNode = SerializedLexicalNode & {
export class HITLInputNode extends DecoratorNode<React.JSX.Element> { export class HITLInputNode extends DecoratorNode<React.JSX.Element> {
__variableName: string __variableName: string
__nodeId: string
__nodeTitle: string __nodeTitle: string
__formInputs?: FormInputItem[] __formInputs?: FormInputItem[]
__onFormInputsChange: (inputs: FormInputItem[]) => void __onFormInputsChange: (inputs: FormInputItem[]) => void
@ -42,6 +44,11 @@ export class HITLInputNode extends DecoratorNode<React.JSX.Element> {
return self.__nodeTitle return self.__nodeTitle
} }
getNodeId(): string {
const self = this.getLatest()
return self.__nodeId
}
getFormInputs(): FormInputItem[] { getFormInputs(): FormInputItem[] {
const self = this.getLatest() const self = this.getLatest()
return self.__formInputs || [] return self.__formInputs || []
@ -65,6 +72,7 @@ export class HITLInputNode extends DecoratorNode<React.JSX.Element> {
static clone(node: HITLInputNode): HITLInputNode { static clone(node: HITLInputNode): HITLInputNode {
return new HITLInputNode( return new HITLInputNode(
node.__variableName, node.__variableName,
node.__nodeId,
node.__nodeTitle, node.__nodeTitle,
node.__formInputs || [], node.__formInputs || [],
node.__onFormInputsChange, node.__onFormInputsChange,
@ -80,6 +88,7 @@ export class HITLInputNode extends DecoratorNode<React.JSX.Element> {
constructor( constructor(
varName: string, varName: string,
nodeId: string,
nodeTitle: string, nodeTitle: string,
formInputs: FormInputItem[], formInputs: FormInputItem[],
onFormInputsChange: (inputs: FormInputItem[]) => void, onFormInputsChange: (inputs: FormInputItem[]) => void,
@ -90,6 +99,7 @@ export class HITLInputNode extends DecoratorNode<React.JSX.Element> {
super(key) super(key)
this.__variableName = varName this.__variableName = varName
this.__nodeId = nodeId
this.__nodeTitle = nodeTitle this.__nodeTitle = nodeTitle
this.__formInputs = formInputs this.__formInputs = formInputs
this.__onFormInputsChange = onFormInputsChange this.__onFormInputsChange = onFormInputsChange
@ -111,6 +121,7 @@ export class HITLInputNode extends DecoratorNode<React.JSX.Element> {
return <HILTInputBlockComponent return <HILTInputBlockComponent
nodeKey={this.getKey()} nodeKey={this.getKey()}
varName={this.getVariableName()} varName={this.getVariableName()}
nodeId={this.getNodeId()}
nodeTitle={this.getNodeTitle()} nodeTitle={this.getNodeTitle()}
formInputs={this.getFormInputs()} formInputs={this.getFormInputs()}
onChange={this.getOnFormInputsChange()} onChange={this.getOnFormInputsChange()}
@ -122,6 +133,7 @@ export class HITLInputNode extends DecoratorNode<React.JSX.Element> {
static importJSON(serializedNode: SerializedNode): HITLInputNode { static importJSON(serializedNode: SerializedNode): HITLInputNode {
const node = $createHITLInputNode( const node = $createHITLInputNode(
serializedNode.variableName, serializedNode.variableName,
serializedNode.nodeId,
serializedNode.nodeTitle, serializedNode.nodeTitle,
serializedNode.formInputs, serializedNode.formInputs,
serializedNode.onFormInputsChange, serializedNode.onFormInputsChange,
@ -137,6 +149,7 @@ export class HITLInputNode extends DecoratorNode<React.JSX.Element> {
type: 'hitl-input-block', type: 'hitl-input-block',
version: 1, version: 1,
variableName: this.getVariableName(), variableName: this.getVariableName(),
nodeId: this.getNodeId(),
nodeTitle: this.getNodeTitle(), nodeTitle: this.getNodeTitle(),
formInputs: this.getFormInputs(), formInputs: this.getFormInputs(),
onFormInputsChange: this.getOnFormInputsChange(), onFormInputsChange: this.getOnFormInputsChange(),
@ -152,6 +165,7 @@ export class HITLInputNode extends DecoratorNode<React.JSX.Element> {
export function $createHITLInputNode( export function $createHITLInputNode(
variableName: string, variableName: string,
nodeId: string,
nodeTitle: string, nodeTitle: string,
formInputs: FormInputItem[], formInputs: FormInputItem[],
onFormInputsChange: (inputs: FormInputItem[]) => void, onFormInputsChange: (inputs: FormInputItem[]) => void,
@ -160,6 +174,7 @@ export function $createHITLInputNode(
): HITLInputNode { ): HITLInputNode {
return new HITLInputNode( return new HITLInputNode(
variableName, variableName,
nodeId,
nodeTitle, nodeTitle,
formInputs, formInputs,
onFormInputsChange, onFormInputsChange,

View File

@ -59,6 +59,7 @@ const PrePopulate: FC<Props> = ({
value={valueSelector || []} value={valueSelector || []}
onChange={onValueSelectorChange!} onChange={onValueSelectorChange!}
readonly={false} readonly={false}
zIndex={1000}
/> />
) )
} }
@ -72,9 +73,9 @@ const PrePopulate: FC<Props> = ({
return ( return (
<div> <div>
{main} {main}
<div className={cn('flex space-x-1 text-text-tertiary')}> <div className={cn('flex items-center space-x-1 text-text-tertiary')} onClick={() => onIsVariableChange?.(!isVariable)}>
<Variable02 className='size-3.5' /> <Variable02 className='size-3.5' />
<div>{t(`${i18nPrefix}.useVarInstead`)}</div> <div className='system-xs-medium'>{t(`${i18nPrefix}.useVarInstead`)}</div>
</div> </div>
</div> </div>
) )

View File

@ -80,6 +80,7 @@ export type WorkflowVariableBlockType = {
export type HITLInputBlockType = { export type HITLInputBlockType = {
show?: boolean show?: boolean
nodeId: string
nodeTitle: string nodeTitle: string
formInputs?: FormInputItem[] formInputs?: FormInputItem[]
onFormInputsChange?: (inputs: FormInputItem[]) => void onFormInputsChange?: (inputs: FormInputItem[]) => void

View File

@ -53,6 +53,7 @@ const FormContent: FC<Props> = ({
hitlInputBlock={{ hitlInputBlock={{
show: true, show: true,
formInputs, formInputs,
nodeId,
nodeTitle, nodeTitle,
onFormInputsChange, onFormInputsChange,
onFormInputItemRename, onFormInputItemRename,