@hipay/hipay-material-ui 2.0.0-beta.57 → 2.0.0-beta.58
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/CHANGELOG.md +58 -0
- package/HiAlertModal/HiAlertModal.js +56 -13
- package/HiForm/HiFormControl.js +2 -4
- package/HiForm/HiInput.js +16 -4
- package/HiForm/HiUploadField.js +2 -1
- package/HiSelect/HiSelect.js +6 -5
- package/HiSelect/HiSuggestSelect.js +2 -1
- package/HiSelect/SelectInput.js +1 -0
- package/HiSelectNew/HiSelect.js +78 -18
- package/HiSelectNew/HiSelectInput.js +8 -1
- package/HiSelectableList/HiSelectableList.js +2 -35
- package/es/HiAlertModal/HiAlertModal.js +55 -13
- package/es/HiForm/HiFormControl.js +2 -4
- package/es/HiForm/HiInput.js +16 -4
- package/es/HiForm/HiUploadField.js +2 -1
- package/es/HiSelect/HiSelect.js +6 -5
- package/es/HiSelect/HiSuggestSelect.js +2 -1
- package/es/HiSelect/SelectInput.js +1 -0
- package/es/HiSelectNew/HiSelect.js +80 -18
- package/es/HiSelectNew/HiSelectInput.js +7 -1
- package/es/HiSelectableList/HiSelectableList.js +3 -29
- package/index.es.js +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
- package/umd/hipay-material-ui.development.js +5717 -1273
- package/umd/hipay-material-ui.production.min.js +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,61 @@
|
|
|
1
|
+
# [2.0.0-beta.58](https://gitlab.hipay.org/backend/hipay-material-ui/compare/0.0.1...2.0.0-beta.58) (2018-12-13)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **eslint:** remove eslint warrnings in components (ignore test files) ([d236c62](https://gitlab.hipay.org/backend/hipay-material-ui/commit/d236c62))
|
|
7
|
+
* **HiBreadcrumb:** clean eslint warnings ([6db12fb](https://gitlab.hipay.org/backend/hipay-material-ui/commit/6db12fb))
|
|
8
|
+
* **HiDatePicker:** add static positions for custom overlays ([c3edf24](https://gitlab.hipay.org/backend/hipay-material-ui/commit/c3edf24))
|
|
9
|
+
* **HiExpansionPanel:** Fix props type a requirement ([cbc3b48](https://gitlab.hipay.org/backend/hipay-material-ui/commit/cbc3b48))
|
|
10
|
+
* **HiInput:** handle focus state through prop when needed to override default comportment ([9a133cc](https://gitlab.hipay.org/backend/hipay-material-ui/commit/9a133cc))
|
|
11
|
+
* **HiKpiNotice:** eslint clean warnings ([11b5552](https://gitlab.hipay.org/backend/hipay-material-ui/commit/11b5552))
|
|
12
|
+
* **HiSelect:** Fix build of HiSelectContent ([4b87f78](https://gitlab.hipay.org/backend/hipay-material-ui/commit/4b87f78))
|
|
13
|
+
* **HiSelect:** focus on undefined item ([2d084e6](https://gitlab.hipay.org/backend/hipay-material-ui/commit/2d084e6))
|
|
14
|
+
* **HiSelect:** handle staticPosition & width properly for HiDateRangeSelector usage ([7b19ffb](https://gitlab.hipay.org/backend/hipay-material-ui/commit/7b19ffb))
|
|
15
|
+
* **HiSelectableListItem:** disabled item checkbox color ([9f10552](https://gitlab.hipay.org/backend/hipay-material-ui/commit/9f10552))
|
|
16
|
+
* **HiSelectableListItem:** remove item width ([a913945](https://gitlab.hipay.org/backend/hipay-material-ui/commit/a913945))
|
|
17
|
+
* **HiSelectContent:** Remove compute of input value ([b86db83](https://gitlab.hipay.org/backend/hipay-material-ui/commit/b86db83))
|
|
18
|
+
* **HiSlider:** eslint clean warnings ([08964b1](https://gitlab.hipay.org/backend/hipay-material-ui/commit/08964b1))
|
|
19
|
+
* **HiUploadField:** clean eslint warnings ([c76aaf1](https://gitlab.hipay.org/backend/hipay-material-ui/commit/c76aaf1))
|
|
20
|
+
* **migration:** fix contrast threshold ... ([6fb3b18](https://gitlab.hipay.org/backend/hipay-material-ui/commit/6fb3b18))
|
|
21
|
+
* **package:** add cross-env ([7098fd6](https://gitlab.hipay.org/backend/hipay-material-ui/commit/7098fd6))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Features
|
|
25
|
+
|
|
26
|
+
* **CellImage:** Handle fallbackImage ([254799d](https://gitlab.hipay.org/backend/hipay-material-ui/commit/254799d))
|
|
27
|
+
* **CellSentinel:** Uniformize cell api with front CellSentinel ([4e2975b](https://gitlab.hipay.org/backend/hipay-material-ui/commit/4e2975b))
|
|
28
|
+
* **CellSentinel:** Update CellSentinel to the new way (split each result in different column) ([efe2711](https://gitlab.hipay.org/backend/hipay-material-ui/commit/efe2711))
|
|
29
|
+
* **CellSentinelScore:** Add CellSentinelScore ([2fff04d](https://gitlab.hipay.org/backend/hipay-material-ui/commit/2fff04d))
|
|
30
|
+
* **CellText:** Handle active prop in CellText & column views in HiTable ([4366e60](https://gitlab.hipay.org/backend/hipay-material-ui/commit/4366e60))
|
|
31
|
+
* **HiCells:** Add simple cells types (Address, Date, Icon, Image, Numeric, PinToAction, Rate, Senti ([f688517](https://gitlab.hipay.org/backend/hipay-material-ui/commit/f688517))
|
|
32
|
+
* **HiDatePicker:** BREAKING CHANGE - add local prop to handle calendar translations ([b1b3743](https://gitlab.hipay.org/backend/hipay-material-ui/commit/b1b3743))
|
|
33
|
+
* **HiIcon:** Add mdi-material-ui as available icons via 'mdi_' prefix ([1091d6d](https://gitlab.hipay.org/backend/hipay-material-ui/commit/1091d6d))
|
|
34
|
+
* **HiMap:** unregister fetch on unmount ([0afa931](https://gitlab.hipay.org/backend/hipay-material-ui/commit/0afa931))
|
|
35
|
+
* **HiSelect:** Add (NEW) HiSelect, HiNestedSelect, HiDynamicSelect ([4c6447e](https://gitlab.hipay.org/backend/hipay-material-ui/commit/4c6447e))
|
|
36
|
+
* **HiSelect:** Reset search input on blur & on close ([d9af584](https://gitlab.hipay.org/backend/hipay-material-ui/commit/d9af584))
|
|
37
|
+
* **HiSelectableList:** Add sort props to sort item list on label ([f412ddc](https://gitlab.hipay.org/backend/hipay-material-ui/commit/f412ddc))
|
|
38
|
+
* **HiSelectContent:** Add new HiSelectContent & HiNestedSelectContent ([215ad8f](https://gitlab.hipay.org/backend/hipay-material-ui/commit/215ad8f))
|
|
39
|
+
* **HiSelectContent:** export utils functions ([7c41d87](https://gitlab.hipay.org/backend/hipay-material-ui/commit/7c41d87))
|
|
40
|
+
* **HiUploadField:** rename component HiUploadField ([593f77e](https://gitlab.hipay.org/backend/hipay-material-ui/commit/593f77e))
|
|
41
|
+
* **notice:** Création notice KPI ([bba3f89](https://gitlab.hipay.org/backend/hipay-material-ui/commit/bba3f89))
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### Performance Improvements
|
|
45
|
+
|
|
46
|
+
* **PureFunction:** Use pure & functional components ([220c686](https://gitlab.hipay.org/backend/hipay-material-ui/commit/220c686))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### BREAKING CHANGES
|
|
50
|
+
|
|
51
|
+
* **HiDatePicker:** Required "local" props (use polyglot, p.currentLocal)
|
|
52
|
+
* **HiUploadField:** Components names changes
|
|
53
|
+
* **HiCells:** Remove CellCountry, CellThirdParty, CellStatus & CellAccount (use generic type
|
|
54
|
+
CellImage & CellText)
|
|
55
|
+
* **HiSelect:** HiSelect API change, use HiNestedSelect or HiDynamicSelect relative to situation
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
1
59
|
<a name="2.0.0-beta.41"></a>
|
|
2
60
|
# [2.0.0-beta.41](https://gitlab.hipay.org/backend/hipay-material-ui/compare/0.0.1...2.0.0-beta.41) (2018-12-07)
|
|
3
61
|
|
|
@@ -41,20 +41,28 @@ var _styles = require("../styles");
|
|
|
41
41
|
|
|
42
42
|
var _HiButton = _interopRequireDefault(require("../HiButton"));
|
|
43
43
|
|
|
44
|
+
var _HiIcon = _interopRequireDefault(require("../HiIcon"));
|
|
45
|
+
|
|
44
46
|
// @inheritedComponent Dialog
|
|
45
47
|
var styles = function styles(theme) {
|
|
46
48
|
return {
|
|
47
49
|
classContent: {
|
|
48
50
|
fontSize: 14,
|
|
49
|
-
lineHeight: '
|
|
50
|
-
color: '#484848'
|
|
51
|
+
lineHeight: '20px',
|
|
52
|
+
color: '#484848',
|
|
53
|
+
position: 'relative'
|
|
51
54
|
},
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
classDialogPaper: {
|
|
56
|
+
minHeight: 280,
|
|
57
|
+
maxWidth: 280,
|
|
58
|
+
borderRadius: 2
|
|
54
59
|
},
|
|
55
60
|
classCancelButton: {
|
|
56
61
|
float: 'right'
|
|
57
62
|
},
|
|
63
|
+
classSubmitButton: {
|
|
64
|
+
margin: '0'
|
|
65
|
+
},
|
|
58
66
|
classTitle: {
|
|
59
67
|
fontSize: 20,
|
|
60
68
|
fontFamily: theme.typography.fontFamily,
|
|
@@ -62,10 +70,20 @@ var styles = function styles(theme) {
|
|
|
62
70
|
lineHeight: '24px'
|
|
63
71
|
},
|
|
64
72
|
classAction: {
|
|
65
|
-
display: 'inline-block'
|
|
73
|
+
display: 'inline-block',
|
|
74
|
+
margin: '0',
|
|
75
|
+
padding: '0px 24px 24px 24px'
|
|
66
76
|
},
|
|
67
77
|
classDialogRoot: {
|
|
68
78
|
backgroundColor: 'rgba(0, 0, 0, 0.28)'
|
|
79
|
+
},
|
|
80
|
+
classBackgroundIcon: {
|
|
81
|
+
position: 'absolute',
|
|
82
|
+
top: 'calc(50%)',
|
|
83
|
+
left: '50%',
|
|
84
|
+
transform: 'translate(-50%, -50%)',
|
|
85
|
+
color: theme.palette.background2,
|
|
86
|
+
flex: '1'
|
|
69
87
|
}
|
|
70
88
|
};
|
|
71
89
|
};
|
|
@@ -117,6 +135,8 @@ function (_React$PureComponent) {
|
|
|
117
135
|
// Render
|
|
118
136
|
value: function render() {
|
|
119
137
|
var _this$props = this.props,
|
|
138
|
+
backgroundIcon = _this$props.backgroundIcon,
|
|
139
|
+
iconSize = _this$props.iconSize,
|
|
120
140
|
classes = _this$props.classes,
|
|
121
141
|
content = _this$props.content,
|
|
122
142
|
labelCancelButton = _this$props.labelCancelButton,
|
|
@@ -124,17 +144,23 @@ function (_React$PureComponent) {
|
|
|
124
144
|
onCancelClick = _this$props.onCancelClick,
|
|
125
145
|
onSubmitClick = _this$props.onSubmitClick,
|
|
126
146
|
open = _this$props.open,
|
|
147
|
+
cancelColor = _this$props.cancelColor,
|
|
127
148
|
submitColor = _this$props.submitColor,
|
|
128
149
|
title = _this$props.title,
|
|
129
|
-
props = (0, _objectWithoutProperties2.default)(_this$props, ["classes", "content", "labelCancelButton", "labelSubmitButton", "onCancelClick", "onSubmitClick", "open", "submitColor", "title"]);
|
|
150
|
+
props = (0, _objectWithoutProperties2.default)(_this$props, ["backgroundIcon", "iconSize", "classes", "content", "labelCancelButton", "labelSubmitButton", "onCancelClick", "onSubmitClick", "open", "cancelColor", "submitColor", "title"]);
|
|
130
151
|
return _react.default.createElement(_Dialog.default, (0, _extends2.default)({
|
|
131
152
|
open: open,
|
|
132
153
|
onClose: this.handleOnClose,
|
|
133
154
|
classes: {
|
|
134
|
-
|
|
135
|
-
|
|
155
|
+
root: classes.classDialogRoot,
|
|
156
|
+
paper: classes.classDialogPaper
|
|
136
157
|
}
|
|
137
|
-
}, props), _react.default.createElement(
|
|
158
|
+
}, props), backgroundIcon && _react.default.createElement("div", {
|
|
159
|
+
className: classes.classBackgroundIcon
|
|
160
|
+
}, _react.default.createElement(_HiIcon.default, {
|
|
161
|
+
icon: backgroundIcon,
|
|
162
|
+
size: iconSize
|
|
163
|
+
})), _react.default.createElement(_DialogTitle.default, {
|
|
138
164
|
disableTypography: true,
|
|
139
165
|
classes: {
|
|
140
166
|
root: classes.classTitle
|
|
@@ -147,22 +173,39 @@ function (_React$PureComponent) {
|
|
|
147
173
|
classes: {
|
|
148
174
|
root: classes.classAction
|
|
149
175
|
}
|
|
150
|
-
}, _react.default.createElement(_HiButton.default, {
|
|
176
|
+
}, labelSubmitButton && _react.default.createElement(_HiButton.default, {
|
|
177
|
+
classes: {
|
|
178
|
+
root: classes.classSubmitButton
|
|
179
|
+
},
|
|
151
180
|
onClick: this.handleClickSubmit,
|
|
152
181
|
color: submitColor
|
|
153
|
-
}, labelSubmitButton), _react.default.createElement(_HiButton.default, {
|
|
182
|
+
}, labelSubmitButton), labelCancelButton && _react.default.createElement(_HiButton.default, {
|
|
154
183
|
classes: {
|
|
155
184
|
root: classes.classCancelButton
|
|
156
185
|
},
|
|
157
186
|
onClick: this.handleClickCancel,
|
|
158
|
-
color:
|
|
187
|
+
color: cancelColor
|
|
159
188
|
}, labelCancelButton)));
|
|
160
189
|
}
|
|
161
190
|
}]);
|
|
162
191
|
return HiAlertModal;
|
|
163
192
|
}(_react.default.PureComponent);
|
|
164
193
|
|
|
194
|
+
HiAlertModal.defaultProps = {
|
|
195
|
+
cancelColor: 'neutral',
|
|
196
|
+
submitColor: 'primary'
|
|
197
|
+
};
|
|
165
198
|
HiAlertModal.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
199
|
+
/**
|
|
200
|
+
* Icon à mettre en fond
|
|
201
|
+
*/
|
|
202
|
+
backgroundIcon: _propTypes.default.string,
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* The color of the cancel button. It supports those theme colors that make sense for this component.
|
|
206
|
+
*/
|
|
207
|
+
cancelColor: _propTypes.default.oneOf(['default', 'inherit', 'primary', 'secondary', 'positive', 'negative', 'middle', 'neutral']),
|
|
208
|
+
|
|
166
209
|
/**
|
|
167
210
|
* Surcharge les classes du composant
|
|
168
211
|
*/
|
|
@@ -171,7 +214,7 @@ HiAlertModal.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
171
214
|
/**
|
|
172
215
|
* Texte contenu dans la modal
|
|
173
216
|
*/
|
|
174
|
-
content: _propTypes.default.string,
|
|
217
|
+
content: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object, _propTypes.default.node]),
|
|
175
218
|
|
|
176
219
|
/**
|
|
177
220
|
* Texte sur le bouton d'annulation
|
package/HiForm/HiFormControl.js
CHANGED
|
@@ -252,14 +252,12 @@ function (_React$PureComponent) {
|
|
|
252
252
|
focused: !disabled && (focused || hovered)
|
|
253
253
|
}, InputLabelProps), error && errorText && _react.default.createElement(_HiIconButton.default, {
|
|
254
254
|
className: (0, _classnames.default)(classes.iconButton, classes.iconButtonError),
|
|
255
|
-
onClick: this.handleHelperClick
|
|
256
|
-
onKeyDown: this.handleKeyDown
|
|
255
|
+
onClick: this.handleHelperClick
|
|
257
256
|
}, _react.default.createElement(_Warning.default, {
|
|
258
257
|
className: (0, _classnames.default)(classes.icon)
|
|
259
258
|
})), helperIcon && helperText && !error && _react.default.createElement(_HiIconButton.default, {
|
|
260
259
|
className: (0, _classnames.default)(classes.iconButton, classes.iconButtonInfo, (0, _defineProperty2.default)({}, classes.iconButtonInfoActive, helperOpen)),
|
|
261
|
-
onClick: this.handleHelperClick
|
|
262
|
-
onKeyDown: this.handleKeyDown
|
|
260
|
+
onClick: this.handleHelperClick
|
|
263
261
|
}, _react.default.createElement(_Info.default, {
|
|
264
262
|
className: (0, _classnames.default)(classes.icon)
|
|
265
263
|
}))), _react.default.createElement("div", {
|
package/HiForm/HiInput.js
CHANGED
|
@@ -215,10 +215,15 @@ function (_React$PureComponent) {
|
|
|
215
215
|
// Si on click sur un élément de HiInput, on garde le focus
|
|
216
216
|
// Par exemple sur l'icone reset
|
|
217
217
|
if (event.relatedTarget && this.overlayNode && this.overlayNode.contains(event.relatedTarget)) {
|
|
218
|
-
|
|
218
|
+
// If blur came from erase icon => stay focused and don't call onBlur props
|
|
219
|
+
if (this.eraseIconNode && this.eraseIconNode.contains(event.relatedTarget)) {
|
|
220
|
+
event.preventDefault();
|
|
221
|
+
event.stopPropagation();
|
|
222
|
+
} else if (this.endAdornmentNode.contains(event.relatedTarget) && this.props.onBlur) {
|
|
219
223
|
this.props.onBlur(event);
|
|
220
224
|
}
|
|
221
225
|
|
|
226
|
+
event.preventDefault();
|
|
222
227
|
event.stopPropagation();
|
|
223
228
|
} else {
|
|
224
229
|
this.setState({
|
|
@@ -240,9 +245,13 @@ function (_React$PureComponent) {
|
|
|
240
245
|
this.setState({
|
|
241
246
|
focused: true
|
|
242
247
|
});
|
|
243
|
-
}
|
|
248
|
+
} // If focus came from erase icon => stay focused and don't call onFocus props
|
|
249
|
+
|
|
244
250
|
|
|
245
|
-
if (this.
|
|
251
|
+
if (this.eraseIconNode && this.eraseIconNode.contains(event.relatedTarget)) {
|
|
252
|
+
event.preventDefault();
|
|
253
|
+
event.stopPropagation();
|
|
254
|
+
} else if (this.props.onFocus) {
|
|
246
255
|
this.props.onFocus(event);
|
|
247
256
|
}
|
|
248
257
|
}
|
|
@@ -342,7 +351,10 @@ function (_React$PureComponent) {
|
|
|
342
351
|
label: classes.eraseButtonLabel
|
|
343
352
|
},
|
|
344
353
|
onClick: this.handleReset,
|
|
345
|
-
onBlur: this.handleBlur
|
|
354
|
+
onBlur: this.handleBlur,
|
|
355
|
+
buttonRef: function buttonRef(el) {
|
|
356
|
+
_this2.eraseIconNode = el;
|
|
357
|
+
}
|
|
346
358
|
}, _ref);
|
|
347
359
|
|
|
348
360
|
var endAdornment = endAdornmentProps;
|
package/HiForm/HiUploadField.js
CHANGED
package/HiSelect/HiSelect.js
CHANGED
|
@@ -249,17 +249,13 @@ function (_React$PureComponent) {
|
|
|
249
249
|
nextItem = (0, _helpers.getNextItemSelectable)(document.activeElement, 'down');
|
|
250
250
|
} else if (event.key === 'ArrowUp') {
|
|
251
251
|
nextItem = (0, _helpers.getNextItemSelectable)(document.activeElement, 'up');
|
|
252
|
-
} else if (event.key === 'Tab') {
|
|
252
|
+
} else if (event.key === 'Tab' || event.key === 'Escape') {
|
|
253
253
|
/* if (!this.props.staticPosition) {
|
|
254
254
|
document.body.style.overflow = 'auto';
|
|
255
255
|
} */
|
|
256
256
|
_this.setState({
|
|
257
257
|
open: false
|
|
258
258
|
});
|
|
259
|
-
} else if (event.key === 'Escape') {
|
|
260
|
-
_this.setState({
|
|
261
|
-
open: false
|
|
262
|
-
});
|
|
263
259
|
}
|
|
264
260
|
|
|
265
261
|
if (nextItem) {
|
|
@@ -272,6 +268,10 @@ function (_React$PureComponent) {
|
|
|
272
268
|
_this.focusOnSelectedItem();
|
|
273
269
|
} else if (event.key === 'Enter' && _this.props.onSubmit) {
|
|
274
270
|
_this.props.onSubmit(event);
|
|
271
|
+
} else if (event.key === 'Tab' || event.key === 'Escape') {
|
|
272
|
+
_this.setState({
|
|
273
|
+
open: false
|
|
274
|
+
});
|
|
275
275
|
}
|
|
276
276
|
};
|
|
277
277
|
|
|
@@ -750,6 +750,7 @@ function (_React$PureComponent) {
|
|
|
750
750
|
onClick: this.handleClick,
|
|
751
751
|
onFocus: this.handleFocus,
|
|
752
752
|
onBlur: this.handleBlur,
|
|
753
|
+
onKeyDown: this.handleKeyDown,
|
|
753
754
|
onMouseEnter: this.props.onMouseEnter,
|
|
754
755
|
onMouseLeave: this.props.onMouseLeave,
|
|
755
756
|
refElement: function refElement(el) {
|
package/HiSelect/SelectInput.js
CHANGED
package/HiSelectNew/HiSelect.js
CHANGED
|
@@ -37,8 +37,6 @@ var _Paper = _interopRequireDefault(require("@material-ui/core/Paper"));
|
|
|
37
37
|
|
|
38
38
|
var _Popper = _interopRequireDefault(require("@material-ui/core/Popper"));
|
|
39
39
|
|
|
40
|
-
var _reactDom = require("react-dom");
|
|
41
|
-
|
|
42
40
|
var _ClickAwayListener = _interopRequireDefault(require("@material-ui/core/ClickAwayListener"));
|
|
43
41
|
|
|
44
42
|
var _HiSelectableList = _interopRequireDefault(require("../HiSelectableList"));
|
|
@@ -224,11 +222,13 @@ function (_React$PureComponent) {
|
|
|
224
222
|
};
|
|
225
223
|
|
|
226
224
|
_this.focusOnFirstItem = function () {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
225
|
+
if (_this.overlay && _this.overlay.getElementsByTagName('li')[0]) {
|
|
226
|
+
setTimeout(function () {
|
|
227
|
+
var item = _this.overlay.getElementsByTagName('li')[0];
|
|
228
|
+
|
|
229
|
+
item.focus();
|
|
230
|
+
}, 1);
|
|
231
|
+
}
|
|
232
232
|
};
|
|
233
233
|
|
|
234
234
|
_this.getInputElement = function (el) {
|
|
@@ -267,15 +267,14 @@ function (_React$PureComponent) {
|
|
|
267
267
|
};
|
|
268
268
|
|
|
269
269
|
_this.focusOnSelectedItem = function (selectedValue) {
|
|
270
|
-
var overlay = (0, _reactDom.findDOMNode)(_this.overlay);
|
|
271
270
|
setTimeout(function () {
|
|
272
271
|
// On initialise au premier élément pour être sûr de ne pas se retrouver avec un focus of undefined
|
|
273
|
-
var item = overlay.getElementsByTagName('li')[0];
|
|
272
|
+
var item = _this.overlay.getElementsByTagName('li')[0];
|
|
274
273
|
|
|
275
274
|
if (selectedValue && typeof selectedValue === 'string') {
|
|
276
|
-
item = overlay.getElementsByTagName('li')[selectedValue];
|
|
275
|
+
item = _this.overlay.getElementsByTagName('li')[selectedValue];
|
|
277
276
|
} else if (selectedValue && typeof selectedValue === 'number') {
|
|
278
|
-
item = overlay.getElementsByTagName('li')[selectedValue - 1];
|
|
277
|
+
item = _this.overlay.getElementsByTagName('li')[selectedValue - 1];
|
|
279
278
|
}
|
|
280
279
|
|
|
281
280
|
if (item) {
|
|
@@ -313,6 +312,18 @@ function (_React$PureComponent) {
|
|
|
313
312
|
});
|
|
314
313
|
};
|
|
315
314
|
|
|
315
|
+
_this.handleKeyDownInput = function (event) {
|
|
316
|
+
var key = (0, _keycode.default)(event);
|
|
317
|
+
|
|
318
|
+
if (key === 'down' || key === 'up') {
|
|
319
|
+
_this.handleClick();
|
|
320
|
+
} else if (key === 'enter' && _this.props.onSubmit) {
|
|
321
|
+
event.preventDefault();
|
|
322
|
+
|
|
323
|
+
_this.props.onSubmit(event);
|
|
324
|
+
}
|
|
325
|
+
};
|
|
326
|
+
|
|
316
327
|
_this.handleKeyDown = function (event) {
|
|
317
328
|
var nextItem;
|
|
318
329
|
var key = (0, _keycode.default)(event);
|
|
@@ -323,6 +334,13 @@ function (_React$PureComponent) {
|
|
|
323
334
|
} else if (key === 'up') {
|
|
324
335
|
event.preventDefault();
|
|
325
336
|
nextItem = (0, _helpers.getNextItemSelectable)(document.activeElement, 'up');
|
|
337
|
+
} else if (key === 'tab' || key === 'esc') {
|
|
338
|
+
_this.setState({
|
|
339
|
+
open: false
|
|
340
|
+
});
|
|
341
|
+
} else if (key === 'space') {
|
|
342
|
+
// Cancel scroll
|
|
343
|
+
event.preventDefault();
|
|
326
344
|
}
|
|
327
345
|
|
|
328
346
|
if (nextItem) {
|
|
@@ -330,21 +348,58 @@ function (_React$PureComponent) {
|
|
|
330
348
|
}
|
|
331
349
|
};
|
|
332
350
|
|
|
351
|
+
_this.getItemById = function (id) {
|
|
352
|
+
var item;
|
|
353
|
+
|
|
354
|
+
if (_this.props.hasAll && String(id) === '_all') {
|
|
355
|
+
return {
|
|
356
|
+
id: '_all'
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
for (var i = 0; i < _this.props.options.length; i += 1) {
|
|
361
|
+
var elem = _this.props.options[i];
|
|
362
|
+
|
|
363
|
+
if (String(elem.id) === String(id)) {
|
|
364
|
+
item = elem;
|
|
365
|
+
break;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
if (elem.children) {
|
|
369
|
+
for (var j = 0; j < elem.children.length; j += 1) {
|
|
370
|
+
if (String(elem.children[j].id) === String(id)) {
|
|
371
|
+
item = elem.children[j];
|
|
372
|
+
break;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
return item;
|
|
379
|
+
};
|
|
380
|
+
|
|
333
381
|
_this.handleKeyUp = function (event) {
|
|
334
382
|
var key = (0, _keycode.default)(event);
|
|
335
383
|
|
|
336
|
-
if (key === '
|
|
384
|
+
if (key === 'esc') {
|
|
337
385
|
_this.setState({
|
|
338
386
|
open: false
|
|
339
387
|
});
|
|
340
388
|
} else if (key === 'space' || key === 'enter' && !_this.props.multiple) {
|
|
341
389
|
event.preventDefault();
|
|
342
390
|
|
|
343
|
-
var item = _this.
|
|
344
|
-
return String(elem.id) === event.target.id;
|
|
345
|
-
});
|
|
391
|
+
var item = _this.getItemById(event.target.id);
|
|
346
392
|
|
|
347
|
-
|
|
393
|
+
if (item) {
|
|
394
|
+
// Select for nested select
|
|
395
|
+
if (_this.props.hiSelectableListProps && _this.props.hiSelectableListProps.onSelect) {
|
|
396
|
+
_this.props.hiSelectableListProps.onSelect(null, item);
|
|
397
|
+
} else {
|
|
398
|
+
_this.handleSelect(null, item);
|
|
399
|
+
}
|
|
400
|
+
} else {
|
|
401
|
+
console.warn("Can not find item #".concat(event.target.id));
|
|
402
|
+
}
|
|
348
403
|
} else if (key === 'enter' && _this.props.multiple) {
|
|
349
404
|
event.preventDefault();
|
|
350
405
|
|
|
@@ -361,6 +416,10 @@ function (_React$PureComponent) {
|
|
|
361
416
|
event.preventDefault();
|
|
362
417
|
|
|
363
418
|
_this.handleClose();
|
|
419
|
+
} else if (key === 'tab') {
|
|
420
|
+
_this.setState({
|
|
421
|
+
open: false
|
|
422
|
+
});
|
|
364
423
|
}
|
|
365
424
|
};
|
|
366
425
|
|
|
@@ -543,7 +602,7 @@ function (_React$PureComponent) {
|
|
|
543
602
|
var popperClass = (0, _classnames.default)(classes.popper, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.popperWidth, !this.props.containerWidth), (0, _defineProperty2.default)(_classNames, classes.popperRightAlign, this.props.containerWidth && this.props.align === 'right'), _classNames));
|
|
544
603
|
|
|
545
604
|
var searchInput = function searchInput(position) {
|
|
546
|
-
if (
|
|
605
|
+
if (searchable) {
|
|
547
606
|
return _react.default.createElement(_HiInput.default, (0, _extends2.default)({
|
|
548
607
|
value: searchValue,
|
|
549
608
|
autoFocus: true,
|
|
@@ -567,7 +626,7 @@ function (_React$PureComponent) {
|
|
|
567
626
|
var nbItems = itemList.length <= 10 ? itemList.length + 1 : 11;
|
|
568
627
|
popperStyle.transform = "translate3d(-1px, -".concat(nbItems * 40 + 2, "px, 0px)");
|
|
569
628
|
} else if (this.placement && this.placement.indexOf('top') < 0 && !!searchable) {
|
|
570
|
-
popperStyle.transform =
|
|
629
|
+
popperStyle.transform = 'translate3d(-1px, 40px, 0px)';
|
|
571
630
|
}
|
|
572
631
|
|
|
573
632
|
var content = function content(_ref) {
|
|
@@ -624,6 +683,7 @@ function (_React$PureComponent) {
|
|
|
624
683
|
onClick: this.handleClick,
|
|
625
684
|
onFocus: this.handleFocus,
|
|
626
685
|
onBlur: this.handleBlur,
|
|
686
|
+
onKeyDown: this.handleKeyDownInput,
|
|
627
687
|
onSubmit: onSubmit,
|
|
628
688
|
onMouseEnter: this.props.onMouseEnter,
|
|
629
689
|
onMouseLeave: this.props.onMouseLeave,
|
|
@@ -172,6 +172,8 @@ function (_React$PureComponent) {
|
|
|
172
172
|
|
|
173
173
|
if (_this.props.onKeyDown) {
|
|
174
174
|
_this.props.onKeyDown(event);
|
|
175
|
+
|
|
176
|
+
event.preventDefault();
|
|
175
177
|
} else if (key === 'down' || key === 'up') {
|
|
176
178
|
_this.props.onClick();
|
|
177
179
|
} else if (key === 'enter' && _this.props.onSubmit) {
|
|
@@ -193,8 +195,12 @@ function (_React$PureComponent) {
|
|
|
193
195
|
};
|
|
194
196
|
|
|
195
197
|
_this.handleClick = function (event) {
|
|
198
|
+
// Do not open select if press on resetIcon
|
|
196
199
|
if ((!_this.resetIcon || !_this.resetIcon.contains(event.target)) && _this.props.onClick) {
|
|
197
|
-
|
|
200
|
+
// Do not open select if press enter on button => submit form
|
|
201
|
+
if (event.type !== 'keydown' || (0, _keycode.default)(event) !== 'enter') {
|
|
202
|
+
_this.props.onClick(event);
|
|
203
|
+
}
|
|
198
204
|
}
|
|
199
205
|
};
|
|
200
206
|
|
|
@@ -269,6 +275,7 @@ function (_React$PureComponent) {
|
|
|
269
275
|
}, value || placeholder), _react.default.createElement(_ArrowDropDown.default, {
|
|
270
276
|
className: iconClass
|
|
271
277
|
})) : _react.default.createElement(_ButtonBase.default, {
|
|
278
|
+
component: "div",
|
|
272
279
|
id: id,
|
|
273
280
|
className: rootClass,
|
|
274
281
|
onClick: this.handleClick,
|
|
@@ -33,8 +33,6 @@ var _HiSelectableListItem = _interopRequireDefault(require("./HiSelectableListIt
|
|
|
33
33
|
|
|
34
34
|
var _helpers = require("../utils/helpers");
|
|
35
35
|
|
|
36
|
-
var _keycode = _interopRequireDefault(require("keycode"));
|
|
37
|
-
|
|
38
36
|
var styles = function styles() {
|
|
39
37
|
return {
|
|
40
38
|
root: {
|
|
@@ -73,35 +71,6 @@ function (_React$PureComponent) {
|
|
|
73
71
|
};
|
|
74
72
|
};
|
|
75
73
|
|
|
76
|
-
_this.handleKeyDown = function (event) {
|
|
77
|
-
var nextItem;
|
|
78
|
-
var key = (0, _keycode.default)(event);
|
|
79
|
-
|
|
80
|
-
if (key === 'down') {
|
|
81
|
-
event.preventDefault();
|
|
82
|
-
nextItem = (0, _helpers.getNextItemSelectable)(document.activeElement, 'down');
|
|
83
|
-
} else if (key === 'up') {
|
|
84
|
-
event.preventDefault();
|
|
85
|
-
nextItem = (0, _helpers.getNextItemSelectable)(document.activeElement, 'up');
|
|
86
|
-
} else if (key === 'space' || key === 'enter' && !_this.props.multiple) {
|
|
87
|
-
event.preventDefault();
|
|
88
|
-
|
|
89
|
-
var item = _this.props.options.find(function (elem) {
|
|
90
|
-
return String(elem.id) === event.target.id;
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
_this.handleSelect(null, item);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
if (nextItem) {
|
|
97
|
-
nextItem.focus();
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
_this.handleKeyUp = function () {
|
|
102
|
-
return false;
|
|
103
|
-
};
|
|
104
|
-
|
|
105
74
|
_this.buildRecursiveListItem = function (item) {
|
|
106
75
|
var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
107
76
|
var _this$props = _this.props,
|
|
@@ -113,10 +82,8 @@ function (_React$PureComponent) {
|
|
|
113
82
|
icon = _this$props.icon,
|
|
114
83
|
selectedItemIdList = _this$props.selectedItemIdList,
|
|
115
84
|
sort = _this$props.sort,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
_this$props$onKeyUp = _this$props.onKeyUp,
|
|
119
|
-
onKeyUp = _this$props$onKeyUp === void 0 ? _this.handleKeyUp : _this$props$onKeyUp,
|
|
85
|
+
onKeyDown = _this$props.onKeyDown,
|
|
86
|
+
onKeyUp = _this$props.onKeyUp,
|
|
120
87
|
others = (0, _objectWithoutProperties2.default)(_this$props, ["checkedIcon", "disabled", "disabledItemIdList", "hideCheckbox", "hoverIcon", "icon", "selectedItemIdList", "sort", "onKeyDown", "onKeyUp"]);
|
|
121
88
|
|
|
122
89
|
if (sort && item.children) {
|