@ozen-ui/kit
Version:
React component library
40 lines (39 loc) • 1.58 kB
JavaScript
/**
* Функция для обработки вставленного значения.
* Умеет обрабатывать форматы DD.MM.YYYY/DDMMYYYY, либо сочетания вида DDMM/DD.MM.
*/
export var maskPastedDate = function (value, steps) {
var digits = value.replace(/\D/g, '').slice(0, 8); // максимум 8 цифр
var hasYearsStep = steps.includes('years');
var hasMonthsStep = steps.includes('months');
var hasDaysStep = steps.includes('days');
// DD
if (hasDaysStep && !hasMonthsStep && !hasYearsStep) {
return digits.slice(0, 2);
}
// MM
if (!hasDaysStep && hasMonthsStep && !hasYearsStep) {
return digits.slice(0, 2);
}
// YYYY
if (!hasDaysStep && !hasMonthsStep && hasYearsStep) {
return digits.slice(0, 4);
}
// DD.MM.YYYY
if (hasDaysStep && hasMonthsStep && hasYearsStep) {
return "".concat(digits.slice(0, 2), ".").concat(digits.slice(2, 4), ".").concat(digits.slice(4, 8));
}
// DD.MM
if (hasDaysStep && hasMonthsStep && !hasYearsStep) {
return "".concat(digits.slice(0, 2), ".").concat(digits.slice(2, 4));
}
// DD.YYYY
if (hasDaysStep && !hasMonthsStep && hasYearsStep) {
return "".concat(digits.slice(0, 2), ".").concat(digits.slice(2, 6));
}
// MM.YYYY
if (!hasDaysStep && hasMonthsStep && hasYearsStep) {
return "".concat(digits.slice(0, 2), ".").concat(digits.slice(2, 6));
}
throw new Error('Не удалось сделать маску для значения');
};