@hipay/hipay-material-ui 1.0.0-beta.19 → 1.0.0-beta.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. package/HiChip/HiChip.js +12 -2
  2. package/HiDatePicker/HiDateRangePicker.js +1 -1
  3. package/HiDatePicker/HiDateRangeSelector.js +5 -4
  4. package/HiDatePicker/stylesheet.js +4 -0
  5. package/HiForm/HiAddressField.js +32 -49
  6. package/HiForm/HiInput.js +11 -6
  7. package/HiForm/HiUpload.js +280 -0
  8. package/HiForm/HiUploadField.js +456 -0
  9. package/HiForm/index.js +18 -0
  10. package/HiMap/HiMap.js +367 -0
  11. package/HiMap/HiMapExpand.js +217 -0
  12. package/HiMap/index.js +25 -0
  13. package/HiSelect/HiSelect.js +1 -1
  14. package/HiTable/BodyCellBuilder.js +1 -1
  15. package/HiTable/BodyCells/CellCountry.js +1 -1
  16. package/HiTable/BodyCells/CellImage.js +6 -6
  17. package/HiTable/BodyCells/CellLayout.js +1 -1
  18. package/HiTable/HeaderCell.js +5 -4
  19. package/HiTable/HiTableFooter.js +2 -1
  20. package/HiTopBar/HiTopBar.js +6 -4
  21. package/es/HiChip/HiChip.js +11 -2
  22. package/es/HiDatePicker/HiDateRangePicker.js +1 -1
  23. package/es/HiDatePicker/HiDateRangeSelector.js +5 -4
  24. package/es/HiDatePicker/stylesheet.js +4 -0
  25. package/es/HiForm/HiAddressField.js +30 -45
  26. package/es/HiForm/HiInput.js +10 -5
  27. package/es/HiForm/HiUpload.js +194 -0
  28. package/es/HiForm/HiUploadField.js +368 -0
  29. package/es/HiForm/index.js +2 -0
  30. package/es/HiMap/HiMap.js +285 -0
  31. package/es/HiMap/HiMapExpand.js +145 -0
  32. package/es/HiMap/index.js +2 -0
  33. package/es/HiSelect/HiSelect.js +1 -1
  34. package/es/HiTable/BodyCellBuilder.js +1 -1
  35. package/es/HiTable/BodyCells/CellCountry.js +1 -1
  36. package/es/HiTable/BodyCells/CellImage.js +6 -6
  37. package/es/HiTable/BodyCells/CellLayout.js +1 -1
  38. package/es/HiTable/HeaderCell.js +5 -3
  39. package/es/HiTable/HiTableFooter.js +2 -1
  40. package/es/HiTopBar/HiTopBar.js +6 -4
  41. package/es/styles/createHiMuiTheme.js +2 -0
  42. package/hmu/images/map_marker.svg +8 -0
  43. package/index.es.js +1 -1
  44. package/index.js +1 -1
  45. package/package.json +44 -42
  46. package/styles/createHiMuiTheme.js +2 -0
  47. package/umd/hipay-material-ui.development.js +58049 -14511
  48. package/umd/hipay-material-ui.production.min.js +5 -5
@@ -0,0 +1,456 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.styles = undefined;
7
+
8
+ var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
9
+
10
+ var _defineProperty3 = _interopRequireDefault(_defineProperty2);
11
+
12
+ var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
13
+
14
+ var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
15
+
16
+ var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
17
+
18
+ var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
19
+
20
+ var _createClass2 = require('babel-runtime/helpers/createClass');
21
+
22
+ var _createClass3 = _interopRequireDefault(_createClass2);
23
+
24
+ var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
25
+
26
+ var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
27
+
28
+ var _inherits2 = require('babel-runtime/helpers/inherits');
29
+
30
+ var _inherits3 = _interopRequireDefault(_inherits2);
31
+
32
+ var _extends2 = require('babel-runtime/helpers/extends');
33
+
34
+ var _extends3 = _interopRequireDefault(_extends2);
35
+
36
+ var _react = require('react');
37
+
38
+ var _react2 = _interopRequireDefault(_react);
39
+
40
+ var _propTypes = require('prop-types');
41
+
42
+ var _propTypes2 = _interopRequireDefault(_propTypes);
43
+
44
+ var _classnames = require('classnames');
45
+
46
+ var _classnames2 = _interopRequireDefault(_classnames);
47
+
48
+ var _withStyles = require('../styles/withStyles');
49
+
50
+ var _withStyles2 = _interopRequireDefault(_withStyles);
51
+
52
+ var _HiIconBuilder = require('../utils/HiIconBuilder');
53
+
54
+ var _HiIconBuilder2 = _interopRequireDefault(_HiIconBuilder);
55
+
56
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
57
+
58
+ var styles = exports.styles = function styles(theme) {
59
+ return {
60
+ root: (0, _extends3.default)({
61
+ position: 'relative'
62
+ }, theme.typography.body1, {
63
+ borderBottom: '1px solid ' + theme.palette.input.bottomLine,
64
+ paddingLeft: 8,
65
+ backgroundColor: theme.palette.local.background2,
66
+ height: 40,
67
+ display: 'inline-flex',
68
+ justifyContent: 'flex-start',
69
+ '&$focused, &$dragOver': {
70
+ backgroundColor: theme.palette.global.background1
71
+ },
72
+ width: '100%',
73
+ // Ajout d'1px pour ne pas avoir de décalage en mode error avec le border top
74
+ '&:not($error)': {
75
+ marginTop: 1
76
+ }
77
+ }),
78
+ underline: {
79
+ '&:before': {
80
+ left: 0,
81
+ bottom: 0,
82
+ // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
83
+ content: '""',
84
+ height: 1,
85
+ position: 'absolute',
86
+ right: 0,
87
+ transition: theme.transitions.create('background-color', {
88
+ duration: theme.transitions.duration.shorter,
89
+ easing: theme.transitions.easing.ease
90
+ }),
91
+ pointerEvents: 'none' // Transparent to the hover style.
92
+ },
93
+ '&:hover:not($disabled):before': {
94
+ backgroundColor: theme.palette.input.bottomLine,
95
+ height: 2
96
+ },
97
+ '&$disabled:before': {
98
+ background: 'transparent',
99
+ backgroundImage: 'linear-gradient(to right, ' + theme.palette.input.bottomLine + ' 33%, transparent 0%)',
100
+ backgroundPosition: 'left top',
101
+ backgroundRepeat: 'repeat-x',
102
+ backgroundSize: '5px 1px'
103
+ }
104
+ },
105
+ inkbar: {
106
+ '&:not($disabled)': {
107
+ '&:not($error):after': {
108
+ backgroundColor: theme.palette.business.primary.normal,
109
+ left: 0,
110
+ bottom: 0,
111
+ // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
112
+ content: '""',
113
+ height: 1,
114
+ position: 'absolute',
115
+ right: 0,
116
+ transform: 'scaleX(0)',
117
+ transition: theme.transitions.create('transform', {
118
+ duration: theme.transitions.duration.shorter,
119
+ easing: theme.transitions.easing.easeOut
120
+ }),
121
+ pointerEvents: 'none' // Transparent to the hover style.
122
+ },
123
+ '&:hover:after': {
124
+ transform: 'scaleX(1)'
125
+ },
126
+ '&$dragOver:after': {
127
+ transform: 'scaleX(1)'
128
+ },
129
+ '&$focused:after': {
130
+ transform: 'scaleX(1)'
131
+ },
132
+ '&$error': {
133
+ borderBottom: '1px solid ' + theme.palette.negative.normal
134
+ }
135
+ }
136
+ },
137
+ disabled: {
138
+ color: '' + theme.palette.action.disabled,
139
+ '&:before': {
140
+ display: 'none'
141
+ }
142
+ },
143
+ focused: {
144
+ backgroundColor: theme.palette.background3
145
+ },
146
+ error: {},
147
+ label: (0, _extends3.default)({}, theme.typography.body1, {
148
+ fontWeight: theme.typography.fontWeightRegular,
149
+ caretColor: theme.palette.business.primary.normal,
150
+ alignItems: 'center',
151
+ whiteSpace: 'nowrap',
152
+ overflow: 'hidden',
153
+ textOverflow: 'ellipsis',
154
+ padding: theme.spacing.unit - 2 + 'px 0 ' + (theme.spacing.unit - 1) + 'px',
155
+ height: 39,
156
+ display: 'inline-flex',
157
+ width: '100%',
158
+ '&$empty': {
159
+ opacity: 0.42
160
+ }
161
+ }),
162
+ empty: {},
163
+ dragOver: {},
164
+ droppable: {},
165
+ endAdornment: {
166
+ display: 'flex',
167
+ alignItems: 'center'
168
+ },
169
+ icon: {
170
+ display: 'inline-flex',
171
+ alignItems: 'center',
172
+ right: 0,
173
+ padding: '8px',
174
+ color: '' + theme.palette.text.icon,
175
+ transition: theme.transitions.create(['opacity', 'transform'], {
176
+ duration: theme.transitions.duration.shorter
177
+ }),
178
+ '&:hover': {
179
+ color: 'inherit'
180
+ }
181
+ }
182
+ };
183
+ };
184
+
185
+ var HiUploadField = function (_React$PureComponent) {
186
+ (0, _inherits3.default)(HiUploadField, _React$PureComponent);
187
+
188
+ function HiUploadField(props) {
189
+ (0, _classCallCheck3.default)(this, HiUploadField);
190
+
191
+ var _this = (0, _possibleConstructorReturn3.default)(this, (HiUploadField.__proto__ || (0, _getPrototypeOf2.default)(HiUploadField)).call(this, props));
192
+
193
+ _this.state = {
194
+ errorMessage: '',
195
+ dragOver: false,
196
+ droppable: false
197
+ };
198
+ _this.uploadFieldRef;
199
+ _this.handleChange = _this.handleChange.bind(_this);
200
+ _this.handleClear = _this.handleClear.bind(_this);
201
+ _this.handleSeeFile = _this.handleSeeFile.bind(_this);
202
+ _this.handleDrop = _this.handleDrop.bind(_this);
203
+ _this.handleDragEnter = _this.handleDragEnter.bind(_this);
204
+ _this.handleDragLeave = _this.handleDragLeave.bind(_this);
205
+ return _this;
206
+ }
207
+
208
+ // When component mounts, we add eventListeners to handle the file drag and drop
209
+
210
+
211
+ (0, _createClass3.default)(HiUploadField, [{
212
+ key: 'componentDidMount',
213
+ value: function componentDidMount() {
214
+ this.uploadFieldRef.addEventListener('dragenter', this.handleDragEnter, false);
215
+ this.uploadFieldRef.addEventListener('dragleave', this.handleDragLeave, false);
216
+ this.uploadFieldRef.addEventListener('dragover', function (event) {
217
+ event.preventDefault();
218
+ }, false);
219
+ this.uploadFieldRef.addEventListener('drop', this.handleDrop, false);
220
+ }
221
+ }, {
222
+ key: 'componentWillUnmount',
223
+ value: function componentWillUnmount() {
224
+ this.uploadFieldRef.removeEventListener('dragenter', this.handleDragEnter, false);
225
+ this.uploadFieldRef.removeEventListener('dragleave', this.handleDragLeave, false);
226
+ this.uploadFieldRef.removeEventListener('dragover', function (event) {
227
+ event.preventDefault();
228
+ }, false);
229
+ this.uploadFieldRef.removeEventListener('drop', this.handleDrop, false);
230
+ }
231
+
232
+ // Action when files are dropped on the field
233
+
234
+ }, {
235
+ key: 'handleDrop',
236
+ value: function handleDrop(event) {
237
+ if (event.target === this.uploadFieldRef) {
238
+ event.preventDefault();
239
+ event.stopPropagation();
240
+ if (this.state.droppable) {
241
+ var param = this.handleFile(event.dataTransfer.files);
242
+ this.setState({ dragOver: false });
243
+ this.props.onChange(param, this.props.index);
244
+ } else {
245
+ this.setState({
246
+ errorMessage: this.props.translations.errorDropMultiple,
247
+ error: false,
248
+ dragOver: false
249
+ });
250
+ }
251
+ }
252
+ }
253
+
254
+ // Action when files are dragged over the field.
255
+
256
+ }, {
257
+ key: 'handleDragEnter',
258
+ value: function handleDragEnter(event) {
259
+ event.preventDefault();
260
+ event.stopPropagation();
261
+ if (event.target === this.uploadFieldRef) {
262
+ if (event.dataTransfer.items.length !== 1) {
263
+ event.dataTransfer.dropEffect = 'none';
264
+ this.props.onChange({
265
+ errorMessage: this.props.translations.errorDragEnter,
266
+ error: true,
267
+ value: null
268
+ }, this.props.index);
269
+ this.setState({ dragOver: true });
270
+ } else {
271
+ this.setState({ droppable: true, dragOver: true });
272
+ }
273
+ }
274
+ }
275
+
276
+ // Action when files are not dragged over the field anymore.
277
+
278
+ }, {
279
+ key: 'handleDragLeave',
280
+ value: function handleDragLeave(event) {
281
+ event.preventDefault();
282
+ event.stopPropagation();
283
+ if (event.target === this.uploadFieldRef && event.relatedTarget.parentElement !== this.uploadFieldRef) {
284
+ this.props.onChange({ errorMessage: '', error: false, value: null }, this.props.index);
285
+ this.setState({ droppable: false, dragOver: false });
286
+ }
287
+ }
288
+ }, {
289
+ key: 'handleChange',
290
+ value: function handleChange(event) {
291
+ var param = this.handleFile(event.target.files);
292
+ this.props.onChange(param, this.props.index);
293
+ }
294
+ }, {
295
+ key: 'handleClear',
296
+ value: function handleClear() {
297
+ this.props.onClear(this.props.index);
298
+ }
299
+ }, {
300
+ key: 'handleSeeFile',
301
+ value: function handleSeeFile() {
302
+ this.props.onSeeFile(this.props.value);
303
+ }
304
+
305
+ // Handles the file wether it is selected via the input or dropped on it.
306
+
307
+ }, {
308
+ key: 'handleFile',
309
+ value: function handleFile(files) {
310
+ var error = false;
311
+ var errorMessage = '';
312
+ var file = null;
313
+ if (files.length === 1) {
314
+ file = files[0];
315
+ errorMessage = '';
316
+ if (file.size > this.props.maxSize) {
317
+ errorMessage += this.props.translations.errorSize.replace('maxSize', this.props.maxSize / 1000000);
318
+ error = true;
319
+ }
320
+ if (this.props.acceptedTypes.length !== 0 && this.props.acceptedTypes.indexOf(file.type) === -1) {
321
+ errorMessage += this.props.translations.errorType;
322
+ error = true;
323
+ }
324
+ } else {
325
+ errorMessage = this.props.translations.errorDropMultiple;
326
+ }
327
+ return { errorMessage: errorMessage, error: error, value: file };
328
+ }
329
+ }, {
330
+ key: 'render',
331
+ value: function render() {
332
+ var _classNames,
333
+ _this2 = this;
334
+
335
+ var _props = this.props,
336
+ placeholder = _props.placeholder,
337
+ classes = _props.classes,
338
+ disabled = _props.disabled,
339
+ focused = _props.focused,
340
+ value = _props.value,
341
+ error = _props.error;
342
+ var _state = this.state,
343
+ dragOver = _state.dragOver,
344
+ errorMessage = _state.errorMessage,
345
+ droppable = _state.droppable;
346
+
347
+ // On utilise classNames pour variabiliser les styles et merger les classes appliquées
348
+
349
+ var rootClass = (0, _classnames2.default)(classes.root, classes.inkbar, classes.underline, (_classNames = {}, (0, _defineProperty3.default)(_classNames, classes.disabled, disabled), (0, _defineProperty3.default)(_classNames, classes.focused, focused), (0, _defineProperty3.default)(_classNames, classes.error, error && !focused), (0, _defineProperty3.default)(_classNames, classes.dragOver, dragOver), (0, _defineProperty3.default)(_classNames, classes.droppable, droppable), _classNames));
350
+
351
+ return _react2.default.createElement(
352
+ 'div',
353
+ { className: rootClass },
354
+ _react2.default.createElement(
355
+ 'label',
356
+ {
357
+ className: (0, _classnames2.default)(classes.label, (0, _defineProperty3.default)({}, classes.empty, value === null)),
358
+ ref: function ref(label) {
359
+ return _this2.uploadFieldRef = label;
360
+ }
361
+ },
362
+ value ? value.name : error && errorMessage || placeholder,
363
+ _react2.default.createElement('input', { type: 'file', hidden: true, onChange: this.handleChange })
364
+ ),
365
+ value === null || _react2.default.createElement(
366
+ 'div',
367
+ { className: classes.endAdornment },
368
+ _react2.default.createElement(_HiIconBuilder2.default, {
369
+ icon: 'eye',
370
+ size: 36,
371
+ className: classes.icon,
372
+ onClick: this.handleSeeFile
373
+ }),
374
+ _react2.default.createElement(_HiIconBuilder2.default, {
375
+ icon: 'delete',
376
+ size: 36,
377
+ className: classes.icon,
378
+ onClick: this.handleClear
379
+ })
380
+ )
381
+ );
382
+ }
383
+ }]);
384
+ return HiUploadField;
385
+ }(_react2.default.PureComponent);
386
+
387
+ HiUploadField.defaultProps = {
388
+ placeholder: 'Choose a file',
389
+ disabled: false,
390
+ focused: false,
391
+ acceptedTypes: [],
392
+ maxSize: 10000000,
393
+ error: false,
394
+ value: null,
395
+ translations: {
396
+ errorSize: "Votre fichier est trop lourd. Nous acceptons jusqu'à maxSizeMo",
397
+ errorDropMultiple: 'Veuillez insérer un et un seul fichier',
398
+ errorType: "Ce type de fichier n'est pas accepté",
399
+ errorDragEnter: 'Contenu non correct'
400
+ }
401
+ };
402
+ HiUploadField.propTypes = process.env.NODE_ENV !== "production" ? {
403
+ /**
404
+ * Defines what kind of file types the input accepts. If empty, no restrictions about the file type.
405
+ */
406
+ acceptedTypes: _propTypes2.default.array,
407
+ /**
408
+ * Useful to extend the style applied to components.
409
+ */
410
+ classes: _propTypes2.default.object,
411
+ /**
412
+ * Is the field disabled.
413
+ */
414
+ disabled: _propTypes2.default.bool,
415
+ /**
416
+ * Is there an error with the file selected.
417
+ */
418
+ error: _propTypes2.default.bool,
419
+ /**
420
+ * Is the field focused.
421
+ */
422
+ focused: _propTypes2.default.bool,
423
+ /**
424
+ * The index of the input.
425
+ */
426
+ index: _propTypes2.default.number,
427
+ /**
428
+ * Defines what size the file must not exceed (in bytes).
429
+ */
430
+ maxSize: _propTypes2.default.number,
431
+ /**
432
+ * The change handler.
433
+ */
434
+ onChange: _propTypes2.default.func,
435
+ /**
436
+ * The handler to clear the field.
437
+ */
438
+ onClear: _propTypes2.default.func,
439
+ /**
440
+ * The handler to see the file.
441
+ */
442
+ onSeeFile: _propTypes2.default.func,
443
+ /**
444
+ * The placeholder for the field.
445
+ */
446
+ placeholder: _propTypes2.default.string,
447
+ /**
448
+ * The translations of the error messages.
449
+ */
450
+ translations: _propTypes2.default.object,
451
+ /**
452
+ * The file value for the field.
453
+ */
454
+ value: _propTypes2.default.object
455
+ } : {};
456
+ exports.default = (0, _withStyles2.default)(styles, { name: 'HmuiHiUploadField' })(HiUploadField);
package/HiForm/index.js CHANGED
@@ -67,6 +67,24 @@ Object.defineProperty(exports, 'HiSearchField', {
67
67
  }
68
68
  });
69
69
 
70
+ var _HiUpload = require('./HiUpload');
71
+
72
+ Object.defineProperty(exports, 'HiUpload', {
73
+ enumerable: true,
74
+ get: function get() {
75
+ return _interopRequireDefault(_HiUpload).default;
76
+ }
77
+ });
78
+
79
+ var _HiUploadField = require('./HiUploadField');
80
+
81
+ Object.defineProperty(exports, 'HiUploadField', {
82
+ enumerable: true,
83
+ get: function get() {
84
+ return _interopRequireDefault(_HiUploadField).default;
85
+ }
86
+ });
87
+
70
88
  var _HiSlider = require('./HiSlider');
71
89
 
72
90
  Object.defineProperty(exports, 'HiSlider', {