@lehnihon/bit-form 2.2.1 → 2.2.3
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/angular/index.cjs +1 -1
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.d.cts +31 -38
- package/dist/angular/index.d.ts +31 -38
- package/dist/angular/index.js +1 -1
- package/dist/angular/index.js.map +1 -1
- package/dist/{bus-B3pGaiFZ.d.cts → bus-CILR-ENq.d.cts} +5 -26
- package/dist/{bus-B3pGaiFZ.d.ts → bus-DHQHDwUp.d.ts} +5 -26
- package/dist/chunk-3MUULXXZ.js +2 -0
- package/dist/chunk-3MUULXXZ.js.map +1 -0
- package/dist/chunk-7MBRAKBL.js +2 -0
- package/dist/chunk-7MBRAKBL.js.map +1 -0
- package/dist/chunk-ER2DNS7T.cjs +2 -0
- package/dist/chunk-ER2DNS7T.cjs.map +1 -0
- package/dist/chunk-FEW3ABPD.js +2 -0
- package/dist/chunk-FEW3ABPD.js.map +1 -0
- package/dist/chunk-JO37BU2C.cjs +2 -0
- package/dist/chunk-JO37BU2C.cjs.map +1 -0
- package/dist/chunk-NNKZFXEK.cjs +2 -0
- package/dist/chunk-NNKZFXEK.cjs.map +1 -0
- package/dist/chunk-PA6T2CBR.cjs +2 -0
- package/dist/chunk-PA6T2CBR.cjs.map +1 -0
- package/dist/chunk-T3XN5O7V.cjs +2 -0
- package/dist/chunk-T3XN5O7V.cjs.map +1 -0
- package/dist/chunk-ULC4OPIQ.js +2 -0
- package/dist/chunk-ULC4OPIQ.js.map +1 -0
- package/dist/chunk-VDWCFNA6.js +2 -0
- package/dist/chunk-VDWCFNA6.js.map +1 -0
- package/dist/cli/index.cjs +3 -3
- package/dist/devtools/bridge.cjs +1 -1
- package/dist/devtools/bridge.cjs.map +1 -1
- package/dist/devtools/bridge.js +1 -1
- package/dist/devtools/bridge.js.map +1 -1
- package/dist/devtools/index.cjs +132 -1
- package/dist/devtools/index.cjs.map +1 -1
- package/dist/devtools/index.js +132 -1
- package/dist/devtools/index.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +170 -99
- package/dist/index.d.ts +170 -99
- package/dist/index.js +1 -1
- package/dist/mask.cjs +2 -0
- package/dist/mask.cjs.map +1 -0
- package/dist/mask.d.cts +86 -0
- package/dist/mask.d.ts +86 -0
- package/dist/mask.js +2 -0
- package/dist/mask.js.map +1 -0
- package/dist/{public-types-Lq3eLstW.d.ts → public-types-Bgws0aVJ.d.ts} +14 -19
- package/dist/{public-types-CtYuIAMP.d.cts → public-types-SU17BarA.d.cts} +14 -19
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +6 -5
- package/dist/react/index.d.ts +6 -5
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react-native/index.cjs +1 -1
- package/dist/react-native/index.cjs.map +1 -1
- package/dist/react-native/index.d.cts +5 -4
- package/dist/react-native/index.d.ts +5 -4
- package/dist/react-native/index.js +1 -1
- package/dist/react-native/index.js.map +1 -1
- package/dist/resolvers/joi.cjs +1 -1
- package/dist/resolvers/joi.cjs.map +1 -1
- package/dist/resolvers/joi.d.cts +4 -4
- package/dist/resolvers/joi.d.ts +4 -4
- package/dist/resolvers/joi.js +1 -1
- package/dist/resolvers/joi.js.map +1 -1
- package/dist/resolvers/types.cjs +1 -0
- package/dist/resolvers/types.cjs.map +1 -0
- package/dist/resolvers/types.d.cts +16 -0
- package/dist/resolvers/types.d.ts +16 -0
- package/dist/resolvers/types.js +1 -0
- package/dist/resolvers/types.js.map +1 -0
- package/dist/resolvers/yup.cjs +1 -1
- package/dist/resolvers/yup.cjs.map +1 -1
- package/dist/resolvers/yup.d.cts +4 -4
- package/dist/resolvers/yup.d.ts +4 -4
- package/dist/resolvers/yup.js +1 -1
- package/dist/resolvers/yup.js.map +1 -1
- package/dist/resolvers/zod.cjs +1 -1
- package/dist/resolvers/zod.cjs.map +1 -1
- package/dist/resolvers/zod.d.cts +4 -4
- package/dist/resolvers/zod.d.ts +4 -4
- package/dist/resolvers/zod.js +1 -1
- package/dist/resolvers/zod.js.map +1 -1
- package/dist/types-D8DgIUhJ.d.cts +27 -0
- package/dist/types-D8DgIUhJ.d.ts +27 -0
- package/dist/{use-bit-persist-hxJaKG2S.d.ts → use-bit-persist-BlR-hHk6.d.ts} +35 -42
- package/dist/{use-bit-persist-CWzGfovL.d.cts → use-bit-persist-DEWMhvit.d.cts} +35 -42
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.cts +31 -38
- package/dist/vue/index.d.ts +31 -38
- package/dist/vue/index.js +1 -1
- package/dist/vue/index.js.map +1 -1
- package/package.json +7 -1
- package/dist/chunk-442A4FTZ.cjs +0 -2
- package/dist/chunk-442A4FTZ.cjs.map +0 -1
- package/dist/chunk-6FJEE6O3.js +0 -133
- package/dist/chunk-6FJEE6O3.js.map +0 -1
- package/dist/chunk-FOV24ACZ.js +0 -2
- package/dist/chunk-FOV24ACZ.js.map +0 -1
- package/dist/chunk-YWXX6XRV.cjs +0 -133
- package/dist/chunk-YWXX6XRV.cjs.map +0 -1
package/dist/resolvers/zod.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ZodSchema } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { f as BitErrors } from '../bus-CILR-ENq.cjs';
|
|
3
|
+
import { BitZodResolverConfig, BitResolverScopeOptions } from './types.cjs';
|
|
4
|
+
import '../types-D8DgIUhJ.cjs';
|
|
3
5
|
|
|
4
|
-
declare const zodResolver: <T extends object>(schema: ZodSchema<T
|
|
5
|
-
scopeFields?: string[];
|
|
6
|
-
}) => Promise<BitErrors<T>>;
|
|
6
|
+
declare const zodResolver: <T extends object>(schema: ZodSchema<T>, _config?: BitZodResolverConfig) => (values: T, options?: BitResolverScopeOptions) => Promise<BitErrors<T>>;
|
|
7
7
|
|
|
8
8
|
export { zodResolver };
|
package/dist/resolvers/zod.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ZodSchema } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { f as BitErrors } from '../bus-DHQHDwUp.js';
|
|
3
|
+
import { BitZodResolverConfig, BitResolverScopeOptions } from './types.js';
|
|
4
|
+
import '../types-D8DgIUhJ.js';
|
|
3
5
|
|
|
4
|
-
declare const zodResolver: <T extends object>(schema: ZodSchema<T
|
|
5
|
-
scopeFields?: string[];
|
|
6
|
-
}) => Promise<BitErrors<T>>;
|
|
6
|
+
declare const zodResolver: <T extends object>(schema: ZodSchema<T>, _config?: BitZodResolverConfig) => (values: T, options?: BitResolverScopeOptions) => Promise<BitErrors<T>>;
|
|
7
7
|
|
|
8
8
|
export { zodResolver };
|
package/dist/resolvers/zod.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
import{b as s,c as t}from"../chunk-7MBRAKBL.js";import{ZodError as f}from"zod";var l=(i,m)=>async(n,c)=>{try{return await i.parseAsync(n),{}}catch(r){let o={};if(r instanceof f)for(let e of r.issues){let p=e.path.join(".");s(o,p,e.message)}return t(o,c?.scopeFields)}};export{l as zodResolver};
|
|
2
2
|
//# sourceMappingURL=zod.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/resolvers/zod.ts"],"sourcesContent":["import { ZodSchema } from \"zod\";\nimport { BitErrors } from \"../core\";\n\nexport const zodResolver = <T extends object>(schema: ZodSchema<T
|
|
1
|
+
{"version":3,"sources":["../../src/resolvers/zod.ts"],"sourcesContent":["import { ZodError, ZodSchema } from \"zod\";\nimport { BitErrors } from \"../core\";\nimport { filterErrorsByScope, setFirstError } from \"./utils\";\nimport { BitResolverScopeOptions, BitZodResolverConfig } from \"./types\";\n\nexport const zodResolver = <T extends object>(\n schema: ZodSchema<T>,\n _config?: BitZodResolverConfig,\n) => {\n return async (\n values: T,\n options?: BitResolverScopeOptions,\n ): Promise<BitErrors<T>> => {\n try {\n await schema.parseAsync(values);\n return {};\n } catch (error: unknown) {\n const errors: BitErrors<T> = {};\n\n if (error instanceof ZodError) {\n for (const issue of error.issues) {\n const path = issue.path.join(\".\");\n setFirstError(errors, path, issue.message);\n }\n }\n\n return filterErrorsByScope(errors, options?.scopeFields);\n }\n };\n};\n"],"mappings":"gDAAA,OAAS,YAAAA,MAA2B,MAK7B,IAAMC,EAAc,CACzBC,EACAC,IAEO,MACLC,EACAC,IAC0B,CAC1B,GAAI,CACF,aAAMH,EAAO,WAAWE,CAAM,EACvB,CAAC,CACV,OAASE,EAAgB,CACvB,IAAMC,EAAuB,CAAC,EAE9B,GAAID,aAAiBE,EACnB,QAAWC,KAASH,EAAM,OAAQ,CAChC,IAAMI,EAAOD,EAAM,KAAK,KAAK,GAAG,EAChCE,EAAcJ,EAAQG,EAAMD,EAAM,OAAO,CAC3C,CAGF,OAAOG,EAAoBL,EAAQF,GAAS,WAAW,CACzD,CACF","names":["ZodError","zodResolver","schema","_config","values","options","error","errors","ZodError","issue","path","setFirstError","filterErrorsByScope"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
interface BitMask {
|
|
2
|
+
format: (value: any) => string;
|
|
3
|
+
parse: (value: string) => any;
|
|
4
|
+
}
|
|
5
|
+
type BitBuiltInMaskName = "brl" | "usd" | "eur" | "gbp" | "jpy" | "percent" | "decimal" | "int" | "integer" | "cpf" | "cnpj" | "cpfCnpj" | "rg" | "cep" | "cnh" | "plate" | "phone" | "landline" | "date" | "time" | "usPhone" | "zipCode" | "dateUS" | "ssn" | "cc" | "cvv" | "dateISO" | "ip" | "ipv6" | "mac" | "color" | "iban";
|
|
6
|
+
type BitMaskName = BitBuiltInMaskName | (string & {});
|
|
7
|
+
interface PatternMaskOptions {
|
|
8
|
+
allowChars?: string;
|
|
9
|
+
customParse?: (value: string) => any;
|
|
10
|
+
saveRaw?: boolean;
|
|
11
|
+
guide?: boolean;
|
|
12
|
+
placeholderChar?: string;
|
|
13
|
+
}
|
|
14
|
+
interface CurrencyMaskConfig {
|
|
15
|
+
prefix?: string;
|
|
16
|
+
suffix?: string;
|
|
17
|
+
thousand: string;
|
|
18
|
+
decimal: string;
|
|
19
|
+
precision?: number;
|
|
20
|
+
allowNegative?: boolean;
|
|
21
|
+
saveRaw?: boolean;
|
|
22
|
+
}
|
|
23
|
+
interface DateMaskConfig extends PatternMaskOptions {
|
|
24
|
+
format?: "DD/MM/YYYY" | "YYYY-MM-DD";
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export type { BitMask as B, CurrencyMaskConfig as C, DateMaskConfig as D, PatternMaskOptions as P, BitMaskName as a, BitBuiltInMaskName as b };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
interface BitMask {
|
|
2
|
+
format: (value: any) => string;
|
|
3
|
+
parse: (value: string) => any;
|
|
4
|
+
}
|
|
5
|
+
type BitBuiltInMaskName = "brl" | "usd" | "eur" | "gbp" | "jpy" | "percent" | "decimal" | "int" | "integer" | "cpf" | "cnpj" | "cpfCnpj" | "rg" | "cep" | "cnh" | "plate" | "phone" | "landline" | "date" | "time" | "usPhone" | "zipCode" | "dateUS" | "ssn" | "cc" | "cvv" | "dateISO" | "ip" | "ipv6" | "mac" | "color" | "iban";
|
|
6
|
+
type BitMaskName = BitBuiltInMaskName | (string & {});
|
|
7
|
+
interface PatternMaskOptions {
|
|
8
|
+
allowChars?: string;
|
|
9
|
+
customParse?: (value: string) => any;
|
|
10
|
+
saveRaw?: boolean;
|
|
11
|
+
guide?: boolean;
|
|
12
|
+
placeholderChar?: string;
|
|
13
|
+
}
|
|
14
|
+
interface CurrencyMaskConfig {
|
|
15
|
+
prefix?: string;
|
|
16
|
+
suffix?: string;
|
|
17
|
+
thousand: string;
|
|
18
|
+
decimal: string;
|
|
19
|
+
precision?: number;
|
|
20
|
+
allowNegative?: boolean;
|
|
21
|
+
saveRaw?: boolean;
|
|
22
|
+
}
|
|
23
|
+
interface DateMaskConfig extends PatternMaskOptions {
|
|
24
|
+
format?: "DD/MM/YYYY" | "YYYY-MM-DD";
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export type { BitMask as B, CurrencyMaskConfig as C, DateMaskConfig as D, PatternMaskOptions as P, BitMaskName as a, BitBuiltInMaskName as b };
|
|
@@ -1,52 +1,13 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { e as BitStoreApi, f as BitStoreHooksApi, d as BitHistoryMetadata, i as BitPersistMetadata, a as BitValidationOptions } from './public-types-Bgws0aVJ.js';
|
|
4
|
+
import { k as BitPath, m as BitPathValue, S as ScopeStatus, V as ValidateScopeResult, f as BitErrors, A as BitTouched, D as DeepPartial, o as BitArrayPath, p as BitArrayItem } from './bus-DHQHDwUp.js';
|
|
5
5
|
|
|
6
6
|
declare const BitFormProvider: ({ store, children, }: {
|
|
7
7
|
store: BitStoreApi<any>;
|
|
8
8
|
children: React.ReactNode;
|
|
9
9
|
}) => react_jsx_runtime.JSX.Element;
|
|
10
|
-
declare const useBitStore: <T extends object>() =>
|
|
11
|
-
|
|
12
|
-
declare function useBitForm<T extends object>(): {
|
|
13
|
-
meta: {
|
|
14
|
-
submitError: Error | null;
|
|
15
|
-
lastResponse: unknown;
|
|
16
|
-
isValid: boolean;
|
|
17
|
-
isDirty: boolean;
|
|
18
|
-
isSubmitting: boolean;
|
|
19
|
-
};
|
|
20
|
-
getValues: () => T;
|
|
21
|
-
getErrors: () => BitErrors<T>;
|
|
22
|
-
getTouched: () => BitTouched<T>;
|
|
23
|
-
getDirtyValues: () => Partial<T>;
|
|
24
|
-
submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (e?: {
|
|
25
|
-
preventDefault: () => void;
|
|
26
|
-
}) => Promise<void>;
|
|
27
|
-
onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (e?: {
|
|
28
|
-
preventDefault: () => void;
|
|
29
|
-
}) => Promise<void>;
|
|
30
|
-
reset: () => void;
|
|
31
|
-
setField: <P extends BitPath<T, "">>(path: P, value: BitPathValue<T, P>) => void;
|
|
32
|
-
blurField: <P extends BitPath<T, "">>(path: P) => void;
|
|
33
|
-
replaceValues: (values: T) => void;
|
|
34
|
-
hydrate: (values: DeepPartial<T>) => void;
|
|
35
|
-
rebase: (values: T) => void;
|
|
36
|
-
setValues: (values: T) => void;
|
|
37
|
-
setError: (path: string, message: string | undefined) => void;
|
|
38
|
-
setErrors: (errors: BitErrors<T>) => void;
|
|
39
|
-
setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
|
|
40
|
-
validate: (options?: BitValidationOptions) => Promise<boolean>;
|
|
41
|
-
mutations: {
|
|
42
|
-
pushItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
43
|
-
removeItem: <P extends BitArrayPath<T>>(path: P, index: number) => void;
|
|
44
|
-
prependItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
45
|
-
insertItem: <P extends BitArrayPath<T>>(path: P, index: number, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
46
|
-
moveItem: <P extends BitArrayPath<T>>(path: P, from: number, to: number) => void;
|
|
47
|
-
swapItems: <P extends BitArrayPath<T>>(path: P, indexA: number, indexB: number) => void;
|
|
48
|
-
};
|
|
49
|
-
};
|
|
10
|
+
declare const useBitStore: <T extends object>() => BitStoreHooksApi<T>;
|
|
50
11
|
|
|
51
12
|
/**
|
|
52
13
|
* Metadata describing the current state of a form field.
|
|
@@ -133,6 +94,38 @@ interface UseBitPersistResult {
|
|
|
133
94
|
clear: () => Promise<void>;
|
|
134
95
|
meta: BitPersistMetadata;
|
|
135
96
|
}
|
|
97
|
+
interface UseBitFormMeta {
|
|
98
|
+
isValid: boolean;
|
|
99
|
+
isDirty: boolean;
|
|
100
|
+
isSubmitting: boolean;
|
|
101
|
+
submitError: Error | null;
|
|
102
|
+
lastResponse: unknown;
|
|
103
|
+
}
|
|
104
|
+
interface UseBitFormResult<T extends object = any> {
|
|
105
|
+
meta: UseBitFormMeta;
|
|
106
|
+
getValues: () => T;
|
|
107
|
+
getErrors: () => BitErrors<T>;
|
|
108
|
+
getTouched: () => BitTouched<T>;
|
|
109
|
+
getDirtyValues: () => Partial<T>;
|
|
110
|
+
submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (e?: {
|
|
111
|
+
preventDefault: () => void;
|
|
112
|
+
}) => Promise<void>;
|
|
113
|
+
onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (e?: {
|
|
114
|
+
preventDefault: () => void;
|
|
115
|
+
}) => Promise<void>;
|
|
116
|
+
reset: () => void;
|
|
117
|
+
setField: <P extends BitPath<T>>(path: P, value: BitPathValue<T, P>) => void;
|
|
118
|
+
blurField: <P extends BitPath<T>>(path: P) => void;
|
|
119
|
+
replaceValues: (values: T) => void;
|
|
120
|
+
hydrate: (values: DeepPartial<T>) => void;
|
|
121
|
+
rebase: (values: T) => void;
|
|
122
|
+
setError: (path: string, message: string | undefined) => void;
|
|
123
|
+
setErrors: (errors: BitErrors<T>) => void;
|
|
124
|
+
setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
|
|
125
|
+
validate: (options?: BitValidationOptions) => Promise<boolean>;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
declare function useBitForm<T extends object>(): UseBitFormResult<T>;
|
|
136
129
|
|
|
137
130
|
declare function useBitArray<TForm extends object = any, P extends BitArrayPath<TForm> = BitArrayPath<TForm>>(path: P): {
|
|
138
131
|
append: (value: BitArrayItem<BitPathValue<TForm, P>>) => void;
|
|
@@ -1,52 +1,13 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { e as BitStoreApi, f as BitStoreHooksApi, d as BitHistoryMetadata, i as BitPersistMetadata, a as BitValidationOptions } from './public-types-SU17BarA.cjs';
|
|
4
|
+
import { k as BitPath, m as BitPathValue, S as ScopeStatus, V as ValidateScopeResult, f as BitErrors, A as BitTouched, D as DeepPartial, o as BitArrayPath, p as BitArrayItem } from './bus-CILR-ENq.cjs';
|
|
5
5
|
|
|
6
6
|
declare const BitFormProvider: ({ store, children, }: {
|
|
7
7
|
store: BitStoreApi<any>;
|
|
8
8
|
children: React.ReactNode;
|
|
9
9
|
}) => react_jsx_runtime.JSX.Element;
|
|
10
|
-
declare const useBitStore: <T extends object>() =>
|
|
11
|
-
|
|
12
|
-
declare function useBitForm<T extends object>(): {
|
|
13
|
-
meta: {
|
|
14
|
-
submitError: Error | null;
|
|
15
|
-
lastResponse: unknown;
|
|
16
|
-
isValid: boolean;
|
|
17
|
-
isDirty: boolean;
|
|
18
|
-
isSubmitting: boolean;
|
|
19
|
-
};
|
|
20
|
-
getValues: () => T;
|
|
21
|
-
getErrors: () => BitErrors<T>;
|
|
22
|
-
getTouched: () => BitTouched<T>;
|
|
23
|
-
getDirtyValues: () => Partial<T>;
|
|
24
|
-
submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (e?: {
|
|
25
|
-
preventDefault: () => void;
|
|
26
|
-
}) => Promise<void>;
|
|
27
|
-
onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (e?: {
|
|
28
|
-
preventDefault: () => void;
|
|
29
|
-
}) => Promise<void>;
|
|
30
|
-
reset: () => void;
|
|
31
|
-
setField: <P extends BitPath<T, "">>(path: P, value: BitPathValue<T, P>) => void;
|
|
32
|
-
blurField: <P extends BitPath<T, "">>(path: P) => void;
|
|
33
|
-
replaceValues: (values: T) => void;
|
|
34
|
-
hydrate: (values: DeepPartial<T>) => void;
|
|
35
|
-
rebase: (values: T) => void;
|
|
36
|
-
setValues: (values: T) => void;
|
|
37
|
-
setError: (path: string, message: string | undefined) => void;
|
|
38
|
-
setErrors: (errors: BitErrors<T>) => void;
|
|
39
|
-
setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
|
|
40
|
-
validate: (options?: BitValidationOptions) => Promise<boolean>;
|
|
41
|
-
mutations: {
|
|
42
|
-
pushItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
43
|
-
removeItem: <P extends BitArrayPath<T>>(path: P, index: number) => void;
|
|
44
|
-
prependItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
45
|
-
insertItem: <P extends BitArrayPath<T>>(path: P, index: number, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
46
|
-
moveItem: <P extends BitArrayPath<T>>(path: P, from: number, to: number) => void;
|
|
47
|
-
swapItems: <P extends BitArrayPath<T>>(path: P, indexA: number, indexB: number) => void;
|
|
48
|
-
};
|
|
49
|
-
};
|
|
10
|
+
declare const useBitStore: <T extends object>() => BitStoreHooksApi<T>;
|
|
50
11
|
|
|
51
12
|
/**
|
|
52
13
|
* Metadata describing the current state of a form field.
|
|
@@ -133,6 +94,38 @@ interface UseBitPersistResult {
|
|
|
133
94
|
clear: () => Promise<void>;
|
|
134
95
|
meta: BitPersistMetadata;
|
|
135
96
|
}
|
|
97
|
+
interface UseBitFormMeta {
|
|
98
|
+
isValid: boolean;
|
|
99
|
+
isDirty: boolean;
|
|
100
|
+
isSubmitting: boolean;
|
|
101
|
+
submitError: Error | null;
|
|
102
|
+
lastResponse: unknown;
|
|
103
|
+
}
|
|
104
|
+
interface UseBitFormResult<T extends object = any> {
|
|
105
|
+
meta: UseBitFormMeta;
|
|
106
|
+
getValues: () => T;
|
|
107
|
+
getErrors: () => BitErrors<T>;
|
|
108
|
+
getTouched: () => BitTouched<T>;
|
|
109
|
+
getDirtyValues: () => Partial<T>;
|
|
110
|
+
submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (e?: {
|
|
111
|
+
preventDefault: () => void;
|
|
112
|
+
}) => Promise<void>;
|
|
113
|
+
onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (e?: {
|
|
114
|
+
preventDefault: () => void;
|
|
115
|
+
}) => Promise<void>;
|
|
116
|
+
reset: () => void;
|
|
117
|
+
setField: <P extends BitPath<T>>(path: P, value: BitPathValue<T, P>) => void;
|
|
118
|
+
blurField: <P extends BitPath<T>>(path: P) => void;
|
|
119
|
+
replaceValues: (values: T) => void;
|
|
120
|
+
hydrate: (values: DeepPartial<T>) => void;
|
|
121
|
+
rebase: (values: T) => void;
|
|
122
|
+
setError: (path: string, message: string | undefined) => void;
|
|
123
|
+
setErrors: (errors: BitErrors<T>) => void;
|
|
124
|
+
setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
|
|
125
|
+
validate: (options?: BitValidationOptions) => Promise<boolean>;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
declare function useBitForm<T extends object>(): UseBitFormResult<T>;
|
|
136
129
|
|
|
137
130
|
declare function useBitArray<TForm extends object = any, P extends BitArrayPath<TForm> = BitArrayPath<TForm>>(path: P): {
|
|
138
131
|
append: (value: BitArrayItem<BitPathValue<TForm, P>>) => void;
|
package/dist/vue/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkYWXX6XRVcjs = require('../chunk-YWXX6XRV.cjs');var _vue = require('vue');var H=Symbol("BIT_STORE");function $(e){_vue.provide.call(void 0, H,e)}function c(){let e=_vue.inject.call(void 0, H);if(!e)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return e}function G(){let e=c(),t=_vue.shallowRef.call(void 0, {isValid:e.getState().isValid,isSubmitting:e.getState().isSubmitting,isDirty:e.getState().isDirty}),s=_vue.ref.call(void 0, null),r=_vue.ref.call(void 0, null),i=e.subscribeSelector(y=>({isValid:y.isValid,isSubmitting:y.isSubmitting,isDirty:y.isDirty}),y=>{t.value=y});_vue.onUnmounted.call(void 0, i);let n=()=>e.getState().values,f=()=>e.getState().errors,u=()=>e.getState().touched,v=()=>e.getDirtyValues(),o=_vue.computed.call(void 0, ()=>t.value.isValid),a=_vue.computed.call(void 0, ()=>t.value.isSubmitting),l=_vue.computed.call(void 0, ()=>t.value.isDirty);return{meta:{isValid:o,isDirty:l,isSubmitting:a,submitError:s,lastResponse:r},getValues:n,getErrors:f,getTouched:u,getDirtyValues:v,submit:y=>B=>(_optionalChain([B, 'optionalAccess', _2 => _2.preventDefault, 'optionalCall', _3 => _3()]),e.submit(y)),onSubmit:y=>B=>(_optionalChain([B, 'optionalAccess', _4 => _4.preventDefault, 'optionalCall', _5 => _5()]),s.value=null,e.submit(async(F,m)=>{try{let d=await y(F,m);r.value=d,s.value=null}catch(d){_chunkYWXX6XRVcjs.i.call(void 0, d)?e.setServerErrors(_chunkYWXX6XRVcjs.j.call(void 0, d)):s.value=d instanceof Error?d:new Error(String(d))}})),reset:()=>{e.reset(),s.value=null,r.value=null},replaceValues:e.replaceValues.bind(e),hydrate:e.hydrate.bind(e),rebase:e.rebase.bind(e),setValues:e.setValues.bind(e),setError:e.setError.bind(e),setErrors:e.setErrors.bind(e),setServerErrors:e.setServerErrors.bind(e),setField:e.setField.bind(e),blurField:e.blurField.bind(e),validate:e.validate.bind(e),mutations:{pushItem:e.pushItem.bind(e),prependItem:e.prependItem.bind(e),removeItem:e.removeItem.bind(e),insertItem:e.insertItem.bind(e),moveItem:e.moveItem.bind(e),swapItems:e.swapItems.bind(e)}}}function R(e){let t=c(),s=t.resolveMask(e),r=_vue.shallowRef.call(void 0, t.getFieldState(e)),i=t.subscribeSelector(()=>t.getFieldState(e),p=>{r.value=p});_vue.onUnmounted.call(void 0, ()=>{i(),t.unregisterField&&t.unregisterField(e)});let n=_vue.computed.call(void 0, ()=>r.value.value),f=_vue.computed.call(void 0, ()=>{let p=n.value;return p==null||p===""?"":s?s.format(p):String(p)}),u=_vue.computed.call(void 0, {get:()=>f.value,set:p=>{if(!s){t.setField(e,p);return}t.setField(e,s.parse(String(_nullishCoalesce(p, () => ("")))))}}),v=_vue.computed.call(void 0, ()=>r.value.error),o=_vue.computed.call(void 0, ()=>r.value.touched?r.value.error:void 0),a=_vue.computed.call(void 0, ()=>r.value.touched),l=_vue.computed.call(void 0, ()=>!!(a.value&&o.value)),S=_vue.computed.call(void 0, ()=>r.value.isValidating),h=_vue.computed.call(void 0, ()=>r.value.isDirty),E=_vue.computed.call(void 0, ()=>r.value.isHidden),y=_vue.computed.call(void 0, ()=>r.value.isRequired),B=_vue.computed.call(void 0, ()=>!!v.value),F=p=>{if(!s){t.setField(e,p);return}u.value=String(_nullishCoalesce(p, () => ("")))},m=()=>t.blurField(e);return{value:n,displayValue:f,modelValue:u,setValue:F,setBlur:m,onInput:p=>{F(p)},onBlur:()=>{m()},meta:{error:o,touched:a,invalid:l,isValidating:S,isDirty:h,isHidden:E,isRequired:y,hasError:B}}}var V=()=>Math.random().toString(36).substring(2,9);function Z(e){let t=c(),r=(()=>{let o=_chunkYWXX6XRVcjs.f.call(void 0, t.getState().values,e);return Array.isArray(o)?o:[]})(),i=_vue.ref.call(void 0, r),n=_vue.ref.call(void 0, r.map(V)),f=t.subscribePath(e,o=>{let a=Array.isArray(o)?o:[];if(i.value=[...a],a.length!==n.value.length){let l=[...n.value];if(a.length>l.length){let S=a.length-l.length,h=Array.from({length:S},V);n.value=[...l,...h]}else n.value=l.slice(0,a.length)}});_vue.onUnmounted.call(void 0, ()=>{f(),t.unregisterPrefix&&t.unregisterPrefix(`${e}.`)});let u=_vue.computed.call(void 0, ()=>i.value.map((o,a)=>({key:n.value[a]||`temp-${a}`,value:o,index:a}))),v=_vue.computed.call(void 0, ()=>i.value.length);return{fields:u,length:v,append:o=>{n.value.push(V()),t.pushItem(e,o)},prepend:o=>{n.value.unshift(V()),t.prependItem(e,o)},insert:(o,a)=>{n.value.splice(o,0,V()),t.insertItem(e,o,a)},remove:o=>{n.value.splice(o,1),t.removeItem(e,o)},move:(o,a)=>{let l=[...n.value],[S]=l.splice(o,1);l.splice(a,0,S),n.value=l,t.moveItem(e,o,a)},swap:(o,a)=>{let l=[...n.value];[l[o],l[a]]=[l[a],l[o]],n.value=l,t.swapItems(e,o,a)},replace:o=>{n.value=o.map(V),t.setField(e,o)},clear:()=>{n.value=[],t.setField(e,[])}}}function te(){let e=c(),t=_vue.shallowRef.call(void 0, e.getHistoryMetadata()),s=e.subscribe(()=>{t.value=e.getHistoryMetadata()});_vue.onUnmounted.call(void 0, s);let r=()=>e.undo(),i=()=>e.redo();return{canUndo:_vue.computed.call(void 0, ()=>t.value.canUndo),canRedo:_vue.computed.call(void 0, ()=>t.value.canRedo),historyIndex:_vue.computed.call(void 0, ()=>t.value.historyIndex),historySize:_vue.computed.call(void 0, ()=>t.value.historySize),undo:r,redo:i}}function ie(e,t){let s=Object.keys(e),r=Object.keys(t);return s.length!==r.length?!1:s.every(i=>e[i]===t[i])}function ne(e){let t=c(),s=_vue.ref.call(void 0, t.getStepStatus(e)),r;_vue.onMounted.call(void 0, ()=>{r=t.subscribe(()=>{let o=t.getStepStatus(e);(o.hasErrors!==s.value.hasErrors||o.isDirty!==s.value.isDirty||!ie(o.errors,s.value.errors))&&(s.value=o)})}),_vue.onUnmounted.call(void 0, ()=>{_optionalChain([r, 'optionalCall', _6 => _6()])});let i=async()=>{let o=await t.validate({scope:e}),a=t.getStepErrors(e);return{valid:o,errors:a}},n=()=>t.getStepErrors(e),f=_vue.computed.call(void 0, ()=>!s.value.hasErrors),u=_vue.computed.call(void 0, ()=>s.value.isDirty),v=_vue.computed.call(void 0, ()=>s.value.errors);return{scopeName:e,status:s,errors:v,validate:i,getErrors:n,isValid:f,isDirty:u}}function ce(e,t){let s=Object.keys(e),r=Object.keys(t);return s.length!==r.length?!1:s.every(i=>e[i]===t[i])}function me(e){let t=c(),s=_vue.ref.call(void 0, 0),r=_vue.computed.call(void 0, ()=>_nullishCoalesce(e[s.value], () => (""))),i=_vue.ref.call(void 0, t.getStepStatus(r.value)),n;_vue.watch.call(void 0, r,m=>{i.value=t.getStepStatus(m)});let f=()=>{let m=r.value,d=t.getStepStatus(m);(d.hasErrors!==i.value.hasErrors||d.isDirty!==i.value.isDirty||!ce(d.errors,i.value.errors))&&(i.value=d)};_vue.onMounted.call(void 0, ()=>{n=t.subscribe(f)}),_vue.onUnmounted.call(void 0, ()=>{_optionalChain([n, 'optionalCall', _7 => _7()])});let u=async()=>{let m=r.value,d=await t.validate({scope:m}),P=t.getStepErrors(m);return{valid:d,errors:P}},v=()=>t.getStepErrors(r.value),o=async()=>{let m=r.value,d=t.getScopeFields(m);if(t.hasValidationsInProgress(d))return!1;let P=await t.validate({scope:m});if(P)s.value=Math.min(s.value+1,e.length-1);else{let p=t.getStepErrors(m),A=Object.keys(p);A.length>0&&t.markFieldsTouched(A)}return P},a=()=>{s.value=Math.max(s.value-1,0)},l=m=>{s.value=Math.max(0,Math.min(m-1,e.length-1))},S=_vue.computed.call(void 0, ()=>s.value+1),h=_vue.computed.call(void 0, ()=>s.value===0),E=_vue.computed.call(void 0, ()=>s.value>=e.length-1),y=_vue.computed.call(void 0, ()=>!i.value.hasErrors),B=_vue.computed.call(void 0, ()=>i.value.isDirty),F=_vue.computed.call(void 0, ()=>i.value.errors);return{step:S,stepIndex:s,scope:r,next:o,prev:a,goTo:l,isFirst:h,isLast:E,status:i,errors:F,isValid:y,isDirty:B,validate:u,getErrors:v}}function fe(e){let t=c(),s=_chunkYWXX6XRVcjs.f.call(void 0, t.getState().values,e),r=_vue.ref.call(void 0, s),i=t.watch(e,n=>{_chunkYWXX6XRVcjs.e.call(void 0, r.value,n)||(r.value=n)});return _vue.onUnmounted.call(void 0, i),_vue.readonly.call(void 0, r)}function ye(e,t,s){let r=c(),i=R(e),n=null,f=async v=>{if(v){r.beginFieldValidation(e),await r.clearFieldAsyncError(e);try{let o=await t(v);i.setValue(o.url),n=o.key,await r.clearFieldAsyncError(e)}catch(o){let a=o instanceof Error?o.message:"Upload failed";await r.setFieldAsyncError(e,a)}finally{r.endFieldValidation(e)}}},u=async()=>{if(n&&s)try{await s(n)}catch(v){let o=v instanceof Error?v.message:"Delete failed";await r.setFieldAsyncError(e,o);return}i.setValue(null),n=null,await r.clearFieldAsyncError(e)};return{value:i.value,setValue:i.setValue,error:_vue.computed.call(void 0, ()=>i.meta.error.value),isValidating:_vue.computed.call(void 0, ()=>i.meta.isValidating.value||!1),upload:f,remove:u}}function ge(){let e=c(),t=_vue.ref.call(void 0, !1),s=_vue.ref.call(void 0, !1),r=_vue.ref.call(void 0, null);return{restore:async()=>{s.value=!0,r.value=null;try{return await e.restorePersisted()}catch(u){return r.value=u instanceof Error?u:new Error(String(u)),!1}finally{s.value=!1}},save:async()=>{t.value=!0,r.value=null;try{await e.forceSave()}catch(u){r.value=u instanceof Error?u:new Error(String(u))}finally{t.value=!1}},clear:async()=>{r.value=null;try{await e.clearPersisted()}catch(u){r.value=u instanceof Error?u:new Error(String(u))}},meta:{isSaving:_vue.readonly.call(void 0, t),isRestoring:_vue.readonly.call(void 0, s),error:_vue.readonly.call(void 0, r)}}}exports.provideBitStore = $; exports.useBitArray = Z; exports.useBitField = R; exports.useBitForm = G; exports.useBitHistory = te; exports.useBitPersist = ge; exports.useBitScope = ne; exports.useBitSteps = me; exports.useBitStore = c; exports.useBitUpload = ye; exports.useBitWatch = fe;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkNNKZFXEKcjs = require('../chunk-NNKZFXEK.cjs');var _chunkJO37BU2Ccjs = require('../chunk-JO37BU2C.cjs');require('../chunk-PA6T2CBR.cjs');var _vue = require('vue');var q=Symbol("BIT_STORE");function Y(e){_vue.provide.call(void 0, q,_chunkJO37BU2Ccjs.l.call(void 0, e))}function c(){let e=_vue.inject.call(void 0, q);if(!e)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return e}function Q(){let e=c(),t=_vue.shallowRef.call(void 0, {isValid:e.getState().isValid,isSubmitting:e.getState().isSubmitting,isDirty:e.getState().isDirty}),i=_vue.ref.call(void 0, null),r=_vue.ref.call(void 0, null),s=e.subscribeSelector(m=>({isValid:m.isValid,isSubmitting:m.isSubmitting,isDirty:m.isDirty}),m=>{t.value=m});_vue.onUnmounted.call(void 0, s);let n=_chunkNNKZFXEKcjs.a.call(void 0, e,{clearSubmissionState:()=>{i.value=null,r.value=null},setSubmissionResult:m=>{r.value=m},setSubmissionError:m=>{i.value=m}}),d=_vue.computed.call(void 0, ()=>t.value.isValid),u=_vue.computed.call(void 0, ()=>t.value.isSubmitting),f=_vue.computed.call(void 0, ()=>t.value.isDirty),o=n.onSubmit,a=n.reset;return{meta:{isValid:d,isDirty:f,isSubmitting:u,submitError:i,lastResponse:r},getValues:n.getValues,getErrors:n.getErrors,getTouched:n.getTouched,getDirtyValues:n.getDirtyValues,submit:n.submit,onSubmit:o,reset:a,replaceValues:e.replaceValues.bind(e),hydrate:e.hydrate.bind(e),rebase:e.rebase.bind(e),setError:e.setError.bind(e),setErrors:e.setErrors.bind(e),setServerErrors:e.setServerErrors.bind(e),setField:e.setField.bind(e),blurField:e.blurField.bind(e),validate:e.validate.bind(e)}}function U(e){let t=c(),i=t.resolveMask(e),r=_chunkNNKZFXEKcjs.c.call(void 0, t,e,i),s=_vue.shallowRef.call(void 0, t.getFieldState(e)),n=_chunkNNKZFXEKcjs.b.call(void 0, t,e,g=>{s.value=g});_vue.onUnmounted.call(void 0, ()=>{n(),t.unregisterField&&t.unregisterField(e)});let d=_vue.computed.call(void 0, ()=>s.value.value),u=_vue.computed.call(void 0, ()=>r.displayValue(d.value)),f=_vue.computed.call(void 0, {get:()=>u.value,set:g=>{r.setValue(g)}}),o=_vue.computed.call(void 0, ()=>s.value.error),a=_vue.computed.call(void 0, ()=>s.value.touched?s.value.error:void 0),l=_vue.computed.call(void 0, ()=>s.value.touched),m=_vue.computed.call(void 0, ()=>!!(l.value&&a.value)),b=_vue.computed.call(void 0, ()=>s.value.isValidating),P=_vue.computed.call(void 0, ()=>s.value.isDirty),E=_vue.computed.call(void 0, ()=>s.value.isHidden),T=_vue.computed.call(void 0, ()=>s.value.isRequired),x=_vue.computed.call(void 0, ()=>!!o.value),p=g=>{r.setValue(g)},y=()=>r.setBlur();return{value:d,displayValue:u,modelValue:f,setValue:p,setBlur:y,onInput:g=>{p(g)},onBlur:()=>{y()},meta:{error:a,touched:l,invalid:m,isValidating:b,isDirty:P,isHidden:E,isRequired:T,hasError:x}}}var S=()=>Math.random().toString(36).substring(2,9);function ee(e){let t=c(),r=(()=>{let o=_chunkJO37BU2Ccjs.e.call(void 0, t.getState().values,e);return Array.isArray(o)?o:[]})(),s=_vue.ref.call(void 0, r),n=_vue.ref.call(void 0, r.map(S)),d=t.subscribePath(e,o=>{let a=Array.isArray(o)?o:[];if(s.value=[...a],a.length!==n.value.length){let l=[...n.value];if(a.length>l.length){let m=a.length-l.length,b=Array.from({length:m},S);n.value=[...l,...b]}else n.value=l.slice(0,a.length)}});_vue.onUnmounted.call(void 0, ()=>{d(),t.unregisterPrefix&&t.unregisterPrefix(`${e}.`)});let u=_vue.computed.call(void 0, ()=>s.value.map((o,a)=>({key:n.value[a]||`temp-${a}`,value:o,index:a}))),f=_vue.computed.call(void 0, ()=>s.value.length);return{fields:u,length:f,append:o=>{n.value.push(S()),t.pushItem(e,o)},prepend:o=>{n.value.unshift(S()),t.prependItem(e,o)},insert:(o,a)=>{n.value.splice(o,0,S()),t.insertItem(e,o,a)},remove:o=>{n.value.splice(o,1),t.removeItem(e,o)},move:(o,a)=>{let l=[...n.value],[m]=l.splice(o,1);l.splice(a,0,m),n.value=l,t.moveItem(e,o,a)},swap:(o,a)=>{let l=[...n.value];[l[o],l[a]]=[l[a],l[o]],n.value=l,t.swapItems(e,o,a)},replace:o=>{n.value=o.map(S),t.setField(e,o)},clear:()=>{n.value=[],t.setField(e,[])}}}function se(){let e=c(),t=_vue.shallowRef.call(void 0, e.getHistoryMetadata()),i=e.subscribe(()=>{t.value=e.getHistoryMetadata()});_vue.onUnmounted.call(void 0, i);let r=()=>e.undo(),s=()=>e.redo();return{canUndo:_vue.computed.call(void 0, ()=>t.value.canUndo),canRedo:_vue.computed.call(void 0, ()=>t.value.canRedo),historyIndex:_vue.computed.call(void 0, ()=>t.value.historyIndex),historySize:_vue.computed.call(void 0, ()=>t.value.historySize),undo:r,redo:s}}function ae(e,t){let i=Object.keys(e),r=Object.keys(t);return i.length!==r.length?!1:i.every(s=>e[s]===t[s])}function ue(e){let t=c(),i=_vue.ref.call(void 0, t.getStepStatus(e)),r;_vue.onMounted.call(void 0, ()=>{r=t.subscribe(()=>{let o=t.getStepStatus(e);(o.hasErrors!==i.value.hasErrors||o.isDirty!==i.value.isDirty||!ae(o.errors,i.value.errors))&&(i.value=o)})}),_vue.onUnmounted.call(void 0, ()=>{_optionalChain([r, 'optionalCall', _2 => _2()])});let s=async()=>{let o=await t.validate({scope:e}),a=t.getStepErrors(e);return{valid:o,errors:a}},n=()=>t.getStepErrors(e),d=_vue.computed.call(void 0, ()=>!i.value.hasErrors),u=_vue.computed.call(void 0, ()=>i.value.isDirty),f=_vue.computed.call(void 0, ()=>i.value.errors);return{scopeName:e,status:i,errors:f,validate:s,getErrors:n,isValid:d,isDirty:u}}function de(e,t){let i=Object.keys(e),r=Object.keys(t);return i.length!==r.length?!1:i.every(s=>e[s]===t[s])}function pe(e){let t=c(),i=_vue.ref.call(void 0, 0),r=_vue.computed.call(void 0, ()=>_nullishCoalesce(e[i.value], () => (""))),s=_vue.ref.call(void 0, t.getStepStatus(r.value)),n;_vue.watch.call(void 0, r,p=>{s.value=t.getStepStatus(p)});let d=()=>{let p=r.value,y=t.getStepStatus(p);(y.hasErrors!==s.value.hasErrors||y.isDirty!==s.value.isDirty||!de(y.errors,s.value.errors))&&(s.value=y)};_vue.onMounted.call(void 0, ()=>{n=t.subscribe(d)}),_vue.onUnmounted.call(void 0, ()=>{_optionalChain([n, 'optionalCall', _3 => _3()])});let u=async()=>{let p=r.value,y=await t.validate({scope:p}),h=t.getStepErrors(p);return{valid:y,errors:h}},f=()=>t.getStepErrors(r.value),o=async()=>{let p=r.value,y=t.getScopeFields(p);if(t.hasValidationsInProgress(y))return!1;let h=await t.validate({scope:p});if(h)i.value=Math.min(i.value+1,e.length-1);else{let D=t.getStepErrors(p),g=Object.keys(D);g.length>0&&t.markFieldsTouched(g)}return h},a=()=>{i.value=Math.max(i.value-1,0)},l=p=>{i.value=Math.max(0,Math.min(p-1,e.length-1))},m=_vue.computed.call(void 0, ()=>i.value+1),b=_vue.computed.call(void 0, ()=>i.value===0),P=_vue.computed.call(void 0, ()=>i.value>=e.length-1),E=_vue.computed.call(void 0, ()=>!s.value.hasErrors),T=_vue.computed.call(void 0, ()=>s.value.isDirty),x=_vue.computed.call(void 0, ()=>s.value.errors);return{step:m,stepIndex:i,scope:r,next:o,prev:a,goTo:l,isFirst:b,isLast:P,status:s,errors:x,isValid:E,isDirty:T,validate:u,getErrors:f}}function ge(e){let t=c(),i=_chunkJO37BU2Ccjs.e.call(void 0, t.getState().values,e),r=_vue.ref.call(void 0, i),s=t.watch(e,n=>{_chunkJO37BU2Ccjs.d.call(void 0, r.value,n)||(r.value=n)});return _vue.onUnmounted.call(void 0, s),_vue.readonly.call(void 0, r)}function Se(e,t,i){let r=c(),s=U(e),n=null,d=_vue.ref.call(void 0, !1),u=async o=>{if(o){d.value=!0,r.setError(e,void 0);try{let a=await t(o);s.setValue(a.url),n=a.key,r.setError(e,void 0)}catch(a){let l=a instanceof Error?a.message:"Upload failed";r.setError(e,l)}finally{d.value=!1}}},f=async()=>{if(n&&i)try{await i(n)}catch(o){let a=o instanceof Error?o.message:"Delete failed";r.setError(e,a);return}s.setValue(null),n=null,r.setError(e,void 0)};return{value:s.value,setValue:s.setValue,error:_vue.computed.call(void 0, ()=>s.meta.error.value),isValidating:_vue.computed.call(void 0, ()=>!!s.meta.isValidating.value||d.value),upload:u,remove:f}}function be(){let e=c(),t=_vue.ref.call(void 0, !1),i=_vue.ref.call(void 0, !1),r=_vue.ref.call(void 0, null);return{restore:async()=>{i.value=!0,r.value=null;try{return await e.restorePersisted()}catch(u){return r.value=u instanceof Error?u:new Error(String(u)),!1}finally{i.value=!1}},save:async()=>{t.value=!0,r.value=null;try{await e.forceSave()}catch(u){r.value=u instanceof Error?u:new Error(String(u))}finally{t.value=!1}},clear:async()=>{r.value=null;try{await e.clearPersisted()}catch(u){r.value=u instanceof Error?u:new Error(String(u))}},meta:{isSaving:_vue.readonly.call(void 0, t),isRestoring:_vue.readonly.call(void 0, i),error:_vue.readonly.call(void 0, r)}}}exports.provideBitStore = Y; exports.useBitArray = ee; exports.useBitField = U; exports.useBitForm = Q; exports.useBitHistory = se; exports.useBitPersist = be; exports.useBitScope = ue; exports.useBitSteps = pe; exports.useBitStore = c; exports.useBitUpload = Se; exports.useBitWatch = ge;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/vue/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/vue/index.cjs","../../src/vue/context.ts","../../src/vue/use-bit-form.ts","../../src/vue/use-bit-field.ts","../../src/vue/use-bit-array.ts"],"names":["BIT_STORE_KEY","provideBitStore","store","provide","useBitStore","inject","useBitForm","state","shallowRef","submitError","ref","lastResponse","unsubscribe","snapshot","nextState","onUnmounted","getValues","getErrors","getTouched","getDirtyValues","isValid","computed","isSubmitting","isDirty","onSuccess","e","handler","values","dirtyValues","result","err","isValidationErrorShape","extractServerErrors","useBitField","path","resolvedMask","rawValue","displayValue","val","modelValue","rawError","error","touched","invalid","isValidating","isHidden","isRequired","hasError","setValue","setBlur","generateId","useBitArray","initialValues","getDeepValue","ids","newValues","nextValues","currentIds","diff","newIds"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/vue/index.cjs","sourcesContent":[null,"import { inject, provide, InjectionKey } from \"vue\";\nimport type { BitStoreApi } from \"../core\";\n\n// Chave única para evitar colisões\nexport const BIT_STORE_KEY: InjectionKey<BitStoreApi<any>> =\n Symbol(\"BIT_STORE\");\n\nexport function provideBitStore<T extends object>(store: BitStoreApi<T>) {\n provide(BIT_STORE_KEY, store);\n}\n\nexport function useBitStore<T extends object>() {\n const store = inject(BIT_STORE_KEY);\n if (!store)\n throw new Error(\n \"BitForm Vue hooks devem ser usados sob um provideBitStore\",\n );\n return store as BitStoreApi<T>;\n}\n","import { computed, onUnmounted, shallowRef, ref } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { isValidationErrorShape, extractServerErrors } from \"../core/utils\";\n\nexport function useBitForm<T extends object>() {\n const store = useBitStore<T>();\n const state = shallowRef({\n isValid: store.getState().isValid,\n isSubmitting: store.getState().isSubmitting,\n isDirty: store.getState().isDirty,\n });\n const submitError = ref<Error | null>(null);\n const lastResponse = ref<unknown>(null);\n\n const unsubscribe = store.subscribeSelector(\n (snapshot) => ({\n isValid: snapshot.isValid,\n isSubmitting: snapshot.isSubmitting,\n isDirty: snapshot.isDirty,\n }),\n (nextState) => {\n state.value = nextState;\n },\n );\n\n onUnmounted(unsubscribe);\n\n const getValues = () => store.getState().values;\n const getErrors = () => store.getState().errors;\n const getTouched = () => store.getState().touched;\n const getDirtyValues = () => store.getDirtyValues();\n\n const isValid = computed(() => state.value.isValid);\n const isSubmitting = computed(() => state.value.isSubmitting);\n const isDirty = computed(() => state.value.isDirty);\n\n const onSubmit = (\n handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>,\n ) => {\n return (e?: Event) => {\n e?.preventDefault?.();\n submitError.value = null;\n return store.submit(async (values, dirtyValues) => {\n try {\n const result = await handler(values, dirtyValues);\n lastResponse.value = result;\n submitError.value = null;\n } catch (err) {\n if (isValidationErrorShape(err)) {\n store.setServerErrors(extractServerErrors(err));\n } else {\n submitError.value =\n err instanceof Error ? err : new Error(String(err));\n }\n }\n });\n };\n };\n\n const reset = () => {\n store.reset();\n submitError.value = null;\n lastResponse.value = null;\n };\n\n const meta = {\n isValid,\n isDirty,\n isSubmitting,\n submitError,\n lastResponse,\n };\n\n return {\n // Metadata (grouped)\n meta,\n // Getters\n getValues,\n getErrors,\n getTouched,\n getDirtyValues,\n // Main actions (frequent use - flat)\n submit: (\n onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>,\n ) => {\n return (e?: Event) => {\n e?.preventDefault?.();\n return store.submit(onSuccess);\n };\n },\n onSubmit,\n reset,\n replaceValues: store.replaceValues.bind(store),\n hydrate: store.hydrate.bind(store),\n rebase: store.rebase.bind(store),\n setValues: store.setValues.bind(store),\n setError: store.setError.bind(store),\n setErrors: store.setErrors.bind(store),\n setServerErrors: store.setServerErrors.bind(store),\n setField: store.setField.bind(store),\n blurField: store.blurField.bind(store),\n validate: store.validate.bind(store),\n // Array mutations (grouped)\n mutations: {\n pushItem: store.pushItem.bind(store),\n prependItem: store.prependItem.bind(store),\n removeItem: store.removeItem.bind(store),\n insertItem: store.insertItem.bind(store),\n moveItem: store.moveItem.bind(store),\n swapItems: store.swapItems.bind(store),\n },\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitFieldVueResult } from \"./types\";\nimport type { BitPath, BitPathValue } from \"../core\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldVueResult<BitPathValue<TForm, P>> {\n const store = useBitStore<TForm>();\n\n const resolvedMask = store.resolveMask(path);\n\n const state = shallowRef(store.getFieldState(path));\n\n const unsubscribe = store.subscribeSelector(\n () => store.getFieldState(path),\n (nextState) => {\n state.value = nextState;\n },\n );\n\n onUnmounted(() => {\n unsubscribe();\n if (store.unregisterField) {\n store.unregisterField(path);\n }\n });\n\n const rawValue = computed(() => state.value.value as BitPathValue<TForm, P>);\n\n const displayValue = computed(() => {\n const val = rawValue.value;\n if (val === undefined || val === null || val === \"\") return \"\";\n\n return resolvedMask ? resolvedMask.format(val) : String(val);\n });\n\n const modelValue = computed({\n get: () => displayValue.value,\n set: (val: string) => {\n if (!resolvedMask) {\n store.setField(path, val as BitPathValue<TForm, P>);\n return;\n }\n\n store.setField(path, resolvedMask.parse(String(val ?? \"\")));\n },\n });\n\n const rawError = computed(() => state.value.error);\n const error = computed(() =>\n state.value.touched ? state.value.error : undefined,\n );\n const touched = computed(() => state.value.touched);\n const invalid = computed(() => !!(touched.value && error.value));\n\n const isValidating = computed(() => state.value.isValidating);\n\n const isDirty = computed(() => state.value.isDirty);\n\n const isHidden = computed(() => state.value.isHidden);\n\n const isRequired = computed(() => state.value.isRequired);\n\n const hasError = computed(() => !!rawError.value);\n\n const setValue = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n if (!resolvedMask) {\n store.setField(path, val as BitPathValue<TForm, P>);\n return;\n }\n\n modelValue.value = String(val ?? \"\");\n };\n\n const setBlur = () => store.blurField(path);\n\n const onInput = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n setValue(val);\n };\n\n const onBlur = () => {\n setBlur();\n };\n\n return {\n // Main handlers and values (flat)\n value: rawValue,\n displayValue,\n modelValue,\n setValue,\n setBlur,\n onInput,\n onBlur,\n // Metadata (grouped)\n meta: {\n error,\n touched,\n invalid,\n isValidating,\n isDirty,\n isHidden,\n isRequired,\n hasError,\n },\n };\n}\n","import { ref, computed, onUnmounted } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport {\n getDeepValue,\n BitArrayPath,\n BitPathValue,\n BitArrayItem,\n BitPath,\n} from \"../core\";\n\nconst generateId = () => Math.random().toString(36).substring(2, 9);\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n\n type Item = BitArrayItem<BitPathValue<TForm, P>>;\n\n const getSnapshot = (): Item[] => {\n const val = getDeepValue(store.getState().values, path as string) as\n | BitPathValue<TForm, P>\n | undefined;\n return Array.isArray(val) ? (val as Item[]) : [];\n };\n\n const initialValues = getSnapshot();\n const values = ref<Item[]>(initialValues);\n const ids = ref<string[]>(initialValues.map(generateId));\n\n const unsubscribe = store.subscribePath(path, (newValues) => {\n const nextValues = (Array.isArray(newValues) ? newValues : []) as Item[];\n\n values.value = [...nextValues];\n\n if (nextValues.length !== ids.value.length) {\n const currentIds = [...ids.value];\n if (nextValues.length > currentIds.length) {\n const diff = nextValues.length - currentIds.length;\n const newIds = Array.from({ length: diff }, generateId);\n ids.value = [...currentIds, ...newIds];\n } else {\n ids.value = currentIds.slice(0, nextValues.length);\n }\n }\n });\n\n onUnmounted(() => {\n unsubscribe();\n if (store.unregisterPrefix) {\n store.unregisterPrefix(`${path as string}.`);\n }\n });\n\n const fields = computed(() =>\n values.value.map((v, i) => ({\n key: ids.value[i] || `temp-${i}`,\n value: v,\n index: i,\n })),\n );\n\n const length = computed(() => values.value.length);\n\n return {\n fields,\n length,\n append: (val: Item) => {\n ids.value.push(generateId());\n store.pushItem(path, val);\n },\n prepend: (val: Item) => {\n ids.value.unshift(generateId());\n store.prependItem(path, val);\n },\n insert: (index: number, val: Item) => {\n ids.value.splice(index, 0, generateId());\n store.insertItem(path, index, val);\n },\n remove: (index: number) => {\n ids.value.splice(index, 1);\n store.removeItem(path, index);\n },\n move: (from: number, to: number) => {\n const currentIds = [...ids.value];\n const [id] = currentIds.splice(from, 1);\n currentIds.splice(to, 0, id);\n ids.value = currentIds;\n store.moveItem(path, from, to);\n },\n swap: (a: number, b: number) => {\n const currentIds = [...ids.value];\n [currentIds[a], currentIds[b]] = [currentIds[b], currentIds[a]];\n ids.value = currentIds;\n store.swapItems(path, a, b);\n },\n replace: (items: Item[]) => {\n ids.value = items.map(generateId);\n store.setField(\n path as unknown as BitPath<TForm>,\n items as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n clear: () => {\n ids.value = [];\n store.setField(\n path as unknown as BitPath<TForm>,\n [] as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/vue/index.cjs","../../src/vue/context.ts","../../src/vue/use-bit-form.ts","../../src/vue/use-bit-field.ts","../../src/vue/use-bit-array.ts"],"names":["BIT_STORE_KEY","provideBitStore","store","provide","resolveBitStoreForHooks","useBitStore","inject","useBitForm","state","shallowRef","submitError","ref","lastResponse","unsubscribe","snapshot","nextState","onUnmounted","controller","createFormController","result","error","isValid","computed","isSubmitting","isDirty","onSubmit","reset","useBitField","path","resolvedMask","fieldController","createMaskedFieldController","subscribeFieldState","rawValue","displayValue","modelValue","val","rawError","touched","invalid","isValidating","isHidden","isRequired","hasError","setValue","setBlur","generateId","useBitArray","initialValues","getDeepValue","values","ids","newValues","nextValues","currentIds","diff","newIds"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/vue/index.cjs","sourcesContent":[null,"import { inject, provide, InjectionKey } from \"vue\";\nimport type { BitStoreApi, BitStoreHooksApi } from \"../core\";\nimport { resolveBitStoreForHooks } from \"../core\";\n\n// Chave única para evitar colisões\nexport const BIT_STORE_KEY: InjectionKey<BitStoreHooksApi<any>> =\n Symbol(\"BIT_STORE\");\n\nexport function provideBitStore<T extends object>(store: BitStoreApi<T>) {\n provide(BIT_STORE_KEY, resolveBitStoreForHooks(store));\n}\n\nexport function useBitStore<T extends object>() {\n const store = inject(BIT_STORE_KEY);\n if (!store)\n throw new Error(\n \"BitForm Vue hooks devem ser usados sob um provideBitStore\",\n );\n return store as BitStoreHooksApi<T>;\n}\n","import { computed, onUnmounted, shallowRef, ref } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { createFormController } from \"../core/form-controller\";\nimport type { UseBitFormResult } from \"./types\";\n\nexport function useBitForm<T extends object>(): UseBitFormResult<T> {\n const store = useBitStore<T>();\n const state = shallowRef({\n isValid: store.getState().isValid,\n isSubmitting: store.getState().isSubmitting,\n isDirty: store.getState().isDirty,\n });\n const submitError = ref<Error | null>(null);\n const lastResponse = ref<unknown>(null);\n\n const unsubscribe = store.subscribeSelector(\n (snapshot) => ({\n isValid: snapshot.isValid,\n isSubmitting: snapshot.isSubmitting,\n isDirty: snapshot.isDirty,\n }),\n (nextState) => {\n state.value = nextState;\n },\n );\n\n onUnmounted(unsubscribe);\n\n const controller = createFormController(store, {\n clearSubmissionState: () => {\n submitError.value = null;\n lastResponse.value = null;\n },\n setSubmissionResult: (result) => {\n lastResponse.value = result;\n },\n setSubmissionError: (error) => {\n submitError.value = error;\n },\n });\n\n const isValid = computed(() => state.value.isValid);\n const isSubmitting = computed(() => state.value.isSubmitting);\n const isDirty = computed(() => state.value.isDirty);\n\n const onSubmit = controller.onSubmit;\n const reset = controller.reset;\n\n const meta = {\n isValid,\n isDirty,\n isSubmitting,\n submitError,\n lastResponse,\n };\n\n return {\n // Metadata (grouped)\n meta,\n // Getters\n getValues: controller.getValues,\n getErrors: controller.getErrors,\n getTouched: controller.getTouched,\n getDirtyValues: controller.getDirtyValues,\n // Main actions (frequent use - flat)\n submit: controller.submit,\n onSubmit,\n reset,\n replaceValues: store.replaceValues.bind(store),\n hydrate: store.hydrate.bind(store),\n rebase: store.rebase.bind(store),\n setError: store.setError.bind(store),\n setErrors: store.setErrors.bind(store),\n setServerErrors: store.setServerErrors.bind(store),\n setField: store.setField.bind(store),\n blurField: store.blurField.bind(store),\n validate: store.validate.bind(store),\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitFieldVueResult } from \"./types\";\nimport type { BitPath, BitPathValue } from \"../core\";\nimport {\n createMaskedFieldController,\n subscribeFieldState,\n} from \"../core/field-controller\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldVueResult<BitPathValue<TForm, P>> {\n const store = useBitStore<TForm>();\n\n const resolvedMask = store.resolveMask(path);\n const fieldController = createMaskedFieldController(\n store,\n path,\n resolvedMask,\n );\n\n const state = shallowRef(store.getFieldState(path));\n\n const unsubscribe = subscribeFieldState(store, path, (nextState) => {\n state.value = nextState;\n });\n\n onUnmounted(() => {\n unsubscribe();\n if (store.unregisterField) {\n store.unregisterField(path);\n }\n });\n\n const rawValue = computed(() => state.value.value as BitPathValue<TForm, P>);\n\n const displayValue = computed(() =>\n fieldController.displayValue(rawValue.value),\n );\n\n const modelValue = computed({\n get: () => displayValue.value,\n set: (val: string) => {\n fieldController.setValue(val);\n },\n });\n\n const rawError = computed(() => state.value.error);\n const error = computed(() =>\n state.value.touched ? state.value.error : undefined,\n );\n const touched = computed(() => state.value.touched);\n const invalid = computed(() => !!(touched.value && error.value));\n\n const isValidating = computed(() => state.value.isValidating);\n\n const isDirty = computed(() => state.value.isDirty);\n\n const isHidden = computed(() => state.value.isHidden);\n\n const isRequired = computed(() => state.value.isRequired);\n\n const hasError = computed(() => !!rawError.value);\n\n const setValue = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n fieldController.setValue(val);\n };\n\n const setBlur = () => fieldController.setBlur();\n\n const onInput = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n setValue(val);\n };\n\n const onBlur = () => {\n setBlur();\n };\n\n return {\n // Main handlers and values (flat)\n value: rawValue,\n displayValue,\n modelValue,\n setValue,\n setBlur,\n onInput,\n onBlur,\n // Metadata (grouped)\n meta: {\n error,\n touched,\n invalid,\n isValidating,\n isDirty,\n isHidden,\n isRequired,\n hasError,\n },\n };\n}\n","import { ref, computed, onUnmounted } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport {\n getDeepValue,\n BitArrayPath,\n BitPathValue,\n BitArrayItem,\n BitPath,\n} from \"../core\";\n\nconst generateId = () => Math.random().toString(36).substring(2, 9);\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n\n type Item = BitArrayItem<BitPathValue<TForm, P>>;\n\n const getSnapshot = (): Item[] => {\n const val = getDeepValue(store.getState().values, path as string) as\n | BitPathValue<TForm, P>\n | undefined;\n return Array.isArray(val) ? (val as Item[]) : [];\n };\n\n const initialValues = getSnapshot();\n const values = ref<Item[]>(initialValues);\n const ids = ref<string[]>(initialValues.map(generateId));\n\n const unsubscribe = store.subscribePath(path, (newValues) => {\n const nextValues = (Array.isArray(newValues) ? newValues : []) as Item[];\n\n values.value = [...nextValues];\n\n if (nextValues.length !== ids.value.length) {\n const currentIds = [...ids.value];\n if (nextValues.length > currentIds.length) {\n const diff = nextValues.length - currentIds.length;\n const newIds = Array.from({ length: diff }, generateId);\n ids.value = [...currentIds, ...newIds];\n } else {\n ids.value = currentIds.slice(0, nextValues.length);\n }\n }\n });\n\n onUnmounted(() => {\n unsubscribe();\n if (store.unregisterPrefix) {\n store.unregisterPrefix(`${path as string}.`);\n }\n });\n\n const fields = computed(() =>\n values.value.map((v, i) => ({\n key: ids.value[i] || `temp-${i}`,\n value: v,\n index: i,\n })),\n );\n\n const length = computed(() => values.value.length);\n\n return {\n fields,\n length,\n append: (val: Item) => {\n ids.value.push(generateId());\n store.pushItem(path, val);\n },\n prepend: (val: Item) => {\n ids.value.unshift(generateId());\n store.prependItem(path, val);\n },\n insert: (index: number, val: Item) => {\n ids.value.splice(index, 0, generateId());\n store.insertItem(path, index, val);\n },\n remove: (index: number) => {\n ids.value.splice(index, 1);\n store.removeItem(path, index);\n },\n move: (from: number, to: number) => {\n const currentIds = [...ids.value];\n const [id] = currentIds.splice(from, 1);\n currentIds.splice(to, 0, id);\n ids.value = currentIds;\n store.moveItem(path, from, to);\n },\n swap: (a: number, b: number) => {\n const currentIds = [...ids.value];\n [currentIds[a], currentIds[b]] = [currentIds[b], currentIds[a]];\n ids.value = currentIds;\n store.swapItems(path, a, b);\n },\n replace: (items: Item[]) => {\n ids.value = items.map(generateId);\n store.setField(\n path as unknown as BitPath<TForm>,\n items as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n clear: () => {\n ids.value = [];\n store.setField(\n path as unknown as BitPath<TForm>,\n [] as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n };\n}\n"]}
|
package/dist/vue/index.d.cts
CHANGED
|
@@ -1,48 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { e as BitStoreApi, f as BitStoreHooksApi, d as BitHistoryMetadata, i as BitPersistMetadata, a as BitValidationOptions } from '../public-types-SU17BarA.cjs';
|
|
2
|
+
import { S as ScopeStatus, V as ValidateScopeResult, f as BitErrors, A as BitTouched, D as DeepPartial, k as BitPath, m as BitPathValue, o as BitArrayPath, p as BitArrayItem } from '../bus-CILR-ENq.cjs';
|
|
3
3
|
import * as vue from 'vue';
|
|
4
4
|
import { ComputedRef, Ref } from 'vue';
|
|
5
5
|
import * as _vue_reactivity from '@vue/reactivity';
|
|
6
6
|
import * as _vue_shared from '@vue/shared';
|
|
7
7
|
import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.cjs';
|
|
8
|
+
import '../types-D8DgIUhJ.cjs';
|
|
8
9
|
|
|
9
10
|
declare function provideBitStore<T extends object>(store: BitStoreApi<T>): void;
|
|
10
|
-
declare function useBitStore<T extends object>():
|
|
11
|
-
|
|
12
|
-
declare function useBitForm<T extends object>(): {
|
|
13
|
-
meta: {
|
|
14
|
-
isValid: vue.ComputedRef<boolean>;
|
|
15
|
-
isDirty: vue.ComputedRef<boolean>;
|
|
16
|
-
isSubmitting: vue.ComputedRef<boolean>;
|
|
17
|
-
submitError: vue.Ref<Error | null, Error | null>;
|
|
18
|
-
lastResponse: vue.Ref<unknown, unknown>;
|
|
19
|
-
};
|
|
20
|
-
getValues: () => T;
|
|
21
|
-
getErrors: () => BitErrors<T>;
|
|
22
|
-
getTouched: () => BitTouched<T>;
|
|
23
|
-
getDirtyValues: () => Partial<T>;
|
|
24
|
-
submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (e?: Event) => Promise<void>;
|
|
25
|
-
onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (e?: Event) => Promise<void>;
|
|
26
|
-
reset: () => void;
|
|
27
|
-
replaceValues: (values: T) => void;
|
|
28
|
-
hydrate: (values: DeepPartial<T>) => void;
|
|
29
|
-
rebase: (values: T) => void;
|
|
30
|
-
setValues: (values: T) => void;
|
|
31
|
-
setError: (path: string, message: string | undefined) => void;
|
|
32
|
-
setErrors: (errors: BitErrors<T>) => void;
|
|
33
|
-
setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
|
|
34
|
-
setField: <P extends BitPath<T, "">>(path: P, value: BitPathValue<T, P>) => void;
|
|
35
|
-
blurField: <P extends BitPath<T, "">>(path: P) => void;
|
|
36
|
-
validate: (options?: BitValidationOptions) => Promise<boolean>;
|
|
37
|
-
mutations: {
|
|
38
|
-
pushItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
39
|
-
prependItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
40
|
-
removeItem: <P extends BitArrayPath<T>>(path: P, index: number) => void;
|
|
41
|
-
insertItem: <P extends BitArrayPath<T>>(path: P, index: number, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
42
|
-
moveItem: <P extends BitArrayPath<T>>(path: P, from: number, to: number) => void;
|
|
43
|
-
swapItems: <P extends BitArrayPath<T>>(path: P, indexA: number, indexB: number) => void;
|
|
44
|
-
};
|
|
45
|
-
};
|
|
11
|
+
declare function useBitStore<T extends object>(): BitStoreHooksApi<T>;
|
|
46
12
|
|
|
47
13
|
/**
|
|
48
14
|
* Metadata describing the current state of a form field (Vue reactive).
|
|
@@ -125,6 +91,33 @@ interface UseBitPersistResult {
|
|
|
125
91
|
error: Ref<BitPersistMetadata["error"]>;
|
|
126
92
|
};
|
|
127
93
|
}
|
|
94
|
+
interface UseBitFormResult<T extends object = any> {
|
|
95
|
+
meta: {
|
|
96
|
+
isValid: ComputedRef<boolean>;
|
|
97
|
+
isDirty: ComputedRef<boolean>;
|
|
98
|
+
isSubmitting: ComputedRef<boolean>;
|
|
99
|
+
submitError: Ref<Error | null>;
|
|
100
|
+
lastResponse: Ref<unknown>;
|
|
101
|
+
};
|
|
102
|
+
getValues: () => T;
|
|
103
|
+
getErrors: () => BitErrors<T>;
|
|
104
|
+
getTouched: () => BitTouched<T>;
|
|
105
|
+
getDirtyValues: () => Partial<T>;
|
|
106
|
+
submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (e?: Event) => Promise<void>;
|
|
107
|
+
onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (e?: Event) => Promise<void>;
|
|
108
|
+
reset: () => void;
|
|
109
|
+
replaceValues: (values: T) => void;
|
|
110
|
+
hydrate: (values: DeepPartial<T>) => void;
|
|
111
|
+
rebase: (values: T) => void;
|
|
112
|
+
setError: (path: string, message: string | undefined) => void;
|
|
113
|
+
setErrors: (errors: BitErrors<T>) => void;
|
|
114
|
+
setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
|
|
115
|
+
setField: <P extends BitPath<T>>(path: P, value: BitPathValue<T, P>) => void;
|
|
116
|
+
blurField: <P extends BitPath<T>>(path: P) => void;
|
|
117
|
+
validate: (options?: BitValidationOptions) => Promise<boolean>;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
declare function useBitForm<T extends object>(): UseBitFormResult<T>;
|
|
128
121
|
|
|
129
122
|
declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldVueResult<BitPathValue<TForm, P>>;
|
|
130
123
|
|
package/dist/vue/index.d.ts
CHANGED
|
@@ -1,48 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { e as BitStoreApi, f as BitStoreHooksApi, d as BitHistoryMetadata, i as BitPersistMetadata, a as BitValidationOptions } from '../public-types-Bgws0aVJ.js';
|
|
2
|
+
import { S as ScopeStatus, V as ValidateScopeResult, f as BitErrors, A as BitTouched, D as DeepPartial, k as BitPath, m as BitPathValue, o as BitArrayPath, p as BitArrayItem } from '../bus-DHQHDwUp.js';
|
|
3
3
|
import * as vue from 'vue';
|
|
4
4
|
import { ComputedRef, Ref } from 'vue';
|
|
5
5
|
import * as _vue_reactivity from '@vue/reactivity';
|
|
6
6
|
import * as _vue_shared from '@vue/shared';
|
|
7
7
|
import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.js';
|
|
8
|
+
import '../types-D8DgIUhJ.js';
|
|
8
9
|
|
|
9
10
|
declare function provideBitStore<T extends object>(store: BitStoreApi<T>): void;
|
|
10
|
-
declare function useBitStore<T extends object>():
|
|
11
|
-
|
|
12
|
-
declare function useBitForm<T extends object>(): {
|
|
13
|
-
meta: {
|
|
14
|
-
isValid: vue.ComputedRef<boolean>;
|
|
15
|
-
isDirty: vue.ComputedRef<boolean>;
|
|
16
|
-
isSubmitting: vue.ComputedRef<boolean>;
|
|
17
|
-
submitError: vue.Ref<Error | null, Error | null>;
|
|
18
|
-
lastResponse: vue.Ref<unknown, unknown>;
|
|
19
|
-
};
|
|
20
|
-
getValues: () => T;
|
|
21
|
-
getErrors: () => BitErrors<T>;
|
|
22
|
-
getTouched: () => BitTouched<T>;
|
|
23
|
-
getDirtyValues: () => Partial<T>;
|
|
24
|
-
submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (e?: Event) => Promise<void>;
|
|
25
|
-
onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (e?: Event) => Promise<void>;
|
|
26
|
-
reset: () => void;
|
|
27
|
-
replaceValues: (values: T) => void;
|
|
28
|
-
hydrate: (values: DeepPartial<T>) => void;
|
|
29
|
-
rebase: (values: T) => void;
|
|
30
|
-
setValues: (values: T) => void;
|
|
31
|
-
setError: (path: string, message: string | undefined) => void;
|
|
32
|
-
setErrors: (errors: BitErrors<T>) => void;
|
|
33
|
-
setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
|
|
34
|
-
setField: <P extends BitPath<T, "">>(path: P, value: BitPathValue<T, P>) => void;
|
|
35
|
-
blurField: <P extends BitPath<T, "">>(path: P) => void;
|
|
36
|
-
validate: (options?: BitValidationOptions) => Promise<boolean>;
|
|
37
|
-
mutations: {
|
|
38
|
-
pushItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
39
|
-
prependItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
40
|
-
removeItem: <P extends BitArrayPath<T>>(path: P, index: number) => void;
|
|
41
|
-
insertItem: <P extends BitArrayPath<T>>(path: P, index: number, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
42
|
-
moveItem: <P extends BitArrayPath<T>>(path: P, from: number, to: number) => void;
|
|
43
|
-
swapItems: <P extends BitArrayPath<T>>(path: P, indexA: number, indexB: number) => void;
|
|
44
|
-
};
|
|
45
|
-
};
|
|
11
|
+
declare function useBitStore<T extends object>(): BitStoreHooksApi<T>;
|
|
46
12
|
|
|
47
13
|
/**
|
|
48
14
|
* Metadata describing the current state of a form field (Vue reactive).
|
|
@@ -125,6 +91,33 @@ interface UseBitPersistResult {
|
|
|
125
91
|
error: Ref<BitPersistMetadata["error"]>;
|
|
126
92
|
};
|
|
127
93
|
}
|
|
94
|
+
interface UseBitFormResult<T extends object = any> {
|
|
95
|
+
meta: {
|
|
96
|
+
isValid: ComputedRef<boolean>;
|
|
97
|
+
isDirty: ComputedRef<boolean>;
|
|
98
|
+
isSubmitting: ComputedRef<boolean>;
|
|
99
|
+
submitError: Ref<Error | null>;
|
|
100
|
+
lastResponse: Ref<unknown>;
|
|
101
|
+
};
|
|
102
|
+
getValues: () => T;
|
|
103
|
+
getErrors: () => BitErrors<T>;
|
|
104
|
+
getTouched: () => BitTouched<T>;
|
|
105
|
+
getDirtyValues: () => Partial<T>;
|
|
106
|
+
submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (e?: Event) => Promise<void>;
|
|
107
|
+
onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (e?: Event) => Promise<void>;
|
|
108
|
+
reset: () => void;
|
|
109
|
+
replaceValues: (values: T) => void;
|
|
110
|
+
hydrate: (values: DeepPartial<T>) => void;
|
|
111
|
+
rebase: (values: T) => void;
|
|
112
|
+
setError: (path: string, message: string | undefined) => void;
|
|
113
|
+
setErrors: (errors: BitErrors<T>) => void;
|
|
114
|
+
setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
|
|
115
|
+
setField: <P extends BitPath<T>>(path: P, value: BitPathValue<T, P>) => void;
|
|
116
|
+
blurField: <P extends BitPath<T>>(path: P) => void;
|
|
117
|
+
validate: (options?: BitValidationOptions) => Promise<boolean>;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
declare function useBitForm<T extends object>(): UseBitFormResult<T>;
|
|
128
121
|
|
|
129
122
|
declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldVueResult<BitPathValue<TForm, P>>;
|
|
130
123
|
|