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

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