@shwfed/config 2.3.28 → 2.4.0

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 (146) hide show
  1. package/dist/mcp.mjs +3128 -1272
  2. package/dist/module.json +1 -1
  3. package/dist/preview/assets/{config-CQHS6cZe.js → config-BcQQl4v6.js} +1 -1
  4. package/dist/preview/assets/{config-fvkC2rB8.js → config-BdFIFUa_.js} +1 -1
  5. package/dist/preview/assets/{config-DDfTl9Cs.js → config-Bi9F-Jdh.js} +1 -1
  6. package/dist/preview/assets/{config-CJHPt8Gx.js → config-Bxkq2ZRm.js} +1 -1
  7. package/dist/preview/assets/{config-D0_1yZdF.js → config-C32yfrlg.js} +1 -1
  8. package/dist/preview/assets/{config--PcXQV_r.js → config-CHHX7vhb.js} +1 -1
  9. package/dist/preview/assets/{config-5KVDXgUF.js → config-CZ0f5xdI.js} +1 -1
  10. package/dist/preview/assets/{config-B5avpKJE.js → config-D9xGgFnF.js} +1 -1
  11. package/dist/preview/assets/{config-CNo3isHa.js → config-Ddh8pxIi.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_cjxvm1.js} +1 -1
  13. package/dist/preview/assets/{index-a2QwAots.css → index-BqOX70Hd.css} +1 -1
  14. package/dist/preview/assets/index-D-VR1i8D.js +659 -0
  15. package/dist/preview/assets/index-ihZGlPdX.js +1 -0
  16. package/dist/preview/assets/{runtime-BPjZQmcY.js → runtime-Bn8mqeDH.js} +1 -1
  17. package/dist/preview/assets/{runtime-DcrzodsN.js → runtime-Cc_Wk3o-.js} +1 -1
  18. package/dist/preview/assets/{runtime-BGTWf-O7.js → runtime-CttAjIgg.js} +1 -1
  19. package/dist/preview/assets/{runtime-Dy4ZmQ-n.js → runtime-Cx4f2UTl.js} +1 -1
  20. package/dist/preview/assets/{runtime-CCbyrqQT.js → runtime-D1dESjXR.js} +1 -1
  21. package/dist/preview/assets/{runtime-C_XX6a0C.js → runtime-DIEP1Xbh.js} +1 -1
  22. package/dist/preview/assets/{runtime-CtqwtTE_.js → runtime-DKceWuBx.js} +1 -1
  23. package/dist/preview/assets/{runtime-Dr_10emf.js → runtime-Dhid9O5c.js} +1 -1
  24. package/dist/preview/assets/{runtime-Bq3fmxeF.js → runtime-YMiqi6WY.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/blocks/2026-05-06/com.shwfed.block.form/config.d.vue.ts +2 -0
  30. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/config.vue.d.ts +2 -0
  31. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/runtime.d.vue.ts +2 -0
  32. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/runtime.vue.d.ts +2 -0
  33. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/schema.d.ts +2 -0
  34. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.d.vue.ts +2 -0
  35. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.vue.d.ts +2 -0
  36. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.d.vue.ts +2 -0
  37. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.vue.d.ts +2 -0
  38. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/schema.d.ts +3 -0
  39. package/dist/runtime/components/config/config.vue +35 -0
  40. package/dist/runtime/components/config/use-editor.d.ts +11 -1
  41. package/dist/runtime/components/config/use-editor.js +27 -1
  42. package/dist/runtime/components/form/config.vue +32 -0
  43. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/config.d.vue.ts +163 -0
  44. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/config.vue +745 -0
  45. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/config.vue.d.ts +163 -0
  46. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/runtime.d.vue.ts +8 -0
  47. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/runtime.vue +383 -0
  48. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/runtime.vue.d.ts +8 -0
  49. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/schema.d.ts +264 -0
  50. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/schema.js +183 -0
  51. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/config.d.vue.ts +163 -0
  52. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/config.vue +745 -0
  53. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/config.vue.d.ts +163 -0
  54. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/runtime.d.vue.ts +8 -0
  55. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/runtime.vue +402 -0
  56. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/runtime.vue.d.ts +8 -0
  57. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/schema.d.ts +264 -0
  58. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/schema.js +209 -0
  59. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +129 -0
  60. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.vue +618 -0
  61. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +129 -0
  62. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/runtime.d.vue.ts +8 -0
  63. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/runtime.vue +501 -0
  64. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/runtime.vue.d.ts +8 -0
  65. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/schema.d.ts +99 -0
  66. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/schema.js +133 -0
  67. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +127 -0
  68. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.vue +550 -0
  69. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +127 -0
  70. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/runtime.d.vue.ts +8 -0
  71. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/runtime.vue +496 -0
  72. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/runtime.vue.d.ts +8 -0
  73. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/schema.d.ts +96 -0
  74. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/schema.js +125 -0
  75. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.d.vue.ts +133 -0
  76. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.vue +605 -0
  77. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.vue.d.ts +133 -0
  78. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/runtime.d.vue.ts +8 -0
  79. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/runtime.vue +401 -0
  80. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/runtime.vue.d.ts +8 -0
  81. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/schema.d.ts +102 -0
  82. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/schema.js +142 -0
  83. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.d.vue.ts +131 -0
  84. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.vue +560 -0
  85. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.vue.d.ts +131 -0
  86. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/runtime.d.vue.ts +8 -0
  87. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/runtime.vue +395 -0
  88. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/runtime.vue.d.ts +8 -0
  89. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/schema.d.ts +96 -0
  90. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/schema.js +118 -0
  91. package/dist/runtime/components/form/fields/2026-05-28/tree-combobox-shared.d.ts +35 -0
  92. package/dist/runtime/components/form/fields/2026-05-28/tree-combobox-shared.js +31 -0
  93. package/dist/runtime/components/form/index.vue +7 -5
  94. package/dist/runtime/components/form/schema.d.ts +4 -0
  95. package/dist/runtime/components/form/schema.js +4 -0
  96. package/dist/runtime/components/form/unit-config.vue +45 -1
  97. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.select/config.vue +0 -22
  98. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.select/header.vue +3 -15
  99. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.select/schema.d.ts +0 -1
  100. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.select/schema.js +0 -4
  101. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/config.d.vue.ts +183 -0
  102. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/config.vue +931 -0
  103. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/config.vue.d.ts +183 -0
  104. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/runtime.d.vue.ts +9 -0
  105. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/runtime.vue +463 -0
  106. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/runtime.vue.d.ts +9 -0
  107. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/schema.d.ts +283 -0
  108. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/schema.js +275 -0
  109. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/config.d.vue.ts +183 -0
  110. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/config.vue +931 -0
  111. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/config.vue.d.ts +183 -0
  112. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/runtime.d.vue.ts +9 -0
  113. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/runtime.vue +414 -0
  114. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/runtime.vue.d.ts +9 -0
  115. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/schema.d.ts +283 -0
  116. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/schema.js +275 -0
  117. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +133 -0
  118. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.vue +632 -0
  119. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +133 -0
  120. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/runtime.d.vue.ts +9 -0
  121. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/runtime.vue +461 -0
  122. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/runtime.vue.d.ts +9 -0
  123. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/schema.d.ts +93 -0
  124. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/schema.js +161 -0
  125. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +131 -0
  126. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.vue +563 -0
  127. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +131 -0
  128. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/runtime.d.vue.ts +9 -0
  129. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/runtime.vue +443 -0
  130. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/runtime.vue.d.ts +9 -0
  131. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/schema.d.ts +90 -0
  132. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/schema.js +153 -0
  133. package/dist/runtime/components/table/columns/2026-05-28/tree-combobox-shared.d.ts +35 -0
  134. package/dist/runtime/components/table/columns/2026-05-28/tree-combobox-shared.js +31 -0
  135. package/dist/runtime/components/table/config.vue +55 -82
  136. package/dist/runtime/components/table/schema.d.ts +4 -0
  137. package/dist/runtime/components/ui/command/CommandItem.d.vue.ts +7 -0
  138. package/dist/runtime/components/ui/command/CommandItem.vue +13 -4
  139. package/dist/runtime/components/ui/command/CommandItem.vue.d.ts +7 -0
  140. package/dist/runtime/share/clipboard.d.ts +26 -0
  141. package/dist/runtime/share/clipboard.js +82 -0
  142. package/dist/runtime/share/layout.d.ts +4 -0
  143. package/dist/runtime/share/layout.js +35 -0
  144. package/package.json +1 -1
  145. package/dist/preview/assets/index-DNd8J9Zv.js +0 -643
  146. package/dist/preview/assets/index-DrIMqXAa.js +0 -1
@@ -0,0 +1,563 @@
1
+ <script setup>
2
+ import { computed } from "vue";
3
+ import { Icon } from "@iconify/vue";
4
+ import { ExpressionEditor } from "../../../../ui/expression-editor";
5
+ import { Field, FieldLabel } from "../../../../ui/field";
6
+ import {
7
+ InputGroup,
8
+ InputGroupAddon,
9
+ InputGroupButton,
10
+ InputGroupInput,
11
+ InputGroupNumberField
12
+ } from "../../../../ui/input-group";
13
+ import { Locale as LocaleField } from "../../../../ui/locale";
14
+ import { Markdown } from "../../../../ui/markdown";
15
+ import { Separator } from "../../../../ui/separator";
16
+ import { Switch } from "../../../../ui/switch";
17
+ import DerivedValueEditor from "../../../../form/DerivedValueEditor.vue";
18
+ import { DataSource } from "../../../schema";
19
+ import { getStructFieldDescription, getStructFieldTitle } from "../../../utils/schema-meta";
20
+ import { schema } from "./schema";
21
+ defineOptions({ name: "ShwfedTableTreeComboboxSingleRendererConfig" });
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 ROW_VARS = {
32
+ row: { type: "dyn", label: "\u5F53\u524D\u884C\u6570\u636E" },
33
+ index: { type: "number", label: "\u884C\u7D22\u5F15" }
34
+ };
35
+ const ROW_NODE_VARS = {
36
+ ...ROW_VARS,
37
+ node: {
38
+ type: "dyn",
39
+ label: "\u5F53\u524D\u8282\u70B9",
40
+ 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"
41
+ }
42
+ };
43
+ const ROW_JSON_VARS = {
44
+ ...ROW_VARS,
45
+ json: {
46
+ type: "optional<dyn>",
47
+ label: "HTTP \u54CD\u5E94\u4F53",
48
+ description: "\u5DF2\u89E3\u6790\u7684 JSON \u54CD\u5E94\uFF1B\u672A\u914D\u7F6E `request` \u65F6\u4E3A `none`"
49
+ }
50
+ };
51
+ const bindingText = computed({
52
+ get: () => value.value.binding ?? "",
53
+ set: (v) => {
54
+ const trimmed = v.trim();
55
+ if (trimmed === "") {
56
+ const { binding: _omit, ...rest } = value.value;
57
+ value.value = rest;
58
+ } else {
59
+ value.value = { ...value.value, binding: trimmed };
60
+ }
61
+ }
62
+ });
63
+ function setOptionalExpression(key, next) {
64
+ if (next.length === 0) {
65
+ const { [key]: _omit, ...rest } = value.value;
66
+ value.value = rest;
67
+ } else {
68
+ value.value = { ...value.value, [key]: next };
69
+ }
70
+ }
71
+ function setDataSourceData(next) {
72
+ value.value = {
73
+ ...value.value,
74
+ dataSource: { ...value.value.dataSource, data: next }
75
+ };
76
+ }
77
+ function setDataSourceRequest(next) {
78
+ const trimmed = next.trim();
79
+ if (trimmed.length === 0) {
80
+ const { request: _omit, ...rest } = value.value.dataSource;
81
+ value.value = { ...value.value, dataSource: rest };
82
+ } else {
83
+ value.value = {
84
+ ...value.value,
85
+ dataSource: { ...value.value.dataSource, request: next }
86
+ };
87
+ }
88
+ }
89
+ const derivedModel = computed({
90
+ get: () => value.value.derived,
91
+ set: (v) => {
92
+ if (v == null) {
93
+ const { derived: _omit, ...rest } = value.value;
94
+ value.value = rest;
95
+ } else {
96
+ value.value = { ...value.value, derived: v };
97
+ }
98
+ }
99
+ });
100
+ </script>
101
+
102
+ <template>
103
+ <div class="space-y-5">
104
+ <!-- Identity: title + binding + placeholder + size -->
105
+ <div class="grid grid-cols-2 gap-x-6 gap-y-4">
106
+ <Field orientation="vertical">
107
+ <FieldLabel class="text-xs text-zinc-500">
108
+ <template
109
+ v-if="fieldDescription('title')"
110
+ #tooltip
111
+ >
112
+ <Markdown
113
+ :source="fieldDescription('title')"
114
+ block
115
+ class="prose prose-sm prose-zinc"
116
+ />
117
+ </template>
118
+ {{ fieldTitle("title") }}
119
+ </FieldLabel>
120
+ <LocaleField v-model="value.title" />
121
+ </Field>
122
+ <Field orientation="vertical">
123
+ <FieldLabel class="text-xs text-zinc-500">
124
+ <template
125
+ v-if="fieldDescription('tooltip')"
126
+ #tooltip
127
+ >
128
+ <Markdown
129
+ :source="fieldDescription('tooltip')"
130
+ block
131
+ class="prose prose-sm prose-zinc"
132
+ />
133
+ </template>
134
+ {{ fieldTitle("tooltip") }}
135
+ </FieldLabel>
136
+ <LocaleField
137
+ v-model="value.tooltip"
138
+ markdown
139
+ />
140
+ </Field>
141
+ </div>
142
+ <div class="grid grid-cols-2 gap-x-6 gap-y-4">
143
+ <Field orientation="vertical">
144
+ <FieldLabel class="text-xs text-zinc-500">
145
+ <template
146
+ v-if="fieldDescription('binding')"
147
+ #tooltip
148
+ >
149
+ <Markdown
150
+ :source="fieldDescription('binding')"
151
+ block
152
+ class="prose prose-sm prose-zinc"
153
+ />
154
+ </template>
155
+ {{ fieldTitle("binding") }}
156
+ </FieldLabel>
157
+ <InputGroup>
158
+ <InputGroupInput
159
+ v-model="bindingText"
160
+ placeholder="例:user.departmentId"
161
+ class="font-mono"
162
+ />
163
+ </InputGroup>
164
+ </Field>
165
+ <Field orientation="vertical">
166
+ <FieldLabel class="text-xs text-zinc-500">
167
+ <template
168
+ v-if="fieldDescription('placeholder')"
169
+ #tooltip
170
+ >
171
+ <Markdown
172
+ :source="fieldDescription('placeholder')"
173
+ block
174
+ class="prose prose-sm prose-zinc"
175
+ />
176
+ </template>
177
+ {{ fieldTitle("placeholder") }}
178
+ </FieldLabel>
179
+ <LocaleField v-model="value.placeholder" />
180
+ </Field>
181
+ <Field orientation="vertical">
182
+ <FieldLabel class="text-xs text-zinc-500">
183
+ <template
184
+ v-if="fieldDescription('size')"
185
+ #tooltip
186
+ >
187
+ <Markdown
188
+ :source="fieldDescription('size')"
189
+ block
190
+ class="prose prose-sm prose-zinc"
191
+ />
192
+ </template>
193
+ {{ fieldTitle("size") }}
194
+ </FieldLabel>
195
+ <InputGroup>
196
+ <InputGroupNumberField
197
+ :model-value="value.size"
198
+ :disabled="value.grow"
199
+ :min="0"
200
+ @update:model-value="(v) => value = { ...value, size: v }"
201
+ />
202
+ <InputGroupAddon align="inline-end">
203
+ <InputGroupButton
204
+ :variant="value.grow ? 'primary' : 'ghost'"
205
+ size="xs"
206
+ @click="value = { ...value, grow: !value.grow }"
207
+ >
208
+ <Icon :icon="value.grow ? 'fluent:lock-closed-20-regular' : 'fluent:arrow-autofit-width-20-regular'" />
209
+ {{ fieldTitle("grow") }}
210
+ </InputGroupButton>
211
+ </InputGroupAddon>
212
+ </InputGroup>
213
+ </Field>
214
+ </div>
215
+
216
+ <!-- 数据源 -->
217
+ <h3 class="text-xs font-medium text-zinc-500">
218
+ {{ fieldTitle("dataSource") }}
219
+ </h3>
220
+
221
+ <Field orientation="vertical">
222
+ <FieldLabel class="text-xs text-zinc-500">
223
+ <template
224
+ v-if="dataSourceFieldDescription('request')"
225
+ #tooltip
226
+ >
227
+ <Markdown
228
+ :source="dataSourceFieldDescription('request')"
229
+ block
230
+ class="prose prose-sm prose-zinc"
231
+ />
232
+ </template>
233
+ {{ dataSourceFieldTitle("request") }}
234
+ </FieldLabel>
235
+ <ExpressionEditor
236
+ :model-value="value.dataSource.request ?? ''"
237
+ placeholder="如 http.get('/api/departments/tree')"
238
+ result-type="HttpRequest"
239
+ :extra-vars="ROW_VARS"
240
+ multiline
241
+ class="min-h-20"
242
+ @update:model-value="setDataSourceRequest"
243
+ />
244
+ </Field>
245
+
246
+ <Field orientation="vertical">
247
+ <FieldLabel class="text-xs text-zinc-500">
248
+ <template
249
+ v-if="dataSourceFieldDescription('data')"
250
+ #tooltip
251
+ >
252
+ <Markdown
253
+ :source="dataSourceFieldDescription('data')"
254
+ block
255
+ class="prose prose-sm prose-zinc"
256
+ />
257
+ </template>
258
+ {{ dataSourceFieldTitle("data") }}
259
+ </FieldLabel>
260
+ <ExpressionEditor
261
+ :model-value="value.dataSource.data"
262
+ placeholder="如 json.?value.roots.orValue([])"
263
+ result-type="list"
264
+ :extra-vars="ROW_JSON_VARS"
265
+ @update:model-value="setDataSourceData"
266
+ />
267
+ </Field>
268
+
269
+ <!-- 节点 -->
270
+ <h3 class="text-xs font-medium text-zinc-500">
271
+ 节点
272
+ </h3>
273
+
274
+ <div class="grid grid-cols-2 gap-3">
275
+ <Field orientation="vertical">
276
+ <FieldLabel class="text-xs text-zinc-500">
277
+ <template
278
+ v-if="fieldDescription('nodeKey')"
279
+ #tooltip
280
+ >
281
+ <Markdown
282
+ :source="fieldDescription('nodeKey')"
283
+ block
284
+ class="prose prose-sm prose-zinc"
285
+ />
286
+ </template>
287
+ {{ fieldTitle("nodeKey") }}
288
+ </FieldLabel>
289
+ <ExpressionEditor
290
+ :model-value="value.nodeKey"
291
+ placeholder="例:string(node.id)"
292
+ :result-type="['string', 'number', 'dyn']"
293
+ :extra-vars="ROW_NODE_VARS"
294
+ class="min-h-10"
295
+ @update:model-value="(v) => value = { ...value, nodeKey: v }"
296
+ />
297
+ </Field>
298
+
299
+ <Field orientation="vertical">
300
+ <FieldLabel class="text-xs text-zinc-500">
301
+ <template
302
+ v-if="fieldDescription('nodeChildren')"
303
+ #tooltip
304
+ >
305
+ <Markdown
306
+ :source="fieldDescription('nodeChildren')"
307
+ block
308
+ class="prose prose-sm prose-zinc"
309
+ />
310
+ </template>
311
+ {{ fieldTitle("nodeChildren") }}
312
+ </FieldLabel>
313
+ <ExpressionEditor
314
+ :model-value="value.nodeChildren"
315
+ placeholder="例:has(node.children) ? node.children : null"
316
+ result-type="list"
317
+ :extra-vars="ROW_NODE_VARS"
318
+ class="min-h-10"
319
+ @update:model-value="(v) => value = { ...value, nodeChildren: v }"
320
+ />
321
+ </Field>
322
+ </div>
323
+
324
+ <div class="grid grid-cols-2 gap-3">
325
+ <Field orientation="vertical">
326
+ <FieldLabel class="text-xs text-zinc-500">
327
+ <template
328
+ v-if="fieldDescription('nodeLabel')"
329
+ #tooltip
330
+ >
331
+ <Markdown
332
+ :source="fieldDescription('nodeLabel')"
333
+ block
334
+ class="prose prose-sm prose-zinc"
335
+ />
336
+ </template>
337
+ {{ fieldTitle("nodeLabel") }}
338
+ </FieldLabel>
339
+ <LocaleField
340
+ markdown
341
+ translate-hint="tree node label"
342
+ :model-value="value.nodeLabel"
343
+ @update:model-value="(v) => value = { ...value, nodeLabel: v }"
344
+ />
345
+ </Field>
346
+
347
+ <Field orientation="vertical">
348
+ <FieldLabel class="text-xs text-zinc-500">
349
+ <template
350
+ v-if="fieldDescription('nodeTooltip')"
351
+ #tooltip
352
+ >
353
+ <Markdown
354
+ :source="fieldDescription('nodeTooltip')"
355
+ block
356
+ class="prose prose-sm prose-zinc"
357
+ />
358
+ </template>
359
+ {{ fieldTitle("nodeTooltip") }}
360
+ </FieldLabel>
361
+ <LocaleField
362
+ markdown
363
+ translate-hint="tree node tooltip"
364
+ :model-value="value.nodeTooltip"
365
+ @update:model-value="(v) => value = { ...value, nodeTooltip: v }"
366
+ />
367
+ </Field>
368
+ </div>
369
+
370
+ <!-- 搜索: 额外关键词(节点作用域,返回字符串列表) -->
371
+ <Field orientation="vertical">
372
+ <FieldLabel class="text-xs text-zinc-500">
373
+ <template
374
+ v-if="fieldDescription('keywords')"
375
+ #tooltip
376
+ >
377
+ <Markdown
378
+ :source="fieldDescription('keywords')"
379
+ block
380
+ class="prose prose-sm prose-zinc"
381
+ />
382
+ </template>
383
+ {{ fieldTitle("keywords") }}
384
+ </FieldLabel>
385
+ <ExpressionEditor
386
+ :model-value="value.keywords ?? ''"
387
+ placeholder="例:[node.code, node.pinyin]"
388
+ result-type="list"
389
+ :extra-vars="ROW_NODE_VARS"
390
+ class="min-h-10"
391
+ @update:model-value="(v) => setOptionalExpression('keywords', v)"
392
+ />
393
+ </Field>
394
+
395
+ <!-- 行为: 节点可选条件 + 默认全部展开 -->
396
+ <div class="grid grid-cols-2 gap-3">
397
+ <Field orientation="vertical">
398
+ <FieldLabel class="text-xs text-zinc-500">
399
+ <template
400
+ v-if="fieldDescription('nodeSelectable')"
401
+ #tooltip
402
+ >
403
+ <Markdown
404
+ :source="fieldDescription('nodeSelectable')"
405
+ block
406
+ class="prose prose-sm prose-zinc"
407
+ />
408
+ </template>
409
+ {{ fieldTitle("nodeSelectable") }}
410
+ </FieldLabel>
411
+ <ExpressionEditor
412
+ :model-value="value.nodeSelectable ?? ''"
413
+ placeholder="例:!has(node.disabled) || !node.disabled"
414
+ result-type="bool"
415
+ :extra-vars="ROW_NODE_VARS"
416
+ class="min-h-10"
417
+ @update:model-value="(v) => setOptionalExpression('nodeSelectable', v)"
418
+ />
419
+ </Field>
420
+
421
+ <Field orientation="vertical">
422
+ <FieldLabel class="text-xs text-zinc-500">
423
+ <template
424
+ v-if="fieldDescription('expandAll')"
425
+ #tooltip
426
+ >
427
+ <Markdown
428
+ :source="fieldDescription('expandAll')"
429
+ block
430
+ class="prose prose-sm prose-zinc"
431
+ />
432
+ </template>
433
+ {{ fieldTitle("expandAll") }}
434
+ </FieldLabel>
435
+ <div>
436
+ <Switch
437
+ :model-value="value.expandAll ?? false"
438
+ @update:model-value="(v) => value = { ...value, expandAll: v }"
439
+ />
440
+ </div>
441
+ </Field>
442
+ </div>
443
+
444
+ <!-- 通用: 隐藏 / 禁用 / 只读 + 派生值 -->
445
+ <div class="grid grid-cols-2 gap-x-6 gap-y-4">
446
+ <Field orientation="vertical">
447
+ <FieldLabel class="text-xs text-zinc-500">
448
+ <template
449
+ v-if="fieldDescription('hidden')"
450
+ #tooltip
451
+ >
452
+ <Markdown
453
+ :source="fieldDescription('hidden')"
454
+ block
455
+ class="prose prose-sm prose-zinc"
456
+ />
457
+ </template>
458
+ {{ fieldTitle("hidden") }}
459
+ </FieldLabel>
460
+ <ExpressionEditor
461
+ :model-value="value.hidden ?? ''"
462
+ placeholder="例:row.archived"
463
+ result-type="bool"
464
+ :extra-vars="ROW_VARS"
465
+ @update:model-value="(v) => setOptionalExpression('hidden', v)"
466
+ />
467
+ </Field>
468
+ <Field orientation="vertical">
469
+ <FieldLabel class="text-xs text-zinc-500">
470
+ <template
471
+ v-if="fieldDescription('disabled')"
472
+ #tooltip
473
+ >
474
+ <Markdown
475
+ :source="fieldDescription('disabled')"
476
+ block
477
+ class="prose prose-sm prose-zinc"
478
+ />
479
+ </template>
480
+ {{ fieldTitle("disabled") }}
481
+ </FieldLabel>
482
+ <ExpressionEditor
483
+ :model-value="value.disabled ?? ''"
484
+ placeholder="例:row.locked"
485
+ result-type="bool"
486
+ :extra-vars="ROW_VARS"
487
+ @update:model-value="(v) => setOptionalExpression('disabled', v)"
488
+ />
489
+ </Field>
490
+ <Field orientation="vertical">
491
+ <FieldLabel class="text-xs text-zinc-500">
492
+ <template
493
+ v-if="fieldDescription('readonly')"
494
+ #tooltip
495
+ >
496
+ <Markdown
497
+ :source="fieldDescription('readonly')"
498
+ block
499
+ class="prose prose-sm prose-zinc"
500
+ />
501
+ </template>
502
+ {{ fieldTitle("readonly") }}
503
+ </FieldLabel>
504
+ <ExpressionEditor
505
+ :model-value="value.readonly ?? ''"
506
+ placeholder="例:row.id != null"
507
+ result-type="bool"
508
+ :extra-vars="ROW_VARS"
509
+ @update:model-value="(v) => setOptionalExpression('readonly', v)"
510
+ />
511
+ </Field>
512
+ <Field
513
+ orientation="vertical"
514
+ class="col-span-2"
515
+ >
516
+ <FieldLabel class="text-xs text-zinc-500">
517
+ <template
518
+ v-if="fieldDescription('derived')"
519
+ #tooltip
520
+ >
521
+ <Markdown
522
+ :source="fieldDescription('derived')"
523
+ block
524
+ class="prose prose-sm prose-zinc"
525
+ />
526
+ </template>
527
+ {{ fieldTitle("derived") }}
528
+ </FieldLabel>
529
+ <DerivedValueEditor
530
+ v-model="derivedModel"
531
+ result-type="dyn"
532
+ placeholder="例:form.defaults[row.kind]"
533
+ />
534
+ </Field>
535
+ </div>
536
+
537
+ <Separator />
538
+ <div class="flex flex-wrap gap-x-8 gap-y-3">
539
+ <Field
540
+ orientation="horizontal"
541
+ class="w-auto gap-2"
542
+ >
543
+ <Switch
544
+ :model-value="value.enableSorting ?? false"
545
+ @update:model-value="(v) => value = { ...value, enableSorting: v }"
546
+ />
547
+ <FieldLabel class="text-sm text-zinc-600">
548
+ <template
549
+ v-if="fieldDescription('enableSorting')"
550
+ #tooltip
551
+ >
552
+ <Markdown
553
+ :source="fieldDescription('enableSorting')"
554
+ block
555
+ class="prose prose-sm prose-zinc"
556
+ />
557
+ </template>
558
+ {{ fieldTitle("enableSorting") }}
559
+ </FieldLabel>
560
+ </Field>
561
+ </div>
562
+ </div>
563
+ </template>
@@ -0,0 +1,131 @@
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 size?: number | undefined;
8
+ readonly disabled?: string | undefined;
9
+ readonly type: "com.shwfed.table.column.tree-combobox-single";
10
+ readonly id: string;
11
+ readonly title: readonly [{
12
+ readonly locale: "zh";
13
+ readonly message: string;
14
+ }, ...{
15
+ readonly locale: "en" | "ja" | "ko";
16
+ readonly message: string;
17
+ }[]];
18
+ readonly hidden?: string | undefined;
19
+ readonly tooltip?: readonly [{
20
+ readonly locale: "zh";
21
+ readonly message: string;
22
+ }, ...{
23
+ readonly locale: "en" | "ja" | "ko";
24
+ readonly message: string;
25
+ }[]] | undefined;
26
+ readonly compatibilityDate: "2026-05-28";
27
+ readonly groupId?: string | 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 grow?: boolean | undefined;
38
+ readonly binding: string;
39
+ readonly derived?: {
40
+ readonly mode: "formula" | "prefill";
41
+ readonly expression: string;
42
+ } | undefined;
43
+ readonly dataSource: {
44
+ readonly data: string;
45
+ readonly request?: string | undefined;
46
+ };
47
+ readonly nodeKey: string;
48
+ readonly nodeChildren: string;
49
+ readonly nodeLabel: readonly [{
50
+ readonly locale: "zh";
51
+ readonly message: string;
52
+ }, ...{
53
+ readonly locale: "en" | "ja" | "ko";
54
+ readonly message: string;
55
+ }[]];
56
+ readonly expandAll: boolean;
57
+ readonly enableSorting?: boolean | undefined;
58
+ readonly nodeTooltip?: readonly [{
59
+ readonly locale: "zh";
60
+ readonly message: string;
61
+ }, ...{
62
+ readonly locale: "en" | "ja" | "ko";
63
+ readonly message: string;
64
+ }[]] | undefined;
65
+ readonly nodeSelectable?: string | undefined;
66
+ }) => any;
67
+ }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
68
+ "onUpdate:modelValue"?: ((value: {
69
+ readonly size?: number | undefined;
70
+ readonly disabled?: string | undefined;
71
+ readonly type: "com.shwfed.table.column.tree-combobox-single";
72
+ readonly id: string;
73
+ readonly title: readonly [{
74
+ readonly locale: "zh";
75
+ readonly message: string;
76
+ }, ...{
77
+ readonly locale: "en" | "ja" | "ko";
78
+ readonly message: string;
79
+ }[]];
80
+ readonly hidden?: string | undefined;
81
+ readonly tooltip?: readonly [{
82
+ readonly locale: "zh";
83
+ readonly message: string;
84
+ }, ...{
85
+ readonly locale: "en" | "ja" | "ko";
86
+ readonly message: string;
87
+ }[]] | undefined;
88
+ readonly compatibilityDate: "2026-05-28";
89
+ readonly groupId?: string | undefined;
90
+ readonly placeholder?: readonly [{
91
+ readonly locale: "zh";
92
+ readonly message: string;
93
+ }, ...{
94
+ readonly locale: "en" | "ja" | "ko";
95
+ readonly message: string;
96
+ }[]] | undefined;
97
+ readonly keywords?: string | undefined;
98
+ readonly readonly?: string | undefined;
99
+ readonly grow?: boolean | undefined;
100
+ readonly binding: string;
101
+ readonly derived?: {
102
+ readonly mode: "formula" | "prefill";
103
+ readonly expression: string;
104
+ } | undefined;
105
+ readonly dataSource: {
106
+ readonly data: string;
107
+ readonly request?: string | undefined;
108
+ };
109
+ readonly nodeKey: string;
110
+ readonly nodeChildren: string;
111
+ readonly nodeLabel: readonly [{
112
+ readonly locale: "zh";
113
+ readonly message: string;
114
+ }, ...{
115
+ readonly locale: "en" | "ja" | "ko";
116
+ readonly message: string;
117
+ }[]];
118
+ readonly expandAll: boolean;
119
+ readonly enableSorting?: boolean | undefined;
120
+ readonly nodeTooltip?: readonly [{
121
+ readonly locale: "zh";
122
+ readonly message: string;
123
+ }, ...{
124
+ readonly locale: "en" | "ja" | "ko";
125
+ readonly message: string;
126
+ }[]] | undefined;
127
+ readonly nodeSelectable?: string | undefined;
128
+ }) => any) | undefined;
129
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
130
+ declare const _default: typeof __VLS_export;
131
+ export default _default;
@@ -0,0 +1,9 @@
1
+ import type { CellContext } from '@tanstack/vue-table';
2
+ import type { Value } from './schema.js';
3
+ type __VLS_Props = {
4
+ column: Value;
5
+ ctx: CellContext<unknown, unknown>;
6
+ };
7
+ 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>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;