@hipay/hipay-material-ui 2.0.0-beta.50 → 2.0.0-beta.51

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.
@@ -26,7 +26,6 @@ var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
26
26
  var styles = function styles() {
27
27
  return {
28
28
  rightEllipsisSpan: {
29
- display: 'inline-block',
30
29
  overflow: 'hidden',
31
30
  textOverflow: 'ellipsis',
32
31
  whiteSpace: 'pre',
package/HiForm/HiInput.js CHANGED
@@ -196,12 +196,8 @@ function (_React$PureComponent) {
196
196
  }, {
197
197
  key: "handleChange",
198
198
  value: function handleChange(event) {
199
- var authorizedChar = '1234567890TOto<>';
200
-
201
199
  if (this.props.onChange) {
202
- if (authorizedChar.indexOf(event.target.value.charAt(event.target.value.length - 1)) >= 0 && this.props.onlyNumbers === true || this.props.onlyNumbers !== true) {
203
- this.props.onChange(event);
204
- }
200
+ this.props.onChange(event);
205
201
  }
206
202
  }
207
203
  }, {
@@ -0,0 +1,472 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.getRecursiveFinalItemIdList = getRecursiveFinalItemIdList;
9
+ exports.findFinalItemRecursively = findFinalItemRecursively;
10
+ exports.default = exports.styles = void 0;
11
+
12
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
22
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
+
24
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
25
+
26
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
27
+
28
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
29
+
30
+ var _react = _interopRequireDefault(require("react"));
31
+
32
+ var _propTypes = _interopRequireDefault(require("prop-types"));
33
+
34
+ var _HiSelectContent = _interopRequireDefault(require("./HiSelectContent"));
35
+
36
+ var _HiIcon = _interopRequireDefault(require("../HiIcon"));
37
+
38
+ var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
39
+
40
+ var _helpers = require("../utils/helpers");
41
+
42
+ // @inheritedComponent HiSelectContent
43
+
44
+ /**
45
+ * Return array of final item id in nested list (via props chlidren)
46
+ * @param itemList
47
+ * @param finalItemIdList
48
+ * @returns {*[]}
49
+ */
50
+ function getRecursiveFinalItemIdList(itemList) {
51
+ var finalItemIdList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
52
+ return (0, _toConsumableArray2.default)(finalItemIdList).concat((0, _toConsumableArray2.default)(itemList.reduce(function (memo, item) {
53
+ if (item.children) {
54
+ return getRecursiveFinalItemIdList(item.children, memo);
55
+ }
56
+
57
+ return (0, _toConsumableArray2.default)(memo).concat([item.id]);
58
+ }, [])));
59
+ }
60
+ /**
61
+ * Find item by id in nested list (via props children)
62
+ * @param itemList
63
+ * @param searchId
64
+ * @returns {boolean}
65
+ */
66
+
67
+
68
+ function findFinalItemRecursively(itemList, searchId) {
69
+ var foundItem = false;
70
+ itemList.some(function (item) {
71
+ if (item.id === searchId) {
72
+ foundItem = item;
73
+ } else if (item.children && !foundItem) {
74
+ foundItem = findFinalItemRecursively(item.children, searchId);
75
+ }
76
+
77
+ return foundItem !== false;
78
+ });
79
+ return foundItem;
80
+ }
81
+ /**
82
+ * Build item list by settings item props relative to the nested parent/child situation
83
+ * Reduce the item list to build specified items (displayed, pinned, disabled, selected, indeterminate)
84
+ * Parent item is selected if each children item is include in selectedItemIdList (s stay to true)
85
+ * Parent item is indeterminate if it is not selected & not unselected (s goes false & u goes false)
86
+ *
87
+ * @param itemList - initial list of item
88
+ * @param selectedItemIdList - global list of selected id
89
+ * @param searchValue - search value on which filter item
90
+ * @param visibleParent - visibility of the list parent item (default false)
91
+ * @param pinnedParent - parent will be displayed as pinned items
92
+ * @param disabledParent - parent will not be selectable
93
+ * @param nbChildrenAsInfo - Show children number as info
94
+ * @param translations - Translations
95
+ * @returns {*}
96
+ */
97
+
98
+
99
+ function buildFilteredItemList(itemList) {
100
+ var selectedItemIdList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
101
+ var searchValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
102
+ var visibleParent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
103
+ var pinnedParent = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
104
+ var disabledParent = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
105
+ var nbChildrenAsInfo = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
106
+ var translations = arguments.length > 7 ? arguments[7] : undefined;
107
+ return itemList.reduce(function (_ref, item) {
108
+ var memoItemList = _ref.l,
109
+ memoSelected = _ref.s,
110
+ memoUnselected = _ref.u,
111
+ memoVisible = _ref.v;
112
+ var itemVisible = searchValue === '' || (0, _helpers.foldAccents)(item.label.toString().toLowerCase()).search((0, _helpers.foldAccents)(searchValue.toLowerCase())) !== -1; // Parent item
113
+
114
+ if (item.children) {
115
+ var _buildFilteredItemLis = buildFilteredItemList(item.children, selectedItemIdList, searchValue, itemVisible, pinnedParent, disabledParent),
116
+ customizedChildren = _buildFilteredItemLis.l,
117
+ selected = _buildFilteredItemLis.s,
118
+ unselected = _buildFilteredItemLis.u,
119
+ visible = _buildFilteredItemLis.v;
120
+
121
+ if (nbChildrenAsInfo) {
122
+ item.info = translations.n_children.replace('%s', item.children.length);
123
+ }
124
+
125
+ return {
126
+ l: (0, _toConsumableArray2.default)(memoItemList).concat([(0, _extends2.default)({}, item, disabledParent && {
127
+ disabled: true,
128
+ hideCheckbox: true // don't display checkbox on disabled parent
129
+
130
+ }, {
131
+ pinned: pinnedParent,
132
+ children: customizedChildren,
133
+ selected: selected,
134
+ indeterminate: !selected && !unselected,
135
+ displayed: itemVisible || visible
136
+ })]),
137
+ s: memoSelected && selected,
138
+ u: memoUnselected && unselected,
139
+ v: memoVisible || itemVisible || visible
140
+ };
141
+ }
142
+
143
+ var itemSelected = selectedItemIdList.includes(item.id);
144
+ return {
145
+ l: (0, _toConsumableArray2.default)(memoItemList).concat([(0, _extends2.default)({
146
+ displayed: itemVisible || visibleParent
147
+ }, item)]),
148
+ s: itemSelected && memoSelected,
149
+ u: !itemSelected && memoUnselected,
150
+ v: itemVisible || visibleParent || memoVisible
151
+ };
152
+ }, {
153
+ l: [],
154
+ s: true,
155
+ u: true,
156
+ v: visibleParent
157
+ });
158
+ }
159
+
160
+ var styles = function styles(theme) {
161
+ return {
162
+ root: {
163
+ backgroundColor: theme.palette.background2,
164
+ maxWidth: 500,
165
+ width: '100%',
166
+ position: 'relative'
167
+ },
168
+ popper: {
169
+ // width: '100%',
170
+ zIndex: 1200
171
+ },
172
+ paper: {
173
+ borderRadius: '0px 2px',
174
+ maxHeight: 480,
175
+ transition: 'none !important'
176
+ },
177
+ labelImg: {
178
+ height: 18,
179
+ width: 'auto',
180
+ margin: '0 4px',
181
+ verticalAlign: 'middle'
182
+ },
183
+ selectIconLabel: (0, _extends2.default)({
184
+ whiteSpace: 'nowrap',
185
+ overflow: 'hidden',
186
+ textOverflow: 'ellipsis',
187
+ paddingRight: 16
188
+ }, theme.typography.b1, {
189
+ display: 'inline-flex',
190
+ width: '100%'
191
+ }),
192
+ selectImgLabel: (0, _extends2.default)({
193
+ whiteSpace: 'nowrap',
194
+ overflow: 'hidden',
195
+ textOverflow: 'ellipsis',
196
+ paddingRight: 16
197
+ }, theme.typography.b1, {
198
+ display: 'inline-flex',
199
+ width: '100%'
200
+ })
201
+ };
202
+ };
203
+ /**
204
+ * HiNestedSelectContent hérite du composant HiSelectContent
205
+ *
206
+ * Sa fonction buildSelectProps construit la liste des options selon le comportement d'un object nested
207
+ * (association parent/child via la prop children). Le composant accepte des props spécifique à cet utilisation,
208
+ * comme disableParent ou pinnedParent. Uniquement les ids des enfants finaux (n'ayant pas d'enfants) sont considérés.
209
+ * Comportement:
210
+ * - si un parent est sélectionné, on ajoute tous ses enfants dans la liste des éléments sélectionné (mais pas le parent)
211
+ * - si tous les enfants sont sélectionnés, le parent est affiché "selected".
212
+ * - si une partie des enfants sont sélectionné, le parent est affiché "indeterminate".
213
+ * - si aucun enfant n'est sélectionné, le parent est affiché "unselected".
214
+ */
215
+
216
+
217
+ exports.styles = styles;
218
+
219
+ var HiNestedSelectContent =
220
+ /*#__PURE__*/
221
+ function (_React$PureComponent) {
222
+ (0, _inherits2.default)(HiNestedSelectContent, _React$PureComponent);
223
+
224
+ function HiNestedSelectContent(props) {
225
+ var _this;
226
+
227
+ (0, _classCallCheck2.default)(this, HiNestedSelectContent);
228
+ _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(HiNestedSelectContent).call(this, props));
229
+
230
+ _this.handleSelect = function (event, item) {
231
+ var _this$props = _this.props,
232
+ hasAll = _this$props.hasAll,
233
+ multiple = _this$props.multiple,
234
+ onChange = _this$props.onChange,
235
+ options = _this$props.options,
236
+ value = _this$props.value;
237
+
238
+ if (!multiple) {
239
+ // single value
240
+ onChange(event, item.id, item);
241
+ } else if (hasAll && item.id === '_all') {
242
+ // ALL
243
+ var selectableItemIdList = getRecursiveFinalItemIdList(options);
244
+
245
+ if (value.length === selectableItemIdList.length) {
246
+ // unselect _all options
247
+ onChange(event, [], item);
248
+ } else {
249
+ // select _all options
250
+ onChange(event, selectableItemIdList, item);
251
+ }
252
+ } else if (item.children) {
253
+ // PARENT
254
+ var parentSelectableItemIdList = getRecursiveFinalItemIdList(item.children); // deselect parent if every selectable child id is includes in value.
255
+
256
+ if (parentSelectableItemIdList.every(function (pid) {
257
+ return value.includes(pid);
258
+ })) {
259
+ onChange(event, value.filter(function (vid) {
260
+ return !parentSelectableItemIdList.includes(vid);
261
+ }), item);
262
+ } else {
263
+ // select parent > add each selectable child without duplicates.
264
+ onChange(event, (0, _toConsumableArray2.default)(value.filter(function (vid) {
265
+ return !parentSelectableItemIdList.includes(vid);
266
+ })).concat((0, _toConsumableArray2.default)(parentSelectableItemIdList)), item);
267
+ }
268
+ } else if (value.includes(item.id)) {
269
+ // unselect item
270
+ onChange(event, value.filter(function (id) {
271
+ return id !== item.id;
272
+ }), item);
273
+ } else {
274
+ onChange(event, (0, _toConsumableArray2.default)(value).concat([item.id]), item);
275
+ }
276
+ };
277
+
278
+ _this.buildSelectProps = function (options) {
279
+ var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
280
+ var search = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
281
+ var loading = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
282
+ var _this$props2 = _this.props,
283
+ classes = _this$props2.classes,
284
+ disabledParent = _this$props2.disabledParent,
285
+ hasAll = _this$props2.hasAll,
286
+ iconAll = _this$props2.iconAll,
287
+ multiple = _this$props2.multiple,
288
+ nbChildrenAsInfo = _this$props2.nbChildrenAsInfo,
289
+ pinnedParent = _this$props2.pinnedParent,
290
+ translations = _this$props2.translations; // build item list
291
+
292
+ var _buildFilteredItemLis2 = buildFilteredItemList(options, value, search, false, pinnedParent, disabledParent || !multiple, nbChildrenAsInfo, translations),
293
+ filteredItemList = _buildFilteredItemLis2.l,
294
+ allSelected = _buildFilteredItemLis2.s,
295
+ allUnselected = _buildFilteredItemLis2.u,
296
+ visible = _buildFilteredItemLis2.v;
297
+
298
+ var itemList = !visible ? (0, _toConsumableArray2.default)(loading ? [{
299
+ id: '_loading',
300
+ type: 'loader',
301
+ disabled: true,
302
+ centered: true,
303
+ hideCheckbox: true,
304
+ label: 'loading'
305
+ }] : [{
306
+ id: '_no_result',
307
+ type: 'text',
308
+ disabled: true,
309
+ centered: true,
310
+ hideCheckbox: true,
311
+ label: translations.no_result_match
312
+ }]) : (0, _toConsumableArray2.default)(loading ? [{
313
+ id: '_loading',
314
+ type: 'loader',
315
+ disabled: true,
316
+ centered: true,
317
+ hideCheckbox: true,
318
+ label: 'loading'
319
+ }] : []).concat((0, _toConsumableArray2.default)(hasAll ? [{
320
+ id: '_all',
321
+ iconAll: iconAll,
322
+ label: translations.all,
323
+ selected: allSelected,
324
+ indeterminate: !allSelected && !allUnselected,
325
+ displayed: search === ''
326
+ }] : []), (0, _toConsumableArray2.default)(filteredItemList));
327
+ return {
328
+ itemList: itemList
329
+ };
330
+ };
331
+
332
+ _this.handleSelect = _this.handleSelect.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
333
+ return _this;
334
+ }
335
+ /**
336
+ * Call onChange with the updated value
337
+ *
338
+ * - handle single value
339
+ * - handle multiple value
340
+ * - handle '_all' id
341
+ *
342
+ * @param event
343
+ * @param item
344
+ */
345
+
346
+
347
+ (0, _createClass2.default)(HiNestedSelectContent, [{
348
+ key: "render",
349
+ value: function render() {
350
+ var _this$props3 = this.props,
351
+ hasAll = _this$props3.hasAll,
352
+ hiSelectableListProps = _this$props3.hiSelectableListProps,
353
+ multiple = _this$props3.multiple,
354
+ options = _this$props3.options,
355
+ searchable = _this$props3.searchable,
356
+ translations = _this$props3.translations,
357
+ value = _this$props3.value,
358
+ other = (0, _objectWithoutProperties2.default)(_this$props3, ["hasAll", "hiSelectableListProps", "multiple", "options", "searchable", "translations", "value"]);
359
+
360
+ if (multiple) {
361
+ if (!Array.isArray(value)) {
362
+ throw new Error('HiPay Material-UI: the `value` property must be an array ' + 'when using the `HiSelect` component with `multiple`.');
363
+ }
364
+ }
365
+
366
+ return _react.default.createElement(_HiSelectContent.default, (0, _extends2.default)({
367
+ buildSelectProps: this.buildSelectProps,
368
+ hasAll: hasAll,
369
+ hiSelectableListProps: (0, _extends2.default)({
370
+ onSelect: this.handleSelect
371
+ }, hiSelectableListProps),
372
+ multiple: multiple,
373
+ options: options,
374
+ searchable: searchable,
375
+ translations: translations,
376
+ value: value
377
+ }, other));
378
+ }
379
+ }]);
380
+ return HiNestedSelectContent;
381
+ }(_react.default.PureComponent);
382
+
383
+ HiNestedSelectContent.defaultProps = {
384
+ disabledParent: false,
385
+ hasAll: false,
386
+ multiple: false,
387
+ pinnedParent: false,
388
+ searchable: false,
389
+ translations: {
390
+ all: 'All',
391
+ no_result_match: 'No result match',
392
+ search: 'Search',
393
+ n_children: '%s',
394
+ one_child: '%s item'
395
+ }
396
+ };
397
+ HiNestedSelectContent.propTypes = process.env.NODE_ENV !== "production" ? {
398
+ /**
399
+ * Useful to extend the style applied to components.
400
+ */
401
+ classes: _propTypes.default.object,
402
+
403
+ /**
404
+ * Parent items are not selectable
405
+ */
406
+ disabledParent: _propTypes.default.bool,
407
+
408
+ /**
409
+ * Affiche l'élément 'All'
410
+ */
411
+ hasAll: _propTypes.default.bool,
412
+
413
+ /**
414
+ * id du select
415
+ */
416
+ id: _propTypes.default.string,
417
+
418
+ /**
419
+ * Ajoute un loader
420
+ */
421
+ loading: _propTypes.default.bool,
422
+
423
+ /**
424
+ * Autorise la sélection de plusieurs valeurs
425
+ */
426
+ multiple: _propTypes.default.bool,
427
+
428
+ /**
429
+ * Définit si l'on doit afficher le nombre d'enfants du parent dans son champ info
430
+ */
431
+ nbChildrenAsInfo: _propTypes.default.bool,
432
+
433
+ /**
434
+ * Fonction de callback qui renvoit la/les valeurs sélectionnées
435
+ *
436
+ * @param {object} event
437
+ * @param {string || array} value
438
+ */
439
+ onChange: _propTypes.default.func.isRequired,
440
+
441
+ /**
442
+ * Listes des options du select
443
+ */
444
+ options: _propTypes.default.array.isRequired,
445
+
446
+ /**
447
+ * Parent items are pinned, with sticky behavior (hide checkboxes but still selectable)
448
+ */
449
+ pinnedParent: _propTypes.default.bool,
450
+
451
+ /**
452
+ * Affiche un input de recherche permettant de filtrer les options
453
+ */
454
+ searchable: _propTypes.default.bool,
455
+
456
+ /**
457
+ * Traductions (par défaut en anglais)
458
+ */
459
+ translations: _propTypes.default.object,
460
+
461
+ /**
462
+ * Value(s) du select
463
+ */
464
+ value: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string, _propTypes.default.array])
465
+ } : {};
466
+
467
+ var _default = (0, _withStyles.default)(styles, {
468
+ hiComponent: true,
469
+ name: 'HmuiHiNestedSelectContent'
470
+ })(HiNestedSelectContent);
471
+
472
+ exports.default = _default;