@seafile/seafile-calendar 0.0.29-alpha.4 → 0.0.29-alpha12

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.
@@ -7,7 +7,7 @@ import PropTypes from 'prop-types';
7
7
  import KeyCode from 'rc-util/es/KeyCode';
8
8
  import { polyfill } from 'react-lifecycles-compat';
9
9
  import dayjs from 'dayjs';
10
- import { formatDate } from '../util';
10
+ import { formatDate, DATE_FORMATS, getDateFormatByStr, formatDateLocal, delimate, normalizeDateInput } from '../util';
11
11
 
12
12
  var cachedSelectionStart = void 0;
13
13
  var cachedSelectionEnd = void 0;
@@ -24,17 +24,19 @@ var DateInput = function (_React$Component) {
24
24
  _initialiseProps.call(_this);
25
25
 
26
26
  var selectedValue = props.selectedValue;
27
-
27
+ var formatPrefix = _this.props.format[0];
28
28
  _this.state = {
29
29
  str: formatDate(selectedValue, _this.props.format),
30
- invalid: false,
31
- hasFocus: false
30
+ hasFocus: false,
31
+ localeFormat: formatPrefix,
32
+ delimiter: delimate(formatPrefix),
33
+ cananderIput: ''
32
34
  };
33
35
  return _this;
34
36
  }
35
37
 
36
38
  DateInput.prototype.componentDidUpdate = function componentDidUpdate() {
37
- if (dateInputInstance && this.state.hasFocus && !this.state.invalid && !(cachedSelectionStart === 0 && cachedSelectionEnd === 0)) {
39
+ if (dateInputInstance && this.state.hasFocus && !(cachedSelectionStart === 0 && cachedSelectionEnd === 0)) {
38
40
  dateInputInstance.setSelectionRange(cachedSelectionStart, cachedSelectionEnd);
39
41
  }
40
42
  };
@@ -49,12 +51,31 @@ var DateInput = function (_React$Component) {
49
51
  // when popup show, click body will call this, bug!
50
52
  var selectedValue = nextProps.selectedValue;
51
53
  if (!state.hasFocus) {
52
- newState = {
53
- str: formatDate(selectedValue, nextProps.format),
54
- invalid: false
55
- };
54
+ var timeStr = formatDate(selectedValue, nextProps.format).split(' ')[0];
55
+ var parts = timeStr.split(state.delimiter);
56
+ var timeParts = formatDate(selectedValue, nextProps.format).split(' ')[1];
57
+ if (parts.length === 3) {
58
+ if (state.localeFormat === DATE_FORMATS.ISO) {
59
+ newState = { str: parts[0].padStart(4, 0) + '-' + parts[1] + '-' + parts[2] };
60
+ } else if (state.localeFormat === DATE_FORMATS.ISOAndTime) {
61
+ newState = {
62
+ str: parts[0].padStart(4, 0) + '-' + parts[1] + '-' + parts[2] + ' ' + (nextProps.showHourAndMinute ? timeParts : '') // eslint-disable-line max-len
63
+ };
64
+ } else if (state.localeFormat === DATE_FORMATS.US) {
65
+ newState = { str: Number(parts[0]) + '/' + Number(parts[1]) + '/' + parts[2].padStart(4, 0) };
66
+ } else if (state.localeFormat === DATE_FORMATS.USAndTime) {
67
+ newState = {
68
+ str: Number(parts[0]) + '/' + Number(parts[1]) + '/' + parts[2].padStart(4, 0) + ' ' + (nextProps.showHourAndMinute ? timeParts : '') // eslint-disable-line max-len
69
+ };
70
+ } else if (state.localeFormat === DATE_FORMATS.European || state.localeFormat === DATE_FORMATS.Germany_Russia_etc) {
71
+ newState = { str: '' + Number(parts[0]) + state.delimiter + Number(parts[1]) + state.delimiter + parts[2].padStart(4, 0) }; // eslint-disable-line max-len
72
+ } else if (state.localeFormat === DATE_FORMATS.EuropeanAndTime || state.localeFormat === DATE_FORMATS.Germany_Russia_etcAndTime) {
73
+ newState = {
74
+ str: '' + Number(parts[0]) + state.delimiter + Number(parts[1]) + state.delimiter + parts[2].padStart(4, 0) + ' ' + (nextProps.showHourAndMinute ? timeParts : '') // eslint-disable-line max-len
75
+ };
76
+ }
77
+ }
56
78
  }
57
-
58
79
  return newState;
59
80
  };
60
81
 
@@ -64,16 +85,13 @@ var DateInput = function (_React$Component) {
64
85
 
65
86
  DateInput.prototype.render = function render() {
66
87
  var props = this.props;
67
- var _state = this.state,
68
- invalid = _state.invalid,
69
- str = _state.str;
88
+ var str = this.state.str;
70
89
  var locale = props.locale,
71
90
  prefixCls = props.prefixCls,
72
91
  placeholder = props.placeholder,
73
92
  clearIcon = props.clearIcon,
74
93
  inputMode = props.inputMode;
75
94
 
76
- var invalidClass = invalid ? prefixCls + '-input-invalid' : '';
77
95
  return React.createElement(
78
96
  'div',
79
97
  { className: prefixCls + '-input-wrap' },
@@ -82,11 +100,11 @@ var DateInput = function (_React$Component) {
82
100
  { className: prefixCls + '-date-input-wrap' },
83
101
  React.createElement('input', {
84
102
  ref: this.saveDateInput,
85
- className: prefixCls + '-input ' + invalidClass,
103
+ className: prefixCls + '-input',
86
104
  value: str,
87
105
  disabled: props.disabled,
88
106
  placeholder: placeholder,
89
- onChange: this.onInputChange,
107
+ onChange: this.onInputChangeAll,
90
108
  onKeyDown: this.onKeyDown,
91
109
  onFocus: this.onFocus,
92
110
  onBlur: this.onBlur,
@@ -122,7 +140,8 @@ DateInput.propTypes = {
122
140
  onSelect: PropTypes.func,
123
141
  selectedValue: PropTypes.object,
124
142
  clearIcon: PropTypes.node,
125
- inputMode: PropTypes.string
143
+ inputMode: PropTypes.string,
144
+ showHourAndMinute: PropTypes.bool
126
145
  };
127
146
 
128
147
  var _initialiseProps = function _initialiseProps() {
@@ -135,55 +154,52 @@ var _initialiseProps = function _initialiseProps() {
135
154
  _this2.props.onClear(null);
136
155
  };
137
156
 
138
- this.onInputChange = function (event) {
139
- var str = event.target.value;
157
+ this.onInputChange = function (str) {
158
+ var cananderStr = normalizeDateInput(str, _this2.state.localeFormat, _this2.state.delimiter);
140
159
  var _props = _this2.props,
141
160
  disabledDate = _props.disabledDate,
142
- format = _props.format,
143
161
  onChange = _props.onChange,
144
162
  selectedValue = _props.selectedValue;
145
163
 
164
+ var parts = formatDateLocal(cananderStr, _this2.state.localeFormat);
146
165
  // 没有内容,合法并直接退出
147
-
148
166
  if (!str) {
149
167
  onChange(null);
150
- _this2.setState({
151
- invalid: false,
152
- str: str
153
- });
168
+ _this2.setState({ str: str });
154
169
  return;
155
170
  }
156
-
157
171
  // 不合法直接退出
158
- var parsed = dayjs(str, format, true);
159
- if (!parsed.isValid()) {
160
- _this2.setState({
161
- invalid: true,
162
- str: str
163
- });
164
- return;
165
- }
166
-
172
+ var format = getDateFormatByStr(cananderStr, _this2.state.localeFormat);
173
+ var parsed = dayjs(cananderStr, format);
167
174
  var value = _this2.props.value.clone();
168
175
  value = value.year(parsed.year()).month(parsed.month()).date(parsed.date()).hour(parsed.hour()).minute(parsed.minute()).second(parsed.second());
169
176
 
177
+ if (_this2.state.localeFormat === DATE_FORMATS.ISO || _this2.state.localeFormat === DATE_FORMATS.ISOAndTime) {
178
+ if (parts[0] && parts[0].length === 4 && (parts[0].slice(0, 3) === '000' || parts[0].slice(0, 2) === '00')) {
179
+ value.year(parts[0]);
180
+ }
181
+ }
182
+ if (_this2.state.localeFormat === DATE_FORMATS.European || _this2.state.localeFormat === DATE_FORMATS.EuropeanAndTime || _this2.state.localeFormat === DATE_FORMATS.US || _this2.state.localeFormat === DATE_FORMATS.USAndTime || _this2.state.localeFormat === DATE_FORMATS.Germany_Russia_etc || _this2.state.localeFormat === DATE_FORMATS.Germany_Russia_etcAndTime) {
183
+ if (parts[2] && parts[2].length === 4 && (parts[2].slice(0, 3) === '000' || parts[2].slice(0, 2) === '00')) {
184
+ value.year(parts[2]);
185
+ }
186
+ }
170
187
  if (!value || disabledDate && disabledDate(value)) {
171
- _this2.setState({
172
- invalid: true,
173
- str: str
174
- });
188
+ _this2.setState({ str: str });
175
189
  return;
176
190
  }
177
191
 
178
192
  if (selectedValue !== value || selectedValue && value && !selectedValue.isSame(value)) {
179
- _this2.setState({
180
- invalid: false,
181
- str: str
182
- });
193
+ _this2.setState({ str: str });
183
194
  onChange(value);
184
195
  }
185
196
  };
186
197
 
198
+ this.onInputChangeAll = function (event) {
199
+ var str = event.target.value;
200
+ _this2.onInputChange(str);
201
+ };
202
+
187
203
  this.onFocus = function () {
188
204
  _this2.setState({ hasFocus: true });
189
205
  };
@@ -31,8 +31,9 @@ var DateTHead = function (_React$Component) {
31
31
  var firstDay = DAY_NAME_TO_INDEX[firstDayName] ? DAY_NAME_TO_INDEX[firstDayName] : 0;
32
32
 
33
33
  var showWeekNumberEl = void 0;
34
- for (var dateColIndex = 0; dateColIndex < DATE_ROW_COLUMN_COUNT.DATE_COL_COUNT; dateColIndex++) {
35
- var index = (firstDay + dateColIndex) % DATE_ROW_COLUMN_COUNT.DATE_COL_COUNT;
34
+ var dateColumnCount = DATE_ROW_COLUMN_COUNT.DATE_COL_COUNT;
35
+ for (var dateColIndex = 0; dateColIndex < dateColumnCount; dateColIndex++) {
36
+ var index = (firstDay + dateColIndex) % dateColumnCount;
36
37
  veryShortWeekdays[dateColIndex] = allWeekdaysMin[index];
37
38
  weekDays[dateColIndex] = allWeekdaysShort[index];
38
39
  }
package/es/util/index.js CHANGED
@@ -3,6 +3,23 @@ import dayjs from 'dayjs';
3
3
  import utc from 'dayjs/plugin/utc';
4
4
 
5
5
  dayjs.extend(utc);
6
+ export var currentDate = dayjs().date();
7
+ export var currentMonth = dayjs().month() + 1;
8
+ export var currentYear = dayjs().year();
9
+ export var stringCurrentDate = String(currentDate).padStart(2, '0');
10
+ export var stringCurrentMonth = String(currentMonth).padStart(2, '0');
11
+ export var currentTime = dayjs().format('HH:mm');
12
+
13
+ export var DATE_FORMATS = {
14
+ ISO: 'YYYY-MM-DD',
15
+ ISOAndTime: 'YYYY-MM-DD HH:mm',
16
+ US: 'M/D/YYYY',
17
+ USAndTime: 'M/D/YYYY HH:mm',
18
+ European: 'DD/MM/YYYY',
19
+ EuropeanAndTime: 'DD/MM/YYYY HH:mm',
20
+ Germany_Russia_etc: 'DD.MM.YYYY',
21
+ Germany_Russia_etcAndTime: 'DD.MM.YYYY HH:mm'
22
+ };
6
23
 
7
24
  var defaultDisabledTime = {
8
25
  disabledHours: function disabledHours() {
@@ -102,4 +119,446 @@ export function formatDate(value, format) {
102
119
  }
103
120
 
104
121
  return value.format(format);
122
+ }
123
+
124
+ export function formatDateLocal(formatStr, format) {
125
+ var str = formatStr || '';
126
+ var cleanStr = void 0;
127
+ switch (format) {
128
+ case DATE_FORMATS.ISO:
129
+ case DATE_FORMATS.ISOAndTime:
130
+ cleanStr = str.replace(/[^0-9]+/g, '-');
131
+ return cleanStr.split('-').filter(Boolean).map(String);
132
+ case DATE_FORMATS.US:
133
+ case DATE_FORMATS.USAndTime:
134
+ case DATE_FORMATS.European:
135
+ case DATE_FORMATS.EuropeanAndTime:
136
+ cleanStr = str.replace(/[^0-9]+/g, '/');
137
+ return cleanStr.split('/').filter(Boolean).map(String);
138
+ case DATE_FORMATS.Germany_Russia_etc:
139
+ case DATE_FORMATS.Germany_Russia_etcAndTime:
140
+ cleanStr = str.replace(/[^0-9]+/g, '.');
141
+ return cleanStr.split('.').filter(Boolean).map(String);
142
+ default:
143
+ return [];
144
+ }
145
+ }
146
+
147
+ export function hasSpecialChar(str) {
148
+ var matches = str.match(/[^0-9]/g);
149
+ return matches ? matches.length : 0;
150
+ }
151
+
152
+ export function isValidMonth(monthStr) {
153
+ if (typeof monthStr === 'undefined' || monthStr === null) return currentMonth;
154
+ if (!/^\d+$/.test(Number(monthStr))) return currentMonth;
155
+ var month = Number(monthStr);
156
+ if (month >= 1 && month <= 12) {
157
+ return monthStr;
158
+ }
159
+ return currentMonth;
160
+ }
161
+
162
+ export function isValidDay(dayStr) {
163
+ if (!/^\d+$/.test(dayStr)) return false;
164
+ var day = Number(dayStr);
165
+ if ([1, 3, 5, 7, 8, 10, 12].includes(currentMonth)) {
166
+ return day >= 1 && day <= 31;
167
+ }
168
+ if ([4, 6, 9, 11].includes(currentMonth)) {
169
+ return day >= 1 && day <= 30;
170
+ }
171
+ if (currentMonth === 2) {
172
+ var isLeapYear = function isLeapYear(year) {
173
+ return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
174
+ };
175
+ var year = currentYear;
176
+ if (isLeapYear(year)) {
177
+ return day >= 1 && day <= 29;
178
+ }
179
+ return day >= 1 && day <= 28;
180
+ }
181
+ }
182
+
183
+ export function fullValidYear(yearStr) {
184
+ var year = yearStr;
185
+ if (!year || isNaN(year)) return currentYear;
186
+ if (year.length === 2) {
187
+ if (Number(year) >= 0 && Number(year) < 69) {
188
+ return year ? '20' + year : currentYear;
189
+ } else if (Number(year) >= 69 && Number(year) < 100) {
190
+ return year ? '19' + year : currentYear;
191
+ }
192
+ }
193
+ if (year.length === 4) {
194
+ return year;
195
+ }
196
+ return year ? year.padStart(4, '0') : currentYear;
197
+ }
198
+
199
+ export function delimate(formatPrefix) {
200
+ var delimiter = void 0;
201
+ if (formatPrefix === DATE_FORMATS.Germany_Russia_etc || formatPrefix === DATE_FORMATS.Germany_Russia_etcAndTime) {
202
+ delimiter = '.';
203
+ } else if (formatPrefix === DATE_FORMATS.ISO || formatPrefix === DATE_FORMATS.ISOAndTime) {
204
+ delimiter = '-';
205
+ } else {
206
+ delimiter = '/';
207
+ }
208
+ return delimiter;
209
+ }
210
+
211
+ export function getDateFormatByStr(str, format) {
212
+ var cananderStr = str || '';
213
+ var delimiter = delimate(format);
214
+ var parts = cananderStr.split(delimiter);
215
+ if (parts.length !== 3) return format;
216
+ if (format === DATE_FORMATS.ISO) {
217
+ return DATE_FORMATS.ISO;
218
+ }
219
+ if (format === DATE_FORMATS.ISOAndTime) {
220
+ return DATE_FORMATS.ISOAndTime;
221
+ }
222
+ if (format === DATE_FORMATS.US) {
223
+ return DATE_FORMATS.US;
224
+ }
225
+ if (format === DATE_FORMATS.USAndTime) {
226
+ return DATE_FORMATS.USAndTime;
227
+ }
228
+ if (format === DATE_FORMATS.European || format === DATE_FORMATS.Germany_Russia_etc) {
229
+ var day = parts[0],
230
+ month = parts[1];
231
+
232
+ var dayLen = day.length;
233
+ var monthLen = month.length;
234
+ if (dayLen === 2 && monthLen === 2) {
235
+ return 'DD' + delimiter + 'MM' + delimiter + 'YYYY';
236
+ } else if (dayLen === 2 && monthLen === 1) {
237
+ return 'DD' + delimiter + 'M' + delimiter + 'YYYY';
238
+ } else if (dayLen === 1 && monthLen === 2) {
239
+ return 'D' + delimiter + 'MM' + delimiter + 'YYYY';
240
+ } else if (dayLen === 1 && monthLen === 1) {
241
+ return 'D' + delimiter + 'M' + delimiter + 'YYYY';
242
+ }
243
+ }
244
+ if (format === DATE_FORMATS.EuropeanAndTime || format === DATE_FORMATS.Germany_Russia_etcAndTime) {
245
+ var _day = parts[0],
246
+ _month = parts[1];
247
+
248
+ var _dayLen = _day.length;
249
+ var _monthLen = _month.length;
250
+ if (_dayLen === 2 && _monthLen === 2) {
251
+ return 'DD' + delimiter + 'MM' + delimiter + 'YYYY HH:mm';
252
+ } else if (_dayLen === 2 && _monthLen === 1) {
253
+ return 'DD' + delimiter + 'M' + delimiter + 'YYYY HH:mm';
254
+ } else if (_dayLen === 1 && _monthLen === 2) {
255
+ return 'D' + delimiter + 'MM' + delimiter + 'YYYY HH:mm';
256
+ } else if (_dayLen === 1 && _monthLen === 1) {
257
+ return 'D' + delimiter + 'M' + delimiter + 'YYYY HH:mm';
258
+ }
259
+ }
260
+ return format;
261
+ }
262
+
263
+ export function isCurrentYear(year, month, day) {
264
+ return Number(month) >= 1 && Number(month) <= 12 && Number(day) >= 1 && Number(day) <= 31 ? year : currentYear; // eslint-disable-line max-len
265
+ }
266
+
267
+ export function validateTime(inputTime) {
268
+ if (!inputTime || typeof inputTime !== 'string') {
269
+ return currentTime;
270
+ }
271
+ var trimmed = inputTime.trim();
272
+ var timeRegex = /^(\d{2}):(\d{2})$/;
273
+ var match = trimmed.match(timeRegex);
274
+ if (!match) {
275
+ return currentTime;
276
+ }
277
+ var hour = Number(match[1]);
278
+ var minute = Number(match[2]);
279
+ if (hour > 23 || minute > 59) {
280
+ return currentTime;
281
+ }
282
+ return match[1] + ':' + match[2];
283
+ }
284
+
285
+ export function checkSpecialBetweenDigits(str) {
286
+ var regex = /^\d+[^0-9]\d+$/;
287
+ return regex.test(str);
288
+ }
289
+
290
+ function getDatePart(str) {
291
+ if (typeof str !== 'string') return '';
292
+ var parts = str.trim().split(/\s+/);
293
+ return parts[0];
294
+ }
295
+
296
+ export function normalizeDateInput(str, localeFormat, delimiter) {
297
+ var day = void 0;
298
+ var month = void 0;
299
+ var year = void 0;
300
+ var time = currentTime;
301
+ var parts = formatDateLocal(str, localeFormat, DATE_FORMATS);
302
+ if (localeFormat === DATE_FORMATS.ISO) {
303
+ var hasSpecial = hasSpecialChar(str);
304
+ var numStr = str.replace(/[^0-9]/g, '');
305
+ if (numStr.length === 7) {
306
+ year = numStr.slice(0, 4);
307
+ month = numStr.slice(4, 6).padStart(2, '0');
308
+ day = numStr.slice(6, 7).padStart(2, '0');
309
+ if (!isValidDay(day)) {
310
+ return year + '-' + stringCurrentMonth + '-' + stringCurrentDate;
311
+ }
312
+ return year + '-' + month + '-' + day;
313
+ }
314
+ if (hasSpecial) {
315
+ year = fullValidYear(parts[0]);
316
+ month = Number(parts[1]);
317
+ day = Number(parts[2]);
318
+ if (month >= 1 && month <= 12) {
319
+ if (isValidDay(day)) {
320
+ return year + '-' + String(month).padStart(2, '0') + '-' + String(day).padStart(2, '0');
321
+ }
322
+ return year + '-' + String(month).padStart(2, '0') + '-01';
323
+ }
324
+ if ((month >= 13 || month < 1) && isNaN(day)) {
325
+ return year + '-' + stringCurrentMonth + '-' + stringCurrentDate;
326
+ }
327
+ if ((month >= 13 || month < 1) && day) {
328
+ return String(currentYear) + '-' + stringCurrentMonth + '-' + stringCurrentDate;
329
+ }
330
+ if (!month && !day) {
331
+ return year + '-01-01';
332
+ }
333
+ }
334
+ if (str.length >= 1 && str.length <= 8) {
335
+ year = fullValidYear(str.slice(0, 4));
336
+ month = str.slice(4, 6);
337
+ day = Number(str.slice(6, 8));
338
+ if (str.length === 5 && Number(month) < 1) {
339
+ return year + '-' + stringCurrentMonth + '-' + stringCurrentDate + ' ';
340
+ }
341
+ if (str.length === 6 && Number(month) < 1) {
342
+ return year + '-' + stringCurrentMonth + '-' + stringCurrentDate;
343
+ }
344
+ if (str.length === 7) {
345
+ if (!isValidDay(day)) {
346
+ return year + '-' + String(isValidMonth(month)).padStart(2, '0') + '-' + stringCurrentDate;
347
+ }
348
+ return year + '-' + String(isValidMonth(month)).padStart(2, '0') + '-' + String(day).padStart(2, '0'); // eslint-disable-line max-len
349
+ }
350
+ if (str.length === 8) {
351
+ if (!isValidDay(day)) {
352
+ return isCurrentYear(year, month, day) + '-' + String(isValidMonth(month)).padStart(2, '0') + '-' + stringCurrentDate; // eslint-disable-line max-len
353
+ }
354
+ return isCurrentYear(year, month, day) + '-' + String(isValidMonth(month)).padStart(2, '0') + '-' + String(day).padStart(2, '0'); // eslint-disable-line max-len
355
+ }
356
+ if (Number(month) >= 1 && Number(month) <= 12 && isValidDay(day)) {
357
+ return year + '-' + month.padStart(2, '0') + '-' + String(day).padStart(2, '0');
358
+ }
359
+ return year + '-' + (month ? month.padStart(2, '0') : '01') + '-' + (day ? String(day).padStart(2, '0') : '01'); // eslint-disable-line max-len
360
+ }
361
+ return currentYear + '/' + stringCurrentMonth + '/' + stringCurrentDate;
362
+ }
363
+ if (localeFormat === DATE_FORMATS.ISOAndTime) {
364
+ var unNormalDate = getDatePart(str);
365
+ var unNormalDateParts = formatDateLocal(unNormalDate, localeFormat, DATE_FORMATS);
366
+ var _hasSpecial = hasSpecialChar(unNormalDate);
367
+ var _numStr = unNormalDate.replace(/[^0-9]/g, '');
368
+ if (_numStr.length === 7) {
369
+ year = _numStr.slice(0, 4);
370
+ month = _numStr.slice(4, 6).padStart(2, '0');
371
+ day = _numStr.slice(6, 7).padStart(2, '0');
372
+ if (parts.length === 3) {
373
+ time = validateTime(parts[1] + ':' + parts[2]);
374
+ }
375
+ if (parts.length === 4) {
376
+ time = validateTime(parts[2] + ':' + parts[3]);
377
+ }
378
+ if (parts.length === 5) {
379
+ time = validateTime(parts[3] + ':' + parts[4]);
380
+ }
381
+ if (!isValidDay(day)) {
382
+ return year + '-' + stringCurrentMonth + '-' + stringCurrentDate + ' ' + time;
383
+ }
384
+ return year + '-' + month + '-' + day + ' ' + time;
385
+ }
386
+ if (_hasSpecial) {
387
+ if (unNormalDateParts.length < 3) {
388
+ parts.splice(2, 0, '1');
389
+ }
390
+ year = fullValidYear(parts[0]);
391
+ month = Number(parts[1]);
392
+ day = Number(parts[2]);
393
+ time = validateTime(parts[3] + ':' + parts[4]);
394
+ if (month >= 1 && month <= 12) {
395
+ if (isValidDay(day)) {
396
+ return year + '-' + String(month).padStart(2, '0') + '-' + String(day).padStart(2, '0') + ' ' + time; // eslint-disable-line max-len
397
+ }
398
+ return year + '-' + String(month).padStart(2, '0') + '-01 ' + time;
399
+ }
400
+ if ((month >= 13 || month < 1) && isNaN(day)) {
401
+ return year + '-' + stringCurrentMonth + '-' + stringCurrentDate + ' ' + time; // eslint-disable-line max-len
402
+ }
403
+ if ((month >= 13 || month < 1) && day) {
404
+ return String(currentYear) + '-' + stringCurrentMonth + '-' + stringCurrentDate + ' ' + time; // eslint-disable-line max-len
405
+ }
406
+ if (!month && !day) {
407
+ return year + '-01-01 ' + time;
408
+ }
409
+ }
410
+ if (unNormalDate.length >= 1 && unNormalDate.length <= 8) {
411
+ year = fullValidYear(unNormalDate.slice(0, 4));
412
+ month = unNormalDate.slice(4, 6);
413
+ day = Number(unNormalDate.slice(6, 8));
414
+ var timeParts = formatDateLocal(str, localeFormat, DATE_FORMATS);
415
+ time = validateTime(timeParts[1] + ':' + timeParts[2]);
416
+ if (unNormalDate.length === 5 && Number(month) < 1) {
417
+ return year + '-' + stringCurrentMonth + '-' + stringCurrentDate + ' ' + time;
418
+ }
419
+ if (unNormalDate.length === 6 && Number(month) < 1) {
420
+ return year + '-' + stringCurrentMonth + '-' + stringCurrentDate + ' ' + time;
421
+ }
422
+ if (unNormalDate.length === 7) {
423
+ if (!isValidDay(day)) {
424
+ return year + '-' + String(isValidMonth(month)).padStart(2, '0') + '-' + stringCurrentDate + ' ' + time; // eslint-disable-line max-len
425
+ }
426
+ return year + '-' + String(isValidMonth(month)).padStart(2, '0') + '-' + String(day).padStart(2, '0') + ' ' + time; // eslint-disable-line max-len
427
+ }
428
+ if (unNormalDate.length === 8) {
429
+ if (!isValidDay(day)) {
430
+ return isCurrentYear(year, month, day) + '-' + String(isValidMonth(month)).padStart(2, '0') + '-' + stringCurrentDate + ' ' + time; // eslint-disable-line max-len
431
+ }
432
+ return isCurrentYear(year, month, day) + '-' + String(isValidMonth(month)).padStart(2, '0') + '-' + String(day).padStart(2, '0') + ' ' + time; // eslint-disable-line max-len
433
+ }
434
+ if (Number(month) >= 1 && Number(month) <= 12 && isValidDay(day)) {
435
+ return year + '-' + month.padStart(2, '0') + '-' + String(day).padStart(2, '0') + ' ' + time;
436
+ }
437
+ return year + '-' + (month ? month.padStart(2, '0') : '01') + '-' + (day ? String(day).padStart(2, '0') : '01') + ' ' + time; // eslint-disable-line max-len
438
+ }
439
+ return currentYear + '/' + stringCurrentMonth + '/' + stringCurrentDate + ' ' + time;
440
+ }
441
+ if (localeFormat === DATE_FORMATS.US) {
442
+ var _hasSpecial2 = hasSpecialChar(str);
443
+ if (_hasSpecial2) {
444
+ month = Number(parts[0]);
445
+ day = Number(parts[1]);
446
+ year = fullValidYear(parts[2]);
447
+ if (month >= 1 && month <= 12 && isValidDay(day)) {
448
+ return month + '/' + day + '/' + year;
449
+ }
450
+ return currentMonth + '/' + currentDate + '/' + currentYear;
451
+ }
452
+ if (str.length >= 1 && str.length <= 8) {
453
+ month = Number(str.slice(0, 2));
454
+ day = Number(str.slice(2, 4));
455
+ year = fullValidYear(str.slice(4, str.length));
456
+ if (month >= 1 && month <= 12) {
457
+ if (isValidDay(day)) {
458
+ return month + '/' + day + '/' + year;
459
+ }
460
+ if (!day) {
461
+ return month + '/1/' + year;
462
+ }
463
+ return currentMonth + '/' + currentDate + '/' + currentYear;
464
+ }
465
+ }
466
+ return currentMonth + '/' + currentDate + '/' + currentYear;
467
+ }
468
+ if (localeFormat === DATE_FORMATS.USAndTime) {
469
+ var _unNormalDate = getDatePart(str);
470
+ var _unNormalDateParts = formatDateLocal(_unNormalDate, localeFormat, DATE_FORMATS);
471
+ var _hasSpecial3 = hasSpecialChar(_unNormalDate);
472
+ if (_hasSpecial3) {
473
+ if (_unNormalDateParts.length < 3) {
474
+ parts.splice(2, 0, String(currentYear));
475
+ }
476
+ month = Number(parts[0]);
477
+ day = Number(parts[1]);
478
+ year = fullValidYear(parts[2]);
479
+ time = validateTime(parts[3] + ':' + parts[4]);
480
+ if (month >= 1 && month <= 12 && isValidDay(day)) {
481
+ return month + '/' + day + '/' + year + ' ' + time;
482
+ }
483
+ return currentMonth + '/' + currentDate + '/' + currentYear + ' ' + time;
484
+ }
485
+ if (_unNormalDate.length >= 1 && _unNormalDate.length <= 8) {
486
+ month = Number(_unNormalDate.slice(0, 2));
487
+ day = Number(_unNormalDate.slice(2, 4));
488
+ year = fullValidYear(_unNormalDate.slice(4, _unNormalDate.length));
489
+ var _timeParts = formatDateLocal(str, localeFormat, DATE_FORMATS);
490
+ time = validateTime(_timeParts[1] + ':' + _timeParts[2]);
491
+ if (month >= 1 && month <= 12) {
492
+ if (isValidDay(day)) {
493
+ return month + '/' + day + '/' + year + ' ' + time;
494
+ }
495
+ if (!day) {
496
+ return month + '/1/' + year + ' ' + time;
497
+ }
498
+ return currentMonth + '/' + currentDate + '/' + currentYear + ' ' + time;
499
+ }
500
+ }
501
+ return currentMonth + '/' + currentDate + '/' + currentYear + ' ' + time;
502
+ }
503
+ if (localeFormat === DATE_FORMATS.European || localeFormat === DATE_FORMATS.Germany_Russia_etc) {
504
+ var _hasSpecial4 = hasSpecialChar(str);
505
+ if (_hasSpecial4) {
506
+ day = parts[0];
507
+ month = parts[1];
508
+ year = fullValidYear(parts[2]);
509
+ if (isValidDay(day) && Number(month) >= 1 && Number(month) <= 12) {
510
+ return '' + Number(day) + delimiter + Number(month) + delimiter + year;
511
+ }
512
+ return '' + currentDate + delimiter + currentMonth + delimiter + currentYear;
513
+ }
514
+ if (str.length >= 1 && str.length <= 8) {
515
+ day = Number(str.slice(0, 2));
516
+ var monthStr = str.slice(2, 4);
517
+ month = isValidMonth(monthStr);
518
+ var yearStr = str.slice(4, str.length);
519
+ year = fullValidYear(yearStr);
520
+
521
+ if (isValidDay(day)) {
522
+ if (Number(monthStr) < 1 && Number(monthStr) > 12) {
523
+ return '' + currentDate + delimiter + currentMonth + delimiter + currentYear;
524
+ }
525
+ return '' + Number(day) + delimiter + Number(month) + delimiter + year;
526
+ }
527
+ }
528
+ return '' + currentDate + delimiter + currentMonth + delimiter + currentYear;
529
+ }
530
+ if (localeFormat === DATE_FORMATS.EuropeanAndTime || localeFormat === DATE_FORMATS.Germany_Russia_etcAndTime) {
531
+ var _unNormalDate2 = getDatePart(str);
532
+ var _unNormalDateParts2 = formatDateLocal(_unNormalDate2, localeFormat, DATE_FORMATS);
533
+ var _hasSpecial5 = hasSpecialChar(_unNormalDate2);
534
+ if (_hasSpecial5) {
535
+ if (_unNormalDateParts2.length < 3) {
536
+ parts.splice(2, 0, String(currentYear));
537
+ }
538
+ day = parts[0];
539
+ month = parts[1];
540
+ year = fullValidYear(parts[2]);
541
+ time = validateTime(parts[3] + ':' + parts[4]);
542
+ if (isValidDay(day) && Number(month) >= 1 && Number(month) <= 12) {
543
+ return '' + Number(day) + delimiter + Number(month) + delimiter + year + ' ' + time;
544
+ }
545
+ return '' + currentDate + delimiter + currentMonth + delimiter + currentYear + ' ' + time;
546
+ }
547
+ if (_unNormalDate2.length >= 1 && _unNormalDate2.length <= 8) {
548
+ day = Number(_unNormalDate2.slice(0, 2));
549
+ var _monthStr = _unNormalDate2.slice(2, 4);
550
+ month = isValidMonth(_monthStr);
551
+ var _yearStr = _unNormalDate2.slice(4, _unNormalDate2.length);
552
+ year = fullValidYear(_yearStr);
553
+ var _timeParts2 = formatDateLocal(str, localeFormat, DATE_FORMATS);
554
+ time = validateTime(_timeParts2[1] + ':' + _timeParts2[2]);
555
+ if (isValidDay(day)) {
556
+ if (Number(_monthStr) < 1 && Number(_monthStr) > 12) {
557
+ return '' + currentDate + delimiter + currentMonth + delimiter + currentYear + ' ' + time;
558
+ }
559
+ return '' + Number(day) + delimiter + Number(month) + delimiter + year + ' ' + time;
560
+ }
561
+ }
562
+ return '' + currentDate + delimiter + currentMonth + delimiter + currentYear + ' ' + time;
563
+ }
105
564
  }