@hipay/hipay-material-ui 2.0.0-beta.36 → 2.0.0-beta.37

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. package/HiAppBar/HiAppBar.js +0 -2
  2. package/HiCell/CellAddress.js +140 -0
  3. package/HiCell/CellDate.js +140 -0
  4. package/HiCell/CellIcon.js +122 -0
  5. package/HiCell/CellImage.js +132 -0
  6. package/HiCell/CellNumeric.js +122 -0
  7. package/HiCell/CellPinToAction.js +92 -0
  8. package/HiCell/CellRate.js +184 -0
  9. package/HiCell/CellSentinel.js +179 -0
  10. package/HiCell/CellText.js +250 -0
  11. package/HiCell/index.js +71 -0
  12. package/HiCheckbox/HiCheckbox.js +2 -2
  13. package/HiDatePicker/Caption.js +0 -1
  14. package/HiDatePicker/HiDatePicker.js +1 -1
  15. package/HiDatePicker/HiDateRangePicker.js +756 -0
  16. package/HiDatePicker/HiDateRangeSelector.js +495 -0
  17. package/HiDatePicker/ListPicker.js +0 -1
  18. package/HiDatePicker/ListPicker.spec.js +1 -2
  19. package/HiDatePicker/NavBar.js +2 -2
  20. package/HiDatePicker/NavBar.spec.js +4 -5
  21. package/HiDatePicker/Overlays/CustomOverlayLayout.js +0 -1
  22. package/HiDatePicker/Overlays/MonthPickerOverlay.js +0 -1
  23. package/HiDatePicker/Overlays/MonthPickerOverlay.spec.js +0 -1
  24. package/HiDatePicker/Overlays/Overlay.js +0 -1
  25. package/HiDatePicker/Overlays/Overlay.spec.js +0 -5
  26. package/HiDatePicker/Overlays/TimePickerOverlay.js +0 -1
  27. package/HiDatePicker/Overlays/TimePickerOverlay.spec.js +0 -1
  28. package/HiDatePicker/Overlays/YearPickerOverlay.js +0 -1
  29. package/HiDatePicker/Overlays/YearPickerOverlay.spec.js +0 -1
  30. package/HiDatePicker/Weekday.js +0 -1
  31. package/HiDatePicker/stylesheet.js +7 -3
  32. package/HiForm/HiFormControl.js +23 -3
  33. package/HiForm/HiInput.js +2 -2
  34. package/HiSelect/HiSelect.js +1 -1
  35. package/HiSelect/HiSuggestSelect.js +8 -8
  36. package/HiSelectableList/HiSelectableList.js +3 -1
  37. package/HiSelectableList/HiSelectableListItem.js +14 -11
  38. package/es/HiAppBar/HiAppBar.js +0 -2
  39. package/es/HiCell/CellAddress.js +97 -0
  40. package/es/HiCell/CellDate.js +94 -0
  41. package/es/HiCell/CellIcon.js +83 -0
  42. package/es/HiCell/CellImage.js +91 -0
  43. package/es/HiCell/CellNumeric.js +80 -0
  44. package/es/HiCell/CellPinToAction.js +53 -0
  45. package/es/HiCell/CellRate.js +142 -0
  46. package/es/HiCell/CellSentinel.js +140 -0
  47. package/es/HiCell/CellText.js +198 -0
  48. package/es/HiCell/index.js +8 -0
  49. package/es/HiCheckbox/HiCheckbox.js +2 -2
  50. package/es/HiDatePicker/Caption.js +0 -1
  51. package/es/HiDatePicker/HiDatePicker.js +1 -1
  52. package/es/HiDatePicker/HiDateRangePicker.js +661 -0
  53. package/es/HiDatePicker/HiDateRangeSelector.js +432 -0
  54. package/es/HiDatePicker/ListPicker.js +0 -1
  55. package/es/HiDatePicker/ListPicker.spec.js +1 -2
  56. package/es/HiDatePicker/NavBar.js +2 -2
  57. package/es/HiDatePicker/NavBar.spec.js +4 -5
  58. package/es/HiDatePicker/Overlays/CustomOverlayLayout.js +0 -1
  59. package/es/HiDatePicker/Overlays/MonthPickerOverlay.js +0 -1
  60. package/es/HiDatePicker/Overlays/MonthPickerOverlay.spec.js +0 -1
  61. package/es/HiDatePicker/Overlays/Overlay.js +0 -1
  62. package/es/HiDatePicker/Overlays/Overlay.spec.js +0 -3
  63. package/es/HiDatePicker/Overlays/TimePickerOverlay.js +0 -1
  64. package/es/HiDatePicker/Overlays/TimePickerOverlay.spec.js +0 -1
  65. package/es/HiDatePicker/Overlays/YearPickerOverlay.js +0 -1
  66. package/es/HiDatePicker/Overlays/YearPickerOverlay.spec.js +0 -1
  67. package/es/HiDatePicker/Overlays/index.js +0 -1
  68. package/es/HiDatePicker/Weekday.js +0 -1
  69. package/es/HiDatePicker/stylesheet.js +7 -3
  70. package/es/HiForm/HiFormControl.js +22 -3
  71. package/es/HiForm/HiInput.js +2 -2
  72. package/es/HiSelect/HiSelect.js +1 -1
  73. package/es/HiSelect/HiSuggestSelect.js +8 -8
  74. package/es/HiSelectableList/HiSelectableList.js +3 -1
  75. package/es/HiSelectableList/HiSelectableListItem.js +14 -11
  76. package/es/index.js +2 -1
  77. package/es/styles/createPalette.js +2 -1
  78. package/es/utils/helpers.js +117 -0
  79. package/index.es.js +3 -2
  80. package/index.js +1 -1
  81. package/package.json +1 -1
  82. package/styles/createPalette.js +1 -1
  83. package/umd/hipay-material-ui.development.js +39 -14
  84. package/umd/hipay-material-ui.production.min.js +2 -2
  85. package/utils/helpers.js +134 -0
@@ -0,0 +1,432 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ // @inheritedComponent HiDateRangePicker
4
+ import React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import moment from 'moment';
7
+ import { findDOMNode } from 'react-dom';
8
+ import { Grid } from '@material-ui/core';
9
+ import withStyles from '../styles/withStyles';
10
+ import { HiSelectField } from '../HiSelect';
11
+ import HiDateRangePicker from './HiDateRangePicker';
12
+ export function buildDateRangeOptionByKey(key, t, format) {
13
+ let from;
14
+ let label;
15
+ let info;
16
+ let to;
17
+ let type;
18
+ moment.updateLocale('en', {
19
+ week: {
20
+ dow: 1
21
+ }
22
+ });
23
+
24
+ switch (key) {
25
+ case 'custom':
26
+ label = t.custom_period;
27
+ type = 'primary-highlight';
28
+ break;
29
+
30
+ case 'cd':
31
+ label = t.today;
32
+ from = moment().startOf('day');
33
+ to = moment().endOf('day');
34
+ info = `${from.format(format)}`;
35
+ break;
36
+
37
+ case 'pd':
38
+ label = t.yesterday;
39
+ from = moment().subtract(1, 'day').startOf('day');
40
+ to = moment().subtract(1, 'day').endOf('day');
41
+ info = `${from.format(format)}`;
42
+ break;
43
+
44
+ case 'cw':
45
+ label = t.current_week;
46
+ from = moment().startOf('week');
47
+ to = moment();
48
+ info = `${t.short_week}${from.format('w')}, \n ${from.format(format)} ${t.to_now}`;
49
+ break;
50
+
51
+ case 'pw':
52
+ label = t.previous_week;
53
+ from = moment().subtract(1, 'week').startOf('week');
54
+ to = moment().subtract(1, 'week').endOf('week');
55
+ info = `${t.short_week}${from.format('w')}, ${from.format(format)} ${t.to} ${to.format(format)}`;
56
+ break;
57
+
58
+ case 'cm':
59
+ label = t.current_month;
60
+ from = moment().startOf('month');
61
+ to = moment();
62
+ info = `${from.format(format)} ${t.to_now}, ${to.diff(from, 'days')} ${t.days}`;
63
+ break;
64
+
65
+ case 'pm':
66
+ label = t.previous_month;
67
+ from = moment().subtract(1, 'month').startOf('month');
68
+ to = moment().subtract(1, 'month').endOf('month');
69
+ info = `${from.format('YYYY-MM')}, ${to.diff(from, 'days')} ${t.days}`;
70
+ break;
71
+
72
+ case 'cq':
73
+ label = t.current_quarter;
74
+ from = moment().startOf('quarter');
75
+ to = moment();
76
+ info = `${from.format(format)} ${t.to_now}, ${to.diff(from, 'days')} ${t.days}`;
77
+ break;
78
+
79
+ case 'pq':
80
+ label = t.previous_quarter;
81
+ from = moment().subtract(1, 'quarter').startOf('quarter');
82
+ to = moment().subtract(1, 'quarter').endOf('quarter');
83
+ info = `${from.format('YYYY')}-${t.short_quarter}${from.format('Q')}, ${to.diff(from, 'days')} ${t.days}`;
84
+ break;
85
+
86
+ case 'cy':
87
+ label = t.current_year;
88
+ from = moment().startOf('year');
89
+ to = moment();
90
+ info = `${from.format(format)} ${t.to_now}, ${to.diff(from, 'days')} ${t.days}`;
91
+ break;
92
+
93
+ default:
94
+ break;
95
+ }
96
+
97
+ return {
98
+ id: key,
99
+ from,
100
+ info,
101
+ label,
102
+ to,
103
+ type
104
+ };
105
+ }
106
+ export const styles = theme => ({
107
+ root: {
108
+ maxWidth: 500,
109
+ marginLeft: -4,
110
+ alignItems: 'flex-start'
111
+ },
112
+ dateSelect: {
113
+ paddingTop: 1,
114
+ marginTop: 1
115
+ },
116
+ dateRangePicker: {
117
+ width: 'calc(100% + 8px)'
118
+ },
119
+ smSelect: {},
120
+ smRangePicker: {}
121
+ });
122
+
123
+ class HiDateRangeSelector extends React.Component {
124
+ constructor(props) {
125
+ super();
126
+ this.options = [];
127
+
128
+ this.handleSelectChange = name => (event, value) => {
129
+ this.setState({
130
+ [name]: value
131
+ });
132
+
133
+ if (value !== 'custom') {
134
+ const selectedOption = this.options.find(option => option.id === value);
135
+
136
+ if (selectedOption) {
137
+ this.props.onChange('from', selectedOption.from.toDate());
138
+ this.props.onChange('to', selectedOption.to.toDate());
139
+ }
140
+ } else {
141
+ this.setState({
142
+ defaultFrom: undefined,
143
+ defaultTo: undefined
144
+ });
145
+ }
146
+
147
+ if (this.props.returnSelectValue === true) {
148
+ this.props.onChange('period', value);
149
+ }
150
+ };
151
+
152
+ this.handleReset = this.handleReset.bind(this);
153
+ this.handleSelectChange = this.handleSelectChange.bind(this);
154
+ this.options = props.availableOptionKeys.map(key => buildDateRangeOptionByKey(key, props.translations, props.format));
155
+ let from;
156
+ let to;
157
+
158
+ if (props.defaultPreset !== 'custom') {
159
+ const selectedOption = this.options.find(option => option.id === props.defaultPreset);
160
+
161
+ if (selectedOption) {
162
+ from = selectedOption.from.toDate();
163
+ to = selectedOption.to.toDate();
164
+ }
165
+ }
166
+
167
+ this.state = {
168
+ selectedPreset: props.defaultPreset,
169
+ containerWidth: 0,
170
+ defaultFrom: from,
171
+ defaultTo: to
172
+ };
173
+ }
174
+
175
+ static getDerivedStateFromProps(props, state) {
176
+ if (props.defaultPreset && props.returnSelectValue) {
177
+ return {
178
+ selectedPreset: props.defaultPreset
179
+ };
180
+ }
181
+
182
+ return null;
183
+ }
184
+
185
+ componentDidMount() {
186
+ if (this.container) {
187
+ this.setState({
188
+ containerWidth: findDOMNode(this.container).clientWidth
189
+ });
190
+ }
191
+ }
192
+
193
+ componentWillUnmount() {
194
+ clearTimeout(this.timeout); // TODO : supprimer ?
195
+ }
196
+
197
+ handleReset(name) {
198
+ this.props.onChange(name, undefined);
199
+ }
200
+
201
+ render() {
202
+ const _this$props = this.props,
203
+ {
204
+ disabled,
205
+ enableTime,
206
+ error,
207
+ errorText,
208
+ helperIcon,
209
+ helperText,
210
+ idRange,
211
+ idSelect,
212
+ label,
213
+ from,
214
+ onChange,
215
+ required,
216
+ to,
217
+ translations,
218
+ classes,
219
+ selectProps,
220
+ staticPosition
221
+ } = _this$props,
222
+ props = _objectWithoutProperties(_this$props, ["disabled", "enableTime", "error", "errorText", "helperIcon", "helperText", "idRange", "idSelect", "label", "from", "onChange", "required", "to", "translations", "classes", "selectProps", "staticPosition"]);
223
+
224
+ const {
225
+ defaultFrom,
226
+ defaultTo,
227
+ selectedPreset
228
+ } = this.state;
229
+ return React.createElement(Grid, {
230
+ container: true,
231
+ spacing: 8,
232
+ className: classes.root,
233
+ ref: container => {
234
+ this.container = container;
235
+ }
236
+ }, React.createElement(Grid, {
237
+ item: true,
238
+ xs: 12,
239
+ sm: 4,
240
+ classes: {
241
+ 'grid-sm-4': classes.smSelect
242
+ }
243
+ }, React.createElement(HiSelectField, _extends({
244
+ disabled: disabled,
245
+ error: error,
246
+ errorText: errorText,
247
+ helperIcon: helperIcon,
248
+ helperText: helperText,
249
+ id: idSelect,
250
+ label: label,
251
+ name: 'selectedPreset',
252
+ options: this.options,
253
+ onChange: this.handleSelectChange('selectedPreset'),
254
+ required: required,
255
+ translations: translations,
256
+ value: selectedPreset,
257
+ containerWidth: this.state.containerWidth,
258
+ classes: {
259
+ root: classes.dateSelect
260
+ },
261
+ staticPosition: staticPosition
262
+ }, selectProps))), React.createElement(Grid, {
263
+ item: true,
264
+ xs: 12,
265
+ sm: 8,
266
+ classes: {
267
+ 'grid-sm-8': classes.smRangePicker
268
+ }
269
+ }, React.createElement(HiDateRangePicker, _extends({
270
+ classes: {
271
+ root: classes.dateRangePicker
272
+ },
273
+ id: idRange,
274
+ from: from || defaultFrom,
275
+ to: to || defaultTo,
276
+ enableTime: enableTime,
277
+ onChange: onChange,
278
+ onReset: this.handleReset,
279
+ disabled: disabled || selectedPreset !== 'custom',
280
+ translations: translations,
281
+ staticPosition: staticPosition
282
+ }, props))));
283
+ }
284
+
285
+ }
286
+
287
+ HiDateRangeSelector.defaultProps = {
288
+ availableOptionKeys: ['cd', 'pd', 'cw', 'pw', 'cm', 'pm', 'cq', 'pq', 'cy', 'custom'],
289
+ defaultPreset: 'cd',
290
+ enableTime: false,
291
+ returnSelectValue: false,
292
+ staticPosition: false,
293
+ locale: 'fr-FR',
294
+ format: 'YYYY-DD-MM',
295
+ translations: {
296
+ today: 'Today',
297
+ hour: 'Hour',
298
+ minute: 'Minute',
299
+ month: 'Month',
300
+ quarter: 'Quarter',
301
+ week: 'Week',
302
+ short_week: 'W',
303
+ short_quarter: 'Q',
304
+ year: 'Year',
305
+ days: 'days',
306
+ custom_period: 'Custom Period',
307
+ yesterday: 'Yesterday',
308
+ to: 'to',
309
+ to_now: 'to now',
310
+ current_week: 'Current Week',
311
+ previous_week: 'Previous Week',
312
+ current_month: 'Current Month',
313
+ previous_month: 'Previous Month',
314
+ current_quarter: 'Current Quarter',
315
+ previous_quarter: 'Previous Quarter',
316
+ current_year: 'Current Year'
317
+ }
318
+ };
319
+ HiDateRangeSelector.propTypes = process.env.NODE_ENV !== "production" ? {
320
+ /**
321
+ * Liste des ids des options disponibles
322
+ */
323
+ availableOptionKeys: PropTypes.array,
324
+
325
+ /**
326
+ * Useful to extend the style applied to components.
327
+ */
328
+ classes: PropTypes.object,
329
+
330
+ /**
331
+ * Valeur du select par default
332
+ */
333
+ defaultPreset: PropTypes.string,
334
+
335
+ /**
336
+ * Si `true`, l'input sera inactif.
337
+ */
338
+ disabled: PropTypes.bool,
339
+
340
+ /**
341
+ * Ajoute la gestion de l'heure
342
+ */
343
+ enableTime: PropTypes.bool,
344
+
345
+ /**
346
+ * Si `true`, le champs sera en erreur.
347
+ */
348
+ error: PropTypes.bool,
349
+
350
+ /**
351
+ * Texte de l'erreur
352
+ */
353
+ errorText: PropTypes.string,
354
+
355
+ /**
356
+ * Format de date utilisé
357
+ */
358
+ format: PropTypes.string,
359
+
360
+ /**
361
+ * Date de début sélectionnée
362
+ */
363
+ from: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string]),
364
+
365
+ /**
366
+ * Si "true", le texte d'aide s'affichera seulement au clic sur l'icône "Information"
367
+ */
368
+ helperIcon: PropTypes.bool,
369
+
370
+ /**
371
+ * Texte de l'aide
372
+ */
373
+ helperText: PropTypes.string,
374
+
375
+ /**
376
+ * Utilisé pour construire les ids des champs from et to en les suffixant "-from" et "-to"
377
+ */
378
+ idRange: PropTypes.string.isRequired,
379
+
380
+ /**
381
+ * id du champs select
382
+ */
383
+ idSelect: PropTypes.string.isRequired,
384
+
385
+ /**
386
+ * Label du champs
387
+ */
388
+ label: PropTypes.string,
389
+
390
+ /**
391
+ * Locale utilisée
392
+ */
393
+ locale: PropTypes.string,
394
+
395
+ /**
396
+ * Callback à la sélection d'une date
397
+ */
398
+ onChange: PropTypes.func.isRequired,
399
+
400
+ /**
401
+ * true si champs obligatoire
402
+ */
403
+ required: PropTypes.bool,
404
+
405
+ /**
406
+ * Retourne la valeur du select de la période au change du select
407
+ */
408
+ returnSelectValue: PropTypes.bool.isRequired,
409
+
410
+ /**
411
+ * Props passées au HiSelectField
412
+ */
413
+ selectProps: PropTypes.object,
414
+
415
+ /**
416
+ * Si true, le calendrier sera dans une div static plutot que dans une popper absolute
417
+ */
418
+ staticPosition: PropTypes.bool,
419
+
420
+ /**
421
+ * Date de fin sélectionnée
422
+ */
423
+ to: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string]),
424
+
425
+ /**
426
+ * Traductions
427
+ */
428
+ translations: PropTypes.object
429
+ } : {};
430
+ export default withStyles(styles, {
431
+ name: 'HmuiHiDateRangeSelector'
432
+ })(HiDateRangeSelector);
@@ -1,4 +1,3 @@
1
- // @flow weak
2
1
  import React from 'react';
3
2
  import PropTypes from 'prop-types';
4
3
  import classNames from 'classnames';
@@ -1,8 +1,7 @@
1
- // @flow
2
1
  import React from 'react';
3
2
  import { assert } from 'chai';
4
3
  import { spy } from 'sinon';
5
- import { MenuList, MenuItem } from 'material-ui/Menu';
4
+ import { MenuList, MenuItem } from '@material-ui/core/Menu';
6
5
  import { createShallow, createMount } from '../test-utils/index';
7
6
  import ListPicker from './ListPicker';
8
7
  describe('<ListPicker />', () => {
@@ -1,4 +1,3 @@
1
- // @flow weak
2
1
  import React from 'react';
3
2
  import PropTypes from 'prop-types';
4
3
  import classNames from 'classnames';
@@ -113,5 +112,6 @@ NavBar.defaultProps = {
113
112
  showClockButton: false
114
113
  };
115
114
  export default withStyles(styles, {
116
- name: 'HmuiNavbar'
115
+ hiComponent: true,
116
+ name: 'HmuiNavBar'
117
117
  })(NavBar);
@@ -1,12 +1,11 @@
1
- // @flow
2
1
  import React from 'react';
3
2
  import { assert } from 'chai';
4
3
  import { spy } from 'sinon';
5
4
  import MomentLocaleUtils from 'react-day-picker/moment';
6
- import IconButton from 'material-ui/IconButton';
5
+ import IconButton from '@material-ui/core/IconButton';
7
6
  import { createShallow } from '../test-utils/index';
8
- import Navbar from './Navbar';
9
- describe('<Navbar />', () => {
7
+ import NavBar from './NavBar';
8
+ describe('<NavBar />', () => {
10
9
  let shallow;
11
10
  before(() => {
12
11
  shallow = createShallow({
@@ -19,7 +18,7 @@ describe('<Navbar />', () => {
19
18
  const handlerClockClick = spy();
20
19
  const nextMonth = new Date(2018, 3, 1);
21
20
  const prevMonth = new Date(2018, 1, 1);
22
- const wrapper = shallow(React.createElement(Navbar, {
21
+ const wrapper = shallow(React.createElement(NavBar, {
23
22
  nextMonth: nextMonth,
24
23
  previousMonth: prevMonth,
25
24
  onNextClick: handlerNextClick,
@@ -1,6 +1,5 @@
1
1
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
2
  import _objectSpread from "@babel/runtime/helpers/objectSpread";
3
- // @flow weak
4
3
  import React from 'react';
5
4
  import PropTypes from 'prop-types';
6
5
  import classNames from 'classnames';
@@ -1,6 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- // @flow weak
4
3
  import React from 'react';
5
4
  import PropTypes from 'prop-types';
6
5
  import CustomOverlayLayout from './CustomOverlayLayout';
@@ -1,4 +1,3 @@
1
- // @flow
2
1
  import React from 'react';
3
2
  import { assert } from 'chai';
4
3
  import { spy } from 'sinon';
@@ -1,6 +1,5 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/objectSpread";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- // @flow weak
4
3
  import React from 'react';
5
4
  import PropTypes from 'prop-types';
6
5
  import classNames from 'classnames';
@@ -1,8 +1,5 @@
1
- // @flow
2
1
  import React from 'react';
3
2
  import { assert } from 'chai';
4
- import { spy } from 'sinon';
5
- import DayPickerInput from 'react-day-picker/DayPickerInput';
6
3
  import { createShallow, getClasses } from '../../test-utils/index';
7
4
  import Overlay from './Overlay';
8
5
 
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  import _objectSpread from "@babel/runtime/helpers/objectSpread";
4
- // @flow weak
5
4
  import React from 'react';
6
5
  import PropTypes from 'prop-types';
7
6
  import IconButton from '@material-ui/core/IconButton';
@@ -1,4 +1,3 @@
1
- // @flow
2
1
  import React from 'react';
3
2
  import { assert } from 'chai';
4
3
  import { spy } from 'sinon';
@@ -1,6 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- // @flow weak
4
3
  import React from 'react';
5
4
  import PropTypes from 'prop-types';
6
5
  import CustomOverlayLayout from './CustomOverlayLayout';
@@ -1,4 +1,3 @@
1
- // @flow
2
1
  import React from 'react';
3
2
  import { assert } from 'chai';
4
3
  import { spy } from 'sinon';
@@ -1,4 +1,3 @@
1
- // @flow
2
1
  export { default as Overlay } from './Overlay';
3
2
  export { default as CustomOverlayLayout } from './CustomOverlayLayout';
4
3
  export { default as MonthPickerOverlay } from './MonthPickerOverlay';
@@ -1,4 +1,3 @@
1
- // @flow weak
2
1
  import React from 'react';
3
2
  import PropTypes from 'prop-types';
4
3
 
@@ -69,7 +69,6 @@ export default (theme => ({
69
69
  // The month's main table
70
70
  month: {
71
71
  display: 'table',
72
- borderCollapse: 'collapse',
73
72
  borderSpacing: 0,
74
73
  userSelect: 'none' // margin: '0 1rem',
75
74
  // marginTop: '1rem',
@@ -161,7 +160,10 @@ export default (theme => ({
161
160
  /* default modifiers */
162
161
  // Added to the day's cell for the current day
163
162
  today: {
164
- color: theme.palette.primary.light,
163
+ // color: theme.palette.primary.light,
164
+ border: '2px solid #8b9898',
165
+ borderRadius: '50%',
166
+ color: `${theme.palette.neutral.dark} !important`,
165
167
  fontWeight: theme.typography.fontWeightMedium
166
168
  },
167
169
  // Added to the day's cell outside the current month
@@ -186,6 +188,8 @@ export default (theme => ({
186
188
  selected: {
187
189
  // backgroundColor: fade(theme.palette.business.primary.normal, 0.36),
188
190
  backgroundColor: theme.palette.primary.main,
189
- color: theme.palette.primary.contrastText
191
+ color: theme.palette.primary.contrastText,
192
+ borderRadius: '0%',
193
+ border: 'none'
190
194
  }
191
195
  }));
@@ -12,6 +12,7 @@ import FormHelperText from '@material-ui/core/FormHelperText';
12
12
  import withStyles from '../styles/withStyles';
13
13
  import HiFormLabel from './HiFormLabel';
14
14
  import { escapeHTML } from '../utils/helpers';
15
+ import keycode from 'keycode/index';
15
16
  export const styles = theme => ({
16
17
  helperTextClassName: {
17
18
  color: theme.palette.neutral.main,
@@ -97,6 +98,14 @@ class HiFormControl extends React.PureComponent {
97
98
  }
98
99
  };
99
100
 
101
+ this.handleKeyDown = event => {
102
+ const key = keycode(event);
103
+
104
+ if (['space', 'enter'].includes(key)) {
105
+ this.handleHelperClick(event);
106
+ }
107
+ };
108
+
100
109
  this.handleHover = value => () => {
101
110
  this.setState({
102
111
  hovered: value
@@ -121,6 +130,7 @@ class HiFormControl extends React.PureComponent {
121
130
  hovered: false
122
131
  };
123
132
  this.handleHelperClick = this.handleHelperClick.bind(this);
133
+ this.handleKeyDown = this.handleKeyDown.bind(this);
124
134
  this.handleFocus = this.handleFocus.bind(this);
125
135
  this.handleHover = this.handleHover.bind(this);
126
136
  }
@@ -163,7 +173,12 @@ class HiFormControl extends React.PureComponent {
163
173
  className: classes.errorDiv
164
174
  }, React.createElement("div", {
165
175
  className: classNames(classes.arrowDown, classes.errorDivArrowDown)
166
- }), errorText), helperIcon && helperText && !error && helperOpen && React.createElement("div", {
176
+ }), React.createElement("span", {
177
+ // eslint-disable-next-line react/no-danger
178
+ dangerouslySetInnerHTML: {
179
+ __html: escapeHTML(errorText)
180
+ }
181
+ })), helperIcon && helperText && !error && helperOpen && React.createElement("div", {
167
182
  className: classes.helperDiv
168
183
  }, React.createElement("div", {
169
184
  className: classNames(classes.arrowDown, classes.helperDivArrowDown)
@@ -180,12 +195,16 @@ class HiFormControl extends React.PureComponent {
180
195
  focused: !disabled && (focused || hovered)
181
196
  }, InputLabelProps), error && React.createElement(Warning, {
182
197
  className: classes.errorIcon,
183
- onClick: this.handleHelperClick
198
+ onClick: this.handleHelperClick,
199
+ tabIndex: 0,
200
+ onKeyDown: this.handleKeyDown
184
201
  }), helperIcon && helperText && !error && React.createElement(Info, {
185
202
  className: classNames(classes.helperIcon, {
186
203
  [classes.helperIconActive]: helperOpen
187
204
  }),
188
- onClick: this.handleHelperClick
205
+ onClick: this.handleHelperClick,
206
+ tabIndex: 0,
207
+ onKeyDown: this.handleKeyDown
189
208
  })), React.createElement("div", {
190
209
  onMouseEnter: this.handleHover(true),
191
210
  onMouseLeave: this.handleHover(false),
@@ -56,8 +56,8 @@ export const styles = theme => ({
56
56
  startAdornment: {
57
57
  color: theme.palette.neutral.main,
58
58
  zIndex: 1,
59
- marginLeft: 8,
60
- marginRight: 16
59
+ marginLeft: 0,
60
+ marginRight: 8
61
61
  },
62
62
  startAdornmentFocus: {
63
63
  color: theme.palette.neutral.dark
@@ -27,7 +27,7 @@ export const styles = theme => ({
27
27
  position: 'relative'
28
28
  },
29
29
  popper: {
30
- width: '100%',
30
+ width: '100% !important',
31
31
  zIndex: 1200
32
32
  },
33
33
  paper: {