diff --git a/packages/strapi-plugin-upload/admin/src/components/SelectAll/index.js b/packages/strapi-plugin-upload/admin/src/components/SelectAll/index.js index 239d81a449..8bf815d574 100644 --- a/packages/strapi-plugin-upload/admin/src/components/SelectAll/index.js +++ b/packages/strapi-plugin-upload/admin/src/components/SelectAll/index.js @@ -1,13 +1,26 @@ import React from 'react'; +import PropTypes from 'prop-types'; import { Checkbox } from '@buffetjs/core'; import Wrapper from './Wrapper'; -const SelectAll = () => { +const SelectAll = ({ checked, onChange, someChecked }) => { return ( - + ); }; +SelectAll.defaultProps = { + checked: false, + onChange: () => {}, + someChecked: false, +}; + +SelectAll.propTypes = { + checked: PropTypes.bool, + onChange: PropTypes.func, + someChecked: PropTypes.bool, +}; + export default SelectAll; 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 b596fa1eca..5d622a5794 100644 --- a/packages/strapi-plugin-upload/admin/src/containers/HomePage/index.js +++ b/packages/strapi-plugin-upload/admin/src/containers/HomePage/index.js @@ -139,6 +139,15 @@ const HomePage = () => { }); }; + const handleSelectAll = () => { + const valueToSet = !areAllCheckboxesSelected; + + dispatch({ + type: 'TOGGLE_SELECT_ALL', + value: valueToSet, + }); + }; + const headerProps = { title: { label: pluginName, @@ -177,6 +186,9 @@ const HomePage = () => { _page: generatePageFromStart(start, limit), }; + const areAllCheckboxesSelected = data.length === dataToDelete.length; + const hasSomeCheckboxSelected = dataToDelete.length > 0; + return (
@@ -189,7 +201,11 @@ const HomePage = () => { value={searchValue} /> - + { return state.removeIn(['dataToDelete', index]); } + case 'TOGGLE_SELECT_ALL': { + const { value } = action; + + if (!value) { + return state.update('dataToDelete', () => []); + } + + return state.update('dataToDelete', () => state.get('data').map(item => item.get('id'))); + } default: return state; } diff --git a/yarn.lock b/yarn.lock index 779da023b7..45677635bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16789,13 +16789,6 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -stream-to-array@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/stream-to-array/-/stream-to-array-2.3.0.tgz#bbf6b39f5f43ec30bc71babcb37557acecf34353" - integrity sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M= - dependencies: - any-promise "^1.1.0" - stream-to-observable@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe"