@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.
- package/dist/module.json +1 -1
- package/dist/runtime/components/actions/buttons/2026-06-25/com.shwfed.actions.button.state.write/config.vue +17 -11
- package/dist/runtime/components/config/footer.vue +14 -8
- package/dist/runtime/components/config/index.d.vue.ts +1 -0
- package/dist/runtime/components/config/index.vue +30 -2
- package/dist/runtime/components/config/index.vue.d.ts +1 -0
- package/dist/runtime/components/config/use-editor.d.ts +12 -1
- package/dist/runtime/components/config/use-editor.js +47 -24
- package/dist/runtime/components/config/use-unsaved-guard.d.ts +1 -0
- package/dist/runtime/components/config/use-unsaved-guard.js +8 -0
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.d.vue.ts +6 -6
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.vue.d.ts +6 -6
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.d.vue.ts +8 -8
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.vue.d.ts +8 -8
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.d.vue.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.vue.d.ts +2 -2
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.d.vue.ts +6 -6
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.vue.d.ts +6 -6
- package/dist/runtime/components/modal.d.vue.ts +8 -8
- package/dist/runtime/components/modal.vue +9 -1
- package/dist/runtime/components/modal.vue.d.ts +8 -8
- package/dist/runtime/components/sidebar/footer.vue +13 -7
- package/dist/runtime/components/sidebar/index.d.vue.ts +1 -0
- package/dist/runtime/components/sidebar/index.vue +30 -2
- package/dist/runtime/components/sidebar/index.vue.d.ts +1 -0
- package/dist/runtime/components/sidebar/use-editor.d.ts +11 -1
- package/dist/runtime/components/sidebar/use-editor.js +38 -17
- package/dist/runtime/components/table/columns/2026-07-12/com.shwfed.table.column.dynamic/config.d.vue.ts +10 -0
- package/dist/runtime/components/table/columns/2026-07-12/com.shwfed.table.column.dynamic/config.vue +73 -0
- package/dist/runtime/components/table/columns/2026-07-12/com.shwfed.table.column.dynamic/config.vue.d.ts +10 -0
- package/dist/runtime/components/table/columns/2026-07-12/com.shwfed.table.column.dynamic/schema.d.ts +63 -0
- package/dist/runtime/components/table/columns/2026-07-12/com.shwfed.table.column.dynamic/schema.js +157 -0
- package/dist/runtime/components/table/index.vue +86 -12
- package/dist/runtime/components/table/utils/resolve.d.ts +42 -0
- package/dist/runtime/components/table/utils/resolve.js +11 -3
- package/dist/runtime/components/ui/date-picker/DatePickerInput.d.vue.ts +1 -1
- package/dist/runtime/components/ui/date-picker/DatePickerInput.vue.d.ts +1 -1
- package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.d.vue.ts +1 -1
- package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.vue.d.ts +1 -1
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.d.vue.ts +1 -1
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.vue.d.ts +1 -1
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.d.vue.ts +2 -2
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.vue.d.ts +2 -2
- package/dist/runtime/components/ui/expression-editor/ExpressionEditor.vue +4 -1
- package/dist/runtime/share/define-registry.d.ts +11 -0
- package/dist/runtime/share/define-registry.js +10 -3
- package/package.json +1 -1
package/dist/module.json
CHANGED
|
@@ -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
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
destructive delete in the `trailing`
|
|
86
|
-
so the request expressions keep the base scope
|
|
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="
|
|
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
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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-
|
|
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
|
-
|
|
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
|
|
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
|
|
@@ -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="
|
|
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
|
-
|
|
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"
|
|
@@ -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: () =>
|
|
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
|
-
|
|
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;
|
|
@@ -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";
|