import {BasicCustomerInstance, CustomerParams} from '../Controller'; import {Modal} from '@native-ads/antd'; import {BasicConfig} from '../../../core/Container/types'; import {compileExpressionString, isExpression, parseExpressionString} from '../../../util/vm'; import {createChild} from '../../../'; import {ReactNode} from 'react'; export interface ModalCustomerConfig { /** * 弹框标题 */ title?: string; /** * 弹框内容 */ content?: string | BasicConfig[] | BasicConfig; } export class ModalCustomer implements BasicCustomerInstance { exec(config: ModalCustomerConfig, params: CustomerParams) { let { runTime, props, } = params; return new Promise((resolve, reject) => { if (typeof config === 'string' && isExpression(config)) { config = parseExpressionString(config, runTime); } else { config = compileExpressionString(config, runTime); } let title = config.title; let rawContent = config.content; let content: ReactNode; if (typeof rawContent !== 'string') { if (rawContent instanceof Array) { content = rawContent.map((info, index) => { return createChild(info, { ...props, info: info, key: `confirm_child_${index}` }); }); } else if (rawContent && rawContent.type) { content = createChild(rawContent, { ...props, info: rawContent, }); } } Modal.confirm({ title: title, content: content, onOk: () => { resolve(true); }, onCancel: () => { reject(); } }); }); } }