@evanschleret/formforgeclient 1.2.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/README.md +10 -0
  2. package/dist/module.cjs +1 -0
  3. package/dist/module.d.cts +1 -0
  4. package/dist/module.d.mts +1 -0
  5. package/dist/module.d.ts +1 -0
  6. package/dist/module.json +1 -1
  7. package/dist/module.mjs +1 -0
  8. package/dist/runtime/api/client.js +4 -2
  9. package/dist/runtime/api/request.d.ts +1 -0
  10. package/dist/runtime/api/schema.js +4 -4
  11. package/dist/runtime/assets/formforge.css +1 -0
  12. package/dist/runtime/composables/index.d.ts +1 -1
  13. package/dist/runtime/composables/useFormForgeBuilder.d.ts +24 -2
  14. package/dist/runtime/composables/useFormForgeBuilder.js +299 -43
  15. package/dist/runtime/composables/useFormForgeForm.js +15 -5
  16. package/dist/runtime/composables/useFormForgeI18n.d.ts +245 -19
  17. package/dist/runtime/composables/useFormForgeI18n.js +245 -19
  18. package/dist/runtime/composables/useFormForgeSubmit.js +31 -9
  19. package/dist/runtime/index.d.ts +1 -0
  20. package/dist/runtime/renderers/default/FormForgeBuilder.d.vue.ts +21 -2
  21. package/dist/runtime/renderers/default/FormForgeBuilder.vue +689 -738
  22. package/dist/runtime/renderers/default/FormForgeBuilder.vue.d.ts +21 -2
  23. package/dist/runtime/renderers/default/FormForgeBuilderBlockSettingsModal.d.vue.ts +17 -0
  24. package/dist/runtime/renderers/default/FormForgeBuilderBlockSettingsModal.vue +32 -0
  25. package/dist/runtime/renderers/default/FormForgeBuilderBlockSettingsModal.vue.d.ts +17 -0
  26. package/dist/runtime/renderers/default/FormForgeRenderer.d.vue.ts +3 -4
  27. package/dist/runtime/renderers/default/FormForgeRenderer.vue +344 -294
  28. package/dist/runtime/renderers/default/FormForgeRenderer.vue.d.ts +3 -4
  29. package/dist/runtime/renderers/default/FormForgeRendererField.d.vue.ts +22 -0
  30. package/dist/runtime/renderers/default/FormForgeRendererField.vue +237 -0
  31. package/dist/runtime/renderers/default/FormForgeRendererField.vue.d.ts +22 -0
  32. package/dist/runtime/renderers/default/FormForgeRendererPage.d.vue.ts +18 -0
  33. package/dist/runtime/renderers/default/FormForgeRendererPage.vue +31 -0
  34. package/dist/runtime/renderers/default/FormForgeRendererPage.vue.d.ts +18 -0
  35. package/dist/runtime/renderers/default/FormForgeResponse.vue +4 -3
  36. package/dist/runtime/renderers/default/builder/FormForgeBuilderAddressFieldsCard.d.vue.ts +11 -0
  37. package/dist/runtime/renderers/default/builder/FormForgeBuilderAddressFieldsCard.vue +118 -0
  38. package/dist/runtime/renderers/default/builder/FormForgeBuilderAddressFieldsCard.vue.d.ts +11 -0
  39. package/dist/runtime/renderers/default/builder/FormForgeBuilderBlockCard.d.vue.ts +46 -0
  40. package/dist/runtime/renderers/default/builder/FormForgeBuilderBlockCard.vue +205 -0
  41. package/dist/runtime/renderers/default/builder/FormForgeBuilderBlockCard.vue.d.ts +46 -0
  42. package/dist/runtime/renderers/default/builder/FormForgeBuilderChoiceDisplayField.d.vue.ts +11 -0
  43. package/dist/runtime/renderers/default/builder/FormForgeBuilderChoiceDisplayField.vue +37 -0
  44. package/dist/runtime/renderers/default/builder/FormForgeBuilderChoiceDisplayField.vue.d.ts +11 -0
  45. package/dist/runtime/renderers/default/builder/FormForgeBuilderChoiceOptionsField.d.vue.ts +11 -0
  46. package/dist/runtime/renderers/default/builder/FormForgeBuilderChoiceOptionsField.vue +195 -0
  47. package/dist/runtime/renderers/default/builder/FormForgeBuilderChoiceOptionsField.vue.d.ts +11 -0
  48. package/dist/runtime/renderers/default/builder/FormForgeBuilderDescriptionField.d.vue.ts +14 -0
  49. package/dist/runtime/renderers/default/builder/FormForgeBuilderDescriptionField.vue +91 -0
  50. package/dist/runtime/renderers/default/builder/FormForgeBuilderDescriptionField.vue.d.ts +14 -0
  51. package/dist/runtime/renderers/default/builder/FormForgeBuilderLogicPanel.d.vue.ts +13 -0
  52. package/dist/runtime/renderers/default/builder/FormForgeBuilderLogicPanel.vue +387 -0
  53. package/dist/runtime/renderers/default/builder/FormForgeBuilderLogicPanel.vue.d.ts +13 -0
  54. package/dist/runtime/renderers/default/builder/FormForgeBuilderQuestionRow.d.vue.ts +44 -0
  55. package/dist/runtime/renderers/default/builder/FormForgeBuilderQuestionRow.vue +328 -0
  56. package/dist/runtime/renderers/default/builder/FormForgeBuilderQuestionRow.vue.d.ts +44 -0
  57. package/dist/runtime/renderers/default/builder/FormForgeBuilderTemporalModeField.d.vue.ts +11 -0
  58. package/dist/runtime/renderers/default/builder/FormForgeBuilderTemporalModeField.vue +47 -0
  59. package/dist/runtime/renderers/default/builder/FormForgeBuilderTemporalModeField.vue.d.ts +11 -0
  60. package/dist/runtime/renderers/default/builder/FormForgeBuilderValidationRulesSection.d.vue.ts +14 -0
  61. package/dist/runtime/renderers/default/builder/FormForgeBuilderValidationRulesSection.vue +595 -0
  62. package/dist/runtime/renderers/default/builder/FormForgeBuilderValidationRulesSection.vue.d.ts +14 -0
  63. package/dist/runtime/renderers/default/builder/builderFieldHelpers.d.ts +3 -0
  64. package/dist/runtime/renderers/default/builder/builderFieldHelpers.js +4 -0
  65. package/dist/runtime/types/index.d.ts +1 -1
  66. package/dist/runtime/types/management.d.ts +12 -0
  67. package/dist/runtime/types/schema.d.ts +72 -4
  68. package/dist/runtime/utils/defaults.d.ts +7 -0
  69. package/dist/runtime/utils/defaults.js +86 -0
  70. package/dist/runtime/utils/page-logic.d.ts +24 -0
  71. package/dist/runtime/utils/page-logic.js +351 -0
  72. package/dist/runtime/utils/rich-text.d.ts +3 -0
  73. package/dist/runtime/utils/rich-text.js +72 -0
  74. package/dist/runtime/utils/schema.d.ts +1 -1
  75. package/dist/runtime/utils/schema.js +70 -16
  76. package/dist/runtime/utils/temporal.d.ts +10 -0
  77. package/dist/runtime/utils/temporal.js +28 -0
  78. package/dist/runtime/utils/validation.d.ts +5 -0
  79. package/dist/runtime/utils/validation.js +36 -0
  80. package/dist/runtime/validation/zod.d.ts +5 -2
  81. package/dist/runtime/validation/zod.js +563 -54
  82. package/dist/types.d.mts +2 -0
  83. package/package.json +18 -14
@@ -0,0 +1,328 @@
1
+ <script setup>
2
+ import { useFormForgeI18n } from "../../../composables/useFormForgeI18n";
3
+ import { resolveTemporalMode } from "../../../utils/temporal";
4
+ import { sanitizeFormForgeInlineRichText } from "../../../utils/rich-text";
5
+ import FormForgeBuilderAddressFieldsCard from "./FormForgeBuilderAddressFieldsCard.vue";
6
+ import FormForgeBuilderChoiceDisplayField from "./FormForgeBuilderChoiceDisplayField.vue";
7
+ import FormForgeBuilderChoiceOptionsField from "./FormForgeBuilderChoiceOptionsField.vue";
8
+ import FormForgeBuilderDescriptionField from "./FormForgeBuilderDescriptionField.vue";
9
+ import FormForgeBuilderTemporalModeField from "./FormForgeBuilderTemporalModeField.vue";
10
+ import FormForgeBuilderValidationRulesSection from "./FormForgeBuilderValidationRulesSection.vue";
11
+ const props = defineProps({
12
+ page: { type: Object, required: true },
13
+ field: { type: Object, required: true },
14
+ index: { type: Number, required: true },
15
+ readonly: { type: Boolean, required: false, default: false },
16
+ selected: { type: Boolean, required: false, default: false },
17
+ fieldTypeItems: { type: Array, required: true },
18
+ futureBlockItems: { type: Array, required: true }
19
+ });
20
+ const page = props.page;
21
+ const field = props.field;
22
+ const fieldTypeItems = props.fieldTypeItems;
23
+ const futureBlockItems = props.futureBlockItems;
24
+ const emit = defineEmits(["select", "move-up", "move-down", "duplicate", "remove", "change-type", "add-below", "move-to-block"]);
25
+ const { t } = useFormForgeI18n();
26
+ function fieldTypeIcon(type) {
27
+ return fieldTypeItems.find((item) => item.value === type)?.icon ?? "i-lucide-circle-help";
28
+ }
29
+ function isTextFieldType(type) {
30
+ return type === "text" || type === "textarea" || type === "email" || type === "number";
31
+ }
32
+ function isChoiceFieldType(type) {
33
+ return type === "select" || type === "select_menu" || type === "radio" || type === "checkbox_group";
34
+ }
35
+ function fieldMenuItems() {
36
+ const changeTypeChildren = fieldTypeItems.map((item) => ({
37
+ label: item.label,
38
+ icon: item.icon,
39
+ onSelect: () => emit("change-type", item.value)
40
+ }));
41
+ const addBelowChildren = fieldTypeItems.map((item) => ({
42
+ label: item.label,
43
+ icon: item.icon,
44
+ onSelect: () => emit("add-below", item.value)
45
+ }));
46
+ const moveToBlockChildren = futureBlockItems.map((item) => ({
47
+ label: item.label,
48
+ onSelect: () => emit("move-to-block", item.value)
49
+ }));
50
+ return [
51
+ {
52
+ label: t("builder.questionMenu.changeType"),
53
+ icon: "i-lucide-arrow-right",
54
+ children: changeTypeChildren
55
+ },
56
+ {
57
+ label: t("builder.questionMenu.addBelow"),
58
+ icon: "i-lucide-plus",
59
+ children: addBelowChildren
60
+ },
61
+ {
62
+ label: t("builder.questionMenu.moveToBlock"),
63
+ icon: "i-lucide-arrow-right-left",
64
+ children: moveToBlockChildren.length > 0 ? moveToBlockChildren : [{ label: t("builder.questionMenu.noBlockAfter"), disabled: true }]
65
+ },
66
+ {
67
+ type: "separator"
68
+ },
69
+ {
70
+ label: t("builder.questionMenu.moveUp"),
71
+ icon: "i-lucide-arrow-up",
72
+ disabled: props.index <= 0,
73
+ onSelect: () => emit("move-up")
74
+ },
75
+ {
76
+ label: t("builder.questionMenu.moveDown"),
77
+ icon: "i-lucide-arrow-down",
78
+ disabled: props.index >= props.page.fields.length - 1,
79
+ onSelect: () => emit("move-down")
80
+ },
81
+ {
82
+ type: "separator"
83
+ },
84
+ {
85
+ label: t("builder.questionMenu.duplicate"),
86
+ icon: "i-lucide-copy",
87
+ onSelect: () => emit("duplicate")
88
+ },
89
+ {
90
+ label: t("builder.questionMenu.delete"),
91
+ icon: "i-lucide-trash-2",
92
+ color: "error",
93
+ onSelect: () => emit("remove")
94
+ }
95
+ ];
96
+ }
97
+ function questionLabelHtml() {
98
+ if (typeof field.label !== "string" || field.label.trim() === "") {
99
+ return "";
100
+ }
101
+ return sanitizeFormForgeInlineRichText(field.label);
102
+ }
103
+ function isAddressFieldRequired() {
104
+ if (field.type !== "address" || !Array.isArray(field.address_fields)) {
105
+ return false;
106
+ }
107
+ return field.address_fields.some((addressField) => {
108
+ return addressField.visible && addressField.required;
109
+ });
110
+ }
111
+ function questionRequiredLabel() {
112
+ if (field.type === "address") {
113
+ return isAddressFieldRequired() ? t("builder.required") : t("builder.optional");
114
+ }
115
+ return field.required ? t("builder.required") : t("builder.optional");
116
+ }
117
+ function blockEnterKeydown(_editor, event) {
118
+ if (event.key === "Enter") {
119
+ event.preventDefault();
120
+ return true;
121
+ }
122
+ return false;
123
+ }
124
+ </script>
125
+
126
+ <template>
127
+ <div class="grid">
128
+ <div
129
+ class="flex items-start justify-between gap-4 px-5 py-4"
130
+ :class="selected ? 'bg-white dark:bg-default/50' : 'hover:bg-default'"
131
+ @click="emit('select')"
132
+ >
133
+ <div class="min-w-0 flex-1">
134
+ <div class="flex min-w-0 items-center gap-2">
135
+ <UIcon
136
+ :name="fieldTypeIcon(field.type)"
137
+ class="size-4 shrink-0 text-muted"
138
+ />
139
+ <div class="min-w-0">
140
+ <p class="text-xs text-muted">
141
+ {{ t("builder.questionLabel") }} {{ index + 1 }}
142
+ </p>
143
+ <p class="truncate text-sm font-bold">
144
+ <span
145
+ v-if="questionLabelHtml() !== ''"
146
+ v-html="questionLabelHtml()"
147
+ />
148
+ <span v-else>
149
+ {{ field.placeholder || field.type }}
150
+ </span>
151
+ </p>
152
+ <p class="text-xs text-muted">
153
+ {{ questionRequiredLabel() }}
154
+ </p>
155
+ </div>
156
+ </div>
157
+ </div>
158
+
159
+ <div class="flex shrink-0 items-center gap-1">
160
+ <UButton
161
+ color="neutral"
162
+ variant="ghost"
163
+ icon="i-lucide-arrow-up"
164
+ :disabled="readonly || index === 0"
165
+ @click.stop="emit('move-up')"
166
+ />
167
+ <UButton
168
+ color="neutral"
169
+ variant="ghost"
170
+ icon="i-lucide-arrow-down"
171
+ :disabled="readonly || index === page.fields.length - 1"
172
+ @click.stop="emit('move-down')"
173
+ />
174
+ <UButton
175
+ color="neutral"
176
+ variant="ghost"
177
+ icon="i-lucide-copy"
178
+ :disabled="readonly"
179
+ @click.stop="emit('duplicate')"
180
+ />
181
+ <UButton
182
+ color="neutral"
183
+ variant="ghost"
184
+ icon="i-lucide-trash-2"
185
+ :disabled="readonly || page.fields.length <= 1"
186
+ @click.stop="emit('remove')"
187
+ />
188
+ <UDropdownMenu
189
+ :items="fieldMenuItems()"
190
+ :content="{ align: 'end', sideOffset: 8 }"
191
+ >
192
+ <UButton
193
+ color="neutral"
194
+ variant="ghost"
195
+ icon="i-lucide-ellipsis"
196
+ :disabled="readonly"
197
+ @click.stop
198
+ />
199
+ </UDropdownMenu>
200
+ </div>
201
+ </div>
202
+
203
+ <div
204
+ v-if="selected"
205
+ class="grid gap-4 px-5 py-4"
206
+ >
207
+ <UFormField
208
+ :label="t('builder.questionPlaceholder')"
209
+ >
210
+ <template #hint>
211
+ <div
212
+ v-if="field.type !== 'address'"
213
+ class="flex items-center gap-2 mb-1"
214
+ >
215
+ <USwitch
216
+ v-model="field.required"
217
+ :label="t('builder.required')"
218
+ :disabled="readonly"
219
+ />
220
+ </div>
221
+ </template>
222
+
223
+ <div class="rounded-lg bg-white dark:bg-gray-800 p-2 shadow-sm ring-1 ring-gray-900/5 dark:ring-white/10">
224
+ <UEditor
225
+ v-slot="{ editor }"
226
+ v-model="field.label"
227
+ content-type="html"
228
+ :placeholder="t('builder.questionPlaceholder')"
229
+ :disabled="readonly"
230
+ :editor-props="{
231
+ handleKeyDown: blockEnterKeydown
232
+ }"
233
+ >
234
+ <UEditorToolbar
235
+ v-if="!readonly"
236
+ :editor="editor"
237
+ :items="[
238
+ { kind: 'mark', mark: 'bold', icon: 'i-lucide-bold' },
239
+ { kind: 'mark', mark: 'italic', icon: 'i-lucide-italic' },
240
+ { kind: 'mark', mark: 'underline', icon: 'i-lucide-underline' },
241
+ { kind: 'link', icon: 'i-lucide-link' }
242
+ ]"
243
+ />
244
+ </UEditor>
245
+ </div>
246
+ </UFormField>
247
+
248
+ <FormForgeBuilderDescriptionField
249
+ v-model="field.help_text"
250
+ :readonly="readonly"
251
+ />
252
+
253
+ <FormForgeBuilderTemporalModeField
254
+ v-if="field.type === 'temporal'"
255
+ :field="field"
256
+ :readonly="readonly"
257
+ />
258
+
259
+ <FormForgeBuilderValidationRulesSection
260
+ v-if="field.type === 'text' || field.type === 'textarea'"
261
+ :field="field"
262
+ :readonly="readonly"
263
+ mode="text"
264
+ />
265
+
266
+ <FormForgeBuilderAddressFieldsCard
267
+ v-if="field.type === 'address'"
268
+ :field="field"
269
+ :readonly="readonly"
270
+ />
271
+
272
+ <FormForgeBuilderValidationRulesSection
273
+ v-if="field.type === 'address'"
274
+ :field="field"
275
+ :readonly="readonly"
276
+ mode="address"
277
+ />
278
+
279
+ <FormForgeBuilderValidationRulesSection
280
+ v-if="field.type === 'temporal' || field.type === 'date' || field.type === 'time'"
281
+ :field="field"
282
+ :readonly="readonly"
283
+ mode="temporal"
284
+ :temporal-mode="resolveTemporalMode(field)"
285
+ />
286
+
287
+ <FormForgeBuilderChoiceDisplayField
288
+ v-if="field.type !== 'select_menu' && (field.type === 'select' || field.type === 'radio' || field.type === 'checkbox_group')"
289
+ :field="field"
290
+ :readonly="readonly"
291
+ />
292
+
293
+ <UFormField
294
+ v-if="field.type === 'consent'"
295
+ :label="t('builder.consentLabel')"
296
+ >
297
+ <UInput
298
+ v-model="field.consent_label"
299
+ :disabled="readonly"
300
+ :placeholder="t('builder.consentLabel')"
301
+ :ui="{
302
+ root: 'w-full'
303
+ }"
304
+ />
305
+ </UFormField>
306
+
307
+ <UFormField
308
+ v-if="isTextFieldType(field.type) || isChoiceFieldType(field.type) || field.type === 'email' || field.type === 'number'"
309
+ :label="t('builder.placeholderPlaceholder')"
310
+ >
311
+ <UInput
312
+ v-model="field.placeholder"
313
+ :disabled="readonly"
314
+ :placeholder="t('builder.placeholderPlaceholder')"
315
+ :ui="{
316
+ root: 'w-full'
317
+ }"
318
+ />
319
+ </UFormField>
320
+
321
+ <FormForgeBuilderChoiceOptionsField
322
+ v-if="isChoiceFieldType(field.type)"
323
+ :field="field"
324
+ :readonly="readonly"
325
+ />
326
+ </div>
327
+ </div>
328
+ </template>
@@ -0,0 +1,44 @@
1
+ import type { FormForgeFieldSchema, FormForgeFieldType, FormForgePageSchema } from '../../../types/index.js';
2
+ interface QuestionTypeItem {
3
+ label: string;
4
+ value: FormForgeFieldType;
5
+ icon?: string;
6
+ }
7
+ interface FutureBlockItem {
8
+ label: string;
9
+ value: string;
10
+ }
11
+ interface Props {
12
+ page: FormForgePageSchema;
13
+ field: FormForgeFieldSchema;
14
+ index: number;
15
+ readonly?: boolean;
16
+ selected?: boolean;
17
+ fieldTypeItems: QuestionTypeItem[];
18
+ futureBlockItems: FutureBlockItem[];
19
+ }
20
+ declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
21
+ select: () => any;
22
+ "move-up": () => any;
23
+ "move-down": () => any;
24
+ duplicate: () => any;
25
+ remove: () => any;
26
+ "change-type": (value: FormForgeFieldType) => any;
27
+ "add-below": (value: FormForgeFieldType) => any;
28
+ "move-to-block": (value: string) => any;
29
+ }, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
30
+ onSelect?: (() => any) | undefined;
31
+ "onMove-up"?: (() => any) | undefined;
32
+ "onMove-down"?: (() => any) | undefined;
33
+ onDuplicate?: (() => any) | undefined;
34
+ onRemove?: (() => any) | undefined;
35
+ "onChange-type"?: ((value: FormForgeFieldType) => any) | undefined;
36
+ "onAdd-below"?: ((value: FormForgeFieldType) => any) | undefined;
37
+ "onMove-to-block"?: ((value: string) => any) | undefined;
38
+ }>, {
39
+ readonly: boolean;
40
+ selected: boolean;
41
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
42
+ declare const _default: typeof __VLS_export;
43
+ export default _default;
44
+ //# sourceMappingURL=FormForgeBuilderQuestionRow.vue.d.ts.map
@@ -0,0 +1,11 @@
1
+ import type { FormForgeFieldSchema } from '../../../types/index.js';
2
+ interface Props {
3
+ field: FormForgeFieldSchema;
4
+ readonly?: boolean;
5
+ }
6
+ declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
7
+ readonly: boolean;
8
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
9
+ declare const _default: typeof __VLS_export;
10
+ export default _default;
11
+ //# sourceMappingURL=FormForgeBuilderTemporalModeField.vue.d.ts.map
@@ -0,0 +1,47 @@
1
+ <script setup>
2
+ import { computed, toRef } from "#imports";
3
+ import { useFormForgeI18n } from "../../../composables/useFormForgeI18n";
4
+ import { isTemporalMode, resolveTemporalMode } from "../../../utils/temporal";
5
+ const props = defineProps({
6
+ field: { type: Object, required: true },
7
+ readonly: { type: Boolean, required: false, default: false }
8
+ });
9
+ const field = toRef(props, "field");
10
+ const { t } = useFormForgeI18n();
11
+ const items = computed(() => [
12
+ { label: t("builder.temporalMode.date"), value: "date" },
13
+ { label: t("builder.temporalMode.time"), value: "time" }
14
+ ]);
15
+ function temporalModeValue() {
16
+ return resolveTemporalMode(field.value);
17
+ }
18
+ function setTemporalMode(mode) {
19
+ field.value.temporal_mode = mode;
20
+ field.value.default = null;
21
+ if (mode === "time" && field.value.hour_cycle !== 12 && field.value.hour_cycle !== 24) {
22
+ field.value.hour_cycle = 24;
23
+ } else if (mode !== "time") {
24
+ field.value.hour_cycle = void 0;
25
+ }
26
+ }
27
+ </script>
28
+
29
+ <template>
30
+ <div class="grid gap-4">
31
+ <UFormField :label="t('builder.temporalMode.label')">
32
+ <USelect
33
+ :model-value="temporalModeValue()"
34
+ :items="items"
35
+ :disabled="readonly"
36
+ :ui="{
37
+ base: 'w-full'
38
+ }"
39
+ @update:model-value="(value) => {
40
+ if (isTemporalMode(value)) {
41
+ setTemporalMode(value);
42
+ }
43
+ }"
44
+ />
45
+ </UFormField>
46
+ </div>
47
+ </template>
@@ -0,0 +1,11 @@
1
+ import type { FormForgeFieldSchema } from '../../../types/index.js';
2
+ interface Props {
3
+ field: FormForgeFieldSchema;
4
+ readonly?: boolean;
5
+ }
6
+ declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
7
+ readonly: boolean;
8
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
9
+ declare const _default: typeof __VLS_export;
10
+ export default _default;
11
+ //# sourceMappingURL=FormForgeBuilderTemporalModeField.vue.d.ts.map
@@ -0,0 +1,14 @@
1
+ import type { FormForgeFieldSchema, FormForgeTemporalMode } from '../../../types/index.js';
2
+ interface Props {
3
+ field: FormForgeFieldSchema;
4
+ readonly?: boolean;
5
+ mode: 'text' | 'address' | 'temporal';
6
+ temporalMode?: FormForgeTemporalMode;
7
+ }
8
+ declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
9
+ readonly: boolean;
10
+ temporalMode: FormForgeTemporalMode;
11
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ //# sourceMappingURL=FormForgeBuilderValidationRulesSection.vue.d.ts.map