fix: switch to @iarna/toml as toml parser, handle raw dates in datetime field (#715)

This commit is contained in:
Daniel Lautzenheiser
2023-04-19 14:27:46 -04:00
committed by GitHub
parent 804c09415b
commit 95e64792dd
18 changed files with 39 additions and 3483 deletions

View File

@ -42,7 +42,7 @@ function convertMuiTextFieldProps({
};
}
const DateTimeControl: FC<WidgetControlProps<string, DateTimeField>> = ({
const DateTimeControl: FC<WidgetControlProps<string | Date, DateTimeField>> = ({
field,
label,
value,
@ -142,6 +142,10 @@ const DateTimeControl: FC<WidgetControlProps<string, DateTimeField>> = ({
valueToParse = defaultValue;
}
if (typeof valueToParse !== 'string') {
return valueToParse;
}
return format ? parse(valueToParse, format, new Date()) : parseISO(valueToParse);
}, [defaultValue, format, internalValue]);

View File

@ -3,7 +3,7 @@ import React from 'react';
import type { DateTimeField, WidgetPreviewProps } from '@staticcms/core/interface';
import type { FC } from 'react';
const DatePreview: FC<WidgetPreviewProps<string, DateTimeField>> = ({ value }) => {
const DatePreview: FC<WidgetPreviewProps<string | Date, DateTimeField>> = ({ value }) => {
return <div>{value ? value.toString() : null}</div>;
};

View File

@ -6,7 +6,10 @@ import { localToUTC } from './utc.util';
import type { DateTimeField, FieldGetDefaultMethod } from '@staticcms/core/interface';
const getDefaultValue: FieldGetDefaultMethod<string, DateTimeField> = (defaultValue, field) => {
const getDefaultValue: FieldGetDefaultMethod<string | Date, DateTimeField> = (
defaultValue,
field,
) => {
if (isNotNullish(defaultValue)) {
return defaultValue;
}

View File

@ -5,7 +5,7 @@ import schema from './schema';
import type { DateTimeField, WidgetParam } from '@staticcms/core/interface';
const DateTimeWidget = (): WidgetParam<string, DateTimeField> => {
const DateTimeWidget = (): WidgetParam<string | Date, DateTimeField> => {
return {
name: 'datetime',
controlComponent,

View File

@ -29,7 +29,7 @@ function handleSummary(
label: string,
item: ValueOrNestedValue,
): string {
if (typeof item === 'object' && !Array.isArray(item)) {
if (typeof item === 'object' && !(item instanceof Date) && !Array.isArray(item)) {
const labeledItem: EntryData = {
...item,
fields: {
@ -151,7 +151,9 @@ const ListItem: FC<ListItemProps> = ({
}
const labelFieldValue =
typeof objectValue === 'object' && !Array.isArray(objectValue)
typeof objectValue === 'object' &&
!(objectValue instanceof Date) &&
!Array.isArray(objectValue)
? objectValue[labelField.name]
: objectValue;