/** * @file 长文本公式输入框 */ import React, { MouseEvent } from 'react'; import { FormControlProps } from 'amis-core'; import { FormulaPlugin } from './plugin'; import { CustomFormulaPickerProps } from './FormulaPicker'; import type { VariableItem, CodeMirror } from 'amis-ui'; export interface AdditionalMenuClickOpts { /** * 当前表达式值 */ value: string; /** * 对表达式重新赋值 * @param value * @returns */ setValue: (value: string) => void; /** * 在光标位置插入新的值 * @param content 要插入的内容 * @param type 插入内容的类型,目前支持表达式expression 和普通文本string * @param brace 自定义插入的位置 * @returns */ insertContent: (content: string, type: 'expression' | 'string', brace?: Array) => void; } export interface AdditionalMenu { label: string; onClick?: (e: MouseEvent, opts: AdditionalMenuClickOpts) => void; icon?: string; className?: string; } export interface TextareaFormulaControlProps extends FormControlProps { /** * 输入框的高度, 默认 100 px */ height?: number; /** * 用于提示的变量集合,默认为空 */ variables?: Array | Function; /** * 配合 variables 使用 * 当 props.variables 存在时, 是否再从 amis数据域中取变量集合,默认 false; */ requiredDataPropsVariables?: boolean; /** * 变量展现模式,可选值:'tabs' | 'tree' */ variableMode?: 'tree' | 'tabs'; /** * 附加底部按钮菜单项 */ additionalMenus?: Array; /** * 整体点击长文本公式输入框 */ onOverallClick?: () => void; /** * 自定义fx面板 */ customFormulaPicker?: React.FC; /** * 自定义标记文本 * @param editor * @returns */ customMarkText?: (editor: CodeMirror.Editor) => void; /** * 插件初始化生命周期回调 * @param plugin 插件实例,内部包含公式插件的方法 * @returns */ onPluginInit?: (plugin: FormulaPlugin) => void; /** * 弹窗顶部标题,默认为 "表达式" */ header: string; /** * 是否支持全屏,默认 true */ allowFullscreen?: boolean; /** * fx 更新前事件 */ beforeFxConfirm?: (plugin: FormulaPlugin) => void; /** * 简化成员操作 */ simplifyMemberOprs?: boolean; /** * 支付支持快捷变量 */ quickVariables?: boolean; } interface TextareaFormulaControlState { value: string; variables: Array; quickVariables: Array; formulaPickerOpen: boolean; formulaPickerValue: string; expressionBrace?: Array; isFullscreen: boolean; tooltipStyle: { [key: string]: string; }; loading: boolean; menuIsOpened: boolean; quickVariablesIsOpened: boolean; } export declare class TextareaFormulaControl extends React.Component { static defaultProps: Partial; wrapRef: React.RefObject; tooltipRef: React.RefObject; buttonTarget: HTMLElement; editorPlugin: FormulaPlugin; unReaction: any; appLocale: string; appCorpusData: any; constructor(props: TextareaFormulaControlProps); componentDidMount(): Promise; componentDidUpdate(prevProps: TextareaFormulaControlProps): Promise; componentWillUnmount(): void; menuRef(ref: HTMLDivElement): void; onExpressionMouseEnter(e: any, expression: string, brace?: Array): void; hiddenToolTip(): void; closeFormulaPicker(): void; handleConfirm(value: any): void; handleOnChange(value: any): void; editorFactory(dom: HTMLElement, cm: any): any; handleEditorMounted(cm: any, editor: any): void; handleFullscreenModeChange(): void; handleFormulaEditorOpen(): Promise; handleFormulaClick(e: React.MouseEvent, type?: string): Promise; editorAutoMark(): void; handleAddtionalMenuClick(e: MouseEvent, item: AdditionalMenu): void; closeMenuOuter(): void; closeQuickVariablesOuter(): void; renderMenuOuter(): React.JSX.Element; renderQuickVariablesOuter(): React.JSX.Element; handleQuickVariableSelect(item: VariableItem): void; renderButton(): React.JSX.Element; render(): React.JSX.Element; } export default class TextareaFormulaControlRenderer extends TextareaFormulaControl { } export {};