UNPKG

envoc-form

Version:

Envoc form components

54 lines (53 loc) 2.34 kB
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); }