diff --git a/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/Row.js b/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/Row.js
index 34c61e8895..2169b342c6 100644
--- a/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/Row.js
+++ b/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/Row.js
@@ -3,17 +3,13 @@ import PropTypes from 'prop-types';
import { get, isEmpty, isNull, isObject, toLower, toString } from 'lodash';
import moment from 'moment';
import { useGlobalContext } from 'strapi-helper-plugin';
-import { IconLinks, Text } from '@buffetjs/core';
+import { IconLinks } from '@buffetjs/core';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { useIntl } from 'react-intl';
-
import useListView from '../../hooks/useListView';
import dateFormats from '../../utils/dateFormats';
import CustomInputCheckbox from '../CustomInputCheckbox';
-import getTrad from '../../utils/getTrad';
import MediaPreviewList from '../MediaPreviewList';
import { ActionContainer, Truncate, Truncated } from './styledComponents';
-import State from './State';
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
@@ -72,7 +68,6 @@ const getDisplayedValue = (type, value, name) => {
function Row({ canDelete, canUpdate, isBulkable, row, headers }) {
const { entriesToDelete, onChangeBulk, onClickDelete, schema } = useListView();
- const { formatMessage } = useIntl();
const memoizedDisplayedValue = useCallback(
name => {
@@ -120,18 +115,10 @@ function Row({ canDelete, canUpdate, isBulkable, row, headers }) {
)}
{headers.map(header => {
return (
-
+ |
{isMedia(header) && }
- {header.name === 'published_at' && (
-
-
- {formatMessage({
- id: getTrad(`containers.List.${row.published_at ? 'published' : 'draft'}`),
- })}
-
-
- )}
- {!isMedia(header) && header.name !== 'published_at' && (
+ {header.cellFormatter && header.cellFormatter(row)}
+ {!isMedia(header) && !header.cellFormatter && (
{memoizedDisplayedValue(header.name)}
diff --git a/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/TableHeader.js b/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/TableHeader.js
index f5ece9754a..08ed68f2a0 100644
--- a/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/TableHeader.js
+++ b/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/TableHeader.js
@@ -35,7 +35,7 @@ function TableHeader({ headers, isBulkable }) {
{headers.map(header => {
return (
| {
if (header.sortable) {
const isCurrentSort = header.name === sortBy;
diff --git a/packages/strapi-plugin-content-manager/admin/src/components/SettingsViewWrapper/index.js b/packages/strapi-plugin-content-manager/admin/src/components/SettingsViewWrapper/index.js
index 540aa2b1a9..7c2f44f746 100644
--- a/packages/strapi-plugin-content-manager/admin/src/components/SettingsViewWrapper/index.js
+++ b/packages/strapi-plugin-content-manager/admin/src/components/SettingsViewWrapper/index.js
@@ -12,7 +12,6 @@ import {
useGlobalContext,
} from 'strapi-helper-plugin';
import pluginId from '../../pluginId';
-import { removePublishedAtFromMetas } from '../../utils';
import Block from '../Block';
import Container from '../Container';
import SectionTitle from '../SectionTitle';
@@ -37,7 +36,7 @@ const SettingsViewWrapper = ({
const [showWarningSubmit, setWarningSubmit] = useState(false);
const attributes = useMemo(() => {
- return removePublishedAtFromMetas(get(modifiedData, ['schema', 'attributes'], {}));
+ return get(modifiedData, ['schema', 'attributes'], {});
}, [modifiedData]);
const toggleWarningCancel = () => setWarningCancel(prevState => !prevState);
diff --git a/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/State.js b/packages/strapi-plugin-content-manager/admin/src/components/State/Wrapper.js
similarity index 92%
rename from packages/strapi-plugin-content-manager/admin/src/components/CustomTable/State.js
rename to packages/strapi-plugin-content-manager/admin/src/components/State/Wrapper.js
index 5c81b285aa..f8e5d29a7f 100644
--- a/packages/strapi-plugin-content-manager/admin/src/components/CustomTable/State.js
+++ b/packages/strapi-plugin-content-manager/admin/src/components/State/Wrapper.js
@@ -1,7 +1,7 @@
import styled from 'styled-components';
import { Text } from '@buffetjs/core';
-const State = styled.div`
+const Wrapper = styled.div`
display: flex;
align-items: center;
justify-content: center;
@@ -27,4 +27,4 @@ const State = styled.div`
`};
`;
-export default State;
+export default Wrapper;
diff --git a/packages/strapi-plugin-content-manager/admin/src/components/State/index.js b/packages/strapi-plugin-content-manager/admin/src/components/State/index.js
new file mode 100644
index 0000000000..d2c6abf24c
--- /dev/null
+++ b/packages/strapi-plugin-content-manager/admin/src/components/State/index.js
@@ -0,0 +1,26 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { useIntl } from 'react-intl';
+import { Text } from '@buffetjs/core';
+import { getTrad } from '../../utils';
+import Wrapper from './Wrapper';
+
+const State = ({ isPublished }) => {
+ const { formatMessage } = useIntl();
+
+ return (
+
+
+ {formatMessage({
+ id: getTrad(`containers.List.${isPublished ? 'published' : 'draft'}`),
+ })}
+
+
+ );
+};
+
+State.propTypes = {
+ isPublished: PropTypes.bool.isRequired,
+};
+
+export default State;
diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/ListView/index.js b/packages/strapi-plugin-content-manager/admin/src/containers/ListView/index.js
index 4ee16bff78..a2f06f39fc 100644
--- a/packages/strapi-plugin-content-manager/admin/src/containers/ListView/index.js
+++ b/packages/strapi-plugin-content-manager/admin/src/containers/ListView/index.js
@@ -2,7 +2,7 @@ import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from '
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { bindActionCreators, compose } from 'redux';
-import { get, sortBy } from 'lodash';
+import { get, isEmpty, sortBy } from 'lodash';
import { FormattedMessage, useIntl } from 'react-intl';
import { useLocation } from 'react-router-dom';
import { Header } from '@buffetjs/custom';
@@ -16,18 +16,14 @@ import {
} from 'strapi-helper-plugin';
import pluginId from '../../pluginId';
import pluginPermissions from '../../permissions';
-import {
- generatePermissionsObject,
- getRequestUrl,
- getTrad,
- removePublishedAtFromMetas,
-} from '../../utils';
+import { generatePermissionsObject, getRequestUrl, getTrad } from '../../utils';
import DisplayedFieldsDropdown from '../../components/DisplayedFieldsDropdown';
import Container from '../../components/Container';
import CustomTable from '../../components/CustomTable';
import FilterPicker from '../../components/FilterPicker';
import Search from '../../components/Search';
+import State from '../../components/State';
import ListViewProvider from '../ListViewProvider';
import { onChangeListLabels, resetListLabels } from '../Main/actions';
import { AddFilterCta, FilterIcon, Wrapper } from './components';
@@ -218,6 +214,12 @@ function ListView({
searchable: false,
sortable: true,
name: 'published_at',
+ key: '__published_at__',
+ cellFormatter: data => {
+ const isPublished = !isEmpty(data.published_at);
+
+ return ;
+ },
});
}
@@ -238,7 +240,7 @@ function ListView({
);
const allLabels = useMemo(() => {
- const filteredMetadatas = removePublishedAtFromMetas(getMetaDatas());
+ const filteredMetadatas = getMetaDatas();
return sortBy(
Object.keys(filteredMetadatas)
|