From dadebfa9d7747b48eb61733d1a947360b53d18d0 Mon Sep 17 00:00:00 2001 From: Julie Plantey Date: Tue, 15 Nov 2022 12:21:08 +0100 Subject: [PATCH] added preview and edit icon --- .../components/AssetTableList/PreviewCell.js | 53 +++++++++++++++++++ .../components/AssetTableList/TableRows.js | 40 +++++++++++--- .../src/components/AssetTableList/index.js | 11 ++-- .../admin/src/pages/App/MediaLibrary.js | 2 +- 4 files changed, 95 insertions(+), 11 deletions(-) create mode 100644 packages/core/upload/admin/src/components/AssetTableList/PreviewCell.js diff --git a/packages/core/upload/admin/src/components/AssetTableList/PreviewCell.js b/packages/core/upload/admin/src/components/AssetTableList/PreviewCell.js new file mode 100644 index 0000000000..65e29ac1a7 --- /dev/null +++ b/packages/core/upload/admin/src/components/AssetTableList/PreviewCell.js @@ -0,0 +1,53 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import styled from 'styled-components'; +import { prefixFileUrlWithBackendUrl, pxToRem } from '@strapi/helper-plugin'; +import { Avatar } from '@strapi/design-system/Avatar'; +import { Flex } from '@strapi/design-system/Flex'; +import { Typography } from '@strapi/design-system/Typography'; + +const FileWrapper = styled(Flex)` + border-radius: 50%; + + span { + line-height: 0.6rem; + font-size: 0.6rem; + } +`; + +export const PreviewCell = ({ alternativeText, fileExtension, mime, name, thumbnailURL, url }) => { + const fileURL = prefixFileUrlWithBackendUrl(url); + + if (mime.includes('image')) { + const mediaURL = prefixFileUrlWithBackendUrl(thumbnailURL) ?? fileURL; + + return ; + } + + return ( + + + {fileExtension} + + + ); +}; + +PreviewCell.defaultProps = { + alternativeText: null, + thumbnailURL: null, +}; + +PreviewCell.propTypes = { + alternativeText: PropTypes.string, + fileExtension: PropTypes.string.isRequired, + mime: PropTypes.string.isRequired, + name: PropTypes.string.isRequired, + thumbnailURL: PropTypes.string, + url: PropTypes.string.isRequired, +}; diff --git a/packages/core/upload/admin/src/components/AssetTableList/TableRows.js b/packages/core/upload/admin/src/components/AssetTableList/TableRows.js index a8ae311c54..e01cdc8aa7 100644 --- a/packages/core/upload/admin/src/components/AssetTableList/TableRows.js +++ b/packages/core/upload/admin/src/components/AssetTableList/TableRows.js @@ -4,29 +4,38 @@ import { useIntl } from 'react-intl'; import { getFileExtension } from '@strapi/helper-plugin'; import { Tbody, Td, Tr } from '@strapi/design-system/Table'; import { Typography } from '@strapi/design-system/Typography'; +import { IconButton } from '@strapi/design-system/IconButton'; +import Pencil from '@strapi/icons/Pencil'; +import { PreviewCell } from './PreviewCell'; import { AssetDefinition } from '../../constants'; -import formatBytes from '../../utils/formatBytes'; +import { formatBytes, getTrad } from '../../utils'; -export const TableRows = ({ assets }) => { - const { formatDate } = useIntl(); +export const TableRows = ({ assets, onEditAsset }) => { + const { formatDate, formatMessage } = useIntl(); return ( {assets.map((asset) => { - // console.log(asset); - const { id, name, ext, size, createdAt } = asset; + const { alternativeText, id, name, ext, size, createdAt, url, mime, formats } = asset; return ( - TODO + {name} - {getFileExtension(ext)} + {getFileExtension(ext).toUpperCase()} {formatBytes(size)} @@ -34,6 +43,18 @@ export const TableRows = ({ assets }) => { {formatDate(new Date(createdAt))} + {onEditAsset && ( + + } + onClick={() => onEditAsset(asset)} + /> + + )} ); })} @@ -41,6 +62,11 @@ export const TableRows = ({ assets }) => { ); }; +TableRows.defaultProps = { + onEditAsset: null, +}; + TableRows.propTypes = { assets: PropTypes.arrayOf(AssetDefinition).isRequired, + onEditAsset: PropTypes.func, }; diff --git a/packages/core/upload/admin/src/components/AssetTableList/index.js b/packages/core/upload/admin/src/components/AssetTableList/index.js index 23ffd9a6fc..ed758b16f0 100644 --- a/packages/core/upload/admin/src/components/AssetTableList/index.js +++ b/packages/core/upload/admin/src/components/AssetTableList/index.js @@ -7,7 +7,7 @@ import { AssetDefinition } from '../../constants'; import { tableHeaders } from './utils/tableHeaders'; import { TableRows } from './TableRows'; -export const AssetTableList = ({ assets }) => { +export const AssetTableList = ({ assets, onEditAsset }) => { const { formatMessage } = useIntl(); const headers = tableHeaders.map((header) => ({ @@ -19,12 +19,17 @@ export const AssetTableList = ({ assets }) => { })); return ( - - + + ); }; +AssetTableList.defaultProps = { + onEditAsset: null, +}; + AssetTableList.propTypes = { assets: PropTypes.arrayOf(AssetDefinition).isRequired, + onEditAsset: PropTypes.func, }; diff --git a/packages/core/upload/admin/src/pages/App/MediaLibrary.js b/packages/core/upload/admin/src/pages/App/MediaLibrary.js index b84a8fbfc0..85a7c868ef 100644 --- a/packages/core/upload/admin/src/pages/App/MediaLibrary.js +++ b/packages/core/upload/admin/src/pages/App/MediaLibrary.js @@ -355,7 +355,7 @@ export const MediaLibrary = () => { } /> ) : ( - + )} {assetsData?.pagination && (