@colisweb/rescript-toolkit 4.8.0 → 4.8.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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/form/Reform.res +27 -11
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@colisweb/rescript-toolkit",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "clean": "rescript clean",
@@ -1,3 +1,5 @@
1
+ open ReactIntl
2
+
1
3
  module type Config = {
2
4
  type field<'a>
3
5
  type state
@@ -177,10 +179,13 @@ module Make = (Config: Config) => {
177
179
  ~schema=[]: Validation.schema,
178
180
  ~onSubmit,
179
181
  ~onSubmitFail=ignore,
180
- ~i18n=ReSchemaI18n.default,
181
- ~validationStrategy=OnDemand,
182
+ ~i18n=?,
183
+ ~validationStrategy=OnChange,
182
184
  (),
183
185
  ) => {
186
+ let intl = useIntl()
187
+ let i18n = i18n->Option.getWithDefault(Toolkit__FormValidationFunctions.i18n(intl))
188
+
184
189
  let (state, send) = ReactUpdate.useReducerWithMapState(
185
190
  (state, action) => {
186
191
  switch action {
@@ -252,6 +257,8 @@ module Make = (Config: Config) => {
252
257
  field,
253
258
  (Valid: fieldState),
254
259
  ))
260
+
261
+ self.send(SetFormState(Valid))
255
262
  self.send(SetFieldsState(newFieldsState))
256
263
  submit ? self.send(Submit) : ()
257
264
  }
@@ -327,16 +334,25 @@ module Make = (Config: Config) => {
327
334
  ),
328
335
  })
329
336
  | FieldArrayUpdateByIndex(field, value, index) =>
330
- Update({
331
- ...state,
332
- values: Config.set(
333
- state.values,
334
- field,
335
- Config.get(state.values, field)->Belt.Array.mapWithIndex((i, currentValue) =>
336
- i == index ? value : currentValue
337
+ UpdateWithSideEffects(
338
+ {
339
+ ...state,
340
+ values: Config.set(
341
+ state.values,
342
+ field,
343
+ Config.get(state.values, field)->Belt.Array.mapWithIndex((i, currentValue) =>
344
+ i == index ? value : currentValue
345
+ ),
337
346
  ),
338
- ),
339
- })
347
+ },
348
+ self => {
349
+ switch validationStrategy {
350
+ | OnChange => self.send(ValidateField(Field(field)))
351
+ | OnDemand => ()
352
+ }
353
+ None
354
+ },
355
+ )
340
356
  | SetFormState(newState) => Update({...state, formState: newState})
341
357
  | ResetForm =>
342
358
  Update({