@elliemae/ds-date-range-picker 2.0.0-alpha.9 → 2.0.0-next.11
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/DSDateRangePicker.js +48 -42
- package/cjs/components/DSDateRangePickerImpl.js +30 -24
- package/cjs/components/DatePickerLabel/DatePickerLabel.js +9 -6
- package/cjs/components/DatePickerRangeHeader/DatePickerRangeHeader.js +12 -12
- package/cjs/components/DayPickerRangeController.js +8 -3
- package/esm/DSDateRangePicker.js +48 -42
- package/esm/components/DSDateRangePickerImpl.js +26 -18
- package/esm/components/DatePickerLabel/DatePickerLabel.js +9 -6
- package/esm/components/DatePickerRangeHeader/DatePickerRangeHeader.js +11 -10
- package/esm/components/DayPickerRangeController.js +7 -1
- package/package.json +6 -5
- package/cjs/package.json +0 -7
- package/esm/package.json +0 -7
package/cjs/DSDateRangePicker.js
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
6
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
5
10
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
6
11
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
7
12
|
require('react');
|
|
@@ -24,47 +29,48 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
24
29
|
|
|
25
30
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
26
31
|
|
|
27
|
-
const DSDateRangePicker =
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
32
|
+
const DSDateRangePicker = _ref => {
|
|
33
|
+
let {
|
|
34
|
+
containerProps = {},
|
|
35
|
+
className = '',
|
|
36
|
+
disabled = false,
|
|
37
|
+
required = false,
|
|
38
|
+
startDateRequired = false,
|
|
39
|
+
endDateRequired = false,
|
|
40
|
+
id,
|
|
41
|
+
hasError = false,
|
|
42
|
+
validationMessage = '',
|
|
43
|
+
readOnly = false,
|
|
44
|
+
screenReaderInputMessage = 'Select date',
|
|
45
|
+
initialVisibleMonth = moment__default["default"](),
|
|
46
|
+
firstDayOfWeek = 0,
|
|
47
|
+
keepOpenOnDateSelect = true,
|
|
48
|
+
reopenPickerOnClearDates = false,
|
|
49
|
+
hideKeyboardShortcutsPanel = true,
|
|
50
|
+
onPrevMonthClick = () => null,
|
|
51
|
+
onNextMonthClick = () => null,
|
|
52
|
+
onClose = () => null,
|
|
53
|
+
onOutsideClick = () => null,
|
|
54
|
+
transitionDuration = 0,
|
|
55
|
+
verticalSpacing = 0,
|
|
56
|
+
minimumNights = 0,
|
|
57
|
+
isDayBlocked = () => false,
|
|
58
|
+
isOutsideRange = () => false,
|
|
59
|
+
isDayHighlighted = () => false,
|
|
60
|
+
displayFormat = 'L',
|
|
61
|
+
displayFormatDay = 'D',
|
|
62
|
+
phrases = defaultPhrases.DateRangePickerPhrases,
|
|
63
|
+
startDate,
|
|
64
|
+
endDate,
|
|
65
|
+
startDateId = 'startDateId',
|
|
66
|
+
endDateId = 'endDateId',
|
|
67
|
+
labelFrom = 'From',
|
|
68
|
+
labelTo = 'To',
|
|
69
|
+
enableOutsideDays = true,
|
|
70
|
+
onChangeStartInput = () => null,
|
|
71
|
+
onChangeEndInput = () => null,
|
|
72
|
+
onDatesChange = () => null
|
|
73
|
+
} = _ref;
|
|
68
74
|
const {
|
|
69
75
|
cssClassName,
|
|
70
76
|
prefixBlockName
|
|
@@ -75,7 +81,7 @@ const DSDateRangePicker = ({
|
|
|
75
81
|
id
|
|
76
82
|
});
|
|
77
83
|
return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({}, containerProps), {}, {
|
|
78
|
-
className:
|
|
84
|
+
className: "".concat(prefixBlockName, "-range ").concat(cssClassName, " ").concat(prefixBlockName, "-range"),
|
|
79
85
|
children: /*#__PURE__*/_jsx__default["default"](DSDateRangePickerImpl["default"], {
|
|
80
86
|
appendToBody: true,
|
|
81
87
|
disabled: disabled,
|
|
@@ -7,9 +7,8 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var moment = require('moment');
|
|
9
9
|
var dsClassnames = require('@elliemae/ds-classnames');
|
|
10
|
-
var DSInputMask = require('@elliemae/ds-
|
|
11
|
-
var
|
|
12
|
-
var DSPopper = require('@elliemae/ds-basic/Popper');
|
|
10
|
+
var DSInputMask = require('@elliemae/ds-form');
|
|
11
|
+
var DSPopper = require('@elliemae/ds-popper');
|
|
13
12
|
var dsDatePicker = require('@elliemae/ds-date-picker');
|
|
14
13
|
var DayPickerRangeController = require('./DayPickerRangeController.js');
|
|
15
14
|
var isMaxDiffSafe = require('../isMaxDiffSafe.js');
|
|
@@ -20,8 +19,6 @@ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
|
20
19
|
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
21
20
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
22
21
|
var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
|
|
23
|
-
var DSInputMask__default = /*#__PURE__*/_interopDefaultLegacy(DSInputMask);
|
|
24
|
-
var DSFormItemLayout__default = /*#__PURE__*/_interopDefaultLegacy(DSFormItemLayout);
|
|
25
22
|
var DSPopper__default = /*#__PURE__*/_interopDefaultLegacy(DSPopper);
|
|
26
23
|
|
|
27
24
|
const START_DATE = 'startDate';
|
|
@@ -34,10 +31,11 @@ class DSDateRangePickerImpl extends React__default["default"].Component {
|
|
|
34
31
|
constructor(props) {
|
|
35
32
|
super(props);
|
|
36
33
|
|
|
37
|
-
_defineProperty__default["default"](this, "onDatesChange",
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
34
|
+
_defineProperty__default["default"](this, "onDatesChange", _ref => {
|
|
35
|
+
let {
|
|
36
|
+
startDate,
|
|
37
|
+
endDate
|
|
38
|
+
} = _ref;
|
|
41
39
|
const {
|
|
42
40
|
onDatesChange
|
|
43
41
|
} = this.props;
|
|
@@ -59,11 +57,14 @@ class DSDateRangePickerImpl extends React__default["default"].Component {
|
|
|
59
57
|
});
|
|
60
58
|
|
|
61
59
|
_defineProperty__default["default"](this, "onFocusChange", () => {
|
|
62
|
-
this.setState(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
60
|
+
this.setState(_ref2 => {
|
|
61
|
+
let {
|
|
62
|
+
focusedInput
|
|
63
|
+
} = _ref2;
|
|
64
|
+
return {
|
|
65
|
+
focusedInput: focusedInput === START_DATE ? END_DATE : START_DATE
|
|
66
|
+
};
|
|
67
|
+
});
|
|
67
68
|
});
|
|
68
69
|
|
|
69
70
|
_defineProperty__default["default"](this, "handleKeyDown", event => {
|
|
@@ -163,7 +164,10 @@ class DSDateRangePickerImpl extends React__default["default"].Component {
|
|
|
163
164
|
const isEndDateAcceptable = !endDateBlocked && momentValue && endInputValue !== '';
|
|
164
165
|
const areDatesValid = startDate && momentValue && (startDate === null || startDate === void 0 ? void 0 : startDate.isValid()) && ((_momentValue2 = momentValue) === null || _momentValue2 === void 0 ? void 0 : _momentValue2.isValid());
|
|
165
166
|
const canEndBeSameAsStart = minimumNights === 0;
|
|
166
|
-
const isEndAcceptableWithSelectedStart = !startDate ||
|
|
167
|
+
const isEndAcceptableWithSelectedStart = !startDate || // we can't compare with start date because it's not yet set
|
|
168
|
+
areDatesValid && ( // it's set and both are valid
|
|
169
|
+
canEndBeSameAsStart && momentValue.diff(startDate, 'days') >= 0 || // >= is valid
|
|
170
|
+
!canEndBeSameAsStart && momentValue.diff(startDate, 'days') > 0); // only > is valid
|
|
167
171
|
|
|
168
172
|
const invalidDate = !isEndDateAcceptable || !isEndAcceptableWithSelectedStart;
|
|
169
173
|
if (endDateBlocked) momentValue = null;
|
|
@@ -177,10 +181,12 @@ class DSDateRangePickerImpl extends React__default["default"].Component {
|
|
|
177
181
|
}));
|
|
178
182
|
});
|
|
179
183
|
|
|
180
|
-
_defineProperty__default["default"](this, "handleChangeDate",
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
+
_defineProperty__default["default"](this, "handleChangeDate", _ref3 => {
|
|
185
|
+
let {
|
|
186
|
+
startDate: _start,
|
|
187
|
+
endDate
|
|
188
|
+
} = _ref3;
|
|
189
|
+
|
|
184
190
|
if (_start && endDate) {
|
|
185
191
|
this.setState({
|
|
186
192
|
startDate: moment__default["default"](_start),
|
|
@@ -252,12 +258,12 @@ class DSDateRangePickerImpl extends React__default["default"].Component {
|
|
|
252
258
|
const safeStartInputValue = this.getSafeStartInputValue();
|
|
253
259
|
const safeEndInputValue = this.getSafeEndInputValue();
|
|
254
260
|
return /*#__PURE__*/_jsx__default["default"]("div", {
|
|
255
|
-
className:
|
|
261
|
+
className: "".concat(inputClass, " ").concat(inputClassModifier)
|
|
256
262
|
}, void 0, /*#__PURE__*/_jsx__default["default"]("div", {
|
|
257
263
|
className: classNameBlock('wrapper-input-date-range-picker-controller')
|
|
258
|
-
}, void 0, /*#__PURE__*/_jsx__default["default"](
|
|
264
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"](DSInputMask.DSFormItemLayout, {
|
|
259
265
|
floatingLabel: true,
|
|
260
|
-
inputComponent:
|
|
266
|
+
inputComponent: DSInputMask.DSInputMask,
|
|
261
267
|
labelText: labelFrom,
|
|
262
268
|
mask: DSInputMask.MASK_TYPES.DATE,
|
|
263
269
|
onChange: this.handleChangeStart,
|
|
@@ -269,9 +275,9 @@ class DSDateRangePickerImpl extends React__default["default"].Component {
|
|
|
269
275
|
required: startDateRequired,
|
|
270
276
|
hasError: hasError || startDateError,
|
|
271
277
|
placeholder: "MM/DD/YYYY"
|
|
272
|
-
}), /*#__PURE__*/_jsx__default["default"](
|
|
278
|
+
}), /*#__PURE__*/_jsx__default["default"](DSInputMask.DSFormItemLayout, {
|
|
273
279
|
floatingLabel: true,
|
|
274
|
-
inputComponent:
|
|
280
|
+
inputComponent: DSInputMask.DSInputMask,
|
|
275
281
|
labelText: labelTo,
|
|
276
282
|
mask: DSInputMask.MASK_TYPES.DATE,
|
|
277
283
|
onChange: this.handleChangeEnd,
|
|
@@ -7,11 +7,14 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
7
7
|
|
|
8
8
|
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
9
9
|
|
|
10
|
-
const Label =
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
const Label = _ref => {
|
|
11
|
+
let {
|
|
12
|
+
className = 'date-picker-label',
|
|
13
|
+
label = ''
|
|
14
|
+
} = _ref;
|
|
15
|
+
return /*#__PURE__*/_jsx__default["default"]("div", {
|
|
16
|
+
className: className
|
|
17
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"]("span", {}, void 0, label));
|
|
18
|
+
};
|
|
16
19
|
|
|
17
20
|
module.exports = Label;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
4
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
4
5
|
var React = require('react');
|
|
5
6
|
var moment = require('moment');
|
|
6
|
-
var DSInputMask = require('@elliemae/ds-
|
|
7
|
-
var DSInputGroup = require('@elliemae/ds-basic/form/InputGroup');
|
|
7
|
+
var DSInputMask = require('@elliemae/ds-form');
|
|
8
8
|
var dsClassnames = require('@elliemae/ds-classnames');
|
|
9
9
|
|
|
10
10
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -12,7 +12,6 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
12
12
|
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
13
13
|
var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
|
|
14
14
|
var DSInputMask__default = /*#__PURE__*/_interopDefaultLegacy(DSInputMask);
|
|
15
|
-
var DSInputGroup__default = /*#__PURE__*/_interopDefaultLegacy(DSInputGroup);
|
|
16
15
|
|
|
17
16
|
const blockname = 'date-range-picker';
|
|
18
17
|
const Header = dsClassnames.aggregatedClasses('div')(blockname, 'header');
|
|
@@ -23,14 +22,15 @@ const formatDate = date => {
|
|
|
23
22
|
}
|
|
24
23
|
};
|
|
25
24
|
|
|
26
|
-
const DatePickerRangeHeader =
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
25
|
+
const DatePickerRangeHeader = _ref => {
|
|
26
|
+
let {
|
|
27
|
+
placeholderStart = 'Start Date',
|
|
28
|
+
placeholderEnd = 'End Date',
|
|
29
|
+
onStartInputChange = () => null,
|
|
30
|
+
onEndInputChange = () => null,
|
|
31
|
+
selectedStartDate,
|
|
32
|
+
selectedEndDate
|
|
33
|
+
} = _ref;
|
|
34
34
|
const [startValue, setStartValue] = React.useState(selectedStartDate ? formatDate(selectedStartDate) : '');
|
|
35
35
|
const [endValue, setEndValue] = React.useState(selectedEndDate ? formatDate(selectedEndDate) : '');
|
|
36
36
|
React.useEffect(() => {
|
|
@@ -76,7 +76,7 @@ const DatePickerRangeHeader = ({
|
|
|
76
76
|
}
|
|
77
77
|
};
|
|
78
78
|
|
|
79
|
-
return /*#__PURE__*/_jsx__default["default"](Header, {}, void 0, /*#__PURE__*/_jsx__default["default"](
|
|
79
|
+
return /*#__PURE__*/_jsx__default["default"](Header, {}, void 0, /*#__PURE__*/_jsx__default["default"](DSInputMask.DSInputGroup, {}, void 0, /*#__PURE__*/_jsx__default["default"](DSInputMask__default["default"], {
|
|
80
80
|
"aria-label": placeholderStart || 'Date Picker Input Mask',
|
|
81
81
|
mask: DSInputMask.MASK_TYPES.DATE,
|
|
82
82
|
onBlur: handleOnBlurStart,
|
|
@@ -3,10 +3,16 @@
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
4
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
5
5
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
6
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
8
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
10
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
11
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
6
12
|
var React = require('react');
|
|
7
13
|
var reactDates = require('react-dates');
|
|
8
14
|
var dsDatePicker = require('@elliemae/ds-date-picker');
|
|
9
|
-
var
|
|
15
|
+
var dsIcons = require('@elliemae/ds-icons');
|
|
10
16
|
var dsClassnames = require('@elliemae/ds-classnames');
|
|
11
17
|
var jsxRuntime = require('react/jsx-runtime');
|
|
12
18
|
|
|
@@ -15,7 +21,6 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
15
21
|
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
16
22
|
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
17
23
|
var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
|
|
18
|
-
var ChevronLeft__default = /*#__PURE__*/_interopDefaultLegacy(ChevronLeft);
|
|
19
24
|
|
|
20
25
|
const _excluded = ["endDate", "startDate", "displayFormatDay", "focusedInput", "enableOutsideDays", "onDatesChange", "onFocusChange", "onOutsideClick", "isDayBlocked", "isDayHighlighted", "isOutsideRange", "onNextMonthClick", "onPrevMonthClick"];
|
|
21
26
|
|
|
@@ -122,7 +127,7 @@ const DayPickerRangeController = _ref => {
|
|
|
122
127
|
}),
|
|
123
128
|
navPrev: /*#__PURE__*/_jsx__default["default"](dsDatePicker.DatePickerNavigation, {
|
|
124
129
|
className: classNameElement('navigation-prev'),
|
|
125
|
-
icon:
|
|
130
|
+
icon: dsIcons.ChevronLeft
|
|
126
131
|
}),
|
|
127
132
|
onDatesChange: onDatesChange,
|
|
128
133
|
onFocusChange: onFocusChange,
|
package/esm/DSDateRangePicker.js
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import 'core-js/modules/esnext.async-iterator.filter.js';
|
|
2
|
+
import 'core-js/modules/esnext.iterator.constructor.js';
|
|
3
|
+
import 'core-js/modules/esnext.iterator.filter.js';
|
|
4
|
+
import 'core-js/modules/esnext.async-iterator.for-each.js';
|
|
5
|
+
import 'core-js/modules/esnext.iterator.for-each.js';
|
|
1
6
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
2
7
|
import _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
3
8
|
import 'react';
|
|
@@ -15,47 +20,48 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
15
20
|
|
|
16
21
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
17
22
|
|
|
18
|
-
const DSDateRangePicker =
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
23
|
+
const DSDateRangePicker = _ref => {
|
|
24
|
+
let {
|
|
25
|
+
containerProps = {},
|
|
26
|
+
className = '',
|
|
27
|
+
disabled = false,
|
|
28
|
+
required = false,
|
|
29
|
+
startDateRequired = false,
|
|
30
|
+
endDateRequired = false,
|
|
31
|
+
id,
|
|
32
|
+
hasError = false,
|
|
33
|
+
validationMessage = '',
|
|
34
|
+
readOnly = false,
|
|
35
|
+
screenReaderInputMessage = 'Select date',
|
|
36
|
+
initialVisibleMonth = moment(),
|
|
37
|
+
firstDayOfWeek = 0,
|
|
38
|
+
keepOpenOnDateSelect = true,
|
|
39
|
+
reopenPickerOnClearDates = false,
|
|
40
|
+
hideKeyboardShortcutsPanel = true,
|
|
41
|
+
onPrevMonthClick = () => null,
|
|
42
|
+
onNextMonthClick = () => null,
|
|
43
|
+
onClose = () => null,
|
|
44
|
+
onOutsideClick = () => null,
|
|
45
|
+
transitionDuration = 0,
|
|
46
|
+
verticalSpacing = 0,
|
|
47
|
+
minimumNights = 0,
|
|
48
|
+
isDayBlocked = () => false,
|
|
49
|
+
isOutsideRange = () => false,
|
|
50
|
+
isDayHighlighted = () => false,
|
|
51
|
+
displayFormat = 'L',
|
|
52
|
+
displayFormatDay = 'D',
|
|
53
|
+
phrases = DateRangePickerPhrases,
|
|
54
|
+
startDate,
|
|
55
|
+
endDate,
|
|
56
|
+
startDateId = 'startDateId',
|
|
57
|
+
endDateId = 'endDateId',
|
|
58
|
+
labelFrom = 'From',
|
|
59
|
+
labelTo = 'To',
|
|
60
|
+
enableOutsideDays = true,
|
|
61
|
+
onChangeStartInput = () => null,
|
|
62
|
+
onChangeEndInput = () => null,
|
|
63
|
+
onDatesChange = () => null
|
|
64
|
+
} = _ref;
|
|
59
65
|
const {
|
|
60
66
|
cssClassName,
|
|
61
67
|
prefixBlockName
|
|
@@ -66,7 +72,7 @@ const DSDateRangePicker = ({
|
|
|
66
72
|
id
|
|
67
73
|
});
|
|
68
74
|
return /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({}, containerProps), {}, {
|
|
69
|
-
className:
|
|
75
|
+
className: "".concat(prefixBlockName, "-range ").concat(cssClassName, " ").concat(prefixBlockName, "-range"),
|
|
70
76
|
children: /*#__PURE__*/_jsx(DSDateRangePickerImpl, {
|
|
71
77
|
appendToBody: true,
|
|
72
78
|
disabled: disabled,
|
|
@@ -3,9 +3,8 @@ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import moment from 'moment';
|
|
5
5
|
import { convertPropToCssClassName } from '@elliemae/ds-classnames';
|
|
6
|
-
import DSInputMask,
|
|
7
|
-
import
|
|
8
|
-
import DSPopper from '@elliemae/ds-basic/Popper';
|
|
6
|
+
import { DSFormItemLayout, DSInputMask, MASK_TYPES, MASK_PIPES } from '@elliemae/ds-form';
|
|
7
|
+
import DSPopper from '@elliemae/ds-popper';
|
|
9
8
|
import { renderMonthElement, DatePickerPicker } from '@elliemae/ds-date-picker';
|
|
10
9
|
import DayPickerRangeController from './DayPickerRangeController.js';
|
|
11
10
|
import { isMaxDiffSafe } from '../isMaxDiffSafe.js';
|
|
@@ -20,10 +19,11 @@ class DSDateRangePickerImpl extends React.Component {
|
|
|
20
19
|
constructor(props) {
|
|
21
20
|
super(props);
|
|
22
21
|
|
|
23
|
-
_defineProperty(this, "onDatesChange",
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
_defineProperty(this, "onDatesChange", _ref => {
|
|
23
|
+
let {
|
|
24
|
+
startDate,
|
|
25
|
+
endDate
|
|
26
|
+
} = _ref;
|
|
27
27
|
const {
|
|
28
28
|
onDatesChange
|
|
29
29
|
} = this.props;
|
|
@@ -45,11 +45,14 @@ class DSDateRangePickerImpl extends React.Component {
|
|
|
45
45
|
});
|
|
46
46
|
|
|
47
47
|
_defineProperty(this, "onFocusChange", () => {
|
|
48
|
-
this.setState(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
this.setState(_ref2 => {
|
|
49
|
+
let {
|
|
50
|
+
focusedInput
|
|
51
|
+
} = _ref2;
|
|
52
|
+
return {
|
|
53
|
+
focusedInput: focusedInput === START_DATE ? END_DATE : START_DATE
|
|
54
|
+
};
|
|
55
|
+
});
|
|
53
56
|
});
|
|
54
57
|
|
|
55
58
|
_defineProperty(this, "handleKeyDown", event => {
|
|
@@ -149,7 +152,10 @@ class DSDateRangePickerImpl extends React.Component {
|
|
|
149
152
|
const isEndDateAcceptable = !endDateBlocked && momentValue && endInputValue !== '';
|
|
150
153
|
const areDatesValid = startDate && momentValue && (startDate === null || startDate === void 0 ? void 0 : startDate.isValid()) && ((_momentValue2 = momentValue) === null || _momentValue2 === void 0 ? void 0 : _momentValue2.isValid());
|
|
151
154
|
const canEndBeSameAsStart = minimumNights === 0;
|
|
152
|
-
const isEndAcceptableWithSelectedStart = !startDate ||
|
|
155
|
+
const isEndAcceptableWithSelectedStart = !startDate || // we can't compare with start date because it's not yet set
|
|
156
|
+
areDatesValid && ( // it's set and both are valid
|
|
157
|
+
canEndBeSameAsStart && momentValue.diff(startDate, 'days') >= 0 || // >= is valid
|
|
158
|
+
!canEndBeSameAsStart && momentValue.diff(startDate, 'days') > 0); // only > is valid
|
|
153
159
|
|
|
154
160
|
const invalidDate = !isEndDateAcceptable || !isEndAcceptableWithSelectedStart;
|
|
155
161
|
if (endDateBlocked) momentValue = null;
|
|
@@ -163,10 +169,12 @@ class DSDateRangePickerImpl extends React.Component {
|
|
|
163
169
|
}));
|
|
164
170
|
});
|
|
165
171
|
|
|
166
|
-
_defineProperty(this, "handleChangeDate",
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
172
|
+
_defineProperty(this, "handleChangeDate", _ref3 => {
|
|
173
|
+
let {
|
|
174
|
+
startDate: _start,
|
|
175
|
+
endDate
|
|
176
|
+
} = _ref3;
|
|
177
|
+
|
|
170
178
|
if (_start && endDate) {
|
|
171
179
|
this.setState({
|
|
172
180
|
startDate: moment(_start),
|
|
@@ -238,7 +246,7 @@ class DSDateRangePickerImpl extends React.Component {
|
|
|
238
246
|
const safeStartInputValue = this.getSafeStartInputValue();
|
|
239
247
|
const safeEndInputValue = this.getSafeEndInputValue();
|
|
240
248
|
return /*#__PURE__*/_jsx("div", {
|
|
241
|
-
className:
|
|
249
|
+
className: "".concat(inputClass, " ").concat(inputClassModifier)
|
|
242
250
|
}, void 0, /*#__PURE__*/_jsx("div", {
|
|
243
251
|
className: classNameBlock('wrapper-input-date-range-picker-controller')
|
|
244
252
|
}, void 0, /*#__PURE__*/_jsx(DSFormItemLayout, {
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
2
2
|
import 'react';
|
|
3
3
|
|
|
4
|
-
const Label =
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
const Label = _ref => {
|
|
5
|
+
let {
|
|
6
|
+
className = 'date-picker-label',
|
|
7
|
+
label = ''
|
|
8
|
+
} = _ref;
|
|
9
|
+
return /*#__PURE__*/_jsx("div", {
|
|
10
|
+
className: className
|
|
11
|
+
}, void 0, /*#__PURE__*/_jsx("span", {}, void 0, label));
|
|
12
|
+
};
|
|
10
13
|
|
|
11
14
|
export { Label as default };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
2
|
+
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
2
3
|
import { useState, useEffect } from 'react';
|
|
3
4
|
import moment from 'moment';
|
|
4
|
-
import DSInputMask, { MASK_TYPES, MASK_PIPES } from '@elliemae/ds-
|
|
5
|
-
import DSInputGroup from '@elliemae/ds-basic/form/InputGroup';
|
|
5
|
+
import DSInputMask, { DSInputGroup, MASK_TYPES, MASK_PIPES } from '@elliemae/ds-form';
|
|
6
6
|
import { aggregatedClasses } from '@elliemae/ds-classnames';
|
|
7
7
|
|
|
8
8
|
const blockname = 'date-range-picker';
|
|
@@ -14,14 +14,15 @@ const formatDate = date => {
|
|
|
14
14
|
}
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
const DatePickerRangeHeader =
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
const DatePickerRangeHeader = _ref => {
|
|
18
|
+
let {
|
|
19
|
+
placeholderStart = 'Start Date',
|
|
20
|
+
placeholderEnd = 'End Date',
|
|
21
|
+
onStartInputChange = () => null,
|
|
22
|
+
onEndInputChange = () => null,
|
|
23
|
+
selectedStartDate,
|
|
24
|
+
selectedEndDate
|
|
25
|
+
} = _ref;
|
|
25
26
|
const [startValue, setStartValue] = useState(selectedStartDate ? formatDate(selectedStartDate) : '');
|
|
26
27
|
const [endValue, setEndValue] = useState(selectedEndDate ? formatDate(selectedEndDate) : '');
|
|
27
28
|
useEffect(() => {
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
2
2
|
import _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
3
3
|
import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
|
|
4
|
+
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
5
|
+
import 'core-js/modules/esnext.async-iterator.filter.js';
|
|
6
|
+
import 'core-js/modules/esnext.iterator.constructor.js';
|
|
7
|
+
import 'core-js/modules/esnext.iterator.filter.js';
|
|
8
|
+
import 'core-js/modules/esnext.async-iterator.for-each.js';
|
|
9
|
+
import 'core-js/modules/esnext.iterator.for-each.js';
|
|
4
10
|
import { useRef, useEffect } from 'react';
|
|
5
11
|
import { DayPickerRangeController as DayPickerRangeController$1 } from 'react-dates';
|
|
6
12
|
import { DatePickerNavigation, DatePickerDay, renderMonthElement } from '@elliemae/ds-date-picker';
|
|
7
|
-
import ChevronLeft from '@elliemae/ds-icons
|
|
13
|
+
import { ChevronLeft } from '@elliemae/ds-icons';
|
|
8
14
|
import { convertPropToCssClassName } from '@elliemae/ds-classnames';
|
|
9
15
|
import { jsx } from 'react/jsx-runtime';
|
|
10
16
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elliemae/ds-date-range-picker",
|
|
3
|
-
"version": "2.0.0-
|
|
3
|
+
"version": "2.0.0-next.11",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "ICE MT - Dimsum - Date Range Picker",
|
|
6
6
|
"module": "./esm/index.js",
|
|
@@ -56,13 +56,14 @@
|
|
|
56
56
|
"build": "node ../../scripts/build/build.js"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@elliemae/ds-basic": "2.0.0-
|
|
60
|
-
"@elliemae/ds-classnames": "2.0.0-
|
|
61
|
-
"@elliemae/ds-date-picker": "2.0.0-
|
|
59
|
+
"@elliemae/ds-basic": "2.0.0-next.11",
|
|
60
|
+
"@elliemae/ds-classnames": "2.0.0-next.11",
|
|
61
|
+
"@elliemae/ds-date-picker": "2.0.0-next.11",
|
|
62
|
+
"@elliemae/ds-icons": "2.0.0-next.11",
|
|
62
63
|
"moment": "~2.29.1",
|
|
63
64
|
"prop-types": "~15.7.2",
|
|
64
65
|
"react-dates": "~21.8.0",
|
|
65
|
-
"react-
|
|
66
|
+
"react-desc": "~4.1.3"
|
|
66
67
|
},
|
|
67
68
|
"peerDependencies": {
|
|
68
69
|
"lodash": "^4.17.21",
|
package/cjs/package.json
DELETED