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

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.
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,756 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
+
18
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
25
+
26
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
27
+
28
+ var _react = _interopRequireDefault(require("react"));
29
+
30
+ var _propTypes = _interopRequireDefault(require("prop-types"));
31
+
32
+ var _moment = _interopRequireDefault(require("react-day-picker/moment"));
33
+
34
+ var _DayPickerInput = _interopRequireDefault(require("react-day-picker/DayPickerInput"));
35
+
36
+ var _classnames = _interopRequireDefault(require("classnames"));
37
+
38
+ var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
39
+
40
+ var _helpers = require("../utils/helpers");
41
+
42
+ var _Caption = _interopRequireDefault(require("./Caption"));
43
+
44
+ var _Overlay = _interopRequireDefault(require("./Overlays/Overlay"));
45
+
46
+ var _TimePickerOverlay = _interopRequireDefault(require("./Overlays/TimePickerOverlay"));
47
+
48
+ var _MonthPickerOverlay = _interopRequireDefault(require("./Overlays/MonthPickerOverlay"));
49
+
50
+ var _YearPickerOverlay = _interopRequireDefault(require("./Overlays/YearPickerOverlay"));
51
+
52
+ var _NavBar = _interopRequireDefault(require("./NavBar"));
53
+
54
+ var _Weekday = _interopRequireDefault(require("./Weekday"));
55
+
56
+ var _HiForm = require("../HiForm");
57
+
58
+ var _stylesheet = _interopRequireDefault(require("./stylesheet"));
59
+
60
+ var HiDateRangePicker =
61
+ /*#__PURE__*/
62
+ function (_React$Component) {
63
+ (0, _inherits2.default)(HiDateRangePicker, _React$Component);
64
+
65
+ function HiDateRangePicker(props) {
66
+ var _this;
67
+
68
+ (0, _classCallCheck2.default)(this, HiDateRangePicker);
69
+ _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(HiDateRangePicker).call(this));
70
+
71
+ _this.handleInputChange = function (inputName) {
72
+ return function (event) {
73
+ _this.event = event;
74
+
75
+ _this.props.onChange(inputName, event.target.value);
76
+ };
77
+ };
78
+
79
+ _this.handleDayPickerFocus = function (name) {
80
+ return function () {
81
+ _this.setState({
82
+ focusedInput: name
83
+ });
84
+ };
85
+ };
86
+
87
+ _this.handleDayPickerBlur = function (name) {
88
+ return function () {
89
+ _this.setState({
90
+ focusedInput: ''
91
+ });
92
+
93
+ if (_this.props.onBlur) {
94
+ _this.props.onBlur(name);
95
+ }
96
+ };
97
+ };
98
+
99
+ _this.state = {
100
+ fromCurrentMonth: props.from ? props.from : new Date(),
101
+ toCurrentMonth: props.to ? props.to : new Date(),
102
+ focusedInput: ''
103
+ };
104
+ _this.handleReset = _this.handleReset.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
105
+ _this.handleDayChange = _this.handleDayChange.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
106
+ _this.handleDayChangeFrom = _this.handleDayChangeFrom.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
107
+ _this.handleDayChangeTo = _this.handleDayChangeTo.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
108
+ _this.handleCurrentMonthChange = _this.handleCurrentMonthChange.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
109
+ _this.handleCurrentMonthChangeFrom = _this.handleCurrentMonthChangeFrom.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
110
+ _this.handleCurrentMonthChangeTo = _this.handleCurrentMonthChangeTo.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
111
+ _this.handleTimeChange = _this.handleTimeChange.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
112
+ _this.handleCalendarClick = _this.handleCalendarClick.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
113
+ _this.handleCalendarClickFrom = _this.handleCalendarClickFrom.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
114
+ _this.handleCalendarClickTo = _this.handleCalendarClickTo.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
115
+ _this.handleClockClick = _this.handleClockClick.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
116
+ _this.handleClockClickFrom = _this.handleClockClickFrom.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
117
+ _this.handleClockClickTo = _this.handleClockClickTo.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
118
+ _this.handleMonthClick = _this.handleMonthClick.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
119
+ _this.handleMonthClickFrom = _this.handleMonthClickFrom.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
120
+ _this.handleMonthClickTo = _this.handleMonthClickTo.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
121
+ _this.handleYearClick = _this.handleYearClick.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
122
+ _this.handleYearClickFrom = _this.handleYearClickFrom.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
123
+ _this.handleYearClickTo = _this.handleYearClickTo.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
124
+ _this.handleDayPickerFocus = _this.handleDayPickerFocus.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
125
+ _this.handleDayPickerBlur = _this.handleDayPickerBlur.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
126
+ _this.handleInputChange = _this.handleInputChange.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
127
+ _this.openPanel = _this.openPanel.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
128
+ _this.renderCaption = _this.renderCaption.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
129
+ _this.renderCaptionFrom = _this.renderCaptionFrom.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
130
+ _this.renderCaptionTo = _this.renderCaptionTo.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
131
+ _this.renderNavBar = _this.renderNavBar.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
132
+ _this.renderNavBarFrom = _this.renderNavBarFrom.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
133
+ _this.renderNavBarTo = _this.renderNavBarTo.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
134
+ _this.renderOverlay = _this.renderOverlay.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
135
+ _this.renderOverlayFrom = _this.renderOverlayFrom.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
136
+ _this.renderOverlayTo = _this.renderOverlayTo.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
137
+ _this.renderMonthPickerOverlay = _this.renderMonthPickerOverlay.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
138
+ _this.renderTimePickerOverlay = _this.renderTimePickerOverlay.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
139
+ _this.renderYearPickerOverlay = _this.renderYearPickerOverlay.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
140
+ return _this;
141
+ }
142
+
143
+ (0, _createClass2.default)(HiDateRangePicker, [{
144
+ key: "componentDidUpdate",
145
+ value: function componentDidUpdate(prevProps) {
146
+ var _this2 = this;
147
+
148
+ // Focus From input on enabling
149
+ if (prevProps.disabled === true && this.props.disabled === false) {
150
+ this.timeout = setTimeout(function () {
151
+ if (_this2.fromInput.getInput()) {
152
+ _this2.fromInput.getInput().focus();
153
+ }
154
+ }, 0);
155
+ }
156
+ }
157
+ }, {
158
+ key: "componentWillUnmount",
159
+ value: function componentWillUnmount() {
160
+ clearTimeout(this.timeout);
161
+ }
162
+ }, {
163
+ key: "handleDayChange",
164
+ value: function handleDayChange(name, day, modifiers) {
165
+ var _this3 = this;
166
+
167
+ if (day) {
168
+ // if time disabled, focus TO input
169
+ // else focus current input
170
+ if (!this.props.enableTime) {
171
+ if (day instanceof Date) {
172
+ if (name === 'from' && this.toInput) {
173
+ this.toInput.getInput().focus();
174
+ } else if (name === 'to') {
175
+ if (typeof this.event === 'undefined' || this.event && this.event.type !== 'change') {
176
+ // trigger blur only if user clicks on date into calendar
177
+ // else keep focus to see day selection into calendar
178
+ document.activeElement.blur();
179
+ }
180
+
181
+ delete this.event;
182
+ }
183
+ }
184
+ } else {
185
+ this.timeout = setTimeout(function () {
186
+ if (_this3["".concat(name, "Input")].getInput()) {
187
+ _this3["".concat(name, "Input")].getInput().focus();
188
+ }
189
+ }, 10);
190
+ }
191
+
192
+ if (this.props.onChange) {
193
+ // Keep Time if set
194
+ if (this.props.enableTime) {
195
+ if (this.props[name]) {
196
+ day.setHours(this.props[name].getHours(), this.props[name].getMinutes());
197
+ } else {
198
+ day.setHours(0, 0);
199
+ }
200
+ }
201
+
202
+ this.props.onChange(name, day);
203
+ }
204
+
205
+ if (this.props.enableTime) {
206
+ this.openPanel(name, 'time');
207
+ }
208
+ }
209
+ }
210
+ }, {
211
+ key: "handleDayChangeFrom",
212
+ value: function handleDayChangeFrom(day, modifiers) {
213
+ this.handleDayChange('from', day, modifiers);
214
+ }
215
+ }, {
216
+ key: "handleDayChangeTo",
217
+ value: function handleDayChangeTo(day, modifiers) {
218
+ this.handleDayChange('to', day, modifiers);
219
+ }
220
+ }, {
221
+ key: "handleCurrentMonthChange",
222
+ value: function handleCurrentMonthChange(name, day) {
223
+ var _this$setState;
224
+
225
+ this.setState((_this$setState = {}, (0, _defineProperty2.default)(_this$setState, "".concat(name, "CurrentMonth"), day), (0, _defineProperty2.default)(_this$setState, "".concat(name, "OpenedPanel"), 'calendar'), _this$setState));
226
+ }
227
+ }, {
228
+ key: "handleCurrentMonthChangeFrom",
229
+ value: function handleCurrentMonthChangeFrom(day) {
230
+ this.handleCurrentMonthChange('from', day);
231
+ }
232
+ }, {
233
+ key: "handleCurrentMonthChangeTo",
234
+ value: function handleCurrentMonthChangeTo(day) {
235
+ this.handleCurrentMonthChange('to', day);
236
+ }
237
+ }, {
238
+ key: "handleCalendarClick",
239
+ value: function handleCalendarClick(name) {
240
+ this.openPanel(name, 'calendar');
241
+ }
242
+ }, {
243
+ key: "handleCalendarClickFrom",
244
+ value: function handleCalendarClickFrom() {
245
+ this.handleCalendarClick('from');
246
+ }
247
+ }, {
248
+ key: "handleCalendarClickTo",
249
+ value: function handleCalendarClickTo() {
250
+ this.handleCalendarClick('to');
251
+ }
252
+ }, {
253
+ key: "handleClockClick",
254
+ value: function handleClockClick(name) {
255
+ this.openPanel(name, 'time');
256
+ }
257
+ }, {
258
+ key: "handleClockClickFrom",
259
+ value: function handleClockClickFrom() {
260
+ this.handleClockClick('from');
261
+ }
262
+ }, {
263
+ key: "handleClockClickTo",
264
+ value: function handleClockClickTo() {
265
+ this.handleClockClick('to');
266
+ }
267
+ }, {
268
+ key: "handleMonthClick",
269
+ value: function handleMonthClick(name) {
270
+ this.openPanel(name, 'months');
271
+ }
272
+ }, {
273
+ key: "handleMonthClickFrom",
274
+ value: function handleMonthClickFrom() {
275
+ this.handleMonthClick('from');
276
+ }
277
+ }, {
278
+ key: "handleMonthClickTo",
279
+ value: function handleMonthClickTo() {
280
+ this.handleMonthClick('to');
281
+ }
282
+ }, {
283
+ key: "handleYearClick",
284
+ value: function handleYearClick(name) {
285
+ this.openPanel(name, 'years');
286
+ }
287
+ }, {
288
+ key: "handleYearClickFrom",
289
+ value: function handleYearClickFrom() {
290
+ this.handleYearClick('from');
291
+ }
292
+ }, {
293
+ key: "handleYearClickTo",
294
+ value: function handleYearClickTo() {
295
+ this.handleYearClick('to');
296
+ }
297
+ }, {
298
+ key: "handleTimeChange",
299
+ value: function handleTimeChange(name, date, precision) {
300
+ this.props.onChange(name, date);
301
+
302
+ if (name === 'from' && precision === 'minute') {
303
+ this.fromInput.hideDayPicker();
304
+ this.toInput.getInput().focus();
305
+ this.toInput.showDayPicker();
306
+ } else if (name === 'to' && precision === 'minute') {
307
+ this.toInput.hideDayPicker();
308
+ document.activeElement.blur();
309
+ }
310
+ }
311
+ }, {
312
+ key: "handleReset",
313
+ value: function handleReset(name) {
314
+ var _this4 = this;
315
+
316
+ this.handleCurrentMonthChange(name, new Date());
317
+ this.timeout = setTimeout(function () {
318
+ if (_this4.props.onReset) {
319
+ _this4.props.onReset(name);
320
+ }
321
+ }, 0);
322
+ }
323
+ }, {
324
+ key: "openPanel",
325
+ value: function openPanel(name, panel) {
326
+ this.setState((0, _defineProperty2.default)({}, "".concat(name, "OpenedPanel"), panel));
327
+ }
328
+ }, {
329
+ key: "renderCaption",
330
+ value: function renderCaption(name, propsCaption) {
331
+ return _react.default.createElement(_Caption.default, (0, _extends2.default)({
332
+ onMonthClick: this["handleMonthClick".concat((0, _helpers.capitalize)(name))],
333
+ onYearClick: this["handleYearClick".concat((0, _helpers.capitalize)(name))]
334
+ }, propsCaption));
335
+ }
336
+ }, {
337
+ key: "renderCaptionFrom",
338
+ value: function renderCaptionFrom(propsCaption) {
339
+ return this.renderCaption('from', propsCaption);
340
+ }
341
+ }, {
342
+ key: "renderCaptionTo",
343
+ value: function renderCaptionTo(propsCaption) {
344
+ return this.renderCaption('to', propsCaption);
345
+ }
346
+ }, {
347
+ key: "renderNavBar",
348
+ value: function renderNavBar(name, propsNavBar) {
349
+ return _react.default.createElement(_NavBar.default, (0, _extends2.default)({
350
+ showClockButton: this.props.enableTime,
351
+ onClockClick: this["handleClockClick".concat((0, _helpers.capitalize)(name))]
352
+ }, propsNavBar));
353
+ }
354
+ }, {
355
+ key: "renderNavBarFrom",
356
+ value: function renderNavBarFrom(propsNavBar) {
357
+ return this.renderNavBar('from', propsNavBar);
358
+ }
359
+ }, {
360
+ key: "renderNavBarTo",
361
+ value: function renderNavBarTo(propsNavBar) {
362
+ return this.renderNavBar('to', propsNavBar);
363
+ }
364
+ }, {
365
+ key: "renderOverlay",
366
+ value: function renderOverlay(name, propsOverlay, staticPosition) {
367
+ var rangeOverlayProps = (0, _extends2.default)({}, propsOverlay, {
368
+ side: name,
369
+ staticPosition: staticPosition
370
+ });
371
+
372
+ switch (this.state["".concat(name, "OpenedPanel")]) {
373
+ case 'time':
374
+ return this.renderTimePickerOverlay(name, rangeOverlayProps);
375
+
376
+ case 'months':
377
+ return this.renderMonthPickerOverlay(name, rangeOverlayProps);
378
+
379
+ case 'years':
380
+ return this.renderYearPickerOverlay(name, rangeOverlayProps);
381
+
382
+ case 'calendar':
383
+ default:
384
+ return _react.default.createElement(_Overlay.default, rangeOverlayProps);
385
+ }
386
+ }
387
+ }, {
388
+ key: "renderOverlayFrom",
389
+ value: function renderOverlayFrom(propsOverlay) {
390
+ return this.renderOverlay('from', propsOverlay, this.props.staticPosition);
391
+ }
392
+ }, {
393
+ key: "renderOverlayTo",
394
+ value: function renderOverlayTo(propsOverlay) {
395
+ return this.renderOverlay('to', propsOverlay, this.props.staticPosition);
396
+ }
397
+ }, {
398
+ key: "renderMonthPickerOverlay",
399
+ value: function renderMonthPickerOverlay(name, propsOverlay) {
400
+ var monthPickerProps = {
401
+ value: this.state["".concat(name, "CurrentMonth")],
402
+ onChange: this["handleCurrentMonthChange".concat((0, _helpers.capitalize)(name))]
403
+ };
404
+ return _react.default.createElement(_MonthPickerOverlay.default, (0, _extends2.default)({
405
+ key: "".concat(name, "-month-picker-overlay")
406
+ }, monthPickerProps, propsOverlay));
407
+ }
408
+ }, {
409
+ key: "renderTimePickerOverlay",
410
+ value: function renderTimePickerOverlay(name, propsOverlay) {
411
+ var _this5 = this;
412
+
413
+ var timePickerProps = {
414
+ value: this.props[name],
415
+ onChange: function onChange(date, precision) {
416
+ return _this5.handleTimeChange(name, date, precision);
417
+ },
418
+ onCalendarClick: this["handleCalendarClick".concat((0, _helpers.capitalize)(name))]
419
+ };
420
+ return _react.default.createElement(_TimePickerOverlay.default, (0, _extends2.default)({
421
+ key: "".concat(name, "-time-picker-overlay")
422
+ }, timePickerProps, propsOverlay));
423
+ }
424
+ }, {
425
+ key: "renderYearPickerOverlay",
426
+ value: function renderYearPickerOverlay(name, propsOverlay) {
427
+ var yearPickerProps = {
428
+ value: this.state["".concat(name, "CurrentMonth")],
429
+ onChange: this["handleCurrentMonthChange".concat((0, _helpers.capitalize)(name))],
430
+ disabledFutureDays: this.props.disableFutureDays,
431
+ disabledPastDays: this.props.disablePastDays
432
+ };
433
+ return _react.default.createElement(_YearPickerOverlay.default, (0, _extends2.default)({
434
+ key: "".concat(name, "-year-picker-overlay")
435
+ }, yearPickerProps, propsOverlay));
436
+ }
437
+ }, {
438
+ key: "render",
439
+ value: function render() {
440
+ var _this6 = this,
441
+ _classNames;
442
+
443
+ var _this$props = this.props,
444
+ classes = _this$props.classes,
445
+ disabledDays = _this$props.disabledDays,
446
+ disablePastDays = _this$props.disablePastDays,
447
+ disableFutureDays = _this$props.disableFutureDays,
448
+ enableTime = _this$props.enableTime,
449
+ labelFrom = _this$props.labelFrom,
450
+ labelTo = _this$props.labelTo,
451
+ locale = _this$props.locale,
452
+ format = _this$props.format,
453
+ from = _this$props.from,
454
+ minimumDate = _this$props.minimumDate,
455
+ onReset = _this$props.onReset,
456
+ to = _this$props.to,
457
+ translations = _this$props.translations,
458
+ id = _this$props.id,
459
+ staticPosition = _this$props.staticPosition,
460
+ props = (0, _objectWithoutProperties2.default)(_this$props, ["classes", "disabledDays", "disablePastDays", "disableFutureDays", "enableTime", "labelFrom", "labelTo", "locale", "format", "from", "minimumDate", "onReset", "to", "translations", "id", "staticPosition"]);
461
+ var _this$state = this.state,
462
+ fromCurrentMonth = _this$state.fromCurrentMonth,
463
+ toCurrentMonth = _this$state.toCurrentMonth;
464
+ var now = new Date();
465
+ var modifiers = {
466
+ start: from,
467
+ end: to
468
+ };
469
+ var modifiersStyles = {
470
+ start: {
471
+ borderTopLeftRadius: '50%',
472
+ borderBottomLeftRadius: '50%'
473
+ },
474
+ end: {
475
+ borderTopRightRadius: '50%',
476
+ borderBottomRightRadius: '50%'
477
+ }
478
+ };
479
+ var selectedDays = [];
480
+ var selected = {};
481
+
482
+ if (from instanceof Date) {
483
+ selectedDays.push(from);
484
+ selected.from = from;
485
+ }
486
+
487
+ if (to instanceof Date) {
488
+ selectedDays.push(to);
489
+ selected.to = to;
490
+ }
491
+
492
+ if (Object.values(selected).length > 0) {
493
+ selectedDays.push(selected);
494
+ }
495
+
496
+ var dayPickerProps = (0, _extends2.default)({
497
+ classNames: classes,
498
+ disabledDays: disabledDays,
499
+ firstDayOfWeek: 1,
500
+ fromMonth: minimumDate,
501
+ locale: locale,
502
+ modifiers: modifiers,
503
+ modifiersStyles: modifiersStyles,
504
+ // Both are required ?
505
+ selectedDays: selectedDays,
506
+ todayButton: translations.today,
507
+ weekdayElement: _Weekday.default
508
+ }, props); // Build Props for the From DatePicker
509
+ // Disable days after 'to' date if define
510
+
511
+ var after;
512
+
513
+ if (to instanceof Date && disableFutureDays) {
514
+ after = to < now ? now : to;
515
+ } else if (to instanceof Date) {
516
+ after = to;
517
+ } else if (disableFutureDays) {
518
+ after = now;
519
+ }
520
+
521
+ var disabledDaysFrom = (0, _extends2.default)({}, disablePastDays && {
522
+ before: now
523
+ }, (to || disableFutureDays) && {
524
+ after: after
525
+ }, disabledDays);
526
+ var fromDayPickerProps = (0, _extends2.default)({}, dayPickerProps, {
527
+ onTodayButtonClick: this.handleCurrentMonthChangeFrom,
528
+ NavBarElement: this.renderNavBarFrom,
529
+ captionElement: this.renderCaptionFrom,
530
+ disabledDays: disabledDaysFrom,
531
+ month: fromCurrentMonth,
532
+ modifiers: (0, _extends2.default)({}, modifiers, {
533
+ disabled: disabledDaysFrom
534
+ })
535
+ }); // Build Props for the To DatePicker
536
+ // Disable days before 'from' date if define
537
+
538
+ var before;
539
+
540
+ if (from instanceof Date && disablePastDays) {
541
+ before = from < now ? now : from;
542
+ } else if (from instanceof Date) {
543
+ before = from;
544
+ } else if (disablePastDays) {
545
+ before = now;
546
+ }
547
+
548
+ var disabledDaysTo = (0, _extends2.default)({}, (from || disablePastDays) && {
549
+ before: before
550
+ }, disableFutureDays && {
551
+ after: now
552
+ }, disabledDays);
553
+ var toDayPickerProps = (0, _extends2.default)({}, dayPickerProps, {
554
+ onTodayButtonClick: this.handleCurrentMonthChangeTo,
555
+ NavBarElement: this.renderNavBarTo,
556
+ captionElement: this.renderCaptionTo,
557
+ disabledDays: disabledDaysTo,
558
+ month: toCurrentMonth,
559
+ modifiers: (0, _extends2.default)({}, modifiers, {
560
+ disabled: disabledDaysTo
561
+ })
562
+ }); // From & To InputProps
563
+
564
+ var fromInputProps = (0, _extends2.default)({}, onReset && {
565
+ onReset: function onReset() {
566
+ return _this6.handleReset('from');
567
+ }
568
+ }, props, labelFrom && {
569
+ label: labelFrom
570
+ }, {
571
+ id: "".concat(id, "-from"),
572
+ onChange: this.handleInputChange('from')
573
+ });
574
+ var toInputProps = (0, _extends2.default)({}, onReset && {
575
+ onReset: function onReset() {
576
+ return _this6.handleReset('to');
577
+ }
578
+ }, props, labelTo && {
579
+ label: labelTo
580
+ }, {
581
+ id: "".concat(id, "-to"),
582
+ onChange: this.handleInputChange('to')
583
+ });
584
+ var toClass = (0, _classnames.default)(classes.toInput, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.absolute, staticPosition === true && this.state.focusedInput === 'from'), (0, _defineProperty2.default)(_classNames, classes.right4, staticPosition === true && this.state.focusedInput === 'from'), _classNames));
585
+ return _react.default.createElement("div", {
586
+ className: (0, _classnames.default)(classes.root, classes.rangePickerContainer)
587
+ }, _react.default.createElement("div", {
588
+ className: classes.fromInput,
589
+ onFocus: this.handleDayPickerFocus('from'),
590
+ onBlur: this.handleDayPickerBlur('from')
591
+ }, _react.default.createElement("div", null, _react.default.createElement(_DayPickerInput.default, {
592
+ ref: function ref(el) {
593
+ _this6.fromInput = el;
594
+ },
595
+ value: from,
596
+ hideOnDayClick: false,
597
+ overlayComponent: this.renderOverlayFrom,
598
+ dayPickerProps: fromDayPickerProps,
599
+ component: _HiForm.HiTextField,
600
+ inputProps: fromInputProps,
601
+ format: enableTime ? "".concat(format, " HH:mm") : format,
602
+ formatDate: _moment.default.formatDate,
603
+ parseDate: _moment.default.parseDate,
604
+ onDayChange: this.handleDayChangeFrom,
605
+ placeholder: ''
606
+ }))), _react.default.createElement("div", {
607
+ className: toClass,
608
+ onFocus: this.handleDayPickerFocus('to'),
609
+ onBlur: this.handleDayPickerBlur('to')
610
+ }, _react.default.createElement(_DayPickerInput.default, {
611
+ ref: function ref(el) {
612
+ _this6.toInput = el;
613
+ },
614
+ value: to,
615
+ hideOnDayClick: false,
616
+ overlayComponent: this.renderOverlayTo,
617
+ dayPickerProps: toDayPickerProps,
618
+ component: _HiForm.HiTextField,
619
+ inputProps: toInputProps,
620
+ format: enableTime ? "".concat(format, " HH:mm") : format,
621
+ formatDate: _moment.default.formatDate,
622
+ parseDate: _moment.default.parseDate,
623
+ onDayChange: this.handleDayChangeTo,
624
+ placeholder: ''
625
+ })));
626
+ }
627
+ }]);
628
+ return HiDateRangePicker;
629
+ }(_react.default.Component);
630
+
631
+ HiDateRangePicker.defaultProps = {
632
+ disabledDays: [],
633
+ disablePastDays: false,
634
+ disableFutureDays: false,
635
+ staticPosition: false,
636
+ enableTime: false,
637
+ format: 'YYYY-DD-MM',
638
+ labelFrom: 'Start',
639
+ labelTo: 'End',
640
+ locale: 'fr-FR',
641
+ minimumDate: new Date(2013, 4, 1),
642
+ // by default 1 May 2013
643
+ translations: {
644
+ today: 'today',
645
+ hour: 'Hour',
646
+ minute: 'Minute',
647
+ month: 'Month',
648
+ year: 'Year'
649
+ }
650
+ };
651
+ HiDateRangePicker.propTypes = process.env.NODE_ENV !== "production" ? {
652
+ /**
653
+ * Useful to extend the style applied to components.
654
+ */
655
+ classes: _propTypes.default.object,
656
+
657
+ /**
658
+ * Inactif
659
+ */
660
+ disabled: _propTypes.default.bool,
661
+
662
+ /**
663
+ * Définie les jours non sélectionnables
664
+ */
665
+ disabledDays: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.object, _propTypes.default.instanceOf(Date)]),
666
+
667
+ /**
668
+ * Uniquement la sélection de date antérieures à aujourd'hui (inclu)
669
+ */
670
+ disableFutureDays: _propTypes.default.bool,
671
+
672
+ /**
673
+ * Uniquement la sélection de date postérieures à aujourd'hui (inclu)
674
+ */
675
+ disablePastDays: _propTypes.default.bool,
676
+
677
+ /**
678
+ * Ajoute la gestion de l'heure
679
+ */
680
+ enableTime: _propTypes.default.bool,
681
+
682
+ /**
683
+ * Format des dates affichées
684
+ */
685
+ format: _propTypes.default.string,
686
+
687
+ /**
688
+ * Date de début sélectionnée
689
+ */
690
+ from: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.string]),
691
+
692
+ /**
693
+ * Utilisé pour construire les ids des champs from et to en les suffixant "-from" et "-to"
694
+ */
695
+ id: _propTypes.default.string.isRequired,
696
+
697
+ /**
698
+ * Label du champs de début
699
+ */
700
+ labelFrom: _propTypes.default.string,
701
+
702
+ /**
703
+ * Label du champs de fin
704
+ */
705
+ labelTo: _propTypes.default.string,
706
+
707
+ /**
708
+ * Locale utilisée
709
+ */
710
+ locale: _propTypes.default.string,
711
+
712
+ /**
713
+ * Date minimale sélectionnable
714
+ */
715
+ minimumDate: _propTypes.default.instanceOf(Date),
716
+
717
+ /**
718
+ * Callback à la sélection d'une date
719
+ * @param {string} nom de l'input
720
+ */
721
+ onBlur: _propTypes.default.func,
722
+
723
+ /**
724
+ * Callback à la sélection d'une date
725
+ * @param {string} nom du champs
726
+ * @param {string} nouvelle valeur du champs
727
+ */
728
+ onChange: _propTypes.default.func,
729
+
730
+ /**
731
+ * Callback au reset de l'input
732
+ * @param {string} nom du champs réinitialisé
733
+ */
734
+ onReset: _propTypes.default.func,
735
+
736
+ /**
737
+ * Si true, le calendrier sera dans une div static plutot que dans une popper absolute
738
+ */
739
+ staticPosition: _propTypes.default.bool,
740
+
741
+ /**
742
+ * Date de fin sélectionnée
743
+ */
744
+ to: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.string]),
745
+
746
+ /**
747
+ * Traductions
748
+ */
749
+ translations: _propTypes.default.object
750
+ } : {};
751
+
752
+ var _default = (0, _withStyles.default)(_stylesheet.default, {
753
+ name: 'HmuiHiDateRangePicker'
754
+ })(HiDateRangePicker);
755
+
756
+ exports.default = _default;