@iress-oss/ids-mcp-server 6.0.0-alpha.2 → 6.0.0-alpha.4

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 (80) hide show
  1. package/generated/docs/components_components-alert-docs.md +7 -7
  2. package/generated/docs/components_components-autocomplete-docs.md +18 -18
  3. package/generated/docs/components_components-autocomplete-recipes-docs.md +9 -2
  4. package/generated/docs/components_components-badge-docs.md +4 -4
  5. package/generated/docs/components_components-button-docs.md +16 -14
  6. package/generated/docs/components_components-buttongroup-docs.md +9 -9
  7. package/generated/docs/components_components-card-docs.md +32 -17
  8. package/generated/docs/components_components-checkbox-docs.md +7 -7
  9. package/generated/docs/components_components-checkboxgroup-docs.md +10 -10
  10. package/generated/docs/components_components-checkboxgroup-recipes-docs.md +4 -3
  11. package/generated/docs/components_components-col-docs.md +38 -38
  12. package/generated/docs/components_components-container-docs.md +5 -5
  13. package/generated/docs/components_components-divider-docs.md +5 -5
  14. package/generated/docs/components_components-expander-docs.md +6 -4
  15. package/generated/docs/components_components-field-docs.md +28 -28
  16. package/generated/docs/components_components-filter-docs.md +19 -19
  17. package/generated/docs/components_components-hide-docs.md +9 -9
  18. package/generated/docs/components_components-icon-docs.md +9 -9
  19. package/generated/docs/components_components-image-docs.md +2 -2
  20. package/generated/docs/components_components-inline-docs.md +76 -388
  21. package/generated/docs/components_components-input-docs.md +9 -9
  22. package/generated/docs/components_components-input-recipes-docs.md +4 -4
  23. package/generated/docs/components_components-inputcurrency-docs.md +7 -7
  24. package/generated/docs/components_components-inputcurrency-recipes-docs.md +5 -2
  25. package/generated/docs/components_components-label-docs.md +4 -4
  26. package/generated/docs/components_components-link-docs.md +6 -4
  27. package/generated/docs/components_components-menu-docs.md +13 -13
  28. package/generated/docs/components_components-menu-menuitem-docs.md +12 -12
  29. package/generated/docs/components_components-modal-docs.md +32 -13
  30. package/generated/docs/components_components-panel-docs.md +6 -6
  31. package/generated/docs/components_components-placeholder-docs.md +1 -1
  32. package/generated/docs/components_components-popover-docs.md +11 -9
  33. package/generated/docs/components_components-popover-recipes-docs.md +4 -2
  34. package/generated/docs/components_components-progress-docs.md +1 -1
  35. package/generated/docs/components_components-provider-docs.md +2 -2
  36. package/generated/docs/components_components-radio-docs.md +5 -5
  37. package/generated/docs/components_components-radiogroup-docs.md +8 -8
  38. package/generated/docs/components_components-readonly-docs.md +3 -3
  39. package/generated/docs/components_components-richselect-docs.md +69 -28
  40. package/generated/docs/components_components-row-docs.md +60 -492
  41. package/generated/docs/components_components-select-docs.md +8 -8
  42. package/generated/docs/components_components-skeleton-docs.md +9 -9
  43. package/generated/docs/components_components-skeleton-recipes-docs.md +2 -2
  44. package/generated/docs/components_components-skiplink-docs.md +1 -1
  45. package/generated/docs/components_components-slideout-docs.md +34 -13
  46. package/generated/docs/components_components-slider-docs.md +8 -8
  47. package/generated/docs/components_components-spinner-docs.md +3 -3
  48. package/generated/docs/components_components-stack-docs.md +63 -175
  49. package/generated/docs/components_components-table-docs.md +31 -24
  50. package/generated/docs/components_components-tabset-docs.md +10 -10
  51. package/generated/docs/components_components-tabset-tab-docs.md +4 -4
  52. package/generated/docs/components_components-tag-docs.md +14 -5
  53. package/generated/docs/components_components-text-docs.md +21 -9
  54. package/generated/docs/components_components-toaster-docs.md +12 -12
  55. package/generated/docs/components_components-toggle-docs.md +6 -6
  56. package/generated/docs/components_components-tooltip-docs.md +4 -4
  57. package/generated/docs/components_components-validationmessage-docs.md +5 -5
  58. package/generated/docs/components_foundations-responsive-layout-docs.md +16 -15
  59. package/generated/docs/components_foundations-z-index-stacking-docs.md +1 -1
  60. package/generated/docs/components_introduction-docs.md +1 -1
  61. package/generated/docs/components_patterns-form-docs.md +139 -96
  62. package/generated/docs/components_patterns-form-recipes-docs.md +160 -30
  63. package/generated/docs/components_patterns-loading-docs.md +98 -17
  64. package/generated/docs/components_patterns-shadow-docs.md +2 -2
  65. package/generated/docs/components_sandbox-docs.md +4 -0
  66. package/generated/docs/components_styling-props-colour-docs.md +2 -2
  67. package/generated/docs/components_styling-props-elevation-docs.md +2 -2
  68. package/generated/docs/components_styling-props-radius-docs.md +3 -3
  69. package/generated/docs/components_styling-props-reference-docs.md +3 -3
  70. package/generated/docs/components_styling-props-screen-readers-docs.md +2 -2
  71. package/generated/docs/components_styling-props-sizing-docs.md +3 -3
  72. package/generated/docs/components_styling-props-spacing-docs.md +19 -19
  73. package/generated/docs/components_styling-props-typography-docs.md +2 -2
  74. package/generated/docs/guidelines.md +17 -16
  75. package/generated/docs/tokens_colour-docs.md +72 -0
  76. package/generated/docs/tokens_introduction-docs.md +15 -18
  77. package/generated/docs/tokens_sandbox-docs.md +1 -0
  78. package/generated/docs/tokens_spacing-docs.md +10 -40
  79. package/generated/docs/tokens_typography-docs.md +43 -1
  80. package/package.json +4 -4
@@ -8,9 +8,9 @@ Use the `IressForm` component when you want to request, validate and process dat
8
8
 
9
9
  [](./iframe.html?id=patterns-form--simple)
10
10
 
11
- ```
11
+ Hide codedrawOpen in CodeSandbox
12
12
 
13
- <ForwardedForm
13
+ <IressForm
14
14
  actions\={<IressButton mode\="primary" type\="submit"\>Submit</IressButton\>}
15
15
  pattern\="short"
16
16
  \>
@@ -42,7 +42,7 @@ Use the `IressForm` component when you want to request, validate and process dat
42
42
  required: 'Email is required'
43
43
  }}
44
44
  />
45
- </ForwardedForm\>
45
+ </IressForm\>
46
46
 
47
47
  ```
48
48
 
@@ -80,10 +80,19 @@ string
80
80
  | \- | short |
81
81
  | Show React Hook Forms itemsReact Hook Forms | Show React Hook Forms items |
82
82
 
83
+ Installation
84
+ ------------
85
+
86
+ As of version 6, `react-hook-form` has been moved to a peer dependency. You will need to install it alongside `@iress-oss/ids-components` in order to use the `IressForm` or `IressHookForm` component.
87
+
88
+ yarn add @iress-oss/ids-components react-hook-form
89
+
90
+ ```
91
+
83
92
  Key concepts
84
93
  ------------
85
94
 
86
- As of version 5, `IressForm` is built on top of [React Hook Forms](https://react-hook-form.com/). This provides you the power of React Hook Forms with the convenience of IDS form components. However, there are some key differences to be aware of as it may affect how you build your forms.
95
+ `IressForm` is built on top of [React Hook Forms](https://react-hook-form.com/). This provides you the power of React Hook Forms with the convenience of IDS form components. However, there are some key differences to be aware of as it may affect how you build your forms.
87
96
 
88
97
  ### State management
89
98
 
@@ -91,8 +100,8 @@ As of version 5, `IressForm` is built on top of [React Hook Forms](https://react
91
100
 
92
101
  Due to this change, there are a few things you should consider during development:
93
102
 
94
- * Avoid using the `useState` hook to manage form state. Instead, use the `IressForm.useForm` hook or the `ref` of the `IressForm` component to interact with the form state. The initial value of the form can be set using the `defaultValues` prop, but from then on you should be using either the hook or ref to interact with the form state.
95
- * Avoid using `onChange` handlers on form fields to react to form values. Instead, use the `IressForm.useWatch` hook to watch the value of a field and conditionally render fields based on the value of another field.
103
+ * Avoid using the `useState` hook to manage form state. Instead, use the `useFormContext()` hook from `react-hook-form` or the `ref` of the `IressForm` component to interact with the form state. The initial value of the form can be set using the `defaultValues` prop, but from then on you should be using either the hook or ref to interact with the form state.
104
+ * Avoid using `onChange` handlers on form fields to react to form values. Instead, use the `useWatch` hook from `react-hook-form` to watch the value of a field and conditionally render fields based on the value of another field.
96
105
 
97
106
  See below an example comparing a version 4 and version 5 `IressForm` when managing form state.
98
107
 
@@ -104,9 +113,9 @@ Old
104
113
 
105
114
  New
106
115
 
107
- <table class="css-1n5o7vh-diff-container"><tbody><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text">import { IressForm, IressField, IressInput, IressCheckboxGroup, IressCheckbox } from '@iress/components';</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text">import { IressForm, IressFormField, IressInput, IressCheckboxGroup, IressCheckbox } from '@iress-oss/ids-components';</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-10regm7-empty-line"><pre></pre></td><td class="css-vl0irh-content css-10regm7-empty-line"><pre class="css-o1u8iu-content-text"></pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-10regm7-empty-line"><pre></pre></td><td class="css-vl0irh-content css-10regm7-empty-line"><pre class="css-o1u8iu-content-text"></pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text">export const App = () =&gt; {</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text">const ConditionalFields = () =&gt; {</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> // We need to create our own state to manage the visibility of the fields, </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> // Instead of creating our own state, we can now use the form state via the useWatch hook, </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> // which means we have two sources of truth potentially making our code harder to maintain</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> // meaning we still have a single source of truth</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> const [show, setShow] = useState(['name']);</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> const show = IressForm.useWatch({ name: 'show'});</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-10regm7-empty-line"><pre></pre></td><td class="css-vl0irh-content css-10regm7-empty-line"><pre class="css-o1u8iu-content-text"></pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text"> return (</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressForm&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressField label="Show fields"&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;IressFormField </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressCheckboxGroup value={show} onChange={(newValues) =&gt; setShow(newValues)}&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> label="Show fields" </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> name="show"</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> render={(controlledProps) =&gt; (</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;IressCheckboxGroup {...controlledProps}&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text"> &lt;IressCheckbox value="name"&gt;Name&lt;/IressCheckbox&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text"> &lt;IressCheckbox value="email"&gt;Email&lt;/IressCheckbox&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text"> &lt;/IressCheckboxGroup&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;/IressField&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> )}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> {show.includes('name') &amp;&amp; (</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> /&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressField label="Name"&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> {show?.includes('name') &amp;&amp; (</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressInput name="name" /&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;IressFormField </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;/IressField&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> label="Name" </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> )}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> name="name"</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> {show.includes('email') &amp;&amp; (</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> render={(controlledProps) =&gt; &lt;IressInput {...controlledProps} /&gt;}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressField label="Email"&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> /&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressInput name="email" type="email" /&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> )}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;/IressField&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> {show?.includes('email') &amp;&amp; (</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> )}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;IressFormField </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;/IressForm&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> label="Email" </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> name="email"</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> render={(controlledProps) =&gt; &lt;IressInput {...controlledProps} type="email" /&gt;}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> /&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> )}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;/&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text"> );</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text">};</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-10regm7-empty-line css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-10regm7-empty-line css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"></pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text">export const App = () =&gt; (</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;IressForm defaultValues={{ show: ['name'] }}&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;ConditionalFields /&gt; </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;/IressForm&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text">);</pre></td></tr></tbody></table>
116
+ <table class="css-1n5o7vh-diff-container"><tbody><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text">import { IressForm, IressField, IressInput, IressCheckboxGroup, IressCheckbox } from '@iress/components';</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text">import { IressForm, IressFormField, IressInput, IressCheckboxGroup, IressCheckbox } from '@iress-oss/ids-components';</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text">import { useWatch } from 'react-hook-form';</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text">export const App = () =&gt; {</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> // We need to create our own state to manage the visibility of the fields, </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text">const ConditionalFields = () =&gt; {</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> // which means we have two sources of truth potentially making our code harder to maintain</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> // Instead of creating our own state, we can now use the form state via the useWatch hook, </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> const [show, setShow] = useState(['name']);</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> // meaning we still have a single source of truth</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> const show = useWatch({ name: 'show'});</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text"> return (</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressForm&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressField label="Show fields"&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;IressFormField </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressCheckboxGroup value={show} onChange={(newValues) =&gt; setShow(newValues)}&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> label="Show fields" </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> name="show"</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> render={(controlledProps) =&gt; (</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;IressCheckboxGroup {...controlledProps}&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text"> &lt;IressCheckbox value="name"&gt;Name&lt;/IressCheckbox&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text"> &lt;IressCheckbox value="email"&gt;Email&lt;/IressCheckbox&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text"> &lt;/IressCheckboxGroup&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;/IressField&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> )}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> {show.includes('name') &amp;&amp; (</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> /&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressField label="Name"&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> {show?.includes('name') &amp;&amp; (</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressInput name="name" /&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;IressFormField </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;/IressField&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> label="Name" </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> )}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> name="name"</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> {show.includes('email') &amp;&amp; (</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> render={(controlledProps) =&gt; &lt;IressInput {...controlledProps} /&gt;}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressField label="Email"&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> /&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressInput name="email" type="email" /&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> )}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;/IressField&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> {show?.includes('email') &amp;&amp; (</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> )}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;IressFormField </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;/IressForm&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> label="Email" </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> name="email"</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> render={(controlledProps) =&gt; &lt;IressInput {...controlledProps} type="email" /&gt;}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> /&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> )}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;/&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text"> );</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text">};</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-10regm7-empty-line css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-10regm7-empty-line css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"></pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text">export const App = () =&gt; (</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;IressForm defaultValues={{ show: ['name'] }}&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;ConditionalFields /&gt; </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;/IressForm&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text">);</pre></td></tr></tbody></table>
108
117
 
109
- ```
118
+ Hide codedrawOpen in CodeSandbox
110
119
 
111
120
  {
112
121
  render: () \=> <DiffViewer allowModeChange oldValue\={\`import { IressForm, IressField, IressInput, IressCheckboxGroup, IressCheckbox } from '@iress/components';
@@ -114,8 +123,9 @@ export const App = () => {
114
123
  // We need to create our own state to manage the visibility of the fields, // which means we have two sources of truth potentially making our code harder to maintain const \[show, setShow\] = useState(\['name'\]);
115
124
  return ( <IressForm> <IressField label="Show fields"> <IressCheckboxGroup value={show} onChange={(newValues) => setShow(newValues)}> <IressCheckbox value="name">Name</IressCheckbox> <IressCheckbox value="email">Email</IressCheckbox> </IressCheckboxGroup> </IressField> {show.includes('name') && ( <IressField label="Name"> <IressInput name="name" /> </IressField> )} {show.includes('email') && ( <IressField label="Email"> <IressInput name="email" type="email" /> </IressField> )} </IressForm> );
116
125
  };\`} newValue\={\`import { IressForm, IressFormField, IressInput, IressCheckboxGroup, IressCheckbox } from '@iress-oss/ids-components';
126
+ import { useWatch } from 'react-hook-form';
117
127
  const ConditionalFields = () => {
118
- // Instead of creating our own state, we can now use the form state via the useWatch hook, // meaning we still have a single source of truth const show = IressForm.useWatch({ name: 'show'});
128
+ // Instead of creating our own state, we can now use the form state via the useWatch hook, // meaning we still have a single source of truth const show = useWatch({ name: 'show'});
119
129
  return ( <> <IressFormField label="Show fields" name="show" render={(controlledProps) => ( <IressCheckboxGroup {...controlledProps}> <IressCheckbox value="name">Name</IressCheckbox> <IressCheckbox value="email">Email</IressCheckbox> </IressCheckboxGroup> )} /> {show?.includes('name') && ( <IressFormField label="Name" name="name" render={(controlledProps) => <IressInput {...controlledProps} />} /> )} {show?.includes('email') && ( <IressFormField label="Email" name="email" render={(controlledProps) => <IressInput {...controlledProps} type="email" />} /> )} </> );
120
130
  };
121
131
  export const App = () => (
@@ -171,7 +181,7 @@ New
171
181
 
172
182
  <table class="css-1n5o7vh-diff-container"><tbody><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text">import { IressForm, IressField, IressInput, IressButton } from '@iress/components';</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text">import { IressForm, IressFormField, IressInput, IressButton } from '@iress-oss/ids-components';</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-10regm7-empty-line"><pre></pre></td><td class="css-vl0irh-content css-10regm7-empty-line"><pre class="css-o1u8iu-content-text"></pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text">export const App = () =&gt; (</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressForm valueMissing="{{fieldName}} needs to be filled in!"&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;IressForm&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressField label="Name"&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;IressFormField </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressInput name="name" required /&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> label="Name"</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;/IressField&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> name="name"</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressField label="Email"&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> render={(controlledProps) =&gt; &lt;IressInput {...controlledProps} /&gt;}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;IressInput name="email" maxLength={10} /&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> rules={{ required: 'Name needs to be filled in!' }}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-rq9a2a-diff-removed"><pre>-</pre></td><td class="css-vl0irh-content css-rq9a2a-diff-removed"><pre class="css-o1u8iu-content-text"> &lt;/IressField&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> /&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> &lt;IressFormField </pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> label="Email"</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> name="email"</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> render={(controlledProps) =&gt; &lt;IressInput {...controlledProps} type="email" maxLength={10} /&gt;}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> rules={{ maxLength: 10 }}</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker css-cnnxkz-diff-added"><pre>+</pre></td><td class="css-vl0irh-content css-cnnxkz-diff-added"><pre class="css-o1u8iu-content-text"> /&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text"> &lt;IressButton type="submit" mode="primary"&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text"> Sign up</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text"> &lt;/IressButton&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text"> &lt;/IressForm&gt;</pre></td></tr><tr class="css-1n7ec1i-line"><td class="css-17vezug-marker"><pre></pre></td><td class="css-vl0irh-content"><pre class="css-o1u8iu-content-text">);</pre></td></tr></tbody></table>
173
183
 
174
- ```
184
+ Hide codedrawOpen in CodeSandbox
175
185
 
176
186
  {
177
187
  render: () \=> <DiffViewer allowModeChange oldValue\={\`import { IressForm, IressField, IressInput, IressButton } from '@iress/components';
@@ -213,7 +223,7 @@ array
213
223
 
214
224
  For most scenarios, you should use the `onSubmit` event to sync the form data with other state management systems (eg. server, browser storage or state management libraries such as Redux). This event is emitted when the form passes validation, and contains a map of the field names and the data entered by the user.
215
225
 
216
- For more complex scenarios, you may need to sync a field value before the form is submitted. In this case, you can use the `IressForm.useWatch` hook to watch the value of a field and sync it with your state.
226
+ For more complex scenarios, you may need to sync a field value before the form is submitted. In this case, you can use the `useWatch` hook to watch the value of a field and sync it with your state.
217
227
 
218
228
  Consider the following for your development:
219
229
 
@@ -275,9 +285,9 @@ Here are some examples of how to use `IressFormField` with different form contro
275
285
 
276
286
  [](./iframe.html?id=patterns-form--fields)
277
287
 
278
- ```
288
+ Hide codedrawOpen in CodeSandbox
279
289
 
280
- <ForwardedForm
290
+ <IressForm
281
291
  actions\={<IressButton mode\="primary" type\="submit"\>Submit</IressButton\>}
282
292
  heading\="All supported form fields"
283
293
  pattern\="long"
@@ -368,7 +378,7 @@ Here are some examples of how to use `IressFormField` with different form contro
368
378
  required: true
369
379
  }}
370
380
  />
371
- </ForwardedForm\>
381
+ </IressForm\>
372
382
 
373
383
  ```
374
384
 
@@ -422,9 +432,9 @@ A boolean which, if `true`, indicates that the input must have a value before th
422
432
 
423
433
  [](./iframe.html?id=patterns-form-rules--required)
424
434
 
425
- ```
435
+ Hide codedrawOpen in CodeSandbox
426
436
 
427
- <ForwardedForm\>
437
+ <IressForm\>
428
438
  <IressFormField
429
439
  hint\=""
430
440
  label\="Default message"
@@ -448,7 +458,7 @@ A boolean which, if `true`, indicates that the input must have a value before th
448
458
  type\="submit"
449
459
  \>
450
460
  Validate </IressButton\>
451
- </ForwardedForm\>
461
+ </IressForm\>
452
462
 
453
463
  ```
454
464
 
@@ -469,9 +479,9 @@ The maximum character length of the value to accept for this input.
469
479
 
470
480
  [](./iframe.html?id=patterns-form-rules--max-length)
471
481
 
472
- ```
482
+ Hide codedrawOpen in CodeSandbox
473
483
 
474
- <ForwardedForm\>
484
+ <IressForm\>
475
485
  <IressFormField
476
486
  hint\="Enter a maximum length of 5 characters"
477
487
  label\="Default message"
@@ -498,7 +508,7 @@ The maximum character length of the value to accept for this input.
498
508
  type\="submit"
499
509
  \>
500
510
  Validate </IressButton\>
501
- </ForwardedForm\>
511
+ </IressForm\>
502
512
 
503
513
  ```
504
514
 
@@ -519,9 +529,9 @@ The minimum character length of the value to accept for this input.
519
529
 
520
530
  [](./iframe.html?id=patterns-form-rules--min-length)
521
531
 
522
- ```
532
+ Hide codedrawOpen in CodeSandbox
523
533
 
524
- <ForwardedForm\>
534
+ <IressForm\>
525
535
  <IressFormField
526
536
  hint\="Enter a minimum length of 7 characters"
527
537
  label\="Default message"
@@ -548,7 +558,7 @@ The minimum character length of the value to accept for this input.
548
558
  type\="submit"
549
559
  \>
550
560
  Validate </IressButton\>
551
- </ForwardedForm\>
561
+ </IressForm\>
552
562
 
553
563
  ```
554
564
 
@@ -568,9 +578,9 @@ The maximum number to accept for this input.
568
578
 
569
579
  [](./iframe.html?id=patterns-form-rules--max)
570
580
 
571
- ```
581
+ Hide codedrawOpen in CodeSandbox
572
582
 
573
- <ForwardedForm\>
583
+ <IressForm\>
574
584
  <IressFormField
575
585
  hint\="Select a maximum of 2"
576
586
  label\="Default message"
@@ -597,7 +607,7 @@ The maximum number to accept for this input.
597
607
  type\="submit"
598
608
  \>
599
609
  Validate </IressButton\>
600
- </ForwardedForm\>
610
+ </IressForm\>
601
611
 
602
612
  ```
603
613
 
@@ -617,26 +627,36 @@ The minimum number to accept for this input.
617
627
 
618
628
  [](./iframe.html?id=patterns-form-rules--min)
619
629
 
620
- ```
630
+ Hide codedrawOpen in CodeSandbox
621
631
 
622
- {
623
- ...Default,
624
- args: {
625
- element: 'IressInput',
626
- field: {
627
- hint: 'Select a minimum of 20'
628
- },
629
- rules: {
632
+ <IressForm\>
633
+ <IressFormField
634
+ hint\="Select a minimum of 20"
635
+ label\="Default message"
636
+ name\="IressInput-default"
637
+ render\={(controlledProps) \=> <IressInput {...controlledProps} />}
638
+ rules\={{
630
639
  min: 20
631
- },
632
- customRules: {
640
+ }}
641
+ />
642
+ <IressFormField
643
+ hint\="Select a minimum of 20"
644
+ label\="Custom message"
645
+ name\="IressInput-custom"
646
+ render\={(controlledProps) \=> <IressInput {...controlledProps} />}
647
+ rules\={{
633
648
  min: {
634
- value: 20,
635
- message: 'Please enter a min of 20!'
649
+ message: 'Please enter a min of 20!',
650
+ value: 20
636
651
  }
637
- }
638
- }
639
- }
652
+ }}
653
+ />
654
+ <IressButton
655
+ mode\="primary"
656
+ type\="submit"
657
+ \>
658
+ Validate </IressButton\>
659
+ </IressForm\>
640
660
 
641
661
  ```
642
662
 
@@ -656,26 +676,31 @@ The accepted regex pattern for the input.
656
676
 
657
677
  [](./iframe.html?id=patterns-form-rules--pattern)
658
678
 
659
- ```
679
+ Hide codedrawOpen in CodeSandbox
660
680
 
661
- {
662
- ...Default,
663
- args: {
664
- element: 'IressInput',
665
- field: {
666
- hint: 'Enter a valid email address'
667
- },
668
- rules: {
681
+ <IressForm\>
682
+ <IressFormField
683
+ hint\="Enter a valid email address"
684
+ label\="Default message"
685
+ name\="IressInput-default"
686
+ render\={(controlledProps) \=> <IressInput {...controlledProps} />}
687
+ rules\={{
669
688
  pattern: /^\[a-zA-Z0-9.!#$%&'\*+/=?^\_\`{|}~-\]+@\[a-zA-Z0-9\](?:\[a-zA-Z0-9-\]{0,61}\[a-zA-Z0-9\])?(?:\\.\[a-zA-Z0-9\](?:\[a-zA-Z0-9-\]{0,61}\[a-zA-Z0-9\])?)\*$/
670
- },
671
- customRules: {
689
+ }}
690
+ />
691
+ <IressFormField hint="Enter a valid email address" label="Custom message" name="IressInput-custom" render={(controlledProps) \=> <IressInput {...controlledProps} />}
692
+ rules={{
672
693
  pattern: {
673
- value: /^\[a-zA-Z0-9.!#$%&'\*+/=?^\_\`{|}~-\]+@\[a-zA-Z0-9\](?:\[a-zA-Z0-9-\]{0,61}\[a-zA-Z0-9\])?(?:\\.\[a-zA-Z0-9\](?:\[a-zA-Z0-9-\]{0,61}\[a-zA-Z0-9\])?)\*$/,
674
- message: 'Please enter a valid email address!'
694
+ message: 'Please enter a valid email address!',
695
+ value: /^\[a-zA-Z0-9.!#$%&'\*+/=?^\_\`{|}~-\]+@\[a-zA-Z0-9\](?:\[a-zA-Z0-9-\]{0,61}\[a-zA-Z0-9\])?(?:\\.\[a-zA-Z0-9\](?:\[a-zA-Z0-9-\]{0,61}\[a-zA-Z0-9\])?)\*$/
675
696
  }
676
- }
677
- }
678
- }
697
+ }}
698
+ /> <IressButton
699
+ mode\="primary"
700
+ type\="submit"
701
+ \>
702
+ Validate </IressButton\>
703
+ </IressForm\>
679
704
 
680
705
  ```
681
706
 
@@ -693,7 +718,7 @@ The minimum date to accept for this input.
693
718
 
694
719
  [](./iframe.html?id=patterns-form-rules--min-date)
695
720
 
696
- ```
721
+ Hide codedrawOpen in CodeSandbox
697
722
 
698
723
  {
699
724
  ...Default,
@@ -734,7 +759,7 @@ The maximum date to accept for this input.
734
759
 
735
760
  [](./iframe.html?id=patterns-form-rules--max-date)
736
761
 
737
- ```
762
+ Hide codedrawOpen in CodeSandbox
738
763
 
739
764
  {
740
765
  ...Default,
@@ -775,9 +800,9 @@ Ensures the input is a valid email address.
775
800
 
776
801
  [](./iframe.html?id=patterns-form-rules--email)
777
802
 
778
- ```
803
+ Hide codedrawOpen in CodeSandbox
779
804
 
780
- <ForwardedForm\>
805
+ <IressForm\>
781
806
  <IressFormField
782
807
  hint\="Enter an email address"
783
808
  label\="Default message"
@@ -801,7 +826,7 @@ Ensures the input is a valid email address.
801
826
  type\="submit"
802
827
  \>
803
828
  Validate </IressButton\>
804
- </ForwardedForm\>
829
+ </IressForm\>
805
830
 
806
831
  ```
807
832
 
@@ -825,9 +850,9 @@ You can pass a callback function as the argument to validate, or you can pass an
825
850
 
826
851
  [](./iframe.html?id=patterns-form-rules--validate)
827
852
 
828
- ```
853
+ Hide codedrawOpen in CodeSandbox
829
854
 
830
- <ForwardedForm\>
855
+ <IressForm\>
831
856
  <IressFormFieldset
832
857
  hint\="If checkbox, click two items to pass. Anything else, make sure it is Google."
833
858
  label\="Default message"
@@ -867,7 +892,7 @@ You can pass a callback function as the argument to validate, or you can pass an
867
892
  type\="submit"
868
893
  \>
869
894
  Validate </IressButton\>
870
- </ForwardedForm\>
895
+ </IressForm\>
871
896
 
872
897
  ```
873
898
 
@@ -887,7 +912,7 @@ When the form passes validation (if not disabled), the `onSubmit` event is emitt
887
912
 
888
913
  [](./iframe.html?id=patterns-form--handling-submission)
889
914
 
890
- ```
915
+ Hide codedrawOpen in CodeSandbox
891
916
 
892
917
  import {
893
918
  IressTable,
@@ -897,7 +922,7 @@ import {
897
922
  IressFormField,
898
923
  IressInput,
899
924
  IressButton,
900
- } from '@iress-oss/ids-components';
925
+ } from '@/main';
901
926
  import { useState } from 'react';
902
927
  interface FieldValues {
903
928
  name?: string;
@@ -1013,9 +1038,9 @@ You can set the `defaultValues` prop to pre-fill the form values.
1013
1038
 
1014
1039
  [](./iframe.html?id=patterns-form--default-values)
1015
1040
 
1016
- ```
1041
+ Hide codedrawOpen in CodeSandbox
1017
1042
 
1018
- <ForwardedForm
1043
+ <IressForm
1019
1044
  actions\={<IressButton mode\="primary" type\="submit"\>Submit</IressButton\>}
1020
1045
  defaultValues\={{
1021
1046
  email: 'luke.skywalker@iress.com',
@@ -1051,7 +1076,7 @@ You can set the `defaultValues` prop to pre-fill the form values.
1051
1076
  required: 'Email is required'
1052
1077
  }}
1053
1078
  />
1054
- </ForwardedForm\>
1079
+ </IressForm\>
1055
1080
 
1056
1081
  ```
1057
1082
 
@@ -1094,7 +1119,7 @@ One use case for this prop is to create your own visible error summary at the to
1094
1119
 
1095
1120
  [](./iframe.html?id=patterns-form--custom-error-handling)
1096
1121
 
1097
- ```
1122
+ Hide codedrawOpen in CodeSandbox
1098
1123
 
1099
1124
  import {
1100
1125
  IressTable,
@@ -1106,7 +1131,7 @@ import {
1106
1131
  IressInput,
1107
1132
  IressButton,
1108
1133
  IressText,
1109
- } from '@iress-oss/ids-components';
1134
+ } from '@/main';
1110
1135
  import { useState } from 'react';
1111
1136
  import { type FieldErrors } from 'react-hook-form';
1112
1137
  interface FieldValues {
@@ -1227,8 +1252,20 @@ Use cases where you may need the `values` prop:
1227
1252
 
1228
1253
  [](./iframe.html?id=patterns-form--values)
1229
1254
 
1230
- ```
1255
+ Hide codedrawOpen in CodeSandbox
1231
1256
 
1257
+ import {
1258
+ type IressFormProps,
1259
+ IressForm,
1260
+ IressModal,
1261
+ IressDivider,
1262
+ IressButton,
1263
+ IressTable,
1264
+ IressInline,
1265
+ IressFormField,
1266
+ IressInput,
1267
+ } from '@/main';
1268
+ import { useState } from 'react';
1232
1269
  interface FieldValues {
1233
1270
  name?: string;
1234
1271
  email?: string;
@@ -1346,7 +1383,7 @@ Here we have an example showcasing option one.
1346
1383
 
1347
1384
  [](./iframe.html?id=patterns-form--disable-validation)
1348
1385
 
1349
- ```
1386
+ Hide codedrawOpen in CodeSandbox
1350
1387
 
1351
1388
  import {
1352
1389
  type FormRef,
@@ -1358,7 +1395,7 @@ import {
1358
1395
  IressInput,
1359
1396
  IressToasterProvider,
1360
1397
  useToaster,
1361
- } from '@iress-oss/ids-components';
1398
+ } from '@/main';
1362
1399
  import { useRef } from 'react';
1363
1400
  interface FieldValues {
1364
1401
  name?: string;
@@ -1851,7 +1888,7 @@ You can reset the form using the `ref` of the form. You must provide a `defaultV
1851
1888
 
1852
1889
  [](./iframe.html?id=patterns-form--reset-form)
1853
1890
 
1854
- ```
1891
+ Hide codedrawOpen in CodeSandbox
1855
1892
 
1856
1893
  import {
1857
1894
  type IressFormProps,
@@ -1861,7 +1898,7 @@ import {
1861
1898
  IressButton,
1862
1899
  IressFormField,
1863
1900
  IressInput,
1864
- } from '@iress-oss/ids-components';
1901
+ } from '@/main';
1865
1902
  import { useRef } from 'react';
1866
1903
  interface FieldValues {
1867
1904
  name?: string;
@@ -1945,7 +1982,7 @@ You can pass the `readOnly` prop to remove the asterisk symbol (\*) even when th
1945
1982
 
1946
1983
  [](./iframe.html?id=patterns-form--exclude-read-only-validation)
1947
1984
 
1948
- ```
1985
+ Hide codedrawOpen in CodeSandbox
1949
1986
 
1950
1987
  <IressStack gap\="md"\>
1951
1988
  <IressText\>
@@ -1954,7 +1991,7 @@ You can pass the `readOnly` prop to remove the asterisk symbol (\*) even when th
1954
1991
  <p\>
1955
1992
  Try hitting submit to see that only email is being validated </p\>
1956
1993
  </IressText\>
1957
- <ForwardedForm
1994
+ <IressForm
1958
1995
  actions\={<IressButton mode\="primary" type\="submit"\>Submit</IressButton\>}
1959
1996
  pattern\="short"
1960
1997
  \>
@@ -1979,7 +2016,7 @@ You can pass the `readOnly` prop to remove the asterisk symbol (\*) even when th
1979
2016
  required: 'Email is required'
1980
2017
  }}
1981
2018
  />
1982
- </ForwardedForm\>
2019
+ </IressForm\>
1983
2020
  </IressStack\>
1984
2021
 
1985
2022
  ```
@@ -2029,8 +2066,21 @@ Some use cases:
2029
2066
 
2030
2067
  [](./iframe.html?id=patterns-form--hook-form)
2031
2068
 
2032
- ```
2069
+ Hide codedrawOpen in CodeSandbox
2033
2070
 
2071
+ import {
2072
+ IressButton,
2073
+ IressCheckbox,
2074
+ IressContainer,
2075
+ IressDivider,
2076
+ IressFormField,
2077
+ IressHookForm,
2078
+ IressInput,
2079
+ IressInputCurrency,
2080
+ IressPanel,
2081
+ IressText,
2082
+ } from '@/main';
2083
+ import { useForm } from 'react-hook-form';
2034
2084
  interface FieldValues {
2035
2085
  firstName: string;
2036
2086
  lastName: string;
@@ -2041,8 +2091,9 @@ interface FieldValues {
2041
2091
  export const HookFormExample \= () \=> {
2042
2092
  const initialInsuredAtPolicyLevel \= false;
2043
2093
  const initialSumInsured \= 5000;
2044
- const form \= IressHookForm.useForm<FieldValues\>();
2094
+ const form \= useForm<FieldValues\>();
2045
2095
  const { watch, control } \= form;
2096
+ // eslint-disable-next-line react-hooks/incompatible-library
2046
2097
  const firstName \= watch('firstName');
2047
2098
  const lastName \= watch('lastName');
2048
2099
  const insuredAtPolicyLevel \= watch('insuredAtPolicyLevel');
@@ -2184,9 +2235,9 @@ boolean
2184
2235
 
2185
2236
  [](./iframe.html?id=patterns-form--validation-summary)
2186
2237
 
2187
- ```
2238
+ Hide codedrawOpen in CodeSandbox
2188
2239
 
2189
- <ForwardedForm
2240
+ <IressForm
2190
2241
  actions\={<IressButton mode\="primary" type\="submit"\>Submit</IressButton\>}
2191
2242
  alert\={<IressFormValidationSummary />}
2192
2243
  heading\="Try hitting submit to see the validation summary"
@@ -2278,7 +2329,7 @@ boolean
2278
2329
  required: true
2279
2330
  }}
2280
2331
  />
2281
- </ForwardedForm\>
2332
+ </IressForm\>
2282
2333
 
2283
2334
  ```
2284
2335
 
@@ -2426,7 +2477,7 @@ When resetting fields that accept non-string values (like `IressRichSelect`), yo
2426
2477
 
2427
2478
  **Problem:**
2428
2479
 
2429
- const { resetField } \= IressForm.useFormContext();
2480
+ const { resetField } \= useFormContext();
2430
2481
  resetField('rich-select', {
2431
2482
  label: '',
2432
2483
  value: '',
@@ -2438,17 +2489,9 @@ In this case, it will look like it cleared the field, but actually it has not. T
2438
2489
 
2439
2490
  **Solution:** Override the `onChange` handler to pass the actual value as a second parameter:
2440
2491
 
2441
- const { resetField } \= IressForm.useFormContext();
2492
+ const { resetField } \= useFormContext();
2442
2493
  resetField('rich-select', null); // or undefined
2443
2494
 
2444
2495
  ```
2445
2496
 
2446
2497
  This will properly reset the field to null and clear the field value.
2447
-
2448
- ### Conflicting versions of React Hook Forms
2449
-
2450
- If you are using React Hook Forms in your application, please ensure it is the same version IDS uses, otherwise there will be conflicts.
2451
-
2452
- The version we are using in IDS is:
2453
-
2454
- yarn add react-hook-form@7.55.0