@ozen-ui/kit
Version:
React component library
63 lines (62 loc) • 1.57 kB
JavaScript
import { isNotNil, isValidDate } from '../../../../utils';
export var parseDateString = function (value, steps) {
if (!isNotNil(value)) {
return null;
}
if (value === '') {
return null;
}
var hasYearsSteps = steps.includes('years');
var hasMonthsSteps = steps.includes('months');
var hasDaysSteps = steps.includes('days');
var splitted = value.split('.');
var day;
var month;
var year;
var offset = 0;
if (hasDaysSteps) {
day = splitted[offset];
offset += 1;
}
if (hasMonthsSteps) {
month = splitted[offset];
offset += 1;
}
if (hasYearsSteps) {
year = splitted[offset];
}
var parts = [];
if (hasYearsSteps) {
parts.push(year);
}
else {
var now = new Date();
parts.push(now.getFullYear().toString());
}
if (hasMonthsSteps) {
parts.push(month);
}
else {
// 3 месяц для кейса, где пользователь вводит 31 день месяца
parts.push('03');
}
if (hasDaysSteps) {
parts.push(day);
}
else {
parts.push('01');
}
var filteredParts = parts.filter(function (part) { return part !== undefined; });
if (filteredParts.length !== 3) {
return null;
}
var stringDate = filteredParts.join('-');
if (stringDate.length !== 10 || !isValidDate(stringDate)) {
return null;
}
return {
year: parts[0],
month: parts[1],
day: parts[2],
};
};