@steedos/service-plugin-amis 2.3.0-beta.12 → 2.3.0-beta.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/main/default/client/amis.render.client.js +47 -9
- package/main/default/pages/apps_form.page.amis.json +526 -0
- package/main/default/pages/apps_form.page.yml +14 -0
- package/main/default/pages/generate_object_tabs.page.amis.json +102 -0
- package/main/default/pages/generate_object_tabs.page.yml +7 -0
- package/main/default/pages/object_layouts.page.amis.json +695 -705
- package/main/default/services/metadata/objects.service.js +137 -0
- package/package.json +2 -2
- package/public/amis/amis.css +1 -1
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
|
|
44
44
|
// 加载Amis SDK: 如果直接放到body中会导致meteor 编译后的 cordova.js 加载报错
|
|
45
45
|
let amisSDKScript = document.createElement("script");
|
|
46
|
-
amisSDKScript.setAttribute("src", Steedos.absoluteUrl('/unpkg.com
|
|
46
|
+
amisSDKScript.setAttribute("src", Steedos.absoluteUrl('/unpkg.com/amis/sdk/sdk.js'));
|
|
47
47
|
document.getElementsByTagName("head")[0].appendChild(amisSDKScript);
|
|
48
48
|
} catch (error) {
|
|
49
49
|
console.error(error)
|
|
@@ -63,12 +63,10 @@
|
|
|
63
63
|
|
|
64
64
|
// 此处不能使用import, client js 编译时会将import 转为require, 导致加载失败
|
|
65
65
|
// import('/unpkg.com/@steedos-ui/amis/dist/amis-sdk.umd.min.js').then(() => {
|
|
66
|
-
|
|
67
66
|
Promise.all([
|
|
68
67
|
waitForThing(window, 'assetsLoaded'),
|
|
69
|
-
waitForThing(window, '
|
|
68
|
+
waitForThing(window, 'amis'),
|
|
70
69
|
]).then(()=>{
|
|
71
|
-
|
|
72
70
|
const AmisRenderers = [];
|
|
73
71
|
|
|
74
72
|
const amisComps = lodash.filter(Builder.registry['meta-components'], function(item){ return item.componentName && item.amis?.render});
|
|
@@ -77,14 +75,33 @@
|
|
|
77
75
|
const Component = Builder.components.find(item => item.name === comp.componentName);
|
|
78
76
|
if (Component && !AmisRenderers.includes(comp.amis?.render.type)){
|
|
79
77
|
try {
|
|
78
|
+
let AmisWrapper = Component.class
|
|
80
79
|
AmisRenderers.push(comp.amis?.render.type);
|
|
81
|
-
|
|
80
|
+
if(comp.componentType === 'amisSchema'){
|
|
81
|
+
let amisReact = amisRequire('react');
|
|
82
|
+
AmisWrapper = function(props){
|
|
83
|
+
const { body, render } = props
|
|
84
|
+
const [schema, setSchema] = amisReact.useState(null);
|
|
85
|
+
amisReact.useEffect(()=>{
|
|
86
|
+
const result = Component.class(props);
|
|
87
|
+
if(result.then && typeof result.then === 'function'){
|
|
88
|
+
result.then((data)=>{
|
|
89
|
+
setSchema(data);
|
|
90
|
+
})
|
|
91
|
+
}else{
|
|
92
|
+
setSchema(result)
|
|
93
|
+
}
|
|
94
|
+
}, [])
|
|
95
|
+
return amisReact.createElement(amisReact.Fragment, null, amisReact.createElement(amisReact.Fragment, null, schema && render ? render('body', schema) : ''), amisReact.createElement(amisReact.Fragment, null, render ? render('body', body) : ''));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
amisRequire("amis").Renderer(
|
|
82
99
|
{
|
|
83
100
|
type: comp.amis?.render.type,
|
|
84
101
|
weight: comp.amis?.render.weight,
|
|
85
102
|
autoVar: true,
|
|
86
103
|
}
|
|
87
|
-
)(
|
|
104
|
+
)(AmisWrapper);
|
|
88
105
|
} catch(e){console.error(e)}
|
|
89
106
|
}
|
|
90
107
|
});
|
|
@@ -178,7 +195,29 @@
|
|
|
178
195
|
}
|
|
179
196
|
}, env);
|
|
180
197
|
}
|
|
181
|
-
|
|
198
|
+
schema.scopeRef = (ref) => {
|
|
199
|
+
try {
|
|
200
|
+
if(!window.amisScopes){
|
|
201
|
+
window.amisScopes = {};
|
|
202
|
+
}
|
|
203
|
+
if(name){
|
|
204
|
+
window.amisScopes[name] = ref;
|
|
205
|
+
}
|
|
206
|
+
} catch (error) {
|
|
207
|
+
console.error('error', error)
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
return scoped = ref
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
React.useEffect(()=>{
|
|
214
|
+
amisRequire('amis/embed').embed(`.steedos-amis-render-scope-${name}`,schema, {data, name, locale: getAmisLng()}, Object.assign({}, AmisEnv, env))
|
|
215
|
+
}, [])
|
|
216
|
+
return React.createElement("div", {
|
|
217
|
+
className: "amis-scope"
|
|
218
|
+
}, React.createElement("div", {
|
|
219
|
+
className: `steedos-amis-render-scope-${name}`
|
|
220
|
+
}));
|
|
182
221
|
};
|
|
183
222
|
|
|
184
223
|
const initMonaco = ()=>{
|
|
@@ -199,14 +238,13 @@
|
|
|
199
238
|
return Builder.initMonaco()
|
|
200
239
|
}
|
|
201
240
|
}
|
|
202
|
-
|
|
203
241
|
//Amis SDK 中已清理了monaco, 所以这里需要提前注册,否则会导致amis code类型报错
|
|
204
242
|
initMonaco().catch((err)=>{
|
|
205
243
|
console.error(`Builder.initMonaco error: ${err}`);
|
|
206
244
|
}).finally(()=>{
|
|
207
245
|
const language = getAmisLng()
|
|
208
246
|
axios.get(`/translations/amis/${language}.json`).then((res)=>{
|
|
209
|
-
|
|
247
|
+
amisRequire("amis").registerLocale(`${language}`, res.data)
|
|
210
248
|
Builder.registerComponent(AmisRender, {
|
|
211
249
|
name: 'Amis',
|
|
212
250
|
inputs: [
|