diff --git a/packages/core/upload/admin/src/components/MediaLibraryInput/AssetDialog/BrowseStep/index.js b/packages/core/upload/admin/src/components/MediaLibraryInput/AssetDialog/BrowseStep/index.js index 8f44277288..4f1331d12c 100644 --- a/packages/core/upload/admin/src/components/MediaLibraryInput/AssetDialog/BrowseStep/index.js +++ b/packages/core/upload/admin/src/components/MediaLibraryInput/AssetDialog/BrowseStep/index.js @@ -8,11 +8,13 @@ import { AssetList } from '../../../AssetList'; import getTrad from '../../../../utils/getTrad'; import PaginationFooter from './PaginationFooter'; import PageSize from './PageSize'; +import SortPicker from '../../../SortPicker'; export const BrowseStep = ({ assets, onChangePage, onChangePageSize, + onChangeSort, onEditAsset, onSelectAllAsset, onSelectAsset, @@ -26,7 +28,7 @@ export const BrowseStep = ({ <> {onSelectAllAsset && ( - + - + + )} { const { formatMessage } = useIntl(); const { canRead, canCreate, isLoading: isLoadingPermissions } = useMediaLibraryPermissions(); - const [{ rawQuery, queryObject }, { onChangePage, onChangePageSize }] = useModalQueryParams(); + const [ + { rawQuery, queryObject }, + { onChangePage, onChangePageSize, onChangeSort }, + ] = useModalQueryParams(); const { data, isLoading, error } = useModalAssets({ skipWhen: !canRead, rawQuery }); const [selectedAssets, { selectOne, selectAll, selectOnly }] = useSelectionState( @@ -161,6 +164,7 @@ export const AssetDialog = ({ queryObject={queryObject} onChangePage={onChangePage} onChangePageSize={onChangePageSize} + onChangeSort={onChangeSort} /> diff --git a/packages/core/upload/admin/src/pages/App/components/SortPicker.js b/packages/core/upload/admin/src/components/SortPicker/index.js similarity index 74% rename from packages/core/upload/admin/src/pages/App/components/SortPicker.js rename to packages/core/upload/admin/src/components/SortPicker/index.js index d4602dc7dc..d57c5d4f77 100644 --- a/packages/core/upload/admin/src/pages/App/components/SortPicker.js +++ b/packages/core/upload/admin/src/components/SortPicker/index.js @@ -1,16 +1,11 @@ import React from 'react'; import { useIntl } from 'react-intl'; +import PropTypes from 'prop-types'; import { SimpleMenu, MenuItem } from '@strapi/design-system/SimpleMenu'; -import { useQueryParams } from '@strapi/helper-plugin'; -import { getTrad } from '../../../utils'; +import { getTrad } from '../../utils'; -export const SortPicker = () => { +const SortPicker = ({ onChangeSort }) => { const { formatMessage } = useIntl(); - const [, setQuery] = useQueryParams(); - - const handleChange = value => { - setQuery({ sort: value }); - }; const filters = [ { key: 'sort.created_at_desc', value: `createdAt:DESC` }, @@ -30,10 +25,16 @@ export const SortPicker = () => { })} > {filters.map(filter => ( - handleChange(filter.value)}> + onChangeSort(filter.value)}> {formatMessage({ id: getTrad(filter.key) })} ))} ); }; + +SortPicker.propTypes = { + onChangeSort: PropTypes.func.isRequired, +}; + +export default SortPicker; diff --git a/packages/core/upload/admin/src/hooks/useModalAssets/useModalQueryParams.js b/packages/core/upload/admin/src/hooks/useModalAssets/useModalQueryParams.js index 64fd6ae001..902f89b02f 100644 --- a/packages/core/upload/admin/src/hooks/useModalAssets/useModalQueryParams.js +++ b/packages/core/upload/admin/src/hooks/useModalAssets/useModalQueryParams.js @@ -17,9 +17,17 @@ const useModalQueryParams = () => { setQueryObject(prev => ({ ...prev, page })); }; + const handleChangeSort = sort => { + setQueryObject(prev => ({ ...prev, sort })); + }; + return [ { queryObject, rawQuery: stringify(queryObject, { encode: false }) }, - { onChangePage: handeChangePage, onChangePageSize: handleChangePageSize }, + { + onChangePage: handeChangePage, + onChangePageSize: handleChangePageSize, + onChangeSort: handleChangeSort, + }, ]; }; diff --git a/packages/core/upload/admin/src/pages/App/MediaLibrary.js b/packages/core/upload/admin/src/pages/App/MediaLibrary.js index c6ee14a53f..0be1f82ac0 100644 --- a/packages/core/upload/admin/src/pages/App/MediaLibrary.js +++ b/packages/core/upload/admin/src/pages/App/MediaLibrary.js @@ -9,6 +9,7 @@ import { AnErrorOccurred, Search, useSelectionState, + useQueryParams, } from '@strapi/helper-plugin'; import { Layout, HeaderLayout, ContentLayout, ActionLayout } from '@strapi/design-system/Layout'; import { Main } from '@strapi/design-system/Main'; @@ -19,10 +20,10 @@ import { BaseCheckbox } from '@strapi/design-system/BaseCheckbox'; import { UploadAssetDialog } from '../../components/UploadAssetDialog/UploadAssetDialog'; import { EditAssetDialog } from '../../components/EditAssetDialog'; import { AssetList } from '../../components/AssetList'; +import SortPicker from '../../components/SortPicker'; import { useAssets } from '../../hooks/useAssets'; import { getTrad } from '../../utils'; import { Filters } from './components/Filters'; -import { SortPicker } from './components/SortPicker'; import { PaginationFooter } from '../../components/PaginationFooter'; import { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions'; import { BulkDeleteButton } from './components/BulkDeleteButton'; @@ -42,12 +43,17 @@ export const MediaLibrary = () => { canDownload, isLoading: isLoadingPermissions, } = useMediaLibraryPermissions(); + const [, setQuery] = useQueryParams(); const { formatMessage } = useIntl(); const { data, isLoading, error } = useAssets({ skipWhen: !canRead, }); + const handleChangeSort = value => { + setQuery({ sort: value }); + }; + const [showUploadAssetDialog, setShowUploadAssetDialog] = useState(false); const [assetToEdit, setAssetToEdit] = useState(undefined); const [selected, { selectOne, selectAll }] = useSelectionState('id', []); @@ -113,7 +119,7 @@ export const MediaLibrary = () => { /> )} - {canRead && } + {canRead && } {canRead && } }