joint setters

This commit is contained in:
kangwei 2020-03-16 23:15:15 +08:00
parent 6b0e9ec145
commit 8315bc1124
7 changed files with 20 additions and 14 deletions

View File

@ -1,8 +1,7 @@
import { DatePicker, Input, Radio, Select, Switch } from '@alifd/next'; import { DatePicker, Input, Radio, Select, Switch, NumberPicker } from '@alifd/next';
import NumberSetter from '../../../plugin-setters/src/number-setter';
import ExpressionSetter from '../../../plugin-setters/src/expression-setter'; import ExpressionSetter from '../../../plugin-setters/src/expression-setter';
import MixinSetter from '../../../plugin-setters/src/mixin-setter'; import MixinSetter from '../../../plugin-setters/src/mixin-setter';
import EventsSetter from '../../../plugin-settings/src/builtin-setters/events-setter' import EventsSetter from '../../../plugin-setters/src/events-setter';
import { registerSetter } from '../../../plugin-settings/src'; import { registerSetter } from '../../../plugin-settings/src';
import { createElement } from 'react'; import { createElement } from 'react';
@ -17,17 +16,20 @@ registerSetter('ClassNameSetter', () => {
}); });
registerSetter('EventsSetter', EventsSetter); registerSetter('EventsSetter', EventsSetter);
registerSetter('StringSetter', { component: Input, defaultProps: { placeholder: '请输入' } });
registerSetter('StringSetter', { component: Input, props: { placeholder: '请输入' } }); registerSetter('NumberSetter', NumberPicker);
registerSetter('NumberSetter', NumberSetter as any);
registerSetter('StringSetter', { component: Input, props: { placeholder: '请输入' } });
registerSetter('ExpressionSetter', ExpressionSetter); registerSetter('ExpressionSetter', ExpressionSetter);
registerSetter('MixinSetter', MixinSetter); registerSetter('MixinSetter', MixinSetter);
registerSetter('BoolSetter', Switch); registerSetter('BoolSetter', Switch);
registerSetter('RadioGroupSetter', Radio.RadioGroup); registerSetter('RadioGroupSetter', {
component: Radio.Group,
defaultProps: {
shape: 'button'
}
});
registerSetter('SelectSetter', Select); registerSetter('SelectSetter', Select);
// suggest: 做成 StringSetter 的一个参数,
registerSetter('TextAreaSetter', Input.TextArea); registerSetter('TextAreaSetter', Input.TextArea);
registerSetter('DateSetter', DatePicker); registerSetter('DateSetter', DatePicker);
registerSetter('DateYearSetter', DatePicker.YearPicker); registerSetter('DateYearSetter', DatePicker.YearPicker);

View File

@ -34,7 +34,8 @@ export default class Mixin extends PureComponent {
}; };
static defaultProps = { static defaultProps = {
locale: 'zh-CN', locale: 'zh-CN',
messages: zhCN messages: zhCN,
types: ['StringSetter', 'ExpressionSetter', 'NumberSetter', 'BoolSetter', 'SelectSetter', 'RadioGroupSetter'],
}; };
constructor(props) { constructor(props) {
super(props); super(props);

View File

@ -61,7 +61,7 @@ export function propTypeToSetter(propType: PropType): SetterType {
value, value,
}; };
}); });
const componentName = dataSource.length > 4 ? 'SelectSetter' : 'RadioSetter'; const componentName = dataSource.length > 4 ? 'SelectSetter' : 'RadioGroupSetter';
return { return {
componentName, componentName,
props: { dataSource }, props: { dataSource },
@ -141,7 +141,8 @@ export function propTypeToSetter(propType: PropType): SetterType {
return { return {
componentName: 'MixinSetter', componentName: 'MixinSetter',
props: { props: {
setters: (propType as OneOfType).value.map(item => propTypeToSetter(item)), // TODO:
// setters: (propType as OneOfType).value.map(item => propTypeToSetter(item)),
}, },
isRequired, isRequired,
}; };
@ -290,11 +291,12 @@ registerMetadataTransducer(metadata => {
setter: { setter: {
componentName: 'MixinSetter', componentName: 'MixinSetter',
props: { props: {
// TODO:
setters: [ setters: [
{ {
componentName: 'StringSetter', componentName: 'StringSetter',
props: { props: {
// todo: // TODO: textarea mode
multiline: true, multiline: true,
}, },
initialValue: '', initialValue: '',
@ -463,6 +465,7 @@ registerMetadataTransducer(metadata => {
setter: { setter: {
componentName: 'MixinSetter', componentName: 'MixinSetter',
props: { props: {
// TODO:
setters: [ setters: [
{ {
componentName: 'JSONSetter', componentName: 'JSONSetter',