@contentful/field-editor-reference 6.12.1 → 6.13.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/cjs/__fixtures__/FakeSdk.js +6 -6
- package/dist/cjs/assets/WrappedAssetCard/FetchingWrappedAssetCard.js +9 -15
- package/dist/cjs/assets/WrappedAssetCard/WrappedAssetCard.js +3 -4
- package/dist/cjs/assets/WrappedAssetCard/WrappedAssetLink.js +2 -3
- package/dist/cjs/common/EntityStore.js +96 -32
- package/dist/cjs/components/EntityStatusBadge/EntityStatusBadge.js +5 -6
- package/dist/cjs/components/LinkActions/CombinedLinkActions.js +2 -2
- package/dist/cjs/entries/WrappedEntryCard/FetchingWrappedEntryCard.js +10 -22
- package/dist/cjs/entries/WrappedEntryCard/WrappedEntryCard.js +3 -4
- package/dist/cjs/resources/Cards/ResourceCard.spec.js +14 -11
- package/dist/esm/__fixtures__/FakeSdk.js +7 -7
- package/dist/esm/assets/WrappedAssetCard/FetchingWrappedAssetCard.js +10 -16
- package/dist/esm/assets/WrappedAssetCard/WrappedAssetCard.js +3 -4
- package/dist/esm/assets/WrappedAssetCard/WrappedAssetLink.js +2 -3
- package/dist/esm/common/EntityStore.js +97 -33
- package/dist/esm/components/EntityStatusBadge/EntityStatusBadge.js +5 -6
- package/dist/esm/components/LinkActions/CombinedLinkActions.js +2 -2
- package/dist/esm/entries/WrappedEntryCard/FetchingWrappedEntryCard.js +11 -18
- package/dist/esm/entries/WrappedEntryCard/WrappedEntryCard.js +3 -4
- package/dist/esm/resources/Cards/ResourceCard.spec.js +14 -11
- package/dist/types/assets/WrappedAssetCard/WrappedAssetCard.d.ts +4 -5
- package/dist/types/assets/WrappedAssetCard/WrappedAssetLink.d.ts +3 -4
- package/dist/types/common/EntityStore.d.ts +7 -2
- package/dist/types/common/customCardTypes.d.ts +7 -8
- package/dist/types/components/EntityStatusBadge/EntityStatusBadge.d.ts +4 -5
- package/dist/types/entries/WrappedEntryCard/WrappedEntryCard.d.ts +4 -5
- package/package.json +5 -5
|
@@ -57,8 +57,8 @@ function newReferenceEditorFakeSdk(props) {
|
|
|
57
57
|
const sdk = {
|
|
58
58
|
field,
|
|
59
59
|
locales,
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
cma: {
|
|
61
|
+
entry: {
|
|
62
62
|
get: async ({ entryId })=>{
|
|
63
63
|
if (props?.fetchDelay) {
|
|
64
64
|
await delay(props.fetchDelay);
|
|
@@ -75,7 +75,7 @@ function newReferenceEditorFakeSdk(props) {
|
|
|
75
75
|
return Promise.reject({});
|
|
76
76
|
}
|
|
77
77
|
},
|
|
78
|
-
|
|
78
|
+
asset: {
|
|
79
79
|
get: async ({ assetId })=>{
|
|
80
80
|
if (props?.fetchDelay) {
|
|
81
81
|
await delay(props.fetchDelay);
|
|
@@ -92,7 +92,7 @@ function newReferenceEditorFakeSdk(props) {
|
|
|
92
92
|
return Promise.reject({});
|
|
93
93
|
}
|
|
94
94
|
},
|
|
95
|
-
|
|
95
|
+
space: {
|
|
96
96
|
get: async (params)=>{
|
|
97
97
|
if (params.spaceId === _fixtures.spaces.indifferent.sys.id) {
|
|
98
98
|
return _fixtures.spaces.indifferent;
|
|
@@ -100,7 +100,7 @@ function newReferenceEditorFakeSdk(props) {
|
|
|
100
100
|
return Promise.reject({});
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
|
-
|
|
103
|
+
contentType: {
|
|
104
104
|
get: async ({ contentTypeId })=>{
|
|
105
105
|
if (contentTypeId === _fixtures.contentTypes.published.sys.id) {
|
|
106
106
|
return _fixtures.contentTypes.published;
|
|
@@ -111,7 +111,7 @@ function newReferenceEditorFakeSdk(props) {
|
|
|
111
111
|
Locale: {
|
|
112
112
|
getMany: async ()=>_fixtures.locales.list
|
|
113
113
|
}
|
|
114
|
-
}
|
|
114
|
+
},
|
|
115
115
|
space: {
|
|
116
116
|
...space,
|
|
117
117
|
getCachedContentTypes () {
|
|
@@ -57,25 +57,20 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
57
57
|
return newObj;
|
|
58
58
|
}
|
|
59
59
|
function FetchingWrappedAssetCard(props) {
|
|
60
|
-
const {
|
|
61
|
-
const { data: asset, status } = (0, _EntityStore.useEntity)('Asset', props.assetId);
|
|
60
|
+
const { data: asset, status, currentEntity } = (0, _EntityStore.useEntity)('Asset', props.assetId);
|
|
62
61
|
const { getEntityScheduledActions } = (0, _EntityStore.useEntityLoader)();
|
|
63
62
|
const loadEntityScheduledActions = _react.useCallback(()=>getEntityScheduledActions('Asset', props.assetId), [
|
|
64
63
|
getEntityScheduledActions,
|
|
65
64
|
props.assetId
|
|
66
65
|
]);
|
|
66
|
+
const activeLocales = (0, _fieldeditorshared.useActiveLocales)(props.sdk);
|
|
67
67
|
const localesStatusMap = (0, _fieldeditorshared.useLocalePublishStatus)(asset, props.sdk.locales);
|
|
68
|
-
const {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
locales,
|
|
74
|
-
activeRelease,
|
|
75
|
-
releases
|
|
68
|
+
const { releaseStatusMap, releaseAction } = (0, _fieldeditorshared.useReleaseStatus)({
|
|
69
|
+
entity: asset,
|
|
70
|
+
previousEntityOnTimeline: currentEntity,
|
|
71
|
+
release: props.sdk.release,
|
|
72
|
+
locales: props.sdk.locales
|
|
76
73
|
});
|
|
77
|
-
const { releaseAction } = (0, _fieldeditorshared.getEntityReleaseStatus)(props.assetId, locales, activeRelease);
|
|
78
|
-
const activeLocales = (0, _fieldeditorshared.useActiveLocales)(props.sdk);
|
|
79
74
|
_react.useEffect(()=>{
|
|
80
75
|
if (asset) {
|
|
81
76
|
props.onAction && props.onAction({
|
|
@@ -140,9 +135,8 @@ function FetchingWrappedAssetCard(props) {
|
|
|
140
135
|
useLocalizedEntityStatus: props.sdk.parameters.instance.useLocalizedEntityStatus,
|
|
141
136
|
localesStatusMap,
|
|
142
137
|
activeLocales,
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
activeRelease,
|
|
138
|
+
releaseStatusMap,
|
|
139
|
+
release: props.sdk.release,
|
|
146
140
|
releaseAction
|
|
147
141
|
};
|
|
148
142
|
if (status === 'loading') {
|
|
@@ -86,7 +86,7 @@ function getFileType(file) {
|
|
|
86
86
|
});
|
|
87
87
|
return groupToIconMap[groupName] || 'archive';
|
|
88
88
|
}
|
|
89
|
-
const WrappedAssetCard = ({ asset, className, size, localeCode, defaultLocaleCode, activeLocales, localesStatusMap, isDisabled, isSelected, isClickable, useLocalizedEntityStatus, renderDragHandle, getEntityScheduledActions, onEdit, getAssetUrl, onRemove, releaseAction,
|
|
89
|
+
const WrappedAssetCard = ({ asset, className, size, localeCode, defaultLocaleCode, activeLocales, localesStatusMap, isDisabled, isSelected, isClickable, useLocalizedEntityStatus, renderDragHandle, getEntityScheduledActions, onEdit, getAssetUrl, onRemove, releaseAction, releaseStatusMap, release })=>{
|
|
90
90
|
const status = _fieldeditorshared.entityHelpers.getEntityStatus(asset.sys, useLocalizedEntityStatus ? localeCode : undefined);
|
|
91
91
|
if (status === 'deleted') {
|
|
92
92
|
return /*#__PURE__*/ _react.createElement(_components.MissingAssetCard, {
|
|
@@ -119,9 +119,8 @@ const WrappedAssetCard = ({ asset, className, size, localeCode, defaultLocaleCod
|
|
|
119
119
|
localesStatusMap: localesStatusMap,
|
|
120
120
|
activeLocales: activeLocales,
|
|
121
121
|
releaseAction: releaseAction,
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
activeRelease: activeRelease
|
|
122
|
+
releaseStatusMap: releaseStatusMap,
|
|
123
|
+
release: release
|
|
125
124
|
}),
|
|
126
125
|
src: entityFile && entityFile.url ? size === 'small' ? `${entityFile.url}?w=150&h=150&fit=thumb` : `${entityFile.url}?h=300` : '',
|
|
127
126
|
onClick: isClickable ? (e)=>{
|
|
@@ -86,9 +86,8 @@ const WrappedAssetLink = (props)=>{
|
|
|
86
86
|
localesStatusMap: props.localesStatusMap,
|
|
87
87
|
activeLocales: props.activeLocales,
|
|
88
88
|
releaseAction: props.releaseAction,
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
activeRelease: props.activeRelease
|
|
89
|
+
releaseStatusMap: props.releaseStatusMap,
|
|
90
|
+
release: props.release
|
|
92
91
|
}),
|
|
93
92
|
thumbnailElement: entityFile && (0, _fieldeditorshared.isValidImage)(entityFile) ? /*#__PURE__*/ _react.createElement(_components.AssetThumbnail, {
|
|
94
93
|
file: entityFile
|
|
@@ -241,11 +241,13 @@ async function fetchExternalResource({ urn, fetch, options, spaceId, environment
|
|
|
241
241
|
'resource-types',
|
|
242
242
|
spaceId,
|
|
243
243
|
environmentId
|
|
244
|
-
], ({ cmaClient })=>
|
|
244
|
+
], ({ cmaClient })=>{
|
|
245
|
+
return (0, _contentfulmanagement.fetchAll)(({ query })=>cmaClient.resourceType.getForEnvironment({
|
|
245
246
|
spaceId,
|
|
246
247
|
environmentId,
|
|
247
248
|
query
|
|
248
|
-
}), {})
|
|
249
|
+
}), {});
|
|
250
|
+
})
|
|
249
251
|
]);
|
|
250
252
|
const resourceTypeEntity = resourceTypes.find((rt)=>rt.sys.id === resourceType);
|
|
251
253
|
if (!resourceTypeEntity) {
|
|
@@ -265,6 +267,7 @@ async function fetchExternalResource({ urn, fetch, options, spaceId, environment
|
|
|
265
267
|
const [InternalServiceProvider, useFetch, useEntityLoader, useCurrentIds] = (0, _constate.default)(function useInitServices(props) {
|
|
266
268
|
const currentSpaceId = props.sdk.ids.space;
|
|
267
269
|
const currentEnvironmentId = props.sdk.ids.environmentAlias ?? props.sdk.ids.environment;
|
|
270
|
+
const releaseId = props.sdk.ids.release;
|
|
268
271
|
const environmentIds = (0, _react.useMemo)(()=>[
|
|
269
272
|
props.sdk.ids.environmentAlias,
|
|
270
273
|
props.sdk.ids.environment
|
|
@@ -275,13 +278,7 @@ const [InternalServiceProvider, useFetch, useEntityLoader, useCurrentIds] = (0,
|
|
|
275
278
|
const queryClient = (0, _queryClient.useQueryClient)();
|
|
276
279
|
const queryCache = queryClient.getQueryCache();
|
|
277
280
|
const entityChangeUnsubscribers = (0, _react.useRef)({});
|
|
278
|
-
const cmaClient =
|
|
279
|
-
apiAdapter: props.sdk.cmaAdapter
|
|
280
|
-
}, {
|
|
281
|
-
type: 'plain'
|
|
282
|
-
}), [
|
|
283
|
-
props.sdk.cmaAdapter
|
|
284
|
-
]);
|
|
281
|
+
const cmaClient = props.sdk.cma;
|
|
285
282
|
const queryQueue = (0, _react.useMemo)(()=>{
|
|
286
283
|
if (props.queryConcurrency) {
|
|
287
284
|
return new _pqueue.default({
|
|
@@ -304,38 +301,92 @@ const [InternalServiceProvider, useFetch, useEntityLoader, useCurrentIds] = (0,
|
|
|
304
301
|
queryQueue,
|
|
305
302
|
cmaClient
|
|
306
303
|
]);
|
|
307
|
-
const
|
|
304
|
+
const isReleaseRequestError = (0, _react.useCallback)(function isReleaseRequestError(error, spaceId, environmentId) {
|
|
305
|
+
return !!releaseId && (!spaceId || spaceId === currentSpaceId) && (!environmentId || environmentId === currentEnvironmentId) && error instanceof Error && 'status' in error && error.status === 404;
|
|
306
|
+
}, [
|
|
307
|
+
releaseId,
|
|
308
|
+
currentSpaceId,
|
|
309
|
+
currentEnvironmentId
|
|
310
|
+
]);
|
|
311
|
+
const getEntity = (0, _react.useCallback)(function getEntity(entityType, entityId, releaseId, options) {
|
|
308
312
|
const spaceId = options?.spaceId ?? currentSpaceId;
|
|
309
313
|
const environmentId = options?.environmentId ?? currentEnvironmentId;
|
|
310
314
|
const queryKey = [
|
|
311
315
|
entityType,
|
|
312
316
|
entityId,
|
|
313
317
|
spaceId,
|
|
314
|
-
environmentId
|
|
318
|
+
environmentId,
|
|
319
|
+
releaseId
|
|
315
320
|
];
|
|
316
|
-
return fetch(queryKey, ({ cmaClient })=>{
|
|
321
|
+
return fetch(queryKey, async ({ cmaClient })=>{
|
|
317
322
|
if (entityType === 'Entry') {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
+
try {
|
|
324
|
+
return cmaClient.entry.get({
|
|
325
|
+
entryId: entityId,
|
|
326
|
+
spaceId,
|
|
327
|
+
environmentId,
|
|
328
|
+
releaseId
|
|
329
|
+
});
|
|
330
|
+
} catch (error) {
|
|
331
|
+
if (isReleaseRequestError(error, spaceId, environmentId)) {
|
|
332
|
+
const currentEntry = await cmaClient.entry.get({
|
|
333
|
+
entryId: entityId,
|
|
334
|
+
spaceId,
|
|
335
|
+
environmentId,
|
|
336
|
+
releaseId: undefined
|
|
337
|
+
});
|
|
338
|
+
currentEntry.sys.release = {
|
|
339
|
+
sys: {
|
|
340
|
+
type: 'Link',
|
|
341
|
+
linkType: 'Release',
|
|
342
|
+
id: releaseId
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
return currentEntry;
|
|
346
|
+
}
|
|
347
|
+
throw error;
|
|
348
|
+
}
|
|
323
349
|
}
|
|
324
350
|
if (entityType === 'Asset') {
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
351
|
+
try {
|
|
352
|
+
return cmaClient.asset.get({
|
|
353
|
+
assetId: entityId,
|
|
354
|
+
spaceId,
|
|
355
|
+
environmentId,
|
|
356
|
+
releaseId
|
|
357
|
+
});
|
|
358
|
+
} catch (error) {
|
|
359
|
+
if (isReleaseRequestError(error, spaceId, environmentId)) {
|
|
360
|
+
const currentAsset = cmaClient.asset.get({
|
|
361
|
+
assetId: entityId,
|
|
362
|
+
spaceId,
|
|
363
|
+
environmentId,
|
|
364
|
+
releaseId: undefined
|
|
365
|
+
});
|
|
366
|
+
currentAsset.sys.release = {
|
|
367
|
+
sys: {
|
|
368
|
+
type: 'Link',
|
|
369
|
+
linkType: 'Release',
|
|
370
|
+
id: releaseId
|
|
371
|
+
}
|
|
372
|
+
};
|
|
373
|
+
return currentAsset;
|
|
374
|
+
}
|
|
375
|
+
throw error;
|
|
376
|
+
}
|
|
330
377
|
}
|
|
331
378
|
throw new UnsupportedError('Unsupported entity type');
|
|
332
379
|
}, options);
|
|
333
380
|
}, [
|
|
334
381
|
fetch,
|
|
335
382
|
currentSpaceId,
|
|
336
|
-
currentEnvironmentId
|
|
383
|
+
currentEnvironmentId,
|
|
384
|
+
isReleaseRequestError
|
|
337
385
|
]);
|
|
338
386
|
const getEntityScheduledActions = (0, _react.useCallback)(function getEntityScheduledActions(entityType, entityId, options) {
|
|
387
|
+
if (releaseId) {
|
|
388
|
+
return new Promise((resolve)=>resolve([]));
|
|
389
|
+
}
|
|
339
390
|
const fixedEntityCacheId = 'scheduledActionEntityId';
|
|
340
391
|
const maxScheduledActions = 500;
|
|
341
392
|
const spaceId = options?.spaceId ?? currentSpaceId;
|
|
@@ -345,7 +396,8 @@ const [InternalServiceProvider, useFetch, useEntityLoader, useCurrentIds] = (0,
|
|
|
345
396
|
entityType,
|
|
346
397
|
fixedEntityCacheId,
|
|
347
398
|
spaceId,
|
|
348
|
-
environmentId
|
|
399
|
+
environmentId,
|
|
400
|
+
releaseId
|
|
349
401
|
];
|
|
350
402
|
return fetch(queryKey, async ({ cmaClient })=>{
|
|
351
403
|
const response = await cmaClient.scheduledActions.getMany({
|
|
@@ -362,7 +414,8 @@ const [InternalServiceProvider, useFetch, useEntityLoader, useCurrentIds] = (0,
|
|
|
362
414
|
}, [
|
|
363
415
|
fetch,
|
|
364
416
|
currentSpaceId,
|
|
365
|
-
currentEnvironmentId
|
|
417
|
+
currentEnvironmentId,
|
|
418
|
+
releaseId
|
|
366
419
|
]);
|
|
367
420
|
const getResource = (0, _react.useCallback)(function getResource(resourceType, urn, options) {
|
|
368
421
|
const queryKey = [
|
|
@@ -490,23 +543,34 @@ const [InternalServiceProvider, useFetch, useEntityLoader, useCurrentIds] = (0,
|
|
|
490
543
|
getResourceProvider
|
|
491
544
|
}), ({ ids })=>({
|
|
492
545
|
environment: ids.environmentAlias ?? ids.environment,
|
|
493
|
-
space: ids.space
|
|
546
|
+
space: ids.space,
|
|
547
|
+
releaseId: ids.release
|
|
494
548
|
}));
|
|
495
549
|
function useEntity(entityType, entityId, options) {
|
|
496
|
-
const { space, environment } = useCurrentIds();
|
|
550
|
+
const { space, environment, releaseId } = useCurrentIds();
|
|
497
551
|
const { getEntity } = useEntityLoader();
|
|
498
|
-
const
|
|
552
|
+
const { status, data } = (0, _queryClient.useQuery)([
|
|
499
553
|
entityType,
|
|
500
554
|
entityId,
|
|
501
555
|
options?.spaceId ?? space,
|
|
502
|
-
options?.environmentId ?? environment
|
|
503
|
-
|
|
504
|
-
|
|
556
|
+
options?.environmentId ?? environment,
|
|
557
|
+
releaseId
|
|
558
|
+
], ()=>getEntity(entityType, entityId, releaseId, options), {
|
|
505
559
|
enabled: options?.enabled
|
|
506
560
|
});
|
|
561
|
+
const { data: currentEntity } = (0, _queryClient.useQuery)([
|
|
562
|
+
entityType,
|
|
563
|
+
entityId,
|
|
564
|
+
options?.spaceId ?? space,
|
|
565
|
+
options?.environmentId ?? environment,
|
|
566
|
+
undefined
|
|
567
|
+
], ()=>getEntity(entityType, entityId, undefined, options), {
|
|
568
|
+
enabled: options?.enabled && !!releaseId
|
|
569
|
+
});
|
|
507
570
|
return {
|
|
508
571
|
status,
|
|
509
|
-
data
|
|
572
|
+
data,
|
|
573
|
+
currentEntity
|
|
510
574
|
};
|
|
511
575
|
}
|
|
512
576
|
function useResource(resourceType, urn, { locale, ...options } = {}) {
|
|
@@ -18,20 +18,19 @@ function _interop_require_default(obj) {
|
|
|
18
18
|
default: obj
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
function EntityStatusBadge({ entityType, getEntityScheduledActions, status, useLocalizedEntityStatus, localesStatusMap, activeLocales, entity,
|
|
21
|
+
function EntityStatusBadge({ entityType, getEntityScheduledActions, status, useLocalizedEntityStatus, localesStatusMap, activeLocales, entity, releaseStatusMap, releaseAction, release, ...props }) {
|
|
22
22
|
const { isError, isLoading, jobs } = (0, _ScheduledIconWithTooltip.useScheduledActions)({
|
|
23
23
|
entityId: entity.sys.id,
|
|
24
24
|
entityType,
|
|
25
25
|
getEntityScheduledActions
|
|
26
26
|
});
|
|
27
|
-
if (
|
|
27
|
+
if (release && releaseStatusMap && useLocalizedEntityStatus && activeLocales) {
|
|
28
28
|
return /*#__PURE__*/ _react.default.createElement(_fieldeditorshared.ReleaseEntityStatusPopover, {
|
|
29
|
-
|
|
30
|
-
activeLocales: activeLocales
|
|
31
|
-
isLoading: isReleasesLoading
|
|
29
|
+
releaseStatusMap: releaseStatusMap,
|
|
30
|
+
activeLocales: activeLocales
|
|
32
31
|
});
|
|
33
32
|
}
|
|
34
|
-
if (
|
|
33
|
+
if (release && releaseAction) {
|
|
35
34
|
return /*#__PURE__*/ _react.default.createElement(_fieldeditorshared.ReleaseEntityStatusBadge, {
|
|
36
35
|
action: releaseAction
|
|
37
36
|
});
|
|
@@ -84,12 +84,12 @@ function CombinedEntryLinkActions(props) {
|
|
|
84
84
|
onSelect: (contentTypeId)=>{
|
|
85
85
|
return contentTypeId ? props.onCreate(contentTypeId) : Promise.resolve();
|
|
86
86
|
},
|
|
87
|
-
customDropdownItems: props.canLinkEntity ? /*#__PURE__*/ _react.createElement(_f36components.Menu
|
|
87
|
+
customDropdownItems: props.canLinkEntity ? /*#__PURE__*/ _react.createElement(_f36components.Menu.Item, {
|
|
88
88
|
testId: testIds.linkExisting,
|
|
89
89
|
onClick: ()=>{
|
|
90
90
|
props.onLinkExisting();
|
|
91
91
|
}
|
|
92
|
-
}, "Add existing content")
|
|
92
|
+
}, "Add existing content") : undefined
|
|
93
93
|
});
|
|
94
94
|
} else if (props.canLinkEntity) {
|
|
95
95
|
return /*#__PURE__*/ _react.createElement(_f36components.Button, {
|
|
@@ -11,15 +11,9 @@ Object.defineProperty(exports, "FetchingWrappedEntryCard", {
|
|
|
11
11
|
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
12
12
|
const _f36components = require("@contentful/f36-components");
|
|
13
13
|
const _fieldeditorshared = require("@contentful/field-editor-shared");
|
|
14
|
-
const _get = /*#__PURE__*/ _interop_require_default(require("lodash/get"));
|
|
15
14
|
const _EntityStore = require("../../common/EntityStore");
|
|
16
15
|
const _components = require("../../components");
|
|
17
16
|
const _WrappedEntryCard = require("./WrappedEntryCard");
|
|
18
|
-
function _interop_require_default(obj) {
|
|
19
|
-
return obj && obj.__esModule ? obj : {
|
|
20
|
-
default: obj
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
17
|
function _getRequireWildcardCache(nodeInterop) {
|
|
24
18
|
if (typeof WeakMap !== "function") return null;
|
|
25
19
|
var cacheBabelInterop = new WeakMap();
|
|
@@ -81,24 +75,19 @@ async function openEntry(sdk, entryId, options) {
|
|
|
81
75
|
return slide;
|
|
82
76
|
}
|
|
83
77
|
function FetchingWrappedEntryCard(props) {
|
|
84
|
-
const {
|
|
85
|
-
const { data: entry, status } = (0, _EntityStore.useEntity)('Entry', props.entryId);
|
|
78
|
+
const { data: entry, status, currentEntity } = (0, _EntityStore.useEntity)('Entry', props.entryId);
|
|
86
79
|
const { getEntityScheduledActions } = (0, _EntityStore.useEntityLoader)();
|
|
87
80
|
const loadEntityScheduledActions = _react.useCallback(()=>getEntityScheduledActions('Entry', props.entryId), [
|
|
88
81
|
getEntityScheduledActions,
|
|
89
82
|
props.entryId
|
|
90
83
|
]);
|
|
91
84
|
const localesStatusMap = (0, _fieldeditorshared.useLocalePublishStatus)(entry, props.sdk.locales);
|
|
92
|
-
const {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
locales,
|
|
98
|
-
activeRelease,
|
|
99
|
-
releases
|
|
85
|
+
const { releaseStatusMap, releaseAction } = (0, _fieldeditorshared.useReleaseStatus)({
|
|
86
|
+
entity: entry,
|
|
87
|
+
previousEntityOnTimeline: currentEntity,
|
|
88
|
+
release: props.sdk.release,
|
|
89
|
+
locales: props.sdk.locales
|
|
100
90
|
});
|
|
101
|
-
const { releaseAction } = (0, _fieldeditorshared.getEntityReleaseStatus)(props.entryId, locales, activeRelease);
|
|
102
91
|
const size = props.viewType === 'link' ? 'small' : 'default';
|
|
103
92
|
const { getEntity } = (0, _EntityStore.useEntityLoader)();
|
|
104
93
|
const getAsset = (assetId)=>getEntity('Asset', assetId);
|
|
@@ -111,7 +100,7 @@ function FetchingWrappedEntryCard(props) {
|
|
|
111
100
|
entity: 'Entry',
|
|
112
101
|
type: 'edit',
|
|
113
102
|
id: props.entryId,
|
|
114
|
-
contentTypeId:
|
|
103
|
+
contentTypeId: entry.sys.contentType.sys.id,
|
|
115
104
|
slide
|
|
116
105
|
});
|
|
117
106
|
};
|
|
@@ -121,7 +110,7 @@ function FetchingWrappedEntryCard(props) {
|
|
|
121
110
|
entity: 'Entry',
|
|
122
111
|
type: 'delete',
|
|
123
112
|
id: props.entryId,
|
|
124
|
-
contentTypeId:
|
|
113
|
+
contentTypeId: entry.sys.contentType.sys.id
|
|
125
114
|
});
|
|
126
115
|
};
|
|
127
116
|
_react.useEffect(()=>{
|
|
@@ -176,9 +165,8 @@ function FetchingWrappedEntryCard(props) {
|
|
|
176
165
|
useLocalizedEntityStatus: props.sdk.parameters.instance.useLocalizedEntityStatus,
|
|
177
166
|
localesStatusMap,
|
|
178
167
|
activeLocales: props.activeLocales,
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
activeRelease,
|
|
168
|
+
releaseStatusMap,
|
|
169
|
+
release: props.sdk.release,
|
|
182
170
|
releaseAction
|
|
183
171
|
};
|
|
184
172
|
const { hasCardEditActions, hasCardMoveActions, hasCardRemoveActions } = props;
|
|
@@ -61,7 +61,7 @@ const defaultProps = {
|
|
|
61
61
|
hasCardMoveActions: true,
|
|
62
62
|
hasCardRemoveActions: true
|
|
63
63
|
};
|
|
64
|
-
function WrappedEntryCard({ entry, entryUrl, contentType, activeLocales, localeCode, defaultLocaleCode, localesStatusMap, useLocalizedEntityStatus, size, spaceName, isClickable, isDisabled, isSelected, hasCardMoveActions, hasCardEditActions, hasCardRemoveActions, renderDragHandle, getAsset, getEntityScheduledActions, onClick, onEdit, onRemove, onMoveTop, onMoveBottom, releaseAction,
|
|
64
|
+
function WrappedEntryCard({ entry, entryUrl, contentType, activeLocales, localeCode, defaultLocaleCode, localesStatusMap, useLocalizedEntityStatus, size, spaceName, isClickable, isDisabled, isSelected, hasCardMoveActions, hasCardEditActions, hasCardRemoveActions, renderDragHandle, getAsset, getEntityScheduledActions, onClick, onEdit, onRemove, onMoveTop, onMoveBottom, releaseAction, releaseStatusMap, release }) {
|
|
65
65
|
const [file, setFile] = _react.useState(null);
|
|
66
66
|
_react.useEffect(()=>{
|
|
67
67
|
let mounted = true;
|
|
@@ -129,9 +129,8 @@ function WrappedEntryCard({ entry, entryUrl, contentType, activeLocales, localeC
|
|
|
129
129
|
localesStatusMap: localesStatusMap,
|
|
130
130
|
activeLocales: activeLocales,
|
|
131
131
|
releaseAction: releaseAction,
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
activeRelease: activeRelease
|
|
132
|
+
releaseStatusMap: releaseStatusMap,
|
|
133
|
+
release: release
|
|
135
134
|
}),
|
|
136
135
|
icon: spaceName ? /*#__PURE__*/ _react.createElement(_SpaceName.SpaceName, {
|
|
137
136
|
spaceName: spaceName,
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
});
|
|
5
5
|
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
6
6
|
require("@testing-library/jest-dom");
|
|
7
|
-
const _fieldeditortestutils = require("@contentful/field-editor-test-utils");
|
|
8
7
|
const _react1 = require("@testing-library/react");
|
|
9
8
|
const _published_content_typejson = /*#__PURE__*/ _interop_require_default(require("../../__fixtures__/content-type/published_content_type.json"));
|
|
10
9
|
const _published_entry_non_masterjson = /*#__PURE__*/ _interop_require_default(require("../../__fixtures__/entry/published_entry_non_master.json"));
|
|
@@ -77,11 +76,11 @@ const sdk = {
|
|
|
77
76
|
locales: {
|
|
78
77
|
default: 'en-US'
|
|
79
78
|
},
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
cma: {
|
|
80
|
+
contentType: {
|
|
82
81
|
get: jest.fn().mockReturnValue(_published_content_typejson.default)
|
|
83
82
|
},
|
|
84
|
-
|
|
83
|
+
entry: {
|
|
85
84
|
get: jest.fn().mockImplementation(({ spaceId, environmentId, entryId })=>{
|
|
86
85
|
if (spaceId === 'space-id' && environmentId === 'master' && entryId === 'linked-entry-urn') {
|
|
87
86
|
return Promise.resolve(_published_entryjson.default);
|
|
@@ -92,7 +91,7 @@ const sdk = {
|
|
|
92
91
|
return Promise.reject(new Error());
|
|
93
92
|
})
|
|
94
93
|
},
|
|
95
|
-
|
|
94
|
+
locale: {
|
|
96
95
|
getMany: jest.fn().mockResolvedValue({
|
|
97
96
|
items: [
|
|
98
97
|
{
|
|
@@ -102,7 +101,7 @@ const sdk = {
|
|
|
102
101
|
]
|
|
103
102
|
})
|
|
104
103
|
},
|
|
105
|
-
|
|
104
|
+
resource: {
|
|
106
105
|
getMany: jest.fn().mockImplementation(({ spaceId, environmentId, resourceTypeId, query })=>{
|
|
107
106
|
if (spaceId === 'space-id' && environmentId === 'environment-id' && resourceTypeId === resolvableExternalResourceType && query['sys.urn[in]'] === resolvableExternalEntityUrn) {
|
|
108
107
|
return Promise.resolve({
|
|
@@ -122,8 +121,12 @@ const sdk = {
|
|
|
122
121
|
});
|
|
123
122
|
})
|
|
124
123
|
},
|
|
125
|
-
|
|
124
|
+
resourceType: {
|
|
126
125
|
getForEnvironment: jest.fn().mockImplementation(({ spaceId, environmentId })=>{
|
|
126
|
+
console.log('>> getForEnvironment', {
|
|
127
|
+
spaceId,
|
|
128
|
+
environmentId
|
|
129
|
+
});
|
|
127
130
|
if (spaceId === 'space-id' && environmentId === 'environment-id') {
|
|
128
131
|
return Promise.resolve({
|
|
129
132
|
items: [
|
|
@@ -137,16 +140,16 @@ const sdk = {
|
|
|
137
140
|
});
|
|
138
141
|
})
|
|
139
142
|
},
|
|
140
|
-
|
|
143
|
+
scheduledActions: {
|
|
141
144
|
getMany: jest.fn().mockResolvedValue({
|
|
142
145
|
items: [],
|
|
143
146
|
total: 0
|
|
144
147
|
})
|
|
145
148
|
},
|
|
146
|
-
|
|
149
|
+
space: {
|
|
147
150
|
get: jest.fn().mockResolvedValue(_indifferent_spacejson.default)
|
|
148
151
|
},
|
|
149
|
-
|
|
152
|
+
resourceProvider: {
|
|
150
153
|
get: jest.fn().mockImplementation(()=>{
|
|
151
154
|
return Promise.resolve({
|
|
152
155
|
function: {
|
|
@@ -157,7 +160,7 @@ const sdk = {
|
|
|
157
160
|
});
|
|
158
161
|
})
|
|
159
162
|
}
|
|
160
|
-
}
|
|
163
|
+
},
|
|
161
164
|
space: {
|
|
162
165
|
onEntityChanged: jest.fn()
|
|
163
166
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createFakeFieldAPI, createFakeLocalesAPI, createFakeSpaceAPI } from '@contentful/field-editor-test-utils';
|
|
2
2
|
import { assets, contentTypes, entries, locales as localesFixtures, spaces } from './fixtures';
|
|
3
3
|
const newLink = (linkType, id)=>({
|
|
4
4
|
sys: {
|
|
@@ -47,8 +47,8 @@ export function newReferenceEditorFakeSdk(props) {
|
|
|
47
47
|
const sdk = {
|
|
48
48
|
field,
|
|
49
49
|
locales,
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
cma: {
|
|
51
|
+
entry: {
|
|
52
52
|
get: async ({ entryId })=>{
|
|
53
53
|
if (props?.fetchDelay) {
|
|
54
54
|
await delay(props.fetchDelay);
|
|
@@ -65,7 +65,7 @@ export function newReferenceEditorFakeSdk(props) {
|
|
|
65
65
|
return Promise.reject({});
|
|
66
66
|
}
|
|
67
67
|
},
|
|
68
|
-
|
|
68
|
+
asset: {
|
|
69
69
|
get: async ({ assetId })=>{
|
|
70
70
|
if (props?.fetchDelay) {
|
|
71
71
|
await delay(props.fetchDelay);
|
|
@@ -82,7 +82,7 @@ export function newReferenceEditorFakeSdk(props) {
|
|
|
82
82
|
return Promise.reject({});
|
|
83
83
|
}
|
|
84
84
|
},
|
|
85
|
-
|
|
85
|
+
space: {
|
|
86
86
|
get: async (params)=>{
|
|
87
87
|
if (params.spaceId === spaces.indifferent.sys.id) {
|
|
88
88
|
return spaces.indifferent;
|
|
@@ -90,7 +90,7 @@ export function newReferenceEditorFakeSdk(props) {
|
|
|
90
90
|
return Promise.reject({});
|
|
91
91
|
}
|
|
92
92
|
},
|
|
93
|
-
|
|
93
|
+
contentType: {
|
|
94
94
|
get: async ({ contentTypeId })=>{
|
|
95
95
|
if (contentTypeId === contentTypes.published.sys.id) {
|
|
96
96
|
return contentTypes.published;
|
|
@@ -101,7 +101,7 @@ export function newReferenceEditorFakeSdk(props) {
|
|
|
101
101
|
Locale: {
|
|
102
102
|
getMany: async ()=>localesFixtures.list
|
|
103
103
|
}
|
|
104
|
-
}
|
|
104
|
+
},
|
|
105
105
|
space: {
|
|
106
106
|
...space,
|
|
107
107
|
getCachedContentTypes () {
|
|
@@ -1,30 +1,25 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { AssetCard, EntryCard } from '@contentful/f36-components';
|
|
3
|
-
import { useLocalePublishStatus, useActiveLocales,
|
|
3
|
+
import { useLocalePublishStatus, useActiveLocales, useReleaseStatus } from '@contentful/field-editor-shared';
|
|
4
4
|
import { useEntity, useEntityLoader } from '../../common/EntityStore';
|
|
5
5
|
import { MissingAssetCard } from '../../components';
|
|
6
6
|
import { WrappedAssetCard } from './WrappedAssetCard';
|
|
7
7
|
import { WrappedAssetLink } from './WrappedAssetLink';
|
|
8
8
|
export function FetchingWrappedAssetCard(props) {
|
|
9
|
-
const {
|
|
10
|
-
const { data: asset, status } = useEntity('Asset', props.assetId);
|
|
9
|
+
const { data: asset, status, currentEntity } = useEntity('Asset', props.assetId);
|
|
11
10
|
const { getEntityScheduledActions } = useEntityLoader();
|
|
12
11
|
const loadEntityScheduledActions = React.useCallback(()=>getEntityScheduledActions('Asset', props.assetId), [
|
|
13
12
|
getEntityScheduledActions,
|
|
14
13
|
props.assetId
|
|
15
14
|
]);
|
|
15
|
+
const activeLocales = useActiveLocales(props.sdk);
|
|
16
16
|
const localesStatusMap = useLocalePublishStatus(asset, props.sdk.locales);
|
|
17
|
-
const {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
locales,
|
|
23
|
-
activeRelease,
|
|
24
|
-
releases
|
|
17
|
+
const { releaseStatusMap, releaseAction } = useReleaseStatus({
|
|
18
|
+
entity: asset,
|
|
19
|
+
previousEntityOnTimeline: currentEntity,
|
|
20
|
+
release: props.sdk.release,
|
|
21
|
+
locales: props.sdk.locales
|
|
25
22
|
});
|
|
26
|
-
const { releaseAction } = getEntityReleaseStatus(props.assetId, locales, activeRelease);
|
|
27
|
-
const activeLocales = useActiveLocales(props.sdk);
|
|
28
23
|
React.useEffect(()=>{
|
|
29
24
|
if (asset) {
|
|
30
25
|
props.onAction && props.onAction({
|
|
@@ -89,9 +84,8 @@ export function FetchingWrappedAssetCard(props) {
|
|
|
89
84
|
useLocalizedEntityStatus: props.sdk.parameters.instance.useLocalizedEntityStatus,
|
|
90
85
|
localesStatusMap,
|
|
91
86
|
activeLocales,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
activeRelease,
|
|
87
|
+
releaseStatusMap,
|
|
88
|
+
release: props.sdk.release,
|
|
95
89
|
releaseAction
|
|
96
90
|
};
|
|
97
91
|
if (status === 'loading') {
|