@preamp/datepicker
Version:
VideoAmp's Component library
121 lines • 9.95 kB
JavaScript
import { addDays, isAfter, isBefore, isFirstDayOfMonth, isLastDayOfMonth } from 'date-fns';
import dateFnsFormat from 'date-fns/format';
import dateFnsParse from 'date-fns/parse';
import DayPicker from 'react-day-picker';
import { SLASH_DATE_FORMAT } from '../constants';
export function parseDate(str) {
const parsed = dateFnsParse(str);
if (DayPicker.DateUtils.isDate(parsed)) {
return parsed;
}
}
export function formatDate(date, format) {
return dateFnsFormat(date, format);
}
export function isDateFirstDayOfMonth(day) {
return isFirstDayOfMonth(day);
}
export function isDateLastDayOfMonth(day) {
return isLastDayOfMonth(day);
}
export function isSelectingStartDay(fromDate, toDate, day) {
const isSelectedDayBeforeStartDay = fromDate && DayPicker.DateUtils.isDayBefore(day, fromDate);
const hasARangeBeenSelected = !!fromDate && !!toDate;
return !fromDate || isSelectedDayBeforeStartDay || hasARangeBeenSelected;
}
export function textInputWidth(text) {
return text.length * 7.5;
}
export function parseAllNonNumbers(text) {
return text.replace(/\D/g, '');
}
export function parseAllNonNumbersButSlash(text) {
return text.replace(/[^0-9/]/g, '');
}
export function maskInputString(text) {
let formattedText = text;
formattedText = parseAllNonNumbersButSlash(formattedText);
let head;
let tail;
const textHasSlash = formattedText.indexOf('/', formattedText.length - 1) > -1;
const slashOnRightPosition = /^((((\d){0,3})(?=$))|((\d){2}\/)){1,2}$/.test(formattedText);
// remove slash when it's not in the 3rd and 5th position
if (textHasSlash && !slashOnRightPosition) {
formattedText = formattedText.substring(0, formattedText.length - 1);
return formattedText;
}
// text matches mmd, / is added to get mm/d
if (formattedText.match(/^\d{3}$/) !== null) {
head = formattedText.substring(0, 2);
tail = formattedText.substring(2, 3);
formattedText = `${head}/${tail}`;
}
// text matches mm/ddy / is added to get mm/dd/y
else if (formattedText.match(/^\d{2}\/\d{3}$/) !== null) {
head = formattedText.substring(0, 5);
tail = formattedText.substring(5, 6);
formattedText = `${head}/${tail}`;
}
return formattedText;
}
export function formatInputDisplay(date, inputText) {
if (!inputText.length) {
return date ? formatDate(date, SLASH_DATE_FORMAT) : '';
}
return inputText;
}
export function convertStringToNewDates(text, dates, isStart = true) {
const parsedText = parseAllNonNumbers(text);
const { from, to } = dates;
if (parsedText.length === 8) {
const convertedDate = dateFnsParse(`${parsedText.slice(4, 8)}-${parsedText.slice(0, 2)}-${parsedText.slice(2, 4)}`);
if (isStart) {
return {
from: convertedDate,
to
};
}
return {
from,
to: convertedDate
};
}
else if (!parsedText.length) {
if (isStart) {
return {
from: null,
to
};
}
return {
from,
to: null
};
}
return dates;
}
export function convertStringToNewDate(text) {
const parsedText = parseAllNonNumbers(text);
let convertedDate;
if (parsedText.length === 8) {
convertedDate = dateFnsParse(`${parsedText.slice(4, 8)}-${parsedText.slice(0, 2)}-${parsedText.slice(2, 4)}`);
}
else if (!parsedText.length) {
return null;
}
return convertedDate;
}
export function outsideAvailableRange(selectedDays, disabledDays) {
const { from: fromDate, to: toDate } = selectedDays;
const { from: disabledBeforeDate, to: disabledAfterDate } = disabledDays;
const fromIsOutsideAvailableRange = fromDate !== null
? isBefore(fromDate, disabledBeforeDate) ||
isAfter(fromDate, addDays(disabledAfterDate, 1))
: false;
const toIsOutsideAvailableRange = toDate !== null
? isBefore(toDate, disabledBeforeDate) ||
isAfter(toDate, addDays(disabledAfterDate, 1))
: false;
return fromIsOutsideAvailableRange || toIsOutsideAvailableRange;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0RGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi91dGlscy9mb3JtYXREYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNuQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLFlBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHakQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxHQUFXO0lBQ2pDLE1BQU0sTUFBTSxHQUFTLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3BDLE9BQU8sTUFBTSxDQUFDO0tBQ2pCO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBVSxFQUFFLE1BQWU7SUFDbEQsT0FBTyxhQUFhLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsR0FBUztJQUMzQyxPQUFPLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsR0FBUztJQUMxQyxPQUFPLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQy9CLFFBQWMsRUFDZCxNQUFZLEVBQ1osR0FBUztJQUVULE1BQU0sMkJBQTJCLEdBQzdCLFFBQVEsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUs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