envoc-form
Version:
Envoc form components
54 lines (53 loc) • 2.34 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
import { jsx as _jsx } from "react/jsx-runtime";
import DateTimePickerGroup from './DateTimePickerGroup';
/**
* Date Time picker input that consumes JS Date object and outputs as a date time offset string in ISO format `YYYY-MM-DDTHH:mm:ss.sss±hh:mm`.
*
* Default display to the user is in `MM/DD/YYYY HH:mm:ss AM/PM` format.
*/
export default function StringDateTimePickerGroup(props) {
return _jsx(DateTimePickerGroup, __assign({}, props, { convert: convertToISOString }));
}
function convertToISOString(date) {
// Get the offset in minutes
var offsetMinutes = date.getTimezoneOffset();
// Calculate the offset in hours and minutes
var offsetHours = Math.floor(Math.abs(offsetMinutes) / 60);
var offsetMinutesPart = Math.abs(offsetMinutes) % 60;
// Format the offset in the required format (+/-hh:mm)
var offsetString = (offsetMinutes >= 0 ? '-' : '+') +
String(offsetHours).padStart(2, '0') +
':' +
String(offsetMinutesPart).padStart(2, '0');
// Format the date in the required format using `intl.DateTimeFormat`
var year = new Intl.DateTimeFormat('en', { year: 'numeric' })
.format(date)
.padStart(4, '0');
var month = new Intl.DateTimeFormat('en', { month: '2-digit' }).format(date);
var day = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(date);
var hour = new Intl.DateTimeFormat('en', {
hour: '2-digit',
hourCycle: 'h23',
}).format(date);
var minute = new Intl.DateTimeFormat('en', { minute: '2-digit' })
.format(date)
.padStart(2, '0');
var second = new Intl.DateTimeFormat('en', {
second: '2-digit',
fractionalSecondDigits: 3,
})
.format(date)
.padStart(6, '0');
return "".concat(year, "-").concat(month, "-").concat(day, "T").concat(hour, ":").concat(minute, ":").concat(second).concat(offsetString);
}