@dhis2/ui-forms 9.10.3 → 9.11.1-beta.1
Sign up to get free protection for your applications and to get access to all the features.
- package/build/cjs/CheckboxFieldFF/{CheckboxFieldFF.stories.e2e.js → CheckboxFieldFF.e2e.stories.js} +22 -15
- package/build/cjs/CheckboxFieldFF/CheckboxFieldFF.js +2 -12
- package/build/cjs/CheckboxFieldFF/{CheckboxFieldFF.stories.js → CheckboxFieldFF.prod.stories.js} +29 -24
- package/build/cjs/CheckboxFieldFF/features/can_toggle_a_boolean/index.js +0 -1
- package/build/cjs/CheckboxFieldFF/features/can_toggle_a_value/index.js +0 -1
- package/build/cjs/CheckboxFieldFF/features/common/index.js +0 -1
- package/build/cjs/CheckboxFieldFF/features/displays_error/index.js +0 -2
- package/build/cjs/FieldGroupFF/FieldGroupFF.js +1 -10
- package/build/cjs/FieldGroupFF/{FieldGroupFF.stories.js → FieldGroupFF.prod.stories.js} +11 -12
- package/build/cjs/FileInputFieldFF/{FileInputFieldFF.stories.e2e.js → FileInputFieldFF.e2e.stories.js} +45 -56
- package/build/cjs/FileInputFieldFF/FileInputFieldFF.js +2 -19
- package/build/cjs/FileInputFieldFF/{FileInputFieldFF.stories.js → FileInputFieldFF.prod.stories.js} +29 -22
- package/build/cjs/FileInputFieldFF/features/accepts_file/index.js +0 -1
- package/build/cjs/FileInputFieldFF/features/common/index.js +0 -1
- package/build/cjs/FileInputFieldFF/features/displays_error/index.js +0 -1
- package/build/cjs/InputFieldFF/InputFieldFF.e2e.stories.js +30 -0
- package/build/cjs/InputFieldFF/InputFieldFF.js +2 -12
- package/build/cjs/InputFieldFF/{InputFieldFF.stories.js → InputFieldFF.prod.stories.js} +29 -22
- package/build/cjs/InputFieldFF/features/can_set_a_value/index.js +0 -1
- package/build/cjs/InputFieldFF/features/displays_error/index.js +0 -2
- package/build/cjs/MultiSelectFieldFF/{MultiSelectFieldFF.stories.e2e.js → MultiSelectFieldFF.e2e.stories.js} +15 -17
- package/build/cjs/MultiSelectFieldFF/MultiSelectFieldFF.js +3 -15
- package/build/cjs/MultiSelectFieldFF/MultiSelectFieldFF.prod.stories.js +107 -0
- package/build/cjs/MultiSelectFieldFF/features/can_set_a_value/index.js +0 -1
- package/build/cjs/MultiSelectFieldFF/features/common/index.js +1 -2
- package/build/cjs/MultiSelectFieldFF/features/displays_error/index.js +0 -2
- package/build/cjs/RadioFieldFF/RadioFieldFF.e2e.stories.js +45 -0
- package/build/cjs/RadioFieldFF/RadioFieldFF.js +2 -12
- package/build/cjs/RadioFieldFF/{RadioFieldFF.stories.js → RadioFieldFF.prod.stories.js} +29 -16
- package/build/cjs/RadioFieldFF/features/can_set_a_value/index.js +0 -1
- package/build/cjs/RadioFieldFF/features/common/index.js +0 -1
- package/build/cjs/RadioFieldFF/features/displays_error/index.js +0 -2
- package/build/cjs/SingleSelectFieldFF/SingleSelectFieldFF.e2e.stories.js +39 -0
- package/build/cjs/SingleSelectFieldFF/SingleSelectFieldFF.js +2 -12
- package/build/cjs/SingleSelectFieldFF/SingleSelectFieldFF.prod.stories.js +106 -0
- package/build/cjs/SingleSelectFieldFF/features/can_set_a_value/index.js +0 -1
- package/build/cjs/SingleSelectFieldFF/features/common/index.js +0 -1
- package/build/cjs/SingleSelectFieldFF/features/displays_error/index.js +0 -2
- package/build/cjs/SwitchFieldFF/SwitchFieldFF.e2e.stories.js +56 -0
- package/build/cjs/SwitchFieldFF/SwitchFieldFF.js +2 -12
- package/build/cjs/SwitchFieldFF/{SwitchFieldFF.stories.js → SwitchFieldFF.prod.stories.js} +29 -24
- package/build/cjs/SwitchFieldFF/features/can_toggle_a_boolean/index.js +0 -1
- package/build/cjs/SwitchFieldFF/features/can_toggle_a_value/index.js +0 -1
- package/build/cjs/SwitchFieldFF/features/common/index.js +0 -1
- package/build/cjs/SwitchFieldFF/features/displays_error/index.js +0 -2
- package/build/cjs/TextAreaFieldFF/TextAreaFieldFF.e2e.stories.js +30 -0
- package/build/cjs/TextAreaFieldFF/TextAreaFieldFF.js +2 -12
- package/build/cjs/TextAreaFieldFF/{TextAreaFieldFF.stories.js → TextAreaFieldFF.prod.stories.js} +29 -24
- package/build/cjs/TextAreaFieldFF/features/can_set_a_value/index.js +0 -1
- package/build/cjs/TextAreaFieldFF/features/displays_error/index.js +0 -2
- package/build/cjs/__tests__/__snapshots__/index.test.js.snap +3 -0
- package/build/cjs/__tests__/index.test.js +1 -1
- package/build/cjs/formDecorator.js +6 -21
- package/build/cjs/index.js +2 -21
- package/build/cjs/locales/index.js +3 -75
- package/build/cjs/shared/helpers/createBlurHandler.js +0 -3
- package/build/cjs/shared/helpers/createChangeHandler.js +0 -2
- package/build/cjs/shared/helpers/createFocusHandler.js +0 -3
- package/build/cjs/shared/helpers/createSelectChangeHandler.js +0 -2
- package/build/cjs/shared/helpers/createToggleChangeHandler.js +0 -3
- package/build/cjs/shared/helpers/getValidationText.js +0 -6
- package/build/cjs/shared/helpers/hasError.js +0 -2
- package/build/cjs/shared/helpers/isLoading.js +0 -2
- package/build/cjs/shared/helpers/isValid.js +0 -2
- package/build/cjs/shared/helpers.js +0 -9
- package/build/cjs/shared/propTypes.js +7 -20
- package/build/cjs/transformers/arrayWithIdObjects.js +2 -6
- package/build/cjs/transformers/index.js +0 -1
- package/build/cjs/validators/__tests__/alphaNumeric.test.js +0 -2
- package/build/cjs/validators/__tests__/boolean.test.js +0 -2
- package/build/cjs/validators/__tests__/composeValidators.test.js +0 -3
- package/build/cjs/validators/__tests__/createCharacterLengthRange.test.js +6 -6
- package/build/cjs/validators/__tests__/createEqualTo.test.js +0 -3
- package/build/cjs/validators/__tests__/createMaxCharacterLength.test.js +1 -2
- package/build/cjs/validators/__tests__/createMaxNumber.test.js +1 -2
- package/build/cjs/validators/__tests__/createMinCharacterLength.test.js +1 -2
- package/build/cjs/validators/__tests__/createMinNumber.test.js +1 -2
- package/build/cjs/validators/__tests__/createNumberRange.test.js +0 -3
- package/build/cjs/validators/__tests__/createPattern.test.js +1 -3
- package/build/cjs/validators/__tests__/dhis2Password.test.js +0 -2
- package/build/cjs/validators/__tests__/dhis2Username.test.js +0 -2
- package/build/cjs/validators/__tests__/email.test.js +7 -6
- package/build/cjs/validators/__tests__/hasValue.test.js +0 -2
- package/build/cjs/validators/__tests__/integer.test.js +0 -2
- package/build/cjs/validators/__tests__/internationalPhoneNumber.test.js +6 -5
- package/build/cjs/validators/__tests__/number.test.js +0 -2
- package/build/cjs/validators/__tests__/string.test.js +0 -2
- package/build/cjs/validators/__tests__/url.test.js +1 -2
- package/build/cjs/validators/alphaNumeric.js +2 -11
- package/build/cjs/validators/boolean.js +2 -10
- package/build/cjs/validators/composeValidators.js +0 -4
- package/build/cjs/validators/createCharacterLengthRange.js +1 -8
- package/build/cjs/validators/createEqualTo.js +1 -8
- package/build/cjs/validators/createMaxCharacterLength.js +1 -6
- package/build/cjs/validators/createMaxNumber.js +1 -6
- package/build/cjs/validators/createMinCharacterLength.js +1 -6
- package/build/cjs/validators/createMinNumber.js +1 -6
- package/build/cjs/validators/createNumberRange.js +1 -8
- package/build/cjs/validators/createPattern.js +2 -10
- package/build/cjs/validators/dhis2Password.js +6 -28
- package/build/cjs/validators/dhis2Username.js +2 -11
- package/build/cjs/validators/email.js +3 -11
- package/build/cjs/validators/hasValue.js +2 -10
- package/build/cjs/validators/helpers/index.js +1 -16
- package/build/cjs/validators/index.js +0 -20
- package/build/cjs/validators/integer.js +3 -10
- package/build/cjs/validators/internationalPhoneNumber.js +8 -14
- package/build/cjs/validators/number.js +2 -10
- package/build/cjs/validators/string.js +2 -10
- package/build/cjs/validators/test-helpers/index.js +1 -6
- package/build/cjs/validators/url.js +2 -11
- package/build/es/CheckboxFieldFF/{CheckboxFieldFF.stories.e2e.js → CheckboxFieldFF.e2e.stories.js} +14 -7
- package/build/es/CheckboxFieldFF/CheckboxFieldFF.js +1 -3
- package/build/es/CheckboxFieldFF/{CheckboxFieldFF.stories.js → CheckboxFieldFF.prod.stories.js} +29 -3
- package/build/es/FieldGroupFF/FieldGroupFF.js +0 -2
- package/build/es/FieldGroupFF/{FieldGroupFF.stories.js → FieldGroupFF.prod.stories.js} +11 -1
- package/build/es/FileInputFieldFF/{FileInputFieldFF.stories.e2e.js → FileInputFieldFF.e2e.stories.js} +14 -16
- package/build/es/FileInputFieldFF/FileInputFieldFF.js +1 -8
- package/build/es/FileInputFieldFF/{FileInputFieldFF.stories.js → FileInputFieldFF.prod.stories.js} +29 -3
- package/build/es/InputFieldFF/{InputFieldFF.stories.e2e.js → InputFieldFF.e2e.stories.js} +8 -4
- package/build/es/InputFieldFF/InputFieldFF.js +1 -3
- package/build/es/InputFieldFF/{InputFieldFF.stories.js → InputFieldFF.prod.stories.js} +29 -3
- package/build/es/MultiSelectFieldFF/{MultiSelectFieldFF.stories.e2e.js → MultiSelectFieldFF.e2e.stories.js} +7 -7
- package/build/es/MultiSelectFieldFF/MultiSelectFieldFF.js +2 -6
- package/build/es/MultiSelectFieldFF/MultiSelectFieldFF.prod.stories.js +98 -0
- package/build/es/MultiSelectFieldFF/features/common/index.js +1 -1
- package/build/es/RadioFieldFF/{RadioFieldFF.stories.e2e.js → RadioFieldFF.e2e.stories.js} +6 -3
- package/build/es/RadioFieldFF/RadioFieldFF.js +1 -3
- package/build/es/RadioFieldFF/{RadioFieldFF.stories.js → RadioFieldFF.prod.stories.js} +29 -3
- package/build/es/SingleSelectFieldFF/{SingleSelectFieldFF.stories.e2e.js → SingleSelectFieldFF.e2e.stories.js} +10 -6
- package/build/es/SingleSelectFieldFF/SingleSelectFieldFF.js +1 -3
- package/build/es/SingleSelectFieldFF/SingleSelectFieldFF.prod.stories.js +97 -0
- package/build/es/SwitchFieldFF/{SwitchFieldFF.stories.e2e.js → SwitchFieldFF.e2e.stories.js} +14 -7
- package/build/es/SwitchFieldFF/SwitchFieldFF.js +1 -3
- package/build/es/SwitchFieldFF/{SwitchFieldFF.stories.js → SwitchFieldFF.prod.stories.js} +29 -3
- package/build/es/TextAreaFieldFF/{TextAreaFieldFF.stories.e2e.js → TextAreaFieldFF.e2e.stories.js} +8 -4
- package/build/es/TextAreaFieldFF/TextAreaFieldFF.js +1 -3
- package/build/es/TextAreaFieldFF/{TextAreaFieldFF.stories.js → TextAreaFieldFF.prod.stories.js} +29 -3
- package/build/es/__tests__/__snapshots__/index.test.js.snap +3 -0
- package/build/es/__tests__/index.test.js +1 -0
- package/build/es/formDecorator.js +5 -12
- package/build/es/index.js +2 -2
- package/build/es/shared/helpers/createBlurHandler.js +0 -2
- package/build/es/shared/helpers/createChangeHandler.js +0 -2
- package/build/es/shared/helpers/createFocusHandler.js +0 -2
- package/build/es/shared/helpers/createSelectChangeHandler.js +0 -1
- package/build/es/shared/helpers/createToggleChangeHandler.js +0 -2
- package/build/es/shared/helpers/getValidationText.js +0 -5
- package/build/es/shared/helpers/hasError.js +0 -1
- package/build/es/shared/helpers/isLoading.js +0 -1
- package/build/es/shared/helpers/isValid.js +0 -1
- package/build/es/transformers/arrayWithIdObjects.js +0 -2
- package/build/es/validators/__tests__/createCharacterLengthRange.test.js +6 -3
- package/build/es/validators/__tests__/createMaxCharacterLength.test.js +1 -0
- package/build/es/validators/__tests__/createMaxNumber.test.js +1 -0
- package/build/es/validators/__tests__/createMinCharacterLength.test.js +1 -0
- package/build/es/validators/__tests__/createMinNumber.test.js +1 -0
- package/build/es/validators/__tests__/createPattern.test.js +1 -1
- package/build/es/validators/__tests__/email.test.js +7 -4
- package/build/es/validators/__tests__/internationalPhoneNumber.test.js +6 -3
- package/build/es/validators/__tests__/url.test.js +1 -0
- package/build/es/validators/alphaNumeric.js +0 -2
- package/build/es/validators/boolean.js +0 -2
- package/build/es/validators/composeValidators.js +0 -2
- package/build/es/validators/createCharacterLengthRange.js +0 -2
- package/build/es/validators/createEqualTo.js +0 -2
- package/build/es/validators/createMaxCharacterLength.js +0 -2
- package/build/es/validators/createMaxNumber.js +0 -2
- package/build/es/validators/createMinCharacterLength.js +0 -2
- package/build/es/validators/createMinNumber.js +0 -2
- package/build/es/validators/createNumberRange.js +0 -2
- package/build/es/validators/createPattern.js +0 -3
- package/build/es/validators/dhis2Password.js +3 -12
- package/build/es/validators/dhis2Username.js +0 -2
- package/build/es/validators/email.js +1 -2
- package/build/es/validators/hasValue.js +0 -2
- package/build/es/validators/integer.js +3 -4
- package/build/es/validators/internationalPhoneNumber.js +7 -7
- package/build/es/validators/number.js +0 -2
- package/build/es/validators/string.js +0 -2
- package/build/es/validators/test-helpers/index.js +1 -4
- package/build/es/validators/url.js +2 -3
- package/package.json +13 -13
- package/build/cjs/InputFieldFF/InputFieldFF.stories.e2e.js +0 -27
- package/build/cjs/MultiSelectFieldFF/MultiSelectFieldFF.stories.js +0 -91
- package/build/cjs/RadioFieldFF/RadioFieldFF.stories.e2e.js +0 -45
- package/build/cjs/SingleSelectFieldFF/SingleSelectFieldFF.stories.e2e.js +0 -37
- package/build/cjs/SingleSelectFieldFF/SingleSelectFieldFF.stories.js +0 -90
- package/build/cjs/SwitchFieldFF/SwitchFieldFF.stories.e2e.js +0 -49
- package/build/cjs/TextAreaFieldFF/TextAreaFieldFF.stories.e2e.js +0 -27
- package/build/es/MultiSelectFieldFF/MultiSelectFieldFF.stories.js +0 -70
- package/build/es/SingleSelectFieldFF/SingleSelectFieldFF.stories.js +0 -69
@@ -4,23 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.createNumberRange = void 0;
|
7
|
-
|
8
7
|
var _index = _interopRequireDefault(require("../locales/index.js"));
|
9
|
-
|
10
8
|
var _index2 = require("./helpers/index.js");
|
11
|
-
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
|
-
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
14
10
|
const createNumberRange = (lowerBound, upperBound, customMessage) => {
|
15
11
|
(0, _index2.requireArgument)(lowerBound, 'number');
|
16
12
|
(0, _index2.requireArgument)(upperBound, 'number');
|
17
|
-
|
18
13
|
const errorMessage = customMessage || _index.default.t('Number cannot be less than {{lowerBound}} or more than {{upperBound}}', {
|
19
14
|
lowerBound,
|
20
15
|
upperBound
|
21
16
|
});
|
22
|
-
|
23
17
|
return value => (0, _index2.isEmpty)(value) || (0, _index2.isNumeric)(value) && (0, _index2.isInRange)(lowerBound, upperBound, (0, _index2.toNumber)(value)) ? undefined : errorMessage;
|
24
18
|
};
|
25
|
-
|
26
19
|
exports.createNumberRange = createNumberRange;
|
@@ -4,24 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.invalidPatternMessage = exports.createPattern = void 0;
|
7
|
-
|
8
7
|
var _index = _interopRequireDefault(require("../locales/index.js"));
|
9
|
-
|
10
8
|
var _index2 = require("./helpers/index.js");
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
const invalidPatternMessage = 'The first argument passed to createPattern was not a valid regex';
|
15
|
-
exports.invalidPatternMessage = invalidPatternMessage;
|
16
|
-
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
10
|
+
const invalidPatternMessage = exports.invalidPatternMessage = 'The first argument passed to createPattern was not a valid regex';
|
17
11
|
const createPattern = (pattern, message) => {
|
18
12
|
if (!(pattern instanceof RegExp)) {
|
19
13
|
throw new Error(invalidPatternMessage);
|
20
14
|
}
|
21
|
-
|
22
15
|
return value => (0, _index2.isEmpty)(value) || (0, _index2.isString)(value) && pattern.test(value) ? undefined : message || _index.default.t('Please make sure the value of this input matches the pattern {{patternString}}.', {
|
23
16
|
patternString: pattern.toString()
|
24
17
|
});
|
25
18
|
};
|
26
|
-
|
27
19
|
exports.createPattern = createPattern;
|
@@ -4,33 +4,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.errorMessages = exports.dhis2Password = void 0;
|
7
|
-
|
8
7
|
var _index = _interopRequireDefault(require("../locales/index.js"));
|
9
|
-
|
10
8
|
var _index2 = require("./helpers/index.js");
|
11
|
-
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
|
-
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
14
10
|
const LOWER_CASE_PATTERN = /^(?=.*[a-z]).+$/;
|
15
11
|
const UPPER_CASE_PATTERN = /^(?=.*[A-Z]).+$/;
|
16
|
-
const DIGIT_PATTERN = /^(?=.*[0-9]).+$/;
|
12
|
+
const DIGIT_PATTERN = /^(?=.*[0-9]).+$/;
|
13
|
+
// Using this regex to match all non-alphanumeric characters to match server-side implementation
|
17
14
|
// https://github.com/dhis2/dhis2-core/blob/master/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/SpecialCharacterValidationRule.java#L39
|
18
|
-
|
19
15
|
const SPECIAL_CHARACTER_PATTERN = /[^a-zA-Z0-9]/;
|
20
|
-
|
21
16
|
const notString = _index.default.t('Password should be a string');
|
22
|
-
|
23
17
|
const tooShort = _index.default.t('Password should be at least 8 characters long');
|
24
|
-
|
25
18
|
const tooLong = _index.default.t('Password should be no longer than 34 characters');
|
26
|
-
|
27
19
|
const noLowerCase = _index.default.t('Password should contain at least one lowercase letter');
|
28
|
-
|
29
20
|
const noUpperCase = _index.default.t('Password should contain at least one UPPERCASE letter');
|
30
|
-
|
31
21
|
const noNumber = _index.default.t('Password should contain at least one number');
|
32
|
-
|
33
22
|
const noSpecialCharacter = _index.default.t('Password should have at least one special character');
|
23
|
+
|
34
24
|
/**
|
35
25
|
* Tests if a given password is compliant with the password restrictions.
|
36
26
|
* This function checks all restrictions below, but returns when the first violation was found:
|
@@ -41,46 +31,35 @@ const noSpecialCharacter = _index.default.t('Password should have at least one s
|
|
41
31
|
* - Contains at least 1 number
|
42
32
|
* - Contains at least 1 special character
|
43
33
|
*/
|
44
|
-
|
45
|
-
|
46
34
|
const dhis2Password = value => {
|
47
35
|
if ((0, _index2.isEmpty)(value)) {
|
48
36
|
return undefined;
|
49
37
|
}
|
50
|
-
|
51
38
|
if (!(0, _index2.isString)(value)) {
|
52
39
|
return notString;
|
53
40
|
}
|
54
|
-
|
55
41
|
if (value.length < 8) {
|
56
42
|
return tooShort;
|
57
43
|
}
|
58
|
-
|
59
44
|
if (value.length > 35) {
|
60
45
|
return tooLong;
|
61
46
|
}
|
62
|
-
|
63
47
|
if (!LOWER_CASE_PATTERN.test(value)) {
|
64
48
|
return noLowerCase;
|
65
49
|
}
|
66
|
-
|
67
50
|
if (!UPPER_CASE_PATTERN.test(value)) {
|
68
51
|
return noUpperCase;
|
69
52
|
}
|
70
|
-
|
71
53
|
if (!DIGIT_PATTERN.test(value)) {
|
72
54
|
return noNumber;
|
73
55
|
}
|
74
|
-
|
75
56
|
if (!SPECIAL_CHARACTER_PATTERN.test(value)) {
|
76
57
|
return noSpecialCharacter;
|
77
58
|
}
|
78
|
-
|
79
59
|
return undefined;
|
80
60
|
};
|
81
|
-
|
82
61
|
exports.dhis2Password = dhis2Password;
|
83
|
-
const errorMessages = {
|
62
|
+
const errorMessages = exports.errorMessages = {
|
84
63
|
notString,
|
85
64
|
tooShort,
|
86
65
|
tooLong,
|
@@ -88,5 +67,4 @@ const errorMessages = {
|
|
88
67
|
noUpperCase,
|
89
68
|
noNumber,
|
90
69
|
noSpecialCharacter
|
91
|
-
};
|
92
|
-
exports.errorMessages = errorMessages;
|
70
|
+
};
|
@@ -4,19 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.invalidUsernameMessage = exports.dhis2Username = void 0;
|
7
|
-
|
8
7
|
var _index = _interopRequireDefault(require("../locales/index.js"));
|
9
|
-
|
10
8
|
var _index2 = require("./helpers/index.js");
|
11
|
-
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
|
-
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
14
10
|
const USERNAME_PATTERN = /^(?=.{4,255}$)(?![_\-.@])(?!.*[_\-.@]{2})[a-zA-Z0-9._\-@]+(?<![_\-.@])$/;
|
15
|
-
|
16
|
-
const invalidUsernameMessage = _index.default.t('Please provide a username between 4 and 255 characters long and possibly separated by . _ - or @');
|
17
|
-
|
18
|
-
exports.invalidUsernameMessage = invalidUsernameMessage;
|
19
|
-
|
11
|
+
const invalidUsernameMessage = exports.invalidUsernameMessage = _index.default.t('Please provide a username between 4 and 255 characters long and possibly separated by . _ - or @');
|
20
12
|
const dhis2Username = value => (0, _index2.isEmpty)(value) || (0, _index2.isString)(value) && USERNAME_PATTERN.test(value) ? undefined : invalidUsernameMessage;
|
21
|
-
|
22
13
|
exports.dhis2Username = dhis2Username;
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.invalidEmailMessage = exports.email = void 0;
|
7
|
-
|
8
7
|
var _index = _interopRequireDefault(require("../locales/index.js"));
|
9
|
-
|
10
8
|
var _index2 = require("./helpers/index.js");
|
11
|
-
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
|
-
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
14
10
|
/*
|
15
11
|
* Email validation is complicated business. There is no perfect regex,
|
16
12
|
* instead we have to make a trade-off between complexity, correctness,
|
@@ -34,12 +30,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
34
30
|
* overall picture in terms of false negatives and positives, so I settled on that one:
|
35
31
|
* https://stackoverflow.com/questions/46155/how-to-validate-an-email-address-in-javascript/46181#46181
|
36
32
|
*/
|
37
|
-
const EMAIL_ADDRESS_PATTERN = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/i;
|
38
|
-
|
39
|
-
const invalidEmailMessage = _index.default.t('Please provide a valid email address');
|
40
|
-
|
41
|
-
exports.invalidEmailMessage = invalidEmailMessage;
|
42
33
|
|
34
|
+
const EMAIL_ADDRESS_PATTERN = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/i;
|
35
|
+
const invalidEmailMessage = exports.invalidEmailMessage = _index.default.t('Please provide a valid email address');
|
43
36
|
const email = value => (0, _index2.isEmpty)(value) || (0, _index2.isString)(value) && EMAIL_ADDRESS_PATTERN.test(value) ? undefined : invalidEmailMessage;
|
44
|
-
|
45
37
|
exports.email = email;
|
@@ -4,17 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.hasValueMessage = exports.hasValue = void 0;
|
7
|
-
|
8
7
|
var _index = _interopRequireDefault(require("../locales/index.js"));
|
9
|
-
|
10
8
|
var _index2 = require("./helpers/index.js");
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
const hasValueMessage = _index.default.t('Please provide a value');
|
15
|
-
|
16
|
-
exports.hasValueMessage = hasValueMessage;
|
17
|
-
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
10
|
+
const hasValueMessage = exports.hasValueMessage = _index.default.t('Please provide a value');
|
18
11
|
const hasValue = value => (0, _index2.isEmpty)(value) ? hasValueMessage : undefined;
|
19
|
-
|
20
12
|
exports.hasValue = hasValue;
|
@@ -4,37 +4,22 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.toNumber = exports.requiredArgumentErrorMessage = exports.requireArgument = exports.isString = exports.isNumeric = exports.isNumber = exports.isInRange = exports.isEmpty = void 0;
|
7
|
-
|
8
7
|
const isEmpty = value => typeof value === 'undefined' || value === null || value === '';
|
9
|
-
|
10
8
|
exports.isEmpty = isEmpty;
|
11
|
-
|
12
9
|
const isString = value => typeof value === 'string';
|
13
|
-
|
14
10
|
exports.isString = isString;
|
15
|
-
|
16
11
|
const isNumber = value => typeof value === 'number';
|
17
|
-
|
18
12
|
exports.isNumber = isNumber;
|
19
|
-
|
20
13
|
const isNumeric = value => (isString(value) || isNumber(value)) && !isNaN(value);
|
21
|
-
|
22
14
|
exports.isNumeric = isNumeric;
|
23
|
-
|
24
15
|
const isInRange = (lowerBound, upperBound, value) => value >= lowerBound && value <= upperBound;
|
25
|
-
|
26
16
|
exports.isInRange = isInRange;
|
27
|
-
|
28
17
|
const toNumber = value => Number(value);
|
29
|
-
|
30
18
|
exports.toNumber = toNumber;
|
31
|
-
const requiredArgumentErrorMessage = 'Incorrect arguments provided when creating validator';
|
32
|
-
exports.requiredArgumentErrorMessage = requiredArgumentErrorMessage;
|
33
|
-
|
19
|
+
const requiredArgumentErrorMessage = exports.requiredArgumentErrorMessage = 'Incorrect arguments provided when creating validator';
|
34
20
|
const requireArgument = (value, type) => {
|
35
21
|
if (isEmpty(value) || typeof value !== type) {
|
36
22
|
throw new Error(requiredArgumentErrorMessage);
|
37
23
|
}
|
38
24
|
};
|
39
|
-
|
40
25
|
exports.requireArgument = requireArgument;
|
@@ -123,43 +123,23 @@ Object.defineProperty(exports, "url", {
|
|
123
123
|
return _url.url;
|
124
124
|
}
|
125
125
|
});
|
126
|
-
|
127
126
|
var _alphaNumeric = require("./alphaNumeric.js");
|
128
|
-
|
129
127
|
var _boolean = require("./boolean.js");
|
130
|
-
|
131
128
|
var _composeValidators = require("./composeValidators.js");
|
132
|
-
|
133
129
|
var _createCharacterLengthRange = require("./createCharacterLengthRange.js");
|
134
|
-
|
135
130
|
var _createEqualTo = require("./createEqualTo.js");
|
136
|
-
|
137
131
|
var _createMaxCharacterLength = require("./createMaxCharacterLength.js");
|
138
|
-
|
139
132
|
var _createMaxNumber = require("./createMaxNumber.js");
|
140
|
-
|
141
133
|
var _createMinCharacterLength = require("./createMinCharacterLength.js");
|
142
|
-
|
143
134
|
var _createMinNumber = require("./createMinNumber.js");
|
144
|
-
|
145
135
|
var _createNumberRange = require("./createNumberRange.js");
|
146
|
-
|
147
136
|
var _createPattern = require("./createPattern.js");
|
148
|
-
|
149
137
|
var _dhis2Password = require("./dhis2Password.js");
|
150
|
-
|
151
138
|
var _dhis2Username = require("./dhis2Username.js");
|
152
|
-
|
153
139
|
var _email = require("./email.js");
|
154
|
-
|
155
140
|
var _hasValue = require("./hasValue.js");
|
156
|
-
|
157
141
|
var _integer = require("./integer.js");
|
158
|
-
|
159
142
|
var _internationalPhoneNumber = require("./internationalPhoneNumber.js");
|
160
|
-
|
161
143
|
var _number = require("./number.js");
|
162
|
-
|
163
144
|
var _string = require("./string.js");
|
164
|
-
|
165
145
|
var _url = require("./url.js");
|
@@ -4,20 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.invalidIntegerMessage = exports.integer = void 0;
|
7
|
-
|
8
7
|
var _index = _interopRequireDefault(require("../locales/index.js"));
|
9
|
-
|
10
8
|
var _index2 = require("./helpers/index.js");
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
10
|
+
const invalidIntegerMessage = exports.invalidIntegerMessage = _index.default.t('Please provide a round number without decimals');
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
const invalidIntegerMessage = _index.default.t('Please provide a round number without decimals'); // Regex accepts only digits (no decimals even if it is trailing like 4.0)
|
12
|
+
// Regex accepts only digits (no decimals even if it is trailing like 4.0)
|
15
13
|
// it also rejects a leading 0 (i.e 04) as this is rejected by backend
|
16
|
-
|
17
|
-
|
18
|
-
exports.invalidIntegerMessage = invalidIntegerMessage;
|
19
14
|
const INTEGER_PATTERN = /^(-?[1-9]\d*|0)$/;
|
20
|
-
|
21
15
|
const integer = value => (0, _index2.isEmpty)(value) || INTEGER_PATTERN.test(value) && (0, _index2.isNumeric)(value) && Number.isSafeInteger((0, _index2.toNumber)(value)) ? undefined : invalidIntegerMessage;
|
22
|
-
|
23
16
|
exports.integer = integer;
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.invalidInternationalPhoneNumberMessage = exports.internationalPhoneNumber = void 0;
|
7
|
-
|
8
7
|
var _index = _interopRequireDefault(require("../locales/index.js"));
|
9
|
-
|
10
8
|
var _index2 = require("./helpers/index.js");
|
11
|
-
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
|
-
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
14
10
|
/*
|
15
11
|
* There were some problems with the server side implementation
|
16
12
|
* of how international phone numbers are validated, and the
|
@@ -36,25 +32,23 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
36
32
|
* all spaces, dashes [‘-‘] and parentheses [ ‘(‘ and ‘)’] are removed, besides the
|
37
33
|
* leading ‘+’ all characters should be numeric.
|
38
34
|
*/
|
39
|
-
const invalidInternationalPhoneNumberMessage = _index.default.t('Please provide a valid international phone number.');
|
40
|
-
|
41
|
-
exports.invalidInternationalPhoneNumberMessage = invalidInternationalPhoneNumberMessage;
|
42
35
|
|
36
|
+
const invalidInternationalPhoneNumberMessage = exports.invalidInternationalPhoneNumberMessage = _index.default.t('Please provide a valid international phone number.');
|
43
37
|
const internationalPhoneNumber = value => {
|
44
38
|
// allow empty values
|
45
39
|
if ((0, _index2.isEmpty)(value)) {
|
46
40
|
return undefined;
|
47
|
-
}
|
48
|
-
|
41
|
+
}
|
49
42
|
|
43
|
+
// value must be a string
|
50
44
|
if (!(0, _index2.isString)(value)) {
|
51
45
|
return invalidInternationalPhoneNumberMessage;
|
52
46
|
}
|
53
|
-
|
54
|
-
|
55
|
-
.replace(/[-. )(]/g, '')
|
47
|
+
const cleanedValue = value
|
48
|
+
// strip all hyphens, dots, spaces
|
49
|
+
.replace(/[-. )(]/g, '')
|
50
|
+
// trim leading zeroes and plus signs
|
56
51
|
.replace(/^[0+]+/, '');
|
57
52
|
return (0, _index2.isNumeric)(cleanedValue) && cleanedValue.length <= 15 ? undefined : invalidInternationalPhoneNumberMessage;
|
58
53
|
};
|
59
|
-
|
60
54
|
exports.internationalPhoneNumber = internationalPhoneNumber;
|
@@ -4,17 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.number = exports.invalidNumberMessage = void 0;
|
7
|
-
|
8
7
|
var _index = _interopRequireDefault(require("../locales/index.js"));
|
9
|
-
|
10
8
|
var _index2 = require("./helpers/index.js");
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
const invalidNumberMessage = _index.default.t('Please provide a number');
|
15
|
-
|
16
|
-
exports.invalidNumberMessage = invalidNumberMessage;
|
17
|
-
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
10
|
+
const invalidNumberMessage = exports.invalidNumberMessage = _index.default.t('Please provide a number');
|
18
11
|
const number = value => (0, _index2.isEmpty)(value) || (0, _index2.isNumeric)(value) ? undefined : invalidNumberMessage;
|
19
|
-
|
20
12
|
exports.number = number;
|
@@ -4,17 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.string = exports.invalidStringMessage = void 0;
|
7
|
-
|
8
7
|
var _index = _interopRequireDefault(require("../locales/index.js"));
|
9
|
-
|
10
8
|
var _index2 = require("./helpers/index.js");
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
const invalidStringMessage = _index.default.t('Please provide a string');
|
15
|
-
|
16
|
-
exports.invalidStringMessage = invalidStringMessage;
|
17
|
-
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
10
|
+
const invalidStringMessage = exports.invalidStringMessage = _index.default.t('Please provide a string');
|
18
11
|
const string = value => (0, _index2.isEmpty)(value) || (0, _index2.isString)(value) ? undefined : invalidStringMessage;
|
19
|
-
|
20
12
|
exports.string = string;
|
@@ -4,25 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.testValidatorValues = exports.allowsEmptyValues = void 0;
|
7
|
-
|
8
7
|
const testValidatorValues = (validator, returnValue, values) => {
|
9
8
|
const returnValueStr = returnValue === undefined ? 'undefined' : 'an error string';
|
10
|
-
|
11
9
|
for (const value of values) {
|
12
10
|
const type = typeof value;
|
13
11
|
const valueStr = type === 'object' ? JSON.stringify(value) : value;
|
14
|
-
it(
|
12
|
+
it(`should return ${returnValueStr} for value \`${valueStr}\` of type ${type}`, () => {
|
15
13
|
expect(validator(value)).toBe(returnValue);
|
16
14
|
});
|
17
15
|
}
|
18
16
|
};
|
19
|
-
|
20
17
|
exports.testValidatorValues = testValidatorValues;
|
21
|
-
|
22
18
|
const allowsEmptyValues = validator => {
|
23
19
|
describe('allows empty values', () => {
|
24
20
|
testValidatorValues(validator, undefined, ['', null, undefined]);
|
25
21
|
});
|
26
22
|
};
|
27
|
-
|
28
23
|
exports.allowsEmptyValues = allowsEmptyValues;
|
@@ -4,20 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.url = exports.invalidUrlMessage = void 0;
|
7
|
-
|
8
7
|
var _index = _interopRequireDefault(require("../locales/index.js"));
|
9
|
-
|
10
8
|
var _index2 = require("./helpers/index.js");
|
11
|
-
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
|
-
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
14
10
|
// Source: https://gist.github.com/dperini/729294
|
15
11
|
const URL_PATTERN = /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:[/?#]\S*)?$/i;
|
16
|
-
|
17
|
-
const invalidUrlMessage = _index.default.t('Please provide a valid url');
|
18
|
-
|
19
|
-
exports.invalidUrlMessage = invalidUrlMessage;
|
20
|
-
|
12
|
+
const invalidUrlMessage = exports.invalidUrlMessage = _index.default.t('Please provide a valid url');
|
21
13
|
const url = value => (0, _index2.isEmpty)(value) || (0, _index2.isString)(value) && URL_PATTERN.test(value) ? undefined : invalidUrlMessage;
|
22
|
-
|
23
14
|
exports.url = url;
|
package/build/es/CheckboxFieldFF/{CheckboxFieldFF.stories.e2e.js → CheckboxFieldFF.e2e.stories.js}
RENAMED
@@ -1,12 +1,16 @@
|
|
1
|
-
import { storiesOf } from '@storybook/react';
|
2
1
|
import React from 'react';
|
3
2
|
import { Field } from 'react-final-form';
|
4
3
|
import { formDecorator } from '../formDecorator.js';
|
5
4
|
import { hasValue } from '../validators/index.js';
|
6
|
-
import { CheckboxFieldFF } from './CheckboxFieldFF.js';
|
5
|
+
import { CheckboxFieldFF } from './CheckboxFieldFF.js';
|
7
6
|
|
7
|
+
// https://github.com/final-form/react-final-form-arrays/issues/111
|
8
8
|
const initialValue = ['yes'];
|
9
|
-
|
9
|
+
export default {
|
10
|
+
title: 'Testing:Checkbox',
|
11
|
+
decorators: [formDecorator]
|
12
|
+
};
|
13
|
+
export const Unchecked = () => /*#__PURE__*/React.createElement(Field, {
|
10
14
|
type: "checkbox",
|
11
15
|
component: CheckboxFieldFF,
|
12
16
|
className: "checkbox",
|
@@ -14,21 +18,24 @@ storiesOf('Testing:Checkbox', module).addDecorator(formDecorator).add('Unchecked
|
|
14
18
|
label: "Label text",
|
15
19
|
validate: hasValue,
|
16
20
|
required: true
|
17
|
-
})
|
21
|
+
});
|
22
|
+
export const Checked = () => /*#__PURE__*/React.createElement(Field, {
|
18
23
|
type: "checkbox",
|
19
24
|
component: CheckboxFieldFF,
|
20
25
|
className: "checkbox",
|
21
26
|
name: "checkbox",
|
22
27
|
label: "Label text",
|
23
28
|
initialValue: true
|
24
|
-
})
|
29
|
+
});
|
30
|
+
export const UncheckedWithValue = () => /*#__PURE__*/React.createElement(Field, {
|
25
31
|
type: "checkbox",
|
26
32
|
component: CheckboxFieldFF,
|
27
33
|
className: "checkbox",
|
28
34
|
name: "checkbox",
|
29
35
|
label: "Label text",
|
30
36
|
value: "yes"
|
31
|
-
})
|
37
|
+
});
|
38
|
+
export const CheckedWithValue = () => /*#__PURE__*/React.createElement(Field, {
|
32
39
|
type: "checkbox",
|
33
40
|
component: CheckboxFieldFF,
|
34
41
|
className: "checkbox",
|
@@ -36,4 +43,4 @@ storiesOf('Testing:Checkbox', module).addDecorator(formDecorator).add('Unchecked
|
|
36
43
|
label: "Label text",
|
37
44
|
value: "yes",
|
38
45
|
initialValue: initialValue
|
39
|
-
})
|
46
|
+
});
|
@@ -1,5 +1,4 @@
|
|
1
|
-
function _extends() { _extends = Object.assign
|
2
|
-
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
3
2
|
import { CheckboxField } from '@dhis2-ui/checkbox';
|
4
3
|
import PropTypes from 'prop-types';
|
5
4
|
import React from 'react';
|
@@ -32,7 +31,6 @@ export const CheckboxFieldFF = _ref => {
|
|
32
31
|
CheckboxFieldFF.propTypes = {
|
33
32
|
/** Provided by Final Form `Field` */
|
34
33
|
input: inputPropType.isRequired,
|
35
|
-
|
36
34
|
/** Provided by Final Form `Field` */
|
37
35
|
meta: metaPropType.isRequired,
|
38
36
|
error: PropTypes.bool,
|
package/build/es/CheckboxFieldFF/{CheckboxFieldFF.stories.js → CheckboxFieldFF.prod.stories.js}
RENAMED
@@ -4,7 +4,31 @@ import { formDecorator } from '../formDecorator.js';
|
|
4
4
|
import { inputArgType, metaArgType } from '../shared/propTypes.js';
|
5
5
|
import { hasValue } from '../validators/index.js';
|
6
6
|
import { CheckboxFieldFF } from './CheckboxFieldFF.js';
|
7
|
-
const description =
|
7
|
+
const description = `
|
8
|
+
The \`CheckboxFieldFF\` is a wrapper around a \`CheckboxField\` that enables it to work with Final Form, the preferred library for form validation and utilities in DHIS 2 apps.
|
9
|
+
|
10
|
+
#### Final Form
|
11
|
+
|
12
|
+
See how to use Final Form at [Final Form - Getting Started](https://final-form.org/docs/react-final-form/getting-started).
|
13
|
+
|
14
|
+
Inside a Final Form \`<Form>\` component, these 'FF' UI components are intended to be used in the \`component\` prop of the [Final Form \`<Field>\` components](https://final-form.org/docs/react-final-form/api/Field) where they will receive some props from the Field, e.g. \`<Field component={CheckboxFieldFF} />\`. See the code samples below for examples.
|
15
|
+
|
16
|
+
#### Props
|
17
|
+
|
18
|
+
The props shown in the table below are generally provided to the \`CheckboxFieldFF\` wrapper by the Final Form \`Field\`.
|
19
|
+
|
20
|
+
Note that any props beyond the API of the \`Field\` component will be spread to the \`CheckboxFieldFF\`, which passes any extra props to the underlying \`CheckboxField\` using \`{...rest}\`.
|
21
|
+
|
22
|
+
Therefore, to add any props to the \`CheckboxFieldFF\` or \`CheckboxField\`, add those props to the parent Final Form \`Field\` component.
|
23
|
+
|
24
|
+
Also see \`Checkbox\` and \`CheckboxField\` for notes about props and implementation.
|
25
|
+
|
26
|
+
\`\`\`js
|
27
|
+
import { CheckboxFieldFF } from '@dhis2/ui'
|
28
|
+
\`\`\`
|
29
|
+
|
30
|
+
Press **Submit** to see the form values logged to the console.
|
31
|
+
`;
|
8
32
|
export default {
|
9
33
|
title: 'Checkbox Field (Final Form)',
|
10
34
|
component: CheckboxFieldFF,
|
@@ -17,9 +41,11 @@ export default {
|
|
17
41
|
}
|
18
42
|
},
|
19
43
|
argTypes: {
|
20
|
-
input: {
|
44
|
+
input: {
|
45
|
+
...inputArgType
|
21
46
|
},
|
22
|
-
meta: {
|
47
|
+
meta: {
|
48
|
+
...metaArgType
|
23
49
|
}
|
24
50
|
}
|
25
51
|
};
|
@@ -22,7 +22,6 @@ export const FieldGroupFF = _ref => {
|
|
22
22
|
});
|
23
23
|
const isError = !!error && !!touched;
|
24
24
|
let errorText;
|
25
|
-
|
26
25
|
if (isError) {
|
27
26
|
if (typeof error === 'string') {
|
28
27
|
errorText = error;
|
@@ -32,7 +31,6 @@ export const FieldGroupFF = _ref => {
|
|
32
31
|
errorText = null;
|
33
32
|
}
|
34
33
|
}
|
35
|
-
|
36
34
|
return /*#__PURE__*/React.createElement(FieldGroup, {
|
37
35
|
label: label,
|
38
36
|
required: required,
|
@@ -4,7 +4,17 @@ import { CheckboxFieldFF } from '../CheckboxFieldFF/CheckboxFieldFF.js';
|
|
4
4
|
import { formDecorator } from '../formDecorator.js';
|
5
5
|
import { hasValue } from '../validators/index.js';
|
6
6
|
import { FieldGroupFF } from './FieldGroupFF.js';
|
7
|
-
const description =
|
7
|
+
const description = `
|
8
|
+
This component is intended for use with [Final Form](https://final-form.org/docs/react-final-form/getting-started), the preferred library for form validation and utilities in DHIS 2 apps.
|
9
|
+
|
10
|
+
\`FieldGroupFF\` groups related fields (using the Final Form \`<Field>\`), like checkboxes, and adds a label and name.
|
11
|
+
|
12
|
+
\`\`\`js
|
13
|
+
import { FieldGroupFF } from '@dhis2/ui'
|
14
|
+
\`\`\`
|
15
|
+
|
16
|
+
Press **Submit** to see the form values logged to the console.
|
17
|
+
`;
|
8
18
|
export default {
|
9
19
|
title: 'Field Group (Final Form)',
|
10
20
|
component: FieldGroupFF,
|