@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.
- package/cjs/DSDatePicker.js +219 -221
- package/cjs/DSDatePicker.js.map +7 -0
- package/cjs/components/DSDatePickerImpl.js +128 -208
- package/cjs/components/DSDatePickerImpl.js.map +7 -0
- package/cjs/components/DatePickerController/DatePickerController.js +204 -242
- package/cjs/components/DatePickerController/DatePickerController.js.map +7 -0
- package/cjs/components/DatePickerDay/DatePickerDay.js +48 -23
- package/cjs/components/DatePickerDay/DatePickerDay.js.map +7 -0
- package/cjs/components/DatePickerDropdown.js +74 -54
- package/cjs/components/DatePickerDropdown.js.map +7 -0
- package/cjs/components/DatePickerHeader/DatePickerHeader.js +62 -44
- package/cjs/components/DatePickerHeader/DatePickerHeader.js.map +7 -0
- package/cjs/components/DatePickerNavigation/DatePickerNavigation.js +62 -31
- package/cjs/components/DatePickerNavigation/DatePickerNavigation.js.map +7 -0
- package/cjs/components/DatePickerPicker/DatePickerPicker.js +82 -71
- package/cjs/components/DatePickerPicker/DatePickerPicker.js.map +7 -0
- package/cjs/components/DatePickerRange/DatePickerRange.js +84 -93
- package/cjs/components/DatePickerRange/DatePickerRange.js.map +7 -0
- package/cjs/components/DatePickerRangeHeader/DatePickerRangeHeader.js +91 -97
- package/cjs/components/DatePickerRangeHeader/DatePickerRangeHeader.js.map +7 -0
- package/cjs/components/DatePickerRenderMonth/DatePickerRenderMonth.js +60 -45
- package/cjs/components/DatePickerRenderMonth/DatePickerRenderMonth.js.map +7 -0
- package/cjs/components/DatePickerSingleDate/DatePickerSingleDate.js +88 -77
- package/cjs/components/DatePickerSingleDate/DatePickerSingleDate.js.map +7 -0
- package/cjs/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js +69 -48
- package/cjs/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js.map +7 -0
- package/cjs/components/index.js +53 -27
- package/cjs/components/index.js.map +7 -0
- package/cjs/defaultPhrases.js +77 -92
- package/cjs/defaultPhrases.js.map +7 -0
- package/cjs/index.js +38 -35
- package/cjs/index.js.map +7 -0
- package/esm/DSDatePicker.js +171 -169
- package/esm/DSDatePicker.js.map +7 -0
- package/esm/components/DSDatePickerImpl.js +88 -189
- package/esm/components/DSDatePickerImpl.js.map +7 -0
- package/esm/components/DatePickerController/DatePickerController.js +141 -198
- package/esm/components/DatePickerController/DatePickerController.js.map +7 -0
- package/esm/components/DatePickerDay/DatePickerDay.js +19 -17
- package/esm/components/DatePickerDay/DatePickerDay.js.map +7 -0
- package/esm/components/DatePickerDropdown.js +45 -46
- package/esm/components/DatePickerDropdown.js.map +7 -0
- package/esm/components/DatePickerHeader/DatePickerHeader.js +31 -35
- package/esm/components/DatePickerHeader/DatePickerHeader.js.map +7 -0
- package/esm/components/DatePickerNavigation/DatePickerNavigation.js +36 -24
- package/esm/components/DatePickerNavigation/DatePickerNavigation.js.map +7 -0
- package/esm/components/DatePickerPicker/DatePickerPicker.js +44 -48
- package/esm/components/DatePickerPicker/DatePickerPicker.js.map +7 -0
- package/esm/components/DatePickerRange/DatePickerRange.js +49 -79
- package/esm/components/DatePickerRange/DatePickerRange.js.map +7 -0
- package/esm/components/DatePickerRangeHeader/DatePickerRangeHeader.js +50 -78
- package/esm/components/DatePickerRangeHeader/DatePickerRangeHeader.js.map +7 -0
- package/esm/components/DatePickerRenderMonth/DatePickerRenderMonth.js +31 -37
- package/esm/components/DatePickerRenderMonth/DatePickerRenderMonth.js.map +7 -0
- package/esm/components/DatePickerSingleDate/DatePickerSingleDate.js +56 -66
- package/esm/components/DatePickerSingleDate/DatePickerSingleDate.js.map +7 -0
- package/esm/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js +40 -42
- package/esm/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js.map +7 -0
- package/esm/components/index.js +24 -10
- package/esm/components/index.js.map +7 -0
- package/esm/defaultPhrases.js +48 -80
- package/esm/defaultPhrases.js.map +7 -0
- package/esm/index.js +9 -13
- package/esm/index.js.map +7 -0
- package/package.json +10 -10
- package/types/components/DSDatePickerImpl.d.ts +2 -1
- package/types/components/DatePickerController/DatePickerController.d.ts +1 -1
- package/types/components/DatePickerDay/DatePickerDay.d.ts +1 -0
- package/types/components/DatePickerDropdown.d.ts +1 -0
- package/types/components/DatePickerHeader/DatePickerHeader.d.ts +1 -0
- package/types/components/DatePickerNavigation/DatePickerNavigation.d.ts +4 -3
- package/types/components/DatePickerPicker/DatePickerPicker.d.ts +2 -1
- package/types/components/DatePickerRange/DatePickerRange.d.ts +1 -0
- package/types/components/DatePickerRangeHeader/DatePickerRangeHeader.d.ts +1 -0
- package/types/components/DatePickerSingleDate/DatePickerSingleDate.d.ts +1 -0
- package/types/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.d.ts +1 -0
|
@@ -1,113 +1,93 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
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
|
|
50
|
+
return (0, import_moment.default)(value, FORMAT, true);
|
|
40
51
|
}
|
|
41
|
-
|
|
42
52
|
if (date) {
|
|
43
|
-
return
|
|
53
|
+
return (0, import_moment.default)(date, FORMAT, true);
|
|
44
54
|
}
|
|
45
|
-
|
|
46
55
|
if (defaultValue) {
|
|
47
|
-
return
|
|
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
|
-
|
|
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
|
-
|
|
120
|
-
|
|
121
|
-
const {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
167
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
206
|
-
|
|
207
|
-
|
|
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
|
-
}
|
|
222
|
-
|
|
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
|
|
231
|
-
const isNextDateMoment = nextDate instanceof
|
|
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 :
|
|
167
|
+
const nextValAsMoment = isNextValMoment ? nextVal : (0, import_moment.default)(nextVal);
|
|
234
168
|
const nextDateAsString = isNextDateMoment ? nextDate.format(FORMAT) : nextDate;
|
|
235
|
-
const nextDateAsMoment = isNextDateMoment ? 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;
|
|
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
|
-
|
|
184
|
+
if (skipStateChange)
|
|
185
|
+
return null;
|
|
255
186
|
return newState;
|
|
256
187
|
}
|
|
257
|
-
|
|
258
188
|
render() {
|
|
259
|
-
|
|
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
|
|
292
|
-
rightAddon:
|
|
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
|
|
220
|
+
disabled,
|
|
295
221
|
isOpen: inputFocused,
|
|
296
|
-
menu:
|
|
297
|
-
style: {
|
|
298
|
-
|
|
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
|
-
},
|
|
226
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_DatePickerController.DSDatePickerController, {
|
|
304
227
|
date: safedate,
|
|
305
|
-
displayFormatDay
|
|
306
|
-
enableOutsideDays
|
|
307
|
-
firstDayOfWeek
|
|
308
|
-
hideKeyboardShortcutsPanel
|
|
309
|
-
isDayBlocked
|
|
310
|
-
isDayHighlighted
|
|
311
|
-
isOutsideRange
|
|
312
|
-
keepOpenOnDateSelect
|
|
313
|
-
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:
|
|
316
|
-
if (
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
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
|
|
246
|
+
onNextMonthClick,
|
|
326
247
|
onOutsideClick: this.handleCalendarClose,
|
|
327
|
-
onPrevMonthClick
|
|
328
|
-
phrases
|
|
329
|
-
transitionDuration
|
|
330
|
-
calendarProps
|
|
331
|
-
focusCurrentDate
|
|
248
|
+
onPrevMonthClick,
|
|
249
|
+
phrases,
|
|
250
|
+
transitionDuration,
|
|
251
|
+
calendarProps,
|
|
252
|
+
focusCurrentDate
|
|
332
253
|
})),
|
|
333
254
|
onClick: this.onClickPicker,
|
|
334
|
-
readOnly
|
|
335
|
-
zIndex
|
|
336
|
-
pickerProps
|
|
255
|
+
readOnly,
|
|
256
|
+
zIndex,
|
|
257
|
+
pickerProps
|
|
337
258
|
})
|
|
338
|
-
},
|
|
259
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_ds_form.DSDateInputV2, {
|
|
339
260
|
"data-testid": "datepicker-input",
|
|
340
|
-
"aria-label": placeholder ||
|
|
341
|
-
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
|
|
347
|
-
tabIndex
|
|
267
|
+
placeholder,
|
|
268
|
+
tabIndex,
|
|
348
269
|
value: safeInputValue
|
|
349
270
|
}));
|
|
350
271
|
}
|
|
351
|
-
|
|
352
272
|
}
|
|
353
|
-
|
|
354
|
-
|
|
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
|
+
}
|