envoc-form 3.1.0 → 3.2.0
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/es/ReactSelectField/ReactSelectField.js +36 -2
- package/lib/ReactSelectField/ReactSelectField.js +37 -2
- package/package.json +2 -2
- package/src/AddressInput/__snapshots__/AddesssInput.test.js.snap +1 -1
- package/src/BoolInput/__snapshots__/BoolInput.test.js.snap +1 -1
- package/src/FormInput/__snapshots__/FormInput.test.js.snap +1 -1
- package/src/ReactSelectField/ReactSelectField.js +34 -1
@@ -7,6 +7,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
7
7
|
|
8
8
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
9
9
|
|
10
|
+
import classNames from 'classnames';
|
10
11
|
import React, { useEffect, useRef } from 'react';
|
11
12
|
import { default as ReactSelect } from 'react-select';
|
12
13
|
export var overrideTheme = function overrideTheme(theme) {
|
@@ -22,6 +23,8 @@ var red = '#f86c6b';
|
|
22
23
|
var inputBorderColor = '#c2cfd6';
|
23
24
|
var inputBorderColorFocused = '#8ad4ee';
|
24
25
|
var inputBoxShadowFocused = '0 0 0 0.2rem rgba(32, 168, 216, 0.25)';
|
26
|
+
var placeholderColor = '#9ca3af';
|
27
|
+
var disabledSingleValueColor = '#4b5563';
|
25
28
|
export var customStyles = {
|
26
29
|
control: function control(provided, _ref) {
|
27
30
|
var isFocused = _ref.isFocused,
|
@@ -39,6 +42,17 @@ export var customStyles = {
|
|
39
42
|
return _objectSpread(_objectSpread({}, provided), {}, {
|
40
43
|
zIndex: 3
|
41
44
|
});
|
45
|
+
},
|
46
|
+
singleValue: function singleValue(provided, state) {
|
47
|
+
var color = state.isDisabled ? disabledSingleValueColor : '';
|
48
|
+
return _objectSpread(_objectSpread({}, provided), {}, {
|
49
|
+
color: color
|
50
|
+
});
|
51
|
+
},
|
52
|
+
placeholder: function placeholder(defaultStyles) {
|
53
|
+
return _objectSpread(_objectSpread({}, defaultStyles), {}, {
|
54
|
+
color: placeholderColor
|
55
|
+
});
|
42
56
|
}
|
43
57
|
}; // internal to forms use only
|
44
58
|
|
@@ -48,7 +62,7 @@ export default function ReactSelectInput(_ref2) {
|
|
48
62
|
disabled = _ref2.disabled,
|
49
63
|
onSelected = _ref2.onSelected,
|
50
64
|
onChange = _ref2.onChange,
|
51
|
-
|
65
|
+
_onBlur = _ref2.onBlur,
|
52
66
|
value = _ref2.value,
|
53
67
|
options = _ref2.options,
|
54
68
|
defaultValue = _ref2.defaultValue,
|
@@ -61,6 +75,23 @@ export default function ReactSelectInput(_ref2) {
|
|
61
75
|
useEffect(function () {
|
62
76
|
onSelectedRef.current && onSelectedRef.current(selectedItems);
|
63
77
|
}, [selectedItems]);
|
78
|
+
var onBlurRef = useRef(_onBlur);
|
79
|
+
onBlurRef.current = _onBlur;
|
80
|
+
var touched = meta.touched;
|
81
|
+
useEffect(function () {
|
82
|
+
if (!touched) return; // without the timer set to 0, if the empty option is selected the required message doesn't appear until clicked away from the select input
|
83
|
+
|
84
|
+
var timerRef = setTimeout(function () {
|
85
|
+
onBlurRef.current && onBlurRef.current();
|
86
|
+
}, 0);
|
87
|
+
return function () {
|
88
|
+
clearTimeout(timerRef);
|
89
|
+
};
|
90
|
+
}, [value, touched]);
|
91
|
+
var classes = classNames(className, 'react-select-input', {
|
92
|
+
'is-invalid': !!meta.error,
|
93
|
+
disabled: disabled
|
94
|
+
});
|
64
95
|
return /*#__PURE__*/React.createElement(ReactSelect, _extends({}, props, {
|
65
96
|
options: options,
|
66
97
|
isDisabled: disabled,
|
@@ -71,7 +102,10 @@ export default function ReactSelectInput(_ref2) {
|
|
71
102
|
getOptionValue: getOptionValue,
|
72
103
|
value: selectedItems,
|
73
104
|
onChange: handleChange,
|
74
|
-
|
105
|
+
onBlur: function onBlur() {
|
106
|
+
return _onBlur();
|
107
|
+
},
|
108
|
+
className: classes,
|
75
109
|
theme: overrideTheme,
|
76
110
|
styles: customStyles,
|
77
111
|
menuPortalTarget: document.body,
|
@@ -16,6 +16,8 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
|
|
16
16
|
|
17
17
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
18
18
|
|
19
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
20
|
+
|
19
21
|
var _react = _interopRequireWildcard(require("react"));
|
20
22
|
|
21
23
|
var _reactSelect = _interopRequireDefault(require("react-select"));
|
@@ -45,6 +47,8 @@ var red = '#f86c6b';
|
|
45
47
|
var inputBorderColor = '#c2cfd6';
|
46
48
|
var inputBorderColorFocused = '#8ad4ee';
|
47
49
|
var inputBoxShadowFocused = '0 0 0 0.2rem rgba(32, 168, 216, 0.25)';
|
50
|
+
var placeholderColor = '#9ca3af';
|
51
|
+
var disabledSingleValueColor = '#4b5563';
|
48
52
|
var customStyles = {
|
49
53
|
control: function control(provided, _ref) {
|
50
54
|
var isFocused = _ref.isFocused,
|
@@ -62,6 +66,17 @@ var customStyles = {
|
|
62
66
|
return _objectSpread(_objectSpread({}, provided), {}, {
|
63
67
|
zIndex: 3
|
64
68
|
});
|
69
|
+
},
|
70
|
+
singleValue: function singleValue(provided, state) {
|
71
|
+
var color = state.isDisabled ? disabledSingleValueColor : '';
|
72
|
+
return _objectSpread(_objectSpread({}, provided), {}, {
|
73
|
+
color: color
|
74
|
+
});
|
75
|
+
},
|
76
|
+
placeholder: function placeholder(defaultStyles) {
|
77
|
+
return _objectSpread(_objectSpread({}, defaultStyles), {}, {
|
78
|
+
color: placeholderColor
|
79
|
+
});
|
65
80
|
}
|
66
81
|
}; // internal to forms use only
|
67
82
|
|
@@ -73,7 +88,7 @@ function ReactSelectInput(_ref2) {
|
|
73
88
|
disabled = _ref2.disabled,
|
74
89
|
onSelected = _ref2.onSelected,
|
75
90
|
onChange = _ref2.onChange,
|
76
|
-
|
91
|
+
_onBlur = _ref2.onBlur,
|
77
92
|
value = _ref2.value,
|
78
93
|
options = _ref2.options,
|
79
94
|
defaultValue = _ref2.defaultValue,
|
@@ -85,6 +100,23 @@ function ReactSelectInput(_ref2) {
|
|
85
100
|
(0, _react.useEffect)(function () {
|
86
101
|
onSelectedRef.current && onSelectedRef.current(selectedItems);
|
87
102
|
}, [selectedItems]);
|
103
|
+
var onBlurRef = (0, _react.useRef)(_onBlur);
|
104
|
+
onBlurRef.current = _onBlur;
|
105
|
+
var touched = meta.touched;
|
106
|
+
(0, _react.useEffect)(function () {
|
107
|
+
if (!touched) return; // without the timer set to 0, if the empty option is selected the required message doesn't appear until clicked away from the select input
|
108
|
+
|
109
|
+
var timerRef = setTimeout(function () {
|
110
|
+
onBlurRef.current && onBlurRef.current();
|
111
|
+
}, 0);
|
112
|
+
return function () {
|
113
|
+
clearTimeout(timerRef);
|
114
|
+
};
|
115
|
+
}, [value, touched]);
|
116
|
+
var classes = (0, _classnames["default"])(className, 'react-select-input', {
|
117
|
+
'is-invalid': !!meta.error,
|
118
|
+
disabled: disabled
|
119
|
+
});
|
88
120
|
return /*#__PURE__*/_react["default"].createElement(_reactSelect["default"], (0, _extends2["default"])({}, props, {
|
89
121
|
options: options,
|
90
122
|
isDisabled: disabled,
|
@@ -95,7 +127,10 @@ function ReactSelectInput(_ref2) {
|
|
95
127
|
getOptionValue: getOptionValue,
|
96
128
|
value: selectedItems,
|
97
129
|
onChange: handleChange,
|
98
|
-
|
130
|
+
onBlur: function onBlur() {
|
131
|
+
return _onBlur();
|
132
|
+
},
|
133
|
+
className: classes,
|
99
134
|
theme: overrideTheme,
|
100
135
|
styles: customStyles,
|
101
136
|
menuPortalTarget: document.body,
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "envoc-form",
|
3
|
-
"version": "3.
|
3
|
+
"version": "3.2.0",
|
4
4
|
"description": "Envoc form components",
|
5
5
|
"keywords": [
|
6
6
|
"react-component",
|
@@ -26,7 +26,7 @@
|
|
26
26
|
"axios": "^0.21.1",
|
27
27
|
"classnames": "^2.3.1",
|
28
28
|
"date-fns": "^2.22.1",
|
29
|
-
"envoc-request": "^3.
|
29
|
+
"envoc-request": "^3.2.0",
|
30
30
|
"lru-cache": "^6.0.0",
|
31
31
|
"prop-types": "^15.7.2",
|
32
32
|
"react-date-picker": "^8.2.0",
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import classNames from 'classnames';
|
1
2
|
import React, { useEffect, useRef } from 'react';
|
2
3
|
import { default as ReactSelect } from 'react-select';
|
3
4
|
|
@@ -17,6 +18,8 @@ const red = '#f86c6b';
|
|
17
18
|
const inputBorderColor = '#c2cfd6';
|
18
19
|
const inputBorderColorFocused = '#8ad4ee';
|
19
20
|
const inputBoxShadowFocused = '0 0 0 0.2rem rgba(32, 168, 216, 0.25)';
|
21
|
+
const placeholderColor = '#9ca3af';
|
22
|
+
const disabledSingleValueColor = '#4b5563';
|
20
23
|
|
21
24
|
export const customStyles = {
|
22
25
|
control: (provided, { isFocused, selectProps }) => {
|
@@ -35,6 +38,13 @@ export const customStyles = {
|
|
35
38
|
};
|
36
39
|
},
|
37
40
|
menu: (provided) => ({ ...provided, zIndex: 3 }),
|
41
|
+
singleValue: (provided, state) => {
|
42
|
+
const color = state.isDisabled ? disabledSingleValueColor : '';
|
43
|
+
return { ...provided, color };
|
44
|
+
},
|
45
|
+
placeholder: (defaultStyles) => {
|
46
|
+
return { ...defaultStyles, color: placeholderColor };
|
47
|
+
},
|
38
48
|
};
|
39
49
|
|
40
50
|
// internal to forms use only
|
@@ -59,6 +69,28 @@ export default function ReactSelectInput({
|
|
59
69
|
onSelectedRef.current && onSelectedRef.current(selectedItems);
|
60
70
|
}, [selectedItems]);
|
61
71
|
|
72
|
+
const onBlurRef = useRef(onBlur);
|
73
|
+
onBlurRef.current = onBlur;
|
74
|
+
const { touched } = meta;
|
75
|
+
|
76
|
+
useEffect(() => {
|
77
|
+
if (!touched) return;
|
78
|
+
|
79
|
+
// without the timer set to 0, if the empty option is selected the required message doesn't appear until clicked away from the select input
|
80
|
+
const timerRef = setTimeout(() => {
|
81
|
+
onBlurRef.current && onBlurRef.current();
|
82
|
+
}, 0);
|
83
|
+
|
84
|
+
return () => {
|
85
|
+
clearTimeout(timerRef);
|
86
|
+
};
|
87
|
+
}, [value, touched]);
|
88
|
+
|
89
|
+
const classes = classNames(className, 'react-select-input', {
|
90
|
+
'is-invalid': !!meta.error,
|
91
|
+
disabled: disabled,
|
92
|
+
});
|
93
|
+
|
62
94
|
return (
|
63
95
|
<ReactSelect
|
64
96
|
{...props}
|
@@ -69,7 +101,8 @@ export default function ReactSelectInput({
|
|
69
101
|
getOptionValue={getOptionValue}
|
70
102
|
value={selectedItems}
|
71
103
|
onChange={handleChange}
|
72
|
-
|
104
|
+
onBlur={() => onBlur()}
|
105
|
+
className={classes}
|
73
106
|
theme={overrideTheme}
|
74
107
|
styles={customStyles}
|
75
108
|
menuPortalTarget={document.body}
|