@contentful/field-editor-shared 2.11.1 → 2.12.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/cjs/LocalePublishingEntityStatusBadge/LocalePublishingPopover.js +2 -9
- package/dist/cjs/ReleaseEntityStatusBadge/ReleaseEntityStatusPopover.js +2 -9
- package/dist/cjs/hooks/useActiveReleaseLocalesStatuses.js +13 -10
- package/dist/cjs/hooks/useActiveReleaseLocalesStatuses.spec.js +236 -245
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/utils/{getEntryReleaseStatus.js → getEntityReleaseStatus.js} +4 -4
- package/dist/cjs/utils/{getPreviousReleaseEntryVersion.js → getPreviousReleaseEntity.js} +5 -5
- package/dist/esm/LocalePublishingEntityStatusBadge/LocalePublishingPopover.js +2 -9
- package/dist/esm/ReleaseEntityStatusBadge/ReleaseEntityStatusPopover.js +2 -9
- package/dist/esm/hooks/useActiveReleaseLocalesStatuses.js +13 -10
- package/dist/esm/hooks/useActiveReleaseLocalesStatuses.spec.js +236 -245
- package/dist/esm/index.js +1 -1
- package/dist/esm/utils/{getEntryReleaseStatus.js → getEntityReleaseStatus.js} +2 -2
- package/dist/esm/utils/{getPreviousReleaseEntryVersion.js → getPreviousReleaseEntity.js} +3 -3
- package/dist/types/LocalePublishingEntityStatusBadge/LocalePublishingPopover.d.ts +1 -1
- package/dist/types/hooks/useActiveReleaseLocalesStatuses.d.ts +5 -4
- package/dist/types/index.d.ts +1 -1
- package/dist/types/types.d.ts +2 -2
- package/dist/types/utils/{getEntryReleaseStatus.d.ts → getEntityReleaseStatus.d.ts} +2 -2
- package/dist/types/utils/{getPreviousReleaseEntryVersion.d.ts → getPreviousReleaseEntity.d.ts} +3 -2
- package/package.json +7 -7
|
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
5
|
const _react = require("@testing-library/react");
|
|
6
|
-
const
|
|
6
|
+
const _getPreviousReleaseEntity = require("../utils/getPreviousReleaseEntity");
|
|
7
7
|
const _useActiveReleaseLocalesStatuses = require("./useActiveReleaseLocalesStatuses");
|
|
8
|
-
const buildEntry = (status)=>({
|
|
8
|
+
const buildEntry = (status, id = 'entry-1')=>({
|
|
9
9
|
sys: {
|
|
10
|
+
id,
|
|
11
|
+
type: 'Entry',
|
|
10
12
|
fieldStatus: {
|
|
11
13
|
'*': {
|
|
12
14
|
'en-US': status
|
|
@@ -14,17 +16,28 @@ const buildEntry = (status)=>({
|
|
|
14
16
|
}
|
|
15
17
|
}
|
|
16
18
|
});
|
|
17
|
-
const
|
|
19
|
+
const buildAsset = (status, id = 'asset-1')=>({
|
|
20
|
+
sys: {
|
|
21
|
+
id,
|
|
22
|
+
type: 'Asset',
|
|
23
|
+
fieldStatus: {
|
|
24
|
+
'*': {
|
|
25
|
+
'en-US': status
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
const createEntryBasedReleaseEntity = ({ entityId = 'entry-1', action = 'publish', entityType = 'Entry' })=>({
|
|
18
31
|
entity: {
|
|
19
32
|
sys: {
|
|
20
33
|
type: 'Link',
|
|
21
|
-
linkType:
|
|
22
|
-
id:
|
|
34
|
+
linkType: entityType,
|
|
35
|
+
id: entityId
|
|
23
36
|
}
|
|
24
37
|
},
|
|
25
38
|
action
|
|
26
39
|
});
|
|
27
|
-
const createEntryBasedRelease = ({
|
|
40
|
+
const createEntryBasedRelease = ({ entityId, action, entityType = 'Entry' } = {})=>({
|
|
28
41
|
title: 'Release 1',
|
|
29
42
|
sys: {
|
|
30
43
|
id: 'release-1',
|
|
@@ -34,18 +47,19 @@ const createEntryBasedRelease = ({ entryId, action } = {})=>({
|
|
|
34
47
|
entities: {
|
|
35
48
|
items: [
|
|
36
49
|
createEntryBasedReleaseEntity({
|
|
37
|
-
|
|
38
|
-
action
|
|
50
|
+
entityId,
|
|
51
|
+
action,
|
|
52
|
+
entityType
|
|
39
53
|
})
|
|
40
54
|
]
|
|
41
55
|
}
|
|
42
56
|
});
|
|
43
|
-
const createLocaleBasedReleaseEntity = ({
|
|
57
|
+
const createLocaleBasedReleaseEntity = ({ entityId = 'entry-1', verb = 'add', entityType = 'Entry' })=>({
|
|
44
58
|
entity: {
|
|
45
59
|
sys: {
|
|
46
60
|
type: 'Link',
|
|
47
|
-
linkType:
|
|
48
|
-
id:
|
|
61
|
+
linkType: entityType,
|
|
62
|
+
id: entityId
|
|
49
63
|
}
|
|
50
64
|
},
|
|
51
65
|
[verb]: {
|
|
@@ -56,7 +70,7 @@ const createLocaleBasedReleaseEntity = ({ entryId = 'entry-1', verb = 'add' })=>
|
|
|
56
70
|
}
|
|
57
71
|
}
|
|
58
72
|
});
|
|
59
|
-
const createLocaleBasedRelease = ({
|
|
73
|
+
const createLocaleBasedRelease = ({ entityId, verb, entityType = 'Entry' } = {})=>({
|
|
60
74
|
title: 'Release 1',
|
|
61
75
|
sys: {
|
|
62
76
|
id: 'release-1',
|
|
@@ -66,263 +80,240 @@ const createLocaleBasedRelease = ({ entryId, verb } = {})=>({
|
|
|
66
80
|
entities: {
|
|
67
81
|
items: [
|
|
68
82
|
createLocaleBasedReleaseEntity({
|
|
69
|
-
|
|
70
|
-
verb
|
|
83
|
+
entityId,
|
|
84
|
+
verb,
|
|
85
|
+
entityType
|
|
71
86
|
})
|
|
72
87
|
]
|
|
73
88
|
}
|
|
74
89
|
});
|
|
75
|
-
jest.mock('../utils/
|
|
76
|
-
|
|
90
|
+
jest.mock('../utils/getPreviousReleaseEntity', ()=>({
|
|
91
|
+
getPreviousReleaseEntity: jest.fn()
|
|
77
92
|
}));
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
code: 'en-US'
|
|
83
|
-
}
|
|
84
|
-
],
|
|
85
|
-
isActiveReleaseLoading: false,
|
|
86
|
-
releaseVersionMap: new Map(),
|
|
87
|
-
releases: {
|
|
88
|
-
items: []
|
|
89
|
-
}
|
|
90
|
-
};
|
|
93
|
+
const ENTITY_TYPES = [
|
|
94
|
+
'Entry',
|
|
95
|
+
'Asset'
|
|
96
|
+
];
|
|
91
97
|
describe('useActiveReleaseLocalesStatuses', ()=>{
|
|
92
98
|
beforeEach(()=>{
|
|
93
99
|
jest.clearAllMocks();
|
|
94
100
|
});
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
previousEntryVersion: {
|
|
103
|
-
sys: {
|
|
104
|
-
fieldStatus: {
|
|
105
|
-
'*': {
|
|
106
|
-
'en-US': 'draft'
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
const { result } = (0, _react.renderHook)(()=>(0, _useActiveReleaseLocalesStatuses.useActiveReleaseLocalesStatuses)({
|
|
113
|
-
...baseParams,
|
|
114
|
-
activeRelease: createEntryBasedRelease(),
|
|
115
|
-
currentEntryDraft: buildEntry('draft')
|
|
116
|
-
}));
|
|
117
|
-
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
118
|
-
variant: 'positive',
|
|
119
|
-
status: 'willPublish',
|
|
120
|
-
label: 'Will publish',
|
|
121
|
-
locale: {
|
|
101
|
+
ENTITY_TYPES.forEach((entityType)=>{
|
|
102
|
+
const entityId = entityType === 'Entry' ? 'entry-1' : 'asset-1';
|
|
103
|
+
const baseParams = {
|
|
104
|
+
entityId,
|
|
105
|
+
entityType,
|
|
106
|
+
locales: [
|
|
107
|
+
{
|
|
122
108
|
code: 'en-US'
|
|
123
109
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
110
|
+
],
|
|
111
|
+
isActiveReleaseLoading: false,
|
|
112
|
+
releaseVersionMap: new Map(),
|
|
113
|
+
releases: {
|
|
114
|
+
items: []
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
describe(`${entityType} with entry based publishing`, ()=>{
|
|
118
|
+
it('returns Will publish status when active release has publish action', ()=>{
|
|
119
|
+
_getPreviousReleaseEntity.getPreviousReleaseEntity.mockReturnValue({
|
|
120
|
+
previousReleaseEntity: createEntryBasedReleaseEntity({
|
|
121
|
+
entityId,
|
|
122
|
+
action: 'unpublish',
|
|
123
|
+
entityType
|
|
124
|
+
})
|
|
125
|
+
});
|
|
126
|
+
const { result } = (0, _react.renderHook)(()=>(0, _useActiveReleaseLocalesStatuses.useActiveReleaseLocalesStatuses)({
|
|
127
|
+
...baseParams,
|
|
128
|
+
activeRelease: createEntryBasedRelease({
|
|
129
|
+
entityId,
|
|
130
|
+
entityType
|
|
131
|
+
}),
|
|
132
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
|
|
133
|
+
}));
|
|
134
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
135
|
+
variant: 'positive',
|
|
136
|
+
status: 'willPublish',
|
|
137
|
+
label: 'Will publish',
|
|
138
|
+
locale: {
|
|
139
|
+
code: 'en-US'
|
|
139
140
|
}
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
const { result } = (0, _react.renderHook)(()=>(0, _useActiveReleaseLocalesStatuses.useActiveReleaseLocalesStatuses)({
|
|
143
|
-
...baseParams,
|
|
144
|
-
activeRelease: createEntryBasedRelease({
|
|
145
|
-
action: 'unpublish'
|
|
146
|
-
}),
|
|
147
|
-
currentEntryDraft: buildEntry('published')
|
|
148
|
-
}));
|
|
149
|
-
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
150
|
-
variant: 'warning',
|
|
151
|
-
status: 'becomesDraft',
|
|
152
|
-
label: 'Becomes draft',
|
|
153
|
-
locale: {
|
|
154
|
-
code: 'en-US'
|
|
155
|
-
}
|
|
141
|
+
});
|
|
156
142
|
});
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
143
|
+
it('returns Becomes draft status when previous version has published locales and active version has unpublish action', ()=>{
|
|
144
|
+
_getPreviousReleaseEntity.getPreviousReleaseEntity.mockReturnValue({
|
|
145
|
+
previousReleaseEntity: createEntryBasedReleaseEntity({
|
|
146
|
+
entityId,
|
|
147
|
+
action: 'publish',
|
|
148
|
+
entityType
|
|
149
|
+
})
|
|
150
|
+
});
|
|
151
|
+
const { result } = (0, _react.renderHook)(()=>(0, _useActiveReleaseLocalesStatuses.useActiveReleaseLocalesStatuses)({
|
|
152
|
+
...baseParams,
|
|
153
|
+
activeRelease: createEntryBasedRelease({
|
|
154
|
+
action: 'unpublish',
|
|
155
|
+
entityId,
|
|
156
|
+
entityType
|
|
157
|
+
}),
|
|
158
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('published') : buildAsset('published')
|
|
159
|
+
}));
|
|
160
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
161
|
+
variant: 'warning',
|
|
162
|
+
status: 'becomesDraft',
|
|
163
|
+
label: 'Becomes draft',
|
|
164
|
+
locale: {
|
|
165
|
+
code: 'en-US'
|
|
170
166
|
}
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
const { result } = (0, _react.renderHook)(()=>(0, _useActiveReleaseLocalesStatuses.useActiveReleaseLocalesStatuses)({
|
|
174
|
-
...baseParams,
|
|
175
|
-
activeRelease: createEntryBasedRelease({
|
|
176
|
-
action: 'unpublish'
|
|
177
|
-
}),
|
|
178
|
-
currentEntryDraft: buildEntry('draft')
|
|
179
|
-
}));
|
|
180
|
-
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
181
|
-
variant: 'secondary',
|
|
182
|
-
status: 'remainsDraft',
|
|
183
|
-
label: 'Remains draft',
|
|
184
|
-
locale: {
|
|
185
|
-
code: 'en-US'
|
|
186
|
-
}
|
|
167
|
+
});
|
|
187
168
|
});
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
});
|
|
212
|
-
describe('with locale based publishing', ()=>{
|
|
213
|
-
it('returns Will publish status when active release has publish action', ()=>{
|
|
214
|
-
_getPreviousReleaseEntryVersion.getPreviousReleaseEntryVersion.mockReturnValue({
|
|
215
|
-
previousReleaseEntity: createLocaleBasedReleaseEntity({
|
|
216
|
-
entryId: 'entry-1',
|
|
217
|
-
verb: 'remove'
|
|
218
|
-
}),
|
|
219
|
-
previousEntryVersion: {
|
|
220
|
-
sys: {
|
|
221
|
-
fieldStatus: {
|
|
222
|
-
'*': {
|
|
223
|
-
'en-US': 'draft'
|
|
224
|
-
}
|
|
225
|
-
}
|
|
169
|
+
it('returns Remains draft status when previous version has draft locales and active version has unpublish action', ()=>{
|
|
170
|
+
_getPreviousReleaseEntity.getPreviousReleaseEntity.mockReturnValue({
|
|
171
|
+
previousReleaseEntity: createEntryBasedReleaseEntity({
|
|
172
|
+
action: 'unpublish',
|
|
173
|
+
entityType,
|
|
174
|
+
entityId
|
|
175
|
+
})
|
|
176
|
+
});
|
|
177
|
+
const { result } = (0, _react.renderHook)(()=>(0, _useActiveReleaseLocalesStatuses.useActiveReleaseLocalesStatuses)({
|
|
178
|
+
...baseParams,
|
|
179
|
+
activeRelease: createEntryBasedRelease({
|
|
180
|
+
action: 'unpublish',
|
|
181
|
+
entityId,
|
|
182
|
+
entityType
|
|
183
|
+
}),
|
|
184
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
|
|
185
|
+
}));
|
|
186
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
187
|
+
variant: 'secondary',
|
|
188
|
+
status: 'remainsDraft',
|
|
189
|
+
label: 'Remains draft',
|
|
190
|
+
locale: {
|
|
191
|
+
code: 'en-US'
|
|
226
192
|
}
|
|
227
|
-
}
|
|
228
|
-
});
|
|
229
|
-
const { result } = (0, _react.renderHook)(()=>(0, _useActiveReleaseLocalesStatuses.useActiveReleaseLocalesStatuses)({
|
|
230
|
-
...baseParams,
|
|
231
|
-
activeRelease: createLocaleBasedRelease(),
|
|
232
|
-
currentEntryDraft: buildEntry('draft')
|
|
233
|
-
}));
|
|
234
|
-
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
235
|
-
variant: 'positive',
|
|
236
|
-
status: 'willPublish',
|
|
237
|
-
label: 'Will publish',
|
|
238
|
-
locale: {
|
|
239
|
-
code: 'en-US'
|
|
240
|
-
}
|
|
193
|
+
});
|
|
241
194
|
});
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
195
|
+
it('returns Not in release status when entity is not in the release', ()=>{
|
|
196
|
+
_getPreviousReleaseEntity.getPreviousReleaseEntity.mockReturnValue({
|
|
197
|
+
previousReleaseEntity: undefined
|
|
198
|
+
});
|
|
199
|
+
const { result } = (0, _react.renderHook)(()=>(0, _useActiveReleaseLocalesStatuses.useActiveReleaseLocalesStatuses)({
|
|
200
|
+
...baseParams,
|
|
201
|
+
activeRelease: createEntryBasedRelease({
|
|
202
|
+
entityId: entityType === 'Entry' ? 'entry-2' : 'asset-2',
|
|
203
|
+
action: 'publish',
|
|
204
|
+
entityType
|
|
205
|
+
}),
|
|
206
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
|
|
207
|
+
}));
|
|
208
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
209
|
+
variant: 'secondary',
|
|
210
|
+
status: 'notInRelease',
|
|
211
|
+
label: 'Not in release',
|
|
212
|
+
locale: {
|
|
213
|
+
code: 'en-US'
|
|
256
214
|
}
|
|
257
|
-
}
|
|
258
|
-
});
|
|
259
|
-
const { result } = (0, _react.renderHook)(()=>(0, _useActiveReleaseLocalesStatuses.useActiveReleaseLocalesStatuses)({
|
|
260
|
-
...baseParams,
|
|
261
|
-
activeRelease: createLocaleBasedRelease({
|
|
262
|
-
verb: 'remove'
|
|
263
|
-
}),
|
|
264
|
-
currentEntryDraft: buildEntry('published')
|
|
265
|
-
}));
|
|
266
|
-
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
267
|
-
variant: 'warning',
|
|
268
|
-
status: 'becomesDraft',
|
|
269
|
-
label: 'Becomes draft',
|
|
270
|
-
locale: {
|
|
271
|
-
code: 'en-US'
|
|
272
|
-
}
|
|
215
|
+
});
|
|
273
216
|
});
|
|
274
217
|
});
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
218
|
+
describe(`${entityType} with locale based publishing`, ()=>{
|
|
219
|
+
it('returns Will publish status when active release has publish action', ()=>{
|
|
220
|
+
_getPreviousReleaseEntity.getPreviousReleaseEntity.mockReturnValue({
|
|
221
|
+
previousReleaseEntity: createLocaleBasedReleaseEntity({
|
|
222
|
+
entityId,
|
|
223
|
+
verb: 'remove',
|
|
224
|
+
entityType
|
|
225
|
+
})
|
|
226
|
+
});
|
|
227
|
+
const { result } = (0, _react.renderHook)(()=>(0, _useActiveReleaseLocalesStatuses.useActiveReleaseLocalesStatuses)({
|
|
228
|
+
...baseParams,
|
|
229
|
+
activeRelease: createLocaleBasedRelease({
|
|
230
|
+
entityId,
|
|
231
|
+
entityType
|
|
232
|
+
}),
|
|
233
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
|
|
234
|
+
}));
|
|
235
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
236
|
+
variant: 'positive',
|
|
237
|
+
status: 'willPublish',
|
|
238
|
+
label: 'Will publish',
|
|
239
|
+
locale: {
|
|
240
|
+
code: 'en-US'
|
|
287
241
|
}
|
|
288
|
-
}
|
|
242
|
+
});
|
|
289
243
|
});
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
244
|
+
it('returns Becomes draft status when previous version has published locales and active version has unpublish action', ()=>{
|
|
245
|
+
_getPreviousReleaseEntity.getPreviousReleaseEntity.mockReturnValue({
|
|
246
|
+
previousReleaseEntity: createLocaleBasedReleaseEntity({
|
|
247
|
+
entityId: 'entry-1',
|
|
248
|
+
verb: 'add',
|
|
249
|
+
entityType
|
|
250
|
+
})
|
|
251
|
+
});
|
|
252
|
+
const { result } = (0, _react.renderHook)(()=>(0, _useActiveReleaseLocalesStatuses.useActiveReleaseLocalesStatuses)({
|
|
253
|
+
...baseParams,
|
|
254
|
+
activeRelease: createLocaleBasedRelease({
|
|
255
|
+
verb: 'remove',
|
|
256
|
+
entityId,
|
|
257
|
+
entityType
|
|
258
|
+
}),
|
|
259
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('published') : buildAsset('published')
|
|
260
|
+
}));
|
|
261
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
262
|
+
variant: 'warning',
|
|
263
|
+
status: 'becomesDraft',
|
|
264
|
+
label: 'Becomes draft',
|
|
265
|
+
locale: {
|
|
266
|
+
code: 'en-US'
|
|
267
|
+
}
|
|
268
|
+
});
|
|
304
269
|
});
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
270
|
+
it('returns Remains draft status when previous version has draft locales and active version has unpublish action', ()=>{
|
|
271
|
+
_getPreviousReleaseEntity.getPreviousReleaseEntity.mockReturnValue({
|
|
272
|
+
previousReleaseEntity: createLocaleBasedReleaseEntity({
|
|
273
|
+
verb: 'remove',
|
|
274
|
+
entityId,
|
|
275
|
+
entityType
|
|
276
|
+
})
|
|
277
|
+
});
|
|
278
|
+
const { result } = (0, _react.renderHook)(()=>(0, _useActiveReleaseLocalesStatuses.useActiveReleaseLocalesStatuses)({
|
|
279
|
+
...baseParams,
|
|
280
|
+
activeRelease: createLocaleBasedRelease({
|
|
281
|
+
verb: 'remove',
|
|
282
|
+
entityId,
|
|
283
|
+
entityType
|
|
284
|
+
}),
|
|
285
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
|
|
286
|
+
}));
|
|
287
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
288
|
+
variant: 'secondary',
|
|
289
|
+
status: 'remainsDraft',
|
|
290
|
+
label: 'Remains draft',
|
|
291
|
+
locale: {
|
|
292
|
+
code: 'en-US'
|
|
293
|
+
}
|
|
294
|
+
});
|
|
310
295
|
});
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
296
|
+
it('returns Not in release status when entry is not in the release', ()=>{
|
|
297
|
+
_getPreviousReleaseEntity.getPreviousReleaseEntity.mockReturnValue({
|
|
298
|
+
previousReleaseEntity: undefined
|
|
299
|
+
});
|
|
300
|
+
const { result } = (0, _react.renderHook)(()=>(0, _useActiveReleaseLocalesStatuses.useActiveReleaseLocalesStatuses)({
|
|
301
|
+
...baseParams,
|
|
302
|
+
activeRelease: createLocaleBasedRelease({
|
|
303
|
+
entityId: entityType === 'Entry' ? 'entry-2' : 'asset-2',
|
|
304
|
+
entityType,
|
|
305
|
+
verb: 'add'
|
|
306
|
+
}),
|
|
307
|
+
currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
|
|
308
|
+
}));
|
|
309
|
+
expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
|
|
310
|
+
variant: 'secondary',
|
|
311
|
+
status: 'notInRelease',
|
|
312
|
+
label: 'Not in release',
|
|
313
|
+
locale: {
|
|
314
|
+
code: 'en-US'
|
|
315
|
+
}
|
|
316
|
+
});
|
|
326
317
|
});
|
|
327
318
|
});
|
|
328
319
|
});
|
package/dist/cjs/index.js
CHANGED
|
@@ -111,7 +111,7 @@ _export_star(require("./hooks/useLocalePublishStatus"), exports);
|
|
|
111
111
|
_export_star(require("./LocalePublishingEntityStatusBadge"), exports);
|
|
112
112
|
_export_star(require("./ReleaseEntityStatusBadge"), exports);
|
|
113
113
|
_export_star(require("./utils/determineReleaseAction"), exports);
|
|
114
|
-
_export_star(require("./utils/
|
|
114
|
+
_export_star(require("./utils/getEntityReleaseStatus"), exports);
|
|
115
115
|
_export_star(require("./utils/parseReleaseParameters"), exports);
|
|
116
116
|
function _export_star(from, to) {
|
|
117
117
|
Object.keys(from).forEach(function(k) {
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
Object.defineProperty(exports, "
|
|
5
|
+
Object.defineProperty(exports, "getEntityReleaseStatus", {
|
|
6
6
|
enumerable: true,
|
|
7
7
|
get: function() {
|
|
8
|
-
return
|
|
8
|
+
return getEntityReleaseStatus;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
const _determineReleaseAction = require("./determineReleaseAction");
|
|
12
|
-
function
|
|
13
|
-
const { releaseAction, entityItem, addLocales, removeLocales } = (0, _determineReleaseAction.determineReleaseAction)(
|
|
12
|
+
function getEntityReleaseStatus(entityId, locales, release) {
|
|
13
|
+
const { releaseAction, entityItem, addLocales, removeLocales } = (0, _determineReleaseAction.determineReleaseAction)(entityId, release);
|
|
14
14
|
if (releaseAction === 'not-in-release' || !entityItem) {
|
|
15
15
|
return {
|
|
16
16
|
releaseAction
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
Object.defineProperty(exports, "
|
|
5
|
+
Object.defineProperty(exports, "getPreviousReleaseEntity", {
|
|
6
6
|
enumerable: true,
|
|
7
7
|
get: function() {
|
|
8
|
-
return
|
|
8
|
+
return getPreviousReleaseEntity;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
const _datefns = require("date-fns");
|
|
12
|
-
function
|
|
12
|
+
function getPreviousReleaseEntity({ entityId, entityType, releaseVersionMap, activeRelease, releases }) {
|
|
13
13
|
const orderedScheduledReleases = releases?.items.filter((r)=>r.startDate).sort((a, b)=>(0, _datefns.compareAsc)(new Date(a.startDate), new Date(b.startDate)));
|
|
14
14
|
const indexOfActive = orderedScheduledReleases?.findIndex((r)=>r.sys.id === activeRelease?.sys.id);
|
|
15
15
|
let previousRelease;
|
|
@@ -17,10 +17,10 @@ function getPreviousReleaseEntryVersion({ entryId, releaseVersionMap, activeRele
|
|
|
17
17
|
if (indexOfActive && indexOfActive > 0) {
|
|
18
18
|
for(let i = indexOfActive - 1; i >= 0; i--){
|
|
19
19
|
const release = orderedScheduledReleases[i];
|
|
20
|
-
const action = releaseVersionMap.get(
|
|
20
|
+
const action = releaseVersionMap.get(entityId)?.get(release.sys.id);
|
|
21
21
|
if (action !== 'not-in-release') {
|
|
22
22
|
previousRelease = release;
|
|
23
|
-
previousReleaseEntity = release.entities.items.find((e)=>e.entity.sys.id ===
|
|
23
|
+
previousReleaseEntity = release.entities.items.find((e)=>e.entity.sys.id === entityId && e.entity.sys.linkType === entityType);
|
|
24
24
|
break;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { useCallback, useRef, useState } from 'react';
|
|
2
|
-
import { EntityStatusBadge, Flex, Popover
|
|
2
|
+
import { EntityStatusBadge, Flex, Popover } from '@contentful/f36-components';
|
|
3
|
+
import { ArrowDownIcon } from '@contentful/f36-icons';
|
|
3
4
|
import tokens from '@contentful/f36-tokens';
|
|
4
5
|
import { cx, css } from 'emotion';
|
|
5
6
|
import * as entityHelpers from '../utils/entityHelpers';
|
|
@@ -93,14 +94,6 @@ const styles = {
|
|
|
93
94
|
padding: `${tokens.spacing2Xs} 0`
|
|
94
95
|
})
|
|
95
96
|
};
|
|
96
|
-
const ArrowDownIcon = generateIcon({
|
|
97
|
-
name: 'ArrowDownIcon',
|
|
98
|
-
viewBox: '0 0 12 20',
|
|
99
|
-
path: /*#__PURE__*/ React.createElement("path", {
|
|
100
|
-
d: "M3.03076 8C2.20109 8 1.73228 8.95209 2.23814 9.60971L5.20727 13.4696C5.60757 13.99 6.39223 13.99 6.79252 13.4696L9.76166 9.60971C10.2675 8.95209 9.79871 8 8.96904 8L3.03076 8Z",
|
|
101
|
-
fill: "currentColor"
|
|
102
|
-
})
|
|
103
|
-
});
|
|
104
97
|
const determineBadgeStatus = (localesStatusMap, activeLocales)=>{
|
|
105
98
|
if (!localesStatusMap) return;
|
|
106
99
|
if (localesStatusMap.size === 1 || activeLocales && activeLocales.length === 1) return {
|