@atlaskit/datetime-picker
Version:
A date time picker allows the user to select an associated date and time.
42 lines (41 loc) • 1.95 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
/**
* 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 var getParsedISO = function getParsedISO(di) {
var iso = di.iso;
var _iso$split = iso.split('-'),
_iso$split2 = _slicedToArray(_iso$split, 3),
year = _iso$split2[0],
month = _iso$split2[1],
date = _iso$split2[2];
var newIso = iso;
var parsedDate = parseInt(date, 10);
var parsedMonth = parseInt(month, 10);
var parsedYear = parseInt(year, 10);
var 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 = "".concat(parsedYear, "-").concat(padToTwo(parsedMonth), "-").concat(padToTwo(lastDayInMonth));
} else {
newIso = "".concat(parsedYear, "-").concat(padToTwo(parsedMonth), "-").concat(padToTwo(parsedDate));
}
return newIso;
};