@shwfed/config 2.10.1 → 2.10.2

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 (90) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/preview/assets/{FieldGroup.vue_vue_type_script_setup_true_lang-CuFusz5A.js → FieldGroup.vue_vue_type_script_setup_true_lang-DX5M_WNF.js} +1 -1
  3. package/dist/preview/assets/{badge-D5FPHSix.js → badge-DFZBH8N6.js} +1 -1
  4. package/dist/preview/assets/{config-BHPiQ1lB.js → config-BH2BmDoD.js} +1 -1
  5. package/dist/preview/assets/{config-CeRBpZbE.js → config-Bg7a8Rid.js} +1 -1
  6. package/dist/preview/assets/{config-BWC-Zw21.js → config-BiOW8fS2.js} +1 -1
  7. package/dist/preview/assets/{config-Bg94Z7XN.js → config-Bnp547Nm.js} +1 -1
  8. package/dist/preview/assets/{config-urZuasV7.js → config-CSmHhOh2.js} +1 -1
  9. package/dist/preview/assets/{config-BqSL4UAL.js → config-CTF5-TTQ.js} +1 -1
  10. package/dist/preview/assets/{config-PNpa6ENz.js → config-CqeWJt_H.js} +1 -1
  11. package/dist/preview/assets/{config-DVjZmomc.js → config-DBtEKoan.js} +1 -1
  12. package/dist/preview/assets/{config-Djv6EQBY.js → config-DeDCNzY_.js} +1 -1
  13. package/dist/preview/assets/{config-CfjcFb_E.js → config-Dj3w2JkF.js} +1 -1
  14. package/dist/preview/assets/{config-DNUKa3lN.js → config-XGJ9V32V.js} +1 -1
  15. package/dist/preview/assets/{config-ucxtM3wX.js → config-uIHUHvNR.js} +1 -1
  16. package/dist/preview/assets/{definition.vue_vue_type_script_setup_true_lang-BzryfjdG.js → definition.vue_vue_type_script_setup_true_lang-Cu0CEKYT.js} +1 -1
  17. package/dist/preview/assets/index-CGChrBji.js +1 -0
  18. package/dist/preview/assets/{index-DCRQGu0g.js → index-CQA6q2ay.js} +1 -1
  19. package/dist/preview/assets/{index-yvElpEK3.js → index-DX9_iE4h.js} +153 -153
  20. package/dist/preview/assets/{index-BnJ5p1Mx.css → index-pkoEF5dC.css} +1 -1
  21. package/dist/preview/assets/{item-CTkdtkvl.js → item-C4VJfiq8.js} +1 -1
  22. package/dist/preview/assets/{runtime-CBuV3vwL.js → runtime-6Zrje7Y1.js} +1 -1
  23. package/dist/preview/assets/{runtime-CBBae0-H.js → runtime-BN-jMAt7.js} +1 -1
  24. package/dist/preview/assets/{runtime-CkQ-mNoH.js → runtime-BQMnWueG.js} +1 -1
  25. package/dist/preview/assets/{runtime-DmxKfudS.js → runtime-CBz5XstF.js} +1 -1
  26. package/dist/preview/assets/{runtime-4A3oiig9.js → runtime-CFb1tHwr.js} +1 -1
  27. package/dist/preview/assets/{runtime-BOGZFWxF.js → runtime-DQL6lCFp.js} +1 -1
  28. package/dist/preview/assets/{runtime-CcyhgOum.js → runtime-DcdmMgqL.js} +1 -1
  29. package/dist/preview/assets/{runtime-CI8yzwXd.js → runtime-okYOTQd6.js} +1 -1
  30. package/dist/preview/assets/{runtime-BqroTX7H.js → runtime-qPyuMgsh.js} +1 -1
  31. package/dist/preview/assets/{runtime-3rajYvjp.js → runtime-yfWYeUh4.js} +1 -1
  32. package/dist/preview/assets/{schema-meta-BFzIzGiN.js → schema-meta-6ZPO8dHv.js} +1 -1
  33. package/dist/preview/index.html +2 -2
  34. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/config.d.vue.ts +2 -2
  35. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/config.vue.d.ts +2 -2
  36. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/runtime.d.vue.ts +4 -4
  37. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/runtime.vue.d.ts +4 -4
  38. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/schema.d.ts +1 -1
  39. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.d.vue.ts +2 -2
  40. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.vue.d.ts +2 -2
  41. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.d.vue.ts +2 -2
  42. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.vue.d.ts +2 -2
  43. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/schema.d.ts +2 -2
  44. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/config.d.vue.ts +16 -16
  45. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/config.vue.d.ts +16 -16
  46. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.d.vue.ts +6 -6
  47. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.vue.d.ts +6 -6
  48. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/config.d.vue.ts +6 -6
  49. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/config.vue.d.ts +6 -6
  50. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/config.d.vue.ts +22 -22
  51. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/config.vue.d.ts +22 -22
  52. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/config.d.vue.ts +16 -16
  53. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/config.vue.d.ts +16 -16
  54. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.d.vue.ts +8 -8
  55. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.vue.d.ts +8 -8
  56. package/dist/runtime/components/form/fields/2026-05-25/com.shwfed.form.field.combobox.multi/config.d.vue.ts +16 -16
  57. package/dist/runtime/components/form/fields/2026-05-25/com.shwfed.form.field.combobox.multi/config.vue.d.ts +16 -16
  58. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +8 -8
  59. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +8 -8
  60. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +8 -8
  61. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +8 -8
  62. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +8 -8
  63. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +8 -8
  64. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +8 -8
  65. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +8 -8
  66. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.d.vue.ts +8 -8
  67. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.vue.d.ts +8 -8
  68. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.d.vue.ts +8 -8
  69. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.vue.d.ts +8 -8
  70. package/dist/runtime/components/form/schema.d.ts +2 -2
  71. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/config.d.vue.ts +4 -4
  72. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/config.vue.d.ts +4 -4
  73. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/config.d.vue.ts +4 -4
  74. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/config.vue.d.ts +4 -4
  75. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +10 -10
  76. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +10 -10
  77. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +10 -10
  78. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +10 -10
  79. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +10 -10
  80. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +10 -10
  81. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +10 -10
  82. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +10 -10
  83. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +10 -10
  84. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +10 -10
  85. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +10 -10
  86. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +10 -10
  87. package/dist/runtime/components/table/config.vue +74 -8
  88. package/dist/runtime/components/table/schema.d.ts +3 -3
  89. package/package.json +1 -1
  90. package/dist/preview/assets/index-BE9O1XgB.js +0 -1
@@ -34,17 +34,18 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
34
34
  }[]] | undefined;
35
35
  readonly keywords?: string | undefined;
36
36
  readonly readonly?: string | undefined;
37
+ readonly dataSource: {
38
+ readonly data: string;
39
+ readonly request?: string | undefined;
40
+ };
37
41
  readonly grow?: boolean | undefined;
38
42
  readonly binding: string;
39
43
  readonly derived?: {
40
44
  readonly mode: "formula" | "prefill";
41
45
  readonly expression: string;
42
46
  } | undefined;
43
- readonly dataSource: {
44
- readonly data: string;
45
- readonly request?: string | undefined;
46
- };
47
47
  readonly enableSorting?: boolean | undefined;
48
+ readonly sortKey?: string | undefined;
48
49
  readonly nodeKey: string;
49
50
  readonly nodeChildren: string;
50
51
  readonly nodeLabel: string;
@@ -57,7 +58,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
57
58
  }[]] | undefined;
58
59
  readonly nodeSelectable?: string | undefined;
59
60
  readonly expandAll: boolean;
60
- readonly sortKey?: string | undefined;
61
61
  }) => any;
62
62
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
63
63
  "onUpdate:modelValue"?: ((value: {
@@ -91,17 +91,18 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
91
91
  }[]] | undefined;
92
92
  readonly keywords?: string | undefined;
93
93
  readonly readonly?: string | undefined;
94
+ readonly dataSource: {
95
+ readonly data: string;
96
+ readonly request?: string | undefined;
97
+ };
94
98
  readonly grow?: boolean | undefined;
95
99
  readonly binding: string;
96
100
  readonly derived?: {
97
101
  readonly mode: "formula" | "prefill";
98
102
  readonly expression: string;
99
103
  } | undefined;
100
- readonly dataSource: {
101
- readonly data: string;
102
- readonly request?: string | undefined;
103
- };
104
104
  readonly enableSorting?: boolean | undefined;
105
+ readonly sortKey?: string | undefined;
105
106
  readonly nodeKey: string;
106
107
  readonly nodeChildren: string;
107
108
  readonly nodeLabel: string;
@@ -114,7 +115,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
114
115
  }[]] | undefined;
115
116
  readonly nodeSelectable?: string | undefined;
116
117
  readonly expandAll: boolean;
117
- readonly sortKey?: string | undefined;
118
118
  }) => any) | undefined;
119
119
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
120
120
  declare const _default: typeof __VLS_export;
@@ -1,12 +1,13 @@
1
1
  <script setup>
2
2
  import { computed, defineComponent, inject, onBeforeUnmount, provide, ref, watch } from "vue";
3
- import { provideCELContext, provideScopeAncestor, provideSelectionRoster, SELECTIONS_VAR } from "../../utils/cel-context";
3
+ import { celBindings, injectCELContext, provideCELContext, provideScopeAncestor, provideSelectionRoster, SELECTIONS_VAR } from "../../utils/cel-context";
4
4
  import { BREADCRUMB_EXTENSION_KEY } from "../config/breadcrumb-extension";
5
5
  import { TABLE_COLUMN_LAYOUT_KEY } from "./column-layout";
6
6
  import { Icon } from "@iconify/vue";
7
- import { ParseResult, Schema } from "effect";
7
+ import { Effect, ParseResult, Schema } from "effect";
8
8
  import { TableConfig, Pagination, ColumnGroup, tableDataSource, configureTableActionsScope, registerDataSourceRequestVars, registerDataSourceResponseVars, metadata as tableMetadata } from "./schema";
9
9
  import { COLUMNS, findColumn as findColumnEntry } from "./utils/resolve";
10
+ import { registerRowVariablesIfAbsent } from "./utils/shared";
10
11
  import {
11
12
  useTreeDnd
12
13
  } from "../../composables/useTreeDnd";
@@ -35,6 +36,9 @@ import ActionsConfigEditor from "../actions/config.vue";
35
36
  import ShwfedFormConfig from "../form/config.vue";
36
37
  import { defaultFormConfig } from "../form/schema";
37
38
  import { Environment } from "../../vendor/cel-js/lib/index";
39
+ import { cel as rawCel } from "../../utils/cel";
40
+ import { Button } from "../ui/button";
41
+ import { toast } from "vue-sonner";
38
42
  defineOptions({ name: "ShwfedTableConfig" });
39
43
  function probeCELContext(register) {
40
44
  const probe = new Environment({ unlistedVariablesAreDyn: false });
@@ -110,6 +114,16 @@ const CellStyleCELContext = defineComponent({
110
114
  return () => slots.default?.();
111
115
  }
112
116
  });
117
+ const ColumnCELContext = defineComponent({
118
+ name: "ColumnCELContext",
119
+ setup(_, { slots }) {
120
+ provideCELContext(probeCELContext((env) => {
121
+ configure(env);
122
+ registerRowVariablesIfAbsent(env);
123
+ }));
124
+ return () => slots.default?.();
125
+ }
126
+ });
113
127
  const RequestCELContext = defineComponent({
114
128
  name: "RequestCELContext",
115
129
  setup(_, { slots }) {
@@ -574,6 +588,33 @@ function patchSelectedColumn(next) {
574
588
  if (selected.value.kind !== "column") return;
575
589
  patchColumn(selected.value.id, next);
576
590
  }
591
+ const inheritedCEL = injectCELContext();
592
+ function celForMigration(expression, context) {
593
+ return rawCel(expression, { ...celBindings(inheritedCEL), ...context });
594
+ }
595
+ const migrationContext = { $cel: celForMigration };
596
+ const columnMigrationTarget = computed(() => {
597
+ const e = selectedColumnEntry.value;
598
+ if (!e?.deprecated || !e.supersededBy) return null;
599
+ return findColumnEntry(e.supersededBy.type, e.supersededBy.compatibilityDate) ?? null;
600
+ });
601
+ const canMigrateColumn = computed(() => !!columnMigrationTarget.value?.migrate);
602
+ async function migrateSelectedColumn() {
603
+ const sel = selectedColumnRef.value;
604
+ const target = columnMigrationTarget.value;
605
+ if (!sel || !target?.migrate) return;
606
+ try {
607
+ const next = await Effect.runPromise(target.migrate(sel, migrationContext));
608
+ patchSelectedColumn(next);
609
+ const isSameType = target.type === sel.type;
610
+ toast.success(
611
+ isSameType ? `\u5DF2\u8FC1\u79FB\u5230 ${target.compatibilityDate} \u7248\u672C` : `\u5DF2\u8FC1\u79FB\u5230 ${target.type}@${target.compatibilityDate}`
612
+ );
613
+ } catch (err) {
614
+ const message = err instanceof Error ? err.message : String(err);
615
+ toast.error("\u8FC1\u79FB\u5931\u8D25", { description: message });
616
+ }
617
+ }
577
618
  function patchSelectedGroup(next) {
578
619
  if (selected.value.kind !== "group") return;
579
620
  const id = selected.value.id;
@@ -1654,12 +1695,37 @@ const tableQueryValue = computed({
1654
1695
  v-else-if="selectedColumnRef"
1655
1696
  :class="columnFullPane ? '' : 'space-y-5'"
1656
1697
  >
1657
- <component
1658
- :is="selectedColumnEntry.config"
1659
- v-if="selectedColumnEntry"
1660
- :model-value="selectedColumnRef"
1661
- @update:model-value="(v) => patchSelectedColumn(v)"
1662
- />
1698
+ <div
1699
+ v-if="selectedColumnEntry?.deprecated && selectedColumnEntry.supersededBy"
1700
+ class="mb-4 flex items-center gap-2 rounded border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-800"
1701
+ role="alert"
1702
+ >
1703
+ <Icon
1704
+ icon="fluent:warning-20-regular"
1705
+ class="size-4 shrink-0"
1706
+ />
1707
+ <span class="flex-1">
1708
+ 此列类型已弃用,建议迁移至 <span class="tabular-nums font-medium">{{ selectedColumnEntry.supersededBy.type === selectedColumnEntry.type ? selectedColumnEntry.supersededBy.compatibilityDate : `${selectedColumnEntry.supersededBy.type}@${selectedColumnEntry.supersededBy.compatibilityDate}` }}</span>。
1709
+ </span>
1710
+ <Button
1711
+ v-if="canMigrateColumn"
1712
+ variant="ghost"
1713
+ size="sm"
1714
+ class="text-amber-800 hover:bg-amber-100 hover:text-amber-900"
1715
+ data-slot="column-migrate"
1716
+ @click="migrateSelectedColumn"
1717
+ >
1718
+ <Icon icon="fluent:arrow-sync-20-regular" />
1719
+ 迁移
1720
+ </Button>
1721
+ </div>
1722
+ <ColumnCELContext v-if="selectedColumnEntry">
1723
+ <component
1724
+ :is="selectedColumnEntry.config"
1725
+ :model-value="selectedColumnRef"
1726
+ @update:model-value="(v) => patchSelectedColumn(v)"
1727
+ />
1728
+ </ColumnCELContext>
1663
1729
  <div
1664
1730
  v-else
1665
1731
  class="text-xs text-red-500"
@@ -143,6 +143,7 @@ export declare function TableConfig(configure: (env: Environment) => void): Sche
143
143
  readonly displayName?: string | undefined;
144
144
  readonly kind: "shwfed.component.form";
145
145
  readonly fields: readonly any[];
146
+ readonly readonly?: string | undefined;
146
147
  readonly layouts: readonly {
147
148
  readonly name: string;
148
149
  readonly layout: {
@@ -160,7 +161,6 @@ export declare function TableConfig(configure: (env: Environment) => void): Sche
160
161
  };
161
162
  readonly media?: string | undefined;
162
163
  }[];
163
- readonly readonly?: string | undefined;
164
164
  } | undefined;
165
165
  readonly dataSource?: {
166
166
  readonly data: string;
@@ -646,6 +646,7 @@ export declare function TableConfig(configure: (env: Environment) => void): Sche
646
646
  readonly displayName?: string | undefined;
647
647
  readonly kind: "shwfed.component.form";
648
648
  readonly fields: readonly any[];
649
+ readonly readonly?: string | undefined;
649
650
  readonly layouts: readonly {
650
651
  readonly name: string;
651
652
  readonly layout: {
@@ -663,7 +664,6 @@ export declare function TableConfig(configure: (env: Environment) => void): Sche
663
664
  };
664
665
  readonly media?: string | undefined;
665
666
  }[];
666
- readonly readonly?: string | undefined;
667
667
  }, Schema.Struct<{
668
668
  fields: Schema.Array$<Schema.Schema<any, any, never>>;
669
669
  layouts: Schema.refine<readonly {
@@ -788,6 +788,7 @@ export declare function createTableConfig(body: Omit<Schema.Schema.Type<ReturnTy
788
788
  readonly displayName?: string | undefined;
789
789
  readonly kind: "shwfed.component.form";
790
790
  readonly fields: readonly any[];
791
+ readonly readonly?: string | undefined;
791
792
  readonly layouts: readonly {
792
793
  readonly name: string;
793
794
  readonly layout: {
@@ -805,7 +806,6 @@ export declare function createTableConfig(body: Omit<Schema.Schema.Type<ReturnTy
805
806
  };
806
807
  readonly media?: string | undefined;
807
808
  }[];
808
- readonly readonly?: string | undefined;
809
809
  } | undefined;
810
810
  dataSource?: {
811
811
  readonly data: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shwfed/config",
3
- "version": "2.10.1",
3
+ "version": "2.10.2",
4
4
  "description": "Configurable UI for SHWFED",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -1 +0,0 @@
1
- import{ba as e}from"./index-yvElpEK3.js";import{bb as f,bc as r,bd as s}from"./index-yvElpEK3.js";export{f as TableConfig,r as createTableConfig,e as default,s as getColumnTechnicalKey};