@contentful/field-editor-shared 2.7.0 → 2.9.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/CharCounter.js +1 -1
- package/dist/cjs/CharValidation.js +3 -3
- package/dist/cjs/FieldConnector.test.js +2 -2
- package/dist/cjs/LocalePublishingEntityStatusBadge/Banner.js +3 -3
- package/dist/cjs/LocalePublishingEntityStatusBadge/LocalePublishingPopover.js +13 -13
- package/dist/cjs/LocalePublishingEntityStatusBadge/LocalePublishingStatus.js +4 -4
- package/dist/cjs/LocalePublishingEntityStatusBadge/LocalePublishingStatusList.js +5 -5
- package/dist/cjs/LocalePublishingEntityStatusBadge/ScheduledBanner.js +4 -4
- package/dist/cjs/ModalDialogLauncher.js +4 -4
- package/dist/cjs/PredefinedValuesError.js +1 -1
- package/dist/cjs/ReleaseEntityStatusBadge/Banner.js +3 -3
- package/dist/cjs/ReleaseEntityStatusBadge/ReleaseEntityStatusBadge.js +1 -1
- package/dist/cjs/ReleaseEntityStatusBadge/ReleaseEntityStatusLocale.js +4 -4
- package/dist/cjs/ReleaseEntityStatusBadge/ReleaseEntityStatusLocalesList.js +5 -5
- package/dist/cjs/ReleaseEntityStatusBadge/ReleaseEntityStatusPopover.js +13 -13
- package/dist/cjs/hooks/useLocalePublishStatus.spec.js +1 -1
- package/dist/cjs/index.js +5 -3
- package/dist/cjs/utils/determineReleaseAction.js +59 -0
- package/dist/cjs/utils/getEntryReleaseStatus.js +34 -0
- package/dist/esm/CharCounter.js +1 -1
- package/dist/esm/CharValidation.js +3 -3
- package/dist/esm/FieldConnector.test.js +2 -2
- package/dist/esm/LocalePublishingEntityStatusBadge/Banner.js +3 -3
- package/dist/esm/LocalePublishingEntityStatusBadge/LocalePublishingPopover.js +13 -13
- package/dist/esm/LocalePublishingEntityStatusBadge/LocalePublishingStatus.js +4 -4
- package/dist/esm/LocalePublishingEntityStatusBadge/LocalePublishingStatusList.js +5 -5
- package/dist/esm/LocalePublishingEntityStatusBadge/ScheduledBanner.js +4 -4
- package/dist/esm/ModalDialogLauncher.js +4 -4
- package/dist/esm/PredefinedValuesError.js +1 -1
- package/dist/esm/ReleaseEntityStatusBadge/Banner.js +3 -3
- package/dist/esm/ReleaseEntityStatusBadge/ReleaseEntityStatusBadge.js +1 -1
- package/dist/esm/ReleaseEntityStatusBadge/ReleaseEntityStatusLocale.js +4 -4
- package/dist/esm/ReleaseEntityStatusBadge/ReleaseEntityStatusLocalesList.js +5 -5
- package/dist/esm/ReleaseEntityStatusBadge/ReleaseEntityStatusPopover.js +13 -13
- package/dist/esm/hooks/useLocalePublishStatus.spec.js +1 -1
- package/dist/esm/index.js +8 -6
- package/dist/esm/utils/determineReleaseAction.js +49 -0
- package/dist/esm/utils/getEntryReleaseStatus.js +24 -0
- package/dist/types/index.d.ts +9 -7
- package/dist/types/utils/determineReleaseAction.d.ts +9 -0
- package/dist/types/utils/getEntryReleaseStatus.d.ts +11 -0
- package/package.json +4 -2
package/dist/cjs/CharCounter.js
CHANGED
|
@@ -68,7 +68,7 @@ function CharCounter(props) {
|
|
|
68
68
|
count = props.value.length;
|
|
69
69
|
}
|
|
70
70
|
const valid = count === 0 || props.checkConstraint(count);
|
|
71
|
-
return _react.createElement("span", {
|
|
71
|
+
return /*#__PURE__*/ _react.createElement("span", {
|
|
72
72
|
"data-status-code": valid ? null : 'invalid-size',
|
|
73
73
|
className: (0, _emotion.cx)({
|
|
74
74
|
[styles.invalid]: !valid
|
|
@@ -53,10 +53,10 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
53
53
|
function CharValidation(props) {
|
|
54
54
|
const { constraints } = props;
|
|
55
55
|
if (constraints.type === 'max') {
|
|
56
|
-
return _react.createElement("span", null, "Maximum ", constraints.max, " characters");
|
|
56
|
+
return /*#__PURE__*/ _react.createElement("span", null, "Maximum ", constraints.max, " characters");
|
|
57
57
|
} else if (constraints.type === 'min') {
|
|
58
|
-
return _react.createElement("span", null, "Requires at least ", constraints.min, " characters");
|
|
58
|
+
return /*#__PURE__*/ _react.createElement("span", null, "Requires at least ", constraints.min, " characters");
|
|
59
59
|
} else {
|
|
60
|
-
return _react.createElement("span", null, "Requires between ", constraints.min, " and ", constraints.max, " characters");
|
|
60
|
+
return /*#__PURE__*/ _react.createElement("span", null, "Requires between ", constraints.min, " and ", constraints.max, " characters");
|
|
61
61
|
}
|
|
62
62
|
}
|
|
@@ -71,7 +71,7 @@ it('does not rerender with outdated value after calling setValue', async ()=>{
|
|
|
71
71
|
field,
|
|
72
72
|
debounce: 0
|
|
73
73
|
};
|
|
74
|
-
(0, _react1.render)(_react.createElement(_FieldConnector.FieldConnector, props));
|
|
74
|
+
(0, _react1.render)(/*#__PURE__*/ _react.createElement(_FieldConnector.FieldConnector, props));
|
|
75
75
|
let child = getChild(props.children);
|
|
76
76
|
expect(child.value).toBe('initial value');
|
|
77
77
|
const initialRenderCount = props.children.mock.calls.length;
|
|
@@ -96,7 +96,7 @@ it('takes initial disable state from sdk.field', ()=>{
|
|
|
96
96
|
field,
|
|
97
97
|
debounce: 0
|
|
98
98
|
};
|
|
99
|
-
(0, _react1.render)(_react.createElement(_FieldConnector.FieldConnector, props));
|
|
99
|
+
(0, _react1.render)(/*#__PURE__*/ _react.createElement(_FieldConnector.FieldConnector, props));
|
|
100
100
|
const child = getChild(props.children);
|
|
101
101
|
expect(child.value).toBe('initial value');
|
|
102
102
|
expect(field.getIsDisabled).toHaveBeenCalled();
|
|
@@ -29,13 +29,13 @@ const styles = {
|
|
|
29
29
|
})
|
|
30
30
|
};
|
|
31
31
|
function Banner({ content, highlight }) {
|
|
32
|
-
return _react.default.createElement("div", {
|
|
32
|
+
return /*#__PURE__*/ _react.default.createElement("div", {
|
|
33
33
|
className: styles.banner
|
|
34
|
-
}, _react.default.createElement(_f36components.Text, {
|
|
34
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.Text, {
|
|
35
35
|
fontSize: "fontSizeS",
|
|
36
36
|
fontColor: "gray700",
|
|
37
37
|
className: styles.content
|
|
38
|
-
}, content), highlight && _react.default.createElement(_f36components.Text, {
|
|
38
|
+
}, content), highlight && /*#__PURE__*/ _react.default.createElement(_f36components.Text, {
|
|
39
39
|
fontSize: "fontSizeS",
|
|
40
40
|
fontColor: "gray700",
|
|
41
41
|
as: "strong",
|
|
@@ -152,7 +152,7 @@ const styles = {
|
|
|
152
152
|
const ArrowDownIcon = (0, _f36components.generateIcon)({
|
|
153
153
|
name: 'ArrowDownIcon',
|
|
154
154
|
viewBox: '0 0 12 20',
|
|
155
|
-
path: _react.default.createElement("path", {
|
|
155
|
+
path: /*#__PURE__*/ _react.default.createElement("path", {
|
|
156
156
|
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",
|
|
157
157
|
fill: "currentColor"
|
|
158
158
|
})
|
|
@@ -242,7 +242,7 @@ function LocalePublishingPopover({ entity, jobs, isScheduled, localesStatusMap,
|
|
|
242
242
|
'archived',
|
|
243
243
|
'deleted'
|
|
244
244
|
].includes(entityStatus)) {
|
|
245
|
-
return _react.default.createElement(_f36components.EntityStatusBadge, {
|
|
245
|
+
return /*#__PURE__*/ _react.default.createElement(_f36components.EntityStatusBadge, {
|
|
246
246
|
className: styles.badge,
|
|
247
247
|
testId: "entity-state",
|
|
248
248
|
entityStatus: entityStatus,
|
|
@@ -253,57 +253,57 @@ function LocalePublishingPopover({ entity, jobs, isScheduled, localesStatusMap,
|
|
|
253
253
|
const status = determineBadgeStatus(localesStatusMap, activeLocales);
|
|
254
254
|
const ariaLabel = status && status.secondary ? 'Multiple statuses' : status?.primary;
|
|
255
255
|
const wrapperClass = generateDynamicStyles(status);
|
|
256
|
-
return _react.default.createElement(_f36components.Popover, {
|
|
256
|
+
return /*#__PURE__*/ _react.default.createElement(_f36components.Popover, {
|
|
257
257
|
isOpen: localesStatusMap && isOpen,
|
|
258
258
|
onClose: ()=>setIsOpen(false),
|
|
259
259
|
autoFocus: false,
|
|
260
260
|
placement: "bottom-end"
|
|
261
|
-
}, _react.default.createElement(_f36components.Popover.Trigger, null, _react.default.createElement(_f36components.Flex, {
|
|
261
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.Popover.Trigger, null, /*#__PURE__*/ _react.default.createElement(_f36components.Flex, {
|
|
262
262
|
"aria-label": ariaLabel,
|
|
263
263
|
alignItems: "center",
|
|
264
264
|
className: (0, _emotion.cx)(styles.wrapper, wrapperClass)
|
|
265
|
-
}, _react.default.createElement(_f36components.EntityStatusBadge, {
|
|
265
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.EntityStatusBadge, {
|
|
266
266
|
className: styles.badge,
|
|
267
267
|
testId: "entity-state",
|
|
268
268
|
entityStatus: entityStatus,
|
|
269
269
|
tabIndex: 0,
|
|
270
270
|
onFocus: ()=>setIsOpen(true),
|
|
271
271
|
onBlur: ()=>setIsOpen(false),
|
|
272
|
-
endIcon: _react.default.createElement(ArrowDownIcon, {
|
|
272
|
+
endIcon: /*#__PURE__*/ _react.default.createElement(ArrowDownIcon, {
|
|
273
273
|
color: getIconColor(entityStatus)
|
|
274
274
|
}),
|
|
275
275
|
onMouseOver: onMouseEnter,
|
|
276
276
|
isScheduled: isScheduled,
|
|
277
277
|
onMouseEnter: onMouseEnter,
|
|
278
278
|
onMouseLeave: onMouseLeave
|
|
279
|
-
}), status?.secondary && _react.default.createElement("svg", {
|
|
279
|
+
}), status?.secondary && /*#__PURE__*/ _react.default.createElement("svg", {
|
|
280
280
|
"data-status": "secondary",
|
|
281
281
|
"aria-hidden": "true",
|
|
282
282
|
width: "4",
|
|
283
283
|
height: "18",
|
|
284
284
|
viewBox: "0 0 4 18"
|
|
285
|
-
}, _react.default.createElement("path", {
|
|
285
|
+
}, /*#__PURE__*/ _react.default.createElement("path", {
|
|
286
286
|
fillRule: "evenodd",
|
|
287
287
|
clipRule: "evenodd",
|
|
288
288
|
d: "M1.45942e-06 18H0.00296171C2.2121 18 4.00296 16.2091 4.00296 14V4C4.00296 1.79086 2.2121 0 0.00295914 0H0C0.830421 0.732944 1.35418 1.80531 1.35418 3V15C1.35418 16.1947 0.830422 17.2671 1.45942e-06 18Z"
|
|
289
|
-
})), status?.tertiary && _react.default.createElement("svg", {
|
|
289
|
+
})), status?.tertiary && /*#__PURE__*/ _react.default.createElement("svg", {
|
|
290
290
|
"data-status": "tertiary",
|
|
291
291
|
"aria-hidden": "true",
|
|
292
292
|
width: "5",
|
|
293
293
|
height: "16",
|
|
294
294
|
viewBox: "0 0 5 16"
|
|
295
|
-
}, _react.default.createElement("path", {
|
|
295
|
+
}, /*#__PURE__*/ _react.default.createElement("path", {
|
|
296
296
|
fillRule: "evenodd",
|
|
297
297
|
clipRule: "evenodd",
|
|
298
298
|
d: "M0.673828 16.0055H0.675391C2.88453 16.0055 4.67539 14.2146 4.67539 12.0055V3.9955C4.67539 1.88216 3.03648 0.151608 0.960312 0.00549316C1.78382 0.738158 2.30257 1.80597 2.30257 2.99493V12.7838C2.30257 14.1053 1.66172 15.2771 0.673828 16.0055Z"
|
|
299
|
-
})))), _react.default.createElement(_f36components.Popover.Content, {
|
|
299
|
+
})))), /*#__PURE__*/ _react.default.createElement(_f36components.Popover.Content, {
|
|
300
300
|
className: styles.popoverContent,
|
|
301
301
|
onMouseEnter: onMouseEnter,
|
|
302
302
|
onMouseLeave: onMouseLeave
|
|
303
|
-
}, !!localesStatusMap && _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_ScheduledBanner.ScheduledBanner, {
|
|
303
|
+
}, !!localesStatusMap && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_ScheduledBanner.ScheduledBanner, {
|
|
304
304
|
entityId: entity.sys.id,
|
|
305
305
|
jobs: jobs
|
|
306
|
-
}), _react.default.createElement(_LocalePublishingStatusList.LocalePublishingStatusList, {
|
|
306
|
+
}), /*#__PURE__*/ _react.default.createElement(_LocalePublishingStatusList.LocalePublishingStatusList, {
|
|
307
307
|
isScheduled: isScheduled,
|
|
308
308
|
statusMap: localesStatusMap,
|
|
309
309
|
activeLocales: activeLocales
|
|
@@ -34,15 +34,15 @@ const styles = {
|
|
|
34
34
|
})
|
|
35
35
|
};
|
|
36
36
|
function LocalePublishingStatus({ locale, status, isScheduled }) {
|
|
37
|
-
return _react.default.createElement("div", {
|
|
37
|
+
return /*#__PURE__*/ _react.default.createElement("div", {
|
|
38
38
|
className: styles.localePublishStatus,
|
|
39
39
|
"data-test-id": "locale-publishing-status"
|
|
40
|
-
}, _react.default.createElement(_f36components.Text, {
|
|
40
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.Text, {
|
|
41
41
|
className: styles.locale,
|
|
42
42
|
fontColor: "gray700"
|
|
43
|
-
}, locale.name, ' ', _react.default.createElement(_f36components.Text, {
|
|
43
|
+
}, locale.name, ' ', /*#__PURE__*/ _react.default.createElement(_f36components.Text, {
|
|
44
44
|
fontColor: "gray500"
|
|
45
|
-
}, "(", locale.code, ")", locale.default && ', Default')), _react.default.createElement(_f36components.EntityStatusBadge, {
|
|
45
|
+
}, "(", locale.code, ")", locale.default && ', Default')), /*#__PURE__*/ _react.default.createElement(_f36components.EntityStatusBadge, {
|
|
46
46
|
entityStatus: status,
|
|
47
47
|
isScheduled: isScheduled,
|
|
48
48
|
className: styles.status
|
|
@@ -64,19 +64,19 @@ function LocalePublishingStatusList({ isScheduled, statusMap, activeLocales }) {
|
|
|
64
64
|
draft: 0
|
|
65
65
|
});
|
|
66
66
|
const { selected, nonSelected } = groupAndSortLocales(entries, activeLocales);
|
|
67
|
-
return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_Banner.Banner, {
|
|
67
|
+
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_Banner.Banner, {
|
|
68
68
|
content: "The statuses of the locales for this content:",
|
|
69
69
|
highlight: `${counters.changed} changed, ${counters.published} published, ${counters.draft} draft`
|
|
70
|
-
}), _react.default.createElement("div", {
|
|
70
|
+
}), /*#__PURE__*/ _react.default.createElement("div", {
|
|
71
71
|
"data-test-id": "locale-publishing-selected"
|
|
72
|
-
}, _react.default.createElement(_f36components.MenuSectionTitle, null, "Locales in the entry editor:"), selected.map(({ locale, status })
|
|
72
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.MenuSectionTitle, null, "Locales in the entry editor:"), selected.map(({ locale, status })=>/*#__PURE__*/ _react.default.createElement(_LocalePublishingStatus.LocalePublishingStatus, {
|
|
73
73
|
key: `selected-${locale.code}`,
|
|
74
74
|
status: status,
|
|
75
75
|
locale: locale,
|
|
76
76
|
isScheduled: isScheduled
|
|
77
|
-
}))), nonSelected.length > 0 && _react.default.createElement("div", {
|
|
77
|
+
}))), nonSelected.length > 0 && /*#__PURE__*/ _react.default.createElement("div", {
|
|
78
78
|
"data-test-id": "locale-publishing-others"
|
|
79
|
-
}, _react.default.createElement(_f36components.MenuSectionTitle, null, "Other locales:"), nonSelected.map(({ locale, status })
|
|
79
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.MenuSectionTitle, null, "Other locales:"), nonSelected.map(({ locale, status })=>/*#__PURE__*/ _react.default.createElement(_LocalePublishingStatus.LocalePublishingStatus, {
|
|
80
80
|
key: `others-${locale.code}`,
|
|
81
81
|
status: status,
|
|
82
82
|
locale: locale,
|
|
@@ -17,12 +17,12 @@ function _interop_require_default(obj) {
|
|
|
17
17
|
default: obj
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
-
var ScheduledActionTypes
|
|
20
|
+
var ScheduledActionTypes;
|
|
21
|
+
(function(ScheduledActionTypes) {
|
|
21
22
|
ScheduledActionTypes["publish"] = "publish";
|
|
22
23
|
ScheduledActionTypes["unpublish"] = "unpublish";
|
|
23
24
|
ScheduledActionTypes["patch+publish"] = "patch+publish";
|
|
24
|
-
|
|
25
|
-
}(ScheduledActionTypes || {});
|
|
25
|
+
})(ScheduledActionTypes || (ScheduledActionTypes = {}));
|
|
26
26
|
function ScheduledBanner({ entityId, jobs }) {
|
|
27
27
|
const scheduledJobs = jobs.filter((job)=>job.entity.sys.id === entityId);
|
|
28
28
|
const sortedScheduledJobs = (0, _orderBy.default)(scheduledJobs, [
|
|
@@ -37,7 +37,7 @@ function ScheduledBanner({ entityId, jobs }) {
|
|
|
37
37
|
const pendingJobsCount = scheduledJobs.length - 1;
|
|
38
38
|
const lowerCaseAction = scheduledAction.action.toLowerCase();
|
|
39
39
|
const action = lowerCaseAction === "patch+publish" ? `${lowerCaseAction} (via Schedule Series)` : lowerCaseAction;
|
|
40
|
-
return _react.default.createElement(_Banner.Banner, {
|
|
40
|
+
return /*#__PURE__*/ _react.default.createElement(_Banner.Banner, {
|
|
41
41
|
content: `All locales are scheduled to ${action} on:`,
|
|
42
42
|
highlight: `${(0, _f36components.formatDateAndTime)(scheduledAction.scheduledFor.datetime)}${pendingJobsCount > 0 ? ` [and +${pendingJobsCount} more]` : ''}`
|
|
43
43
|
});
|
|
@@ -107,7 +107,7 @@ function openDialog(options, Component) {
|
|
|
107
107
|
const size = (0, _isNumber.default)(options.width) ? `${options.width}px` : options.width;
|
|
108
108
|
return open(({ isShown, onClose })=>{
|
|
109
109
|
const onCloseHandler = ()=>onClose();
|
|
110
|
-
return _react.createElement(_f36components.Modal, {
|
|
110
|
+
return /*#__PURE__*/ _react.createElement(_f36components.Modal, {
|
|
111
111
|
key: key,
|
|
112
112
|
shouldCloseOnOverlayClick: options.shouldCloseOnOverlayClick || false,
|
|
113
113
|
shouldCloseOnEscapePress: options.shouldCloseOnEscapePress || false,
|
|
@@ -116,15 +116,15 @@ function openDialog(options, Component) {
|
|
|
116
116
|
isShown: isShown,
|
|
117
117
|
onClose: onCloseHandler,
|
|
118
118
|
size: size || '700px'
|
|
119
|
-
}, ()
|
|
119
|
+
}, ()=>/*#__PURE__*/ _react.createElement(_react.Fragment, null, options.title && /*#__PURE__*/ _react.createElement(_f36components.ModalHeader, {
|
|
120
120
|
testId: "dialog-title",
|
|
121
121
|
title: options.title,
|
|
122
122
|
onClose: onCloseHandler
|
|
123
|
-
}), _react.createElement("div", {
|
|
123
|
+
}), /*#__PURE__*/ _react.createElement("div", {
|
|
124
124
|
style: {
|
|
125
125
|
minHeight: options.minHeight || 'auto'
|
|
126
126
|
}
|
|
127
|
-
}, _react.createElement(Component, {
|
|
127
|
+
}, /*#__PURE__*/ _react.createElement(Component, {
|
|
128
128
|
onClose: onClose
|
|
129
129
|
}))));
|
|
130
130
|
});
|
|
@@ -52,7 +52,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
52
52
|
return newObj;
|
|
53
53
|
}
|
|
54
54
|
function PredefinedValuesError() {
|
|
55
|
-
return _react.createElement(_f36note.Note, {
|
|
55
|
+
return /*#__PURE__*/ _react.createElement(_f36note.Note, {
|
|
56
56
|
variant: "warning",
|
|
57
57
|
testId: "predefined-values-warning"
|
|
58
58
|
}, "The widget failed to initialize. You can fix the problem by providing predefined values under the validations tab in the field settings.");
|
|
@@ -29,13 +29,13 @@ const styles = {
|
|
|
29
29
|
})
|
|
30
30
|
};
|
|
31
31
|
function Banner({ content, highlight }) {
|
|
32
|
-
return _react.default.createElement("div", {
|
|
32
|
+
return /*#__PURE__*/ _react.default.createElement("div", {
|
|
33
33
|
className: styles.banner
|
|
34
|
-
}, _react.default.createElement(_f36components.Text, {
|
|
34
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.Text, {
|
|
35
35
|
fontSize: "fontSizeS",
|
|
36
36
|
fontColor: "gray700",
|
|
37
37
|
className: styles.content
|
|
38
|
-
}, content), highlight && _react.default.createElement(_f36components.Text, {
|
|
38
|
+
}, content), highlight && /*#__PURE__*/ _react.default.createElement(_f36components.Text, {
|
|
39
39
|
fontSize: "fontSizeS",
|
|
40
40
|
fontColor: "gray700",
|
|
41
41
|
as: "strong",
|
|
@@ -31,7 +31,7 @@ const config = {
|
|
|
31
31
|
};
|
|
32
32
|
function ReleaseEntityStatusBadge({ className, action }) {
|
|
33
33
|
const badgeConfig = config[action];
|
|
34
|
-
return _react.default.createElement(_f36components.Badge, {
|
|
34
|
+
return /*#__PURE__*/ _react.default.createElement(_f36components.Badge, {
|
|
35
35
|
testId: "release-entity-action-status",
|
|
36
36
|
className: className,
|
|
37
37
|
variant: badgeConfig.variant
|
|
@@ -34,15 +34,15 @@ const styles = {
|
|
|
34
34
|
})
|
|
35
35
|
};
|
|
36
36
|
function ReleaseEntityStatusLocale({ locale, label, variant }) {
|
|
37
|
-
return _react.default.createElement("div", {
|
|
37
|
+
return /*#__PURE__*/ _react.default.createElement("div", {
|
|
38
38
|
className: styles.localePublishStatus,
|
|
39
39
|
"data-test-id": "locale-publishing-status"
|
|
40
|
-
}, _react.default.createElement(_f36components.Text, {
|
|
40
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.Text, {
|
|
41
41
|
className: styles.locale,
|
|
42
42
|
fontColor: "gray700"
|
|
43
|
-
}, locale.name, ' ', _react.default.createElement(_f36components.Text, {
|
|
43
|
+
}, locale.name, ' ', /*#__PURE__*/ _react.default.createElement(_f36components.Text, {
|
|
44
44
|
fontColor: "gray500"
|
|
45
|
-
}, "(", locale.code, ")", locale.default && ', Default')), _react.default.createElement(_f36components.Badge, {
|
|
45
|
+
}, "(", locale.code, ")", locale.default && ', Default')), /*#__PURE__*/ _react.default.createElement(_f36components.Badge, {
|
|
46
46
|
className: styles.status,
|
|
47
47
|
variant: variant
|
|
48
48
|
}, label));
|
|
@@ -64,19 +64,19 @@ function ReleaseEntityStatusLocalesList({ statusMap, activeLocales }) {
|
|
|
64
64
|
remainsDraft: 0
|
|
65
65
|
});
|
|
66
66
|
const { selected, nonSelected } = groupAndSortLocales(entries, activeLocales);
|
|
67
|
-
return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_Banner.Banner, {
|
|
67
|
+
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_Banner.Banner, {
|
|
68
68
|
content: "The statuses of the locales for this content:",
|
|
69
69
|
highlight: `${counters.becomesDraft} becomes draft, ${counters.willPublish} will publish, ${counters.remainsDraft} remains draft`
|
|
70
|
-
}), _react.default.createElement("div", {
|
|
70
|
+
}), /*#__PURE__*/ _react.default.createElement("div", {
|
|
71
71
|
"data-test-id": "locale-publishing-selected"
|
|
72
|
-
}, _react.default.createElement(_f36components.MenuSectionTitle, null, "Locales in the entry editor:"), selected.map(({ locale, label, variant })
|
|
72
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.MenuSectionTitle, null, "Locales in the entry editor:"), selected.map(({ locale, label, variant })=>/*#__PURE__*/ _react.default.createElement(_ReleaseEntityStatusLocale.ReleaseEntityStatusLocale, {
|
|
73
73
|
key: `selected-${locale.code}`,
|
|
74
74
|
label: label,
|
|
75
75
|
variant: variant,
|
|
76
76
|
locale: locale
|
|
77
|
-
}))), nonSelected.length > 0 && _react.default.createElement("div", {
|
|
77
|
+
}))), nonSelected.length > 0 && /*#__PURE__*/ _react.default.createElement("div", {
|
|
78
78
|
"data-test-id": "locale-publishing-others"
|
|
79
|
-
}, _react.default.createElement(_f36components.MenuSectionTitle, null, "Other locales:"), nonSelected.map(({ locale, label, variant })
|
|
79
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.MenuSectionTitle, null, "Other locales:"), nonSelected.map(({ locale, label, variant })=>/*#__PURE__*/ _react.default.createElement(_ReleaseEntityStatusLocale.ReleaseEntityStatusLocale, {
|
|
80
80
|
key: `others-${locale.code}`,
|
|
81
81
|
label: label,
|
|
82
82
|
variant: variant,
|
|
@@ -212,65 +212,65 @@ function ReleaseEntityStatusPopover({ releaseLocalesStatusMap, activeLocales, is
|
|
|
212
212
|
const ArrowDownIcon = (0, _f36components.generateIcon)({
|
|
213
213
|
name: 'ArrowDownIcon',
|
|
214
214
|
viewBox: '0 0 12 20',
|
|
215
|
-
path: _react.default.createElement("path", {
|
|
215
|
+
path: /*#__PURE__*/ _react.default.createElement("path", {
|
|
216
216
|
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",
|
|
217
217
|
fill: "currentColor"
|
|
218
218
|
})
|
|
219
219
|
});
|
|
220
220
|
if (isLoading) {
|
|
221
|
-
return _react.default.createElement(_f36components.Skeleton.Container, {
|
|
221
|
+
return /*#__PURE__*/ _react.default.createElement(_f36components.Skeleton.Container, {
|
|
222
222
|
className: styles.skeletonBadge
|
|
223
|
-
}, _react.default.createElement(_f36components.Skeleton.Image, {
|
|
223
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.Skeleton.Image, {
|
|
224
224
|
testId: `Release-entity-locale-status-badge-skeleton`,
|
|
225
225
|
width: "65px",
|
|
226
226
|
height: "20px"
|
|
227
227
|
}));
|
|
228
228
|
}
|
|
229
|
-
return _react.default.createElement(_f36components.Popover, {
|
|
229
|
+
return /*#__PURE__*/ _react.default.createElement(_f36components.Popover, {
|
|
230
230
|
isOpen: releaseLocalesStatusMap && isOpen,
|
|
231
231
|
onClose: ()=>setIsOpen(false),
|
|
232
232
|
autoFocus: false,
|
|
233
233
|
placement: "bottom-end"
|
|
234
|
-
}, _react.default.createElement(_f36components.Popover.Trigger, null, _react.default.createElement(_f36components.Flex, {
|
|
234
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.Popover.Trigger, null, /*#__PURE__*/ _react.default.createElement(_f36components.Flex, {
|
|
235
235
|
"aria-label": ariaLabel,
|
|
236
236
|
alignItems: "center",
|
|
237
237
|
className: (0, _emotion.cx)(styles.wrapper, wrapperClass)
|
|
238
|
-
}, _react.default.createElement(_f36components.Badge, {
|
|
238
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.Badge, {
|
|
239
239
|
tabIndex: 0,
|
|
240
240
|
variant: _constants.RELEASE_BADGES[status.primary].variant,
|
|
241
241
|
onFocus: ()=>setIsOpen(true),
|
|
242
242
|
onBlur: ()=>setIsOpen(false),
|
|
243
|
-
endIcon: _react.default.createElement(ArrowDownIcon, {
|
|
243
|
+
endIcon: /*#__PURE__*/ _react.default.createElement(ArrowDownIcon, {
|
|
244
244
|
color: _constants.RELEASE_BADGES[status.primary].icon
|
|
245
245
|
}),
|
|
246
246
|
onMouseOver: onMouseEnter,
|
|
247
247
|
onMouseEnter: onMouseEnter,
|
|
248
248
|
onMouseLeave: onMouseLeave
|
|
249
|
-
}, _constants.RELEASE_BADGES[status.primary].label), status.secondary && _react.default.createElement("svg", {
|
|
249
|
+
}, _constants.RELEASE_BADGES[status.primary].label), status.secondary && /*#__PURE__*/ _react.default.createElement("svg", {
|
|
250
250
|
"data-status": "secondary",
|
|
251
251
|
"aria-hidden": "true",
|
|
252
252
|
width: "4",
|
|
253
253
|
height: "18",
|
|
254
254
|
viewBox: "0 0 4 18"
|
|
255
|
-
}, _react.default.createElement("path", {
|
|
255
|
+
}, /*#__PURE__*/ _react.default.createElement("path", {
|
|
256
256
|
fillRule: "evenodd",
|
|
257
257
|
clipRule: "evenodd",
|
|
258
258
|
d: "M1.45942e-06 18H0.00296171C2.2121 18 4.00296 16.2091 4.00296 14V4C4.00296 1.79086 2.2121 0 0.00295914 0H0C0.830421 0.732944 1.35418 1.80531 1.35418 3V15C1.35418 16.1947 0.830422 17.2671 1.45942e-06 18Z"
|
|
259
|
-
})), status.tertiary && _react.default.createElement("svg", {
|
|
259
|
+
})), status.tertiary && /*#__PURE__*/ _react.default.createElement("svg", {
|
|
260
260
|
"data-status": "tertiary",
|
|
261
261
|
"aria-hidden": "true",
|
|
262
262
|
width: "5",
|
|
263
263
|
height: "16",
|
|
264
264
|
viewBox: "0 0 5 16"
|
|
265
|
-
}, _react.default.createElement("path", {
|
|
265
|
+
}, /*#__PURE__*/ _react.default.createElement("path", {
|
|
266
266
|
fillRule: "evenodd",
|
|
267
267
|
clipRule: "evenodd",
|
|
268
268
|
d: "M0.673828 16.0055H0.675391C2.88453 16.0055 4.67539 14.2146 4.67539 12.0055V3.9955C4.67539 1.88216 3.03648 0.151608 0.960312 0.00549316C1.78382 0.738158 2.30257 1.80597 2.30257 2.99493V12.7838C2.30257 14.1053 1.66172 15.2771 0.673828 16.0055Z"
|
|
269
|
-
})))), _react.default.createElement(_f36components.Popover.Content, {
|
|
269
|
+
})))), /*#__PURE__*/ _react.default.createElement(_f36components.Popover.Content, {
|
|
270
270
|
className: styles.popoverContent,
|
|
271
271
|
onMouseEnter: onMouseEnter,
|
|
272
272
|
onMouseLeave: onMouseLeave
|
|
273
|
-
}, !!releaseLocalesStatusMap && _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_ReleaseEntityStatusLocalesList.ReleaseEntityStatusLocalesList, {
|
|
273
|
+
}, !!releaseLocalesStatusMap && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_ReleaseEntityStatusLocalesList.ReleaseEntityStatusLocalesList, {
|
|
274
274
|
statusMap: releaseLocalesStatusMap,
|
|
275
275
|
activeLocales: activeLocales
|
|
276
276
|
}))));
|
package/dist/cjs/index.js
CHANGED
|
@@ -111,13 +111,15 @@ const _PredefinedValuesError = require("./PredefinedValuesError");
|
|
|
111
111
|
const _typesEntity = require("./typesEntity");
|
|
112
112
|
const _isValidImage = require("./utils/isValidImage");
|
|
113
113
|
const _shortenStorageUnit = require("./utils/shortenStorageUnit");
|
|
114
|
-
_export_star(require("./utils/parseReleaseParameters"), exports);
|
|
115
|
-
_export_star(require("./hooks/useLocalePublishStatus"), exports);
|
|
116
|
-
_export_star(require("./hooks/useActiveLocales"), exports);
|
|
117
114
|
_export_star(require("./types"), exports);
|
|
115
|
+
_export_star(require("./hooks/useActiveLocales"), exports);
|
|
118
116
|
_export_star(require("./hooks/useActiveReleaseLocalesStatuses"), exports);
|
|
117
|
+
_export_star(require("./hooks/useLocalePublishStatus"), exports);
|
|
119
118
|
_export_star(require("./LocalePublishingEntityStatusBadge"), exports);
|
|
120
119
|
_export_star(require("./ReleaseEntityStatusBadge"), exports);
|
|
120
|
+
_export_star(require("./utils/determineReleaseAction"), exports);
|
|
121
|
+
_export_star(require("./utils/getEntryReleaseStatus"), exports);
|
|
122
|
+
_export_star(require("./utils/parseReleaseParameters"), exports);
|
|
121
123
|
const _ModalDialogLauncher = /*#__PURE__*/ _interop_require_wildcard(require("./ModalDialogLauncher"));
|
|
122
124
|
const _constraints = /*#__PURE__*/ _interop_require_wildcard(require("./utils/constraints"));
|
|
123
125
|
const _entityHelpers = /*#__PURE__*/ _interop_require_wildcard(require("./utils/entityHelpers"));
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "determineReleaseAction", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return determineReleaseAction;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
function isEntryBasedAction(entityItem) {
|
|
12
|
+
return 'action' in entityItem && (entityItem.action === 'publish' || entityItem.action === 'unpublish');
|
|
13
|
+
}
|
|
14
|
+
function getLocalesFromEntity(entityItem) {
|
|
15
|
+
const addLocales = entityItem?.add?.fields?.['*'] ?? [];
|
|
16
|
+
const removeLocales = entityItem?.remove?.fields?.['*'] ?? [];
|
|
17
|
+
return {
|
|
18
|
+
addLocales,
|
|
19
|
+
removeLocales
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function getLocaleBasedAction(addLocales, removeLocales) {
|
|
23
|
+
const hasPublish = addLocales.length > 0;
|
|
24
|
+
const hasUnpublish = removeLocales.length > 0;
|
|
25
|
+
if (hasPublish && !hasUnpublish) {
|
|
26
|
+
return 'publish';
|
|
27
|
+
}
|
|
28
|
+
if (!hasPublish && hasUnpublish) {
|
|
29
|
+
return 'unpublish';
|
|
30
|
+
}
|
|
31
|
+
return 'publish';
|
|
32
|
+
}
|
|
33
|
+
function determineReleaseAction(entryId, release) {
|
|
34
|
+
if (!release) {
|
|
35
|
+
return {
|
|
36
|
+
releaseAction: 'not-in-release'
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const entityItem = release.entities?.items.find((item)=>item.entity.sys.id === entryId);
|
|
40
|
+
if (!entityItem) {
|
|
41
|
+
return {
|
|
42
|
+
releaseAction: 'not-in-release'
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
if (isEntryBasedAction(entityItem)) {
|
|
46
|
+
return {
|
|
47
|
+
releaseAction: entityItem.action,
|
|
48
|
+
entityItem
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const { addLocales, removeLocales } = getLocalesFromEntity(entityItem);
|
|
52
|
+
const releaseAction = getLocaleBasedAction(addLocales, removeLocales);
|
|
53
|
+
return {
|
|
54
|
+
releaseAction,
|
|
55
|
+
entityItem,
|
|
56
|
+
addLocales,
|
|
57
|
+
removeLocales
|
|
58
|
+
};
|
|
59
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "getEntryReleaseStatus", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return getEntryReleaseStatus;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _determineReleaseAction = require("./determineReleaseAction");
|
|
12
|
+
function getEntryReleaseStatus(entryId, locales, release) {
|
|
13
|
+
const { releaseAction, entityItem, addLocales, removeLocales } = (0, _determineReleaseAction.determineReleaseAction)(entryId, release);
|
|
14
|
+
if (releaseAction === 'not-in-release' || !entityItem) {
|
|
15
|
+
return {
|
|
16
|
+
releaseAction
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
if ('action' in entityItem) {
|
|
20
|
+
return {
|
|
21
|
+
releaseAction,
|
|
22
|
+
localesCount: locales.length,
|
|
23
|
+
entityItem
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const localesCount = addLocales && addLocales.length > 0 ? addLocales.length : locales.length;
|
|
27
|
+
return {
|
|
28
|
+
releaseAction,
|
|
29
|
+
localesCount,
|
|
30
|
+
entityItem,
|
|
31
|
+
addLocales,
|
|
32
|
+
removeLocales
|
|
33
|
+
};
|
|
34
|
+
}
|
package/dist/esm/CharCounter.js
CHANGED
|
@@ -12,7 +12,7 @@ export function CharCounter(props) {
|
|
|
12
12
|
count = props.value.length;
|
|
13
13
|
}
|
|
14
14
|
const valid = count === 0 || props.checkConstraint(count);
|
|
15
|
-
return React.createElement("span", {
|
|
15
|
+
return /*#__PURE__*/ React.createElement("span", {
|
|
16
16
|
"data-status-code": valid ? null : 'invalid-size',
|
|
17
17
|
className: cx({
|
|
18
18
|
[styles.invalid]: !valid
|
|
@@ -2,10 +2,10 @@ import * as React from 'react';
|
|
|
2
2
|
export function CharValidation(props) {
|
|
3
3
|
const { constraints } = props;
|
|
4
4
|
if (constraints.type === 'max') {
|
|
5
|
-
return React.createElement("span", null, "Maximum ", constraints.max, " characters");
|
|
5
|
+
return /*#__PURE__*/ React.createElement("span", null, "Maximum ", constraints.max, " characters");
|
|
6
6
|
} else if (constraints.type === 'min') {
|
|
7
|
-
return React.createElement("span", null, "Requires at least ", constraints.min, " characters");
|
|
7
|
+
return /*#__PURE__*/ React.createElement("span", null, "Requires at least ", constraints.min, " characters");
|
|
8
8
|
} else {
|
|
9
|
-
return React.createElement("span", null, "Requires between ", constraints.min, " and ", constraints.max, " characters");
|
|
9
|
+
return /*#__PURE__*/ React.createElement("span", null, "Requires between ", constraints.min, " and ", constraints.max, " characters");
|
|
10
10
|
}
|
|
11
11
|
}
|
|
@@ -21,7 +21,7 @@ it('does not rerender with outdated value after calling setValue', async ()=>{
|
|
|
21
21
|
field,
|
|
22
22
|
debounce: 0
|
|
23
23
|
};
|
|
24
|
-
render(React.createElement(FieldConnector, props));
|
|
24
|
+
render(/*#__PURE__*/ React.createElement(FieldConnector, props));
|
|
25
25
|
let child = getChild(props.children);
|
|
26
26
|
expect(child.value).toBe('initial value');
|
|
27
27
|
const initialRenderCount = props.children.mock.calls.length;
|
|
@@ -46,7 +46,7 @@ it('takes initial disable state from sdk.field', ()=>{
|
|
|
46
46
|
field,
|
|
47
47
|
debounce: 0
|
|
48
48
|
};
|
|
49
|
-
render(React.createElement(FieldConnector, props));
|
|
49
|
+
render(/*#__PURE__*/ React.createElement(FieldConnector, props));
|
|
50
50
|
const child = getChild(props.children);
|
|
51
51
|
expect(child.value).toBe('initial value');
|
|
52
52
|
expect(field.getIsDisabled).toHaveBeenCalled();
|
|
@@ -14,13 +14,13 @@ const styles = {
|
|
|
14
14
|
})
|
|
15
15
|
};
|
|
16
16
|
export function Banner({ content, highlight }) {
|
|
17
|
-
return React.createElement("div", {
|
|
17
|
+
return /*#__PURE__*/ React.createElement("div", {
|
|
18
18
|
className: styles.banner
|
|
19
|
-
}, React.createElement(Text, {
|
|
19
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
20
20
|
fontSize: "fontSizeS",
|
|
21
21
|
fontColor: "gray700",
|
|
22
22
|
className: styles.content
|
|
23
|
-
}, content), highlight && React.createElement(Text, {
|
|
23
|
+
}, content), highlight && /*#__PURE__*/ React.createElement(Text, {
|
|
24
24
|
fontSize: "fontSizeS",
|
|
25
25
|
fontColor: "gray700",
|
|
26
26
|
as: "strong",
|
|
@@ -96,7 +96,7 @@ const styles = {
|
|
|
96
96
|
const ArrowDownIcon = generateIcon({
|
|
97
97
|
name: 'ArrowDownIcon',
|
|
98
98
|
viewBox: '0 0 12 20',
|
|
99
|
-
path: React.createElement("path", {
|
|
99
|
+
path: /*#__PURE__*/ React.createElement("path", {
|
|
100
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
101
|
fill: "currentColor"
|
|
102
102
|
})
|
|
@@ -186,7 +186,7 @@ export function LocalePublishingPopover({ entity, jobs, isScheduled, localesStat
|
|
|
186
186
|
'archived',
|
|
187
187
|
'deleted'
|
|
188
188
|
].includes(entityStatus)) {
|
|
189
|
-
return React.createElement(EntityStatusBadge, {
|
|
189
|
+
return /*#__PURE__*/ React.createElement(EntityStatusBadge, {
|
|
190
190
|
className: styles.badge,
|
|
191
191
|
testId: "entity-state",
|
|
192
192
|
entityStatus: entityStatus,
|
|
@@ -197,57 +197,57 @@ export function LocalePublishingPopover({ entity, jobs, isScheduled, localesStat
|
|
|
197
197
|
const status = determineBadgeStatus(localesStatusMap, activeLocales);
|
|
198
198
|
const ariaLabel = status && status.secondary ? 'Multiple statuses' : status?.primary;
|
|
199
199
|
const wrapperClass = generateDynamicStyles(status);
|
|
200
|
-
return React.createElement(Popover, {
|
|
200
|
+
return /*#__PURE__*/ React.createElement(Popover, {
|
|
201
201
|
isOpen: localesStatusMap && isOpen,
|
|
202
202
|
onClose: ()=>setIsOpen(false),
|
|
203
203
|
autoFocus: false,
|
|
204
204
|
placement: "bottom-end"
|
|
205
|
-
}, React.createElement(Popover.Trigger, null, React.createElement(Flex, {
|
|
205
|
+
}, /*#__PURE__*/ React.createElement(Popover.Trigger, null, /*#__PURE__*/ React.createElement(Flex, {
|
|
206
206
|
"aria-label": ariaLabel,
|
|
207
207
|
alignItems: "center",
|
|
208
208
|
className: cx(styles.wrapper, wrapperClass)
|
|
209
|
-
}, React.createElement(EntityStatusBadge, {
|
|
209
|
+
}, /*#__PURE__*/ React.createElement(EntityStatusBadge, {
|
|
210
210
|
className: styles.badge,
|
|
211
211
|
testId: "entity-state",
|
|
212
212
|
entityStatus: entityStatus,
|
|
213
213
|
tabIndex: 0,
|
|
214
214
|
onFocus: ()=>setIsOpen(true),
|
|
215
215
|
onBlur: ()=>setIsOpen(false),
|
|
216
|
-
endIcon: React.createElement(ArrowDownIcon, {
|
|
216
|
+
endIcon: /*#__PURE__*/ React.createElement(ArrowDownIcon, {
|
|
217
217
|
color: getIconColor(entityStatus)
|
|
218
218
|
}),
|
|
219
219
|
onMouseOver: onMouseEnter,
|
|
220
220
|
isScheduled: isScheduled,
|
|
221
221
|
onMouseEnter: onMouseEnter,
|
|
222
222
|
onMouseLeave: onMouseLeave
|
|
223
|
-
}), status?.secondary && React.createElement("svg", {
|
|
223
|
+
}), status?.secondary && /*#__PURE__*/ React.createElement("svg", {
|
|
224
224
|
"data-status": "secondary",
|
|
225
225
|
"aria-hidden": "true",
|
|
226
226
|
width: "4",
|
|
227
227
|
height: "18",
|
|
228
228
|
viewBox: "0 0 4 18"
|
|
229
|
-
}, React.createElement("path", {
|
|
229
|
+
}, /*#__PURE__*/ React.createElement("path", {
|
|
230
230
|
fillRule: "evenodd",
|
|
231
231
|
clipRule: "evenodd",
|
|
232
232
|
d: "M1.45942e-06 18H0.00296171C2.2121 18 4.00296 16.2091 4.00296 14V4C4.00296 1.79086 2.2121 0 0.00295914 0H0C0.830421 0.732944 1.35418 1.80531 1.35418 3V15C1.35418 16.1947 0.830422 17.2671 1.45942e-06 18Z"
|
|
233
|
-
})), status?.tertiary && React.createElement("svg", {
|
|
233
|
+
})), status?.tertiary && /*#__PURE__*/ React.createElement("svg", {
|
|
234
234
|
"data-status": "tertiary",
|
|
235
235
|
"aria-hidden": "true",
|
|
236
236
|
width: "5",
|
|
237
237
|
height: "16",
|
|
238
238
|
viewBox: "0 0 5 16"
|
|
239
|
-
}, React.createElement("path", {
|
|
239
|
+
}, /*#__PURE__*/ React.createElement("path", {
|
|
240
240
|
fillRule: "evenodd",
|
|
241
241
|
clipRule: "evenodd",
|
|
242
242
|
d: "M0.673828 16.0055H0.675391C2.88453 16.0055 4.67539 14.2146 4.67539 12.0055V3.9955C4.67539 1.88216 3.03648 0.151608 0.960312 0.00549316C1.78382 0.738158 2.30257 1.80597 2.30257 2.99493V12.7838C2.30257 14.1053 1.66172 15.2771 0.673828 16.0055Z"
|
|
243
|
-
})))), React.createElement(Popover.Content, {
|
|
243
|
+
})))), /*#__PURE__*/ React.createElement(Popover.Content, {
|
|
244
244
|
className: styles.popoverContent,
|
|
245
245
|
onMouseEnter: onMouseEnter,
|
|
246
246
|
onMouseLeave: onMouseLeave
|
|
247
|
-
}, !!localesStatusMap && React.createElement(React.Fragment, null, React.createElement(ScheduledBanner, {
|
|
247
|
+
}, !!localesStatusMap && /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(ScheduledBanner, {
|
|
248
248
|
entityId: entity.sys.id,
|
|
249
249
|
jobs: jobs
|
|
250
|
-
}), React.createElement(LocalePublishingStatusList, {
|
|
250
|
+
}), /*#__PURE__*/ React.createElement(LocalePublishingStatusList, {
|
|
251
251
|
isScheduled: isScheduled,
|
|
252
252
|
statusMap: localesStatusMap,
|
|
253
253
|
activeLocales: activeLocales
|
|
@@ -19,15 +19,15 @@ const styles = {
|
|
|
19
19
|
})
|
|
20
20
|
};
|
|
21
21
|
export function LocalePublishingStatus({ locale, status, isScheduled }) {
|
|
22
|
-
return React.createElement("div", {
|
|
22
|
+
return /*#__PURE__*/ React.createElement("div", {
|
|
23
23
|
className: styles.localePublishStatus,
|
|
24
24
|
"data-test-id": "locale-publishing-status"
|
|
25
|
-
}, React.createElement(Text, {
|
|
25
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
26
26
|
className: styles.locale,
|
|
27
27
|
fontColor: "gray700"
|
|
28
|
-
}, locale.name, ' ', React.createElement(Text, {
|
|
28
|
+
}, locale.name, ' ', /*#__PURE__*/ React.createElement(Text, {
|
|
29
29
|
fontColor: "gray500"
|
|
30
|
-
}, "(", locale.code, ")", locale.default && ', Default')), React.createElement(EntityStatusBadge, {
|
|
30
|
+
}, "(", locale.code, ")", locale.default && ', Default')), /*#__PURE__*/ React.createElement(EntityStatusBadge, {
|
|
31
31
|
entityStatus: status,
|
|
32
32
|
isScheduled: isScheduled,
|
|
33
33
|
className: styles.status
|
|
@@ -49,19 +49,19 @@ export function LocalePublishingStatusList({ isScheduled, statusMap, activeLocal
|
|
|
49
49
|
draft: 0
|
|
50
50
|
});
|
|
51
51
|
const { selected, nonSelected } = groupAndSortLocales(entries, activeLocales);
|
|
52
|
-
return React.createElement(React.Fragment, null, React.createElement(Banner, {
|
|
52
|
+
return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(Banner, {
|
|
53
53
|
content: "The statuses of the locales for this content:",
|
|
54
54
|
highlight: `${counters.changed} changed, ${counters.published} published, ${counters.draft} draft`
|
|
55
|
-
}), React.createElement("div", {
|
|
55
|
+
}), /*#__PURE__*/ React.createElement("div", {
|
|
56
56
|
"data-test-id": "locale-publishing-selected"
|
|
57
|
-
}, React.createElement(MenuSectionTitle, null, "Locales in the entry editor:"), selected.map(({ locale, status })
|
|
57
|
+
}, /*#__PURE__*/ React.createElement(MenuSectionTitle, null, "Locales in the entry editor:"), selected.map(({ locale, status })=>/*#__PURE__*/ React.createElement(LocalePublishingStatus, {
|
|
58
58
|
key: `selected-${locale.code}`,
|
|
59
59
|
status: status,
|
|
60
60
|
locale: locale,
|
|
61
61
|
isScheduled: isScheduled
|
|
62
|
-
}))), nonSelected.length > 0 && React.createElement("div", {
|
|
62
|
+
}))), nonSelected.length > 0 && /*#__PURE__*/ React.createElement("div", {
|
|
63
63
|
"data-test-id": "locale-publishing-others"
|
|
64
|
-
}, React.createElement(MenuSectionTitle, null, "Other locales:"), nonSelected.map(({ locale, status })
|
|
64
|
+
}, /*#__PURE__*/ React.createElement(MenuSectionTitle, null, "Other locales:"), nonSelected.map(({ locale, status })=>/*#__PURE__*/ React.createElement(LocalePublishingStatus, {
|
|
65
65
|
key: `others-${locale.code}`,
|
|
66
66
|
status: status,
|
|
67
67
|
locale: locale,
|
|
@@ -2,12 +2,12 @@ import React from 'react';
|
|
|
2
2
|
import { formatDateAndTime } from '@contentful/f36-components';
|
|
3
3
|
import orderBy from 'lodash/orderBy';
|
|
4
4
|
import { Banner } from './Banner';
|
|
5
|
-
var ScheduledActionTypes
|
|
5
|
+
var ScheduledActionTypes;
|
|
6
|
+
(function(ScheduledActionTypes) {
|
|
6
7
|
ScheduledActionTypes["publish"] = "publish";
|
|
7
8
|
ScheduledActionTypes["unpublish"] = "unpublish";
|
|
8
9
|
ScheduledActionTypes["patch+publish"] = "patch+publish";
|
|
9
|
-
|
|
10
|
-
}(ScheduledActionTypes || {});
|
|
10
|
+
})(ScheduledActionTypes || (ScheduledActionTypes = {}));
|
|
11
11
|
export function ScheduledBanner({ entityId, jobs }) {
|
|
12
12
|
const scheduledJobs = jobs.filter((job)=>job.entity.sys.id === entityId);
|
|
13
13
|
const sortedScheduledJobs = orderBy(scheduledJobs, [
|
|
@@ -22,7 +22,7 @@ export function ScheduledBanner({ entityId, jobs }) {
|
|
|
22
22
|
const pendingJobsCount = scheduledJobs.length - 1;
|
|
23
23
|
const lowerCaseAction = scheduledAction.action.toLowerCase();
|
|
24
24
|
const action = lowerCaseAction === "patch+publish" ? `${lowerCaseAction} (via Schedule Series)` : lowerCaseAction;
|
|
25
|
-
return React.createElement(Banner, {
|
|
25
|
+
return /*#__PURE__*/ React.createElement(Banner, {
|
|
26
26
|
content: `All locales are scheduled to ${action} on:`,
|
|
27
27
|
highlight: `${formatDateAndTime(scheduledAction.scheduledFor.datetime)}${pendingJobsCount > 0 ? ` [and +${pendingJobsCount} more]` : ''}`
|
|
28
28
|
});
|
|
@@ -40,7 +40,7 @@ export function openDialog(options, Component) {
|
|
|
40
40
|
const size = isNumber(options.width) ? `${options.width}px` : options.width;
|
|
41
41
|
return open(({ isShown, onClose })=>{
|
|
42
42
|
const onCloseHandler = ()=>onClose();
|
|
43
|
-
return React.createElement(Modal, {
|
|
43
|
+
return /*#__PURE__*/ React.createElement(Modal, {
|
|
44
44
|
key: key,
|
|
45
45
|
shouldCloseOnOverlayClick: options.shouldCloseOnOverlayClick || false,
|
|
46
46
|
shouldCloseOnEscapePress: options.shouldCloseOnEscapePress || false,
|
|
@@ -49,15 +49,15 @@ export function openDialog(options, Component) {
|
|
|
49
49
|
isShown: isShown,
|
|
50
50
|
onClose: onCloseHandler,
|
|
51
51
|
size: size || '700px'
|
|
52
|
-
}, ()
|
|
52
|
+
}, ()=>/*#__PURE__*/ React.createElement(React.Fragment, null, options.title && /*#__PURE__*/ React.createElement(ModalHeader, {
|
|
53
53
|
testId: "dialog-title",
|
|
54
54
|
title: options.title,
|
|
55
55
|
onClose: onCloseHandler
|
|
56
|
-
}), React.createElement("div", {
|
|
56
|
+
}), /*#__PURE__*/ React.createElement("div", {
|
|
57
57
|
style: {
|
|
58
58
|
minHeight: options.minHeight || 'auto'
|
|
59
59
|
}
|
|
60
|
-
}, React.createElement(Component, {
|
|
60
|
+
}, /*#__PURE__*/ React.createElement(Component, {
|
|
61
61
|
onClose: onClose
|
|
62
62
|
}))));
|
|
63
63
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { Note } from '@contentful/f36-note';
|
|
3
3
|
export function PredefinedValuesError() {
|
|
4
|
-
return React.createElement(Note, {
|
|
4
|
+
return /*#__PURE__*/ React.createElement(Note, {
|
|
5
5
|
variant: "warning",
|
|
6
6
|
testId: "predefined-values-warning"
|
|
7
7
|
}, "The widget failed to initialize. You can fix the problem by providing predefined values under the validations tab in the field settings.");
|
|
@@ -14,13 +14,13 @@ const styles = {
|
|
|
14
14
|
})
|
|
15
15
|
};
|
|
16
16
|
export function Banner({ content, highlight }) {
|
|
17
|
-
return React.createElement("div", {
|
|
17
|
+
return /*#__PURE__*/ React.createElement("div", {
|
|
18
18
|
className: styles.banner
|
|
19
|
-
}, React.createElement(Text, {
|
|
19
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
20
20
|
fontSize: "fontSizeS",
|
|
21
21
|
fontColor: "gray700",
|
|
22
22
|
className: styles.content
|
|
23
|
-
}, content), highlight && React.createElement(Text, {
|
|
23
|
+
}, content), highlight && /*#__PURE__*/ React.createElement(Text, {
|
|
24
24
|
fontSize: "fontSizeS",
|
|
25
25
|
fontColor: "gray700",
|
|
26
26
|
as: "strong",
|
|
@@ -16,7 +16,7 @@ const config = {
|
|
|
16
16
|
};
|
|
17
17
|
export function ReleaseEntityStatusBadge({ className, action }) {
|
|
18
18
|
const badgeConfig = config[action];
|
|
19
|
-
return React.createElement(Badge, {
|
|
19
|
+
return /*#__PURE__*/ React.createElement(Badge, {
|
|
20
20
|
testId: "release-entity-action-status",
|
|
21
21
|
className: className,
|
|
22
22
|
variant: badgeConfig.variant
|
|
@@ -19,15 +19,15 @@ const styles = {
|
|
|
19
19
|
})
|
|
20
20
|
};
|
|
21
21
|
export function ReleaseEntityStatusLocale({ locale, label, variant }) {
|
|
22
|
-
return React.createElement("div", {
|
|
22
|
+
return /*#__PURE__*/ React.createElement("div", {
|
|
23
23
|
className: styles.localePublishStatus,
|
|
24
24
|
"data-test-id": "locale-publishing-status"
|
|
25
|
-
}, React.createElement(Text, {
|
|
25
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
26
26
|
className: styles.locale,
|
|
27
27
|
fontColor: "gray700"
|
|
28
|
-
}, locale.name, ' ', React.createElement(Text, {
|
|
28
|
+
}, locale.name, ' ', /*#__PURE__*/ React.createElement(Text, {
|
|
29
29
|
fontColor: "gray500"
|
|
30
|
-
}, "(", locale.code, ")", locale.default && ', Default')), React.createElement(Badge, {
|
|
30
|
+
}, "(", locale.code, ")", locale.default && ', Default')), /*#__PURE__*/ React.createElement(Badge, {
|
|
31
31
|
className: styles.status,
|
|
32
32
|
variant: variant
|
|
33
33
|
}, label));
|
|
@@ -49,19 +49,19 @@ export function ReleaseEntityStatusLocalesList({ statusMap, activeLocales }) {
|
|
|
49
49
|
remainsDraft: 0
|
|
50
50
|
});
|
|
51
51
|
const { selected, nonSelected } = groupAndSortLocales(entries, activeLocales);
|
|
52
|
-
return React.createElement(React.Fragment, null, React.createElement(Banner, {
|
|
52
|
+
return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(Banner, {
|
|
53
53
|
content: "The statuses of the locales for this content:",
|
|
54
54
|
highlight: `${counters.becomesDraft} becomes draft, ${counters.willPublish} will publish, ${counters.remainsDraft} remains draft`
|
|
55
|
-
}), React.createElement("div", {
|
|
55
|
+
}), /*#__PURE__*/ React.createElement("div", {
|
|
56
56
|
"data-test-id": "locale-publishing-selected"
|
|
57
|
-
}, React.createElement(MenuSectionTitle, null, "Locales in the entry editor:"), selected.map(({ locale, label, variant })
|
|
57
|
+
}, /*#__PURE__*/ React.createElement(MenuSectionTitle, null, "Locales in the entry editor:"), selected.map(({ locale, label, variant })=>/*#__PURE__*/ React.createElement(ReleaseEntityStatusLocale, {
|
|
58
58
|
key: `selected-${locale.code}`,
|
|
59
59
|
label: label,
|
|
60
60
|
variant: variant,
|
|
61
61
|
locale: locale
|
|
62
|
-
}))), nonSelected.length > 0 && React.createElement("div", {
|
|
62
|
+
}))), nonSelected.length > 0 && /*#__PURE__*/ React.createElement("div", {
|
|
63
63
|
"data-test-id": "locale-publishing-others"
|
|
64
|
-
}, React.createElement(MenuSectionTitle, null, "Other locales:"), nonSelected.map(({ locale, label, variant })
|
|
64
|
+
}, /*#__PURE__*/ React.createElement(MenuSectionTitle, null, "Other locales:"), nonSelected.map(({ locale, label, variant })=>/*#__PURE__*/ React.createElement(ReleaseEntityStatusLocale, {
|
|
65
65
|
key: `others-${locale.code}`,
|
|
66
66
|
label: label,
|
|
67
67
|
variant: variant,
|
|
@@ -156,65 +156,65 @@ export function ReleaseEntityStatusPopover({ releaseLocalesStatusMap, activeLoca
|
|
|
156
156
|
const ArrowDownIcon = generateIcon({
|
|
157
157
|
name: 'ArrowDownIcon',
|
|
158
158
|
viewBox: '0 0 12 20',
|
|
159
|
-
path: React.createElement("path", {
|
|
159
|
+
path: /*#__PURE__*/ React.createElement("path", {
|
|
160
160
|
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",
|
|
161
161
|
fill: "currentColor"
|
|
162
162
|
})
|
|
163
163
|
});
|
|
164
164
|
if (isLoading) {
|
|
165
|
-
return React.createElement(Skeleton.Container, {
|
|
165
|
+
return /*#__PURE__*/ React.createElement(Skeleton.Container, {
|
|
166
166
|
className: styles.skeletonBadge
|
|
167
|
-
}, React.createElement(Skeleton.Image, {
|
|
167
|
+
}, /*#__PURE__*/ React.createElement(Skeleton.Image, {
|
|
168
168
|
testId: `Release-entity-locale-status-badge-skeleton`,
|
|
169
169
|
width: "65px",
|
|
170
170
|
height: "20px"
|
|
171
171
|
}));
|
|
172
172
|
}
|
|
173
|
-
return React.createElement(Popover, {
|
|
173
|
+
return /*#__PURE__*/ React.createElement(Popover, {
|
|
174
174
|
isOpen: releaseLocalesStatusMap && isOpen,
|
|
175
175
|
onClose: ()=>setIsOpen(false),
|
|
176
176
|
autoFocus: false,
|
|
177
177
|
placement: "bottom-end"
|
|
178
|
-
}, React.createElement(Popover.Trigger, null, React.createElement(Flex, {
|
|
178
|
+
}, /*#__PURE__*/ React.createElement(Popover.Trigger, null, /*#__PURE__*/ React.createElement(Flex, {
|
|
179
179
|
"aria-label": ariaLabel,
|
|
180
180
|
alignItems: "center",
|
|
181
181
|
className: cx(styles.wrapper, wrapperClass)
|
|
182
|
-
}, React.createElement(Badge, {
|
|
182
|
+
}, /*#__PURE__*/ React.createElement(Badge, {
|
|
183
183
|
tabIndex: 0,
|
|
184
184
|
variant: RELEASE_BADGES[status.primary].variant,
|
|
185
185
|
onFocus: ()=>setIsOpen(true),
|
|
186
186
|
onBlur: ()=>setIsOpen(false),
|
|
187
|
-
endIcon: React.createElement(ArrowDownIcon, {
|
|
187
|
+
endIcon: /*#__PURE__*/ React.createElement(ArrowDownIcon, {
|
|
188
188
|
color: RELEASE_BADGES[status.primary].icon
|
|
189
189
|
}),
|
|
190
190
|
onMouseOver: onMouseEnter,
|
|
191
191
|
onMouseEnter: onMouseEnter,
|
|
192
192
|
onMouseLeave: onMouseLeave
|
|
193
|
-
}, RELEASE_BADGES[status.primary].label), status.secondary && React.createElement("svg", {
|
|
193
|
+
}, RELEASE_BADGES[status.primary].label), status.secondary && /*#__PURE__*/ React.createElement("svg", {
|
|
194
194
|
"data-status": "secondary",
|
|
195
195
|
"aria-hidden": "true",
|
|
196
196
|
width: "4",
|
|
197
197
|
height: "18",
|
|
198
198
|
viewBox: "0 0 4 18"
|
|
199
|
-
}, React.createElement("path", {
|
|
199
|
+
}, /*#__PURE__*/ React.createElement("path", {
|
|
200
200
|
fillRule: "evenodd",
|
|
201
201
|
clipRule: "evenodd",
|
|
202
202
|
d: "M1.45942e-06 18H0.00296171C2.2121 18 4.00296 16.2091 4.00296 14V4C4.00296 1.79086 2.2121 0 0.00295914 0H0C0.830421 0.732944 1.35418 1.80531 1.35418 3V15C1.35418 16.1947 0.830422 17.2671 1.45942e-06 18Z"
|
|
203
|
-
})), status.tertiary && React.createElement("svg", {
|
|
203
|
+
})), status.tertiary && /*#__PURE__*/ React.createElement("svg", {
|
|
204
204
|
"data-status": "tertiary",
|
|
205
205
|
"aria-hidden": "true",
|
|
206
206
|
width: "5",
|
|
207
207
|
height: "16",
|
|
208
208
|
viewBox: "0 0 5 16"
|
|
209
|
-
}, React.createElement("path", {
|
|
209
|
+
}, /*#__PURE__*/ React.createElement("path", {
|
|
210
210
|
fillRule: "evenodd",
|
|
211
211
|
clipRule: "evenodd",
|
|
212
212
|
d: "M0.673828 16.0055H0.675391C2.88453 16.0055 4.67539 14.2146 4.67539 12.0055V3.9955C4.67539 1.88216 3.03648 0.151608 0.960312 0.00549316C1.78382 0.738158 2.30257 1.80597 2.30257 2.99493V12.7838C2.30257 14.1053 1.66172 15.2771 0.673828 16.0055Z"
|
|
213
|
-
})))), React.createElement(Popover.Content, {
|
|
213
|
+
})))), /*#__PURE__*/ React.createElement(Popover.Content, {
|
|
214
214
|
className: styles.popoverContent,
|
|
215
215
|
onMouseEnter: onMouseEnter,
|
|
216
216
|
onMouseLeave: onMouseLeave
|
|
217
|
-
}, !!releaseLocalesStatusMap && React.createElement(React.Fragment, null, React.createElement(ReleaseEntityStatusLocalesList, {
|
|
217
|
+
}, !!releaseLocalesStatusMap && /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(ReleaseEntityStatusLocalesList, {
|
|
218
218
|
statusMap: releaseLocalesStatusMap,
|
|
219
219
|
activeLocales: activeLocales
|
|
220
220
|
}))));
|
package/dist/esm/index.js
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
export { AccessAPI, AppConfigAPI, BaseAppSDK, ContentType, DialogsAPI, EntryAPI, EntryFieldAPI, FieldAPI, FieldAppSDK, IdsAPI, LocalesAPI, LocationAPI, NavigatorAPI, NotifierAPI, OpenCustomWidgetOptions, ParametersAPI, SpaceAPI, WindowAPI } from '@contentful/app-sdk';
|
|
2
2
|
export { CharCounter } from './CharCounter';
|
|
3
3
|
export { CharValidation } from './CharValidation';
|
|
4
|
+
export { ConstraintsUtils };
|
|
5
|
+
export { entityHelpers };
|
|
4
6
|
export { FieldConnector } from './FieldConnector';
|
|
7
|
+
export { ModalDialogLauncher };
|
|
5
8
|
export { PredefinedValuesError } from './PredefinedValuesError';
|
|
6
9
|
export { Asset, Entry, File } from './typesEntity';
|
|
7
10
|
export { isValidImage } from './utils/isValidImage';
|
|
8
11
|
export { shortenStorageUnit, toLocaleString } from './utils/shortenStorageUnit';
|
|
9
|
-
export * from './utils/parseReleaseParameters';
|
|
10
|
-
export * from './hooks/useLocalePublishStatus';
|
|
11
|
-
export * from './hooks/useActiveLocales';
|
|
12
|
-
export { ModalDialogLauncher };
|
|
13
|
-
export { entityHelpers };
|
|
14
|
-
export { ConstraintsUtils };
|
|
15
12
|
export * from './types';
|
|
13
|
+
export * from './hooks/useActiveLocales';
|
|
16
14
|
export * from './hooks/useActiveReleaseLocalesStatuses';
|
|
15
|
+
export * from './hooks/useLocalePublishStatus';
|
|
17
16
|
export * from './LocalePublishingEntityStatusBadge';
|
|
18
17
|
export * from './ReleaseEntityStatusBadge';
|
|
18
|
+
export * from './utils/determineReleaseAction';
|
|
19
|
+
export * from './utils/getEntryReleaseStatus';
|
|
20
|
+
export * from './utils/parseReleaseParameters';
|
|
19
21
|
import * as ModalDialogLauncher from './ModalDialogLauncher';
|
|
20
22
|
import * as ConstraintsUtils from './utils/constraints';
|
|
21
23
|
import * as entityHelpers from './utils/entityHelpers';
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
function isEntryBasedAction(entityItem) {
|
|
2
|
+
return 'action' in entityItem && (entityItem.action === 'publish' || entityItem.action === 'unpublish');
|
|
3
|
+
}
|
|
4
|
+
function getLocalesFromEntity(entityItem) {
|
|
5
|
+
const addLocales = entityItem?.add?.fields?.['*'] ?? [];
|
|
6
|
+
const removeLocales = entityItem?.remove?.fields?.['*'] ?? [];
|
|
7
|
+
return {
|
|
8
|
+
addLocales,
|
|
9
|
+
removeLocales
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function getLocaleBasedAction(addLocales, removeLocales) {
|
|
13
|
+
const hasPublish = addLocales.length > 0;
|
|
14
|
+
const hasUnpublish = removeLocales.length > 0;
|
|
15
|
+
if (hasPublish && !hasUnpublish) {
|
|
16
|
+
return 'publish';
|
|
17
|
+
}
|
|
18
|
+
if (!hasPublish && hasUnpublish) {
|
|
19
|
+
return 'unpublish';
|
|
20
|
+
}
|
|
21
|
+
return 'publish';
|
|
22
|
+
}
|
|
23
|
+
export function determineReleaseAction(entryId, release) {
|
|
24
|
+
if (!release) {
|
|
25
|
+
return {
|
|
26
|
+
releaseAction: 'not-in-release'
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const entityItem = release.entities?.items.find((item)=>item.entity.sys.id === entryId);
|
|
30
|
+
if (!entityItem) {
|
|
31
|
+
return {
|
|
32
|
+
releaseAction: 'not-in-release'
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (isEntryBasedAction(entityItem)) {
|
|
36
|
+
return {
|
|
37
|
+
releaseAction: entityItem.action,
|
|
38
|
+
entityItem
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const { addLocales, removeLocales } = getLocalesFromEntity(entityItem);
|
|
42
|
+
const releaseAction = getLocaleBasedAction(addLocales, removeLocales);
|
|
43
|
+
return {
|
|
44
|
+
releaseAction,
|
|
45
|
+
entityItem,
|
|
46
|
+
addLocales,
|
|
47
|
+
removeLocales
|
|
48
|
+
};
|
|
49
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { determineReleaseAction } from './determineReleaseAction';
|
|
2
|
+
export function getEntryReleaseStatus(entryId, locales, release) {
|
|
3
|
+
const { releaseAction, entityItem, addLocales, removeLocales } = determineReleaseAction(entryId, release);
|
|
4
|
+
if (releaseAction === 'not-in-release' || !entityItem) {
|
|
5
|
+
return {
|
|
6
|
+
releaseAction
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
if ('action' in entityItem) {
|
|
10
|
+
return {
|
|
11
|
+
releaseAction,
|
|
12
|
+
localesCount: locales.length,
|
|
13
|
+
entityItem
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
const localesCount = addLocales && addLocales.length > 0 ? addLocales.length : locales.length;
|
|
17
|
+
return {
|
|
18
|
+
releaseAction,
|
|
19
|
+
localesCount,
|
|
20
|
+
entityItem,
|
|
21
|
+
addLocales,
|
|
22
|
+
removeLocales
|
|
23
|
+
};
|
|
24
|
+
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
export { AccessAPI, AppConfigAPI, BaseAppSDK, ContentType, DialogsAPI, EntryAPI, EntryFieldAPI, FieldAPI, FieldAppSDK, IdsAPI, LocalesAPI, LocationAPI, NavigatorAPI, NotifierAPI, OpenCustomWidgetOptions, ParametersAPI, SpaceAPI, WindowAPI, } from '@contentful/app-sdk';
|
|
2
2
|
export { CharCounter } from './CharCounter';
|
|
3
3
|
export { CharValidation } from './CharValidation';
|
|
4
|
+
export { ConstraintsUtils };
|
|
5
|
+
export { entityHelpers };
|
|
4
6
|
export { FieldConnector } from './FieldConnector';
|
|
5
|
-
export
|
|
7
|
+
export { ModalDialogLauncher };
|
|
6
8
|
export { PredefinedValuesError } from './PredefinedValuesError';
|
|
7
9
|
export { Asset, Entry, File } from './typesEntity';
|
|
8
10
|
export { isValidImage } from './utils/isValidImage';
|
|
9
11
|
export { shortenStorageUnit, toLocaleString } from './utils/shortenStorageUnit';
|
|
10
|
-
export
|
|
11
|
-
export * from './hooks/useLocalePublishStatus';
|
|
12
|
-
export * from './hooks/useActiveLocales';
|
|
13
|
-
export { ModalDialogLauncher };
|
|
14
|
-
export { entityHelpers };
|
|
15
|
-
export { ConstraintsUtils };
|
|
12
|
+
export type { FieldConnectorChildProps } from './FieldConnector';
|
|
16
13
|
export * from './types';
|
|
14
|
+
export * from './hooks/useActiveLocales';
|
|
17
15
|
export * from './hooks/useActiveReleaseLocalesStatuses';
|
|
16
|
+
export * from './hooks/useLocalePublishStatus';
|
|
18
17
|
export * from './LocalePublishingEntityStatusBadge';
|
|
19
18
|
export * from './ReleaseEntityStatusBadge';
|
|
19
|
+
export * from './utils/determineReleaseAction';
|
|
20
|
+
export * from './utils/getEntryReleaseStatus';
|
|
21
|
+
export * from './utils/parseReleaseParameters';
|
|
20
22
|
import * as ModalDialogLauncher from './ModalDialogLauncher';
|
|
21
23
|
import * as ConstraintsUtils from './utils/constraints';
|
|
22
24
|
import * as entityHelpers from './utils/entityHelpers';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ReleaseAction, ReleaseV2Entity, ReleaseV2EntityWithLocales, ReleaseV2Props } from '../types';
|
|
2
|
+
type DetermineActionResult = {
|
|
3
|
+
releaseAction: ReleaseAction;
|
|
4
|
+
entityItem?: ReleaseV2Entity | ReleaseV2EntityWithLocales;
|
|
5
|
+
addLocales?: string[];
|
|
6
|
+
removeLocales?: string[];
|
|
7
|
+
};
|
|
8
|
+
export declare function determineReleaseAction(entryId: string, release?: ReleaseV2Props): DetermineActionResult;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { LocaleProps } from 'contentful-management/types';
|
|
2
|
+
import type { ReleaseAction, ReleaseV2Entity, ReleaseV2EntityWithLocales, ReleaseV2Props } from '../types';
|
|
3
|
+
type GetEntryReleaseStatusResult = {
|
|
4
|
+
releaseAction: ReleaseAction;
|
|
5
|
+
localesCount?: number;
|
|
6
|
+
entityItem?: ReleaseV2Entity | ReleaseV2EntityWithLocales;
|
|
7
|
+
addLocales?: string[];
|
|
8
|
+
removeLocales?: string[];
|
|
9
|
+
};
|
|
10
|
+
export declare function getEntryReleaseStatus(entryId: string, locales: LocaleProps[], release?: ReleaseV2Props): GetEntryReleaseStatusResult;
|
|
11
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contentful/field-editor-shared",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/esm/index.js",
|
|
6
6
|
"types": "dist/types/index.d.ts",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@contentful/app-sdk": "^4.29.0",
|
|
39
39
|
"@contentful/field-editor-test-utils": "^1.5.2",
|
|
40
|
+
"@lingui/core": "5.3.0",
|
|
40
41
|
"@testing-library/react": "16.0.1"
|
|
41
42
|
},
|
|
42
43
|
"dependencies": {
|
|
@@ -50,10 +51,11 @@
|
|
|
50
51
|
},
|
|
51
52
|
"peerDependencies": {
|
|
52
53
|
"@contentful/app-sdk": "^4.29.0",
|
|
54
|
+
"@lingui/core": "^5.3.0",
|
|
53
55
|
"react": ">=16.8.0"
|
|
54
56
|
},
|
|
55
57
|
"publishConfig": {
|
|
56
58
|
"registry": "https://npm.pkg.github.com/"
|
|
57
59
|
},
|
|
58
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "44e5546797a12db4d96f290e039a483297265ffa"
|
|
59
61
|
}
|