@shwfed/config 2.10.12 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/dist/mcp.mjs +46 -49
  2. package/dist/module.json +1 -1
  3. package/dist/preview/assets/{FieldGroup.vue_vue_type_script_setup_true_lang-BeqytPDr.js → FieldGroup.vue_vue_type_script_setup_true_lang-UfhMyymD.js} +1 -1
  4. package/dist/preview/assets/{badge-DkHwLDps.js → badge-CJ9IQ3Jx.js} +1 -1
  5. package/dist/preview/assets/{config-Cft-srKd.js → config--Vx4fL61.js} +1 -1
  6. package/dist/preview/assets/{config-DJQ2LOWo.js → config-5PPug5mk.js} +1 -1
  7. package/dist/preview/assets/{config-Dx1SXsSf.js → config-7V1qHjUk.js} +1 -1
  8. package/dist/preview/assets/{config-Cedm-E2H.js → config-BYktCefJ.js} +1 -1
  9. package/dist/preview/assets/{config-DAZ2Uj6B.js → config-BeRYF_cz.js} +1 -1
  10. package/dist/preview/assets/{config-DCANpbtq.js → config-BldsYfGM.js} +1 -1
  11. package/dist/preview/assets/{config-Uw4cvZGX.js → config-CQrDCzYN.js} +1 -1
  12. package/dist/preview/assets/{config-7KeAl8UU.js → config-C_g-FYCR.js} +1 -1
  13. package/dist/preview/assets/{config-CZ1e9utV.js → config-DIsAIc7H.js} +1 -1
  14. package/dist/preview/assets/{config-OPQWANCx.js → config-DPX7vGqV.js} +1 -1
  15. package/dist/preview/assets/{config-DQVKd54J.js → config-DpLMetys.js} +1 -1
  16. package/dist/preview/assets/{config-CVPVYMuh.js → config-IMd4FZi8.js} +1 -1
  17. package/dist/preview/assets/{config-Cy6Eix27.js → config-N-FdgfwK.js} +1 -1
  18. package/dist/preview/assets/{config-DbV3RlZz.js → config-uUF-UHPt.js} +1 -1
  19. package/dist/preview/assets/{definition.vue_vue_type_script_setup_true_lang-D4Gh9PzS.js → definition.vue_vue_type_script_setup_true_lang-B_PKfe3G.js} +1 -1
  20. package/dist/preview/assets/index-8Ph-sFDI.css +1 -0
  21. package/dist/preview/assets/index-BCl1NN6k.js +763 -0
  22. package/dist/preview/assets/index-Core7vRW.js +1 -0
  23. package/dist/preview/assets/{index-Cum0oK9u.js → index-DKWp47QP.js} +1 -1
  24. package/dist/preview/assets/{item-H4QeOpnC.js → item-XsW7swFt.js} +1 -1
  25. package/dist/preview/assets/{runtime-CTnwTJlw.js → runtime-B-ABO0r0.js} +1 -1
  26. package/dist/preview/assets/{runtime-C3532B0Y.js → runtime-BeHohaOZ.js} +1 -1
  27. package/dist/preview/assets/{runtime-CNMjRr9Y.js → runtime-BiFFwOIl.js} +1 -1
  28. package/dist/preview/assets/{runtime-ibuFFD1K.js → runtime-ByArW-jJ.js} +1 -1
  29. package/dist/preview/assets/{runtime-DvCHNIPq.js → runtime-CpVTGNFZ.js} +1 -1
  30. package/dist/preview/assets/{runtime-sPGVp7yA.js → runtime-DQ1TnQ7n.js} +1 -1
  31. package/dist/preview/assets/{runtime-CwgX0PuH.js → runtime-DY7hr7v1.js} +1 -1
  32. package/dist/preview/assets/{runtime-BotFX6qJ.js → runtime-Dn172S7t.js} +1 -1
  33. package/dist/preview/assets/{runtime-D5HcLLLR.js → runtime-JxBzvGnw.js} +1 -1
  34. package/dist/preview/assets/{runtime-cKOD2A6u.js → runtime-bq0hmEXY.js} +1 -1
  35. package/dist/preview/assets/{schema-meta-DtZNwp3h.js → schema-meta-CZ9yXnsa.js} +1 -1
  36. package/dist/preview/index.html +2 -2
  37. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/runtime.vue +23 -1
  38. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.date/config.vue +30 -0
  39. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.date/schema.d.ts +2 -1
  40. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.date/schema.js +1 -1
  41. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.icon/config.vue +30 -0
  42. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.icon/schema.d.ts +2 -1
  43. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.icon/schema.js +7 -4
  44. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.number/config.vue +30 -0
  45. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.number/schema.d.ts +2 -1
  46. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.number/schema.js +1 -1
  47. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.text/config.vue +30 -0
  48. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.text/schema.d.ts +2 -1
  49. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.text/schema.js +1 -1
  50. package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch/schema.d.ts +2 -1
  51. package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch/schema.js +1 -0
  52. package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch.remote/config.vue +30 -0
  53. package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch.remote/schema.d.ts +2 -1
  54. package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch.remote/schema.js +1 -1
  55. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.number-input/config.vue +60 -32
  56. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.number-input/runtime.vue +7 -9
  57. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.number-input/schema.d.ts +4 -1
  58. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.number-input/schema.js +2 -5
  59. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.switch.local/config.vue +67 -32
  60. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.switch.local/runtime.vue +6 -9
  61. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.switch.local/schema.d.ts +4 -1
  62. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.switch.local/schema.js +2 -5
  63. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.text-input/config.vue +66 -31
  64. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.text-input/runtime.vue +7 -9
  65. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.text-input/schema.d.ts +4 -1
  66. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.text-input/schema.js +2 -5
  67. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/config.d.vue.ts +2 -2
  68. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/config.vue.d.ts +2 -2
  69. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/schema.d.ts +1 -1
  70. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/schema.js +1 -0
  71. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-static/config.d.vue.ts +2 -2
  72. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-static/config.vue.d.ts +2 -2
  73. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-static/schema.d.ts +1 -1
  74. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-static/schema.js +1 -0
  75. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/config.d.vue.ts +2 -2
  76. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/config.vue.d.ts +2 -2
  77. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/schema.d.ts +1 -1
  78. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/schema.js +1 -0
  79. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-static/config.d.vue.ts +2 -2
  80. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.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-static/schema.d.ts +1 -1
  82. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-static/schema.js +1 -0
  83. package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi.remote/config.d.vue.ts +2 -2
  84. package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi.remote/config.vue.d.ts +2 -2
  85. package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi.remote/schema.d.ts +1 -1
  86. package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi.remote/schema.js +1 -0
  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-26/com.shwfed.table.column.combobox-single.remote/schema.d.ts +1 -1
  90. package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-single.remote/schema.js +1 -0
  91. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/config.d.vue.ts +4 -2
  92. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/config.vue +61 -22
  93. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/config.vue.d.ts +4 -2
  94. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/runtime.vue +6 -9
  95. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/schema.d.ts +4 -1
  96. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/schema.js +3 -4
  97. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/config.d.vue.ts +4 -2
  98. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/config.vue +61 -22
  99. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/config.vue.d.ts +4 -2
  100. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/runtime.vue +6 -9
  101. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/schema.d.ts +4 -1
  102. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/schema.js +3 -4
  103. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +4 -2
  104. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue +67 -23
  105. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +4 -2
  106. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/runtime.vue +6 -9
  107. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/schema.d.ts +4 -1
  108. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/schema.js +2 -4
  109. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +4 -2
  110. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue +67 -23
  111. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +4 -2
  112. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/runtime.vue +6 -9
  113. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/schema.d.ts +4 -1
  114. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/schema.js +2 -4
  115. package/dist/runtime/components/table/columns/2026-06-17/com.shwfed.table.column.date-input/config.vue +67 -32
  116. package/dist/runtime/components/table/columns/2026-06-17/com.shwfed.table.column.date-input/runtime.vue +7 -9
  117. package/dist/runtime/components/table/columns/2026-06-17/com.shwfed.table.column.date-input/schema.d.ts +4 -1
  118. package/dist/runtime/components/table/columns/2026-06-17/com.shwfed.table.column.date-input/schema.js +2 -5
  119. package/dist/runtime/components/table/columns/2026-06-22/com.shwfed.table.column.date-range-input/config.vue +66 -31
  120. package/dist/runtime/components/table/columns/2026-06-22/com.shwfed.table.column.date-range-input/runtime.vue +5 -8
  121. package/dist/runtime/components/table/columns/2026-06-22/com.shwfed.table.column.date-range-input/schema.d.ts +4 -1
  122. package/dist/runtime/components/table/columns/2026-06-22/com.shwfed.table.column.date-range-input/schema.js +2 -5
  123. package/dist/runtime/components/table/index.vue +46 -7
  124. package/dist/runtime/components/table/utils/runtime.d.ts +1 -0
  125. package/dist/runtime/components/table/utils/runtime.js +5 -0
  126. package/dist/runtime/components/table/utils/shared.d.ts +3 -1
  127. package/dist/runtime/components/table/utils/shared.js +17 -5
  128. package/package.json +1 -1
  129. package/dist/preview/assets/index-B3HnlKis.js +0 -763
  130. package/dist/preview/assets/index-BAY6NLoo.css +0 -1
  131. package/dist/preview/assets/index-CxUuhfsO.js +0 -1
@@ -6,6 +6,7 @@ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigge
6
6
  import { ExpressionEditor } from "../../../../ui/expression-editor";
7
7
  import { Separator } from "../../../../ui/separator";
8
8
  import { Field, FieldLabel } from "../../../../ui/field";
9
+ import { Switch } from "../../../../ui/switch";
9
10
  import { Locale } from "../../../../ui/locale";
10
11
  import { Textarea } from "../../../../ui/textarea";
11
12
  import {
@@ -26,6 +27,14 @@ const fieldSchema = schema(() => {
26
27
  });
27
28
  const fieldTitle = (field) => getStructFieldTitle(fieldSchema, field) ?? field;
28
29
  const fieldDescription = (field) => getStructFieldDescription(fieldSchema, field);
30
+ const ALIGN_OPTIONS = [
31
+ { value: "left", label: "\u5DE6\u5BF9\u9F50", icon: "fluent:text-align-left-20-regular" },
32
+ { value: "center", label: "\u5C45\u4E2D", icon: "fluent:text-align-center-20-regular" },
33
+ { value: "right", label: "\u53F3\u5BF9\u9F50", icon: "fluent:text-align-right-20-regular" }
34
+ ];
35
+ const currentAlignIcon = computed(
36
+ () => (ALIGN_OPTIONS.find((o) => o.value === (value.value.align ?? "left")) ?? ALIGN_OPTIONS[0]).icon
37
+ );
29
38
  const itemFieldSchema = itemSchema(() => {
30
39
  });
31
40
  const itemFieldTitle = (f) => getStructFieldTitle(itemFieldSchema, f) ?? f;
@@ -88,9 +97,16 @@ function celModel(field) {
88
97
  }
89
98
  });
90
99
  }
91
- const hiddenModel = celModel("hidden");
92
100
  const disabledModel = celModel("disabled");
93
101
  const readonlyModel = celModel("readonly");
102
+ function onHiddenChange(v) {
103
+ if (v) {
104
+ value.value = { ...value.value, hidden: true };
105
+ } else {
106
+ const { hidden: _drop, ...rest } = value.value;
107
+ value.value = rest;
108
+ }
109
+ }
94
110
  const writeKind = computed(() => value.value.write.kind);
95
111
  function setWriteKind(kind) {
96
112
  if (value.value.write.kind === kind) return;
@@ -363,6 +379,29 @@ function setItemKeywords(index, text) {
363
379
  {{ fieldTitle("size") }}
364
380
  </FieldLabel>
365
381
  <InputGroup>
382
+ <InputGroupAddon align="inline-start">
383
+ <DropdownMenu>
384
+ <DropdownMenuTrigger as-child>
385
+ <InputGroupButton
386
+ variant="ghost"
387
+ size="xs"
388
+ :title="fieldTitle('align')"
389
+ >
390
+ <Icon :icon="currentAlignIcon" />
391
+ </InputGroupButton>
392
+ </DropdownMenuTrigger>
393
+ <DropdownMenuContent align="start">
394
+ <DropdownMenuItem
395
+ v-for="opt in ALIGN_OPTIONS"
396
+ :key="opt.value"
397
+ @select="value = { ...value, align: opt.value }"
398
+ >
399
+ <Icon :icon="opt.icon" />
400
+ {{ opt.label }}
401
+ </DropdownMenuItem>
402
+ </DropdownMenuContent>
403
+ </DropdownMenu>
404
+ </InputGroupAddon>
366
405
  <InputGroupNumberField
367
406
  :model-value="value.size"
368
407
  :disabled="value.grow"
@@ -836,27 +875,6 @@ function setItemKeywords(index, text) {
836
875
  </Field>
837
876
 
838
877
  <div class="grid grid-cols-2 gap-x-6 gap-y-4">
839
- <Field orientation="vertical">
840
- <FieldLabel class="text-xs text-zinc-500">
841
- <template
842
- v-if="fieldDescription('hidden')"
843
- #tooltip
844
- >
845
- <Markdown
846
- :source="fieldDescription('hidden')"
847
- block
848
- class="prose prose-sm prose-zinc"
849
- />
850
- </template>
851
- {{ fieldTitle("hidden") }}
852
- </FieldLabel>
853
- <ExpressionEditor
854
- v-model="hiddenModel"
855
- placeholder="例:row.archived"
856
- result-type="bool"
857
- :extra-vars="ROW_VARS"
858
- />
859
- </Field>
860
878
  <Field orientation="vertical">
861
879
  <FieldLabel class="text-xs text-zinc-500">
862
880
  <template
@@ -937,6 +955,27 @@ function setItemKeywords(index, text) {
937
955
  </InputGroupAddon>
938
956
  </InputGroup>
939
957
  </Field>
958
+ <Field orientation="vertical">
959
+ <FieldLabel class="text-xs text-zinc-500">
960
+ <template
961
+ v-if="fieldDescription('hidden')"
962
+ #tooltip
963
+ >
964
+ <Markdown
965
+ :source="fieldDescription('hidden')"
966
+ block
967
+ class="prose prose-sm prose-zinc"
968
+ />
969
+ </template>
970
+ {{ fieldTitle("hidden") }}
971
+ </FieldLabel>
972
+ <div>
973
+ <Switch
974
+ :model-value="value.hidden ?? false"
975
+ @update:model-value="onHiddenChange"
976
+ />
977
+ </div>
978
+ </Field>
940
979
  </div>
941
980
  </div>
942
981
  </template>
@@ -15,7 +15,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
15
15
  readonly locale: "en" | "ja" | "ko";
16
16
  readonly message: string;
17
17
  }[]];
18
- readonly hidden?: string | undefined;
18
+ readonly hidden?: boolean | undefined;
19
19
  readonly tooltip?: readonly [{
20
20
  readonly locale: "zh";
21
21
  readonly message: string;
@@ -23,6 +23,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
23
23
  readonly locale: "en" | "ja" | "ko";
24
24
  readonly message: string;
25
25
  }[]] | undefined;
26
+ readonly align: "center" | "left" | "right";
26
27
  readonly compatibilityDate: "2026-06-14";
27
28
  readonly grow?: boolean | undefined;
28
29
  readonly groupId?: string | undefined;
@@ -101,7 +102,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
101
102
  readonly locale: "en" | "ja" | "ko";
102
103
  readonly message: string;
103
104
  }[]];
104
- readonly hidden?: string | undefined;
105
+ readonly hidden?: boolean | undefined;
105
106
  readonly tooltip?: readonly [{
106
107
  readonly locale: "zh";
107
108
  readonly message: string;
@@ -109,6 +110,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
109
110
  readonly locale: "en" | "ja" | "ko";
110
111
  readonly message: string;
111
112
  }[]] | undefined;
113
+ readonly align: "center" | "left" | "right";
112
114
  readonly compatibilityDate: "2026-06-14";
113
115
  readonly grow?: boolean | undefined;
114
116
  readonly groupId?: string | undefined;
@@ -25,7 +25,7 @@ import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from "
25
25
  import { Markdown } from "../../../../ui/markdown";
26
26
  import { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from "../../../../ui/popover";
27
27
  import { useFormState } from "../../../../form/utils/state";
28
- import { interpolateMarkdown } from "../../../utils/runtime";
28
+ import { interpolateMarkdown, JUSTIFY_CLASS, TEXT_ALIGN_CLASS } from "../../../utils/runtime";
29
29
  import { useSharedFetchLayer } from "../../../utils/shared-fetch";
30
30
  defineOptions({ name: "ShwfedTableComboboxMultiRuntime" });
31
31
  const props = defineProps({
@@ -65,6 +65,8 @@ const rowIndex = computed(() => props.ctx.row.index);
65
65
  const placeholderText = computed(
66
66
  () => props.column.placeholder ? getLocalizedText(props.column.placeholder, locale.value) : t("combobox-multi-placeholder")
67
67
  );
68
+ const justifyClass = computed(() => JUSTIFY_CLASS[props.column.align ?? "left"] ?? JUSTIFY_CLASS.left);
69
+ const textAlignClass = computed(() => TEXT_ALIGN_CLASS[props.column.align ?? "left"] ?? TEXT_ALIGN_CLASS.left);
68
70
  function evalBool(expression, label) {
69
71
  if (!expression) return false;
70
72
  try {
@@ -74,7 +76,6 @@ function evalBool(expression, label) {
74
76
  return false;
75
77
  }
76
78
  }
77
- const isHidden = computed(() => evalBool(props.column.hidden, "hidden"));
78
79
  const isDisabledByConfig = computed(() => evalBool(props.column.disabled, "disabled"));
79
80
  const formReadonly = useFormReadonly();
80
81
  const isReadonly = computed(
@@ -371,10 +372,6 @@ const anyHasTooltip = computed(
371
372
 
372
373
  <template>
373
374
  <div class="p-[0.125rem] w-full">
374
- <span
375
- v-if="isHidden"
376
- class="block h-7 w-full"
377
- />
378
375
  <!--
379
376
  Readonly empty state mirrors the `text` column exactly: a centered,
380
377
  faded, non-selectable `-` in `font-mono`, so a readonly grid reads
@@ -382,10 +379,10 @@ const anyHasTooltip = computed(
382
379
  left-aligned dark text.
383
380
  -->
384
381
  <span
385
- v-else-if="isReadonly || !isInteractive"
382
+ v-if="isReadonly || !isInteractive"
386
383
  :class="[
387
384
  'flex items-center h-7 w-full px-2 text-[0.75rem] truncate',
388
- readonlyLabel ? 'text-zinc-700' : 'justify-center font-mono text-zinc-300 select-none'
385
+ readonlyLabel ? ['text-zinc-700', justifyClass] : 'justify-center font-mono text-zinc-300 select-none'
389
386
  ]"
390
387
  >
391
388
  {{ readonlyLabel || "-" }}
@@ -405,7 +402,7 @@ const anyHasTooltip = computed(
405
402
  :model-value="triggerLabel"
406
403
  :disabled="isDisabled"
407
404
  :placeholder="placeholderText"
408
- class="h-7 text-[0.75rem] md:text-[0.75rem] px-2 cursor-pointer text-left"
405
+ :class="['h-7 text-[0.75rem] md:text-[0.75rem] px-2 cursor-pointer', textAlignClass]"
409
406
  readonly
410
407
  />
411
408
  </PopoverTrigger>
@@ -119,6 +119,9 @@ export declare function schema(configure: (env: Environment) => void): Schema.St
119
119
  locale: Schema.Literal<["ja", "en", "ko"]>;
120
120
  message: Schema.SchemaClass<string, string, never>;
121
121
  }>]>;
122
+ align: Schema.optionalWith<Schema.Literal<["left", "center", "right"]>, {
123
+ default: () => "left";
124
+ }>;
122
125
  placeholder: Schema.optional<Schema.TupleType<readonly [Schema.Struct<{
123
126
  locale: Schema.Literal<["zh"]>;
124
127
  message: Schema.SchemaClass<string, string, never>;
@@ -126,7 +129,6 @@ export declare function schema(configure: (env: Environment) => void): Schema.St
126
129
  locale: Schema.Literal<["ja", "en", "ko"]>;
127
130
  message: Schema.SchemaClass<string, string, never>;
128
131
  }>]>>;
129
- hidden: Schema.optional<Schema.Schema<string, string, never>>;
130
132
  disabled: Schema.optional<Schema.Schema<string, string, never>>;
131
133
  readonly: Schema.optional<Schema.Schema<string, string, never>>;
132
134
  enableSorting: Schema.optional<Schema.SchemaClass<boolean, boolean, never>>;
@@ -140,6 +142,7 @@ export declare function schema(configure: (env: Environment) => void): Schema.St
140
142
  locale: Schema.Literal<["ja", "en", "ko"]>;
141
143
  message: Schema.SchemaClass<string, string, never>;
142
144
  }>]>>;
145
+ hidden: Schema.optional<Schema.SchemaClass<boolean, boolean, never>>;
143
146
  options: Schema.optionalWith<Schema.Union<[Schema.Struct<{
144
147
  kind: Schema.Literal<["static"]>;
145
148
  items: Schema.optionalWith<Schema.Array$<Schema.Struct<{
@@ -4,6 +4,7 @@ import { Expression, HttpRequestResult } from "../../../../../share/expression.j
4
4
  import { Locale } from "../../../../../share/locale.js";
5
5
  import { Triggers } from "../../../../../share/event-bus.js";
6
6
  import {
7
+ Align,
7
8
  CelRowAccess,
8
9
  columnFields,
9
10
  columnIdentityFields,
@@ -177,14 +178,11 @@ export function schema(configure) {
177
178
  compatibilityDate: Schema.Literal(compatibilityDate),
178
179
  ...columnIdentityFields(),
179
180
  title: display.title,
181
+ align: Schema.optionalWith(Align.annotations({ title: "\u5BF9\u9F50" }), { default: () => "left" }),
180
182
  placeholder: Schema.optional(Locale.annotations({
181
183
  title: "\u5360\u4F4D\u7B26",
182
184
  description: "\u672A\u9009\u4E2D\u4EFB\u4F55\u9009\u9879\u65F6\u8F93\u5165\u6846\u4E2D\u7684\u5360\u4F4D\u6587\u672C"
183
185
  })),
184
- hidden: Schema.optional(CelBool.annotations({
185
- title: "\u9690\u85CF\u6761\u4EF6",
186
- description: "\u8FD4\u56DE `true` \u65F6\u8BE5\u884C\u7684\u4E0B\u62C9\u6846\u4E0D\u6E32\u67D3\uFF08\u5176\u4F59\u884C\u4E0D\u53D7\u5F71\u54CD\uFF09"
187
- })),
188
186
  disabled: Schema.optional(CelBool.annotations({
189
187
  title: "\u7981\u7528\u6761\u4EF6",
190
188
  description: "\u8FD4\u56DE `true` \u65F6\u4E0B\u62C9\u6846\u4ECD\u7136\u6E32\u67D3\u4F46\u4E0D\u53EF\u9009\u62E9"
@@ -198,6 +196,7 @@ export function schema(configure) {
198
196
  size: display.size,
199
197
  grow: display.grow,
200
198
  tooltip: display.tooltip,
199
+ hidden: display.hidden,
201
200
  options: Schema.optionalWith(Options, {
202
201
  default: () => ({ kind: "static", items: [] })
203
202
  }),
@@ -15,7 +15,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
15
15
  readonly locale: "en" | "ja" | "ko";
16
16
  readonly message: string;
17
17
  }[]];
18
- readonly hidden?: string | undefined;
18
+ readonly hidden?: boolean | undefined;
19
19
  readonly tooltip?: readonly [{
20
20
  readonly locale: "zh";
21
21
  readonly message: string;
@@ -23,6 +23,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
23
23
  readonly locale: "en" | "ja" | "ko";
24
24
  readonly message: string;
25
25
  }[]] | undefined;
26
+ readonly align: "center" | "left" | "right";
26
27
  readonly compatibilityDate: "2026-06-14";
27
28
  readonly grow?: boolean | undefined;
28
29
  readonly groupId?: string | undefined;
@@ -101,7 +102,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
101
102
  readonly locale: "en" | "ja" | "ko";
102
103
  readonly message: string;
103
104
  }[]];
104
- readonly hidden?: string | undefined;
105
+ readonly hidden?: boolean | undefined;
105
106
  readonly tooltip?: readonly [{
106
107
  readonly locale: "zh";
107
108
  readonly message: string;
@@ -109,6 +110,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
109
110
  readonly locale: "en" | "ja" | "ko";
110
111
  readonly message: string;
111
112
  }[]] | undefined;
113
+ readonly align: "center" | "left" | "right";
112
114
  readonly compatibilityDate: "2026-06-14";
113
115
  readonly grow?: boolean | undefined;
114
116
  readonly groupId?: string | undefined;
@@ -5,6 +5,7 @@ import { Button } from "../../../../ui/button";
5
5
  import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "../../../../ui/dropdown-menu";
6
6
  import { ExpressionEditor } from "../../../../ui/expression-editor";
7
7
  import { Separator } from "../../../../ui/separator";
8
+ import { Switch } from "../../../../ui/switch";
8
9
  import { Field, FieldLabel } from "../../../../ui/field";
9
10
  import { Locale } from "../../../../ui/locale";
10
11
  import { Textarea } from "../../../../ui/textarea";
@@ -26,6 +27,14 @@ const fieldSchema = schema(() => {
26
27
  });
27
28
  const fieldTitle = (field) => getStructFieldTitle(fieldSchema, field) ?? field;
28
29
  const fieldDescription = (field) => getStructFieldDescription(fieldSchema, field);
30
+ const ALIGN_OPTIONS = [
31
+ { value: "left", label: "\u5DE6\u5BF9\u9F50", icon: "fluent:text-align-left-20-regular" },
32
+ { value: "center", label: "\u5C45\u4E2D", icon: "fluent:text-align-center-20-regular" },
33
+ { value: "right", label: "\u53F3\u5BF9\u9F50", icon: "fluent:text-align-right-20-regular" }
34
+ ];
35
+ const currentAlignIcon = computed(
36
+ () => (ALIGN_OPTIONS.find((o) => o.value === (value.value.align ?? "left")) ?? ALIGN_OPTIONS[0]).icon
37
+ );
29
38
  const itemFieldSchema = itemSchema(() => {
30
39
  });
31
40
  const itemFieldTitle = (f) => getStructFieldTitle(itemFieldSchema, f) ?? f;
@@ -88,9 +97,16 @@ function celModel(field) {
88
97
  }
89
98
  });
90
99
  }
91
- const hiddenModel = celModel("hidden");
92
100
  const disabledModel = celModel("disabled");
93
101
  const readonlyModel = celModel("readonly");
102
+ function onHiddenChange(v) {
103
+ if (v) {
104
+ value.value = { ...value.value, hidden: true };
105
+ } else {
106
+ const { hidden: _drop, ...rest } = value.value;
107
+ value.value = rest;
108
+ }
109
+ }
94
110
  const writeKind = computed(() => value.value.write.kind);
95
111
  function setWriteKind(kind) {
96
112
  if (value.value.write.kind === kind) return;
@@ -363,6 +379,29 @@ function setItemKeywords(index, text) {
363
379
  {{ fieldTitle("size") }}
364
380
  </FieldLabel>
365
381
  <InputGroup>
382
+ <InputGroupAddon align="inline-start">
383
+ <DropdownMenu>
384
+ <DropdownMenuTrigger as-child>
385
+ <InputGroupButton
386
+ variant="ghost"
387
+ size="xs"
388
+ :title="fieldTitle('align')"
389
+ >
390
+ <Icon :icon="currentAlignIcon" />
391
+ </InputGroupButton>
392
+ </DropdownMenuTrigger>
393
+ <DropdownMenuContent align="start">
394
+ <DropdownMenuItem
395
+ v-for="opt in ALIGN_OPTIONS"
396
+ :key="opt.value"
397
+ @select="value = { ...value, align: opt.value }"
398
+ >
399
+ <Icon :icon="opt.icon" />
400
+ {{ opt.label }}
401
+ </DropdownMenuItem>
402
+ </DropdownMenuContent>
403
+ </DropdownMenu>
404
+ </InputGroupAddon>
366
405
  <InputGroupNumberField
367
406
  :model-value="value.size"
368
407
  :disabled="value.grow"
@@ -836,27 +875,6 @@ function setItemKeywords(index, text) {
836
875
  </Field>
837
876
 
838
877
  <div class="grid grid-cols-2 gap-x-6 gap-y-4">
839
- <Field orientation="vertical">
840
- <FieldLabel class="text-xs text-zinc-500">
841
- <template
842
- v-if="fieldDescription('hidden')"
843
- #tooltip
844
- >
845
- <Markdown
846
- :source="fieldDescription('hidden')"
847
- block
848
- class="prose prose-sm prose-zinc"
849
- />
850
- </template>
851
- {{ fieldTitle("hidden") }}
852
- </FieldLabel>
853
- <ExpressionEditor
854
- v-model="hiddenModel"
855
- placeholder="例:row.archived"
856
- result-type="bool"
857
- :extra-vars="ROW_VARS"
858
- />
859
- </Field>
860
878
  <Field orientation="vertical">
861
879
  <FieldLabel class="text-xs text-zinc-500">
862
880
  <template
@@ -937,6 +955,27 @@ function setItemKeywords(index, text) {
937
955
  </InputGroupAddon>
938
956
  </InputGroup>
939
957
  </Field>
958
+ <Field orientation="vertical">
959
+ <FieldLabel class="text-xs text-zinc-500">
960
+ <template
961
+ v-if="fieldDescription('hidden')"
962
+ #tooltip
963
+ >
964
+ <Markdown
965
+ :source="fieldDescription('hidden')"
966
+ block
967
+ class="prose prose-sm prose-zinc"
968
+ />
969
+ </template>
970
+ {{ fieldTitle("hidden") }}
971
+ </FieldLabel>
972
+ <div>
973
+ <Switch
974
+ :model-value="value.hidden ?? false"
975
+ @update:model-value="onHiddenChange"
976
+ />
977
+ </div>
978
+ </Field>
940
979
  </div>
941
980
  </div>
942
981
  </template>
@@ -15,7 +15,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
15
15
  readonly locale: "en" | "ja" | "ko";
16
16
  readonly message: string;
17
17
  }[]];
18
- readonly hidden?: string | undefined;
18
+ readonly hidden?: boolean | undefined;
19
19
  readonly tooltip?: readonly [{
20
20
  readonly locale: "zh";
21
21
  readonly message: string;
@@ -23,6 +23,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
23
23
  readonly locale: "en" | "ja" | "ko";
24
24
  readonly message: string;
25
25
  }[]] | undefined;
26
+ readonly align: "center" | "left" | "right";
26
27
  readonly compatibilityDate: "2026-06-14";
27
28
  readonly grow?: boolean | undefined;
28
29
  readonly groupId?: string | undefined;
@@ -101,7 +102,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
101
102
  readonly locale: "en" | "ja" | "ko";
102
103
  readonly message: string;
103
104
  }[]];
104
- readonly hidden?: string | undefined;
105
+ readonly hidden?: boolean | undefined;
105
106
  readonly tooltip?: readonly [{
106
107
  readonly locale: "zh";
107
108
  readonly message: string;
@@ -109,6 +110,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
109
110
  readonly locale: "en" | "ja" | "ko";
110
111
  readonly message: string;
111
112
  }[]] | undefined;
113
+ readonly align: "center" | "left" | "right";
112
114
  readonly compatibilityDate: "2026-06-14";
113
115
  readonly grow?: boolean | undefined;
114
116
  readonly groupId?: string | undefined;
@@ -25,7 +25,7 @@ import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from "
25
25
  import { Markdown } from "../../../../ui/markdown";
26
26
  import { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from "../../../../ui/popover";
27
27
  import { useFormState } from "../../../../form/utils/state";
28
- import { interpolateMarkdown } from "../../../utils/runtime";
28
+ import { interpolateMarkdown, JUSTIFY_CLASS, TEXT_ALIGN_CLASS } from "../../../utils/runtime";
29
29
  import { useSharedFetchLayer } from "../../../utils/shared-fetch";
30
30
  defineOptions({ name: "ShwfedTableComboboxSingleRuntime" });
31
31
  const props = defineProps({
@@ -65,6 +65,8 @@ const rowIndex = computed(() => props.ctx.row.index);
65
65
  const placeholderText = computed(
66
66
  () => props.column.placeholder ? getLocalizedText(props.column.placeholder, locale.value) : t("combobox-single-placeholder")
67
67
  );
68
+ const justifyClass = computed(() => JUSTIFY_CLASS[props.column.align ?? "left"] ?? JUSTIFY_CLASS.left);
69
+ const textAlignClass = computed(() => TEXT_ALIGN_CLASS[props.column.align ?? "left"] ?? TEXT_ALIGN_CLASS.left);
68
70
  function evalBool(expression, label) {
69
71
  if (!expression) return false;
70
72
  try {
@@ -74,7 +76,6 @@ function evalBool(expression, label) {
74
76
  return false;
75
77
  }
76
78
  }
77
- const isHidden = computed(() => evalBool(props.column.hidden, "hidden"));
78
79
  const isDisabledByConfig = computed(() => evalBool(props.column.disabled, "disabled"));
79
80
  const formReadonly = useFormReadonly();
80
81
  const isReadonly = computed(
@@ -316,10 +317,6 @@ const anyHasTooltip = computed(
316
317
 
317
318
  <template>
318
319
  <div class="p-[0.125rem] w-full">
319
- <span
320
- v-if="isHidden"
321
- class="block h-7 w-full"
322
- />
323
320
  <!--
324
321
  Readonly empty state mirrors the `text` column exactly: a centered,
325
322
  faded, non-selectable `-` in `font-mono`, so a readonly grid reads
@@ -327,10 +324,10 @@ const anyHasTooltip = computed(
327
324
  left-aligned dark text.
328
325
  -->
329
326
  <span
330
- v-else-if="isReadonly || !isInteractive"
327
+ v-if="isReadonly || !isInteractive"
331
328
  :class="[
332
329
  'flex items-center h-7 w-full px-2 text-[0.75rem] truncate',
333
- selectedLabel ? 'text-zinc-700' : 'justify-center font-mono text-zinc-300 select-none'
330
+ selectedLabel ? ['text-zinc-700', justifyClass] : 'justify-center font-mono text-zinc-300 select-none'
334
331
  ]"
335
332
  >
336
333
  {{ selectedLabel || "-" }}
@@ -349,7 +346,7 @@ const anyHasTooltip = computed(
349
346
  :model-value="selectedLabel"
350
347
  :disabled="isDisabled"
351
348
  :placeholder="placeholderText"
352
- class="h-7 text-[0.75rem] md:text-[0.75rem] px-2 cursor-pointer text-left"
349
+ :class="['h-7 text-[0.75rem] md:text-[0.75rem] px-2 cursor-pointer', textAlignClass]"
353
350
  readonly
354
351
  />
355
352
  </PopoverTrigger>
@@ -119,6 +119,9 @@ export declare function schema(configure: (env: Environment) => void): Schema.St
119
119
  locale: Schema.Literal<["ja", "en", "ko"]>;
120
120
  message: Schema.SchemaClass<string, string, never>;
121
121
  }>]>;
122
+ align: Schema.optionalWith<Schema.Literal<["left", "center", "right"]>, {
123
+ default: () => "left";
124
+ }>;
122
125
  placeholder: Schema.optional<Schema.TupleType<readonly [Schema.Struct<{
123
126
  locale: Schema.Literal<["zh"]>;
124
127
  message: Schema.SchemaClass<string, string, never>;
@@ -126,7 +129,6 @@ export declare function schema(configure: (env: Environment) => void): Schema.St
126
129
  locale: Schema.Literal<["ja", "en", "ko"]>;
127
130
  message: Schema.SchemaClass<string, string, never>;
128
131
  }>]>>;
129
- hidden: Schema.optional<Schema.Schema<string, string, never>>;
130
132
  disabled: Schema.optional<Schema.Schema<string, string, never>>;
131
133
  readonly: Schema.optional<Schema.Schema<string, string, never>>;
132
134
  enableSorting: Schema.optional<Schema.SchemaClass<boolean, boolean, never>>;
@@ -140,6 +142,7 @@ export declare function schema(configure: (env: Environment) => void): Schema.St
140
142
  locale: Schema.Literal<["ja", "en", "ko"]>;
141
143
  message: Schema.SchemaClass<string, string, never>;
142
144
  }>]>>;
145
+ hidden: Schema.optional<Schema.SchemaClass<boolean, boolean, never>>;
143
146
  options: Schema.optionalWith<Schema.Union<[Schema.Struct<{
144
147
  kind: Schema.Literal<["static"]>;
145
148
  items: Schema.optionalWith<Schema.Array$<Schema.Struct<{
@@ -4,6 +4,7 @@ import { Expression, HttpRequestResult } from "../../../../../share/expression.j
4
4
  import { Locale } from "../../../../../share/locale.js";
5
5
  import { Triggers } from "../../../../../share/event-bus.js";
6
6
  import {
7
+ Align,
7
8
  CelRowAccess,
8
9
  columnFields,
9
10
  columnIdentityFields,
@@ -177,14 +178,11 @@ export function schema(configure) {
177
178
  compatibilityDate: Schema.Literal(compatibilityDate),
178
179
  ...columnIdentityFields(),
179
180
  title: display.title,
181
+ align: Schema.optionalWith(Align.annotations({ title: "\u5BF9\u9F50" }), { default: () => "left" }),
180
182
  placeholder: Schema.optional(Locale.annotations({
181
183
  title: "\u5360\u4F4D\u7B26",
182
184
  description: "\u672A\u9009\u4E2D\u4EFB\u4F55\u9009\u9879\u65F6\u8F93\u5165\u6846\u4E2D\u7684\u5360\u4F4D\u6587\u672C"
183
185
  })),
184
- hidden: Schema.optional(CelBool.annotations({
185
- title: "\u9690\u85CF\u6761\u4EF6",
186
- description: "\u8FD4\u56DE `true` \u65F6\u8BE5\u884C\u7684\u4E0B\u62C9\u6846\u4E0D\u6E32\u67D3\uFF08\u5176\u4F59\u884C\u4E0D\u53D7\u5F71\u54CD\uFF09"
187
- })),
188
186
  disabled: Schema.optional(CelBool.annotations({
189
187
  title: "\u7981\u7528\u6761\u4EF6",
190
188
  description: "\u8FD4\u56DE `true` \u65F6\u4E0B\u62C9\u6846\u4ECD\u7136\u6E32\u67D3\u4F46\u4E0D\u53EF\u9009\u62E9"
@@ -198,6 +196,7 @@ export function schema(configure) {
198
196
  size: display.size,
199
197
  grow: display.grow,
200
198
  tooltip: display.tooltip,
199
+ hidden: display.hidden,
201
200
  options: Schema.optionalWith(Options, {
202
201
  default: () => ({ kind: "static", items: [] })
203
202
  }),
@@ -15,7 +15,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
15
15
  readonly locale: "en" | "ja" | "ko";
16
16
  readonly message: string;
17
17
  }[]];
18
- readonly hidden?: string | undefined;
18
+ readonly hidden?: boolean | undefined;
19
19
  readonly tooltip?: readonly [{
20
20
  readonly locale: "zh";
21
21
  readonly message: string;
@@ -23,6 +23,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
23
23
  readonly locale: "en" | "ja" | "ko";
24
24
  readonly message: string;
25
25
  }[]] | undefined;
26
+ readonly align: "center" | "left" | "right";
26
27
  readonly compatibilityDate: "2026-06-14";
27
28
  readonly grow?: boolean | undefined;
28
29
  readonly groupId?: string | undefined;
@@ -73,7 +74,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
73
74
  readonly locale: "en" | "ja" | "ko";
74
75
  readonly message: string;
75
76
  }[]];
76
- readonly hidden?: string | undefined;
77
+ readonly hidden?: boolean | undefined;
77
78
  readonly tooltip?: readonly [{
78
79
  readonly locale: "zh";
79
80
  readonly message: string;
@@ -81,6 +82,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
81
82
  readonly locale: "en" | "ja" | "ko";
82
83
  readonly message: string;
83
84
  }[]] | undefined;
85
+ readonly align: "center" | "left" | "right";
84
86
  readonly compatibilityDate: "2026-06-14";
85
87
  readonly grow?: boolean | undefined;
86
88
  readonly groupId?: string | undefined;