@digigov/form 2.0.0-b15d5d44 → 2.0.0-b19b7fe2

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 (95) hide show
  1. package/Field/FieldBase/index.js +22 -30
  2. package/Field/FieldBase.js.map +2 -2
  3. package/Field/FieldBaseContainer/index.js +2 -3
  4. package/Field/FieldBaseContainer.js.map +2 -2
  5. package/Field/types.d.ts +0 -2
  6. package/FieldArray/index.js +0 -1
  7. package/FieldArray/index.js.map +2 -2
  8. package/FormBuilder/FormBuilder.stories.d.ts +0 -2
  9. package/FormBuilder/index.js +3 -79
  10. package/FormBuilder/index.js.map +2 -2
  11. package/MultiplicityField/index.js +0 -1
  12. package/MultiplicityField/index.js.map +2 -2
  13. package/cjs/Field/FieldBase/index.js +21 -29
  14. package/cjs/Field/FieldBase.js.map +2 -2
  15. package/cjs/Field/FieldBaseContainer/index.js +2 -3
  16. package/cjs/Field/FieldBaseContainer.js.map +2 -2
  17. package/cjs/Field/types.js.map +1 -1
  18. package/cjs/FieldArray/index.js +0 -1
  19. package/cjs/FieldArray/index.js.map +2 -2
  20. package/cjs/FormBuilder/index.js +3 -79
  21. package/cjs/FormBuilder/index.js.map +2 -2
  22. package/cjs/MultiplicityField/index.js +0 -1
  23. package/cjs/MultiplicityField/index.js.map +2 -2
  24. package/cjs/inputs/Input/index.js +0 -1
  25. package/cjs/inputs/Input/index.js.map +2 -2
  26. package/cjs/lazy/index.js +0 -2
  27. package/cjs/lazy.js.map +2 -2
  28. package/cjs/registry/index.js +4 -6
  29. package/cjs/registry.js.map +2 -2
  30. package/cjs/validators/index.js +12 -18
  31. package/cjs/validators/index.js.map +2 -2
  32. package/cjs/validators/utils/int/index.js +1 -1
  33. package/cjs/validators/utils/int.js.map +2 -2
  34. package/cjs/validators/utils/number/index.js +1 -1
  35. package/cjs/validators/utils/number.js.map +2 -2
  36. package/index.js +1 -1
  37. package/inputs/Input/Input.stories.d.ts +0 -1
  38. package/inputs/Input/index.js +0 -1
  39. package/inputs/Input/index.js.map +2 -2
  40. package/lazy/index.js +0 -2
  41. package/package.json +4 -4
  42. package/registry/index.js +4 -6
  43. package/src/Field/FieldBase.tsx +22 -33
  44. package/src/Field/FieldBaseContainer.tsx +2 -3
  45. package/src/Field/types.tsx +0 -2
  46. package/src/FieldArray/index.test.tsx +14 -13
  47. package/src/FieldArray/index.tsx +0 -1
  48. package/src/FormBuilder/FormBuilder.stories.js +0 -2
  49. package/src/FormBuilder/index.test.tsx +1 -9
  50. package/src/FormBuilder/index.tsx +5 -88
  51. package/src/FormBuilder/scenarios.test.tsx +4 -111
  52. package/src/MultiplicityField/index.test.tsx +26 -25
  53. package/src/MultiplicityField/index.tsx +0 -1
  54. package/src/Questions/__snapshots__/index.spec.tsx.snap +1 -2
  55. package/src/Questions/index.spec.tsx +0 -8
  56. package/src/Questions/index.test.tsx +11 -10
  57. package/src/inputs/AutoCompleteInput/index.test.tsx +14 -13
  58. package/src/inputs/Checkboxes/index.test.tsx +17 -16
  59. package/src/inputs/DateInput/index.test.tsx +11 -10
  60. package/src/inputs/FileInput/index.test.tsx +11 -10
  61. package/src/inputs/ImageInput/index.test.tsx +20 -19
  62. package/src/inputs/Input/Input.stories.js +0 -1
  63. package/src/inputs/Input/__stories__/TextWithLimit.tsx +0 -1
  64. package/src/inputs/Input/index.test.tsx +38 -41
  65. package/src/inputs/Input/index.tsx +0 -1
  66. package/src/inputs/Label/index.test.tsx +11 -10
  67. package/src/inputs/OtpInput/index.test.tsx +11 -10
  68. package/src/inputs/Radio/index.test.tsx +17 -16
  69. package/src/inputs/Select/index.test.tsx +11 -10
  70. package/src/lazy.js +0 -2
  71. package/src/registry.js +4 -6
  72. package/src/validators/index.ts +13 -38
  73. package/src/validators/utils/int.ts +1 -1
  74. package/src/validators/utils/number.ts +1 -1
  75. package/validators/index.js +12 -18
  76. package/validators/index.js.map +2 -2
  77. package/validators/utils/int/index.js +1 -1
  78. package/validators/utils/int.js.map +2 -2
  79. package/validators/utils/number/index.js +1 -1
  80. package/validators/utils/number.js.map +2 -2
  81. package/Field/ErrorGroup/index.js +0 -48
  82. package/Field/ErrorGroup/package.json +0 -6
  83. package/Field/ErrorGroup.d.ts +0 -15
  84. package/Field/ErrorGroup.js.map +0 -7
  85. package/FormBuilder/__stories__/AutoErrorGrouping.d.ts +0 -3
  86. package/FormBuilder/__stories__/ErrorGrouping.d.ts +0 -3
  87. package/FormBuilder/interaction.test.d.ts +0 -1
  88. package/cjs/Field/ErrorGroup/index.js +0 -82
  89. package/cjs/Field/ErrorGroup.js.map +0 -7
  90. package/inputs/Input/__stories__/StringWithTrimValidation.d.ts +0 -3
  91. package/src/Field/ErrorGroup.tsx +0 -84
  92. package/src/FormBuilder/__stories__/AutoErrorGrouping.tsx +0 -63
  93. package/src/FormBuilder/__stories__/ErrorGrouping.tsx +0 -43
  94. package/src/FormBuilder/interaction.test.tsx +0 -32
  95. package/src/inputs/Input/__stories__/StringWithTrimValidation.tsx +0 -26
@@ -1,6 +0,0 @@
1
- {
2
- "sideEffects": false,
3
- "module": "./index.js",
4
- "types": "./index.d.ts",
5
- "main": "../../cjs/Field/ErrorGroup/index.js"
6
- }
@@ -1,15 +0,0 @@
1
- import React from 'react';
2
- import { ErrorOption } from 'react-hook-form';
3
- import { FieldLabelProps } from '@digigov/form/Field/types';
4
- import { Breakpoints } from '@digigov/ui/utils/hooks/useScreen';
5
- interface ErrorGroupContextType {
6
- setError: (name?: string, label?: FieldLabelProps, error?: ErrorOption) => void;
7
- }
8
- export declare const ErrorGroupContext: React.Context<ErrorGroupContextType | null>;
9
- export interface ErrorGroupProps {
10
- children: React.ReactNode;
11
- screenSize?: Breakpoints | undefined;
12
- fieldOrder?: any[];
13
- }
14
- export declare const ErrorGroup: React.FC<ErrorGroupProps>;
15
- export default ErrorGroup;
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/Field/ErrorGroup.tsx"],
4
- "sourcesContent": ["import React, { createContext, useEffect, useState } from 'react';\nimport { ErrorOption } from 'react-hook-form';\nimport { FieldLabelProps } from '@digigov/form/Field/types';\nimport { List, ListItem } from '@digigov/ui/content/List';\nimport { ErrorSummary } from '@digigov/ui/feedback/ErrorSummary';\nimport { useTranslation } from '@digigov/ui/i18n';\nimport { Link } from '@digigov/ui/navigation/Link';\nimport { Heading } from '@digigov/ui/typography/Heading';\nimport { Base } from '@digigov/ui/utils/Base';\nimport { Breakpoints } from '@digigov/ui/utils/hooks/useScreen';\ninterface ErrorGroupContextType {\n setError: (\n name?: string,\n label?: FieldLabelProps,\n error?: ErrorOption\n ) => void;\n}\nexport const ErrorGroupContext = createContext<ErrorGroupContextType | null>(\n null\n);\n\nexport interface ErrorGroupProps {\n children: React.ReactNode;\n screenSize?: Breakpoints | undefined;\n fieldOrder?: any[];\n}\n\nexport const ErrorGroup: React.FC<ErrorGroupProps> = ({\n children,\n screenSize,\n fieldOrder,\n}) => {\n const [errors, setErrors] = useState<ErrorOption>({});\n const { t } = useTranslation();\n const setError = (name, label, error) => {\n if (errors[name] !== error && errors[name]?.message !== error?.message) {\n if (!error?.message) {\n const updatedErrors = { ...errors };\n delete updatedErrors[name];\n setErrors(updatedErrors);\n } else {\n setErrors({\n ...errors,\n [name]: {\n ...error,\n label: label.primary,\n },\n });\n }\n }\n };\n\n useEffect(() => {\n setErrors({});\n }, [screenSize]);\n return (\n <ErrorGroupContext.Provider value={{ setError }}>\n {Object.keys(errors).length !== 0 && (\n <ErrorSummary variant=\"error-group\">\n <Heading size=\"sm\">\n \u03A4\u03B1 \u03C0\u03B1\u03C1\u03B1\u03BA\u03AC\u03C4\u03C9 \u03C0\u03B5\u03B4\u03AF\u03B1 \u03C4\u03B7\u03C2 \u03C6\u03CC\u03C1\u03BC\u03B1\u03C2 \u03B5\u03B9\u03BD\u03B1\u03B9 \u03BB\u03AC\u03B8\u03BF\u03C2.{' '}\n </Heading>\n <List listStyle=\"bullet\">\n {(fieldOrder || Object.keys(errors).reverse())\n .filter((fieldName) => errors[fieldName])\n .map((fieldName, index) => {\n return (\n <ListItem key={index} id={`${fieldName}-error`}>\n <Base as=\"b\">{t(errors[fieldName]?.label)}:</Base>{' '}\n <Link href={`#${fieldName}`}>\n {t(errors[fieldName]?.message)}\n </Link>\n </ListItem>\n );\n })}\n </List>\n </ErrorSummary>\n )}\n {children}\n </ErrorGroupContext.Provider>\n );\n};\n\nexport default ErrorGroup;\n"],
5
- "mappings": "AAAA,OAAO,SAAS,eAAe,WAAW,gBAAgB;AAG1D,SAAS,MAAM,gBAAgB;AAC/B,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAC/B,SAAS,YAAY;AACrB,SAAS,eAAe;AACxB,SAAS,YAAY;AASd,MAAM,oBAAoB;AAAA,EAC/B;AACF;AAQO,MAAM,aAAwC,CAAC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAsB,CAAC,CAAC;AACpD,QAAM,EAAE,EAAE,IAAI,eAAe;AAC7B,QAAM,WAAW,CAAC,MAAM,OAAO,UAAU;AACvC,QAAI,OAAO,IAAI,MAAM,SAAS,OAAO,IAAI,GAAG,YAAY,OAAO,SAAS;AACtE,UAAI,CAAC,OAAO,SAAS;AACnB,cAAM,gBAAgB,EAAE,GAAG,OAAO;AAClC,eAAO,cAAc,IAAI;AACzB,kBAAU,aAAa;AAAA,MACzB,OAAO;AACL,kBAAU;AAAA,UACR,GAAG;AAAA,UACH,CAAC,IAAI,GAAG;AAAA,YACN,GAAG;AAAA,YACH,OAAO,MAAM;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEA,YAAU,MAAM;AACd,cAAU,CAAC,CAAC;AAAA,EACd,GAAG,CAAC,UAAU,CAAC;AACf,SACE,oCAAC,kBAAkB,UAAlB,EAA2B,OAAO,EAAE,SAAS,KAC3C,OAAO,KAAK,MAAM,EAAE,WAAW,KAC9B,oCAAC,gBAAa,SAAQ,iBACpB,oCAAC,WAAQ,MAAK,QAAK,uNACyB,GAC5C,GACA,oCAAC,QAAK,WAAU,aACZ,cAAc,OAAO,KAAK,MAAM,EAAE,QAAQ,GACzC,OAAO,CAAC,cAAc,OAAO,SAAS,CAAC,EACvC,IAAI,CAAC,WAAW,UAAU;AACzB,WACE,oCAAC,YAAS,KAAK,OAAO,IAAI,GAAG,SAAS,YACpC,oCAAC,QAAK,IAAG,OAAK,EAAE,OAAO,SAAS,GAAG,KAAK,GAAE,GAAC,GAAQ,KACnD,oCAAC,QAAK,MAAM,IAAI,SAAS,MACtB,EAAE,OAAO,SAAS,GAAG,OAAO,CAC/B,CACF;AAAA,EAEJ,CAAC,CACL,CACF,GAED,QACH;AAEJ;AAEA,IAAO,qBAAQ;",
6
- "names": []
7
- }
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export declare const AutoErrorGrouping: () => React.JSX.Element;
3
- export default AutoErrorGrouping;
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export declare const ErrorGrouping: () => React.JSX.Element;
3
- export default ErrorGrouping;
@@ -1 +0,0 @@
1
- export {};
@@ -1,82 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
- var ErrorGroup_exports = {};
29
- __export(ErrorGroup_exports, {
30
- ErrorGroup: () => ErrorGroup,
31
- ErrorGroupContext: () => ErrorGroupContext,
32
- default: () => ErrorGroup_default
33
- });
34
- module.exports = __toCommonJS(ErrorGroup_exports);
35
- var import_react = __toESM(require("react"));
36
- var import_List = require("@digigov/ui/content/List");
37
- var import_ErrorSummary = require("@digigov/ui/feedback/ErrorSummary");
38
- var import_i18n = require("@digigov/ui/i18n");
39
- var import_Link = require("@digigov/ui/navigation/Link");
40
- var import_Heading = require("@digigov/ui/typography/Heading");
41
- var import_Base = require("@digigov/ui/utils/Base");
42
- const ErrorGroupContext = (0, import_react.createContext)(
43
- null
44
- );
45
- const ErrorGroup = ({
46
- children,
47
- screenSize,
48
- fieldOrder
49
- }) => {
50
- const [errors, setErrors] = (0, import_react.useState)({});
51
- const { t } = (0, import_i18n.useTranslation)();
52
- const setError = (name, label, error) => {
53
- if (errors[name] !== error && errors[name]?.message !== error?.message) {
54
- if (!error?.message) {
55
- const updatedErrors = { ...errors };
56
- delete updatedErrors[name];
57
- setErrors(updatedErrors);
58
- } else {
59
- setErrors({
60
- ...errors,
61
- [name]: {
62
- ...error,
63
- label: label.primary
64
- }
65
- });
66
- }
67
- }
68
- };
69
- (0, import_react.useEffect)(() => {
70
- setErrors({});
71
- }, [screenSize]);
72
- return /* @__PURE__ */ import_react.default.createElement(ErrorGroupContext.Provider, { value: { setError } }, Object.keys(errors).length !== 0 && /* @__PURE__ */ import_react.default.createElement(import_ErrorSummary.ErrorSummary, { variant: "error-group" }, /* @__PURE__ */ import_react.default.createElement(import_Heading.Heading, { size: "sm" }, "\u03A4\u03B1 \u03C0\u03B1\u03C1\u03B1\u03BA\u03AC\u03C4\u03C9 \u03C0\u03B5\u03B4\u03AF\u03B1 \u03C4\u03B7\u03C2 \u03C6\u03CC\u03C1\u03BC\u03B1\u03C2 \u03B5\u03B9\u03BD\u03B1\u03B9 \u03BB\u03AC\u03B8\u03BF\u03C2.", " "), /* @__PURE__ */ import_react.default.createElement(import_List.List, { listStyle: "bullet" }, (fieldOrder || Object.keys(errors).reverse()).filter((fieldName) => errors[fieldName]).map((fieldName, index) => {
73
- return /* @__PURE__ */ import_react.default.createElement(import_List.ListItem, { key: index, id: `${fieldName}-error` }, /* @__PURE__ */ import_react.default.createElement(import_Base.Base, { as: "b" }, t(errors[fieldName]?.label), ":"), " ", /* @__PURE__ */ import_react.default.createElement(import_Link.Link, { href: `#${fieldName}` }, t(errors[fieldName]?.message)));
74
- }))), children);
75
- };
76
- var ErrorGroup_default = ErrorGroup;
77
- // Annotate the CommonJS export names for ESM import in node:
78
- 0 && (module.exports = {
79
- ErrorGroup,
80
- ErrorGroupContext
81
- });
82
- //# sourceMappingURL=ErrorGroup.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/Field/ErrorGroup.tsx"],
4
- "sourcesContent": ["import React, { createContext, useEffect, useState } from 'react';\nimport { ErrorOption } from 'react-hook-form';\nimport { FieldLabelProps } from '@digigov/form/Field/types';\nimport { List, ListItem } from '@digigov/ui/content/List';\nimport { ErrorSummary } from '@digigov/ui/feedback/ErrorSummary';\nimport { useTranslation } from '@digigov/ui/i18n';\nimport { Link } from '@digigov/ui/navigation/Link';\nimport { Heading } from '@digigov/ui/typography/Heading';\nimport { Base } from '@digigov/ui/utils/Base';\nimport { Breakpoints } from '@digigov/ui/utils/hooks/useScreen';\ninterface ErrorGroupContextType {\n setError: (\n name?: string,\n label?: FieldLabelProps,\n error?: ErrorOption\n ) => void;\n}\nexport const ErrorGroupContext = createContext<ErrorGroupContextType | null>(\n null\n);\n\nexport interface ErrorGroupProps {\n children: React.ReactNode;\n screenSize?: Breakpoints | undefined;\n fieldOrder?: any[];\n}\n\nexport const ErrorGroup: React.FC<ErrorGroupProps> = ({\n children,\n screenSize,\n fieldOrder,\n}) => {\n const [errors, setErrors] = useState<ErrorOption>({});\n const { t } = useTranslation();\n const setError = (name, label, error) => {\n if (errors[name] !== error && errors[name]?.message !== error?.message) {\n if (!error?.message) {\n const updatedErrors = { ...errors };\n delete updatedErrors[name];\n setErrors(updatedErrors);\n } else {\n setErrors({\n ...errors,\n [name]: {\n ...error,\n label: label.primary,\n },\n });\n }\n }\n };\n\n useEffect(() => {\n setErrors({});\n }, [screenSize]);\n return (\n <ErrorGroupContext.Provider value={{ setError }}>\n {Object.keys(errors).length !== 0 && (\n <ErrorSummary variant=\"error-group\">\n <Heading size=\"sm\">\n \u03A4\u03B1 \u03C0\u03B1\u03C1\u03B1\u03BA\u03AC\u03C4\u03C9 \u03C0\u03B5\u03B4\u03AF\u03B1 \u03C4\u03B7\u03C2 \u03C6\u03CC\u03C1\u03BC\u03B1\u03C2 \u03B5\u03B9\u03BD\u03B1\u03B9 \u03BB\u03AC\u03B8\u03BF\u03C2.{' '}\n </Heading>\n <List listStyle=\"bullet\">\n {(fieldOrder || Object.keys(errors).reverse())\n .filter((fieldName) => errors[fieldName])\n .map((fieldName, index) => {\n return (\n <ListItem key={index} id={`${fieldName}-error`}>\n <Base as=\"b\">{t(errors[fieldName]?.label)}:</Base>{' '}\n <Link href={`#${fieldName}`}>\n {t(errors[fieldName]?.message)}\n </Link>\n </ListItem>\n );\n })}\n </List>\n </ErrorSummary>\n )}\n {children}\n </ErrorGroupContext.Provider>\n );\n};\n\nexport default ErrorGroup;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA0D;AAG1D,kBAA+B;AAC/B,0BAA6B;AAC7B,kBAA+B;AAC/B,kBAAqB;AACrB,qBAAwB;AACxB,kBAAqB;AASd,MAAM,wBAAoB;AAAA,EAC/B;AACF;AAQO,MAAM,aAAwC,CAAC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,CAAC,QAAQ,SAAS,QAAI,uBAAsB,CAAC,CAAC;AACpD,QAAM,EAAE,EAAE,QAAI,4BAAe;AAC7B,QAAM,WAAW,CAAC,MAAM,OAAO,UAAU;AACvC,QAAI,OAAO,IAAI,MAAM,SAAS,OAAO,IAAI,GAAG,YAAY,OAAO,SAAS;AACtE,UAAI,CAAC,OAAO,SAAS;AACnB,cAAM,gBAAgB,EAAE,GAAG,OAAO;AAClC,eAAO,cAAc,IAAI;AACzB,kBAAU,aAAa;AAAA,MACzB,OAAO;AACL,kBAAU;AAAA,UACR,GAAG;AAAA,UACH,CAAC,IAAI,GAAG;AAAA,YACN,GAAG;AAAA,YACH,OAAO,MAAM;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEA,8BAAU,MAAM;AACd,cAAU,CAAC,CAAC;AAAA,EACd,GAAG,CAAC,UAAU,CAAC;AACf,SACE,6BAAAA,QAAA,cAAC,kBAAkB,UAAlB,EAA2B,OAAO,EAAE,SAAS,KAC3C,OAAO,KAAK,MAAM,EAAE,WAAW,KAC9B,6BAAAA,QAAA,cAAC,oCAAa,SAAQ,iBACpB,6BAAAA,QAAA,cAAC,0BAAQ,MAAK,QAAK,uNACyB,GAC5C,GACA,6BAAAA,QAAA,cAAC,oBAAK,WAAU,aACZ,cAAc,OAAO,KAAK,MAAM,EAAE,QAAQ,GACzC,OAAO,CAAC,cAAc,OAAO,SAAS,CAAC,EACvC,IAAI,CAAC,WAAW,UAAU;AACzB,WACE,6BAAAA,QAAA,cAAC,wBAAS,KAAK,OAAO,IAAI,GAAG,SAAS,YACpC,6BAAAA,QAAA,cAAC,oBAAK,IAAG,OAAK,EAAE,OAAO,SAAS,GAAG,KAAK,GAAE,GAAC,GAAQ,KACnD,6BAAAA,QAAA,cAAC,oBAAK,MAAM,IAAI,SAAS,MACtB,EAAE,OAAO,SAAS,GAAG,OAAO,CAC/B,CACF;AAAA,EAEJ,CAAC,CACL,CACF,GAED,QACH;AAEJ;AAEA,IAAO,qBAAQ;",
6
- "names": ["React"]
7
- }
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export declare const StringWithTrimValidation: () => React.JSX.Element;
3
- export default StringWithTrimValidation;
@@ -1,84 +0,0 @@
1
- import React, { createContext, useEffect, useState } from 'react';
2
- import { ErrorOption } from 'react-hook-form';
3
- import { FieldLabelProps } from '@digigov/form/Field/types';
4
- import { List, ListItem } from '@digigov/ui/content/List';
5
- import { ErrorSummary } from '@digigov/ui/feedback/ErrorSummary';
6
- import { useTranslation } from '@digigov/ui/i18n';
7
- import { Link } from '@digigov/ui/navigation/Link';
8
- import { Heading } from '@digigov/ui/typography/Heading';
9
- import { Base } from '@digigov/ui/utils/Base';
10
- import { Breakpoints } from '@digigov/ui/utils/hooks/useScreen';
11
- interface ErrorGroupContextType {
12
- setError: (
13
- name?: string,
14
- label?: FieldLabelProps,
15
- error?: ErrorOption
16
- ) => void;
17
- }
18
- export const ErrorGroupContext = createContext<ErrorGroupContextType | null>(
19
- null
20
- );
21
-
22
- export interface ErrorGroupProps {
23
- children: React.ReactNode;
24
- screenSize?: Breakpoints | undefined;
25
- fieldOrder?: any[];
26
- }
27
-
28
- export const ErrorGroup: React.FC<ErrorGroupProps> = ({
29
- children,
30
- screenSize,
31
- fieldOrder,
32
- }) => {
33
- const [errors, setErrors] = useState<ErrorOption>({});
34
- const { t } = useTranslation();
35
- const setError = (name, label, error) => {
36
- if (errors[name] !== error && errors[name]?.message !== error?.message) {
37
- if (!error?.message) {
38
- const updatedErrors = { ...errors };
39
- delete updatedErrors[name];
40
- setErrors(updatedErrors);
41
- } else {
42
- setErrors({
43
- ...errors,
44
- [name]: {
45
- ...error,
46
- label: label.primary,
47
- },
48
- });
49
- }
50
- }
51
- };
52
-
53
- useEffect(() => {
54
- setErrors({});
55
- }, [screenSize]);
56
- return (
57
- <ErrorGroupContext.Provider value={{ setError }}>
58
- {Object.keys(errors).length !== 0 && (
59
- <ErrorSummary variant="error-group">
60
- <Heading size="sm">
61
- Τα παρακάτω πεδία της φόρμας ειναι λάθος.{' '}
62
- </Heading>
63
- <List listStyle="bullet">
64
- {(fieldOrder || Object.keys(errors).reverse())
65
- .filter((fieldName) => errors[fieldName])
66
- .map((fieldName, index) => {
67
- return (
68
- <ListItem key={index} id={`${fieldName}-error`}>
69
- <Base as="b">{t(errors[fieldName]?.label)}:</Base>{' '}
70
- <Link href={`#${fieldName}`}>
71
- {t(errors[fieldName]?.message)}
72
- </Link>
73
- </ListItem>
74
- );
75
- })}
76
- </List>
77
- </ErrorSummary>
78
- )}
79
- {children}
80
- </ErrorGroupContext.Provider>
81
- );
82
- };
83
-
84
- export default ErrorGroup;
@@ -1,63 +0,0 @@
1
- import React from 'react';
2
- import FormBuilder, { FieldSpec } from '@digigov/form';
3
-
4
- const FIELDS: FieldSpec[] = [
5
- {
6
- key: 'name',
7
- type: 'string',
8
- required: true,
9
- layout: { xl: 4, lg: 4, md: 6, xs: 6 },
10
- label: {
11
- primary: 'Όνομα',
12
- },
13
- },
14
- {
15
- key: 'surname',
16
- type: 'string',
17
- required: true,
18
- layout: { xl: 4, lg: 4, md: 6, xs: 6 },
19
- label: {
20
- primary: 'Επίθετο',
21
- },
22
- },
23
- {
24
- key: 'address',
25
- type: 'string',
26
- required: true,
27
- layout: { xl: 4, lg: 2, md: 6, xs: 6 },
28
- label: {
29
- primary: 'Διεύθυνση',
30
- },
31
- },
32
- {
33
- key: 'town',
34
- type: 'string',
35
- required: true,
36
- layout: { xl: 4, lg: 4, md: 6, xs: 6 },
37
- label: {
38
- primary: 'Πόλη',
39
- },
40
- },
41
- {
42
- key: 'country',
43
- type: 'string',
44
- required: true,
45
- layout: { xs: 12 },
46
- label: {
47
- primary: 'Χώρα',
48
- },
49
- },
50
- ];
51
-
52
- export const AutoErrorGrouping = () => (
53
- <FormBuilder
54
- grid={true}
55
- auto={true}
56
- onSubmit={(data) => {
57
- console.log(data);
58
- }}
59
- fields={FIELDS}
60
- ></FormBuilder>
61
- );
62
-
63
- export default AutoErrorGrouping;
@@ -1,43 +0,0 @@
1
- import React from 'react';
2
- import FormBuilder, { Field } from '@digigov/form';
3
- import { ErrorGroup } from '@digigov/form/Field/ErrorGroup';
4
- import { Button } from '@digigov/ui/form/Button';
5
-
6
- export const ErrorGrouping = () => (
7
- <FormBuilder
8
- grid={true}
9
- onSubmit={(data) => {
10
- console.log(data);
11
- }}
12
- >
13
- <ErrorGroup>
14
- <Field
15
- key="name"
16
- name="name"
17
- type="string"
18
- label={{ primary: 'Όνομα' }}
19
- layout={{ xs: 4 }}
20
- required
21
- />
22
- <Field
23
- key="surname"
24
- name="surname"
25
- type="string"
26
- label={{ primary: 'Επίθετο' }}
27
- layout={{ xs: 4 }}
28
- required
29
- />
30
- <Field
31
- key="address"
32
- name="address"
33
- type="string"
34
- label={{ primary: 'Διεύθυνση' }}
35
- layout={{ xs: 4 }}
36
- required
37
- />
38
- </ErrorGroup>
39
- <Button type="submit">Συνέχεια</Button>
40
- </FormBuilder>
41
- );
42
-
43
- export default ErrorGrouping;
@@ -1,32 +0,0 @@
1
- import React from 'react';
2
- import { test, expect } from '@playwright/experimental-ct-react';
3
-
4
- import { AutoErrorGrouping } from '@digigov/form/FormBuilder/__stories__/AutoErrorGrouping';
5
- import { ErrorGrouping } from '@digigov/form/FormBuilder/__stories__/ErrorGrouping';
6
-
7
- test('renders the ErrorGrouping and click submit', async ({ mount, page }) => {
8
- await mount(<ErrorGrouping />);
9
- await page.evaluate(() => document.fonts.ready);
10
- await page.click('text="Συνέχεια"');
11
-
12
- const screenshot = await page.screenshot({
13
- fullPage: true,
14
- animations: 'disabled',
15
- });
16
- expect(screenshot).toMatchSnapshot();
17
- });
18
-
19
- test('renders the AutoErrorGrouping and click submit', async ({
20
- mount,
21
- page,
22
- }) => {
23
- await mount(<AutoErrorGrouping />);
24
- await page.evaluate(() => document.fonts.ready);
25
- await page.click('text="Συνέχεια"');
26
-
27
- const screenshot = await page.screenshot({
28
- fullPage: true,
29
- animations: 'disabled',
30
- });
31
- expect(screenshot).toMatchSnapshot();
32
- });
@@ -1,26 +0,0 @@
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;