@digigov/form 2.0.0-254f7786 → 2.0.0-2a26e869

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 (100) hide show
  1. package/Field/ErrorGroup/index.js +48 -0
  2. package/Field/ErrorGroup/package.json +6 -0
  3. package/Field/ErrorGroup.d.ts +15 -0
  4. package/Field/ErrorGroup.js.map +7 -0
  5. package/Field/FieldBase/index.js +30 -22
  6. package/Field/FieldBase.js.map +2 -2
  7. package/Field/FieldBaseContainer/index.js +3 -2
  8. package/Field/FieldBaseContainer.js.map +2 -2
  9. package/Field/types.d.ts +2 -0
  10. package/FieldArray/index.js +1 -0
  11. package/FieldArray/index.js.map +2 -2
  12. package/FormBuilder/FormBuilder.stories.d.ts +2 -0
  13. package/FormBuilder/__stories__/AutoErrorGrouping.d.ts +3 -0
  14. package/FormBuilder/__stories__/ErrorGrouping.d.ts +3 -0
  15. package/FormBuilder/index.js +83 -4
  16. package/FormBuilder/index.js.map +2 -2
  17. package/FormBuilder/interaction.test.d.ts +1 -0
  18. package/MultiplicityField/index.js +1 -0
  19. package/MultiplicityField/index.js.map +2 -2
  20. package/cjs/Field/ErrorGroup/index.js +82 -0
  21. package/cjs/Field/ErrorGroup.js.map +7 -0
  22. package/cjs/Field/FieldBase/index.js +29 -21
  23. package/cjs/Field/FieldBase.js.map +2 -2
  24. package/cjs/Field/FieldBaseContainer/index.js +3 -2
  25. package/cjs/Field/FieldBaseContainer.js.map +2 -2
  26. package/cjs/Field/types.js.map +1 -1
  27. package/cjs/FieldArray/index.js +1 -0
  28. package/cjs/FieldArray/index.js.map +2 -2
  29. package/cjs/FormBuilder/index.js +83 -4
  30. package/cjs/FormBuilder/index.js.map +2 -2
  31. package/cjs/MultiplicityField/index.js +1 -0
  32. package/cjs/MultiplicityField/index.js.map +2 -2
  33. package/cjs/inputs/DateInput/index.js +3 -3
  34. package/cjs/inputs/DateInput/index.js.map +2 -2
  35. package/cjs/inputs/Input/index.js +1 -0
  36. package/cjs/inputs/Input/index.js.map +2 -2
  37. package/cjs/lazy/index.js +4 -2
  38. package/cjs/lazy.js.map +2 -2
  39. package/cjs/registry/index.js +8 -6
  40. package/cjs/registry.js.map +2 -2
  41. package/cjs/validators/index.js +19 -13
  42. package/cjs/validators/index.js.map +2 -2
  43. package/cjs/validators/utils/int/index.js +1 -1
  44. package/cjs/validators/utils/int.js.map +2 -2
  45. package/cjs/validators/utils/number/index.js +1 -1
  46. package/cjs/validators/utils/number.js.map +2 -2
  47. package/index.js +1 -1
  48. package/inputs/DateInput/index.js +3 -3
  49. package/inputs/DateInput/index.js.map +2 -2
  50. package/inputs/Input/Input.stories.d.ts +1 -0
  51. package/inputs/Input/__stories__/StringWithTrimValidation.d.ts +3 -0
  52. package/inputs/Input/index.js +1 -0
  53. package/inputs/Input/index.js.map +2 -2
  54. package/lazy/index.js +4 -2
  55. package/package.json +4 -4
  56. package/registry/index.js +8 -6
  57. package/src/Field/ErrorGroup.tsx +84 -0
  58. package/src/Field/FieldBase.tsx +33 -22
  59. package/src/Field/FieldBaseContainer.tsx +3 -2
  60. package/src/Field/types.tsx +2 -0
  61. package/src/FieldArray/index.test.tsx +13 -14
  62. package/src/FieldArray/index.tsx +1 -0
  63. package/src/FormBuilder/FormBuilder.stories.js +2 -0
  64. package/src/FormBuilder/__stories__/AutoErrorGrouping.tsx +63 -0
  65. package/src/FormBuilder/__stories__/ErrorGrouping.tsx +43 -0
  66. package/src/FormBuilder/index.test.tsx +9 -1
  67. package/src/FormBuilder/index.tsx +92 -6
  68. package/src/FormBuilder/interaction.test.tsx +32 -0
  69. package/src/FormBuilder/scenarios.test.tsx +111 -4
  70. package/src/MultiplicityField/index.test.tsx +25 -26
  71. package/src/MultiplicityField/index.tsx +1 -0
  72. package/src/Questions/__snapshots__/index.spec.tsx.snap +2 -1
  73. package/src/Questions/index.spec.tsx +8 -0
  74. package/src/Questions/index.test.tsx +10 -11
  75. package/src/inputs/AutoCompleteInput/index.test.tsx +13 -14
  76. package/src/inputs/Checkboxes/index.test.tsx +16 -17
  77. package/src/inputs/DateInput/index.test.tsx +10 -11
  78. package/src/inputs/DateInput/index.tsx +3 -3
  79. package/src/inputs/FileInput/index.test.tsx +10 -11
  80. package/src/inputs/ImageInput/index.test.tsx +19 -20
  81. package/src/inputs/Input/Input.stories.js +1 -0
  82. package/src/inputs/Input/__stories__/StringWithTrimValidation.tsx +26 -0
  83. package/src/inputs/Input/__stories__/TextWithLimit.tsx +1 -0
  84. package/src/inputs/Input/index.test.tsx +41 -38
  85. package/src/inputs/Input/index.tsx +1 -0
  86. package/src/inputs/Label/index.test.tsx +10 -11
  87. package/src/inputs/OtpInput/index.test.tsx +10 -11
  88. package/src/inputs/Radio/index.test.tsx +16 -17
  89. package/src/inputs/Select/index.test.tsx +10 -11
  90. package/src/lazy.js +69 -0
  91. package/src/registry.js +159 -0
  92. package/src/validators/index.ts +41 -14
  93. package/src/validators/utils/int.ts +1 -1
  94. package/src/validators/utils/number.ts +1 -1
  95. package/validators/index.js +19 -13
  96. package/validators/index.js.map +2 -2
  97. package/validators/utils/int/index.js +1 -1
  98. package/validators/utils/int.js.map +2 -2
  99. package/validators/utils/number/index.js +1 -1
  100. 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
- await expect(labelLocator).toHaveText(expectText);
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 auto={true} fields={scenario.fields} onSubmit={() => {}} />
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);
@@ -1,41 +1,40 @@
1
1
  import React from 'react';
2
2
  import { test, expect } from '@playwright/experimental-ct-react';
3
+ import TestVariant from '@digigov/ui/utils/TestVariant'
3
4
  import { Default } from '@digigov/form/MultiplicityField/__stories__/Default';
4
5
  import { PreviewDisplay } from '@digigov/form/MultiplicityField/__stories__/PreviewDisplay';
5
6
  import { WithExactLength } from '@digigov/form/MultiplicityField/__stories__/WithExactLength';
6
7
  import { WithMaxLength } from '@digigov/form/MultiplicityField/__stories__/WithMaxLength';
7
8
  import { WithMinAndMaxLength } from '@digigov/form/MultiplicityField/__stories__/WithMinAndMaxLength';
8
9
  import { WithMinLength } from '@digigov/form/MultiplicityField/__stories__/WithMinLength';
9
- import TestVariant from '@digigov/ui/utils/TestVariant';
10
10
 
11
11
  test('renders the All MultiplicityField variants', async ({ mount, page }) => {
12
12
  await mount(
13
- <div>
14
- <TestVariant title="Default">
15
- <Default />
16
- </TestVariant>
17
- <TestVariant title="PreviewDisplay">
18
- <PreviewDisplay />
19
- </TestVariant>
20
- <TestVariant title="WithExactLength">
21
- <WithExactLength />
22
- </TestVariant>
23
- <TestVariant title="WithMaxLength">
24
- <WithMaxLength />
25
- </TestVariant>
26
- <TestVariant title="WithMinAndMaxLength">
27
- <WithMinAndMaxLength />
28
- </TestVariant>
29
- <TestVariant title="WithMinLength">
30
- <WithMinLength />
31
- </TestVariant>
32
- </div>
33
- );
13
+
14
+ <div>
15
+ <TestVariant title="Default">
16
+ <Default />
17
+ </TestVariant>
18
+ <TestVariant title="PreviewDisplay">
19
+ <PreviewDisplay />
20
+ </TestVariant>
21
+ <TestVariant title="WithExactLength">
22
+ <WithExactLength />
23
+ </TestVariant>
24
+ <TestVariant title="WithMaxLength">
25
+ <WithMaxLength />
26
+ </TestVariant>
27
+ <TestVariant title="WithMinAndMaxLength">
28
+ <WithMinAndMaxLength />
29
+ </TestVariant>
30
+ <TestVariant title="WithMinLength">
31
+ <WithMinLength />
32
+ </TestVariant>
33
+ </div>
34
+ )
34
35
  await page.evaluate(() => document.fonts.ready);
35
36
 
36
- const screenshot = await page.screenshot({
37
- fullPage: true,
38
- animations: 'disabled',
39
- });
37
+ const screenshot = await page.screenshot({ fullPage: true, animations: 'disabled' });
40
38
  expect(screenshot).toMatchSnapshot();
41
39
  });
40
+
@@ -57,6 +57,7 @@ export const Multiplicity: React.FC<MultiplicityProps> = ({
57
57
  ? error
58
58
  : undefined
59
59
  }
60
+ hasError={formState.isSubmitted && !formState.isSubmitting && !!error}
60
61
  wrapper="fieldset"
61
62
  name={name}
62
63
  >
@@ -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
  />
@@ -46,6 +46,14 @@ const steps = [
46
46
  },
47
47
  ];
48
48
 
49
+ beforeAll(() => {
50
+ global.ResizeObserver = class ResizeObserver {
51
+ observe() {}
52
+ unobserve() {}
53
+ disconnect() {}
54
+ };
55
+ });
56
+
49
57
  it('renders the Questions', () => {
50
58
  expect(
51
59
  render(
@@ -1,21 +1,20 @@
1
1
  import React from 'react';
2
2
  import { test, expect } from '@playwright/experimental-ct-react';
3
+ import TestVariant from '@digigov/ui/utils/TestVariant'
3
4
  import { Default } from '@digigov/form/Questions/__stories__/Default';
4
- import TestVariant from '@digigov/ui/utils/TestVariant';
5
5
 
6
6
  test('renders the All Questions variants', async ({ mount, page }) => {
7
7
  await mount(
8
- <div>
9
- <TestVariant title="Default">
10
- <Default />
11
- </TestVariant>
12
- </div>
13
- );
8
+
9
+ <div>
10
+ <TestVariant title="Default">
11
+ <Default />
12
+ </TestVariant>
13
+ </div>
14
+ )
14
15
  await page.evaluate(() => document.fonts.ready);
15
16
 
16
- const screenshot = await page.screenshot({
17
- fullPage: true,
18
- animations: 'disabled',
19
- });
17
+ const screenshot = await page.screenshot({ fullPage: true, animations: 'disabled' });
20
18
  expect(screenshot).toMatchSnapshot();
21
19
  });
20
+
@@ -1,25 +1,24 @@
1
1
  import React from 'react';
2
2
  import { test, expect } from '@playwright/experimental-ct-react';
3
+ import TestVariant from '@digigov/ui/utils/TestVariant'
3
4
  import { Default } from '@digigov/form/inputs/AutoCompleteInput/__stories__/Default';
4
5
  import { Multiple } from '@digigov/form/inputs/AutoCompleteInput/__stories__/Multiple';
5
- import TestVariant from '@digigov/ui/utils/TestVariant';
6
6
 
7
7
  test('renders the All AutoCompleteInput variants', async ({ mount, page }) => {
8
8
  await mount(
9
- <div>
10
- <TestVariant title="Default">
11
- <Default />
12
- </TestVariant>
13
- <TestVariant title="Multiple">
14
- <Multiple />
15
- </TestVariant>
16
- </div>
17
- );
9
+
10
+ <div>
11
+ <TestVariant title="Default">
12
+ <Default />
13
+ </TestVariant>
14
+ <TestVariant title="Multiple">
15
+ <Multiple />
16
+ </TestVariant>
17
+ </div>
18
+ )
18
19
  await page.evaluate(() => document.fonts.ready);
19
20
 
20
- const screenshot = await page.screenshot({
21
- fullPage: true,
22
- animations: 'disabled',
23
- });
21
+ const screenshot = await page.screenshot({ fullPage: true, animations: 'disabled' });
24
22
  expect(screenshot).toMatchSnapshot();
25
23
  });
24
+
@@ -1,29 +1,28 @@
1
1
  import React from 'react';
2
2
  import { test, expect } from '@playwright/experimental-ct-react';
3
+ import TestVariant from '@digigov/ui/utils/TestVariant'
3
4
  import { Conditional } from '@digigov/form/inputs/Checkboxes/__stories__/Conditional';
4
5
  import { Default } from '@digigov/form/inputs/Checkboxes/__stories__/Default';
5
6
  import { WithDivider } from '@digigov/form/inputs/Checkboxes/__stories__/WithDivider';
6
- import TestVariant from '@digigov/ui/utils/TestVariant';
7
7
 
8
8
  test('renders the All Checkboxes variants', async ({ mount, page }) => {
9
9
  await mount(
10
- <div>
11
- <TestVariant title="Conditional">
12
- <Conditional />
13
- </TestVariant>
14
- <TestVariant title="Default">
15
- <Default />
16
- </TestVariant>
17
- <TestVariant title="WithDivider">
18
- <WithDivider />
19
- </TestVariant>
20
- </div>
21
- );
10
+
11
+ <div>
12
+ <TestVariant title="Conditional">
13
+ <Conditional />
14
+ </TestVariant>
15
+ <TestVariant title="Default">
16
+ <Default />
17
+ </TestVariant>
18
+ <TestVariant title="WithDivider">
19
+ <WithDivider />
20
+ </TestVariant>
21
+ </div>
22
+ )
22
23
  await page.evaluate(() => document.fonts.ready);
23
24
 
24
- const screenshot = await page.screenshot({
25
- fullPage: true,
26
- animations: 'disabled',
27
- });
25
+ const screenshot = await page.screenshot({ fullPage: true, animations: 'disabled' });
28
26
  expect(screenshot).toMatchSnapshot();
29
27
  });
28
+
@@ -1,21 +1,20 @@
1
1
  import React from 'react';
2
2
  import { test, expect } from '@playwright/experimental-ct-react';
3
+ import TestVariant from '@digigov/ui/utils/TestVariant'
3
4
  import { Default } from '@digigov/form/inputs/DateInput/__stories__/Default';
4
- import TestVariant from '@digigov/ui/utils/TestVariant';
5
5
 
6
6
  test('renders the All DateInput variants', async ({ mount, page }) => {
7
7
  await mount(
8
- <div>
9
- <TestVariant title="Default">
10
- <Default />
11
- </TestVariant>
12
- </div>
13
- );
8
+
9
+ <div>
10
+ <TestVariant title="Default">
11
+ <Default />
12
+ </TestVariant>
13
+ </div>
14
+ )
14
15
  await page.evaluate(() => document.fonts.ready);
15
16
 
16
- const screenshot = await page.screenshot({
17
- fullPage: true,
18
- animations: 'disabled',
19
- });
17
+ const screenshot = await page.screenshot({ fullPage: true, animations: 'disabled' });
20
18
  expect(screenshot).toMatchSnapshot();
21
19
  });
20
+
@@ -36,12 +36,12 @@ function useDate(value, onChange) {
36
36
  }
37
37
 
38
38
  function setYear(evt) {
39
- const val = evt.target.value;
39
+ const val = evt.target.value.trim();
40
40
  set(val, month, day);
41
41
  }
42
42
 
43
43
  function setMonth(evt, cast) {
44
- let val = evt.target.value;
44
+ let val = evt.target.value.trim();
45
45
  if (cast && val && val.length === 1) {
46
46
  val = '0' + val;
47
47
  }
@@ -49,7 +49,7 @@ function useDate(value, onChange) {
49
49
  }
50
50
 
51
51
  function setDay(evt, cast) {
52
- let val = evt.target.value;
52
+ let val = evt.target.value.trim();
53
53
  if (cast && val && val.length === 1) {
54
54
  val = '0' + val;
55
55
  }
@@ -1,21 +1,20 @@
1
1
  import React from 'react';
2
2
  import { test, expect } from '@playwright/experimental-ct-react';
3
+ import TestVariant from '@digigov/ui/utils/TestVariant'
3
4
  import { Default } from '@digigov/form/inputs/FileInput/__stories__/Default';
4
- import TestVariant from '@digigov/ui/utils/TestVariant';
5
5
 
6
6
  test('renders the All FileInput variants', async ({ mount, page }) => {
7
7
  await mount(
8
- <div>
9
- <TestVariant title="Default">
10
- <Default />
11
- </TestVariant>
12
- </div>
13
- );
8
+
9
+ <div>
10
+ <TestVariant title="Default">
11
+ <Default />
12
+ </TestVariant>
13
+ </div>
14
+ )
14
15
  await page.evaluate(() => document.fonts.ready);
15
16
 
16
- const screenshot = await page.screenshot({
17
- fullPage: true,
18
- animations: 'disabled',
19
- });
17
+ const screenshot = await page.screenshot({ fullPage: true, animations: 'disabled' });
20
18
  expect(screenshot).toMatchSnapshot();
21
19
  });
20
+
@@ -1,33 +1,32 @@
1
1
  import React from 'react';
2
2
  import { test, expect } from '@playwright/experimental-ct-react';
3
+ import TestVariant from '@digigov/ui/utils/TestVariant'
3
4
  import { Default } from '@digigov/form/inputs/ImageInput/__stories__/Default';
4
5
  import { MaxSize } from '@digigov/form/inputs/ImageInput/__stories__/MaxSize';
5
6
  import { WithInvalidImageDimension } from '@digigov/form/inputs/ImageInput/__stories__/WithInvalidImageDimension';
6
7
  import { WithInvalidImageSize } from '@digigov/form/inputs/ImageInput/__stories__/WithInvalidImageSize';
7
- import TestVariant from '@digigov/ui/utils/TestVariant';
8
8
 
9
9
  test('renders the All ImageInput variants', async ({ mount, page }) => {
10
10
  await mount(
11
- <div>
12
- <TestVariant title="Default">
13
- <Default />
14
- </TestVariant>
15
- <TestVariant title="MaxSize">
16
- <MaxSize />
17
- </TestVariant>
18
- <TestVariant title="WithInvalidImageDimension">
19
- <WithInvalidImageDimension />
20
- </TestVariant>
21
- <TestVariant title="WithInvalidImageSize">
22
- <WithInvalidImageSize />
23
- </TestVariant>
24
- </div>
25
- );
11
+
12
+ <div>
13
+ <TestVariant title="Default">
14
+ <Default />
15
+ </TestVariant>
16
+ <TestVariant title="MaxSize">
17
+ <MaxSize />
18
+ </TestVariant>
19
+ <TestVariant title="WithInvalidImageDimension">
20
+ <WithInvalidImageDimension />
21
+ </TestVariant>
22
+ <TestVariant title="WithInvalidImageSize">
23
+ <WithInvalidImageSize />
24
+ </TestVariant>
25
+ </div>
26
+ )
26
27
  await page.evaluate(() => document.fonts.ready);
27
28
 
28
- const screenshot = await page.screenshot({
29
- fullPage: true,
30
- animations: 'disabled',
31
- });
29
+ const screenshot = await page.screenshot({ fullPage: true, animations: 'disabled' });
32
30
  expect(screenshot).toMatchSnapshot();
33
31
  });
32
+
@@ -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;
@@ -12,6 +12,7 @@ export const TextWithLimit = () => (
12
12
  key="text"
13
13
  name="text"
14
14
  type="text"
15
+ trim
15
16
  label={{
16
17
  primary: 'Μπορείτε να δώσετε περισσότερες πληροφορίες;',
17
18
  }}