@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.
- package/dist/rc-calendar.css +1179 -0
- package/dist/rc-calendar.css.map +1 -0
- package/dist/rc-calendar.js +7588 -0
- package/dist/rc-calendar.js.map +1 -0
- package/dist/rc-calendar.min.css +1179 -0
- package/dist/rc-calendar.min.css.map +1 -0
- package/dist/rc-calendar.min.js +1 -0
- package/es/Calendar.js +8 -4
- package/es/Picker.js +1 -0
- package/es/calendar/CalendarRightPanel.js +17 -3
- package/es/date/DateInput.js +59 -43
- package/es/date/DateTHead.js +3 -2
- package/es/util/index.js +459 -0
- package/lib/Calendar.js +8 -4
- package/lib/Picker.js +1 -0
- package/lib/calendar/CalendarRightPanel.js +18 -3
- package/lib/date/DateInput.js +58 -42
- package/lib/date/DateTHead.js +3 -2
- package/lib/util/index.js +471 -0
- package/package.json +1 -1
package/es/date/DateInput.js
CHANGED
@@ -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
|
-
|
31
|
-
|
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 && !
|
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
|
-
|
53
|
-
|
54
|
-
|
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
|
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
|
103
|
+
className: prefixCls + '-input',
|
86
104
|
value: str,
|
87
105
|
disabled: props.disabled,
|
88
106
|
placeholder: placeholder,
|
89
|
-
onChange: this.
|
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 (
|
139
|
-
var
|
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
|
159
|
-
|
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
|
};
|
package/es/date/DateTHead.js
CHANGED
@@ -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
|
-
|
35
|
-
|
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
|
}
|