diff --git a/dev-test/config.yml b/dev-test/config.yml
index 6eac43f98db9..2f57fc63337d 100644
--- a/dev-test/config.yml
+++ b/dev-test/config.yml
@@ -18,7 +18,7 @@ collections: # A list of collections the CMS should be able to edit
summary: '{{title}} -- {{year}}/{{month}}/{{day}}'
create: true # Allow users to create new documents in this collection
editor:
- visualEditing: true
+ visualEditing: false
view_filters:
- label: Posts With Index
field: title
diff --git a/packages/decap-cms-core/src/components/Collection/Entries/EntryCard.js b/packages/decap-cms-core/src/components/Collection/Entries/EntryCard.js
index 01e0027d7069..15fc07721c73 100644
--- a/packages/decap-cms-core/src/components/Collection/Entries/EntryCard.js
+++ b/packages/decap-cms-core/src/components/Collection/Entries/EntryCard.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useEffect, useState } from 'react';
import styled from '@emotion/styled';
import { connect } from 'react-redux';
import { Link } from 'react-router-dom';
@@ -81,7 +81,7 @@ const CardBody = styled.div`
}
`;
-const CardImage = styled.div`
+const StyledImage = styled.div`
background-image: url(${props => props.src});
background-position: center center;
background-size: cover;
@@ -89,6 +89,16 @@ const CardImage = styled.div`
height: 150px;
`;
+function CardImage({ getAsset, value, field }) {
+ const [asset, setAsset] = useState(null);
+
+ useEffect(() => {
+ setAsset(value ? getAsset(value, field) : null);
+ }, [value, field, getAsset]);
+
+ return asset ? : null;
+}
+
function EntryCard({
path,
summary,
@@ -117,7 +127,7 @@ function EntryCard({
{collectionLabel ? {collectionLabel} : null}
{summary}
- {image ? : null}
+ {image ? : null}
);
diff --git a/packages/decap-cms-widget-file/src/withFileControl.js b/packages/decap-cms-widget-file/src/withFileControl.js
index 115f129dc2aa..839375d610db 100644
--- a/packages/decap-cms-widget-file/src/withFileControl.js
+++ b/packages/decap-cms-widget-file/src/withFileControl.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import styled from '@emotion/styled';
@@ -61,8 +61,19 @@ const StyledImage = styled.img`
object-fit: contain;
`;
-function Image(props) {
- return ;
+function Image({ value, field, getAsset }) {
+ const [asset, setAsset] = useState(null);
+
+ useEffect(() => {
+ if (value) {
+ const newAsset = getAsset(value, field);
+ setAsset(newAsset);
+ } else {
+ setAsset(null);
+ }
+ }, [value, field, getAsset]);
+
+ return asset ? : null;
}
function SortableImageButtons({ onRemove, onReplace }) {
@@ -89,7 +100,7 @@ function SortableImage(props) {
return (
-
+
{
const { getAsset, value, field } = this.props;
const items = valueListToSortableArray(value);
+
if (isMultiple(value)) {
return (
-
+
);
};
diff --git a/packages/decap-cms-widget-image/src/ImagePreview.js b/packages/decap-cms-widget-image/src/ImagePreview.js
index b74e0ca44837..918d03b07de8 100644
--- a/packages/decap-cms-widget-image/src/ImagePreview.js
+++ b/packages/decap-cms-widget-image/src/ImagePreview.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { List } from 'immutable';
@@ -11,7 +11,18 @@ const StyledImage = styled(({ src }) =>
;
+ const [asset, setAsset] = useState(null);
+
+ useEffect(() => {
+ if (value) {
+ const newAsset = getAsset(value, field);
+ setAsset(newAsset);
+ } else {
+ setAsset(null);
+ }
+ }, [value, field, getAsset]);
+
+ return asset ? : null;
}
function ImagePreviewContent(props) {
diff --git a/packages/decap-cms-widget-object/src/ObjectPreview.js b/packages/decap-cms-widget-object/src/ObjectPreview.js
index f9015fc0f8c3..63bb386eec59 100644
--- a/packages/decap-cms-widget-object/src/ObjectPreview.js
+++ b/packages/decap-cms-widget-object/src/ObjectPreview.js
@@ -1,5 +1,5 @@
import React from 'react';
-import PropTypes from 'prop-types';
+import ImmutablePropTypes from 'react-immutable-proptypes';
import { WidgetPreviewContainer } from 'decap-cms-ui-default';
function ObjectPreview({ field }) {
@@ -11,7 +11,7 @@ function ObjectPreview({ field }) {
}
ObjectPreview.propTypes = {
- field: PropTypes.node,
+ field: ImmutablePropTypes.map,
};
export default ObjectPreview;