@shwfed/config 2.12.9 → 2.12.11

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 (43) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/module.mjs +8 -3
  3. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.d.vue.ts +68 -68
  4. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.vue.d.ts +68 -68
  5. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.d.vue.ts +68 -68
  6. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.vue.d.ts +68 -68
  7. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/schema.d.ts +34 -34
  8. package/dist/runtime/components/config/blocks/2026-06-17/com.shwfed.block.tree.single/runtime.vue +20 -2
  9. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/runtime.vue +2 -0
  10. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/runtime.vue +2 -0
  11. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/runtime.vue +2 -0
  12. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/runtime.vue +2 -0
  13. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/runtime.vue +2 -0
  14. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/runtime.vue +2 -0
  15. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/runtime.vue +2 -0
  16. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/runtime.vue +2 -0
  17. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/runtime.vue +2 -0
  18. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/runtime.vue +2 -0
  19. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/runtime.vue +5 -2
  20. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.month/runtime.vue +2 -0
  21. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/runtime.vue +2 -0
  22. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/runtime.vue +2 -0
  23. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/runtime.vue +2 -0
  24. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/runtime.vue +9 -1
  25. package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/runtime.vue +2 -0
  26. package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/runtime.vue +2 -0
  27. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +2 -2
  28. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +2 -2
  29. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +2 -2
  30. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +2 -2
  31. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +2 -2
  32. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +2 -2
  33. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +2 -2
  34. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +2 -2
  35. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +2 -2
  36. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +2 -2
  37. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +2 -2
  38. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +2 -2
  39. package/dist/runtime/components/table/config.vue +4 -1
  40. package/dist/runtime/components/table/index.vue +23 -2
  41. package/dist/runtime/components/table/schema.d.ts +68 -68
  42. package/dist/runtime/components/ui/field/index.js +6 -1
  43. package/package.json +1 -1
@@ -29,6 +29,40 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
29
29
  readonly message: string;
30
30
  }[]] | undefined;
31
31
  }[];
32
+ readonly query?: {
33
+ readonly style?: string | undefined;
34
+ readonly id?: string | undefined;
35
+ readonly initial?: {
36
+ readonly data: string;
37
+ readonly request?: string | undefined;
38
+ } | undefined;
39
+ readonly displayName?: string | undefined;
40
+ readonly kind: "shwfed.component.form";
41
+ readonly fields: readonly any[];
42
+ readonly layouts: readonly {
43
+ readonly name: string;
44
+ readonly layout: {
45
+ readonly style?: string | undefined;
46
+ readonly columns: number;
47
+ readonly gap?: number | undefined;
48
+ readonly rows?: number | undefined;
49
+ readonly placements: {
50
+ readonly [x: string]: {
51
+ readonly area: readonly [readonly [number, number], readonly [number, number]];
52
+ readonly v?: "stretch" | "center" | "end" | "start" | undefined;
53
+ readonly h?: "stretch" | "center" | "end" | "start" | undefined;
54
+ };
55
+ };
56
+ };
57
+ readonly media?: string | undefined;
58
+ }[];
59
+ readonly readonly?: string | undefined;
60
+ } | undefined;
61
+ readonly dataSource?: {
62
+ readonly data: string;
63
+ readonly total?: string | undefined;
64
+ readonly request?: string | undefined;
65
+ } | undefined;
32
66
  readonly actions?: {
33
67
  readonly size: "default" | "sm" | "xs";
34
68
  readonly style?: string | undefined;
@@ -96,40 +130,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
96
130
  readonly variant?: "default" | "link" | "destructive" | "primary" | "ghost" | undefined;
97
131
  }[];
98
132
  } | undefined;
99
- readonly query?: {
100
- readonly style?: string | undefined;
101
- readonly id?: string | undefined;
102
- readonly initial?: {
103
- readonly data: string;
104
- readonly request?: string | undefined;
105
- } | undefined;
106
- readonly displayName?: string | undefined;
107
- readonly kind: "shwfed.component.form";
108
- readonly fields: readonly any[];
109
- readonly layouts: readonly {
110
- readonly name: string;
111
- readonly layout: {
112
- readonly style?: string | undefined;
113
- readonly columns: number;
114
- readonly gap?: number | undefined;
115
- readonly rows?: number | undefined;
116
- readonly placements: {
117
- readonly [x: string]: {
118
- readonly area: readonly [readonly [number, number], readonly [number, number]];
119
- readonly v?: "stretch" | "center" | "end" | "start" | undefined;
120
- readonly h?: "stretch" | "center" | "end" | "start" | undefined;
121
- };
122
- };
123
- };
124
- readonly media?: string | undefined;
125
- }[];
126
- readonly readonly?: string | undefined;
127
- } | undefined;
128
- readonly dataSource?: {
129
- readonly data: string;
130
- readonly total?: string | undefined;
131
- readonly request?: string | undefined;
132
- } | undefined;
133
133
  readonly bottomActions?: {
134
134
  readonly size: "default" | "sm" | "xs";
135
135
  readonly style?: string | undefined;
@@ -277,6 +277,40 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
277
277
  readonly message: string;
278
278
  }[]] | undefined;
279
279
  }[];
280
+ readonly query?: {
281
+ readonly style?: string | undefined;
282
+ readonly id?: string | undefined;
283
+ readonly initial?: {
284
+ readonly data: string;
285
+ readonly request?: string | undefined;
286
+ } | undefined;
287
+ readonly displayName?: string | undefined;
288
+ readonly kind: "shwfed.component.form";
289
+ readonly fields: readonly any[];
290
+ readonly layouts: readonly {
291
+ readonly name: string;
292
+ readonly layout: {
293
+ readonly style?: string | undefined;
294
+ readonly columns: number;
295
+ readonly gap?: number | undefined;
296
+ readonly rows?: number | undefined;
297
+ readonly placements: {
298
+ readonly [x: string]: {
299
+ readonly area: readonly [readonly [number, number], readonly [number, number]];
300
+ readonly v?: "stretch" | "center" | "end" | "start" | undefined;
301
+ readonly h?: "stretch" | "center" | "end" | "start" | undefined;
302
+ };
303
+ };
304
+ };
305
+ readonly media?: string | undefined;
306
+ }[];
307
+ readonly readonly?: string | undefined;
308
+ } | undefined;
309
+ readonly dataSource?: {
310
+ readonly data: string;
311
+ readonly total?: string | undefined;
312
+ readonly request?: string | undefined;
313
+ } | undefined;
280
314
  readonly actions?: {
281
315
  readonly size: "default" | "sm" | "xs";
282
316
  readonly style?: string | undefined;
@@ -344,40 +378,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
344
378
  readonly variant?: "default" | "link" | "destructive" | "primary" | "ghost" | undefined;
345
379
  }[];
346
380
  } | undefined;
347
- readonly query?: {
348
- readonly style?: string | undefined;
349
- readonly id?: string | undefined;
350
- readonly initial?: {
351
- readonly data: string;
352
- readonly request?: string | undefined;
353
- } | undefined;
354
- readonly displayName?: string | undefined;
355
- readonly kind: "shwfed.component.form";
356
- readonly fields: readonly any[];
357
- readonly layouts: readonly {
358
- readonly name: string;
359
- readonly layout: {
360
- readonly style?: string | undefined;
361
- readonly columns: number;
362
- readonly gap?: number | undefined;
363
- readonly rows?: number | undefined;
364
- readonly placements: {
365
- readonly [x: string]: {
366
- readonly area: readonly [readonly [number, number], readonly [number, number]];
367
- readonly v?: "stretch" | "center" | "end" | "start" | undefined;
368
- readonly h?: "stretch" | "center" | "end" | "start" | undefined;
369
- };
370
- };
371
- };
372
- readonly media?: string | undefined;
373
- }[];
374
- readonly readonly?: string | undefined;
375
- } | undefined;
376
- readonly dataSource?: {
377
- readonly data: string;
378
- readonly total?: string | undefined;
379
- readonly request?: string | undefined;
380
- } | undefined;
381
381
  readonly bottomActions?: {
382
382
  readonly size: "default" | "sm" | "xs";
383
383
  readonly style?: string | undefined;
@@ -47,6 +47,40 @@ export declare function schema(configure: (env: Environment) => void, _blockRef:
47
47
  readonly message: string;
48
48
  }[]] | undefined;
49
49
  }[];
50
+ readonly query?: {
51
+ readonly style?: string | undefined;
52
+ readonly id?: string | undefined;
53
+ readonly initial?: {
54
+ readonly data: string;
55
+ readonly request?: string | undefined;
56
+ } | undefined;
57
+ readonly displayName?: string | undefined;
58
+ readonly kind: "shwfed.component.form";
59
+ readonly fields: readonly any[];
60
+ readonly layouts: readonly {
61
+ readonly name: string;
62
+ readonly layout: {
63
+ readonly style?: string | undefined;
64
+ readonly columns: number;
65
+ readonly gap?: number | undefined;
66
+ readonly rows?: number | undefined;
67
+ readonly placements: {
68
+ readonly [x: string]: {
69
+ readonly area: readonly [readonly [number, number], readonly [number, number]];
70
+ readonly v?: "stretch" | "center" | "end" | "start" | undefined;
71
+ readonly h?: "stretch" | "center" | "end" | "start" | undefined;
72
+ };
73
+ };
74
+ };
75
+ readonly media?: string | undefined;
76
+ }[];
77
+ readonly readonly?: string | undefined;
78
+ } | undefined;
79
+ readonly dataSource?: {
80
+ readonly data: string;
81
+ readonly total?: string | undefined;
82
+ readonly request?: string | undefined;
83
+ } | undefined;
50
84
  readonly actions?: {
51
85
  readonly size: "default" | "sm" | "xs";
52
86
  readonly style?: string | undefined;
@@ -114,40 +148,6 @@ export declare function schema(configure: (env: Environment) => void, _blockRef:
114
148
  readonly variant?: "default" | "link" | "destructive" | "primary" | "ghost" | undefined;
115
149
  }[];
116
150
  } | undefined;
117
- readonly query?: {
118
- readonly style?: string | undefined;
119
- readonly id?: string | undefined;
120
- readonly initial?: {
121
- readonly data: string;
122
- readonly request?: string | undefined;
123
- } | undefined;
124
- readonly displayName?: string | undefined;
125
- readonly kind: "shwfed.component.form";
126
- readonly fields: readonly any[];
127
- readonly layouts: readonly {
128
- readonly name: string;
129
- readonly layout: {
130
- readonly style?: string | undefined;
131
- readonly columns: number;
132
- readonly gap?: number | undefined;
133
- readonly rows?: number | undefined;
134
- readonly placements: {
135
- readonly [x: string]: {
136
- readonly area: readonly [readonly [number, number], readonly [number, number]];
137
- readonly v?: "stretch" | "center" | "end" | "start" | undefined;
138
- readonly h?: "stretch" | "center" | "end" | "start" | undefined;
139
- };
140
- };
141
- };
142
- readonly media?: string | undefined;
143
- }[];
144
- readonly readonly?: string | undefined;
145
- } | undefined;
146
- readonly dataSource?: {
147
- readonly data: string;
148
- readonly total?: string | undefined;
149
- readonly request?: string | undefined;
150
- } | undefined;
151
151
  readonly bottomActions?: {
152
152
  readonly size: "default" | "sm" | "xs";
153
153
  readonly style?: string | undefined;
@@ -1,13 +1,14 @@
1
1
  <script setup>
2
2
  import { Icon } from "@iconify/vue";
3
+ import { watchDebounced } from "@vueuse/core";
3
4
  import { Effect, Fiber, Option } from "effect";
4
5
  import { Fetch } from "fx-fetch";
5
6
  import { computed, ref, shallowRef, watch } from "vue";
6
7
  import { useI18n } from "vue-i18n";
7
- import { fetchJsonOption } from "../../../../../share/request";
8
+ import { asRequest, fetchJsonOption } from "../../../../../share/request";
8
9
  import { provideEventTarget } from "../../../../../share/event-bus";
9
10
  import { cel as _rawCel } from "../../../../../utils/cel";
10
- import { celBindings, injectCELContext } from "../../../../../utils/cel-context";
11
+ import { celBindings, celScope, injectCELContext } from "../../../../../utils/cel-context";
11
12
  import { publishSelection } from "../../../../../utils/selections-registry";
12
13
  import { getLocalizedText } from "../../../../../share/locale";
13
14
  import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from "../../../../ui/input-group";
@@ -98,6 +99,23 @@ watch(
98
99
  },
99
100
  { immediate: true }
100
101
  );
102
+ const requestSignature = computed(() => {
103
+ const expr = block.value.dataSource?.request;
104
+ if (!expr) return null;
105
+ try {
106
+ const req = asRequest(Effect.runSync(_rawCel(expr, celScope(inherited))));
107
+ return Option.isSome(req) ? JSON.stringify(req.value.describe()) : null;
108
+ } catch {
109
+ return null;
110
+ }
111
+ });
112
+ watchDebounced(
113
+ requestSignature,
114
+ (next, prev) => {
115
+ if (next !== null && next !== prev) void fetchTree();
116
+ },
117
+ { debounce: 200 }
118
+ );
101
119
  provideEventTarget(block.value.id, {
102
120
  "refresh": () => Effect.promise(fetchTree),
103
121
  "clear-selection": () => Effect.sync(() => {
@@ -105,6 +105,8 @@ function handleClear() {
105
105
  </FieldLabel>
106
106
  <div
107
107
  v-if="effectiveReadonly"
108
+ data-slot="field-value"
109
+ data-value="true"
108
110
  class="min-h-9 py-1.5 text-sm"
109
111
  :class="draft ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
110
112
  >
@@ -87,6 +87,8 @@ const { isRequired, errors, warnings, visible } = useFieldValidation({
87
87
  </FieldLabel>
88
88
  <div
89
89
  v-if="effectiveReadonly"
90
+ data-slot="field-value"
91
+ data-value="true"
90
92
  class="min-h-9 py-1.5 text-sm whitespace-pre-wrap"
91
93
  :class="draft ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
92
94
  >
@@ -122,6 +122,8 @@ const { isRequired, errors, warnings, visible } = useFieldValidation({
122
122
  </FieldLabel>
123
123
  <div
124
124
  v-if="effectiveReadonly"
125
+ data-slot="field-value"
126
+ data-value="true"
125
127
  class="min-h-9 py-1.5 text-sm"
126
128
  :class="model ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
127
129
  >
@@ -152,6 +152,8 @@ const readonlyText = computed(() => {
152
152
  </FieldLabel>
153
153
  <div
154
154
  v-if="effectiveReadonly"
155
+ data-slot="field-value"
156
+ data-value="true"
155
157
  class="min-h-9 py-1.5 text-sm"
156
158
  :class="readonlyText ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
157
159
  >
@@ -122,6 +122,8 @@ const { isRequired, errors, warnings, visible } = useFieldValidation({
122
122
  </FieldLabel>
123
123
  <div
124
124
  v-if="effectiveReadonly"
125
+ data-slot="field-value"
126
+ data-value="true"
125
127
  class="min-h-9 py-1.5 text-sm"
126
128
  :class="model ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
127
129
  >
@@ -152,6 +152,8 @@ const readonlyText = computed(() => {
152
152
  </FieldLabel>
153
153
  <div
154
154
  v-if="effectiveReadonly"
155
+ data-slot="field-value"
156
+ data-value="true"
155
157
  class="min-h-9 py-1.5 text-sm"
156
158
  :class="readonlyText ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
157
159
  >
@@ -95,6 +95,8 @@ const { isRequired, errors, warnings, visible } = useFieldValidation({
95
95
  </FieldLabel>
96
96
  <div
97
97
  v-if="effectiveReadonly"
98
+ data-slot="field-value"
99
+ data-value="true"
98
100
  class="min-h-9 py-1.5 text-sm"
99
101
  :class="model ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
100
102
  >
@@ -118,6 +118,8 @@ const readonlyText = computed(() => {
118
118
  </FieldLabel>
119
119
  <div
120
120
  v-if="effectiveReadonly"
121
+ data-slot="field-value"
122
+ data-value="true"
121
123
  class="min-h-9 py-1.5 text-sm"
122
124
  :class="readonlyText ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
123
125
  >
@@ -160,6 +160,8 @@ async function onBlur() {
160
160
  </FieldLabel>
161
161
  <div
162
162
  v-if="effectiveReadonly"
163
+ data-slot="field-value"
164
+ data-value="true"
163
165
  class="min-h-9 py-1.5 text-sm"
164
166
  :class="[
165
167
  draft != null ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none',
@@ -224,6 +224,8 @@ const readonlyText = computed(() => {
224
224
  </FieldLabel>
225
225
  <div
226
226
  v-if="effectiveReadonly"
227
+ data-slot="field-value"
228
+ data-value="true"
227
229
  class="min-h-9 py-1.5 text-sm"
228
230
  :class="readonlyText ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
229
231
  >
@@ -16,6 +16,7 @@ import { Field, FieldLabel, FieldMessages } from "../../../../ui/field";
16
16
  import { InputGroupButton } from "../../../../ui/input-group";
17
17
  import { Markdown } from "../../../../ui/markdown";
18
18
  import { useFieldValidation } from "../../../utils/validation";
19
+ import { useFormReadonly } from "../../../utils/readonly";
19
20
  import { SELF_BINDING, useFormScope, useFormState } from "../../../utils/state";
20
21
  import Row from "./row.vue";
21
22
  defineOptions({ name: "ShwfedListFieldRuntime" });
@@ -54,6 +55,7 @@ const { isRequired, errors, warnings, visible } = useFieldValidation({
54
55
  locale: () => locale.value
55
56
  });
56
57
  const isDisabled = computed(() => evalBool(props.config.disabled, "disabled"));
58
+ const isReadonly = useFormReadonly();
57
59
  const reorderable = computed(() => props.config.reorderable ?? true);
58
60
  const addable = computed(() => props.config.addable ?? true);
59
61
  const isScalarRow = computed(() => {
@@ -242,7 +244,7 @@ function rowConfig(i) {
242
244
  >
243
245
  <div class="flex items-center gap-2">
244
246
  <Icon
245
- v-if="reorderable"
247
+ v-if="reorderable && !isReadonly"
246
248
  icon="fluent:re-order-dots-vertical-20-regular"
247
249
  class="drag-handle size-4 shrink-0 text-zinc-400"
248
250
  :class="canReorder ? 'cursor-grab' : 'cursor-not-allowed opacity-50'"
@@ -286,6 +288,7 @@ function rowConfig(i) {
286
288
  </div>
287
289
 
288
290
  <InputGroupButton
291
+ v-if="!isReadonly"
289
292
  variant="destructive"
290
293
  size="icon-xs"
291
294
  class="shrink-0"
@@ -314,7 +317,7 @@ function rowConfig(i) {
314
317
  </div>
315
318
 
316
319
  <Button
317
- v-if="addable"
320
+ v-if="addable && !isReadonly"
318
321
  type="button"
319
322
  :disabled="!canAdd"
320
323
  data-slot="list-add"
@@ -122,6 +122,8 @@ const model = computed({
122
122
  </FieldLabel>
123
123
  <div
124
124
  v-if="effectiveReadonly"
125
+ data-slot="field-value"
126
+ data-value="true"
125
127
  class="min-h-9 py-1.5 text-sm"
126
128
  :class="model ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
127
129
  >
@@ -152,6 +152,8 @@ const readonlyText = computed(() => {
152
152
  </FieldLabel>
153
153
  <div
154
154
  v-if="effectiveReadonly"
155
+ data-slot="field-value"
156
+ data-value="true"
155
157
  class="min-h-9 py-1.5 text-sm"
156
158
  :class="readonlyText ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
157
159
  >
@@ -382,6 +382,8 @@ const hoveredTooltip = computed(() => {
382
382
 
383
383
  <div
384
384
  v-if="effectiveReadonly"
385
+ data-slot="field-value"
386
+ data-value="true"
385
387
  class="min-h-9 py-1.5 text-sm"
386
388
  :class="triggerLabel ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
387
389
  >
@@ -370,6 +370,8 @@ const hoveredTooltip = computed(() => {
370
370
 
371
371
  <div
372
372
  v-if="effectiveReadonly"
373
+ data-slot="field-value"
374
+ data-value="true"
373
375
  class="min-h-9 py-1.5 text-sm"
374
376
  :class="triggerLabel ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
375
377
  >
@@ -375,7 +375,15 @@ async function onDownloadTemplate(template) {
375
375
  :data-readonly="isReadonly || void 0"
376
376
  >
377
377
  <div
378
- v-if="entries.length === 0"
378
+ v-if="entries.length === 0 && isReadonly"
379
+ class="min-h-9 py-1.5 text-sm font-mono text-zinc-300 select-none"
380
+ data-slot="upload-empty"
381
+ >
382
+ {{ "-" }}
383
+ </div>
384
+
385
+ <div
386
+ v-else-if="entries.length === 0"
379
387
  role="button"
380
388
  :tabindex="canAdd ? 0 : -1"
381
389
  data-slot="upload-zone"
@@ -319,6 +319,8 @@ function handleClear() {
319
319
  </FieldLabel>
320
320
  <div
321
321
  v-if="effectiveReadonly"
322
+ data-slot="field-value"
323
+ data-value="true"
322
324
  class="min-h-9 py-1.5 text-sm"
323
325
  :class="readonlyLabel ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
324
326
  >
@@ -324,6 +324,8 @@ const anyHasTooltip = computed(
324
324
  </FieldLabel>
325
325
  <div
326
326
  v-if="effectiveReadonly"
327
+ data-slot="field-value"
328
+ data-value="true"
327
329
  class="min-h-9 py-1.5 text-sm"
328
330
  :class="selectedLabel ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
329
331
  >
@@ -43,7 +43,6 @@ 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;
47
46
  readonly nodeKey: string;
48
47
  readonly nodeChildren: string;
49
48
  readonly nodeLabel: readonly [{
@@ -53,6 +52,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
53
52
  readonly locale: "en" | "ja" | "ko";
54
53
  readonly message: string;
55
54
  }[]];
55
+ readonly enableSorting?: boolean | undefined;
56
56
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
57
57
  readonly nodeTooltip?: readonly [{
58
58
  readonly locale: "zh";
@@ -106,7 +106,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
106
106
  readonly data: string;
107
107
  readonly request?: string | undefined;
108
108
  };
109
- readonly enableSorting?: boolean | undefined;
110
109
  readonly nodeKey: string;
111
110
  readonly nodeChildren: string;
112
111
  readonly nodeLabel: readonly [{
@@ -116,6 +115,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
116
115
  readonly locale: "en" | "ja" | "ko";
117
116
  readonly message: string;
118
117
  }[]];
118
+ readonly enableSorting?: boolean | undefined;
119
119
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
120
120
  readonly nodeTooltip?: readonly [{
121
121
  readonly locale: "zh";
@@ -43,7 +43,6 @@ 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;
47
46
  readonly nodeKey: string;
48
47
  readonly nodeChildren: string;
49
48
  readonly nodeLabel: readonly [{
@@ -53,6 +52,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
53
52
  readonly locale: "en" | "ja" | "ko";
54
53
  readonly message: string;
55
54
  }[]];
55
+ readonly enableSorting?: boolean | undefined;
56
56
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
57
57
  readonly nodeTooltip?: readonly [{
58
58
  readonly locale: "zh";
@@ -106,7 +106,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
106
106
  readonly data: string;
107
107
  readonly request?: string | undefined;
108
108
  };
109
- readonly enableSorting?: boolean | undefined;
110
109
  readonly nodeKey: string;
111
110
  readonly nodeChildren: string;
112
111
  readonly nodeLabel: readonly [{
@@ -116,6 +115,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
116
115
  readonly locale: "en" | "ja" | "ko";
117
116
  readonly message: string;
118
117
  }[]];
118
+ readonly enableSorting?: boolean | undefined;
119
119
  readonly cascade: "independent" | "cascade-down" | "cascade-both";
120
120
  readonly nodeTooltip?: readonly [{
121
121
  readonly locale: "zh";
@@ -43,7 +43,6 @@ 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;
47
46
  readonly nodeKey: string;
48
47
  readonly nodeChildren: string;
49
48
  readonly nodeLabel: readonly [{
@@ -53,6 +52,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
53
52
  readonly locale: "en" | "ja" | "ko";
54
53
  readonly message: string;
55
54
  }[]];
55
+ readonly enableSorting?: boolean | undefined;
56
56
  readonly nodeTooltip?: readonly [{
57
57
  readonly locale: "zh";
58
58
  readonly message: string;
@@ -105,7 +105,6 @@ 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;
109
108
  readonly nodeKey: string;
110
109
  readonly nodeChildren: string;
111
110
  readonly nodeLabel: readonly [{
@@ -115,6 +114,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
115
114
  readonly locale: "en" | "ja" | "ko";
116
115
  readonly message: string;
117
116
  }[]];
117
+ readonly enableSorting?: boolean | undefined;
118
118
  readonly nodeTooltip?: readonly [{
119
119
  readonly locale: "zh";
120
120
  readonly message: string;
@@ -43,7 +43,6 @@ 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;
47
46
  readonly nodeKey: string;
48
47
  readonly nodeChildren: string;
49
48
  readonly nodeLabel: readonly [{
@@ -53,6 +52,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
53
52
  readonly locale: "en" | "ja" | "ko";
54
53
  readonly message: string;
55
54
  }[]];
55
+ readonly enableSorting?: boolean | undefined;
56
56
  readonly nodeTooltip?: readonly [{
57
57
  readonly locale: "zh";
58
58
  readonly message: string;
@@ -105,7 +105,6 @@ 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;
109
108
  readonly nodeKey: string;
110
109
  readonly nodeChildren: string;
111
110
  readonly nodeLabel: readonly [{
@@ -115,6 +114,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
115
114
  readonly locale: "en" | "ja" | "ko";
116
115
  readonly message: string;
117
116
  }[]];
117
+ readonly enableSorting?: boolean | undefined;
118
118
  readonly nodeTooltip?: readonly [{
119
119
  readonly locale: "zh";
120
120
  readonly message: string;