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

Sign up to get free protection for your applications and to get access to all the features.
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
  */