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

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