@digigov/form 2.0.0-d0adc9fb → 2.0.0-d4fe516b
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/Field/ErrorGroup/index.js +48 -0
- package/Field/ErrorGroup/package.json +6 -0
- package/Field/ErrorGroup.d.ts +15 -0
- package/Field/ErrorGroup.js.map +7 -0
- package/Field/FieldBase/index.js +30 -22
- package/Field/FieldBase.js.map +2 -2
- package/Field/FieldBaseContainer/index.js +3 -2
- package/Field/FieldBaseContainer.js.map +2 -2
- package/Field/types.d.ts +2 -0
- package/FieldArray/index.js +1 -0
- package/FieldArray/index.js.map +2 -2
- package/FormBuilder/FormBuilder.stories.d.ts +2 -0
- package/FormBuilder/__stories__/AutoErrorGrouping.d.ts +3 -0
- package/FormBuilder/__stories__/ErrorGrouping.d.ts +3 -0
- package/FormBuilder/index.js +79 -3
- package/FormBuilder/index.js.map +2 -2
- package/FormBuilder/interaction.test.d.ts +1 -0
- package/MultiplicityField/index.js +1 -0
- package/MultiplicityField/index.js.map +2 -2
- package/cjs/Field/ErrorGroup/index.js +82 -0
- package/cjs/Field/ErrorGroup.js.map +7 -0
- package/cjs/Field/FieldBase/index.js +29 -21
- package/cjs/Field/FieldBase.js.map +2 -2
- package/cjs/Field/FieldBaseContainer/index.js +3 -2
- package/cjs/Field/FieldBaseContainer.js.map +2 -2
- package/cjs/Field/types.js.map +1 -1
- package/cjs/FieldArray/index.js +1 -0
- package/cjs/FieldArray/index.js.map +2 -2
- package/cjs/FormBuilder/index.js +79 -3
- package/cjs/FormBuilder/index.js.map +2 -2
- package/cjs/MultiplicityField/index.js +1 -0
- package/cjs/MultiplicityField/index.js.map +2 -2
- package/cjs/inputs/Input/index.js +1 -0
- package/cjs/inputs/Input/index.js.map +2 -2
- package/cjs/lazy/index.js +3 -1
- package/cjs/lazy.js.map +2 -2
- package/cjs/registry/index.js +4 -2
- package/cjs/registry.js.map +2 -2
- package/cjs/validators/index.js +18 -12
- package/cjs/validators/index.js.map +2 -2
- package/cjs/validators/utils/int/index.js +1 -1
- package/cjs/validators/utils/int.js.map +2 -2
- package/cjs/validators/utils/number/index.js +1 -1
- package/cjs/validators/utils/number.js.map +2 -2
- package/index.js +1 -1
- package/inputs/Input/Input.stories.d.ts +1 -0
- package/inputs/Input/__stories__/StringWithTrimValidation.d.ts +3 -0
- package/inputs/Input/index.js +1 -0
- package/inputs/Input/index.js.map +2 -2
- package/lazy/index.js +3 -1
- package/package.json +4 -4
- package/registry/index.js +4 -2
- package/src/Field/ErrorGroup.tsx +84 -0
- package/src/Field/FieldBase.tsx +33 -22
- package/src/Field/FieldBaseContainer.tsx +3 -2
- package/src/Field/types.tsx +2 -0
- package/src/FieldArray/index.tsx +1 -0
- package/src/FormBuilder/FormBuilder.stories.js +2 -0
- package/src/FormBuilder/__stories__/AutoErrorGrouping.tsx +63 -0
- package/src/FormBuilder/__stories__/ErrorGrouping.tsx +43 -0
- package/src/FormBuilder/index.test.tsx +19 -10
- package/src/FormBuilder/index.tsx +88 -5
- package/src/FormBuilder/interaction.test.tsx +32 -0
- package/src/FormBuilder/scenarios.test.tsx +111 -4
- package/src/MultiplicityField/index.tsx +1 -0
- package/src/Questions/__snapshots__/index.spec.tsx.snap +2 -1
- package/src/Questions/index.spec.tsx +8 -0
- package/src/inputs/Input/Input.stories.js +1 -0
- package/src/inputs/Input/__stories__/StringWithTrimValidation.tsx +26 -0
- package/src/inputs/Input/__stories__/TextWithLimit.tsx +1 -0
- package/src/inputs/Input/index.test.tsx +4 -0
- package/src/inputs/Input/index.tsx +1 -0
- package/src/lazy.js +3 -1
- package/src/registry.js +4 -2
- package/src/validators/index.ts +38 -13
- package/src/validators/utils/int.ts +1 -1
- package/src/validators/utils/number.ts +1 -1
- package/validators/index.js +18 -12
- package/validators/index.js.map +2 -2
- package/validators/utils/int/index.js +1 -1
- package/validators/utils/int.js.map +2 -2
- package/validators/utils/number/index.js +1 -1
- package/validators/utils/number.js.map +2 -2
|
@@ -469,7 +469,11 @@ const expectErrorMessages = async (formBuilder, scenarioExpect, expect) => {
|
|
|
469
469
|
);
|
|
470
470
|
}
|
|
471
471
|
}
|
|
472
|
-
|
|
472
|
+
if (expectObj.textAssertion === 'toContainText') {
|
|
473
|
+
await expect(labelLocator).toContainText(expectText);
|
|
474
|
+
} else {
|
|
475
|
+
await expect(labelLocator).toHaveText(expectText);
|
|
476
|
+
}
|
|
473
477
|
}
|
|
474
478
|
}
|
|
475
479
|
};
|
|
@@ -1289,6 +1293,54 @@ const INPUTS_INPUT_FIELDS = [
|
|
|
1289
1293
|
},
|
|
1290
1294
|
];
|
|
1291
1295
|
|
|
1296
|
+
const ERROR_GROUPING_FIELDS = [
|
|
1297
|
+
{
|
|
1298
|
+
key: 'address',
|
|
1299
|
+
type: 'string',
|
|
1300
|
+
required: true,
|
|
1301
|
+
layout: { xl: 6, lg: 6, md: 6, xs: 6 },
|
|
1302
|
+
label: {
|
|
1303
|
+
primary: 'Οδός',
|
|
1304
|
+
},
|
|
1305
|
+
},
|
|
1306
|
+
{
|
|
1307
|
+
key: 'address_number',
|
|
1308
|
+
type: 'int',
|
|
1309
|
+
required: true,
|
|
1310
|
+
layout: { xl: 2, lg: 2, md: 2, xs: 6 },
|
|
1311
|
+
label: {
|
|
1312
|
+
primary: 'Αριθμός',
|
|
1313
|
+
},
|
|
1314
|
+
},
|
|
1315
|
+
{
|
|
1316
|
+
key: 'postal_code',
|
|
1317
|
+
type: 'postal_code',
|
|
1318
|
+
required: true,
|
|
1319
|
+
layout: { xl: 4, lg: 4, md: 4, xs: 6 },
|
|
1320
|
+
label: {
|
|
1321
|
+
primary: 'Ταχ. Κώδικας',
|
|
1322
|
+
},
|
|
1323
|
+
},
|
|
1324
|
+
{
|
|
1325
|
+
key: 'town',
|
|
1326
|
+
type: 'string',
|
|
1327
|
+
required: true,
|
|
1328
|
+
layout: { xl: 6, lg: 6, md: 6, xs: 6 },
|
|
1329
|
+
label: {
|
|
1330
|
+
primary: 'Πόλη',
|
|
1331
|
+
},
|
|
1332
|
+
},
|
|
1333
|
+
{
|
|
1334
|
+
key: 'country',
|
|
1335
|
+
type: 'string',
|
|
1336
|
+
required: true,
|
|
1337
|
+
layout: { xl: 6, lg: 6, md: 6, xs: 6 },
|
|
1338
|
+
label: {
|
|
1339
|
+
primary: 'Χώρα',
|
|
1340
|
+
},
|
|
1341
|
+
},
|
|
1342
|
+
];
|
|
1343
|
+
|
|
1292
1344
|
const inputsInputScenarios = [
|
|
1293
1345
|
{
|
|
1294
1346
|
title: 'success fill for inputs Input',
|
|
@@ -1410,7 +1462,7 @@ const inputsInputScenarios = [
|
|
|
1410
1462
|
{
|
|
1411
1463
|
title: 'empty fill for inputs Input',
|
|
1412
1464
|
describe: 'inputs Input scenario',
|
|
1413
|
-
fields: INPUTS_INPUT_FIELDS,
|
|
1465
|
+
fields: [...INPUTS_INPUT_FIELDS, ...ERROR_GROUPING_FIELDS],
|
|
1414
1466
|
fill: [],
|
|
1415
1467
|
expect: [
|
|
1416
1468
|
{
|
|
@@ -1468,12 +1520,42 @@ const inputsInputScenarios = [
|
|
|
1468
1520
|
fieldKey: 'uuid4',
|
|
1469
1521
|
text: el.form.error.required,
|
|
1470
1522
|
},
|
|
1523
|
+
{
|
|
1524
|
+
type: 'error',
|
|
1525
|
+
fieldKey: 'address',
|
|
1526
|
+
text: el.form.error.required,
|
|
1527
|
+
textAssertion: 'toContainText',
|
|
1528
|
+
},
|
|
1529
|
+
{
|
|
1530
|
+
type: 'error',
|
|
1531
|
+
fieldKey: 'address_number',
|
|
1532
|
+
text: el.form.error.required,
|
|
1533
|
+
textAssertion: 'toContainText',
|
|
1534
|
+
},
|
|
1535
|
+
{
|
|
1536
|
+
type: 'error',
|
|
1537
|
+
fieldKey: 'postal_code',
|
|
1538
|
+
text: el.form.error.required,
|
|
1539
|
+
textAssertion: 'toContainText',
|
|
1540
|
+
},
|
|
1541
|
+
{
|
|
1542
|
+
type: 'error',
|
|
1543
|
+
fieldKey: 'town',
|
|
1544
|
+
text: el.form.error.required,
|
|
1545
|
+
textAssertion: 'toContainText',
|
|
1546
|
+
},
|
|
1547
|
+
{
|
|
1548
|
+
type: 'error',
|
|
1549
|
+
fieldKey: 'country',
|
|
1550
|
+
text: el.form.error.required,
|
|
1551
|
+
textAssertion: 'toContainText',
|
|
1552
|
+
},
|
|
1471
1553
|
],
|
|
1472
1554
|
},
|
|
1473
1555
|
{
|
|
1474
1556
|
title: 'incorrect types for inputs Input',
|
|
1475
1557
|
describe: 'inputs Input scenario',
|
|
1476
|
-
fields: INPUTS_INPUT_FIELDS,
|
|
1558
|
+
fields: [...INPUTS_INPUT_FIELDS, ...ERROR_GROUPING_FIELDS],
|
|
1477
1559
|
fill: [
|
|
1478
1560
|
{
|
|
1479
1561
|
fieldKey: 'age',
|
|
@@ -1519,6 +1601,14 @@ const inputsInputScenarios = [
|
|
|
1519
1601
|
fieldKey: 'uuid4',
|
|
1520
1602
|
value: 'aaaaaa',
|
|
1521
1603
|
},
|
|
1604
|
+
{
|
|
1605
|
+
fieldKey: 'address_number',
|
|
1606
|
+
value: 'aa',
|
|
1607
|
+
},
|
|
1608
|
+
{
|
|
1609
|
+
fieldKey: 'postal_code',
|
|
1610
|
+
value: 'aaaaa',
|
|
1611
|
+
},
|
|
1522
1612
|
],
|
|
1523
1613
|
expect: [
|
|
1524
1614
|
{
|
|
@@ -1576,6 +1666,18 @@ const inputsInputScenarios = [
|
|
|
1576
1666
|
fieldKey: 'uuid4',
|
|
1577
1667
|
text: el.form.error.uuid4,
|
|
1578
1668
|
},
|
|
1669
|
+
{
|
|
1670
|
+
type: 'error',
|
|
1671
|
+
fieldKey: 'address_number',
|
|
1672
|
+
text: el.form.error.number,
|
|
1673
|
+
textAssertion: 'toContainText',
|
|
1674
|
+
},
|
|
1675
|
+
{
|
|
1676
|
+
type: 'error',
|
|
1677
|
+
fieldKey: 'postal_code',
|
|
1678
|
+
text: el.form.error.postalCode,
|
|
1679
|
+
textAssertion: 'toContainText',
|
|
1680
|
+
},
|
|
1579
1681
|
],
|
|
1580
1682
|
},
|
|
1581
1683
|
];
|
|
@@ -1847,7 +1949,12 @@ for (const scenario of scenarios) {
|
|
|
1847
1949
|
test(scenario.title, async ({ mount, page }) => {
|
|
1848
1950
|
const formBuilder = await mount(
|
|
1849
1951
|
// @ts-ignore
|
|
1850
|
-
<FormBuilder
|
|
1952
|
+
<FormBuilder
|
|
1953
|
+
auto={true}
|
|
1954
|
+
grid={true}
|
|
1955
|
+
fields={scenario.fields}
|
|
1956
|
+
onSubmit={() => {}}
|
|
1957
|
+
/>
|
|
1851
1958
|
);
|
|
1852
1959
|
await fillFields(page, formBuilder, scenario);
|
|
1853
1960
|
await submitForm(formBuilder);
|
|
@@ -45,7 +45,7 @@ exports[`renders the Questions 1`] = `
|
|
|
45
45
|
class="ds-form"
|
|
46
46
|
>
|
|
47
47
|
<div
|
|
48
|
-
class="ds-field xs:ds-grid__col-span-12"
|
|
48
|
+
class="ds-field xs:ds-grid__col-span-12 sm:ds-grid__col-span-12 md:ds-grid__col-span-12 lg:ds-grid__col-span-12 xl:ds-grid__col-span-12"
|
|
49
49
|
>
|
|
50
50
|
<label
|
|
51
51
|
class="ds-label"
|
|
@@ -64,6 +64,7 @@ exports[`renders the Questions 1`] = `
|
|
|
64
64
|
aria-required="true"
|
|
65
65
|
class="ds-input"
|
|
66
66
|
data-type="string"
|
|
67
|
+
id="name"
|
|
67
68
|
name="name"
|
|
68
69
|
type="text"
|
|
69
70
|
/>
|
|
@@ -5,6 +5,7 @@ export default {
|
|
|
5
5
|
displayName: 'Input',
|
|
6
6
|
};
|
|
7
7
|
export { String } from '@digigov/form/inputs/Input/__stories__/String';
|
|
8
|
+
export { StringWithTrimValidation } from '@digigov/form/inputs/Input/__stories__/StringWithTrimValidation';
|
|
8
9
|
export { Integer } from '@digigov/form/inputs/Input/__stories__/Integer';
|
|
9
10
|
export { Boolean } from '@digigov/form/inputs/Input/__stories__/Boolean';
|
|
10
11
|
export { PhoneNumber } from '@digigov/form/inputs/Input/__stories__/PhoneNumber';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import FormBuilder, { Field } from '@digigov/form';
|
|
3
|
+
import { Button } from '@digigov/ui/form/Button';
|
|
4
|
+
|
|
5
|
+
export const StringWithTrimValidation = () => (
|
|
6
|
+
<FormBuilder
|
|
7
|
+
onSubmit={(data) => {
|
|
8
|
+
console.log(data);
|
|
9
|
+
}}
|
|
10
|
+
>
|
|
11
|
+
<Field
|
|
12
|
+
key="business-title"
|
|
13
|
+
name="business-title"
|
|
14
|
+
type="string"
|
|
15
|
+
trim={true}
|
|
16
|
+
label={{
|
|
17
|
+
primary: 'Όνομα επιχείρησης',
|
|
18
|
+
secondary:
|
|
19
|
+
'Εισάγετε μια σειρά από χαρακτήρες και αριθμούς (το πειδίο δεν δέχεται κενά στην αρχή της πρότασης)',
|
|
20
|
+
}}
|
|
21
|
+
required
|
|
22
|
+
/>
|
|
23
|
+
<Button type="submit">Συνέχεια</Button>
|
|
24
|
+
</FormBuilder>
|
|
25
|
+
);
|
|
26
|
+
export default StringWithTrimValidation;
|
|
@@ -10,6 +10,7 @@ import { MobilePhone } from '@digigov/form/inputs/Input/__stories__/MobilePhone'
|
|
|
10
10
|
import { PhoneNumber } from '@digigov/form/inputs/Input/__stories__/PhoneNumber';
|
|
11
11
|
import { PostalCode } from '@digigov/form/inputs/Input/__stories__/PostalCode';
|
|
12
12
|
import { String } from '@digigov/form/inputs/Input/__stories__/String';
|
|
13
|
+
import { StringWithTrimValidation } from '@digigov/form/inputs/Input/__stories__/StringWithTrimValidation';
|
|
13
14
|
import { TextWithLimit } from '@digigov/form/inputs/Input/__stories__/TextWithLimit';
|
|
14
15
|
|
|
15
16
|
test('renders the All Input variants', async ({ mount, page }) => {
|
|
@@ -43,6 +44,9 @@ test('renders the All Input variants', async ({ mount, page }) => {
|
|
|
43
44
|
<TestVariant title="String">
|
|
44
45
|
<String />
|
|
45
46
|
</TestVariant>
|
|
47
|
+
<TestVariant title="StringWithTrimValidation">
|
|
48
|
+
<StringWithTrimValidation />
|
|
49
|
+
</TestVariant>
|
|
46
50
|
<TestVariant title="TextWithLimit">
|
|
47
51
|
<TextWithLimit />
|
|
48
52
|
</TestVariant>
|
package/src/lazy.js
CHANGED
|
@@ -4,15 +4,17 @@ export default {
|
|
|
4
4
|
'Field': lazy(() => import('@digigov/form/Field').then((module) => ({ default: module['Field'] }))),
|
|
5
5
|
'Fieldset': lazy(() => import('@digigov/form/Fieldset').then((module) => ({ default: module['Fieldset'] }))),
|
|
6
6
|
'Label': lazy(() => import('@digigov/form/inputs/Label').then((module) => ({ default: module['Label'] }))),
|
|
7
|
+
'ErrorGroupContext': lazy(() => import('@digigov/form/Field/ErrorGroup').then((module) => ({ default: module['ErrorGroupContext'] }))),
|
|
8
|
+
'ErrorGroup': lazy(() => import('@digigov/form/Field/ErrorGroup').then((module) => ({ default: module['ErrorGroup'] }))),
|
|
7
9
|
'FieldBase': lazy(() => import('@digigov/form/Field/FieldBase').then((module) => ({ default: module['FieldBase'] }))),
|
|
8
10
|
'FieldBaseContainer': lazy(() => import('@digigov/form/Field/FieldBaseContainer').then((module) => ({ default: module['FieldBaseContainer'] }))),
|
|
9
11
|
'FieldConditional': lazy(() => import('@digigov/form/Field/FieldConditional').then((module) => ({ default: module['FieldConditional'] }))),
|
|
10
|
-
'FieldObject': lazy(() => import('@digigov/form/FieldObject').then((module) => ({ default: module['FieldObject'] }))),
|
|
11
12
|
'FormDialog': lazy(() => import('@digigov/form/FieldArray/FormDialog').then((module) => ({ default: module['FormDialog'] }))),
|
|
12
13
|
'ArrayItemModal': lazy(() => import('@digigov/form/FieldArray/FormDialog').then((module) => ({ default: module['ArrayItemModal'] }))),
|
|
13
14
|
'ArrayItemHeader': lazy(() => import('@digigov/form/FieldArray/FormDialog').then((module) => ({ default: module['ArrayItemHeader'] }))),
|
|
14
15
|
'ArrayItemDisplay': lazy(() => import('@digigov/form/FieldArray/FormDialog').then((module) => ({ default: module['ArrayItemDisplay'] }))),
|
|
15
16
|
'FieldArray': lazy(() => import('@digigov/form/FieldArray').then((module) => ({ default: module['FieldArray'] }))),
|
|
17
|
+
'FieldObject': lazy(() => import('@digigov/form/FieldObject').then((module) => ({ default: module['FieldObject'] }))),
|
|
16
18
|
'FieldsetWithContext': lazy(() => import('@digigov/form/Fieldset/FieldsetWithContext').then((module) => ({ default: module['FieldsetWithContext'] }))),
|
|
17
19
|
'FieldsetLabel': lazy(() => import('@digigov/form/Fieldset').then((module) => ({ default: module['FieldsetLabel'] }))),
|
|
18
20
|
'FieldsetCaption': lazy(() => import('@digigov/form/Fieldset').then((module) => ({ default: module['FieldsetCaption'] }))),
|
package/src/registry.js
CHANGED
|
@@ -4,14 +4,15 @@ import * as _digigov_form from "@digigov/form";
|
|
|
4
4
|
import * as _digigov_form_internal from "@digigov/form/internal";
|
|
5
5
|
import * as _digigov_form_types from "@digigov/form/types";
|
|
6
6
|
import * as _digigov_form_utils from "@digigov/form/utils";
|
|
7
|
+
import * as _digigov_form_Field_ErrorGroup from "@digigov/form/Field/ErrorGroup";
|
|
7
8
|
import * as _digigov_form_Field_FieldBase from "@digigov/form/Field/FieldBase";
|
|
8
9
|
import * as _digigov_form_Field_FieldBaseContainer from "@digigov/form/Field/FieldBaseContainer";
|
|
9
10
|
import * as _digigov_form_Field_FieldConditional from "@digigov/form/Field/FieldConditional";
|
|
10
11
|
import * as _digigov_form_Field from "@digigov/form/Field";
|
|
11
12
|
import * as _digigov_form_Field_types from "@digigov/form/Field/types";
|
|
12
|
-
import * as _digigov_form_FieldObject from "@digigov/form/FieldObject";
|
|
13
13
|
import * as _digigov_form_FieldArray_FormDialog from "@digigov/form/FieldArray/FormDialog";
|
|
14
14
|
import * as _digigov_form_FieldArray from "@digigov/form/FieldArray";
|
|
15
|
+
import * as _digigov_form_FieldObject from "@digigov/form/FieldObject";
|
|
15
16
|
import * as _digigov_form_Fieldset_FieldsetWithContext from "@digigov/form/Fieldset/FieldsetWithContext";
|
|
16
17
|
import * as _digigov_form_Fieldset from "@digigov/form/Fieldset";
|
|
17
18
|
import * as _digigov_form_Fieldset_types from "@digigov/form/Fieldset/types";
|
|
@@ -94,14 +95,15 @@ export default {
|
|
|
94
95
|
'@digigov/form/internal': lazyImport(_digigov_form_internal),
|
|
95
96
|
'@digigov/form/types': lazyImport(_digigov_form_types),
|
|
96
97
|
'@digigov/form/utils': lazyImport(_digigov_form_utils),
|
|
98
|
+
'@digigov/form/Field/ErrorGroup': lazyImport(_digigov_form_Field_ErrorGroup),
|
|
97
99
|
'@digigov/form/Field/FieldBase': lazyImport(_digigov_form_Field_FieldBase),
|
|
98
100
|
'@digigov/form/Field/FieldBaseContainer': lazyImport(_digigov_form_Field_FieldBaseContainer),
|
|
99
101
|
'@digigov/form/Field/FieldConditional': lazyImport(_digigov_form_Field_FieldConditional),
|
|
100
102
|
'@digigov/form/Field': lazyImport(_digigov_form_Field),
|
|
101
103
|
'@digigov/form/Field/types': lazyImport(_digigov_form_Field_types),
|
|
102
|
-
'@digigov/form/FieldObject': lazyImport(_digigov_form_FieldObject),
|
|
103
104
|
'@digigov/form/FieldArray/FormDialog': lazyImport(_digigov_form_FieldArray_FormDialog),
|
|
104
105
|
'@digigov/form/FieldArray': lazyImport(_digigov_form_FieldArray),
|
|
106
|
+
'@digigov/form/FieldObject': lazyImport(_digigov_form_FieldObject),
|
|
105
107
|
'@digigov/form/Fieldset/FieldsetWithContext': lazyImport(_digigov_form_Fieldset_FieldsetWithContext),
|
|
106
108
|
'@digigov/form/Fieldset': lazyImport(_digigov_form_Fieldset),
|
|
107
109
|
'@digigov/form/Fieldset/types': lazyImport(_digigov_form_Fieldset_types),
|
package/src/validators/index.ts
CHANGED
|
@@ -44,7 +44,13 @@ export const getYUPTypeMap = (): Record<string, any> => {
|
|
|
44
44
|
.nullable()
|
|
45
45
|
.test(FILE_MAX_SIZE_VALIDATOR(field));
|
|
46
46
|
},
|
|
47
|
-
string: (): yup.StringSchema =>
|
|
47
|
+
string: (field): yup.StringSchema => {
|
|
48
|
+
if (field.trim) {
|
|
49
|
+
return yup.string().trim();
|
|
50
|
+
} else {
|
|
51
|
+
return yup.string();
|
|
52
|
+
}
|
|
53
|
+
},
|
|
48
54
|
boolean: (): yup.BooleanSchema<
|
|
49
55
|
boolean | null | undefined,
|
|
50
56
|
AnyObject,
|
|
@@ -111,26 +117,39 @@ export const getYUPTypeMap = (): Record<string, any> => {
|
|
|
111
117
|
number: (): MixedSchema =>
|
|
112
118
|
yup
|
|
113
119
|
.mixed()
|
|
114
|
-
.transform((_, val) => (val !== '' ? Number(val) :
|
|
120
|
+
.transform((_, val) => (val !== '' ? Number(val) : undefined))
|
|
115
121
|
.test(NUMBER_VALIDATOR()),
|
|
116
122
|
int: (): MixedSchema =>
|
|
117
123
|
yup
|
|
118
124
|
.mixed()
|
|
119
|
-
.transform((_, val) => (val !== '' ? Number(val) :
|
|
125
|
+
.transform((_, val) => (val !== '' ? Number(val) : undefined))
|
|
120
126
|
.test(NUMBER_VALIDATOR())
|
|
121
127
|
.test(INT_VALIDATOR()),
|
|
122
|
-
email: (): yup.StringSchema =>
|
|
123
|
-
|
|
124
|
-
|
|
128
|
+
email: (field): yup.StringSchema =>
|
|
129
|
+
field.trim
|
|
130
|
+
? yup.string().trim().email('form.error.email')
|
|
131
|
+
: yup.string().email('form.error.email'),
|
|
132
|
+
afm: (field): yup.StringSchema =>
|
|
133
|
+
field.trim
|
|
134
|
+
? yup.string().trim().test(AFM_VALIDATOR)
|
|
135
|
+
: yup.string().test(AFM_VALIDATOR),
|
|
136
|
+
uuid4: (field): yup.StringSchema =>
|
|
137
|
+
field.trim
|
|
138
|
+
? yup.string().trim().test(UUID4_VALIDATOR)
|
|
139
|
+
: yup.string().test(UUID4_VALIDATOR),
|
|
125
140
|
iban: (field): yup.StringSchema =>
|
|
126
|
-
|
|
141
|
+
field.trim
|
|
142
|
+
? yup.string().trim().test(IBAN_VALIDATOR(field))
|
|
143
|
+
: yup.string().trim().test(IBAN_VALIDATOR(field)),
|
|
127
144
|
otp: (field): yup.StringSchema =>
|
|
128
145
|
yup.string().trim().test(OTP_VALIDATOR(field)),
|
|
129
146
|
text: (field): yup.StringSchema => {
|
|
130
147
|
if (field?.extra?.limit?.max || !!field?.extra?.limit?.min) {
|
|
131
|
-
return
|
|
148
|
+
return field.trim
|
|
149
|
+
? yup.string().trim().test(TEXT_LIMIT_VALIDATOR(field))
|
|
150
|
+
: yup.string().test(TEXT_LIMIT_VALIDATOR(field));
|
|
132
151
|
} else {
|
|
133
|
-
return yup.string();
|
|
152
|
+
return field.trim ? yup.string().trim() : yup.string();
|
|
134
153
|
}
|
|
135
154
|
},
|
|
136
155
|
image: (field): MixedSchema => {
|
|
@@ -147,11 +166,17 @@ export const getYUPTypeMap = (): Record<string, any> => {
|
|
|
147
166
|
.test(IMAGE_DIMENSION_VALIDATOR(field));
|
|
148
167
|
},
|
|
149
168
|
postal_code: (field): yup.StringSchema =>
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
169
|
+
field.trim
|
|
170
|
+
? yup.string().trim().test(POSTALCODE_VALIDATOR(field))
|
|
171
|
+
: yup.string().test(POSTALCODE_VALIDATOR(field)),
|
|
172
|
+
mobile_phone: (field): yup.StringSchema =>
|
|
173
|
+
field.trim
|
|
174
|
+
? yup.string().trim().test(MOBILE_PHONE_VALIDATOR)
|
|
175
|
+
: yup.string().test(MOBILE_PHONE_VALIDATOR),
|
|
153
176
|
phone_number: (field): yup.StringSchema =>
|
|
154
|
-
|
|
177
|
+
field.trim
|
|
178
|
+
? yup.string().trim().test(PHONE_NUMBER_VALIDATOR(field))
|
|
179
|
+
: yup.string().test(PHONE_NUMBER_VALIDATOR(field)),
|
|
155
180
|
'choice:multiple': (): yup.ArraySchema<
|
|
156
181
|
yup.StringSchema<string | undefined, AnyObject, string | undefined>,
|
|
157
182
|
AnyObject,
|
|
@@ -13,7 +13,7 @@ export const INT_VALIDATOR = (): ValidatorSchema => {
|
|
|
13
13
|
name: 'int-validator',
|
|
14
14
|
message: 'form.error.positive_integer_number',
|
|
15
15
|
test: (value: number): boolean => {
|
|
16
|
-
if (value ===
|
|
16
|
+
if (value === undefined) {
|
|
17
17
|
return true;
|
|
18
18
|
}
|
|
19
19
|
return validateIntNumber(value);
|
|
@@ -9,7 +9,7 @@ export const NUMBER_VALIDATOR = (): ValidatorSchema => {
|
|
|
9
9
|
name: 'number-validator',
|
|
10
10
|
message: 'form.error.number',
|
|
11
11
|
test: (value: number): boolean => {
|
|
12
|
-
if (value ===
|
|
12
|
+
if (value === undefined) {
|
|
13
13
|
return true;
|
|
14
14
|
}
|
|
15
15
|
return validateNumber(value);
|
package/validators/index.js
CHANGED
|
@@ -31,7 +31,13 @@ const getYUPTypeMap = () => {
|
|
|
31
31
|
return value;
|
|
32
32
|
}).nullable().test(FILE_MAX_SIZE_VALIDATOR(field));
|
|
33
33
|
},
|
|
34
|
-
string: () =>
|
|
34
|
+
string: (field) => {
|
|
35
|
+
if (field.trim) {
|
|
36
|
+
return yup.string().trim();
|
|
37
|
+
} else {
|
|
38
|
+
return yup.string();
|
|
39
|
+
}
|
|
40
|
+
},
|
|
35
41
|
boolean: () => {
|
|
36
42
|
return yup.boolean().nullable().transform((value) => {
|
|
37
43
|
if (value === "" || typeof value === "string") return null;
|
|
@@ -74,18 +80,18 @@ const getYUPTypeMap = () => {
|
|
|
74
80
|
return yup.array().of(yup.string());
|
|
75
81
|
}
|
|
76
82
|
},
|
|
77
|
-
number: () => yup.mixed().transform((_, val) => val !== "" ? Number(val) :
|
|
78
|
-
int: () => yup.mixed().transform((_, val) => val !== "" ? Number(val) :
|
|
79
|
-
email: () => yup.string().email("form.error.email"),
|
|
80
|
-
afm: () => yup.string().trim().test(AFM_VALIDATOR),
|
|
81
|
-
uuid4: () => yup.string().trim().test(UUID4_VALIDATOR),
|
|
82
|
-
iban: (field) => yup.string().trim().test(IBAN_VALIDATOR(field)),
|
|
83
|
+
number: () => yup.mixed().transform((_, val) => val !== "" ? Number(val) : void 0).test(NUMBER_VALIDATOR()),
|
|
84
|
+
int: () => yup.mixed().transform((_, val) => val !== "" ? Number(val) : void 0).test(NUMBER_VALIDATOR()).test(INT_VALIDATOR()),
|
|
85
|
+
email: (field) => field.trim ? yup.string().trim().email("form.error.email") : yup.string().email("form.error.email"),
|
|
86
|
+
afm: (field) => field.trim ? yup.string().trim().test(AFM_VALIDATOR) : yup.string().test(AFM_VALIDATOR),
|
|
87
|
+
uuid4: (field) => field.trim ? yup.string().trim().test(UUID4_VALIDATOR) : yup.string().test(UUID4_VALIDATOR),
|
|
88
|
+
iban: (field) => field.trim ? yup.string().trim().test(IBAN_VALIDATOR(field)) : yup.string().trim().test(IBAN_VALIDATOR(field)),
|
|
83
89
|
otp: (field) => yup.string().trim().test(OTP_VALIDATOR(field)),
|
|
84
90
|
text: (field) => {
|
|
85
91
|
if (field?.extra?.limit?.max || !!field?.extra?.limit?.min) {
|
|
86
|
-
return yup.string().test(TEXT_LIMIT_VALIDATOR(field));
|
|
92
|
+
return field.trim ? yup.string().trim().test(TEXT_LIMIT_VALIDATOR(field)) : yup.string().test(TEXT_LIMIT_VALIDATOR(field));
|
|
87
93
|
} else {
|
|
88
|
-
return yup.string();
|
|
94
|
+
return field.trim ? yup.string().trim() : yup.string();
|
|
89
95
|
}
|
|
90
96
|
},
|
|
91
97
|
image: (field) => {
|
|
@@ -96,9 +102,9 @@ const getYUPTypeMap = () => {
|
|
|
96
102
|
return value;
|
|
97
103
|
}).nullable().test(FILE_MAX_SIZE_VALIDATOR(field)).test(IMAGE_DIMENSION_VALIDATOR(field));
|
|
98
104
|
},
|
|
99
|
-
postal_code: (field) => yup.string().trim().test(POSTALCODE_VALIDATOR(field)),
|
|
100
|
-
mobile_phone: () => yup.string().trim().test(MOBILE_PHONE_VALIDATOR),
|
|
101
|
-
phone_number: (field) => yup.string().trim().test(PHONE_NUMBER_VALIDATOR(field)),
|
|
105
|
+
postal_code: (field) => field.trim ? yup.string().trim().test(POSTALCODE_VALIDATOR(field)) : yup.string().test(POSTALCODE_VALIDATOR(field)),
|
|
106
|
+
mobile_phone: (field) => field.trim ? yup.string().trim().test(MOBILE_PHONE_VALIDATOR) : yup.string().test(MOBILE_PHONE_VALIDATOR),
|
|
107
|
+
phone_number: (field) => field.trim ? yup.string().trim().test(PHONE_NUMBER_VALIDATOR(field)) : yup.string().test(PHONE_NUMBER_VALIDATOR(field)),
|
|
102
108
|
"choice:multiple": () => yup.array().of(yup.string()).nullable(),
|
|
103
109
|
"choice:single": () => yup.string().nullable(),
|
|
104
110
|
date: (field) => {
|
package/validators/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/validators/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { MutableRefObject, useMemo } from 'react';\nimport * as yup from 'yup';\nimport { AnyObjectSchema, StringSchema } from 'yup';\nimport { RequiredArraySchema } from 'yup/lib/array';\nimport Lazy from 'yup/lib/Lazy';\nimport { MixedSchema } from 'yup/lib/mixed';\nimport { TypeOfShape, AssertsShape } from 'yup/lib/object';\nimport { AnyObject } from 'yup/lib/types';\nimport { FieldSpec } from '@digigov/form/types';\nimport { ValidatorSchema } from '@digigov/form/validators/types';\nimport {\n getYupObjectShape,\n AFM_VALIDATOR,\n FILE_MAX_SIZE_VALIDATOR,\n IBAN_VALIDATOR,\n OTP_VALIDATOR,\n MOBILE_PHONE_VALIDATOR,\n PHONE_NUMBER_VALIDATOR,\n TEXT_LIMIT_VALIDATOR,\n POSTALCODE_VALIDATOR,\n UUID4_VALIDATOR,\n IMAGE_DIMENSION_VALIDATOR,\n DATE_VALIDATOR,\n LATER_THAN_VALIDATOR,\n EARLIER_THAN_VALIDATOR,\n DATETIME_VALIDATOR,\n LATER_THAN_DATETIME_VALIDATOR,\n EARLIER_THAN_DATETIME_VALIDATOR,\n} from '@digigov/form/validators/utils';\nimport { INT_VALIDATOR } from '@digigov/form/validators/utils/int';\nimport { NUMBER_VALIDATOR } from '@digigov/form/validators/utils/number';\n\nexport const getYUPTypeMap = (): Record<string, any> => {\n const yupTypeMap = {\n file: (field): MixedSchema => {\n return yup\n .mixed()\n .transform((value) => {\n if (!value.length) {\n return null;\n }\n return value;\n })\n .nullable()\n .test(FILE_MAX_SIZE_VALIDATOR(field));\n },\n string: (): yup.StringSchema => yup.string().trim(),\n boolean: (): yup.BooleanSchema<\n boolean | null | undefined,\n AnyObject,\n boolean | null | undefined\n > => {\n return yup\n .boolean()\n .nullable()\n .transform((value) => {\n if (value === '' || typeof value === 'string') return null;\n if (typeof value === 'boolean') return value;\n if (value === 0 || value === 1) return Boolean(value);\n return value;\n });\n },\n object: (\n field\n ):\n | yup.ObjectSchema<any, AnyObject, TypeOfShape<any>, AssertsShape<any>>\n | Lazy<any, unknown> => {\n return getYupObjectShape(field.extra.fields, yupTypeMap);\n },\n array: (\n field\n ):\n | yup.ArraySchema<any, AnyObject, any[] | undefined>\n | RequiredArraySchema<any, AnyObject, any[] | undefined> => {\n if (typeof field.extra.of === 'object') {\n // else if the field is an object then it is a scalar type\n // eg. number, string etc.\n let arrayValidator = yup\n .array()\n .of(yupTypeMap[field.extra.of.type](field.extra.of))\n .required(field.required);\n if (field.extra.length)\n arrayValidator = arrayValidator.length(field.extra.length, {\n key: 'form.error.array.length',\n context: {\n length: field.extra.length,\n },\n });\n if (field.extra.min)\n arrayValidator = arrayValidator.min(field.extra.min, {\n key: 'form.error.array.min',\n context: {\n min: field.extra.min,\n },\n });\n if (field.extra.max)\n arrayValidator = arrayValidator.max(field.extra.max, {\n key: 'form.error.array.max',\n context: {\n max: field.extra.max,\n },\n });\n return arrayValidator;\n } else if (typeof field.extra.of === 'string') {\n return yup.array().of(yupTypeMap[field.extra.of]());\n } else {\n // in any other case it will be string\n return yup.array().of(yup.string());\n }\n },\n number: (): MixedSchema =>\n yup\n .mixed()\n .transform((_, val) => (val !== '' ? Number(val) :
|
|
5
|
-
"mappings": "AAAA,SAA2B,eAAe;AAC1C,YAAY,SAAS;AASrB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,qBAAqB;AAC9B,SAAS,wBAAwB;AAE1B,MAAM,gBAAgB,MAA2B;AACtD,QAAM,aAAa;AAAA,IACjB,MAAM,CAAC,UAAuB;AAC5B,aAAO,IACJ,MAAM,EACN,UAAU,CAAC,UAAU;AACpB,YAAI,CAAC,MAAM,QAAQ;AACjB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,CAAC,EACA,SAAS,EACT,KAAK,wBAAwB,KAAK,CAAC;AAAA,IACxC;AAAA,IACA,QAAQ,
|
|
4
|
+
"sourcesContent": ["import { MutableRefObject, useMemo } from 'react';\nimport * as yup from 'yup';\nimport { AnyObjectSchema, StringSchema } from 'yup';\nimport { RequiredArraySchema } from 'yup/lib/array';\nimport Lazy from 'yup/lib/Lazy';\nimport { MixedSchema } from 'yup/lib/mixed';\nimport { TypeOfShape, AssertsShape } from 'yup/lib/object';\nimport { AnyObject } from 'yup/lib/types';\nimport { FieldSpec } from '@digigov/form/types';\nimport { ValidatorSchema } from '@digigov/form/validators/types';\nimport {\n getYupObjectShape,\n AFM_VALIDATOR,\n FILE_MAX_SIZE_VALIDATOR,\n IBAN_VALIDATOR,\n OTP_VALIDATOR,\n MOBILE_PHONE_VALIDATOR,\n PHONE_NUMBER_VALIDATOR,\n TEXT_LIMIT_VALIDATOR,\n POSTALCODE_VALIDATOR,\n UUID4_VALIDATOR,\n IMAGE_DIMENSION_VALIDATOR,\n DATE_VALIDATOR,\n LATER_THAN_VALIDATOR,\n EARLIER_THAN_VALIDATOR,\n DATETIME_VALIDATOR,\n LATER_THAN_DATETIME_VALIDATOR,\n EARLIER_THAN_DATETIME_VALIDATOR,\n} from '@digigov/form/validators/utils';\nimport { INT_VALIDATOR } from '@digigov/form/validators/utils/int';\nimport { NUMBER_VALIDATOR } from '@digigov/form/validators/utils/number';\n\nexport const getYUPTypeMap = (): Record<string, any> => {\n const yupTypeMap = {\n file: (field): MixedSchema => {\n return yup\n .mixed()\n .transform((value) => {\n if (!value.length) {\n return null;\n }\n return value;\n })\n .nullable()\n .test(FILE_MAX_SIZE_VALIDATOR(field));\n },\n string: (field): yup.StringSchema => {\n if (field.trim) {\n return yup.string().trim();\n } else {\n return yup.string();\n }\n },\n boolean: (): yup.BooleanSchema<\n boolean | null | undefined,\n AnyObject,\n boolean | null | undefined\n > => {\n return yup\n .boolean()\n .nullable()\n .transform((value) => {\n if (value === '' || typeof value === 'string') return null;\n if (typeof value === 'boolean') return value;\n if (value === 0 || value === 1) return Boolean(value);\n return value;\n });\n },\n object: (\n field\n ):\n | yup.ObjectSchema<any, AnyObject, TypeOfShape<any>, AssertsShape<any>>\n | Lazy<any, unknown> => {\n return getYupObjectShape(field.extra.fields, yupTypeMap);\n },\n array: (\n field\n ):\n | yup.ArraySchema<any, AnyObject, any[] | undefined>\n | RequiredArraySchema<any, AnyObject, any[] | undefined> => {\n if (typeof field.extra.of === 'object') {\n // else if the field is an object then it is a scalar type\n // eg. number, string etc.\n let arrayValidator = yup\n .array()\n .of(yupTypeMap[field.extra.of.type](field.extra.of))\n .required(field.required);\n if (field.extra.length)\n arrayValidator = arrayValidator.length(field.extra.length, {\n key: 'form.error.array.length',\n context: {\n length: field.extra.length,\n },\n });\n if (field.extra.min)\n arrayValidator = arrayValidator.min(field.extra.min, {\n key: 'form.error.array.min',\n context: {\n min: field.extra.min,\n },\n });\n if (field.extra.max)\n arrayValidator = arrayValidator.max(field.extra.max, {\n key: 'form.error.array.max',\n context: {\n max: field.extra.max,\n },\n });\n return arrayValidator;\n } else if (typeof field.extra.of === 'string') {\n return yup.array().of(yupTypeMap[field.extra.of]());\n } else {\n // in any other case it will be string\n return yup.array().of(yup.string());\n }\n },\n number: (): MixedSchema =>\n yup\n .mixed()\n .transform((_, val) => (val !== '' ? Number(val) : undefined))\n .test(NUMBER_VALIDATOR()),\n int: (): MixedSchema =>\n yup\n .mixed()\n .transform((_, val) => (val !== '' ? Number(val) : undefined))\n .test(NUMBER_VALIDATOR())\n .test(INT_VALIDATOR()),\n email: (field): yup.StringSchema =>\n field.trim\n ? yup.string().trim().email('form.error.email')\n : yup.string().email('form.error.email'),\n afm: (field): yup.StringSchema =>\n field.trim\n ? yup.string().trim().test(AFM_VALIDATOR)\n : yup.string().test(AFM_VALIDATOR),\n uuid4: (field): yup.StringSchema =>\n field.trim\n ? yup.string().trim().test(UUID4_VALIDATOR)\n : yup.string().test(UUID4_VALIDATOR),\n iban: (field): yup.StringSchema =>\n field.trim\n ? yup.string().trim().test(IBAN_VALIDATOR(field))\n : yup.string().trim().test(IBAN_VALIDATOR(field)),\n otp: (field): yup.StringSchema =>\n yup.string().trim().test(OTP_VALIDATOR(field)),\n text: (field): yup.StringSchema => {\n if (field?.extra?.limit?.max || !!field?.extra?.limit?.min) {\n return field.trim\n ? yup.string().trim().test(TEXT_LIMIT_VALIDATOR(field))\n : yup.string().test(TEXT_LIMIT_VALIDATOR(field));\n } else {\n return field.trim ? yup.string().trim() : yup.string();\n }\n },\n image: (field): MixedSchema => {\n return yup\n .mixed()\n .transform((value) => {\n if (!value.length || value.length === 0) {\n return null;\n }\n return value;\n })\n .nullable()\n .test(FILE_MAX_SIZE_VALIDATOR(field))\n .test(IMAGE_DIMENSION_VALIDATOR(field));\n },\n postal_code: (field): yup.StringSchema =>\n field.trim\n ? yup.string().trim().test(POSTALCODE_VALIDATOR(field))\n : yup.string().test(POSTALCODE_VALIDATOR(field)),\n mobile_phone: (field): yup.StringSchema =>\n field.trim\n ? yup.string().trim().test(MOBILE_PHONE_VALIDATOR)\n : yup.string().test(MOBILE_PHONE_VALIDATOR),\n phone_number: (field): yup.StringSchema =>\n field.trim\n ? yup.string().trim().test(PHONE_NUMBER_VALIDATOR(field))\n : yup.string().test(PHONE_NUMBER_VALIDATOR(field)),\n 'choice:multiple': (): yup.ArraySchema<\n yup.StringSchema<string | undefined, AnyObject, string | undefined>,\n AnyObject,\n (string | undefined)[] | null | undefined,\n (string | undefined)[] | null | undefined\n > => yup.array().of(yup.string()).nullable(),\n 'choice:single': (): StringSchema<\n string | null | undefined,\n AnyObject,\n string | null | undefined\n > => yup.string().nullable(),\n date: (\n field\n ): yup.StringSchema<\n string | null | undefined,\n AnyObject,\n string | null | undefined\n > => {\n let schema = yup.string().nullable();\n if (field?.extra?.min) {\n schema = schema.test(LATER_THAN_VALIDATOR(field));\n }\n if (field?.extra?.max) {\n schema = schema.test(EARLIER_THAN_VALIDATOR(field));\n } else {\n schema = schema.test(DATE_VALIDATOR);\n }\n return schema;\n },\n datetime: (field): yup.StringSchema => {\n if (field?.extra?.min) {\n return yup.string().test(LATER_THAN_DATETIME_VALIDATOR(field));\n }\n if (field?.extra?.max) {\n return yup.string().test(EARLIER_THAN_DATETIME_VALIDATOR(field));\n }\n return yup.string().test(DATETIME_VALIDATOR);\n },\n };\n return yupTypeMap;\n};\n\nexport interface MutableRefObjectProps {}\n// Create a yup validation schema from given fields input\nexport function useValidationSchema(\n fields: FieldSpec[] | MutableRefObject<MutableRefObjectProps>,\n validatorRegistry?: Record<string, ValidatorSchema[]>\n): Lazy<any, unknown> | AnyObjectSchema | void {\n return useMemo(() => {\n const yupTypeMap = getYUPTypeMap();\n return getYupObjectShape(fields, yupTypeMap, validatorRegistry);\n }, []);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/validators/utils/int.ts"],
|
|
4
|
-
"sourcesContent": ["import { ValidatorSchema } from '@digigov/form/validators/types';\n\nexport function validateIntNumber(number: number): boolean {\n if (number === undefined) {\n return false;\n } else {\n return Number.isInteger(number) && Number(number) > 0;\n }\n}\n\nexport const INT_VALIDATOR = (): ValidatorSchema => {\n return {\n name: 'int-validator',\n message: 'form.error.positive_integer_number',\n test: (value: number): boolean => {\n if (value ===
|
|
5
|
-
"mappings": "AAEO,SAAS,kBAAkB,QAAyB;AACzD,MAAI,WAAW,QAAW;AACxB,WAAO;AAAA,EACT,OAAO;AACL,WAAO,OAAO,UAAU,MAAM,KAAK,OAAO,MAAM,IAAI;AAAA,EACtD;AACF;AAEO,MAAM,gBAAgB,MAAuB;AAClD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM,CAAC,UAA2B;AAChC,UAAI,UAAU,
|
|
4
|
+
"sourcesContent": ["import { ValidatorSchema } from '@digigov/form/validators/types';\n\nexport function validateIntNumber(number: number): boolean {\n if (number === undefined) {\n return false;\n } else {\n return Number.isInteger(number) && Number(number) > 0;\n }\n}\n\nexport const INT_VALIDATOR = (): ValidatorSchema => {\n return {\n name: 'int-validator',\n message: 'form.error.positive_integer_number',\n test: (value: number): boolean => {\n if (value === undefined) {\n return true;\n }\n return validateIntNumber(value);\n },\n };\n};\n"],
|
|
5
|
+
"mappings": "AAEO,SAAS,kBAAkB,QAAyB;AACzD,MAAI,WAAW,QAAW;AACxB,WAAO;AAAA,EACT,OAAO;AACL,WAAO,OAAO,UAAU,MAAM,KAAK,OAAO,MAAM,IAAI;AAAA,EACtD;AACF;AAEO,MAAM,gBAAgB,MAAuB;AAClD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM,CAAC,UAA2B;AAChC,UAAI,UAAU,QAAW;AACvB,eAAO;AAAA,MACT;AACA,aAAO,kBAAkB,KAAK;AAAA,IAChC;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/validators/utils/number.ts"],
|
|
4
|
-
"sourcesContent": ["import { ValidatorSchema } from '@digigov/form/validators/types';\n\nexport function validateNumber(number: number): boolean {\n return !Number.isNaN(number);\n}\n\nexport const NUMBER_VALIDATOR = (): ValidatorSchema => {\n return {\n name: 'number-validator',\n message: 'form.error.number',\n test: (value: number): boolean => {\n if (value ===
|
|
5
|
-
"mappings": "AAEO,SAAS,eAAe,QAAyB;AACtD,SAAO,CAAC,OAAO,MAAM,MAAM;AAC7B;AAEO,MAAM,mBAAmB,MAAuB;AACrD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM,CAAC,UAA2B;AAChC,UAAI,UAAU,
|
|
4
|
+
"sourcesContent": ["import { ValidatorSchema } from '@digigov/form/validators/types';\n\nexport function validateNumber(number: number): boolean {\n return !Number.isNaN(number);\n}\n\nexport const NUMBER_VALIDATOR = (): ValidatorSchema => {\n return {\n name: 'number-validator',\n message: 'form.error.number',\n test: (value: number): boolean => {\n if (value === undefined) {\n return true;\n }\n return validateNumber(value);\n },\n };\n};\n"],
|
|
5
|
+
"mappings": "AAEO,SAAS,eAAe,QAAyB;AACtD,SAAO,CAAC,OAAO,MAAM,MAAM;AAC7B;AAEO,MAAM,mBAAmB,MAAuB;AACrD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM,CAAC,UAA2B;AAChC,UAAI,UAAU,QAAW;AACvB,eAAO;AAAA,MACT;AACA,aAAO,eAAe,KAAK;AAAA,IAC7B;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|