@codeleap/form 5.0.1 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codeleap/form",
3
- "version": "5.0.1",
3
+ "version": "5.0.2",
4
4
  "main": "src/index.ts",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -9,9 +9,9 @@
9
9
  "directory": "packages/form"
10
10
  },
11
11
  "devDependencies": {
12
- "@codeleap/config": "5.0.1",
13
- "@codeleap/types": "5.0.1",
14
- "@codeleap/store": "5.0.1",
12
+ "@codeleap/config": "5.0.2",
13
+ "@codeleap/types": "5.0.2",
14
+ "@codeleap/store": "5.0.2",
15
15
  "zod": "3.23.8",
16
16
  "ts-node-dev": "1.1.8"
17
17
  },
@@ -20,8 +20,8 @@
20
20
  "playground": "bun src/test.ts"
21
21
  },
22
22
  "peerDependencies": {
23
- "@codeleap/types": "5.0.1",
24
- "@codeleap/store": "5.0.1",
23
+ "@codeleap/types": "5.0.2",
24
+ "@codeleap/store": "5.0.2",
25
25
  "zod": "*",
26
26
  "react": "18.2.0",
27
27
  "typescript": "5.5.2",
package/package.json.bak CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codeleap/form",
3
- "version": "5.0.1",
3
+ "version": "5.0.2",
4
4
  "main": "src/index.ts",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
package/src/lib/Field.ts CHANGED
@@ -113,6 +113,10 @@ export class Field<
113
113
  return value
114
114
  }
115
115
 
116
+ resetValue() {
117
+ this.setValue(this.initialValue)
118
+ }
119
+
116
120
  use(impl?: Partial<IFieldRef<T>>, deps?: any[]){
117
121
  const value = this.useValue()
118
122
 
package/src/lib/Form.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { createStateSlice, GlobalState, globalState } from "@codeleap/store"
2
-
3
2
  import { TypeGuards } from "@codeleap/types"
4
- import { useCallback, useEffect, useMemo, useRef, useState } from "react"
3
+ import { DependencyList, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react"
5
4
  import { FieldPaths, FieldPropertyTuples, FieldTuples, FormDef, FormValues, PropertyForKeys, ValidationResult } from "../types"
6
5
 
7
6
 
@@ -81,6 +80,19 @@ class Form<T extends FormDef> {
81
80
  return results
82
81
  }
83
82
 
83
+ setValues(values: Partial<FormValues<T>>) {
84
+ this.iterFields(([name, field]) => {
85
+ const value = values?.[name]
86
+ if (value) field.setValue(value)
87
+ })
88
+ }
89
+
90
+ resetValues() {
91
+ this.iterFields(([name, field]) => {
92
+ field.resetValue()
93
+ })
94
+ }
95
+
84
96
  attachState(){
85
97
  this.iterFields(([name, field]) => {
86
98
  field.options.name = name
@@ -127,13 +139,15 @@ class Form<T extends FormDef> {
127
139
  }
128
140
  return this.fields[field].props()
129
141
  }
130
-
131
142
 
132
- use<Selected>(selector: FormSelector<T, Selected>): Selected {
143
+ useSetValues(formValues?: Partial<FormValues<T>>, deps: DependencyList = []) {
144
+ useLayoutEffect(() => {
145
+ if (formValues) this.setValues(formValues)
146
+ }, deps)
147
+ }
133
148
 
134
-
149
+ use<Selected>(selector: FormSelector<T, Selected>): Selected {
135
150
  const [selected, setSelected] = useState(() => selector(this))
136
-
137
151
 
138
152
  const reselect = useCallback(() => {
139
153
  setSelected(selector(this))
@@ -147,14 +161,8 @@ class Form<T extends FormDef> {
147
161
  })
148
162
  }, [reselect])
149
163
 
150
-
151
-
152
164
  return selected
153
165
  }
154
-
155
-
156
-
157
-
158
166
  }
159
167
 
160
168