@shwfed/config 3.0.4 → 3.0.7

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 (87) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/runtime/components/actions/buttons/2026-04-21/com.shwfed.actions.button.navigation/runtime.vue +4 -10
  3. package/dist/runtime/components/actions/buttons/2026-05-21/com.shwfed.actions.button.http.download/schema.d.ts +1 -1
  4. package/dist/runtime/components/actions/buttons/2026-05-21/com.shwfed.actions.button.http.download/schema.js +2 -2
  5. package/dist/runtime/components/actions/buttons/2026-07-13/com.shwfed.actions.button.state.write/runtime.vue +1 -1
  6. package/dist/runtime/components/actions/buttons/2026-07-13/com.shwfed.actions.button.state.write/schema.d.ts +4 -2
  7. package/dist/runtime/components/actions/buttons/2026-07-13/com.shwfed.actions.button.state.write/schema.js +1 -1
  8. package/dist/runtime/components/actions/config.vue +109 -3
  9. package/dist/runtime/components/actions/utils/steps.d.ts +1 -1
  10. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.d.vue.ts +74 -74
  11. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.vue.d.ts +74 -74
  12. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.d.vue.ts +74 -74
  13. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.vue.d.ts +74 -74
  14. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/schema.d.ts +37 -37
  15. package/dist/runtime/components/config/history-picker.vue +6 -4
  16. package/dist/runtime/components/config/index.vue +25 -0
  17. package/dist/runtime/components/config/prune-dialog.d.vue.ts +14 -0
  18. package/dist/runtime/components/config/prune-dialog.vue +83 -0
  19. package/dist/runtime/components/config/prune-dialog.vue.d.ts +14 -0
  20. package/dist/runtime/components/config/schema.js +2 -2
  21. package/dist/runtime/components/config/use-editor.d.ts +9 -0
  22. package/dist/runtime/components/config/use-editor.js +39 -11
  23. package/dist/runtime/components/config/utils/linkage.d.ts +8 -0
  24. package/dist/runtime/components/config/utils/linkage.js +7 -2
  25. package/dist/runtime/components/config/utils/prune.d.ts +68 -0
  26. package/dist/runtime/components/config/utils/prune.js +92 -0
  27. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/config.d.vue.ts +22 -22
  28. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/config.vue.d.ts +22 -22
  29. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.d.vue.ts +22 -22
  30. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.vue.d.ts +22 -22
  31. package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/config.d.vue.ts +31 -0
  32. package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/config.vue +191 -0
  33. package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/config.vue.d.ts +31 -0
  34. package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/expand.d.ts +49 -0
  35. package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/expand.js +87 -0
  36. package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/runtime.d.vue.ts +8 -0
  37. package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/runtime.vue +72 -0
  38. package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/runtime.vue.d.ts +8 -0
  39. package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/schema.d.ts +59 -0
  40. package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/schema.js +139 -0
  41. package/dist/runtime/components/form/unit-config.vue +2 -2
  42. package/dist/runtime/components/form/utils/form-vars.d.ts +5 -15
  43. package/dist/runtime/components/form/utils/form-vars.js +12 -6
  44. package/dist/runtime/components/operations/2026-06-11/com.shwfed.operation.http.request.json/schema.js +2 -2
  45. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.http.download/schema.js +2 -2
  46. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.navigation/runtime.js +5 -11
  47. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.navigation/schema.js +1 -1
  48. package/dist/runtime/components/operations/utils/resolve.d.ts +1 -1
  49. package/dist/runtime/components/operations/utils/step-vars.d.ts +4 -2
  50. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.select/runtime.vue +1 -21
  51. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.select/schema.d.ts +2 -0
  52. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.select/schema.js +16 -1
  53. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +2 -2
  54. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +2 -2
  55. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +2 -2
  56. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +2 -2
  57. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +2 -2
  58. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +2 -2
  59. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +2 -2
  60. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +2 -2
  61. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +2 -2
  62. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +2 -2
  63. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +2 -2
  64. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +2 -2
  65. package/dist/runtime/components/table/config.vue +2 -2
  66. package/dist/runtime/components/table/index.vue +15 -0
  67. package/dist/runtime/components/table/schema.d.ts +74 -74
  68. package/dist/runtime/components/table/utils/resolve.d.ts +26 -0
  69. package/dist/runtime/components/table/utils/resolve.js +2 -1
  70. package/dist/runtime/components/ui/expression-editor/picker-entries.js +1 -1
  71. package/dist/runtime/components/ui/expression-editor/step-chip-extension.js +1 -1
  72. package/dist/runtime/components/ui/expression-editor/step-refs.js +1 -1
  73. package/dist/runtime/share/clipboard.d.ts +15 -9
  74. package/dist/runtime/share/clipboard.js +22 -10
  75. package/dist/runtime/share/event-bus.js +2 -2
  76. package/dist/runtime/share/navigation.d.ts +1 -0
  77. package/dist/runtime/share/navigation.js +4 -0
  78. package/dist/runtime/utils/cel-context.d.ts +2 -2
  79. package/dist/runtime/vendor/cel-js/CLAUDE.md +7 -2
  80. package/dist/runtime/vendor/cel-js/PROMPT.md +27 -0
  81. package/dist/runtime/vendor/cel-js/lib/evaluator.js +2 -0
  82. package/dist/runtime/vendor/cel-js/lib/globals.d.ts +2 -0
  83. package/dist/runtime/vendor/cel-js/lib/globals.js +10 -0
  84. package/dist/runtime/vendor/cel-js/lib/map-builtins.d.ts +2 -0
  85. package/dist/runtime/vendor/cel-js/lib/map-builtins.js +80 -0
  86. package/dist/runtime/vendor/cel-js/lib/operators.js +2 -12
  87. package/package.json +1 -1
@@ -43,6 +43,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
43
43
  readonly data: string;
44
44
  readonly request?: string | undefined;
45
45
  };
46
+ readonly enableSorting?: boolean | undefined;
46
47
  readonly nodeKey: string;
47
48
  readonly nodeChildren: string;
48
49
  readonly nodeLabel: readonly [{
@@ -52,7 +53,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
52
53
  readonly locale: "en" | "ja" | "ko";
53
54
  readonly message: string;
54
55
  }[]];
55
- readonly enableSorting?: boolean | undefined;
56
56
  readonly nodeTooltip?: readonly [{
57
57
  readonly locale: "zh";
58
58
  readonly message: string;
@@ -105,6 +105,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
105
105
  readonly data: string;
106
106
  readonly request?: string | undefined;
107
107
  };
108
+ readonly enableSorting?: boolean | undefined;
108
109
  readonly nodeKey: string;
109
110
  readonly nodeChildren: string;
110
111
  readonly nodeLabel: readonly [{
@@ -114,7 +115,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
114
115
  readonly locale: "en" | "ja" | "ko";
115
116
  readonly message: string;
116
117
  }[]];
117
- readonly enableSorting?: boolean | undefined;
118
118
  readonly nodeTooltip?: readonly [{
119
119
  readonly locale: "zh";
120
120
  readonly message: string;
@@ -44,6 +44,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
44
44
  readonly data: string;
45
45
  readonly request?: string | undefined;
46
46
  };
47
+ readonly enableSorting?: boolean | undefined;
47
48
  readonly nodeKey: string;
48
49
  readonly nodeChildren: string;
49
50
  readonly nodeLabel: readonly [{
@@ -53,7 +54,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
53
54
  readonly locale: "en" | "ja" | "ko";
54
55
  readonly message: string;
55
56
  }[]];
56
- readonly enableSorting?: boolean | undefined;
57
57
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
58
58
  readonly nodeTooltip?: readonly [{
59
59
  readonly locale: "zh";
@@ -108,6 +108,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
108
108
  readonly data: string;
109
109
  readonly request?: string | undefined;
110
110
  };
111
+ readonly enableSorting?: boolean | undefined;
111
112
  readonly nodeKey: string;
112
113
  readonly nodeChildren: string;
113
114
  readonly nodeLabel: readonly [{
@@ -117,7 +118,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
117
118
  readonly locale: "en" | "ja" | "ko";
118
119
  readonly message: string;
119
120
  }[]];
120
- readonly enableSorting?: boolean | undefined;
121
121
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
122
122
  readonly nodeTooltip?: readonly [{
123
123
  readonly locale: "zh";
@@ -44,6 +44,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
44
44
  readonly data: string;
45
45
  readonly request?: string | undefined;
46
46
  };
47
+ readonly enableSorting?: boolean | undefined;
47
48
  readonly nodeKey: string;
48
49
  readonly nodeChildren: string;
49
50
  readonly nodeLabel: readonly [{
@@ -53,7 +54,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
53
54
  readonly locale: "en" | "ja" | "ko";
54
55
  readonly message: string;
55
56
  }[]];
56
- readonly enableSorting?: boolean | undefined;
57
57
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
58
58
  readonly nodeTooltip?: readonly [{
59
59
  readonly locale: "zh";
@@ -108,6 +108,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
108
108
  readonly data: string;
109
109
  readonly request?: string | undefined;
110
110
  };
111
+ readonly enableSorting?: boolean | undefined;
111
112
  readonly nodeKey: string;
112
113
  readonly nodeChildren: string;
113
114
  readonly nodeLabel: readonly [{
@@ -117,7 +118,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
117
118
  readonly locale: "en" | "ja" | "ko";
118
119
  readonly message: string;
119
120
  }[]];
120
- readonly enableSorting?: boolean | undefined;
121
121
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
122
122
  readonly nodeTooltip?: readonly [{
123
123
  readonly locale: "zh";
@@ -44,6 +44,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
44
44
  readonly data: string;
45
45
  readonly request?: string | undefined;
46
46
  };
47
+ readonly enableSorting?: boolean | undefined;
47
48
  readonly nodeKey: string;
48
49
  readonly nodeChildren: string;
49
50
  readonly nodeLabel: readonly [{
@@ -53,7 +54,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
53
54
  readonly locale: "en" | "ja" | "ko";
54
55
  readonly message: string;
55
56
  }[]];
56
- readonly enableSorting?: boolean | undefined;
57
57
  readonly nodeTooltip?: readonly [{
58
58
  readonly locale: "zh";
59
59
  readonly message: string;
@@ -107,6 +107,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
107
107
  readonly data: string;
108
108
  readonly request?: string | undefined;
109
109
  };
110
+ readonly enableSorting?: boolean | undefined;
110
111
  readonly nodeKey: string;
111
112
  readonly nodeChildren: string;
112
113
  readonly nodeLabel: readonly [{
@@ -116,7 +117,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
116
117
  readonly locale: "en" | "ja" | "ko";
117
118
  readonly message: string;
118
119
  }[]];
119
- readonly enableSorting?: boolean | undefined;
120
120
  readonly nodeTooltip?: readonly [{
121
121
  readonly locale: "zh";
122
122
  readonly message: string;
@@ -44,6 +44,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
44
44
  readonly data: string;
45
45
  readonly request?: string | undefined;
46
46
  };
47
+ readonly enableSorting?: boolean | undefined;
47
48
  readonly nodeKey: string;
48
49
  readonly nodeChildren: string;
49
50
  readonly nodeLabel: readonly [{
@@ -53,7 +54,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
53
54
  readonly locale: "en" | "ja" | "ko";
54
55
  readonly message: string;
55
56
  }[]];
56
- readonly enableSorting?: boolean | undefined;
57
57
  readonly nodeTooltip?: readonly [{
58
58
  readonly locale: "zh";
59
59
  readonly message: string;
@@ -107,6 +107,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
107
107
  readonly data: string;
108
108
  readonly request?: string | undefined;
109
109
  };
110
+ readonly enableSorting?: boolean | undefined;
110
111
  readonly nodeKey: string;
111
112
  readonly nodeChildren: string;
112
113
  readonly nodeLabel: readonly [{
@@ -116,7 +117,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
116
117
  readonly locale: "en" | "ja" | "ko";
117
118
  readonly message: string;
118
119
  }[]];
119
- readonly enableSorting?: boolean | undefined;
120
120
  readonly nodeTooltip?: readonly [{
121
121
  readonly locale: "zh";
122
122
  readonly message: string;
@@ -45,10 +45,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
45
45
  readonly data: string;
46
46
  readonly request?: string | undefined;
47
47
  };
48
+ readonly enableSorting?: boolean | undefined;
48
49
  readonly nodeKey: string;
49
50
  readonly nodeChildren: string;
50
51
  readonly nodeLabel: string;
51
- readonly enableSorting?: boolean | undefined;
52
52
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
53
53
  readonly nodeTooltip?: readonly [{
54
54
  readonly locale: "zh";
@@ -104,10 +104,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
104
104
  readonly data: string;
105
105
  readonly request?: string | undefined;
106
106
  };
107
+ readonly enableSorting?: boolean | undefined;
107
108
  readonly nodeKey: string;
108
109
  readonly nodeChildren: string;
109
110
  readonly nodeLabel: string;
110
- readonly enableSorting?: boolean | undefined;
111
111
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
112
112
  readonly nodeTooltip?: readonly [{
113
113
  readonly locale: "zh";
@@ -45,10 +45,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
45
45
  readonly data: string;
46
46
  readonly request?: string | undefined;
47
47
  };
48
+ readonly enableSorting?: boolean | undefined;
48
49
  readonly nodeKey: string;
49
50
  readonly nodeChildren: string;
50
51
  readonly nodeLabel: string;
51
- readonly enableSorting?: boolean | undefined;
52
52
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
53
53
  readonly nodeTooltip?: readonly [{
54
54
  readonly locale: "zh";
@@ -104,10 +104,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
104
104
  readonly data: string;
105
105
  readonly request?: string | undefined;
106
106
  };
107
+ readonly enableSorting?: boolean | undefined;
107
108
  readonly nodeKey: string;
108
109
  readonly nodeChildren: string;
109
110
  readonly nodeLabel: string;
110
- readonly enableSorting?: boolean | undefined;
111
111
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
112
112
  readonly nodeTooltip?: readonly [{
113
113
  readonly locale: "zh";
@@ -45,10 +45,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
45
45
  readonly data: string;
46
46
  readonly request?: string | undefined;
47
47
  };
48
+ readonly enableSorting?: boolean | undefined;
48
49
  readonly nodeKey: string;
49
50
  readonly nodeChildren: string;
50
51
  readonly nodeLabel: string;
51
- readonly enableSorting?: boolean | undefined;
52
52
  readonly nodeTooltip?: readonly [{
53
53
  readonly locale: "zh";
54
54
  readonly message: string;
@@ -103,10 +103,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
103
103
  readonly data: string;
104
104
  readonly request?: string | undefined;
105
105
  };
106
+ readonly enableSorting?: boolean | undefined;
106
107
  readonly nodeKey: string;
107
108
  readonly nodeChildren: string;
108
109
  readonly nodeLabel: string;
109
- readonly enableSorting?: boolean | undefined;
110
110
  readonly nodeTooltip?: readonly [{
111
111
  readonly locale: "zh";
112
112
  readonly message: string;
@@ -45,10 +45,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
45
45
  readonly data: string;
46
46
  readonly request?: string | undefined;
47
47
  };
48
+ readonly enableSorting?: boolean | undefined;
48
49
  readonly nodeKey: string;
49
50
  readonly nodeChildren: string;
50
51
  readonly nodeLabel: string;
51
- readonly enableSorting?: boolean | undefined;
52
52
  readonly nodeTooltip?: readonly [{
53
53
  readonly locale: "zh";
54
54
  readonly message: string;
@@ -103,10 +103,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
103
103
  readonly data: string;
104
104
  readonly request?: string | undefined;
105
105
  };
106
+ readonly enableSorting?: boolean | undefined;
106
107
  readonly nodeKey: string;
107
108
  readonly nodeChildren: string;
108
109
  readonly nodeLabel: string;
109
- readonly enableSorting?: boolean | undefined;
110
110
  readonly nodeTooltip?: readonly [{
111
111
  readonly locale: "zh";
112
112
  readonly message: string;
@@ -610,14 +610,14 @@ async function copyColumns() {
610
610
  const set = pickedColumnIdSet.value;
611
611
  const cols = orderedColumnIds.value.filter((id) => set.has(id)).map((id) => editingColumns.value.find((c) => c.id === id)).filter((c) => !!c).map(({ groupId: _g, ...rest }) => rest);
612
612
  if (cols.length === 0) return;
613
- const ok = await writeClip("table", cols);
613
+ const ok = await writeClip("table", { items: cols });
614
614
  if (ok) toast.success(`\u5DF2\u590D\u5236 ${cols.length} \u5217`);
615
615
  else toast.error("\u590D\u5236\u5931\u8D25");
616
616
  }
617
617
  async function pasteColumns() {
618
618
  const clip = await readClip();
619
619
  if (!clip || clip.surface !== "table") return;
620
- const { items } = reidFragment(clip.items);
620
+ const { items } = reidFragment(clip);
621
621
  const pasted = items.map(({ groupId: _g, ...rest }) => rest);
622
622
  if (pasted.length === 0) return;
623
623
  editingColumns.value = [...editingColumns.value, ...pasted];
@@ -324,6 +324,20 @@ const getRowId = createRowKeyResolver({
324
324
  }
325
325
  }
326
326
  });
327
+ const rowSelectionPredicates = computed(() => effectiveColumns.value.flatMap((col) => {
328
+ const contribute = findColumn(col.type, col.compatibilityDate)?.rowSelection;
329
+ if (!contribute) return [];
330
+ return [contribute(col, {
331
+ $cel,
332
+ rowScope: (row, index) => celScope(inheritedContext, { row, index })
333
+ })];
334
+ }));
335
+ function canSelectRow(row) {
336
+ const predicates = rowSelectionPredicates.value;
337
+ if (predicates.length === 0) return true;
338
+ const index = getDisplayIndex(row);
339
+ return predicates.every((p) => p(row.original, index));
340
+ }
327
341
  const tableApi = useVueTable({
328
342
  get columns() {
329
343
  return columns.value;
@@ -331,6 +345,7 @@ const tableApi = useVueTable({
331
345
  get data() {
332
346
  return rowData.value;
333
347
  },
348
+ enableRowSelection: canSelectRow,
334
349
  get manualPagination() {
335
350
  return isManualPagination.value;
336
351
  },
@@ -158,40 +158,6 @@ export declare function TableConfig(configure: (env: Environment) => void): Sche
158
158
  readonly message: string;
159
159
  }[]] | undefined;
160
160
  }[];
161
- readonly query?: {
162
- readonly style?: string | undefined;
163
- readonly id?: string | undefined;
164
- readonly initial?: {
165
- readonly data: string;
166
- readonly request?: string | undefined;
167
- } | undefined;
168
- readonly displayName?: string | undefined;
169
- readonly kind: "shwfed.component.form";
170
- readonly fields: readonly any[];
171
- readonly layouts: readonly {
172
- readonly name: string;
173
- readonly layout: {
174
- readonly style?: string | undefined;
175
- readonly columns: number;
176
- readonly gap?: number | undefined;
177
- readonly rows?: number | undefined;
178
- readonly placements: {
179
- readonly [x: string]: {
180
- readonly area: readonly [readonly [number, number], readonly [number, number]];
181
- readonly v?: "stretch" | "center" | "end" | "start" | undefined;
182
- readonly h?: "stretch" | "center" | "end" | "start" | undefined;
183
- };
184
- };
185
- };
186
- readonly media?: string | undefined;
187
- }[];
188
- readonly readonly?: string | undefined;
189
- } | undefined;
190
- readonly dataSource?: {
191
- readonly data: string;
192
- readonly total?: string | undefined;
193
- readonly request?: string | undefined;
194
- } | undefined;
195
161
  readonly actions?: {
196
162
  readonly size: "default" | "sm" | "xs";
197
163
  readonly style?: string | undefined;
@@ -259,6 +225,40 @@ export declare function TableConfig(configure: (env: Environment) => void): Sche
259
225
  readonly variant?: "default" | "link" | "destructive" | "primary" | "ghost" | undefined;
260
226
  }[];
261
227
  } | undefined;
228
+ readonly query?: {
229
+ readonly style?: string | undefined;
230
+ readonly id?: string | undefined;
231
+ readonly initial?: {
232
+ readonly data: string;
233
+ readonly request?: string | undefined;
234
+ } | undefined;
235
+ readonly displayName?: string | undefined;
236
+ readonly kind: "shwfed.component.form";
237
+ readonly fields: readonly any[];
238
+ readonly layouts: readonly {
239
+ readonly name: string;
240
+ readonly layout: {
241
+ readonly style?: string | undefined;
242
+ readonly columns: number;
243
+ readonly gap?: number | undefined;
244
+ readonly rows?: number | undefined;
245
+ readonly placements: {
246
+ readonly [x: string]: {
247
+ readonly area: readonly [readonly [number, number], readonly [number, number]];
248
+ readonly v?: "stretch" | "center" | "end" | "start" | undefined;
249
+ readonly h?: "stretch" | "center" | "end" | "start" | undefined;
250
+ };
251
+ };
252
+ };
253
+ readonly media?: string | undefined;
254
+ }[];
255
+ readonly readonly?: string | undefined;
256
+ } | undefined;
257
+ readonly dataSource?: {
258
+ readonly data: string;
259
+ readonly total?: string | undefined;
260
+ readonly request?: string | undefined;
261
+ } | undefined;
262
262
  readonly bottomActions?: {
263
263
  readonly size: "default" | "sm" | "xs";
264
264
  readonly style?: string | undefined;
@@ -352,6 +352,9 @@ export declare function TableConfig(configure: (env: Environment) => void): Sche
352
352
  readonly expanded?: boolean | {
353
353
  readonly [x: string]: boolean;
354
354
  } | undefined;
355
+ readonly rowSelection?: {
356
+ readonly [x: string]: boolean;
357
+ } | undefined;
355
358
  readonly columnVisibility?: {
356
359
  readonly [x: string]: boolean;
357
360
  } | undefined;
@@ -372,9 +375,6 @@ export declare function TableConfig(configure: (env: Environment) => void): Sche
372
375
  readonly columnSizing?: {
373
376
  readonly [x: string]: number;
374
377
  } | undefined;
375
- readonly rowSelection?: {
376
- readonly [x: string]: boolean;
377
- } | undefined;
378
378
  } | undefined;
379
379
  }, Schema.Struct<{
380
380
  kind: Schema.tag<"shwfed.component.table">;
@@ -827,40 +827,6 @@ export declare function createTableConfig(body: Omit<Schema.Schema.Type<ReturnTy
827
827
  readonly message: string;
828
828
  }[]] | undefined;
829
829
  }[];
830
- query?: {
831
- readonly style?: string | undefined;
832
- readonly id?: string | undefined;
833
- readonly initial?: {
834
- readonly data: string;
835
- readonly request?: string | undefined;
836
- } | undefined;
837
- readonly displayName?: string | undefined;
838
- readonly kind: "shwfed.component.form";
839
- readonly fields: readonly any[];
840
- readonly layouts: readonly {
841
- readonly name: string;
842
- readonly layout: {
843
- readonly style?: string | undefined;
844
- readonly columns: number;
845
- readonly gap?: number | undefined;
846
- readonly rows?: number | undefined;
847
- readonly placements: {
848
- readonly [x: string]: {
849
- readonly area: readonly [readonly [number, number], readonly [number, number]];
850
- readonly v?: "stretch" | "center" | "end" | "start" | undefined;
851
- readonly h?: "stretch" | "center" | "end" | "start" | undefined;
852
- };
853
- };
854
- };
855
- readonly media?: string | undefined;
856
- }[];
857
- readonly readonly?: string | undefined;
858
- } | undefined;
859
- dataSource?: {
860
- readonly data: string;
861
- readonly total?: string | undefined;
862
- readonly request?: string | undefined;
863
- } | undefined;
864
830
  actions?: {
865
831
  readonly size: "default" | "sm" | "xs";
866
832
  readonly style?: string | undefined;
@@ -928,6 +894,40 @@ export declare function createTableConfig(body: Omit<Schema.Schema.Type<ReturnTy
928
894
  readonly variant?: "default" | "link" | "destructive" | "primary" | "ghost" | undefined;
929
895
  }[];
930
896
  } | undefined;
897
+ query?: {
898
+ readonly style?: string | undefined;
899
+ readonly id?: string | undefined;
900
+ readonly initial?: {
901
+ readonly data: string;
902
+ readonly request?: string | undefined;
903
+ } | undefined;
904
+ readonly displayName?: string | undefined;
905
+ readonly kind: "shwfed.component.form";
906
+ readonly fields: readonly any[];
907
+ readonly layouts: readonly {
908
+ readonly name: string;
909
+ readonly layout: {
910
+ readonly style?: string | undefined;
911
+ readonly columns: number;
912
+ readonly gap?: number | undefined;
913
+ readonly rows?: number | undefined;
914
+ readonly placements: {
915
+ readonly [x: string]: {
916
+ readonly area: readonly [readonly [number, number], readonly [number, number]];
917
+ readonly v?: "stretch" | "center" | "end" | "start" | undefined;
918
+ readonly h?: "stretch" | "center" | "end" | "start" | undefined;
919
+ };
920
+ };
921
+ };
922
+ readonly media?: string | undefined;
923
+ }[];
924
+ readonly readonly?: string | undefined;
925
+ } | undefined;
926
+ dataSource?: {
927
+ readonly data: string;
928
+ readonly total?: string | undefined;
929
+ readonly request?: string | undefined;
930
+ } | undefined;
931
931
  bottomActions?: {
932
932
  readonly size: "default" | "sm" | "xs";
933
933
  readonly style?: string | undefined;
@@ -1021,6 +1021,9 @@ export declare function createTableConfig(body: Omit<Schema.Schema.Type<ReturnTy
1021
1021
  readonly expanded?: boolean | {
1022
1022
  readonly [x: string]: boolean;
1023
1023
  } | undefined;
1024
+ readonly rowSelection?: {
1025
+ readonly [x: string]: boolean;
1026
+ } | undefined;
1024
1027
  readonly columnVisibility?: {
1025
1028
  readonly [x: string]: boolean;
1026
1029
  } | undefined;
@@ -1041,9 +1044,6 @@ export declare function createTableConfig(body: Omit<Schema.Schema.Type<ReturnTy
1041
1044
  readonly columnSizing?: {
1042
1045
  readonly [x: string]: number;
1043
1046
  } | undefined;
1044
- readonly rowSelection?: {
1045
- readonly [x: string]: boolean;
1046
- } | undefined;
1047
1047
  } | undefined;
1048
1048
  kind: typeof KIND;
1049
1049
  };
@@ -64,6 +64,26 @@ export type ColumnExpandDeps = Readonly<{
64
64
  seen: ReadonlySet<string>;
65
65
  }>;
66
66
  export type ColumnExpand = (value: any, deps: ColumnExpandDeps) => ColumnValue[];
67
+ /**
68
+ * Capabilities a column's row-selection predicate needs from the host.
69
+ */
70
+ export type RowSelectionDeps = Readonly<{
71
+ $cel: CelEvaluator;
72
+ /**
73
+ * CEL scope for one row — inherited host vars plus `row` / `index`, matching
74
+ * what a cell sees. Lazy, so a predicate only subscribes to the vars it reads.
75
+ */
76
+ rowScope: (row: unknown, index: number) => Record<string, unknown>;
77
+ }>;
78
+ /**
79
+ * Whether a row may be selected, per this column's config. A column exporting
80
+ * this contributes to the table-level `enableRowSelection` option, so TanStack
81
+ * itself knows which rows are selectable: select-all, shift-range and
82
+ * `row.getCanSelect()` then all agree with what the cell renders. Without it,
83
+ * a cell that merely *renders* itself disabled still gets checked by select-all
84
+ * — and the user cannot uncheck it. Columns with no selection semantics omit it.
85
+ */
86
+ export type ColumnRowSelection = (value: any, deps: RowSelectionDeps) => (row: unknown, index: number) => boolean;
67
87
  /**
68
88
  * Capabilities a column-migration function may need from the host. Mirrors
69
89
  * the form host's `MigrationContext` so cross-host helpers can share a
@@ -133,6 +153,12 @@ export type ColumnEntry = Readonly<{
133
153
  * `translateColumn` only ever sees the leaf columns it emits.
134
154
  */
135
155
  expand?: ColumnExpand;
156
+ /**
157
+ * Present iff this entry has a say in which rows are selectable (today: the
158
+ * select column). The host folds every present one into TanStack's
159
+ * `enableRowSelection`. See `ColumnRowSelection`.
160
+ */
161
+ rowSelection?: ColumnRowSelection;
136
162
  }>;
137
163
  export declare const COLUMNS: ReadonlyArray<ColumnEntry>;
138
164
  export declare function allColumnSchemas(configure: (env: Environment) => void): ReadonlyArray<AnySchema>;
@@ -85,7 +85,8 @@ export const COLUMNS = registry.ENTRIES.map((e) => ({
85
85
  ...e.module.migrate !== void 0 ? { migrate: e.module.migrate } : {},
86
86
  ...e.module.migrateFrom !== void 0 ? { migrateFrom: e.module.migrateFrom } : {},
87
87
  ...e.module.defaults !== void 0 ? { defaults: e.module.defaults } : {},
88
- ...e.module.expand !== void 0 ? { expand: e.module.expand } : {}
88
+ ...e.module.expand !== void 0 ? { expand: e.module.expand } : {},
89
+ ...e.module.rowSelection !== void 0 ? { rowSelection: e.module.rowSelection } : {}
89
90
  }));
90
91
  const migrationTargets = (() => {
91
92
  const map = /* @__PURE__ */ new Map();
@@ -39,7 +39,7 @@ export function buildStepEntries(roster) {
39
39
  return roster.filter((step) => step.valid).map((step) => ({
40
40
  id: `step:${step.id}`,
41
41
  group: "step",
42
- insert: `${STEPS_VAR}[${JSON.stringify(step.id)}]`,
42
+ insert: `${STEPS_VAR}[?${JSON.stringify(step.id)}]`,
43
43
  display: step.label,
44
44
  label: "\u524D\u5E8F\u6B65\u9AA4",
45
45
  type: "dyn",
@@ -76,7 +76,7 @@ const chipPlugin = ViewPlugin.fromClass(
76
76
  {
77
77
  decorations: (plugin) => plugin.decorations,
78
78
  // Atomic so the caret steps over a chip and Backspace removes the whole
79
- // `steps["id"]` at once — matching the scope/selection chips' feel.
79
+ // `steps[?"id"]` at once — matching the scope/selection chips' feel.
80
80
  provide: (plugin) => EditorView.atomicRanges.of((view) => view.plugin(plugin)?.decorations ?? Decoration.none)
81
81
  }
82
82
  );
@@ -1,6 +1,6 @@
1
1
  import { STEPS_VAR } from "../../../utils/cel-context.js";
2
2
  const STEP_REF_RE = new RegExp(
3
- `(?<![\\w$.])${STEPS_VAR}\\[("(?:[^"\\\\]|\\\\.)*")\\]`,
3
+ `(?<![\\w$.])${STEPS_VAR}\\[\\??("(?:[^"\\\\]|\\\\.)*")\\]`,
4
4
  "g"
5
5
  );
6
6
  export function scanStepRefs(text) {
@@ -1,8 +1,11 @@
1
- export type ClipSurface = 'form' | 'block' | 'table';
2
- export type ClipPayload = Readonly<{
3
- surface: ClipSurface;
1
+ export type ClipSurface = 'form' | 'block' | 'table' | 'actions';
2
+ export type ClipFragment = Readonly<{
4
3
  items: ReadonlyArray<unknown>;
5
4
  placements?: Readonly<Record<string, unknown>>;
5
+ groups?: ReadonlyArray<unknown>;
6
+ }>;
7
+ export type ClipPayload = ClipFragment & Readonly<{
8
+ surface: ClipSurface;
6
9
  }>;
7
10
  /**
8
11
  * Deep-clone the fragment with every id (and every reference to a copied id)
@@ -11,16 +14,19 @@ export type ClipPayload = Readonly<{
11
14
  */
12
15
  export declare function reidItems<T>(items: ReadonlyArray<T>): T[];
13
16
  /**
14
- * Reid items and their placements through one shared map, so the placement keys
15
- * (which are item ids) and the items' own `id`s land on the same fresh UUIDs.
17
+ * Reid a whole fragment through one shared map, so every id definition and every
18
+ * reference to one lands on the same fresh UUID: the placement keys (which are
19
+ * item ids), an action item's `groupId` and the group's own `id`, and the items'
20
+ * own `id`s all stay wired to each other.
16
21
  */
17
- export declare function reidFragment<T>(items: ReadonlyArray<T>, placements?: Readonly<Record<string, unknown>>): {
18
- items: T[];
22
+ export declare function reidFragment(fragment: ClipFragment): {
23
+ items: unknown[];
19
24
  placements?: Record<string, unknown>;
25
+ groups?: unknown[];
20
26
  };
21
- export declare function serializeClip(surface: ClipSurface, items: ReadonlyArray<unknown>, placements?: Readonly<Record<string, unknown>>): string;
27
+ export declare function serializeClip(surface: ClipSurface, fragment: ClipFragment): string;
22
28
  export declare function parseClip(text: string): ClipPayload | null;
23
29
  /** Write a fragment to the system clipboard. Resolves `false` on any failure. */
24
- export declare function writeClip(surface: ClipSurface, items: ReadonlyArray<unknown>, placements?: Readonly<Record<string, unknown>>): Promise<boolean>;
30
+ export declare function writeClip(surface: ClipSurface, fragment: ClipFragment): Promise<boolean>;
25
31
  /** Read a fragment from the system clipboard, or `null` if absent/unreadable. */
26
32
  export declare function readClip(): Promise<ClipPayload | null>;