@lehnihon/bit-form 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +150 -0
- package/dist/angular/index.cjs +2 -0
- package/dist/angular/index.cjs.map +1 -0
- package/dist/angular/index.d.cts +115 -0
- package/dist/angular/index.d.ts +115 -0
- package/dist/angular/index.js +2 -0
- package/dist/angular/index.js.map +1 -0
- package/dist/bus-DAwKIiMY.d.cts +233 -0
- package/dist/bus-DAwKIiMY.d.ts +233 -0
- package/dist/chunk-32ZEDTLP.js +2 -0
- package/dist/chunk-32ZEDTLP.js.map +1 -0
- package/dist/chunk-FOPOA6NB.cjs +133 -0
- package/dist/chunk-FOPOA6NB.cjs.map +1 -0
- package/dist/chunk-XIDR3J47.cjs +2 -0
- package/dist/chunk-XIDR3J47.cjs.map +1 -0
- package/dist/chunk-ZI3XHI4I.js +133 -0
- package/dist/chunk-ZI3XHI4I.js.map +1 -0
- package/dist/cli/index.cjs +105 -0
- package/dist/devtools/bridge.cjs +2 -0
- package/dist/devtools/bridge.cjs.map +1 -0
- package/dist/devtools/bridge.d.cts +3 -0
- package/dist/devtools/bridge.d.ts +3 -0
- package/dist/devtools/bridge.js +2 -0
- package/dist/devtools/bridge.js.map +1 -0
- package/dist/devtools/index.cjs +2 -0
- package/dist/devtools/index.cjs.map +1 -0
- package/dist/devtools/index.d.cts +14 -0
- package/dist/devtools/index.d.ts +14 -0
- package/dist/devtools/index.js +2 -0
- package/dist/devtools/index.js.map +1 -0
- package/dist/index-CmwQH2V1.d.cts +108 -0
- package/dist/index-DRvn8318.d.ts +108 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +119 -0
- package/dist/index.d.ts +119 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/react/index.cjs +2 -0
- package/dist/react/index.cjs.map +1 -0
- package/dist/react/index.d.cts +34 -0
- package/dist/react/index.d.ts +34 -0
- package/dist/react/index.js +2 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react-native/index.cjs +2 -0
- package/dist/react-native/index.cjs.map +1 -0
- package/dist/react-native/index.d.cts +27 -0
- package/dist/react-native/index.d.ts +27 -0
- package/dist/react-native/index.js +2 -0
- package/dist/react-native/index.js.map +1 -0
- package/dist/resolvers/joi.cjs +2 -0
- package/dist/resolvers/joi.cjs.map +1 -0
- package/dist/resolvers/joi.d.cts +8 -0
- package/dist/resolvers/joi.d.ts +8 -0
- package/dist/resolvers/joi.js +2 -0
- package/dist/resolvers/joi.js.map +1 -0
- package/dist/resolvers/yup.cjs +2 -0
- package/dist/resolvers/yup.cjs.map +1 -0
- package/dist/resolvers/yup.d.cts +8 -0
- package/dist/resolvers/yup.d.ts +8 -0
- package/dist/resolvers/yup.js +2 -0
- package/dist/resolvers/yup.js.map +1 -0
- package/dist/resolvers/zod.cjs +2 -0
- package/dist/resolvers/zod.cjs.map +1 -0
- package/dist/resolvers/zod.d.cts +8 -0
- package/dist/resolvers/zod.d.ts +8 -0
- package/dist/resolvers/zod.js +2 -0
- package/dist/resolvers/zod.js.map +1 -0
- package/dist/use-bit-watch-BMCwKIYx.d.cts +99 -0
- package/dist/use-bit-watch-BujTdIMc.d.ts +99 -0
- package/dist/vue/index.cjs +2 -0
- package/dist/vue/index.cjs.map +1 -0
- package/dist/vue/index.d.cts +122 -0
- package/dist/vue/index.d.ts +122 -0
- package/dist/vue/index.js +2 -0
- package/dist/vue/index.js.map +1 -0
- package/package.json +160 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { B as BitStore } from '../index-DRvn8318.js';
|
|
2
|
+
import { e as BitErrors, n as BitTouched, k as BitPath, l as BitPathValue, B as BitMask, b as BitArrayPath, a as BitArrayItem, g as BitFieldDefinition, h as BitFieldOptions, S as ScopeStatus, V as ValidateScopeResult } from '../bus-DAwKIiMY.js';
|
|
3
|
+
import * as vue from 'vue';
|
|
4
|
+
import * as _vue_reactivity from '@vue/reactivity';
|
|
5
|
+
import * as _vue_shared from '@vue/shared';
|
|
6
|
+
|
|
7
|
+
declare function provideBitStore(store: BitStore<any>): void;
|
|
8
|
+
declare function useBitStore<T extends object>(): BitStore<T>;
|
|
9
|
+
|
|
10
|
+
declare function useBitForm<T extends object>(): {
|
|
11
|
+
store: BitStore<T>;
|
|
12
|
+
isValid: vue.ComputedRef<boolean>;
|
|
13
|
+
isSubmitting: vue.ComputedRef<boolean>;
|
|
14
|
+
isDirty: vue.ComputedRef<boolean>;
|
|
15
|
+
canUndo: vue.ComputedRef<boolean>;
|
|
16
|
+
canRedo: vue.ComputedRef<boolean>;
|
|
17
|
+
getValues: () => T;
|
|
18
|
+
getErrors: () => BitErrors<T>;
|
|
19
|
+
getTouched: () => BitTouched<T>;
|
|
20
|
+
submit: (onSuccess: (values: T) => void | Promise<void>) => (e?: Event) => Promise<void>;
|
|
21
|
+
onSubmit: (handler: (values: T) => Promise<unknown>) => (e?: Event) => Promise<void>;
|
|
22
|
+
submitError: vue.Ref<Error | null, Error | null>;
|
|
23
|
+
lastResponse: vue.Ref<unknown, unknown>;
|
|
24
|
+
reset: () => void;
|
|
25
|
+
validate: (options?: {
|
|
26
|
+
scope?: string;
|
|
27
|
+
scopeFields?: string[];
|
|
28
|
+
}) => Promise<boolean>;
|
|
29
|
+
setValues: (newValues: T) => void;
|
|
30
|
+
setError: (path: string, message: string | undefined) => void;
|
|
31
|
+
setErrors: (errors: BitErrors<T>) => void;
|
|
32
|
+
setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
|
|
33
|
+
setField: <P extends BitPath<T, "">>(path: P, value: BitPathValue<T, P>) => void;
|
|
34
|
+
blurField: <P extends BitPath<T, "">>(path: P) => void;
|
|
35
|
+
registerMask: (name: string, mask: BitMask) => void;
|
|
36
|
+
pushItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
37
|
+
prependItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
38
|
+
removeItem: <P extends BitArrayPath<T>>(path: P, index: number) => void;
|
|
39
|
+
insertItem: <P extends BitArrayPath<T>>(path: P, index: number, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
40
|
+
moveItem: <P extends BitArrayPath<T>>(path: P, from: number, to: number) => void;
|
|
41
|
+
swapItems: <P extends BitArrayPath<T>>(path: P, indexA: number, indexB: number) => void;
|
|
42
|
+
undo: () => void;
|
|
43
|
+
redo: () => void;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
declare function useBitField<TValue = any>(path: string, config?: BitFieldDefinition<any>, options?: BitFieldOptions): {
|
|
47
|
+
value: vue.WritableComputedRef<string, any>;
|
|
48
|
+
displayValue: vue.ComputedRef<string>;
|
|
49
|
+
error: vue.ComputedRef<string | undefined>;
|
|
50
|
+
touched: vue.ComputedRef<boolean>;
|
|
51
|
+
invalid: vue.ComputedRef<boolean>;
|
|
52
|
+
isValidating: vue.ComputedRef<boolean>;
|
|
53
|
+
isDirty: vue.ComputedRef<boolean>;
|
|
54
|
+
isHidden: vue.ComputedRef<boolean>;
|
|
55
|
+
isRequired: vue.ComputedRef<boolean>;
|
|
56
|
+
fieldMeta: vue.ComputedRef<{
|
|
57
|
+
isDirty: boolean;
|
|
58
|
+
isValidating: boolean;
|
|
59
|
+
isHidden: boolean;
|
|
60
|
+
isRequired: boolean;
|
|
61
|
+
hasError: boolean;
|
|
62
|
+
}>;
|
|
63
|
+
setBlur: () => void;
|
|
64
|
+
setValue: (val: any) => any;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
declare function useBitArray<TForm extends object = any, P extends BitArrayPath<TForm> = BitArrayPath<TForm>>(path: P): {
|
|
68
|
+
fields: vue.ComputedRef<{
|
|
69
|
+
key: string;
|
|
70
|
+
value: _vue_reactivity.UnwrapRefSimple<BitArrayItem<BitPathValue<TForm, P>>>;
|
|
71
|
+
index: number;
|
|
72
|
+
}[]>;
|
|
73
|
+
length: vue.ComputedRef<number>;
|
|
74
|
+
append: (val: BitArrayItem<BitPathValue<TForm, P>>) => void;
|
|
75
|
+
prepend: (val: BitArrayItem<BitPathValue<TForm, P>>) => void;
|
|
76
|
+
insert: (index: number, val: BitArrayItem<BitPathValue<TForm, P>>) => void;
|
|
77
|
+
remove: (index: number) => void;
|
|
78
|
+
move: (from: number, to: number) => void;
|
|
79
|
+
swap: (a: number, b: number) => void;
|
|
80
|
+
replace: (items: BitArrayItem<BitPathValue<TForm, P>>[]) => void;
|
|
81
|
+
clear: () => void;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
declare function useBitScope(scopeName: string): {
|
|
85
|
+
scopeName: string;
|
|
86
|
+
status: vue.Ref<{
|
|
87
|
+
hasErrors: boolean;
|
|
88
|
+
isDirty: boolean;
|
|
89
|
+
errors: Record<string, string>;
|
|
90
|
+
}, ScopeStatus | {
|
|
91
|
+
hasErrors: boolean;
|
|
92
|
+
isDirty: boolean;
|
|
93
|
+
errors: Record<string, string>;
|
|
94
|
+
}>;
|
|
95
|
+
errors: vue.ComputedRef<Record<string, string>>;
|
|
96
|
+
validate: () => Promise<ValidateScopeResult>;
|
|
97
|
+
getErrors: () => Record<string, string>;
|
|
98
|
+
isValid: vue.ComputedRef<boolean>;
|
|
99
|
+
isDirty: vue.ComputedRef<boolean>;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
interface UseBitStepsResult {
|
|
103
|
+
step: vue.ComputedRef<number>;
|
|
104
|
+
stepIndex: vue.Ref<number>;
|
|
105
|
+
scope: vue.ComputedRef<string>;
|
|
106
|
+
next: () => Promise<boolean>;
|
|
107
|
+
prev: () => void;
|
|
108
|
+
goTo: (step: number) => void;
|
|
109
|
+
isFirst: vue.ComputedRef<boolean>;
|
|
110
|
+
isLast: vue.ComputedRef<boolean>;
|
|
111
|
+
status: vue.Ref<ScopeStatus>;
|
|
112
|
+
errors: vue.ComputedRef<Record<string, string>>;
|
|
113
|
+
isValid: vue.ComputedRef<boolean>;
|
|
114
|
+
isDirty: vue.ComputedRef<boolean>;
|
|
115
|
+
validate: () => Promise<ValidateScopeResult>;
|
|
116
|
+
getErrors: () => Record<string, string>;
|
|
117
|
+
}
|
|
118
|
+
declare function useBitSteps(scopeNames: string[]): UseBitStepsResult;
|
|
119
|
+
|
|
120
|
+
declare function useBitWatch<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): vue.DeepReadonly<vue.UnwrapNestedRefs<[BitPathValue<TForm, P>] extends [vue.Ref<any, any>] ? _vue_shared.IfAny<vue.Ref<any, any> & BitPathValue<TForm, P>, vue.Ref<vue.Ref<any, any> & BitPathValue<TForm, P>, vue.Ref<any, any> & BitPathValue<TForm, P>>, vue.Ref<any, any> & BitPathValue<TForm, P>> : vue.Ref<vue.UnwrapRef<BitPathValue<TForm, P>>, BitPathValue<TForm, P> | vue.UnwrapRef<BitPathValue<TForm, P>>>>>;
|
|
121
|
+
|
|
122
|
+
export { ScopeStatus, ValidateScopeResult, provideBitStore, useBitArray, useBitField, useBitForm, useBitScope, useBitSteps, useBitStore, useBitWatch };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{d as R,e as h,h as x,i as T}from"../chunk-ZI3XHI4I.js";import{inject as U,provide as O}from"vue";var w=Symbol("BIT_STORE");function C(e){O(w,e)}function d(){let e=U(w);if(!e)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return e}import{computed as E,onUnmounted as q,shallowRef as H,ref as D}from"vue";function K(){let e=d(),t=H(e.getState()),o=D(null),s=D(null),n=e.subscribe(()=>{t.value={...e.getState()}});q(n);let i=()=>t.value.values,m=()=>t.value.errors,f=()=>t.value.touched,g=E(()=>t.value.isValid),r=E(()=>t.value.isSubmitting),u=E(()=>t.value.isDirty),c=E(()=>(t.value,e.canUndo)),p=E(()=>(t.value,e.canRedo));return{store:e,isValid:g,isSubmitting:r,isDirty:u,canUndo:c,canRedo:p,getValues:i,getErrors:m,getTouched:f,submit:S=>b=>(b?.preventDefault?.(),e.submit(S)),onSubmit:S=>b=>(b?.preventDefault?.(),o.value=null,e.submit(async B=>{try{let a=await S(B);s.value=a,o.value=null}catch(a){x(a)?e.setServerErrors(T(a)):o.value=a instanceof Error?a:new Error(String(a))}})),submitError:o,lastResponse:s,reset:()=>{e.reset(),o.value=null,s.value=null},validate:e.validate.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),registerMask:e.registerMask.bind(e),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),undo:e.undo.bind(e),redo:e.redo.bind(e)}}import{computed as v,onUnmounted as _,shallowRef as L}from"vue";function W(e,t,o){let s=d();t&&s.registerField(e,t);let n=o?.mask??s.config.fields?.[e]?.mask,i=n?typeof n=="string"?s.config.masks?.[n]:n:void 0,m=L(s.getState()),f=s.subscribe(()=>{m.value=s.getState()});_(()=>{f(),s.unregisterField&&s.unregisterField(e)});let g=v(()=>h(m.value.values,e)),r=v(()=>{let l=g.value;return l==null||l===""?"":i?i.format(l):String(l)}),u=v({get:()=>r.value,set:l=>{if(!i){s.setField(e,l);return}s.setField(e,i.parse(String(l??"")))}}),c=v(()=>m.value.touched[e]?m.value.errors[e]:void 0),p=v(()=>!!m.value.touched[e]),V=v(()=>!!(p.value&&c.value)),I=v(()=>(m.value,s.isFieldValidating(e))),S=v(()=>(m.value,s.isFieldDirty(e))),b=v(()=>(m.value,s.isHidden(e))),B=v(()=>(m.value,s.isRequired(e))),a=v(()=>({isDirty:S.value,isValidating:I.value,isHidden:b.value,isRequired:B.value,hasError:!!c.value}));return{value:u,displayValue:r,error:c,touched:p,invalid:V,isValidating:I,isDirty:S,isHidden:b,isRequired:B,fieldMeta:a,setBlur:()=>s.blurField(e),setValue:l=>u.value=l}}import{ref as k,computed as A,onUnmounted as $}from"vue";var F=()=>Math.random().toString(36).substring(2,9);function Y(e){let t=d(),o=()=>{let r=h(t.getState().values,e);return Array.isArray(r)?r:[]},s=o(),n=k(s),i=k(s.map(F)),m=t.subscribe(()=>{let r=o();if(n.value=[...r],r.length!==i.value.length){let u=[...i.value];if(r.length>u.length){let c=r.length-u.length,p=Array.from({length:c},F);i.value=[...u,...p]}else i.value=u.slice(0,r.length)}});$(()=>{m(),t.unregisterPrefix&&t.unregisterPrefix(`${e}.`)});let f=A(()=>n.value.map((r,u)=>({key:i.value[u]||`temp-${u}`,value:r,index:u}))),g=A(()=>n.value.length);return{fields:f,length:g,append:r=>{i.value.push(F()),t.pushItem(e,r)},prepend:r=>{i.value.unshift(F()),t.prependItem(e,r)},insert:(r,u)=>{i.value.splice(r,0,F()),t.insertItem(e,r,u)},remove:r=>{i.value.splice(r,1),t.removeItem(e,r)},move:(r,u)=>{let c=[...i.value],[p]=c.splice(r,1);c.splice(u,0,p),i.value=c,t.moveItem(e,r,u)},swap:(r,u)=>{let c=[...i.value];[c[r],c[u]]=[c[u],c[r]],i.value=c,t.swapItems(e,r,u)},replace:r=>{i.value=r.map(F),t.setField(e,r)},clear:()=>{i.value=[],t.setField(e,[])}}}import{ref as z,computed as P,onMounted as G,onUnmounted as J}from"vue";function Q(e,t){let o=Object.keys(e),s=Object.keys(t);return o.length!==s.length?!1:o.every(n=>e[n]===t[n])}function X(e){let t=d(),o=z(t.getStepStatus(e)),s;G(()=>{s=t.subscribe(()=>{let r=t.getStepStatus(e);(r.hasErrors!==o.value.hasErrors||r.isDirty!==o.value.isDirty||!Q(r.errors,o.value.errors))&&(o.value=r)})}),J(()=>{s?.()});let n=async()=>{let r=await t.validate({scope:e}),u=t.getStepErrors(e);return{valid:r,errors:u}},i=()=>t.getStepErrors(e),m=P(()=>!o.value.hasErrors),f=P(()=>o.value.isDirty),g=P(()=>o.value.errors);return{scopeName:e,status:o,errors:g,validate:n,getErrors:i,isValid:m,isDirty:f}}import{ref as j,computed as y,watch as Z,onMounted as N,onUnmounted as ee}from"vue";function te(e,t){let o=Object.keys(e),s=Object.keys(t);return o.length!==s.length?!1:o.every(n=>e[n]===t[n])}function re(e){let t=d(),o=j(0),s=y(()=>e[o.value]??""),n=j(t.getStepStatus(s.value)),i;Z(s,a=>{n.value=t.getStepStatus(a)});let m=()=>{let a=s.value,l=t.getStepStatus(a);(l.hasErrors!==n.value.hasErrors||l.isDirty!==n.value.isDirty||!te(l.errors,n.value.errors))&&(n.value=l)};N(()=>{i=t.subscribe(m)}),ee(()=>{i?.()});let f=async()=>{let a=s.value,l=await t.validate({scope:a}),M=t.getStepErrors(a);return{valid:l,errors:M}},g=()=>t.getStepErrors(s.value),r=async()=>{let a=s.value,l=await t.validate({scope:a});return l&&(o.value=Math.min(o.value+1,e.length-1)),l},u=()=>{o.value=Math.max(o.value-1,0)},c=a=>{o.value=Math.max(0,Math.min(a-1,e.length-1))},p=y(()=>o.value+1),V=y(()=>o.value===0),I=y(()=>o.value>=e.length-1),S=y(()=>!n.value.hasErrors),b=y(()=>n.value.isDirty),B=y(()=>n.value.errors);return{step:p,stepIndex:o,scope:s,next:r,prev:u,goTo:c,isFirst:V,isLast:I,status:n,errors:B,isValid:S,isDirty:b,validate:f,getErrors:g}}import{ref as se,onUnmounted as oe,readonly as ne}from"vue";function ie(e){let t=d(),o=h(t.getState().values,e),s=se(o),n=t.watch(e,i=>{R(s.value,i)||(s.value=i)});return oe(n),ne(s)}export{C as provideBitStore,Y as useBitArray,W as useBitField,K as useBitForm,X as useBitScope,re as useBitSteps,d as useBitStore,ie as useBitWatch};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/vue/context.ts","../../src/vue/use-bit-form.ts","../../src/vue/use-bit-field.ts","../../src/vue/use-bit-array.ts","../../src/vue/use-bit-scope.ts","../../src/vue/use-bit-steps.ts","../../src/vue/use-bit-watch.ts"],"sourcesContent":["import { inject, provide, InjectionKey } from \"vue\";\nimport { BitStore } from \"../core\";\n\n// Chave única para evitar colisões\nexport const BIT_STORE_KEY: InjectionKey<BitStore<any>> = Symbol(\"BIT_STORE\");\n\nexport function provideBitStore(store: BitStore<any>) {\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 BitStore<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(store.getState());\n const submitError = ref<Error | null>(null);\n const lastResponse = ref<unknown>(null);\n\n const unsubscribe = store.subscribe(() => {\n state.value = { ...store.getState() };\n });\n\n onUnmounted(unsubscribe);\n\n const getValues = () => state.value.values;\n const getErrors = () => state.value.errors;\n const getTouched = () => state.value.touched;\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 canUndo = computed(() => {\n state.value;\n return store.canUndo;\n });\n\n const canRedo = computed(() => {\n state.value;\n return store.canRedo;\n });\n\n const onSubmit = (handler: (values: T) => Promise<unknown>) => {\n return (e?: Event) => {\n e?.preventDefault?.();\n submitError.value = null;\n return store.submit(async (values) => {\n try {\n const result = await handler(values);\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 return {\n store,\n isValid,\n isSubmitting,\n isDirty,\n canUndo,\n canRedo,\n getValues,\n getErrors,\n getTouched,\n submit: (onSuccess: (values: T) => void | Promise<void>) => {\n return (e?: Event) => {\n e?.preventDefault?.();\n return store.submit(onSuccess);\n };\n },\n onSubmit,\n submitError,\n lastResponse,\n reset,\n validate: store.validate.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 registerMask: store.registerMask.bind(store),\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 undo: store.undo.bind(store),\n redo: store.redo.bind(store),\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { BitFieldOptions, BitFieldDefinition, getDeepValue } from \"../core\";\n\nexport function useBitField<TValue = any>(\n path: string,\n config?: BitFieldDefinition<any>,\n options?: BitFieldOptions,\n) {\n const store = useBitStore<any>();\n\n if (config) {\n store.registerField(path as string, config as any);\n }\n\n const maskOption =\n options?.mask ?? store.config.fields?.[path as string]?.mask;\n const resolvedMask = maskOption\n ? typeof maskOption === \"string\"\n ? store.config.masks?.[maskOption]\n : maskOption\n : undefined;\n\n const state = shallowRef(store.getState());\n\n const unsubscribe = store.subscribe(() => {\n state.value = store.getState();\n });\n\n onUnmounted(() => {\n unsubscribe();\n if (store.unregisterField) {\n store.unregisterField(path as string);\n }\n });\n\n const rawValue = computed(\n () => getDeepValue(state.value.values, path as string) as TValue,\n );\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 as any) : String(val);\n });\n\n const value = computed({\n get: () => displayValue.value,\n set: (val: any) => {\n if (!resolvedMask) {\n store.setField(path, val);\n return;\n }\n\n store.setField(path, resolvedMask.parse(String(val ?? \"\")));\n },\n });\n\n const error = computed(() =>\n state.value.touched[path] ? state.value.errors[path] : undefined,\n );\n const touched = computed(() => !!state.value.touched[path]);\n const invalid = computed(() => !!(touched.value && error.value));\n\n const isValidating = computed(() => {\n state.value;\n return store.isFieldValidating(path);\n });\n\n const isDirty = computed(() => {\n state.value;\n return store.isFieldDirty(path);\n });\n\n const isHidden = computed(() => {\n state.value;\n return store.isHidden(path);\n });\n\n const isRequired = computed(() => {\n state.value;\n return store.isRequired(path);\n });\n\n const fieldMeta = computed(() => ({\n isDirty: isDirty.value,\n isValidating: isValidating.value,\n isHidden: isHidden.value,\n isRequired: isRequired.value,\n hasError: !!error.value,\n }));\n\n return {\n value,\n displayValue,\n error,\n touched,\n invalid,\n isValidating,\n isDirty,\n isHidden,\n isRequired,\n fieldMeta,\n setBlur: () => store.blurField(path),\n setValue: (val: any) => (value.value = val),\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(\n store.getState().values,\n path as string,\n ) as BitPathValue<TForm, P> | 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.subscribe(() => {\n const newValues = getSnapshot();\n values.value = [...newValues];\n\n if (newValues.length !== ids.value.length) {\n const currentIds = [...ids.value];\n if (newValues.length > currentIds.length) {\n const diff = newValues.length - currentIds.length;\n const newIds = Array.from({ length: diff }, generateId);\n ids.value = [...currentIds, ...newIds];\n } else {\n ids.value = currentIds.slice(0, newValues.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(path as unknown as BitPath<TForm>, items as any);\n },\n clear: () => {\n ids.value = [];\n store.setField(path as unknown as BitPath<TForm>, [] as any);\n },\n };\n}\n","import { ref, computed, onMounted, onUnmounted } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nfunction errorsEqual(\n a: Record<string, string>,\n b: Record<string, string>,\n): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n return keysA.every((k) => a[k] === b[k]);\n}\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n const status = ref<ScopeStatus>(store.getStepStatus(scopeName));\n let unsubscribe: () => void;\n\n onMounted(() => {\n unsubscribe = store.subscribe(() => {\n const newStatus = store.getStepStatus(scopeName);\n if (\n newStatus.hasErrors !== status.value.hasErrors ||\n newStatus.isDirty !== status.value.isDirty ||\n !errorsEqual(newStatus.errors, status.value.errors)\n ) {\n status.value = newStatus;\n }\n });\n });\n\n onUnmounted(() => {\n unsubscribe?.();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const valid = await store.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.getStepErrors(scopeName);\n\n const isValid = computed(() => !status.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.errors);\n\n return {\n scopeName,\n status,\n errors,\n validate,\n getErrors,\n isValid,\n isDirty,\n };\n}\n","import { ref, computed, watch, onMounted, onUnmounted } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { useBitStore } from \"./context\";\n\nfunction errorsEqual(\n a: Record<string, string>,\n b: Record<string, string>,\n): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n return keysA.every((k) => a[k] === b[k]);\n}\n\nexport interface UseBitStepsResult {\n step: import(\"vue\").ComputedRef<number>;\n stepIndex: import(\"vue\").Ref<number>;\n scope: import(\"vue\").ComputedRef<string>;\n next: () => Promise<boolean>;\n prev: () => void;\n goTo: (step: number) => void;\n isFirst: import(\"vue\").ComputedRef<boolean>;\n isLast: import(\"vue\").ComputedRef<boolean>;\n status: import(\"vue\").Ref<ScopeStatus>;\n errors: import(\"vue\").ComputedRef<Record<string, string>>;\n isValid: import(\"vue\").ComputedRef<boolean>;\n isDirty: import(\"vue\").ComputedRef<boolean>;\n validate: () => Promise<ValidateScopeResult>;\n getErrors: () => Record<string, string>;\n}\n\nexport function useBitSteps(scopeNames: string[]): UseBitStepsResult {\n const store = useBitStore();\n const stepIndex = ref(0);\n\n const scope = computed(() => scopeNames[stepIndex.value] ?? \"\");\n const status = ref<ScopeStatus>(store.getStepStatus(scope.value));\n let unsubscribe: () => void;\n\n watch(scope, (newScope) => {\n status.value = store.getStepStatus(newScope);\n });\n\n const updateStatus = () => {\n const scopeName = scope.value;\n const newStatus = store.getStepStatus(scopeName);\n if (\n newStatus.hasErrors !== status.value.hasErrors ||\n newStatus.isDirty !== status.value.isDirty ||\n !errorsEqual(newStatus.errors, status.value.errors)\n ) {\n status.value = newStatus;\n }\n };\n\n onMounted(() => {\n unsubscribe = store.subscribe(updateStatus);\n });\n\n onUnmounted(() => {\n unsubscribe?.();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const scopeName = scope.value;\n const valid = await store.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.getStepErrors(scope.value);\n\n const next = async (): Promise<boolean> => {\n const scopeName = scope.value;\n const valid = await store.validate({ scope: scopeName });\n if (valid) {\n stepIndex.value = Math.min(stepIndex.value + 1, scopeNames.length - 1);\n }\n return valid;\n };\n\n const prev = () => {\n stepIndex.value = Math.max(stepIndex.value - 1, 0);\n };\n\n const goTo = (targetStep: number) => {\n stepIndex.value = Math.max(\n 0,\n Math.min(targetStep - 1, scopeNames.length - 1),\n );\n };\n\n const step = computed(() => stepIndex.value + 1);\n const isFirst = computed(() => stepIndex.value === 0);\n const isLast = computed(() => stepIndex.value >= scopeNames.length - 1);\n const isValid = computed(() => !status.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.errors);\n\n return {\n step,\n stepIndex,\n scope,\n next,\n prev,\n goTo,\n isFirst,\n isLast,\n status,\n errors,\n isValid,\n isDirty,\n validate,\n getErrors,\n };\n}\n","import { ref, onUnmounted, readonly } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport {\n getDeepValue,\n deepEqual,\n BitPath,\n BitPathValue,\n} from \"../core\";\n\nexport function useBitWatch<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const initialValue = getDeepValue(\n store.getState().values,\n path as string,\n ) as BitPathValue<TForm, P>;\n const value = ref<BitPathValue<TForm, P>>(initialValue);\n\n const unsubscribe = store.watch(path, (newValue) => {\n if (!deepEqual(value.value, newValue)) {\n value.value = newValue as BitPathValue<TForm, P>;\n }\n });\n\n onUnmounted(unsubscribe);\n\n return readonly(value);\n}\n"],"mappings":"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","names":["inject","provide","BIT_STORE_KEY","provideBitStore","store","useBitStore","computed","onUnmounted","shallowRef","ref","useBitForm","store","useBitStore","state","shallowRef","submitError","ref","lastResponse","unsubscribe","onUnmounted","getValues","getErrors","getTouched","isValid","computed","isSubmitting","isDirty","canUndo","canRedo","onSuccess","e","handler","values","result","err","isValidationErrorShape","extractServerErrors","computed","onUnmounted","shallowRef","useBitField","path","config","options","store","useBitStore","maskOption","resolvedMask","state","shallowRef","unsubscribe","onUnmounted","rawValue","computed","getDeepValue","displayValue","val","value","error","touched","invalid","isValidating","isDirty","isHidden","isRequired","fieldMeta","ref","computed","onUnmounted","generateId","useBitArray","path","store","useBitStore","getSnapshot","val","getDeepValue","initialValues","values","ref","ids","unsubscribe","newValues","currentIds","diff","newIds","onUnmounted","fields","computed","v","i","length","index","from","to","id","a","b","items","ref","computed","onMounted","onUnmounted","errorsEqual","a","b","keysA","keysB","k","useBitScope","scopeName","store","useBitStore","status","ref","unsubscribe","onMounted","newStatus","onUnmounted","validate","valid","errors","getErrors","isValid","computed","isDirty","ref","computed","watch","onMounted","onUnmounted","errorsEqual","a","b","keysA","keysB","k","useBitSteps","scopeNames","store","useBitStore","stepIndex","ref","scope","computed","status","unsubscribe","watch","newScope","updateStatus","scopeName","newStatus","onMounted","onUnmounted","validate","valid","errors","getErrors","next","prev","goTo","targetStep","step","isFirst","isLast","isValid","isDirty","ref","onUnmounted","readonly","useBitWatch","path","store","useBitStore","initialValue","getDeepValue","value","ref","unsubscribe","newValue","deepEqual","onUnmounted","readonly"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lehnihon/bit-form",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Gerenciamento de estado de formulários agnóstico e performático",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/lehnihon/bit-form.git"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/lehnihon/bit-form#readme",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/lehnihon/bit-form/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"form",
|
|
19
|
+
"validation",
|
|
20
|
+
"react",
|
|
21
|
+
"vue",
|
|
22
|
+
"angular",
|
|
23
|
+
"react-native",
|
|
24
|
+
"form-state",
|
|
25
|
+
"form-validation",
|
|
26
|
+
"mask",
|
|
27
|
+
"framework-agnostic"
|
|
28
|
+
],
|
|
29
|
+
"type": "module",
|
|
30
|
+
"main": "./dist/index.cjs",
|
|
31
|
+
"module": "./dist/index.js",
|
|
32
|
+
"types": "./dist/index.d.ts",
|
|
33
|
+
"bin": {
|
|
34
|
+
"bit-form": "./dist/cli/index.cjs"
|
|
35
|
+
},
|
|
36
|
+
"exports": {
|
|
37
|
+
".": {
|
|
38
|
+
"types": "./dist/index.d.ts",
|
|
39
|
+
"import": "./dist/index.js",
|
|
40
|
+
"require": "./dist/index.cjs"
|
|
41
|
+
},
|
|
42
|
+
"./react": {
|
|
43
|
+
"types": "./dist/react/index.d.ts",
|
|
44
|
+
"import": "./dist/react/index.js",
|
|
45
|
+
"require": "./dist/react/index.cjs"
|
|
46
|
+
},
|
|
47
|
+
"./react-native": {
|
|
48
|
+
"types": "./dist/react-native/index.d.ts",
|
|
49
|
+
"import": "./dist/react-native/index.js",
|
|
50
|
+
"require": "./dist/react-native/index.cjs"
|
|
51
|
+
},
|
|
52
|
+
"./vue": {
|
|
53
|
+
"types": "./dist/vue/index.d.ts",
|
|
54
|
+
"import": "./dist/vue/index.js",
|
|
55
|
+
"require": "./dist/vue/index.cjs"
|
|
56
|
+
},
|
|
57
|
+
"./angular": {
|
|
58
|
+
"types": "./dist/angular/index.d.ts",
|
|
59
|
+
"import": "./dist/angular/index.js",
|
|
60
|
+
"require": "./dist/angular/index.cjs"
|
|
61
|
+
},
|
|
62
|
+
"./resolvers/*": {
|
|
63
|
+
"types": "./dist/resolvers/*.d.ts",
|
|
64
|
+
"import": "./dist/resolvers/*.js",
|
|
65
|
+
"require": "./dist/resolvers/*.cjs"
|
|
66
|
+
},
|
|
67
|
+
"./devtools": {
|
|
68
|
+
"types": "./dist/devtools/index.d.ts",
|
|
69
|
+
"import": "./dist/devtools/index.js",
|
|
70
|
+
"require": "./dist/devtools/index.cjs"
|
|
71
|
+
},
|
|
72
|
+
"./devtools/bridge": {
|
|
73
|
+
"types": "./dist/devtools/bridge.d.ts",
|
|
74
|
+
"import": "./dist/devtools/bridge.js",
|
|
75
|
+
"require": "./dist/devtools/bridge.cjs"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"files": [
|
|
79
|
+
"dist",
|
|
80
|
+
"README.md",
|
|
81
|
+
"LICENSE"
|
|
82
|
+
],
|
|
83
|
+
"scripts": {
|
|
84
|
+
"sync": "npm run build && yalc push",
|
|
85
|
+
"dev": "tsup --watch",
|
|
86
|
+
"build": "tsup",
|
|
87
|
+
"test": "vitest run",
|
|
88
|
+
"test:watch": "vitest",
|
|
89
|
+
"test:coverage": "vitest run --coverage",
|
|
90
|
+
"clean": "rm -rf dist && rm -f *.tsbuildinfo",
|
|
91
|
+
"lint": "npm run clean && tsc --build && tsc -p tsconfig.test.json",
|
|
92
|
+
"prepublishOnly": "npm run build && npm run test",
|
|
93
|
+
"release": "npm publish",
|
|
94
|
+
"dry-run": "npm publish --dry-run",
|
|
95
|
+
"bundle-ctx": "repomix"
|
|
96
|
+
},
|
|
97
|
+
"peerDependencies": {
|
|
98
|
+
"@angular/core": ">=16.0.0",
|
|
99
|
+
"joi": "^17.0.0",
|
|
100
|
+
"react": ">=16.8.0",
|
|
101
|
+
"rxjs": "^7.0.0",
|
|
102
|
+
"vue": ">=3.0.0",
|
|
103
|
+
"yup": "^1.0.0",
|
|
104
|
+
"zod": "^3.0.0"
|
|
105
|
+
},
|
|
106
|
+
"peerDependenciesMeta": {
|
|
107
|
+
"@angular/core": {
|
|
108
|
+
"optional": true
|
|
109
|
+
},
|
|
110
|
+
"react": {
|
|
111
|
+
"optional": true
|
|
112
|
+
},
|
|
113
|
+
"vue": {
|
|
114
|
+
"optional": true
|
|
115
|
+
},
|
|
116
|
+
"zod": {
|
|
117
|
+
"optional": true
|
|
118
|
+
},
|
|
119
|
+
"yup": {
|
|
120
|
+
"optional": true
|
|
121
|
+
},
|
|
122
|
+
"joi": {
|
|
123
|
+
"optional": true
|
|
124
|
+
},
|
|
125
|
+
"rxjs": {
|
|
126
|
+
"optional": true
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"devDependencies": {
|
|
130
|
+
"@angular/common": "^21.1.3",
|
|
131
|
+
"@angular/compiler": "^21.1.3",
|
|
132
|
+
"@angular/core": "^21.1.3",
|
|
133
|
+
"@angular/platform-browser": "^21.1.3",
|
|
134
|
+
"@angular/platform-browser-dynamic": "^21.1.3",
|
|
135
|
+
"@testing-library/jest-dom": "^6.6.3",
|
|
136
|
+
"@testing-library/react": "^16.2.0",
|
|
137
|
+
"@types/node": "^22.19.11",
|
|
138
|
+
"@types/react": "^19.0.8",
|
|
139
|
+
"@types/react-dom": "^19.0.3",
|
|
140
|
+
"@types/react-native": "^0.72.8",
|
|
141
|
+
"@types/ws": "^8.18.1",
|
|
142
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
143
|
+
"@vitejs/plugin-vue": "^5.2.1",
|
|
144
|
+
"@vitest/coverage-v8": "^3.0.5",
|
|
145
|
+
"@vue/test-utils": "^2.4.6",
|
|
146
|
+
"joi": "^17.13.3",
|
|
147
|
+
"jsdom": "^26.0.0",
|
|
148
|
+
"react": "^19.0.0",
|
|
149
|
+
"react-dom": "^19.0.0",
|
|
150
|
+
"repomix": "^1.11.1",
|
|
151
|
+
"rxjs": "^7.8.1",
|
|
152
|
+
"tsup": "^8.3.6",
|
|
153
|
+
"typescript": "^5.7.3",
|
|
154
|
+
"vitest": "^3.0.5",
|
|
155
|
+
"vue": "^3.5.13",
|
|
156
|
+
"yup": "^1.7.1",
|
|
157
|
+
"zod": "^3.25.7",
|
|
158
|
+
"zone.js": "^0.16.0"
|
|
159
|
+
}
|
|
160
|
+
}
|