提交 9cc591f0 编写于 作者: F F-loat

fix(generator): baseSettings for array

上级 0773790e
...@@ -32,6 +32,17 @@ const Demo = () => { ...@@ -32,6 +32,17 @@ const Demo = () => {
api: { title: 'api', type: 'string' }, api: { title: 'api', type: 'string' },
}, },
}, },
{
text: '姓名',
name: 'name',
schema: {
title: '输入框',
type: 'string',
},
setting: {
maxLength: { title: '最长字数', type: 'number' },
},
},
{ {
text: 'object', text: 'object',
name: 'object', name: 'object',
...@@ -43,15 +54,17 @@ const Demo = () => { ...@@ -43,15 +54,17 @@ const Demo = () => {
setting: {}, setting: {},
}, },
{ {
text: '姓名', text: 'array',
name: 'name', name: 'array',
schema: { schema: {
title: '输入框', title: '数组',
type: 'string', type: 'array',
}, items: {
setting: { type: 'object',
maxLength: { title: '最长字数', type: 'number' }, properties: {},
},
}, },
setting: {},
}, },
], ],
}, },
......
...@@ -39,14 +39,28 @@ export default function ItemSettings() { ...@@ -39,14 +39,28 @@ export default function ItemSettings() {
const getWidgetList = (settings, commonSettings) => { const getWidgetList = (settings, commonSettings) => {
return settings.reduce((widgetList, setting) => { return settings.reduce((widgetList, setting) => {
if (!Array.isArray(setting.widgets)) return widgetList; if (!Array.isArray(setting.widgets)) return widgetList;
const basicWidgets = setting.widgets.map(item => ({ const basicWidgets = setting.widgets.map(item => {
...item, const baseItemSettings = {};
widget: if (item.schema.type === 'array') {
item.widget || baseItemSettings.items = {
item.schema.widget || type: 'object',
getWidgetName(item.schema, defaultMapping), hidden: '{{true}}',
setting: { ...commonSettings, ...item.setting }, };
})); }
return {
...item,
widget:
item.widget ||
item.schema.widget ||
getWidgetName(item.schema, defaultMapping),
setting: {
...baseCommonSettings,
...commonSettings,
...baseItemSettings,
...item.setting,
},
};
});
return [...widgetList, ...basicWidgets]; return [...widgetList, ...basicWidgets];
}, []); }, []);
}; };
...@@ -82,9 +96,7 @@ export default function ItemSettings() { ...@@ -82,9 +96,7 @@ export default function ItemSettings() {
const _commonSettings = isObject(commonSettings) const _commonSettings = isObject(commonSettings)
? commonSettings ? commonSettings
: defaultCommonSettings; : defaultCommonSettings;
// 补全基础属性 const widgetList = getWidgetList(_settings, _commonSettings);
const _fixedCommonSettings = { ...baseCommonSettings, ..._commonSettings };
const widgetList = getWidgetList(_settings, _fixedCommonSettings);
const widgetName = getWidgetName(item.schema, defaultMapping); const widgetName = getWidgetName(item.schema, defaultMapping);
const element = widgetList.find(e => e.widget === widgetName) || {}; // 有可能会没有找到 const element = widgetList.find(e => e.widget === widgetName) || {}; // 有可能会没有找到
const properties = { ...element.setting }; const properties = { ...element.setting };
......
...@@ -445,7 +445,7 @@ export const advancedElements = [ ...@@ -445,7 +445,7 @@ export const advancedElements = [
export const layouts = [ export const layouts = [
{ {
text: 'object', text: '对象',
name: 'object', name: 'object',
schema: { schema: {
title: '对象', title: '对象',
......
...@@ -228,6 +228,12 @@ export function idToSchema(flatten, id = '#', final = false) { ...@@ -228,6 +228,12 @@ export function idToSchema(flatten, id = '#', final = false) {
if (final) { if (final) {
schema.$id && delete schema.$id; schema.$id && delete schema.$id;
} }
if (schema.type === 'array') {
if (!schema.items) schema.items = {}
if (!schema.items.type) {
schema.items.type = 'object'
}
}
if (item.children.length > 0) { if (item.children.length > 0) {
item.children.forEach(child => { item.children.forEach(child => {
let childId = child; let childId = child;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册