@dhis2/ui-forms 9.11.0 → 9.11.1-beta.2
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/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,
|