@elliemae/ds-date-picker 2.2.0-next.4 → 2.3.0-alpha.2

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 (76) hide show
  1. package/cjs/DSDatePicker.js +219 -221
  2. package/cjs/DSDatePicker.js.map +7 -0
  3. package/cjs/components/DSDatePickerImpl.js +128 -208
  4. package/cjs/components/DSDatePickerImpl.js.map +7 -0
  5. package/cjs/components/DatePickerController/DatePickerController.js +204 -242
  6. package/cjs/components/DatePickerController/DatePickerController.js.map +7 -0
  7. package/cjs/components/DatePickerDay/DatePickerDay.js +48 -23
  8. package/cjs/components/DatePickerDay/DatePickerDay.js.map +7 -0
  9. package/cjs/components/DatePickerDropdown.js +74 -54
  10. package/cjs/components/DatePickerDropdown.js.map +7 -0
  11. package/cjs/components/DatePickerHeader/DatePickerHeader.js +62 -44
  12. package/cjs/components/DatePickerHeader/DatePickerHeader.js.map +7 -0
  13. package/cjs/components/DatePickerNavigation/DatePickerNavigation.js +62 -31
  14. package/cjs/components/DatePickerNavigation/DatePickerNavigation.js.map +7 -0
  15. package/cjs/components/DatePickerPicker/DatePickerPicker.js +82 -71
  16. package/cjs/components/DatePickerPicker/DatePickerPicker.js.map +7 -0
  17. package/cjs/components/DatePickerRange/DatePickerRange.js +84 -93
  18. package/cjs/components/DatePickerRange/DatePickerRange.js.map +7 -0
  19. package/cjs/components/DatePickerRangeHeader/DatePickerRangeHeader.js +91 -97
  20. package/cjs/components/DatePickerRangeHeader/DatePickerRangeHeader.js.map +7 -0
  21. package/cjs/components/DatePickerRenderMonth/DatePickerRenderMonth.js +60 -45
  22. package/cjs/components/DatePickerRenderMonth/DatePickerRenderMonth.js.map +7 -0
  23. package/cjs/components/DatePickerSingleDate/DatePickerSingleDate.js +88 -77
  24. package/cjs/components/DatePickerSingleDate/DatePickerSingleDate.js.map +7 -0
  25. package/cjs/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js +69 -48
  26. package/cjs/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js.map +7 -0
  27. package/cjs/components/index.js +53 -27
  28. package/cjs/components/index.js.map +7 -0
  29. package/cjs/defaultPhrases.js +77 -92
  30. package/cjs/defaultPhrases.js.map +7 -0
  31. package/cjs/index.js +38 -35
  32. package/cjs/index.js.map +7 -0
  33. package/esm/DSDatePicker.js +171 -169
  34. package/esm/DSDatePicker.js.map +7 -0
  35. package/esm/components/DSDatePickerImpl.js +88 -189
  36. package/esm/components/DSDatePickerImpl.js.map +7 -0
  37. package/esm/components/DatePickerController/DatePickerController.js +141 -198
  38. package/esm/components/DatePickerController/DatePickerController.js.map +7 -0
  39. package/esm/components/DatePickerDay/DatePickerDay.js +19 -17
  40. package/esm/components/DatePickerDay/DatePickerDay.js.map +7 -0
  41. package/esm/components/DatePickerDropdown.js +45 -46
  42. package/esm/components/DatePickerDropdown.js.map +7 -0
  43. package/esm/components/DatePickerHeader/DatePickerHeader.js +31 -35
  44. package/esm/components/DatePickerHeader/DatePickerHeader.js.map +7 -0
  45. package/esm/components/DatePickerNavigation/DatePickerNavigation.js +36 -24
  46. package/esm/components/DatePickerNavigation/DatePickerNavigation.js.map +7 -0
  47. package/esm/components/DatePickerPicker/DatePickerPicker.js +44 -48
  48. package/esm/components/DatePickerPicker/DatePickerPicker.js.map +7 -0
  49. package/esm/components/DatePickerRange/DatePickerRange.js +49 -79
  50. package/esm/components/DatePickerRange/DatePickerRange.js.map +7 -0
  51. package/esm/components/DatePickerRangeHeader/DatePickerRangeHeader.js +50 -78
  52. package/esm/components/DatePickerRangeHeader/DatePickerRangeHeader.js.map +7 -0
  53. package/esm/components/DatePickerRenderMonth/DatePickerRenderMonth.js +31 -37
  54. package/esm/components/DatePickerRenderMonth/DatePickerRenderMonth.js.map +7 -0
  55. package/esm/components/DatePickerSingleDate/DatePickerSingleDate.js +56 -66
  56. package/esm/components/DatePickerSingleDate/DatePickerSingleDate.js.map +7 -0
  57. package/esm/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js +40 -42
  58. package/esm/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js.map +7 -0
  59. package/esm/components/index.js +24 -10
  60. package/esm/components/index.js.map +7 -0
  61. package/esm/defaultPhrases.js +48 -80
  62. package/esm/defaultPhrases.js.map +7 -0
  63. package/esm/index.js +9 -13
  64. package/esm/index.js.map +7 -0
  65. package/package.json +10 -10
  66. package/types/components/DSDatePickerImpl.d.ts +2 -1
  67. package/types/components/DatePickerController/DatePickerController.d.ts +1 -1
  68. package/types/components/DatePickerDay/DatePickerDay.d.ts +1 -0
  69. package/types/components/DatePickerDropdown.d.ts +1 -0
  70. package/types/components/DatePickerHeader/DatePickerHeader.d.ts +1 -0
  71. package/types/components/DatePickerNavigation/DatePickerNavigation.d.ts +4 -3
  72. package/types/components/DatePickerPicker/DatePickerPicker.d.ts +2 -1
  73. package/types/components/DatePickerRange/DatePickerRange.d.ts +1 -0
  74. package/types/components/DatePickerRangeHeader/DatePickerRangeHeader.d.ts +1 -0
  75. package/types/components/DatePickerSingleDate/DatePickerSingleDate.d.ts +1 -0
  76. package/types/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.d.ts +1 -0
@@ -1,113 +1,93 @@
1
- 'use strict';
2
-
3
- var _jsx = require('@babel/runtime/helpers/jsx');
4
- require('core-js/modules/web.dom-collections.iterator.js');
5
- var React = require('react');
6
- var moment = require('moment');
7
- var dsForm = require('@elliemae/ds-form');
8
- var DatePickerController = require('./DatePickerController/DatePickerController.js');
9
- var DatePickerDropdown = require('./DatePickerDropdown.js');
10
-
11
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
-
13
- var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
14
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
15
- var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
16
-
17
- const FORMAT = 'MMDDYYYY';
18
- class DSdatePickerImpl extends React__default["default"].Component {
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var DSDatePickerImpl_exports = {};
29
+ __export(DSDatePickerImpl_exports, {
30
+ DSDatePickerImpl: () => DSDatePickerImpl,
31
+ default: () => DSDatePickerImpl
32
+ });
33
+ var React = __toESM(require("react"));
34
+ var import_react = __toESM(require("react"));
35
+ var import_moment = __toESM(require("moment"));
36
+ var import_ds_form = require("@elliemae/ds-form");
37
+ var import_DatePickerController = require("./DatePickerController/DatePickerController");
38
+ var import_DatePickerDropdown = require("./DatePickerDropdown");
39
+ const FORMAT = "MMDDYYYY";
40
+ class DSDatePickerImpl extends import_react.default.Component {
19
41
  constructor(props) {
20
42
  super(props);
21
-
22
43
  this.onClickPicker = () => {
23
- this.setState({
24
- inputFocused: true
25
- });
44
+ this.setState({ inputFocused: true });
26
45
  };
27
-
28
46
  this.getSafeValue = () => {
29
- const {
30
- value,
31
- date,
32
- defaultValue
33
- } = this.props;
34
- const {
35
- selectedDate
36
- } = this.state;
37
-
47
+ const { value, date, defaultValue } = this.props;
48
+ const { selectedDate } = this.state;
38
49
  if (value) {
39
- return moment__default["default"](value, FORMAT, true);
50
+ return (0, import_moment.default)(value, FORMAT, true);
40
51
  }
41
-
42
52
  if (date) {
43
- return moment__default["default"](date, FORMAT, true);
53
+ return (0, import_moment.default)(date, FORMAT, true);
44
54
  }
45
-
46
55
  if (defaultValue) {
47
- return moment__default["default"](defaultValue, FORMAT, true);
56
+ return (0, import_moment.default)(defaultValue, FORMAT, true);
48
57
  }
49
-
50
58
  if (selectedDate) {
51
59
  return selectedDate;
52
60
  }
53
-
54
61
  return null;
55
62
  };
56
-
57
63
  this.getSafeInputValue = () => {
58
64
  const safeValue = this.getSafeValue();
59
-
60
65
  if (safeValue && safeValue.isValid()) {
61
66
  return safeValue.format(FORMAT);
62
67
  }
63
-
64
- const {
65
- dataInput
66
- } = this.state;
68
+ const { dataInput } = this.state;
67
69
  return dataInput;
68
70
  };
69
-
70
71
  this.isControlled = () => {
71
- const {
72
- value,
73
- date
74
- } = this.props;
72
+ const { value, date } = this.props;
75
73
  return Boolean(value) || Boolean(date);
76
74
  };
77
-
78
75
  this.handleDateChange = (date, event) => {
79
- const {
80
- readOnly,
81
- onDateChange,
82
- keepOpenOnDateSelect,
83
- onChange,
84
- onBlur
85
- } = this.props;
86
-
76
+ const { readOnly, onDateChange, keepOpenOnDateSelect, onChange, onBlur } = this.props;
87
77
  if (!readOnly) {
88
78
  if (!this.isControlled()) {
89
- this.setState({
90
- dataInput: date.format(FORMAT),
91
- selectedDate: date
92
- });
79
+ this.setState({ dataInput: date.format(FORMAT), selectedDate: date });
93
80
  }
94
-
95
81
  onChange(date.format(FORMAT), date);
96
82
  onDateChange(date);
97
-
98
- if (!keepOpenOnDateSelect || event.key === 'Enter') {
99
- this.setState({
100
- inputFocused: false
101
- });
83
+ if (!keepOpenOnDateSelect || event.key === "Enter") {
84
+ this.setState({ inputFocused: false });
102
85
  onBlur(date.format(FORMAT), date);
103
86
  }
104
87
  }
105
88
  };
106
-
107
89
  this.handleInputChange = (dataInput, newDate) => {
108
- const {
109
- onChange
110
- } = this.props;
90
+ const { onChange } = this.props;
111
91
  const newState = {
112
92
  dataInput,
113
93
  selectedDate: newDate
@@ -115,152 +95,98 @@ class DSdatePickerImpl extends React__default["default"].Component {
115
95
  this.setState(() => newState);
116
96
  onChange(dataInput, newDate);
117
97
  };
118
-
119
- this.handleChange = newDate => {
120
- if (!newDate) return;
121
- const {
122
- onDateChange
123
- } = this.props;
124
- const momentValue = moment__default["default"](newDate, FORMAT, true);
125
- if (!momentValue.isValid()) return;
126
- this.setState({
127
- selectedDate: momentValue
128
- });
98
+ this.handleChange = (newDate) => {
99
+ if (!newDate)
100
+ return;
101
+ const { onDateChange } = this.props;
102
+ const momentValue = (0, import_moment.default)(newDate, FORMAT, true);
103
+ if (!momentValue.isValid())
104
+ return;
105
+ this.setState({ selectedDate: momentValue });
129
106
  onDateChange(momentValue);
130
107
  };
131
-
132
- this.handleFocus = _ref => {
133
- let {
134
- focused
135
- } = _ref;
136
- this.setState({
137
- inputFocused: focused
138
- });
108
+ this.handleFocus = ({ focused }) => {
109
+ this.setState({ inputFocused: focused });
139
110
  };
140
-
141
111
  this.handleCalendarClose = () => {
142
- const {
143
- onClose
144
- } = this.props;
145
- this.setState({
146
- inputFocused: false
147
- });
112
+ const { onClose } = this.props;
113
+ this.setState({ inputFocused: false });
148
114
  this.handleOnBlur();
149
115
  onClose();
150
116
  };
151
-
152
117
  this.handleClickEscape = () => {
153
- const {
154
- onClose
155
- } = this.props;
156
- this.setState({
157
- inputFocused: false
158
- });
118
+ const { onClose } = this.props;
119
+ this.setState({ inputFocused: false });
159
120
  this.handleOnBlur();
160
121
  onClose();
161
122
  };
162
-
163
123
  this.handleOnBlur = () => {
164
124
  setTimeout(() => {
165
- const {
166
- onBlur,
167
- autoClear
168
- } = this.props;
169
- const {
170
- dataInput,
171
- selectedDate
172
- } = this.state;
173
-
174
- if (moment__default["default"](selectedDate, FORMAT, true).isValid()) {
125
+ const { onBlur, autoClear } = this.props;
126
+ const { dataInput, selectedDate } = this.state;
127
+ if ((0, import_moment.default)(selectedDate, FORMAT, true).isValid()) {
175
128
  onBlur(dataInput, selectedDate);
176
129
  } else {
177
130
  if (autoClear) {
178
- this.setState({
179
- dataInput: undefined
180
- });
131
+ this.setState({ dataInput: void 0 });
181
132
  }
182
-
183
133
  onBlur(dataInput, null);
184
134
  }
185
135
  });
186
136
  };
187
-
188
- this.handleInputFocus = dataInput => {
189
- const {
190
- onFocus
191
- } = this.props;
137
+ this.handleInputFocus = (dataInput) => {
138
+ const { onFocus } = this.props;
192
139
  onFocus(dataInput);
193
140
  };
194
-
195
141
  this.state = {
196
- pickerRef: /*#__PURE__*/React__default["default"].createRef(),
197
- dataInput: '',
142
+ pickerRef: import_react.default.createRef(),
143
+ dataInput: "",
198
144
  selectedDate: null,
199
145
  inputFocused: false
200
146
  };
201
147
  }
202
-
203
148
  static getDerivedStateFromProps(nextProps, prevState) {
204
- const {
205
- dataInput: prevVal,
206
- selectedDate: prevDate
207
- } = prevState || {};
208
- const {
209
- value: nextVal,
210
- date: nextDate
211
- } = nextProps;
212
- const isPrevValMoment = prevVal instanceof moment__default["default"];
213
- const isPrevDateMoment = prevDate instanceof moment__default["default"];
214
- const prevValAsString = isPrevValMoment ? prevVal.format(FORMAT) : prevVal; // if users wants to clear, we use '==' to catch both undefined AND null
215
-
149
+ const { dataInput: prevVal, selectedDate: prevDate } = prevState || {};
150
+ const { value: nextVal, date: nextDate } = nextProps;
151
+ const isPrevValMoment = prevVal instanceof import_moment.default;
152
+ const isPrevDateMoment = prevDate instanceof import_moment.default;
153
+ const prevValAsString = isPrevValMoment ? prevVal.format(FORMAT) : prevVal;
216
154
  if (nextVal == null && nextDate == null) {
217
155
  return {
218
- dataInput: '',
156
+ dataInput: "",
219
157
  selectedDate: null
220
158
  };
221
- } // when val is an incomplete state, we don't want to mess with the state
222
- // it's incomplete when length is not the full mmddyyyy (length === 8)
223
-
224
-
225
- if ((prevValAsString === null || prevValAsString === void 0 ? void 0 : prevValAsString.length) < 8) {
159
+ }
160
+ if (prevValAsString?.length < 8) {
226
161
  return null;
227
162
  }
228
-
229
163
  const prevDateAsString = isPrevDateMoment ? prevDate.format(FORMAT) : prevDate;
230
- const isNextValMoment = nextVal instanceof moment__default["default"];
231
- const isNextDateMoment = nextDate instanceof moment__default["default"];
164
+ const isNextValMoment = nextVal instanceof import_moment.default;
165
+ const isNextDateMoment = nextDate instanceof import_moment.default;
232
166
  const nextValAsString = isNextValMoment ? nextVal.format(FORMAT) : nextVal;
233
- const nextValAsMoment = isNextValMoment ? nextVal : moment__default["default"](nextVal);
167
+ const nextValAsMoment = isNextValMoment ? nextVal : (0, import_moment.default)(nextVal);
234
168
  const nextDateAsString = isNextDateMoment ? nextDate.format(FORMAT) : nextDate;
235
- const nextDateAsMoment = isNextDateMoment ? nextDate : moment__default["default"](nextDate);
169
+ const nextDateAsMoment = isNextDateMoment ? nextDate : (0, import_moment.default)(nextDate);
236
170
  const hasValChanged = nextValAsString !== prevValAsString;
237
171
  const hasDateChanged = nextDateAsString !== prevDateAsString;
238
172
  const newState = {};
239
- let skipStateChange = true; // value has priority over date, if both date and value change we take date
240
- // as such, order of condition is meaningful
241
-
173
+ let skipStateChange = true;
242
174
  if (hasDateChanged) {
243
175
  skipStateChange = false;
244
176
  newState.dataInput = nextDateAsString;
245
177
  newState.selectedDate = nextDateAsMoment;
246
178
  }
247
-
248
179
  if (hasValChanged) {
249
180
  skipStateChange = false;
250
181
  newState.dataInput = nextValAsString;
251
182
  newState.selectedDate = nextValAsMoment;
252
183
  }
253
-
254
- if (skipStateChange) return null;
184
+ if (skipStateChange)
185
+ return null;
255
186
  return newState;
256
187
  }
257
-
258
188
  render() {
259
- var _this = this;
260
-
261
- const {
262
- inputFocused
263
- } = this.state;
189
+ const { inputFocused } = this.state;
264
190
  const {
265
191
  disabled,
266
192
  numberOfMonths,
@@ -288,67 +214,61 @@ class DSdatePickerImpl extends React__default["default"].Component {
288
214
  const safedate = this.getSafeValue();
289
215
  const safeInputValue = this.getSafeInputValue();
290
216
  const hasSelectedDate = !!safedate;
291
- return /*#__PURE__*/_jsx__default["default"](dsForm.DSInputGroup, {
292
- rightAddon: /*#__PURE__*/_jsx__default["default"](DatePickerDropdown, {
217
+ return /* @__PURE__ */ import_react.default.createElement(import_ds_form.DSInputGroup, {
218
+ rightAddon: /* @__PURE__ */ import_react.default.createElement(import_DatePickerDropdown.DatePickerDropdown, {
293
219
  pickerRef: this.state.pickerRef,
294
- disabled: disabled,
220
+ disabled,
295
221
  isOpen: inputFocused,
296
- menu: /*#__PURE__*/_jsx__default["default"]("div", {
297
- style: {
298
- minHeight: '310px',
299
- zIndex: 1
300
- },
301
- className: hasSelectedDate ? 'has-selected-date' : 'without-selected-date',
222
+ menu: /* @__PURE__ */ import_react.default.createElement("div", {
223
+ style: { minHeight: "310px", zIndex: 1 },
224
+ className: hasSelectedDate ? "has-selected-date" : "without-selected-date",
302
225
  "data-testid": "date-picker-portal-wrapper"
303
- }, void 0, /*#__PURE__*/_jsx__default["default"](DatePickerController, {
226
+ }, /* @__PURE__ */ import_react.default.createElement(import_DatePickerController.DSDatePickerController, {
304
227
  date: safedate,
305
- displayFormatDay: displayFormatDay,
306
- enableOutsideDays: enableOutsideDays,
307
- firstDayOfWeek: firstDayOfWeek,
308
- hideKeyboardShortcutsPanel: hideKeyboardShortcutsPanel,
309
- isDayBlocked: isDayBlocked,
310
- isDayHighlighted: isDayHighlighted,
311
- isOutsideRange: isOutsideRange,
312
- keepOpenOnDateSelect: keepOpenOnDateSelect,
313
- numberOfMonths: numberOfMonths,
228
+ displayFormatDay,
229
+ enableOutsideDays,
230
+ firstDayOfWeek,
231
+ hideKeyboardShortcutsPanel,
232
+ isDayBlocked,
233
+ isDayHighlighted,
234
+ isOutsideRange,
235
+ keepOpenOnDateSelect,
236
+ numberOfMonths,
314
237
  onClickEscape: this.handleClickEscape,
315
- onClose: function () {
316
- if (_this.state.pickerRef.current) _this.state.pickerRef.current.focus();
317
- onClose(...arguments);
318
-
319
- _this.setState({
320
- inputFocused: false
321
- });
238
+ onClose: (...args) => {
239
+ if (this.state.pickerRef.current)
240
+ this.state.pickerRef.current.focus();
241
+ onClose(...args);
242
+ this.setState({ inputFocused: false });
322
243
  },
323
244
  onDateChange: this.handleDateChange,
324
245
  onFocusChange: this.handleFocus,
325
- onNextMonthClick: onNextMonthClick,
246
+ onNextMonthClick,
326
247
  onOutsideClick: this.handleCalendarClose,
327
- onPrevMonthClick: onPrevMonthClick,
328
- phrases: phrases,
329
- transitionDuration: transitionDuration,
330
- calendarProps: calendarProps,
331
- focusCurrentDate: focusCurrentDate
248
+ onPrevMonthClick,
249
+ phrases,
250
+ transitionDuration,
251
+ calendarProps,
252
+ focusCurrentDate
332
253
  })),
333
254
  onClick: this.onClickPicker,
334
- readOnly: readOnly,
335
- zIndex: zIndex,
336
- pickerProps: pickerProps
255
+ readOnly,
256
+ zIndex,
257
+ pickerProps
337
258
  })
338
- }, void 0, /*#__PURE__*/_jsx__default["default"](dsForm.DSDateInputV2, {
259
+ }, /* @__PURE__ */ import_react.default.createElement(import_ds_form.DSDateInputV2, {
339
260
  "data-testid": "datepicker-input",
340
- "aria-label": placeholder || 'Date Picker Input',
341
- disabled: disabled,
261
+ "aria-label": placeholder || "Date Picker Input",
262
+ disabled,
342
263
  onBlur: this.handleOnBlur,
343
264
  onChange: this.handleInputChange,
344
265
  onDateChange: this.handleChange,
345
266
  onFocus: this.handleInputFocus,
346
- placeholder: placeholder,
347
- tabIndex: tabIndex,
267
+ placeholder,
268
+ tabIndex,
348
269
  value: safeInputValue
349
270
  }));
350
271
  }
351
-
352
272
  }
353
-
354
- module.exports = DSdatePickerImpl;
273
+ module.exports = __toCommonJS(DSDatePickerImpl_exports);
274
+ //# sourceMappingURL=DSDatePickerImpl.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/DSDatePickerImpl.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["/* eslint-disable max-statements */\n/* eslint-disable complexity */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable react/state-in-constructor */\n/* eslint-disable no-restricted-globals */\n/* eslint-disable react/prop-types */\n/* eslint-disable max-lines */\nimport React from 'react';\nimport moment from 'moment';\nimport { DSInputGroup, DSDateInputV2 } from '@elliemae/ds-form';\nimport { DSDatePickerController } from './DatePickerController/DatePickerController';\nimport { DatePickerDropdown } from './DatePickerDropdown';\n\nconst FORMAT = 'MMDDYYYY';\nexport default class DSDatePickerImpl extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n pickerRef: React.createRef(),\n dataInput: '',\n selectedDate: null,\n inputFocused: false,\n };\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const { dataInput: prevVal, selectedDate: prevDate } = prevState || {};\n const { value: nextVal, date: nextDate } = nextProps;\n\n const isPrevValMoment = prevVal instanceof moment;\n const isPrevDateMoment = prevDate instanceof moment;\n const prevValAsString = isPrevValMoment ? prevVal.format(FORMAT) : prevVal;\n\n // if users wants to clear, we use '==' to catch both undefined AND null\n if (nextVal == null && nextDate == null) {\n return {\n dataInput: '',\n selectedDate: null,\n };\n }\n\n // when val is an incomplete state, we don't want to mess with the state\n // it's incomplete when length is not the full mmddyyyy (length === 8)\n if (prevValAsString?.length < 8) {\n return null;\n }\n\n const prevDateAsString = isPrevDateMoment ? prevDate.format(FORMAT) : prevDate;\n\n const isNextValMoment = nextVal instanceof moment;\n const isNextDateMoment = nextDate instanceof moment;\n const nextValAsString = isNextValMoment ? nextVal.format(FORMAT) : nextVal;\n const nextValAsMoment = isNextValMoment ? nextVal : moment(nextVal);\n const nextDateAsString = isNextDateMoment ? nextDate.format(FORMAT) : nextDate;\n const nextDateAsMoment = isNextDateMoment ? nextDate : moment(nextDate);\n\n const hasValChanged = nextValAsString !== prevValAsString;\n const hasDateChanged = nextDateAsString !== prevDateAsString;\n\n const newState = {};\n let skipStateChange = true;\n\n // value has priority over date, if both date and value change we take date\n // as such, order of condition is meaningful\n if (hasDateChanged) {\n skipStateChange = false;\n newState.dataInput = nextDateAsString;\n newState.selectedDate = nextDateAsMoment;\n }\n\n if (hasValChanged) {\n skipStateChange = false;\n newState.dataInput = nextValAsString;\n newState.selectedDate = nextValAsMoment;\n }\n\n if (skipStateChange) return null;\n return newState;\n }\n\n onClickPicker = () => {\n this.setState({ inputFocused: true });\n };\n\n getSafeValue = () => {\n const { value, date, defaultValue } = this.props;\n const { selectedDate } = this.state;\n if (value) {\n return moment(value, FORMAT, true);\n }\n if (date) {\n return moment(date, FORMAT, true);\n }\n if (defaultValue) {\n return moment(defaultValue, FORMAT, true);\n }\n if (selectedDate) {\n return selectedDate;\n }\n return null;\n };\n\n getSafeInputValue = () => {\n const safeValue = this.getSafeValue();\n if (safeValue && safeValue.isValid()) {\n return safeValue.format(FORMAT);\n }\n const { dataInput } = this.state;\n return dataInput;\n };\n\n isControlled = () => {\n const { value, date } = this.props;\n return Boolean(value) || Boolean(date);\n };\n\n handleDateChange = (date, event) => {\n const { readOnly, onDateChange, keepOpenOnDateSelect, onChange, onBlur } = this.props;\n\n if (!readOnly) {\n if (!this.isControlled()) {\n this.setState({ dataInput: date.format(FORMAT), selectedDate: date });\n }\n onChange(date.format(FORMAT), date);\n onDateChange(date);\n if (!keepOpenOnDateSelect || event.key === 'Enter') {\n this.setState({ inputFocused: false });\n onBlur(date.format(FORMAT), date);\n }\n }\n };\n\n handleInputChange = (dataInput, newDate) => {\n const { onChange } = this.props;\n const newState = {\n dataInput,\n selectedDate: newDate,\n };\n this.setState(() => newState);\n onChange(dataInput, newDate);\n };\n\n handleChange = (newDate) => {\n if (!newDate) return;\n const { onDateChange } = this.props;\n const momentValue = moment(newDate, FORMAT, true);\n if (!momentValue.isValid()) return;\n this.setState({ selectedDate: momentValue });\n\n onDateChange(momentValue);\n };\n\n handleFocus = ({ focused }) => {\n this.setState({ inputFocused: focused });\n };\n\n handleCalendarClose = () => {\n const { onClose } = this.props;\n\n this.setState({ inputFocused: false });\n this.handleOnBlur();\n onClose();\n };\n\n handleClickEscape = () => {\n const { onClose } = this.props;\n\n this.setState({ inputFocused: false });\n this.handleOnBlur();\n onClose();\n };\n\n handleOnBlur = () => {\n setTimeout(() => {\n const { onBlur, autoClear } = this.props;\n const { dataInput, selectedDate } = this.state;\n\n if (moment(selectedDate, FORMAT, true).isValid()) {\n onBlur(dataInput, selectedDate);\n } else {\n if (autoClear) {\n this.setState({ dataInput: undefined });\n }\n onBlur(dataInput, null);\n }\n });\n };\n\n handleInputFocus = (dataInput) => {\n const { onFocus } = this.props;\n onFocus(dataInput);\n };\n\n render() {\n const { inputFocused } = this.state;\n const {\n disabled,\n numberOfMonths,\n readOnly,\n enableOutsideDays,\n transitionDuration,\n firstDayOfWeek,\n keepOpenOnDateSelect,\n hideKeyboardShortcutsPanel,\n onPrevMonthClick,\n onNextMonthClick,\n onClose,\n phrases,\n placeholder,\n displayFormatDay,\n isDayBlocked,\n isOutsideRange,\n isDayHighlighted,\n tabIndex,\n zIndex,\n pickerProps,\n calendarProps,\n focusCurrentDate,\n } = this.props;\n const safedate = this.getSafeValue();\n const safeInputValue = this.getSafeInputValue();\n const hasSelectedDate = !!safedate;\n return (\n <DSInputGroup\n rightAddon={\n <DatePickerDropdown\n pickerRef={this.state.pickerRef}\n disabled={disabled}\n isOpen={inputFocused}\n menu={\n <div\n style={{ minHeight: '310px', zIndex: 1 }}\n className={hasSelectedDate ? 'has-selected-date' : 'without-selected-date'}\n data-testid=\"date-picker-portal-wrapper\"\n >\n <DSDatePickerController\n date={safedate}\n displayFormatDay={displayFormatDay}\n enableOutsideDays={enableOutsideDays}\n firstDayOfWeek={firstDayOfWeek}\n hideKeyboardShortcutsPanel={hideKeyboardShortcutsPanel}\n isDayBlocked={isDayBlocked}\n isDayHighlighted={isDayHighlighted}\n isOutsideRange={isOutsideRange}\n keepOpenOnDateSelect={keepOpenOnDateSelect}\n numberOfMonths={numberOfMonths}\n onClickEscape={this.handleClickEscape}\n onClose={(...args) => {\n if (this.state.pickerRef.current) this.state.pickerRef.current.focus();\n onClose(...args);\n this.setState({ inputFocused: false });\n }}\n onDateChange={this.handleDateChange}\n onFocusChange={this.handleFocus}\n onNextMonthClick={onNextMonthClick}\n onOutsideClick={this.handleCalendarClose}\n onPrevMonthClick={onPrevMonthClick}\n phrases={phrases}\n transitionDuration={transitionDuration}\n calendarProps={calendarProps}\n focusCurrentDate={focusCurrentDate}\n />\n </div>\n }\n onClick={this.onClickPicker}\n readOnly={readOnly}\n zIndex={zIndex}\n pickerProps={pickerProps}\n />\n }\n >\n <DSDateInputV2\n data-testid=\"datepicker-input\"\n aria-label={placeholder || 'Date Picker Input'}\n disabled={disabled}\n onBlur={this.handleOnBlur}\n onChange={this.handleInputChange}\n onDateChange={this.handleChange}\n onFocus={this.handleInputFocus}\n placeholder={placeholder}\n tabIndex={tabIndex}\n value={safeInputValue}\n />\n </DSInputGroup>\n );\n }\n}\n\nexport { DSDatePickerImpl };\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }