From 76f41a6ec06b8fc568a0e3e1fe8d3670dfd274c6 Mon Sep 17 00:00:00 2001 From: Virginie Ky Date: Fri, 6 Mar 2020 17:19:20 +0100 Subject: [PATCH] Upload modal card Signed-off-by: Virginie Ky --- .../admin/src/components/Card/index.js | 32 ++++++--- .../src/components/CardImgWrapper/index.js | 2 +- .../src/components/CardPreview/Wrapper.js | 6 +- .../admin/src/components/CardPreview/index.js | 6 +- .../admin/src/components/List/index.js | 72 +++---------------- .../src/components/UploadList/RowItem.js | 37 ++++++---- .../admin/src/containers/HomePage/index.js | 4 +- 7 files changed, 66 insertions(+), 93 deletions(-) diff --git a/packages/strapi-plugin-upload/admin/src/components/Card/index.js b/packages/strapi-plugin-upload/admin/src/components/Card/index.js index 24f495508e..5ac2f1726b 100644 --- a/packages/strapi-plugin-upload/admin/src/components/Card/index.js +++ b/packages/strapi-plugin-upload/admin/src/components/Card/index.js @@ -1,6 +1,5 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Checkbox } from '@buffetjs/core'; import Text from '../Text'; import CardImgWrapper from '../CardImgWrapper'; @@ -9,20 +8,31 @@ import Wrapper from './Wrapper'; import Title from './Title'; // TODO - adapt with the real data -const Card = ({ checked, id, name, size, small, type, onChange, url }) => { +const Card = ({ + checked, + children, + errorMessage, + hasError, + mime, + name, + onChange, + small, + size, + type, + url, +}) => { return (
- - -
- -
+ + + {children} {name} - {`${type} - ${size}`} + {!hasError && {`${type} - ${size}`}} + {hasError &&

{errorMessage}

}
); @@ -30,6 +40,8 @@ const Card = ({ checked, id, name, size, small, type, onChange, url }) => { Card.defaultProps = { checked: false, + children: null, + hasError: false, name: null, onChange: () => {}, size: 0, @@ -40,8 +52,10 @@ Card.defaultProps = { Card.propTypes = { checked: PropTypes.bool, + children: PropTypes.node, + hasError: PropTypes.bool, name: PropTypes.string, - id: PropTypes.string.isRequired, + id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, onChange: PropTypes.func, size: PropTypes.number, small: PropTypes.bool, diff --git a/packages/strapi-plugin-upload/admin/src/components/CardImgWrapper/index.js b/packages/strapi-plugin-upload/admin/src/components/CardImgWrapper/index.js index 42366c79e6..e90687f2ac 100644 --- a/packages/strapi-plugin-upload/admin/src/components/CardImgWrapper/index.js +++ b/packages/strapi-plugin-upload/admin/src/components/CardImgWrapper/index.js @@ -23,7 +23,7 @@ const CardImgWrapper = styled.div` &:hover { .card-control-wrapper { display: flex; - z-index: 1050; + z-index: 1045; } } diff --git a/packages/strapi-plugin-upload/admin/src/components/CardPreview/Wrapper.js b/packages/strapi-plugin-upload/admin/src/components/CardPreview/Wrapper.js index 6f0d33129d..1736ad1bce 100644 --- a/packages/strapi-plugin-upload/admin/src/components/CardPreview/Wrapper.js +++ b/packages/strapi-plugin-upload/admin/src/components/CardPreview/Wrapper.js @@ -8,15 +8,15 @@ const Wrapper = styled.div` top: 0; left: 0; display: flex; - background-color: ${({ isImg }) => (isImg ? '#333740' : '#F2F3F4')}; + background-color: ${({ isFile }) => (isFile ? '#F2F3F4' : '#333740')}; `; Wrapper.defaultProps = { - isImg: false, + isFile: false, }; Wrapper.propTypes = { - isImg: PropTypes.bool, + isFile: PropTypes.bool, }; export default Wrapper; diff --git a/packages/strapi-plugin-upload/admin/src/components/CardPreview/index.js b/packages/strapi-plugin-upload/admin/src/components/CardPreview/index.js index 2407238483..d920cec29c 100644 --- a/packages/strapi-plugin-upload/admin/src/components/CardPreview/index.js +++ b/packages/strapi-plugin-upload/admin/src/components/CardPreview/index.js @@ -6,14 +6,16 @@ import Wrapper from './Wrapper'; import Image from './Image'; const CardPreview = ({ url, type }) => { + const isFile = !type.includes('image') && !type.includes('video'); + return ( - {!url ? : } + {isFile ? : } ); }; CardPreview.defaultProps = { url: null, - type: null, + type: '', }; CardPreview.propTypes = { diff --git a/packages/strapi-plugin-upload/admin/src/components/List/index.js b/packages/strapi-plugin-upload/admin/src/components/List/index.js index a1a2a99957..91d1d41a6d 100644 --- a/packages/strapi-plugin-upload/admin/src/components/List/index.js +++ b/packages/strapi-plugin-upload/admin/src/components/List/index.js @@ -1,5 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; +import { Checkbox } from '@buffetjs/core'; import createMatrix from '../../utils/createMatrix'; @@ -15,14 +16,16 @@ const List = ({ data, onChange, selectedItems }) => { return (
{rowContent.map(item => { + const { id, url } = item; + const checked = selectedItems.includes(`${id}`); + return (
- + +
+ +
+
); })} @@ -34,62 +37,7 @@ const List = ({ data, onChange, selectedItems }) => { }; List.defaultProps = { - data: [ - { - id: '0', - name: 'Chat paysage', - size: 17329, - type: 'image/png', - url: - 'https://images.pexels.com/photos/20787/pexels-photo.jpg?auto=compress&cs=tinysrgb&h=350', - }, - { - id: '1', - name: 'Chat portrait', - size: 17329, - type: 'image/png', - url: 'https://emiliedammedumoulin.com/wp-content/uploads/2018/07/contact-chat-accueil.jpg', - }, - { - id: '2', - name: 'Gif', - size: 17329, - type: 'image/png', - url: - 'https://user-images.githubusercontent.com/879561/51321923-54024f00-1a64-11e9-8c37-3308350a59c4.gif', - }, - { - id: '3', - name: 'Paysage', - size: 17329, - type: 'image/png', - url: - 'https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcSyHCXO8D0QQrPDuGstvH9dEwhhB7Qv-3mDMWGpLExyY1CF84cL', - }, - { - id: '4', - name: 'That kitten is so beautiful that I am not sure to have the place to describe it', - size: 17329, - type: 'image/png', - url: - 'https://images.pexels.com/photos/1643457/pexels-photo-1643457.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500', - }, - { - id: '5', - name: 'pdf file', - type: 'pdf', - }, - { - id: '6', - name: 'Zip file', - type: 'zip', - }, - { - id: '7', - name: 'Doc file', - type: 'docx', - }, - ], + data: [], onChange: () => {}, selectedItems: [], }; diff --git a/packages/strapi-plugin-upload/admin/src/components/UploadList/RowItem.js b/packages/strapi-plugin-upload/admin/src/components/UploadList/RowItem.js index 79b500d286..5c2e478346 100644 --- a/packages/strapi-plugin-upload/admin/src/components/UploadList/RowItem.js +++ b/packages/strapi-plugin-upload/admin/src/components/UploadList/RowItem.js @@ -1,12 +1,14 @@ import React from 'react'; import PropTypes from 'prop-types'; + +import Card from '../Card'; import CardControl from '../CardControl'; import CardControlsWrapper from '../CardControlsWrapper'; import CardImgWrapper from '../CardImgWrapper'; import InfiniteLoadingIndicator from '../InfiniteLoadingIndicator'; const RowItem = ({ - // file, + file, fileInfo, hasError, errorMessage, @@ -15,6 +17,8 @@ const RowItem = ({ onClickEdit, originalIndex, }) => { + const url = URL.createObjectURL(file); + const handleClick = () => { onClick(originalIndex); }; @@ -24,18 +28,23 @@ const RowItem = ({ }; return ( -
-
- - {isUploading && } - {!isUploading && ( - - - - )} - -

{errorMessage || fileInfo.name}

-
+
+ + {isUploading && } + {!isUploading && ( + + + + )} +
); }; @@ -45,7 +54,7 @@ RowItem.defaultProps = { }; RowItem.propTypes = { - // file: PropTypes.object.isRequired, + file: PropTypes.object.isRequired, fileInfo: PropTypes.shape({ name: PropTypes.string.isRequired, }).isRequired, diff --git a/packages/strapi-plugin-upload/admin/src/containers/HomePage/index.js b/packages/strapi-plugin-upload/admin/src/containers/HomePage/index.js index afb71ee6e5..8c40b46820 100644 --- a/packages/strapi-plugin-upload/admin/src/containers/HomePage/index.js +++ b/packages/strapi-plugin-upload/admin/src/containers/HomePage/index.js @@ -93,7 +93,7 @@ const HomePage = () => { value, }); }; - + const handleChangeListParams = ({ target: { name, value } }) => { if (name.includes('_page')) { handleChangeParams({ @@ -195,7 +195,7 @@ const HomePage = () => { onClick={handleDeleteFilter} /> - + handleClickToggleModal()} /> {} }}