@bagelink/vue 1.10.7 → 1.10.9
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/form-flow/FormFlow.vue.d.ts +7 -7
- package/dist/form-flow/FormFlow.vue.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +83 -81
- package/dist/style.css +1 -1
- package/package.json +2 -2
- package/src/form-flow/FormFlow.vue +72 -65
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bagelink/vue",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.10.
|
|
4
|
+
"version": "1.10.9",
|
|
5
5
|
"description": "Bagel core sdk packages",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Bagel Studio",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"signature_pad": "^5.0.9",
|
|
91
91
|
"vue-i18n": "^11.2.8",
|
|
92
92
|
"vue-toastification": "^2.0.0-rc.5",
|
|
93
|
-
"@bagelink/utils": "1.10.
|
|
93
|
+
"@bagelink/utils": "1.10.9"
|
|
94
94
|
},
|
|
95
95
|
"scripts": {
|
|
96
96
|
"dev": "tsx watch src/index.ts",
|
|
@@ -451,72 +451,79 @@ defineExpose({
|
|
|
451
451
|
|
|
452
452
|
<template>
|
|
453
453
|
<form ref="formElement" :class="schema._class" @submit="handleSubmit">
|
|
454
|
-
<
|
|
455
|
-
|
|
454
|
+
<template v-if="formState === 'success'">
|
|
455
|
+
<slot name="success" :form-data="formData" />
|
|
456
|
+
</template>
|
|
457
|
+
<template v-else>
|
|
458
|
+
<div v-for="{ key, field } in visibleFields" :key="key" :class="[field._class, field._config.class]">
|
|
459
|
+
<!-- Custom slot for specific field -->
|
|
460
|
+
<slot
|
|
461
|
+
:name="`field:${key}`" :value="getFieldValue(key)" :field="field" :form-data="formData"
|
|
462
|
+
:error="validationErrors[key]" :on-change="(val: any) => { updateField(key, val, field) }"
|
|
463
|
+
>
|
|
464
|
+
<!-- Array field with nested schema -->
|
|
465
|
+
<template v-if="field._type === 'array' && field._config.schema?._isSchema">
|
|
466
|
+
<ArrayInput v-bind="getFieldProps(field, key)">
|
|
467
|
+
<template #default="{ item }">
|
|
468
|
+
<FormFlow
|
|
469
|
+
v-model="item.value" :schema="field._config.schema"
|
|
470
|
+
:components="components"
|
|
471
|
+
/>
|
|
472
|
+
</template>
|
|
473
|
+
</ArrayInput>
|
|
474
|
+
</template>
|
|
475
|
+
|
|
476
|
+
<!-- Array field with custom component -->
|
|
477
|
+
<template v-else-if="field._type === 'array' && field._config.schema">
|
|
478
|
+
<ArrayInput v-bind="getFieldProps(field, key)">
|
|
479
|
+
<template #default="{ item }">
|
|
480
|
+
<component :is="resolveComponent(field._config.schema)" v-model="item.value" />
|
|
481
|
+
</template>
|
|
482
|
+
</ArrayInput>
|
|
483
|
+
</template>
|
|
484
|
+
|
|
485
|
+
<!-- Array field with primitive item type (e.g. from JSON Schema type: array with items: { type: string }) -->
|
|
486
|
+
<template v-else-if="field._type === 'array' && field._config.itemType">
|
|
487
|
+
<ArrayInput v-bind="getFieldProps(field, key)">
|
|
488
|
+
<template #default="{ item }">
|
|
489
|
+
<component
|
|
490
|
+
:is="getFieldComponent(field._config.itemType)" :model-value="item.value"
|
|
491
|
+
@update:model-value="(val: any) => { item.value = val }"
|
|
492
|
+
/>
|
|
493
|
+
</template>
|
|
494
|
+
</ArrayInput>
|
|
495
|
+
</template>
|
|
496
|
+
|
|
497
|
+
<!-- Custom component rendering -->
|
|
498
|
+
<template v-else-if="usesCustomComponent(field)">
|
|
499
|
+
<component
|
|
500
|
+
:is="resolveComponent(field._component!.component)" :model-value="getFieldValue(key)"
|
|
501
|
+
v-bind="field._component!.props"
|
|
502
|
+
@update:model-value="(val: any) => updateField(key, val, field)"
|
|
503
|
+
/>
|
|
504
|
+
</template>
|
|
505
|
+
|
|
506
|
+
<!-- Default field rendering -->
|
|
507
|
+
<component :is="getFieldComponent(field._type)" v-else v-bind="getFieldProps(field, key)" />
|
|
508
|
+
</slot>
|
|
509
|
+
</div>
|
|
510
|
+
|
|
511
|
+
<!-- Form-level errors summary slot -->
|
|
456
512
|
<slot
|
|
457
|
-
|
|
458
|
-
:error
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
<ArrayInput v-bind="getFieldProps(field, key)">
|
|
472
|
-
<template #default="{ item }">
|
|
473
|
-
<component :is="resolveComponent(field._config.schema)" v-model="item.value" />
|
|
474
|
-
</template>
|
|
475
|
-
</ArrayInput>
|
|
476
|
-
</template>
|
|
477
|
-
|
|
478
|
-
<!-- Array field with primitive item type (e.g. from JSON Schema type: array with items: { type: string }) -->
|
|
479
|
-
<template v-else-if="field._type === 'array' && field._config.itemType">
|
|
480
|
-
<ArrayInput v-bind="getFieldProps(field, key)">
|
|
481
|
-
<template #default="{ item }">
|
|
482
|
-
<component
|
|
483
|
-
:is="getFieldComponent(field._config.itemType)" :model-value="item.value"
|
|
484
|
-
@update:model-value="(val: any) => { item.value = val }"
|
|
485
|
-
/>
|
|
486
|
-
</template>
|
|
487
|
-
</ArrayInput>
|
|
488
|
-
</template>
|
|
489
|
-
|
|
490
|
-
<!-- Custom component rendering -->
|
|
491
|
-
<template v-else-if="usesCustomComponent(field)">
|
|
492
|
-
<component
|
|
493
|
-
:is="resolveComponent(field._component!.component)" :model-value="getFieldValue(key)"
|
|
494
|
-
v-bind="field._component!.props"
|
|
495
|
-
@update:model-value="(val: any) => updateField(key, val, field)"
|
|
496
|
-
/>
|
|
497
|
-
</template>
|
|
498
|
-
|
|
499
|
-
<!-- Default field rendering -->
|
|
500
|
-
<component :is="getFieldComponent(field._type)" v-else v-bind="getFieldProps(field, key)" />
|
|
501
|
-
</slot>
|
|
502
|
-
</div>
|
|
503
|
-
|
|
504
|
-
<!-- Form-level errors summary slot -->
|
|
505
|
-
<slot
|
|
506
|
-
name="errors" :errors="mergedErrors"
|
|
507
|
-
:error-count="Object.keys(mergedErrors).filter(k => mergedErrors[k]).length"
|
|
508
|
-
:visible-fields="visibleFields"
|
|
509
|
-
/>
|
|
510
|
-
|
|
511
|
-
<!-- Submit slot -->
|
|
512
|
-
<slot
|
|
513
|
-
name="submit" :submit="handleSubmit" :validate="validateAll" :form-data="formData"
|
|
514
|
-
:errors="mergedErrors" :form-state="formState"
|
|
515
|
-
/>
|
|
516
|
-
|
|
517
|
-
<!-- Success/error lifecycle slots (only rendered when submitFn is used) -->
|
|
518
|
-
<slot v-if="formState === 'success'" name="success" :form-data="formData" />
|
|
519
|
-
<slot v-else-if="formState === 'error'" name="error" :form-data="formData" />
|
|
513
|
+
name="errors" :errors="mergedErrors"
|
|
514
|
+
:error-count="Object.keys(mergedErrors).filter(k => mergedErrors[k]).length"
|
|
515
|
+
:visible-fields="visibleFields"
|
|
516
|
+
/>
|
|
517
|
+
|
|
518
|
+
<!-- Error slot renders above submit, form remains visible -->
|
|
519
|
+
<slot v-if="formState === 'error'" name="error" :form-data="formData" />
|
|
520
|
+
|
|
521
|
+
<!-- Submit slot -->
|
|
522
|
+
<slot
|
|
523
|
+
name="submit" :submit="handleSubmit" :validate="validateAll" :form-data="formData"
|
|
524
|
+
:errors="mergedErrors" :form-state="formState"
|
|
525
|
+
/>
|
|
526
|
+
</template>
|
|
520
527
|
</form>
|
|
521
528
|
</template>
|
|
522
529
|
|