@shwfed/config 2.12.18 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/runtime/components/actions/buttons/2026-06-25/com.shwfed.actions.button.state.write/config.vue +17 -11
  3. package/dist/runtime/components/config/footer.vue +14 -8
  4. package/dist/runtime/components/config/index.d.vue.ts +1 -0
  5. package/dist/runtime/components/config/index.vue +30 -2
  6. package/dist/runtime/components/config/index.vue.d.ts +1 -0
  7. package/dist/runtime/components/config/use-editor.d.ts +12 -1
  8. package/dist/runtime/components/config/use-editor.js +47 -24
  9. package/dist/runtime/components/config/use-unsaved-guard.d.ts +1 -0
  10. package/dist/runtime/components/config/use-unsaved-guard.js +8 -0
  11. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.d.vue.ts +6 -6
  12. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.vue.d.ts +6 -6
  13. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.d.vue.ts +8 -8
  14. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.vue.d.ts +8 -8
  15. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.d.vue.ts +2 -2
  16. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.vue.d.ts +2 -2
  17. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.d.vue.ts +6 -6
  18. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.vue.d.ts +6 -6
  19. package/dist/runtime/components/modal.d.vue.ts +8 -8
  20. package/dist/runtime/components/modal.vue +9 -1
  21. package/dist/runtime/components/modal.vue.d.ts +8 -8
  22. package/dist/runtime/components/sidebar/footer.vue +13 -7
  23. package/dist/runtime/components/sidebar/index.d.vue.ts +1 -0
  24. package/dist/runtime/components/sidebar/index.vue +30 -2
  25. package/dist/runtime/components/sidebar/index.vue.d.ts +1 -0
  26. package/dist/runtime/components/sidebar/use-editor.d.ts +11 -1
  27. package/dist/runtime/components/sidebar/use-editor.js +38 -17
  28. package/dist/runtime/components/table/columns/2026-07-12/com.shwfed.table.column.dynamic/config.d.vue.ts +10 -0
  29. package/dist/runtime/components/table/columns/2026-07-12/com.shwfed.table.column.dynamic/config.vue +73 -0
  30. package/dist/runtime/components/table/columns/2026-07-12/com.shwfed.table.column.dynamic/config.vue.d.ts +10 -0
  31. package/dist/runtime/components/table/columns/2026-07-12/com.shwfed.table.column.dynamic/schema.d.ts +63 -0
  32. package/dist/runtime/components/table/columns/2026-07-12/com.shwfed.table.column.dynamic/schema.js +157 -0
  33. package/dist/runtime/components/table/index.vue +86 -12
  34. package/dist/runtime/components/table/utils/resolve.d.ts +42 -0
  35. package/dist/runtime/components/table/utils/resolve.js +11 -3
  36. package/dist/runtime/components/ui/date-picker/DatePickerInput.d.vue.ts +1 -1
  37. package/dist/runtime/components/ui/date-picker/DatePickerInput.vue.d.ts +1 -1
  38. package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.d.vue.ts +1 -1
  39. package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.vue.d.ts +1 -1
  40. package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.d.vue.ts +1 -1
  41. package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.vue.d.ts +1 -1
  42. package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.d.vue.ts +2 -2
  43. package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.vue.d.ts +2 -2
  44. package/dist/runtime/components/ui/expression-editor/ExpressionEditor.vue +4 -1
  45. package/dist/runtime/share/define-registry.d.ts +11 -0
  46. package/dist/runtime/share/define-registry.js +10 -3
  47. package/package.json +1 -1
package/dist/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "shwfed",
3
3
  "configKey": "shwfed",
4
- "version": "2.12.18",
4
+ "version": "3.0.1",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.2",
7
7
  "unbuild": "unknown"
@@ -79,23 +79,26 @@ function updateTriggers(next) {
79
79
  </FieldLabel>
80
80
 
81
81
  <div class="flex flex-col gap-3">
82
- <!-- One「写入前」request per line: a static「第 N 步」marker notched into
83
- the editor's `leading` slot (its response is referenced positionally
84
- as `steps["<id>"]`), the request expression in the editor, and a
85
- destructive delete in the `trailing` slot. Outside `TriggerRowScope`
86
- so the request expressions keep the base scope (no `steps`). -->
82
+ <!-- One「写入前」request per multiline editor: a「第 N 步」marker in the
83
+ `leading` header row (its response is referenced positionally as
84
+ `steps["<id>"]`), the request expression wrapping below, and a
85
+ destructive delete in the `trailing` bottom row. Outside
86
+ `TriggerRowScope` so the request expressions keep the base scope
87
+ (no `steps`). -->
87
88
  <ExpressionEditor
88
89
  v-for="(row, index) in requests"
89
90
  :key="row.id"
90
91
  :model-value="row.request"
92
+ multiline
91
93
  result-type="HttpRequest"
92
94
  placeholder="请求,如 http.get('/api/rate')"
95
+ class="min-h-16"
93
96
  @update:model-value="(v) => updateRequestRow(index, { request: v })"
94
97
  >
95
98
  <template #leading>
96
99
  <span
97
100
  data-slot="state-write-request-step"
98
- class="w-16 shrink-0 border-r border-zinc-200 pr-3 font-mono text-xs whitespace-nowrap text-zinc-500 select-none"
101
+ class="font-mono text-xs whitespace-nowrap text-zinc-500 select-none"
99
102
  >第 {{ index + 1 }} 步</span>
100
103
  </template>
101
104
  <template #trailing>
@@ -146,15 +149,18 @@ function updateTriggers(next) {
146
149
  validation, while the request editors above keep the base scope. -->
147
150
  <TriggerRowScope :roster="roster">
148
151
  <div class="flex flex-col gap-3">
149
- <!-- One write item, on a single line: a monofont binding path notched
150
- into the editor's `leading` slot, the value expression in the
151
- editor itself (its own `{x}` badge), and a destructive delete in
152
- the `trailing` slot. Reuses the ExpressionEditor's own InputGroup. -->
152
+ <!-- One write item per multiline editor: the monofont binding path as
153
+ a full-width `leading` header row, the value expression wrapping
154
+ below (its own `{x}` badge), and a destructive delete in the
155
+ `trailing` bottom row. Reuses the ExpressionEditor's own
156
+ InputGroup. -->
153
157
  <ExpressionEditor
154
158
  v-for="(row, index) in writes"
155
159
  :key="index"
156
160
  :model-value="row.value"
161
+ multiline
157
162
  placeholder="值,如 selected[?0].?exchangeRate"
163
+ class="min-h-16"
158
164
  @update:model-value="(v) => updateRow(index, { value: v })"
159
165
  >
160
166
  <template #leading>
@@ -163,7 +169,7 @@ function updateTriggers(next) {
163
169
  data-slot="state-write-path"
164
170
  :value="row.path"
165
171
  placeholder="路径"
166
- class="w-44 min-w-0 border-r border-zinc-200 bg-transparent pr-3 font-mono text-sm text-zinc-700 outline-none placeholder:text-zinc-300"
172
+ class="w-full min-w-0 bg-transparent font-mono text-sm text-zinc-700 outline-none placeholder:text-zinc-300"
167
173
  :aria-label="`\u5199\u5165\u8DEF\u5F84 ${index + 1}`"
168
174
  @input="updateRow(index, { path: $event.target.value })"
169
175
  >
@@ -10,16 +10,12 @@ const props = defineProps({
10
10
  });
11
11
  const emit = defineEmits(["close", "select-version"]);
12
12
  function onDismiss() {
13
+ if (props.state.saving.value) return;
13
14
  props.state.dismiss();
14
15
  emit("close");
15
16
  }
16
- function onConfirm() {
17
- const dirtyBefore = props.state.isDirty.value;
18
- const errorBefore = props.state.validationError.value;
19
- props.state.confirm();
20
- const errorAfter = props.state.validationError.value;
21
- if (errorAfter && errorAfter !== errorBefore) return;
22
- if (!dirtyBefore || !errorAfter) emit("close");
17
+ async function onConfirm() {
18
+ if (await props.state.confirm()) emit("close");
23
19
  }
24
20
  </script>
25
21
 
@@ -30,12 +26,17 @@ function onConfirm() {
30
26
  v-if="props.state.validationError.value"
31
27
  class="text-red-500 break-all"
32
28
  >{{ props.state.validationError.value }}</span>
29
+ <span
30
+ v-if="props.state.saveError.value"
31
+ class="text-red-500 break-all"
32
+ >{{ props.state.saveError.value }}</span>
33
33
  </div>
34
34
  <Button
35
35
  v-if="props.state.stack.value.length > 1"
36
36
  type="button"
37
37
  variant="default"
38
38
  size="sm"
39
+ :disabled="props.state.saving.value"
39
40
  @click="props.state.popOne()"
40
41
  >
41
42
  <Icon icon="fluent:arrow-left-20-regular" />
@@ -46,6 +47,7 @@ function onConfirm() {
46
47
  type="button"
47
48
  variant="default"
48
49
  size="sm"
50
+ :disabled="props.state.saving.value"
49
51
  @click="onDismiss"
50
52
  >
51
53
  <Icon icon="fluent:dismiss-20-regular" />
@@ -61,9 +63,13 @@ function onConfirm() {
61
63
  type="button"
62
64
  variant="primary"
63
65
  size="sm"
66
+ :disabled="props.state.saving.value"
64
67
  @click="onConfirm"
65
68
  >
66
- <Icon icon="fluent:checkmark-20-regular" />
69
+ <Icon
70
+ :icon="props.state.saving.value ? 'fluent:arrow-sync-20-regular' : 'fluent:checkmark-20-regular'"
71
+ :class="props.state.saving.value ? 'animate-spin' : ''"
72
+ />
67
73
  确认
68
74
  </Button>
69
75
  <HistoryPicker
@@ -4,6 +4,7 @@ import { type PageConfigValue } from './schema.js';
4
4
  type __VLS_Props = {
5
5
  configure?: (env: Environment) => void;
6
6
  editable?: boolean;
7
+ save?: (config: PageConfigValue) => void | Promise<void>;
7
8
  versions?: HistoryVersion[];
8
9
  };
9
10
  type __VLS_ModelProps = {
@@ -21,6 +21,7 @@ import * as httpRequestOperation from "../operations/2026-06-11/com.shwfed.opera
21
21
  import * as navigationOperation from "../operations/2026-06-15/com.shwfed.operation.navigation/schema";
22
22
  import { PAGE_TARGET_ID, createPageConfig } from "./schema";
23
23
  import { useConfigEditor } from "./use-editor";
24
+ import { useUnsavedChangesGuard } from "./use-unsaved-guard";
24
25
  import { findBlock } from "./utils/resolve";
25
26
  import { useTabStore } from "../tabs/use-tabs";
26
27
  import { publishPageTitle } from "../../utils/page-title-registry";
@@ -35,6 +36,7 @@ const config = computed({
35
36
  const props = defineProps({
36
37
  configure: { type: Function, required: false },
37
38
  editable: { type: Boolean, required: false },
39
+ save: { type: Function, required: false },
38
40
  versions: { type: Array, required: false }
39
41
  });
40
42
  const emit = defineEmits(["select-version"]);
@@ -95,10 +97,17 @@ provideEventTarget(PAGE_TARGET_ID, {
95
97
  const editorOpen = ref(false);
96
98
  const editorState = useConfigEditor(config, {
97
99
  configure: mergedConfigure,
100
+ // Presence is decided once at setup (a host toggling the prop's existence
101
+ // at runtime is not supported); the wrapper reads the current prop per
102
+ // call so a rebound handler identity stays honored.
103
+ save: props.save ? (cfg) => props.save(cfg) : void 0,
98
104
  onClose: () => {
99
105
  editorOpen.value = false;
100
106
  }
101
107
  });
108
+ useUnsavedChangesGuard(
109
+ () => props.editable === true && (editorState.isDirty.value || editorState.saving.value)
110
+ );
102
111
  watch(editorOpen, (open, prev) => {
103
112
  if (open && !prev) editorState.reset();
104
113
  });
@@ -202,11 +211,16 @@ const isMac = computed(
202
211
  </template>
203
212
  </SlotRenderer>
204
213
  </div>
214
+ <!-- While the draft is dirty (or a save is in flight) the modal refuses
215
+ casual dismissal — Esc, outside-click, and the × button all drop the
216
+ session on the reopen re-anchor above, which was a top edit-loss
217
+ complaint. The explicit footer exits (取消 discards, 确认 saves)
218
+ remain the only ways out of a dirty session. -->
205
219
  <ShwfedModal
206
220
  v-if="editable"
207
221
  v-model:open="editorOpen"
208
222
  content-width="90vw"
209
- :dismissible="true"
223
+ :dismissible="!editorState.isDirty.value && !editorState.saving.value"
210
224
  >
211
225
  <template #title>
212
226
  <EditorBreadcrumb :state="editorState" />
@@ -214,7 +228,21 @@ const isMac = computed(
214
228
  <template #description>
215
229
  <span class="sr-only">编辑页面布局与块配置</span>
216
230
  </template>
217
- <EditorBody :state="editorState" />
231
+ <!-- The overlay freezes the canvas while the host save runs: an edit
232
+ landing mid-save would be silently clobbered by the post-commit
233
+ draft re-anchor. -->
234
+ <div class="relative">
235
+ <EditorBody :state="editorState" />
236
+ <div
237
+ v-if="editorState.saving.value"
238
+ class="absolute inset-0 z-20 flex items-center justify-center bg-white/60"
239
+ >
240
+ <Icon
241
+ icon="fluent:arrow-sync-20-regular"
242
+ class="animate-spin text-2xl text-zinc-500"
243
+ />
244
+ </div>
245
+ </div>
218
246
  <template #footer>
219
247
  <EditorFooter
220
248
  :state="editorState"
@@ -4,6 +4,7 @@ import { type PageConfigValue } from './schema.js';
4
4
  type __VLS_Props = {
5
5
  configure?: (env: Environment) => void;
6
6
  editable?: boolean;
7
+ save?: (config: PageConfigValue) => void | Promise<void>;
7
8
  versions?: HistoryVersion[];
8
9
  };
9
10
  type __VLS_ModelProps = {
@@ -84,6 +84,8 @@ export interface ConfigEditorState {
84
84
  selectedBlockIds: Ref<string[]>;
85
85
  activeLayoutIndex: Ref<number>;
86
86
  validationError: Ref<string | null>;
87
+ saveError: Ref<string | null>;
88
+ saving: Ref<boolean>;
87
89
  addCrumb: () => BreadcrumbCrumb;
88
90
  addParentSuffix: () => BreadcrumbParentSuffix;
89
91
  isDirty: ComputedRef<boolean>;
@@ -116,12 +118,21 @@ export interface ConfigEditorState {
116
118
  getBlockLabel: (b: BlockValue) => string;
117
119
  findBlockMeta: (type: string, compatibilityDate: string) => BlockEntry | undefined;
118
120
  onDrillDown: (blockId: string) => void;
119
- confirm: () => void;
121
+ confirm: () => Promise<boolean>;
120
122
  dismiss: () => void;
121
123
  reset: () => void;
122
124
  }
123
125
  export interface UseConfigEditorOptions {
124
126
  configure?: (env: Environment) => void;
127
+ /**
128
+ * Delegated persistence. When provided, a successful 确认 first awaits this
129
+ * with the validated config; only after it resolves does the draft commit
130
+ * to the outer model and the editor close. A rejection keeps the editor
131
+ * open with the draft intact and surfaces the failure via `saveError` — the
132
+ * host owns transport and recovery (retry, re-auth, offline fallback, …),
133
+ * the editor guarantees the session is never lost to a failed save.
134
+ */
135
+ save?: (config: PageConfigValue) => void | Promise<void>;
125
136
  /**
126
137
  * Called after a successful 确认 commits the draft to the outer model.
127
138
  * Hosts wire this to close the modal; legacy mode emits `close`.
@@ -375,40 +375,58 @@ export function useConfigEditor(model, options = {}) {
375
375
  pushBlock(blockId);
376
376
  }
377
377
  const validationError = ref(null);
378
+ const saveError = ref(null);
379
+ const saving = ref(false);
378
380
  const validityRegistry = createExpressionValidityRegistry();
379
381
  provideExpressionValidity(validityRegistry);
380
- function confirm() {
382
+ async function confirm() {
383
+ if (saving.value) return false;
381
384
  const schema = PageConfig(configure);
385
+ let decoded;
382
386
  try {
383
- const decoded = Schema.decodeUnknownSync(schema)(draft.value);
384
- if (!validityRegistry.allValid()) {
385
- validationError.value = "\u5B58\u5728\u65E0\u6548\u7684\u8DE8\u5C42\u4F5C\u7528\u57DF\u5F15\u7528\uFF0C\u8BF7\u4FEE\u6B63\u6807\u7EA2\u7684\u8868\u8FBE\u5F0F\u540E\u518D\u4FDD\u5B58";
386
- return;
387
- }
388
- const dangling = findDanglingLinkages(decoded);
389
- if (dangling.length > 0) {
390
- validationError.value = formatDanglingLinkages(dangling, decoded, (i) => {
391
- const b = topSlotEditor.blocks.value[i];
392
- return b ? topSlotEditor.getBlockLabel(b) : void 0;
393
- });
394
- return;
395
- }
396
- validationError.value = null;
397
- model.value = decoded;
398
- baseline.value = deepClone(decoded);
399
- draft.value = deepClone(decoded);
400
- stack.value = [{ kind: "layout" }];
401
- topSlotEditor.selectedBlockIds.value = [];
402
- topSlotEditor.activeLayoutIndex.value = 0;
403
- subCrumbs.value = [];
404
- parentSuffixes.value = [];
405
- options.onClose?.();
387
+ decoded = Schema.decodeUnknownSync(schema)(draft.value);
406
388
  } catch (err) {
407
389
  validationError.value = formatValidationError(err, (i) => {
408
390
  const b = topSlotEditor.blocks.value[i];
409
391
  return b ? topSlotEditor.getBlockLabel(b) : void 0;
410
392
  }, draft.value);
393
+ return false;
411
394
  }
395
+ if (!validityRegistry.allValid()) {
396
+ validationError.value = "\u5B58\u5728\u65E0\u6548\u7684\u8DE8\u5C42\u4F5C\u7528\u57DF\u5F15\u7528\uFF0C\u8BF7\u4FEE\u6B63\u6807\u7EA2\u7684\u8868\u8FBE\u5F0F\u540E\u518D\u4FDD\u5B58";
397
+ return false;
398
+ }
399
+ const dangling = findDanglingLinkages(decoded);
400
+ if (dangling.length > 0) {
401
+ validationError.value = formatDanglingLinkages(dangling, decoded, (i) => {
402
+ const b = topSlotEditor.blocks.value[i];
403
+ return b ? topSlotEditor.getBlockLabel(b) : void 0;
404
+ });
405
+ return false;
406
+ }
407
+ validationError.value = null;
408
+ if (options.save) {
409
+ saving.value = true;
410
+ saveError.value = null;
411
+ try {
412
+ await options.save(deepClone(decoded));
413
+ } catch (err) {
414
+ saveError.value = `\u4FDD\u5B58\u5931\u8D25\uFF1A${err instanceof Error ? err.message : String(err)}`;
415
+ return false;
416
+ } finally {
417
+ saving.value = false;
418
+ }
419
+ }
420
+ model.value = decoded;
421
+ baseline.value = deepClone(decoded);
422
+ draft.value = deepClone(decoded);
423
+ stack.value = [{ kind: "layout" }];
424
+ topSlotEditor.selectedBlockIds.value = [];
425
+ topSlotEditor.activeLayoutIndex.value = 0;
426
+ subCrumbs.value = [];
427
+ parentSuffixes.value = [];
428
+ options.onClose?.();
429
+ return true;
412
430
  }
413
431
  function reset() {
414
432
  baseline.value = deepClone(model.value);
@@ -417,15 +435,18 @@ export function useConfigEditor(model, options = {}) {
417
435
  topSlotEditor.selectedBlockIds.value = [];
418
436
  topSlotEditor.activeLayoutIndex.value = 0;
419
437
  validationError.value = null;
438
+ saveError.value = null;
420
439
  subCrumbs.value = [];
421
440
  parentSuffixes.value = [];
422
441
  }
423
442
  function dismiss() {
443
+ if (saving.value) return;
424
444
  reset();
425
445
  options.onClose?.();
426
446
  }
427
447
  watch(draft, () => {
428
448
  if (validationError.value) validationError.value = null;
449
+ if (saveError.value) saveError.value = null;
429
450
  }, { deep: true });
430
451
  return {
431
452
  draft,
@@ -433,6 +454,8 @@ export function useConfigEditor(model, options = {}) {
433
454
  selectedBlockIds: topSlotEditor.selectedBlockIds,
434
455
  activeLayoutIndex: topSlotEditor.activeLayoutIndex,
435
456
  validationError,
457
+ saveError,
458
+ saving,
436
459
  addCrumb,
437
460
  addParentSuffix,
438
461
  isDirty,
@@ -0,0 +1 @@
1
+ export declare function useUnsavedChangesGuard(hasUnsaved: () => boolean): void;
@@ -0,0 +1,8 @@
1
+ import { useEventListener } from "@vueuse/core";
2
+ export function useUnsavedChangesGuard(hasUnsaved) {
3
+ useEventListener("beforeunload", (event) => {
4
+ if (!hasUnsaved()) return;
5
+ event.preventDefault();
6
+ event.returnValue = "";
7
+ });
8
+ }
@@ -33,10 +33,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
33
33
  readonly expression: string;
34
34
  } | undefined;
35
35
  readonly numberOfMonths?: number | undefined;
36
- readonly format?: string | undefined;
37
- readonly valueFormat?: string | undefined;
38
- readonly disabledDate?: string | undefined;
39
36
  readonly rangeSeparatorIcon?: string | undefined;
37
+ readonly format?: string | undefined;
40
38
  readonly startPlaceholder?: readonly [{
41
39
  readonly locale: "zh";
42
40
  readonly message: string;
@@ -51,6 +49,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
51
49
  readonly locale: "en" | "ja" | "ko";
52
50
  readonly message: string;
53
51
  }[]] | undefined;
52
+ readonly valueFormat?: string | undefined;
53
+ readonly disabledDate?: string | undefined;
54
54
  readonly validations?: readonly {
55
55
  readonly message: readonly [{
56
56
  readonly locale: "zh";
@@ -106,10 +106,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
106
106
  readonly expression: string;
107
107
  } | undefined;
108
108
  readonly numberOfMonths?: number | undefined;
109
- readonly format?: string | undefined;
110
- readonly valueFormat?: string | undefined;
111
- readonly disabledDate?: string | undefined;
112
109
  readonly rangeSeparatorIcon?: string | undefined;
110
+ readonly format?: string | undefined;
113
111
  readonly startPlaceholder?: readonly [{
114
112
  readonly locale: "zh";
115
113
  readonly message: string;
@@ -124,6 +122,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
124
122
  readonly locale: "en" | "ja" | "ko";
125
123
  readonly message: string;
126
124
  }[]] | undefined;
125
+ readonly valueFormat?: string | undefined;
126
+ readonly disabledDate?: string | undefined;
127
127
  readonly validations?: readonly {
128
128
  readonly message: readonly [{
129
129
  readonly locale: "zh";
@@ -33,10 +33,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
33
33
  readonly expression: string;
34
34
  } | undefined;
35
35
  readonly numberOfMonths?: number | undefined;
36
- readonly format?: string | undefined;
37
- readonly valueFormat?: string | undefined;
38
- readonly disabledDate?: string | undefined;
39
36
  readonly rangeSeparatorIcon?: string | undefined;
37
+ readonly format?: string | undefined;
40
38
  readonly startPlaceholder?: readonly [{
41
39
  readonly locale: "zh";
42
40
  readonly message: string;
@@ -51,6 +49,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
51
49
  readonly locale: "en" | "ja" | "ko";
52
50
  readonly message: string;
53
51
  }[]] | undefined;
52
+ readonly valueFormat?: string | undefined;
53
+ readonly disabledDate?: string | undefined;
54
54
  readonly validations?: readonly {
55
55
  readonly message: readonly [{
56
56
  readonly locale: "zh";
@@ -106,10 +106,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
106
106
  readonly expression: string;
107
107
  } | undefined;
108
108
  readonly numberOfMonths?: number | undefined;
109
- readonly format?: string | undefined;
110
- readonly valueFormat?: string | undefined;
111
- readonly disabledDate?: string | undefined;
112
109
  readonly rangeSeparatorIcon?: string | undefined;
110
+ readonly format?: string | undefined;
113
111
  readonly startPlaceholder?: readonly [{
114
112
  readonly locale: "zh";
115
113
  readonly message: string;
@@ -124,6 +122,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
124
122
  readonly locale: "en" | "ja" | "ko";
125
123
  readonly message: string;
126
124
  }[]] | undefined;
125
+ readonly valueFormat?: string | undefined;
126
+ readonly disabledDate?: string | undefined;
127
127
  readonly validations?: readonly {
128
128
  readonly message: readonly [{
129
129
  readonly locale: "zh";
@@ -34,11 +34,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
34
34
  } | undefined;
35
35
  readonly numberOfMonths?: number | undefined;
36
36
  readonly hourCycle?: 12 | 24 | undefined;
37
- readonly format?: string | undefined;
38
- readonly valueFormat?: string | undefined;
39
- readonly disabledDate?: string | undefined;
40
- readonly timeGranularity?: "second" | "minute" | "hour" | undefined;
41
37
  readonly rangeSeparatorIcon?: string | undefined;
38
+ readonly format?: string | undefined;
42
39
  readonly startPlaceholder?: readonly [{
43
40
  readonly locale: "zh";
44
41
  readonly message: string;
@@ -53,6 +50,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
53
50
  readonly locale: "en" | "ja" | "ko";
54
51
  readonly message: string;
55
52
  }[]] | undefined;
53
+ readonly valueFormat?: string | undefined;
54
+ readonly disabledDate?: string | undefined;
55
+ readonly timeGranularity?: "second" | "minute" | "hour" | undefined;
56
56
  readonly validations?: readonly {
57
57
  readonly message: readonly [{
58
58
  readonly locale: "zh";
@@ -109,11 +109,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
109
109
  } | undefined;
110
110
  readonly numberOfMonths?: number | undefined;
111
111
  readonly hourCycle?: 12 | 24 | undefined;
112
- readonly format?: string | undefined;
113
- readonly valueFormat?: string | undefined;
114
- readonly disabledDate?: string | undefined;
115
- readonly timeGranularity?: "second" | "minute" | "hour" | undefined;
116
112
  readonly rangeSeparatorIcon?: string | undefined;
113
+ readonly format?: string | undefined;
117
114
  readonly startPlaceholder?: readonly [{
118
115
  readonly locale: "zh";
119
116
  readonly message: string;
@@ -128,6 +125,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
128
125
  readonly locale: "en" | "ja" | "ko";
129
126
  readonly message: string;
130
127
  }[]] | undefined;
128
+ readonly valueFormat?: string | undefined;
129
+ readonly disabledDate?: string | undefined;
130
+ readonly timeGranularity?: "second" | "minute" | "hour" | undefined;
131
131
  readonly validations?: readonly {
132
132
  readonly message: readonly [{
133
133
  readonly locale: "zh";
@@ -34,11 +34,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
34
34
  } | undefined;
35
35
  readonly numberOfMonths?: number | undefined;
36
36
  readonly hourCycle?: 12 | 24 | undefined;
37
- readonly format?: string | undefined;
38
- readonly valueFormat?: string | undefined;
39
- readonly disabledDate?: string | undefined;
40
- readonly timeGranularity?: "second" | "minute" | "hour" | undefined;
41
37
  readonly rangeSeparatorIcon?: string | undefined;
38
+ readonly format?: string | undefined;
42
39
  readonly startPlaceholder?: readonly [{
43
40
  readonly locale: "zh";
44
41
  readonly message: string;
@@ -53,6 +50,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
53
50
  readonly locale: "en" | "ja" | "ko";
54
51
  readonly message: string;
55
52
  }[]] | undefined;
53
+ readonly valueFormat?: string | undefined;
54
+ readonly disabledDate?: string | undefined;
55
+ readonly timeGranularity?: "second" | "minute" | "hour" | undefined;
56
56
  readonly validations?: readonly {
57
57
  readonly message: readonly [{
58
58
  readonly locale: "zh";
@@ -109,11 +109,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
109
109
  } | undefined;
110
110
  readonly numberOfMonths?: number | undefined;
111
111
  readonly hourCycle?: 12 | 24 | undefined;
112
- readonly format?: string | undefined;
113
- readonly valueFormat?: string | undefined;
114
- readonly disabledDate?: string | undefined;
115
- readonly timeGranularity?: "second" | "minute" | "hour" | undefined;
116
112
  readonly rangeSeparatorIcon?: string | undefined;
113
+ readonly format?: string | undefined;
117
114
  readonly startPlaceholder?: readonly [{
118
115
  readonly locale: "zh";
119
116
  readonly message: string;
@@ -128,6 +125,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
128
125
  readonly locale: "en" | "ja" | "ko";
129
126
  readonly message: string;
130
127
  }[]] | undefined;
128
+ readonly valueFormat?: string | undefined;
129
+ readonly disabledDate?: string | undefined;
130
+ readonly timeGranularity?: "second" | "minute" | "hour" | undefined;
131
131
  readonly validations?: readonly {
132
132
  readonly message: readonly [{
133
133
  readonly locale: "zh";
@@ -33,9 +33,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
33
33
  readonly expression: string;
34
34
  } | undefined;
35
35
  readonly hourCycle?: 12 | 24 | undefined;
36
+ readonly rangeSeparatorIcon?: string | undefined;
36
37
  readonly valueFormat?: string | undefined;
37
38
  readonly timeGranularity?: "second" | "minute" | "hour" | undefined;
38
- readonly rangeSeparatorIcon?: string | undefined;
39
39
  readonly validations?: readonly {
40
40
  readonly message: readonly [{
41
41
  readonly locale: "zh";
@@ -79,9 +79,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
79
79
  readonly expression: string;
80
80
  } | undefined;
81
81
  readonly hourCycle?: 12 | 24 | undefined;
82
+ readonly rangeSeparatorIcon?: string | undefined;
82
83
  readonly valueFormat?: string | undefined;
83
84
  readonly timeGranularity?: "second" | "minute" | "hour" | undefined;
84
- readonly rangeSeparatorIcon?: string | undefined;
85
85
  readonly validations?: readonly {
86
86
  readonly message: readonly [{
87
87
  readonly locale: "zh";
@@ -33,9 +33,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
33
33
  readonly expression: string;
34
34
  } | undefined;
35
35
  readonly hourCycle?: 12 | 24 | undefined;
36
+ readonly rangeSeparatorIcon?: string | undefined;
36
37
  readonly valueFormat?: string | undefined;
37
38
  readonly timeGranularity?: "second" | "minute" | "hour" | undefined;
38
- readonly rangeSeparatorIcon?: string | undefined;
39
39
  readonly validations?: readonly {
40
40
  readonly message: readonly [{
41
41
  readonly locale: "zh";
@@ -79,9 +79,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
79
79
  readonly expression: string;
80
80
  } | undefined;
81
81
  readonly hourCycle?: 12 | 24 | undefined;
82
+ readonly rangeSeparatorIcon?: string | undefined;
82
83
  readonly valueFormat?: string | undefined;
83
84
  readonly timeGranularity?: "second" | "minute" | "hour" | undefined;
84
- readonly rangeSeparatorIcon?: string | undefined;
85
85
  readonly validations?: readonly {
86
86
  readonly message: readonly [{
87
87
  readonly locale: "zh";
@@ -32,10 +32,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
32
32
  readonly mode: "formula" | "prefill";
33
33
  readonly expression: string;
34
34
  } | undefined;
35
- readonly format?: string | undefined;
36
- readonly valueFormat?: string | undefined;
37
- readonly disabledDate?: string | undefined;
38
35
  readonly rangeSeparatorIcon?: string | undefined;
36
+ readonly format?: string | undefined;
39
37
  readonly startPlaceholder?: readonly [{
40
38
  readonly locale: "zh";
41
39
  readonly message: string;
@@ -50,6 +48,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
50
48
  readonly locale: "en" | "ja" | "ko";
51
49
  readonly message: string;
52
50
  }[]] | undefined;
51
+ readonly valueFormat?: string | undefined;
52
+ readonly disabledDate?: string | undefined;
53
53
  readonly validations?: readonly {
54
54
  readonly message: readonly [{
55
55
  readonly locale: "zh";
@@ -104,10 +104,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
104
104
  readonly mode: "formula" | "prefill";
105
105
  readonly expression: string;
106
106
  } | undefined;
107
- readonly format?: string | undefined;
108
- readonly valueFormat?: string | undefined;
109
- readonly disabledDate?: string | undefined;
110
107
  readonly rangeSeparatorIcon?: string | undefined;
108
+ readonly format?: string | undefined;
111
109
  readonly startPlaceholder?: readonly [{
112
110
  readonly locale: "zh";
113
111
  readonly message: string;
@@ -122,6 +120,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
122
120
  readonly locale: "en" | "ja" | "ko";
123
121
  readonly message: string;
124
122
  }[]] | undefined;
123
+ readonly valueFormat?: string | undefined;
124
+ readonly disabledDate?: string | undefined;
125
125
  readonly validations?: readonly {
126
126
  readonly message: readonly [{
127
127
  readonly locale: "zh";