openyida 2026.9.2-beta.0 → 2026.9.2
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/README.md +4 -5
- package/bin/yida.js +1 -7
- package/lib/app/canvas-compile.js +7 -0
- package/lib/app/create-app.js +142 -9
- package/lib/app/create-form.js +6 -22
- package/lib/app/custom-theme.js +300 -0
- package/lib/app/display-page-readback.js +5 -63
- package/lib/app/get-schema.js +5 -158
- package/lib/app/publish.js +6 -138
- package/lib/app/services/canvas-page-schema-builder.js +226 -21
- package/lib/app/services/form-compiler.js +6 -18
- package/lib/app/services/native-page-schema-builder.js +5 -5
- package/lib/app/theme-presets.js +1 -1
- package/lib/app/update-app.js +225 -9
- package/lib/core/command-manifest.js +3 -13
- package/lib/core/locales/en.js +11 -22
- package/lib/core/locales/zh.js +11 -23
- package/lib/core/sample.js +4 -0
- package/lib/core/utils.js +0 -409
- package/lib/samples/openyida-scaffold/canvas-form-drawer.canvas.jsx +411 -0
- package/lib/samples/openyida-scaffold/form-fields.json +74 -0
- package/lib/samples/yida-canvas-table-form/table-form-batch-submit.canvas.jsx +16 -12
- package/lib/samples/yida-density/density-switch-page.js +1 -1
- package/lib/samples/yida-rechart/trend-combo.canvas.jsx +3 -3
- package/package.json +1 -1
- package/scripts/postinstall.js +76 -1
- package/yida-skills/SKILL.md +14 -12
- package/yida-skills/references/official-example-schema-patterns.md +2 -0
- package/yida-skills/references/task-retrospective.md +5 -5
- package/yida-skills/references/yida-api.md +10 -10
- package/yida-skills/skills/yida-app/SKILL.md +5 -3
- package/yida-skills/skills/yida-app/workflow/step-2-design.md +1 -3
- package/yida-skills/skills/yida-app/workflow/step-3-create-or-reuse-app.md +5 -4
- package/yida-skills/skills/yida-app/workflow/step-4-forms-processes.md +5 -6
- package/yida-skills/skills/yida-app/workflow/step-7-page-code.md +8 -3
- package/yida-skills/skills/yida-app/workflow/step-9-output-finish.md +3 -3
- package/yida-skills/skills/yida-canvas-custom-page/SKILL.md +10 -9
- package/yida-skills/skills/yida-canvas-custom-page/references/canvas-authoring-examples.md +1 -1
- package/yida-skills/skills/yida-canvas-custom-page/references/canvas-style-implementation-guide.md +28 -71
- package/yida-skills/skills/yida-canvas-custom-page/references/data-bridge-guide.md +7 -6
- package/yida-skills/skills/yida-canvas-custom-page/references/navigation-and-entry-guide.md +28 -13
- package/yida-skills/skills/yida-canvas-custom-page/references/page-generation-guide.md +8 -24
- package/yida-skills/skills/yida-canvas-data-binding/SKILL.md +6 -6
- package/yida-skills/skills/yida-canvas-table-form/SKILL.md +8 -5
- package/yida-skills/skills/yida-connector/examples/operations-search-formdata-v2.json +3 -3
- package/yida-skills/skills/yida-connector/examples/operations-search-formdata.json +2 -2
- package/yida-skills/skills/yida-create-app/SKILL.md +21 -12
- package/yida-skills/skills/yida-create-form-page/SKILL.md +8 -8
- package/yida-skills/skills/yida-create-form-page/references/form-field-properties.md +2 -3
- package/yida-skills/skills/yida-custom-page/SKILL.md +2 -4
- package/yida-skills/skills/yida-custom-page/references/coding-guide.md +6 -6
- package/yida-skills/skills/yida-dashboard/SKILL.md +1 -1
- package/yida-skills/skills/yida-dashboard/references/interaction-patterns.md +1 -1
- package/yida-skills/skills/yida-data-management/SKILL.md +1 -1
- package/yida-skills/skills/yida-data-management/references/data-format-guide.md +1 -1
- package/yida-skills/skills/yida-design/SKILL.md +5 -4
- package/yida-skills/skills/yida-design/references/page-quality-gates.md +3 -3
- package/yida-skills/skills/yida-design/references/style-design-selection.md +5 -5
- package/yida-skills/skills/yida-design/references/theme/app-custom-theme-template.css +672 -0
- package/yida-skills/skills/yida-design/references/theme/theme-token-presets.md +3 -3
- package/yida-skills/skills/yida-design/references/visual-decision-engine.md +1 -1
- package/yida-skills/skills/yida-design/sub_skill/page-design/SKILL.md +14 -14
- package/yida-skills/skills/yida-design/workflow/output-design.md +31 -44
- package/yida-skills/skills/yida-design/workflow/output-prd.md +9 -9
- package/yida-skills/skills/yida-design/workflow/step-2-theme-system.md +21 -21
- package/yida-skills/skills/yida-design/workflow/step-5-visual-states.md +1 -1
- package/yida-skills/skills/yida-design/workflow/step-6-handoff.md +3 -3
- package/yida-skills/skills/yida-form-detail/SKILL.md +26 -69
- package/yida-skills/skills/yida-publish-page/SKILL.md +4 -3
- package/yida-skills/skills-index.json +18 -15
- package/lib/app/form-detail-style.js +0 -441
- package/lib/app/form-theme-action.js +0 -439
- package/yida-skills/skills/yida-canvas-custom-page/references/theme-runtime-helpers.md +0 -177
- package/yida-skills/skills/yida-form-detail/references/form-detail-css.md +0 -194
- package/yida-skills/skills/yida-form-detail/references/injection-guide.md +0 -94
package/README.md
CHANGED
|
@@ -167,11 +167,13 @@ For a user-facing list of supported features and matching CLI commands, see [Ope
|
|
|
167
167
|
|
|
168
168
|
```bash
|
|
169
169
|
openyida create-app "CRM"
|
|
170
|
-
openyida create-app --name "CRM" --desc "Customer management" --theme
|
|
170
|
+
openyida create-app --name "CRM" --desc "Customer management" --theme-file ./app-theme.css --nav-theme light --logo-source appIcon --layout l_shape
|
|
171
171
|
openyida app-list --size 20
|
|
172
172
|
openyida corp-efficiency
|
|
173
173
|
openyida create-form create APP_XXX "Customer" .cache/openyida/forms/customer-fields.json
|
|
174
174
|
openyida create-form update APP_XXX FORM_XXX .cache/openyida/forms/customer-changes.json
|
|
175
|
+
openyida sample openyida-scaffold form-fields --output .cache/openyida/forms/customer-fields.json
|
|
176
|
+
openyida sample openyida-scaffold canvas-form-drawer --output project/pages/src/customer-entry.canvas.jsx --var APP_TYPE=APP_XXX --var FORM_UUID=FORM_XXX
|
|
175
177
|
openyida get-schema APP_XXX FORM_XXX
|
|
176
178
|
openyida get-schema APP_XXX FORM_XXX --compact --resolve-fields "Customer Name,Status"
|
|
177
179
|
openyida get-schema APP_XXX --all --output-dir .cache/schemas
|
|
@@ -388,7 +390,7 @@ Run `openyida --help` or `openyida <command> --help` for detailed usage.
|
|
|
388
390
|
| `openyida app-list [--size N]` | List my Yida apps |
|
|
389
391
|
| `openyida corp-efficiency [overview\|details\|detail\|groups\|notify] [options] [--open\|--no-open]` | Query enterprise efficiency overview and detail reports |
|
|
390
392
|
| `openyida create-app "<name>"\|--name <name> [options] [--locale zh_CN\|en_US\|ja_JP] [--open\|--no-open]` | Create a Yida app |
|
|
391
|
-
| `openyida update-app <appType> [--name "..."] [--
|
|
393
|
+
| `openyida update-app <appType> [--name "..."] [--theme-file <css>] [--nav-theme light\|dark\|white\|gray] [--logo-source appIcon\|customImage] [--layout side\|top\|l_shape] [--hide-app-nav\|--show-app-nav]` | Update app info |
|
|
392
394
|
| `openyida app-online <appType> [--to-ding-app-center] [--show-app-center]` | Enable a Yida app |
|
|
393
395
|
| `openyida app-offline <appType> [--to-ding-app-center] [--show-app-center]` | Disable a Yida app |
|
|
394
396
|
| `openyida nav-group <list\|create\|rename\|delete\|move\|order\|auto-order\|hide\|show> <appType> ...` | Manage app sidebar navigation groups |
|
|
@@ -422,9 +424,6 @@ Run `openyida --help` or `openyida <command> --help` for detailed usage.
|
|
|
422
424
|
| `openyida publish <src> <appType> <formUuid> [--health-check] [--force] [--canvas] [--auto-nav-order] [--open\|--no-open]` | Compile and publish custom page |
|
|
423
425
|
| `openyida update-form-config <appType> ...` | Update form configuration |
|
|
424
426
|
| `openyida get-form-config <appType> <formUuid> [--json]` | Query form configuration |
|
|
425
|
-
| `openyida form-detail-style apply <appType> <formUuid> [--css file\|--preset clean-card] [--json]` | Manage form detail page style |
|
|
426
|
-
| `openyida form-detail-style remove <appType> <formUuid> [--json]` | Manage form detail page style |
|
|
427
|
-
| `openyida form-detail-style check <appType> <formUuid> [--json]` | Manage form detail page style |
|
|
428
427
|
|
|
429
428
|
### Data & Permissions
|
|
430
429
|
|
package/bin/yida.js
CHANGED
|
@@ -882,14 +882,8 @@ async function main() {
|
|
|
882
882
|
break;
|
|
883
883
|
}
|
|
884
884
|
|
|
885
|
-
case 'form-detail-style': {
|
|
886
|
-
const { run: runFormDetailStyle } = require('../lib/app/form-detail-style');
|
|
887
|
-
await runFormDetailStyle(args);
|
|
888
|
-
break;
|
|
889
|
-
}
|
|
890
|
-
|
|
891
885
|
case 'update-app': {
|
|
892
|
-
if (args.length < 2) {
|
|
886
|
+
if (args.length < 2 && !hasHelpFlag(args)) {
|
|
893
887
|
throwCliUsage(t('cli.update_app_usage'), t('cli.update_app_example'));
|
|
894
888
|
}
|
|
895
889
|
const { run: runUpdateApp } = require('../lib/app/update-app');
|
|
@@ -139,6 +139,13 @@ const BARE_DEPENDENCY_GLOBALS = Object.freeze({
|
|
|
139
139
|
const CANVAS_RUNTIME_GLOBAL_IDENTIFIERS = new Set([
|
|
140
140
|
...Object.keys(globals.builtin),
|
|
141
141
|
...Object.keys(globals.browser),
|
|
142
|
+
// globals follows its package release cadence; keep modern standards that
|
|
143
|
+
// are already available in supported browsers explicit until that list catches up.
|
|
144
|
+
'URLPattern',
|
|
145
|
+
'navigation',
|
|
146
|
+
'cookieStore',
|
|
147
|
+
'scheduler',
|
|
148
|
+
'Temporal',
|
|
142
149
|
'iframeWindow',
|
|
143
150
|
'parentWindow',
|
|
144
151
|
]);
|
package/lib/app/create-app.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* create-app.js - 宜搭应用创建命令
|
|
3
3
|
*
|
|
4
4
|
* 用法:openyida create-app "<appName>" [description] [icon] [iconColor] [colour] [navTheme] [layoutDirection]
|
|
5
|
+
* openyida create-app --name "<appName>" --theme-file ./app-theme.css [--nav-theme light] [--logo-source appIcon] [--layout l_shape]
|
|
5
6
|
*/
|
|
6
7
|
|
|
7
8
|
'use strict';
|
|
@@ -20,13 +21,65 @@ const { parseOpenOption, withBrowserHandoff } = require('../core/browser-handoff
|
|
|
20
21
|
const { throwCommandError } = require('../core/command-errors');
|
|
21
22
|
const { assertPresetThemeKey } = require('./theme-presets');
|
|
22
23
|
const { resolveBuilderAiSource } = require('./builder-ai-source');
|
|
24
|
+
const { normalizeCssColorToHex, readThemeCssFile } = require('./custom-theme');
|
|
25
|
+
const {
|
|
26
|
+
applyCustomThemeUpdate,
|
|
27
|
+
assertLogoSource,
|
|
28
|
+
assertNavTheme,
|
|
29
|
+
normalizeLayoutDirection,
|
|
30
|
+
} = require('./update-app');
|
|
23
31
|
|
|
24
32
|
const DEFAULT_APP_OPTIONS = {
|
|
25
|
-
icon: 'xian-yingyong',
|
|
26
33
|
iconColor: '#0089FF',
|
|
27
34
|
colour: 'podBlue',
|
|
28
35
|
};
|
|
29
36
|
|
|
37
|
+
// 与 yida-next/src/components/IconSelect/Icon.js 保持一致。
|
|
38
|
+
const APP_ICON_NAMES = Object.freeze([
|
|
39
|
+
'xian-xinwen',
|
|
40
|
+
'xian-diqiu',
|
|
41
|
+
'xian-zhengfu',
|
|
42
|
+
'xian-qiche',
|
|
43
|
+
'xian-yingyong',
|
|
44
|
+
'xian-feiji',
|
|
45
|
+
'xian-xueshimao',
|
|
46
|
+
'xian-diannao',
|
|
47
|
+
'xian-qiye',
|
|
48
|
+
'xian-gongzuozheng',
|
|
49
|
+
'xian-danju',
|
|
50
|
+
'xian-gouwuche',
|
|
51
|
+
'xian-shichang',
|
|
52
|
+
'xian-xinyongka',
|
|
53
|
+
'xian-jingli',
|
|
54
|
+
'xian-huodong',
|
|
55
|
+
'xian-falv',
|
|
56
|
+
'xian-jiangbei',
|
|
57
|
+
'xian-baogao',
|
|
58
|
+
'xian-liucheng',
|
|
59
|
+
'huoche',
|
|
60
|
+
'chaxun',
|
|
61
|
+
'shenbao',
|
|
62
|
+
'daka',
|
|
63
|
+
]);
|
|
64
|
+
const DEFAULT_CREATE_LAYOUT_DIRECTION = 'l_shape';
|
|
65
|
+
|
|
66
|
+
function selectRandomAppIcon(random = Math.random) {
|
|
67
|
+
const index = Math.min(APP_ICON_NAMES.length - 1, Math.floor(random() * APP_ICON_NAMES.length));
|
|
68
|
+
return APP_ICON_NAMES[Math.max(0, index)];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function applyThemeFileCreateDefaults(params, themeFileInfo) {
|
|
72
|
+
if (!params || !params.themeFile || !themeFileInfo) {return params;}
|
|
73
|
+
const iconColor = normalizeCssColorToHex(themeFileInfo.themeColor);
|
|
74
|
+
if (!iconColor) {
|
|
75
|
+
throw new Error(`--color-brand1-6 无法转换为应用图标色: ${themeFileInfo.themeColor}`);
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
...params,
|
|
79
|
+
iconColor,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
30
83
|
const INDUSTRY_APP_DEFAULTS = [
|
|
31
84
|
{
|
|
32
85
|
name: 'legal',
|
|
@@ -147,7 +200,7 @@ function readOptionValue(args, index, optionName) {
|
|
|
147
200
|
return value;
|
|
148
201
|
}
|
|
149
202
|
|
|
150
|
-
function parseCreateAppArgs(args) {
|
|
203
|
+
function parseCreateAppArgs(args, random = Math.random) {
|
|
151
204
|
const params = {
|
|
152
205
|
appName: null,
|
|
153
206
|
description: null,
|
|
@@ -155,7 +208,9 @@ function parseCreateAppArgs(args) {
|
|
|
155
208
|
iconColor: null,
|
|
156
209
|
colour: null,
|
|
157
210
|
navTheme: null,
|
|
211
|
+
logoSource: null,
|
|
158
212
|
layoutDirection: null,
|
|
213
|
+
themeFile: null,
|
|
159
214
|
locale: null,
|
|
160
215
|
};
|
|
161
216
|
const positional = [];
|
|
@@ -194,6 +249,16 @@ function parseCreateAppArgs(args) {
|
|
|
194
249
|
params.navTheme = readOptionValue(args, index, arg);
|
|
195
250
|
index++;
|
|
196
251
|
break;
|
|
252
|
+
case '--logo-source':
|
|
253
|
+
case '--logoSource':
|
|
254
|
+
params.logoSource = readOptionValue(args, index, arg);
|
|
255
|
+
index++;
|
|
256
|
+
break;
|
|
257
|
+
case '--theme-file':
|
|
258
|
+
case '--custom-theme-file':
|
|
259
|
+
params.themeFile = readOptionValue(args, index, arg);
|
|
260
|
+
index++;
|
|
261
|
+
break;
|
|
197
262
|
case '--layout':
|
|
198
263
|
case '--layout-direction':
|
|
199
264
|
case '--layoutDirection':
|
|
@@ -224,13 +289,33 @@ function parseCreateAppArgs(args) {
|
|
|
224
289
|
params.appName = params.appName || positional[0] || null;
|
|
225
290
|
params.description = params.description || positional[1] || params.appName;
|
|
226
291
|
|
|
292
|
+
const explicitIcon = params.icon || positional[2] || null;
|
|
293
|
+
params.iconWasExplicit = !!explicitIcon;
|
|
227
294
|
const inferredDefaults = inferAppDefaults(params.appName, params.description);
|
|
228
|
-
params.icon =
|
|
295
|
+
params.icon = explicitIcon || (
|
|
296
|
+
inferredDefaults.industry === 'default'
|
|
297
|
+
? selectRandomAppIcon(random)
|
|
298
|
+
: inferredDefaults.icon
|
|
299
|
+
);
|
|
229
300
|
params.iconColor = params.iconColor || positional[3] || inferredDefaults.iconColor;
|
|
230
301
|
params.colour = params.colour || positional[4] || inferredDefaults.colour;
|
|
231
302
|
assertPresetThemeKey(params.colour);
|
|
232
303
|
params.navTheme = params.navTheme || positional[5] || null;
|
|
233
|
-
params.layoutDirection =
|
|
304
|
+
params.layoutDirection = normalizeLayoutDirection(
|
|
305
|
+
params.layoutDirection || positional[6] || DEFAULT_CREATE_LAYOUT_DIRECTION
|
|
306
|
+
);
|
|
307
|
+
assertNavTheme(params.navTheme);
|
|
308
|
+
assertLogoSource(params.logoSource);
|
|
309
|
+
if (params.logoSource && !params.themeFile) {
|
|
310
|
+
throw new Error('--logo-source must be used with --theme-file so the navigation theme is saved atomically');
|
|
311
|
+
}
|
|
312
|
+
if (params.themeFile) {
|
|
313
|
+
params.navTheme = params.navTheme || 'light';
|
|
314
|
+
params.logoSource = params.logoSource || 'appIcon';
|
|
315
|
+
if (params.logoSource !== 'appIcon') {
|
|
316
|
+
throw new Error('create-app only supports --logo-source appIcon because a new app has no homepageLogo image yet');
|
|
317
|
+
}
|
|
318
|
+
}
|
|
234
319
|
params.industry = inferredDefaults.industry;
|
|
235
320
|
|
|
236
321
|
return params;
|
|
@@ -269,10 +354,10 @@ function buildCreateAppPayload(params, auth, contentLocale, openExclusive, openP
|
|
|
269
354
|
openPhysicColumn,
|
|
270
355
|
openIsolationDatabase: 'n',
|
|
271
356
|
openExclusiveUnit: 'n',
|
|
272
|
-
createWithModernTheme: 'y',
|
|
273
357
|
group: 'ALL',
|
|
274
358
|
fromBuilderAi: 'y',
|
|
275
359
|
builderAiSource: resolveBuilderAiSource(),
|
|
360
|
+
createWithModernTheme: 'y',
|
|
276
361
|
};
|
|
277
362
|
if (navTheme) {
|
|
278
363
|
payload.navTheme = navTheme;
|
|
@@ -305,7 +390,13 @@ async function run(args) {
|
|
|
305
390
|
chalkError(t('create_app.usage'), { hint: t('create_app.example') });
|
|
306
391
|
}
|
|
307
392
|
|
|
308
|
-
|
|
393
|
+
// 在远端创建应用前先完成本地主题校验,避免 CSS 缺失或 token 非法时留下半成品应用。
|
|
394
|
+
if (params.themeFile) {
|
|
395
|
+
const themeFileInfo = readThemeCssFile(params.themeFile);
|
|
396
|
+
Object.assign(params, applyThemeFileCreateDefaults(params, themeFileInfo));
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
const { appName, description, icon, iconColor, colour, navTheme, logoSource, layoutDirection, themeFile } = params;
|
|
309
400
|
|
|
310
401
|
const { c, banner, step, label, success: chalkSuccess, result: chalkResult } = require('../core/chalk');
|
|
311
402
|
|
|
@@ -313,7 +404,7 @@ async function run(args) {
|
|
|
313
404
|
label('Name', appName);
|
|
314
405
|
label('Desc', description);
|
|
315
406
|
label('Icon', `${icon} ${c.dim}(${iconColor})${c.reset}`);
|
|
316
|
-
label('Theme', `${colour} / ${navTheme || 'default'} / ${layoutDirection || 'default'}`);
|
|
407
|
+
label('Theme', `${themeFile || colour} / ${navTheme || 'default'} / ${logoSource || 'default'} / ${layoutDirection || 'default'}`);
|
|
317
408
|
|
|
318
409
|
// Step 1: 读取登录态
|
|
319
410
|
step(1, t('common.step_login', 1));
|
|
@@ -356,6 +447,29 @@ async function run(args) {
|
|
|
356
447
|
const appUrl = `${authRef.baseUrl}/${appType}/workbench`;
|
|
357
448
|
const corpId = authRef.corpId || (authRef.authData && authRef.authData.corp_id) || '';
|
|
358
449
|
|
|
450
|
+
if (themeFile) {
|
|
451
|
+
step(3, t('update_app.step_update'));
|
|
452
|
+
const themeResponse = await applyCustomThemeUpdate(appType, {
|
|
453
|
+
themeFile,
|
|
454
|
+
navTheme,
|
|
455
|
+
logoSource,
|
|
456
|
+
layoutDirection,
|
|
457
|
+
}, authRef);
|
|
458
|
+
if (!themeResponse || !themeResponse.success) {
|
|
459
|
+
const errorMsg = themeResponse
|
|
460
|
+
? themeResponse.errorMsg || t('common.unknown_error')
|
|
461
|
+
: t('common.request_failed');
|
|
462
|
+
console.log(JSON.stringify({
|
|
463
|
+
success: false,
|
|
464
|
+
appCreated: true,
|
|
465
|
+
appType,
|
|
466
|
+
themeApplied: false,
|
|
467
|
+
error: errorMsg,
|
|
468
|
+
}));
|
|
469
|
+
throwCommandError(t('create_app.failed', errorMsg));
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
|
|
359
473
|
chalkResult(true, t('create_app.success'), [
|
|
360
474
|
['appType', appType],
|
|
361
475
|
['Corp ID', corpId || t('common.unknown_error')],
|
|
@@ -366,7 +480,17 @@ async function run(args) {
|
|
|
366
480
|
if (prdFile) {updatePrdCorpId(prdFile, corpId, appType, authRef.baseUrl);}
|
|
367
481
|
|
|
368
482
|
console.log(JSON.stringify(withBrowserHandoff(
|
|
369
|
-
{
|
|
483
|
+
{
|
|
484
|
+
success: true,
|
|
485
|
+
appType,
|
|
486
|
+
appName,
|
|
487
|
+
corpId,
|
|
488
|
+
url: appUrl,
|
|
489
|
+
themeFile: themeFile || undefined,
|
|
490
|
+
navTheme: themeFile ? navTheme : undefined,
|
|
491
|
+
logoSource: themeFile ? logoSource : undefined,
|
|
492
|
+
layoutDirection,
|
|
493
|
+
},
|
|
370
494
|
appUrl,
|
|
371
495
|
{ stage: 'create_app_success', title: appName },
|
|
372
496
|
openOption.mode
|
|
@@ -379,4 +503,13 @@ async function run(args) {
|
|
|
379
503
|
}
|
|
380
504
|
}
|
|
381
505
|
|
|
382
|
-
module.exports = {
|
|
506
|
+
module.exports = {
|
|
507
|
+
APP_ICON_NAMES,
|
|
508
|
+
DEFAULT_CREATE_LAYOUT_DIRECTION,
|
|
509
|
+
run,
|
|
510
|
+
parseCreateAppArgs,
|
|
511
|
+
inferAppDefaults,
|
|
512
|
+
selectRandomAppIcon,
|
|
513
|
+
applyThemeFileCreateDefaults,
|
|
514
|
+
buildCreateAppPayload,
|
|
515
|
+
};
|
package/lib/app/create-form.js
CHANGED
|
@@ -83,7 +83,6 @@ const { createDefinitionReaders } = require('./create-form/definition-reader');
|
|
|
83
83
|
const { dispatchCreateFormCommand } = require('./create-form/commands');
|
|
84
84
|
const { buildApiPath } = require('./create-form/api-path');
|
|
85
85
|
const { deepMerge, splitJsonPointer } = require('./create-form/schema-patch');
|
|
86
|
-
const { ensureYidaGlobalThemeAction } = require('./form-theme-action');
|
|
87
86
|
const {
|
|
88
87
|
actionRefName,
|
|
89
88
|
buildDesignerEventBinding,
|
|
@@ -94,10 +93,6 @@ const {
|
|
|
94
93
|
const { FORM_RULES_BLOCK_END, FORM_RULES_BLOCK_START } = require('./create-form/rule-builder');
|
|
95
94
|
const { SMART_VALIDATION_BLOCK_END, SMART_VALIDATION_BLOCK_START } = require('./create-form/validation-builder');
|
|
96
95
|
const { createFieldNormalizers } = require('./create-form/field-normalizers');
|
|
97
|
-
const {
|
|
98
|
-
readCss: readFormDetailCss,
|
|
99
|
-
upsertFormDetailCss,
|
|
100
|
-
} = require('./form-detail-style');
|
|
101
96
|
const {
|
|
102
97
|
validateFormFieldDefinitions: collectFormFieldValidationDiagnostics,
|
|
103
98
|
} = require('./form-field-validator');
|
|
@@ -110,7 +105,6 @@ function parseOpenOption(inputArgs) {
|
|
|
110
105
|
// ── 选项类字段类型 ───────────────────────────────────
|
|
111
106
|
const OPTION_FIELD_TYPES = ['RadioField', 'SelectField', 'CheckboxField', 'MultiSelectField'];
|
|
112
107
|
const FIELD_RESOLUTION_CANDIDATE_LIMIT = 8;
|
|
113
|
-
const DEFAULT_FORM_DETAIL_STYLE_PRESET = 'clean-card';
|
|
114
108
|
|
|
115
109
|
function throwCreateFormError(message, code, details) {
|
|
116
110
|
throw createCreateFormError(message, code, details);
|
|
@@ -1323,16 +1317,11 @@ function buildComponentsMap(componentNames) {
|
|
|
1323
1317
|
return componentNames.map(function (name) {
|
|
1324
1318
|
return {
|
|
1325
1319
|
package: '@ali/vc-deep-yida',
|
|
1326
|
-
version: '1.5.169',
|
|
1327
1320
|
componentName: name,
|
|
1328
1321
|
};
|
|
1329
1322
|
});
|
|
1330
1323
|
}
|
|
1331
1324
|
|
|
1332
|
-
function applyDefaultFormDetailStyle(schema) {
|
|
1333
|
-
return upsertFormDetailCss(schema, readFormDetailCss({ preset: DEFAULT_FORM_DETAIL_STYLE_PRESET }));
|
|
1334
|
-
}
|
|
1335
|
-
|
|
1336
1325
|
function buildComponentAliasItems(components) {
|
|
1337
1326
|
const items = [];
|
|
1338
1327
|
const usedAliases = Object.create(null);
|
|
@@ -1888,7 +1877,6 @@ function buildFormSchema(formTitle, fields, formUuid, corpId, appType, layout, t
|
|
|
1888
1877
|
connectComponent: [],
|
|
1889
1878
|
},
|
|
1890
1879
|
};
|
|
1891
|
-
applyDefaultFormDetailStyle(schema);
|
|
1892
1880
|
return schema;
|
|
1893
1881
|
}
|
|
1894
1882
|
|
|
@@ -2007,12 +1995,12 @@ function buildEmptyFormSchema() {
|
|
|
2007
1995
|
},
|
|
2008
1996
|
],
|
|
2009
1997
|
componentsMap: [
|
|
2010
|
-
{ package: '@ali/vc-deep-yida',
|
|
2011
|
-
{ package: '@ali/vc-deep-yida',
|
|
2012
|
-
{ package: '@ali/vc-deep-yida',
|
|
2013
|
-
{ package: '@ali/vc-deep-yida',
|
|
2014
|
-
{ package: '@ali/vc-deep-yida',
|
|
2015
|
-
{ package: '@ali/vc-deep-yida',
|
|
1998
|
+
{ package: '@ali/vc-deep-yida', componentName: 'RootHeader' },
|
|
1999
|
+
{ package: '@ali/vc-deep-yida', componentName: 'FormContainer' },
|
|
2000
|
+
{ package: '@ali/vc-deep-yida', componentName: 'RootContent' },
|
|
2001
|
+
{ package: '@ali/vc-deep-yida', componentName: 'FooterYida' },
|
|
2002
|
+
{ package: '@ali/vc-deep-yida', componentName: 'RootFooter' },
|
|
2003
|
+
{ package: '@ali/vc-deep-yida', componentName: 'Page' },
|
|
2016
2004
|
],
|
|
2017
2005
|
},
|
|
2018
2006
|
],
|
|
@@ -4468,7 +4456,6 @@ function ensureComponentsMap(schema, componentName) {
|
|
|
4468
4456
|
if (existingNames.indexOf(componentName) === -1) {
|
|
4469
4457
|
pageSchema.componentsMap.push({
|
|
4470
4458
|
package: '@ali/vc-deep-yida',
|
|
4471
|
-
version: '1.5.169',
|
|
4472
4459
|
componentName: componentName,
|
|
4473
4460
|
});
|
|
4474
4461
|
}
|
|
@@ -4797,7 +4784,6 @@ async function saveFormSchema(authRef, appType, formUuid, schema, version, stepO
|
|
|
4797
4784
|
if (fixedRefs > 0) {
|
|
4798
4785
|
info(t('create_form.formula_prefix_fixed', fixedRefs));
|
|
4799
4786
|
}
|
|
4800
|
-
applyDefaultFormDetailStyle(schema);
|
|
4801
4787
|
assertNoEmojiInValue(schema, {
|
|
4802
4788
|
artifact: 'Yida form schema ' + formUuid,
|
|
4803
4789
|
code: 'OPENYIDA_FORM_SCHEMA_EMOJI_FORBIDDEN',
|
|
@@ -6072,8 +6058,6 @@ module.exports = {
|
|
|
6072
6058
|
normalizeFormDefinitionType,
|
|
6073
6059
|
validateFormFieldDefinitions,
|
|
6074
6060
|
collectFormFieldValidationDiagnostics,
|
|
6075
|
-
ensureYidaGlobalThemeAction,
|
|
6076
|
-
applyDefaultFormDetailStyle,
|
|
6077
6061
|
applyChangesToSchema,
|
|
6078
6062
|
applyFormRules,
|
|
6079
6063
|
applySchemaPatchOperations,
|