solid-hook-form 2.2.0 → 2.3.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/dist/main.d.ts CHANGED
@@ -72,6 +72,8 @@ type ResetOptions = {
72
72
  keepValues?: boolean;
73
73
  keepTouched?: boolean;
74
74
  keepDirty?: boolean;
75
+ keepIsSubmitted?: boolean;
76
+ keepSubmitCount?: boolean;
75
77
  };
76
78
  type Reset<F extends FormValues> = (values?: Partial<F>, options?: ResetOptions) => void;
77
79
 
@@ -108,6 +110,8 @@ type CreateFormReturn<F extends FormValues = FormValues> = {
108
110
  isDirty: Accessor<boolean>;
109
111
  touchedFields: Accessor<TouchedFields<F>>;
110
112
  dirtyFields: Accessor<DirtyFields<F>>;
113
+ isSubmitted: Accessor<boolean>;
114
+ submitCount: Accessor<number>;
111
115
  };
112
116
  values: Accessor<F>;
113
117
  errors: FieldErrors<F>;
package/dist/main.js CHANGED
@@ -146,6 +146,23 @@ var createRules = () => {
146
146
  };
147
147
  return { rules, addRule, getRule };
148
148
  };
149
+ var createSubmit = () => {
150
+ const [isSubmitted, setIsSubmitted] = createSignal(false);
151
+ const [submitCount, setSubmitCount] = createSignal(0);
152
+ const logSubmit = () => {
153
+ setIsSubmitted(true);
154
+ setSubmitCount((prev) => prev + 1);
155
+ };
156
+ const resetSubmit = (keepIsSubmitted, keepSubmitCount) => {
157
+ if (!keepIsSubmitted) {
158
+ setIsSubmitted(false);
159
+ }
160
+ if (!keepSubmitCount) {
161
+ setSubmitCount(0);
162
+ }
163
+ };
164
+ return { isSubmitted, submitCount, logSubmit, resetSubmit };
165
+ };
149
166
  var createTouchedFields = () => {
150
167
  const [touchedFields, setTouchedFields] = createSignal({});
151
168
  const addTouched = (name) => {
@@ -283,6 +300,7 @@ var createForm = (arg) => {
283
300
  const { errors, appendError, removeError, resetErrors, getError } = createErrors();
284
301
  const { touchedFields, addTouched, resetTouched } = createTouchedFields();
285
302
  const { dirtyFields, isDirty, checkDirty, resetDirty } = createDirtyFields(defaultValues);
303
+ const { isSubmitted, submitCount, logSubmit, resetSubmit } = createSubmit();
286
304
  const isValid = createMemo(() => {
287
305
  return !Object.keys(errors).length;
288
306
  });
@@ -418,6 +436,7 @@ var createForm = (arg) => {
418
436
  const handleSubmit = (onSubmit, onError) => {
419
437
  return async (event) => {
420
438
  event.preventDefault();
439
+ logSubmit();
421
440
  await validateAllFields();
422
441
  if (isValid()) {
423
442
  onSubmit(getValues());
@@ -428,6 +447,7 @@ var createForm = (arg) => {
428
447
  };
429
448
  };
430
449
  const reset = (values2, options = {}) => {
450
+ resetSubmit(options.keepIsSubmitted, options.keepSubmitCount);
431
451
  resetErrors(options.keepErrors);
432
452
  resetTouched(options.keepTouched);
433
453
  resetDirty(options.keepDirty);
@@ -458,7 +478,9 @@ var createForm = (arg) => {
458
478
  isValid,
459
479
  isDirty,
460
480
  touchedFields,
461
- dirtyFields
481
+ dirtyFields,
482
+ isSubmitted,
483
+ submitCount
462
484
  },
463
485
  values,
464
486
  errors,
package/dist/main.jsx CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/create_form.ts
2
- import { createMemo as createMemo2, createSignal as createSignal3 } from "solid-js";
2
+ import { createMemo as createMemo2, createSignal as createSignal4 } from "solid-js";
3
3
 
4
4
  // src/logic/create_dirty_fields.ts
5
5
  import { createMemo, createSignal } from "solid-js";
@@ -150,10 +150,30 @@ var createRules = () => {
150
150
  return { rules, addRule, getRule };
151
151
  };
152
152
 
153
- // src/logic/create_touched_fields.ts
153
+ // src/logic/create_submit.ts
154
154
  import { createSignal as createSignal2 } from "solid-js";
155
+ var createSubmit = () => {
156
+ const [isSubmitted, setIsSubmitted] = createSignal2(false);
157
+ const [submitCount, setSubmitCount] = createSignal2(0);
158
+ const logSubmit = () => {
159
+ setIsSubmitted(true);
160
+ setSubmitCount((prev) => prev + 1);
161
+ };
162
+ const resetSubmit = (keepIsSubmitted, keepSubmitCount) => {
163
+ if (!keepIsSubmitted) {
164
+ setIsSubmitted(false);
165
+ }
166
+ if (!keepSubmitCount) {
167
+ setSubmitCount(0);
168
+ }
169
+ };
170
+ return { isSubmitted, submitCount, logSubmit, resetSubmit };
171
+ };
172
+
173
+ // src/logic/create_touched_fields.ts
174
+ import { createSignal as createSignal3 } from "solid-js";
155
175
  var createTouchedFields = () => {
156
- const [touchedFields, setTouchedFields] = createSignal2({});
176
+ const [touchedFields, setTouchedFields] = createSignal3({});
157
177
  const addTouched = (name) => {
158
178
  setTouchedFields((prev) => {
159
179
  const newState = { ...prev };
@@ -285,10 +305,11 @@ var createForm = (arg) => {
285
305
  const { defaultValues, mode = "onChange", resolver } = arg;
286
306
  const { fields, getField, setField } = createFields();
287
307
  const { rules, addRule, getRule } = createRules();
288
- const [values, setValues] = createSignal3(structuredClone(defaultValues));
308
+ const [values, setValues] = createSignal4(structuredClone(defaultValues));
289
309
  const { errors, appendError, removeError, resetErrors, getError } = createErrors();
290
310
  const { touchedFields, addTouched, resetTouched } = createTouchedFields();
291
311
  const { dirtyFields, isDirty, checkDirty, resetDirty } = createDirtyFields(defaultValues);
312
+ const { isSubmitted, submitCount, logSubmit, resetSubmit } = createSubmit();
292
313
  const isValid = createMemo2(() => {
293
314
  return !Object.keys(errors).length;
294
315
  });
@@ -424,6 +445,7 @@ var createForm = (arg) => {
424
445
  const handleSubmit = (onSubmit, onError) => {
425
446
  return async (event) => {
426
447
  event.preventDefault();
448
+ logSubmit();
427
449
  await validateAllFields();
428
450
  if (isValid()) {
429
451
  onSubmit(getValues());
@@ -434,6 +456,7 @@ var createForm = (arg) => {
434
456
  };
435
457
  };
436
458
  const reset = (values2, options = {}) => {
459
+ resetSubmit(options.keepIsSubmitted, options.keepSubmitCount);
437
460
  resetErrors(options.keepErrors);
438
461
  resetTouched(options.keepTouched);
439
462
  resetDirty(options.keepDirty);
@@ -464,7 +487,9 @@ var createForm = (arg) => {
464
487
  isValid,
465
488
  isDirty,
466
489
  touchedFields,
467
- dirtyFields
490
+ dirtyFields,
491
+ isSubmitted,
492
+ submitCount
468
493
  },
469
494
  values,
470
495
  errors,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solid-hook-form",
3
- "version": "2.2.0",
3
+ "version": "2.3.0",
4
4
  "type": "module",
5
5
  "main": "./dist/main.js",
6
6
  "module": "./dist/main.js",