@shwfed/config 2.8.0 → 2.9.1

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 (141) hide show
  1. package/dist/mcp.mjs +65 -10
  2. package/dist/module.json +1 -1
  3. package/dist/preview/assets/{badge-BI1mdo92.js → badge-BFb-1pCT.js} +1 -1
  4. package/dist/preview/assets/config-0DneC44h.js +1 -0
  5. package/dist/preview/assets/{config-OrJljNWU.js → config-ByZ0313c.js} +1 -1
  6. package/dist/preview/assets/config-CBypmimA.js +1 -0
  7. package/dist/preview/assets/config-CRxO6DVD.js +1 -0
  8. package/dist/preview/assets/config-CgGwKTMB.js +1 -0
  9. package/dist/preview/assets/{config-DuzQXHvg.js → config-DFaQa_Ua.js} +1 -1
  10. package/dist/preview/assets/{config-XgVqueyq.js → config-DlA3bMzk.js} +1 -1
  11. package/dist/preview/assets/{config-DqUnpWZk.js → config-iysOo1dH.js} +1 -1
  12. package/dist/preview/assets/config-rr6HpsHl.js +1 -0
  13. package/dist/preview/assets/{definition.vue_vue_type_script_setup_true_lang-lEhYVEcN.js → definition.vue_vue_type_script_setup_true_lang-C1MSczMq.js} +1 -1
  14. package/dist/preview/assets/index-BlHAyQdm.css +1 -0
  15. package/dist/preview/assets/index-CLQQPdxj.js +1 -0
  16. package/dist/preview/assets/index-CpLuDJe9.js +688 -0
  17. package/dist/preview/assets/{index-BvLLQuQr.js → index-CuSwhbkD.js} +1 -1
  18. package/dist/preview/assets/{item-DMtXi_cx.js → item-iBF7XNGG.js} +1 -1
  19. package/dist/preview/assets/{runtime-wVZ1xP8L.js → runtime-BPK6zdoy.js} +1 -1
  20. package/dist/preview/assets/runtime-BmED451i.js +1 -0
  21. package/dist/preview/assets/{runtime-CjJBU_e1.js → runtime-CPiaq4_s.js} +1 -1
  22. package/dist/preview/assets/{runtime-CWqQzWuc.js → runtime-CY9TirG6.js} +1 -1
  23. package/dist/preview/assets/{runtime-CA58Mif7.js → runtime-D4WPJrz9.js} +1 -1
  24. package/dist/preview/assets/runtime-DrKKzpjq.js +1 -0
  25. package/dist/preview/assets/{runtime-DnXoWy2A.js → runtime-S7Afa8F4.js} +1 -1
  26. package/dist/preview/assets/{runtime-DeUmGsM_.js → runtime-Uz1zCLPO.js} +1 -1
  27. package/dist/preview/assets/{runtime-BUPuX-Gq.js → runtime-XjumEj6A.js} +1 -1
  28. package/dist/preview/index.html +2 -2
  29. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json/config.d.vue.ts +8 -0
  30. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json/config.vue +28 -0
  31. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json/config.vue.d.ts +8 -0
  32. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json/runtime.vue +17 -17
  33. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json/schema.d.ts +4 -0
  34. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json/schema.js +8 -0
  35. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json.confirm/config.d.vue.ts +8 -0
  36. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json.confirm/config.vue +25 -0
  37. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json.confirm/config.vue.d.ts +8 -0
  38. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json.confirm/runtime.vue +2 -7
  39. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json.confirm/schema.d.ts +4 -0
  40. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json.confirm/schema.js +8 -0
  41. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/config.d.vue.ts +16 -16
  42. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/config.vue.d.ts +16 -16
  43. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.d.vue.ts +18 -18
  44. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.vue.d.ts +18 -18
  45. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/config.d.vue.ts +16 -16
  46. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/config.vue.d.ts +16 -16
  47. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.d.vue.ts +18 -18
  48. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.vue.d.ts +18 -18
  49. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.month/config.d.vue.ts +16 -16
  50. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.month/config.vue.d.ts +16 -16
  51. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.d.vue.ts +18 -18
  52. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.vue.d.ts +18 -18
  53. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/runtime.vue +13 -2
  54. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/schema.d.ts +1 -0
  55. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/schema.js +4 -1
  56. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/runtime.vue +10 -2
  57. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/schema.d.ts +1 -0
  58. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/schema.js +4 -1
  59. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/runtime.vue +20 -4
  60. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/schema.d.ts +1 -0
  61. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/schema.js +4 -1
  62. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/runtime.vue +17 -9
  63. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/schema.d.ts +1 -0
  64. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/schema.js +4 -1
  65. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/runtime.vue +25 -5
  66. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/schema.d.ts +1 -0
  67. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/schema.js +4 -1
  68. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/runtime.vue +18 -8
  69. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/schema.d.ts +1 -0
  70. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/schema.js +4 -1
  71. package/dist/runtime/components/form/index.vue +11 -3
  72. package/dist/runtime/components/form/schema.d.ts +4 -0
  73. package/dist/runtime/components/form/schema.js +1 -0
  74. package/dist/runtime/components/form/unit-config.vue +6 -1
  75. package/dist/runtime/components/form/utils/form-vars.js +2 -0
  76. package/dist/runtime/components/form/utils/resolve.d.ts +10 -0
  77. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/config.d.vue.ts +2 -2
  78. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/config.vue.d.ts +2 -2
  79. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-static/config.d.vue.ts +2 -2
  80. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-static/config.vue.d.ts +2 -2
  81. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/config.d.vue.ts +2 -2
  82. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/config.vue.d.ts +2 -2
  83. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-static/config.d.vue.ts +2 -2
  84. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-static/config.vue.d.ts +2 -2
  85. package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi.remote/config.d.vue.ts +2 -2
  86. package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi.remote/config.vue.d.ts +2 -2
  87. package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-single.remote/config.d.vue.ts +2 -2
  88. package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-single.remote/config.vue.d.ts +2 -2
  89. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/config.d.vue.ts +2 -2
  90. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/config.vue.d.ts +2 -2
  91. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/runtime.vue +13 -2
  92. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/schema.d.ts +1 -0
  93. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/schema.js +4 -1
  94. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/config.d.vue.ts +2 -2
  95. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/config.vue.d.ts +2 -2
  96. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/runtime.vue +10 -2
  97. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/schema.d.ts +1 -0
  98. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/schema.js +4 -1
  99. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/runtime.vue +16 -0
  100. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/schema.d.ts +1 -0
  101. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/schema.js +3 -1
  102. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/runtime.vue +13 -5
  103. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/schema.d.ts +1 -0
  104. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/schema.js +3 -1
  105. package/dist/runtime/components/table/config.vue +5 -1
  106. package/dist/runtime/components/table/row-provider.vue +8 -0
  107. package/dist/runtime/components/table/utils/resolve.d.ts +7 -0
  108. package/dist/runtime/components/table/utils/shared.js +4 -0
  109. package/dist/runtime/components/ui/expression-editor/CodeMirrorInput.d.vue.ts +1 -0
  110. package/dist/runtime/components/ui/expression-editor/CodeMirrorInput.vue +9 -1
  111. package/dist/runtime/components/ui/expression-editor/CodeMirrorInput.vue.d.ts +1 -0
  112. package/dist/runtime/components/ui/expression-editor/ExpressionEditor.d.vue.ts +2 -2
  113. package/dist/runtime/components/ui/expression-editor/ExpressionEditor.vue +33 -4
  114. package/dist/runtime/components/ui/expression-editor/ExpressionEditor.vue.d.ts +2 -2
  115. package/dist/runtime/components/ui/expression-editor/picker-entries.d.ts +3 -2
  116. package/dist/runtime/components/ui/expression-editor/picker-entries.js +14 -3
  117. package/dist/runtime/components/ui/expression-editor/selection-chip-extension.d.ts +4 -0
  118. package/dist/runtime/components/ui/expression-editor/selection-chip-extension.js +119 -0
  119. package/dist/runtime/components/ui/expression-editor/selection-refs.d.ts +8 -0
  120. package/dist/runtime/components/ui/expression-editor/selection-refs.js +29 -0
  121. package/dist/runtime/share/event-bus.d.ts +12 -12
  122. package/dist/runtime/utils/cel-context.d.ts +22 -0
  123. package/dist/runtime/utils/cel-context.js +8 -0
  124. package/dist/runtime/utils/selections-registry.d.ts +77 -0
  125. package/dist/runtime/utils/selections-registry.js +49 -0
  126. package/dist/runtime/vendor/cel-js/CLAUDE.md +2 -0
  127. package/dist/runtime/vendor/cel-js/PROMPT.md +8 -0
  128. package/dist/runtime/vendor/cel-js/lib/functions.js +4 -0
  129. package/package.json +1 -1
  130. package/dist/preview/assets/config-BNF2r9jW.js +0 -1
  131. package/dist/preview/assets/config-BxuGYvER.js +0 -1
  132. package/dist/preview/assets/config-Cy5w3JWQ.js +0 -1
  133. package/dist/preview/assets/config-Du5SuNSb.js +0 -1
  134. package/dist/preview/assets/config-ggyCcWNZ.js +0 -1
  135. package/dist/preview/assets/index-DsMR5NfK.css +0 -1
  136. package/dist/preview/assets/index-Yv78vz4W.js +0 -680
  137. package/dist/preview/assets/index-yrBKwEfk.js +0 -1
  138. package/dist/preview/assets/runtime-2S3Yr051.js +0 -1
  139. package/dist/preview/assets/runtime-C4jFTZ4Z.js +0 -1
  140. package/dist/runtime/share/form-validate.d.ts +0 -18
  141. package/dist/runtime/share/form-validate.js +0 -8
@@ -9,7 +9,10 @@ export const metadata = {
9
9
  name: "\u6811\uFF08\u5355\u9009\uFF09",
10
10
  icon: "fluent:tree-evergreen-20-regular",
11
11
  w: { initial: 8, min: 4, max: Infinity },
12
- h: { initial: 8, min: 4, max: Infinity, grow: true }
12
+ h: { initial: 8, min: 4, max: Infinity, grow: true },
13
+ // Publishes its resolved node (the backend record) to the `selections`
14
+ // registry (runtime.vue), readable via `selections["<id>"]`.
15
+ selection: true
13
16
  };
14
17
  export function schema(configure) {
15
18
  const CelBool = Expression({ configure, resultType: "bool" });
@@ -15,10 +15,10 @@ import { provideCommitBus } from "./utils/commit-bus";
15
15
  import { provideDerivedQuiescence, useDerived } from "./utils/derived";
16
16
  import { useFormHistory } from "./utils/history";
17
17
  import { evaluateInitial } from "./utils/initial";
18
- import { provideFormValidate } from "../../share/form-validate";
19
18
  import { provideEventTarget } from "../../share/event-bus";
20
19
  import { provideFormReadonly } from "./utils/readonly";
21
20
  import { provideFormState } from "./utils/state";
21
+ import { provideSelectionsRegistry } from "../../utils/selections-registry";
22
22
  import { provideValidation } from "./utils/validation";
23
23
  defineOptions({ name: "ShwfedForm" });
24
24
  const state = defineModel({ type: Object, ...{ default: () => ({}) } });
@@ -29,13 +29,15 @@ const props = defineProps({
29
29
  const configure = props.configure ?? (() => {
30
30
  });
31
31
  void configure;
32
+ const selections = provideSelectionsRegistry();
32
33
  provideCELContext(buildFormRuntimeScope({
33
34
  form: () => state.value ?? {},
34
35
  now: () => new TZDate(),
35
36
  // `formHistory` is created further down; these thunks are stored now and
36
37
  // only called at eval time (long after setup), so reading it here is safe.
37
38
  undoable: () => formHistory.canUndo.value,
38
- redoable: () => formHistory.canRedo.value
39
+ redoable: () => formHistory.canRedo.value,
40
+ selections: () => selections.entries.value
39
41
  }));
40
42
  const inherited = injectCELContext();
41
43
  const $cel = (expression, context) => _rawCel(expression, { ...celBindings(inherited), ...context });
@@ -81,10 +83,16 @@ const validation = provideValidation({
81
83
  seeded,
82
84
  settled: quiescence.settled
83
85
  });
84
- provideFormValidate(validation.validate);
85
86
  const formHistory = useFormHistory(state, { quiescence, seeded, dirty: formState.dirty });
87
+ class FormInvalid {
88
+ _tag = "FormInvalid";
89
+ }
86
90
  const formInstanceId = config.value?.id ?? crypto.randomUUID();
87
91
  provideEventTarget(formInstanceId, {
92
+ "validate": () => Effect.gen(function* () {
93
+ const valid = yield* Effect.promise(() => validation.validate());
94
+ if (!valid) yield* Effect.die(new FormInvalid());
95
+ }),
88
96
  "undo": () => Effect.sync(formHistory.undo),
89
97
  "redo": () => Effect.sync(formHistory.redo),
90
98
  "reset-to-initial": () => Effect.sync(formHistory.reset)
@@ -11,6 +11,10 @@ export declare const metadata: {
11
11
  readonly name: "表单";
12
12
  readonly icon: "fluent:form-20-regular";
13
13
  readonly operations: readonly [{
14
+ readonly id: "validate";
15
+ readonly name: "校验";
16
+ readonly icon: "fluent:checkmark-circle-20-regular";
17
+ }, {
14
18
  readonly id: "undo";
15
19
  readonly name: "撤销";
16
20
  readonly icon: "fluent:arrow-undo-20-regular";
@@ -20,6 +20,7 @@ export const metadata = {
20
20
  name: "\u8868\u5355",
21
21
  icon: "fluent:form-20-regular",
22
22
  operations: [
23
+ { id: "validate", name: "\u6821\u9A8C", icon: "fluent:checkmark-circle-20-regular" },
23
24
  { id: "undo", name: "\u64A4\u9500", icon: "fluent:arrow-undo-20-regular" },
24
25
  { id: "redo", name: "\u91CD\u505A", icon: "fluent:arrow-redo-20-regular" },
25
26
  { id: "reset-to-initial", name: "\u91CD\u7F6E\u4E3A\u521D\u59CB\u503C", icon: "fluent:arrow-reset-20-regular" }
@@ -7,7 +7,8 @@ import { toast } from "vue-sonner";
7
7
  import {
8
8
  celBindings,
9
9
  injectCELContext,
10
- provideCELContext
10
+ provideCELContext,
11
+ provideSelectionRoster
11
12
  } from "../../utils/cel-context";
12
13
  import { findFreePlacement, normalizeLayoutSet, placeGroupAt } from "../../share/layout";
13
14
  import { readClip, reidFragment, writeClip } from "../../share/clipboard";
@@ -45,6 +46,10 @@ const breadcrumbExt = inject(BREADCRUMB_EXTENSION_KEY, null);
45
46
  const fullPane = ref(false);
46
47
  provide(FORM_FIELD_LAYOUT_KEY, { fullPane });
47
48
  provideCELContext(props.fieldCelScope ?? {});
49
+ const selectionRoster = computed(
50
+ () => unit.value.fields.filter((f) => findField(f.type, f.compatibilityDate)?.metadata?.selection).map((f) => ({ id: f.id, name: fieldLabel(f) }))
51
+ );
52
+ provideSelectionRoster(selectionRoster);
48
53
  const takeover = inject(SIDEBAR_TAKEOVER_KEY, null);
49
54
  const takeoverTarget = computed(() => takeover?.target.value ?? null);
50
55
  const activeFieldId = computed(() => {
@@ -1,7 +1,9 @@
1
+ import { SELECTIONS_VAR } from "../../../utils/cel-context.js";
1
2
  export function registerFormVariablesIfAbsent(env) {
2
3
  const declared = new Set(env.getDefinitions().variables.map((v) => v.name));
3
4
  if (!declared.has("now")) env.registerVariable("now", "Date", { label: "\u5F53\u524D\u65F6\u95F4", description: "\u5F53\u524D\u65E5\u671F/\u65F6\u95F4" });
4
5
  if (!declared.has("form")) env.registerVariable("form", "dyn", { label: "\u8868\u5355\u503C", description: "\u5F53\u524D\u8868\u5355\u72B6\u6001" });
5
6
  if (!declared.has("undoable")) env.registerVariable("undoable", "bool", { label: "\u53EF\u64A4\u9500", description: "\u5F53\u524D\u662F\u5426\u6709\u53EF\u64A4\u9500\u7684\u4FEE\u6539" });
6
7
  if (!declared.has("redoable")) env.registerVariable("redoable", "bool", { label: "\u53EF\u91CD\u505A", description: "\u5F53\u524D\u662F\u5426\u6709\u53EF\u91CD\u505A\u7684\u4FEE\u6539" });
8
+ if (!declared.has(SELECTIONS_VAR)) env.registerVariable(SELECTIONS_VAR, "dyn", { label: "\u9009\u4E2D\u9879", description: "\u5404\u9009\u62E9\u5B57\u6BB5\u5F53\u524D\u9009\u4E2D\u9879\u7684\u5B8C\u6574\u5BF9\u8C61\uFF08\u6309\u5B57\u6BB5\u6807\u8BC6\uFF09" });
7
9
  }
@@ -65,6 +65,16 @@ export type FieldMetadata = Readonly<{
65
65
  * fullscreen. See `BlockLayoutEditor`'s inline-config pane.
66
66
  */
67
67
  inlineConfig?: boolean;
68
+ /**
69
+ * Whether this field is *selection-like* — it publishes its currently-resolved
70
+ * full option to the `selections` registry at runtime (see
71
+ * `utils/selections-registry`), keyed by its uuid. The form's unit-config reads
72
+ * this to build the selection roster the ExpressionEditor advertises: a sibling
73
+ * expression reaches the chosen record via `selections["<id>"].code`, and the
74
+ * editor renders that uuid as this field's name. Set it together with the
75
+ * runtime publish so the picker never advertises a field that writes nothing.
76
+ */
77
+ selection?: boolean;
68
78
  }>;
69
79
  /**
70
80
  * Optional creation-time defaults factory. Returns a partial config that
@@ -50,9 +50,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
50
50
  readonly locale: "en" | "ja" | "ko";
51
51
  readonly message: string;
52
52
  }[]];
53
- readonly successMessage?: string | undefined;
54
53
  readonly accessor: string;
55
54
  readonly sortKey?: string | undefined;
55
+ readonly successMessage?: string | undefined;
56
56
  }) => any;
57
57
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
58
58
  "onUpdate:modelValue"?: ((value: {
@@ -102,9 +102,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
102
102
  readonly locale: "en" | "ja" | "ko";
103
103
  readonly message: string;
104
104
  }[]];
105
- readonly successMessage?: string | undefined;
106
105
  readonly accessor: string;
107
106
  readonly sortKey?: string | undefined;
107
+ readonly successMessage?: string | undefined;
108
108
  }) => any) | undefined;
109
109
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
110
110
  declare const _default: typeof __VLS_export;
@@ -50,9 +50,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
50
50
  readonly locale: "en" | "ja" | "ko";
51
51
  readonly message: string;
52
52
  }[]];
53
- readonly successMessage?: string | undefined;
54
53
  readonly accessor: string;
55
54
  readonly sortKey?: string | undefined;
55
+ readonly successMessage?: string | undefined;
56
56
  }) => any;
57
57
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
58
58
  "onUpdate:modelValue"?: ((value: {
@@ -102,9 +102,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
102
102
  readonly locale: "en" | "ja" | "ko";
103
103
  readonly message: string;
104
104
  }[]];
105
- readonly successMessage?: string | undefined;
106
105
  readonly accessor: string;
107
106
  readonly sortKey?: string | undefined;
107
+ readonly successMessage?: string | undefined;
108
108
  }) => any) | undefined;
109
109
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
110
110
  declare const _default: typeof __VLS_export;
@@ -64,9 +64,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
64
64
  readonly readonly?: string | undefined;
65
65
  readonly grow?: boolean | undefined;
66
66
  readonly enableSorting?: boolean | undefined;
67
- readonly successMessage?: string | undefined;
68
67
  readonly accessor: string;
69
68
  readonly sortKey?: string | undefined;
69
+ readonly successMessage?: string | undefined;
70
70
  }) => any;
71
71
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
72
72
  "onUpdate:modelValue"?: ((value: {
@@ -130,9 +130,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
130
130
  readonly readonly?: string | undefined;
131
131
  readonly grow?: boolean | undefined;
132
132
  readonly enableSorting?: boolean | undefined;
133
- readonly successMessage?: string | undefined;
134
133
  readonly accessor: string;
135
134
  readonly sortKey?: string | undefined;
135
+ readonly successMessage?: string | undefined;
136
136
  }) => any) | undefined;
137
137
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
138
138
  declare const _default: typeof __VLS_export;
@@ -64,9 +64,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
64
64
  readonly readonly?: string | undefined;
65
65
  readonly grow?: boolean | undefined;
66
66
  readonly enableSorting?: boolean | undefined;
67
- readonly successMessage?: string | undefined;
68
67
  readonly accessor: string;
69
68
  readonly sortKey?: string | undefined;
69
+ readonly successMessage?: string | undefined;
70
70
  }) => any;
71
71
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
72
72
  "onUpdate:modelValue"?: ((value: {
@@ -130,9 +130,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
130
130
  readonly readonly?: string | undefined;
131
131
  readonly grow?: boolean | undefined;
132
132
  readonly enableSorting?: boolean | undefined;
133
- readonly successMessage?: string | undefined;
134
133
  readonly accessor: string;
135
134
  readonly sortKey?: string | undefined;
135
+ readonly successMessage?: string | undefined;
136
136
  }) => any) | undefined;
137
137
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
138
138
  declare const _default: typeof __VLS_export;
@@ -50,9 +50,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
50
50
  readonly locale: "en" | "ja" | "ko";
51
51
  readonly message: string;
52
52
  }[]];
53
- readonly successMessage?: string | undefined;
54
53
  readonly accessor: string;
55
54
  readonly sortKey?: string | undefined;
55
+ readonly successMessage?: string | undefined;
56
56
  }) => any;
57
57
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
58
58
  "onUpdate:modelValue"?: ((value: {
@@ -102,9 +102,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
102
102
  readonly locale: "en" | "ja" | "ko";
103
103
  readonly message: string;
104
104
  }[]];
105
- readonly successMessage?: string | undefined;
106
105
  readonly accessor: string;
107
106
  readonly sortKey?: string | undefined;
107
+ readonly successMessage?: string | undefined;
108
108
  }) => any) | undefined;
109
109
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
110
110
  declare const _default: typeof __VLS_export;
@@ -50,9 +50,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
50
50
  readonly locale: "en" | "ja" | "ko";
51
51
  readonly message: string;
52
52
  }[]];
53
- readonly successMessage?: string | undefined;
54
53
  readonly accessor: string;
55
54
  readonly sortKey?: string | undefined;
55
+ readonly successMessage?: string | undefined;
56
56
  }) => any;
57
57
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
58
58
  "onUpdate:modelValue"?: ((value: {
@@ -102,9 +102,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
102
102
  readonly locale: "en" | "ja" | "ko";
103
103
  readonly message: string;
104
104
  }[]];
105
- readonly successMessage?: string | undefined;
106
105
  readonly accessor: string;
107
106
  readonly sortKey?: string | undefined;
107
+ readonly successMessage?: string | undefined;
108
108
  }) => any) | undefined;
109
109
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
110
110
  declare const _default: typeof __VLS_export;
@@ -64,9 +64,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
64
64
  readonly readonly?: string | undefined;
65
65
  readonly grow?: boolean | undefined;
66
66
  readonly enableSorting?: boolean | undefined;
67
- readonly successMessage?: string | undefined;
68
67
  readonly accessor: string;
69
68
  readonly sortKey?: string | undefined;
69
+ readonly successMessage?: string | undefined;
70
70
  }) => any;
71
71
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
72
72
  "onUpdate:modelValue"?: ((value: {
@@ -130,9 +130,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
130
130
  readonly readonly?: string | undefined;
131
131
  readonly grow?: boolean | undefined;
132
132
  readonly enableSorting?: boolean | undefined;
133
- readonly successMessage?: string | undefined;
134
133
  readonly accessor: string;
135
134
  readonly sortKey?: string | undefined;
135
+ readonly successMessage?: string | undefined;
136
136
  }) => any) | undefined;
137
137
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
138
138
  declare const _default: typeof __VLS_export;
@@ -64,9 +64,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
64
64
  readonly readonly?: string | undefined;
65
65
  readonly grow?: boolean | undefined;
66
66
  readonly enableSorting?: boolean | undefined;
67
- readonly successMessage?: string | undefined;
68
67
  readonly accessor: string;
69
68
  readonly sortKey?: string | undefined;
69
+ readonly successMessage?: string | undefined;
70
70
  }) => any;
71
71
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
72
72
  "onUpdate:modelValue"?: ((value: {
@@ -130,9 +130,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
130
130
  readonly readonly?: string | undefined;
131
131
  readonly grow?: boolean | undefined;
132
132
  readonly enableSorting?: boolean | undefined;
133
- readonly successMessage?: string | undefined;
134
133
  readonly accessor: string;
135
134
  readonly sortKey?: string | undefined;
135
+ readonly successMessage?: string | undefined;
136
136
  }) => any) | undefined;
137
137
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
138
138
  declare const _default: typeof __VLS_export;
@@ -79,9 +79,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
79
79
  };
80
80
  }[];
81
81
  };
82
- readonly successMessage?: string | undefined;
83
82
  readonly accessor: string;
84
83
  readonly sortKey?: string | undefined;
84
+ readonly successMessage?: string | undefined;
85
85
  }) => any;
86
86
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
87
87
  "onUpdate:modelValue"?: ((value: {
@@ -160,9 +160,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
160
160
  };
161
161
  }[];
162
162
  };
163
- readonly successMessage?: string | undefined;
164
163
  readonly accessor: string;
165
164
  readonly sortKey?: string | undefined;
165
+ readonly successMessage?: string | undefined;
166
166
  }) => any) | undefined;
167
167
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
168
168
  declare const _default: typeof __VLS_export;
@@ -79,9 +79,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
79
79
  };
80
80
  }[];
81
81
  };
82
- readonly successMessage?: string | undefined;
83
82
  readonly accessor: string;
84
83
  readonly sortKey?: string | undefined;
84
+ readonly successMessage?: string | undefined;
85
85
  }) => any;
86
86
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
87
87
  "onUpdate:modelValue"?: ((value: {
@@ -160,9 +160,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
160
160
  };
161
161
  }[];
162
162
  };
163
- readonly successMessage?: string | undefined;
164
163
  readonly accessor: string;
165
164
  readonly sortKey?: string | undefined;
165
+ readonly successMessage?: string | undefined;
166
166
  }) => any) | undefined;
167
167
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
168
168
  declare const _default: typeof __VLS_export;
@@ -79,9 +79,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
79
79
  };
80
80
  }[];
81
81
  };
82
- readonly successMessage?: string | undefined;
83
82
  readonly accessor: string;
84
83
  readonly sortKey?: string | undefined;
84
+ readonly successMessage?: string | undefined;
85
85
  }) => any;
86
86
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
87
87
  "onUpdate:modelValue"?: ((value: {
@@ -160,9 +160,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
160
160
  };
161
161
  }[];
162
162
  };
163
- readonly successMessage?: string | undefined;
164
163
  readonly accessor: string;
165
164
  readonly sortKey?: string | undefined;
165
+ readonly successMessage?: string | undefined;
166
166
  }) => any) | undefined;
167
167
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
168
168
  declare const _default: typeof __VLS_export;
@@ -79,9 +79,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
79
79
  };
80
80
  }[];
81
81
  };
82
- readonly successMessage?: string | undefined;
83
82
  readonly accessor: string;
84
83
  readonly sortKey?: string | undefined;
84
+ readonly successMessage?: string | undefined;
85
85
  }) => any;
86
86
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
87
87
  "onUpdate:modelValue"?: ((value: {
@@ -160,9 +160,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
160
160
  };
161
161
  }[];
162
162
  };
163
- readonly successMessage?: string | undefined;
164
163
  readonly accessor: string;
165
164
  readonly sortKey?: string | undefined;
165
+ readonly successMessage?: string | undefined;
166
166
  }) => any) | undefined;
167
167
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
168
168
  declare const _default: typeof __VLS_export;
@@ -87,8 +87,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
87
87
  readonly target: string;
88
88
  readonly operation: string;
89
89
  }[] | undefined;
90
- readonly successMessage?: string | undefined;
91
90
  readonly accessor: string;
91
+ readonly successMessage?: string | undefined;
92
92
  };
93
93
  }) => any;
94
94
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
@@ -176,8 +176,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
176
176
  readonly target: string;
177
177
  readonly operation: string;
178
178
  }[] | undefined;
179
- readonly successMessage?: string | undefined;
180
179
  readonly accessor: string;
180
+ readonly successMessage?: string | undefined;
181
181
  };
182
182
  }) => any) | undefined;
183
183
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -87,8 +87,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
87
87
  readonly target: string;
88
88
  readonly operation: string;
89
89
  }[] | undefined;
90
- readonly successMessage?: string | undefined;
91
90
  readonly accessor: string;
91
+ readonly successMessage?: string | undefined;
92
92
  };
93
93
  }) => any;
94
94
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
@@ -176,8 +176,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
176
176
  readonly target: string;
177
177
  readonly operation: string;
178
178
  }[] | undefined;
179
- readonly successMessage?: string | undefined;
180
179
  readonly accessor: string;
180
+ readonly successMessage?: string | undefined;
181
181
  };
182
182
  }) => any) | undefined;
183
183
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -9,6 +9,7 @@ import { useI18n } from "vue-i18n";
9
9
  import { asRequest, fetchJsonOption } from "../../../../../share/request";
10
10
  import { cel as _rawCel } from "../../../../../utils/cel";
11
11
  import { celBindings, injectCELContext } from "../../../../../utils/cel-context";
12
+ import { publishSelection } from "../../../../../utils/selections-registry";
12
13
  import { getLocalizedText } from "../../../../../share/locale";
13
14
  import { dispatchTriggers, useEventChannel } from "../../../../../share/event-bus";
14
15
  import {
@@ -97,7 +98,8 @@ const staticEntries = computed(() => {
97
98
  value: item.value.value,
98
99
  label: labelTpl ? safeInterpolate(labelTpl, {}) : "",
99
100
  tooltip: tooltipTpl ? safeInterpolate(tooltipTpl, {}) : void 0,
100
- keywords: (item.keywords ?? []).join(" ")
101
+ keywords: (item.keywords ?? []).join(" "),
102
+ raw: item
101
103
  };
102
104
  });
103
105
  });
@@ -205,7 +207,8 @@ const remoteEntries = computed(() => {
205
207
  key: String(idx),
206
208
  label: labelOf(option),
207
209
  value: valueOf(option),
208
- keywords: keywordsOf(option)
210
+ keywords: keywordsOf(option),
211
+ raw: option
209
212
  }));
210
213
  });
211
214
  const entries = computed(
@@ -244,6 +247,14 @@ const selectedKeySet = computed(() => new Set(selectedKeys.value));
244
247
  const selectedEntries = computed(
245
248
  () => selectedKeys.value.map((k) => entries.value.find((e) => e.key === k)).filter((e) => !!e)
246
249
  );
250
+ publishSelection(
251
+ props.column.id,
252
+ () => selectedEntries.value.length > 0 ? selectedEntries.value : void 0,
253
+ {
254
+ identity: (list) => list.map((e) => e.key).join(" "),
255
+ raw: (list) => list.map((e) => e.raw)
256
+ }
257
+ );
247
258
  const triggerLabel = computed(() => {
248
259
  const arr = selectedEntries.value;
249
260
  if (arr.length === 0) return "";
@@ -7,6 +7,7 @@ export declare const compatibilityDate: "2026-05-28";
7
7
  export declare const metadata: {
8
8
  readonly name: "多选";
9
9
  readonly icon: "fluent:chevron-down-20-regular";
10
+ readonly selection: true;
10
11
  };
11
12
  export declare function itemSchema(configure: (env: Environment) => void): Schema.Struct<{
12
13
  id: Schema.refine<string, typeof Schema.String>;
@@ -15,7 +15,10 @@ export const type = "com.shwfed.table.column.combobox-multi";
15
15
  export const compatibilityDate = "2026-05-28";
16
16
  export const metadata = {
17
17
  name: "\u591A\u9009",
18
- icon: "fluent:chevron-down-20-regular"
18
+ icon: "fluent:chevron-down-20-regular",
19
+ // Publishes its resolved options (array) to the per-row `selections` registry
20
+ // (runtime.vue), readable via `selections["<id>"]`.
21
+ selection: true
19
22
  };
20
23
  const isListType = (actual) => actual === "dyn" || actual.startsWith("list");
21
24
  const isKeywordsType = (actual) => actual === "dyn" || actual.startsWith("list") || actual.startsWith("optional");
@@ -87,8 +87,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
87
87
  readonly target: string;
88
88
  readonly operation: string;
89
89
  }[] | undefined;
90
- readonly successMessage?: string | undefined;
91
90
  readonly accessor: string;
91
+ readonly successMessage?: string | undefined;
92
92
  };
93
93
  }) => any;
94
94
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
@@ -176,8 +176,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
176
176
  readonly target: string;
177
177
  readonly operation: string;
178
178
  }[] | undefined;
179
- readonly successMessage?: string | undefined;
180
179
  readonly accessor: string;
180
+ readonly successMessage?: string | undefined;
181
181
  };
182
182
  }) => any) | undefined;
183
183
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -87,8 +87,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
87
87
  readonly target: string;
88
88
  readonly operation: string;
89
89
  }[] | undefined;
90
- readonly successMessage?: string | undefined;
91
90
  readonly accessor: string;
91
+ readonly successMessage?: string | undefined;
92
92
  };
93
93
  }) => any;
94
94
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
@@ -176,8 +176,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
176
176
  readonly target: string;
177
177
  readonly operation: string;
178
178
  }[] | undefined;
179
- readonly successMessage?: string | undefined;
180
179
  readonly accessor: string;
180
+ readonly successMessage?: string | undefined;
181
181
  };
182
182
  }) => any) | undefined;
183
183
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -9,6 +9,7 @@ import { useI18n } from "vue-i18n";
9
9
  import { asRequest, fetchJsonOption } from "../../../../../share/request";
10
10
  import { cel as _rawCel } from "../../../../../utils/cel";
11
11
  import { celBindings, injectCELContext } from "../../../../../utils/cel-context";
12
+ import { publishSelection } from "../../../../../utils/selections-registry";
12
13
  import { getLocalizedText } from "../../../../../share/locale";
13
14
  import { dispatchTriggers, useEventChannel } from "../../../../../share/event-bus";
14
15
  import {
@@ -97,7 +98,8 @@ const staticEntries = computed(() => {
97
98
  value: item.value.value,
98
99
  label: labelTpl ? safeInterpolate(labelTpl, {}) : "",
99
100
  tooltip: tooltipTpl ? safeInterpolate(tooltipTpl, {}) : void 0,
100
- keywords: (item.keywords ?? []).join(" ")
101
+ keywords: (item.keywords ?? []).join(" "),
102
+ raw: item
101
103
  };
102
104
  });
103
105
  });
@@ -205,7 +207,8 @@ const remoteEntries = computed(() => {
205
207
  key: String(idx),
206
208
  label: labelOf(option),
207
209
  value: valueOf(option),
208
- keywords: keywordsOf(option)
210
+ keywords: keywordsOf(option),
211
+ raw: option
209
212
  }));
210
213
  });
211
214
  const entries = computed(
@@ -232,6 +235,11 @@ const selectedEntry = computed(
232
235
  );
233
236
  const selectedKey = computed(() => selectedEntry.value?.key);
234
237
  const selectedLabel = computed(() => selectedEntry.value?.label ?? "");
238
+ publishSelection(
239
+ props.column.id,
240
+ () => selectedEntry.value,
241
+ { identity: (entry) => entry.key, raw: (entry) => entry.raw }
242
+ );
235
243
  const open = ref(false);
236
244
  const isDisabled = computed(
237
245
  () => !isInteractive.value || isDisabledByConfig.value || pending.value
@@ -7,6 +7,7 @@ export declare const compatibilityDate: "2026-05-28";
7
7
  export declare const metadata: {
8
8
  readonly name: "单选";
9
9
  readonly icon: "fluent:chevron-down-20-regular";
10
+ readonly selection: true;
10
11
  };
11
12
  export declare function itemSchema(configure: (env: Environment) => void): Schema.Struct<{
12
13
  id: Schema.refine<string, typeof Schema.String>;
@@ -15,7 +15,10 @@ export const type = "com.shwfed.table.column.combobox-single";
15
15
  export const compatibilityDate = "2026-05-28";
16
16
  export const metadata = {
17
17
  name: "\u5355\u9009",
18
- icon: "fluent:chevron-down-20-regular"
18
+ icon: "fluent:chevron-down-20-regular",
19
+ // Publishes its resolved option (the source record) to the per-row
20
+ // `selections` registry (runtime.vue), readable via `selections["<id>"]`.
21
+ selection: true
19
22
  };
20
23
  const isListType = (actual) => actual === "dyn" || actual.startsWith("list");
21
24
  const isKeywordsType = (actual) => actual === "dyn" || actual.startsWith("list") || actual.startsWith("optional");