@strapi/upload 5.13.1 → 5.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +2 -0
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +2 -0
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +5 -16
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +5 -16
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
- package/dist/admin/package.json.js +8 -8
- package/dist/admin/package.json.mjs +8 -8
- package/dist/admin/src/utils/getAllowedFiles.d.ts +1 -1
- package/dist/admin/utils/getAllowedFiles.js +3 -0
- package/dist/admin/utils/getAllowedFiles.js.map +1 -1
- package/dist/admin/utils/getAllowedFiles.mjs +3 -0
- package/dist/admin/utils/getAllowedFiles.mjs.map +1 -1
- package/package.json +8 -8
|
@@ -293,6 +293,8 @@ const BrowseStep = ({ allowedTypes = [], assets: rawAssets, canCreate, canRead,
|
|
|
293
293
|
pagination.pageCount > 0 && /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
294
294
|
justifyContent: "space-between",
|
|
295
295
|
paddingTop: 4,
|
|
296
|
+
position: "relative",
|
|
297
|
+
zIndex: 1,
|
|
296
298
|
children: [
|
|
297
299
|
/*#__PURE__*/ jsxRuntime.jsx(PageSize.PageSize, {
|
|
298
300
|
pageSize: queryObject.pageSize,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowseStep.js","sources":["../../../../../admin/src/components/AssetDialog/BrowseStep/BrowseStep.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport {\n Checkbox,\n Box,\n Button,\n Divider,\n Flex,\n IconButton,\n Typography,\n VisuallyHidden,\n Grid,\n} from '@strapi/design-system';\nimport { GridFour as GridIcon, List, Pencil, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { localStorageKeys, viewOptions } from '../../../constants';\nimport { useFolder } from '../../../hooks/useFolder';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\nimport {\n getBreadcrumbDataCM,\n toSingularTypes,\n getTrad,\n getAllowedFiles,\n BreadcrumbDataFolder,\n AllowedFiles,\n} from '../../../utils';\nimport { AssetGridList } from '../../AssetGridList/AssetGridList';\nimport { Breadcrumbs } from '../../Breadcrumbs/Breadcrumbs';\nimport { EmptyAssets } from '../../EmptyAssets/EmptyAssets';\nimport { FolderCard } from '../../FolderCard/FolderCard/FolderCard';\nimport { FolderCardBody } from '../../FolderCard/FolderCardBody/FolderCardBody';\nimport { FolderCardBodyAction } from '../../FolderCard/FolderCardBodyAction/FolderCardBodyAction';\nimport { FolderGridList } from '../../FolderGridList/FolderGridList';\nimport { SortPicker } from '../../SortPicker/SortPicker';\nimport { TableList, FolderRow, FileRow } from '../../TableList/TableList';\n\nimport { Filters, FilterStructure as ImportedFilterStructure } from './Filters';\nimport { PageSize } from './PageSize';\nimport { PaginationFooter } from './PaginationFooter/PaginationFooter';\nimport { SearchAsset } from './SearchAsset/SearchAsset';\nimport { isSelectable } from './utils/isSelectable';\n\nimport type { File, Query, FilterCondition } from '../../../../../shared/contracts/files';\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../../AssetCard/AssetCard';\n\nconst TypographyMaxWidth = styled(Typography)`\n max-width: 100%;\n`;\n\nconst ActionContainer = styled(Box)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n | string\n | NumberKeyedObject\n | Record<string, string | NumberKeyedObject>\n | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\nexport type Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FolderWithType extends Omit<Folder, 'children' | 'files'> {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n children?: Folder['children'] & {\n count: number;\n };\n files?: Folder['files'] & {\n count: number;\n };\n}\n\nexport interface FileWithType extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface BrowseStepProps {\n allowedTypes?: AllowedTypes[];\n assets: File[];\n canCreate: boolean;\n canRead: boolean;\n folders?: FolderWithType[];\n multiple?: boolean;\n onAddAsset: () => void;\n onChangeFilters: (filters: FilterCondition<string>[] | Filter[]) => void;\n onChangeFolder: (id: number, path?: string) => void;\n onChangePage: (page: number) => void;\n onChangePageSize: (value: number) => void;\n onChangeSort: (value: Query['sort'] | string) => void;\n onChangeSearch: (_q?: Query['_q'] | null) => void;\n onEditAsset: ((asset: FileWithType) => void) | null;\n onEditFolder: ((folder: FolderRow) => void) | null;\n onSelectAsset: (element: FileRow | FolderRow) => void;\n onSelectAllAsset?: (checked: boolean | string, rows?: FolderRow[] | FileRow[]) => void;\n queryObject: Query;\n pagination: { pageCount: number };\n selectedAssets: FileWithType[] | FolderWithType[];\n}\n\nexport const BrowseStep = ({\n allowedTypes = [],\n assets: rawAssets,\n canCreate,\n canRead,\n folders = [],\n multiple = false,\n onAddAsset,\n onChangeFilters,\n onChangePage,\n onChangePageSize,\n onChangeSearch,\n onChangeSort,\n onChangeFolder,\n onEditAsset,\n onEditFolder,\n onSelectAllAsset,\n onSelectAsset,\n pagination,\n queryObject,\n selectedAssets,\n}: BrowseStepProps) => {\n const { formatMessage } = useIntl();\n const [view, setView] = usePersistentState(localStorageKeys.modalView, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n const { data: currentFolder, isLoading: isCurrentFolderLoading } = useFolder(\n queryObject?.folder as number | null | undefined,\n {\n enabled: canRead && !!queryObject?.folder,\n }\n );\n\n const singularTypes = toSingularTypes(allowedTypes);\n const assets = rawAssets.map((asset) => ({\n ...asset,\n isSelectable: isSelectable(singularTypes, asset?.mime),\n type: 'asset',\n }));\n\n const breadcrumbs = !isCurrentFolderLoading\n ? getBreadcrumbDataCM(currentFolder as BreadcrumbDataFolder)\n : undefined;\n\n const allAllowedAsset = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n const areAllAssetSelected =\n allAllowedAsset.length > 0 &&\n selectedAssets.length > 0 &&\n allAllowedAsset.every(\n (asset) => selectedAssets.findIndex((currAsset) => currAsset.id === asset.id) !== -1\n );\n const hasSomeAssetSelected = allAllowedAsset.some(\n (asset) => selectedAssets.findIndex((currAsset) => currAsset.id === asset.id) !== -1\n );\n const isSearching = !!queryObject?._q;\n const isFiltering = !!queryObject?.filters?.$and?.length && queryObject.filters.$and.length > 0;\n const isSearchingOrFiltering = isSearching || isFiltering;\n const assetCount = assets.length;\n const folderCount = folders.length;\n const handleClickFolderCard = (...args: Parameters<typeof onChangeFolder>) => {\n // Search query will always fetch the same results\n // we remove it here to allow navigating in a folder and see the result of this navigation\n onChangeSearch('');\n onChangeFolder(...args);\n };\n\n return (\n <Box>\n {onSelectAllAsset && (\n <Box paddingBottom={4}>\n <Flex justifyContent=\"space-between\" alignItems=\"flex-start\">\n {(assetCount > 0 || folderCount > 0 || isFiltering) && (\n <Flex gap={2} wrap=\"wrap\">\n {multiple && isGridView && (\n <Flex\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n height=\"3.2rem\"\n >\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all assets',\n })}\n checked={\n !areAllAssetSelected && hasSomeAssetSelected\n ? 'indeterminate'\n : areAllAssetSelected\n }\n onCheckedChange={onSelectAllAsset}\n />\n </Flex>\n )}\n {isGridView && <SortPicker onChangeSort={onChangeSort} value={queryObject?.sort} />}\n <Filters\n appliedFilters={queryObject?.filters?.$and as ImportedFilterStructure[]}\n onChangeFilters={onChangeFilters}\n />\n </Flex>\n )}\n\n {(assetCount > 0 || folderCount > 0 || isSearching) && (\n <Flex marginLeft=\"auto\" shrink={0} gap={2}>\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n label={\n isGridView\n ? formatMessage({\n id: 'view-switch.list',\n defaultMessage: 'List View',\n })\n : formatMessage({\n id: 'view-switch.grid',\n defaultMessage: 'Grid View',\n })\n }\n onClick={() => setView(isGridView ? viewOptions.LIST : viewOptions.GRID)}\n >\n {isGridView ? <List /> : <GridIcon />}\n </IconButton>\n </ActionContainer>\n <SearchAsset onChangeSearch={onChangeSearch} queryValue={queryObject._q || ''} />\n </Flex>\n )}\n </Flex>\n </Box>\n )}\n\n {canRead && breadcrumbs?.length && breadcrumbs.length > 0 && currentFolder && (\n <Box paddingTop={3}>\n <Breadcrumbs\n onChangeFolder={onChangeFolder}\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs as BreadcrumbDataFolder[]}\n currentFolderId={queryObject?.folder as number | undefined}\n />\n </Box>\n )}\n\n {assetCount === 0 && folderCount === 0 && (\n <Box paddingBottom={6}>\n <EmptyAssets\n size=\"S\"\n count={6}\n action={\n canCreate &&\n !isFiltering &&\n !isSearching && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={\n // eslint-disable-next-line no-nested-ternary\n isSearchingOrFiltering\n ? formatMessage({\n id: getTrad('list.assets-empty.title-withSearch'),\n defaultMessage: 'There are no assets with the applied filters',\n })\n : canCreate && !isSearching\n ? formatMessage({\n id: getTrad('list.assets.empty'),\n defaultMessage: 'Upload your first assets...',\n })\n : formatMessage({\n id: getTrad('list.assets.empty.no-permissions'),\n defaultMessage: 'The asset list is empty',\n })\n }\n />\n </Box>\n )}\n\n {!isGridView && (folderCount > 0 || assetCount > 0) && (\n <TableList\n allowedTypes={allowedTypes}\n assetCount={assetCount}\n folderCount={folderCount}\n indeterminate={!areAllAssetSelected && hasSomeAssetSelected}\n isFolderSelectionAllowed={false}\n onChangeSort={onChangeSort}\n onChangeFolder={handleClickFolderCard}\n onEditAsset={onEditAsset}\n onEditFolder={onEditFolder}\n onSelectOne={onSelectAsset}\n onSelectAll={onSelectAllAsset!}\n rows={\n [...folders.map((folder) => ({ ...folder, type: 'folder' })), ...assets] as\n | FolderRow[]\n | FileRow[]\n }\n selected={selectedAssets}\n shouldDisableBulkSelect={!multiple}\n sortQuery={queryObject?.sort ?? ''}\n />\n )}\n\n {isGridView && (\n <>\n {folderCount > 0 && (\n <FolderGridList\n title={\n (((isSearchingOrFiltering && assetCount > 0) || !isSearchingOrFiltering) &&\n formatMessage(\n {\n id: getTrad('list.folders.title'),\n defaultMessage: 'Folders ({count})',\n },\n { count: folderCount }\n )) ||\n ''\n }\n >\n {folders.map((folder) => {\n return (\n <Grid.Item\n col={3}\n key={`folder-${folder.id}`}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FolderCard\n ariaLabel={folder.name}\n id={`folder-${folder.id}`}\n onClick={() => handleClickFolderCard(folder.id, folder.path)}\n cardActions={\n onEditFolder && (\n <IconButton\n withTooltip={false}\n label={formatMessage({\n id: getTrad('list.folder.edit'),\n defaultMessage: 'Edit folder',\n })}\n onClick={() => onEditFolder(folder)}\n >\n <Pencil />\n </IconButton>\n )\n }\n >\n <FolderCardBody>\n <FolderCardBodyAction\n onClick={() => handleClickFolderCard(folder.id, folder.path)}\n >\n <Flex tag=\"h2\" direction=\"column\" alignItems=\"start\" maxWidth=\"100%\">\n <TypographyMaxWidth\n fontWeight=\"semiBold\"\n ellipsis\n textColor=\"neutral800\"\n >\n {folder.name}\n {/* VisuallyHidden dash here allows to separate folder title and count informations\n for voice reading structure purpose */}\n <VisuallyHidden>-</VisuallyHidden>\n </TypographyMaxWidth>\n <TypographyMaxWidth\n tag=\"span\"\n textColor=\"neutral600\"\n variant=\"pi\"\n ellipsis\n >\n {formatMessage(\n {\n id: getTrad('list.folder.subtitle'),\n defaultMessage:\n '{folderCount, plural, =0 {# folder} one {# folder} other {# folders}}, {filesCount, plural, =0 {# asset} one {# asset} other {# assets}}',\n },\n {\n folderCount: folder.children?.count,\n filesCount: folder.files?.count,\n }\n )}\n </TypographyMaxWidth>\n </Flex>\n </FolderCardBodyAction>\n </FolderCardBody>\n </FolderCard>\n </Grid.Item>\n );\n })}\n </FolderGridList>\n )}\n\n {assetCount > 0 && folderCount > 0 && (\n <Box paddingTop={6}>\n <Divider />\n </Box>\n )}\n\n {assetCount > 0 && (\n <Box paddingTop={6}>\n <AssetGridList\n allowedTypes={allowedTypes}\n size=\"S\"\n assets={assets}\n onSelectAsset={onSelectAsset}\n selectedAssets={selectedAssets as FileWithType[]}\n onEditAsset={onEditAsset!}\n title={\n ((!isSearchingOrFiltering || (isSearchingOrFiltering && folderCount > 0)) &&\n queryObject.page === 1 &&\n formatMessage(\n {\n id: getTrad('list.assets.title'),\n defaultMessage: 'Assets ({count})',\n },\n { count: assetCount }\n )) ||\n ''\n }\n />\n </Box>\n )}\n </>\n )}\n\n {pagination.pageCount > 0 && (\n <Flex justifyContent=\"space-between\" paddingTop={4}>\n <PageSize\n pageSize={queryObject.pageSize! as number}\n onChangePageSize={onChangePageSize}\n />\n <PaginationFooter\n activePage={queryObject.page as number}\n onChangePage={onChangePage}\n pagination={pagination}\n />\n </Flex>\n )}\n </Box>\n );\n};\n"],"names":["TypographyMaxWidth","styled","Typography","ActionContainer","Box","theme","colors","neutral500","BrowseStep","allowedTypes","assets","rawAssets","canCreate","canRead","folders","multiple","onAddAsset","onChangeFilters","onChangePage","onChangePageSize","onChangeSearch","onChangeSort","onChangeFolder","onEditAsset","onEditFolder","onSelectAllAsset","onSelectAsset","pagination","queryObject","selectedAssets","formatMessage","useIntl","view","setView","usePersistentState","localStorageKeys","modalView","viewOptions","GRID","isGridView","data","currentFolder","isLoading","isCurrentFolderLoading","useFolder","folder","enabled","singularTypes","toSingularTypes","map","asset","isSelectable","mime","type","breadcrumbs","getBreadcrumbDataCM","undefined","allAllowedAsset","getAllowedFiles","areAllAssetSelected","length","every","findIndex","currAsset","id","hasSomeAssetSelected","some","isSearching","_q","isFiltering","filters","$and","isSearchingOrFiltering","assetCount","folderCount","handleClickFolderCard","args","_jsxs","_jsx","paddingBottom","Flex","justifyContent","alignItems","gap","wrap","paddingLeft","paddingRight","background","hasRadius","borderColor","height","Checkbox","aria-label","getTrad","defaultMessage","checked","onCheckedChange","SortPicker","value","sort","Filters","appliedFilters","marginLeft","shrink","paddingTop","IconButton","label","onClick","LIST","List","GridIcon","SearchAsset","queryValue","Breadcrumbs","currentFolderId","EmptyAssets","size","count","action","Button","variant","startIcon","Plus","content","TableList","indeterminate","isFolderSelectionAllowed","onSelectOne","onSelectAll","rows","selected","shouldDisableBulkSelect","sortQuery","_Fragment","FolderGridList","title","Grid","Item","col","direction","FolderCard","ariaLabel","name","path","cardActions","withTooltip","Pencil","FolderCardBody","FolderCardBodyAction","tag","maxWidth","fontWeight","ellipsis","textColor","VisuallyHidden","children","filesCount","files","Divider","AssetGridList","page","pageCount","PageSize","pageSize","PaginationFooter","activePage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BrowseStep.js","sources":["../../../../../admin/src/components/AssetDialog/BrowseStep/BrowseStep.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport {\n Checkbox,\n Box,\n Button,\n Divider,\n Flex,\n IconButton,\n Typography,\n VisuallyHidden,\n Grid,\n} from '@strapi/design-system';\nimport { GridFour as GridIcon, List, Pencil, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { localStorageKeys, viewOptions } from '../../../constants';\nimport { useFolder } from '../../../hooks/useFolder';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\nimport {\n getBreadcrumbDataCM,\n toSingularTypes,\n getTrad,\n getAllowedFiles,\n BreadcrumbDataFolder,\n AllowedFiles,\n} from '../../../utils';\nimport { AssetGridList } from '../../AssetGridList/AssetGridList';\nimport { Breadcrumbs } from '../../Breadcrumbs/Breadcrumbs';\nimport { EmptyAssets } from '../../EmptyAssets/EmptyAssets';\nimport { FolderCard } from '../../FolderCard/FolderCard/FolderCard';\nimport { FolderCardBody } from '../../FolderCard/FolderCardBody/FolderCardBody';\nimport { FolderCardBodyAction } from '../../FolderCard/FolderCardBodyAction/FolderCardBodyAction';\nimport { FolderGridList } from '../../FolderGridList/FolderGridList';\nimport { SortPicker } from '../../SortPicker/SortPicker';\nimport { TableList, FolderRow, FileRow } from '../../TableList/TableList';\n\nimport { Filters, FilterStructure as ImportedFilterStructure } from './Filters';\nimport { PageSize } from './PageSize';\nimport { PaginationFooter } from './PaginationFooter/PaginationFooter';\nimport { SearchAsset } from './SearchAsset/SearchAsset';\nimport { isSelectable } from './utils/isSelectable';\n\nimport type { File, Query, FilterCondition } from '../../../../../shared/contracts/files';\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../../AssetCard/AssetCard';\n\nconst TypographyMaxWidth = styled(Typography)`\n max-width: 100%;\n`;\n\nconst ActionContainer = styled(Box)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n | string\n | NumberKeyedObject\n | Record<string, string | NumberKeyedObject>\n | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\nexport type Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FolderWithType extends Omit<Folder, 'children' | 'files'> {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n children?: Folder['children'] & {\n count: number;\n };\n files?: Folder['files'] & {\n count: number;\n };\n}\n\nexport interface FileWithType extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface BrowseStepProps {\n allowedTypes?: AllowedTypes[];\n assets: File[];\n canCreate: boolean;\n canRead: boolean;\n folders?: FolderWithType[];\n multiple?: boolean;\n onAddAsset: () => void;\n onChangeFilters: (filters: FilterCondition<string>[] | Filter[]) => void;\n onChangeFolder: (id: number, path?: string) => void;\n onChangePage: (page: number) => void;\n onChangePageSize: (value: number) => void;\n onChangeSort: (value: Query['sort'] | string) => void;\n onChangeSearch: (_q?: Query['_q'] | null) => void;\n onEditAsset: ((asset: FileWithType) => void) | null;\n onEditFolder: ((folder: FolderRow) => void) | null;\n onSelectAsset: (element: FileRow | FolderRow) => void;\n onSelectAllAsset?: (checked: boolean | string, rows?: FolderRow[] | FileRow[]) => void;\n queryObject: Query;\n pagination: { pageCount: number };\n selectedAssets: FileWithType[] | FolderWithType[];\n}\n\nexport const BrowseStep = ({\n allowedTypes = [],\n assets: rawAssets,\n canCreate,\n canRead,\n folders = [],\n multiple = false,\n onAddAsset,\n onChangeFilters,\n onChangePage,\n onChangePageSize,\n onChangeSearch,\n onChangeSort,\n onChangeFolder,\n onEditAsset,\n onEditFolder,\n onSelectAllAsset,\n onSelectAsset,\n pagination,\n queryObject,\n selectedAssets,\n}: BrowseStepProps) => {\n const { formatMessage } = useIntl();\n const [view, setView] = usePersistentState(localStorageKeys.modalView, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n const { data: currentFolder, isLoading: isCurrentFolderLoading } = useFolder(\n queryObject?.folder as number | null | undefined,\n {\n enabled: canRead && !!queryObject?.folder,\n }\n );\n\n const singularTypes = toSingularTypes(allowedTypes);\n const assets = rawAssets.map((asset) => ({\n ...asset,\n isSelectable: isSelectable(singularTypes, asset?.mime),\n type: 'asset',\n }));\n\n const breadcrumbs = !isCurrentFolderLoading\n ? getBreadcrumbDataCM(currentFolder as BreadcrumbDataFolder)\n : undefined;\n\n const allAllowedAsset = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n const areAllAssetSelected =\n allAllowedAsset.length > 0 &&\n selectedAssets.length > 0 &&\n allAllowedAsset.every(\n (asset) => selectedAssets.findIndex((currAsset) => currAsset.id === asset.id) !== -1\n );\n const hasSomeAssetSelected = allAllowedAsset.some(\n (asset) => selectedAssets.findIndex((currAsset) => currAsset.id === asset.id) !== -1\n );\n const isSearching = !!queryObject?._q;\n const isFiltering = !!queryObject?.filters?.$and?.length && queryObject.filters.$and.length > 0;\n const isSearchingOrFiltering = isSearching || isFiltering;\n const assetCount = assets.length;\n const folderCount = folders.length;\n const handleClickFolderCard = (...args: Parameters<typeof onChangeFolder>) => {\n // Search query will always fetch the same results\n // we remove it here to allow navigating in a folder and see the result of this navigation\n onChangeSearch('');\n onChangeFolder(...args);\n };\n\n return (\n <Box>\n {onSelectAllAsset && (\n <Box paddingBottom={4}>\n <Flex justifyContent=\"space-between\" alignItems=\"flex-start\">\n {(assetCount > 0 || folderCount > 0 || isFiltering) && (\n <Flex gap={2} wrap=\"wrap\">\n {multiple && isGridView && (\n <Flex\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n height=\"3.2rem\"\n >\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all assets',\n })}\n checked={\n !areAllAssetSelected && hasSomeAssetSelected\n ? 'indeterminate'\n : areAllAssetSelected\n }\n onCheckedChange={onSelectAllAsset}\n />\n </Flex>\n )}\n {isGridView && <SortPicker onChangeSort={onChangeSort} value={queryObject?.sort} />}\n <Filters\n appliedFilters={queryObject?.filters?.$and as ImportedFilterStructure[]}\n onChangeFilters={onChangeFilters}\n />\n </Flex>\n )}\n\n {(assetCount > 0 || folderCount > 0 || isSearching) && (\n <Flex marginLeft=\"auto\" shrink={0} gap={2}>\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n label={\n isGridView\n ? formatMessage({\n id: 'view-switch.list',\n defaultMessage: 'List View',\n })\n : formatMessage({\n id: 'view-switch.grid',\n defaultMessage: 'Grid View',\n })\n }\n onClick={() => setView(isGridView ? viewOptions.LIST : viewOptions.GRID)}\n >\n {isGridView ? <List /> : <GridIcon />}\n </IconButton>\n </ActionContainer>\n <SearchAsset onChangeSearch={onChangeSearch} queryValue={queryObject._q || ''} />\n </Flex>\n )}\n </Flex>\n </Box>\n )}\n\n {canRead && breadcrumbs?.length && breadcrumbs.length > 0 && currentFolder && (\n <Box paddingTop={3}>\n <Breadcrumbs\n onChangeFolder={onChangeFolder}\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs as BreadcrumbDataFolder[]}\n currentFolderId={queryObject?.folder as number | undefined}\n />\n </Box>\n )}\n\n {assetCount === 0 && folderCount === 0 && (\n <Box paddingBottom={6}>\n <EmptyAssets\n size=\"S\"\n count={6}\n action={\n canCreate &&\n !isFiltering &&\n !isSearching && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={\n // eslint-disable-next-line no-nested-ternary\n isSearchingOrFiltering\n ? formatMessage({\n id: getTrad('list.assets-empty.title-withSearch'),\n defaultMessage: 'There are no assets with the applied filters',\n })\n : canCreate && !isSearching\n ? formatMessage({\n id: getTrad('list.assets.empty'),\n defaultMessage: 'Upload your first assets...',\n })\n : formatMessage({\n id: getTrad('list.assets.empty.no-permissions'),\n defaultMessage: 'The asset list is empty',\n })\n }\n />\n </Box>\n )}\n\n {!isGridView && (folderCount > 0 || assetCount > 0) && (\n <TableList\n allowedTypes={allowedTypes}\n assetCount={assetCount}\n folderCount={folderCount}\n indeterminate={!areAllAssetSelected && hasSomeAssetSelected}\n isFolderSelectionAllowed={false}\n onChangeSort={onChangeSort}\n onChangeFolder={handleClickFolderCard}\n onEditAsset={onEditAsset}\n onEditFolder={onEditFolder}\n onSelectOne={onSelectAsset}\n onSelectAll={onSelectAllAsset!}\n rows={\n [...folders.map((folder) => ({ ...folder, type: 'folder' })), ...assets] as\n | FolderRow[]\n | FileRow[]\n }\n selected={selectedAssets}\n shouldDisableBulkSelect={!multiple}\n sortQuery={queryObject?.sort ?? ''}\n />\n )}\n\n {isGridView && (\n <>\n {folderCount > 0 && (\n <FolderGridList\n title={\n (((isSearchingOrFiltering && assetCount > 0) || !isSearchingOrFiltering) &&\n formatMessage(\n {\n id: getTrad('list.folders.title'),\n defaultMessage: 'Folders ({count})',\n },\n { count: folderCount }\n )) ||\n ''\n }\n >\n {folders.map((folder) => {\n return (\n <Grid.Item\n col={3}\n key={`folder-${folder.id}`}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FolderCard\n ariaLabel={folder.name}\n id={`folder-${folder.id}`}\n onClick={() => handleClickFolderCard(folder.id, folder.path)}\n cardActions={\n onEditFolder && (\n <IconButton\n withTooltip={false}\n label={formatMessage({\n id: getTrad('list.folder.edit'),\n defaultMessage: 'Edit folder',\n })}\n onClick={() => onEditFolder(folder)}\n >\n <Pencil />\n </IconButton>\n )\n }\n >\n <FolderCardBody>\n <FolderCardBodyAction\n onClick={() => handleClickFolderCard(folder.id, folder.path)}\n >\n <Flex tag=\"h2\" direction=\"column\" alignItems=\"start\" maxWidth=\"100%\">\n <TypographyMaxWidth\n fontWeight=\"semiBold\"\n ellipsis\n textColor=\"neutral800\"\n >\n {folder.name}\n {/* VisuallyHidden dash here allows to separate folder title and count informations\n for voice reading structure purpose */}\n <VisuallyHidden>-</VisuallyHidden>\n </TypographyMaxWidth>\n <TypographyMaxWidth\n tag=\"span\"\n textColor=\"neutral600\"\n variant=\"pi\"\n ellipsis\n >\n {formatMessage(\n {\n id: getTrad('list.folder.subtitle'),\n defaultMessage:\n '{folderCount, plural, =0 {# folder} one {# folder} other {# folders}}, {filesCount, plural, =0 {# asset} one {# asset} other {# assets}}',\n },\n {\n folderCount: folder.children?.count,\n filesCount: folder.files?.count,\n }\n )}\n </TypographyMaxWidth>\n </Flex>\n </FolderCardBodyAction>\n </FolderCardBody>\n </FolderCard>\n </Grid.Item>\n );\n })}\n </FolderGridList>\n )}\n\n {assetCount > 0 && folderCount > 0 && (\n <Box paddingTop={6}>\n <Divider />\n </Box>\n )}\n\n {assetCount > 0 && (\n <Box paddingTop={6}>\n <AssetGridList\n allowedTypes={allowedTypes}\n size=\"S\"\n assets={assets}\n onSelectAsset={onSelectAsset}\n selectedAssets={selectedAssets as FileWithType[]}\n onEditAsset={onEditAsset!}\n title={\n ((!isSearchingOrFiltering || (isSearchingOrFiltering && folderCount > 0)) &&\n queryObject.page === 1 &&\n formatMessage(\n {\n id: getTrad('list.assets.title'),\n defaultMessage: 'Assets ({count})',\n },\n { count: assetCount }\n )) ||\n ''\n }\n />\n </Box>\n )}\n </>\n )}\n\n {pagination.pageCount > 0 && (\n <Flex justifyContent=\"space-between\" paddingTop={4} position=\"relative\" zIndex={1}>\n <PageSize\n pageSize={queryObject.pageSize! as number}\n onChangePageSize={onChangePageSize}\n />\n <PaginationFooter\n activePage={queryObject.page as number}\n onChangePage={onChangePage}\n pagination={pagination}\n />\n </Flex>\n )}\n </Box>\n );\n};\n"],"names":["TypographyMaxWidth","styled","Typography","ActionContainer","Box","theme","colors","neutral500","BrowseStep","allowedTypes","assets","rawAssets","canCreate","canRead","folders","multiple","onAddAsset","onChangeFilters","onChangePage","onChangePageSize","onChangeSearch","onChangeSort","onChangeFolder","onEditAsset","onEditFolder","onSelectAllAsset","onSelectAsset","pagination","queryObject","selectedAssets","formatMessage","useIntl","view","setView","usePersistentState","localStorageKeys","modalView","viewOptions","GRID","isGridView","data","currentFolder","isLoading","isCurrentFolderLoading","useFolder","folder","enabled","singularTypes","toSingularTypes","map","asset","isSelectable","mime","type","breadcrumbs","getBreadcrumbDataCM","undefined","allAllowedAsset","getAllowedFiles","areAllAssetSelected","length","every","findIndex","currAsset","id","hasSomeAssetSelected","some","isSearching","_q","isFiltering","filters","$and","isSearchingOrFiltering","assetCount","folderCount","handleClickFolderCard","args","_jsxs","_jsx","paddingBottom","Flex","justifyContent","alignItems","gap","wrap","paddingLeft","paddingRight","background","hasRadius","borderColor","height","Checkbox","aria-label","getTrad","defaultMessage","checked","onCheckedChange","SortPicker","value","sort","Filters","appliedFilters","marginLeft","shrink","paddingTop","IconButton","label","onClick","LIST","List","GridIcon","SearchAsset","queryValue","Breadcrumbs","currentFolderId","EmptyAssets","size","count","action","Button","variant","startIcon","Plus","content","TableList","indeterminate","isFolderSelectionAllowed","onSelectOne","onSelectAll","rows","selected","shouldDisableBulkSelect","sortQuery","_Fragment","FolderGridList","title","Grid","Item","col","direction","FolderCard","ariaLabel","name","path","cardActions","withTooltip","Pencil","FolderCardBody","FolderCardBodyAction","tag","maxWidth","fontWeight","ellipsis","textColor","VisuallyHidden","children","filesCount","files","Divider","AssetGridList","page","pageCount","position","zIndex","PageSize","pageSize","PaginationFooter","activePage"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AA+CA,MAAMA,kBAAAA,GAAqBC,uBAAOC,CAAAA,uBAAAA,CAAW;;AAE7C,CAAC;AAED,MAAMC,eAAAA,GAAkBF,uBAAOG,CAAAA,gBAAAA,CAAI;;;YAGvB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;;AAGrD,CAAC;AAwEM,MAAMC,aAAa,CAAC,EACzBC,eAAe,EAAE,EACjBC,QAAQC,SAAS,EACjBC,SAAS,EACTC,OAAO,EACPC,OAAU,GAAA,EAAE,EACZC,QAAW,GAAA,KAAK,EAChBC,UAAU,EACVC,eAAe,EACfC,YAAY,EACZC,gBAAgB,EAChBC,cAAc,EACdC,YAAY,EACZC,cAAc,EACdC,WAAW,EACXC,YAAY,EACZC,gBAAgB,EAChBC,aAAa,EACbC,UAAU,EACVC,WAAW,EACXC,cAAc,EACE,GAAA;IAChB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,CAACC,MAAMC,OAAQ,CAAA,GAAGC,sCAAmBC,0BAAiBC,CAAAA,SAAS,EAAEC,qBAAAA,CAAYC,IAAI,CAAA;IACvF,MAAMC,UAAAA,GAAaP,IAASK,KAAAA,qBAAAA,CAAYC,IAAI;IAE5C,MAAM,EAAEE,IAAMC,EAAAA,aAAa,EAAEC,SAAAA,EAAWC,sBAAsB,EAAE,GAAGC,mBACjEhB,CAAAA,WAAAA,EAAaiB,MACb,EAAA;QACEC,OAASjC,EAAAA,OAAAA,IAAW,CAAC,CAACe,WAAaiB,EAAAA;AACrC,KAAA,CAAA;AAGF,IAAA,MAAME,gBAAgBC,+BAAgBvC,CAAAA,YAAAA,CAAAA;AACtC,IAAA,MAAMC,SAASC,SAAUsC,CAAAA,GAAG,CAAC,CAACC,SAAW;AACvC,YAAA,GAAGA,KAAK;YACRC,YAAcA,EAAAA,yBAAAA,CAAaJ,eAAeG,KAAOE,EAAAA,IAAAA,CAAAA;YACjDC,IAAM,EAAA;SACR,CAAA,CAAA;AAEA,IAAA,MAAMC,WAAc,GAAA,CAACX,sBACjBY,GAAAA,uCAAAA,CAAoBd,aACpBe,CAAAA,GAAAA,SAAAA;IAEJ,MAAMC,eAAAA,GAAkBC,gCAAgBjD,YAAcC,EAAAA,MAAAA,CAAAA;IACtD,MAAMiD,mBAAAA,GACJF,eAAgBG,CAAAA,MAAM,GAAG,CAAA,IACzB/B,eAAe+B,MAAM,GAAG,CACxBH,IAAAA,eAAAA,CAAgBI,KAAK,CACnB,CAACX,KAAUrB,GAAAA,cAAAA,CAAeiC,SAAS,CAAC,CAACC,SAAAA,GAAcA,SAAUC,CAAAA,EAAE,KAAKd,KAAAA,CAAMc,EAAE,CAAA,KAAM,CAAC,CAAA,CAAA;AAEvF,IAAA,MAAMC,uBAAuBR,eAAgBS,CAAAA,IAAI,CAC/C,CAAChB,QAAUrB,cAAeiC,CAAAA,SAAS,CAAC,CAACC,YAAcA,SAAUC,CAAAA,EAAE,KAAKd,KAAMc,CAAAA,EAAE,MAAM,CAAC,CAAA,CAAA;IAErF,MAAMG,WAAAA,GAAc,CAAC,CAACvC,WAAawC,EAAAA,EAAAA;AACnC,IAAA,MAAMC,WAAc,GAAA,CAAC,CAACzC,WAAAA,EAAa0C,OAASC,EAAAA,IAAAA,EAAMX,MAAUhC,IAAAA,WAAAA,CAAY0C,OAAO,CAACC,IAAI,CAACX,MAAM,GAAG,CAAA;AAC9F,IAAA,MAAMY,yBAAyBL,WAAeE,IAAAA,WAAAA;IAC9C,MAAMI,UAAAA,GAAa/D,OAAOkD,MAAM;IAChC,MAAMc,WAAAA,GAAc5D,QAAQ8C,MAAM;IAClC,MAAMe,qBAAAA,GAAwB,CAAC,GAAGC,IAAAA,GAAAA;;;QAGhCxD,cAAe,CAAA,EAAA,CAAA;QACfE,cAAkBsD,CAAAA,GAAAA,IAAAA,CAAAA;AACpB,KAAA;AAEA,IAAA,qBACEC,eAACzE,CAAAA,gBAAAA,EAAAA;;AACEqB,YAAAA,gBAAAA,kBACCqD,cAAC1E,CAAAA,gBAAAA,EAAAA;gBAAI2E,aAAe,EAAA,CAAA;AAClB,gBAAA,QAAA,gBAAAF,eAACG,CAAAA,iBAAAA,EAAAA;oBAAKC,cAAe,EAAA,eAAA;oBAAgBC,UAAW,EAAA,YAAA;;AAC5CT,wBAAAA,CAAAA,aAAa,CAAKC,IAAAA,WAAAA,GAAc,CAAKL,IAAAA,WAAU,mBAC/CQ,eAACG,CAAAA,iBAAAA,EAAAA;4BAAKG,GAAK,EAAA,CAAA;4BAAGC,IAAK,EAAA,MAAA;;AAChBrE,gCAAAA,QAAAA,IAAYwB,4BACXuC,cAACE,CAAAA,iBAAAA,EAAAA;oCACCK,WAAa,EAAA,CAAA;oCACbC,YAAc,EAAA,CAAA;oCACdC,UAAW,EAAA,UAAA;oCACXC,SAAS,EAAA,IAAA;oCACTC,WAAY,EAAA,YAAA;oCACZC,MAAO,EAAA,QAAA;AAEP,oCAAA,QAAA,gBAAAZ,cAACa,CAAAA,qBAAAA,EAAAA;AACCC,wCAAAA,YAAAA,EAAY9D,aAAc,CAAA;AACxBkC,4CAAAA,EAAAA,EAAI6B,eAAQ,CAAA,mBAAA,CAAA;4CACZC,cAAgB,EAAA;AAClB,yCAAA,CAAA;wCACAC,OACE,EAAA,CAACpC,mBAAuBM,IAAAA,oBAAAA,GACpB,eACAN,GAAAA,mBAAAA;wCAENqC,eAAiBvE,EAAAA;;;AAItBc,gCAAAA,UAAAA,kBAAcuC,cAACmB,CAAAA,qBAAAA,EAAAA;oCAAW5E,YAAcA,EAAAA,YAAAA;AAAc6E,oCAAAA,KAAAA,EAAOtE,WAAauE,EAAAA;;8CAC3ErB,cAACsB,CAAAA,eAAAA,EAAAA;AACCC,oCAAAA,cAAAA,EAAgBzE,aAAa0C,OAASC,EAAAA,IAAAA;oCACtCtD,eAAiBA,EAAAA;;;;AAKrBwD,wBAAAA,CAAAA,aAAa,CAAKC,IAAAA,WAAAA,GAAc,CAAKP,IAAAA,WAAU,mBAC/CU,eAACG,CAAAA,iBAAAA,EAAAA;4BAAKsB,UAAW,EAAA,MAAA;4BAAOC,MAAQ,EAAA,CAAA;4BAAGpB,GAAK,EAAA,CAAA;;8CACtCL,cAAC3E,CAAAA,eAAAA,EAAAA;oCAAgBqG,UAAY,EAAA,CAAA;oCAAGzB,aAAe,EAAA,CAAA;AAC7C,oCAAA,QAAA,gBAAAD,cAAC2B,CAAAA,uBAAAA,EAAAA;AACCC,wCAAAA,KAAAA,EACEnE,aACIT,aAAc,CAAA;4CACZkC,EAAI,EAAA,kBAAA;4CACJ8B,cAAgB,EAAA;AAClB,yCAAA,CAAA,GACAhE,aAAc,CAAA;4CACZkC,EAAI,EAAA,kBAAA;4CACJ8B,cAAgB,EAAA;AAClB,yCAAA,CAAA;AAENa,wCAAAA,OAAAA,EAAS,IAAM1E,OAAQM,CAAAA,UAAAA,GAAaF,sBAAYuE,IAAI,GAAGvE,sBAAYC,IAAI,CAAA;kDAEtEC,UAAa,iBAAAuC,cAAA,CAAC+B,gCAAU/B,cAACgC,CAAAA,cAAAA,EAAAA,EAAAA;;;8CAG9BhC,cAACiC,CAAAA,uBAAAA,EAAAA;oCAAY3F,cAAgBA,EAAAA,cAAAA;oCAAgB4F,UAAYpF,EAAAA,WAAAA,CAAYwC,EAAE,IAAI;;;;;;;AAOpFvD,YAAAA,OAAAA,IAAWyC,aAAaM,MAAUN,IAAAA,WAAAA,CAAYM,MAAM,GAAG,CAAA,IAAKnB,+BAC3DqC,cAAC1E,CAAAA,gBAAAA,EAAAA;gBAAIoG,UAAY,EAAA,CAAA;AACf,gBAAA,QAAA,gBAAA1B,cAACmC,CAAAA,uBAAAA,EAAAA;oBACC3F,cAAgBA,EAAAA,cAAAA;AAChBoF,oBAAAA,KAAAA,EAAO5E,aAAc,CAAA;AACnBkC,wBAAAA,EAAAA,EAAI6B,eAAQ,CAAA,8BAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA,CAAA;oBACAxC,WAAaA,EAAAA,WAAAA;AACb4D,oBAAAA,eAAAA,EAAiBtF,WAAaiB,EAAAA;;;YAKnC4B,UAAe,KAAA,CAAA,IAAKC,WAAgB,KAAA,CAAA,kBACnCI,cAAC1E,CAAAA,gBAAAA,EAAAA;gBAAI2E,aAAe,EAAA,CAAA;AAClB,gBAAA,QAAA,gBAAAD,cAACqC,CAAAA,uBAAAA,EAAAA;oBACCC,IAAK,EAAA,GAAA;oBACLC,KAAO,EAAA,CAAA;AACPC,oBAAAA,MAAAA,EACE1G,SACA,IAAA,CAACyD,WACD,IAAA,CAACF,6BACCW,cAACyC,CAAAA,mBAAAA,EAAAA;wBAAOC,OAAQ,EAAA,WAAA;AAAYC,wBAAAA,SAAAA,gBAAW3C,cAAC4C,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;wBAASf,OAAS3F,EAAAA,UAAAA;kCACvDc,aAAc,CAAA;AACbkC,4BAAAA,EAAAA,EAAI6B,eAAQ,CAAA,2BAAA,CAAA;4BACZC,cAAgB,EAAA;AAClB,yBAAA;;AAIN6B,oBAAAA,OAAAA;AAEEnD,oBAAAA,sBAAAA,GACI1C,aAAc,CAAA;AACZkC,wBAAAA,EAAAA,EAAI6B,eAAQ,CAAA,oCAAA,CAAA;wBACZC,cAAgB,EAAA;qBAElBlF,CAAAA,GAAAA,SAAAA,IAAa,CAACuD,WAAAA,GACZrC,aAAc,CAAA;AACZkC,wBAAAA,EAAAA,EAAI6B,eAAQ,CAAA,mBAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA,CAAA,GACAhE,aAAc,CAAA;AACZkC,wBAAAA,EAAAA,EAAI6B,eAAQ,CAAA,kCAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA;;;AAMb,YAAA,CAACvD,eAAemC,WAAAA,GAAc,KAAKD,UAAa,GAAA,CAAA,mBAC/CK,cAAC8C,CAAAA,mBAAAA,EAAAA;gBACCnH,YAAcA,EAAAA,YAAAA;gBACdgE,UAAYA,EAAAA,UAAAA;gBACZC,WAAaA,EAAAA,WAAAA;AACbmD,gBAAAA,aAAAA,EAAe,CAAClE,mBAAuBM,IAAAA,oBAAAA;gBACvC6D,wBAA0B,EAAA,KAAA;gBAC1BzG,YAAcA,EAAAA,YAAAA;gBACdC,cAAgBqD,EAAAA,qBAAAA;gBAChBpD,WAAaA,EAAAA,WAAAA;gBACbC,YAAcA,EAAAA,YAAAA;gBACduG,WAAarG,EAAAA,aAAAA;gBACbsG,WAAavG,EAAAA,gBAAAA;gBACbwG,IACE,EAAA;AAAInH,oBAAAA,GAAAA,OAAAA,CAAQmC,GAAG,CAAC,CAACJ,MAAAA,IAAY;AAAE,4BAAA,GAAGA,MAAM;4BAAEQ,IAAM,EAAA;yBAAS,CAAA,CAAA;AAAQ3C,oBAAAA,GAAAA;AAAO,iBAAA;gBAI1EwH,QAAUrG,EAAAA,cAAAA;AACVsG,gBAAAA,uBAAAA,EAAyB,CAACpH,QAAAA;AAC1BqH,gBAAAA,SAAAA,EAAWxG,aAAauE,IAAQ,IAAA;;YAInC5D,UACC,kBAAAsC,eAAA,CAAAwD,mBAAA,EAAA;;AACG3D,oBAAAA,WAAAA,GAAc,mBACbI,cAACwD,CAAAA,6BAAAA,EAAAA;wBACCC,KACE,EAAE,CAAA,sBAAC/D,IAA0BC,aAAa,CAAM,IAAA,CAACD,sBAAqB,KACpE1C,aACE,CAAA;AACEkC,4BAAAA,EAAAA,EAAI6B,eAAQ,CAAA,oBAAA,CAAA;4BACZC,cAAgB,EAAA;yBAElB,EAAA;4BAAEuB,KAAO3C,EAAAA;yBAEb,CAAA,IAAA,EAAA;kCAGD5D,OAAQmC,CAAAA,GAAG,CAAC,CAACJ,MAAAA,GAAAA;4BACZ,qBACEiC,cAAA,CAAC0D,kBAAKC,IAAI,EAAA;gCACRC,GAAK,EAAA,CAAA;gCAELC,SAAU,EAAA,QAAA;gCACVzD,UAAW,EAAA,SAAA;AAEX,gCAAA,QAAA,gBAAAJ,cAAC8D,CAAAA,qBAAAA,EAAAA;AACCC,oCAAAA,SAAAA,EAAWhG,OAAOiG,IAAI;AACtB9E,oCAAAA,EAAAA,EAAI,CAAC,OAAO,EAAEnB,MAAOmB,CAAAA,EAAE,CAAC,CAAC;AACzB2C,oCAAAA,OAAAA,EAAS,IAAMhC,qBAAsB9B,CAAAA,MAAAA,CAAOmB,EAAE,EAAEnB,OAAOkG,IAAI,CAAA;AAC3DC,oCAAAA,WAAAA,EACExH,8BACEsD,cAAC2B,CAAAA,uBAAAA,EAAAA;wCACCwC,WAAa,EAAA,KAAA;AACbvC,wCAAAA,KAAAA,EAAO5E,aAAc,CAAA;AACnBkC,4CAAAA,EAAAA,EAAI6B,eAAQ,CAAA,kBAAA,CAAA;4CACZC,cAAgB,EAAA;AAClB,yCAAA,CAAA;AACAa,wCAAAA,OAAAA,EAAS,IAAMnF,YAAaqB,CAAAA,MAAAA,CAAAA;AAE5B,wCAAA,QAAA,gBAAAiC,cAACoE,CAAAA,YAAAA,EAAAA,EAAAA;;AAKP,oCAAA,QAAA,gBAAApE,cAACqE,CAAAA,6BAAAA,EAAAA;AACC,wCAAA,QAAA,gBAAArE,cAACsE,CAAAA,yCAAAA,EAAAA;AACCzC,4CAAAA,OAAAA,EAAS,IAAMhC,qBAAsB9B,CAAAA,MAAAA,CAAOmB,EAAE,EAAEnB,OAAOkG,IAAI,CAAA;AAE3D,4CAAA,QAAA,gBAAAlE,eAACG,CAAAA,iBAAAA,EAAAA;gDAAKqE,GAAI,EAAA,IAAA;gDAAKV,SAAU,EAAA,QAAA;gDAASzD,UAAW,EAAA,OAAA;gDAAQoE,QAAS,EAAA,MAAA;;kEAC5DzE,eAAC7E,CAAAA,kBAAAA,EAAAA;wDACCuJ,UAAW,EAAA,UAAA;wDACXC,QAAQ,EAAA,IAAA;wDACRC,SAAU,EAAA,YAAA;;AAET5G,4DAAAA,MAAAA,CAAOiG,IAAI;0EAGZhE,cAAC4E,CAAAA,2BAAAA,EAAAA;AAAe,gEAAA,QAAA,EAAA;;;;kEAElB5E,cAAC9E,CAAAA,kBAAAA,EAAAA;wDACCqJ,GAAI,EAAA,MAAA;wDACJI,SAAU,EAAA,YAAA;wDACVjC,OAAQ,EAAA,IAAA;wDACRgC,QAAQ,EAAA,IAAA;kEAEP1H,aACC,CAAA;AACEkC,4DAAAA,EAAAA,EAAI6B,eAAQ,CAAA,sBAAA,CAAA;4DACZC,cACE,EAAA;yDAEJ,EAAA;4DACEpB,WAAa7B,EAAAA,MAAAA,CAAO8G,QAAQ,EAAEtC,KAAAA;4DAC9BuC,UAAY/G,EAAAA,MAAAA,CAAOgH,KAAK,EAAExC;AAC5B,yDAAA;;;;;;;AArDP,6BAAA,EAAA,CAAC,OAAO,EAAExE,MAAOmB,CAAAA,EAAE,CAAC,CAAC,CAAA;AA8DhC,yBAAA;;oBAIHS,UAAa,GAAA,CAAA,IAAKC,WAAc,GAAA,CAAA,kBAC/BI,cAAC1E,CAAAA,gBAAAA,EAAAA;wBAAIoG,UAAY,EAAA,CAAA;AACf,wBAAA,QAAA,gBAAA1B,cAACgF,CAAAA,oBAAAA,EAAAA,EAAAA;;AAIJrF,oBAAAA,UAAAA,GAAa,mBACZK,cAAC1E,CAAAA,gBAAAA,EAAAA;wBAAIoG,UAAY,EAAA,CAAA;AACf,wBAAA,QAAA,gBAAA1B,cAACiF,CAAAA,2BAAAA,EAAAA;4BACCtJ,YAAcA,EAAAA,YAAAA;4BACd2G,IAAK,EAAA,GAAA;4BACL1G,MAAQA,EAAAA,MAAAA;4BACRgB,aAAeA,EAAAA,aAAAA;4BACfG,cAAgBA,EAAAA,cAAAA;4BAChBN,WAAaA,EAAAA,WAAAA;AACbgH,4BAAAA,KAAAA,EACE,CAAE,CAAC/D,sBAAAA,IAA2BA,sBAA0BE,IAAAA,WAAAA,GAAc,CAAC,KACrE9C,WAAYoI,CAAAA,IAAI,KAAK,CAAA,IACrBlI,aACE,CAAA;AACEkC,gCAAAA,EAAAA,EAAI6B,eAAQ,CAAA,mBAAA,CAAA;gCACZC,cAAgB,EAAA;6BAElB,EAAA;gCAAEuB,KAAO5C,EAAAA;6BAEb,CAAA,IAAA;;;;;YAQX9C,UAAWsI,CAAAA,SAAS,GAAG,CAAA,kBACtBpF,eAACG,CAAAA,iBAAAA,EAAAA;gBAAKC,cAAe,EAAA,eAAA;gBAAgBuB,UAAY,EAAA,CAAA;gBAAG0D,QAAS,EAAA,UAAA;gBAAWC,MAAQ,EAAA,CAAA;;kCAC9ErF,cAACsF,CAAAA,iBAAAA,EAAAA;AACCC,wBAAAA,QAAAA,EAAUzI,YAAYyI,QAAQ;wBAC9BlJ,gBAAkBA,EAAAA;;kCAEpB2D,cAACwF,CAAAA,iCAAAA,EAAAA;AACCC,wBAAAA,UAAAA,EAAY3I,YAAYoI,IAAI;wBAC5B9I,YAAcA,EAAAA,YAAAA;wBACdS,UAAYA,EAAAA;;;;;;AAMxB;;;;"}
|
|
@@ -291,6 +291,8 @@ const BrowseStep = ({ allowedTypes = [], assets: rawAssets, canCreate, canRead,
|
|
|
291
291
|
pagination.pageCount > 0 && /*#__PURE__*/ jsxs(Flex, {
|
|
292
292
|
justifyContent: "space-between",
|
|
293
293
|
paddingTop: 4,
|
|
294
|
+
position: "relative",
|
|
295
|
+
zIndex: 1,
|
|
294
296
|
children: [
|
|
295
297
|
/*#__PURE__*/ jsx(PageSize, {
|
|
296
298
|
pageSize: queryObject.pageSize,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowseStep.mjs","sources":["../../../../../admin/src/components/AssetDialog/BrowseStep/BrowseStep.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport {\n Checkbox,\n Box,\n Button,\n Divider,\n Flex,\n IconButton,\n Typography,\n VisuallyHidden,\n Grid,\n} from '@strapi/design-system';\nimport { GridFour as GridIcon, List, Pencil, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { localStorageKeys, viewOptions } from '../../../constants';\nimport { useFolder } from '../../../hooks/useFolder';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\nimport {\n getBreadcrumbDataCM,\n toSingularTypes,\n getTrad,\n getAllowedFiles,\n BreadcrumbDataFolder,\n AllowedFiles,\n} from '../../../utils';\nimport { AssetGridList } from '../../AssetGridList/AssetGridList';\nimport { Breadcrumbs } from '../../Breadcrumbs/Breadcrumbs';\nimport { EmptyAssets } from '../../EmptyAssets/EmptyAssets';\nimport { FolderCard } from '../../FolderCard/FolderCard/FolderCard';\nimport { FolderCardBody } from '../../FolderCard/FolderCardBody/FolderCardBody';\nimport { FolderCardBodyAction } from '../../FolderCard/FolderCardBodyAction/FolderCardBodyAction';\nimport { FolderGridList } from '../../FolderGridList/FolderGridList';\nimport { SortPicker } from '../../SortPicker/SortPicker';\nimport { TableList, FolderRow, FileRow } from '../../TableList/TableList';\n\nimport { Filters, FilterStructure as ImportedFilterStructure } from './Filters';\nimport { PageSize } from './PageSize';\nimport { PaginationFooter } from './PaginationFooter/PaginationFooter';\nimport { SearchAsset } from './SearchAsset/SearchAsset';\nimport { isSelectable } from './utils/isSelectable';\n\nimport type { File, Query, FilterCondition } from '../../../../../shared/contracts/files';\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../../AssetCard/AssetCard';\n\nconst TypographyMaxWidth = styled(Typography)`\n max-width: 100%;\n`;\n\nconst ActionContainer = styled(Box)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n | string\n | NumberKeyedObject\n | Record<string, string | NumberKeyedObject>\n | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\nexport type Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FolderWithType extends Omit<Folder, 'children' | 'files'> {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n children?: Folder['children'] & {\n count: number;\n };\n files?: Folder['files'] & {\n count: number;\n };\n}\n\nexport interface FileWithType extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface BrowseStepProps {\n allowedTypes?: AllowedTypes[];\n assets: File[];\n canCreate: boolean;\n canRead: boolean;\n folders?: FolderWithType[];\n multiple?: boolean;\n onAddAsset: () => void;\n onChangeFilters: (filters: FilterCondition<string>[] | Filter[]) => void;\n onChangeFolder: (id: number, path?: string) => void;\n onChangePage: (page: number) => void;\n onChangePageSize: (value: number) => void;\n onChangeSort: (value: Query['sort'] | string) => void;\n onChangeSearch: (_q?: Query['_q'] | null) => void;\n onEditAsset: ((asset: FileWithType) => void) | null;\n onEditFolder: ((folder: FolderRow) => void) | null;\n onSelectAsset: (element: FileRow | FolderRow) => void;\n onSelectAllAsset?: (checked: boolean | string, rows?: FolderRow[] | FileRow[]) => void;\n queryObject: Query;\n pagination: { pageCount: number };\n selectedAssets: FileWithType[] | FolderWithType[];\n}\n\nexport const BrowseStep = ({\n allowedTypes = [],\n assets: rawAssets,\n canCreate,\n canRead,\n folders = [],\n multiple = false,\n onAddAsset,\n onChangeFilters,\n onChangePage,\n onChangePageSize,\n onChangeSearch,\n onChangeSort,\n onChangeFolder,\n onEditAsset,\n onEditFolder,\n onSelectAllAsset,\n onSelectAsset,\n pagination,\n queryObject,\n selectedAssets,\n}: BrowseStepProps) => {\n const { formatMessage } = useIntl();\n const [view, setView] = usePersistentState(localStorageKeys.modalView, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n const { data: currentFolder, isLoading: isCurrentFolderLoading } = useFolder(\n queryObject?.folder as number | null | undefined,\n {\n enabled: canRead && !!queryObject?.folder,\n }\n );\n\n const singularTypes = toSingularTypes(allowedTypes);\n const assets = rawAssets.map((asset) => ({\n ...asset,\n isSelectable: isSelectable(singularTypes, asset?.mime),\n type: 'asset',\n }));\n\n const breadcrumbs = !isCurrentFolderLoading\n ? getBreadcrumbDataCM(currentFolder as BreadcrumbDataFolder)\n : undefined;\n\n const allAllowedAsset = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n const areAllAssetSelected =\n allAllowedAsset.length > 0 &&\n selectedAssets.length > 0 &&\n allAllowedAsset.every(\n (asset) => selectedAssets.findIndex((currAsset) => currAsset.id === asset.id) !== -1\n );\n const hasSomeAssetSelected = allAllowedAsset.some(\n (asset) => selectedAssets.findIndex((currAsset) => currAsset.id === asset.id) !== -1\n );\n const isSearching = !!queryObject?._q;\n const isFiltering = !!queryObject?.filters?.$and?.length && queryObject.filters.$and.length > 0;\n const isSearchingOrFiltering = isSearching || isFiltering;\n const assetCount = assets.length;\n const folderCount = folders.length;\n const handleClickFolderCard = (...args: Parameters<typeof onChangeFolder>) => {\n // Search query will always fetch the same results\n // we remove it here to allow navigating in a folder and see the result of this navigation\n onChangeSearch('');\n onChangeFolder(...args);\n };\n\n return (\n <Box>\n {onSelectAllAsset && (\n <Box paddingBottom={4}>\n <Flex justifyContent=\"space-between\" alignItems=\"flex-start\">\n {(assetCount > 0 || folderCount > 0 || isFiltering) && (\n <Flex gap={2} wrap=\"wrap\">\n {multiple && isGridView && (\n <Flex\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n height=\"3.2rem\"\n >\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all assets',\n })}\n checked={\n !areAllAssetSelected && hasSomeAssetSelected\n ? 'indeterminate'\n : areAllAssetSelected\n }\n onCheckedChange={onSelectAllAsset}\n />\n </Flex>\n )}\n {isGridView && <SortPicker onChangeSort={onChangeSort} value={queryObject?.sort} />}\n <Filters\n appliedFilters={queryObject?.filters?.$and as ImportedFilterStructure[]}\n onChangeFilters={onChangeFilters}\n />\n </Flex>\n )}\n\n {(assetCount > 0 || folderCount > 0 || isSearching) && (\n <Flex marginLeft=\"auto\" shrink={0} gap={2}>\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n label={\n isGridView\n ? formatMessage({\n id: 'view-switch.list',\n defaultMessage: 'List View',\n })\n : formatMessage({\n id: 'view-switch.grid',\n defaultMessage: 'Grid View',\n })\n }\n onClick={() => setView(isGridView ? viewOptions.LIST : viewOptions.GRID)}\n >\n {isGridView ? <List /> : <GridIcon />}\n </IconButton>\n </ActionContainer>\n <SearchAsset onChangeSearch={onChangeSearch} queryValue={queryObject._q || ''} />\n </Flex>\n )}\n </Flex>\n </Box>\n )}\n\n {canRead && breadcrumbs?.length && breadcrumbs.length > 0 && currentFolder && (\n <Box paddingTop={3}>\n <Breadcrumbs\n onChangeFolder={onChangeFolder}\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs as BreadcrumbDataFolder[]}\n currentFolderId={queryObject?.folder as number | undefined}\n />\n </Box>\n )}\n\n {assetCount === 0 && folderCount === 0 && (\n <Box paddingBottom={6}>\n <EmptyAssets\n size=\"S\"\n count={6}\n action={\n canCreate &&\n !isFiltering &&\n !isSearching && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={\n // eslint-disable-next-line no-nested-ternary\n isSearchingOrFiltering\n ? formatMessage({\n id: getTrad('list.assets-empty.title-withSearch'),\n defaultMessage: 'There are no assets with the applied filters',\n })\n : canCreate && !isSearching\n ? formatMessage({\n id: getTrad('list.assets.empty'),\n defaultMessage: 'Upload your first assets...',\n })\n : formatMessage({\n id: getTrad('list.assets.empty.no-permissions'),\n defaultMessage: 'The asset list is empty',\n })\n }\n />\n </Box>\n )}\n\n {!isGridView && (folderCount > 0 || assetCount > 0) && (\n <TableList\n allowedTypes={allowedTypes}\n assetCount={assetCount}\n folderCount={folderCount}\n indeterminate={!areAllAssetSelected && hasSomeAssetSelected}\n isFolderSelectionAllowed={false}\n onChangeSort={onChangeSort}\n onChangeFolder={handleClickFolderCard}\n onEditAsset={onEditAsset}\n onEditFolder={onEditFolder}\n onSelectOne={onSelectAsset}\n onSelectAll={onSelectAllAsset!}\n rows={\n [...folders.map((folder) => ({ ...folder, type: 'folder' })), ...assets] as\n | FolderRow[]\n | FileRow[]\n }\n selected={selectedAssets}\n shouldDisableBulkSelect={!multiple}\n sortQuery={queryObject?.sort ?? ''}\n />\n )}\n\n {isGridView && (\n <>\n {folderCount > 0 && (\n <FolderGridList\n title={\n (((isSearchingOrFiltering && assetCount > 0) || !isSearchingOrFiltering) &&\n formatMessage(\n {\n id: getTrad('list.folders.title'),\n defaultMessage: 'Folders ({count})',\n },\n { count: folderCount }\n )) ||\n ''\n }\n >\n {folders.map((folder) => {\n return (\n <Grid.Item\n col={3}\n key={`folder-${folder.id}`}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FolderCard\n ariaLabel={folder.name}\n id={`folder-${folder.id}`}\n onClick={() => handleClickFolderCard(folder.id, folder.path)}\n cardActions={\n onEditFolder && (\n <IconButton\n withTooltip={false}\n label={formatMessage({\n id: getTrad('list.folder.edit'),\n defaultMessage: 'Edit folder',\n })}\n onClick={() => onEditFolder(folder)}\n >\n <Pencil />\n </IconButton>\n )\n }\n >\n <FolderCardBody>\n <FolderCardBodyAction\n onClick={() => handleClickFolderCard(folder.id, folder.path)}\n >\n <Flex tag=\"h2\" direction=\"column\" alignItems=\"start\" maxWidth=\"100%\">\n <TypographyMaxWidth\n fontWeight=\"semiBold\"\n ellipsis\n textColor=\"neutral800\"\n >\n {folder.name}\n {/* VisuallyHidden dash here allows to separate folder title and count informations\n for voice reading structure purpose */}\n <VisuallyHidden>-</VisuallyHidden>\n </TypographyMaxWidth>\n <TypographyMaxWidth\n tag=\"span\"\n textColor=\"neutral600\"\n variant=\"pi\"\n ellipsis\n >\n {formatMessage(\n {\n id: getTrad('list.folder.subtitle'),\n defaultMessage:\n '{folderCount, plural, =0 {# folder} one {# folder} other {# folders}}, {filesCount, plural, =0 {# asset} one {# asset} other {# assets}}',\n },\n {\n folderCount: folder.children?.count,\n filesCount: folder.files?.count,\n }\n )}\n </TypographyMaxWidth>\n </Flex>\n </FolderCardBodyAction>\n </FolderCardBody>\n </FolderCard>\n </Grid.Item>\n );\n })}\n </FolderGridList>\n )}\n\n {assetCount > 0 && folderCount > 0 && (\n <Box paddingTop={6}>\n <Divider />\n </Box>\n )}\n\n {assetCount > 0 && (\n <Box paddingTop={6}>\n <AssetGridList\n allowedTypes={allowedTypes}\n size=\"S\"\n assets={assets}\n onSelectAsset={onSelectAsset}\n selectedAssets={selectedAssets as FileWithType[]}\n onEditAsset={onEditAsset!}\n title={\n ((!isSearchingOrFiltering || (isSearchingOrFiltering && folderCount > 0)) &&\n queryObject.page === 1 &&\n formatMessage(\n {\n id: getTrad('list.assets.title'),\n defaultMessage: 'Assets ({count})',\n },\n { count: assetCount }\n )) ||\n ''\n }\n />\n </Box>\n )}\n </>\n )}\n\n {pagination.pageCount > 0 && (\n <Flex justifyContent=\"space-between\" paddingTop={4}>\n <PageSize\n pageSize={queryObject.pageSize! as number}\n onChangePageSize={onChangePageSize}\n />\n <PaginationFooter\n activePage={queryObject.page as number}\n onChangePage={onChangePage}\n pagination={pagination}\n />\n </Flex>\n )}\n </Box>\n );\n};\n"],"names":["TypographyMaxWidth","styled","Typography","ActionContainer","Box","theme","colors","neutral500","BrowseStep","allowedTypes","assets","rawAssets","canCreate","canRead","folders","multiple","onAddAsset","onChangeFilters","onChangePage","onChangePageSize","onChangeSearch","onChangeSort","onChangeFolder","onEditAsset","onEditFolder","onSelectAllAsset","onSelectAsset","pagination","queryObject","selectedAssets","formatMessage","useIntl","view","setView","usePersistentState","localStorageKeys","modalView","viewOptions","GRID","isGridView","data","currentFolder","isLoading","isCurrentFolderLoading","useFolder","folder","enabled","singularTypes","toSingularTypes","map","asset","isSelectable","mime","type","breadcrumbs","getBreadcrumbDataCM","undefined","allAllowedAsset","getAllowedFiles","areAllAssetSelected","length","every","findIndex","currAsset","id","hasSomeAssetSelected","some","isSearching","_q","isFiltering","filters","$and","isSearchingOrFiltering","assetCount","folderCount","handleClickFolderCard","args","_jsxs","_jsx","paddingBottom","Flex","justifyContent","alignItems","gap","wrap","paddingLeft","paddingRight","background","hasRadius","borderColor","height","Checkbox","aria-label","getTrad","defaultMessage","checked","onCheckedChange","SortPicker","value","sort","Filters","appliedFilters","marginLeft","shrink","paddingTop","IconButton","label","onClick","LIST","List","GridIcon","SearchAsset","queryValue","Breadcrumbs","currentFolderId","EmptyAssets","size","count","action","Button","variant","startIcon","Plus","content","TableList","indeterminate","isFolderSelectionAllowed","onSelectOne","onSelectAll","rows","selected","shouldDisableBulkSelect","sortQuery","_Fragment","FolderGridList","title","Grid","Item","col","direction","FolderCard","ariaLabel","name","path","cardActions","withTooltip","Pencil","FolderCardBody","FolderCardBodyAction","tag","maxWidth","fontWeight","ellipsis","textColor","VisuallyHidden","children","filesCount","files","Divider","AssetGridList","page","pageCount","PageSize","pageSize","PaginationFooter","activePage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BrowseStep.mjs","sources":["../../../../../admin/src/components/AssetDialog/BrowseStep/BrowseStep.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport {\n Checkbox,\n Box,\n Button,\n Divider,\n Flex,\n IconButton,\n Typography,\n VisuallyHidden,\n Grid,\n} from '@strapi/design-system';\nimport { GridFour as GridIcon, List, Pencil, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { localStorageKeys, viewOptions } from '../../../constants';\nimport { useFolder } from '../../../hooks/useFolder';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\nimport {\n getBreadcrumbDataCM,\n toSingularTypes,\n getTrad,\n getAllowedFiles,\n BreadcrumbDataFolder,\n AllowedFiles,\n} from '../../../utils';\nimport { AssetGridList } from '../../AssetGridList/AssetGridList';\nimport { Breadcrumbs } from '../../Breadcrumbs/Breadcrumbs';\nimport { EmptyAssets } from '../../EmptyAssets/EmptyAssets';\nimport { FolderCard } from '../../FolderCard/FolderCard/FolderCard';\nimport { FolderCardBody } from '../../FolderCard/FolderCardBody/FolderCardBody';\nimport { FolderCardBodyAction } from '../../FolderCard/FolderCardBodyAction/FolderCardBodyAction';\nimport { FolderGridList } from '../../FolderGridList/FolderGridList';\nimport { SortPicker } from '../../SortPicker/SortPicker';\nimport { TableList, FolderRow, FileRow } from '../../TableList/TableList';\n\nimport { Filters, FilterStructure as ImportedFilterStructure } from './Filters';\nimport { PageSize } from './PageSize';\nimport { PaginationFooter } from './PaginationFooter/PaginationFooter';\nimport { SearchAsset } from './SearchAsset/SearchAsset';\nimport { isSelectable } from './utils/isSelectable';\n\nimport type { File, Query, FilterCondition } from '../../../../../shared/contracts/files';\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../../AssetCard/AssetCard';\n\nconst TypographyMaxWidth = styled(Typography)`\n max-width: 100%;\n`;\n\nconst ActionContainer = styled(Box)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n | string\n | NumberKeyedObject\n | Record<string, string | NumberKeyedObject>\n | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\nexport type Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FolderWithType extends Omit<Folder, 'children' | 'files'> {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n children?: Folder['children'] & {\n count: number;\n };\n files?: Folder['files'] & {\n count: number;\n };\n}\n\nexport interface FileWithType extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface BrowseStepProps {\n allowedTypes?: AllowedTypes[];\n assets: File[];\n canCreate: boolean;\n canRead: boolean;\n folders?: FolderWithType[];\n multiple?: boolean;\n onAddAsset: () => void;\n onChangeFilters: (filters: FilterCondition<string>[] | Filter[]) => void;\n onChangeFolder: (id: number, path?: string) => void;\n onChangePage: (page: number) => void;\n onChangePageSize: (value: number) => void;\n onChangeSort: (value: Query['sort'] | string) => void;\n onChangeSearch: (_q?: Query['_q'] | null) => void;\n onEditAsset: ((asset: FileWithType) => void) | null;\n onEditFolder: ((folder: FolderRow) => void) | null;\n onSelectAsset: (element: FileRow | FolderRow) => void;\n onSelectAllAsset?: (checked: boolean | string, rows?: FolderRow[] | FileRow[]) => void;\n queryObject: Query;\n pagination: { pageCount: number };\n selectedAssets: FileWithType[] | FolderWithType[];\n}\n\nexport const BrowseStep = ({\n allowedTypes = [],\n assets: rawAssets,\n canCreate,\n canRead,\n folders = [],\n multiple = false,\n onAddAsset,\n onChangeFilters,\n onChangePage,\n onChangePageSize,\n onChangeSearch,\n onChangeSort,\n onChangeFolder,\n onEditAsset,\n onEditFolder,\n onSelectAllAsset,\n onSelectAsset,\n pagination,\n queryObject,\n selectedAssets,\n}: BrowseStepProps) => {\n const { formatMessage } = useIntl();\n const [view, setView] = usePersistentState(localStorageKeys.modalView, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n const { data: currentFolder, isLoading: isCurrentFolderLoading } = useFolder(\n queryObject?.folder as number | null | undefined,\n {\n enabled: canRead && !!queryObject?.folder,\n }\n );\n\n const singularTypes = toSingularTypes(allowedTypes);\n const assets = rawAssets.map((asset) => ({\n ...asset,\n isSelectable: isSelectable(singularTypes, asset?.mime),\n type: 'asset',\n }));\n\n const breadcrumbs = !isCurrentFolderLoading\n ? getBreadcrumbDataCM(currentFolder as BreadcrumbDataFolder)\n : undefined;\n\n const allAllowedAsset = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n const areAllAssetSelected =\n allAllowedAsset.length > 0 &&\n selectedAssets.length > 0 &&\n allAllowedAsset.every(\n (asset) => selectedAssets.findIndex((currAsset) => currAsset.id === asset.id) !== -1\n );\n const hasSomeAssetSelected = allAllowedAsset.some(\n (asset) => selectedAssets.findIndex((currAsset) => currAsset.id === asset.id) !== -1\n );\n const isSearching = !!queryObject?._q;\n const isFiltering = !!queryObject?.filters?.$and?.length && queryObject.filters.$and.length > 0;\n const isSearchingOrFiltering = isSearching || isFiltering;\n const assetCount = assets.length;\n const folderCount = folders.length;\n const handleClickFolderCard = (...args: Parameters<typeof onChangeFolder>) => {\n // Search query will always fetch the same results\n // we remove it here to allow navigating in a folder and see the result of this navigation\n onChangeSearch('');\n onChangeFolder(...args);\n };\n\n return (\n <Box>\n {onSelectAllAsset && (\n <Box paddingBottom={4}>\n <Flex justifyContent=\"space-between\" alignItems=\"flex-start\">\n {(assetCount > 0 || folderCount > 0 || isFiltering) && (\n <Flex gap={2} wrap=\"wrap\">\n {multiple && isGridView && (\n <Flex\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n height=\"3.2rem\"\n >\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all assets',\n })}\n checked={\n !areAllAssetSelected && hasSomeAssetSelected\n ? 'indeterminate'\n : areAllAssetSelected\n }\n onCheckedChange={onSelectAllAsset}\n />\n </Flex>\n )}\n {isGridView && <SortPicker onChangeSort={onChangeSort} value={queryObject?.sort} />}\n <Filters\n appliedFilters={queryObject?.filters?.$and as ImportedFilterStructure[]}\n onChangeFilters={onChangeFilters}\n />\n </Flex>\n )}\n\n {(assetCount > 0 || folderCount > 0 || isSearching) && (\n <Flex marginLeft=\"auto\" shrink={0} gap={2}>\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n label={\n isGridView\n ? formatMessage({\n id: 'view-switch.list',\n defaultMessage: 'List View',\n })\n : formatMessage({\n id: 'view-switch.grid',\n defaultMessage: 'Grid View',\n })\n }\n onClick={() => setView(isGridView ? viewOptions.LIST : viewOptions.GRID)}\n >\n {isGridView ? <List /> : <GridIcon />}\n </IconButton>\n </ActionContainer>\n <SearchAsset onChangeSearch={onChangeSearch} queryValue={queryObject._q || ''} />\n </Flex>\n )}\n </Flex>\n </Box>\n )}\n\n {canRead && breadcrumbs?.length && breadcrumbs.length > 0 && currentFolder && (\n <Box paddingTop={3}>\n <Breadcrumbs\n onChangeFolder={onChangeFolder}\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs as BreadcrumbDataFolder[]}\n currentFolderId={queryObject?.folder as number | undefined}\n />\n </Box>\n )}\n\n {assetCount === 0 && folderCount === 0 && (\n <Box paddingBottom={6}>\n <EmptyAssets\n size=\"S\"\n count={6}\n action={\n canCreate &&\n !isFiltering &&\n !isSearching && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={\n // eslint-disable-next-line no-nested-ternary\n isSearchingOrFiltering\n ? formatMessage({\n id: getTrad('list.assets-empty.title-withSearch'),\n defaultMessage: 'There are no assets with the applied filters',\n })\n : canCreate && !isSearching\n ? formatMessage({\n id: getTrad('list.assets.empty'),\n defaultMessage: 'Upload your first assets...',\n })\n : formatMessage({\n id: getTrad('list.assets.empty.no-permissions'),\n defaultMessage: 'The asset list is empty',\n })\n }\n />\n </Box>\n )}\n\n {!isGridView && (folderCount > 0 || assetCount > 0) && (\n <TableList\n allowedTypes={allowedTypes}\n assetCount={assetCount}\n folderCount={folderCount}\n indeterminate={!areAllAssetSelected && hasSomeAssetSelected}\n isFolderSelectionAllowed={false}\n onChangeSort={onChangeSort}\n onChangeFolder={handleClickFolderCard}\n onEditAsset={onEditAsset}\n onEditFolder={onEditFolder}\n onSelectOne={onSelectAsset}\n onSelectAll={onSelectAllAsset!}\n rows={\n [...folders.map((folder) => ({ ...folder, type: 'folder' })), ...assets] as\n | FolderRow[]\n | FileRow[]\n }\n selected={selectedAssets}\n shouldDisableBulkSelect={!multiple}\n sortQuery={queryObject?.sort ?? ''}\n />\n )}\n\n {isGridView && (\n <>\n {folderCount > 0 && (\n <FolderGridList\n title={\n (((isSearchingOrFiltering && assetCount > 0) || !isSearchingOrFiltering) &&\n formatMessage(\n {\n id: getTrad('list.folders.title'),\n defaultMessage: 'Folders ({count})',\n },\n { count: folderCount }\n )) ||\n ''\n }\n >\n {folders.map((folder) => {\n return (\n <Grid.Item\n col={3}\n key={`folder-${folder.id}`}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FolderCard\n ariaLabel={folder.name}\n id={`folder-${folder.id}`}\n onClick={() => handleClickFolderCard(folder.id, folder.path)}\n cardActions={\n onEditFolder && (\n <IconButton\n withTooltip={false}\n label={formatMessage({\n id: getTrad('list.folder.edit'),\n defaultMessage: 'Edit folder',\n })}\n onClick={() => onEditFolder(folder)}\n >\n <Pencil />\n </IconButton>\n )\n }\n >\n <FolderCardBody>\n <FolderCardBodyAction\n onClick={() => handleClickFolderCard(folder.id, folder.path)}\n >\n <Flex tag=\"h2\" direction=\"column\" alignItems=\"start\" maxWidth=\"100%\">\n <TypographyMaxWidth\n fontWeight=\"semiBold\"\n ellipsis\n textColor=\"neutral800\"\n >\n {folder.name}\n {/* VisuallyHidden dash here allows to separate folder title and count informations\n for voice reading structure purpose */}\n <VisuallyHidden>-</VisuallyHidden>\n </TypographyMaxWidth>\n <TypographyMaxWidth\n tag=\"span\"\n textColor=\"neutral600\"\n variant=\"pi\"\n ellipsis\n >\n {formatMessage(\n {\n id: getTrad('list.folder.subtitle'),\n defaultMessage:\n '{folderCount, plural, =0 {# folder} one {# folder} other {# folders}}, {filesCount, plural, =0 {# asset} one {# asset} other {# assets}}',\n },\n {\n folderCount: folder.children?.count,\n filesCount: folder.files?.count,\n }\n )}\n </TypographyMaxWidth>\n </Flex>\n </FolderCardBodyAction>\n </FolderCardBody>\n </FolderCard>\n </Grid.Item>\n );\n })}\n </FolderGridList>\n )}\n\n {assetCount > 0 && folderCount > 0 && (\n <Box paddingTop={6}>\n <Divider />\n </Box>\n )}\n\n {assetCount > 0 && (\n <Box paddingTop={6}>\n <AssetGridList\n allowedTypes={allowedTypes}\n size=\"S\"\n assets={assets}\n onSelectAsset={onSelectAsset}\n selectedAssets={selectedAssets as FileWithType[]}\n onEditAsset={onEditAsset!}\n title={\n ((!isSearchingOrFiltering || (isSearchingOrFiltering && folderCount > 0)) &&\n queryObject.page === 1 &&\n formatMessage(\n {\n id: getTrad('list.assets.title'),\n defaultMessage: 'Assets ({count})',\n },\n { count: assetCount }\n )) ||\n ''\n }\n />\n </Box>\n )}\n </>\n )}\n\n {pagination.pageCount > 0 && (\n <Flex justifyContent=\"space-between\" paddingTop={4} position=\"relative\" zIndex={1}>\n <PageSize\n pageSize={queryObject.pageSize! as number}\n onChangePageSize={onChangePageSize}\n />\n <PaginationFooter\n activePage={queryObject.page as number}\n onChangePage={onChangePage}\n pagination={pagination}\n />\n </Flex>\n )}\n </Box>\n );\n};\n"],"names":["TypographyMaxWidth","styled","Typography","ActionContainer","Box","theme","colors","neutral500","BrowseStep","allowedTypes","assets","rawAssets","canCreate","canRead","folders","multiple","onAddAsset","onChangeFilters","onChangePage","onChangePageSize","onChangeSearch","onChangeSort","onChangeFolder","onEditAsset","onEditFolder","onSelectAllAsset","onSelectAsset","pagination","queryObject","selectedAssets","formatMessage","useIntl","view","setView","usePersistentState","localStorageKeys","modalView","viewOptions","GRID","isGridView","data","currentFolder","isLoading","isCurrentFolderLoading","useFolder","folder","enabled","singularTypes","toSingularTypes","map","asset","isSelectable","mime","type","breadcrumbs","getBreadcrumbDataCM","undefined","allAllowedAsset","getAllowedFiles","areAllAssetSelected","length","every","findIndex","currAsset","id","hasSomeAssetSelected","some","isSearching","_q","isFiltering","filters","$and","isSearchingOrFiltering","assetCount","folderCount","handleClickFolderCard","args","_jsxs","_jsx","paddingBottom","Flex","justifyContent","alignItems","gap","wrap","paddingLeft","paddingRight","background","hasRadius","borderColor","height","Checkbox","aria-label","getTrad","defaultMessage","checked","onCheckedChange","SortPicker","value","sort","Filters","appliedFilters","marginLeft","shrink","paddingTop","IconButton","label","onClick","LIST","List","GridIcon","SearchAsset","queryValue","Breadcrumbs","currentFolderId","EmptyAssets","size","count","action","Button","variant","startIcon","Plus","content","TableList","indeterminate","isFolderSelectionAllowed","onSelectOne","onSelectAll","rows","selected","shouldDisableBulkSelect","sortQuery","_Fragment","FolderGridList","title","Grid","Item","col","direction","FolderCard","ariaLabel","name","path","cardActions","withTooltip","Pencil","FolderCardBody","FolderCardBodyAction","tag","maxWidth","fontWeight","ellipsis","textColor","VisuallyHidden","children","filesCount","files","Divider","AssetGridList","page","pageCount","position","zIndex","PageSize","pageSize","PaginationFooter","activePage"],"mappings":"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"}
|
|
@@ -41,20 +41,9 @@ const STEPS = {
|
|
|
41
41
|
AssetUpload: 'UploadAsset',
|
|
42
42
|
FolderCreate: 'FolderCreate'
|
|
43
43
|
};
|
|
44
|
-
const MediaLibraryInput = /*#__PURE__*/ React__namespace.forwardRef(({ attribute: { allowedTypes =
|
|
45
|
-
'videos',
|
|
46
|
-
'files',
|
|
47
|
-
'images',
|
|
48
|
-
'audios'
|
|
49
|
-
], multiple = false } = {}, label, hint, disabled = false, labelAction = undefined, name, required = false }, forwardedRef)=>{
|
|
44
|
+
const MediaLibraryInput = /*#__PURE__*/ React__namespace.forwardRef(({ attribute: { allowedTypes = null, multiple = false } = {}, label, hint, disabled = false, labelAction = undefined, name, required = false }, forwardedRef)=>{
|
|
50
45
|
const { formatMessage } = reactIntl.useIntl();
|
|
51
46
|
const { onChange, value, error } = strapiAdmin.useField(name);
|
|
52
|
-
const fieldAllowedTypes = allowedTypes || [
|
|
53
|
-
'files',
|
|
54
|
-
'images',
|
|
55
|
-
'videos',
|
|
56
|
-
'audios'
|
|
57
|
-
];
|
|
58
47
|
const [uploadedFiles, setUploadedFiles] = React__namespace.useState([]);
|
|
59
48
|
const [step, setStep] = React__namespace.useState(undefined);
|
|
60
49
|
const [selectedIndex, setSelectedIndex] = React__namespace.useState(0);
|
|
@@ -110,7 +99,7 @@ const MediaLibraryInput = /*#__PURE__*/ React__namespace.forwardRef(({ attribute
|
|
|
110
99
|
onChange(name, multiple ? nextSelectedAssets : nextSelectedAssets[0]);
|
|
111
100
|
};
|
|
112
101
|
const validateAssetsTypes = (assets, callback)=>{
|
|
113
|
-
const allowedAssets = getAllowedFiles.getAllowedFiles(
|
|
102
|
+
const allowedAssets = getAllowedFiles.getAllowedFiles(allowedTypes, assets);
|
|
114
103
|
if (allowedAssets.length > 0) {
|
|
115
104
|
callback(allowedAssets);
|
|
116
105
|
} else {
|
|
@@ -121,7 +110,7 @@ const MediaLibraryInput = /*#__PURE__*/ React__namespace.forwardRef(({ attribute
|
|
|
121
110
|
id: getTrad.getTrad('input.notification.not-supported'),
|
|
122
111
|
defaultMessage: `You can't upload this type of file.`
|
|
123
112
|
}, {
|
|
124
|
-
fileTypes:
|
|
113
|
+
fileTypes: (allowedTypes ?? []).join(',')
|
|
125
114
|
})
|
|
126
115
|
});
|
|
127
116
|
}
|
|
@@ -149,7 +138,7 @@ const MediaLibraryInput = /*#__PURE__*/ React__namespace.forwardRef(({ attribute
|
|
|
149
138
|
};
|
|
150
139
|
let initiallySelectedAssets = selectedAssets;
|
|
151
140
|
if (uploadedFiles.length > 0) {
|
|
152
|
-
const allowedUploadedFiles = getAllowedFiles.getAllowedFiles(
|
|
141
|
+
const allowedUploadedFiles = getAllowedFiles.getAllowedFiles(allowedTypes, uploadedFiles);
|
|
153
142
|
initiallySelectedAssets = multiple ? [
|
|
154
143
|
...allowedUploadedFiles,
|
|
155
144
|
...selectedAssets
|
|
@@ -179,7 +168,7 @@ const MediaLibraryInput = /*#__PURE__*/ React__namespace.forwardRef(({ attribute
|
|
|
179
168
|
trackedLocation: "content-manager"
|
|
180
169
|
}),
|
|
181
170
|
step === STEPS.AssetSelect && /*#__PURE__*/ jsxRuntime.jsx(AssetDialog.AssetDialog, {
|
|
182
|
-
allowedTypes:
|
|
171
|
+
allowedTypes: allowedTypes,
|
|
183
172
|
initiallySelectedAssets: initiallySelectedAssets,
|
|
184
173
|
folderId: folderId,
|
|
185
174
|
onClose: ()=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaLibraryInput.js","sources":["../../../../admin/src/components/MediaLibraryInput/MediaLibraryInput.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useField, useNotification } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad, getAllowedFiles, AllowedFiles } from '../../utils';\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog, Asset } from '../UploadAssetDialog/UploadAssetDialog';\n\nimport { CarouselAssets, CarouselAssetsProps, FileWithoutIdHash } from './Carousel/CarouselAssets';\n\nimport type { File } from '../../../../shared/contracts/files';\ntype AllowedTypes = 'files' | 'images' | 'videos' | 'audios';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nexport interface MediaLibraryInputProps {\n required?: boolean;\n name: string;\n labelAction?: React.ReactNode;\n label?: string;\n hint?: string;\n disabled?: boolean;\n attribute?: {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n };\n}\n\nexport const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>(\n (\n {\n attribute: { allowedTypes = ['videos', 'files', 'images', 'audios'], multiple = false } = {},\n label,\n hint,\n disabled = false,\n labelAction = undefined,\n name,\n required = false,\n },\n forwardedRef\n ) => {\n const { formatMessage } = useIntl();\n const { onChange, value, error } = useField(name);\n const fieldAllowedTypes = allowedTypes || ['files', 'images', 'videos', 'audios'];\n const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]);\n const [step, setStep] = React.useState<string | undefined>(undefined);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [droppedAssets, setDroppedAssets] = React.useState<AllowedFiles[]>();\n const [folderId, setFolderId] = React.useState<number | null>(null);\n const { toggleNotification } = useNotification();\n\n React.useEffect(() => {\n // Clear the uploaded files on close\n if (step === undefined) {\n setUploadedFiles([]);\n }\n }, [step]);\n\n let selectedAssets: File[] = [];\n\n if (Array.isArray(value)) {\n selectedAssets = value;\n } else if (value) {\n selectedAssets = [value];\n }\n\n const handleValidation = (nextSelectedAssets: File[]) => {\n const value = multiple ? nextSelectedAssets : nextSelectedAssets[0];\n onChange(name, value);\n setStep(undefined);\n };\n\n const handleDeleteAssetFromMediaLibrary = () => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter(\n (_, assetIndex) => assetIndex !== selectedIndex\n );\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n const value = nextValue;\n onChange(name, value);\n\n setSelectedIndex(0);\n };\n\n const handleDeleteAsset = (asset: File) => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter((prevAsset) => prevAsset.id !== asset.id);\n\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n onChange(name, nextValue);\n\n setSelectedIndex(0);\n };\n\n const handleAssetEdit = (asset: File) => {\n const nextSelectedAssets = selectedAssets.map((prevAsset) =>\n prevAsset.id === asset.id ? asset : prevAsset\n );\n\n onChange(name, multiple ? nextSelectedAssets : nextSelectedAssets[0]);\n };\n\n const validateAssetsTypes = (\n assets: FileWithoutIdHash[] | Asset[],\n callback: (assets?: AllowedFiles[], error?: string) => void\n ) => {\n const allowedAssets = getAllowedFiles(fieldAllowedTypes, assets as AllowedFiles[]);\n\n if (allowedAssets.length > 0) {\n callback(allowedAssets);\n } else {\n toggleNotification({\n type: 'danger',\n timeout: 4000,\n message: formatMessage(\n {\n id: getTrad('input.notification.not-supported'),\n defaultMessage: `You can't upload this type of file.`,\n },\n {\n fileTypes: fieldAllowedTypes.join(','),\n }\n ),\n });\n }\n };\n\n const handleAssetDrop = (assets: FileWithoutIdHash[]) => {\n validateAssetsTypes(assets, (allowedAssets?: AllowedFiles[]) => {\n setDroppedAssets(allowedAssets);\n setStep(STEPS.AssetUpload);\n });\n };\n\n if (multiple && selectedAssets.length > 0) {\n label = `${label} (${selectedIndex + 1} / ${selectedAssets.length})`;\n }\n\n const handleNext = () => {\n setSelectedIndex((current) => (current < selectedAssets.length - 1 ? current + 1 : 0));\n };\n\n const handlePrevious = () => {\n setSelectedIndex((current) => (current > 0 ? current - 1 : selectedAssets.length - 1));\n };\n\n const handleFilesUploadSucceeded = (uploadedFiles: Asset[] | File[]) => {\n setUploadedFiles((prev) => [...prev, ...uploadedFiles]);\n };\n\n let initiallySelectedAssets = selectedAssets;\n\n if (uploadedFiles.length > 0) {\n const allowedUploadedFiles = getAllowedFiles(\n fieldAllowedTypes,\n uploadedFiles as AllowedFiles[]\n );\n\n initiallySelectedAssets = multiple\n ? [...allowedUploadedFiles, ...selectedAssets]\n : [allowedUploadedFiles[0]];\n }\n\n return (\n <>\n <CarouselAssets\n ref={forwardedRef}\n assets={selectedAssets}\n disabled={disabled}\n label={label!}\n labelAction={labelAction}\n onDeleteAsset={handleDeleteAsset}\n onDeleteAssetFromMediaLibrary={handleDeleteAssetFromMediaLibrary}\n onAddAsset={() => setStep(STEPS.AssetSelect)}\n onDropAsset={handleAssetDrop}\n onEditAsset={handleAssetEdit}\n onNext={handleNext}\n onPrevious={handlePrevious}\n error={error}\n hint={hint}\n required={required}\n selectedAssetIndex={selectedIndex}\n trackedLocation=\"content-manager\"\n />\n\n {step === STEPS.AssetSelect && (\n <AssetDialog\n allowedTypes={fieldAllowedTypes as AllowedTypes[]}\n initiallySelectedAssets={initiallySelectedAssets}\n folderId={folderId}\n onClose={() => {\n setStep(undefined);\n setFolderId(null);\n }}\n open={step === STEPS.AssetSelect}\n onValidate={handleValidation}\n multiple={multiple}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folder) => setFolderId(folder)}\n trackedLocation=\"content-manager\"\n />\n )}\n\n {step === STEPS.AssetUpload && (\n <UploadAssetDialog\n open={step === STEPS.AssetUpload}\n onClose={() => setStep(STEPS.AssetSelect)}\n initialAssetsToAdd={droppedAssets as Asset[]}\n addUploadedFiles={handleFilesUploadSucceeded}\n trackedLocation=\"content-manager\"\n folderId={folderId}\n validateAssetsTypes={validateAssetsTypes}\n />\n )}\n\n {step === STEPS.FolderCreate && (\n <EditFolderDialog\n open={step === STEPS.FolderCreate}\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n )}\n </>\n );\n }\n);\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","MediaLibraryInput","React","forwardRef","attribute","allowedTypes","multiple","label","hint","disabled","labelAction","undefined","name","required","forwardedRef","formatMessage","useIntl","onChange","value","error","useField","fieldAllowedTypes","uploadedFiles","setUploadedFiles","useState","step","setStep","selectedIndex","setSelectedIndex","droppedAssets","setDroppedAssets","folderId","setFolderId","toggleNotification","useNotification","useEffect","selectedAssets","Array","isArray","handleValidation","nextSelectedAssets","handleDeleteAssetFromMediaLibrary","nextValue","filter","_","assetIndex","length","handleDeleteAsset","asset","prevAsset","id","handleAssetEdit","map","validateAssetsTypes","assets","callback","allowedAssets","getAllowedFiles","type","timeout","message","getTrad","defaultMessage","fileTypes","join","handleAssetDrop","handleNext","current","handlePrevious","handleFilesUploadSucceeded","prev","initiallySelectedAssets","allowedUploadedFiles","_jsxs","_Fragment","_jsx","CarouselAssets","ref","onDeleteAsset","onDeleteAssetFromMediaLibrary","onAddAsset","onDropAsset","onEditAsset","onNext","onPrevious","selectedAssetIndex","trackedLocation","AssetDialog","onClose","open","onValidate","onAddFolder","onChangeFolder","folder","UploadAssetDialog","initialAssetsToAdd","addUploadedFiles","EditFolderDialog","parentFolderId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MediaLibraryInput.js","sources":["../../../../admin/src/components/MediaLibraryInput/MediaLibraryInput.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useField, useNotification } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad, getAllowedFiles, AllowedFiles } from '../../utils';\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog, Asset } from '../UploadAssetDialog/UploadAssetDialog';\n\nimport { CarouselAssets, CarouselAssetsProps, FileWithoutIdHash } from './Carousel/CarouselAssets';\n\nimport type { File } from '../../../../shared/contracts/files';\ntype AllowedTypes = 'files' | 'images' | 'videos' | 'audios';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nexport interface MediaLibraryInputProps {\n required?: boolean;\n name: string;\n labelAction?: React.ReactNode;\n label?: string;\n hint?: string;\n disabled?: boolean;\n attribute?: {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n };\n}\n\nexport const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>(\n (\n {\n attribute: { allowedTypes = null, multiple = false } = {},\n label,\n hint,\n disabled = false,\n labelAction = undefined,\n name,\n required = false,\n },\n forwardedRef\n ) => {\n const { formatMessage } = useIntl();\n const { onChange, value, error } = useField(name);\n const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]);\n const [step, setStep] = React.useState<string | undefined>(undefined);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [droppedAssets, setDroppedAssets] = React.useState<AllowedFiles[]>();\n const [folderId, setFolderId] = React.useState<number | null>(null);\n const { toggleNotification } = useNotification();\n\n React.useEffect(() => {\n // Clear the uploaded files on close\n if (step === undefined) {\n setUploadedFiles([]);\n }\n }, [step]);\n\n let selectedAssets: File[] = [];\n\n if (Array.isArray(value)) {\n selectedAssets = value;\n } else if (value) {\n selectedAssets = [value];\n }\n\n const handleValidation = (nextSelectedAssets: File[]) => {\n const value = multiple ? nextSelectedAssets : nextSelectedAssets[0];\n onChange(name, value);\n setStep(undefined);\n };\n\n const handleDeleteAssetFromMediaLibrary = () => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter(\n (_, assetIndex) => assetIndex !== selectedIndex\n );\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n const value = nextValue;\n onChange(name, value);\n\n setSelectedIndex(0);\n };\n\n const handleDeleteAsset = (asset: File) => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter((prevAsset) => prevAsset.id !== asset.id);\n\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n onChange(name, nextValue);\n\n setSelectedIndex(0);\n };\n\n const handleAssetEdit = (asset: File) => {\n const nextSelectedAssets = selectedAssets.map((prevAsset) =>\n prevAsset.id === asset.id ? asset : prevAsset\n );\n\n onChange(name, multiple ? nextSelectedAssets : nextSelectedAssets[0]);\n };\n\n const validateAssetsTypes = (\n assets: FileWithoutIdHash[] | Asset[],\n callback: (assets?: AllowedFiles[], error?: string) => void\n ) => {\n const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n\n if (allowedAssets.length > 0) {\n callback(allowedAssets);\n } else {\n toggleNotification({\n type: 'danger',\n timeout: 4000,\n message: formatMessage(\n {\n id: getTrad('input.notification.not-supported'),\n defaultMessage: `You can't upload this type of file.`,\n },\n {\n fileTypes: (allowedTypes ?? []).join(','),\n }\n ),\n });\n }\n };\n\n const handleAssetDrop = (assets: FileWithoutIdHash[]) => {\n validateAssetsTypes(assets, (allowedAssets?: AllowedFiles[]) => {\n setDroppedAssets(allowedAssets);\n setStep(STEPS.AssetUpload);\n });\n };\n\n if (multiple && selectedAssets.length > 0) {\n label = `${label} (${selectedIndex + 1} / ${selectedAssets.length})`;\n }\n\n const handleNext = () => {\n setSelectedIndex((current) => (current < selectedAssets.length - 1 ? current + 1 : 0));\n };\n\n const handlePrevious = () => {\n setSelectedIndex((current) => (current > 0 ? current - 1 : selectedAssets.length - 1));\n };\n\n const handleFilesUploadSucceeded = (uploadedFiles: Asset[] | File[]) => {\n setUploadedFiles((prev) => [...prev, ...uploadedFiles]);\n };\n\n let initiallySelectedAssets = selectedAssets;\n\n if (uploadedFiles.length > 0) {\n const allowedUploadedFiles = getAllowedFiles(allowedTypes, uploadedFiles as AllowedFiles[]);\n\n initiallySelectedAssets = multiple\n ? [...allowedUploadedFiles, ...selectedAssets]\n : [allowedUploadedFiles[0]];\n }\n\n return (\n <>\n <CarouselAssets\n ref={forwardedRef}\n assets={selectedAssets}\n disabled={disabled}\n label={label!}\n labelAction={labelAction}\n onDeleteAsset={handleDeleteAsset}\n onDeleteAssetFromMediaLibrary={handleDeleteAssetFromMediaLibrary}\n onAddAsset={() => setStep(STEPS.AssetSelect)}\n onDropAsset={handleAssetDrop}\n onEditAsset={handleAssetEdit}\n onNext={handleNext}\n onPrevious={handlePrevious}\n error={error}\n hint={hint}\n required={required}\n selectedAssetIndex={selectedIndex}\n trackedLocation=\"content-manager\"\n />\n\n {step === STEPS.AssetSelect && (\n <AssetDialog\n allowedTypes={allowedTypes as AllowedTypes[]}\n initiallySelectedAssets={initiallySelectedAssets}\n folderId={folderId}\n onClose={() => {\n setStep(undefined);\n setFolderId(null);\n }}\n open={step === STEPS.AssetSelect}\n onValidate={handleValidation}\n multiple={multiple}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folder) => setFolderId(folder)}\n trackedLocation=\"content-manager\"\n />\n )}\n\n {step === STEPS.AssetUpload && (\n <UploadAssetDialog\n open={step === STEPS.AssetUpload}\n onClose={() => setStep(STEPS.AssetSelect)}\n initialAssetsToAdd={droppedAssets as Asset[]}\n addUploadedFiles={handleFilesUploadSucceeded}\n trackedLocation=\"content-manager\"\n folderId={folderId}\n validateAssetsTypes={validateAssetsTypes}\n />\n )}\n\n {step === STEPS.FolderCreate && (\n <EditFolderDialog\n open={step === STEPS.FolderCreate}\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n )}\n </>\n );\n }\n);\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","MediaLibraryInput","React","forwardRef","attribute","allowedTypes","multiple","label","hint","disabled","labelAction","undefined","name","required","forwardedRef","formatMessage","useIntl","onChange","value","error","useField","uploadedFiles","setUploadedFiles","useState","step","setStep","selectedIndex","setSelectedIndex","droppedAssets","setDroppedAssets","folderId","setFolderId","toggleNotification","useNotification","useEffect","selectedAssets","Array","isArray","handleValidation","nextSelectedAssets","handleDeleteAssetFromMediaLibrary","nextValue","filter","_","assetIndex","length","handleDeleteAsset","asset","prevAsset","id","handleAssetEdit","map","validateAssetsTypes","assets","callback","allowedAssets","getAllowedFiles","type","timeout","message","getTrad","defaultMessage","fileTypes","join","handleAssetDrop","handleNext","current","handlePrevious","handleFilesUploadSucceeded","prev","initiallySelectedAssets","allowedUploadedFiles","_jsxs","_Fragment","_jsx","CarouselAssets","ref","onDeleteAsset","onDeleteAssetFromMediaLibrary","onAddAsset","onDropAsset","onEditAsset","onNext","onPrevious","selectedAssetIndex","trackedLocation","AssetDialog","onClose","open","onValidate","onAddFolder","onChangeFolder","folder","UploadAssetDialog","initialAssetsToAdd","addUploadedFiles","EditFolderDialog","parentFolderId"],"mappings":"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"}
|
|
@@ -20,20 +20,9 @@ const STEPS = {
|
|
|
20
20
|
AssetUpload: 'UploadAsset',
|
|
21
21
|
FolderCreate: 'FolderCreate'
|
|
22
22
|
};
|
|
23
|
-
const MediaLibraryInput = /*#__PURE__*/ React.forwardRef(({ attribute: { allowedTypes =
|
|
24
|
-
'videos',
|
|
25
|
-
'files',
|
|
26
|
-
'images',
|
|
27
|
-
'audios'
|
|
28
|
-
], multiple = false } = {}, label, hint, disabled = false, labelAction = undefined, name, required = false }, forwardedRef)=>{
|
|
23
|
+
const MediaLibraryInput = /*#__PURE__*/ React.forwardRef(({ attribute: { allowedTypes = null, multiple = false } = {}, label, hint, disabled = false, labelAction = undefined, name, required = false }, forwardedRef)=>{
|
|
29
24
|
const { formatMessage } = useIntl();
|
|
30
25
|
const { onChange, value, error } = useField(name);
|
|
31
|
-
const fieldAllowedTypes = allowedTypes || [
|
|
32
|
-
'files',
|
|
33
|
-
'images',
|
|
34
|
-
'videos',
|
|
35
|
-
'audios'
|
|
36
|
-
];
|
|
37
26
|
const [uploadedFiles, setUploadedFiles] = React.useState([]);
|
|
38
27
|
const [step, setStep] = React.useState(undefined);
|
|
39
28
|
const [selectedIndex, setSelectedIndex] = React.useState(0);
|
|
@@ -89,7 +78,7 @@ const MediaLibraryInput = /*#__PURE__*/ React.forwardRef(({ attribute: { allowed
|
|
|
89
78
|
onChange(name, multiple ? nextSelectedAssets : nextSelectedAssets[0]);
|
|
90
79
|
};
|
|
91
80
|
const validateAssetsTypes = (assets, callback)=>{
|
|
92
|
-
const allowedAssets = getAllowedFiles(
|
|
81
|
+
const allowedAssets = getAllowedFiles(allowedTypes, assets);
|
|
93
82
|
if (allowedAssets.length > 0) {
|
|
94
83
|
callback(allowedAssets);
|
|
95
84
|
} else {
|
|
@@ -100,7 +89,7 @@ const MediaLibraryInput = /*#__PURE__*/ React.forwardRef(({ attribute: { allowed
|
|
|
100
89
|
id: getTrad('input.notification.not-supported'),
|
|
101
90
|
defaultMessage: `You can't upload this type of file.`
|
|
102
91
|
}, {
|
|
103
|
-
fileTypes:
|
|
92
|
+
fileTypes: (allowedTypes ?? []).join(',')
|
|
104
93
|
})
|
|
105
94
|
});
|
|
106
95
|
}
|
|
@@ -128,7 +117,7 @@ const MediaLibraryInput = /*#__PURE__*/ React.forwardRef(({ attribute: { allowed
|
|
|
128
117
|
};
|
|
129
118
|
let initiallySelectedAssets = selectedAssets;
|
|
130
119
|
if (uploadedFiles.length > 0) {
|
|
131
|
-
const allowedUploadedFiles = getAllowedFiles(
|
|
120
|
+
const allowedUploadedFiles = getAllowedFiles(allowedTypes, uploadedFiles);
|
|
132
121
|
initiallySelectedAssets = multiple ? [
|
|
133
122
|
...allowedUploadedFiles,
|
|
134
123
|
...selectedAssets
|
|
@@ -158,7 +147,7 @@ const MediaLibraryInput = /*#__PURE__*/ React.forwardRef(({ attribute: { allowed
|
|
|
158
147
|
trackedLocation: "content-manager"
|
|
159
148
|
}),
|
|
160
149
|
step === STEPS.AssetSelect && /*#__PURE__*/ jsx(AssetDialog, {
|
|
161
|
-
allowedTypes:
|
|
150
|
+
allowedTypes: allowedTypes,
|
|
162
151
|
initiallySelectedAssets: initiallySelectedAssets,
|
|
163
152
|
folderId: folderId,
|
|
164
153
|
onClose: ()=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaLibraryInput.mjs","sources":["../../../../admin/src/components/MediaLibraryInput/MediaLibraryInput.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useField, useNotification } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad, getAllowedFiles, AllowedFiles } from '../../utils';\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog, Asset } from '../UploadAssetDialog/UploadAssetDialog';\n\nimport { CarouselAssets, CarouselAssetsProps, FileWithoutIdHash } from './Carousel/CarouselAssets';\n\nimport type { File } from '../../../../shared/contracts/files';\ntype AllowedTypes = 'files' | 'images' | 'videos' | 'audios';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nexport interface MediaLibraryInputProps {\n required?: boolean;\n name: string;\n labelAction?: React.ReactNode;\n label?: string;\n hint?: string;\n disabled?: boolean;\n attribute?: {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n };\n}\n\nexport const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>(\n (\n {\n attribute: { allowedTypes = ['videos', 'files', 'images', 'audios'], multiple = false } = {},\n label,\n hint,\n disabled = false,\n labelAction = undefined,\n name,\n required = false,\n },\n forwardedRef\n ) => {\n const { formatMessage } = useIntl();\n const { onChange, value, error } = useField(name);\n const fieldAllowedTypes = allowedTypes || ['files', 'images', 'videos', 'audios'];\n const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]);\n const [step, setStep] = React.useState<string | undefined>(undefined);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [droppedAssets, setDroppedAssets] = React.useState<AllowedFiles[]>();\n const [folderId, setFolderId] = React.useState<number | null>(null);\n const { toggleNotification } = useNotification();\n\n React.useEffect(() => {\n // Clear the uploaded files on close\n if (step === undefined) {\n setUploadedFiles([]);\n }\n }, [step]);\n\n let selectedAssets: File[] = [];\n\n if (Array.isArray(value)) {\n selectedAssets = value;\n } else if (value) {\n selectedAssets = [value];\n }\n\n const handleValidation = (nextSelectedAssets: File[]) => {\n const value = multiple ? nextSelectedAssets : nextSelectedAssets[0];\n onChange(name, value);\n setStep(undefined);\n };\n\n const handleDeleteAssetFromMediaLibrary = () => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter(\n (_, assetIndex) => assetIndex !== selectedIndex\n );\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n const value = nextValue;\n onChange(name, value);\n\n setSelectedIndex(0);\n };\n\n const handleDeleteAsset = (asset: File) => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter((prevAsset) => prevAsset.id !== asset.id);\n\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n onChange(name, nextValue);\n\n setSelectedIndex(0);\n };\n\n const handleAssetEdit = (asset: File) => {\n const nextSelectedAssets = selectedAssets.map((prevAsset) =>\n prevAsset.id === asset.id ? asset : prevAsset\n );\n\n onChange(name, multiple ? nextSelectedAssets : nextSelectedAssets[0]);\n };\n\n const validateAssetsTypes = (\n assets: FileWithoutIdHash[] | Asset[],\n callback: (assets?: AllowedFiles[], error?: string) => void\n ) => {\n const allowedAssets = getAllowedFiles(fieldAllowedTypes, assets as AllowedFiles[]);\n\n if (allowedAssets.length > 0) {\n callback(allowedAssets);\n } else {\n toggleNotification({\n type: 'danger',\n timeout: 4000,\n message: formatMessage(\n {\n id: getTrad('input.notification.not-supported'),\n defaultMessage: `You can't upload this type of file.`,\n },\n {\n fileTypes: fieldAllowedTypes.join(','),\n }\n ),\n });\n }\n };\n\n const handleAssetDrop = (assets: FileWithoutIdHash[]) => {\n validateAssetsTypes(assets, (allowedAssets?: AllowedFiles[]) => {\n setDroppedAssets(allowedAssets);\n setStep(STEPS.AssetUpload);\n });\n };\n\n if (multiple && selectedAssets.length > 0) {\n label = `${label} (${selectedIndex + 1} / ${selectedAssets.length})`;\n }\n\n const handleNext = () => {\n setSelectedIndex((current) => (current < selectedAssets.length - 1 ? current + 1 : 0));\n };\n\n const handlePrevious = () => {\n setSelectedIndex((current) => (current > 0 ? current - 1 : selectedAssets.length - 1));\n };\n\n const handleFilesUploadSucceeded = (uploadedFiles: Asset[] | File[]) => {\n setUploadedFiles((prev) => [...prev, ...uploadedFiles]);\n };\n\n let initiallySelectedAssets = selectedAssets;\n\n if (uploadedFiles.length > 0) {\n const allowedUploadedFiles = getAllowedFiles(\n fieldAllowedTypes,\n uploadedFiles as AllowedFiles[]\n );\n\n initiallySelectedAssets = multiple\n ? [...allowedUploadedFiles, ...selectedAssets]\n : [allowedUploadedFiles[0]];\n }\n\n return (\n <>\n <CarouselAssets\n ref={forwardedRef}\n assets={selectedAssets}\n disabled={disabled}\n label={label!}\n labelAction={labelAction}\n onDeleteAsset={handleDeleteAsset}\n onDeleteAssetFromMediaLibrary={handleDeleteAssetFromMediaLibrary}\n onAddAsset={() => setStep(STEPS.AssetSelect)}\n onDropAsset={handleAssetDrop}\n onEditAsset={handleAssetEdit}\n onNext={handleNext}\n onPrevious={handlePrevious}\n error={error}\n hint={hint}\n required={required}\n selectedAssetIndex={selectedIndex}\n trackedLocation=\"content-manager\"\n />\n\n {step === STEPS.AssetSelect && (\n <AssetDialog\n allowedTypes={fieldAllowedTypes as AllowedTypes[]}\n initiallySelectedAssets={initiallySelectedAssets}\n folderId={folderId}\n onClose={() => {\n setStep(undefined);\n setFolderId(null);\n }}\n open={step === STEPS.AssetSelect}\n onValidate={handleValidation}\n multiple={multiple}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folder) => setFolderId(folder)}\n trackedLocation=\"content-manager\"\n />\n )}\n\n {step === STEPS.AssetUpload && (\n <UploadAssetDialog\n open={step === STEPS.AssetUpload}\n onClose={() => setStep(STEPS.AssetSelect)}\n initialAssetsToAdd={droppedAssets as Asset[]}\n addUploadedFiles={handleFilesUploadSucceeded}\n trackedLocation=\"content-manager\"\n folderId={folderId}\n validateAssetsTypes={validateAssetsTypes}\n />\n )}\n\n {step === STEPS.FolderCreate && (\n <EditFolderDialog\n open={step === STEPS.FolderCreate}\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n )}\n </>\n );\n }\n);\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","MediaLibraryInput","React","forwardRef","attribute","allowedTypes","multiple","label","hint","disabled","labelAction","undefined","name","required","forwardedRef","formatMessage","useIntl","onChange","value","error","useField","fieldAllowedTypes","uploadedFiles","setUploadedFiles","useState","step","setStep","selectedIndex","setSelectedIndex","droppedAssets","setDroppedAssets","folderId","setFolderId","toggleNotification","useNotification","useEffect","selectedAssets","Array","isArray","handleValidation","nextSelectedAssets","handleDeleteAssetFromMediaLibrary","nextValue","filter","_","assetIndex","length","handleDeleteAsset","asset","prevAsset","id","handleAssetEdit","map","validateAssetsTypes","assets","callback","allowedAssets","getAllowedFiles","type","timeout","message","getTrad","defaultMessage","fileTypes","join","handleAssetDrop","handleNext","current","handlePrevious","handleFilesUploadSucceeded","prev","initiallySelectedAssets","allowedUploadedFiles","_jsxs","_Fragment","_jsx","CarouselAssets","ref","onDeleteAsset","onDeleteAssetFromMediaLibrary","onAddAsset","onDropAsset","onEditAsset","onNext","onPrevious","selectedAssetIndex","trackedLocation","AssetDialog","onClose","open","onValidate","onAddFolder","onChangeFolder","folder","UploadAssetDialog","initialAssetsToAdd","addUploadedFiles","EditFolderDialog","parentFolderId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MediaLibraryInput.mjs","sources":["../../../../admin/src/components/MediaLibraryInput/MediaLibraryInput.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useField, useNotification } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad, getAllowedFiles, AllowedFiles } from '../../utils';\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog, Asset } from '../UploadAssetDialog/UploadAssetDialog';\n\nimport { CarouselAssets, CarouselAssetsProps, FileWithoutIdHash } from './Carousel/CarouselAssets';\n\nimport type { File } from '../../../../shared/contracts/files';\ntype AllowedTypes = 'files' | 'images' | 'videos' | 'audios';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nexport interface MediaLibraryInputProps {\n required?: boolean;\n name: string;\n labelAction?: React.ReactNode;\n label?: string;\n hint?: string;\n disabled?: boolean;\n attribute?: {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n };\n}\n\nexport const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>(\n (\n {\n attribute: { allowedTypes = null, multiple = false } = {},\n label,\n hint,\n disabled = false,\n labelAction = undefined,\n name,\n required = false,\n },\n forwardedRef\n ) => {\n const { formatMessage } = useIntl();\n const { onChange, value, error } = useField(name);\n const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]);\n const [step, setStep] = React.useState<string | undefined>(undefined);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [droppedAssets, setDroppedAssets] = React.useState<AllowedFiles[]>();\n const [folderId, setFolderId] = React.useState<number | null>(null);\n const { toggleNotification } = useNotification();\n\n React.useEffect(() => {\n // Clear the uploaded files on close\n if (step === undefined) {\n setUploadedFiles([]);\n }\n }, [step]);\n\n let selectedAssets: File[] = [];\n\n if (Array.isArray(value)) {\n selectedAssets = value;\n } else if (value) {\n selectedAssets = [value];\n }\n\n const handleValidation = (nextSelectedAssets: File[]) => {\n const value = multiple ? nextSelectedAssets : nextSelectedAssets[0];\n onChange(name, value);\n setStep(undefined);\n };\n\n const handleDeleteAssetFromMediaLibrary = () => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter(\n (_, assetIndex) => assetIndex !== selectedIndex\n );\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n const value = nextValue;\n onChange(name, value);\n\n setSelectedIndex(0);\n };\n\n const handleDeleteAsset = (asset: File) => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter((prevAsset) => prevAsset.id !== asset.id);\n\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n onChange(name, nextValue);\n\n setSelectedIndex(0);\n };\n\n const handleAssetEdit = (asset: File) => {\n const nextSelectedAssets = selectedAssets.map((prevAsset) =>\n prevAsset.id === asset.id ? asset : prevAsset\n );\n\n onChange(name, multiple ? nextSelectedAssets : nextSelectedAssets[0]);\n };\n\n const validateAssetsTypes = (\n assets: FileWithoutIdHash[] | Asset[],\n callback: (assets?: AllowedFiles[], error?: string) => void\n ) => {\n const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n\n if (allowedAssets.length > 0) {\n callback(allowedAssets);\n } else {\n toggleNotification({\n type: 'danger',\n timeout: 4000,\n message: formatMessage(\n {\n id: getTrad('input.notification.not-supported'),\n defaultMessage: `You can't upload this type of file.`,\n },\n {\n fileTypes: (allowedTypes ?? []).join(','),\n }\n ),\n });\n }\n };\n\n const handleAssetDrop = (assets: FileWithoutIdHash[]) => {\n validateAssetsTypes(assets, (allowedAssets?: AllowedFiles[]) => {\n setDroppedAssets(allowedAssets);\n setStep(STEPS.AssetUpload);\n });\n };\n\n if (multiple && selectedAssets.length > 0) {\n label = `${label} (${selectedIndex + 1} / ${selectedAssets.length})`;\n }\n\n const handleNext = () => {\n setSelectedIndex((current) => (current < selectedAssets.length - 1 ? current + 1 : 0));\n };\n\n const handlePrevious = () => {\n setSelectedIndex((current) => (current > 0 ? current - 1 : selectedAssets.length - 1));\n };\n\n const handleFilesUploadSucceeded = (uploadedFiles: Asset[] | File[]) => {\n setUploadedFiles((prev) => [...prev, ...uploadedFiles]);\n };\n\n let initiallySelectedAssets = selectedAssets;\n\n if (uploadedFiles.length > 0) {\n const allowedUploadedFiles = getAllowedFiles(allowedTypes, uploadedFiles as AllowedFiles[]);\n\n initiallySelectedAssets = multiple\n ? [...allowedUploadedFiles, ...selectedAssets]\n : [allowedUploadedFiles[0]];\n }\n\n return (\n <>\n <CarouselAssets\n ref={forwardedRef}\n assets={selectedAssets}\n disabled={disabled}\n label={label!}\n labelAction={labelAction}\n onDeleteAsset={handleDeleteAsset}\n onDeleteAssetFromMediaLibrary={handleDeleteAssetFromMediaLibrary}\n onAddAsset={() => setStep(STEPS.AssetSelect)}\n onDropAsset={handleAssetDrop}\n onEditAsset={handleAssetEdit}\n onNext={handleNext}\n onPrevious={handlePrevious}\n error={error}\n hint={hint}\n required={required}\n selectedAssetIndex={selectedIndex}\n trackedLocation=\"content-manager\"\n />\n\n {step === STEPS.AssetSelect && (\n <AssetDialog\n allowedTypes={allowedTypes as AllowedTypes[]}\n initiallySelectedAssets={initiallySelectedAssets}\n folderId={folderId}\n onClose={() => {\n setStep(undefined);\n setFolderId(null);\n }}\n open={step === STEPS.AssetSelect}\n onValidate={handleValidation}\n multiple={multiple}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folder) => setFolderId(folder)}\n trackedLocation=\"content-manager\"\n />\n )}\n\n {step === STEPS.AssetUpload && (\n <UploadAssetDialog\n open={step === STEPS.AssetUpload}\n onClose={() => setStep(STEPS.AssetSelect)}\n initialAssetsToAdd={droppedAssets as Asset[]}\n addUploadedFiles={handleFilesUploadSucceeded}\n trackedLocation=\"content-manager\"\n folderId={folderId}\n validateAssetsTypes={validateAssetsTypes}\n />\n )}\n\n {step === STEPS.FolderCreate && (\n <EditFolderDialog\n open={step === STEPS.FolderCreate}\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n )}\n </>\n );\n }\n);\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","MediaLibraryInput","React","forwardRef","attribute","allowedTypes","multiple","label","hint","disabled","labelAction","undefined","name","required","forwardedRef","formatMessage","useIntl","onChange","value","error","useField","uploadedFiles","setUploadedFiles","useState","step","setStep","selectedIndex","setSelectedIndex","droppedAssets","setDroppedAssets","folderId","setFolderId","toggleNotification","useNotification","useEffect","selectedAssets","Array","isArray","handleValidation","nextSelectedAssets","handleDeleteAssetFromMediaLibrary","nextValue","filter","_","assetIndex","length","handleDeleteAsset","asset","prevAsset","id","handleAssetEdit","map","validateAssetsTypes","assets","callback","allowedAssets","getAllowedFiles","type","timeout","message","getTrad","defaultMessage","fileTypes","join","handleAssetDrop","handleNext","current","handlePrevious","handleFilesUploadSucceeded","prev","initiallySelectedAssets","allowedUploadedFiles","_jsxs","_Fragment","_jsx","CarouselAssets","ref","onDeleteAsset","onDeleteAssetFromMediaLibrary","onAddAsset","onDropAsset","onEditAsset","onNext","onPrevious","selectedAssetIndex","trackedLocation","AssetDialog","onClose","open","onValidate","onAddFolder","onChangeFolder","folder","UploadAssetDialog","initialAssetsToAdd","addUploadedFiles","EditFolderDialog","parentFolderId"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var name = "@strapi/upload";
|
|
6
|
-
var version = "5.
|
|
6
|
+
var version = "5.14.0";
|
|
7
7
|
var description = "Makes it easy to upload images and files to your Strapi Application.";
|
|
8
8
|
var license = "SEE LICENSE IN LICENSE";
|
|
9
9
|
var author = {
|
|
@@ -64,10 +64,10 @@ var scripts = {
|
|
|
64
64
|
};
|
|
65
65
|
var dependencies = {
|
|
66
66
|
"@mux/mux-player-react": "3.1.0",
|
|
67
|
-
"@strapi/design-system": "2.0.0-rc.
|
|
68
|
-
"@strapi/icons": "2.0.0-rc.
|
|
69
|
-
"@strapi/provider-upload-local": "5.
|
|
70
|
-
"@strapi/utils": "5.
|
|
67
|
+
"@strapi/design-system": "2.0.0-rc.24",
|
|
68
|
+
"@strapi/icons": "2.0.0-rc.24",
|
|
69
|
+
"@strapi/provider-upload-local": "5.14.0",
|
|
70
|
+
"@strapi/utils": "5.14.0",
|
|
71
71
|
"byte-size": "8.1.1",
|
|
72
72
|
cropperjs: "1.6.1",
|
|
73
73
|
"date-fns": "2.30.0",
|
|
@@ -89,8 +89,8 @@ var dependencies = {
|
|
|
89
89
|
yup: "0.32.9"
|
|
90
90
|
};
|
|
91
91
|
var devDependencies = {
|
|
92
|
-
"@strapi/admin": "5.
|
|
93
|
-
"@strapi/types": "5.
|
|
92
|
+
"@strapi/admin": "5.14.0",
|
|
93
|
+
"@strapi/types": "5.14.0",
|
|
94
94
|
"@testing-library/dom": "10.1.0",
|
|
95
95
|
"@testing-library/react": "15.0.7",
|
|
96
96
|
"@testing-library/user-event": "14.5.2",
|
|
@@ -100,7 +100,7 @@ var devDependencies = {
|
|
|
100
100
|
"@types/koa-range": "0.3.5",
|
|
101
101
|
"@types/koa-static": "4.0.2",
|
|
102
102
|
formidable: "3.5.1",
|
|
103
|
-
koa: "2.
|
|
103
|
+
koa: "2.16.1",
|
|
104
104
|
"koa-body": "6.0.1",
|
|
105
105
|
msw: "1.3.0",
|
|
106
106
|
react: "18.3.1",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "@strapi/upload";
|
|
2
|
-
var version = "5.
|
|
2
|
+
var version = "5.14.0";
|
|
3
3
|
var description = "Makes it easy to upload images and files to your Strapi Application.";
|
|
4
4
|
var license = "SEE LICENSE IN LICENSE";
|
|
5
5
|
var author = {
|
|
@@ -60,10 +60,10 @@ var scripts = {
|
|
|
60
60
|
};
|
|
61
61
|
var dependencies = {
|
|
62
62
|
"@mux/mux-player-react": "3.1.0",
|
|
63
|
-
"@strapi/design-system": "2.0.0-rc.
|
|
64
|
-
"@strapi/icons": "2.0.0-rc.
|
|
65
|
-
"@strapi/provider-upload-local": "5.
|
|
66
|
-
"@strapi/utils": "5.
|
|
63
|
+
"@strapi/design-system": "2.0.0-rc.24",
|
|
64
|
+
"@strapi/icons": "2.0.0-rc.24",
|
|
65
|
+
"@strapi/provider-upload-local": "5.14.0",
|
|
66
|
+
"@strapi/utils": "5.14.0",
|
|
67
67
|
"byte-size": "8.1.1",
|
|
68
68
|
cropperjs: "1.6.1",
|
|
69
69
|
"date-fns": "2.30.0",
|
|
@@ -85,8 +85,8 @@ var dependencies = {
|
|
|
85
85
|
yup: "0.32.9"
|
|
86
86
|
};
|
|
87
87
|
var devDependencies = {
|
|
88
|
-
"@strapi/admin": "5.
|
|
89
|
-
"@strapi/types": "5.
|
|
88
|
+
"@strapi/admin": "5.14.0",
|
|
89
|
+
"@strapi/types": "5.14.0",
|
|
90
90
|
"@testing-library/dom": "10.1.0",
|
|
91
91
|
"@testing-library/react": "15.0.7",
|
|
92
92
|
"@testing-library/user-event": "14.5.2",
|
|
@@ -96,7 +96,7 @@ var devDependencies = {
|
|
|
96
96
|
"@types/koa-range": "0.3.5",
|
|
97
97
|
"@types/koa-static": "4.0.2",
|
|
98
98
|
formidable: "3.5.1",
|
|
99
|
-
koa: "2.
|
|
99
|
+
koa: "2.16.1",
|
|
100
100
|
"koa-body": "6.0.1",
|
|
101
101
|
msw: "1.3.0",
|
|
102
102
|
react: "18.3.1",
|
|
@@ -11,4 +11,4 @@ export interface AllowedFiles extends File {
|
|
|
11
11
|
locale: string | null;
|
|
12
12
|
type: string;
|
|
13
13
|
}
|
|
14
|
-
export declare const getAllowedFiles: (pluralTypes: string[], files: AllowedFiles[]) => AllowedFiles[];
|
|
14
|
+
export declare const getAllowedFiles: (pluralTypes: string[] | null, files: AllowedFiles[]) => AllowedFiles[];
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
var toSingularTypes = require('./toSingularTypes.js');
|
|
4
4
|
|
|
5
5
|
const getAllowedFiles = (pluralTypes, files)=>{
|
|
6
|
+
if (!pluralTypes) {
|
|
7
|
+
return files;
|
|
8
|
+
}
|
|
6
9
|
const singularTypes = toSingularTypes.toSingularTypes(pluralTypes);
|
|
7
10
|
const allowedFiles = files.filter((file)=>{
|
|
8
11
|
const fileType = file?.mime?.split('/')[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAllowedFiles.js","sources":["../../../admin/src/utils/getAllowedFiles.ts"],"sourcesContent":["import { toSingularTypes } from './toSingularTypes';\n\nimport type { File } from '../../../shared/contracts/files';\n/**\n * Returns the files that can be added to the media field\n * @param {Object[]} pluralTypes Array of string (allowedTypes)\n * @param {Object[]} files Array of files\n * @returns Object[]\n */\n\nexport interface AllowedFiles extends File {\n documentId: string;\n isSelectable: boolean;\n locale: string | null;\n type: string;\n}\n\nexport const getAllowedFiles = (pluralTypes: string[], files: AllowedFiles[]) => {\n const singularTypes = toSingularTypes(pluralTypes);\n\n const allowedFiles = files.filter((file) => {\n const fileType = file?.mime?.split('/')[0];\n\n if (!fileType) {\n return false;\n }\n\n if (singularTypes.includes('file') && !['video', 'image', 'audio'].includes(fileType)) {\n return true;\n }\n\n return singularTypes.includes(fileType);\n });\n\n return allowedFiles;\n};\n"],"names":["getAllowedFiles","pluralTypes","files","singularTypes","toSingularTypes","allowedFiles","filter","file","fileType","mime","split","includes"],"mappings":";;;;AAiBO,MAAMA,eAAkB,GAAA,CAACC,
|
|
1
|
+
{"version":3,"file":"getAllowedFiles.js","sources":["../../../admin/src/utils/getAllowedFiles.ts"],"sourcesContent":["import { toSingularTypes } from './toSingularTypes';\n\nimport type { File } from '../../../shared/contracts/files';\n/**\n * Returns the files that can be added to the media field\n * @param {Object[]} pluralTypes Array of string (allowedTypes)\n * @param {Object[]} files Array of files\n * @returns Object[]\n */\n\nexport interface AllowedFiles extends File {\n documentId: string;\n isSelectable: boolean;\n locale: string | null;\n type: string;\n}\n\nexport const getAllowedFiles = (pluralTypes: string[] | null, files: AllowedFiles[]) => {\n if (!pluralTypes) {\n return files;\n }\n\n const singularTypes = toSingularTypes(pluralTypes);\n\n const allowedFiles = files.filter((file) => {\n const fileType = file?.mime?.split('/')[0];\n\n if (!fileType) {\n return false;\n }\n\n if (singularTypes.includes('file') && !['video', 'image', 'audio'].includes(fileType)) {\n return true;\n }\n\n return singularTypes.includes(fileType);\n });\n\n return allowedFiles;\n};\n"],"names":["getAllowedFiles","pluralTypes","files","singularTypes","toSingularTypes","allowedFiles","filter","file","fileType","mime","split","includes"],"mappings":";;;;AAiBO,MAAMA,eAAkB,GAAA,CAACC,WAA8BC,EAAAA,KAAAA,GAAAA;AAC5D,IAAA,IAAI,CAACD,WAAa,EAAA;QAChB,OAAOC,KAAAA;AACT;AAEA,IAAA,MAAMC,gBAAgBC,+BAAgBH,CAAAA,WAAAA,CAAAA;AAEtC,IAAA,MAAMI,YAAeH,GAAAA,KAAAA,CAAMI,MAAM,CAAC,CAACC,IAAAA,GAAAA;AACjC,QAAA,MAAMC,WAAWD,IAAME,EAAAA,IAAAA,EAAMC,KAAM,CAAA,GAAA,CAAI,CAAC,CAAE,CAAA;AAE1C,QAAA,IAAI,CAACF,QAAU,EAAA;YACb,OAAO,KAAA;AACT;AAEA,QAAA,IAAIL,aAAcQ,CAAAA,QAAQ,CAAC,MAAA,CAAA,IAAW,CAAC;AAAC,YAAA,OAAA;AAAS,YAAA,OAAA;AAAS,YAAA;SAAQ,CAACA,QAAQ,CAACH,QAAW,CAAA,EAAA;YACrF,OAAO,IAAA;AACT;QAEA,OAAOL,aAAAA,CAAcQ,QAAQ,CAACH,QAAAA,CAAAA;AAChC,KAAA,CAAA;IAEA,OAAOH,YAAAA;AACT;;;;"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { toSingularTypes } from './toSingularTypes.mjs';
|
|
2
2
|
|
|
3
3
|
const getAllowedFiles = (pluralTypes, files)=>{
|
|
4
|
+
if (!pluralTypes) {
|
|
5
|
+
return files;
|
|
6
|
+
}
|
|
4
7
|
const singularTypes = toSingularTypes(pluralTypes);
|
|
5
8
|
const allowedFiles = files.filter((file)=>{
|
|
6
9
|
const fileType = file?.mime?.split('/')[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAllowedFiles.mjs","sources":["../../../admin/src/utils/getAllowedFiles.ts"],"sourcesContent":["import { toSingularTypes } from './toSingularTypes';\n\nimport type { File } from '../../../shared/contracts/files';\n/**\n * Returns the files that can be added to the media field\n * @param {Object[]} pluralTypes Array of string (allowedTypes)\n * @param {Object[]} files Array of files\n * @returns Object[]\n */\n\nexport interface AllowedFiles extends File {\n documentId: string;\n isSelectable: boolean;\n locale: string | null;\n type: string;\n}\n\nexport const getAllowedFiles = (pluralTypes: string[], files: AllowedFiles[]) => {\n const singularTypes = toSingularTypes(pluralTypes);\n\n const allowedFiles = files.filter((file) => {\n const fileType = file?.mime?.split('/')[0];\n\n if (!fileType) {\n return false;\n }\n\n if (singularTypes.includes('file') && !['video', 'image', 'audio'].includes(fileType)) {\n return true;\n }\n\n return singularTypes.includes(fileType);\n });\n\n return allowedFiles;\n};\n"],"names":["getAllowedFiles","pluralTypes","files","singularTypes","toSingularTypes","allowedFiles","filter","file","fileType","mime","split","includes"],"mappings":";;AAiBO,MAAMA,eAAkB,GAAA,CAACC,
|
|
1
|
+
{"version":3,"file":"getAllowedFiles.mjs","sources":["../../../admin/src/utils/getAllowedFiles.ts"],"sourcesContent":["import { toSingularTypes } from './toSingularTypes';\n\nimport type { File } from '../../../shared/contracts/files';\n/**\n * Returns the files that can be added to the media field\n * @param {Object[]} pluralTypes Array of string (allowedTypes)\n * @param {Object[]} files Array of files\n * @returns Object[]\n */\n\nexport interface AllowedFiles extends File {\n documentId: string;\n isSelectable: boolean;\n locale: string | null;\n type: string;\n}\n\nexport const getAllowedFiles = (pluralTypes: string[] | null, files: AllowedFiles[]) => {\n if (!pluralTypes) {\n return files;\n }\n\n const singularTypes = toSingularTypes(pluralTypes);\n\n const allowedFiles = files.filter((file) => {\n const fileType = file?.mime?.split('/')[0];\n\n if (!fileType) {\n return false;\n }\n\n if (singularTypes.includes('file') && !['video', 'image', 'audio'].includes(fileType)) {\n return true;\n }\n\n return singularTypes.includes(fileType);\n });\n\n return allowedFiles;\n};\n"],"names":["getAllowedFiles","pluralTypes","files","singularTypes","toSingularTypes","allowedFiles","filter","file","fileType","mime","split","includes"],"mappings":";;AAiBO,MAAMA,eAAkB,GAAA,CAACC,WAA8BC,EAAAA,KAAAA,GAAAA;AAC5D,IAAA,IAAI,CAACD,WAAa,EAAA;QAChB,OAAOC,KAAAA;AACT;AAEA,IAAA,MAAMC,gBAAgBC,eAAgBH,CAAAA,WAAAA,CAAAA;AAEtC,IAAA,MAAMI,YAAeH,GAAAA,KAAAA,CAAMI,MAAM,CAAC,CAACC,IAAAA,GAAAA;AACjC,QAAA,MAAMC,WAAWD,IAAME,EAAAA,IAAAA,EAAMC,KAAM,CAAA,GAAA,CAAI,CAAC,CAAE,CAAA;AAE1C,QAAA,IAAI,CAACF,QAAU,EAAA;YACb,OAAO,KAAA;AACT;AAEA,QAAA,IAAIL,aAAcQ,CAAAA,QAAQ,CAAC,MAAA,CAAA,IAAW,CAAC;AAAC,YAAA,OAAA;AAAS,YAAA,OAAA;AAAS,YAAA;SAAQ,CAACA,QAAQ,CAACH,QAAW,CAAA,EAAA;YACrF,OAAO,IAAA;AACT;QAEA,OAAOL,aAAAA,CAAcQ,QAAQ,CAACH,QAAAA,CAAAA;AAChC,KAAA,CAAA;IAEA,OAAOH,YAAAA;AACT;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/upload",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.15.0",
|
|
4
4
|
"description": "Makes it easy to upload images and files to your Strapi Application.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": {
|
|
@@ -61,10 +61,10 @@
|
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
63
|
"@mux/mux-player-react": "3.1.0",
|
|
64
|
-
"@strapi/design-system": "2.0.0-rc.
|
|
65
|
-
"@strapi/icons": "2.0.0-rc.
|
|
66
|
-
"@strapi/provider-upload-local": "5.
|
|
67
|
-
"@strapi/utils": "5.
|
|
64
|
+
"@strapi/design-system": "2.0.0-rc.24",
|
|
65
|
+
"@strapi/icons": "2.0.0-rc.24",
|
|
66
|
+
"@strapi/provider-upload-local": "5.15.0",
|
|
67
|
+
"@strapi/utils": "5.15.0",
|
|
68
68
|
"byte-size": "8.1.1",
|
|
69
69
|
"cropperjs": "1.6.1",
|
|
70
70
|
"date-fns": "2.30.0",
|
|
@@ -86,8 +86,8 @@
|
|
|
86
86
|
"yup": "0.32.9"
|
|
87
87
|
},
|
|
88
88
|
"devDependencies": {
|
|
89
|
-
"@strapi/admin": "5.
|
|
90
|
-
"@strapi/types": "5.
|
|
89
|
+
"@strapi/admin": "5.15.0",
|
|
90
|
+
"@strapi/types": "5.15.0",
|
|
91
91
|
"@testing-library/dom": "10.1.0",
|
|
92
92
|
"@testing-library/react": "15.0.7",
|
|
93
93
|
"@testing-library/user-event": "14.5.2",
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"@types/koa-range": "0.3.5",
|
|
98
98
|
"@types/koa-static": "4.0.2",
|
|
99
99
|
"formidable": "3.5.1",
|
|
100
|
-
"koa": "2.
|
|
100
|
+
"koa": "2.16.1",
|
|
101
101
|
"koa-body": "6.0.1",
|
|
102
102
|
"msw": "1.3.0",
|
|
103
103
|
"react": "18.3.1",
|