@sfxcode/nuxt-ui-formkit 1.2.5 → 1.2.7
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 +4 -1
- package/dist/module.json +1 -1
- package/dist/runtime/components/FUAutoForm.d.vue.ts +3 -3
- package/dist/runtime/components/FUAutoForm.vue +6 -3
- package/dist/runtime/components/FUAutoForm.vue.d.ts +3 -3
- package/dist/runtime/components/FUAutoFormOverlay.d.vue.ts +1 -1
- package/dist/runtime/components/FUAutoFormOverlay.vue.d.ts +1 -1
- package/dist/runtime/components/inputs/FUCheckbox.d.vue.ts +1 -0
- package/dist/runtime/components/inputs/FUCheckbox.vue +1 -0
- package/dist/runtime/components/inputs/FUCheckbox.vue.d.ts +1 -0
- package/dist/runtime/components/inputs/FUCheckboxGroup.vue +1 -1
- package/dist/runtime/components/inputs/FUFileUpload.vue +1 -1
- package/dist/runtime/components/inputs/FUInputMenu.d.vue.ts +1 -0
- package/dist/runtime/components/inputs/FUInputMenu.vue +1 -0
- package/dist/runtime/components/inputs/FUInputMenu.vue.d.ts +1 -0
- package/dist/runtime/components/inputs/FUInputRating.d.vue.ts +30 -0
- package/dist/runtime/components/inputs/FUInputRating.vue +48 -0
- package/dist/runtime/components/inputs/FUInputRating.vue.d.ts +30 -0
- package/dist/runtime/components/inputs/FUListbox.d.vue.ts +1 -0
- package/dist/runtime/components/inputs/FUListbox.vue +3 -0
- package/dist/runtime/components/inputs/FUListbox.vue.d.ts +1 -0
- package/dist/runtime/components/inputs/FUPinInput.d.vue.ts +1 -0
- package/dist/runtime/components/inputs/FUPinInput.vue +1 -0
- package/dist/runtime/components/inputs/FUPinInput.vue.d.ts +1 -0
- package/dist/runtime/components/inputs/FURadioGroup.vue +1 -1
- package/dist/runtime/components/inputs/FUSelect.d.vue.ts +1 -0
- package/dist/runtime/components/inputs/FUSelect.vue +1 -0
- package/dist/runtime/components/inputs/FUSelect.vue.d.ts +1 -0
- package/dist/runtime/components/inputs/FUSelectMenu.d.vue.ts +1 -0
- package/dist/runtime/components/inputs/FUSelectMenu.vue +1 -0
- package/dist/runtime/components/inputs/FUSelectMenu.vue.d.ts +1 -0
- package/dist/runtime/components/inputs/FUSlider.vue +1 -1
- package/dist/runtime/components/inputs/FUSwitch.d.vue.ts +1 -0
- package/dist/runtime/components/inputs/FUSwitch.vue +1 -0
- package/dist/runtime/components/inputs/FUSwitch.vue.d.ts +1 -0
- package/dist/runtime/components/inputs/FUTree.d.vue.ts +36 -0
- package/dist/runtime/components/inputs/FUTree.vue +52 -0
- package/dist/runtime/components/inputs/FUTree.vue.d.ts +36 -0
- package/dist/runtime/composables/useFormKitAutoForm.d.ts +2 -0
- package/dist/runtime/composables/useFormKitAutoForm.js +86 -1
- package/dist/runtime/formkit/definitions/index.d.ts +2 -0
- package/dist/runtime/formkit/definitions/index.js +3 -1
- package/dist/runtime/formkit/definitions/index.mjs +3 -1
- package/dist/runtime/formkit/definitions/input.d.ts +2 -0
- package/dist/runtime/formkit/definitions/input.js +17 -7
- package/dist/runtime/formkit/definitions/input.mjs +17 -7
- package/dist/runtime/formkit/definitions/multiStep.js +8 -4
- package/dist/runtime/formkit/definitions/multiStep.mjs +8 -4
- package/dist/runtime/formkit/index.d.ts +9 -1
- package/package.json +8 -8
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { FormKitSchemaNode } from '@formkit/core';
|
|
2
2
|
export type AutoFormOverrides = Record<string, Record<string, unknown> | boolean>;
|
|
3
3
|
export declare function inferFormSchema(data: Record<string, unknown>, overrides?: AutoFormOverrides): FormKitSchemaNode[];
|
|
4
|
+
export declare function inferFormSchemaFromSamples(samples: Record<string, unknown>[], overrides?: AutoFormOverrides): FormKitSchemaNode[];
|
|
4
5
|
export interface ValibotLikePipeEntry {
|
|
5
6
|
kind: string;
|
|
6
7
|
type: string;
|
|
@@ -33,6 +34,7 @@ export interface ZodLikeSchema {
|
|
|
33
34
|
export declare function inferFormSchemaFromZod(schema: object, overrides?: AutoFormOverrides): FormKitSchemaNode[];
|
|
34
35
|
export declare function useFormKitAutoForm(): {
|
|
35
36
|
inferFormSchema: typeof inferFormSchema;
|
|
37
|
+
inferFormSchemaFromSamples: typeof inferFormSchemaFromSamples;
|
|
36
38
|
inferFormSchemaFromValibot: typeof inferFormSchemaFromValibot;
|
|
37
39
|
inferFormSchemaFromZod: typeof inferFormSchemaFromZod;
|
|
38
40
|
};
|
|
@@ -127,6 +127,91 @@ function inferNodes(data, overrides, pathPrefix = "") {
|
|
|
127
127
|
export function inferFormSchema(data, overrides) {
|
|
128
128
|
return inferNodes(data, overrides);
|
|
129
129
|
}
|
|
130
|
+
function isFilled(value) {
|
|
131
|
+
if (value === void 0 || value === null) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
if (typeof value === "string") {
|
|
135
|
+
return value !== "";
|
|
136
|
+
}
|
|
137
|
+
if (Array.isArray(value)) {
|
|
138
|
+
return value.length > 0;
|
|
139
|
+
}
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
function transposeSamples(samples) {
|
|
143
|
+
const columns = {};
|
|
144
|
+
for (const sample of samples) {
|
|
145
|
+
for (const key of Object.keys(sample)) {
|
|
146
|
+
columns[key] ??= samples.map((entry) => entry[key]);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return columns;
|
|
150
|
+
}
|
|
151
|
+
function inferSampleNode(name, values, overrides, path) {
|
|
152
|
+
const presentValues = values.filter((value) => value !== void 0 && value !== null);
|
|
153
|
+
if (presentValues.length === 0) {
|
|
154
|
+
return void 0;
|
|
155
|
+
}
|
|
156
|
+
const filledValues = presentValues.filter(isFilled);
|
|
157
|
+
const required = filledValues.length === values.length;
|
|
158
|
+
const representative = filledValues[0] ?? presentValues[0];
|
|
159
|
+
const label = humanizeKey(name);
|
|
160
|
+
const validation = required && typeof representative !== "boolean" ? "required" : void 0;
|
|
161
|
+
const base = validation ? { name, label, validation } : { name, label };
|
|
162
|
+
if (typeof representative === "boolean") {
|
|
163
|
+
return { $formkit: "nuxtUISwitch", ...base };
|
|
164
|
+
}
|
|
165
|
+
if (typeof representative === "number") {
|
|
166
|
+
return { $formkit: "nuxtUIInputNumber", ...base };
|
|
167
|
+
}
|
|
168
|
+
if (representative instanceof Date) {
|
|
169
|
+
return { $formkit: "nuxtUIInputDate", ...base, valueType: "date" };
|
|
170
|
+
}
|
|
171
|
+
if (isDateValue(representative)) {
|
|
172
|
+
return { $formkit: "nuxtUIInputDate", ...base, valueType: "calendar" };
|
|
173
|
+
}
|
|
174
|
+
if (typeof representative === "string") {
|
|
175
|
+
if (isIsoDateString(representative)) {
|
|
176
|
+
return { $formkit: "nuxtUIInputDate", ...base, valueType: "iso" };
|
|
177
|
+
}
|
|
178
|
+
if (representative.includes("\n")) {
|
|
179
|
+
return { $formkit: "nuxtUITextarea", ...base };
|
|
180
|
+
}
|
|
181
|
+
return { $formkit: "nuxtUIInput", ...base };
|
|
182
|
+
}
|
|
183
|
+
if (Array.isArray(representative)) {
|
|
184
|
+
const [first] = representative;
|
|
185
|
+
if (isPlainObject(first)) {
|
|
186
|
+
const rows = presentValues.filter(Array.isArray).flat().filter(isPlainObject);
|
|
187
|
+
return {
|
|
188
|
+
$formkit: "nuxtUIRepeater",
|
|
189
|
+
...base,
|
|
190
|
+
newItem: blankItem(rows[0] ?? first),
|
|
191
|
+
children: inferSampleNodes(rows, overrides, path),
|
|
192
|
+
...REPEATER_BUTTON_DEFAULTS
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
return { $formkit: "nuxtUIInputTags", ...base };
|
|
196
|
+
}
|
|
197
|
+
if (isPlainObject(representative)) {
|
|
198
|
+
return { $formkit: "group", name, children: inferSampleNodes(presentValues.filter(isPlainObject), overrides, path) };
|
|
199
|
+
}
|
|
200
|
+
return void 0;
|
|
201
|
+
}
|
|
202
|
+
function inferSampleNodes(samples, overrides, pathPrefix = "") {
|
|
203
|
+
return buildNodes(transposeSamples(samples), (key, values, path) => inferSampleNode(key, values, overrides, path), overrides, pathPrefix);
|
|
204
|
+
}
|
|
205
|
+
export function inferFormSchemaFromSamples(samples, overrides) {
|
|
206
|
+
if (!Array.isArray(samples)) {
|
|
207
|
+
return [];
|
|
208
|
+
}
|
|
209
|
+
const records = samples.filter(isPlainObject);
|
|
210
|
+
if (records.length === 0) {
|
|
211
|
+
return [];
|
|
212
|
+
}
|
|
213
|
+
return inferSampleNodes(records, overrides);
|
|
214
|
+
}
|
|
130
215
|
const OPTIONAL_WRAPPER_TYPES = /* @__PURE__ */ new Set(["optional", "nullable", "nullish", "exact_optional"]);
|
|
131
216
|
function unwrapValibot(entry) {
|
|
132
217
|
let schema = entry;
|
|
@@ -345,5 +430,5 @@ export function inferFormSchemaFromZod(schema, overrides) {
|
|
|
345
430
|
return inferZodNodes(root.shape, overrides);
|
|
346
431
|
}
|
|
347
432
|
export function useFormKitAutoForm() {
|
|
348
|
-
return { inferFormSchema, inferFormSchemaFromValibot, inferFormSchemaFromZod };
|
|
433
|
+
return { inferFormSchema, inferFormSchemaFromSamples, inferFormSchemaFromValibot, inferFormSchemaFromZod };
|
|
349
434
|
}
|
|
@@ -12,6 +12,7 @@ export declare const nuxtUIInputs: {
|
|
|
12
12
|
nuxtUIInputDate: import("@formkit/core").FormKitTypeDefinition;
|
|
13
13
|
nuxtUIInputMenu: import("@formkit/core").FormKitTypeDefinition;
|
|
14
14
|
nuxtUIInputNumber: import("@formkit/core").FormKitTypeDefinition;
|
|
15
|
+
nuxtUIInputRating: import("@formkit/core").FormKitTypeDefinition;
|
|
15
16
|
nuxtUIInputTags: import("@formkit/core").FormKitTypeDefinition;
|
|
16
17
|
nuxtUIInputTime: import("@formkit/core").FormKitTypeDefinition;
|
|
17
18
|
nuxtUIListbox: import("@formkit/core").FormKitTypeDefinition;
|
|
@@ -24,6 +25,7 @@ export declare const nuxtUIInputs: {
|
|
|
24
25
|
nuxtUIStep: import("@formkit/core").FormKitTypeDefinition;
|
|
25
26
|
nuxtUISwitch: import("@formkit/core").FormKitTypeDefinition;
|
|
26
27
|
nuxtUITextarea: import("@formkit/core").FormKitTypeDefinition;
|
|
28
|
+
nuxtUITree: import("@formkit/core").FormKitTypeDefinition;
|
|
27
29
|
nuxtUIRepeater: import("@formkit/core").FormKitTypeDefinition;
|
|
28
30
|
};
|
|
29
31
|
export declare const nuxtUIOutputs: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { nuxtUICalendarDefinition, nuxtUICheckboxDefinition, nuxtUICheckboxGroupDefinition, nuxtUIColorPickerDefinition, nuxtUIEditorDefinition, nuxtUIFileUploadDefinition, nuxtUIInputDateDefinition, nuxtUIInputDefinition, nuxtUIInputMenuDefinition, nuxtUIInputNumberDefinition, nuxtUIInputTagsDefinition, nuxtUIInputTimeDefinition, nuxtUIListboxDefinition, nuxtUIPinInputDefinition, nuxtUIRadioGroupDefinition, nuxtUISelectDefinition, nuxtUISelectMenuDefinition, nuxtUISliderDefinition, nuxtUISwitchDefinition, nuxtUITextareaDefinition } from "./input.js";
|
|
1
|
+
import { nuxtUICalendarDefinition, nuxtUICheckboxDefinition, nuxtUICheckboxGroupDefinition, nuxtUIColorPickerDefinition, nuxtUIEditorDefinition, nuxtUIFileUploadDefinition, nuxtUIInputDateDefinition, nuxtUIInputDefinition, nuxtUIInputMenuDefinition, nuxtUIInputNumberDefinition, nuxtUIInputRatingDefinition, nuxtUIInputTagsDefinition, nuxtUIInputTimeDefinition, nuxtUIListboxDefinition, nuxtUIPinInputDefinition, nuxtUIRadioGroupDefinition, nuxtUISelectDefinition, nuxtUISelectMenuDefinition, nuxtUISliderDefinition, nuxtUISwitchDefinition, nuxtUITextareaDefinition, nuxtUITreeDefinition } from "./input.js";
|
|
2
2
|
import { nuxtUIMultiStepDefinition, nuxtUIStepDefinition } from "./multiStep.js";
|
|
3
3
|
import { nuxtUIOutputBooleanDefinition, nuxtUIOutputDateDefinition, nuxtUIOutputLinkDefinition, nuxtUIOutputListDefinition, nuxtUIOutputNumberDefinition, nuxtUIOutputTextDefinition } from "./output.js";
|
|
4
4
|
import { nuxtUIRepeaterDefinition } from "./repeater.js";
|
|
@@ -16,6 +16,7 @@ export const nuxtUIInputs = {
|
|
|
16
16
|
nuxtUIInputDate: nuxtUIInputDateDefinition,
|
|
17
17
|
nuxtUIInputMenu: nuxtUIInputMenuDefinition,
|
|
18
18
|
nuxtUIInputNumber: nuxtUIInputNumberDefinition,
|
|
19
|
+
nuxtUIInputRating: nuxtUIInputRatingDefinition,
|
|
19
20
|
nuxtUIInputTags: nuxtUIInputTagsDefinition,
|
|
20
21
|
nuxtUIInputTime: nuxtUIInputTimeDefinition,
|
|
21
22
|
nuxtUIListbox: nuxtUIListboxDefinition,
|
|
@@ -28,6 +29,7 @@ export const nuxtUIInputs = {
|
|
|
28
29
|
nuxtUIStep: nuxtUIStepDefinition,
|
|
29
30
|
nuxtUISwitch: nuxtUISwitchDefinition,
|
|
30
31
|
nuxtUITextarea: nuxtUITextareaDefinition,
|
|
32
|
+
nuxtUITree: nuxtUITreeDefinition,
|
|
31
33
|
nuxtUIRepeater: nuxtUIRepeaterDefinition
|
|
32
34
|
};
|
|
33
35
|
export const nuxtUIOutputs = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { nuxtUICalendarDefinition, nuxtUICheckboxDefinition, nuxtUICheckboxGroupDefinition, nuxtUIColorPickerDefinition, nuxtUIEditorDefinition, nuxtUIFileUploadDefinition, nuxtUIInputDateDefinition, nuxtUIInputDefinition, nuxtUIInputMenuDefinition, nuxtUIInputNumberDefinition, nuxtUIInputTagsDefinition, nuxtUIInputTimeDefinition, nuxtUIListboxDefinition, nuxtUIPinInputDefinition, nuxtUIRadioGroupDefinition, nuxtUISelectDefinition, nuxtUISelectMenuDefinition, nuxtUISliderDefinition, nuxtUISwitchDefinition, nuxtUITextareaDefinition } from "./input.mjs";
|
|
1
|
+
import { nuxtUICalendarDefinition, nuxtUICheckboxDefinition, nuxtUICheckboxGroupDefinition, nuxtUIColorPickerDefinition, nuxtUIEditorDefinition, nuxtUIFileUploadDefinition, nuxtUIInputDateDefinition, nuxtUIInputDefinition, nuxtUIInputMenuDefinition, nuxtUIInputNumberDefinition, nuxtUIInputRatingDefinition, nuxtUIInputTagsDefinition, nuxtUIInputTimeDefinition, nuxtUIListboxDefinition, nuxtUIPinInputDefinition, nuxtUIRadioGroupDefinition, nuxtUISelectDefinition, nuxtUISelectMenuDefinition, nuxtUISliderDefinition, nuxtUISwitchDefinition, nuxtUITextareaDefinition, nuxtUITreeDefinition } from "./input.mjs";
|
|
2
2
|
import { nuxtUIMultiStepDefinition, nuxtUIStepDefinition } from "./multiStep.mjs";
|
|
3
3
|
import { nuxtUIOutputBooleanDefinition, nuxtUIOutputDateDefinition, nuxtUIOutputLinkDefinition, nuxtUIOutputListDefinition, nuxtUIOutputNumberDefinition, nuxtUIOutputTextDefinition } from "./output.mjs";
|
|
4
4
|
import { nuxtUIRepeaterDefinition } from "./repeater.mjs";
|
|
@@ -16,6 +16,7 @@ export const nuxtUIInputs = {
|
|
|
16
16
|
nuxtUIInputDate: nuxtUIInputDateDefinition,
|
|
17
17
|
nuxtUIInputMenu: nuxtUIInputMenuDefinition,
|
|
18
18
|
nuxtUIInputNumber: nuxtUIInputNumberDefinition,
|
|
19
|
+
nuxtUIInputRating: nuxtUIInputRatingDefinition,
|
|
19
20
|
nuxtUIInputTags: nuxtUIInputTagsDefinition,
|
|
20
21
|
nuxtUIInputTime: nuxtUIInputTimeDefinition,
|
|
21
22
|
nuxtUIListbox: nuxtUIListboxDefinition,
|
|
@@ -28,6 +29,7 @@ export const nuxtUIInputs = {
|
|
|
28
29
|
nuxtUIStep: nuxtUIStepDefinition,
|
|
29
30
|
nuxtUISwitch: nuxtUISwitchDefinition,
|
|
30
31
|
nuxtUITextarea: nuxtUITextareaDefinition,
|
|
32
|
+
nuxtUITree: nuxtUITreeDefinition,
|
|
31
33
|
nuxtUIRepeater: nuxtUIRepeaterDefinition
|
|
32
34
|
};
|
|
33
35
|
export const nuxtUIOutputs = {
|
|
@@ -9,6 +9,7 @@ export declare const nuxtUIInputDefinition: FormKitTypeDefinition;
|
|
|
9
9
|
export declare const nuxtUIInputDateDefinition: FormKitTypeDefinition;
|
|
10
10
|
export declare const nuxtUIInputMenuDefinition: FormKitTypeDefinition;
|
|
11
11
|
export declare const nuxtUIInputNumberDefinition: FormKitTypeDefinition;
|
|
12
|
+
export declare const nuxtUIInputRatingDefinition: FormKitTypeDefinition;
|
|
12
13
|
export declare const nuxtUIInputTagsDefinition: FormKitTypeDefinition;
|
|
13
14
|
export declare const nuxtUIInputTimeDefinition: FormKitTypeDefinition;
|
|
14
15
|
export declare const nuxtUIListboxDefinition: FormKitTypeDefinition;
|
|
@@ -19,3 +20,4 @@ export declare const nuxtUISelectMenuDefinition: FormKitTypeDefinition;
|
|
|
19
20
|
export declare const nuxtUISliderDefinition: FormKitTypeDefinition;
|
|
20
21
|
export declare const nuxtUISwitchDefinition: FormKitTypeDefinition;
|
|
21
22
|
export declare const nuxtUITextareaDefinition: FormKitTypeDefinition;
|
|
23
|
+
export declare const nuxtUITreeDefinition: FormKitTypeDefinition;
|
|
@@ -9,6 +9,7 @@ import FUInput from "../../../runtime/components/inputs/FUInput.vue";
|
|
|
9
9
|
import FUInputDate from "../../../runtime/components/inputs/FUInputDate.vue";
|
|
10
10
|
import FUInputMenu from "../../../runtime/components/inputs/FUInputMenu.vue";
|
|
11
11
|
import FUInputNumber from "../../../runtime/components/inputs/FUInputNumber.vue";
|
|
12
|
+
import FUInputRating from "../../../runtime/components/inputs/FUInputRating.vue";
|
|
12
13
|
import FUInputTags from "../../../runtime/components/inputs/FUInputTags.vue";
|
|
13
14
|
import FUInputTime from "../../../runtime/components/inputs/FUInputTime.vue";
|
|
14
15
|
import FUListbox from "../../../runtime/components/inputs/FUListbox.vue";
|
|
@@ -19,12 +20,13 @@ import FUSelectMenu from "../../../runtime/components/inputs/FUSelectMenu.vue";
|
|
|
19
20
|
import FUSlider from "../../../runtime/components/inputs/FUSlider.vue";
|
|
20
21
|
import FUSwitch from "../../../runtime/components/inputs/FUSwitch.vue";
|
|
21
22
|
import FUTextarea from "../../../runtime/components/inputs/FUTextarea.vue";
|
|
23
|
+
import FUTree from "../../../runtime/components/inputs/FUTree.vue";
|
|
22
24
|
export const nuxtUICalendarDefinition = createInput(FUCalendar, {
|
|
23
25
|
props: ["type", "range", "multiple", "color", "variant", "size", "weekNumbers", "monthControls", "yearControls", "viewControl", "defaultValue", "minValue", "maxValue", "isDateDisabled", "isDateUnavailable", "ui", "valueType", "timeZone"],
|
|
24
26
|
family: "NuxtUIInput"
|
|
25
27
|
});
|
|
26
28
|
export const nuxtUICheckboxDefinition = createInput(FUCheckbox, {
|
|
27
|
-
props: ["label", "description", "color", "variant", "size", "indicator", "icon", "indeterminateIcon", "trueValue", "falseValue", "autofocus", "ui"],
|
|
29
|
+
props: ["label", "description", "color", "variant", "size", "indicator", "icon", "indeterminateIcon", "trueValue", "falseValue", "autofocus", "name", "ui"],
|
|
28
30
|
family: "NuxtUIInput"
|
|
29
31
|
});
|
|
30
32
|
export const nuxtUICheckboxGroupDefinition = createInput(FUCheckboxGroup, {
|
|
@@ -52,13 +54,17 @@ export const nuxtUIInputDateDefinition = createInput(FUInputDate, {
|
|
|
52
54
|
family: "NuxtUIInput"
|
|
53
55
|
});
|
|
54
56
|
export const nuxtUIInputMenuDefinition = createInput(FUInputMenu, {
|
|
55
|
-
props: ["options", "inputType", "placeholder", "color", "variant", "size", "autofocus", "autofocusDelay", "trailingIcon", "selectedIcon", "deleteIcon", "clear", "clearIcon", "arrow", "portal", "virtualize", "content", "mode", "by", "open", "valueKey", "labelKey", "descriptionKey", "multiple", "highlight", "fixed", "createItem", "filterFields", "ignoreFilter", "defaultOpen", "resetSearchTermOnBlur", "resetSearchTermOnSelect", "resetModelValueOnClear", "highlightOnHover", "openOnClick", "openOnFocus", "icon", "leading", "leadingIcon", "trailing", "loading", "loadingIcon", "list", "autocomplete", "searchTerm", "ui"],
|
|
57
|
+
props: ["options", "inputType", "placeholder", "color", "variant", "size", "autofocus", "autofocusDelay", "trailingIcon", "selectedIcon", "deleteIcon", "clear", "clearIcon", "arrow", "portal", "virtualize", "content", "mode", "by", "open", "valueKey", "labelKey", "descriptionKey", "multiple", "highlight", "fixed", "createItem", "filterFields", "ignoreFilter", "defaultOpen", "resetSearchTermOnBlur", "resetSearchTermOnSelect", "resetModelValueOnClear", "highlightOnHover", "openOnClick", "openOnFocus", "icon", "leading", "leadingIcon", "trailing", "loading", "loadingIcon", "list", "autocomplete", "searchTerm", "name", "ui"],
|
|
56
58
|
family: "NuxtUIInput"
|
|
57
59
|
});
|
|
58
60
|
export const nuxtUIInputNumberDefinition = createInput(FUInputNumber, {
|
|
59
61
|
props: ["placeholder", "color", "variant", "size", "highlight", "fixed", "orientation", "increment", "incrementIcon", "incrementDisabled", "decrement", "decrementIcon", "decrementDisabled", "autofocus", "autofocusDelay", "min", "max", "step", "stepSnapping", "formatOptions", "disableWheelChange", "invertWheelChange", "focusOnChange", "locale", "list", "autocomplete", "ui"],
|
|
60
62
|
family: "NuxtUIInput"
|
|
61
63
|
});
|
|
64
|
+
export const nuxtUIInputRatingDefinition = createInput(FUInputRating, {
|
|
65
|
+
props: ["color", "size", "orientation", "icon", "emptyIcon", "readonly", "clearable", "hoverable", "length", "step", "defaultValue", "name", "ui"],
|
|
66
|
+
family: "NuxtUIInput"
|
|
67
|
+
});
|
|
62
68
|
export const nuxtUIInputTagsDefinition = createInput(FUInputTags, {
|
|
63
69
|
props: ["placeholder", "maxLength", "color", "variant", "size", "autofocus", "autofocusDelay", "deleteIcon", "highlight", "fixed", "addOnPaste", "addOnTab", "addOnBlur", "duplicate", "delimiter", "max", "convertValue", "displayValue", "icon", "avatar", "leading", "leadingIcon", "trailing", "trailingIcon", "loading", "loadingIcon", "list", "autocomplete", "ui"],
|
|
64
70
|
family: "NuxtUIInput"
|
|
@@ -68,11 +74,11 @@ export const nuxtUIInputTimeDefinition = createInput(FUInputTime, {
|
|
|
68
74
|
family: "NuxtUIInput"
|
|
69
75
|
});
|
|
70
76
|
export const nuxtUIListboxDefinition = createInput(FUListbox, {
|
|
71
|
-
props: ["options", "as", "color", "size", "by", "orientation", "selectionBehavior", "disabled", "defaultValue", "multiple", "valueKey", "labelKey", "descriptionKey", "loading", "loadingIcon", "filter", "filterFields", "ignoreFilter", "selectedIcon", "virtualize", "highlight", "highlightOnHover", "autofocus", "autofocusDelay", "searchTerm", "ui", "displayMode", "transferLeftHeaderText", "transferRightHeaderText", "transferAll", "transferHeaderClass", "transferSortIcons", "transferItemDraggable"],
|
|
77
|
+
props: ["options", "as", "color", "size", "by", "orientation", "selectionBehavior", "disabled", "defaultValue", "multiple", "valueKey", "labelKey", "descriptionKey", "loading", "loadingIcon", "filter", "filterFields", "ignoreFilter", "selectedIcon", "virtualize", "highlight", "highlightOnHover", "autofocus", "autofocusDelay", "searchTerm", "name", "ui", "displayMode", "transferLeftHeaderText", "transferRightHeaderText", "transferAll", "transferHeaderClass", "transferSortIcons", "transferItemDraggable"],
|
|
72
78
|
family: "NuxtUIInput"
|
|
73
79
|
});
|
|
74
80
|
export const nuxtUIPinInputDefinition = createInput(FUPinInput, {
|
|
75
|
-
props: ["color", "variant", "size", "length", "autofocus", "autofocusDelay", "highlight", "fixed", "defaultValue", "mask", "otp", "separator", "type", "placeholder", "ui"],
|
|
81
|
+
props: ["color", "variant", "size", "length", "autofocus", "autofocusDelay", "highlight", "fixed", "defaultValue", "mask", "otp", "separator", "type", "placeholder", "name", "ui"],
|
|
76
82
|
family: "NuxtUIInput"
|
|
77
83
|
});
|
|
78
84
|
export const nuxtUIRadioGroupDefinition = createInput(FURadioGroup, {
|
|
@@ -80,11 +86,11 @@ export const nuxtUIRadioGroupDefinition = createInput(FURadioGroup, {
|
|
|
80
86
|
family: "NuxtUIInput"
|
|
81
87
|
});
|
|
82
88
|
export const nuxtUISelectDefinition = createInput(FUSelect, {
|
|
83
|
-
props: ["options", "placeholder", "color", "variant", "size", "selectedIcon", "arrow", "portal", "content", "valueKey", "labelKey", "descriptionKey", "defaultValue", "multiple", "highlight", "fixed", "autofocus", "autofocusDelay", "open", "defaultOpen", "autocomplete", "icon", "avatar", "leading", "leadingIcon", "trailing", "trailingIcon", "loading", "loadingIcon", "ui"],
|
|
89
|
+
props: ["options", "placeholder", "color", "variant", "size", "selectedIcon", "arrow", "portal", "content", "valueKey", "labelKey", "descriptionKey", "defaultValue", "multiple", "highlight", "fixed", "autofocus", "autofocusDelay", "open", "defaultOpen", "autocomplete", "icon", "avatar", "leading", "leadingIcon", "trailing", "trailingIcon", "loading", "loadingIcon", "name", "ui"],
|
|
84
90
|
family: "NuxtUIInput"
|
|
85
91
|
});
|
|
86
92
|
export const nuxtUISelectMenuDefinition = createInput(FUSelectMenu, {
|
|
87
|
-
props: ["options", "placeholder", "searchInput", "color", "variant", "size", "icon", "avatar", "leading", "leadingIcon", "trailing", "trailingIcon", "loading", "loadingIcon", "selectedIcon", "clear", "clearIcon", "arrow", "portal", "virtualize", "content", "by", "valueKey", "labelKey", "descriptionKey", "defaultValue", "multiple", "highlight", "fixed", "createItem", "filterFields", "ignoreFilter", "autofocus", "autofocusDelay", "open", "defaultOpen", "resetSearchTermOnBlur", "resetSearchTermOnSelect", "resetModelValueOnClear", "highlightOnHover", "searchTerm", "ui"],
|
|
93
|
+
props: ["options", "placeholder", "searchInput", "color", "variant", "size", "icon", "avatar", "leading", "leadingIcon", "trailing", "trailingIcon", "loading", "loadingIcon", "selectedIcon", "clear", "clearIcon", "arrow", "portal", "virtualize", "content", "by", "valueKey", "labelKey", "descriptionKey", "defaultValue", "multiple", "highlight", "fixed", "createItem", "filterFields", "ignoreFilter", "autofocus", "autofocusDelay", "open", "defaultOpen", "resetSearchTermOnBlur", "resetSearchTermOnSelect", "resetModelValueOnClear", "highlightOnHover", "searchTerm", "name", "ui"],
|
|
88
94
|
family: "NuxtUIInput"
|
|
89
95
|
});
|
|
90
96
|
export const nuxtUISliderDefinition = createInput(FUSlider, {
|
|
@@ -92,10 +98,14 @@ export const nuxtUISliderDefinition = createInput(FUSlider, {
|
|
|
92
98
|
family: "NuxtUIInput"
|
|
93
99
|
});
|
|
94
100
|
export const nuxtUISwitchDefinition = createInput(FUSwitch, {
|
|
95
|
-
props: ["color", "size", "loading", "loadingIcon", "checkedIcon", "uncheckedIcon", "label", "description", "defaultValue", "trueValue", "falseValue", "autofocus", "ui"],
|
|
101
|
+
props: ["color", "size", "loading", "loadingIcon", "checkedIcon", "uncheckedIcon", "label", "description", "defaultValue", "trueValue", "falseValue", "autofocus", "name", "ui"],
|
|
96
102
|
family: "NuxtUIInput"
|
|
97
103
|
});
|
|
98
104
|
export const nuxtUITextareaDefinition = createInput(FUTextarea, {
|
|
99
105
|
props: ["color", "size", "variant", "placeholder", "autofocus", "autofocusDelay", "autoresize", "autoresizeDelay", "rows", "maxrows", "highlight", "fixed", "icon", "avatar", "leading", "leadingIcon", "trailing", "trailingIcon", "loading", "loadingIcon", "cols", "dirname", "maxlength", "minlength", "wrap", "ui"],
|
|
100
106
|
family: "NuxtUIInput"
|
|
101
107
|
});
|
|
108
|
+
export const nuxtUITreeDefinition = createInput(FUTree, {
|
|
109
|
+
props: ["color", "size", "disabled", "multiple", "nested", "virtualize", "labelKey", "trailingIcon", "expandedIcon", "collapsedIcon", "expanded", "defaultExpanded", "selectionBehavior", "propagateSelect", "bubbleSelect", "ui", "items", "options"],
|
|
110
|
+
family: "NuxtUIInput"
|
|
111
|
+
});
|
|
@@ -9,6 +9,7 @@ import FUInput from "../../../runtime/components/inputs/FUInput.vue";
|
|
|
9
9
|
import FUInputDate from "../../../runtime/components/inputs/FUInputDate.vue";
|
|
10
10
|
import FUInputMenu from "../../../runtime/components/inputs/FUInputMenu.vue";
|
|
11
11
|
import FUInputNumber from "../../../runtime/components/inputs/FUInputNumber.vue";
|
|
12
|
+
import FUInputRating from "../../../runtime/components/inputs/FUInputRating.vue";
|
|
12
13
|
import FUInputTags from "../../../runtime/components/inputs/FUInputTags.vue";
|
|
13
14
|
import FUInputTime from "../../../runtime/components/inputs/FUInputTime.vue";
|
|
14
15
|
import FUListbox from "../../../runtime/components/inputs/FUListbox.vue";
|
|
@@ -19,12 +20,13 @@ import FUSelectMenu from "../../../runtime/components/inputs/FUSelectMenu.vue";
|
|
|
19
20
|
import FUSlider from "../../../runtime/components/inputs/FUSlider.vue";
|
|
20
21
|
import FUSwitch from "../../../runtime/components/inputs/FUSwitch.vue";
|
|
21
22
|
import FUTextarea from "../../../runtime/components/inputs/FUTextarea.vue";
|
|
23
|
+
import FUTree from "../../../runtime/components/inputs/FUTree.vue";
|
|
22
24
|
export const nuxtUICalendarDefinition = createInput(FUCalendar, {
|
|
23
25
|
props: ["type", "range", "multiple", "color", "variant", "size", "weekNumbers", "monthControls", "yearControls", "viewControl", "defaultValue", "minValue", "maxValue", "isDateDisabled", "isDateUnavailable", "ui", "valueType", "timeZone"],
|
|
24
26
|
family: "NuxtUIInput"
|
|
25
27
|
});
|
|
26
28
|
export const nuxtUICheckboxDefinition = createInput(FUCheckbox, {
|
|
27
|
-
props: ["label", "description", "color", "variant", "size", "indicator", "icon", "indeterminateIcon", "trueValue", "falseValue", "autofocus", "ui"],
|
|
29
|
+
props: ["label", "description", "color", "variant", "size", "indicator", "icon", "indeterminateIcon", "trueValue", "falseValue", "autofocus", "name", "ui"],
|
|
28
30
|
family: "NuxtUIInput"
|
|
29
31
|
});
|
|
30
32
|
export const nuxtUICheckboxGroupDefinition = createInput(FUCheckboxGroup, {
|
|
@@ -52,13 +54,17 @@ export const nuxtUIInputDateDefinition = createInput(FUInputDate, {
|
|
|
52
54
|
family: "NuxtUIInput"
|
|
53
55
|
});
|
|
54
56
|
export const nuxtUIInputMenuDefinition = createInput(FUInputMenu, {
|
|
55
|
-
props: ["options", "inputType", "placeholder", "color", "variant", "size", "autofocus", "autofocusDelay", "trailingIcon", "selectedIcon", "deleteIcon", "clear", "clearIcon", "arrow", "portal", "virtualize", "content", "mode", "by", "open", "valueKey", "labelKey", "descriptionKey", "multiple", "highlight", "fixed", "createItem", "filterFields", "ignoreFilter", "defaultOpen", "resetSearchTermOnBlur", "resetSearchTermOnSelect", "resetModelValueOnClear", "highlightOnHover", "openOnClick", "openOnFocus", "icon", "leading", "leadingIcon", "trailing", "loading", "loadingIcon", "list", "autocomplete", "searchTerm", "ui"],
|
|
57
|
+
props: ["options", "inputType", "placeholder", "color", "variant", "size", "autofocus", "autofocusDelay", "trailingIcon", "selectedIcon", "deleteIcon", "clear", "clearIcon", "arrow", "portal", "virtualize", "content", "mode", "by", "open", "valueKey", "labelKey", "descriptionKey", "multiple", "highlight", "fixed", "createItem", "filterFields", "ignoreFilter", "defaultOpen", "resetSearchTermOnBlur", "resetSearchTermOnSelect", "resetModelValueOnClear", "highlightOnHover", "openOnClick", "openOnFocus", "icon", "leading", "leadingIcon", "trailing", "loading", "loadingIcon", "list", "autocomplete", "searchTerm", "name", "ui"],
|
|
56
58
|
family: "NuxtUIInput"
|
|
57
59
|
});
|
|
58
60
|
export const nuxtUIInputNumberDefinition = createInput(FUInputNumber, {
|
|
59
61
|
props: ["placeholder", "color", "variant", "size", "highlight", "fixed", "orientation", "increment", "incrementIcon", "incrementDisabled", "decrement", "decrementIcon", "decrementDisabled", "autofocus", "autofocusDelay", "min", "max", "step", "stepSnapping", "formatOptions", "disableWheelChange", "invertWheelChange", "focusOnChange", "locale", "list", "autocomplete", "ui"],
|
|
60
62
|
family: "NuxtUIInput"
|
|
61
63
|
});
|
|
64
|
+
export const nuxtUIInputRatingDefinition = createInput(FUInputRating, {
|
|
65
|
+
props: ["color", "size", "orientation", "icon", "emptyIcon", "readonly", "clearable", "hoverable", "length", "step", "defaultValue", "name", "ui"],
|
|
66
|
+
family: "NuxtUIInput"
|
|
67
|
+
});
|
|
62
68
|
export const nuxtUIInputTagsDefinition = createInput(FUInputTags, {
|
|
63
69
|
props: ["placeholder", "maxLength", "color", "variant", "size", "autofocus", "autofocusDelay", "deleteIcon", "highlight", "fixed", "addOnPaste", "addOnTab", "addOnBlur", "duplicate", "delimiter", "max", "convertValue", "displayValue", "icon", "avatar", "leading", "leadingIcon", "trailing", "trailingIcon", "loading", "loadingIcon", "list", "autocomplete", "ui"],
|
|
64
70
|
family: "NuxtUIInput"
|
|
@@ -68,11 +74,11 @@ export const nuxtUIInputTimeDefinition = createInput(FUInputTime, {
|
|
|
68
74
|
family: "NuxtUIInput"
|
|
69
75
|
});
|
|
70
76
|
export const nuxtUIListboxDefinition = createInput(FUListbox, {
|
|
71
|
-
props: ["options", "as", "color", "size", "by", "orientation", "selectionBehavior", "disabled", "defaultValue", "multiple", "valueKey", "labelKey", "descriptionKey", "loading", "loadingIcon", "filter", "filterFields", "ignoreFilter", "selectedIcon", "virtualize", "highlight", "highlightOnHover", "autofocus", "autofocusDelay", "searchTerm", "ui", "displayMode", "transferLeftHeaderText", "transferRightHeaderText", "transferAll", "transferHeaderClass", "transferSortIcons", "transferItemDraggable"],
|
|
77
|
+
props: ["options", "as", "color", "size", "by", "orientation", "selectionBehavior", "disabled", "defaultValue", "multiple", "valueKey", "labelKey", "descriptionKey", "loading", "loadingIcon", "filter", "filterFields", "ignoreFilter", "selectedIcon", "virtualize", "highlight", "highlightOnHover", "autofocus", "autofocusDelay", "searchTerm", "name", "ui", "displayMode", "transferLeftHeaderText", "transferRightHeaderText", "transferAll", "transferHeaderClass", "transferSortIcons", "transferItemDraggable"],
|
|
72
78
|
family: "NuxtUIInput"
|
|
73
79
|
});
|
|
74
80
|
export const nuxtUIPinInputDefinition = createInput(FUPinInput, {
|
|
75
|
-
props: ["color", "variant", "size", "length", "autofocus", "autofocusDelay", "highlight", "fixed", "defaultValue", "mask", "otp", "separator", "type", "placeholder", "ui"],
|
|
81
|
+
props: ["color", "variant", "size", "length", "autofocus", "autofocusDelay", "highlight", "fixed", "defaultValue", "mask", "otp", "separator", "type", "placeholder", "name", "ui"],
|
|
76
82
|
family: "NuxtUIInput"
|
|
77
83
|
});
|
|
78
84
|
export const nuxtUIRadioGroupDefinition = createInput(FURadioGroup, {
|
|
@@ -80,11 +86,11 @@ export const nuxtUIRadioGroupDefinition = createInput(FURadioGroup, {
|
|
|
80
86
|
family: "NuxtUIInput"
|
|
81
87
|
});
|
|
82
88
|
export const nuxtUISelectDefinition = createInput(FUSelect, {
|
|
83
|
-
props: ["options", "placeholder", "color", "variant", "size", "selectedIcon", "arrow", "portal", "content", "valueKey", "labelKey", "descriptionKey", "defaultValue", "multiple", "highlight", "fixed", "autofocus", "autofocusDelay", "open", "defaultOpen", "autocomplete", "icon", "avatar", "leading", "leadingIcon", "trailing", "trailingIcon", "loading", "loadingIcon", "ui"],
|
|
89
|
+
props: ["options", "placeholder", "color", "variant", "size", "selectedIcon", "arrow", "portal", "content", "valueKey", "labelKey", "descriptionKey", "defaultValue", "multiple", "highlight", "fixed", "autofocus", "autofocusDelay", "open", "defaultOpen", "autocomplete", "icon", "avatar", "leading", "leadingIcon", "trailing", "trailingIcon", "loading", "loadingIcon", "name", "ui"],
|
|
84
90
|
family: "NuxtUIInput"
|
|
85
91
|
});
|
|
86
92
|
export const nuxtUISelectMenuDefinition = createInput(FUSelectMenu, {
|
|
87
|
-
props: ["options", "placeholder", "searchInput", "color", "variant", "size", "icon", "avatar", "leading", "leadingIcon", "trailing", "trailingIcon", "loading", "loadingIcon", "selectedIcon", "clear", "clearIcon", "arrow", "portal", "virtualize", "content", "by", "valueKey", "labelKey", "descriptionKey", "defaultValue", "multiple", "highlight", "fixed", "createItem", "filterFields", "ignoreFilter", "autofocus", "autofocusDelay", "open", "defaultOpen", "resetSearchTermOnBlur", "resetSearchTermOnSelect", "resetModelValueOnClear", "highlightOnHover", "searchTerm", "ui"],
|
|
93
|
+
props: ["options", "placeholder", "searchInput", "color", "variant", "size", "icon", "avatar", "leading", "leadingIcon", "trailing", "trailingIcon", "loading", "loadingIcon", "selectedIcon", "clear", "clearIcon", "arrow", "portal", "virtualize", "content", "by", "valueKey", "labelKey", "descriptionKey", "defaultValue", "multiple", "highlight", "fixed", "createItem", "filterFields", "ignoreFilter", "autofocus", "autofocusDelay", "open", "defaultOpen", "resetSearchTermOnBlur", "resetSearchTermOnSelect", "resetModelValueOnClear", "highlightOnHover", "searchTerm", "name", "ui"],
|
|
88
94
|
family: "NuxtUIInput"
|
|
89
95
|
});
|
|
90
96
|
export const nuxtUISliderDefinition = createInput(FUSlider, {
|
|
@@ -92,10 +98,14 @@ export const nuxtUISliderDefinition = createInput(FUSlider, {
|
|
|
92
98
|
family: "NuxtUIInput"
|
|
93
99
|
});
|
|
94
100
|
export const nuxtUISwitchDefinition = createInput(FUSwitch, {
|
|
95
|
-
props: ["color", "size", "loading", "loadingIcon", "checkedIcon", "uncheckedIcon", "label", "description", "defaultValue", "trueValue", "falseValue", "autofocus", "ui"],
|
|
101
|
+
props: ["color", "size", "loading", "loadingIcon", "checkedIcon", "uncheckedIcon", "label", "description", "defaultValue", "trueValue", "falseValue", "autofocus", "name", "ui"],
|
|
96
102
|
family: "NuxtUIInput"
|
|
97
103
|
});
|
|
98
104
|
export const nuxtUITextareaDefinition = createInput(FUTextarea, {
|
|
99
105
|
props: ["color", "size", "variant", "placeholder", "autofocus", "autofocusDelay", "autoresize", "autoresizeDelay", "rows", "maxrows", "highlight", "fixed", "icon", "avatar", "leading", "leadingIcon", "trailing", "trailingIcon", "loading", "loadingIcon", "cols", "dirname", "maxlength", "minlength", "wrap", "ui"],
|
|
100
106
|
family: "NuxtUIInput"
|
|
101
107
|
});
|
|
108
|
+
export const nuxtUITreeDefinition = createInput(FUTree, {
|
|
109
|
+
props: ["color", "size", "disabled", "multiple", "nested", "virtualize", "labelKey", "trailingIcon", "expandedIcon", "collapsedIcon", "expanded", "defaultExpanded", "selectionBehavior", "propagateSelect", "bubbleSelect", "ui", "items", "options"],
|
|
110
|
+
family: "NuxtUIInput"
|
|
111
|
+
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { disablesChildren } from "@formkit/inputs";
|
|
1
|
+
import { disablesChildren, localize } from "@formkit/inputs";
|
|
2
2
|
import { createInput } from "@formkit/vue";
|
|
3
3
|
import { useFormKitMultiStep } from "../../composables/useFormKitMultiStep.js";
|
|
4
4
|
import { useFormKitSchema } from "../../composables/useFormKitSchema.js";
|
|
@@ -14,14 +14,14 @@ export const nuxtUIStepDefinition = createInput(
|
|
|
14
14
|
addElement("div", "$slots.default", { class: "formkit-step-inner" }),
|
|
15
15
|
addElement("div", [
|
|
16
16
|
addStepActionButton(
|
|
17
|
-
{ if: "$previousLabel", then: "$previousLabel", else: "
|
|
17
|
+
{ if: "$previousLabel", then: "$previousLabel", else: "$ui.prev.value" },
|
|
18
18
|
"$handlers.previous",
|
|
19
19
|
"$previousAttrs",
|
|
20
20
|
"$isFirstStep === false",
|
|
21
21
|
"outline"
|
|
22
22
|
),
|
|
23
23
|
addStepActionButton(
|
|
24
|
-
{ if: "$nextLabel", then: "$nextLabel", else: "
|
|
24
|
+
{ if: "$nextLabel", then: "$nextLabel", else: "$ui.next.value" },
|
|
25
25
|
"$handlers.next",
|
|
26
26
|
"$nextAttrs",
|
|
27
27
|
"$isLastStep === false || $stepIndex === 0",
|
|
@@ -42,7 +42,11 @@ export const nuxtUIStepDefinition = createInput(
|
|
|
42
42
|
forceTypeProp: "step",
|
|
43
43
|
family: "NuxtUIInput",
|
|
44
44
|
props: ["beforeStepChange", "nextAttrs", "nextLabel", "previousAttrs", "previousLabel", "validStepIcon", "ui", "stepActionsClass"],
|
|
45
|
-
|
|
45
|
+
// `localize('next')`/`localize('prev')` seed the `node.store` "ui" messages
|
|
46
|
+
// that `$ui.next.value`/`$ui.prev.value` (in the schema above) read - without
|
|
47
|
+
// them the schema expression resolves to nothing. Matches `@formkit/addons`'
|
|
48
|
+
// own `step` input definition, which includes the same two features.
|
|
49
|
+
features: [disablesChildren, addStepHandler, localize("next"), localize("prev")]
|
|
46
50
|
},
|
|
47
51
|
{
|
|
48
52
|
// `createInput()` always wraps the given schema in FormKit's standard
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { disablesChildren } from "@formkit/inputs";
|
|
1
|
+
import { disablesChildren, localize } from "@formkit/inputs";
|
|
2
2
|
import { createInput } from "@formkit/vue";
|
|
3
3
|
import { useFormKitMultiStep } from "../../composables/useFormKitMultiStep";
|
|
4
4
|
import { useFormKitSchema } from "../../composables/useFormKitSchema";
|
|
@@ -14,14 +14,14 @@ export const nuxtUIStepDefinition = createInput(
|
|
|
14
14
|
addElement("div", "$slots.default", { class: "formkit-step-inner" }),
|
|
15
15
|
addElement("div", [
|
|
16
16
|
addStepActionButton(
|
|
17
|
-
{ if: "$previousLabel", then: "$previousLabel", else: "
|
|
17
|
+
{ if: "$previousLabel", then: "$previousLabel", else: "$ui.prev.value" },
|
|
18
18
|
"$handlers.previous",
|
|
19
19
|
"$previousAttrs",
|
|
20
20
|
"$isFirstStep === false",
|
|
21
21
|
"outline"
|
|
22
22
|
),
|
|
23
23
|
addStepActionButton(
|
|
24
|
-
{ if: "$nextLabel", then: "$nextLabel", else: "
|
|
24
|
+
{ if: "$nextLabel", then: "$nextLabel", else: "$ui.next.value" },
|
|
25
25
|
"$handlers.next",
|
|
26
26
|
"$nextAttrs",
|
|
27
27
|
"$isLastStep === false || $stepIndex === 0",
|
|
@@ -42,7 +42,11 @@ export const nuxtUIStepDefinition = createInput(
|
|
|
42
42
|
forceTypeProp: "step",
|
|
43
43
|
family: "NuxtUIInput",
|
|
44
44
|
props: ["beforeStepChange", "nextAttrs", "nextLabel", "previousAttrs", "previousLabel", "validStepIcon", "ui", "stepActionsClass"],
|
|
45
|
-
|
|
45
|
+
// `localize('next')`/`localize('prev')` seed the `node.store` "ui" messages
|
|
46
|
+
// that `$ui.next.value`/`$ui.prev.value` (in the schema above) read - without
|
|
47
|
+
// them the schema expression resolves to nothing. Matches `@formkit/addons`'
|
|
48
|
+
// own `step` input definition, which includes the same two features.
|
|
49
|
+
features: [disablesChildren, addStepHandler, localize("next"), localize("prev")]
|
|
46
50
|
},
|
|
47
51
|
{
|
|
48
52
|
// `createInput()` always wraps the given schema in FormKit's standard
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { FormKitMultiStepSlots, FormKitStepSlots } from '@formkit/addons';
|
|
2
2
|
import type { FormKitBaseSlots, FormKitInputs } from '@formkit/inputs';
|
|
3
|
-
import type { CalendarSlots, CheckboxSlots, CheckboxGroupSlots, EditorSlots, FileUploadSlots, RadioGroupSlots, InputSlots, TextareaSlots, SelectSlots, SelectMenuSlots, InputDateSlots, InputMenuSlots, InputNumberSlots, InputTagsSlots, InputTimeSlots, ListboxSlots, PinInputSlots, SwitchSlots } from '@nuxt/ui';
|
|
3
|
+
import type { CalendarSlots, CheckboxSlots, CheckboxGroupSlots, EditorSlots, FileUploadSlots, RadioGroupSlots, InputSlots, TextareaSlots, SelectSlots, SelectMenuSlots, InputDateSlots, InputMenuSlots, InputNumberSlots, InputRatingSlots, InputTagsSlots, InputTimeSlots, ListboxSlots, PinInputSlots, SwitchSlots, TreeSlots } from '@nuxt/ui';
|
|
4
4
|
export * from './createNuxtUiFormkitConfig.js';
|
|
5
5
|
export * from './definitions/index.js';
|
|
6
6
|
export * from './plugins/index.js';
|
|
@@ -40,6 +40,9 @@ declare module '@formkit/inputs' {
|
|
|
40
40
|
nuxtUIInputNumber: {
|
|
41
41
|
type: 'nuxtUIInputNumber';
|
|
42
42
|
};
|
|
43
|
+
nuxtUIInputRating: {
|
|
44
|
+
type: 'nuxtUIInputRating';
|
|
45
|
+
};
|
|
43
46
|
nuxtUIInputTags: {
|
|
44
47
|
type: 'nuxtUIInputTags';
|
|
45
48
|
};
|
|
@@ -79,6 +82,9 @@ declare module '@formkit/inputs' {
|
|
|
79
82
|
nuxtUITextarea: {
|
|
80
83
|
type: 'nuxtUITextarea';
|
|
81
84
|
};
|
|
85
|
+
nuxtUITree: {
|
|
86
|
+
type: 'nuxtUITree';
|
|
87
|
+
};
|
|
82
88
|
nuxtUIOutputText: {
|
|
83
89
|
type: 'nuxtUIOutputText';
|
|
84
90
|
};
|
|
@@ -108,6 +114,7 @@ declare module '@formkit/inputs' {
|
|
|
108
114
|
nuxtUIInputDate: MergeSlots<FormKitBaseSlots<Props>, InputDateSlots>;
|
|
109
115
|
nuxtUIInputMenu: MergeSlots<FormKitBaseSlots<Props>, InputMenuSlots>;
|
|
110
116
|
nuxtUIInputNumber: MergeSlots<FormKitBaseSlots<Props>, InputNumberSlots>;
|
|
117
|
+
nuxtUIInputRating: MergeSlots<FormKitBaseSlots<Props>, InputRatingSlots>;
|
|
111
118
|
nuxtUIInputTags: MergeSlots<FormKitBaseSlots<Props>, InputTagsSlots>;
|
|
112
119
|
nuxtUIInputTime: MergeSlots<FormKitBaseSlots<Props>, InputTimeSlots>;
|
|
113
120
|
nuxtUIListbox: MergeSlots<FormKitBaseSlots<Props>, ListboxSlots>;
|
|
@@ -120,5 +127,6 @@ declare module '@formkit/inputs' {
|
|
|
120
127
|
nuxtUIStep: MergeSlots<FormKitBaseSlots<Props>, FormKitStepSlots<Props>>;
|
|
121
128
|
nuxtUISwitch: MergeSlots<FormKitBaseSlots<Props>, SwitchSlots>;
|
|
122
129
|
nuxtUITextarea: MergeSlots<FormKitBaseSlots<Props>, TextareaSlots>;
|
|
130
|
+
nuxtUITree: MergeSlots<FormKitBaseSlots<Props>, TreeSlots>;
|
|
123
131
|
}
|
|
124
132
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sfxcode/nuxt-ui-formkit",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.7",
|
|
4
4
|
"description": "FormKit integration for Nuxt UI - Seamlessly connect FormKit form handling with Nuxt UI components",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Tom",
|
|
@@ -91,9 +91,9 @@
|
|
|
91
91
|
"@formkit/addons": "^2.1.0",
|
|
92
92
|
"@formkit/nuxt": "^2.1.0",
|
|
93
93
|
"@nuxt/kit": "4.4.8",
|
|
94
|
-
"@nuxt/ui": "^4.
|
|
94
|
+
"@nuxt/ui": "^4.10.0",
|
|
95
95
|
"@standard-schema/spec": "^1.1.0",
|
|
96
|
-
"@vue/compiler-dom": "^3.5.
|
|
96
|
+
"@vue/compiler-dom": "^3.5.40"
|
|
97
97
|
},
|
|
98
98
|
"devDependencies": {
|
|
99
99
|
"@codemirror/lang-json": "^6.0.2",
|
|
@@ -101,19 +101,19 @@
|
|
|
101
101
|
"@codemirror/theme-one-dark": "^6.1.3",
|
|
102
102
|
"@codemirror/view": "^6.43.6",
|
|
103
103
|
"@iconify-json/heroicons": "^1.2.3",
|
|
104
|
-
"@iconify-json/lucide": "^1.2.
|
|
105
|
-
"@iconify-json/simple-icons": "^1.2.
|
|
104
|
+
"@iconify-json/lucide": "^1.2.117",
|
|
105
|
+
"@iconify-json/simple-icons": "^1.2.90",
|
|
106
106
|
"@nuxt/devtools": "4.0.0-alpha.7",
|
|
107
107
|
"@nuxt/eslint-config": "^1.16.0",
|
|
108
108
|
"@nuxt/module-builder": "^1.0.2",
|
|
109
109
|
"@nuxt/schema": "4.4.8",
|
|
110
110
|
"@nuxt/test-utils": "^4.0.3",
|
|
111
111
|
"@types/node": "latest",
|
|
112
|
-
"@vitejs/plugin-vue": "^6.0.
|
|
112
|
+
"@vitejs/plugin-vue": "^6.0.8",
|
|
113
113
|
"@vue/test-utils": "^2.4.11",
|
|
114
114
|
"changelogen": "^0.6.2",
|
|
115
115
|
"codemirror": "^6.0.2",
|
|
116
|
-
"eslint": "^10.
|
|
116
|
+
"eslint": "^10.7.0",
|
|
117
117
|
"jsdom": "^29.1.1",
|
|
118
118
|
"mkdist": "^2.4.1",
|
|
119
119
|
"nuxt": "4.4.8",
|
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
"valibot": "^1.4.2",
|
|
124
124
|
"vitepress": "2.0.0-alpha.17",
|
|
125
125
|
"vitest": "^4.1.10",
|
|
126
|
-
"vue": "^3.5.
|
|
126
|
+
"vue": "^3.5.40",
|
|
127
127
|
"vue-i18n": "^11.4.6",
|
|
128
128
|
"vue-tsc": "^3.3.7",
|
|
129
129
|
"zod": "^4.4.3"
|