openxiangda 1.0.34 → 1.0.36
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 +18 -0
- package/lib/cli.js +410 -1
- package/lib/workspace-init.js +1 -0
- package/openxiangda-skills/SKILL.md +5 -3
- package/openxiangda-skills/references/best-practices.md +11 -6
- package/openxiangda-skills/references/component-guide.md +10 -11
- package/openxiangda-skills/references/connector-resources.md +3 -0
- package/openxiangda-skills/references/data-views.md +217 -0
- package/openxiangda-skills/references/forms/component-registry.md +4 -3
- package/openxiangda-skills/references/forms/form-schema.md +31 -2
- package/openxiangda-skills/references/pages/page-sdk.md +43 -0
- package/openxiangda-skills/references/style-system.md +14 -18
- package/openxiangda-skills/references/troubleshooting.md +13 -13
- package/openxiangda-skills/references/workspace-state.md +9 -0
- package/openxiangda-skills/skills/openxiangda-form/SKILL.md +3 -3
- package/openxiangda-skills/skills/openxiangda-page/SKILL.md +2 -2
- package/openxiangda-skills/skills/openxiangda-permission-settings/SKILL.md +1 -1
- package/package.json +1 -1
- package/packages/sdk/dist/components/index.cjs +944 -765
- package/packages/sdk/dist/components/index.cjs.map +1 -1
- package/packages/sdk/dist/components/index.d.mts +18 -2
- package/packages/sdk/dist/components/index.d.ts +18 -2
- package/packages/sdk/dist/components/index.mjs +938 -761
- package/packages/sdk/dist/components/index.mjs.map +1 -1
- package/packages/sdk/dist/runtime/index.cjs +114 -30
- package/packages/sdk/dist/runtime/index.cjs.map +1 -1
- package/packages/sdk/dist/runtime/index.d.mts +18 -1
- package/packages/sdk/dist/runtime/index.d.ts +18 -1
- package/packages/sdk/dist/runtime/index.mjs +114 -30
- package/packages/sdk/dist/runtime/index.mjs.map +1 -1
- package/packages/sdk/dist/styles/antd-theme.cjs +11 -3
- package/packages/sdk/dist/styles/antd-theme.cjs.map +1 -1
- package/packages/sdk/dist/styles/antd-theme.d.mts +2 -1
- package/packages/sdk/dist/styles/antd-theme.d.ts +2 -1
- package/packages/sdk/dist/styles/antd-theme.mjs +11 -3
- package/packages/sdk/dist/styles/antd-theme.mjs.map +1 -1
- package/packages/sdk/dist/styles/tailwind-preset.cjs +0 -1
- package/packages/sdk/dist/styles/tailwind-preset.cjs.map +1 -1
- package/packages/sdk/dist/styles/tailwind-preset.d.mts +0 -1
- package/packages/sdk/dist/styles/tailwind-preset.d.ts +0 -1
- package/packages/sdk/dist/styles/tailwind-preset.mjs +0 -1
- package/packages/sdk/dist/styles/tailwind-preset.mjs.map +1 -1
- package/packages/sdk/dist/styles/tokens.css +1 -0
- package/packages/sdk/src/build-source/scripts/build-forms.mjs +135 -50
- package/packages/sdk/src/build-source/scripts/build-pages.mjs +37 -10
- package/packages/sdk/src/build-source/scripts/register.mjs +2 -0
- package/packages/sdk/src/build-source/scripts/utils/form-api.mjs +1 -0
- package/packages/sdk/src/build-source/scripts/utils/load-config.mjs +3 -2
- package/packages/sdk/src/build-source/scripts/utils/register-payload.test.ts +2 -1
- package/packages/sdk/src/build-source/scripts/utils/tailwind-config.mjs +9 -7
- package/packages/sdk/src/build-source/scripts/utils/tailwind-config.test.ts +6 -4
- package/packages/sdk/src/build-source/src/cli.mjs +17 -0
- package/templates/sy-lowcode-app-workspace/app-workspace.config.ts +3 -3
- package/templates/sy-lowcode-app-workspace/examples/best-practices/decision-guide.md +4 -3
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/domain/role-governance/permissions.test.ts +1 -1
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/app-role/schema.ts +36 -18
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/service-ticket/schema.ts +36 -18
- package/templates/sy-lowcode-app-workspace/postcss.config.cjs +0 -15
- package/templates/sy-lowcode-app-workspace/src/main.tsx +1 -12
- package/templates/sy-lowcode-app-workspace/src/shared/form-schema.ts +0 -1
|
@@ -13,7 +13,7 @@ describe("role-governance permission helpers", () => {
|
|
|
13
13
|
assert.equal(buildRoleCode({ roleCode: "class advisor" }), "class_advisor");
|
|
14
14
|
});
|
|
15
15
|
|
|
16
|
-
it("derives hidden scope keys from maintainable
|
|
16
|
+
it("derives hidden scope keys from maintainable select values", () => {
|
|
17
17
|
assert.deepEqual(
|
|
18
18
|
deriveRoleScopeKeys({
|
|
19
19
|
collegeScope: { label: "理学院", value: "college_science" },
|
package/templates/sy-lowcode-app-workspace/examples/best-practices/src/forms/app-role/schema.ts
CHANGED
|
@@ -30,32 +30,50 @@ export default createFormSchema({
|
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
fieldId: "collegeScope",
|
|
33
|
-
componentName: "
|
|
33
|
+
componentName: "SelectField",
|
|
34
34
|
label: "适用学院",
|
|
35
35
|
placeholder: "请选择适用学院",
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
36
|
+
showSearch: true,
|
|
37
|
+
allowClear: true,
|
|
38
|
+
options: [],
|
|
39
|
+
valueSync: [{ targetFieldId: "collegeScopeKey", valuePath: "value" }],
|
|
40
|
+
optionSource: {
|
|
41
|
+
type: "linkedForm",
|
|
42
|
+
linkedForm: {
|
|
43
|
+
formUuid: "FORM_COLLEGE_PROFILE",
|
|
44
|
+
fieldId: "collegeName",
|
|
45
|
+
labelFieldId: "collegeName",
|
|
46
|
+
valueFieldId: "collegeCode",
|
|
47
|
+
searchFieldId: "collegeName",
|
|
48
|
+
sortField: "collegeName",
|
|
49
|
+
pageSize: 20,
|
|
50
|
+
remoteSearch: true,
|
|
51
|
+
deduplicate: true,
|
|
52
|
+
},
|
|
44
53
|
},
|
|
45
54
|
},
|
|
46
55
|
{
|
|
47
56
|
fieldId: "classScope",
|
|
48
|
-
componentName: "
|
|
57
|
+
componentName: "SelectField",
|
|
49
58
|
label: "适用班级",
|
|
50
59
|
placeholder: "请选择适用班级",
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
60
|
+
showSearch: true,
|
|
61
|
+
allowClear: true,
|
|
62
|
+
options: [],
|
|
63
|
+
valueSync: [{ targetFieldId: "classScopeKey", valuePath: "value" }],
|
|
64
|
+
optionSource: {
|
|
65
|
+
type: "linkedForm",
|
|
66
|
+
linkedForm: {
|
|
67
|
+
formUuid: "FORM_CLASS_PROFILE",
|
|
68
|
+
fieldId: "className",
|
|
69
|
+
labelFieldId: "className",
|
|
70
|
+
valueFieldId: "classCode",
|
|
71
|
+
searchFieldId: "className",
|
|
72
|
+
sortField: "className",
|
|
73
|
+
pageSize: 20,
|
|
74
|
+
remoteSearch: true,
|
|
75
|
+
deduplicate: true,
|
|
76
|
+
},
|
|
59
77
|
},
|
|
60
78
|
},
|
|
61
79
|
{
|
|
@@ -52,32 +52,50 @@ export default createFormSchema({
|
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
54
|
fieldId: "college",
|
|
55
|
-
componentName: "
|
|
55
|
+
componentName: "SelectField",
|
|
56
56
|
label: "所属学院",
|
|
57
57
|
placeholder: "请选择所属学院",
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
58
|
+
showSearch: true,
|
|
59
|
+
allowClear: true,
|
|
60
|
+
options: [],
|
|
61
|
+
valueSync: [{ targetFieldId: "collegeScopeKey", valuePath: "value" }],
|
|
62
|
+
optionSource: {
|
|
63
|
+
type: "linkedForm",
|
|
64
|
+
linkedForm: {
|
|
65
|
+
formUuid: "FORM_COLLEGE_PROFILE",
|
|
66
|
+
fieldId: "collegeName",
|
|
67
|
+
labelFieldId: "collegeName",
|
|
68
|
+
valueFieldId: "collegeCode",
|
|
69
|
+
searchFieldId: "collegeName",
|
|
70
|
+
sortField: "collegeName",
|
|
71
|
+
pageSize: 20,
|
|
72
|
+
remoteSearch: true,
|
|
73
|
+
deduplicate: true,
|
|
74
|
+
},
|
|
66
75
|
},
|
|
67
76
|
},
|
|
68
77
|
{
|
|
69
78
|
fieldId: "classGroup",
|
|
70
|
-
componentName: "
|
|
79
|
+
componentName: "SelectField",
|
|
71
80
|
label: "所属班级",
|
|
72
81
|
placeholder: "请选择所属班级",
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
82
|
+
showSearch: true,
|
|
83
|
+
allowClear: true,
|
|
84
|
+
options: [],
|
|
85
|
+
valueSync: [{ targetFieldId: "classScopeKey", valuePath: "value" }],
|
|
86
|
+
optionSource: {
|
|
87
|
+
type: "linkedForm",
|
|
88
|
+
linkedForm: {
|
|
89
|
+
formUuid: "FORM_CLASS_PROFILE",
|
|
90
|
+
fieldId: "className",
|
|
91
|
+
labelFieldId: "className",
|
|
92
|
+
valueFieldId: "classCode",
|
|
93
|
+
searchFieldId: "className",
|
|
94
|
+
sortField: "className",
|
|
95
|
+
pageSize: 20,
|
|
96
|
+
remoteSearch: true,
|
|
97
|
+
deduplicate: true,
|
|
98
|
+
},
|
|
81
99
|
},
|
|
82
100
|
},
|
|
83
101
|
{
|
|
@@ -1,24 +1,9 @@
|
|
|
1
1
|
const tailwindcss = require("tailwindcss");
|
|
2
2
|
const autoprefixer = require("autoprefixer");
|
|
3
3
|
|
|
4
|
-
function loadOpenXiangdaBuild() {
|
|
5
|
-
try {
|
|
6
|
-
return require("openxiangda/build");
|
|
7
|
-
} catch (error) {
|
|
8
|
-
try {
|
|
9
|
-
return require("../../packages/sdk/dist/build/index.cjs");
|
|
10
|
-
} catch {
|
|
11
|
-
throw error;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const { createOpenXiangdaNamespaceCssPlugin } = loadOpenXiangdaBuild();
|
|
17
|
-
|
|
18
4
|
module.exports = {
|
|
19
5
|
plugins: [
|
|
20
6
|
tailwindcss(),
|
|
21
|
-
createOpenXiangdaNamespaceCssPlugin(),
|
|
22
7
|
autoprefixer(),
|
|
23
8
|
],
|
|
24
9
|
};
|
|
@@ -14,21 +14,10 @@ createRoot(document.getElementById("root")!).render(
|
|
|
14
14
|
<StyleProvider hashPriority="high">
|
|
15
15
|
<ConfigProvider
|
|
16
16
|
locale={zhCN}
|
|
17
|
-
prefixCls="sy-ant"
|
|
18
|
-
iconPrefixCls="sy-anticon"
|
|
19
17
|
theme={antdTheme}
|
|
20
|
-
getPopupContainer={() =>
|
|
21
|
-
document.querySelector(".sy-app-workspace") as HTMLElement
|
|
22
|
-
}
|
|
23
|
-
getTargetContainer={() =>
|
|
24
|
-
(document.querySelector(".sy-app-workspace") as HTMLElement) ||
|
|
25
|
-
document.body
|
|
26
|
-
}
|
|
27
18
|
>
|
|
28
19
|
<AntdApp>
|
|
29
|
-
<
|
|
30
|
-
<App />
|
|
31
|
-
</div>
|
|
20
|
+
<App />
|
|
32
21
|
</AntdApp>
|
|
33
22
|
</ConfigProvider>
|
|
34
23
|
</StyleProvider>
|