UNPKG

@atlaskit/datetime-picker

Version:

A date time picker allows the user to select an associated date and time.

39 lines (38 loc) 1.71 kB
/** * Everything in this file is to smooth out the migration of the new date picker * (https://product-fabric.atlassian.net/browse/DSP-20682). When that ticket is * complete, all of these functions will ilkely be merged back into the date * picker. Please do not pre-optimize and put these back into the date picker * unless you are working on the DTP Refresh and you have a good reason to do * so, thank you! * * All variables within the `di` objects are dependency injections. They should * be read from within the component at the end of the day. But because we are * extracting them, we have to inject them in every place manually. When we * re-introduce them to the components, we can likely remove the `di` variables * and instead use internal variables. * * If component _only_ has injected variables, it is fully internal and was * broken out to be it's own function. */ // oxlint-disable-next-line @atlassian/no-restricted-imports import { lastDayOfMonth } from 'date-fns'; import { padToTwo } from './pad-two'; export const getParsedISO = di => { const { iso } = di; const [year, month, date] = iso.split('-'); let newIso = iso; const parsedDate = parseInt(date, 10); const parsedMonth = parseInt(month, 10); const parsedYear = parseInt(year, 10); const lastDayInMonth = lastDayOfMonth(new Date(parsedYear, parsedMonth - 1 // This needs to be -1, because the Date constructor expects an index of the given month )).getDate(); if (lastDayInMonth < parsedDate) { newIso = `${parsedYear}-${padToTwo(parsedMonth)}-${padToTwo(lastDayInMonth)}`; } else { newIso = `${parsedYear}-${padToTwo(parsedMonth)}-${padToTwo(parsedDate)}`; } return newIso; };