@elliemae/ds-date-time-picker 2.2.1 → 2.3.0-alpha.4

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.
@@ -1,178 +1,133 @@
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';
6
- import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
7
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
8
- import _jsx from '@babel/runtime/helpers/esm/jsx';
9
- import 'core-js/modules/web.dom-collections.iterator.js';
10
- import { useState, useRef, useEffect, useMemo } from 'react';
11
- import moment from 'moment';
12
- import { aggregatedClasses } from '@elliemae/ds-classnames';
13
- import { DatePickerDropdown, DSDatePickerController, SingleDatePickerPhrases } from '@elliemae/ds-date-picker';
14
- import { DSInputGroup, DSInput, DateInputsV2Impl, TimeInputImpl } from '@elliemae/ds-form';
15
- import { getVisibleTimeByFormat } from '@elliemae/ds-utilities';
16
- import { DSTimePickerMenu, convertTimeString } from '@elliemae/ds-time-picker';
17
- import { updateDateAndTime } from '../utils.js';
18
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
19
-
20
- const _excluded = ["onChange"];
21
-
22
- 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; }
23
-
24
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
25
- const blockName = 'date-time-picker';
26
- const DateTimePickerWrapper = aggregatedClasses('div')(blockName, 'wrapper');
27
- const TimePicker = aggregatedClasses(DSTimePickerMenu)(blockName, 'time-picker');
28
- const TimePickerWrapper = aggregatedClasses('div')(blockName, 'time-picker-wrapper'); // const DateInput = aggregatedClasses(DateInputsV2Impl)(blockName, 'date-input');
29
-
30
- const formatDate = 'MMDDYYYY';
31
-
32
- const DSDateTimePickerImpl = _ref => {
33
- let {
34
- onBlur = () => null,
35
- placeholder,
36
- date,
37
- clearable,
38
- datePickerProps: {
39
- disabled = false,
40
- numberOfMonths = 1,
41
- readOnly = false,
42
- enableOutsideDays = false,
43
- transitionDuration = 0,
44
- firstDayOfWeek = 0,
45
- keepOpenOnDateSelect = true,
46
- hideKeyboardShortcutsPanel = true,
47
- onPrevMonthClick = () => null,
48
- onNextMonthClick = () => null,
49
- onClose = () => null,
50
- onChange: onDatePickerChange = () => null,
51
- onDateChange = () => null,
52
- onError: onErrorDate = () => null,
53
- phrases = SingleDatePickerPhrases,
54
- displayFormatDay = 'D',
55
- isDayBlocked = () => false,
56
- isOutsideRange = () => false,
57
- isDayHighlighted = () => false,
58
- zIndex = 11
59
- },
60
- timePickerProps: {
61
- format = 'hh:mm A',
62
- onChange: onChangeTimePicker = () => null,
63
- disabledTimes = undefined,
64
- onError: onErrorTime = () => null,
65
- minutesInterval = 1
66
- },
67
- dateInputProps: {
68
- onDateInputDateChange = () => null
69
- }
70
- } = _ref;
71
- const [selectedDate, setSelectedDate] = useState(undefined);
72
- const [incompleteInput, setIncompleteInput] = useState(undefined);
1
+ import * as React from "react";
2
+ import React2, { useState, useEffect, useMemo, useRef } from "react";
3
+ import moment from "moment";
4
+ import { aggregatedClasses } from "@elliemae/ds-classnames";
5
+ import { DSDatePickerController, DatePickerDropdown, SingleDatePickerPhrases } from "@elliemae/ds-date-picker";
6
+ import { DSInput, DSInputGroup, DateInputsV2Impl, TimeInputImpl } from "@elliemae/ds-form";
7
+ import { getVisibleTimeByFormat } from "@elliemae/ds-utilities";
8
+ import { DSTimePickerMenu, convertTimeString } from "@elliemae/ds-time-picker";
9
+ import { updateDateAndTime } from "../utils";
10
+ const blockName = "date-time-picker";
11
+ const DateTimePickerWrapper = aggregatedClasses("div")(blockName, "wrapper");
12
+ const TimePicker = aggregatedClasses(DSTimePickerMenu)(blockName, "time-picker");
13
+ const TimePickerWrapper = aggregatedClasses("div")(blockName, "time-picker-wrapper");
14
+ const formatDate = "MMDDYYYY";
15
+ const DSDateTimePickerImpl = ({
16
+ onBlur = () => null,
17
+ placeholder,
18
+ date,
19
+ clearable,
20
+ datePickerProps: {
21
+ disabled = false,
22
+ numberOfMonths = 1,
23
+ readOnly = false,
24
+ enableOutsideDays = false,
25
+ transitionDuration = 0,
26
+ firstDayOfWeek = 0,
27
+ keepOpenOnDateSelect = true,
28
+ hideKeyboardShortcutsPanel = true,
29
+ onPrevMonthClick = () => null,
30
+ onNextMonthClick = () => null,
31
+ onClose = () => null,
32
+ onChange: onDatePickerChange = () => null,
33
+ onDateChange = () => null,
34
+ onError: onErrorDate = () => null,
35
+ phrases = SingleDatePickerPhrases,
36
+ displayFormatDay = "D",
37
+ isDayBlocked = () => false,
38
+ isOutsideRange = () => false,
39
+ isDayHighlighted = () => false,
40
+ zIndex = 11
41
+ },
42
+ timePickerProps: {
43
+ format = "hh:mm A",
44
+ onChange: onChangeTimePicker = () => null,
45
+ disabledTimes = void 0,
46
+ onError: onErrorTime = () => null,
47
+ minutesInterval = 1
48
+ },
49
+ dateInputProps: { onDateInputDateChange = () => null }
50
+ }) => {
51
+ const [selectedDate, setSelectedDate] = useState(void 0);
52
+ const [incompleteInput, setIncompleteInput] = useState(void 0);
73
53
  const [isOpen, setIsOpen] = useState(false);
74
54
  const disabledTimeRange = disabledTimes && {
75
55
  from: convertTimeString(disabledTimes.from),
76
56
  to: convertTimeString(disabledTimes.to)
77
57
  };
78
58
  const dateTimePickerWrapperRef = useRef();
79
- const fullFormat = "".concat(formatDate, " ").concat(format);
59
+ const fullFormat = `${formatDate} ${format}`;
80
60
  useEffect(() => {
81
61
  if (date) {
82
62
  setSelectedDate(moment(date));
83
- } else if (date === null) setSelectedDate(undefined);
63
+ } else if (date === null)
64
+ setSelectedDate(void 0);
84
65
  }, [date]);
85
66
  const visiblePanels = useMemo(() => getVisibleTimeByFormat(format), []);
86
67
  const currentYear = moment().year();
87
-
88
- const handleDatePickerChange = dateSelected => {
68
+ const handleDatePickerChange = (dateSelected) => {
89
69
  const splittedDate = updateDateAndTime(dateSelected, selectedDate);
90
-
91
70
  if (!readOnly) {
92
71
  setSelectedDate(splittedDate);
93
72
  onDateChange(splittedDate);
94
73
  }
95
74
  };
96
-
97
- const onTimeChange = pickerTime => {
75
+ const onTimeChange = (pickerTime) => {
98
76
  const splittedDate = updateDateAndTime(selectedDate, pickerTime);
99
77
  onChangeTimePicker(splittedDate);
100
78
  setSelectedDate(splittedDate);
101
79
  };
102
-
103
80
  const handleInputChange = (inputValue, type) => {
104
81
  onDatePickerChange(inputValue);
105
82
  let timeBlocked = false;
106
83
  const inputMoment = moment(inputValue, fullFormat);
107
84
  setIncompleteInput(inputValue);
108
-
109
- if (type === 'date') {
85
+ if (type === "date") {
110
86
  const splittedDate = updateDateAndTime(inputMoment, selectedDate);
111
-
112
87
  if (inputValue.length < 8) {
113
- onErrorDate({
114
- message: 'date incomplete',
115
- inputValue
116
- });
117
- if (clearable) onDateChange('error');
88
+ onErrorDate({ message: "date incomplete", inputValue });
89
+ if (clearable)
90
+ onDateChange("error");
118
91
  return;
119
92
  }
120
-
121
93
  if (inputValue.length === 8 && inputMoment.isValid()) {
122
94
  setSelectedDate(splittedDate);
123
95
  onChangeTimePicker(splittedDate);
124
96
  }
125
-
126
97
  onDateChange(splittedDate);
127
98
  return;
128
99
  }
129
-
130
100
  if (disabledTimeRange) {
131
101
  const hour = inputValue.hour();
132
102
  const min = inputValue.minutes();
133
- const {
134
- from,
135
- to
136
- } = disabledTimeRange;
137
-
103
+ const { from, to } = disabledTimeRange;
138
104
  if (hour > from.hour && hour < to.hour || hour === to.hour && min < to.min) {
139
105
  timeBlocked = true;
140
106
  }
141
107
  }
142
-
143
- if (timeBlocked) onErrorTime({
144
- message: 'time blocked',
145
- inputValue
146
- });
108
+ if (timeBlocked)
109
+ onErrorTime({ message: "time blocked", inputValue });
147
110
  const dateBlocked = isDayBlocked(inputMoment);
148
- if (dateBlocked) onErrorDate({
149
- message: 'date blocked',
150
- inputValue
151
- });
152
-
111
+ if (dateBlocked)
112
+ onErrorDate({ message: "date blocked", inputValue });
153
113
  if (!timeBlocked && !dateBlocked) {
154
114
  onDateChange(inputValue);
155
115
  }
156
116
  };
157
-
158
- const handleOutsideClick = event => {
117
+ const handleOutsideClick = (event) => {
159
118
  if (!dateTimePickerWrapperRef.current.contains(event.target)) {
160
119
  setIsOpen(false);
161
120
  }
162
121
  };
163
-
164
122
  const handleClickEscape = () => setIsOpen(false);
165
-
166
123
  const handleOpen = () => setIsOpen(true);
167
-
168
- const handleContainerBlur = event => {
124
+ const handleContainerBlur = (event) => {
169
125
  if (!isOpen && !event.currentTarget.contains(event.relatedTarget)) {
170
- onBlur(event, selectedDate !== null && selectedDate !== void 0 && selectedDate.isValid() ? selectedDate : {
126
+ onBlur(event, selectedDate?.isValid() ? selectedDate : {
171
127
  error: true,
172
- message: 'incomplete input',
128
+ message: "incomplete input",
173
129
  input: incompleteInput
174
130
  });
175
-
176
131
  if (clearable && !selectedDate && !!incompleteInput) {
177
132
  const inputMoment = moment(incompleteInput, fullFormat);
178
133
  const splittedDate = updateDateAndTime(inputMoment, selectedDate);
@@ -181,96 +136,90 @@ const DSDateTimePickerImpl = _ref => {
181
136
  }
182
137
  }
183
138
  };
184
-
185
139
  useEffect(() => {
186
- if (!isOpen) onBlur({}, selectedDate !== null && selectedDate !== void 0 && selectedDate.isValid() ? selectedDate : {
187
- error: true,
188
- message: 'incomplete input',
189
- input: incompleteInput
190
- });
140
+ if (!isOpen)
141
+ onBlur({}, selectedDate?.isValid() ? selectedDate : {
142
+ error: true,
143
+ message: "incomplete input",
144
+ input: incompleteInput
145
+ });
191
146
  }, [isOpen]);
192
147
  const hasSelectedDate = !!selectedDate;
193
- return /*#__PURE__*/_jsx(DSInputGroup, {
148
+ return /* @__PURE__ */ React2.createElement(DSInputGroup, {
194
149
  containerProps: {
195
150
  onBlur: handleContainerBlur
196
151
  },
197
- rightAddon: /*#__PURE__*/_jsx(DatePickerDropdown, {
198
- disabled: disabled,
199
- isOpen: isOpen,
200
- zIndex: zIndex,
201
- menu: /*#__PURE__*/jsxs(DateTimePickerWrapper, {
152
+ rightAddon: /* @__PURE__ */ React2.createElement(DatePickerDropdown, {
153
+ disabled,
154
+ isOpen,
155
+ zIndex,
156
+ menu: /* @__PURE__ */ React2.createElement(DateTimePickerWrapper, {
202
157
  ref: dateTimePickerWrapperRef,
203
- "data-testid": "date-time-picker",
204
- children: [/*#__PURE__*/_jsx("div", {
205
- className: hasSelectedDate ? 'has-selected-date' : 'without-selected-date',
206
- "data-testid": "date-time-picker-portal-wrapper"
207
- }, void 0, /*#__PURE__*/_jsx(DSDatePickerController, {
208
- date: selectedDate,
209
- displayFormatDay: displayFormatDay,
210
- enableOutsideDays: enableOutsideDays,
211
- firstDayOfWeek: firstDayOfWeek,
212
- hideKeyboardShortcutsPanel: hideKeyboardShortcutsPanel,
213
- isDayBlocked: isDayBlocked,
214
- isDayHighlighted: isDayHighlighted,
215
- isOutsideRange: isOutsideRange,
216
- keepOpenOnDateSelect: keepOpenOnDateSelect,
217
- numberOfMonths: numberOfMonths,
218
- onClickEscape: handleClickEscape,
219
- onClose: onClose,
220
- onDateChange: handleDatePickerChange,
221
- onNextMonthClick: onNextMonthClick,
222
- onOutsideClick: event => handleOutsideClick(event),
223
- onPrevMonthClick: onPrevMonthClick,
224
- phrases: phrases,
225
- transitionDuration: transitionDuration
226
- })), /*#__PURE__*/_jsx(TimePickerWrapper, {}, void 0, /*#__PURE__*/jsx(TimePicker, _objectSpread({
227
- disabled: disabled,
228
- disabledTimes: disabledTimeRange,
229
- format: format,
230
- hasHeader: true,
231
- hasHeaderDisplay: true,
232
- onTimeChange: onTimeChange,
233
- showSeconds: false,
234
- minutesInterval: minutesInterval,
235
- time: selectedDate
236
- }, visiblePanels)))]
237
- }),
158
+ "data-testid": "date-time-picker"
159
+ }, /* @__PURE__ */ React2.createElement("div", {
160
+ className: hasSelectedDate ? "has-selected-date" : "without-selected-date",
161
+ "data-testid": "date-time-picker-portal-wrapper"
162
+ }, /* @__PURE__ */ React2.createElement(DSDatePickerController, {
163
+ date: selectedDate,
164
+ displayFormatDay,
165
+ enableOutsideDays,
166
+ firstDayOfWeek,
167
+ hideKeyboardShortcutsPanel,
168
+ isDayBlocked,
169
+ isDayHighlighted,
170
+ isOutsideRange,
171
+ keepOpenOnDateSelect,
172
+ numberOfMonths,
173
+ onClickEscape: handleClickEscape,
174
+ onClose,
175
+ onDateChange: handleDatePickerChange,
176
+ onNextMonthClick,
177
+ onOutsideClick: (event) => handleOutsideClick(event),
178
+ onPrevMonthClick,
179
+ phrases,
180
+ transitionDuration
181
+ })), /* @__PURE__ */ React2.createElement(TimePickerWrapper, null, /* @__PURE__ */ React2.createElement(TimePicker, {
182
+ disabled,
183
+ disabledTimes: disabledTimeRange,
184
+ format,
185
+ hasHeader: true,
186
+ hasHeaderDisplay: true,
187
+ onTimeChange,
188
+ showSeconds: false,
189
+ minutesInterval,
190
+ time: selectedDate,
191
+ ...visiblePanels
192
+ }))),
238
193
  onClick: handleOpen,
239
- readOnly: readOnly
194
+ readOnly
240
195
  })
241
- }, void 0, /*#__PURE__*/_jsx(DSInput, {
242
- customInputType: _ref2 => {
243
- let {
244
- onChange: handleChange
245
- } = _ref2,
246
- restInputProps = _objectWithoutProperties(_ref2, _excluded);
247
-
248
- return /*#__PURE__*/jsxs(Fragment, {
249
- children: [/*#__PURE__*/_jsx("div", {
250
- style: {
251
- display: 'flex'
252
- }
253
- }, void 0, /*#__PURE__*/jsx(DateInputsV2Impl, _objectSpread(_objectSpread({
254
- disabled: disabled,
255
- onChange: input => handleChange(input, 'date')
256
- }, restInputProps), {}, {
257
- onDateChange: onDateInputDateChange,
258
- yearMaxRange: currentYear + 100,
259
- yearMinRange: currentYear - 100,
260
- time: restInputProps.value && restInputProps.value.hour && restInputProps.value.isValid() ? restInputProps.value.format(formatDate) : restInputProps.value
261
- }))), /*#__PURE__*/jsx(TimeInputImpl, _objectSpread({
262
- disabled: disabled,
263
- format: format,
264
- onChange: time => handleChange(time, 'time')
265
- }, restInputProps))]
266
- });
267
- },
196
+ }, /* @__PURE__ */ React2.createElement(DSInput, {
197
+ customInputType: ({ onChange: handleChange, ...restInputProps }) => /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("div", {
198
+ style: { display: "flex" }
199
+ }, /* @__PURE__ */ React2.createElement(DateInputsV2Impl, {
200
+ disabled,
201
+ onChange: (input) => handleChange(input, "date"),
202
+ ...restInputProps,
203
+ onDateChange: onDateInputDateChange,
204
+ yearMaxRange: currentYear + 100,
205
+ yearMinRange: currentYear - 100,
206
+ time: restInputProps.value && restInputProps.value.hour && restInputProps.value.isValid() ? restInputProps.value.format(formatDate) : restInputProps.value
207
+ })), /* @__PURE__ */ React2.createElement(TimeInputImpl, {
208
+ disabled,
209
+ format,
210
+ onChange: (time) => handleChange(time, "time"),
211
+ ...restInputProps
212
+ })),
268
213
  isShowElipsisActive: false,
269
- disabled: disabled,
214
+ disabled,
270
215
  onChange: handleInputChange,
271
- placeholder: placeholder,
216
+ placeholder,
272
217
  value: selectedDate
273
218
  }));
274
219
  };
275
-
276
- export { DSDateTimePickerImpl as default };
220
+ var DateTimePickerImpl_default = DSDateTimePickerImpl;
221
+ export {
222
+ DSDateTimePickerImpl,
223
+ DateTimePickerImpl_default as default
224
+ };
225
+ //# sourceMappingURL=DateTimePickerImpl.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/components/DateTimePickerImpl.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable indent */\n/* eslint-disable max-statements */\n/* eslint-disable complexity */\n/* eslint-disable no-empty-pattern */\n/* eslint-disable import/no-unresolved */\n/* eslint-disable max-lines */\n/* eslint-disable react/prop-types */\nimport React, { useState, useEffect, useMemo, useRef } from 'react';\nimport moment from 'moment';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport { DSDatePickerController, DatePickerDropdown, SingleDatePickerPhrases } from '@elliemae/ds-date-picker';\nimport { DSInput, DSInputGroup, DateInputsV2Impl, TimeInputImpl } from '@elliemae/ds-form';\nimport { getVisibleTimeByFormat } from '@elliemae/ds-utilities';\nimport { DSTimePickerMenu, convertTimeString } from '@elliemae/ds-time-picker';\nimport { updateDateAndTime } from '../utils';\n\nconst blockName = 'date-time-picker';\n\nconst DateTimePickerWrapper = aggregatedClasses('div')(blockName, 'wrapper');\nconst TimePicker = aggregatedClasses(DSTimePickerMenu)(blockName, 'time-picker');\nconst TimePickerWrapper = aggregatedClasses('div')(blockName, 'time-picker-wrapper');\n// const DateInput = aggregatedClasses(DateInputsV2Impl)(blockName, 'date-input');\nconst formatDate = 'MMDDYYYY';\n\nconst DSDateTimePickerImpl = ({\n onBlur = () => null,\n placeholder,\n date,\n clearable,\n datePickerProps: {\n disabled = false,\n numberOfMonths = 1,\n readOnly = false,\n enableOutsideDays = false,\n transitionDuration = 0,\n firstDayOfWeek = 0,\n keepOpenOnDateSelect = true,\n hideKeyboardShortcutsPanel = true,\n onPrevMonthClick = () => null,\n onNextMonthClick = () => null,\n onClose = () => null,\n onChange: onDatePickerChange = () => null,\n onDateChange = () => null,\n onError: onErrorDate = () => null,\n phrases = SingleDatePickerPhrases,\n displayFormatDay = 'D',\n isDayBlocked = () => false,\n isOutsideRange = () => false,\n isDayHighlighted = () => false,\n zIndex = 11,\n },\n timePickerProps: {\n format = 'hh:mm A',\n onChange: onChangeTimePicker = () => null,\n disabledTimes = undefined,\n onError: onErrorTime = () => null,\n minutesInterval = 1,\n },\n dateInputProps: { onDateInputDateChange = () => null },\n}) => {\n const [selectedDate, setSelectedDate] = useState(undefined);\n const [incompleteInput, setIncompleteInput] = useState(undefined);\n const [isOpen, setIsOpen] = useState(false);\n\n const disabledTimeRange = disabledTimes && {\n from: convertTimeString(disabledTimes.from),\n to: convertTimeString(disabledTimes.to),\n };\n\n const dateTimePickerWrapperRef = useRef();\n const fullFormat = `${formatDate} ${format}`;\n\n useEffect(() => {\n if (date) {\n setSelectedDate(moment(date));\n } else if (date === null) setSelectedDate(undefined);\n }, [date]);\n\n const visiblePanels = useMemo(() => getVisibleTimeByFormat(format), []);\n\n const currentYear = moment().year();\n\n const handleDatePickerChange = (dateSelected) => {\n const splittedDate = updateDateAndTime(dateSelected, selectedDate);\n if (!readOnly) {\n setSelectedDate(splittedDate);\n onDateChange(splittedDate);\n }\n };\n\n const onTimeChange = (pickerTime) => {\n const splittedDate = updateDateAndTime(selectedDate, pickerTime);\n onChangeTimePicker(splittedDate);\n setSelectedDate(splittedDate);\n };\n\n const handleInputChange = (inputValue, type) => {\n onDatePickerChange(inputValue);\n let timeBlocked = false;\n const inputMoment = moment(inputValue, fullFormat);\n setIncompleteInput(inputValue);\n if (type === 'date') {\n const splittedDate = updateDateAndTime(inputMoment, selectedDate);\n if (inputValue.length < 8) {\n onErrorDate({ message: 'date incomplete', inputValue });\n if (clearable) onDateChange('error');\n return;\n }\n if (inputValue.length === 8 && inputMoment.isValid()) {\n setSelectedDate(splittedDate);\n onChangeTimePicker(splittedDate);\n }\n onDateChange(splittedDate);\n return;\n }\n\n if (disabledTimeRange) {\n const hour = inputValue.hour();\n const min = inputValue.minutes();\n const { from, to } = disabledTimeRange;\n\n if ((hour > from.hour && hour < to.hour) || (hour === to.hour && min < to.min)) {\n timeBlocked = true;\n }\n }\n if (timeBlocked) onErrorTime({ message: 'time blocked', inputValue });\n const dateBlocked = isDayBlocked(inputMoment);\n if (dateBlocked) onErrorDate({ message: 'date blocked', inputValue });\n if (!timeBlocked && !dateBlocked) {\n onDateChange(inputValue);\n }\n };\n\n const handleOutsideClick = (event) => {\n if (!dateTimePickerWrapperRef.current.contains(event.target)) {\n setIsOpen(false);\n }\n };\n\n const handleClickEscape = () => setIsOpen(false);\n const handleOpen = () => setIsOpen(true);\n\n const handleContainerBlur = (event) => {\n if (!isOpen && !event.currentTarget.contains(event.relatedTarget)) {\n onBlur(\n event,\n selectedDate?.isValid()\n ? selectedDate\n : {\n error: true,\n message: 'incomplete input',\n input: incompleteInput,\n },\n );\n if (clearable && !selectedDate && !!incompleteInput) {\n const inputMoment = moment(incompleteInput, fullFormat);\n const splittedDate = updateDateAndTime(inputMoment, selectedDate);\n\n setSelectedDate(splittedDate);\n onDateChange(splittedDate);\n }\n }\n };\n\n useEffect(() => {\n if (!isOpen)\n onBlur(\n {},\n selectedDate?.isValid()\n ? selectedDate\n : {\n error: true,\n message: 'incomplete input',\n input: incompleteInput,\n },\n );\n }, [isOpen]);\n\n const hasSelectedDate = !!selectedDate;\n return (\n <DSInputGroup\n containerProps={{\n onBlur: handleContainerBlur,\n }}\n rightAddon={\n <DatePickerDropdown\n disabled={disabled}\n isOpen={isOpen}\n zIndex={zIndex}\n menu={\n <DateTimePickerWrapper ref={dateTimePickerWrapperRef} data-testid=\"date-time-picker\">\n <div\n className={hasSelectedDate ? 'has-selected-date' : 'without-selected-date'}\n data-testid=\"date-time-picker-portal-wrapper\"\n >\n <DSDatePickerController\n date={selectedDate}\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={handleClickEscape}\n onClose={onClose}\n onDateChange={handleDatePickerChange}\n onNextMonthClick={onNextMonthClick}\n onOutsideClick={(event) => handleOutsideClick(event)}\n onPrevMonthClick={onPrevMonthClick}\n phrases={phrases}\n transitionDuration={transitionDuration}\n />\n </div>\n <TimePickerWrapper>\n <TimePicker\n disabled={disabled}\n disabledTimes={disabledTimeRange}\n format={format}\n hasHeader\n hasHeaderDisplay\n onTimeChange={onTimeChange}\n showSeconds={false}\n minutesInterval={minutesInterval}\n time={selectedDate}\n {...visiblePanels}\n />\n </TimePickerWrapper>\n </DateTimePickerWrapper>\n }\n onClick={handleOpen}\n readOnly={readOnly}\n />\n }\n >\n <DSInput\n customInputType={({ onChange: handleChange, ...restInputProps }) => (\n <>\n <div style={{ display: 'flex' }}>\n <DateInputsV2Impl\n disabled={disabled}\n onChange={(input) => handleChange(input, 'date')}\n {...restInputProps}\n onDateChange={onDateInputDateChange}\n yearMaxRange={currentYear + 100}\n yearMinRange={currentYear - 100}\n time={\n restInputProps.value && restInputProps.value.hour && restInputProps.value.isValid()\n ? restInputProps.value.format(formatDate)\n : restInputProps.value\n }\n />\n </div>\n <TimeInputImpl\n disabled={disabled}\n format={format}\n onChange={(time) => handleChange(time, 'time')}\n {...restInputProps}\n />\n </>\n )}\n isShowElipsisActive={false}\n disabled={disabled}\n onChange={handleInputChange}\n placeholder={placeholder}\n value={selectedDate}\n />\n </DSInputGroup>\n );\n};\n\nexport { DSDateTimePickerImpl };\nexport default DSDateTimePickerImpl;\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
package/esm/index.js CHANGED
@@ -1 +1,8 @@
1
- export { DateTimePickerWithSchema, default } from './DSDateTimePicker.js';
1
+ import * as React from "react";
2
+ import { default as default2, DSDateTimePicker, DateTimePickerWithSchema } from "./DSDateTimePicker";
3
+ export {
4
+ DSDateTimePicker,
5
+ DateTimePickerWithSchema,
6
+ default2 as default
7
+ };
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/index.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export { default, DSDateTimePicker, DateTimePickerWithSchema } from './DSDateTimePicker';\n"],
5
+ "mappings": "AAAA;ACAA;",
6
+ "names": []
7
+ }
@@ -1,7 +1,10 @@
1
- var english = {
2
- placeholder: 'Select date and time',
3
- className: '',
4
- id: ''
1
+ import * as React from "react";
2
+ var english_default = {
3
+ placeholder: "Select date and time",
4
+ className: "",
5
+ id: ""
5
6
  };
6
-
7
- export { english as default };
7
+ export {
8
+ english_default as default
9
+ };
10
+ //# sourceMappingURL=english.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/lang/english.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export default {\n placeholder: 'Select date and time',\n className: '',\n id: '',\n};\n"],
5
+ "mappings": "AAAA;ACAA,IAAO,kBAAQ;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,IAAI;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ import React2 from "react";
3
+ import { ThemeProvider } from "styled-components";
4
+ import { DSTheme } from "@elliemae/ds-system";
5
+ const themeProviderHOC = (Component) => (props) => /* @__PURE__ */ React2.createElement(ThemeProvider, {
6
+ theme: DSTheme
7
+ }, /* @__PURE__ */ React2.createElement(Component, {
8
+ ...props
9
+ }));
10
+ export {
11
+ themeProviderHOC
12
+ };
13
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/tests/utils.js"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { ThemeProvider } from 'styled-components';\nimport { DSTheme } from '@elliemae/ds-system';\n\nexport const themeProviderHOC = (Component) => (props) => (\n <ThemeProvider theme={DSTheme}>\n <Component {...props} />\n </ThemeProvider>\n);\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AAEO,MAAM,mBAAmB,CAAC,cAAc,CAAC,UAC9C,qCAAC,eAAD;AAAA,EAAe,OAAO;AAAA,GACpB,qCAAC,WAAD;AAAA,KAAe;AAAA;",
6
+ "names": []
7
+ }
package/esm/utils.js CHANGED
@@ -1,14 +1,16 @@
1
- import moment from 'moment';
2
-
1
+ import * as React from "react";
2
+ import moment from "moment";
3
3
  const updateDateAndTime = (date, time) => {
4
4
  const splittedDate = moment();
5
- splittedDate.month(date === null || date === void 0 ? void 0 : date.get('month'));
6
- splittedDate.year(date === null || date === void 0 ? void 0 : date.get('year'));
7
- splittedDate.date(date === null || date === void 0 ? void 0 : date.get('date'));
8
- splittedDate.hour(time === null || time === void 0 ? void 0 : time.get('hour'));
9
- splittedDate.minute(time === null || time === void 0 ? void 0 : time.get('minute'));
10
- splittedDate.second(time === null || time === void 0 ? void 0 : time.get('second'));
5
+ splittedDate.month(date?.get("month"));
6
+ splittedDate.year(date?.get("year"));
7
+ splittedDate.date(date?.get("date"));
8
+ splittedDate.hour(time?.get("hour"));
9
+ splittedDate.minute(time?.get("minute"));
10
+ splittedDate.second(time?.get("second"));
11
11
  return splittedDate;
12
12
  };
13
-
14
- export { updateDateAndTime };
13
+ export {
14
+ updateDateAndTime
15
+ };
16
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/utils.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import moment from 'moment';\n\nexport const updateDateAndTime = (date, time) => {\n const splittedDate = moment();\n splittedDate.month(date?.get('month'));\n splittedDate.year(date?.get('year'));\n splittedDate.date(date?.get('date'));\n splittedDate.hour(time?.get('hour'));\n splittedDate.minute(time?.get('minute'));\n splittedDate.second(time?.get('second'));\n\n return splittedDate;\n};\n"],
5
+ "mappings": "AAAA;ACAA;AAEO,MAAM,oBAAoB,CAAC,MAAM,SAAS;AAC/C,QAAM,eAAe;AACrB,eAAa,MAAM,MAAM,IAAI;AAC7B,eAAa,KAAK,MAAM,IAAI;AAC5B,eAAa,KAAK,MAAM,IAAI;AAC5B,eAAa,KAAK,MAAM,IAAI;AAC5B,eAAa,OAAO,MAAM,IAAI;AAC9B,eAAa,OAAO,MAAM,IAAI;AAE9B,SAAO;AAAA;",
6
+ "names": []
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-date-time-picker",
3
- "version": "2.2.1",
3
+ "version": "2.3.0-alpha.4",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - Date Time Picker",
6
6
  "module": "./esm/index.js",
@@ -52,12 +52,12 @@
52
52
  "build": "node ../../scripts/build/build.js"
53
53
  },
54
54
  "dependencies": {
55
- "@elliemae/ds-classnames": "2.2.1",
56
- "@elliemae/ds-date-picker": "2.2.1",
57
- "@elliemae/ds-form": "2.2.1",
58
- "@elliemae/ds-system": "2.2.1",
59
- "@elliemae/ds-time-picker": "2.2.1",
60
- "@elliemae/ds-utilities": "2.2.1",
55
+ "@elliemae/ds-classnames": "2.3.0-alpha.4",
56
+ "@elliemae/ds-date-picker": "2.3.0-alpha.4",
57
+ "@elliemae/ds-form": "2.3.0-alpha.4",
58
+ "@elliemae/ds-system": "2.3.0-alpha.4",
59
+ "@elliemae/ds-time-picker": "2.3.0-alpha.4",
60
+ "@elliemae/ds-utilities": "2.3.0-alpha.4",
61
61
  "lodash": "~4.17.21",
62
62
  "moment": "~2.29.1",
63
63
  "prop-types": "~15.7.2",
@@ -161,5 +161,5 @@ declare const DateTimePickerWithSchema: {
161
161
  propTypes: unknown;
162
162
  toTypescript: () => import("react-desc").TypescriptSchema;
163
163
  };
164
- export { DateTimePickerWithSchema };
164
+ export { DateTimePickerWithSchema, DSDateTimePicker };
165
165
  export default DSDateTimePicker;
@@ -72,4 +72,5 @@ declare const DSDateTimePickerImpl: ({ onBlur, placeholder, date, clearable, dat
72
72
  onDateInputDateChange?: (() => null) | undefined;
73
73
  };
74
74
  }) => JSX.Element;
75
+ export { DSDateTimePickerImpl };
75
76
  export default DSDateTimePickerImpl;
package/types/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { default, DateTimePickerWithSchema } from './DSDateTimePicker';
1
+ export { default, DSDateTimePicker, DateTimePickerWithSchema } from './DSDateTimePicker';