UNPKG

@ozen-ui/kit

Version:

React component library

40 lines (39 loc) 1.58 kB
/** * Функция для обработки вставленного значения. * Умеет обрабатывать форматы 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('Не удалось сделать маску для значения'); };