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)