/** * This file is part of the NocoBase (R) project. * Copyright (c) 2020-2024 NocoBase Co., Ltd. * Authors: NocoBase Team. * * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. * For more information, please refer to: https://www.nocobase.com/agreement. */ import React, { useState } from 'react'; import { Popover } from 'antd'; import { RenderElementProps } from 'slate-react'; import { FlowContextSelector } from '../FlowContextSelector'; import type { VariableTriggerElement } from './types'; import type { MetaTreeNode } from '../../flowContext'; interface VariableTriggerProps extends RenderElementProps { element: VariableTriggerElement; metaTree?: MetaTreeNode[] | (() => MetaTreeNode[] | Promise); onVariableSelect?: (triggerId: string, value: string, item: MetaTreeNode) => void; onTriggerClose?: (triggerId: string) => void; } export const VariableTrigger: React.FC = ({ attributes, children, element, metaTree, onVariableSelect, onTriggerClose, }) => { const [open, setOpen] = useState(true); const handleVariableSelect = (value: string, item?: MetaTreeNode) => { if (item) { setOpen(false); onVariableSelect?.(element.triggerId, value, item); } }; const handleOpenChange = (visible: boolean) => { if (!visible) { setOpen(false); onTriggerClose?.(element.triggerId); } }; return (
} open={open} trigger="click" placement="bottomLeft" onOpenChange={handleOpenChange} overlayClassName="variable-trigger-popover" destroyTooltipOnHide > {'{{}}'} {children}
); };