{"version":3,"file":"TableList.mjs","sources":["../../../../admin/src/components/TableList/TableList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport {\n  Checkbox,\n  IconButton,\n  Table,\n  Th,\n  Thead,\n  Tooltip,\n  Tr,\n  Typography,\n  VisuallyHidden,\n} from '@strapi/design-system';\nimport { CaretDown, CaretUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { tableHeaders } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { TableRows } from './TableRows';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nexport interface FileRow extends File {\n  folderURL?: string;\n  isSelectable?: boolean;\n  type?: string;\n}\n\nexport interface FolderRow extends Folder {\n  folderURL?: string;\n  isSelectable?: boolean;\n  type?: string;\n}\n\nexport interface TableListProps {\n  isFolderSelectionAllowed?: boolean;\n  allowedTypes?: AllowedTypes[];\n  assetCount?: number;\n  folderCount?: number;\n  indeterminate?: boolean;\n  onChangeSort?: ((sortQuery: string) => void) | null;\n  onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n  onEditAsset?: ((asset: FileRow) => void) | null;\n  onEditFolder?: ((folder: FolderRow) => void) | null;\n  onSelectAll: (checked: boolean | string, rows?: FolderRow[] | FileRow[]) => void;\n  onSelectOne: (element: FileRow | FolderRow) => void;\n  rows?: FileRow[] | FolderRow[];\n  selected?: FileRow[] | FolderRow[];\n  shouldDisableBulkSelect?: boolean;\n  sortQuery?: string;\n}\n\nexport const TableList = ({\n  assetCount = 0,\n  folderCount = 0,\n  indeterminate = false,\n  onChangeSort = null,\n  onChangeFolder = null,\n  onEditAsset = null,\n  onEditFolder = null,\n  onSelectAll,\n  onSelectOne,\n  rows = [],\n  selected = [],\n  shouldDisableBulkSelect = false,\n  sortQuery = '',\n}: TableListProps) => {\n  const { formatMessage } = useIntl();\n  const [sortBy, sortOrder] = sortQuery.split(':');\n\n  const handleClickSort = (isSorted: boolean, name: string) => {\n    const nextSortOrder = isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC';\n    const nextSort = `${name}:${nextSortOrder}`;\n\n    onChangeSort && onChangeSort(nextSort);\n  };\n\n  return (\n    <Table colCount={tableHeaders.length + 2} rowCount={assetCount + folderCount + 1}>\n      <Thead>\n        <Tr>\n          <Th>\n            <Checkbox\n              aria-label={formatMessage({\n                id: getTrad('bulk.select.label'),\n                defaultMessage: 'Select all folders & assets',\n              })}\n              disabled={shouldDisableBulkSelect}\n              onCheckedChange={(checked) => onSelectAll(checked, rows)}\n              checked={\n                indeterminate && !shouldDisableBulkSelect\n                  ? 'indeterminate'\n                  : (assetCount > 0 || folderCount > 0) &&\n                    selected.length === assetCount + folderCount\n              }\n            />\n          </Th>\n          {tableHeaders.map(({ metadatas: { label, isSortable }, name, key }) => {\n            const isSorted = sortBy === name;\n            const isUp = sortOrder === 'ASC';\n            const tableHeaderLabel = formatMessage(label);\n            const sortLabel = formatMessage(\n              { id: 'list.table.header.sort', defaultMessage: 'Sort on {label}' },\n              { label: tableHeaderLabel }\n            );\n\n            return (\n              <Th\n                action={\n                  isSorted && (\n                    <IconButton\n                      label={sortLabel}\n                      onClick={() => handleClickSort(isSorted, name)}\n                      variant=\"ghost\"\n                    >\n                      {isUp ? <CaretUp /> : <CaretDown />}\n                    </IconButton>\n                  )\n                }\n                key={key}\n              >\n                <Tooltip label={isSortable ? sortLabel : tableHeaderLabel}>\n                  {isSortable ? (\n                    <Typography\n                      onClick={() => handleClickSort(isSorted, name)}\n                      tag={isSorted ? 'span' : 'button'}\n                      textColor=\"neutral600\"\n                      variant=\"sigma\"\n                    >\n                      {tableHeaderLabel}\n                    </Typography>\n                  ) : (\n                    <Typography textColor=\"neutral600\" variant=\"sigma\">\n                      {tableHeaderLabel}\n                    </Typography>\n                  )}\n                </Tooltip>\n              </Th>\n            );\n          })}\n          <Th>\n            <VisuallyHidden>\n              {formatMessage({\n                id: getTrad('list.table.header.actions'),\n                defaultMessage: 'actions',\n              })}\n            </VisuallyHidden>\n          </Th>\n        </Tr>\n      </Thead>\n      <TableRows\n        onChangeFolder={onChangeFolder}\n        onEditAsset={onEditAsset!}\n        onEditFolder={onEditFolder!}\n        rows={rows}\n        onSelectOne={onSelectOne}\n        selected={selected}\n      />\n    </Table>\n  );\n};\n"],"names":["TableList","assetCount","folderCount","indeterminate","onChangeSort","onChangeFolder","onEditAsset","onEditFolder","onSelectAll","onSelectOne","rows","selected","shouldDisableBulkSelect","sortQuery","formatMessage","useIntl","sortBy","sortOrder","split","handleClickSort","isSorted","name","nextSortOrder","nextSort","_jsxs","Table","colCount","tableHeaders","length","rowCount","_jsx","Thead","Tr","Th","Checkbox","aria-label","id","getTrad","defaultMessage","disabled","onCheckedChange","checked","map","metadatas","label","isSortable","key","isUp","tableHeaderLabel","sortLabel","action","IconButton","onClick","variant","CaretUp","CaretDown","Tooltip","Typography","tag","textColor","VisuallyHidden","TableRows"],"mappings":"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"}