UNPKG

@preamp/datepicker

Version:

VideoAmp's Component library

121 lines 9.95 kB
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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