@strapi/content-manager 5.60.0 → 5.61.1
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/constants/customOrder.js +14 -0
- package/dist/admin/constants/customOrder.js.map +1 -0
- package/dist/admin/constants/customOrder.mjs +10 -0
- package/dist/admin/constants/customOrder.mjs.map +1 -0
- package/dist/admin/hooks/useDocument.js +22 -11
- package/dist/admin/hooks/useDocument.js.map +1 -1
- package/dist/admin/hooks/useDocument.mjs +22 -11
- package/dist/admin/hooks/useDocument.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
- package/dist/admin/hooks/useDocumentLayout.mjs.map +1 -1
- package/dist/admin/hooks/useHasBeenNearViewport.js +70 -0
- package/dist/admin/hooks/useHasBeenNearViewport.js.map +1 -0
- package/dist/admin/hooks/useHasBeenNearViewport.mjs +46 -0
- package/dist/admin/hooks/useHasBeenNearViewport.mjs.map +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js +102 -32
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs +104 -35
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js +20 -17
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs +20 -17
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +15 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +17 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.js +21 -0
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.mjs +22 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +4 -7
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +4 -7
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +46 -10
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +47 -11
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.js +201 -51
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs +202 -53
- package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Settings.js +31 -2
- package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Settings.mjs +31 -2
- package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +196 -132
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +196 -132
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/CustomOrder.js +571 -0
- package/dist/admin/pages/ListView/components/CustomOrder.js.map +1 -0
- package/dist/admin/pages/ListView/components/CustomOrder.mjs +546 -0
- package/dist/admin/pages/ListView/components/CustomOrder.mjs.map +1 -0
- package/dist/admin/pages/ListView/components/TableActions.js +4 -1
- package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.mjs +4 -1
- package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
- package/dist/admin/services/documents.js +22 -1
- package/dist/admin/services/documents.js.map +1 -1
- package/dist/admin/services/documents.mjs +21 -2
- package/dist/admin/services/documents.mjs.map +1 -1
- package/dist/admin/src/constants/customOrder.d.ts +8 -0
- package/dist/admin/src/exports.d.ts +1 -1
- package/dist/admin/src/hooks/useDocument.d.ts +4 -0
- package/dist/admin/src/hooks/useDocumentLayout.d.ts +6 -2
- package/dist/admin/src/hooks/useHasBeenNearViewport.d.ts +13 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.d.ts +13 -1
- package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +11 -1
- package/dist/admin/src/pages/ListView/components/CustomOrder.d.ts +72 -0
- package/dist/admin/src/services/documents.d.ts +10 -2
- package/dist/admin/translations/en.json.js +9 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +9 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/server/audit-logs.js +36 -0
- package/dist/server/audit-logs.js.map +1 -0
- package/dist/server/audit-logs.mjs +33 -0
- package/dist/server/audit-logs.mjs.map +1 -0
- package/dist/server/bootstrap.js +8 -0
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/bootstrap.mjs +8 -0
- package/dist/server/bootstrap.mjs.map +1 -1
- package/dist/server/controllers/collection-types.js +8 -0
- package/dist/server/controllers/collection-types.js.map +1 -1
- package/dist/server/controllers/collection-types.mjs +8 -0
- package/dist/server/controllers/collection-types.mjs.map +1 -1
- package/dist/server/controllers/content-types.js +15 -0
- package/dist/server/controllers/content-types.js.map +1 -1
- package/dist/server/controllers/content-types.mjs +16 -1
- package/dist/server/controllers/content-types.mjs.map +1 -1
- package/dist/server/controllers/index.js +3 -1
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs +2 -0
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/controllers/relations.js +5 -1
- package/dist/server/controllers/relations.js.map +1 -1
- package/dist/server/controllers/relations.mjs +5 -1
- package/dist/server/controllers/relations.mjs.map +1 -1
- package/dist/server/controllers/single-types.js +10 -1
- package/dist/server/controllers/single-types.js.map +1 -1
- package/dist/server/controllers/single-types.mjs +10 -1
- package/dist/server/controllers/single-types.mjs.map +1 -1
- package/dist/server/controllers/validation/model-configuration.js +2 -1
- package/dist/server/controllers/validation/model-configuration.js.map +1 -1
- package/dist/server/controllers/validation/model-configuration.mjs +2 -1
- package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
- package/dist/server/custom-order/constants.js +21 -0
- package/dist/server/custom-order/constants.js.map +1 -0
- package/dist/server/custom-order/constants.mjs +17 -0
- package/dist/server/custom-order/constants.mjs.map +1 -0
- package/dist/server/custom-order/controllers/custom-order.js +77 -0
- package/dist/server/custom-order/controllers/custom-order.js.map +1 -0
- package/dist/server/custom-order/controllers/custom-order.mjs +75 -0
- package/dist/server/custom-order/controllers/custom-order.mjs.map +1 -0
- package/dist/server/custom-order/controllers/index.js +10 -0
- package/dist/server/custom-order/controllers/index.js.map +1 -0
- package/dist/server/custom-order/controllers/index.mjs +8 -0
- package/dist/server/custom-order/controllers/index.mjs.map +1 -0
- package/dist/server/custom-order/index.js +71 -0
- package/dist/server/custom-order/index.js.map +1 -0
- package/dist/server/custom-order/index.mjs +69 -0
- package/dist/server/custom-order/index.mjs.map +1 -0
- package/dist/server/custom-order/routes/custom-order.js +38 -0
- package/dist/server/custom-order/routes/custom-order.js.map +1 -0
- package/dist/server/custom-order/routes/custom-order.mjs +36 -0
- package/dist/server/custom-order/routes/custom-order.mjs.map +1 -0
- package/dist/server/custom-order/routes/index.js +13 -0
- package/dist/server/custom-order/routes/index.js.map +1 -0
- package/dist/server/custom-order/routes/index.mjs +11 -0
- package/dist/server/custom-order/routes/index.mjs.map +1 -0
- package/dist/server/custom-order/services/custom-order.js +286 -0
- package/dist/server/custom-order/services/custom-order.js.map +1 -0
- package/dist/server/custom-order/services/custom-order.mjs +284 -0
- package/dist/server/custom-order/services/custom-order.mjs.map +1 -0
- package/dist/server/custom-order/services/document-middleware.js +83 -0
- package/dist/server/custom-order/services/document-middleware.js.map +1 -0
- package/dist/server/custom-order/services/document-middleware.mjs +81 -0
- package/dist/server/custom-order/services/document-middleware.mjs.map +1 -0
- package/dist/server/custom-order/services/index.js +10 -0
- package/dist/server/custom-order/services/index.js.map +1 -0
- package/dist/server/custom-order/services/index.mjs +8 -0
- package/dist/server/custom-order/services/index.mjs.map +1 -0
- package/dist/server/custom-order/services/utils.js +152 -0
- package/dist/server/custom-order/services/utils.js.map +1 -0
- package/dist/server/custom-order/services/utils.mjs +148 -0
- package/dist/server/custom-order/services/utils.mjs.map +1 -0
- package/dist/server/custom-order/utils.js +13 -0
- package/dist/server/custom-order/utils.js.map +1 -0
- package/dist/server/custom-order/utils.mjs +10 -0
- package/dist/server/custom-order/utils.mjs.map +1 -0
- package/dist/server/history/constants.js +2 -1
- package/dist/server/history/constants.js.map +1 -1
- package/dist/server/history/constants.mjs +2 -1
- package/dist/server/history/constants.mjs.map +1 -1
- package/dist/server/history/controllers/history-version.js +6 -2
- package/dist/server/history/controllers/history-version.js.map +1 -1
- package/dist/server/history/controllers/history-version.mjs +6 -2
- package/dist/server/history/controllers/history-version.mjs.map +1 -1
- package/dist/server/history/services/history.js +23 -6
- package/dist/server/history/services/history.js.map +1 -1
- package/dist/server/history/services/history.mjs +24 -7
- package/dist/server/history/services/history.mjs.map +1 -1
- package/dist/server/history/services/lifecycles.js +2 -16
- package/dist/server/history/services/lifecycles.js.map +1 -1
- package/dist/server/history/services/lifecycles.mjs +2 -16
- package/dist/server/history/services/lifecycles.mjs.map +1 -1
- package/dist/server/register.js +4 -0
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs +4 -0
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/routes/index.js +3 -1
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/index.mjs +2 -0
- package/dist/server/routes/index.mjs.map +1 -1
- package/dist/server/services/content-types.js +2 -2
- package/dist/server/services/content-types.js.map +1 -1
- package/dist/server/services/content-types.mjs +2 -2
- package/dist/server/services/content-types.mjs.map +1 -1
- package/dist/server/services/document-manager.js +13 -0
- package/dist/server/services/document-manager.js.map +1 -1
- package/dist/server/services/document-manager.mjs +14 -1
- package/dist/server/services/document-manager.mjs.map +1 -1
- package/dist/server/services/index.js +3 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs +2 -0
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/utils/configuration/settings.js +2 -1
- package/dist/server/services/utils/configuration/settings.js.map +1 -1
- package/dist/server/services/utils/configuration/settings.mjs +2 -1
- package/dist/server/services/utils/configuration/settings.mjs.map +1 -1
- package/dist/server/src/audit-logs.d.ts +40 -0
- package/dist/server/src/audit-logs.d.ts.map +1 -0
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/collection-types.d.ts +1 -1
- package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
- package/dist/server/src/controllers/content-types.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +21 -3
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/relations.d.ts +19 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/single-types.d.ts +1 -1
- package/dist/server/src/controllers/single-types.d.ts.map +1 -1
- package/dist/server/src/custom-order/constants.d.ts +18 -0
- package/dist/server/src/custom-order/constants.d.ts.map +1 -0
- package/dist/server/src/custom-order/controllers/custom-order.d.ts +8 -0
- package/dist/server/src/custom-order/controllers/custom-order.d.ts.map +1 -0
- package/dist/server/src/custom-order/controllers/index.d.ts +3 -0
- package/dist/server/src/custom-order/controllers/index.d.ts.map +1 -0
- package/dist/server/src/custom-order/index.d.ts +8 -0
- package/dist/server/src/custom-order/index.d.ts.map +1 -0
- package/dist/server/src/custom-order/routes/custom-order.d.ts +4 -0
- package/dist/server/src/custom-order/routes/custom-order.d.ts.map +1 -0
- package/dist/server/src/custom-order/routes/index.d.ts +10 -0
- package/dist/server/src/custom-order/routes/index.d.ts.map +1 -0
- package/dist/server/src/custom-order/services/custom-order.d.ts +43 -0
- package/dist/server/src/custom-order/services/custom-order.d.ts.map +1 -0
- package/dist/server/src/custom-order/services/document-middleware.d.ts +16 -0
- package/dist/server/src/custom-order/services/document-middleware.d.ts.map +1 -0
- package/dist/server/src/custom-order/services/index.d.ts +24 -0
- package/dist/server/src/custom-order/services/index.d.ts.map +1 -0
- package/dist/server/src/custom-order/services/utils.d.ts +34 -0
- package/dist/server/src/custom-order/services/utils.d.ts.map +1 -0
- package/dist/server/src/custom-order/utils.d.ts +6 -0
- package/dist/server/src/custom-order/utils.d.ts.map +1 -0
- package/dist/server/src/history/constants.d.ts.map +1 -1
- package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
- package/dist/server/src/history/services/history.d.ts.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +22 -6
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/services/content-types.d.ts +1 -3
- package/dist/server/src/services/content-types.d.ts.map +1 -1
- package/dist/server/src/services/document-manager.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +1 -3
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
- package/dist/shared/contracts/content-types.d.ts +5 -0
- package/dist/shared/contracts/content-types.d.ts.map +1 -1
- package/dist/shared/contracts/custom-order.d.ts +33 -0
- package/dist/shared/contracts/custom-order.d.ts.map +1 -0
- package/dist/shared/contracts/custom-order.js +3 -0
- package/dist/shared/contracts/custom-order.js.map +1 -0
- package/dist/shared/contracts/custom-order.mjs +2 -0
- package/dist/shared/contracts/custom-order.mjs.map +1 -0
- package/dist/shared/contracts/history-versions.d.ts +0 -1
- package/dist/shared/contracts/history-versions.d.ts.map +1 -1
- package/dist/shared/contracts/index.d.ts +1 -0
- package/dist/shared/contracts/index.d.ts.map +1 -1
- package/dist/shared/contracts/index.js +2 -0
- package/dist/shared/contracts/index.js.map +1 -1
- package/dist/shared/contracts/index.mjs +2 -0
- package/dist/shared/contracts/index.mjs.map +1 -1
- package/package.json +8 -8
|
@@ -9,6 +9,8 @@ import { useIntl } from 'react-intl';
|
|
|
9
9
|
import { useParams, useNavigate, Link } from 'react-router-dom';
|
|
10
10
|
import { styled } from 'styled-components';
|
|
11
11
|
import { InjectionZone } from '../../components/InjectionZone.mjs';
|
|
12
|
+
import { COLLECTION_TYPES } from '../../constants/collections.mjs';
|
|
13
|
+
import { CUSTOM_ORDER_FIELD, isCustomOrderFeatureEnabled, CUSTOM_ORDER_SORT } from '../../constants/customOrder.mjs';
|
|
12
14
|
import { HOOKS } from '../../constants/hooks.mjs';
|
|
13
15
|
import { PERMISSIONS } from '../../constants/plugin.mjs';
|
|
14
16
|
import { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC.mjs';
|
|
@@ -23,6 +25,7 @@ import { getTranslation } from '../../utils/translations.mjs';
|
|
|
23
25
|
import { getDisplayName } from '../../utils/users.mjs';
|
|
24
26
|
import { DocumentStatus } from '../EditView/components/DocumentStatus.mjs';
|
|
25
27
|
import { BulkActionsRenderer } from './components/BulkActions/Actions.mjs';
|
|
28
|
+
import { useCustomOrder, CustomOrder } from './components/CustomOrder.mjs';
|
|
26
29
|
import { listViewFilters } from './components/Filters.mjs';
|
|
27
30
|
import { TableActions } from './components/TableActions.mjs';
|
|
28
31
|
import { CellContent, hasContent } from './components/TableCells/CellContent.mjs';
|
|
@@ -41,6 +44,16 @@ const NON_LINKABLE_TYPES = new Set([
|
|
|
41
44
|
* -----------------------------------------------------------------------------------------------*/ const LayoutsHeaderCustom = styled(Layouts.Header)`
|
|
42
45
|
overflow-wrap: anywhere;
|
|
43
46
|
`;
|
|
47
|
+
/**
|
|
48
|
+
* When the entries of the collection type follow a custom order, that order is
|
|
49
|
+
* what the list shows unless the user sorts on a column.
|
|
50
|
+
*/ const hasCustomOrderEnabled = (collectionType, settings)=>collectionType === COLLECTION_TYPES && settings.customOrder === true && isCustomOrderFeatureEnabled();
|
|
51
|
+
const getDefaultSort = (settings, hasCustomOrder)=>{
|
|
52
|
+
if (hasCustomOrder) {
|
|
53
|
+
return CUSTOM_ORDER_SORT;
|
|
54
|
+
}
|
|
55
|
+
return settings.defaultSortBy ? `${settings.defaultSortBy}:${settings.defaultSortOrder}` : '';
|
|
56
|
+
};
|
|
44
57
|
const ListViewPage = ()=>{
|
|
45
58
|
const { trackUsage } = useTracking();
|
|
46
59
|
const navigate = useNavigate();
|
|
@@ -156,11 +169,26 @@ const ListViewPage = ()=>{
|
|
|
156
169
|
schema?.attributes,
|
|
157
170
|
schema?.uid
|
|
158
171
|
]);
|
|
172
|
+
const hasCustomOrder = hasCustomOrderEnabled(collectionType, list.settings);
|
|
159
173
|
const [{ query }, setQuery] = useQueryParams({
|
|
160
174
|
page: '1',
|
|
161
175
|
pageSize: list.settings.pageSize.toString(),
|
|
162
|
-
sort: list.settings
|
|
176
|
+
sort: getDefaultSort(list.settings, hasCustomOrder)
|
|
163
177
|
});
|
|
178
|
+
// A sort on the custom order can be left over in the URL or in the saved view
|
|
179
|
+
// after the setting has been turned off.
|
|
180
|
+
React.useEffect(()=>{
|
|
181
|
+
if (!isLoadingLayout && !hasCustomOrder && typeof query.sort === 'string' && query.sort.startsWith(`${CUSTOM_ORDER_FIELD}:`)) {
|
|
182
|
+
setQuery(withEncodedUserParams(query, {
|
|
183
|
+
sort: undefined
|
|
184
|
+
}), 'push', true);
|
|
185
|
+
}
|
|
186
|
+
}, [
|
|
187
|
+
hasCustomOrder,
|
|
188
|
+
isLoadingLayout,
|
|
189
|
+
query,
|
|
190
|
+
setQuery
|
|
191
|
+
]);
|
|
164
192
|
React.useEffect(()=>{
|
|
165
193
|
if (!configurationReady || !schema?.attributes || schema.uid !== model) {
|
|
166
194
|
return;
|
|
@@ -225,7 +253,7 @@ const ListViewPage = ()=>{
|
|
|
225
253
|
query,
|
|
226
254
|
setQuery
|
|
227
255
|
]);
|
|
228
|
-
const { data, error, isLoading, isFetching } = useGetAllDocumentsQuery({
|
|
256
|
+
const { data, error, isLoading, isFetching, fulfilledTimeStamp } = useGetAllDocumentsQuery({
|
|
229
257
|
model,
|
|
230
258
|
params
|
|
231
259
|
}, {
|
|
@@ -263,10 +291,19 @@ const ListViewPage = ()=>{
|
|
|
263
291
|
query,
|
|
264
292
|
navigate
|
|
265
293
|
]);
|
|
266
|
-
const { canCreate, isLoadingActionsRBAC } = useDocumentRBAC('ListViewPage', ({ canCreate, isLoading })=>({
|
|
294
|
+
const { canCreate, canUpdate, isLoadingActionsRBAC } = useDocumentRBAC('ListViewPage', ({ canCreate, canUpdate, isLoading })=>({
|
|
267
295
|
canCreate,
|
|
296
|
+
canUpdate,
|
|
268
297
|
isLoadingActionsRBAC: isLoading
|
|
269
298
|
}));
|
|
299
|
+
const customOrder = useCustomOrder({
|
|
300
|
+
model,
|
|
301
|
+
isAvailable: hasCustomOrder,
|
|
302
|
+
canUpdate: canUpdate === true,
|
|
303
|
+
sort: query.sort,
|
|
304
|
+
params,
|
|
305
|
+
results,
|
|
306
|
+
pagination});
|
|
270
307
|
const runHookWaterfall = useStrapiApp('ListViewPage', ({ runHookWaterfall })=>runHookWaterfall);
|
|
271
308
|
/**
|
|
272
309
|
* Run the waterfall and then inject our additional table headers.
|
|
@@ -305,10 +342,26 @@ const ListViewPage = ()=>{
|
|
|
305
342
|
sortable: !hasStatusFilter
|
|
306
343
|
});
|
|
307
344
|
}
|
|
345
|
+
if (hasCustomOrder) {
|
|
346
|
+
// Sorting on this column is how the user comes back to the custom order
|
|
347
|
+
formattedHeaders.unshift({
|
|
348
|
+
attribute: {
|
|
349
|
+
type: 'custom'
|
|
350
|
+
},
|
|
351
|
+
name: CUSTOM_ORDER_FIELD,
|
|
352
|
+
label: formatMessage({
|
|
353
|
+
id: getTranslation('containers.list.table-headers.order'),
|
|
354
|
+
defaultMessage: 'order'
|
|
355
|
+
}),
|
|
356
|
+
searchable: false,
|
|
357
|
+
sortable: true
|
|
358
|
+
});
|
|
359
|
+
}
|
|
308
360
|
return formattedHeaders;
|
|
309
361
|
}, [
|
|
310
362
|
displayedHeaders,
|
|
311
363
|
formatMessage,
|
|
364
|
+
hasCustomOrder,
|
|
312
365
|
hasStatusFilter,
|
|
313
366
|
list,
|
|
314
367
|
runHookWaterfall,
|
|
@@ -346,7 +399,7 @@ const ListViewPage = ()=>{
|
|
|
346
399
|
* Only genuinely interactive cells are skipped: relations, media, components,
|
|
347
400
|
* dynamic zones (they embed their own links/menus), plugin-formatted columns
|
|
348
401
|
* (`cellFormatter`), and the synthetic `status` column.
|
|
349
|
-
*/ const linkCandidates = tableHeaders.filter(({ name, attribute, cellFormatter })=>name !== 'status' && typeof cellFormatter !== 'function' && attribute && !NON_LINKABLE_TYPES.has(attribute.type));
|
|
402
|
+
*/ const linkCandidates = tableHeaders.filter(({ name, attribute, cellFormatter })=>name !== 'status' && name !== CUSTOM_ORDER_FIELD && typeof cellFormatter !== 'function' && attribute && !NON_LINKABLE_TYPES.has(attribute.type));
|
|
350
403
|
// The link column for a given row: the first candidate that actually has a
|
|
351
404
|
// value (uses CellContent's own hasContent so it matches the "-" the cell
|
|
352
405
|
// would otherwise render). documentId is checked directly (its own cell).
|
|
@@ -461,141 +514,152 @@ const ListViewPage = ()=>{
|
|
|
461
514
|
direction: "column",
|
|
462
515
|
alignItems: "stretch",
|
|
463
516
|
children: [
|
|
464
|
-
/*#__PURE__*/
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
'
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
517
|
+
/*#__PURE__*/ jsx(CustomOrder.Root, {
|
|
518
|
+
state: customOrder,
|
|
519
|
+
children: /*#__PURE__*/ jsxs(Table.Root, {
|
|
520
|
+
rows: customOrder.rows,
|
|
521
|
+
headers: tableHeaders,
|
|
522
|
+
isLoading: isFetching && !customOrder.isMoving,
|
|
523
|
+
children: [
|
|
524
|
+
/*#__PURE__*/ jsx(TableActionsBar, {}),
|
|
525
|
+
/*#__PURE__*/ jsxs(Table.Content, {
|
|
526
|
+
children: [
|
|
527
|
+
/*#__PURE__*/ jsxs(Table.Head, {
|
|
528
|
+
children: [
|
|
529
|
+
/*#__PURE__*/ jsx(Table.HeaderCheckboxCell, {}),
|
|
530
|
+
tableHeaders.map((header)=>/*#__PURE__*/ jsx(Table.HeaderCell, {
|
|
531
|
+
...header
|
|
532
|
+
}, header.name))
|
|
533
|
+
]
|
|
534
|
+
}),
|
|
535
|
+
/*#__PURE__*/ jsx(Table.Loading, {}),
|
|
536
|
+
/*#__PURE__*/ jsx(Table.Empty, {
|
|
537
|
+
action: canCreate ? /*#__PURE__*/ jsx(CreateButton, {
|
|
538
|
+
variant: "secondary"
|
|
539
|
+
}) : null
|
|
540
|
+
}),
|
|
541
|
+
/*#__PURE__*/ jsx(Table.Body, {
|
|
542
|
+
children: customOrder.rows.map((row, index)=>{
|
|
543
|
+
const rowLinkField = getRowLinkField(row);
|
|
544
|
+
return /*#__PURE__*/ jsxs(CustomOrder.Row, {
|
|
545
|
+
cursor: "pointer",
|
|
546
|
+
documentId: row.documentId,
|
|
547
|
+
onClick: handleRowClick(row.documentId),
|
|
548
|
+
children: [
|
|
549
|
+
/*#__PURE__*/ jsx(Table.CheckboxCell, {
|
|
550
|
+
id: row.id
|
|
551
|
+
}),
|
|
552
|
+
tableHeaders.map(({ cellFormatter, ...header })=>{
|
|
553
|
+
if (header.name === CUSTOM_ORDER_FIELD) {
|
|
554
|
+
return /*#__PURE__*/ jsx(CustomOrder.PositionCell, {
|
|
555
|
+
documentId: row.documentId,
|
|
556
|
+
position: ((pagination?.page ?? 1) - 1) * (pagination?.pageSize ?? 0) + index + 1,
|
|
557
|
+
total: pagination?.total ?? customOrder.rows.length
|
|
558
|
+
}, header.name);
|
|
559
|
+
}
|
|
560
|
+
if (header.name === 'status') {
|
|
561
|
+
const { status } = row;
|
|
562
|
+
return /*#__PURE__*/ jsx(Table.Cell, {
|
|
563
|
+
children: /*#__PURE__*/ jsx(DocumentStatus, {
|
|
564
|
+
status: status,
|
|
565
|
+
maxWidth: 'min-content'
|
|
566
|
+
})
|
|
567
|
+
}, header.name);
|
|
568
|
+
}
|
|
569
|
+
if ([
|
|
570
|
+
'createdBy',
|
|
571
|
+
'updatedBy'
|
|
572
|
+
].includes(header.name.split('.')[0])) {
|
|
573
|
+
// Display the users full name
|
|
574
|
+
// Some entries doesn't have a user assigned as creator/updater (ex: entries created through content API)
|
|
575
|
+
// In this case, we display a dash
|
|
576
|
+
return /*#__PURE__*/ jsx(Table.Cell, {
|
|
577
|
+
children: /*#__PURE__*/ jsx(Typography, {
|
|
578
|
+
textColor: "neutral800",
|
|
579
|
+
children: row[header.name.split('.')[0]] ? getDisplayName(row[header.name.split('.')[0]]) : '-'
|
|
580
|
+
})
|
|
581
|
+
}, header.name);
|
|
582
|
+
}
|
|
583
|
+
if (header.name === 'documentId') {
|
|
584
|
+
// When documentId is the primary link column, only its
|
|
585
|
+
// id text becomes the link; the copy button stays outside.
|
|
586
|
+
const isDocumentIdLink = header.name === rowLinkField && Boolean(row.documentId);
|
|
587
|
+
return /*#__PURE__*/ jsx(Table.Cell, {
|
|
588
|
+
children: /*#__PURE__*/ jsxs(Flex, {
|
|
589
|
+
gap: 2,
|
|
590
|
+
alignItems: "center",
|
|
591
|
+
width: "100%",
|
|
592
|
+
minWidth: 0,
|
|
593
|
+
children: [
|
|
594
|
+
isDocumentIdLink ? /*#__PURE__*/ jsx(Typography, {
|
|
595
|
+
tag: Link,
|
|
596
|
+
to: {
|
|
597
|
+
pathname: row.documentId,
|
|
598
|
+
search: stringify({
|
|
599
|
+
plugins: query.plugins
|
|
600
|
+
})
|
|
601
|
+
},
|
|
602
|
+
onClick: (e)=>e.stopPropagation(),
|
|
603
|
+
textColor: "neutral800",
|
|
604
|
+
maxWidth: "30rem",
|
|
605
|
+
ellipsis: true,
|
|
606
|
+
children: row.documentId
|
|
607
|
+
}) : /*#__PURE__*/ jsx(Typography, {
|
|
608
|
+
textColor: "neutral800",
|
|
609
|
+
maxWidth: "30rem",
|
|
610
|
+
ellipsis: true,
|
|
611
|
+
children: row.documentId || '-'
|
|
556
612
|
}),
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
613
|
+
row.documentId && /*#__PURE__*/ jsx(IconButton, {
|
|
614
|
+
variant: "ghost",
|
|
615
|
+
size: "S",
|
|
616
|
+
label: formatMessage({
|
|
617
|
+
id: 'content-manager.actions.copy-documentId.label',
|
|
618
|
+
defaultMessage: 'Copy'
|
|
619
|
+
}),
|
|
620
|
+
onClick: (e)=>handleCopyDocumentId(e, row.documentId),
|
|
621
|
+
children: /*#__PURE__*/ jsx(Duplicate, {})
|
|
622
|
+
})
|
|
623
|
+
]
|
|
624
|
+
})
|
|
625
|
+
}, header.name);
|
|
626
|
+
}
|
|
627
|
+
if (typeof cellFormatter === 'function') {
|
|
628
|
+
return /*#__PURE__*/ jsx(Table.Cell, {
|
|
629
|
+
children: cellFormatter(row, header, {
|
|
630
|
+
collectionType,
|
|
631
|
+
model
|
|
632
|
+
})
|
|
633
|
+
}, header.name);
|
|
634
|
+
}
|
|
565
635
|
return /*#__PURE__*/ jsx(Table.Cell, {
|
|
566
|
-
children:
|
|
567
|
-
|
|
568
|
-
|
|
636
|
+
children: /*#__PURE__*/ jsx(CellContent, {
|
|
637
|
+
content: row[header.name.split('.')[0]],
|
|
638
|
+
rowId: row.documentId,
|
|
639
|
+
...header,
|
|
640
|
+
linkTo: header.name === rowLinkField ? {
|
|
641
|
+
pathname: row.documentId,
|
|
642
|
+
search: stringify({
|
|
643
|
+
plugins: query.plugins
|
|
644
|
+
})
|
|
645
|
+
} : undefined
|
|
569
646
|
})
|
|
570
647
|
}, header.name);
|
|
571
|
-
}
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
...header,
|
|
577
|
-
linkTo: header.name === rowLinkField ? {
|
|
578
|
-
pathname: row.documentId,
|
|
579
|
-
search: stringify({
|
|
580
|
-
plugins: query.plugins
|
|
581
|
-
})
|
|
582
|
-
} : undefined
|
|
648
|
+
}),
|
|
649
|
+
/*#__PURE__*/ jsx(ActionsCell, {
|
|
650
|
+
onClick: (e)=>e.stopPropagation(),
|
|
651
|
+
children: /*#__PURE__*/ jsx(TableActions, {
|
|
652
|
+
document: row
|
|
583
653
|
})
|
|
584
|
-
}, header.name);
|
|
585
|
-
}),
|
|
586
|
-
/*#__PURE__*/ jsx(ActionsCell, {
|
|
587
|
-
onClick: (e)=>e.stopPropagation(),
|
|
588
|
-
children: /*#__PURE__*/ jsx(TableActions, {
|
|
589
|
-
document: row
|
|
590
654
|
})
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
}
|
|
655
|
+
]
|
|
656
|
+
}, row.id);
|
|
657
|
+
})
|
|
594
658
|
})
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
659
|
+
]
|
|
660
|
+
})
|
|
661
|
+
]
|
|
662
|
+
})
|
|
599
663
|
}),
|
|
600
664
|
/*#__PURE__*/ jsxs(Pagination.Root, {
|
|
601
665
|
...pagination,
|