@shwfed/config 2.3.28 → 2.3.29

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.
Files changed (127) hide show
  1. package/dist/mcp.mjs +3124 -1268
  2. package/dist/module.json +1 -1
  3. package/dist/preview/assets/{config-fvkC2rB8.js → config-6IiXCmyu.js} +1 -1
  4. package/dist/preview/assets/{config--PcXQV_r.js → config-BJzUh1_G.js} +1 -1
  5. package/dist/preview/assets/{config-B5avpKJE.js → config-Bl80ye-i.js} +1 -1
  6. package/dist/preview/assets/{config-DDfTl9Cs.js → config-CZOeZ8ty.js} +1 -1
  7. package/dist/preview/assets/{config-CJHPt8Gx.js → config-DaZD4ZSa.js} +1 -1
  8. package/dist/preview/assets/{config-CNo3isHa.js → config-DhsbcNzx.js} +1 -1
  9. package/dist/preview/assets/{config-5KVDXgUF.js → config-Diuyh0Ex.js} +1 -1
  10. package/dist/preview/assets/{config-D0_1yZdF.js → config-aK67Rsw5.js} +1 -1
  11. package/dist/preview/assets/{config-CQHS6cZe.js → config-rpX_Mc6I.js} +1 -1
  12. package/dist/preview/assets/{definition.vue_vue_type_script_setup_true_lang-RM-qDh0R.js → definition.vue_vue_type_script_setup_true_lang-C_jU8d47.js} +1 -1
  13. package/dist/preview/assets/{index-a2QwAots.css → index-2eQR4s3q.css} +1 -1
  14. package/dist/preview/assets/index-DEF3_MKr.js +659 -0
  15. package/dist/preview/assets/index-Df-thth9.js +1 -0
  16. package/dist/preview/assets/{runtime-Dr_10emf.js → runtime-3p1K6te5.js} +1 -1
  17. package/dist/preview/assets/{runtime-C_XX6a0C.js → runtime-BcLnafic.js} +1 -1
  18. package/dist/preview/assets/{runtime-CtqwtTE_.js → runtime-CSaV-359.js} +1 -1
  19. package/dist/preview/assets/{runtime-CCbyrqQT.js → runtime-CjR8Vi5N.js} +1 -1
  20. package/dist/preview/assets/{runtime-BGTWf-O7.js → runtime-D_fJCKX_.js} +1 -1
  21. package/dist/preview/assets/{runtime-BPjZQmcY.js → runtime-DpeCgGEG.js} +1 -1
  22. package/dist/preview/assets/{runtime-DcrzodsN.js → runtime-K2a1x0TJ.js} +1 -1
  23. package/dist/preview/assets/{runtime-Dy4ZmQ-n.js → runtime-g9Zu3VNQ.js} +1 -1
  24. package/dist/preview/assets/{runtime-Bq3fmxeF.js → runtime-jTnh_6Dm.js} +1 -1
  25. package/dist/preview/index.html +2 -2
  26. package/dist/runtime/components/block-layout-editor/index.d.vue.ts +10 -2
  27. package/dist/runtime/components/block-layout-editor/index.vue +44 -8
  28. package/dist/runtime/components/block-layout-editor/index.vue.d.ts +10 -2
  29. package/dist/runtime/components/config/config.vue +35 -0
  30. package/dist/runtime/components/config/use-editor.d.ts +11 -1
  31. package/dist/runtime/components/config/use-editor.js +27 -1
  32. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/config.d.vue.ts +163 -0
  33. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/config.vue +745 -0
  34. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/config.vue.d.ts +163 -0
  35. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/runtime.d.vue.ts +8 -0
  36. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/runtime.vue +383 -0
  37. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/runtime.vue.d.ts +8 -0
  38. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/schema.d.ts +264 -0
  39. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/schema.js +183 -0
  40. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/config.d.vue.ts +163 -0
  41. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/config.vue +745 -0
  42. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/config.vue.d.ts +163 -0
  43. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/runtime.d.vue.ts +8 -0
  44. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/runtime.vue +402 -0
  45. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/runtime.vue.d.ts +8 -0
  46. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/schema.d.ts +264 -0
  47. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/schema.js +209 -0
  48. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +129 -0
  49. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.vue +618 -0
  50. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +129 -0
  51. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/runtime.d.vue.ts +8 -0
  52. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/runtime.vue +501 -0
  53. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/runtime.vue.d.ts +8 -0
  54. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/schema.d.ts +99 -0
  55. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/schema.js +133 -0
  56. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +127 -0
  57. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.vue +550 -0
  58. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +127 -0
  59. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/runtime.d.vue.ts +8 -0
  60. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/runtime.vue +496 -0
  61. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/runtime.vue.d.ts +8 -0
  62. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/schema.d.ts +96 -0
  63. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/schema.js +125 -0
  64. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.d.vue.ts +133 -0
  65. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.vue +605 -0
  66. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.vue.d.ts +133 -0
  67. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/runtime.d.vue.ts +8 -0
  68. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/runtime.vue +401 -0
  69. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/runtime.vue.d.ts +8 -0
  70. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/schema.d.ts +102 -0
  71. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/schema.js +142 -0
  72. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.d.vue.ts +131 -0
  73. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.vue +560 -0
  74. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.vue.d.ts +131 -0
  75. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/runtime.d.vue.ts +8 -0
  76. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/runtime.vue +395 -0
  77. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/runtime.vue.d.ts +8 -0
  78. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/schema.d.ts +96 -0
  79. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/schema.js +118 -0
  80. package/dist/runtime/components/form/fields/2026-05-28/tree-combobox-shared.d.ts +35 -0
  81. package/dist/runtime/components/form/fields/2026-05-28/tree-combobox-shared.js +31 -0
  82. package/dist/runtime/components/form/unit-config.vue +45 -1
  83. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/config.d.vue.ts +183 -0
  84. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/config.vue +931 -0
  85. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/config.vue.d.ts +183 -0
  86. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/runtime.d.vue.ts +9 -0
  87. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/runtime.vue +463 -0
  88. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/runtime.vue.d.ts +9 -0
  89. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/schema.d.ts +283 -0
  90. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/schema.js +275 -0
  91. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/config.d.vue.ts +183 -0
  92. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/config.vue +931 -0
  93. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/config.vue.d.ts +183 -0
  94. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/runtime.d.vue.ts +9 -0
  95. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/runtime.vue +414 -0
  96. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/runtime.vue.d.ts +9 -0
  97. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/schema.d.ts +283 -0
  98. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/schema.js +275 -0
  99. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +133 -0
  100. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.vue +632 -0
  101. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +133 -0
  102. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/runtime.d.vue.ts +9 -0
  103. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/runtime.vue +461 -0
  104. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/runtime.vue.d.ts +9 -0
  105. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/schema.d.ts +93 -0
  106. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/schema.js +161 -0
  107. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +131 -0
  108. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.vue +563 -0
  109. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +131 -0
  110. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/runtime.d.vue.ts +9 -0
  111. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/runtime.vue +443 -0
  112. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/runtime.vue.d.ts +9 -0
  113. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/schema.d.ts +90 -0
  114. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/schema.js +153 -0
  115. package/dist/runtime/components/table/columns/2026-05-28/tree-combobox-shared.d.ts +35 -0
  116. package/dist/runtime/components/table/columns/2026-05-28/tree-combobox-shared.js +31 -0
  117. package/dist/runtime/components/table/config.vue +1 -30
  118. package/dist/runtime/components/ui/command/CommandItem.d.vue.ts +7 -0
  119. package/dist/runtime/components/ui/command/CommandItem.vue +13 -4
  120. package/dist/runtime/components/ui/command/CommandItem.vue.d.ts +7 -0
  121. package/dist/runtime/share/clipboard.d.ts +26 -0
  122. package/dist/runtime/share/clipboard.js +82 -0
  123. package/dist/runtime/share/layout.d.ts +4 -0
  124. package/dist/runtime/share/layout.js +35 -0
  125. package/package.json +1 -1
  126. package/dist/preview/assets/index-DNd8J9Zv.js +0 -643
  127. package/dist/preview/assets/index-DrIMqXAa.js +0 -1
@@ -0,0 +1,550 @@
1
+ <script setup>
2
+ import { computed } from "vue";
3
+ import { ExpressionEditor } from "../../../../ui/expression-editor";
4
+ import DerivedValueEditor from "../../../DerivedValueEditor.vue";
5
+ import { Field, FieldLabel } from "../../../../ui/field";
6
+ import { InputGroup, InputGroupInput } from "../../../../ui/input-group";
7
+ import { Locale as LocaleField } from "../../../../ui/locale";
8
+ import { Markdown } from "../../../../ui/markdown";
9
+ import {
10
+ Select,
11
+ SelectContent,
12
+ SelectItem,
13
+ SelectTrigger,
14
+ SelectValue
15
+ } from "../../../../ui/select";
16
+ import { Switch } from "../../../../ui/switch";
17
+ import { getStructFieldDescription, getStructFieldTitle } from "../../../schema";
18
+ import { DEFAULT_FIELD_ORIENTATION, FIELD_ORIENTATION_OPTIONS } from "../../../utils/common";
19
+ import { DataSource } from "../../../../table/schema";
20
+ import { schema } from "./schema";
21
+ defineOptions({ name: "ShwfedTreeComboboxSingleFieldConfig" });
22
+ const value = defineModel({ type: null, ...{ required: true } });
23
+ const fieldSchema = schema(() => {
24
+ });
25
+ const fieldTitle = (f) => getStructFieldTitle(fieldSchema, f) ?? f;
26
+ const fieldDescription = (f) => getStructFieldDescription(fieldSchema, f);
27
+ const dataSourceSchema = DataSource(() => {
28
+ });
29
+ const dataSourceFieldTitle = (f) => getStructFieldTitle(dataSourceSchema, f) ?? f;
30
+ const dataSourceFieldDescription = (f) => getStructFieldDescription(dataSourceSchema, f);
31
+ const nodeExtraVars = {
32
+ node: {
33
+ type: "dyn",
34
+ label: "\u5F53\u524D\u8282\u70B9",
35
+ description: "\u7531 `\u6570\u636E` \u8868\u8FBE\u5F0F\u8FD4\u56DE\u7684\u6BCF\u4E00\u9879\uFF1B\u7C7B\u578B\u5728\u914D\u7F6E\u65F6\u672A\u77E5\uFF08`dyn`\uFF09"
36
+ }
37
+ };
38
+ const nodeJsonExtraVars = {
39
+ json: {
40
+ type: "optional<dyn>",
41
+ label: "HTTP \u54CD\u5E94\u4F53",
42
+ description: "\u5DF2\u89E3\u6790\u7684 JSON \u54CD\u5E94\uFF1B\u672A\u914D\u7F6E `request` \u65F6\u4E3A `none`"
43
+ }
44
+ };
45
+ const bindingText = computed({
46
+ get: () => value.value.binding ?? "",
47
+ set: (next) => {
48
+ const trimmed = next.trim();
49
+ if (trimmed.length === 0) {
50
+ const { binding: _omit, ...rest } = value.value;
51
+ value.value = rest;
52
+ } else {
53
+ value.value = { ...value.value, binding: trimmed };
54
+ }
55
+ }
56
+ });
57
+ function setDataSourceData(next) {
58
+ value.value = {
59
+ ...value.value,
60
+ dataSource: { ...value.value.dataSource, data: next }
61
+ };
62
+ }
63
+ function setDataSourceRequest(next) {
64
+ const trimmed = next.trim();
65
+ if (trimmed.length === 0) {
66
+ const { request: _omit, ...rest } = value.value.dataSource;
67
+ value.value = { ...value.value, dataSource: rest };
68
+ } else {
69
+ value.value = {
70
+ ...value.value,
71
+ dataSource: { ...value.value.dataSource, request: next }
72
+ };
73
+ }
74
+ }
75
+ function setOptionalExpression(key, next) {
76
+ if (next.length === 0) {
77
+ const { [key]: _omit, ...rest } = value.value;
78
+ value.value = rest;
79
+ } else {
80
+ value.value = { ...value.value, [key]: next };
81
+ }
82
+ }
83
+ </script>
84
+
85
+ <template>
86
+ <div class="flex flex-col gap-3">
87
+ <!-- Row 1: 内部名称 + 绑定路径 -->
88
+ <div class="grid grid-cols-2 gap-3">
89
+ <Field orientation="vertical">
90
+ <FieldLabel class="text-xs text-zinc-500">
91
+ <template
92
+ v-if="fieldDescription('displayName')"
93
+ #tooltip
94
+ >
95
+ <Markdown
96
+ :source="fieldDescription('displayName')"
97
+ block
98
+ class="prose prose-sm prose-zinc"
99
+ />
100
+ </template>
101
+ {{ fieldTitle("displayName") }}
102
+ </FieldLabel>
103
+ <InputGroup>
104
+ <InputGroupInput
105
+ :model-value="value.displayName ?? ''"
106
+ placeholder="例:所属部门"
107
+ @update:model-value="(v) => {
108
+ const s = String(v ?? '');
109
+ value = { ...value, displayName: s.length > 0 ? s : void 0 };
110
+ }"
111
+ />
112
+ </InputGroup>
113
+ </Field>
114
+
115
+ <Field orientation="vertical">
116
+ <FieldLabel class="text-xs text-zinc-500">
117
+ <template
118
+ v-if="fieldDescription('binding')"
119
+ #tooltip
120
+ >
121
+ <Markdown
122
+ :source="fieldDescription('binding')"
123
+ block
124
+ class="prose prose-sm prose-zinc"
125
+ />
126
+ </template>
127
+ {{ fieldTitle("binding") }}
128
+ </FieldLabel>
129
+ <InputGroup>
130
+ <InputGroupInput
131
+ v-model="bindingText"
132
+ placeholder="例:user.departmentId"
133
+ class="font-mono"
134
+ />
135
+ </InputGroup>
136
+ </Field>
137
+ </div>
138
+
139
+ <!-- Row 2: 标签 + 占位符 + 提示 -->
140
+ <div class="grid grid-cols-3 gap-3">
141
+ <Field orientation="vertical">
142
+ <FieldLabel class="text-xs text-zinc-500">
143
+ <template
144
+ v-if="fieldDescription('label')"
145
+ #tooltip
146
+ >
147
+ <Markdown
148
+ :source="fieldDescription('label')"
149
+ block
150
+ class="prose prose-sm prose-zinc"
151
+ />
152
+ </template>
153
+ {{ fieldTitle("label") }}
154
+ </FieldLabel>
155
+ <LocaleField
156
+ translate-hint="form field label"
157
+ :model-value="value.label"
158
+ @update:model-value="(v) => value = { ...value, label: v }"
159
+ />
160
+ </Field>
161
+
162
+ <Field orientation="vertical">
163
+ <FieldLabel class="text-xs text-zinc-500">
164
+ <template
165
+ v-if="fieldDescription('placeholder')"
166
+ #tooltip
167
+ >
168
+ <Markdown
169
+ :source="fieldDescription('placeholder')"
170
+ block
171
+ class="prose prose-sm prose-zinc"
172
+ />
173
+ </template>
174
+ {{ fieldTitle("placeholder") }}
175
+ </FieldLabel>
176
+ <LocaleField
177
+ :model-value="value.placeholder"
178
+ @update:model-value="(v) => value = { ...value, placeholder: v }"
179
+ />
180
+ </Field>
181
+
182
+ <Field orientation="vertical">
183
+ <FieldLabel class="text-xs text-zinc-500">
184
+ <template
185
+ v-if="fieldDescription('tooltip')"
186
+ #tooltip
187
+ >
188
+ <Markdown
189
+ :source="fieldDescription('tooltip')"
190
+ block
191
+ class="prose prose-sm prose-zinc"
192
+ />
193
+ </template>
194
+ {{ fieldTitle("tooltip") }}
195
+ </FieldLabel>
196
+ <LocaleField
197
+ markdown
198
+ translate-hint="form field tooltip"
199
+ :model-value="value.tooltip"
200
+ @update:model-value="(v) => value = { ...value, tooltip: v }"
201
+ />
202
+ </Field>
203
+ </div>
204
+
205
+ <!-- Row 3: orientation -->
206
+ <div class="grid grid-cols-3 gap-3">
207
+ <Field orientation="vertical">
208
+ <FieldLabel class="text-xs text-zinc-500">
209
+ <template
210
+ v-if="fieldDescription('orientation')"
211
+ #tooltip
212
+ >
213
+ <Markdown
214
+ :source="fieldDescription('orientation')"
215
+ block
216
+ class="prose prose-sm prose-zinc"
217
+ />
218
+ </template>
219
+ {{ fieldTitle("orientation") }}
220
+ </FieldLabel>
221
+ <Select
222
+ :model-value="value.orientation ?? DEFAULT_FIELD_ORIENTATION"
223
+ @update:model-value="(v) => value = { ...value, orientation: v }"
224
+ >
225
+ <SelectTrigger class="w-full">
226
+ <SelectValue />
227
+ </SelectTrigger>
228
+ <SelectContent>
229
+ <SelectItem
230
+ v-for="opt in FIELD_ORIENTATION_OPTIONS"
231
+ :key="opt.value"
232
+ :value="opt.value"
233
+ >
234
+ {{ opt.label }}
235
+ </SelectItem>
236
+ </SelectContent>
237
+ </Select>
238
+ </Field>
239
+ </div>
240
+
241
+ <!-- 数据源 -->
242
+ <h3 class="text-xs font-medium text-zinc-500">
243
+ {{ fieldTitle("dataSource") }}
244
+ </h3>
245
+
246
+ <Field orientation="vertical">
247
+ <FieldLabel class="text-xs text-zinc-500">
248
+ <template
249
+ v-if="dataSourceFieldDescription('request')"
250
+ #tooltip
251
+ >
252
+ <Markdown
253
+ :source="dataSourceFieldDescription('request')"
254
+ block
255
+ class="prose prose-sm prose-zinc"
256
+ />
257
+ </template>
258
+ {{ dataSourceFieldTitle("request") }}
259
+ </FieldLabel>
260
+ <ExpressionEditor
261
+ :model-value="value.dataSource.request ?? ''"
262
+ placeholder="如 http.get('/api/departments/tree')"
263
+ result-type="HttpRequest"
264
+ multiline
265
+ class="min-h-20"
266
+ @update:model-value="setDataSourceRequest"
267
+ />
268
+ </Field>
269
+
270
+ <Field orientation="vertical">
271
+ <FieldLabel class="text-xs text-zinc-500">
272
+ <template
273
+ v-if="dataSourceFieldDescription('data')"
274
+ #tooltip
275
+ >
276
+ <Markdown
277
+ :source="dataSourceFieldDescription('data')"
278
+ block
279
+ class="prose prose-sm prose-zinc"
280
+ />
281
+ </template>
282
+ {{ dataSourceFieldTitle("data") }}
283
+ </FieldLabel>
284
+ <ExpressionEditor
285
+ :model-value="value.dataSource.data"
286
+ placeholder="如 json.?value.roots.orValue([])"
287
+ result-type="list"
288
+ :extra-vars="nodeJsonExtraVars"
289
+ @update:model-value="setDataSourceData"
290
+ />
291
+ </Field>
292
+
293
+ <!-- 节点 -->
294
+ <h3 class="text-xs font-medium text-zinc-500">
295
+ 节点
296
+ </h3>
297
+
298
+ <div class="grid grid-cols-2 gap-3">
299
+ <Field orientation="vertical">
300
+ <FieldLabel class="text-xs text-zinc-500">
301
+ <template
302
+ v-if="fieldDescription('nodeKey')"
303
+ #tooltip
304
+ >
305
+ <Markdown
306
+ :source="fieldDescription('nodeKey')"
307
+ block
308
+ class="prose prose-sm prose-zinc"
309
+ />
310
+ </template>
311
+ {{ fieldTitle("nodeKey") }}
312
+ </FieldLabel>
313
+ <ExpressionEditor
314
+ :model-value="value.nodeKey"
315
+ placeholder="例:string(node.id)"
316
+ :result-type="['string', 'number', 'dyn']"
317
+ :extra-vars="nodeExtraVars"
318
+ class="min-h-10"
319
+ @update:model-value="(v) => value = { ...value, nodeKey: v }"
320
+ />
321
+ </Field>
322
+
323
+ <Field orientation="vertical">
324
+ <FieldLabel class="text-xs text-zinc-500">
325
+ <template
326
+ v-if="fieldDescription('nodeChildren')"
327
+ #tooltip
328
+ >
329
+ <Markdown
330
+ :source="fieldDescription('nodeChildren')"
331
+ block
332
+ class="prose prose-sm prose-zinc"
333
+ />
334
+ </template>
335
+ {{ fieldTitle("nodeChildren") }}
336
+ </FieldLabel>
337
+ <ExpressionEditor
338
+ :model-value="value.nodeChildren"
339
+ placeholder="例:has(node.children) ? node.children : null"
340
+ result-type="list"
341
+ :extra-vars="nodeExtraVars"
342
+ class="min-h-10"
343
+ @update:model-value="(v) => value = { ...value, nodeChildren: v }"
344
+ />
345
+ </Field>
346
+ </div>
347
+
348
+ <div class="grid grid-cols-2 gap-3">
349
+ <Field orientation="vertical">
350
+ <FieldLabel class="text-xs text-zinc-500">
351
+ <template
352
+ v-if="fieldDescription('nodeLabel')"
353
+ #tooltip
354
+ >
355
+ <Markdown
356
+ :source="fieldDescription('nodeLabel')"
357
+ block
358
+ class="prose prose-sm prose-zinc"
359
+ />
360
+ </template>
361
+ {{ fieldTitle("nodeLabel") }}
362
+ </FieldLabel>
363
+ <LocaleField
364
+ markdown
365
+ translate-hint="tree node label"
366
+ :model-value="value.nodeLabel"
367
+ @update:model-value="(v) => value = { ...value, nodeLabel: v }"
368
+ />
369
+ </Field>
370
+
371
+ <Field orientation="vertical">
372
+ <FieldLabel class="text-xs text-zinc-500">
373
+ <template
374
+ v-if="fieldDescription('nodeTooltip')"
375
+ #tooltip
376
+ >
377
+ <Markdown
378
+ :source="fieldDescription('nodeTooltip')"
379
+ block
380
+ class="prose prose-sm prose-zinc"
381
+ />
382
+ </template>
383
+ {{ fieldTitle("nodeTooltip") }}
384
+ </FieldLabel>
385
+ <LocaleField
386
+ markdown
387
+ translate-hint="tree node tooltip"
388
+ :model-value="value.nodeTooltip"
389
+ @update:model-value="(v) => value = { ...value, nodeTooltip: v }"
390
+ />
391
+ </Field>
392
+ </div>
393
+
394
+ <!-- 搜索: 额外关键词 -->
395
+ <Field orientation="vertical">
396
+ <FieldLabel class="text-xs text-zinc-500">
397
+ <template
398
+ v-if="fieldDescription('keywords')"
399
+ #tooltip
400
+ >
401
+ <Markdown
402
+ :source="fieldDescription('keywords')"
403
+ block
404
+ class="prose prose-sm prose-zinc"
405
+ />
406
+ </template>
407
+ {{ fieldTitle("keywords") }}
408
+ </FieldLabel>
409
+ <ExpressionEditor
410
+ :model-value="value.keywords ?? ''"
411
+ placeholder="例:[node.code, node.alias]"
412
+ result-type="list"
413
+ :extra-vars="nodeExtraVars"
414
+ class="min-h-10"
415
+ @update:model-value="(v) => setOptionalExpression('keywords', v)"
416
+ />
417
+ </Field>
418
+
419
+ <!-- 行为: 节点可选条件 + 默认全部展开 -->
420
+ <div class="grid grid-cols-2 gap-3">
421
+ <Field orientation="vertical">
422
+ <FieldLabel class="text-xs text-zinc-500">
423
+ <template
424
+ v-if="fieldDescription('nodeSelectable')"
425
+ #tooltip
426
+ >
427
+ <Markdown
428
+ :source="fieldDescription('nodeSelectable')"
429
+ block
430
+ class="prose prose-sm prose-zinc"
431
+ />
432
+ </template>
433
+ {{ fieldTitle("nodeSelectable") }}
434
+ </FieldLabel>
435
+ <ExpressionEditor
436
+ :model-value="value.nodeSelectable ?? ''"
437
+ placeholder="例:!has(node.disabled) || !node.disabled"
438
+ result-type="bool"
439
+ :extra-vars="nodeExtraVars"
440
+ class="min-h-10"
441
+ @update:model-value="(v) => setOptionalExpression('nodeSelectable', v)"
442
+ />
443
+ </Field>
444
+
445
+ <Field orientation="vertical">
446
+ <FieldLabel class="text-xs text-zinc-500">
447
+ <template
448
+ v-if="fieldDescription('expandAll')"
449
+ #tooltip
450
+ >
451
+ <Markdown
452
+ :source="fieldDescription('expandAll')"
453
+ block
454
+ class="prose prose-sm prose-zinc"
455
+ />
456
+ </template>
457
+ {{ fieldTitle("expandAll") }}
458
+ </FieldLabel>
459
+ <div>
460
+ <Switch
461
+ :model-value="value.expandAll ?? false"
462
+ @update:model-value="(v) => value = { ...value, expandAll: v }"
463
+ />
464
+ </div>
465
+ </Field>
466
+ </div>
467
+
468
+ <!-- 通用: 隐藏 / 禁用 / 只读 + 派生值 -->
469
+ <div class="grid grid-cols-3 gap-3">
470
+ <Field orientation="vertical">
471
+ <FieldLabel class="text-xs text-zinc-500">
472
+ <template #tooltip>
473
+ <Markdown
474
+ :source="fieldDescription('hidden') ?? '\u8FD4\u56DE `true` \u65F6\u5B57\u6BB5\u5728\u6240\u6709\u5E03\u5C40\u4E2D\u90FD\u4E0D\u6E32\u67D3'"
475
+ block
476
+ class="prose prose-sm prose-zinc"
477
+ />
478
+ </template>
479
+ {{ fieldTitle("hidden") }}
480
+ </FieldLabel>
481
+ <ExpressionEditor
482
+ :model-value="value.hidden ?? ''"
483
+ placeholder="例:form.role == 'guest'"
484
+ result-type="bool"
485
+ class="min-h-10"
486
+ @update:model-value="(v) => setOptionalExpression('hidden', v)"
487
+ />
488
+ </Field>
489
+
490
+ <Field orientation="vertical">
491
+ <FieldLabel class="text-xs text-zinc-500">
492
+ <template #tooltip>
493
+ <Markdown
494
+ :source="fieldDescription('disabled') ?? '\u8FD4\u56DE `true` \u65F6\u4ECD\u6E32\u67D3\u4F46\u4E0D\u53EF\u9009\u62E9'"
495
+ block
496
+ class="prose prose-sm prose-zinc"
497
+ />
498
+ </template>
499
+ {{ fieldTitle("disabled") }}
500
+ </FieldLabel>
501
+ <ExpressionEditor
502
+ :model-value="value.disabled ?? ''"
503
+ placeholder="例:form.status == 'locked'"
504
+ result-type="bool"
505
+ class="min-h-10"
506
+ @update:model-value="(v) => setOptionalExpression('disabled', v)"
507
+ />
508
+ </Field>
509
+
510
+ <Field orientation="vertical">
511
+ <FieldLabel class="text-xs text-zinc-500">
512
+ <template #tooltip>
513
+ <Markdown
514
+ :source="fieldDescription('readonly') ?? '\u8FD4\u56DE `true` \u65F6\u4EC5\u4EE5\u7EAF\u6587\u672C\u5C55\u793A\u5F53\u524D\u5DF2\u9009\u9879\u7684\u6807\u7B7E'"
515
+ block
516
+ class="prose prose-sm prose-zinc"
517
+ />
518
+ </template>
519
+ {{ fieldTitle("readonly") }}
520
+ </FieldLabel>
521
+ <ExpressionEditor
522
+ :model-value="value.readonly ?? ''"
523
+ placeholder="例:form.id != null"
524
+ result-type="bool"
525
+ class="min-h-10"
526
+ @update:model-value="(v) => setOptionalExpression('readonly', v)"
527
+ />
528
+ </Field>
529
+ </div>
530
+
531
+ <Field orientation="vertical">
532
+ <FieldLabel class="text-xs text-zinc-500">
533
+ <template #tooltip>
534
+ <Markdown
535
+ :source="fieldDescription('derived')"
536
+ block
537
+ class="prose prose-sm prose-zinc"
538
+ />
539
+ </template>
540
+ {{ fieldTitle("derived") }}
541
+ </FieldLabel>
542
+ <DerivedValueEditor
543
+ :model-value="value.derived"
544
+ :result-type="['string', 'number', 'dyn']"
545
+ placeholder="例:form.defaultDepartmentId"
546
+ @update:model-value="(v) => value = { ...value, derived: v }"
547
+ />
548
+ </Field>
549
+ </div>
550
+ </template>
@@ -0,0 +1,127 @@
1
+ import { type Value } from './schema.js';
2
+ type __VLS_ModelProps = {
3
+ modelValue: Value;
4
+ };
5
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
+ "update:modelValue": (value: {
7
+ readonly label?: readonly [{
8
+ readonly locale: "zh";
9
+ readonly message: string;
10
+ }, ...{
11
+ readonly locale: "en" | "ja" | "ko";
12
+ readonly message: string;
13
+ }[]] | undefined;
14
+ readonly disabled?: string | undefined;
15
+ readonly type: "com.shwfed.form.field.tree.combobox.single";
16
+ readonly id: string;
17
+ readonly hidden?: string | undefined;
18
+ readonly tooltip?: readonly [{
19
+ readonly locale: "zh";
20
+ readonly message: string;
21
+ }, ...{
22
+ readonly locale: "en" | "ja" | "ko";
23
+ readonly message: string;
24
+ }[]] | undefined;
25
+ readonly displayName?: string | undefined;
26
+ readonly compatibilityDate: "2026-05-28";
27
+ readonly orientation?: "vertical" | "floating" | undefined;
28
+ readonly placeholder?: readonly [{
29
+ readonly locale: "zh";
30
+ readonly message: string;
31
+ }, ...{
32
+ readonly locale: "en" | "ja" | "ko";
33
+ readonly message: string;
34
+ }[]] | undefined;
35
+ readonly keywords?: string | undefined;
36
+ readonly readonly?: string | undefined;
37
+ readonly binding?: string | undefined;
38
+ readonly derived?: {
39
+ readonly mode: "formula" | "prefill";
40
+ readonly expression: string;
41
+ } | undefined;
42
+ readonly dataSource: {
43
+ readonly data: string;
44
+ readonly request?: string | undefined;
45
+ };
46
+ readonly nodeKey: string;
47
+ readonly nodeChildren: string;
48
+ readonly nodeLabel: readonly [{
49
+ readonly locale: "zh";
50
+ readonly message: string;
51
+ }, ...{
52
+ readonly locale: "en" | "ja" | "ko";
53
+ readonly message: string;
54
+ }[]];
55
+ readonly expandAll: boolean;
56
+ readonly nodeTooltip?: readonly [{
57
+ readonly locale: "zh";
58
+ readonly message: string;
59
+ }, ...{
60
+ readonly locale: "en" | "ja" | "ko";
61
+ readonly message: string;
62
+ }[]] | undefined;
63
+ readonly nodeSelectable?: string | undefined;
64
+ }) => any;
65
+ }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
66
+ "onUpdate:modelValue"?: ((value: {
67
+ readonly label?: readonly [{
68
+ readonly locale: "zh";
69
+ readonly message: string;
70
+ }, ...{
71
+ readonly locale: "en" | "ja" | "ko";
72
+ readonly message: string;
73
+ }[]] | undefined;
74
+ readonly disabled?: string | undefined;
75
+ readonly type: "com.shwfed.form.field.tree.combobox.single";
76
+ readonly id: string;
77
+ readonly hidden?: string | undefined;
78
+ readonly tooltip?: readonly [{
79
+ readonly locale: "zh";
80
+ readonly message: string;
81
+ }, ...{
82
+ readonly locale: "en" | "ja" | "ko";
83
+ readonly message: string;
84
+ }[]] | undefined;
85
+ readonly displayName?: string | undefined;
86
+ readonly compatibilityDate: "2026-05-28";
87
+ readonly orientation?: "vertical" | "floating" | undefined;
88
+ readonly placeholder?: readonly [{
89
+ readonly locale: "zh";
90
+ readonly message: string;
91
+ }, ...{
92
+ readonly locale: "en" | "ja" | "ko";
93
+ readonly message: string;
94
+ }[]] | undefined;
95
+ readonly keywords?: string | undefined;
96
+ readonly readonly?: string | undefined;
97
+ readonly binding?: string | undefined;
98
+ readonly derived?: {
99
+ readonly mode: "formula" | "prefill";
100
+ readonly expression: string;
101
+ } | undefined;
102
+ readonly dataSource: {
103
+ readonly data: string;
104
+ readonly request?: string | undefined;
105
+ };
106
+ readonly nodeKey: string;
107
+ readonly nodeChildren: string;
108
+ readonly nodeLabel: readonly [{
109
+ readonly locale: "zh";
110
+ readonly message: string;
111
+ }, ...{
112
+ readonly locale: "en" | "ja" | "ko";
113
+ readonly message: string;
114
+ }[]];
115
+ readonly expandAll: boolean;
116
+ readonly nodeTooltip?: readonly [{
117
+ readonly locale: "zh";
118
+ readonly message: string;
119
+ }, ...{
120
+ readonly locale: "en" | "ja" | "ko";
121
+ readonly message: string;
122
+ }[]] | undefined;
123
+ readonly nodeSelectable?: string | undefined;
124
+ }) => any) | undefined;
125
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
126
+ declare const _default: typeof __VLS_export;
127
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import type { Value } from './schema.js';
2
+ type __VLS_Props = {
3
+ fieldId: string;
4
+ config: Value;
5
+ };
6
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
+ declare const _default: typeof __VLS_export;
8
+ export default _default;