@iress-oss/ids-mcp-server 5.15.0 → 5.20.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/generated/docs/components_components-alert-docs.md +496 -0
- package/generated/docs/components_components-autocomplete-docs.md +3429 -0
- package/generated/docs/{components-autocomplete-recipes-docs.md → components_components-autocomplete-recipes-docs.md} +39 -14
- package/generated/docs/{components-badge-docs.md → components_components-badge-docs.md} +222 -30
- package/generated/docs/components_components-button-docs.md +2078 -0
- package/generated/docs/components_components-button-recipes-docs.md +37 -0
- package/generated/docs/components_components-buttongroup-docs.md +1045 -0
- package/generated/docs/components_components-card-docs.md +2290 -0
- package/generated/docs/{components-card-recipes-docs.md → components_components-card-recipes-docs.md} +132 -15
- package/generated/docs/components_components-checkbox-docs.md +1040 -0
- package/generated/docs/{components-checkboxgroup-docs.md → components_components-checkboxgroup-docs.md} +1001 -82
- package/generated/docs/{components-checkboxgroup-recipes-docs.md → components_components-checkboxgroup-recipes-docs.md} +102 -12
- package/generated/docs/{components-col-docs.md → components_components-col-docs.md} +331 -58
- package/generated/docs/components_components-combobox-docs.md +3735 -0
- package/generated/docs/{components-container-docs.md → components_components-container-docs.md} +61 -24
- package/generated/docs/{components-divider-docs.md → components_components-divider-docs.md} +83 -24
- package/generated/docs/{components-expander-docs.md → components_components-expander-docs.md} +266 -33
- package/generated/docs/components_components-field-docs.md +1369 -0
- package/generated/docs/components_components-filter-docs.md +4080 -0
- package/generated/docs/{components-form-docs.md → components_components-form-docs.md} +1556 -360
- package/generated/docs/{components-form-recipes-docs.md → components_components-form-recipes-docs.md} +277 -60
- package/generated/docs/{components-hide-docs.md → components_components-hide-docs.md} +195 -124
- package/generated/docs/components_components-icon-docs.md +1337 -0
- package/generated/docs/{components-inline-docs.md → components_components-inline-docs.md} +462 -42
- package/generated/docs/components_components-input-docs.md +1468 -0
- package/generated/docs/components_components-input-recipes-docs.md +367 -0
- package/generated/docs/components_components-inputcurrency-docs.md +432 -0
- package/generated/docs/{components-inputcurrency-recipes-docs.md → components_components-inputcurrency-recipes-docs.md} +113 -17
- package/generated/docs/components_components-label-docs.md +323 -0
- package/generated/docs/components_components-menu-docs.md +2345 -0
- package/generated/docs/components_components-menu-menuitem-docs.md +633 -0
- package/generated/docs/{components-modal-docs.md → components_components-modal-docs.md} +1640 -231
- package/generated/docs/components_components-navbar-docs.md +1847 -0
- package/generated/docs/{components-navbar-recipes-docs.md → components_components-navbar-recipes-docs.md} +721 -40
- package/generated/docs/{components-panel-docs.md → components_components-panel-docs.md} +754 -57
- package/generated/docs/components_components-placeholder-docs.md +92 -0
- package/generated/docs/components_components-popover-docs.md +1643 -0
- package/generated/docs/components_components-popover-recipes-docs.md +491 -0
- package/generated/docs/components_components-progress-docs.md +115 -0
- package/generated/docs/{components-provider-docs.md → components_components-provider-docs.md} +42 -33
- package/generated/docs/components_components-radio-docs.md +491 -0
- package/generated/docs/{components-radiogroup-docs.md → components_components-radiogroup-docs.md} +927 -75
- package/generated/docs/components_components-readonly-docs.md +263 -0
- package/generated/docs/components_components-richselect-docs.md +6521 -0
- package/generated/docs/{components-row-docs.md → components_components-row-docs.md} +353 -43
- package/generated/docs/{components-select-docs.md → components_components-select-docs.md} +719 -61
- package/generated/docs/components_components-skeleton-docs.md +480 -0
- package/generated/docs/{components-skeleton-recipes-docs.md → components_components-skeleton-recipes-docs.md} +51 -11
- package/generated/docs/{components-skiplink-docs.md → components_components-skiplink-docs.md} +53 -14
- package/generated/docs/components_components-slideout-docs.md +2293 -0
- package/generated/docs/components_components-slider-docs.md +1276 -0
- package/generated/docs/components_components-spinner-docs.md +82 -0
- package/generated/docs/{components-stack-docs.md → components_components-stack-docs.md} +223 -40
- package/generated/docs/components_components-table-docs.md +3658 -0
- package/generated/docs/components_components-tabset-docs.md +772 -0
- package/generated/docs/components_components-tabset-tab-docs.md +262 -0
- package/generated/docs/components_components-tag-docs.md +257 -0
- package/generated/docs/{components-text-docs.md → components_components-text-docs.md} +491 -51
- package/generated/docs/{components-toaster-docs.md → components_components-toaster-docs.md} +187 -85
- package/generated/docs/components_components-toaster-toast-docs.md +634 -0
- package/generated/docs/components_components-toggle-docs.md +461 -0
- package/generated/docs/{components-tooltip-docs.md → components_components-tooltip-docs.md} +286 -41
- package/generated/docs/{components-validationmessage-docs.md → components_components-validationmessage-docs.md} +230 -61
- package/generated/docs/components_contact-us-docs.md +12 -0
- package/generated/docs/{foundations-accessibility-docs.md → components_foundations-accessibility-docs.md} +11 -21
- package/generated/docs/{foundations-colours-docs.md → components_foundations-colour-030-colours.md} +8 -15
- package/generated/docs/{foundations-consistency-docs.md → components_foundations-consistency-docs.md} +12 -20
- package/generated/docs/{foundations-content-docs.md → components_foundations-content-docs.md} +6 -11
- package/generated/docs/components_foundations-introduction-docs.md +15 -0
- package/generated/docs/{foundations-principles-docs.md → components_foundations-principles-docs.md} +14 -24
- package/generated/docs/components_foundations-typography-docs.md +608 -0
- package/generated/docs/{foundations-user-experience-docs.md → components_foundations-user-experience-docs.md} +16 -26
- package/generated/docs/{foundations-visual-design-docs.md → components_foundations-visual-design-docs.md} +10 -17
- package/generated/docs/{frequently-asked-questions-docs.md → components_frequently-asked-questions-docs.md} +14 -23
- package/generated/docs/components_get-started-develop-docs.md +84 -0
- package/generated/docs/components_get-started-using-storybook-docs.md +55 -0
- package/generated/docs/components_introduction-docs.md +15 -0
- package/generated/docs/{patterns-loading-docs.md → components_patterns-loading-docs.md} +798 -153
- package/generated/docs/components_resources-changelog-docs.md +4 -0
- package/generated/docs/{resources-code-katas-docs.md → components_resources-code-katas-docs.md} +5 -9
- package/generated/docs/{resources-migration-guides-from-v4-to-v5-docs.md → components_resources-migration-guides-from-v4-to-v5-docs.md} +54 -239
- package/generated/docs/components_sandbox-docs.md +4 -0
- package/generated/docs/{versions-docs.md → components_versions-docs.md} +5 -8
- package/generated/docs/guidelines.md +484 -200
- package/generated/docs/introduction-docs.md +19 -30
- package/package.json +41 -45
- package/generated/docs/components-alert-docs.md +0 -130
- package/generated/docs/components-autocomplete-docs.md +0 -754
- package/generated/docs/components-button-docs.md +0 -362
- package/generated/docs/components-button-recipes-docs.md +0 -76
- package/generated/docs/components-buttongroup-docs.md +0 -310
- package/generated/docs/components-card-docs.md +0 -494
- package/generated/docs/components-checkbox-docs.md +0 -193
- package/generated/docs/components-combobox-docs.md +0 -1016
- package/generated/docs/components-field-docs.md +0 -675
- package/generated/docs/components-filter-docs.md +0 -1109
- package/generated/docs/components-icon-docs.md +0 -553
- package/generated/docs/components-input-docs.md +0 -335
- package/generated/docs/components-input-recipes-docs.md +0 -140
- package/generated/docs/components-inputcurrency-docs.md +0 -157
- package/generated/docs/components-label-docs.md +0 -135
- package/generated/docs/components-menu-docs.md +0 -704
- package/generated/docs/components-menu-menuitem-docs.md +0 -193
- package/generated/docs/components-navbar-docs.md +0 -291
- package/generated/docs/components-placeholder-docs.md +0 -27
- package/generated/docs/components-popover-docs.md +0 -464
- package/generated/docs/components-popover-recipes-docs.md +0 -245
- package/generated/docs/components-progress-docs.md +0 -104
- package/generated/docs/components-radio-docs.md +0 -107
- package/generated/docs/components-readonly-docs.md +0 -89
- package/generated/docs/components-richselect-docs.md +0 -2433
- package/generated/docs/components-skeleton-docs.md +0 -214
- package/generated/docs/components-slideout-docs.md +0 -538
- package/generated/docs/components-slider-docs.md +0 -346
- package/generated/docs/components-spinner-docs.md +0 -59
- package/generated/docs/components-table-ag-grid-docs.md +0 -1074
- package/generated/docs/components-table-docs.md +0 -1305
- package/generated/docs/components-tabset-docs.md +0 -341
- package/generated/docs/components-tabset-tab-docs.md +0 -86
- package/generated/docs/components-tag-docs.md +0 -115
- package/generated/docs/components-toaster-toast-docs.md +0 -157
- package/generated/docs/components-toggle-docs.md +0 -158
- package/generated/docs/contact-us-docs.md +0 -27
- package/generated/docs/extensions-editor-docs.md +0 -288
- package/generated/docs/extensions-editor-recipes-docs.md +0 -39
- package/generated/docs/foundations-introduction-docs.md +0 -17
- package/generated/docs/foundations-typography-docs.md +0 -191
- package/generated/docs/get-started-develop-docs.md +0 -209
- package/generated/docs/get-started-using-storybook-docs.md +0 -68
- package/generated/docs/resources-changelog-docs.md +0 -6
- package/generated/docs/themes-available-themes-docs.md +0 -66
- package/generated/docs/themes-introduction-docs.md +0 -121
- package/generated/docs/themes-tokens-docs.md +0 -1200
- /package/{LICENSE.txt → LICENSE} +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
Recipes
|
|
2
|
+
=======
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
With readonly data
|
|
5
|
+
------------------
|
|
6
6
|
|
|
7
7
|
You can use `IressForm` with readonly data by setting the `readonly` prop to `true` on controlled elements. This will disable those form controls, but will include the values in the form submission.
|
|
8
8
|
|
|
@@ -10,6 +10,8 @@ Please take note of the following when displaying read only data.
|
|
|
10
10
|
|
|
11
11
|
* It is best to keep readonly data in a separate section of the form, to further avoid confusion with editable fields.
|
|
12
12
|
|
|
13
|
+
[](./iframe.html?id=components-form-recipes--with-readonly-data)
|
|
14
|
+
|
|
13
15
|
User Details
|
|
14
16
|
------------
|
|
15
17
|
|
|
@@ -27,10 +29,24 @@ Email
|
|
|
27
29
|
|
|
28
30
|
Submit
|
|
29
31
|
|
|
30
|
-
Hide
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
Hide codedrawOpen in CodeSandbox
|
|
33
|
+
|
|
34
|
+
import {
|
|
35
|
+
IressButton,
|
|
36
|
+
IressCol,
|
|
37
|
+
IressContainer,
|
|
38
|
+
IressDivider,
|
|
39
|
+
IressForm,
|
|
40
|
+
IressFormField,
|
|
41
|
+
IressInput,
|
|
42
|
+
IressModal,
|
|
43
|
+
IressRow,
|
|
44
|
+
IressStack,
|
|
45
|
+
IressTable,
|
|
46
|
+
IressText,
|
|
47
|
+
} from '@/main';
|
|
48
|
+
import { useState } from 'react';
|
|
49
|
+
import { type FieldValues } from 'react-hook-form';
|
|
34
50
|
export const WithReadonlyDataForm \= () \=> {
|
|
35
51
|
const \[values, setValues\] \= useState<FieldValues\>({
|
|
36
52
|
firstName: 'Leia',
|
|
@@ -100,10 +116,28 @@ export const WithReadonlyDataForm \= () \=> {
|
|
|
100
116
|
);
|
|
101
117
|
};
|
|
102
118
|
|
|
103
|
-
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
#### Props
|
|
122
|
+
|
|
123
|
+
| Name | Description | Default | Control |
|
|
124
|
+
| --- | --- | --- | --- |
|
|
125
|
+
| form |
|
|
126
|
+
React hook form instance from `useForm`, use if you need more control over the internal state.
|
|
127
|
+
|
|
128
|
+
const form = useForm();
|
|
129
|
+
return <IressForm form={form} />;
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
UseFormReturn
|
|
133
|
+
|
|
134
|
+
|
|
104
135
|
|
|
105
|
-
|
|
106
|
-
|
|
136
|
+
| \- | Set object |
|
|
137
|
+
| Show React Hook Forms itemsReact Hook Forms | Show React Hook Forms items |
|
|
138
|
+
|
|
139
|
+
Switching between readonly and edit modes
|
|
140
|
+
-----------------------------------------
|
|
107
141
|
|
|
108
142
|
It is recommended to use a button to toggle between read-only and editable input modes.
|
|
109
143
|
|
|
@@ -112,6 +146,8 @@ Please take note of the following when switching between modes:
|
|
|
112
146
|
* Switching is done on a per-section basis, not on a per-field basis.
|
|
113
147
|
* When the user saves the data, it should switch back to read-only mode to avoid any confusion about whether the changes have been saved.
|
|
114
148
|
|
|
149
|
+
[](./iframe.html?id=components-form-recipes--switch-edit-readonly)
|
|
150
|
+
|
|
115
151
|
User Details
|
|
116
152
|
------------
|
|
117
153
|
|
|
@@ -133,10 +169,27 @@ dependents
|
|
|
133
169
|
|
|
134
170
|
Edit
|
|
135
171
|
|
|
136
|
-
Hide
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
172
|
+
Hide codedrawOpen in CodeSandbox
|
|
173
|
+
|
|
174
|
+
import {
|
|
175
|
+
IressButton,
|
|
176
|
+
IressCol,
|
|
177
|
+
IressContainer,
|
|
178
|
+
IressForm,
|
|
179
|
+
IressFormField,
|
|
180
|
+
IressIcon,
|
|
181
|
+
IressInline,
|
|
182
|
+
IressInput,
|
|
183
|
+
IressModal,
|
|
184
|
+
IressRow,
|
|
185
|
+
IressSelect,
|
|
186
|
+
IressStack,
|
|
187
|
+
IressTable,
|
|
188
|
+
IressText,
|
|
189
|
+
} from '@/main';
|
|
190
|
+
import { useState } from 'react';
|
|
191
|
+
import { type FieldValues } from 'react-hook-form';
|
|
192
|
+
import { type FormControlValue } from '@/main';
|
|
140
193
|
export const SwitchEditReadonlyForm \= () \=> {
|
|
141
194
|
const dependentOptions \= \[
|
|
142
195
|
{ value: 0, label: '0' },
|
|
@@ -215,7 +268,7 @@ export const SwitchEditReadonlyForm \= () \=> {
|
|
|
215
268
|
{...controlledProps}
|
|
216
269
|
readonly\={!editable}
|
|
217
270
|
onChange\={(
|
|
218
|
-
|
|
271
|
+
\_e: React.ChangeEvent<HTMLSelectElement\>,
|
|
219
272
|
value?: FormControlValue,
|
|
220
273
|
) \=> controlledProps.onChange(value)}
|
|
221
274
|
\>
|
|
@@ -259,27 +312,55 @@ export const SwitchEditReadonlyForm \= () \=> {
|
|
|
259
312
|
);
|
|
260
313
|
};
|
|
261
314
|
|
|
262
|
-
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
#### Props
|
|
318
|
+
|
|
319
|
+
| Name | Description | Default | Control |
|
|
320
|
+
| --- | --- | --- | --- |
|
|
321
|
+
| form |
|
|
322
|
+
React hook form instance from `useForm`, use if you need more control over the internal state.
|
|
323
|
+
|
|
324
|
+
const form = useForm();
|
|
325
|
+
return <IressForm form={form} />;
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
UseFormReturn
|
|
263
329
|
|
|
264
|
-
[](#alternative-form-validation)Alternative form validation
|
|
265
|
-
-----------------------------------------------------------
|
|
266
330
|
|
|
267
|
-
|
|
331
|
+
|
|
332
|
+
| \- | Set object |
|
|
333
|
+
| Show React Hook Forms itemsReact Hook Forms | Show React Hook Forms items |
|
|
334
|
+
|
|
335
|
+
Alternative form validation
|
|
336
|
+
---------------------------
|
|
337
|
+
|
|
338
|
+
`IressForm` is always recommended for all validation, as it is the cleanest way (least code) to provide the best form user experience for your users. Please visit the [`IressForm` documentation](/docs/components-form--docs) for different validation examples.
|
|
268
339
|
|
|
269
340
|
However, if you have more complex requirements and you find `IressForm` too opinionated for your needs, you can always bring your own form validation using a native `form` element and the other IDS components such as `IressField`.
|
|
270
341
|
|
|
271
342
|
Here is an example showcasing a form using the native form constraints API to achieve validation using IDS components. There are other libraries such as: [Yup](https://github.com/jquense/yup), [Joi](https://github.com/hapijs/joi) or [Zod](https://zod.dev/)) which can improve scalability, with the downside being you will have to maintain all validation yourself.
|
|
272
343
|
|
|
344
|
+
[](./iframe.html?id=components-form-recipes--native-validation)
|
|
345
|
+
|
|
273
346
|
**\*Required Name**
|
|
274
347
|
|
|
275
348
|
**\*Required Email address**
|
|
276
349
|
|
|
277
350
|
Sign up
|
|
278
351
|
|
|
279
|
-
Hide
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
352
|
+
Hide codedrawOpen in CodeSandbox
|
|
353
|
+
|
|
354
|
+
import {
|
|
355
|
+
IressInput,
|
|
356
|
+
IressStack,
|
|
357
|
+
IressButton,
|
|
358
|
+
IressField,
|
|
359
|
+
IressValidationMessage,
|
|
360
|
+
IressAlert,
|
|
361
|
+
} from '@/main';
|
|
362
|
+
import { useState } from 'react';
|
|
363
|
+
import { type InputBaseElement } from '@/components/Input/InputBase/InputBase.types';
|
|
283
364
|
export const NativeValidationForm \= () \=> {
|
|
284
365
|
const \[formData, setFormData\] \= useState({
|
|
285
366
|
name: '',
|
|
@@ -355,10 +436,28 @@ export const NativeValidationForm \= () \=> {
|
|
|
355
436
|
);
|
|
356
437
|
};
|
|
357
438
|
|
|
358
|
-
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
#### Props
|
|
442
|
+
|
|
443
|
+
| Name | Description | Default | Control |
|
|
444
|
+
| --- | --- | --- | --- |
|
|
445
|
+
| form |
|
|
446
|
+
React hook form instance from `useForm`, use if you need more control over the internal state.
|
|
359
447
|
|
|
360
|
-
|
|
361
|
-
|
|
448
|
+
const form = useForm();
|
|
449
|
+
return <IressForm form={form} />;
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
UseFormReturn
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
| \- | Set object |
|
|
457
|
+
| Show React Hook Forms itemsReact Hook Forms | Show React Hook Forms items |
|
|
458
|
+
|
|
459
|
+
Nested forms
|
|
460
|
+
------------
|
|
362
461
|
|
|
363
462
|
Unfortunately, it is [forbidden to nest form elements as per the HTML specifications](https://developer.mozilla.org/en-US/docs/Learn/Forms/How_to_structure_a_web_form).
|
|
364
463
|
|
|
@@ -370,6 +469,8 @@ To achieve a similar effect, you can use multiple `IressForm` components, and tr
|
|
|
370
469
|
|
|
371
470
|
The example here showcases triggering validation using the `form` attribute of `IressButton` and the `requestSubmit` method on the form element.
|
|
372
471
|
|
|
472
|
+
[](./iframe.html?id=components-form-recipes--nested-forms)
|
|
473
|
+
|
|
373
474
|
\*Required Name
|
|
374
475
|
|
|
375
476
|
Add new dependant
|
|
@@ -382,10 +483,22 @@ Save
|
|
|
382
483
|
|
|
383
484
|
Submit main formSubmit all forms
|
|
384
485
|
|
|
385
|
-
Hide
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
486
|
+
Hide codedrawOpen in CodeSandbox
|
|
487
|
+
|
|
488
|
+
import {
|
|
489
|
+
IressButton,
|
|
490
|
+
IressDivider,
|
|
491
|
+
IressFieldGroup,
|
|
492
|
+
IressForm,
|
|
493
|
+
IressFormField,
|
|
494
|
+
IressInline,
|
|
495
|
+
IressInput,
|
|
496
|
+
IressModal,
|
|
497
|
+
IressPanel,
|
|
498
|
+
IressStack,
|
|
499
|
+
IressTable,
|
|
500
|
+
} from '@/main';
|
|
501
|
+
import { useState } from 'react';
|
|
389
502
|
interface FormData {
|
|
390
503
|
name: string;
|
|
391
504
|
}
|
|
@@ -468,13 +581,33 @@ export const NestedFormsExample \= () \=> {
|
|
|
468
581
|
);
|
|
469
582
|
};
|
|
470
583
|
|
|
471
|
-
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
#### Props
|
|
587
|
+
|
|
588
|
+
| Name | Description | Default | Control |
|
|
589
|
+
| --- | --- | --- | --- |
|
|
590
|
+
| form |
|
|
591
|
+
React hook form instance from `useForm`, use if you need more control over the internal state.
|
|
592
|
+
|
|
593
|
+
const form = useForm();
|
|
594
|
+
return <IressForm form={form} />;
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
UseFormReturn
|
|
472
598
|
|
|
473
|
-
|
|
474
|
-
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
| \- | Set object |
|
|
602
|
+
| Show React Hook Forms itemsReact Hook Forms | Show React Hook Forms items |
|
|
603
|
+
|
|
604
|
+
Form Groups
|
|
605
|
+
-----------
|
|
475
606
|
|
|
476
607
|
Powered by [React Hook Form](https://react-hook-form.com/docs/usefieldarray)'s `useFieldArray`, this example allows you add/edit/delete multiple children sections within ONE form (not nested form).
|
|
477
608
|
|
|
609
|
+
[](./iframe.html?id=components-form-recipes--form-groups)
|
|
610
|
+
|
|
478
611
|
Form groups
|
|
479
612
|
===========
|
|
480
613
|
|
|
@@ -506,10 +639,28 @@ Add Dependant
|
|
|
506
639
|
|
|
507
640
|
Submit All
|
|
508
641
|
|
|
509
|
-
Hide
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
642
|
+
Hide codedrawOpen in CodeSandbox
|
|
643
|
+
|
|
644
|
+
import {
|
|
645
|
+
IressButton,
|
|
646
|
+
IressDivider,
|
|
647
|
+
IressFieldGroup,
|
|
648
|
+
IressFormField,
|
|
649
|
+
IressInline,
|
|
650
|
+
IressInput,
|
|
651
|
+
IressPanel,
|
|
652
|
+
IressStack,
|
|
653
|
+
IressText,
|
|
654
|
+
IressIcon,
|
|
655
|
+
IressCloseButton,
|
|
656
|
+
IressHookForm,
|
|
657
|
+
} from '@/main';
|
|
658
|
+
import {
|
|
659
|
+
useForm,
|
|
660
|
+
useFieldArray,
|
|
661
|
+
type Control,
|
|
662
|
+
type UseFormGetValues,
|
|
663
|
+
} from 'react-hook-form';
|
|
513
664
|
interface Client {
|
|
514
665
|
name: string | undefined;
|
|
515
666
|
salary: number | undefined;
|
|
@@ -678,10 +829,28 @@ export const FormGroups \= () \=> {
|
|
|
678
829
|
);
|
|
679
830
|
};
|
|
680
831
|
|
|
681
|
-
|
|
832
|
+
```
|
|
833
|
+
|
|
834
|
+
#### Props
|
|
835
|
+
|
|
836
|
+
| Name | Description | Default | Control |
|
|
837
|
+
| --- | --- | --- | --- |
|
|
838
|
+
| form |
|
|
839
|
+
React hook form instance from `useForm`, use if you need more control over the internal state.
|
|
840
|
+
|
|
841
|
+
const form = useForm();
|
|
842
|
+
return <IressForm form={form} />;
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
UseFormReturn
|
|
846
|
+
|
|
847
|
+
|
|
848
|
+
|
|
849
|
+
| \- | Set object |
|
|
850
|
+
| Show React Hook Forms itemsReact Hook Forms | Show React Hook Forms items |
|
|
682
851
|
|
|
683
|
-
|
|
684
|
-
|
|
852
|
+
Hidden inputs
|
|
853
|
+
-------------
|
|
685
854
|
|
|
686
855
|
You can use hidden inputs to store data that you do not want to display to the user, but still need to include in the form submission. This is useful for storing metadata or other information that is not editable by the user.
|
|
687
856
|
|
|
@@ -690,14 +859,22 @@ Warning
|
|
|
690
859
|
|
|
691
860
|
This is not a recommended practice, as it can lead to security issues if sensitive data is stored in hidden inputs. It is better to use a variable to store your data, and include it in the form submission using the `onSubmit` handler.
|
|
692
861
|
|
|
862
|
+
[](./iframe.html?id=components-form-recipes--hidden-inputs)
|
|
863
|
+
|
|
693
864
|
Visible Input
|
|
694
865
|
|
|
695
866
|
Submit
|
|
696
867
|
|
|
697
|
-
Hide
|
|
698
|
-
|
|
699
|
-
\[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
|
|
868
|
+
Hide codedrawOpen in CodeSandbox
|
|
700
869
|
|
|
870
|
+
import {
|
|
871
|
+
IressButton,
|
|
872
|
+
IressForm,
|
|
873
|
+
IressFormField,
|
|
874
|
+
IressHookForm,
|
|
875
|
+
IressInput,
|
|
876
|
+
IressStack,
|
|
877
|
+
} from '@/main';
|
|
701
878
|
export const HiddenInputsForm \= () \=> {
|
|
702
879
|
const form \= IressForm.useForm();
|
|
703
880
|
const { register } \= form;
|
|
@@ -732,15 +909,35 @@ export const HiddenInputsForm \= () \=> {
|
|
|
732
909
|
);
|
|
733
910
|
};
|
|
734
911
|
|
|
735
|
-
|
|
912
|
+
```
|
|
913
|
+
|
|
914
|
+
#### Props
|
|
915
|
+
|
|
916
|
+
| Name | Description | Default | Control |
|
|
917
|
+
| --- | --- | --- | --- |
|
|
918
|
+
| form |
|
|
919
|
+
React hook form instance from `useForm`, use if you need more control over the internal state.
|
|
920
|
+
|
|
921
|
+
const form = useForm();
|
|
922
|
+
return <IressForm form={form} />;
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
UseFormReturn
|
|
926
|
+
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
| \- | Set object |
|
|
930
|
+
| Show React Hook Forms itemsReact Hook Forms | Show React Hook Forms items |
|
|
736
931
|
|
|
737
|
-
|
|
738
|
-
|
|
932
|
+
Validation depend on other fields
|
|
933
|
+
---------------------------------
|
|
739
934
|
|
|
740
935
|
This example shows how to validate one field based on another field's value.
|
|
741
936
|
|
|
742
937
|
The budget amount input validates against the selected budget range using the custom `validateBudgetInput` rules.
|
|
743
938
|
|
|
939
|
+
[](./iframe.html?id=components-form-recipes--validation-depend-on-other-fields)
|
|
940
|
+
|
|
744
941
|
Validation depend on other fields
|
|
745
942
|
=================================
|
|
746
943
|
|
|
@@ -758,10 +955,22 @@ Submit
|
|
|
758
955
|
|
|
759
956
|
* * *
|
|
760
957
|
|
|
761
|
-
Hide
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
958
|
+
Hide codedrawOpen in CodeSandbox
|
|
959
|
+
|
|
960
|
+
import {
|
|
961
|
+
IressStack,
|
|
962
|
+
IressRow,
|
|
963
|
+
IressCol,
|
|
964
|
+
IressFormField,
|
|
965
|
+
IressInputCurrency,
|
|
966
|
+
IressSelect,
|
|
967
|
+
IressButton,
|
|
968
|
+
IressText,
|
|
969
|
+
IressDivider,
|
|
970
|
+
} from '@/main';
|
|
971
|
+
import { IressHookForm } from '../HookForm/HookForm';
|
|
972
|
+
import { IressForm } from '../Form';
|
|
973
|
+
import { useState } from 'react';
|
|
765
974
|
interface FormData {
|
|
766
975
|
primaryField: string;
|
|
767
976
|
dependentField: string;
|
|
@@ -873,14 +1082,22 @@ export const ValidationDependOnOtherFields \= () \=> {
|
|
|
873
1082
|
);
|
|
874
1083
|
};
|
|
875
1084
|
|
|
876
|
-
|
|
1085
|
+
```
|
|
1086
|
+
|
|
1087
|
+
#### Props
|
|
1088
|
+
|
|
1089
|
+
| Name | Description | Default | Control |
|
|
1090
|
+
| --- | --- | --- | --- |
|
|
1091
|
+
| form |
|
|
1092
|
+
React hook form instance from `useForm`, use if you need more control over the internal state.
|
|
1093
|
+
|
|
1094
|
+
const form = useForm();
|
|
1095
|
+
return <IressForm form={form} />;
|
|
1096
|
+
|
|
1097
|
+
|
|
1098
|
+
UseFormReturn
|
|
1099
|
+
|
|
877
1100
|
|
|
878
|
-
On this page
|
|
879
1101
|
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
* [Alternative form validation](#alternative-form-validation)
|
|
883
|
-
* [Nested forms](#nested-forms)
|
|
884
|
-
* [Form Groups](#form-groups)
|
|
885
|
-
* [Hidden inputs](#hidden-inputs)
|
|
886
|
-
* [Validation depend on other fields](#validation-depend-on-other-fields)
|
|
1102
|
+
| \- | Set object |
|
|
1103
|
+
| Show React Hook Forms itemsReact Hook Forms | Show React Hook Forms items |
|