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

fix(generator): baseSettings for array

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