fix: fix NextTable callback function

This commit is contained in:
zude.hzd 2020-09-01 15:45:27 +08:00
parent 0ee8892190
commit ce77375f66
3 changed files with 40 additions and 9 deletions

View File

@ -904,11 +904,7 @@
},{ },{
"name": "callback", "name": "callback",
"description": "callback", "description": "callback",
"propType": "JsonSetter", "setter": "FunctionSetter"
"defaultValue": {
"type": "JSFunction",
"value": "(rowData, action, table) => {\n return table.editRow(rowData).then((row) => {\n console.log(row);\n })}"
}
}] }]
} }
}, },
@ -916,7 +912,7 @@
"title": "Title", "title": "Title",
"callback": { "callback": {
"type": "JSFunction", "type": "JSFunction",
"value": "(rowData, action, table) => {\n return table.editRow(rowData).then((row) => {\n console.log(row);\n })}" "value": "function(){}"
} }
} }
} }

View File

@ -1,6 +1,6 @@
import React, { Component } from 'react'; import React, { Component } from 'react';
import { registerSetter } from '@ali/lowcode-editor-core'; import { registerSetter } from '@ali/lowcode-editor-core';
import { isJSExpression } from '@ali/lowcode-types'; import { isJSExpression,isJSFunction } from '@ali/lowcode-types';
import { DatePicker, TimePicker, Input, Radio, Select, Switch, NumberPicker } from '@alifd/next'; import { DatePicker, TimePicker, Input, Radio, Select, Switch, NumberPicker } from '@alifd/next';
import ExpressionSetter from './expression-setter'; import ExpressionSetter from './expression-setter';
import ColorSetter from './color-setter'; import ColorSetter from './color-setter';
@ -91,6 +91,16 @@ const VariableSetter ={
recommend: true, recommend: true,
}; };
const FunctionBindSetter = {
component: FunctionSetter,
title: '函数绑定',
condition: (field: any) => {
const v = field.getValue();
return v == isJSFunction(v);
},
}
const builtinSetters: any = { const builtinSetters: any = {
StringSetter, StringSetter,
NumberSetter, NumberSetter,
@ -110,7 +120,7 @@ const builtinSetters: any = {
JsonSetter, JsonSetter,
StyleSetter, StyleSetter,
IconSetter, IconSetter,
FunctionSetter FunctionSetter:FunctionBindSetter
}; };
registerSetter(builtinSetters); registerSetter(builtinSetters);

View File

@ -17,6 +17,23 @@ export interface JSExpression {
[key: string]: any; [key: string]: any;
} }
// 函数
export interface JSFunction{
type: 'JSFunction';
/**
*
*/
value: string;
/**
*
*/
mock?: any;
/**
* extTypeevents
*/
[key: string]: any;
}
export interface JSSlot { export interface JSSlot {
name?: string; name?: string;
type: 'JSSlot'; type: 'JSSlot';
@ -39,7 +56,7 @@ export interface JSONObject {
} }
// 复合类型 // 复合类型
export type CompositeValue = JSONValue | JSExpression | JSSlot | CompositeArray | CompositeObject; export type CompositeValue = JSONValue | JSExpression | JSSlot | CompositeArray | CompositeObject | JSFunction;
export type CompositeArray = CompositeValue[]; export type CompositeArray = CompositeValue[];
export interface CompositeObject { export interface CompositeObject {
[key: string]: CompositeValue; [key: string]: CompositeValue;
@ -50,6 +67,14 @@ export function isJSExpression(data: any): data is JSExpression {
return data && data.type === 'JSExpression'; return data && data.type === 'JSExpression';
} }
export function isJSFunction(data: any): data is JSFunction {
return data && data.type === 'JSFunction';
}
export function isJSSlot(data: any): data is JSSlot { export function isJSSlot(data: any): data is JSSlot {
return data && data.type === 'JSSlot'; return data && data.type === 'JSSlot';
} }