@tgb-form/vue 0.0.1 → 0.0.2
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/README.md +3 -20
- package/dist/index.d.ts +72 -103
- package/dist/index.js +77 -54
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -27,9 +27,9 @@ The adapter renders a `RuntimeFormDefinition` with `TgbForm`, resolves fields th
|
|
|
27
27
|
|
|
28
28
|
```vue
|
|
29
29
|
<script setup lang="ts">
|
|
30
|
-
import { defineComponent, h } from 'vue';
|
|
31
30
|
import { defineForm, FieldDataType, ValidationRuleKind } from '@tgb-form/core';
|
|
32
31
|
import { TgbForm, TgbFormProvider, createVueRendererRegistry } from '@tgb-form/vue';
|
|
32
|
+
import TextField from './TextField.vue';
|
|
33
33
|
|
|
34
34
|
const definition = defineForm({
|
|
35
35
|
fields: {
|
|
@@ -44,25 +44,6 @@ The adapter renders a `RuntimeFormDefinition` with `TgbForm`, resolves fields th
|
|
|
44
44
|
},
|
|
45
45
|
});
|
|
46
46
|
|
|
47
|
-
const TextField = defineComponent({
|
|
48
|
-
props: ['field', 'label', 'props', 'value', 'errors'],
|
|
49
|
-
setup(props) {
|
|
50
|
-
return () =>
|
|
51
|
-
h('label', [
|
|
52
|
-
h('span', props.label),
|
|
53
|
-
h('input', {
|
|
54
|
-
value: props.value,
|
|
55
|
-
placeholder: props.props?.placeholder,
|
|
56
|
-
onBlur: props.field.handleBlur,
|
|
57
|
-
onInput: (event: Event) => {
|
|
58
|
-
props.field.handleChange((event.target as HTMLInputElement).value);
|
|
59
|
-
},
|
|
60
|
-
}),
|
|
61
|
-
props.errors?.length ? h('small', props.errors.join(', ')) : null,
|
|
62
|
-
]);
|
|
63
|
-
},
|
|
64
|
-
});
|
|
65
|
-
|
|
66
47
|
const renderers = createVueRendererRegistry({
|
|
67
48
|
byName: {
|
|
68
49
|
'email-input': TextField,
|
|
@@ -104,3 +85,5 @@ The adapter renders a `RuntimeFormDefinition` with `TgbForm`, resolves fields th
|
|
|
104
85
|
- `renderers`: optional renderer registry; overrides provider.
|
|
105
86
|
|
|
106
87
|
Renderer props include `name`, `field`, `form`, `label`, `description`, `props`, `value`, and `errors`.
|
|
88
|
+
|
|
89
|
+
Write renderers as Vue SFCs and import them into the component that creates the registry. See `TextField.vue` in the quick-start example.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Component, InjectionKey, PropType } from "vue";
|
|
1
|
+
import { Component, InjectionKey } from "vue";
|
|
3
2
|
import { AnyFieldApi, AnyFormApi, VueFormApi } from "@tanstack/vue-form";
|
|
3
|
+
import { FieldDataType, RendererRegistry } from "@tgb-form/core";
|
|
4
4
|
//#region src/types.d.ts
|
|
5
5
|
type VueRendererField = AnyFieldApi;
|
|
6
6
|
type VueRendererProps = {
|
|
@@ -22,112 +22,81 @@ declare function createVueRendererRegistry<const TByName extends Readonly<Record
|
|
|
22
22
|
readonly byType?: TByType;
|
|
23
23
|
}): VueRendererRegistry<TByName, TByType>;
|
|
24
24
|
//#endregion
|
|
25
|
-
//#region src/
|
|
26
|
-
declare const TgbForm: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
27
|
-
definition: {
|
|
28
|
-
type: PropType<RuntimeFormDefinition>;
|
|
29
|
-
required: true;
|
|
30
|
-
};
|
|
31
|
-
instance: {
|
|
32
|
-
type: PropType<TgbFormTanStackForm>;
|
|
33
|
-
default: undefined;
|
|
34
|
-
};
|
|
35
|
-
tanstackOptions: {
|
|
36
|
-
type: PropType<TgbFormTanStackOptions>;
|
|
37
|
-
default: undefined;
|
|
38
|
-
};
|
|
39
|
-
renderers: {
|
|
40
|
-
type: PropType<VueRendererRegistry>;
|
|
41
|
-
default: undefined;
|
|
42
|
-
};
|
|
43
|
-
fields: {
|
|
44
|
-
type: PropType<readonly string[]>;
|
|
45
|
-
default: undefined;
|
|
46
|
-
};
|
|
47
|
-
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
48
|
-
[key: string]: any;
|
|
49
|
-
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
50
|
-
definition: {
|
|
51
|
-
type: PropType<RuntimeFormDefinition>;
|
|
52
|
-
required: true;
|
|
53
|
-
};
|
|
54
|
-
instance: {
|
|
55
|
-
type: PropType<TgbFormTanStackForm>;
|
|
56
|
-
default: undefined;
|
|
57
|
-
};
|
|
58
|
-
tanstackOptions: {
|
|
59
|
-
type: PropType<TgbFormTanStackOptions>;
|
|
60
|
-
default: undefined;
|
|
61
|
-
};
|
|
62
|
-
renderers: {
|
|
63
|
-
type: PropType<VueRendererRegistry>;
|
|
64
|
-
default: undefined;
|
|
65
|
-
};
|
|
66
|
-
fields: {
|
|
67
|
-
type: PropType<readonly string[]>;
|
|
68
|
-
default: undefined;
|
|
69
|
-
};
|
|
70
|
-
}>> & Readonly<{}>, {
|
|
71
|
-
renderers: VueRendererRegistry;
|
|
72
|
-
instance: TgbFormTanStackForm;
|
|
73
|
-
tanstackOptions: TgbFormTanStackOptions;
|
|
74
|
-
fields: readonly string[];
|
|
75
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
76
|
-
//#endregion
|
|
77
|
-
//#region src/TgbFormField.d.ts
|
|
78
|
-
declare const TgbFormField: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
79
|
-
name: {
|
|
80
|
-
type: StringConstructor;
|
|
81
|
-
required: true;
|
|
82
|
-
};
|
|
83
|
-
field: {
|
|
84
|
-
type: PropType<FieldDefinition>;
|
|
85
|
-
required: true;
|
|
86
|
-
};
|
|
87
|
-
renderers: {
|
|
88
|
-
type: PropType<VueRendererRegistry | undefined>;
|
|
89
|
-
default: undefined;
|
|
90
|
-
};
|
|
91
|
-
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
92
|
-
[key: string]: any;
|
|
93
|
-
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
94
|
-
name: {
|
|
95
|
-
type: StringConstructor;
|
|
96
|
-
required: true;
|
|
97
|
-
};
|
|
98
|
-
field: {
|
|
99
|
-
type: PropType<FieldDefinition>;
|
|
100
|
-
required: true;
|
|
101
|
-
};
|
|
102
|
-
renderers: {
|
|
103
|
-
type: PropType<VueRendererRegistry | undefined>;
|
|
104
|
-
default: undefined;
|
|
105
|
-
};
|
|
106
|
-
}>> & Readonly<{}>, {
|
|
107
|
-
renderers: VueRendererRegistry | undefined;
|
|
108
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
109
|
-
//#endregion
|
|
110
|
-
//#region src/TgbFormProvider.d.ts
|
|
25
|
+
//#region src/context.d.ts
|
|
111
26
|
type TgbFormRegistries = {
|
|
112
27
|
renderers?: VueRendererRegistry;
|
|
113
28
|
};
|
|
114
29
|
declare const TgbFormRegistriesKey: InjectionKey<TgbFormRegistries>;
|
|
115
30
|
declare const TgbFormInstanceKey: InjectionKey<unknown>;
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region src/index.d.ts
|
|
33
|
+
declare const TgbForm: {
|
|
34
|
+
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<{
|
|
35
|
+
definition: import("@tgb-form/core").RuntimeFormDefinition;
|
|
36
|
+
instance?: TgbFormTanStackForm;
|
|
37
|
+
tanstackOptions?: import("@tgb-form/core").TgbFormTanStackOptions;
|
|
38
|
+
renderers?: VueRendererRegistry;
|
|
39
|
+
fields?: readonly string[];
|
|
40
|
+
}> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {}, false, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
|
41
|
+
P: {};
|
|
42
|
+
B: {};
|
|
43
|
+
D: {};
|
|
44
|
+
C: {};
|
|
45
|
+
M: {};
|
|
46
|
+
Defaults: {};
|
|
47
|
+
}, Readonly<{
|
|
48
|
+
definition: import("@tgb-form/core").RuntimeFormDefinition;
|
|
49
|
+
instance?: TgbFormTanStackForm;
|
|
50
|
+
tanstackOptions?: import("@tgb-form/core").TgbFormTanStackOptions;
|
|
51
|
+
renderers?: VueRendererRegistry;
|
|
52
|
+
fields?: readonly string[];
|
|
53
|
+
}> & Readonly<{}>, {}, {}, {}, {}, {}>;
|
|
54
|
+
__isFragment?: never;
|
|
55
|
+
__isTeleport?: never;
|
|
56
|
+
__isSuspense?: never;
|
|
57
|
+
} & import("vue").ComponentOptionsBase<Readonly<{
|
|
58
|
+
definition: import("@tgb-form/core").RuntimeFormDefinition;
|
|
59
|
+
instance?: TgbFormTanStackForm;
|
|
60
|
+
tanstackOptions?: import("@tgb-form/core").TgbFormTanStackOptions;
|
|
61
|
+
renderers?: VueRendererRegistry;
|
|
62
|
+
fields?: readonly string[];
|
|
63
|
+
}> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
|
|
64
|
+
$slots: {
|
|
65
|
+
default?: (props: {}) => any;
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
declare const TgbFormField: import("vue").DefineComponent<{
|
|
69
|
+
name: string;
|
|
70
|
+
field: import("@tgb-form/core").FieldDefinition;
|
|
71
|
+
renderers?: VueRendererRegistry;
|
|
72
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
|
|
73
|
+
name: string;
|
|
74
|
+
field: import("@tgb-form/core").FieldDefinition;
|
|
75
|
+
renderers?: VueRendererRegistry;
|
|
76
|
+
}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
77
|
+
declare const TgbFormProvider: {
|
|
78
|
+
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<{
|
|
79
|
+
renderers?: VueRendererRegistry;
|
|
80
|
+
}> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {}, false, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
|
81
|
+
P: {};
|
|
82
|
+
B: {};
|
|
83
|
+
D: {};
|
|
84
|
+
C: {};
|
|
85
|
+
M: {};
|
|
86
|
+
Defaults: {};
|
|
87
|
+
}, Readonly<{
|
|
88
|
+
renderers?: VueRendererRegistry;
|
|
89
|
+
}> & Readonly<{}>, {}, {}, {}, {}, {}>;
|
|
90
|
+
__isFragment?: never;
|
|
91
|
+
__isTeleport?: never;
|
|
92
|
+
__isSuspense?: never;
|
|
93
|
+
} & import("vue").ComponentOptionsBase<Readonly<{
|
|
94
|
+
renderers?: VueRendererRegistry;
|
|
95
|
+
}> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
|
|
96
|
+
$slots: {
|
|
97
|
+
default?: (props: {}) => any;
|
|
127
98
|
};
|
|
128
|
-
}
|
|
129
|
-
renderers: VueRendererRegistry;
|
|
130
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
99
|
+
});
|
|
131
100
|
//#endregion
|
|
132
|
-
export { type BaseVueRendererProps, TgbForm, TgbFormField, TgbFormInstanceKey, TgbFormProvider, TgbFormRegistriesKey, type TgbFormTanStackForm, type VueRenderer, type VueRendererField, type VueRendererProps, type VueRendererRegistry, createVueRendererRegistry };
|
|
101
|
+
export { type BaseVueRendererProps, TgbForm, TgbFormField, TgbFormInstanceKey, TgbFormProvider, type TgbFormRegistries, TgbFormRegistriesKey, type TgbFormTanStackForm, type VueRenderer, type VueRendererField, type VueRendererProps, type VueRendererRegistry, createVueRendererRegistry };
|
|
133
102
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,29 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { defineComponent, h, inject, markRaw, provide, toRaw } from "vue";
|
|
1
|
+
import { Fragment, createBlock, createElementBlock, defineComponent, h, inject, markRaw, openBlock, provide, renderList, renderSlot, toRaw, unref, withModifiers } from "vue";
|
|
3
2
|
import { useForm } from "@tanstack/vue-form";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return createRendererRegistry(registry);
|
|
7
|
-
}
|
|
8
|
-
//#endregion
|
|
9
|
-
//#region src/TgbFormProvider.ts
|
|
3
|
+
import { createRendererRegistry, resolveRenderer, toTanStackOptions } from "@tgb-form/core";
|
|
4
|
+
//#region src/context.ts
|
|
10
5
|
const TgbFormRegistriesKey = Symbol("tgb-form-registries");
|
|
11
6
|
const TgbFormInstanceKey = Symbol("tgb-form-instance");
|
|
12
|
-
const TgbFormProvider = defineComponent({
|
|
13
|
-
name: "TgbFormProvider",
|
|
14
|
-
props: { renderers: {
|
|
15
|
-
type: Object,
|
|
16
|
-
default: void 0
|
|
17
|
-
} },
|
|
18
|
-
setup(props, { slots }) {
|
|
19
|
-
provide(TgbFormRegistriesKey, { renderers: props.renderers });
|
|
20
|
-
return () => slots.default?.();
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
7
|
//#endregion
|
|
24
|
-
//#region src/TgbFormField.
|
|
25
|
-
|
|
8
|
+
//#region src/TgbFormField.vue
|
|
9
|
+
var TgbFormField_default = /* @__PURE__ */ defineComponent({
|
|
26
10
|
name: "TgbFormField",
|
|
11
|
+
__name: "TgbFormField",
|
|
27
12
|
props: {
|
|
28
13
|
name: {
|
|
29
14
|
type: String,
|
|
@@ -34,19 +19,23 @@ const TgbFormField = defineComponent({
|
|
|
34
19
|
required: true
|
|
35
20
|
},
|
|
36
21
|
renderers: {
|
|
37
|
-
type:
|
|
38
|
-
|
|
22
|
+
type: null,
|
|
23
|
+
required: false
|
|
39
24
|
}
|
|
40
25
|
},
|
|
41
|
-
setup(
|
|
42
|
-
|
|
43
|
-
|
|
26
|
+
setup(__props) {
|
|
27
|
+
const props = __props;
|
|
28
|
+
const registries = inject(TgbFormRegistriesKey, null);
|
|
29
|
+
const form = inject(TgbFormInstanceKey, null);
|
|
30
|
+
const resolveRenderers = () => {
|
|
44
31
|
const renderers = props.renderers ?? registries?.renderers;
|
|
45
|
-
const form = inject(TgbFormInstanceKey, null);
|
|
46
|
-
if (!form) throw new Error("TgbFormField must be used inside a TgbForm component");
|
|
47
32
|
if (!renderers) throw new Error("No renderer registry found. Pass a renderers prop to TgbFormField or to the parent TgbForm.");
|
|
33
|
+
return renderers;
|
|
34
|
+
};
|
|
35
|
+
const RenderField = () => {
|
|
36
|
+
if (!form) throw new Error("TgbFormField must be used inside a TgbForm component");
|
|
48
37
|
const FieldComponent = markRaw(toRaw(form.Field));
|
|
49
|
-
const Renderer = markRaw(toRaw(resolveRenderer(props.field,
|
|
38
|
+
const Renderer = markRaw(toRaw(resolveRenderer(props.field, resolveRenderers())));
|
|
50
39
|
return h(FieldComponent, { name: props.name }, { default: ({ field, state }) => h(Renderer, {
|
|
51
40
|
name: props.name,
|
|
52
41
|
field,
|
|
@@ -58,12 +47,16 @@ const TgbFormField = defineComponent({
|
|
|
58
47
|
errors: state?.meta?.errors ?? field.state?.meta?.errors ?? []
|
|
59
48
|
}) });
|
|
60
49
|
};
|
|
50
|
+
return (_ctx, _cache) => {
|
|
51
|
+
return openBlock(), createBlock(RenderField);
|
|
52
|
+
};
|
|
61
53
|
}
|
|
62
54
|
});
|
|
63
55
|
//#endregion
|
|
64
|
-
//#region src/TgbForm.
|
|
65
|
-
|
|
56
|
+
//#region src/TgbForm.vue
|
|
57
|
+
var TgbForm_default = /* @__PURE__ */ defineComponent({
|
|
66
58
|
name: "TgbForm",
|
|
59
|
+
__name: "TgbForm",
|
|
67
60
|
props: {
|
|
68
61
|
definition: {
|
|
69
62
|
type: Object,
|
|
@@ -71,48 +64,78 @@ const TgbForm = defineComponent({
|
|
|
71
64
|
},
|
|
72
65
|
instance: {
|
|
73
66
|
type: Object,
|
|
74
|
-
|
|
67
|
+
required: false
|
|
75
68
|
},
|
|
76
69
|
tanstackOptions: {
|
|
77
70
|
type: Object,
|
|
78
|
-
|
|
71
|
+
required: false
|
|
79
72
|
},
|
|
80
73
|
renderers: {
|
|
81
|
-
type:
|
|
82
|
-
|
|
74
|
+
type: null,
|
|
75
|
+
required: false
|
|
83
76
|
},
|
|
84
77
|
fields: {
|
|
85
78
|
type: Array,
|
|
86
|
-
|
|
79
|
+
required: false
|
|
87
80
|
}
|
|
88
81
|
},
|
|
89
|
-
setup(
|
|
82
|
+
setup(__props) {
|
|
83
|
+
const props = __props;
|
|
90
84
|
const registries = inject(TgbFormRegistriesKey, null);
|
|
91
|
-
const
|
|
92
|
-
const form = props.instance
|
|
85
|
+
const resolveRenderers = () => props.renderers ?? registries?.renderers;
|
|
86
|
+
const form = props.instance ?? useForm(toTanStackOptions(props.definition, props.tanstackOptions));
|
|
93
87
|
provide(TgbFormInstanceKey, form);
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
form.handleSubmit?.();
|
|
98
|
-
} }, [...getOrderedFields(props.definition, props.fields).map(({ name, field }) => h(TgbFormField, {
|
|
99
|
-
key: name,
|
|
88
|
+
function getOrderedFields(definition, fields) {
|
|
89
|
+
const fieldSet = fields ? new Set(fields) : void 0;
|
|
90
|
+
return Object.entries(definition.fields).map(([name, field], index) => ({
|
|
100
91
|
name,
|
|
101
92
|
field,
|
|
102
|
-
|
|
103
|
-
}))
|
|
93
|
+
index
|
|
94
|
+
})).filter(({ name }) => !fieldSet || fieldSet.has(name)).sort((left, right) => (left.field.order ?? Number.POSITIVE_INFINITY) - (right.field.order ?? Number.POSITIVE_INFINITY) || left.index - right.index);
|
|
95
|
+
}
|
|
96
|
+
return (_ctx, _cache) => {
|
|
97
|
+
return openBlock(), createElementBlock("form", { onSubmit: _cache[0] || (_cache[0] = withModifiers(($event) => unref(form).handleSubmit?.(), ["prevent"])) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(getOrderedFields(props.definition, props.fields), ({ name, field }) => {
|
|
98
|
+
return openBlock(), createBlock(TgbFormField_default, {
|
|
99
|
+
key: name,
|
|
100
|
+
name,
|
|
101
|
+
field,
|
|
102
|
+
renderers: resolveRenderers()
|
|
103
|
+
}, null, 8, [
|
|
104
|
+
"name",
|
|
105
|
+
"field",
|
|
106
|
+
"renderers"
|
|
107
|
+
]);
|
|
108
|
+
}), 128)), renderSlot(_ctx.$slots, "default")], 32);
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
//#endregion
|
|
113
|
+
//#region src/TgbFormProvider.vue
|
|
114
|
+
var TgbFormProvider_default = /* @__PURE__ */ defineComponent({
|
|
115
|
+
name: "TgbFormProvider",
|
|
116
|
+
__name: "TgbFormProvider",
|
|
117
|
+
props: { renderers: {
|
|
118
|
+
type: null,
|
|
119
|
+
required: false
|
|
120
|
+
} },
|
|
121
|
+
setup(__props) {
|
|
122
|
+
provide(TgbFormRegistriesKey, { renderers: __props.renderers });
|
|
123
|
+
return (_ctx, _cache) => {
|
|
124
|
+
return renderSlot(_ctx.$slots, "default");
|
|
104
125
|
};
|
|
105
126
|
}
|
|
106
127
|
});
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
field,
|
|
112
|
-
index
|
|
113
|
-
})).filter(({ name }) => !fieldSet || fieldSet.has(name)).sort((left, right) => (left.field.order ?? Number.POSITIVE_INFINITY) - (right.field.order ?? Number.POSITIVE_INFINITY) || left.index - right.index);
|
|
128
|
+
//#endregion
|
|
129
|
+
//#region src/types.ts
|
|
130
|
+
function createVueRendererRegistry(registry) {
|
|
131
|
+
return createRendererRegistry(registry);
|
|
114
132
|
}
|
|
115
133
|
//#endregion
|
|
134
|
+
//#region src/index.ts
|
|
135
|
+
const TgbForm = TgbForm_default;
|
|
136
|
+
const TgbFormField = TgbFormField_default;
|
|
137
|
+
const TgbFormProvider = TgbFormProvider_default;
|
|
138
|
+
//#endregion
|
|
116
139
|
export { TgbForm, TgbFormField, TgbFormInstanceKey, TgbFormProvider, TgbFormRegistriesKey, createVueRendererRegistry };
|
|
117
140
|
|
|
118
141
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/types.ts","../src/TgbFormProvider.ts","../src/TgbFormField.ts","../src/TgbForm.ts"],"sourcesContent":["import { createRendererRegistry, type FieldDataType, type RendererRegistry } from '@tgb-form/core';\nimport type { AnyFieldApi, AnyFormApi, VueFormApi } from '@tanstack/vue-form';\nimport type { Component } from 'vue';\n\nexport type VueRendererField = AnyFieldApi;\n\nexport type VueRendererProps = {\n readonly name: string;\n readonly field: VueRendererField;\n readonly form: TgbFormTanStackForm;\n readonly label?: string;\n readonly description?: string;\n readonly props?: Record<string, unknown>;\n readonly value: unknown;\n readonly errors: readonly unknown[];\n};\n\nexport type BaseVueRendererProps = VueRendererProps;\n\nexport type VueRenderer = Component;\n\nexport type VueRendererRegistry<\n TByName extends Readonly<Record<string, VueRenderer>> = Readonly<Record<string, VueRenderer>>,\n TByType extends Partial<Readonly<Record<FieldDataType, VueRenderer>>> = Partial<\n Readonly<Record<FieldDataType, VueRenderer>>\n >,\n> = RendererRegistry<TByName, TByType>;\n\nexport type TgbFormTanStackForm = AnyFormApi &\n VueFormApi<any, any, any, any, any, any, any, any, any, any, any, any>;\n\nexport function createVueRendererRegistry<\n const TByName extends Readonly<Record<string, VueRenderer>> = {},\n const TByType extends Partial<Readonly<Record<FieldDataType, VueRenderer>>> = {},\n>(registry: {\n readonly byName?: TByName;\n readonly byType?: TByType;\n}): VueRendererRegistry<TByName, TByType> {\n return createRendererRegistry(registry);\n}\n","import { type InjectionKey, type PropType, defineComponent, provide } from 'vue';\nimport type { VueRendererRegistry } from './types';\n\nexport type TgbFormRegistries = {\n renderers?: VueRendererRegistry;\n};\n\nexport const TgbFormRegistriesKey: InjectionKey<TgbFormRegistries> = Symbol('tgb-form-registries');\nexport const TgbFormInstanceKey: InjectionKey<unknown> = Symbol('tgb-form-instance');\n\nexport const TgbFormProvider = defineComponent({\n name: 'TgbFormProvider',\n props: {\n renderers: {\n type: Object as PropType<VueRendererRegistry>,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n provide(TgbFormRegistriesKey, { renderers: props.renderers });\n\n return () => slots.default?.();\n },\n});\n","import { type PropType, defineComponent, h, inject, markRaw, toRaw } from 'vue';\nimport { resolveRenderer, type FieldDefinition } from '@tgb-form/core';\nimport { TgbFormInstanceKey, TgbFormRegistriesKey } from './TgbFormProvider';\nimport type { VueRenderer, VueRendererRegistry } from './types';\n\ntype TanStackFieldSlotProps = {\n readonly field: Record<string, unknown> & {\n readonly state?: {\n readonly value?: unknown;\n readonly meta?: {\n readonly errors?: readonly unknown[];\n };\n };\n };\n readonly state?: {\n readonly value?: unknown;\n readonly meta?: {\n readonly errors?: readonly unknown[];\n };\n };\n};\n\nexport const TgbFormField = defineComponent({\n name: 'TgbFormField',\n props: {\n name: {\n type: String,\n required: true,\n },\n field: {\n type: Object as PropType<FieldDefinition>,\n required: true,\n },\n renderers: {\n type: Object as PropType<VueRendererRegistry | undefined>,\n default: undefined,\n },\n },\n setup(props) {\n return () => {\n const registries = inject(TgbFormRegistriesKey, null);\n const renderers = props.renderers ?? registries?.renderers;\n\n const form = inject(TgbFormInstanceKey, null);\n\n if (!form) {\n throw new Error('TgbFormField must be used inside a TgbForm component');\n }\n\n if (!renderers) {\n throw new Error(\n 'No renderer registry found. Pass a renderers prop to TgbFormField or to the parent TgbForm.',\n );\n }\n\n const FieldComponent = markRaw(toRaw((form as Record<string, unknown>).Field) as any);\n const Renderer = markRaw(toRaw(resolveRenderer(props.field, renderers)) as VueRenderer);\n\n return h(\n FieldComponent,\n { name: props.name },\n {\n default: ({ field, state }: TanStackFieldSlotProps) =>\n h(Renderer, {\n name: props.name,\n field,\n form,\n label: props.field.label,\n description: props.field.description,\n props: props.field.props,\n value: state?.value ?? field.state?.value,\n errors: state?.meta?.errors ?? field.state?.meta?.errors ?? [],\n }),\n },\n );\n };\n },\n});\n","import { type PropType, defineComponent, h, inject, provide } from 'vue';\nimport { useForm } from '@tanstack/vue-form';\nimport {\n toTanStackOptions,\n type TgbFormTanStackOptions,\n type FormDefinition,\n type RuntimeFormDefinition,\n} from '@tgb-form/core';\nimport { TgbFormField } from './TgbFormField';\nimport { TgbFormInstanceKey, TgbFormRegistriesKey } from './TgbFormProvider';\nimport type { TgbFormTanStackForm, VueRendererRegistry } from './types';\n\ntype SubmitLikeEvent = {\n preventDefault(): void;\n};\n\nexport const TgbForm = defineComponent({\n name: 'TgbForm',\n props: {\n definition: {\n type: Object as PropType<RuntimeFormDefinition>,\n required: true,\n },\n instance: {\n type: Object as PropType<TgbFormTanStackForm>,\n default: undefined,\n },\n tanstackOptions: {\n type: Object as PropType<TgbFormTanStackOptions>,\n default: undefined,\n },\n renderers: {\n type: Object as PropType<VueRendererRegistry>,\n default: undefined,\n },\n fields: {\n type: Array as PropType<readonly string[]>,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n const registries = inject(TgbFormRegistriesKey, null);\n const renderers = props.renderers ?? registries?.renderers;\n\n const form =\n props.instance !== undefined\n ? (props.instance as unknown as TgbFormTanStackForm)\n : (useForm(\n toTanStackOptions(props.definition, props.tanstackOptions) as Record<string, unknown>,\n ) as unknown as TgbFormTanStackForm);\n\n provide(TgbFormInstanceKey, form);\n\n return () => {\n const orderedFields = getOrderedFields(props.definition, props.fields);\n\n return h(\n 'form',\n {\n onSubmit: (event: SubmitLikeEvent) => {\n event.preventDefault();\n form.handleSubmit?.();\n },\n },\n [\n ...orderedFields.map(({ name, field }) =>\n h(TgbFormField, {\n key: name,\n name,\n field,\n renderers,\n }),\n ),\n slots.default?.(),\n ].filter(Boolean),\n );\n };\n },\n});\n\nfunction getOrderedFields(definition: FormDefinition, fields?: readonly string[]) {\n const fieldSet = fields ? new Set(fields) : undefined;\n\n return Object.entries(definition.fields)\n .map(([name, field], index) => ({ name, field, index }))\n .filter(({ name }) => !fieldSet || fieldSet.has(name))\n .sort(\n (left, right) =>\n (left.field.order ?? Number.POSITIVE_INFINITY) -\n (right.field.order ?? Number.POSITIVE_INFINITY) || left.index - right.index,\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["TgbFormComponent","TgbFormFieldComponent","TgbFormProviderComponent"],"sources":["../src/context.ts","../src/TgbFormField.vue","../src/TgbFormField.vue","../src/TgbForm.vue","../src/TgbForm.vue","../src/TgbFormProvider.vue","../src/TgbFormProvider.vue","../src/types.ts","../src/index.ts"],"sourcesContent":["import type { InjectionKey } from 'vue';\nimport type { VueRendererRegistry } from './types';\n\nexport type TgbFormRegistries = {\n renderers?: VueRendererRegistry;\n};\n\nexport const TgbFormRegistriesKey: InjectionKey<TgbFormRegistries> = Symbol('tgb-form-registries');\nexport const TgbFormInstanceKey: InjectionKey<unknown> = Symbol('tgb-form-instance');\n","<script setup lang=\"ts\">\n import { h, inject, markRaw, toRaw } from 'vue';\n import { resolveRenderer, type FieldDefinition } from '@tgb-form/core';\n import { TgbFormInstanceKey, TgbFormRegistriesKey } from './context';\n import type { VueRenderer, VueRendererRegistry } from './types';\n\n defineOptions({ name: 'TgbFormField' });\n\n const props = defineProps<{\n name: string;\n field: FieldDefinition;\n renderers?: VueRendererRegistry;\n }>();\n\n const registries = inject(TgbFormRegistriesKey, null);\n const form = inject(TgbFormInstanceKey, null);\n\n const resolveRenderers = () => {\n const renderers = props.renderers ?? registries?.renderers;\n\n if (!renderers) {\n throw new Error(\n 'No renderer registry found. Pass a renderers prop to TgbFormField or to the parent TgbForm.',\n );\n }\n\n return renderers;\n };\n\n type TanStackFieldSlotProps = {\n readonly field: Record<string, unknown> & {\n readonly state?: {\n readonly value?: unknown;\n readonly meta?: {\n readonly errors?: readonly unknown[];\n };\n };\n };\n readonly state?: {\n readonly value?: unknown;\n readonly meta?: {\n readonly errors?: readonly unknown[];\n };\n };\n };\n const RenderField = () => {\n if (!form) {\n throw new Error('TgbFormField must be used inside a TgbForm component');\n }\n\n const FieldComponent = markRaw(toRaw((form as Record<string, unknown>).Field) as any);\n const Renderer = markRaw(\n toRaw(resolveRenderer(props.field, resolveRenderers())) as VueRenderer,\n );\n\n return h(\n FieldComponent,\n { name: props.name },\n {\n default: ({ field, state }: TanStackFieldSlotProps) =>\n h(Renderer, {\n name: props.name,\n field,\n form,\n label: props.field.label,\n description: props.field.description,\n props: props.field.props,\n value: state?.value ?? field.state?.value,\n errors: state?.meta?.errors ?? field.state?.meta?.errors ?? [],\n }),\n },\n );\n };\n</script>\n\n<template>\n <RenderField />\n</template>\n","<script setup lang=\"ts\">\n import { h, inject, markRaw, toRaw } from 'vue';\n import { resolveRenderer, type FieldDefinition } from '@tgb-form/core';\n import { TgbFormInstanceKey, TgbFormRegistriesKey } from './context';\n import type { VueRenderer, VueRendererRegistry } from './types';\n\n defineOptions({ name: 'TgbFormField' });\n\n const props = defineProps<{\n name: string;\n field: FieldDefinition;\n renderers?: VueRendererRegistry;\n }>();\n\n const registries = inject(TgbFormRegistriesKey, null);\n const form = inject(TgbFormInstanceKey, null);\n\n const resolveRenderers = () => {\n const renderers = props.renderers ?? registries?.renderers;\n\n if (!renderers) {\n throw new Error(\n 'No renderer registry found. Pass a renderers prop to TgbFormField or to the parent TgbForm.',\n );\n }\n\n return renderers;\n };\n\n type TanStackFieldSlotProps = {\n readonly field: Record<string, unknown> & {\n readonly state?: {\n readonly value?: unknown;\n readonly meta?: {\n readonly errors?: readonly unknown[];\n };\n };\n };\n readonly state?: {\n readonly value?: unknown;\n readonly meta?: {\n readonly errors?: readonly unknown[];\n };\n };\n };\n const RenderField = () => {\n if (!form) {\n throw new Error('TgbFormField must be used inside a TgbForm component');\n }\n\n const FieldComponent = markRaw(toRaw((form as Record<string, unknown>).Field) as any);\n const Renderer = markRaw(\n toRaw(resolveRenderer(props.field, resolveRenderers())) as VueRenderer,\n );\n\n return h(\n FieldComponent,\n { name: props.name },\n {\n default: ({ field, state }: TanStackFieldSlotProps) =>\n h(Renderer, {\n name: props.name,\n field,\n form,\n label: props.field.label,\n description: props.field.description,\n props: props.field.props,\n value: state?.value ?? field.state?.value,\n errors: state?.meta?.errors ?? field.state?.meta?.errors ?? [],\n }),\n },\n );\n };\n</script>\n\n<template>\n <RenderField />\n</template>\n","<script setup lang=\"ts\">\n import { inject, provide } from 'vue';\n import { useForm } from '@tanstack/vue-form';\n import {\n toTanStackOptions,\n type FormDefinition,\n type RuntimeFormDefinition,\n type TgbFormTanStackOptions,\n } from '@tgb-form/core';\n import TgbFormField from './TgbFormField.vue';\n import { TgbFormInstanceKey, TgbFormRegistriesKey } from './context';\n import type { TgbFormTanStackForm, VueRendererRegistry } from './types';\n\n defineOptions({ name: 'TgbForm' });\n\n const props = defineProps<{\n definition: RuntimeFormDefinition;\n instance?: TgbFormTanStackForm;\n tanstackOptions?: TgbFormTanStackOptions;\n renderers?: VueRendererRegistry;\n fields?: readonly string[];\n }>();\n\n const registries = inject(TgbFormRegistriesKey, null);\n const resolveRenderers = () => props.renderers ?? registries?.renderers;\n const form =\n props.instance ??\n (useForm(\n toTanStackOptions(props.definition, props.tanstackOptions) as Record<string, unknown>,\n ) as unknown as TgbFormTanStackForm);\n\n provide(TgbFormInstanceKey, form);\n\n function getOrderedFields(definition: FormDefinition, fields?: readonly string[]) {\n const fieldSet = fields ? new Set(fields) : undefined;\n\n return Object.entries(definition.fields)\n .map(([name, field], index) => ({ name, field, index }))\n .filter(({ name }) => !fieldSet || fieldSet.has(name))\n .sort(\n (left, right) =>\n (left.field.order ?? Number.POSITIVE_INFINITY) -\n (right.field.order ?? Number.POSITIVE_INFINITY) || left.index - right.index,\n );\n }\n</script>\n\n<template>\n <form @submit.prevent=\"form.handleSubmit?.()\">\n <TgbFormField\n v-for=\"{ name, field } in getOrderedFields(props.definition, props.fields)\"\n :key=\"name\"\n :name=\"name\"\n :field=\"field\"\n :renderers=\"resolveRenderers()\"\n />\n <slot />\n </form>\n</template>\n","<script setup lang=\"ts\">\n import { inject, provide } from 'vue';\n import { useForm } from '@tanstack/vue-form';\n import {\n toTanStackOptions,\n type FormDefinition,\n type RuntimeFormDefinition,\n type TgbFormTanStackOptions,\n } from '@tgb-form/core';\n import TgbFormField from './TgbFormField.vue';\n import { TgbFormInstanceKey, TgbFormRegistriesKey } from './context';\n import type { TgbFormTanStackForm, VueRendererRegistry } from './types';\n\n defineOptions({ name: 'TgbForm' });\n\n const props = defineProps<{\n definition: RuntimeFormDefinition;\n instance?: TgbFormTanStackForm;\n tanstackOptions?: TgbFormTanStackOptions;\n renderers?: VueRendererRegistry;\n fields?: readonly string[];\n }>();\n\n const registries = inject(TgbFormRegistriesKey, null);\n const resolveRenderers = () => props.renderers ?? registries?.renderers;\n const form =\n props.instance ??\n (useForm(\n toTanStackOptions(props.definition, props.tanstackOptions) as Record<string, unknown>,\n ) as unknown as TgbFormTanStackForm);\n\n provide(TgbFormInstanceKey, form);\n\n function getOrderedFields(definition: FormDefinition, fields?: readonly string[]) {\n const fieldSet = fields ? new Set(fields) : undefined;\n\n return Object.entries(definition.fields)\n .map(([name, field], index) => ({ name, field, index }))\n .filter(({ name }) => !fieldSet || fieldSet.has(name))\n .sort(\n (left, right) =>\n (left.field.order ?? Number.POSITIVE_INFINITY) -\n (right.field.order ?? Number.POSITIVE_INFINITY) || left.index - right.index,\n );\n }\n</script>\n\n<template>\n <form @submit.prevent=\"form.handleSubmit?.()\">\n <TgbFormField\n v-for=\"{ name, field } in getOrderedFields(props.definition, props.fields)\"\n :key=\"name\"\n :name=\"name\"\n :field=\"field\"\n :renderers=\"resolveRenderers()\"\n />\n <slot />\n </form>\n</template>\n","<script setup lang=\"ts\">\n import { provide } from 'vue';\n import { TgbFormRegistriesKey } from './context';\n import type { VueRendererRegistry } from './types';\n\n defineOptions({ name: 'TgbFormProvider' });\n\n const props = defineProps<{\n renderers?: VueRendererRegistry;\n }>();\n\n provide(TgbFormRegistriesKey, { renderers: props.renderers });\n</script>\n\n<template>\n <slot />\n</template>\n","<script setup lang=\"ts\">\n import { provide } from 'vue';\n import { TgbFormRegistriesKey } from './context';\n import type { VueRendererRegistry } from './types';\n\n defineOptions({ name: 'TgbFormProvider' });\n\n const props = defineProps<{\n renderers?: VueRendererRegistry;\n }>();\n\n provide(TgbFormRegistriesKey, { renderers: props.renderers });\n</script>\n\n<template>\n <slot />\n</template>\n","import { createRendererRegistry, type FieldDataType, type RendererRegistry } from '@tgb-form/core';\nimport type { AnyFieldApi, AnyFormApi, VueFormApi } from '@tanstack/vue-form';\nimport type { Component } from 'vue';\n\nexport type VueRendererField = AnyFieldApi;\n\nexport type VueRendererProps = {\n readonly name: string;\n readonly field: VueRendererField;\n readonly form: TgbFormTanStackForm;\n readonly label?: string;\n readonly description?: string;\n readonly props?: Record<string, unknown>;\n readonly value: unknown;\n readonly errors: readonly unknown[];\n};\n\nexport type BaseVueRendererProps = VueRendererProps;\n\nexport type VueRenderer = Component;\n\nexport type VueRendererRegistry<\n TByName extends Readonly<Record<string, VueRenderer>> = Readonly<Record<string, VueRenderer>>,\n TByType extends Partial<Readonly<Record<FieldDataType, VueRenderer>>> = Partial<\n Readonly<Record<FieldDataType, VueRenderer>>\n >,\n> = RendererRegistry<TByName, TByType>;\n\nexport type TgbFormTanStackForm = AnyFormApi &\n VueFormApi<any, any, any, any, any, any, any, any, any, any, any, any>;\n\nexport function createVueRendererRegistry<\n const TByName extends Readonly<Record<string, VueRenderer>> = {},\n const TByType extends Partial<Readonly<Record<FieldDataType, VueRenderer>>> = {},\n>(registry: {\n readonly byName?: TByName;\n readonly byType?: TByType;\n}): VueRendererRegistry<TByName, TByType> {\n return createRendererRegistry(registry);\n}\n","import TgbFormComponent from './TgbForm.vue';\nimport TgbFormFieldComponent from './TgbFormField.vue';\nimport TgbFormProviderComponent from './TgbFormProvider.vue';\n\nexport const TgbForm = TgbFormComponent;\nexport const TgbFormField = TgbFormFieldComponent;\nexport const TgbFormProvider = TgbFormProviderComponent;\n\nexport { createVueRendererRegistry } from './types';\nexport { TgbFormRegistriesKey, TgbFormInstanceKey } from './context';\nexport type { TgbFormRegistries } from './context';\nexport type {\n BaseVueRendererProps,\n VueRenderer,\n VueRendererField,\n VueRendererProps,\n VueRendererRegistry,\n TgbFormTanStackForm,\n} from './types';\n"],"mappings":";;;;AAOA,MAAa,uBAAwD,OAAO,qBAAqB;AACjG,MAAa,qBAA4C,OAAO,mBAAmB;;;;;;;;;;;;;;;;;;;;;ECAjF,MAAM,QAAQ;EAMd,MAAM,aAAa,OAAO,sBAAsB,IAAI;EACpD,MAAM,OAAO,OAAO,oBAAoB,IAAI;EAE5C,MAAM,yBAAyB;GAC7B,MAAM,YAAY,MAAM,aAAa,YAAY;GAEjD,IAAI,CAAC,WACH,MAAM,IAAI,MACR,6FACF;GAGF,OAAO;EACT;EAkBA,MAAM,oBAAoB;GACxB,IAAI,CAAC,MACH,MAAM,IAAI,MAAM,sDAAsD;GAGxE,MAAM,iBAAiB,QAAQ,MAAO,KAAiC,KAAK,CAAQ;GACpF,MAAM,WAAW,QACf,MAAM,gBAAgB,MAAM,OAAO,iBAAiB,CAAC,CAAC,CACxD;GAEA,OAAO,EACL,gBACA,EAAE,MAAM,MAAM,KAAK,GACnB,EACE,UAAU,EAAE,OAAO,YACjB,EAAE,UAAU;IACV,MAAM,MAAM;IACZ;IACA;IACA,OAAO,MAAM,MAAM;IACnB,aAAa,MAAM,MAAM;IACzB,OAAO,MAAM,MAAM;IACnB,OAAO,OAAO,SAAS,MAAM,OAAO;IACpC,QAAQ,OAAO,MAAM,UAAU,MAAM,OAAO,MAAM,UAAU,CAAC;GAC/D,CAAC,EACL,CACF;EACF;;uBAIA,YAAe,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EE7Df,MAAM,QAAQ;EAQd,MAAM,aAAa,OAAO,sBAAsB,IAAI;EACpD,MAAM,yBAAyB,MAAM,aAAa,YAAY;EAC9D,MAAM,OACJ,MAAM,YACL,QACC,kBAAkB,MAAM,YAAY,MAAM,eAAe,CAC3D;EAEF,QAAQ,oBAAoB,IAAI;EAEhC,SAAS,iBAAiB,YAA4B,QAA4B;GAChF,MAAM,WAAW,SAAS,IAAI,IAAI,MAAM,IAAI,KAAA;GAE5C,OAAO,OAAO,QAAQ,WAAW,MAAM,CAAA,CACpC,KAAK,CAAC,MAAM,QAAQ,WAAW;IAAE;IAAM;IAAO;GAAM,EAAE,CAAA,CACtD,QAAQ,EAAE,WAAW,CAAC,YAAY,SAAS,IAAI,IAAI,CAAC,CAAA,CACpD,MACE,MAAM,WACJ,KAAK,MAAM,SAAS,OAAO,sBACzB,MAAM,MAAM,SAAS,OAAO,sBAAsB,KAAK,QAAQ,MAAM,KAC5E;EACJ;;uBAIA,mBASO,QAAA,EATA,UAAM,OAAA,OAAA,OAAA,KAAA,eAAA,WAAU,MAAA,IAAA,CAAI,CAAC,eAAY,GAAA,CAAA,SAAA,CAAA,GAAA,GAAA,EAAA,UAAA,IAAA,GACtC,mBAME,UAAA,MAAA,WAL0B,iBAAiB,MAAM,YAAY,MAAM,MAAM,IAAA,EAAhE,MAAM,YAAK;wBADtB,YAME,sBAAA;KAJC,KAAK;KACC;KACC;KACP,WAAW,iBAAgB;;;;;;cAE9B,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,EAAA;;;;;;;;;;;;;;EE7CV,QAAQ,sBAAsB,EAAE,WAAW,QAAM,UAAU,CAAC;;UAI5D,WAAQ,KAAA,QAAA,SAAA;;;;;;AEgBV,SAAgB,0BAGd,UAGwC;CACxC,OAAO,uBAAuB,QAAQ;AACxC;;;ACnCA,MAAa,UAAUA;AACvB,MAAa,eAAeC;AAC5B,MAAa,kBAAkBC"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tgb-form/vue",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "An easy to use form library for Vue, built on top of @tgb-form/core.",
|
|
5
|
-
"homepage": "https://github.com/VueEasyForm/
|
|
5
|
+
"homepage": "https://github.com/VueEasyForm/tgb-form#readme",
|
|
6
6
|
"bugs": {
|
|
7
|
-
"url": "https://github.com/VueEasyForm/
|
|
7
|
+
"url": "https://github.com/VueEasyForm/tgb-form/issues"
|
|
8
8
|
},
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"author": "The @tgb-form Authors",
|
|
11
11
|
"repository": {
|
|
12
12
|
"type": "git",
|
|
13
|
-
"url": "git+https://github.com/VueEasyForm/
|
|
13
|
+
"url": "git+https://github.com/VueEasyForm/tgb-form.git"
|
|
14
14
|
},
|
|
15
15
|
"files": [
|
|
16
16
|
"dist"
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"access": "public"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@tanstack/vue-form": "^1.33.
|
|
29
|
+
"@tanstack/vue-form": "^1.33.1",
|
|
30
30
|
"@tsdown/css": "^0.22.4",
|
|
31
31
|
"@types/node": "^26.1.1",
|
|
32
32
|
"@vitejs/plugin-vue": "^6.0.6",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"vitest-browser-vue": "^2.1.0",
|
|
40
40
|
"vue": "^3.5.34",
|
|
41
41
|
"vue-tsc": "^3.3.7",
|
|
42
|
-
"@tgb-form/core": "0.0.
|
|
42
|
+
"@tgb-form/core": "0.0.2"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"@tanstack/vue-form": "^1.33.0",
|