mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) Change datepicker in DateEditor to use moment format, show AltText in DateEditor
Summary: - Rather than translate from moment format to that of bootstrap-datepicker, use the customization methods to format datepicker dates using moment directly. - Fix issue with parseDate() when format includes tokens like Mo or Do - Fix issue in parseDateTime() that could produce an off-by-one error in date depending on local timezone. - When opening DateEditor, show AltText value if present. - Add crossorigin=anonymous to scripts that were missing it (including bootstrap-datepicker), to ensure that errors from them are reported properly rather than as 'Script error.' Test Plan: Added test cases to parseDate() test for low-level fixes; added a browser test for the fixed DateEditor behavior. Reviewers: alexmojaki Reviewed By: alexmojaki Differential Revision: https://phab.getgrist.com/D3169
This commit is contained in:
@@ -200,7 +200,9 @@ export function parseDateTime(dateTime: string, options: ParseOptions): number |
|
||||
return;
|
||||
}
|
||||
|
||||
const dateString = moment.unix(date).format("YYYY-MM-DD");
|
||||
// date is a timestamp of midnight in UTC, so to get a formatted representation (for parsing
|
||||
// together with time), take care to interpret it in UTC.
|
||||
const dateString = moment.unix(date).utc().format("YYYY-MM-DD");
|
||||
dateTime = dateString + ' ' + parsedTime.time + tzOffset;
|
||||
const fullFormat = "YYYY-MM-DD HH:mm:ss" + (tzOffset ? 'Z' : '');
|
||||
return moment.tz(dateTime, fullFormat, true, timezone).valueOf() / 1000;
|
||||
@@ -213,7 +215,7 @@ export function parseDateTime(dateTime: string, options: ParseOptions): number |
|
||||
// feature.
|
||||
function _getPartialFormat(input: string, format: string): string {
|
||||
// Define a regular expression to match contiguous non-separators.
|
||||
const re = /Y+|M+|D+|[a-zA-Z0-9]+/g;
|
||||
const re = /Y+|M+o?|D+o?|[a-zA-Z0-9]+/ig;
|
||||
// Count the number of meaningful parts in the input.
|
||||
const numInputParts = input.match(re)?.length || 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user