@contentful/field-editor-shared 2.13.4 → 2.13.5
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/ReleaseEntityStatusBadge/ReleaseEntityStatusBadge.js +4 -25
- package/dist/cjs/ReleaseEntityStatusBadge/ReleaseEntityStatusLocale.js +11 -1
- package/dist/cjs/ReleaseEntityStatusBadge/ReleaseEntityStatusLocalesList.js +23 -5
- package/dist/cjs/ReleaseEntityStatusBadge/ReleaseEntityStatusPopover.js +7 -5
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/utils/getReleaseStatusBadgeConfig.js +76 -0
- package/dist/esm/ReleaseEntityStatusBadge/ReleaseEntityStatusBadge.js +4 -25
- package/dist/esm/ReleaseEntityStatusBadge/ReleaseEntityStatusLocale.js +11 -1
- package/dist/esm/ReleaseEntityStatusBadge/ReleaseEntityStatusLocalesList.js +23 -5
- package/dist/esm/ReleaseEntityStatusBadge/ReleaseEntityStatusPopover.js +8 -6
- package/dist/esm/index.js +1 -0
- package/dist/esm/utils/getReleaseStatusBadgeConfig.js +61 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/utils/getReleaseStatusBadgeConfig.d.ts +9 -0
- package/package.json +2 -2
|
@@ -10,38 +10,17 @@ Object.defineProperty(exports, "ReleaseEntityStatusBadge", {
|
|
|
10
10
|
});
|
|
11
11
|
const _react = /*#__PURE__*/ _interop_require_default(require("react"));
|
|
12
12
|
const _f36components = require("@contentful/f36-components");
|
|
13
|
+
const _getReleaseStatusBadgeConfig = require("../utils/getReleaseStatusBadgeConfig");
|
|
13
14
|
function _interop_require_default(obj) {
|
|
14
15
|
return obj && obj.__esModule ? obj : {
|
|
15
16
|
default: obj
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
|
-
const config = {
|
|
19
|
-
willPublish: {
|
|
20
|
-
label: 'Will publish',
|
|
21
|
-
variant: 'positive'
|
|
22
|
-
},
|
|
23
|
-
becomesDraft: {
|
|
24
|
-
label: 'Becomes draft',
|
|
25
|
-
variant: 'warning'
|
|
26
|
-
},
|
|
27
|
-
remainsDraft: {
|
|
28
|
-
label: 'Remains draft',
|
|
29
|
-
variant: 'warning'
|
|
30
|
-
},
|
|
31
|
-
notInRelease: {
|
|
32
|
-
label: 'Not in release',
|
|
33
|
-
variant: 'secondary'
|
|
34
|
-
},
|
|
35
|
-
published: {
|
|
36
|
-
label: 'Published',
|
|
37
|
-
variant: 'positive'
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
19
|
function ReleaseEntityStatusBadge({ className, status }) {
|
|
41
|
-
const
|
|
20
|
+
const { label, variant } = (0, _getReleaseStatusBadgeConfig.getReleaseStatusBadgeConfig)(status);
|
|
42
21
|
return /*#__PURE__*/ _react.default.createElement(_f36components.Badge, {
|
|
43
22
|
testId: "release-entity-action-status",
|
|
44
23
|
className: className,
|
|
45
|
-
variant:
|
|
46
|
-
},
|
|
24
|
+
variant: variant
|
|
25
|
+
}, label);
|
|
47
26
|
}
|
|
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "ReleaseEntityStatusLocale", {
|
|
|
11
11
|
const _react = /*#__PURE__*/ _interop_require_default(require("react"));
|
|
12
12
|
const _f36components = require("@contentful/f36-components");
|
|
13
13
|
const _f36tokens = /*#__PURE__*/ _interop_require_default(require("@contentful/f36-tokens"));
|
|
14
|
+
const _core = require("@lingui/core");
|
|
14
15
|
const _emotion = require("emotion");
|
|
15
16
|
function _interop_require_default(obj) {
|
|
16
17
|
return obj && obj.__esModule ? obj : {
|
|
@@ -34,6 +35,8 @@ const styles = {
|
|
|
34
35
|
})
|
|
35
36
|
};
|
|
36
37
|
function ReleaseEntityStatusLocale({ locale, label, variant }) {
|
|
38
|
+
const localeCode = locale.code;
|
|
39
|
+
const isDefaultLocale = `${locale.default ? ', Default' : ''}`;
|
|
37
40
|
return /*#__PURE__*/ _react.default.createElement("div", {
|
|
38
41
|
className: styles.localePublishStatus,
|
|
39
42
|
"data-test-id": "locale-publishing-status"
|
|
@@ -42,7 +45,14 @@ function ReleaseEntityStatusLocale({ locale, label, variant }) {
|
|
|
42
45
|
fontColor: "gray700"
|
|
43
46
|
}, locale.name, ' ', /*#__PURE__*/ _react.default.createElement(_f36components.Text, {
|
|
44
47
|
fontColor: "gray500"
|
|
45
|
-
},
|
|
48
|
+
}, _core.i18n._({
|
|
49
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusLocale.LocaleCode",
|
|
50
|
+
message: "({localeCode}) {isDefaultLocale}",
|
|
51
|
+
values: {
|
|
52
|
+
localeCode: localeCode,
|
|
53
|
+
isDefaultLocale: isDefaultLocale
|
|
54
|
+
}
|
|
55
|
+
}))), /*#__PURE__*/ _react.default.createElement(_f36components.Badge, {
|
|
46
56
|
className: styles.status,
|
|
47
57
|
variant: variant
|
|
48
58
|
}, label));
|
|
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "ReleaseEntityStatusLocalesList", {
|
|
|
10
10
|
});
|
|
11
11
|
const _react = /*#__PURE__*/ _interop_require_default(require("react"));
|
|
12
12
|
const _f36components = require("@contentful/f36-components");
|
|
13
|
+
const _core = require("@lingui/core");
|
|
13
14
|
const _lodash = require("lodash");
|
|
14
15
|
const _Banner = require("./Banner");
|
|
15
16
|
const _ReleaseEntityStatusLocale = require("./ReleaseEntityStatusLocale");
|
|
@@ -54,7 +55,7 @@ function ReleaseEntityStatusLocalesList({ statusMap, activeLocales }) {
|
|
|
54
55
|
const entries = [
|
|
55
56
|
...statusMap.entries()
|
|
56
57
|
];
|
|
57
|
-
const
|
|
58
|
+
const { willPublish, becomesDraft, remainsDraft } = entries.reduce((prev, [, { status }])=>({
|
|
58
59
|
becomesDraft: prev.becomesDraft + (status === 'becomesDraft' ? 1 : 0),
|
|
59
60
|
willPublish: prev.willPublish + (status === 'willPublish' ? 1 : 0),
|
|
60
61
|
remainsDraft: prev.remainsDraft + (status === 'remainsDraft' ? 1 : 0)
|
|
@@ -65,18 +66,35 @@ function ReleaseEntityStatusLocalesList({ statusMap, activeLocales }) {
|
|
|
65
66
|
});
|
|
66
67
|
const { selected, nonSelected } = groupAndSortLocales(entries, activeLocales);
|
|
67
68
|
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_Banner.Banner, {
|
|
68
|
-
content:
|
|
69
|
-
|
|
69
|
+
content: _core.i18n._({
|
|
70
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusLocalesList.BannerContent",
|
|
71
|
+
message: "The statuses of the locales for this content:"
|
|
72
|
+
}),
|
|
73
|
+
highlight: _core.i18n._({
|
|
74
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusLocalesList.BannerHighlight",
|
|
75
|
+
message: "{becomesDraft} becomes draft, {willPublish} will publish, {remainsDraft} remains draft",
|
|
76
|
+
values: {
|
|
77
|
+
becomesDraft: becomesDraft,
|
|
78
|
+
willPublish: willPublish,
|
|
79
|
+
remainsDraft: remainsDraft
|
|
80
|
+
}
|
|
81
|
+
})
|
|
70
82
|
}), /*#__PURE__*/ _react.default.createElement("div", {
|
|
71
83
|
"data-test-id": "locale-publishing-selected"
|
|
72
|
-
}, /*#__PURE__*/ _react.default.createElement(_f36components.MenuSectionTitle, null,
|
|
84
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.MenuSectionTitle, null, _core.i18n._({
|
|
85
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusLocalesList.SelectedLocalesTitle",
|
|
86
|
+
message: "Locales in the entry editor:"
|
|
87
|
+
})), selected.map(({ locale, label, variant })=>/*#__PURE__*/ _react.default.createElement(_ReleaseEntityStatusLocale.ReleaseEntityStatusLocale, {
|
|
73
88
|
key: `selected-${locale.code}`,
|
|
74
89
|
label: label,
|
|
75
90
|
variant: variant,
|
|
76
91
|
locale: locale
|
|
77
92
|
}))), nonSelected.length > 0 && /*#__PURE__*/ _react.default.createElement("div", {
|
|
78
93
|
"data-test-id": "locale-publishing-others"
|
|
79
|
-
}, /*#__PURE__*/ _react.default.createElement(_f36components.MenuSectionTitle, null,
|
|
94
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.MenuSectionTitle, null, _core.i18n._({
|
|
95
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusLocalesList.OtherLocalesTitle",
|
|
96
|
+
message: "Other locales:"
|
|
97
|
+
})), nonSelected.map(({ locale, label, variant })=>/*#__PURE__*/ _react.default.createElement(_ReleaseEntityStatusLocale.ReleaseEntityStatusLocale, {
|
|
80
98
|
key: `others-${locale.code}`,
|
|
81
99
|
label: label,
|
|
82
100
|
variant: variant,
|
|
@@ -13,7 +13,7 @@ const _f36components = require("@contentful/f36-components");
|
|
|
13
13
|
const _f36icons = require("@contentful/f36-icons");
|
|
14
14
|
const _f36tokens = /*#__PURE__*/ _interop_require_default(require("@contentful/f36-tokens"));
|
|
15
15
|
const _emotion = require("emotion");
|
|
16
|
-
const
|
|
16
|
+
const _getReleaseStatusBadgeConfig = require("../utils/getReleaseStatusBadgeConfig");
|
|
17
17
|
const _ReleaseEntityStatusLocalesList = require("./ReleaseEntityStatusLocalesList");
|
|
18
18
|
function _interop_require_default(obj) {
|
|
19
19
|
return obj && obj.__esModule ? obj : {
|
|
@@ -63,7 +63,8 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
63
63
|
}
|
|
64
64
|
const getColor = ({ secondary, tertiary, isHover })=>{
|
|
65
65
|
const status = secondary || tertiary;
|
|
66
|
-
|
|
66
|
+
const config = (0, _getReleaseStatusBadgeConfig.getReleaseStatusBadgeConfig)(status);
|
|
67
|
+
return isHover ? config?.hover : config?.default;
|
|
67
68
|
};
|
|
68
69
|
const generateDynamicStyles = (status)=>{
|
|
69
70
|
const wrapperClass = (0, _emotion.css)({
|
|
@@ -210,6 +211,7 @@ function ReleaseEntityStatusPopover({ releaseStatusMap, activeLocales }) {
|
|
|
210
211
|
const status = determineBadgeStatus(releaseStatusMap, activeLocales);
|
|
211
212
|
const ariaLabel = status.secondary ? 'Multiple statuses' : status.primary;
|
|
212
213
|
const wrapperClass = generateDynamicStyles(status);
|
|
214
|
+
const { label, icon, variant } = (0, _getReleaseStatusBadgeConfig.getReleaseStatusBadgeConfig)(status.primary);
|
|
213
215
|
return /*#__PURE__*/ _react.default.createElement(_f36components.Popover, {
|
|
214
216
|
isOpen: releaseStatusMap && isOpen,
|
|
215
217
|
onClose: ()=>setIsOpen(false),
|
|
@@ -221,17 +223,17 @@ function ReleaseEntityStatusPopover({ releaseStatusMap, activeLocales }) {
|
|
|
221
223
|
className: (0, _emotion.cx)(styles.wrapper, wrapperClass)
|
|
222
224
|
}, /*#__PURE__*/ _react.default.createElement(_f36components.Badge, {
|
|
223
225
|
tabIndex: 0,
|
|
224
|
-
variant:
|
|
226
|
+
variant: variant,
|
|
225
227
|
onFocus: ()=>setIsOpen(true),
|
|
226
228
|
onBlur: ()=>setIsOpen(false),
|
|
227
229
|
endIcon: /*#__PURE__*/ _react.default.createElement(_f36icons.CaretDownIcon, {
|
|
228
230
|
size: "tiny",
|
|
229
|
-
color:
|
|
231
|
+
color: icon
|
|
230
232
|
}),
|
|
231
233
|
onMouseOver: onMouseEnter,
|
|
232
234
|
onMouseEnter: onMouseEnter,
|
|
233
235
|
onMouseLeave: onMouseLeave
|
|
234
|
-
},
|
|
236
|
+
}, label), status.secondary && /*#__PURE__*/ _react.default.createElement("svg", {
|
|
235
237
|
"data-status": "secondary",
|
|
236
238
|
"aria-hidden": "true",
|
|
237
239
|
width: "4",
|
package/dist/cjs/index.js
CHANGED
|
@@ -112,6 +112,7 @@ _export_star(require("./LocalePublishingEntityStatusBadge"), exports);
|
|
|
112
112
|
_export_star(require("./ReleaseEntityStatusBadge"), exports);
|
|
113
113
|
_export_star(require("./utils/determineReleaseAction"), exports);
|
|
114
114
|
_export_star(require("./utils/getEntityReleaseStatus"), exports);
|
|
115
|
+
_export_star(require("./utils/getReleaseStatusBadgeConfig"), exports);
|
|
115
116
|
function _export_star(from, to) {
|
|
116
117
|
Object.keys(from).forEach(function(k) {
|
|
117
118
|
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "getReleaseStatusBadgeConfig", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return getReleaseStatusBadgeConfig;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _f36tokens = /*#__PURE__*/ _interop_require_default(require("@contentful/f36-tokens"));
|
|
12
|
+
const _core = require("@lingui/core");
|
|
13
|
+
function _interop_require_default(obj) {
|
|
14
|
+
return obj && obj.__esModule ? obj : {
|
|
15
|
+
default: obj
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function getReleaseStatusBadgeConfig(status) {
|
|
19
|
+
switch(status){
|
|
20
|
+
case 'willPublish':
|
|
21
|
+
return {
|
|
22
|
+
label: _core.i18n._({
|
|
23
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusBadge.WillPublish",
|
|
24
|
+
message: "Will publish"
|
|
25
|
+
}),
|
|
26
|
+
variant: 'positive',
|
|
27
|
+
default: _f36tokens.default.green300,
|
|
28
|
+
hover: _f36tokens.default.green400,
|
|
29
|
+
icon: _f36tokens.default.green400
|
|
30
|
+
};
|
|
31
|
+
case 'becomesDraft':
|
|
32
|
+
return {
|
|
33
|
+
label: _core.i18n._({
|
|
34
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusBadge.BecomesDraft",
|
|
35
|
+
message: "Becomes draft"
|
|
36
|
+
}),
|
|
37
|
+
variant: 'warning',
|
|
38
|
+
default: _f36tokens.default.orange300,
|
|
39
|
+
hover: _f36tokens.default.orange400,
|
|
40
|
+
icon: _f36tokens.default.orange400
|
|
41
|
+
};
|
|
42
|
+
case 'remainsDraft':
|
|
43
|
+
return {
|
|
44
|
+
label: _core.i18n._({
|
|
45
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusBadge.RemainsDraft",
|
|
46
|
+
message: "Remains draft"
|
|
47
|
+
}),
|
|
48
|
+
variant: 'warning',
|
|
49
|
+
default: _f36tokens.default.orange300,
|
|
50
|
+
hover: _f36tokens.default.orange400,
|
|
51
|
+
icon: _f36tokens.default.orange400
|
|
52
|
+
};
|
|
53
|
+
case 'notInRelease':
|
|
54
|
+
return {
|
|
55
|
+
label: _core.i18n._({
|
|
56
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusBadge.NotInRelease",
|
|
57
|
+
message: "Not in release"
|
|
58
|
+
}),
|
|
59
|
+
variant: 'secondary',
|
|
60
|
+
default: _f36tokens.default.gray300,
|
|
61
|
+
hover: _f36tokens.default.gray400,
|
|
62
|
+
icon: _f36tokens.default.gray400
|
|
63
|
+
};
|
|
64
|
+
case 'published':
|
|
65
|
+
return {
|
|
66
|
+
label: _core.i18n._({
|
|
67
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusBadge.Published",
|
|
68
|
+
message: "Published"
|
|
69
|
+
}),
|
|
70
|
+
variant: 'positive',
|
|
71
|
+
default: _f36tokens.default.green300,
|
|
72
|
+
hover: _f36tokens.default.green400,
|
|
73
|
+
icon: _f36tokens.default.green400
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -1,32 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Badge } from '@contentful/f36-components';
|
|
3
|
-
|
|
4
|
-
willPublish: {
|
|
5
|
-
label: 'Will publish',
|
|
6
|
-
variant: 'positive'
|
|
7
|
-
},
|
|
8
|
-
becomesDraft: {
|
|
9
|
-
label: 'Becomes draft',
|
|
10
|
-
variant: 'warning'
|
|
11
|
-
},
|
|
12
|
-
remainsDraft: {
|
|
13
|
-
label: 'Remains draft',
|
|
14
|
-
variant: 'warning'
|
|
15
|
-
},
|
|
16
|
-
notInRelease: {
|
|
17
|
-
label: 'Not in release',
|
|
18
|
-
variant: 'secondary'
|
|
19
|
-
},
|
|
20
|
-
published: {
|
|
21
|
-
label: 'Published',
|
|
22
|
-
variant: 'positive'
|
|
23
|
-
}
|
|
24
|
-
};
|
|
3
|
+
import { getReleaseStatusBadgeConfig } from '../utils/getReleaseStatusBadgeConfig';
|
|
25
4
|
export function ReleaseEntityStatusBadge({ className, status }) {
|
|
26
|
-
const
|
|
5
|
+
const { label, variant } = getReleaseStatusBadgeConfig(status);
|
|
27
6
|
return /*#__PURE__*/ React.createElement(Badge, {
|
|
28
7
|
testId: "release-entity-action-status",
|
|
29
8
|
className: className,
|
|
30
|
-
variant:
|
|
31
|
-
},
|
|
9
|
+
variant: variant
|
|
10
|
+
}, label);
|
|
32
11
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Badge, Text } from '@contentful/f36-components';
|
|
3
3
|
import tokens from '@contentful/f36-tokens';
|
|
4
|
+
import { i18n as $_i18n } from "@lingui/core";
|
|
4
5
|
import { css } from 'emotion';
|
|
5
6
|
const styles = {
|
|
6
7
|
locale: css({
|
|
@@ -19,6 +20,8 @@ const styles = {
|
|
|
19
20
|
})
|
|
20
21
|
};
|
|
21
22
|
export function ReleaseEntityStatusLocale({ locale, label, variant }) {
|
|
23
|
+
const localeCode = locale.code;
|
|
24
|
+
const isDefaultLocale = `${locale.default ? ', Default' : ''}`;
|
|
22
25
|
return /*#__PURE__*/ React.createElement("div", {
|
|
23
26
|
className: styles.localePublishStatus,
|
|
24
27
|
"data-test-id": "locale-publishing-status"
|
|
@@ -27,7 +30,14 @@ export function ReleaseEntityStatusLocale({ locale, label, variant }) {
|
|
|
27
30
|
fontColor: "gray700"
|
|
28
31
|
}, locale.name, ' ', /*#__PURE__*/ React.createElement(Text, {
|
|
29
32
|
fontColor: "gray500"
|
|
30
|
-
},
|
|
33
|
+
}, $_i18n._({
|
|
34
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusLocale.LocaleCode",
|
|
35
|
+
message: "({localeCode}) {isDefaultLocale}",
|
|
36
|
+
values: {
|
|
37
|
+
localeCode: localeCode,
|
|
38
|
+
isDefaultLocale: isDefaultLocale
|
|
39
|
+
}
|
|
40
|
+
}))), /*#__PURE__*/ React.createElement(Badge, {
|
|
31
41
|
className: styles.status,
|
|
32
42
|
variant: variant
|
|
33
43
|
}, label));
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { MenuSectionTitle } from '@contentful/f36-components';
|
|
3
|
+
import { i18n as $_i18n } from "@lingui/core";
|
|
3
4
|
import { sortBy } from 'lodash';
|
|
4
5
|
import { Banner } from './Banner';
|
|
5
6
|
import { ReleaseEntityStatusLocale } from './ReleaseEntityStatusLocale';
|
|
@@ -39,7 +40,7 @@ export function ReleaseEntityStatusLocalesList({ statusMap, activeLocales }) {
|
|
|
39
40
|
const entries = [
|
|
40
41
|
...statusMap.entries()
|
|
41
42
|
];
|
|
42
|
-
const
|
|
43
|
+
const { willPublish, becomesDraft, remainsDraft } = entries.reduce((prev, [, { status }])=>({
|
|
43
44
|
becomesDraft: prev.becomesDraft + (status === 'becomesDraft' ? 1 : 0),
|
|
44
45
|
willPublish: prev.willPublish + (status === 'willPublish' ? 1 : 0),
|
|
45
46
|
remainsDraft: prev.remainsDraft + (status === 'remainsDraft' ? 1 : 0)
|
|
@@ -50,18 +51,35 @@ export function ReleaseEntityStatusLocalesList({ statusMap, activeLocales }) {
|
|
|
50
51
|
});
|
|
51
52
|
const { selected, nonSelected } = groupAndSortLocales(entries, activeLocales);
|
|
52
53
|
return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(Banner, {
|
|
53
|
-
content:
|
|
54
|
-
|
|
54
|
+
content: $_i18n._({
|
|
55
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusLocalesList.BannerContent",
|
|
56
|
+
message: "The statuses of the locales for this content:"
|
|
57
|
+
}),
|
|
58
|
+
highlight: $_i18n._({
|
|
59
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusLocalesList.BannerHighlight",
|
|
60
|
+
message: "{becomesDraft} becomes draft, {willPublish} will publish, {remainsDraft} remains draft",
|
|
61
|
+
values: {
|
|
62
|
+
becomesDraft: becomesDraft,
|
|
63
|
+
willPublish: willPublish,
|
|
64
|
+
remainsDraft: remainsDraft
|
|
65
|
+
}
|
|
66
|
+
})
|
|
55
67
|
}), /*#__PURE__*/ React.createElement("div", {
|
|
56
68
|
"data-test-id": "locale-publishing-selected"
|
|
57
|
-
}, /*#__PURE__*/ React.createElement(MenuSectionTitle, null,
|
|
69
|
+
}, /*#__PURE__*/ React.createElement(MenuSectionTitle, null, $_i18n._({
|
|
70
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusLocalesList.SelectedLocalesTitle",
|
|
71
|
+
message: "Locales in the entry editor:"
|
|
72
|
+
})), selected.map(({ locale, label, variant })=>/*#__PURE__*/ React.createElement(ReleaseEntityStatusLocale, {
|
|
58
73
|
key: `selected-${locale.code}`,
|
|
59
74
|
label: label,
|
|
60
75
|
variant: variant,
|
|
61
76
|
locale: locale
|
|
62
77
|
}))), nonSelected.length > 0 && /*#__PURE__*/ React.createElement("div", {
|
|
63
78
|
"data-test-id": "locale-publishing-others"
|
|
64
|
-
}, /*#__PURE__*/ React.createElement(MenuSectionTitle, null,
|
|
79
|
+
}, /*#__PURE__*/ React.createElement(MenuSectionTitle, null, $_i18n._({
|
|
80
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusLocalesList.OtherLocalesTitle",
|
|
81
|
+
message: "Other locales:"
|
|
82
|
+
})), nonSelected.map(({ locale, label, variant })=>/*#__PURE__*/ React.createElement(ReleaseEntityStatusLocale, {
|
|
65
83
|
key: `others-${locale.code}`,
|
|
66
84
|
label: label,
|
|
67
85
|
variant: variant,
|
|
@@ -2,12 +2,13 @@ import React, { useCallback, useRef, useState } from 'react';
|
|
|
2
2
|
import { Badge, Flex, Popover } from '@contentful/f36-components';
|
|
3
3
|
import { CaretDownIcon } from '@contentful/f36-icons';
|
|
4
4
|
import tokens from '@contentful/f36-tokens';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { css, cx } from 'emotion';
|
|
6
|
+
import { getReleaseStatusBadgeConfig } from '../utils/getReleaseStatusBadgeConfig';
|
|
7
7
|
import { ReleaseEntityStatusLocalesList } from './ReleaseEntityStatusLocalesList';
|
|
8
8
|
const getColor = ({ secondary, tertiary, isHover })=>{
|
|
9
9
|
const status = secondary || tertiary;
|
|
10
|
-
|
|
10
|
+
const config = getReleaseStatusBadgeConfig(status);
|
|
11
|
+
return isHover ? config?.hover : config?.default;
|
|
11
12
|
};
|
|
12
13
|
const generateDynamicStyles = (status)=>{
|
|
13
14
|
const wrapperClass = css({
|
|
@@ -154,6 +155,7 @@ export function ReleaseEntityStatusPopover({ releaseStatusMap, activeLocales })
|
|
|
154
155
|
const status = determineBadgeStatus(releaseStatusMap, activeLocales);
|
|
155
156
|
const ariaLabel = status.secondary ? 'Multiple statuses' : status.primary;
|
|
156
157
|
const wrapperClass = generateDynamicStyles(status);
|
|
158
|
+
const { label, icon, variant } = getReleaseStatusBadgeConfig(status.primary);
|
|
157
159
|
return /*#__PURE__*/ React.createElement(Popover, {
|
|
158
160
|
isOpen: releaseStatusMap && isOpen,
|
|
159
161
|
onClose: ()=>setIsOpen(false),
|
|
@@ -165,17 +167,17 @@ export function ReleaseEntityStatusPopover({ releaseStatusMap, activeLocales })
|
|
|
165
167
|
className: cx(styles.wrapper, wrapperClass)
|
|
166
168
|
}, /*#__PURE__*/ React.createElement(Badge, {
|
|
167
169
|
tabIndex: 0,
|
|
168
|
-
variant:
|
|
170
|
+
variant: variant,
|
|
169
171
|
onFocus: ()=>setIsOpen(true),
|
|
170
172
|
onBlur: ()=>setIsOpen(false),
|
|
171
173
|
endIcon: /*#__PURE__*/ React.createElement(CaretDownIcon, {
|
|
172
174
|
size: "tiny",
|
|
173
|
-
color:
|
|
175
|
+
color: icon
|
|
174
176
|
}),
|
|
175
177
|
onMouseOver: onMouseEnter,
|
|
176
178
|
onMouseEnter: onMouseEnter,
|
|
177
179
|
onMouseLeave: onMouseLeave
|
|
178
|
-
},
|
|
180
|
+
}, label), status.secondary && /*#__PURE__*/ React.createElement("svg", {
|
|
179
181
|
"data-status": "secondary",
|
|
180
182
|
"aria-hidden": "true",
|
|
181
183
|
width: "4",
|
package/dist/esm/index.js
CHANGED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import tokens from '@contentful/f36-tokens';
|
|
2
|
+
import { i18n as $_i18n } from "@lingui/core";
|
|
3
|
+
export function getReleaseStatusBadgeConfig(status) {
|
|
4
|
+
switch(status){
|
|
5
|
+
case 'willPublish':
|
|
6
|
+
return {
|
|
7
|
+
label: $_i18n._({
|
|
8
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusBadge.WillPublish",
|
|
9
|
+
message: "Will publish"
|
|
10
|
+
}),
|
|
11
|
+
variant: 'positive',
|
|
12
|
+
default: tokens.green300,
|
|
13
|
+
hover: tokens.green400,
|
|
14
|
+
icon: tokens.green400
|
|
15
|
+
};
|
|
16
|
+
case 'becomesDraft':
|
|
17
|
+
return {
|
|
18
|
+
label: $_i18n._({
|
|
19
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusBadge.BecomesDraft",
|
|
20
|
+
message: "Becomes draft"
|
|
21
|
+
}),
|
|
22
|
+
variant: 'warning',
|
|
23
|
+
default: tokens.orange300,
|
|
24
|
+
hover: tokens.orange400,
|
|
25
|
+
icon: tokens.orange400
|
|
26
|
+
};
|
|
27
|
+
case 'remainsDraft':
|
|
28
|
+
return {
|
|
29
|
+
label: $_i18n._({
|
|
30
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusBadge.RemainsDraft",
|
|
31
|
+
message: "Remains draft"
|
|
32
|
+
}),
|
|
33
|
+
variant: 'warning',
|
|
34
|
+
default: tokens.orange300,
|
|
35
|
+
hover: tokens.orange400,
|
|
36
|
+
icon: tokens.orange400
|
|
37
|
+
};
|
|
38
|
+
case 'notInRelease':
|
|
39
|
+
return {
|
|
40
|
+
label: $_i18n._({
|
|
41
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusBadge.NotInRelease",
|
|
42
|
+
message: "Not in release"
|
|
43
|
+
}),
|
|
44
|
+
variant: 'secondary',
|
|
45
|
+
default: tokens.gray300,
|
|
46
|
+
hover: tokens.gray400,
|
|
47
|
+
icon: tokens.gray400
|
|
48
|
+
};
|
|
49
|
+
case 'published':
|
|
50
|
+
return {
|
|
51
|
+
label: $_i18n._({
|
|
52
|
+
id: "FieldEditors.Shared.ReleaseEntityStatusBadge.Published",
|
|
53
|
+
message: "Published"
|
|
54
|
+
}),
|
|
55
|
+
variant: 'positive',
|
|
56
|
+
default: tokens.green300,
|
|
57
|
+
hover: tokens.green400,
|
|
58
|
+
icon: tokens.green400
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BadgeVariant } from '@contentful/f36-components';
|
|
2
|
+
import { ReleaseEntityStatus } from 'types';
|
|
3
|
+
export declare function getReleaseStatusBadgeConfig(status: ReleaseEntityStatus): {
|
|
4
|
+
label: string;
|
|
5
|
+
variant: BadgeVariant;
|
|
6
|
+
default: string;
|
|
7
|
+
hover: string;
|
|
8
|
+
icon: string;
|
|
9
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contentful/field-editor-shared",
|
|
3
|
-
"version": "2.13.
|
|
3
|
+
"version": "2.13.5",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/esm/index.js",
|
|
6
6
|
"types": "dist/types/index.d.ts",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"publishConfig": {
|
|
59
59
|
"registry": "https://npm.pkg.github.com/"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "0534746626483359387c34f48952d76f90be6e1f"
|
|
62
62
|
}
|