diff --git a/packages/core/admin/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/getTableColumn.js b/packages/core/admin/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/getTableColumn.js index 1390d99bb9..7c89948127 100644 --- a/packages/core/admin/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/getTableColumn.js +++ b/packages/core/admin/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/getTableColumn.js @@ -24,7 +24,7 @@ export default (layout) => { key: '__strapi_reviewWorkflows_stage_temp_key__', name: 'strapi_reviewWorkflows_stage', fieldSchema: { - type: 'custom', + type: 'relation', }, metadatas: { label: formatMessage({ @@ -32,7 +32,8 @@ export default (layout) => { defaultMessage: 'Review stage', }), searchable: false, - sortable: false, + sortable: true, + mainField: 'name', }, cellFormatter({ strapi_reviewWorkflows_stage }) { // if entities are created e.g. through lifecycle methods diff --git a/packages/core/helper-plugin/src/components/DynamicTable/TableHead/index.js b/packages/core/helper-plugin/src/components/DynamicTable/TableHead/index.js index bd0fba0ee5..2d405c3413 100644 --- a/packages/core/helper-plugin/src/components/DynamicTable/TableHead/index.js +++ b/packages/core/helper-plugin/src/components/DynamicTable/TableHead/index.js @@ -26,7 +26,6 @@ const TableHead = ({ const [{ query }, setQuery] = useQueryParams(); const sort = query?.sort || ''; const [sortBy, sortOrder] = sort.split(':'); - const isIndeterminate = !areAllEntriesSelected && entriesToDelete.length > 0; return ( @@ -45,54 +44,67 @@ const TableHead = ({ /> )} - {headers.map(({ name, metadatas: { sortable: isSortable, label } }) => { - const isSorted = sortBy === name; - const isUp = sortOrder === 'ASC'; + {headers.map( + ({ fieldSchema, name, metadatas: { sortable: isSortable, label, mainField } }) => { + let isSorted = sortBy === name; + const isUp = sortOrder === 'ASC'; - const sortLabel = formatMessage( - { id: 'components.TableHeader.sort', defaultMessage: 'Sort on {label}' }, - { label } - ); - - const handleClickSort = (shouldAllowClick = true) => { - if (isSortable && shouldAllowClick) { - const nextSortOrder = isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC'; - const nextSort = `${name}:${nextSortOrder}`; - - setQuery({ - sort: nextSort, - }); + // relations always have to be sorted by their main field instead of only the + // attribute name; sortBy e.g. looks like: &sortBy=attributeName[mainField]:ASC + if (fieldSchema?.type === 'relation' && mainField) { + isSorted = sortBy === `${name}[${mainField}]`; } - }; - return ( -