@elliemae/ds-date-picker 3.0.0-next.2 → 3.0.0-next.6

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 (118) hide show
  1. package/dist/cjs/DSDatePicker.js +248 -0
  2. package/dist/cjs/DSDatePicker.js.map +7 -0
  3. package/dist/cjs/components/DSDatePickerImpl.js +274 -0
  4. package/dist/cjs/components/DSDatePickerImpl.js.map +7 -0
  5. package/dist/cjs/components/DatePickerController/DatePickerController.js +335 -0
  6. package/dist/cjs/components/DatePickerController/DatePickerController.js.map +7 -0
  7. package/dist/cjs/components/DatePickerDay/DatePickerDay.js +49 -0
  8. package/dist/cjs/components/DatePickerDay/DatePickerDay.js.map +7 -0
  9. package/dist/cjs/components/DatePickerDropdown.js +102 -0
  10. package/dist/cjs/components/DatePickerDropdown.js.map +7 -0
  11. package/dist/cjs/components/DatePickerHeader/DatePickerHeader.js +74 -0
  12. package/dist/cjs/components/DatePickerHeader/DatePickerHeader.js.map +7 -0
  13. package/dist/cjs/components/DatePickerNavigation/DatePickerNavigation.js +63 -0
  14. package/dist/cjs/components/DatePickerNavigation/DatePickerNavigation.js.map +7 -0
  15. package/dist/cjs/components/DatePickerPicker/DatePickerPicker.js +112 -0
  16. package/dist/cjs/components/DatePickerPicker/DatePickerPicker.js.map +7 -0
  17. package/dist/cjs/components/DatePickerRange/DatePickerRange.js +126 -0
  18. package/dist/cjs/components/DatePickerRange/DatePickerRange.js.map +7 -0
  19. package/dist/cjs/components/DatePickerRangeHeader/DatePickerRangeHeader.js +138 -0
  20. package/dist/cjs/components/DatePickerRangeHeader/DatePickerRangeHeader.js.map +7 -0
  21. package/dist/cjs/components/DatePickerRenderMonth/DatePickerRenderMonth.js +61 -0
  22. package/dist/cjs/components/DatePickerRenderMonth/DatePickerRenderMonth.js.map +7 -0
  23. package/dist/cjs/components/DatePickerSingleDate/DatePickerSingleDate.js +117 -0
  24. package/dist/cjs/components/DatePickerSingleDate/DatePickerSingleDate.js.map +7 -0
  25. package/dist/cjs/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js +80 -0
  26. package/dist/cjs/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js.map +7 -0
  27. package/dist/cjs/components/index.js +53 -0
  28. package/dist/cjs/components/index.js.map +7 -0
  29. package/dist/cjs/defaultPhrases.js +246 -0
  30. package/dist/cjs/defaultPhrases.js.map +7 -0
  31. package/dist/cjs/index.js +38 -0
  32. package/dist/cjs/index.js.map +7 -0
  33. package/dist/esm/DSDatePicker.js +232 -0
  34. package/dist/esm/DSDatePicker.js.map +7 -0
  35. package/dist/esm/components/DSDatePickerImpl.js +245 -0
  36. package/dist/esm/components/DSDatePickerImpl.js.map +7 -0
  37. package/dist/esm/components/DatePickerController/DatePickerController.js +308 -0
  38. package/dist/esm/components/DatePickerController/DatePickerController.js.map +7 -0
  39. package/dist/esm/components/DatePickerDay/DatePickerDay.js +20 -0
  40. package/dist/esm/components/DatePickerDay/DatePickerDay.js.map +7 -0
  41. package/dist/esm/components/DatePickerDropdown.js +75 -0
  42. package/dist/esm/components/DatePickerDropdown.js.map +7 -0
  43. package/dist/esm/components/DatePickerHeader/DatePickerHeader.js +45 -0
  44. package/dist/esm/components/DatePickerHeader/DatePickerHeader.js.map +7 -0
  45. package/dist/esm/components/DatePickerNavigation/DatePickerNavigation.js +37 -0
  46. package/dist/esm/components/DatePickerNavigation/DatePickerNavigation.js.map +7 -0
  47. package/dist/esm/components/DatePickerPicker/DatePickerPicker.js +84 -0
  48. package/dist/esm/components/DatePickerPicker/DatePickerPicker.js.map +7 -0
  49. package/dist/esm/components/DatePickerRange/DatePickerRange.js +99 -0
  50. package/dist/esm/components/DatePickerRange/DatePickerRange.js.map +7 -0
  51. package/dist/esm/components/DatePickerRangeHeader/DatePickerRangeHeader.js +109 -0
  52. package/dist/esm/components/DatePickerRangeHeader/DatePickerRangeHeader.js.map +7 -0
  53. package/dist/esm/components/DatePickerRenderMonth/DatePickerRenderMonth.js +32 -0
  54. package/dist/esm/components/DatePickerRenderMonth/DatePickerRenderMonth.js.map +7 -0
  55. package/dist/esm/components/DatePickerSingleDate/DatePickerSingleDate.js +89 -0
  56. package/dist/esm/components/DatePickerSingleDate/DatePickerSingleDate.js.map +7 -0
  57. package/dist/esm/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js +51 -0
  58. package/dist/esm/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js.map +7 -0
  59. package/dist/esm/components/index.js +24 -0
  60. package/dist/esm/components/index.js.map +7 -0
  61. package/{esm → dist/esm}/defaultPhrases.js +48 -80
  62. package/dist/esm/defaultPhrases.js.map +7 -0
  63. package/dist/esm/index.js +9 -0
  64. package/dist/esm/index.js.map +7 -0
  65. package/package.json +63 -55
  66. package/cjs/DSDatePicker.js +0 -233
  67. package/cjs/components/DSDatePickerImpl.js +0 -354
  68. package/cjs/components/DatePickerController/DatePickerController.js +0 -360
  69. package/cjs/components/DatePickerDay/DatePickerDay.js +0 -24
  70. package/cjs/components/DatePickerDropdown.js +0 -65
  71. package/cjs/components/DatePickerHeader/DatePickerHeader.js +0 -56
  72. package/cjs/components/DatePickerNavigation/DatePickerNavigation.js +0 -32
  73. package/cjs/components/DatePickerPicker/DatePickerPicker.js +0 -74
  74. package/cjs/components/DatePickerRange/DatePickerRange.js +0 -119
  75. package/cjs/components/DatePickerRangeHeader/DatePickerRangeHeader.js +0 -144
  76. package/cjs/components/DatePickerRenderMonth/DatePickerRenderMonth.js +0 -46
  77. package/cjs/components/DatePickerSingleDate/DatePickerSingleDate.js +0 -85
  78. package/cjs/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js +0 -59
  79. package/cjs/components/index.js +0 -27
  80. package/cjs/defaultPhrases.js +0 -261
  81. package/cjs/index.js +0 -35
  82. package/esm/DSDatePicker.js +0 -211
  83. package/esm/components/DSDatePickerImpl.js +0 -346
  84. package/esm/components/DatePickerController/DatePickerController.js +0 -350
  85. package/esm/components/DatePickerDay/DatePickerDay.js +0 -18
  86. package/esm/components/DatePickerDropdown.js +0 -57
  87. package/esm/components/DatePickerHeader/DatePickerHeader.js +0 -49
  88. package/esm/components/DatePickerNavigation/DatePickerNavigation.js +0 -25
  89. package/esm/components/DatePickerPicker/DatePickerPicker.js +0 -60
  90. package/esm/components/DatePickerRange/DatePickerRange.js +0 -111
  91. package/esm/components/DatePickerRangeHeader/DatePickerRangeHeader.js +0 -137
  92. package/esm/components/DatePickerRenderMonth/DatePickerRenderMonth.js +0 -38
  93. package/esm/components/DatePickerSingleDate/DatePickerSingleDate.js +0 -77
  94. package/esm/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js +0 -53
  95. package/esm/components/index.js +0 -10
  96. package/esm/index.js +0 -13
  97. package/types/components/DSDatePickerImpl.d.ts +0 -20
  98. package/types/components/DatePickerController/DatePickerController.d.ts +0 -80
  99. package/types/components/DatePickerDay/DatePickerDay.d.ts +0 -13
  100. package/types/components/DatePickerDropdown.d.ts +0 -41
  101. package/types/components/DatePickerHeader/DatePickerHeader.d.ts +0 -15
  102. package/types/components/DatePickerNavigation/DatePickerNavigation.d.ts +0 -19
  103. package/types/components/DatePickerPicker/DatePickerPicker.d.ts +0 -48
  104. package/types/components/DatePickerRange/DatePickerRange.d.ts +0 -9
  105. package/types/components/DatePickerRangeHeader/DatePickerRangeHeader.d.ts +0 -23
  106. package/types/components/DatePickerRangeHeader/tests/DatePickerRangeHeader.test.d.ts +0 -1
  107. package/types/components/DatePickerRenderMonth/DatePickerRenderMonth.d.ts +0 -5
  108. package/types/components/DatePickerSingleDate/DatePickerSingleDate.d.ts +0 -11
  109. package/types/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.d.ts +0 -16
  110. package/types/components/index.d.ts +0 -10
  111. package/types/components/tests/DatePickerHeader.test.d.ts +0 -1
  112. package/types/components/tests/DatePickerRange.test.d.ts +0 -1
  113. package/types/components/tests/DatePickerRangeHeader.test.d.ts +0 -1
  114. package/types/components/tests/DatePickerSelectedDate.test.d.ts +0 -1
  115. package/types/components/tests/DatePickerSingleDate.test.d.ts +0 -1
  116. package/types/components/tests/SingleRangeDateSwitcher.test.d.ts +0 -1
  117. package/types/defaultPhrases.d.ts +0 -225
  118. package/types/index.d.ts +0 -3
@@ -1,346 +0,0 @@
1
- import _jsx from '@babel/runtime/helpers/esm/jsx';
2
- import 'core-js/modules/web.dom-collections.iterator.js';
3
- import React from 'react';
4
- import moment from 'moment';
5
- import { DSInputGroup, DSDateInputV2 } from '@elliemae/ds-form';
6
- import DSDatePickerController from './DatePickerController/DatePickerController.js';
7
- import DatePickerDropdown from './DatePickerDropdown.js';
8
-
9
- const FORMAT = 'MMDDYYYY';
10
- class DSdatePickerImpl extends React.Component {
11
- constructor(props) {
12
- super(props);
13
-
14
- this.onClickPicker = () => {
15
- this.setState({
16
- inputFocused: true
17
- });
18
- };
19
-
20
- this.getSafeValue = () => {
21
- const {
22
- value,
23
- date,
24
- defaultValue
25
- } = this.props;
26
- const {
27
- selectedDate
28
- } = this.state;
29
-
30
- if (value) {
31
- return moment(value, FORMAT, true);
32
- }
33
-
34
- if (date) {
35
- return moment(date, FORMAT, true);
36
- }
37
-
38
- if (defaultValue) {
39
- return moment(defaultValue, FORMAT, true);
40
- }
41
-
42
- if (selectedDate) {
43
- return selectedDate;
44
- }
45
-
46
- return null;
47
- };
48
-
49
- this.getSafeInputValue = () => {
50
- const safeValue = this.getSafeValue();
51
-
52
- if (safeValue && safeValue.isValid()) {
53
- return safeValue.format(FORMAT);
54
- }
55
-
56
- const {
57
- dataInput
58
- } = this.state;
59
- return dataInput;
60
- };
61
-
62
- this.isControlled = () => {
63
- const {
64
- value,
65
- date
66
- } = this.props;
67
- return Boolean(value) || Boolean(date);
68
- };
69
-
70
- this.handleDateChange = (date, event) => {
71
- const {
72
- readOnly,
73
- onDateChange,
74
- keepOpenOnDateSelect,
75
- onChange,
76
- onBlur
77
- } = this.props;
78
-
79
- if (!readOnly) {
80
- if (!this.isControlled()) {
81
- this.setState({
82
- dataInput: date.format(FORMAT),
83
- selectedDate: date
84
- });
85
- }
86
-
87
- onChange(date.format(FORMAT), date);
88
- onDateChange(date);
89
-
90
- if (!keepOpenOnDateSelect || event.key === 'Enter') {
91
- this.setState({
92
- inputFocused: false
93
- });
94
- onBlur(date.format(FORMAT), date);
95
- }
96
- }
97
- };
98
-
99
- this.handleInputChange = (dataInput, newDate) => {
100
- const {
101
- onChange
102
- } = this.props;
103
- const newState = {
104
- dataInput,
105
- selectedDate: newDate
106
- };
107
- this.setState(() => newState);
108
- onChange(dataInput, newDate);
109
- };
110
-
111
- this.handleChange = newDate => {
112
- if (!newDate) return;
113
- const {
114
- onDateChange
115
- } = this.props;
116
- const momentValue = moment(newDate, FORMAT, true);
117
- if (!momentValue.isValid()) return;
118
- this.setState({
119
- selectedDate: momentValue
120
- });
121
- onDateChange(momentValue);
122
- };
123
-
124
- this.handleFocus = _ref => {
125
- let {
126
- focused
127
- } = _ref;
128
- this.setState({
129
- inputFocused: focused
130
- });
131
- };
132
-
133
- this.handleCalendarClose = () => {
134
- const {
135
- onClose
136
- } = this.props;
137
- this.setState({
138
- inputFocused: false
139
- });
140
- this.handleOnBlur();
141
- onClose();
142
- };
143
-
144
- this.handleClickEscape = () => {
145
- const {
146
- onClose
147
- } = this.props;
148
- this.setState({
149
- inputFocused: false
150
- });
151
- this.handleOnBlur();
152
- onClose();
153
- };
154
-
155
- this.handleOnBlur = () => {
156
- setTimeout(() => {
157
- const {
158
- onBlur,
159
- autoClear
160
- } = this.props;
161
- const {
162
- dataInput,
163
- selectedDate
164
- } = this.state;
165
-
166
- if (moment(selectedDate, FORMAT, true).isValid()) {
167
- onBlur(dataInput, selectedDate);
168
- } else {
169
- if (autoClear) {
170
- this.setState({
171
- dataInput: undefined
172
- });
173
- }
174
-
175
- onBlur(dataInput, null);
176
- }
177
- });
178
- };
179
-
180
- this.handleInputFocus = dataInput => {
181
- const {
182
- onFocus
183
- } = this.props;
184
- onFocus(dataInput);
185
- };
186
-
187
- this.state = {
188
- pickerRef: /*#__PURE__*/React.createRef(),
189
- dataInput: '',
190
- selectedDate: null,
191
- inputFocused: false
192
- };
193
- }
194
-
195
- static getDerivedStateFromProps(nextProps, prevState) {
196
- const {
197
- dataInput: prevVal,
198
- selectedDate: prevDate
199
- } = prevState || {};
200
- const {
201
- value: nextVal,
202
- date: nextDate
203
- } = nextProps;
204
- const isPrevValMoment = prevVal instanceof moment;
205
- const isPrevDateMoment = prevDate instanceof moment;
206
- const prevValAsString = isPrevValMoment ? prevVal.format(FORMAT) : prevVal; // if users wants to clear, we use '==' to catch both undefined AND null
207
-
208
- if (nextVal == null && nextDate == null) {
209
- return {
210
- dataInput: '',
211
- selectedDate: null
212
- };
213
- } // when val is an incomplete state, we don't want to mess with the state
214
- // it's incomplete when length is not the full mmddyyyy (length === 8)
215
-
216
-
217
- if ((prevValAsString === null || prevValAsString === void 0 ? void 0 : prevValAsString.length) < 8) {
218
- return null;
219
- }
220
-
221
- const prevDateAsString = isPrevDateMoment ? prevDate.format(FORMAT) : prevDate;
222
- const isNextValMoment = nextVal instanceof moment;
223
- const isNextDateMoment = nextDate instanceof moment;
224
- const nextValAsString = isNextValMoment ? nextVal.format(FORMAT) : nextVal;
225
- const nextValAsMoment = isNextValMoment ? nextVal : moment(nextVal);
226
- const nextDateAsString = isNextDateMoment ? nextDate.format(FORMAT) : nextDate;
227
- const nextDateAsMoment = isNextDateMoment ? nextDate : moment(nextDate);
228
- const hasValChanged = nextValAsString !== prevValAsString;
229
- const hasDateChanged = nextDateAsString !== prevDateAsString;
230
- const newState = {};
231
- let skipStateChange = true; // value has priority over date, if both date and value change we take date
232
- // as such, order of condition is meaningful
233
-
234
- if (hasDateChanged) {
235
- skipStateChange = false;
236
- newState.dataInput = nextDateAsString;
237
- newState.selectedDate = nextDateAsMoment;
238
- }
239
-
240
- if (hasValChanged) {
241
- skipStateChange = false;
242
- newState.dataInput = nextValAsString;
243
- newState.selectedDate = nextValAsMoment;
244
- }
245
-
246
- if (skipStateChange) return null;
247
- return newState;
248
- }
249
-
250
- render() {
251
- var _this = this;
252
-
253
- const {
254
- inputFocused
255
- } = this.state;
256
- const {
257
- disabled,
258
- numberOfMonths,
259
- readOnly,
260
- enableOutsideDays,
261
- transitionDuration,
262
- firstDayOfWeek,
263
- keepOpenOnDateSelect,
264
- hideKeyboardShortcutsPanel,
265
- onPrevMonthClick,
266
- onNextMonthClick,
267
- onClose,
268
- phrases,
269
- placeholder,
270
- displayFormatDay,
271
- isDayBlocked,
272
- isOutsideRange,
273
- isDayHighlighted,
274
- tabIndex,
275
- zIndex,
276
- pickerProps,
277
- calendarProps,
278
- focusCurrentDate
279
- } = this.props;
280
- const safedate = this.getSafeValue();
281
- const safeInputValue = this.getSafeInputValue();
282
- const hasSelectedDate = !!safedate;
283
- return /*#__PURE__*/_jsx(DSInputGroup, {
284
- rightAddon: /*#__PURE__*/_jsx(DatePickerDropdown, {
285
- pickerRef: this.state.pickerRef,
286
- disabled: disabled,
287
- isOpen: inputFocused,
288
- menu: /*#__PURE__*/_jsx("div", {
289
- style: {
290
- minHeight: '310px',
291
- zIndex: 1
292
- },
293
- className: hasSelectedDate ? 'has-selected-date' : 'without-selected-date',
294
- "data-testid": "date-picker-portal-wrapper"
295
- }, void 0, /*#__PURE__*/_jsx(DSDatePickerController, {
296
- date: safedate,
297
- displayFormatDay: displayFormatDay,
298
- enableOutsideDays: enableOutsideDays,
299
- firstDayOfWeek: firstDayOfWeek,
300
- hideKeyboardShortcutsPanel: hideKeyboardShortcutsPanel,
301
- isDayBlocked: isDayBlocked,
302
- isDayHighlighted: isDayHighlighted,
303
- isOutsideRange: isOutsideRange,
304
- keepOpenOnDateSelect: keepOpenOnDateSelect,
305
- numberOfMonths: numberOfMonths,
306
- onClickEscape: this.handleClickEscape,
307
- onClose: function () {
308
- if (_this.state.pickerRef.current) _this.state.pickerRef.current.focus();
309
- onClose(...arguments);
310
-
311
- _this.setState({
312
- inputFocused: false
313
- });
314
- },
315
- onDateChange: this.handleDateChange,
316
- onFocusChange: this.handleFocus,
317
- onNextMonthClick: onNextMonthClick,
318
- onOutsideClick: this.handleCalendarClose,
319
- onPrevMonthClick: onPrevMonthClick,
320
- phrases: phrases,
321
- transitionDuration: transitionDuration,
322
- calendarProps: calendarProps,
323
- focusCurrentDate: focusCurrentDate
324
- })),
325
- onClick: this.onClickPicker,
326
- readOnly: readOnly,
327
- zIndex: zIndex,
328
- pickerProps: pickerProps
329
- })
330
- }, void 0, /*#__PURE__*/_jsx(DSDateInputV2, {
331
- "data-testid": "datepicker-input",
332
- "aria-label": placeholder || 'Date Picker Input',
333
- disabled: disabled,
334
- onBlur: this.handleOnBlur,
335
- onChange: this.handleInputChange,
336
- onDateChange: this.handleChange,
337
- onFocus: this.handleInputFocus,
338
- placeholder: placeholder,
339
- tabIndex: tabIndex,
340
- value: safeInputValue
341
- }));
342
- }
343
-
344
- }
345
-
346
- export { DSdatePickerImpl as default };
@@ -1,350 +0,0 @@
1
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
- import _jsx from '@babel/runtime/helpers/esm/jsx';
3
- import 'core-js/modules/esnext.async-iterator.filter.js';
4
- import 'core-js/modules/esnext.iterator.constructor.js';
5
- import 'core-js/modules/esnext.iterator.filter.js';
6
- import 'core-js/modules/web.dom-collections.iterator.js';
7
- import 'core-js/modules/esnext.async-iterator.for-each.js';
8
- import 'core-js/modules/esnext.iterator.for-each.js';
9
- import React from 'react';
10
- import { debounce } from 'lodash';
11
- import PropTypes from 'prop-types';
12
- import moment from 'moment';
13
- import 'react-dates/initialize';
14
- import { DayPickerSingleDateController } from 'react-dates';
15
- import { convertPropToCssClassName } from '@elliemae/ds-classnames';
16
- import { ChevronLeft } from '@elliemae/ds-icons';
17
- import { SingleDatePickerPhrases } from '../../defaultPhrases.js';
18
- import { renderMonthElement } from '../DatePickerRenderMonth/DatePickerRenderMonth.js';
19
- import Navigation from '../DatePickerNavigation/DatePickerNavigation.js';
20
- import Day from '../DatePickerDay/DatePickerDay.js';
21
- import { jsx } from 'react/jsx-runtime';
22
-
23
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
24
-
25
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
26
- const {
27
- classNameElement,
28
- classNameBlock
29
- } = convertPropToCssClassName('datepicker-range');
30
- const focusElementOnOpen = debounce((datePickerDom, firstFocusableItemDom, focusCurrentDate) => {
31
- if (datePickerDom) {
32
- const currentDay = Array.from(datePickerDom === null || datePickerDom === void 0 ? void 0 : datePickerDom.getElementsByClassName('CalendarDay__today')).filter(el => !el.className.includes('CalendarDay__outside'))[0];
33
- const [calendarDaySelected] = datePickerDom === null || datePickerDom === void 0 ? void 0 : datePickerDom.getElementsByClassName('CalendarDay__selected');
34
-
35
- if (calendarDaySelected) {
36
- var _calendarDaySelected$;
37
-
38
- calendarDaySelected === null || calendarDaySelected === void 0 ? void 0 : (_calendarDaySelected$ = calendarDaySelected.focus) === null || _calendarDaySelected$ === void 0 ? void 0 : _calendarDaySelected$.call(calendarDaySelected);
39
- } else if (focusCurrentDate && !calendarDaySelected) currentDay.focus();else {
40
- var _navButton$focus;
41
-
42
- const navButton = firstFocusableItemDom === null || firstFocusableItemDom === void 0 ? void 0 : firstFocusableItemDom.closest('.DayPickerNavigation_button>div');
43
- navButton === null || navButton === void 0 ? void 0 : (_navButton$focus = navButton.focus) === null || _navButton$focus === void 0 ? void 0 : _navButton$focus.call(navButton);
44
- }
45
- }
46
- }, 100);
47
- class DSDatePickerController extends React.Component {
48
- // eslint-disable-next-line react/static-property-placement
49
- constructor(props) {
50
- super(props);
51
-
52
- this.handleMouseUp = () => {
53
- var _focusedElement$blur;
54
-
55
- const focusedElement = document.activeElement;
56
- focusedElement === null || focusedElement === void 0 ? void 0 : (_focusedElement$blur = focusedElement.blur) === null || _focusedElement$blur === void 0 ? void 0 : _focusedElement$blur.call(focusedElement);
57
- };
58
-
59
- this.handleKeyDown = event => {
60
- const [firstDay, ...restOfDays] = document.getElementsByClassName('CalendarMonthGrid_month__horizontal')[1].getElementsByClassName('CalendarDay');
61
- const [lastDay] = restOfDays.slice(-1);
62
- const {
63
- onClickEscape
64
- } = this.props;
65
-
66
- switch (event.key) {
67
- case 'Home':
68
- firstDay.focus();
69
- break;
70
-
71
- case 'End':
72
- lastDay.focus();
73
- break;
74
-
75
- case 'Escape':
76
- onClickEscape();
77
- break;
78
- }
79
- };
80
-
81
- this.getSafeValue = () => {
82
- const {
83
- value,
84
- date,
85
- defaultValue
86
- } = this.props;
87
- const {
88
- selectedDate
89
- } = this.state;
90
- if (value) return moment(value);
91
- if (date) return moment(date);
92
- if (defaultValue) return moment(defaultValue);
93
- if (selectedDate) return moment(selectedDate);
94
- return null;
95
- };
96
-
97
- this.isControlled = () => {
98
- const {
99
- value,
100
- date
101
- } = this.props;
102
- return Boolean(value) || Boolean(date);
103
- };
104
-
105
- this.handleDateChange = date => {
106
- const {
107
- readOnly,
108
- onDateChange,
109
- onChange
110
- } = this.props;
111
-
112
- if (!readOnly) {
113
- if (!this.isControlled()) {
114
- this.setState({
115
- selectedDate: date
116
- });
117
- }
118
-
119
- onDateChange(date);
120
- onChange(date);
121
- }
122
- };
123
-
124
- this.handleChange = dataInput => {
125
- const {
126
- onDateChange,
127
- onChange
128
- } = this.props;
129
- const momentvalue = moment(dataInput.target.value);
130
- this.setState({
131
- selectedDate: momentvalue
132
- });
133
- onDateChange(momentvalue);
134
- onChange(momentvalue);
135
- };
136
-
137
- this.handleNavClick = (date, nav) => {
138
- const [prev, next] = document.getElementsByClassName('DayPickerNavigation_button');
139
- const {
140
- onPrevMonthClick,
141
- onNextMonthClick
142
- } = this.props;
143
-
144
- if (nav === 'prev') {
145
- var _prev$focus;
146
-
147
- prev === null || prev === void 0 ? void 0 : (_prev$focus = prev.focus) === null || _prev$focus === void 0 ? void 0 : _prev$focus.call(prev);
148
- onPrevMonthClick(date);
149
- } else {
150
- var _next$focus;
151
-
152
- next === null || next === void 0 ? void 0 : (_next$focus = next.focus) === null || _next$focus === void 0 ? void 0 : _next$focus.call(next);
153
- onNextMonthClick(date);
154
- }
155
- };
156
-
157
- this.insideBlur = event => {
158
- const {
159
- datePicker
160
- } = this.state;
161
-
162
- if (!datePicker.current.contains(event.currentTarget)) {
163
- this.props.onClose();
164
- }
165
- };
166
-
167
- this.state = {
168
- selectedDate: null,
169
- firstFocusableItem: /*#__PURE__*/React.createRef(),
170
- datePicker: /*#__PURE__*/React.createRef()
171
- };
172
- }
173
-
174
- componentDidMount() {
175
- const {
176
- datePicker,
177
- firstFocusableItem
178
- } = this.state;
179
- datePicker.current.addEventListener('mouseup', this.handleMouseUp, false);
180
- document.addEventListener('keydown', this.handleKeyDown, false);
181
- setTimeout(() => {
182
- focusElementOnOpen(datePicker === null || datePicker === void 0 ? void 0 : datePicker.current, firstFocusableItem === null || firstFocusableItem === void 0 ? void 0 : firstFocusableItem.current, this.props.focusCurrentDate);
183
- }, 400);
184
- }
185
-
186
- componentWillUnmount() {
187
- const {
188
- datePicker
189
- } = this.state;
190
- datePicker.current.removeEventListener('mouseup', this.handleMouseUp, false);
191
- document.removeEventListener('keydown', this.handleKeyDown, false);
192
- }
193
-
194
- render() {
195
- const {
196
- numberOfMonths,
197
- enableOutsideDays,
198
- transitionDuration,
199
- initialVisibleMonth,
200
- firstDayOfWeek,
201
- keepOpenOnDateSelect,
202
- hideKeyboardShortcutsPanel,
203
- onClose,
204
- phrases,
205
- displayFormatDay,
206
- isDayBlocked,
207
- isOutsideRange,
208
- isDayHighlighted,
209
- onOutsideClick,
210
- key,
211
- calendarProps
212
- } = this.props;
213
- const {
214
- datePicker,
215
- firstFocusableItem
216
- } = this.state;
217
- const safedate = this.getSafeValue();
218
- const safeinitialMonth = safedate && safedate.isValid() ? () => safedate : () => initialVisibleMonth;
219
- return /*#__PURE__*/_jsx("div", {}, void 0, /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({
220
- onBlur: this.insideBlur,
221
- ref: datePicker,
222
- className: classNameBlock('wrapper-day-picker-single-date-controller'),
223
- "data-testid": "calendar-wrapper"
224
- }, calendarProps), {}, {
225
- children: /*#__PURE__*/_jsx(DayPickerSingleDateController, {
226
- date: safedate,
227
- enableOutsideDays: enableOutsideDays,
228
- firstDayOfWeek: firstDayOfWeek,
229
- focused: true,
230
- hideKeyboardShortcutsPanel: hideKeyboardShortcutsPanel,
231
- initialVisibleMonth: safeinitialMonth,
232
- isDayBlocked: isDayBlocked,
233
- isDayHighlighted: isDayHighlighted,
234
- isOutsideRange: isOutsideRange,
235
- keepOpenOnDateSelect: keepOpenOnDateSelect,
236
- navNext: /*#__PURE__*/_jsx(Navigation, {
237
- className: classNameElement('navigation-next')
238
- }),
239
- navPrev: /*#__PURE__*/_jsx(Navigation, {
240
- className: classNameElement('navigation-prev'),
241
- icon: ChevronLeft,
242
- innerRef: firstFocusableItem
243
- }),
244
- renderMonthElement: renderMonthElement,
245
- numberOfMonths: numberOfMonths,
246
- onClose: onClose,
247
- onDateChange: this.handleDateChange,
248
- onNextMonthClick: e => {
249
- this.handleNavClick(e, 'next');
250
- },
251
- onOutsideClick: onOutsideClick,
252
- onPrevMonthClick: e => {
253
- this.handleNavClick(e, 'prev');
254
- },
255
- phrases: phrases,
256
- renderDayContents: date => /*#__PURE__*/_jsx(Day, {
257
- className: classNameElement('day-contents'),
258
- date: date.format(displayFormatDay)
259
- }),
260
- transitionDuration: transitionDuration,
261
- onTab: e => {
262
- if (e.target.classList.contains('CalendarDay')) {
263
- e.preventDefault();
264
- onClose();
265
- }
266
- }
267
- }, key)
268
- })));
269
- }
270
-
271
- }
272
- DSDatePickerController.defaultProps = {
273
- date: '',
274
- value: '',
275
- enableOutsideDays: false,
276
- initialVisibleMonth: moment(),
277
- firstDayOfWeek: 0,
278
- keepOpenOnDateSelect: true,
279
- hideKeyboardShortcutsPanel: true,
280
- onPrevMonthClick: () => null,
281
- onNextMonthClick: () => null,
282
- onClose: () => null,
283
- onChange: () => null,
284
- onClickEscape: () => null,
285
- onDateChange: () => null,
286
- phrases: SingleDatePickerPhrases,
287
- // displayFormat: 'L',
288
- displayFormatDay: 'D',
289
- transitionDuration: 0,
290
- // verticalSpacing: 0,
291
- isDayBlocked: () => false,
292
- isOutsideRange: () => false,
293
- isDayHighlighted: () => false,
294
- numberOfMonths: 1
295
- };
296
- DSDatePickerController.defaultProps = {
297
- date: '',
298
- value: '',
299
- enableOutsideDays: false,
300
- initialVisibleMonth: moment(),
301
- firstDayOfWeek: 0,
302
- keepOpenOnDateSelect: true,
303
- hideKeyboardShortcutsPanel: true,
304
- onPrevMonthClick: () => null,
305
- onNextMonthClick: () => null,
306
- onClose: () => null,
307
- onClickEscape: () => null,
308
- onChange: () => null,
309
- onDateChange: () => null,
310
- phrases: PropTypes.shape({
311
- calendarLabel: PropTypes.string,
312
- closeDatePicker: PropTypes.string,
313
- clearDates: PropTypes.string,
314
- focusStartDate: PropTypes.string,
315
- jumpToPrevMonth: PropTypes.string,
316
- jumpToNextMonth: PropTypes.string,
317
- keyboardShortcuts: PropTypes.string,
318
- showKeyboardShortcutsPanel: PropTypes.string,
319
- hideKeyboardShortcutsPanel: PropTypes.string,
320
- openThisPanel: PropTypes.string,
321
- enterKey: PropTypes.string,
322
- leftArrowRightArrow: PropTypes.string,
323
- upArrowDownArrow: PropTypes.string,
324
- pageUpPageDown: PropTypes.string,
325
- homeEnd: PropTypes.string,
326
- escape: PropTypes.string,
327
- questionMark: PropTypes.string,
328
- selectFocusedDate: PropTypes.string,
329
- moveFocusByOneDay: PropTypes.string,
330
- moveFocusByOneWeek: PropTypes.string,
331
- moveFocusByOneMonth: PropTypes.string,
332
- moveFocustoStartAndEndOfWeek: PropTypes.string,
333
- returnFocusToInput: PropTypes.string,
334
- keyboardNavigationInstructions: PropTypes.string,
335
- chooseAvailableStartDate: PropTypes.func,
336
- chooseAvailableEndDate: PropTypes.func,
337
- dateIsUnavailable: PropTypes.func,
338
- dateIsSelected: PropTypes.func
339
- }),
340
- // displayFormat: 'L',
341
- displayFormatDay: 'D',
342
- transitionDuration: 0,
343
- // verticalSpacing: 0,
344
- isDayBlocked: () => false,
345
- isOutsideRange: () => false,
346
- isDayHighlighted: () => false,
347
- numberOfMonths: 1
348
- };
349
-
350
- export { DSDatePickerController as default };
@@ -1,18 +0,0 @@
1
- import _jsx from '@babel/runtime/helpers/esm/jsx';
2
- import 'react';
3
-
4
- const Day = _ref => {
5
- let {
6
- className = 'date-picker-content-day',
7
- date = ''
8
- } = _ref;
9
- return /*#__PURE__*/_jsx("div", {
10
- className: className,
11
- "data-testid": "datepicker-day-".concat(date)
12
- }, void 0, /*#__PURE__*/_jsx("div", {
13
- className: "".concat(className, "-half"),
14
- "data-testid": "datepicker-day"
15
- }, void 0, date));
16
- };
17
-
18
- export { Day as default };