@elliemae/ds-date-picker 2.3.0-alpha.9 → 2.3.0-next.0
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 +233 -0
- package/cjs/components/DSDatePickerImpl.js +354 -0
- package/cjs/components/DatePickerController/DatePickerController.js +360 -0
- package/cjs/components/DatePickerDay/DatePickerDay.js +24 -0
- package/cjs/components/DatePickerDropdown.js +65 -0
- package/cjs/components/DatePickerHeader/DatePickerHeader.js +56 -0
- package/cjs/components/DatePickerNavigation/DatePickerNavigation.js +32 -0
- package/cjs/components/DatePickerPicker/DatePickerPicker.js +74 -0
- package/cjs/components/DatePickerRange/DatePickerRange.js +119 -0
- package/cjs/components/DatePickerRangeHeader/DatePickerRangeHeader.js +144 -0
- package/cjs/components/DatePickerRenderMonth/DatePickerRenderMonth.js +46 -0
- package/cjs/components/DatePickerSingleDate/DatePickerSingleDate.js +85 -0
- package/cjs/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js +59 -0
- package/cjs/components/index.js +27 -0
- package/cjs/defaultPhrases.js +261 -0
- package/cjs/index.js +35 -0
- package/esm/DSDatePicker.js +211 -0
- package/esm/components/DSDatePickerImpl.js +346 -0
- package/esm/components/DatePickerController/DatePickerController.js +350 -0
- package/esm/components/DatePickerDay/DatePickerDay.js +18 -0
- package/esm/components/DatePickerDropdown.js +57 -0
- package/esm/components/DatePickerHeader/DatePickerHeader.js +49 -0
- package/esm/components/DatePickerNavigation/DatePickerNavigation.js +25 -0
- package/esm/components/DatePickerPicker/DatePickerPicker.js +60 -0
- package/esm/components/DatePickerRange/DatePickerRange.js +111 -0
- package/esm/components/DatePickerRangeHeader/DatePickerRangeHeader.js +137 -0
- package/esm/components/DatePickerRenderMonth/DatePickerRenderMonth.js +38 -0
- package/esm/components/DatePickerSingleDate/DatePickerSingleDate.js +77 -0
- package/esm/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js +53 -0
- package/esm/components/index.js +10 -0
- package/{dist/esm → esm}/defaultPhrases.js +80 -48
- package/esm/index.js +13 -0
- package/package.json +56 -58
- package/{dist/types → types}/components/DSDatePickerImpl.d.ts +1 -2
- package/{dist/types → types}/components/DatePickerController/DatePickerController.d.ts +1 -1
- package/{dist/types → types}/components/DatePickerDay/DatePickerDay.d.ts +0 -1
- package/{dist/types → types}/components/DatePickerDropdown.d.ts +0 -1
- package/{dist/types → types}/components/DatePickerHeader/DatePickerHeader.d.ts +0 -1
- package/{dist/types → types}/components/DatePickerNavigation/DatePickerNavigation.d.ts +3 -4
- package/{dist/types → types}/components/DatePickerPicker/DatePickerPicker.d.ts +1 -2
- package/{dist/types → types}/components/DatePickerRange/DatePickerRange.d.ts +0 -1
- package/{dist/types → types}/components/DatePickerRangeHeader/DatePickerRangeHeader.d.ts +0 -1
- package/{dist/types → types}/components/DatePickerRangeHeader/tests/DatePickerRangeHeader.test.d.ts +0 -0
- package/{dist/types → types}/components/DatePickerRenderMonth/DatePickerRenderMonth.d.ts +0 -0
- package/{dist/types → types}/components/DatePickerSingleDate/DatePickerSingleDate.d.ts +0 -1
- package/{dist/types → types}/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.d.ts +0 -1
- package/{dist/types → types}/components/index.d.ts +0 -0
- package/{dist/types → types}/components/tests/DatePickerHeader.test.d.ts +0 -0
- package/{dist/types → types}/components/tests/DatePickerRange.test.d.ts +0 -0
- package/{dist/types → types}/components/tests/DatePickerRangeHeader.test.d.ts +0 -0
- package/{dist/types → types}/components/tests/DatePickerSelectedDate.test.d.ts +0 -0
- package/{dist/types → types}/components/tests/DatePickerSingleDate.test.d.ts +0 -0
- package/{dist/types → types}/components/tests/SingleRangeDateSwitcher.test.d.ts +0 -0
- package/{dist/types → types}/defaultPhrases.d.ts +0 -0
- package/{dist/types → types}/index.d.ts +0 -0
- package/dist/cjs/DSDatePicker.js +0 -231
- package/dist/cjs/DSDatePicker.js.map +0 -7
- package/dist/cjs/components/DSDatePickerImpl.js +0 -274
- package/dist/cjs/components/DSDatePickerImpl.js.map +0 -7
- package/dist/cjs/components/DatePickerController/DatePickerController.js +0 -322
- package/dist/cjs/components/DatePickerController/DatePickerController.js.map +0 -7
- package/dist/cjs/components/DatePickerDay/DatePickerDay.js +0 -49
- package/dist/cjs/components/DatePickerDay/DatePickerDay.js.map +0 -7
- package/dist/cjs/components/DatePickerDropdown.js +0 -85
- package/dist/cjs/components/DatePickerDropdown.js.map +0 -7
- package/dist/cjs/components/DatePickerHeader/DatePickerHeader.js +0 -74
- package/dist/cjs/components/DatePickerHeader/DatePickerHeader.js.map +0 -7
- package/dist/cjs/components/DatePickerNavigation/DatePickerNavigation.js +0 -63
- package/dist/cjs/components/DatePickerNavigation/DatePickerNavigation.js.map +0 -7
- package/dist/cjs/components/DatePickerPicker/DatePickerPicker.js +0 -85
- package/dist/cjs/components/DatePickerPicker/DatePickerPicker.js.map +0 -7
- package/dist/cjs/components/DatePickerRange/DatePickerRange.js +0 -110
- package/dist/cjs/components/DatePickerRange/DatePickerRange.js.map +0 -7
- package/dist/cjs/components/DatePickerRangeHeader/DatePickerRangeHeader.js +0 -138
- package/dist/cjs/components/DatePickerRangeHeader/DatePickerRangeHeader.js.map +0 -7
- package/dist/cjs/components/DatePickerRenderMonth/DatePickerRenderMonth.js +0 -61
- package/dist/cjs/components/DatePickerRenderMonth/DatePickerRenderMonth.js.map +0 -7
- package/dist/cjs/components/DatePickerSingleDate/DatePickerSingleDate.js +0 -96
- package/dist/cjs/components/DatePickerSingleDate/DatePickerSingleDate.js.map +0 -7
- package/dist/cjs/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js +0 -80
- package/dist/cjs/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js.map +0 -7
- package/dist/cjs/components/index.js +0 -53
- package/dist/cjs/components/index.js.map +0 -7
- package/dist/cjs/defaultPhrases.js +0 -246
- package/dist/cjs/defaultPhrases.js.map +0 -7
- package/dist/cjs/index.js +0 -38
- package/dist/cjs/index.js.map +0 -7
- package/dist/esm/DSDatePicker.js +0 -213
- package/dist/esm/DSDatePicker.js.map +0 -7
- package/dist/esm/components/DSDatePickerImpl.js +0 -245
- package/dist/esm/components/DSDatePickerImpl.js.map +0 -7
- package/dist/esm/components/DatePickerController/DatePickerController.js +0 -293
- package/dist/esm/components/DatePickerController/DatePickerController.js.map +0 -7
- package/dist/esm/components/DatePickerDay/DatePickerDay.js +0 -20
- package/dist/esm/components/DatePickerDay/DatePickerDay.js.map +0 -7
- package/dist/esm/components/DatePickerDropdown.js +0 -56
- package/dist/esm/components/DatePickerDropdown.js.map +0 -7
- package/dist/esm/components/DatePickerHeader/DatePickerHeader.js +0 -45
- package/dist/esm/components/DatePickerHeader/DatePickerHeader.js.map +0 -7
- package/dist/esm/components/DatePickerNavigation/DatePickerNavigation.js +0 -37
- package/dist/esm/components/DatePickerNavigation/DatePickerNavigation.js.map +0 -7
- package/dist/esm/components/DatePickerPicker/DatePickerPicker.js +0 -56
- package/dist/esm/components/DatePickerPicker/DatePickerPicker.js.map +0 -7
- package/dist/esm/components/DatePickerRange/DatePickerRange.js +0 -81
- package/dist/esm/components/DatePickerRange/DatePickerRange.js.map +0 -7
- package/dist/esm/components/DatePickerRangeHeader/DatePickerRangeHeader.js +0 -109
- package/dist/esm/components/DatePickerRangeHeader/DatePickerRangeHeader.js.map +0 -7
- package/dist/esm/components/DatePickerRenderMonth/DatePickerRenderMonth.js +0 -32
- package/dist/esm/components/DatePickerRenderMonth/DatePickerRenderMonth.js.map +0 -7
- package/dist/esm/components/DatePickerSingleDate/DatePickerSingleDate.js +0 -67
- package/dist/esm/components/DatePickerSingleDate/DatePickerSingleDate.js.map +0 -7
- package/dist/esm/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js +0 -51
- package/dist/esm/components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js.map +0 -7
- package/dist/esm/components/index.js +0 -24
- package/dist/esm/components/index.js.map +0 -7
- package/dist/esm/defaultPhrases.js.map +0 -7
- package/dist/esm/index.js +0 -9
- package/dist/esm/index.js.map +0 -7
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
6
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
7
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
10
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
11
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
12
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
13
|
+
require('react');
|
|
14
|
+
var reactDesc = require('react-desc');
|
|
15
|
+
require('react-dates/initialize');
|
|
16
|
+
var dsClassnames = require('@elliemae/ds-classnames');
|
|
17
|
+
var moment = require('moment');
|
|
18
|
+
var defaultPhrases = require('./defaultPhrases.js');
|
|
19
|
+
var DatePickerNavigation = require('./components/DatePickerNavigation/DatePickerNavigation.js');
|
|
20
|
+
var DatePickerDay = require('./components/DatePickerDay/DatePickerDay.js');
|
|
21
|
+
var DatePickerPicker = require('./components/DatePickerPicker/DatePickerPicker.js');
|
|
22
|
+
var DatePickerDropdown = require('./components/DatePickerDropdown.js');
|
|
23
|
+
var DatePickerSingleDate = require('./components/DatePickerSingleDate/DatePickerSingleDate.js');
|
|
24
|
+
var DatePickerHeader = require('./components/DatePickerHeader/DatePickerHeader.js');
|
|
25
|
+
var DatePickerRange = require('./components/DatePickerRange/DatePickerRange.js');
|
|
26
|
+
var DatePickerRangeHeader = require('./components/DatePickerRangeHeader/DatePickerRangeHeader.js');
|
|
27
|
+
var SingleRangeDateSwitcher = require('./components/SingleRangeDateSwitcher/SingleRangeDateSwitcher.js');
|
|
28
|
+
var DatePickerRenderMonth = require('./components/DatePickerRenderMonth/DatePickerRenderMonth.js');
|
|
29
|
+
var DSDatePickerImpl = require('./components/DSDatePickerImpl.js');
|
|
30
|
+
var DatePickerController = require('./components/DatePickerController/DatePickerController.js');
|
|
31
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
32
|
+
|
|
33
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
34
|
+
|
|
35
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
36
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
37
|
+
var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
|
|
38
|
+
|
|
39
|
+
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; }
|
|
40
|
+
|
|
41
|
+
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__default["default"](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; }
|
|
42
|
+
|
|
43
|
+
const DSDatePicker = _ref => {
|
|
44
|
+
let {
|
|
45
|
+
containerProps = {},
|
|
46
|
+
id = '',
|
|
47
|
+
appendToBody = true,
|
|
48
|
+
className = '',
|
|
49
|
+
date,
|
|
50
|
+
value,
|
|
51
|
+
placeholder = '',
|
|
52
|
+
disabled = false,
|
|
53
|
+
required = false,
|
|
54
|
+
readOnly = false,
|
|
55
|
+
hasError = false,
|
|
56
|
+
screenReaderInputMessage = 'Select date',
|
|
57
|
+
enableOutsideDays = true,
|
|
58
|
+
initialVisibleMonth = moment__default["default"](),
|
|
59
|
+
firstDayOfWeek = 0,
|
|
60
|
+
keepOpenOnDateSelect = false,
|
|
61
|
+
hideKeyboardShortcutsPanel = true,
|
|
62
|
+
onChange = () => null,
|
|
63
|
+
onDateChange = undefined,
|
|
64
|
+
onPrevMonthClick = () => null,
|
|
65
|
+
onNextMonthClick = () => null,
|
|
66
|
+
onClose = () => null,
|
|
67
|
+
onFocus = () => null,
|
|
68
|
+
onBlur = () => null,
|
|
69
|
+
phrases = defaultPhrases.SingleDatePickerPhrases,
|
|
70
|
+
displayFormat = 'L',
|
|
71
|
+
displayFormatDay = 'D',
|
|
72
|
+
transitionDuration = 0,
|
|
73
|
+
verticalSpacing = 0,
|
|
74
|
+
isDayBlocked = () => false,
|
|
75
|
+
isOutsideRange = () => false,
|
|
76
|
+
isDayHighlighted = () => false,
|
|
77
|
+
numberOfMonths = 1,
|
|
78
|
+
openDirection = 'down',
|
|
79
|
+
tabIndex = '',
|
|
80
|
+
zIndex = 1,
|
|
81
|
+
pickerProps = {},
|
|
82
|
+
calendarProps = {},
|
|
83
|
+
autoClear = false,
|
|
84
|
+
focusCurrentDate = false
|
|
85
|
+
} = _ref;
|
|
86
|
+
const {
|
|
87
|
+
cssClassName
|
|
88
|
+
} = dsClassnames.convertPropToCssClassName('datepicker', className, {
|
|
89
|
+
hasError,
|
|
90
|
+
readOnly,
|
|
91
|
+
disabled,
|
|
92
|
+
id
|
|
93
|
+
});
|
|
94
|
+
const safeDate = date || value;
|
|
95
|
+
return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({
|
|
96
|
+
className: cssClassName
|
|
97
|
+
}, containerProps), {}, {
|
|
98
|
+
style: {
|
|
99
|
+
minWidth: '140px'
|
|
100
|
+
},
|
|
101
|
+
children: /*#__PURE__*/_jsx__default["default"](DSDatePickerImpl, {
|
|
102
|
+
appendToBody: appendToBody,
|
|
103
|
+
autoClear: autoClear,
|
|
104
|
+
date: safeDate,
|
|
105
|
+
disabled: disabled,
|
|
106
|
+
displayFormat: displayFormat,
|
|
107
|
+
displayFormatDay: displayFormatDay,
|
|
108
|
+
enableOutsideDays: enableOutsideDays,
|
|
109
|
+
firstDayOfWeek: firstDayOfWeek,
|
|
110
|
+
hideKeyboardShortcutsPanel: hideKeyboardShortcutsPanel,
|
|
111
|
+
initialVisibleMonth: () => initialVisibleMonth ? moment__default["default"](initialVisibleMonth) : moment__default["default"](safeDate),
|
|
112
|
+
isDayBlocked: isDayBlocked,
|
|
113
|
+
isDayHighlighted: isDayHighlighted,
|
|
114
|
+
isOutsideRange: isOutsideRange === true || isOutsideRange === false ? () => isOutsideRange : isOutsideRange,
|
|
115
|
+
keepOpenOnDateSelect: keepOpenOnDateSelect,
|
|
116
|
+
numberOfMonths: numberOfMonths,
|
|
117
|
+
onBlur: onBlur,
|
|
118
|
+
onClose: onClose,
|
|
119
|
+
onChange: onChange,
|
|
120
|
+
onDateChange: function () {
|
|
121
|
+
if (onDateChange) onDateChange(...arguments);
|
|
122
|
+
},
|
|
123
|
+
onFocus: onFocus,
|
|
124
|
+
onNextMonthClick: onNextMonthClick,
|
|
125
|
+
onPrevMonthClick: onPrevMonthClick,
|
|
126
|
+
openDirection: openDirection,
|
|
127
|
+
phrases: phrases,
|
|
128
|
+
placeholder: placeholder,
|
|
129
|
+
readOnly: readOnly,
|
|
130
|
+
required: required,
|
|
131
|
+
screenReaderInputMessage: screenReaderInputMessage,
|
|
132
|
+
transitionDuration: transitionDuration,
|
|
133
|
+
value: safeDate,
|
|
134
|
+
verticalSpacing: verticalSpacing,
|
|
135
|
+
tabIndex: tabIndex,
|
|
136
|
+
zIndex: zIndex,
|
|
137
|
+
pickerProps: pickerProps,
|
|
138
|
+
calendarProps: calendarProps,
|
|
139
|
+
focusCurrentDate: focusCurrentDate
|
|
140
|
+
})
|
|
141
|
+
}));
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
const datePickerProps = {
|
|
145
|
+
containerProps: reactDesc.PropTypes.shape({}).description('Set of Properties attached to the main container'),
|
|
146
|
+
id: reactDesc.PropTypes.string.description('components id'),
|
|
147
|
+
appendToBody: reactDesc.PropTypes.bool.description('append component to body or not').defaultValue(true),
|
|
148
|
+
className: reactDesc.PropTypes.string.description('html class attribute'),
|
|
149
|
+
date: reactDesc.PropTypes.instanceOf(Date, moment__default["default"]).description('selected date').defaultValue(undefined),
|
|
150
|
+
value: reactDesc.PropTypes.instanceOf(Date, moment__default["default"]).description('value'),
|
|
151
|
+
placeholder: reactDesc.PropTypes.string.description('input placeholder value'),
|
|
152
|
+
autoClear: reactDesc.PropTypes.bool.description('autoclears the input onblur if the date is not completely set').defaultValue(false),
|
|
153
|
+
disabled: reactDesc.PropTypes.bool.description('disable component or not').defaultValue(false),
|
|
154
|
+
required: reactDesc.PropTypes.bool.description('value is required or not').defaultValue(false),
|
|
155
|
+
readOnly: reactDesc.PropTypes.bool.description('is read only or not').defaultValue(false),
|
|
156
|
+
hasError: reactDesc.PropTypes.bool.description('set error state').defaultValue(false),
|
|
157
|
+
screenReaderInputMessage: reactDesc.PropTypes.string.description('message to anounce by screen reader').defaultValue('select date'),
|
|
158
|
+
enableOutsideDays: reactDesc.PropTypes.bool.description('enable days oustide month or not').defaultValue(true),
|
|
159
|
+
initialVisibleMonth: reactDesc.PropTypes.instanceOf(Date, moment__default["default"]).description('initial month to display'),
|
|
160
|
+
firstDayOfWeek: reactDesc.PropTypes.number.description('first day of week').defaultValue(0),
|
|
161
|
+
keepOpenOnDateSelect: reactDesc.PropTypes.bool.description('keep picker open when a date is selected').defaultValue(false),
|
|
162
|
+
hideKeyboardShortcutsPanel: reactDesc.PropTypes.bool.description('hide keyabord shortcut panel or not').defaultValue(true),
|
|
163
|
+
onChange: reactDesc.PropTypes.func.description("\n function executed when input changes. This could trigger with invalid dates. It returns a string and a moment\n if the date is valid.\n "),
|
|
164
|
+
onDateChange: reactDesc.PropTypes.func.description('function executed when date changes. This doesnt trigger with invalid dates. It returns a moment object'),
|
|
165
|
+
onPrevMonthClick: reactDesc.PropTypes.func.description('function executed when clicking on prev month button'),
|
|
166
|
+
onNextMonthClick: reactDesc.PropTypes.func.description('function executed when clicking on next month button'),
|
|
167
|
+
onBlur: reactDesc.PropTypes.func.description('function executed when component loses focus'),
|
|
168
|
+
onClose: reactDesc.PropTypes.func.description('function executed when component closes'),
|
|
169
|
+
onFocus: reactDesc.PropTypes.func.description('function executed when component gains focus'),
|
|
170
|
+
phrases: reactDesc.PropTypes.shape({
|
|
171
|
+
calendarLabel: reactDesc.PropTypes.string,
|
|
172
|
+
closeDatePicker: reactDesc.PropTypes.string,
|
|
173
|
+
clearDates: reactDesc.PropTypes.string,
|
|
174
|
+
focusStartDate: reactDesc.PropTypes.string,
|
|
175
|
+
jumpToPrevMonth: reactDesc.PropTypes.string,
|
|
176
|
+
jumpToNextMonth: reactDesc.PropTypes.string,
|
|
177
|
+
keyboardShortcuts: reactDesc.PropTypes.string,
|
|
178
|
+
showKeyboardShortcutsPanel: reactDesc.PropTypes.string,
|
|
179
|
+
hideKeyboardShortcutsPanel: reactDesc.PropTypes.string,
|
|
180
|
+
openThisPanel: reactDesc.PropTypes.string,
|
|
181
|
+
enterKey: reactDesc.PropTypes.string,
|
|
182
|
+
leftArrowRightArrow: reactDesc.PropTypes.string,
|
|
183
|
+
upArrowDownArrow: reactDesc.PropTypes.string,
|
|
184
|
+
pageUpPageDown: reactDesc.PropTypes.string,
|
|
185
|
+
homeEnd: reactDesc.PropTypes.string,
|
|
186
|
+
escape: reactDesc.PropTypes.string,
|
|
187
|
+
questionMark: reactDesc.PropTypes.string,
|
|
188
|
+
selectFocusedDate: reactDesc.PropTypes.string,
|
|
189
|
+
moveFocusByOneDay: reactDesc.PropTypes.string,
|
|
190
|
+
moveFocusByOneWeek: reactDesc.PropTypes.string,
|
|
191
|
+
moveFocusByOneMonth: reactDesc.PropTypes.string,
|
|
192
|
+
moveFocustoStartAndEndOfWeek: reactDesc.PropTypes.string,
|
|
193
|
+
returnFocusToInput: reactDesc.PropTypes.string,
|
|
194
|
+
keyboardNavigationInstructions: reactDesc.PropTypes.string,
|
|
195
|
+
chooseAvailableStartDate: reactDesc.PropTypes.func,
|
|
196
|
+
chooseAvailableEndDate: reactDesc.PropTypes.func,
|
|
197
|
+
dateIsUnavailable: reactDesc.PropTypes.func,
|
|
198
|
+
dateIsSelected: reactDesc.PropTypes.func
|
|
199
|
+
}).description('react-dates phrases').defaultValue(defaultPhrases.SingleDatePickerPhrases),
|
|
200
|
+
displayFormat: reactDesc.PropTypes.string.description('display format').defaultValue('L'),
|
|
201
|
+
displayFormatDay: reactDesc.PropTypes.string.description('display format day').defaultValue('D'),
|
|
202
|
+
transitionDuration: reactDesc.PropTypes.number.description('transition duration').defaultValue(0),
|
|
203
|
+
verticalSpacing: reactDesc.PropTypes.number.description('vertical spacing'),
|
|
204
|
+
isDayBlocked: reactDesc.PropTypes.func.description('function that returns each day and disables desired dates'),
|
|
205
|
+
isOutsideRange: reactDesc.PropTypes.func.description('function that returns each day and disables outisde range dates'),
|
|
206
|
+
isDayHighlighted: reactDesc.PropTypes.func.description('function that returns each day and higlights desired dates'),
|
|
207
|
+
numberOfMonths: reactDesc.PropTypes.number.description('amount of months'),
|
|
208
|
+
openDirection: reactDesc.PropTypes.string.description('open direction of the popup').defaultValue('down'),
|
|
209
|
+
tabIndex: reactDesc.PropTypes.number.description('overrides tab index of the element'),
|
|
210
|
+
zIndex: reactDesc.PropTypes.string.description('overrides z-index of the element'),
|
|
211
|
+
pickerProps: reactDesc.PropTypes.shape(DatePickerPicker.PickerPropsTypes).description('props to be passed to the picker container'),
|
|
212
|
+
calendarProps: reactDesc.PropTypes.shape({
|
|
213
|
+
tabIndex: reactDesc.PropTypes.number
|
|
214
|
+
}).description('props to be passes to the calendar container'),
|
|
215
|
+
focusCurrentDate: reactDesc.PropTypes.bool.description('Wheter to focus current date on calendar').defaultValue(false)
|
|
216
|
+
};
|
|
217
|
+
const DatePickerWithSchema = reactDesc.describe(DSDatePicker);
|
|
218
|
+
DatePickerWithSchema.propTypes = datePickerProps;
|
|
219
|
+
|
|
220
|
+
exports.DatePickerNavigation = DatePickerNavigation;
|
|
221
|
+
exports.DatePickerDay = DatePickerDay;
|
|
222
|
+
exports.DatePickerPicker = DatePickerPicker.Picker;
|
|
223
|
+
exports.Picker = DatePickerPicker.Picker;
|
|
224
|
+
exports.DatePickerDropdown = DatePickerDropdown;
|
|
225
|
+
exports.DatePickerSingleDate = DatePickerSingleDate;
|
|
226
|
+
exports.DatePickerHeader = DatePickerHeader;
|
|
227
|
+
exports.DatePickerRange = DatePickerRange;
|
|
228
|
+
exports.DatePickerRangeHeader = DatePickerRangeHeader;
|
|
229
|
+
exports.SingleRangeDateSwitcher = SingleRangeDateSwitcher;
|
|
230
|
+
exports.renderMonthElement = DatePickerRenderMonth.renderMonthElement;
|
|
231
|
+
exports.DSDatePickerController = DatePickerController;
|
|
232
|
+
exports.DatePickerWithSchema = DatePickerWithSchema;
|
|
233
|
+
exports["default"] = DSDatePicker;
|
|
@@ -0,0 +1,354 @@
|
|
|
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 {
|
|
19
|
+
constructor(props) {
|
|
20
|
+
super(props);
|
|
21
|
+
|
|
22
|
+
this.onClickPicker = () => {
|
|
23
|
+
this.setState({
|
|
24
|
+
inputFocused: true
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
this.getSafeValue = () => {
|
|
29
|
+
const {
|
|
30
|
+
value,
|
|
31
|
+
date,
|
|
32
|
+
defaultValue
|
|
33
|
+
} = this.props;
|
|
34
|
+
const {
|
|
35
|
+
selectedDate
|
|
36
|
+
} = this.state;
|
|
37
|
+
|
|
38
|
+
if (value) {
|
|
39
|
+
return moment__default["default"](value, FORMAT, true);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (date) {
|
|
43
|
+
return moment__default["default"](date, FORMAT, true);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (defaultValue) {
|
|
47
|
+
return moment__default["default"](defaultValue, FORMAT, true);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (selectedDate) {
|
|
51
|
+
return selectedDate;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return null;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
this.getSafeInputValue = () => {
|
|
58
|
+
const safeValue = this.getSafeValue();
|
|
59
|
+
|
|
60
|
+
if (safeValue && safeValue.isValid()) {
|
|
61
|
+
return safeValue.format(FORMAT);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const {
|
|
65
|
+
dataInput
|
|
66
|
+
} = this.state;
|
|
67
|
+
return dataInput;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
this.isControlled = () => {
|
|
71
|
+
const {
|
|
72
|
+
value,
|
|
73
|
+
date
|
|
74
|
+
} = this.props;
|
|
75
|
+
return Boolean(value) || Boolean(date);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
this.handleDateChange = (date, event) => {
|
|
79
|
+
const {
|
|
80
|
+
readOnly,
|
|
81
|
+
onDateChange,
|
|
82
|
+
keepOpenOnDateSelect,
|
|
83
|
+
onChange,
|
|
84
|
+
onBlur
|
|
85
|
+
} = this.props;
|
|
86
|
+
|
|
87
|
+
if (!readOnly) {
|
|
88
|
+
if (!this.isControlled()) {
|
|
89
|
+
this.setState({
|
|
90
|
+
dataInput: date.format(FORMAT),
|
|
91
|
+
selectedDate: date
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
onChange(date.format(FORMAT), date);
|
|
96
|
+
onDateChange(date);
|
|
97
|
+
|
|
98
|
+
if (!keepOpenOnDateSelect || event.key === 'Enter') {
|
|
99
|
+
this.setState({
|
|
100
|
+
inputFocused: false
|
|
101
|
+
});
|
|
102
|
+
onBlur(date.format(FORMAT), date);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
this.handleInputChange = (dataInput, newDate) => {
|
|
108
|
+
const {
|
|
109
|
+
onChange
|
|
110
|
+
} = this.props;
|
|
111
|
+
const newState = {
|
|
112
|
+
dataInput,
|
|
113
|
+
selectedDate: newDate
|
|
114
|
+
};
|
|
115
|
+
this.setState(() => newState);
|
|
116
|
+
onChange(dataInput, newDate);
|
|
117
|
+
};
|
|
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
|
+
});
|
|
129
|
+
onDateChange(momentValue);
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
this.handleFocus = _ref => {
|
|
133
|
+
let {
|
|
134
|
+
focused
|
|
135
|
+
} = _ref;
|
|
136
|
+
this.setState({
|
|
137
|
+
inputFocused: focused
|
|
138
|
+
});
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
this.handleCalendarClose = () => {
|
|
142
|
+
const {
|
|
143
|
+
onClose
|
|
144
|
+
} = this.props;
|
|
145
|
+
this.setState({
|
|
146
|
+
inputFocused: false
|
|
147
|
+
});
|
|
148
|
+
this.handleOnBlur();
|
|
149
|
+
onClose();
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
this.handleClickEscape = () => {
|
|
153
|
+
const {
|
|
154
|
+
onClose
|
|
155
|
+
} = this.props;
|
|
156
|
+
this.setState({
|
|
157
|
+
inputFocused: false
|
|
158
|
+
});
|
|
159
|
+
this.handleOnBlur();
|
|
160
|
+
onClose();
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
this.handleOnBlur = () => {
|
|
164
|
+
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()) {
|
|
175
|
+
onBlur(dataInput, selectedDate);
|
|
176
|
+
} else {
|
|
177
|
+
if (autoClear) {
|
|
178
|
+
this.setState({
|
|
179
|
+
dataInput: undefined
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
onBlur(dataInput, null);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
this.handleInputFocus = dataInput => {
|
|
189
|
+
const {
|
|
190
|
+
onFocus
|
|
191
|
+
} = this.props;
|
|
192
|
+
onFocus(dataInput);
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
this.state = {
|
|
196
|
+
pickerRef: /*#__PURE__*/React__default["default"].createRef(),
|
|
197
|
+
dataInput: '',
|
|
198
|
+
selectedDate: null,
|
|
199
|
+
inputFocused: false
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
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
|
+
|
|
216
|
+
if (nextVal == null && nextDate == null) {
|
|
217
|
+
return {
|
|
218
|
+
dataInput: '',
|
|
219
|
+
selectedDate: null
|
|
220
|
+
};
|
|
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) {
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
const prevDateAsString = isPrevDateMoment ? prevDate.format(FORMAT) : prevDate;
|
|
230
|
+
const isNextValMoment = nextVal instanceof moment__default["default"];
|
|
231
|
+
const isNextDateMoment = nextDate instanceof moment__default["default"];
|
|
232
|
+
const nextValAsString = isNextValMoment ? nextVal.format(FORMAT) : nextVal;
|
|
233
|
+
const nextValAsMoment = isNextValMoment ? nextVal : moment__default["default"](nextVal);
|
|
234
|
+
const nextDateAsString = isNextDateMoment ? nextDate.format(FORMAT) : nextDate;
|
|
235
|
+
const nextDateAsMoment = isNextDateMoment ? nextDate : moment__default["default"](nextDate);
|
|
236
|
+
const hasValChanged = nextValAsString !== prevValAsString;
|
|
237
|
+
const hasDateChanged = nextDateAsString !== prevDateAsString;
|
|
238
|
+
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
|
+
|
|
242
|
+
if (hasDateChanged) {
|
|
243
|
+
skipStateChange = false;
|
|
244
|
+
newState.dataInput = nextDateAsString;
|
|
245
|
+
newState.selectedDate = nextDateAsMoment;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
if (hasValChanged) {
|
|
249
|
+
skipStateChange = false;
|
|
250
|
+
newState.dataInput = nextValAsString;
|
|
251
|
+
newState.selectedDate = nextValAsMoment;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
if (skipStateChange) return null;
|
|
255
|
+
return newState;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
render() {
|
|
259
|
+
var _this = this;
|
|
260
|
+
|
|
261
|
+
const {
|
|
262
|
+
inputFocused
|
|
263
|
+
} = this.state;
|
|
264
|
+
const {
|
|
265
|
+
disabled,
|
|
266
|
+
numberOfMonths,
|
|
267
|
+
readOnly,
|
|
268
|
+
enableOutsideDays,
|
|
269
|
+
transitionDuration,
|
|
270
|
+
firstDayOfWeek,
|
|
271
|
+
keepOpenOnDateSelect,
|
|
272
|
+
hideKeyboardShortcutsPanel,
|
|
273
|
+
onPrevMonthClick,
|
|
274
|
+
onNextMonthClick,
|
|
275
|
+
onClose,
|
|
276
|
+
phrases,
|
|
277
|
+
placeholder,
|
|
278
|
+
displayFormatDay,
|
|
279
|
+
isDayBlocked,
|
|
280
|
+
isOutsideRange,
|
|
281
|
+
isDayHighlighted,
|
|
282
|
+
tabIndex,
|
|
283
|
+
zIndex,
|
|
284
|
+
pickerProps,
|
|
285
|
+
calendarProps,
|
|
286
|
+
focusCurrentDate
|
|
287
|
+
} = this.props;
|
|
288
|
+
const safedate = this.getSafeValue();
|
|
289
|
+
const safeInputValue = this.getSafeInputValue();
|
|
290
|
+
const hasSelectedDate = !!safedate;
|
|
291
|
+
return /*#__PURE__*/_jsx__default["default"](dsForm.DSInputGroup, {
|
|
292
|
+
rightAddon: /*#__PURE__*/_jsx__default["default"](DatePickerDropdown, {
|
|
293
|
+
pickerRef: this.state.pickerRef,
|
|
294
|
+
disabled: disabled,
|
|
295
|
+
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',
|
|
302
|
+
"data-testid": "date-picker-portal-wrapper"
|
|
303
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"](DatePickerController, {
|
|
304
|
+
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,
|
|
314
|
+
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
|
+
});
|
|
322
|
+
},
|
|
323
|
+
onDateChange: this.handleDateChange,
|
|
324
|
+
onFocusChange: this.handleFocus,
|
|
325
|
+
onNextMonthClick: onNextMonthClick,
|
|
326
|
+
onOutsideClick: this.handleCalendarClose,
|
|
327
|
+
onPrevMonthClick: onPrevMonthClick,
|
|
328
|
+
phrases: phrases,
|
|
329
|
+
transitionDuration: transitionDuration,
|
|
330
|
+
calendarProps: calendarProps,
|
|
331
|
+
focusCurrentDate: focusCurrentDate
|
|
332
|
+
})),
|
|
333
|
+
onClick: this.onClickPicker,
|
|
334
|
+
readOnly: readOnly,
|
|
335
|
+
zIndex: zIndex,
|
|
336
|
+
pickerProps: pickerProps
|
|
337
|
+
})
|
|
338
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"](dsForm.DSDateInputV2, {
|
|
339
|
+
"data-testid": "datepicker-input",
|
|
340
|
+
"aria-label": placeholder || 'Date Picker Input',
|
|
341
|
+
disabled: disabled,
|
|
342
|
+
onBlur: this.handleOnBlur,
|
|
343
|
+
onChange: this.handleInputChange,
|
|
344
|
+
onDateChange: this.handleChange,
|
|
345
|
+
onFocus: this.handleInputFocus,
|
|
346
|
+
placeholder: placeholder,
|
|
347
|
+
tabIndex: tabIndex,
|
|
348
|
+
value: safeInputValue
|
|
349
|
+
}));
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
module.exports = DSdatePickerImpl;
|