@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.
- package/Field/FieldBase/index.js +22 -30
- package/Field/FieldBase.js.map +2 -2
- package/Field/FieldBaseContainer/index.js +2 -3
- package/Field/FieldBaseContainer.js.map +2 -2
- package/Field/types.d.ts +0 -2
- package/FieldArray/index.js +0 -1
- package/FieldArray/index.js.map +2 -2
- package/FormBuilder/FormBuilder.stories.d.ts +0 -2
- package/FormBuilder/index.js +3 -79
- package/FormBuilder/index.js.map +2 -2
- package/MultiplicityField/index.js +0 -1
- package/MultiplicityField/index.js.map +2 -2
- package/cjs/Field/FieldBase/index.js +21 -29
- package/cjs/Field/FieldBase.js.map +2 -2
- package/cjs/Field/FieldBaseContainer/index.js +2 -3
- package/cjs/Field/FieldBaseContainer.js.map +2 -2
- package/cjs/Field/types.js.map +1 -1
- package/cjs/FieldArray/index.js +0 -1
- package/cjs/FieldArray/index.js.map +2 -2
- package/cjs/FormBuilder/index.js +3 -79
- package/cjs/FormBuilder/index.js.map +2 -2
- package/cjs/MultiplicityField/index.js +0 -1
- package/cjs/MultiplicityField/index.js.map +2 -2
- package/cjs/inputs/Input/index.js +0 -1
- package/cjs/inputs/Input/index.js.map +2 -2
- package/cjs/lazy/index.js +0 -2
- package/cjs/lazy.js.map +2 -2
- package/cjs/registry/index.js +4 -6
- package/cjs/registry.js.map +2 -2
- package/cjs/validators/index.js +12 -18
- 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 +0 -1
- package/inputs/Input/index.js +0 -1
- package/inputs/Input/index.js.map +2 -2
- package/lazy/index.js +0 -2
- package/package.json +4 -4
- package/registry/index.js +4 -6
- package/src/Field/FieldBase.tsx +22 -33
- package/src/Field/FieldBaseContainer.tsx +2 -3
- package/src/Field/types.tsx +0 -2
- package/src/FieldArray/index.test.tsx +14 -13
- package/src/FieldArray/index.tsx +0 -1
- package/src/FormBuilder/FormBuilder.stories.js +0 -2
- package/src/FormBuilder/index.test.tsx +1 -9
- package/src/FormBuilder/index.tsx +5 -88
- package/src/FormBuilder/scenarios.test.tsx +4 -111
- package/src/MultiplicityField/index.test.tsx +26 -25
- package/src/MultiplicityField/index.tsx +0 -1
- package/src/Questions/__snapshots__/index.spec.tsx.snap +1 -2
- package/src/Questions/index.spec.tsx +0 -8
- package/src/Questions/index.test.tsx +11 -10
- package/src/inputs/AutoCompleteInput/index.test.tsx +14 -13
- package/src/inputs/Checkboxes/index.test.tsx +17 -16
- package/src/inputs/DateInput/index.test.tsx +11 -10
- package/src/inputs/FileInput/index.test.tsx +11 -10
- package/src/inputs/ImageInput/index.test.tsx +20 -19
- package/src/inputs/Input/Input.stories.js +0 -1
- package/src/inputs/Input/__stories__/TextWithLimit.tsx +0 -1
- package/src/inputs/Input/index.test.tsx +38 -41
- package/src/inputs/Input/index.tsx +0 -1
- package/src/inputs/Label/index.test.tsx +11 -10
- package/src/inputs/OtpInput/index.test.tsx +11 -10
- package/src/inputs/Radio/index.test.tsx +17 -16
- package/src/inputs/Select/index.test.tsx +11 -10
- package/src/lazy.js +0 -2
- package/src/registry.js +4 -6
- package/src/validators/index.ts +13 -38
- package/src/validators/utils/int.ts +1 -1
- package/src/validators/utils/number.ts +1 -1
- package/validators/index.js +12 -18
- 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
- package/Field/ErrorGroup/index.js +0 -48
- package/Field/ErrorGroup/package.json +0 -6
- package/Field/ErrorGroup.d.ts +0 -15
- package/Field/ErrorGroup.js.map +0 -7
- package/FormBuilder/__stories__/AutoErrorGrouping.d.ts +0 -3
- package/FormBuilder/__stories__/ErrorGrouping.d.ts +0 -3
- package/FormBuilder/interaction.test.d.ts +0 -1
- package/cjs/Field/ErrorGroup/index.js +0 -82
- package/cjs/Field/ErrorGroup.js.map +0 -7
- package/inputs/Input/__stories__/StringWithTrimValidation.d.ts +0 -3
- package/src/Field/ErrorGroup.tsx +0 -84
- package/src/FormBuilder/__stories__/AutoErrorGrouping.tsx +0 -63
- package/src/FormBuilder/__stories__/ErrorGrouping.tsx +0 -43
- package/src/FormBuilder/interaction.test.tsx +0 -32
- package/src/inputs/Input/__stories__/StringWithTrimValidation.tsx +0 -26
package/Field/ErrorGroup.d.ts
DELETED
|
@@ -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;
|
package/Field/ErrorGroup.js.map
DELETED
|
@@ -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 +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
|
-
}
|
package/src/Field/ErrorGroup.tsx
DELETED
|
@@ -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;
|