import { getJSExpressionPrototype } from '@/common/manager/common-style';
import { getJSXTemplate } from '@/common/manager/setter-snippet';
import { ButtonPosition } from '@/type/button-position';
import { DisplayPosition } from '@/type/display-position';
export const initialContentJSX = {
type: 'js',
source:
'function content(state, formValues) { \n // formValues: 当前表单的数据\n // state: 当前页面所有组件的数据\n return
我是自定义内容
\n}',
compiled:
'function main(){\n \n "use strict";\n\nvar __compiledFunc__ = function content(state, formValues) {\n // formValues: 当前表单的数据\n // state: 当前页面所有组件的数据\n return /*#__PURE__*/React.createElement("div", {}, "我是自定义内容");\n};\n return __compiledFunc__.apply(this, arguments);\n }',
error: {},
};
export function createMessageSetters(config) {
const {
position,
isToast,
isConfirm,
needMargin,
config: flowConfig,
} = config || {};
let contentJSX = initialContentJSX;
if (
[ButtonPosition.formItemEvent, ButtonPosition.formDialogItemEvent].includes(
position,
)
) {
contentJSX = getJSXTemplate({
position: ButtonPosition.form,
})?.initialValue;
} else if (isToast || isConfirm) {
contentJSX = {
type: 'js',
source: `function content(res, state) { \n // res: 请求返回结果 \n // state: 全部组件数据 \n return {res?.msg || '请求成功'}
\n}`,
compiled: `function main(){\n \n "use strict";\n\nvar __compiledFunc__ = function content(res, state) {\n // res: 请求返回结果 \n return /*#__PURE__*/React.createElement("div", null, (res == null ? void 0 : res.msg) || '请求成功');\n};\n return __compiledFunc__.apply(this, arguments);\n }`,
error: {},
};
}
const configure = [
{
name: 'title',
display: 'inline',
title: '内容',
setter: {
componentName: 'MixedSetter',
props: {
setters: [
{
componentName: 'CnI18nSetter',
title: '纯文本',
},
{
componentName: 'CnJSXSetter',
props: {
usePopup: true,
enableFullscreen: true,
theme: 'vs',
},
title: 'React JSX代码',
initialValue: contentJSX,
},
],
},
},
},
{
name: 'type',
title: '展示样式',
display: 'inline',
setter: {
componentName: 'MixedSetter',
props: {
setters: [
{
componentName: 'SelectSetter',
props: {
options: [
{
label: '成功',
value: 'success',
},
{
label: '警告',
value: 'warning',
},
{
label: '错误',
value: 'error',
},
{
label: '通知',
value: 'notice',
},
{
label: '帮助',
value: 'help',
},
{
label: '无背景色',
value: 'blank',
},
],
},
},
getJSExpressionPrototype({
type: 'messageContent',
prototypeConfig: flowConfig,
}),
],
},
},
},
{
name: 'closable',
title: '显示关闭按钮',
display: 'inline',
setter: 'BoolSetter',
},
{
name: 'showType',
title: '多行展示样式',
display: 'inline',
setter: {
componentName: 'MixedSetter',
props: {
setters: [
{
componentName: 'SelectSetter',
props: {
options: [
{
label: '超出3行...',
value: 'beyond',
},
{
label: '多行平铺',
value: 'multiple',
},
],
},
},
],
},
},
},
];
if ([DisplayPosition.message].includes(position)) {
configure.push({
name: 'visible',
title: '隐藏',
display: 'inline',
setter: {
componentName: 'MixedSetter',
props: {
setters: [
{
title: '是 或 否',
componentName: 'RadioGroupSetter',
props: {
options: [
{ value: true, title: '是' },
{ value: false, title: '否' },
{ title: '不设置' },
],
},
},
getJSExpressionPrototype({
type: 'base',
prototypeConfig: flowConfig,
}),
],
},
},
});
}
if (isToast) {
configure.push({
name: 'duration',
title: '显示持续时间(单位:毫秒)',
setter: 'NumberSetter',
});
}
if (needMargin) {
// configure.push({
// name: 'needMargin',
// display:'inline',
// title: '边距',
// initialValue: [true],
// setter: {
// componentName: 'CnSelectSetter',
// props: {
// options: [
// { value: 'top', title: '上边距' },
// { value: 'bottom', title: '下边距' },
// { value: 'left', title: '左边距' },
// { value: 'right', title: '右边距' },
// { value: true, title: '上下边距' },
// ],
// selectProps:{
// mode: 'multiple',
// },
// },
// },
// })
}
return configure;
}