npm package diff

Package: @forge/react

Versions: 10.6.1 - 10.6.2-next.0

Modified: package/out/hooks/useForm.js

Index: package/out/hooks/useForm.js
===================================================================
--- package/out/hooks/useForm.js
+++ package/out/hooks/useForm.js
@@ -52,27 +52,28 @@
                 additionalProps.defaultValue = (0, get_1.default)(defaultValues, fieldName);
             }
         }
         const isError = !!(0, get_1.default)(formState, `errors["${fieldName}"]`);
-        const onChangeOptions = {
+        const getOnChangeOptions = () => ({
             shouldDirty: true,
+            shouldTouch: true,
             // revalidate on change if the field has been touched(blurred) or if the form has been submitted previously
             shouldValidate: formState.submitCount > 0 || !!(0, get_1.default)(formState, `touchedFields["${fieldName}"]`)
-        };
+        });
         return {
             ...rest,
             onChange: (event) => {
                 // onChange is modified here to handle our controlled components as refs cannot be used
                 // handles Checkbox and Toggle
                 if (event?.target?.type === 'checkbox') {
-                    return Promise.resolve(setValue(fieldName, event.target.checked, onChangeOptions));
+                    return Promise.resolve(setValue(fieldName, event.target.checked, getOnChangeOptions()));
                 }
                 if (['number', 'text', 'textarea', 'radio', 'password'].includes(event?.target?.type)) {
-                    return Promise.resolve(setValue(fieldName, event.target.value, onChangeOptions));
+                    return Promise.resolve(setValue(fieldName, event.target.value, getOnChangeOptions()));
                 }
                 else {
                     // handles onChange arguments where the value is passed instead of an event object
-                    return Promise.resolve(setValue(fieldName, event, onChangeOptions));
+                    return Promise.resolve(setValue(fieldName, event, getOnChangeOptions()));
                 }
             },
             // The onBlur event from `register` is unintentionally setting the value to `undefined` when the field is blurred.
             // Replacing the onBlur event here to prevent this behaviour.

Modified: package/out/hooks/__test__/useForm.test.js

Index: package/out/hooks/__test__/useForm.test.js
===================================================================
--- package/out/hooks/__test__/useForm.test.js
+++ package/out/hooks/__test__/useForm.test.js
@@ -36,4 +36,14 @@
         const fieldProps = register('textfield');
         expect(fieldProps.defaultValue).toBe('test');
     });
 });
+describe('useForm onChange handler', () => {
+    const { result } = (0, react_hooks_1.renderHook)(() => (0, useForm_1.useForm)());
+    it('when onChange is triggered, the field in the form state should be marked as touched', () => {
+        const { register, formState } = result.current;
+        const { onChange } = register('username');
+        expect(formState.touchedFields.username).toBeUndefined();
+        onChange({ target: { value: 'test' } });
+        expect(formState.touchedFields.username).toBe(true);
+    });
+});

Modified: package/package.json

Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/react",
-  "version": "10.6.1",
+  "version": "10.6.2-next.0",
   "description": "Forge React reconciler",
   "author": "Atlassian",
   "license": "UNLICENSED",
   "main": "out/index.js",

Modified: package/out/hooks/useForm.d.ts.map

Index: package/out/hooks/useForm.d.ts.map
===================================================================
--- package/out/hooks/useForm.d.ts.map
+++ package/out/hooks/useForm.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../src/hooks/useForm.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EACX,YAAY,EACZ,SAAS,EACT,eAAe,EACf,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AAGzB,aAAK,oBAAoB,GAAG,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,KAAK,IAAI,CAAC;AAElF,aAAK,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAAG;IAC7D,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IAGpB,cAAc,CAAC,EAAE,GAAG,CAAC;CACtB,CAAC;AAEF,wBAAgB,OAAO,CAAC,YAAY,SAAS,WAAW,GAAG,WAAW,EACpE,KAAK,GAAE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,eAAe,CAAM;4BAK9B,MAAM;0BAuBxB,UAAU,YAAY,CAAC,YACxB,KACR,gBAAgB,YAAY,EAAE,UAAU,YAAY,CAAC,CAAC,EACtD,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAC7F,KACA,iBAAiB;;;;;;;;;;;;;;;EAuFrB"}
\ No newline at end of file
+{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../src/hooks/useForm.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EACX,YAAY,EACZ,SAAS,EACT,eAAe,EACf,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AAGzB,aAAK,oBAAoB,GAAG,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,KAAK,IAAI,CAAC;AAElF,aAAK,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAAG;IAC7D,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IAGpB,cAAc,CAAC,EAAE,GAAG,CAAC;CACtB,CAAC;AAEF,wBAAgB,OAAO,CAAC,YAAY,SAAS,WAAW,GAAG,WAAW,EACpE,KAAK,GAAE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,eAAe,CAAM;4BAK9B,MAAM;0BAuBxB,UAAU,YAAY,CAAC,YACxB,KACR,gBAAgB,YAAY,EAAE,UAAU,YAAY,CAAC,CAAC,EACtD,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAC7F,KACA,iBAAiB;;;;;;;;;;;;;;;EAwFrB"}
\ No newline at end of file

Modified: package/CHANGELOG.md

Index: package/CHANGELOG.md
===================================================================
--- package/CHANGELOG.md
+++ package/CHANGELOG.md
@@ -1,6 +1,12 @@
 # @forge/react
 
+## 10.6.2-next.0
+
+### Patch Changes
+
+- 5979e47: Fix useForm hook so that field validation and be triggered properly
+
 ## 10.6.1
 
 ### Patch Changes

Modified: package/tsconfig.tsbuildinfo

Large diffs are not rendered by default.