@hipay/hipay-material-ui 2.0.0-beta.58 → 2.0.0-beta.60

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.
Files changed (48) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/HiCell/CellNumeric.js +1 -1
  3. package/HiColoredLabel/HiColoredLabel.js +16 -4
  4. package/HiDatePicker/HiDatePicker.js +11 -2
  5. package/HiDatePicker/HiDateRangePicker.js +49 -8
  6. package/HiDatePicker/HiDateRangeSelector.js +39 -30
  7. package/HiDatePicker/Overlays/YearPickerOverlay.js +8 -3
  8. package/HiForm/HiFormControl.js +26 -11
  9. package/HiForm/HiFormLabel.js +3 -1
  10. package/HiForm/HiInput.js +33 -1
  11. package/HiForm/HiUpload.js +290 -45
  12. package/HiForm/HiUploadField.js +19 -51
  13. package/HiForm/HiUploadInput.js +18 -7
  14. package/HiSelect/HiSuggestSelect.js +3 -3
  15. package/HiSelectNew/HiDynamicSelect.js +3 -3
  16. package/HiSelectNew/HiNestedSelect.js +29 -15
  17. package/HiSelectNew/HiNestedSelectContent.js +29 -15
  18. package/HiSelectNew/HiSelect.js +23 -12
  19. package/HiSelectNew/HiSelectContent.js +23 -11
  20. package/HiSelectNew/HiSelectInput.js +4 -4
  21. package/HiSelectableList/HiSelectableListItem.js +8 -10
  22. package/README.md +1 -1
  23. package/es/HiCell/CellNumeric.js +1 -1
  24. package/es/HiColoredLabel/HiColoredLabel.js +21 -4
  25. package/es/HiDatePicker/HiDatePicker.js +11 -2
  26. package/es/HiDatePicker/HiDateRangePicker.js +42 -8
  27. package/es/HiDatePicker/HiDateRangeSelector.js +38 -27
  28. package/es/HiDatePicker/Overlays/YearPickerOverlay.js +8 -3
  29. package/es/HiForm/HiFormControl.js +27 -11
  30. package/es/HiForm/HiFormLabel.js +3 -1
  31. package/es/HiForm/HiInput.js +32 -1
  32. package/es/HiForm/HiUpload.js +276 -35
  33. package/es/HiForm/HiUploadField.js +19 -43
  34. package/es/HiForm/HiUploadInput.js +16 -7
  35. package/es/HiSelect/HiSuggestSelect.js +3 -3
  36. package/es/HiSelectNew/HiNestedSelect.js +17 -7
  37. package/es/HiSelectNew/HiNestedSelectContent.js +16 -6
  38. package/es/HiSelectNew/HiSelect.js +15 -3
  39. package/es/HiSelectNew/HiSelectContent.js +11 -2
  40. package/es/HiSelectNew/HiSelectInput.js +4 -3
  41. package/es/HiSelectableList/HiSelectableListItem.js +8 -10
  42. package/es/utils/helpers.js +6 -5
  43. package/index.es.js +1 -1
  44. package/index.js +1 -1
  45. package/package.json +3 -2
  46. package/umd/hipay-material-ui.development.js +4632 -1923
  47. package/umd/hipay-material-ui.production.min.js +2 -2
  48. package/utils/helpers.js +6 -4
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.styles = void 0;
8
+ exports.default = void 0;
9
9
 
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
@@ -25,51 +25,10 @@ var _react = _interopRequireDefault(require("react"));
25
25
 
26
26
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
27
 
28
- var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
29
-
30
28
  var _HiFormControl = _interopRequireDefault(require("./HiFormControl"));
31
29
 
32
30
  var _HiUpload = _interopRequireDefault(require("./HiUpload"));
33
31
 
34
- var styles = function styles(theme) {
35
- return {
36
- flexContainer: {
37
- display: ' flex',
38
- alignItems: 'center'
39
- },
40
- statusIcon: {
41
- height: '80px',
42
- width: '80px',
43
- marginRight: '8px',
44
- padding: '24px',
45
- borderRadius: '2px',
46
- backgroundColor: theme.palette.local.background2,
47
- border: "1px solid ".concat(theme.palette.middle.main),
48
- color: "".concat(theme.palette.middle.main, " !important"),
49
- fontSize: '80px'
50
- },
51
- inputContainer: {
52
- flex: '1',
53
- width: 'calc(100% - 88px)'
54
- },
55
- empty: {
56
- border: "1px solid ".concat(theme.palette.input.bottomLine),
57
- color: "".concat(theme.palette.neutral.main, " !important")
58
- },
59
- complete: {
60
- border: "1px solid ".concat(theme.palette.positive.main),
61
- color: "".concat(theme.palette.positive.main, " !important"),
62
- fontSize: '32px'
63
- },
64
- error: {
65
- border: "1px solid ".concat(theme.palette.negative.main),
66
- color: "".concat(theme.palette.negative.main, " !important")
67
- }
68
- };
69
- };
70
-
71
- exports.styles = styles;
72
-
73
32
  var HiUploadField =
74
33
  /*#__PURE__*/
75
34
  function (_React$PureComponent) {
@@ -89,7 +48,8 @@ function (_React$PureComponent) {
89
48
  helperIcon = _this$props.helperIcon,
90
49
  helperText = _this$props.helperText,
91
50
  values = _this$props.values,
92
- others = (0, _objectWithoutProperties2.default)(_this$props, ["className", "label", "helperIcon", "helperText", "values"]);
51
+ fullWidth = _this$props.fullWidth,
52
+ others = (0, _objectWithoutProperties2.default)(_this$props, ["className", "label", "helperIcon", "helperText", "values", "fullWidth"]);
93
53
  var empty = true;
94
54
  var error = false;
95
55
  var errorText = '';
@@ -110,7 +70,8 @@ function (_React$PureComponent) {
110
70
  errorText: errorText,
111
71
  error: error,
112
72
  helperIcon: helperIcon,
113
- helperText: helperText
73
+ helperText: helperText,
74
+ fullWidth: fullWidth
114
75
  }, _react.default.createElement(_HiUpload.default, (0, _extends2.default)({
115
76
  values: values
116
77
  }, others)));
@@ -121,7 +82,9 @@ function (_React$PureComponent) {
121
82
 
122
83
  HiUploadField.defaultProps = {
123
84
  helperText: '',
124
- helperIcon: false
85
+ helperIcon: false,
86
+ seeFile: true,
87
+ fullWidth: false
125
88
  };
126
89
  HiUploadField.propTypes = process.env.NODE_ENV !== "production" ? {
127
90
  /**
@@ -134,6 +97,11 @@ HiUploadField.propTypes = process.env.NODE_ENV !== "production" ? {
134
97
  */
135
98
  className: _propTypes.default.string,
136
99
 
100
+ /**
101
+ * Si "true", applique l'attribut css correspondant
102
+ */
103
+ fullWidth: _propTypes.default.bool,
104
+
137
105
  /**
138
106
  * Si "true", le texte d'aide s'affichera seulement au clic sur l'icône "Information"
139
107
  */
@@ -169,15 +137,15 @@ HiUploadField.propTypes = process.env.NODE_ENV !== "production" ? {
169
137
  */
170
138
  onSeeFile: _propTypes.default.func,
171
139
 
140
+ /**
141
+ * set to false to hide the eye button
142
+ */
143
+ seeFile: _propTypes.default.bool,
144
+
172
145
  /**
173
146
  * Valeurs des inputs
174
147
  */
175
148
  values: _propTypes.default.array
176
149
  } : {};
177
-
178
- var _default = (0, _withStyles.default)(styles, {
179
- hiComponent: true,
180
- name: 'HmuiHiUploadField'
181
- })(HiUploadField);
182
-
150
+ var _default = HiUploadField;
183
151
  exports.default = _default;
@@ -46,6 +46,7 @@ var styles = function styles(theme) {
46
46
  height: 40,
47
47
  display: 'inline-flex',
48
48
  justifyContent: 'flex-start',
49
+ cursor: 'pointer',
49
50
  '&$focused, &$dragOver': {
50
51
  backgroundColor: theme.palette.global.background1
51
52
  },
@@ -112,7 +113,7 @@ var styles = function styles(theme) {
112
113
  transform: 'scaleX(1)'
113
114
  },
114
115
  '&$error': {
115
- borderBottom: "1px solid ".concat(theme.palette.negative.normal)
116
+ borderBottom: "1px solid ".concat(theme.palette.negative.main)
116
117
  }
117
118
  }
118
119
  },
@@ -120,7 +121,8 @@ var styles = function styles(theme) {
120
121
  color: "".concat(theme.palette.action.disabled),
121
122
  '&:before': {
122
123
  display: 'none'
123
- }
124
+ },
125
+ cursor: 'default'
124
126
  },
125
127
  focused: {
126
128
  backgroundColor: theme.palette.background3
@@ -137,6 +139,7 @@ var styles = function styles(theme) {
137
139
  height: 39,
138
140
  display: 'inline-flex',
139
141
  width: '100%',
142
+ cursor: 'pointer',
140
143
  '&$empty': {
141
144
  opacity: 0.42
142
145
  }
@@ -160,7 +163,7 @@ var styles = function styles(theme) {
160
163
  }),
161
164
  '&:hover': {
162
165
  color: 'inherit',
163
- backgroundColor: theme.palette.local.background2
166
+ background: 'none'
164
167
  }
165
168
  }
166
169
  };
@@ -344,6 +347,12 @@ function (_React$Component) {
344
347
  droppable = _this$state.droppable; // On utilise classNames pour variabiliser les styles et merger les classes appliquées
345
348
 
346
349
  var rootClass = (0, _classnames.default)(classes.root, classes.inkbar, classes.underline, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), (0, _defineProperty2.default)(_classNames, classes.focused, focused), (0, _defineProperty2.default)(_classNames, classes.error, error && !focused), (0, _defineProperty2.default)(_classNames, classes.dragOver, dragOver), (0, _defineProperty2.default)(_classNames, classes.droppable, droppable), _classNames));
350
+
351
+ var eyeButton = _react.default.createElement(_HiIconButton.default, {
352
+ className: classes.icon,
353
+ onClick: this.handleSeeFile
354
+ }, _ref);
355
+
347
356
  return _react.default.createElement("div", {
348
357
  className: rootClass
349
358
  }, _react.default.createElement("label", {
@@ -358,10 +367,7 @@ function (_React$Component) {
358
367
  onChange: this.handleChange
359
368
  })), value === null || _react.default.createElement("div", {
360
369
  className: classes.endAdornment
361
- }, _react.default.createElement(_HiIconButton.default, {
362
- className: classes.icon,
363
- onClick: this.handleSeeFile
364
- }, _ref), _react.default.createElement(_HiIconButton.default, {
370
+ }, this.props.seeFile && eyeButton, _react.default.createElement(_HiIconButton.default, {
365
371
  className: classes.icon,
366
372
  onClick: this.handleDeleteFile
367
373
  }, _ref2)));
@@ -440,6 +446,11 @@ HiUploadInput.propTypes = process.env.NODE_ENV !== "production" ? {
440
446
  */
441
447
  placeholder: _propTypes.default.string,
442
448
 
449
+ /**
450
+ * set to false to hide the eye button
451
+ */
452
+ seeFile: _propTypes.default.bool,
453
+
443
454
  /**
444
455
  * The translations of the error messages.
445
456
  */
@@ -205,10 +205,10 @@ function (_React$PureComponent) {
205
205
  options: [],
206
206
  focused: false
207
207
  });
208
- }
209
208
 
210
- if (this.props.onBlurInput) {
211
- this.props.onBlurInput(event);
209
+ if (this.props.onBlurInput) {
210
+ this.props.onBlurInput(event);
211
+ }
212
212
  }
213
213
  }
214
214
  }, {
@@ -80,7 +80,7 @@ function (_React$PureComponent) {
80
80
  return id !== item.id;
81
81
  }), item);
82
82
  } else {
83
- onChange(event, (0, _toConsumableArray2.default)(value).concat([item.id]), item);
83
+ onChange(event, [].concat((0, _toConsumableArray2.default)(value), [item.id]), item);
84
84
  }
85
85
  };
86
86
 
@@ -91,14 +91,14 @@ function (_React$PureComponent) {
91
91
  var _this$props2 = _this.props,
92
92
  nextPage = _this$props2.nextPage,
93
93
  translations = _this$props2.translations;
94
- var itemList = (0, _toConsumableArray2.default)(options.length === 0 && !loading ? [{
94
+ var itemList = [].concat((0, _toConsumableArray2.default)(options.length === 0 && !loading ? [{
95
95
  id: '_no_result',
96
96
  type: 'text',
97
97
  disabled: true,
98
98
  centered: true,
99
99
  hideCheckbox: true,
100
100
  label: translations.no_result_match
101
- }] : []).concat((0, _toConsumableArray2.default)(options), (0, _toConsumableArray2.default)(!loading && nextPage === 'manual' ? [{
101
+ }] : []), (0, _toConsumableArray2.default)(options), (0, _toConsumableArray2.default)(!loading && nextPage === 'manual' ? [{
102
102
  id: '_next_page',
103
103
  type: 'button',
104
104
  centered: true,
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.styles = void 0;
8
+ exports.default = exports.styles = exports.filterValue = void 0;
9
9
 
10
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
11
 
@@ -47,12 +47,12 @@ var _helpers = require("../utils/helpers");
47
47
  */
48
48
  function getRecursiveFinalItemIdList(itemList) {
49
49
  var finalItemIdList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
50
- return (0, _toConsumableArray2.default)(finalItemIdList).concat((0, _toConsumableArray2.default)(itemList.reduce(function (memo, item) {
50
+ return [].concat((0, _toConsumableArray2.default)(finalItemIdList), (0, _toConsumableArray2.default)(itemList.reduce(function (memo, item) {
51
51
  if (item.children) {
52
52
  return getRecursiveFinalItemIdList(item.children, memo);
53
53
  }
54
54
 
55
- return (0, _toConsumableArray2.default)(memo).concat([item.id]);
55
+ return [].concat((0, _toConsumableArray2.default)(memo), [item.id]);
56
56
  }, [])));
57
57
  }
58
58
  /**
@@ -76,6 +76,10 @@ function findFinalItemRecursively(itemList, searchId) {
76
76
  });
77
77
  return foundItem;
78
78
  }
79
+
80
+ var filterValue = function filterValue(item, searchValue) {
81
+ return searchValue === '' || (0, _helpers.foldAccents)(item.label.toString().toLowerCase()).search((0, _helpers.foldAccents)(searchValue.toLowerCase())) !== -1;
82
+ };
79
83
  /**
80
84
  * Build item list by settings item props relative to the nested parent/child situation
81
85
  * Reduce the item list to build specified items (displayed, pinned, disabled, selected, indeterminate)
@@ -94,6 +98,8 @@ function findFinalItemRecursively(itemList, searchId) {
94
98
  */
95
99
 
96
100
 
101
+ exports.filterValue = filterValue;
102
+
97
103
  function buildFilteredItemList(itemList) {
98
104
  var selectedItemIdList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
99
105
  var searchValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
@@ -102,15 +108,16 @@ function buildFilteredItemList(itemList) {
102
108
  var disabledParent = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
103
109
  var nbChildrenAsInfo = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
104
110
  var translations = arguments.length > 7 ? arguments[7] : undefined;
111
+ var filterFunc = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : filterValue;
105
112
  return itemList.reduce(function (_ref, item) {
106
113
  var memoItemList = _ref.l,
107
114
  memoSelected = _ref.s,
108
115
  memoUnselected = _ref.u,
109
116
  memoVisible = _ref.v;
110
- var itemVisible = searchValue === '' || (0, _helpers.foldAccents)(item.label.toString().toLowerCase()).search((0, _helpers.foldAccents)(searchValue.toLowerCase())) !== -1; // Parent item
117
+ var itemVisible = filterFunc(item, searchValue); // Parent item
111
118
 
112
119
  if (item.children) {
113
- var _buildFilteredItemLis = buildFilteredItemList(item.children, selectedItemIdList, searchValue, itemVisible, pinnedParent, disabledParent),
120
+ var _buildFilteredItemLis = buildFilteredItemList(item.children, selectedItemIdList, searchValue, itemVisible, pinnedParent, disabledParent, nbChildrenAsInfo, translations, filterFunc),
114
121
  customizedChildren = _buildFilteredItemLis.l,
115
122
  selected = _buildFilteredItemLis.s,
116
123
  unselected = _buildFilteredItemLis.u,
@@ -121,7 +128,7 @@ function buildFilteredItemList(itemList) {
121
128
  }
122
129
 
123
130
  return {
124
- l: (0, _toConsumableArray2.default)(memoItemList).concat([(0, _extends2.default)({}, item, disabledParent && {
131
+ l: [].concat((0, _toConsumableArray2.default)(memoItemList), [(0, _extends2.default)({}, item, disabledParent && {
125
132
  disabled: true,
126
133
  hideCheckbox: true // don't display checkbox on disabled parent
127
134
 
@@ -140,7 +147,7 @@ function buildFilteredItemList(itemList) {
140
147
 
141
148
  var itemSelected = selectedItemIdList.includes(item.id);
142
149
  return {
143
- l: (0, _toConsumableArray2.default)(memoItemList).concat([(0, _extends2.default)({
150
+ l: [].concat((0, _toConsumableArray2.default)(memoItemList), [(0, _extends2.default)({
144
151
  displayed: itemVisible || visibleParent
145
152
  }, item)]),
146
153
  s: itemSelected && memoSelected,
@@ -259,9 +266,9 @@ function (_React$PureComponent) {
259
266
  }), item);
260
267
  } else {
261
268
  // select parent > add each selectable child without duplicates.
262
- onChange(event, (0, _toConsumableArray2.default)(value.filter(function (vid) {
269
+ onChange(event, [].concat((0, _toConsumableArray2.default)(value.filter(function (vid) {
263
270
  return !parentSelectableItemIdList.includes(vid);
264
- })).concat((0, _toConsumableArray2.default)(parentSelectableItemIdList)), item);
271
+ })), (0, _toConsumableArray2.default)(parentSelectableItemIdList)), item);
265
272
  }
266
273
  } else if (value.includes(item.id)) {
267
274
  // unselect item
@@ -269,7 +276,7 @@ function (_React$PureComponent) {
269
276
  return id !== item.id;
270
277
  }), item);
271
278
  } else {
272
- onChange(event, (0, _toConsumableArray2.default)(value).concat([item.id]), item);
279
+ onChange(event, [].concat((0, _toConsumableArray2.default)(value), [item.id]), item);
273
280
  }
274
281
  };
275
282
 
@@ -285,9 +292,10 @@ function (_React$PureComponent) {
285
292
  multiple = _this$props2.multiple,
286
293
  nbChildrenAsInfo = _this$props2.nbChildrenAsInfo,
287
294
  pinnedParent = _this$props2.pinnedParent,
288
- translations = _this$props2.translations; // build item list
295
+ translations = _this$props2.translations,
296
+ filterFunc = _this$props2.filterFunc; // build item list
289
297
 
290
- var _buildFilteredItemLis2 = buildFilteredItemList(options, value, search, false, pinnedParent, disabledParent || !multiple, nbChildrenAsInfo, translations),
298
+ var _buildFilteredItemLis2 = buildFilteredItemList(options, value, search, false, pinnedParent, disabledParent || !multiple, nbChildrenAsInfo, translations, filterFunc),
291
299
  filteredItemList = _buildFilteredItemLis2.l,
292
300
  allSelected = _buildFilteredItemLis2.s,
293
301
  allUnselected = _buildFilteredItemLis2.u,
@@ -307,14 +315,14 @@ function (_React$PureComponent) {
307
315
  centered: true,
308
316
  hideCheckbox: true,
309
317
  label: translations.no_result_match
310
- }]) : (0, _toConsumableArray2.default)(loading ? [{
318
+ }]) : [].concat((0, _toConsumableArray2.default)(loading ? [{
311
319
  id: '_loading',
312
320
  type: 'loader',
313
321
  disabled: true,
314
322
  centered: true,
315
323
  hideCheckbox: true,
316
324
  label: 'loading'
317
- }] : []).concat((0, _toConsumableArray2.default)(hasAll ? [{
325
+ }] : []), (0, _toConsumableArray2.default)(hasAll ? [{
318
326
  id: '_all',
319
327
  iconAll: iconAll,
320
328
  label: translations.all,
@@ -426,7 +434,8 @@ HiNestedSelect.defaultProps = {
426
434
  one_item_selected: '%s item selected',
427
435
  n_children: '%s',
428
436
  one_child: '%s item'
429
- }
437
+ },
438
+ filterFunc: filterValue
430
439
  };
431
440
  HiNestedSelect.propTypes = process.env.NODE_ENV !== "production" ? {
432
441
  /**
@@ -444,6 +453,11 @@ HiNestedSelect.propTypes = process.env.NODE_ENV !== "production" ? {
444
453
  */
445
454
  displayAsChip: _propTypes.default.bool,
446
455
 
456
+ /*
457
+ * Fonction de filtrage custom
458
+ */
459
+ filterFunc: _propTypes.default.func,
460
+
447
461
  /**
448
462
  * Affiche l'élément 'All'
449
463
  */
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.getRecursiveFinalItemIdList = getRecursiveFinalItemIdList;
9
9
  exports.findFinalItemRecursively = findFinalItemRecursively;
10
- exports.default = void 0;
10
+ exports.default = exports.filterValue = void 0;
11
11
 
12
12
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
13
 
@@ -43,12 +43,12 @@ var _helpers = require("../utils/helpers");
43
43
  */
44
44
  function getRecursiveFinalItemIdList(itemList) {
45
45
  var finalItemIdList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
46
- return (0, _toConsumableArray2.default)(finalItemIdList).concat((0, _toConsumableArray2.default)(itemList.reduce(function (memo, item) {
46
+ return [].concat((0, _toConsumableArray2.default)(finalItemIdList), (0, _toConsumableArray2.default)(itemList.reduce(function (memo, item) {
47
47
  if (item.children) {
48
48
  return getRecursiveFinalItemIdList(item.children, memo);
49
49
  }
50
50
 
51
- return (0, _toConsumableArray2.default)(memo).concat([item.id]);
51
+ return [].concat((0, _toConsumableArray2.default)(memo), [item.id]);
52
52
  }, [])));
53
53
  }
54
54
  /**
@@ -72,6 +72,10 @@ function findFinalItemRecursively(itemList, searchId) {
72
72
  });
73
73
  return foundItem;
74
74
  }
75
+
76
+ var filterValue = function filterValue(item, searchValue) {
77
+ return searchValue === '' || (0, _helpers.foldAccents)(item.label.toString().toLowerCase()).search((0, _helpers.foldAccents)(searchValue.toLowerCase())) !== -1;
78
+ };
75
79
  /**
76
80
  * Build item list by settings item props relative to the nested parent/child situation
77
81
  * Reduce the item list to build specified items (displayed, pinned, disabled, selected, indeterminate)
@@ -90,6 +94,8 @@ function findFinalItemRecursively(itemList, searchId) {
90
94
  */
91
95
 
92
96
 
97
+ exports.filterValue = filterValue;
98
+
93
99
  function buildFilteredItemList(itemList) {
94
100
  var selectedItemIdList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
95
101
  var searchValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
@@ -98,15 +104,16 @@ function buildFilteredItemList(itemList) {
98
104
  var disabledParent = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
99
105
  var nbChildrenAsInfo = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
100
106
  var translations = arguments.length > 7 ? arguments[7] : undefined;
107
+ var filterFunc = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : filterValue;
101
108
  return itemList.reduce(function (_ref, item) {
102
109
  var memoItemList = _ref.l,
103
110
  memoSelected = _ref.s,
104
111
  memoUnselected = _ref.u,
105
112
  memoVisible = _ref.v;
106
- var itemVisible = searchValue === '' || (0, _helpers.foldAccents)(item.label.toString().toLowerCase()).search((0, _helpers.foldAccents)(searchValue.toLowerCase())) !== -1; // Parent item
113
+ var itemVisible = filterFunc(item, searchValue); // Parent item
107
114
 
108
115
  if (item.children) {
109
- var _buildFilteredItemLis = buildFilteredItemList(item.children, selectedItemIdList, searchValue, itemVisible, pinnedParent, disabledParent),
116
+ var _buildFilteredItemLis = buildFilteredItemList(item.children, selectedItemIdList, searchValue, itemVisible, pinnedParent, disabledParent, nbChildrenAsInfo, translations, filterFunc),
110
117
  customizedChildren = _buildFilteredItemLis.l,
111
118
  selected = _buildFilteredItemLis.s,
112
119
  unselected = _buildFilteredItemLis.u,
@@ -117,7 +124,7 @@ function buildFilteredItemList(itemList) {
117
124
  }
118
125
 
119
126
  return {
120
- l: (0, _toConsumableArray2.default)(memoItemList).concat([(0, _extends2.default)({}, item, disabledParent && {
127
+ l: [].concat((0, _toConsumableArray2.default)(memoItemList), [(0, _extends2.default)({}, item, disabledParent && {
121
128
  disabled: true,
122
129
  hideCheckbox: true // don't display checkbox on disabled parent
123
130
 
@@ -136,7 +143,7 @@ function buildFilteredItemList(itemList) {
136
143
 
137
144
  var itemSelected = selectedItemIdList.includes(item.id);
138
145
  return {
139
- l: (0, _toConsumableArray2.default)(memoItemList).concat([(0, _extends2.default)({
146
+ l: [].concat((0, _toConsumableArray2.default)(memoItemList), [(0, _extends2.default)({
140
147
  displayed: itemVisible || visibleParent
141
148
  }, item)]),
142
149
  s: itemSelected && memoSelected,
@@ -216,9 +223,9 @@ function (_React$PureComponent) {
216
223
  }), item);
217
224
  } else {
218
225
  // select parent > add each selectable child without duplicates.
219
- onChange(event, (0, _toConsumableArray2.default)(value.filter(function (vid) {
226
+ onChange(event, [].concat((0, _toConsumableArray2.default)(value.filter(function (vid) {
220
227
  return !parentSelectableItemIdList.includes(vid);
221
- })).concat((0, _toConsumableArray2.default)(parentSelectableItemIdList)), item);
228
+ })), (0, _toConsumableArray2.default)(parentSelectableItemIdList)), item);
222
229
  }
223
230
  } else if (value.includes(item.id)) {
224
231
  // unselect item
@@ -226,7 +233,7 @@ function (_React$PureComponent) {
226
233
  return id !== item.id;
227
234
  }), item);
228
235
  } else {
229
- onChange(event, (0, _toConsumableArray2.default)(value).concat([item.id]), item);
236
+ onChange(event, [].concat((0, _toConsumableArray2.default)(value), [item.id]), item);
230
237
  }
231
238
  };
232
239
 
@@ -241,9 +248,10 @@ function (_React$PureComponent) {
241
248
  multiple = _this$props2.multiple,
242
249
  nbChildrenAsInfo = _this$props2.nbChildrenAsInfo,
243
250
  pinnedParent = _this$props2.pinnedParent,
244
- translations = _this$props2.translations; // build item list
251
+ translations = _this$props2.translations,
252
+ filterFunc = _this$props2.filterFunc; // build item list
245
253
 
246
- var _buildFilteredItemLis2 = buildFilteredItemList(options, value, search, false, pinnedParent, disabledParent || !multiple, nbChildrenAsInfo, translations),
254
+ var _buildFilteredItemLis2 = buildFilteredItemList(options, value, search, false, pinnedParent, disabledParent || !multiple, nbChildrenAsInfo, translations, filterFunc),
247
255
  filteredItemList = _buildFilteredItemLis2.l,
248
256
  allSelected = _buildFilteredItemLis2.s,
249
257
  allUnselected = _buildFilteredItemLis2.u,
@@ -263,14 +271,14 @@ function (_React$PureComponent) {
263
271
  centered: true,
264
272
  hideCheckbox: true,
265
273
  label: translations.no_result_match
266
- }]) : (0, _toConsumableArray2.default)(loading ? [{
274
+ }]) : [].concat((0, _toConsumableArray2.default)(loading ? [{
267
275
  id: '_loading',
268
276
  type: 'loader',
269
277
  disabled: true,
270
278
  centered: true,
271
279
  hideCheckbox: true,
272
280
  label: 'loading'
273
- }] : []).concat((0, _toConsumableArray2.default)(hasAll ? [{
281
+ }] : []), (0, _toConsumableArray2.default)(hasAll ? [{
274
282
  id: '_all',
275
283
  iconAll: iconAll,
276
284
  label: translations.all,
@@ -334,7 +342,8 @@ HiNestedSelectContent.defaultProps = {
334
342
  search: 'Search',
335
343
  n_children: '%s',
336
344
  one_child: '%s item'
337
- }
345
+ },
346
+ filterFunc: filterValue
338
347
  };
339
348
  HiNestedSelectContent.propTypes = process.env.NODE_ENV !== "production" ? {
340
349
  /**
@@ -347,6 +356,11 @@ HiNestedSelectContent.propTypes = process.env.NODE_ENV !== "production" ? {
347
356
  */
348
357
  disabledParent: _propTypes.default.bool,
349
358
 
359
+ /*
360
+ * Fonction de filtrage custom
361
+ */
362
+ filterFunc: _propTypes.default.func,
363
+
350
364
  /**
351
365
  * Affiche l'élément 'All'
352
366
  */
@@ -110,6 +110,12 @@ var styles = function styles(theme) {
110
110
  }
111
111
  };
112
112
  };
113
+
114
+ exports.styles = styles;
115
+
116
+ function filterValue(item, search) {
117
+ return search === '' || (0, _helpers.foldAccents)(item.label.toString().toLowerCase()).search((0, _helpers.foldAccents)(search.toLowerCase())) !== -1;
118
+ }
113
119
  /**
114
120
  *
115
121
  * Utilisé pour tous types de selects dans les formulaires.
@@ -126,8 +132,6 @@ var styles = function styles(theme) {
126
132
  */
127
133
 
128
134
 
129
- exports.styles = styles;
130
-
131
135
  var HiSelect =
132
136
  /*#__PURE__*/
133
137
  function (_React$PureComponent) {
@@ -144,22 +148,22 @@ function (_React$PureComponent) {
144
148
  var search = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
145
149
  var loading = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
146
150
  // build item list
147
- var itemList = (0, _toConsumableArray2.default)(loading ? [{
151
+ var itemList = [].concat((0, _toConsumableArray2.default)(loading ? [{
148
152
  id: '_loading',
149
153
  type: 'loader',
150
154
  disabled: true,
151
155
  centered: true,
152
156
  hideCheckbox: true,
153
157
  label: 'loading'
154
- }] : []).concat((0, _toConsumableArray2.default)(search !== '' ? (0, _toConsumableArray2.default)(options.filter(function (item) {
155
- return item.label && (0, _helpers.foldAccents)(item.label.toString().toLowerCase()).search((0, _helpers.foldAccents)(search.toLowerCase())) !== -1;
156
- })) : (0, _toConsumableArray2.default)(_this.props.hasAll ? [(0, _extends2.default)({
158
+ }] : []), (0, _toConsumableArray2.default)(search !== '' ? (0, _toConsumableArray2.default)(options.filter(function (item) {
159
+ return _this.props.filterFunc(item, search);
160
+ })) : [].concat((0, _toConsumableArray2.default)(_this.props.hasAll ? [(0, _extends2.default)({
157
161
  id: '_all',
158
162
  label: _this.props.translations.all
159
163
  }, _this.props.iconAll && {
160
164
  type: 'icon',
161
165
  icon: _this.props.iconAll
162
- })] : []).concat((0, _toConsumableArray2.default)(options))));
166
+ })] : []), (0, _toConsumableArray2.default)(options))));
163
167
  return {
164
168
  itemList: itemList,
165
169
  inputValue: _this.buildInputValue(options, value, loading)
@@ -458,7 +462,7 @@ function (_React$PureComponent) {
458
462
  return id !== item.id;
459
463
  }), item);
460
464
  } else {
461
- onChange(event, (0, _toConsumableArray2.default)(value).concat([item.id]), item);
465
+ onChange(event, [].concat((0, _toConsumableArray2.default)(value), [item.id]), item);
462
466
  }
463
467
  };
464
468
 
@@ -484,13 +488,13 @@ function (_React$PureComponent) {
484
488
  });
485
489
  } else {
486
490
  _this.setState({
487
- suggestions: (0, _toConsumableArray2.default)(hasAll ? [(0, _extends2.default)({
491
+ suggestions: [].concat((0, _toConsumableArray2.default)(hasAll ? [(0, _extends2.default)({
488
492
  id: '_all',
489
493
  label: translations.all
490
494
  }, iconAll && {
491
495
  type: 'icon',
492
496
  icon: iconAll
493
- })] : []).concat((0, _toConsumableArray2.default)(suggestions))
497
+ })] : []), (0, _toConsumableArray2.default)(suggestions))
494
498
  });
495
499
  }
496
500
  };
@@ -522,11 +526,12 @@ function (_React$PureComponent) {
522
526
  suggestions: props.options,
523
527
  openDown: true
524
528
  };
529
+ _this.handleBlur = _this.handleBlur.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
525
530
  _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
526
531
  _this.handleClose = _this.handleClose.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
527
532
  _this.handleClickAway = _this.handleClickAway.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
528
533
  _this.handleFocus = _this.handleFocus.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
529
- _this.handleBlur = _this.handleBlur.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
534
+ _this.handleKeyDownInput = _this.handleKeyDownInput.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
530
535
  _this.handleSearch = _this.handleSearch.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
531
536
  _this.handleSearchReset = _this.handleSearchReset.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
532
537
  _this.handleSelect = _this.handleSelect.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
@@ -751,7 +756,8 @@ HiSelect.defaultProps = {
751
756
  n_children: '%s items',
752
757
  one_child: '%s item'
753
758
  },
754
- type: 'text'
759
+ type: 'text',
760
+ filterFunc: filterValue
755
761
  };
756
762
  HiSelect.propTypes = process.env.NODE_ENV !== "production" ? {
757
763
  align: _propTypes.default.oneOf(['left', 'right']),
@@ -786,6 +792,11 @@ HiSelect.propTypes = process.env.NODE_ENV !== "production" ? {
786
792
  */
787
793
  fallbackImage: _propTypes.default.string,
788
794
 
795
+ /*
796
+ * Fonction de filtrage custom
797
+ */
798
+ filterFunc: _propTypes.default.func,
799
+
789
800
  /**
790
801
  * Affiche l'élément 'All'
791
802
  */