@contentful/field-editor-reference 5.18.0 → 5.20.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/__fixtures__/FakeSdk.js +3 -3
- package/dist/cjs/__fixtures__/asset/index.js +10 -10
- package/dist/cjs/__fixtures__/content-type/index.js +1 -1
- package/dist/cjs/__fixtures__/entry/index.js +7 -7
- package/dist/cjs/__fixtures__/fixtures.js +8 -6
- package/dist/cjs/__fixtures__/locale/index.js +2 -2
- package/dist/cjs/__fixtures__/space/index.js +1 -1
- package/dist/cjs/assets/MultipleMediaEditor.js +7 -5
- package/dist/cjs/assets/SingleMediaEditor.js +6 -4
- package/dist/cjs/assets/WrappedAssetCard/AssetCardActions.js +21 -19
- package/dist/cjs/assets/WrappedAssetCard/FetchingWrappedAssetCard.js +18 -11
- package/dist/cjs/assets/WrappedAssetCard/WrappedAssetCard.js +20 -11
- package/dist/cjs/assets/WrappedAssetCard/WrappedAssetLink.js +12 -9
- package/dist/cjs/assets/index.js +3 -3
- package/dist/cjs/common/EntityStore.js +53 -53
- package/dist/cjs/common/MultipleReferenceEditor.js +20 -11
- package/dist/cjs/common/ReferenceEditor.js +7 -5
- package/dist/cjs/common/SingleReferenceEditor.js +11 -7
- package/dist/cjs/common/SortableLinkList.js +14 -14
- package/dist/cjs/common/customCardTypes.js +4 -2
- package/dist/cjs/common/queryClient.js +102 -0
- package/dist/cjs/common/useContentTypePermissions.js +3 -1
- package/dist/cjs/common/useEditorPermissions.js +15 -3
- package/dist/cjs/common/useEditorPermissions.spec.js +13 -12
- package/dist/cjs/components/AssetThumbnail/AssetThumbnail.js +5 -3
- package/dist/cjs/components/CreateEntryLinkButton/CreateEntryLinkButton.js +13 -9
- package/dist/cjs/components/CreateEntryLinkButton/CreateEntryLinkButton.spec.js +17 -15
- package/dist/cjs/components/CreateEntryLinkButton/CreateEntryMenuTrigger.js +29 -19
- package/dist/cjs/components/CreateEntryLinkButton/CreateEntryMenuTrigger.spec.js +14 -12
- package/dist/cjs/components/LinkActions/CombinedLinkActions.js +28 -21
- package/dist/cjs/components/LinkActions/LinkActions.js +17 -15
- package/dist/cjs/components/LinkActions/LinkEntityActions.js +26 -17
- package/dist/cjs/components/LinkActions/NoLinkPermissionsInfo.js +5 -3
- package/dist/cjs/components/LinkActions/helpers.js +10 -5
- package/dist/cjs/components/LinkActions/redesignStyles.js +4 -4
- package/dist/cjs/components/LinkActions/styles.js +1 -1
- package/dist/cjs/components/MissingEntityCard/MissingEntityCard.js +11 -9
- package/dist/cjs/components/ResourceEntityErrorCard/ResourceEntityErrorCard.js +6 -4
- package/dist/cjs/components/ResourceEntityErrorCard/UnsupportedEntityCard.js +6 -4
- package/dist/cjs/components/ScheduledIconWithTooltip/ScheduleTooltip.js +10 -8
- package/dist/cjs/components/ScheduledIconWithTooltip/ScheduledIconWithTooltip.js +9 -4
- package/dist/cjs/components/ScheduledIconWithTooltip/formatDateAndTime.js +5 -4
- package/dist/cjs/components/SpaceName/SpaceName.js +10 -8
- package/dist/cjs/components/index.js +12 -12
- package/dist/cjs/entries/MultipleEntryReferenceEditor.js +9 -7
- package/dist/cjs/entries/SingleEntryReferenceEditor.js +7 -5
- package/dist/cjs/entries/WrappedEntryCard/FetchingWrappedEntryCard.js +20 -11
- package/dist/cjs/entries/WrappedEntryCard/WrappedEntryCard.js +23 -17
- package/dist/cjs/entries/index.js +3 -3
- package/dist/cjs/index.js +38 -34
- package/dist/cjs/resources/Cards/ContentfulEntryCard.js +13 -4
- package/dist/cjs/resources/Cards/ResourceCard.js +16 -12
- package/dist/cjs/resources/Cards/ResourceCard.spec.js +20 -17
- package/dist/cjs/resources/MultipleResourceReferenceEditor.js +20 -17
- package/dist/cjs/resources/MultipleResourceReferenceEditor.spec.js +34 -13
- package/dist/cjs/resources/SingleResourceReferenceEditor.js +11 -9
- package/dist/cjs/resources/SingleResourceReferenceEditor.spec.js +13 -6
- package/dist/cjs/resources/testHelpers/resourceEditorHelpers.js +12 -5
- package/dist/cjs/resources/useResourceLinkActions.js +11 -2
- package/dist/cjs/types.js +3 -3
- package/dist/cjs/utils/fromFieldValidations.js +2 -1
- package/dist/cjs/utils/useSortIDs.js +6 -4
- package/dist/esm/__fixtures__/FakeSdk.js +3 -3
- package/dist/esm/assets/MultipleMediaEditor.js +3 -3
- package/dist/esm/assets/SingleMediaEditor.js +2 -2
- package/dist/esm/assets/WrappedAssetCard/AssetCardActions.js +12 -12
- package/dist/esm/assets/WrappedAssetCard/FetchingWrappedAssetCard.js +14 -9
- package/dist/esm/assets/WrappedAssetCard/WrappedAssetCard.js +15 -7
- package/dist/esm/assets/WrappedAssetCard/WrappedAssetLink.js +7 -6
- package/dist/esm/common/EntityStore.js +40 -42
- package/dist/esm/common/MultipleReferenceEditor.js +16 -9
- package/dist/esm/common/ReferenceEditor.js +2 -2
- package/dist/esm/common/SingleReferenceEditor.js +7 -5
- package/dist/esm/common/SortableLinkList.js +12 -12
- package/dist/esm/common/queryClient.js +44 -0
- package/dist/esm/common/useContentTypePermissions.js +3 -1
- package/dist/esm/common/useEditorPermissions.js +15 -3
- package/dist/esm/common/useEditorPermissions.spec.js +13 -12
- package/dist/esm/components/AssetThumbnail/AssetThumbnail.js +1 -1
- package/dist/esm/components/CreateEntryLinkButton/CreateEntryLinkButton.js +7 -5
- package/dist/esm/components/CreateEntryLinkButton/CreateEntryLinkButton.spec.js +12 -12
- package/dist/esm/components/CreateEntryLinkButton/CreateEntryMenuTrigger.js +23 -15
- package/dist/esm/components/CreateEntryLinkButton/CreateEntryMenuTrigger.spec.js +9 -8
- package/dist/esm/components/LinkActions/CombinedLinkActions.js +30 -19
- package/dist/esm/components/LinkActions/LinkActions.js +9 -9
- package/dist/esm/components/LinkActions/LinkEntityActions.js +18 -11
- package/dist/esm/components/LinkActions/NoLinkPermissionsInfo.js +1 -1
- package/dist/esm/components/LinkActions/helpers.js +7 -2
- package/dist/esm/components/MissingEntityCard/MissingEntityCard.js +6 -6
- package/dist/esm/components/ResourceEntityErrorCard/ResourceEntityErrorCard.js +2 -2
- package/dist/esm/components/ResourceEntityErrorCard/UnsupportedEntityCard.js +2 -2
- package/dist/esm/components/ScheduledIconWithTooltip/ScheduleTooltip.js +3 -3
- package/dist/esm/components/ScheduledIconWithTooltip/ScheduledIconWithTooltip.js +5 -2
- package/dist/esm/components/ScheduledIconWithTooltip/formatDateAndTime.js +11 -2
- package/dist/esm/components/SpaceName/SpaceName.js +5 -5
- package/dist/esm/entries/MultipleEntryReferenceEditor.js +5 -5
- package/dist/esm/entries/SingleEntryReferenceEditor.js +3 -3
- package/dist/esm/entries/WrappedEntryCard/FetchingWrappedEntryCard.js +15 -8
- package/dist/esm/entries/WrappedEntryCard/WrappedEntryCard.js +18 -14
- package/dist/esm/index.js +1 -0
- package/dist/esm/resources/Cards/ContentfulEntryCard.js +9 -2
- package/dist/esm/resources/Cards/ResourceCard.js +12 -10
- package/dist/esm/resources/Cards/ResourceCard.spec.js +12 -11
- package/dist/esm/resources/MultipleResourceReferenceEditor.js +14 -13
- package/dist/esm/resources/MultipleResourceReferenceEditor.spec.js +30 -11
- package/dist/esm/resources/SingleResourceReferenceEditor.js +6 -6
- package/dist/esm/resources/SingleResourceReferenceEditor.spec.js +9 -4
- package/dist/esm/resources/testHelpers/resourceEditorHelpers.js +9 -2
- package/dist/esm/resources/useResourceLinkActions.js +11 -2
- package/dist/esm/utils/fromFieldValidations.js +1 -0
- package/dist/esm/utils/useSortIDs.js +2 -2
- package/dist/types/common/EntityStore.d.ts +1 -1
- package/dist/types/common/queryClient.d.ts +9 -0
- package/dist/types/index.d.ts +1 -0
- package/package.json +2 -2
|
@@ -13,17 +13,17 @@ const _fromFieldValidations = require("../utils/fromFieldValidations");
|
|
|
13
13
|
const _useAccessApi = require("./useAccessApi");
|
|
14
14
|
const _useContentTypePermissions = require("./useContentTypePermissions");
|
|
15
15
|
function useEditorPermissions(props) {
|
|
16
|
-
const { sdk
|
|
16
|
+
const { sdk, entityType, parameters } = props;
|
|
17
17
|
const validations = (0, _react.useMemo)(()=>(0, _fromFieldValidations.fromFieldValidations)(props.sdk.field), [
|
|
18
18
|
props.sdk.field
|
|
19
19
|
]);
|
|
20
20
|
const [canCreateEntity, setCanCreateEntity] = (0, _react.useState)(true);
|
|
21
21
|
const [canLinkEntity, setCanLinkEntity] = (0, _react.useState)(true);
|
|
22
|
-
const { creatableContentTypes
|
|
22
|
+
const { creatableContentTypes, readableContentTypes, availableContentTypes } = (0, _useContentTypePermissions.useContentTypePermissions)({
|
|
23
23
|
...props,
|
|
24
24
|
validations
|
|
25
25
|
});
|
|
26
|
-
const { canPerformAction
|
|
26
|
+
const { canPerformAction } = (0, _useAccessApi.useAccessApi)(sdk.access);
|
|
27
27
|
(0, _react.useEffect)(()=>{
|
|
28
28
|
if (parameters.instance.showCreateEntityAction === false) {
|
|
29
29
|
setCanCreateEntity(false);
|
|
@@ -31,15 +31,20 @@ function useEditorPermissions(props) {
|
|
|
31
31
|
}
|
|
32
32
|
async function checkCreateAccess() {
|
|
33
33
|
if (entityType === 'Asset') {
|
|
34
|
+
// Hardcoded `true` value following https://contentful.atlassian.net/browse/DANTE-486
|
|
35
|
+
// TODO: refine permissions check in order to account for tags in rules
|
|
34
36
|
const canCreate = await canPerformAction('create', 'Asset') || true;
|
|
35
37
|
setCanCreateEntity(canCreate);
|
|
36
38
|
}
|
|
37
39
|
if (entityType === 'Entry') {
|
|
40
|
+
// Hardcoded `true` value following https://contentful.atlassian.net/browse/DANTE-486
|
|
41
|
+
// TODO: refine permissions check in order to account for tags in rules
|
|
38
42
|
const canCreate = creatableContentTypes.length > 0 || true;
|
|
39
43
|
setCanCreateEntity(canCreate);
|
|
40
44
|
}
|
|
41
45
|
}
|
|
42
46
|
void checkCreateAccess();
|
|
47
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies
|
|
43
48
|
}, [
|
|
44
49
|
entityType,
|
|
45
50
|
parameters.instance,
|
|
@@ -52,15 +57,22 @@ function useEditorPermissions(props) {
|
|
|
52
57
|
}
|
|
53
58
|
async function checkLinkAccess() {
|
|
54
59
|
if (entityType === 'Asset') {
|
|
60
|
+
// Hardcoded `true` value following https://contentful.atlassian.net/browse/DANTE-486
|
|
61
|
+
// TODO: refine permissions check in order to account for tags in rules
|
|
55
62
|
const canRead = await canPerformAction('read', 'Asset') || true;
|
|
56
63
|
setCanLinkEntity(canRead);
|
|
57
64
|
}
|
|
58
65
|
if (entityType === 'Entry') {
|
|
66
|
+
// Hardcoded `true` value following https://contentful.atlassian.net/browse/DANTE-486
|
|
67
|
+
// TODO: refine permissions check in order to account for tags in rules
|
|
68
|
+
// TODO: always show every content type (it's just a filter) to avoid people not seeing
|
|
69
|
+
// their (partly limited) content types
|
|
59
70
|
const canRead = true;
|
|
60
71
|
setCanLinkEntity(canRead);
|
|
61
72
|
}
|
|
62
73
|
}
|
|
63
74
|
void checkLinkAccess();
|
|
75
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies
|
|
64
76
|
}, [
|
|
65
77
|
entityType,
|
|
66
78
|
parameters.instance,
|
|
@@ -18,7 +18,7 @@ describe('useEditorPermissions', ()=>{
|
|
|
18
18
|
id
|
|
19
19
|
}
|
|
20
20
|
});
|
|
21
|
-
const renderEditorPermissions = async ({ entityType
|
|
21
|
+
const renderEditorPermissions = async ({ entityType, params = {}, allContentTypes = [], customizeMock, customizeSdk })=>{
|
|
22
22
|
const sdk = makeFieldAppSDK(customizeMock);
|
|
23
23
|
customizeSdk?.(sdk);
|
|
24
24
|
const renderResult = (0, _reacthooks.renderHook)(()=>(0, _useEditorPermissions.useEditorPermissions)({
|
|
@@ -37,7 +37,7 @@ describe('useEditorPermissions', ()=>{
|
|
|
37
37
|
};
|
|
38
38
|
describe(`behaviour on Asset`, ()=>{
|
|
39
39
|
it(`wont check access when turned off via instance params`, async ()=>{
|
|
40
|
-
const { result
|
|
40
|
+
const { result, sdk } = await renderEditorPermissions({
|
|
41
41
|
entityType: 'Asset',
|
|
42
42
|
params: {
|
|
43
43
|
showCreateEntityAction: false,
|
|
@@ -49,20 +49,20 @@ describe('useEditorPermissions', ()=>{
|
|
|
49
49
|
expect(sdk.access.can).not.toHaveBeenCalledWith();
|
|
50
50
|
});
|
|
51
51
|
it(`checks basic access`, async ()=>{
|
|
52
|
-
const { sdk
|
|
52
|
+
const { sdk } = await renderEditorPermissions({
|
|
53
53
|
entityType: 'Asset'
|
|
54
54
|
});
|
|
55
55
|
expect(sdk.access.can).toHaveBeenCalledWith('create', 'Asset');
|
|
56
56
|
expect(sdk.access.can).toHaveBeenCalledWith('read', 'Asset');
|
|
57
57
|
});
|
|
58
58
|
it(`defaults link asset action visibility to true`, async ()=>{
|
|
59
|
-
const { result
|
|
59
|
+
const { result } = await renderEditorPermissions({
|
|
60
60
|
entityType: 'Asset'
|
|
61
61
|
});
|
|
62
62
|
expect(result.current.canLinkEntity).toBeTruthy();
|
|
63
63
|
});
|
|
64
64
|
it(`returns empty contentTypes`, async ()=>{
|
|
65
|
-
const { result
|
|
65
|
+
const { result } = await renderEditorPermissions({
|
|
66
66
|
entityType: 'Asset',
|
|
67
67
|
allContentTypes: [
|
|
68
68
|
makeContentType('one')
|
|
@@ -82,7 +82,7 @@ describe('useEditorPermissions', ()=>{
|
|
|
82
82
|
});
|
|
83
83
|
};
|
|
84
84
|
it(`wont check access when turned off via instance params`, async ()=>{
|
|
85
|
-
const { result
|
|
85
|
+
const { result, sdk } = await renderEditorPermissions({
|
|
86
86
|
entityType: 'Entry',
|
|
87
87
|
params: {
|
|
88
88
|
showCreateEntityAction: false,
|
|
@@ -98,7 +98,7 @@ describe('useEditorPermissions', ()=>{
|
|
|
98
98
|
makeContentType('one'),
|
|
99
99
|
makeContentType('two')
|
|
100
100
|
];
|
|
101
|
-
const { result
|
|
101
|
+
const { result } = await renderEditorPermissions({
|
|
102
102
|
entityType: 'Entry',
|
|
103
103
|
allContentTypes,
|
|
104
104
|
customizeSdk: (sdk)=>{
|
|
@@ -112,7 +112,7 @@ describe('useEditorPermissions', ()=>{
|
|
|
112
112
|
makeContentType('one'),
|
|
113
113
|
makeContentType('two')
|
|
114
114
|
];
|
|
115
|
-
const { result
|
|
115
|
+
const { result } = await renderEditorPermissions({
|
|
116
116
|
entityType: 'Entry',
|
|
117
117
|
allContentTypes,
|
|
118
118
|
customizeSdk: (sdk)=>{
|
|
@@ -126,7 +126,7 @@ describe('useEditorPermissions', ()=>{
|
|
|
126
126
|
makeContentType('one'),
|
|
127
127
|
makeContentType('two')
|
|
128
128
|
];
|
|
129
|
-
const { result
|
|
129
|
+
const { result } = await renderEditorPermissions({
|
|
130
130
|
entityType: 'Entry',
|
|
131
131
|
allContentTypes,
|
|
132
132
|
customizeSdk: (sdk)=>{
|
|
@@ -135,12 +135,13 @@ describe('useEditorPermissions', ()=>{
|
|
|
135
135
|
});
|
|
136
136
|
expect(result.current.canLinkEntity).toBe(true);
|
|
137
137
|
});
|
|
138
|
+
// eslint-disable-next-line -- TODO: describe this disable jest/no-test-prefixes
|
|
138
139
|
it.skip(`denies creation when no content-type can be read`, async ()=>{
|
|
139
140
|
const allContentTypes = [
|
|
140
141
|
makeContentType('one'),
|
|
141
142
|
makeContentType('two')
|
|
142
143
|
];
|
|
143
|
-
const { result
|
|
144
|
+
const { result } = await renderEditorPermissions({
|
|
144
145
|
entityType: 'Entry',
|
|
145
146
|
allContentTypes,
|
|
146
147
|
customizeSdk: (sdk)=>{
|
|
@@ -154,7 +155,7 @@ describe('useEditorPermissions', ()=>{
|
|
|
154
155
|
makeContentType('one'),
|
|
155
156
|
makeContentType('two')
|
|
156
157
|
];
|
|
157
|
-
const { result
|
|
158
|
+
const { result } = await renderEditorPermissions({
|
|
158
159
|
entityType: 'Entry',
|
|
159
160
|
allContentTypes,
|
|
160
161
|
customizeMock: (field)=>{
|
|
@@ -180,7 +181,7 @@ describe('useEditorPermissions', ()=>{
|
|
|
180
181
|
makeContentType('one'),
|
|
181
182
|
makeContentType('two')
|
|
182
183
|
];
|
|
183
|
-
const { result
|
|
184
|
+
const { result } = await renderEditorPermissions({
|
|
184
185
|
entityType: 'Entry',
|
|
185
186
|
allContentTypes,
|
|
186
187
|
customizeMock: (field)=>{
|
|
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "AssetThumbnail", {
|
|
|
8
8
|
return AssetThumbnail;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _react = _interop_require_wildcard(require("react"));
|
|
11
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
12
12
|
function _getRequireWildcardCache(nodeInterop) {
|
|
13
13
|
if (typeof WeakMap !== "function") return null;
|
|
14
14
|
var cacheBabelInterop = new WeakMap();
|
|
@@ -30,7 +30,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
30
30
|
if (cache && cache.has(obj)) {
|
|
31
31
|
return cache.get(obj);
|
|
32
32
|
}
|
|
33
|
-
var newObj = {
|
|
33
|
+
var newObj = {
|
|
34
|
+
__proto__: null
|
|
35
|
+
};
|
|
34
36
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
35
37
|
for(var key in obj){
|
|
36
38
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -53,7 +55,7 @@ const dimensions = {
|
|
|
53
55
|
height: 70
|
|
54
56
|
};
|
|
55
57
|
function AssetThumbnail(props) {
|
|
56
|
-
return _react.createElement("img", {
|
|
58
|
+
return /*#__PURE__*/ _react.createElement("img", {
|
|
57
59
|
alt: props.file.fileName,
|
|
58
60
|
src: `${props.file.url}?w=${dimensions.width}&h=${dimensions.height}&fit=thumb`,
|
|
59
61
|
height: dimensions.height,
|
|
@@ -8,12 +8,12 @@ Object.defineProperty(exports, "CreateEntryLinkButton", {
|
|
|
8
8
|
return CreateEntryLinkButton;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _react = _interop_require_wildcard(require("react"));
|
|
11
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
12
12
|
const _f36components = require("@contentful/f36-components");
|
|
13
13
|
const _f36icons = require("@contentful/f36-icons");
|
|
14
|
-
const _f36tokens = _interop_require_default(require("@contentful/f36-tokens"));
|
|
14
|
+
const _f36tokens = /*#__PURE__*/ _interop_require_default(require("@contentful/f36-tokens"));
|
|
15
15
|
const _emotion = require("emotion");
|
|
16
|
-
const _get = _interop_require_default(require("lodash/get"));
|
|
16
|
+
const _get = /*#__PURE__*/ _interop_require_default(require("lodash/get"));
|
|
17
17
|
const _CreateEntryMenuTrigger = require("./CreateEntryMenuTrigger");
|
|
18
18
|
function _interop_require_default(obj) {
|
|
19
19
|
return obj && obj.__esModule ? obj : {
|
|
@@ -41,7 +41,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
41
41
|
if (cache && cache.has(obj)) {
|
|
42
42
|
return cache.get(obj);
|
|
43
43
|
}
|
|
44
|
-
var newObj = {
|
|
44
|
+
var newObj = {
|
|
45
|
+
__proto__: null
|
|
46
|
+
};
|
|
45
47
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
46
48
|
for(var key in obj){
|
|
47
49
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -73,15 +75,17 @@ const redesignStyles = {
|
|
|
73
75
|
maxWidth: '300px'
|
|
74
76
|
})
|
|
75
77
|
};
|
|
76
|
-
const CreateEntryLinkButton = ({ contentTypes
|
|
78
|
+
const CreateEntryLinkButton = ({ contentTypes, onSelect, customDropdownItems, text, testId, hasPlusIcon = false, useExperimentalStyles, suggestedContentTypeId, dropdownSettings, disabled = false })=>{
|
|
77
79
|
contentTypes = contentTypes.sort((a, b)=>a.name.localeCompare(b.name));
|
|
78
80
|
const suggestedContentType = contentTypes.find((ct)=>ct.sys.id === suggestedContentTypeId);
|
|
79
81
|
const buttonText = text || `Add ${(0, _get.default)(suggestedContentType || (contentTypes.length === 1 ? contentTypes[0] : {}), 'name', 'entry')}`;
|
|
80
82
|
const hasDropdown = contentTypes.length > 1 || customDropdownItems;
|
|
81
|
-
|
|
83
|
+
// TODO: Introduce `icon: string` and remove `hasPlusIcon` or remove "Plus" if we keep new layout.
|
|
84
|
+
const plusIcon = hasPlusIcon ? /*#__PURE__*/ _react.createElement(_f36icons.PlusIcon, null) : undefined;
|
|
85
|
+
// TODO: Always use "New content" here if we fully switch to new layout.
|
|
82
86
|
const contentTypesLabel = useExperimentalStyles ? 'New content' : undefined;
|
|
83
87
|
const styles = useExperimentalStyles ? redesignStyles : standardStyles;
|
|
84
|
-
return _react.createElement(_CreateEntryMenuTrigger.CreateEntryMenuTrigger, {
|
|
88
|
+
return /*#__PURE__*/ _react.createElement(_CreateEntryMenuTrigger.CreateEntryMenuTrigger, {
|
|
85
89
|
contentTypes: contentTypes,
|
|
86
90
|
suggestedContentTypeId: suggestedContentTypeId,
|
|
87
91
|
contentTypesLabel: contentTypesLabel,
|
|
@@ -89,8 +93,8 @@ const CreateEntryLinkButton = ({ contentTypes , onSelect , customDropdownItems ,
|
|
|
89
93
|
testId: testId,
|
|
90
94
|
dropdownSettings: dropdownSettings,
|
|
91
95
|
customDropdownItems: customDropdownItems
|
|
92
|
-
}, ({ isSelecting
|
|
93
|
-
endIcon: hasDropdown ? _react.createElement(_f36icons.ChevronDownIcon, null) : undefined,
|
|
96
|
+
}, ({ isSelecting })=>/*#__PURE__*/ _react.createElement(_f36components.Button, {
|
|
97
|
+
endIcon: hasDropdown ? /*#__PURE__*/ _react.createElement(_f36icons.ChevronDownIcon, null) : undefined,
|
|
94
98
|
variant: "secondary",
|
|
95
99
|
className: styles.action,
|
|
96
100
|
isDisabled: disabled || isSelecting,
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
const _react = _interop_require_wildcard(require("react"));
|
|
5
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
6
6
|
require("@testing-library/jest-dom");
|
|
7
7
|
const _react1 = require("@testing-library/react");
|
|
8
|
-
const _noop = _interop_require_default(require("lodash/noop"));
|
|
8
|
+
const _noop = /*#__PURE__*/ _interop_require_default(require("lodash/noop"));
|
|
9
9
|
const _CreateEntryLinkButton = require("./CreateEntryLinkButton");
|
|
10
10
|
function _interop_require_default(obj) {
|
|
11
11
|
return obj && obj.__esModule ? obj : {
|
|
@@ -33,7 +33,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
33
33
|
if (cache && cache.has(obj)) {
|
|
34
34
|
return cache.get(obj);
|
|
35
35
|
}
|
|
36
|
-
var newObj = {
|
|
36
|
+
var newObj = {
|
|
37
|
+
__proto__: null
|
|
38
|
+
};
|
|
37
39
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
38
40
|
for(var key in obj){
|
|
39
41
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -85,14 +87,14 @@ describe('CreateEntryLinkButton general', ()=>{
|
|
|
85
87
|
}
|
|
86
88
|
};
|
|
87
89
|
it('renders with multiple content types as list', ()=>{
|
|
88
|
-
const { getByTestId
|
|
90
|
+
const { getByTestId } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryLinkButton.CreateEntryLinkButton, props));
|
|
89
91
|
expect(getByTestId('create-entry-button-menu-trigger')).toBeDefined();
|
|
90
92
|
const link = findButton(getByTestId);
|
|
91
93
|
expect(link).toBeDefined();
|
|
92
94
|
expect(link.textContent).toBe('Add entry');
|
|
93
95
|
});
|
|
94
96
|
it('renders dropdown menu on click when with multiple content types', ()=>{
|
|
95
|
-
const { getByTestId
|
|
97
|
+
const { getByTestId } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryLinkButton.CreateEntryLinkButton, props));
|
|
96
98
|
_react1.fireEvent.click(findButton(getByTestId));
|
|
97
99
|
const menu = getByTestId('add-entry-menu');
|
|
98
100
|
expect(menu).toBeDefined();
|
|
@@ -102,7 +104,7 @@ describe('CreateEntryLinkButton general', ()=>{
|
|
|
102
104
|
});
|
|
103
105
|
it('renders suggestedContentType as text when given', ()=>{
|
|
104
106
|
const suggestedContentTypeId = 'ID_2';
|
|
105
|
-
const { getByTestId
|
|
107
|
+
const { getByTestId } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryLinkButton.CreateEntryLinkButton, {
|
|
106
108
|
...props,
|
|
107
109
|
suggestedContentTypeId: suggestedContentTypeId
|
|
108
110
|
}));
|
|
@@ -112,7 +114,7 @@ describe('CreateEntryLinkButton general', ()=>{
|
|
|
112
114
|
expect(button.textContent).toBe(`Add ${CONTENT_TYPE_2.name}`);
|
|
113
115
|
});
|
|
114
116
|
it('renders the name of the content type as part of the text if only 1 content type is given', ()=>{
|
|
115
|
-
const { getByTestId
|
|
117
|
+
const { getByTestId } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryLinkButton.CreateEntryLinkButton, {
|
|
116
118
|
onSelect: props.onSelect,
|
|
117
119
|
contentTypes: [
|
|
118
120
|
CONTENT_TYPE_1
|
|
@@ -128,7 +130,7 @@ describe('CreateEntryLinkButton general', ()=>{
|
|
|
128
130
|
text: 'CUSTOM_TEXT',
|
|
129
131
|
hasPlusIcon: true
|
|
130
132
|
};
|
|
131
|
-
const { getByTestId
|
|
133
|
+
const { getByTestId } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryLinkButton.CreateEntryLinkButton, {
|
|
132
134
|
...props,
|
|
133
135
|
...propsOverrides
|
|
134
136
|
}));
|
|
@@ -149,13 +151,13 @@ describe('CreateEntryLinkButton with multiple entries', ()=>{
|
|
|
149
151
|
}
|
|
150
152
|
};
|
|
151
153
|
it('should render dropdown items for each content type', ()=>{
|
|
152
|
-
const { getByTestId
|
|
154
|
+
const { getByTestId, getAllByTestId } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryLinkButton.CreateEntryLinkButton, props));
|
|
153
155
|
_react1.fireEvent.click(findButton(getByTestId));
|
|
154
156
|
expect(getAllByTestId('contentType')).toHaveLength(props.contentTypes.length);
|
|
155
157
|
});
|
|
156
158
|
it('calls onSelect after click on menu item', ()=>{
|
|
157
159
|
const selectSpy = jest.fn();
|
|
158
|
-
const { getByTestId
|
|
160
|
+
const { getByTestId, getAllByTestId } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryLinkButton.CreateEntryLinkButton, {
|
|
159
161
|
...props,
|
|
160
162
|
onSelect: selectSpy
|
|
161
163
|
}));
|
|
@@ -175,7 +177,7 @@ describe('CreateEntryLinkButton with a single entry', ()=>{
|
|
|
175
177
|
};
|
|
176
178
|
it('should fire the onSelect function when clicked', ()=>{
|
|
177
179
|
const onSelectStub = jest.fn();
|
|
178
|
-
const { getByTestId
|
|
180
|
+
const { getByTestId } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryLinkButton.CreateEntryLinkButton, {
|
|
179
181
|
...props,
|
|
180
182
|
onSelect: onSelectStub
|
|
181
183
|
}));
|
|
@@ -187,7 +189,7 @@ describe('CreateEntryLinkButton with a single entry', ()=>{
|
|
|
187
189
|
describe('CreateEntryLinkButton common', ()=>{
|
|
188
190
|
it('should render a spinner if onSelect returns a promise', async ()=>{
|
|
189
191
|
const onSelect = jest.fn(()=>new Promise((resolve)=>setTimeout(resolve, 1000)));
|
|
190
|
-
const { getByTestId
|
|
192
|
+
const { getByTestId, container } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryLinkButton.CreateEntryLinkButton, {
|
|
191
193
|
contentTypes: [
|
|
192
194
|
CONTENT_TYPE_1
|
|
193
195
|
],
|
|
@@ -203,7 +205,7 @@ describe('CreateEntryLinkButton common', ()=>{
|
|
|
203
205
|
});
|
|
204
206
|
it('should hide a spinner after the promise from onSelect resolves', async ()=>{
|
|
205
207
|
const onSelect = jest.fn(()=>new Promise((resolve)=>setTimeout(resolve, 500)));
|
|
206
|
-
const { getByTestId
|
|
208
|
+
const { getByTestId, container } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryLinkButton.CreateEntryLinkButton, {
|
|
207
209
|
contentTypes: [
|
|
208
210
|
CONTENT_TYPE_1
|
|
209
211
|
],
|
|
@@ -220,7 +222,7 @@ describe('CreateEntryLinkButton common', ()=>{
|
|
|
220
222
|
});
|
|
221
223
|
it('does not emit onSelect on subsequent click before the promise from onSelect resolves', async ()=>{
|
|
222
224
|
const onSelect = jest.fn(()=>new Promise((resolve)=>setTimeout(()=>resolve(undefined), 200)));
|
|
223
|
-
const { getByTestId
|
|
225
|
+
const { getByTestId } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryLinkButton.CreateEntryLinkButton, {
|
|
224
226
|
contentTypes: [
|
|
225
227
|
CONTENT_TYPE_1
|
|
226
228
|
],
|
|
@@ -236,7 +238,7 @@ describe('CreateEntryLinkButton common', ()=>{
|
|
|
236
238
|
});
|
|
237
239
|
it('emits onSelect on subsequent click after the promise from onSelect resolves', async ()=>{
|
|
238
240
|
const onSelect = jest.fn(()=>Promise.resolve());
|
|
239
|
-
const { getByTestId
|
|
241
|
+
const { getByTestId } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryLinkButton.CreateEntryLinkButton, {
|
|
240
242
|
contentTypes: [
|
|
241
243
|
CONTENT_TYPE_1
|
|
242
244
|
],
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */ "use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
@@ -8,12 +8,12 @@ Object.defineProperty(exports, "CreateEntryMenuTrigger", {
|
|
|
8
8
|
return CreateEntryMenuTrigger;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _react = _interop_require_wildcard(require("react"));
|
|
11
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
12
12
|
const _f36components = require("@contentful/f36-components");
|
|
13
13
|
const _f36icons = require("@contentful/f36-icons");
|
|
14
|
-
const _f36tokens = _interop_require_default(require("@contentful/f36-tokens"));
|
|
14
|
+
const _f36tokens = /*#__PURE__*/ _interop_require_default(require("@contentful/f36-tokens"));
|
|
15
15
|
const _emotion = require("emotion");
|
|
16
|
-
const _get = _interop_require_default(require("lodash/get"));
|
|
16
|
+
const _get = /*#__PURE__*/ _interop_require_default(require("lodash/get"));
|
|
17
17
|
function _interop_require_default(obj) {
|
|
18
18
|
return obj && obj.__esModule ? obj : {
|
|
19
19
|
default: obj
|
|
@@ -40,7 +40,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
40
40
|
if (cache && cache.has(obj)) {
|
|
41
41
|
return cache.get(obj);
|
|
42
42
|
}
|
|
43
|
-
var newObj = {
|
|
43
|
+
var newObj = {
|
|
44
|
+
__proto__: null
|
|
45
|
+
};
|
|
44
46
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
45
47
|
for(var key in obj){
|
|
46
48
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -90,16 +92,23 @@ const styles = {
|
|
|
90
92
|
borderColor: _f36tokens.default.gray200
|
|
91
93
|
})
|
|
92
94
|
};
|
|
93
|
-
const CreateEntryMenuTrigger = ({ contentTypes
|
|
95
|
+
const CreateEntryMenuTrigger = ({ contentTypes, suggestedContentTypeId, contentTypesLabel, onSelect, testId, dropdownSettings = {
|
|
94
96
|
position: 'bottom-left'
|
|
95
|
-
}
|
|
97
|
+
}, customDropdownItems, children, menuProps })=>{
|
|
96
98
|
const [isOpen, setOpen] = (0, _react.useState)(false);
|
|
97
99
|
const [isSelecting, setSelecting] = (0, _react.useState)(false);
|
|
98
100
|
const [searchInput, setSearchInput] = (0, _react.useState)('');
|
|
99
101
|
const wrapper = (0, _react.useRef)(null);
|
|
100
102
|
const textField = (0, _react.useRef)(null);
|
|
101
103
|
const menuListRef = (0, _react.useRef)(null);
|
|
102
|
-
|
|
104
|
+
/*
|
|
105
|
+
By default, dropdown wraps it's content, so it's width = the width of the widest item
|
|
106
|
+
During search, menu items change, and so the widest menu item can change
|
|
107
|
+
This leads to menu always changing it's width
|
|
108
|
+
To prevent this, we get the width of the menu item after the first mount of a dropdown (when all the content is displayed)
|
|
109
|
+
And hardcode it through the class name. This way we ensure that even during search the menu will keep that max width
|
|
110
|
+
That it had on initial mount and that fits any menu item in has
|
|
111
|
+
*/ const [dropdownWidth, setDropdownWidth] = (0, _react.useState)();
|
|
103
112
|
const hasDropdown = contentTypes.length > 1 || !!customDropdownItems;
|
|
104
113
|
const closeMenu = ()=>setOpen(false);
|
|
105
114
|
(0, _react.useEffect)(()=>{
|
|
@@ -124,6 +133,7 @@ const CreateEntryMenuTrigger = ({ contentTypes , suggestedContentTypeId , conten
|
|
|
124
133
|
const handleSelect = (item)=>{
|
|
125
134
|
closeMenu();
|
|
126
135
|
const res = onSelect(item.sys.id);
|
|
136
|
+
// TODO: Convert to controllable component.
|
|
127
137
|
if (res && typeof res.then === 'function') {
|
|
128
138
|
setSelecting(true);
|
|
129
139
|
res.then(()=>setSelecting(false), ()=>setSelecting(false));
|
|
@@ -143,28 +153,28 @@ const CreateEntryMenuTrigger = ({ contentTypes , suggestedContentTypeId , conten
|
|
|
143
153
|
}, [
|
|
144
154
|
isOpen
|
|
145
155
|
]);
|
|
146
|
-
const renderSearchResultsCount = (resultsLength)=>resultsLength ? _react.default.createElement(_f36components.Menu.SectionTitle, {
|
|
156
|
+
const renderSearchResultsCount = (resultsLength)=>resultsLength ? /*#__PURE__*/ _react.default.createElement(_f36components.Menu.SectionTitle, {
|
|
147
157
|
testId: "add-entru-menu-search-results"
|
|
148
158
|
}, resultsLength, " result", resultsLength > 1 ? 's' : '') : null;
|
|
149
159
|
const isSearchable = contentTypes.length > MAX_ITEMS_WITHOUT_SEARCH;
|
|
150
160
|
const maxDropdownHeight = suggestedContentTypeId ? 300 : 250;
|
|
151
161
|
const suggestedContentType = contentTypes.find((ct)=>ct.sys.id === suggestedContentTypeId);
|
|
152
162
|
const filteredContentTypes = contentTypes.filter((ct)=>!searchInput || (0, _get.default)(ct, 'name', 'Untitled').toLowerCase().includes(searchInput.toLowerCase()));
|
|
153
|
-
return _react.default.createElement("span", {
|
|
163
|
+
return /*#__PURE__*/ _react.default.createElement("span", {
|
|
154
164
|
className: styles.wrapper,
|
|
155
165
|
ref: wrapper,
|
|
156
166
|
"data-test-id": testId
|
|
157
|
-
}, _react.default.createElement(_f36components.Menu, {
|
|
167
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.Menu, {
|
|
158
168
|
placement: menuPlacementMap[dropdownSettings.position],
|
|
159
169
|
isAutoalignmentEnabled: dropdownSettings.isAutoalignmentEnabled,
|
|
160
170
|
isOpen: isOpen,
|
|
161
171
|
onClose: closeMenu,
|
|
162
172
|
onOpen: handleMenuOpen,
|
|
163
173
|
...menuProps
|
|
164
|
-
}, _react.default.createElement(_f36components.Menu.Trigger, null, children({
|
|
174
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.Menu.Trigger, null, children({
|
|
165
175
|
isOpen,
|
|
166
176
|
isSelecting
|
|
167
|
-
})), isOpen && _react.default.createElement(_f36components.Menu.List, {
|
|
177
|
+
})), isOpen && /*#__PURE__*/ _react.default.createElement(_f36components.Menu.List, {
|
|
168
178
|
className: styles.dropdownList,
|
|
169
179
|
style: {
|
|
170
180
|
width: dropdownWidth != undefined ? `${dropdownWidth}px` : undefined,
|
|
@@ -172,25 +182,25 @@ const CreateEntryMenuTrigger = ({ contentTypes , suggestedContentTypeId , conten
|
|
|
172
182
|
},
|
|
173
183
|
ref: menuListRef,
|
|
174
184
|
testId: "add-entry-menu"
|
|
175
|
-
}, Boolean(customDropdownItems) && _react.default.createElement(_react.default.Fragment, null, customDropdownItems, _react.default.createElement(_f36components.Menu.Divider, null)), isSearchable && _react.default.createElement(_react.default.Fragment, null, _react.default.createElement("div", {
|
|
185
|
+
}, Boolean(customDropdownItems) && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, customDropdownItems, /*#__PURE__*/ _react.default.createElement(_f36components.Menu.Divider, null)), isSearchable && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement("div", {
|
|
176
186
|
ref: textField,
|
|
177
187
|
className: styles.inputWrapper
|
|
178
|
-
}, _react.default.createElement(_f36components.TextInput, {
|
|
188
|
+
}, /*#__PURE__*/ _react.default.createElement(_f36components.TextInput, {
|
|
179
189
|
className: styles.searchInput,
|
|
180
190
|
placeholder: "Search all content types",
|
|
181
191
|
testId: "add-entry-menu-search",
|
|
182
192
|
value: searchInput,
|
|
183
193
|
onChange: (e)=>setSearchInput(e.target.value)
|
|
184
|
-
}), _react.default.createElement(_f36icons.SearchIcon, {
|
|
194
|
+
}), /*#__PURE__*/ _react.default.createElement(_f36icons.SearchIcon, {
|
|
185
195
|
className: styles.searchIcon
|
|
186
|
-
})), _react.default.createElement(_f36components.Menu.Divider, null)), searchInput && renderSearchResultsCount(filteredContentTypes.length), suggestedContentType && !searchInput && _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_f36components.Menu.SectionTitle, null, "Suggested Content Type"), _react.default.createElement(_f36components.Menu.Item, {
|
|
196
|
+
})), /*#__PURE__*/ _react.default.createElement(_f36components.Menu.Divider, null)), searchInput && renderSearchResultsCount(filteredContentTypes.length), suggestedContentType && !searchInput && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_f36components.Menu.SectionTitle, null, "Suggested Content Type"), /*#__PURE__*/ _react.default.createElement(_f36components.Menu.Item, {
|
|
187
197
|
testId: "suggested",
|
|
188
198
|
onClick: ()=>handleSelect(suggestedContentType)
|
|
189
|
-
}, (0, _get.default)(suggestedContentType, 'name')), _react.default.createElement(_f36components.Menu.Divider, null)), !searchInput && _react.default.createElement(_f36components.Menu.SectionTitle, null, contentTypesLabel), filteredContentTypes.length ? filteredContentTypes.map((contentType, i)
|
|
199
|
+
}, (0, _get.default)(suggestedContentType, 'name')), /*#__PURE__*/ _react.default.createElement(_f36components.Menu.Divider, null)), !searchInput && /*#__PURE__*/ _react.default.createElement(_f36components.Menu.SectionTitle, null, contentTypesLabel), filteredContentTypes.length ? filteredContentTypes.map((contentType, i)=>/*#__PURE__*/ _react.default.createElement(_f36components.Menu.Item, {
|
|
190
200
|
testId: "contentType",
|
|
191
201
|
key: `${(0, _get.default)(contentType, 'name')}-${i}`,
|
|
192
202
|
onClick: ()=>handleSelect(contentType)
|
|
193
|
-
}, (0, _get.default)(contentType, 'name', 'Untitled'))) : _react.default.createElement(_f36components.Menu.Item, {
|
|
203
|
+
}, (0, _get.default)(contentType, 'name', 'Untitled'))) : /*#__PURE__*/ _react.default.createElement(_f36components.Menu.Item, {
|
|
194
204
|
testId: "add-entru-menu-search-results"
|
|
195
205
|
}, "No results found"))));
|
|
196
206
|
};
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
const _react = _interop_require_wildcard(require("react"));
|
|
5
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
6
6
|
const _f36components = require("@contentful/f36-components");
|
|
7
7
|
require("@testing-library/jest-dom/extend-expect");
|
|
8
8
|
const _react1 = require("@testing-library/react");
|
|
9
|
-
const _noop = _interop_require_default(require("lodash/noop"));
|
|
10
|
-
const _fill = _interop_require_default(require("lodash/fill"));
|
|
9
|
+
const _noop = /*#__PURE__*/ _interop_require_default(require("lodash/noop"));
|
|
10
|
+
const _fill = /*#__PURE__*/ _interop_require_default(require("lodash/fill"));
|
|
11
11
|
const _CreateEntryMenuTrigger = require("./CreateEntryMenuTrigger");
|
|
12
12
|
function _interop_require_default(obj) {
|
|
13
13
|
return obj && obj.__esModule ? obj : {
|
|
@@ -35,7 +35,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
35
35
|
if (cache && cache.has(obj)) {
|
|
36
36
|
return cache.get(obj);
|
|
37
37
|
}
|
|
38
|
-
var newObj = {
|
|
38
|
+
var newObj = {
|
|
39
|
+
__proto__: null
|
|
40
|
+
};
|
|
39
41
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
40
42
|
for(var key in obj){
|
|
41
43
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -87,7 +89,7 @@ describe('CreateEntryMenuTrigger general', ()=>{
|
|
|
87
89
|
};
|
|
88
90
|
let stub = jest.fn();
|
|
89
91
|
beforeEach(()=>{
|
|
90
|
-
stub = jest.fn().mockImplementation(()
|
|
92
|
+
stub = jest.fn().mockImplementation(()=>/*#__PURE__*/ _react.createElement(_f36components.Button, {
|
|
91
93
|
testId: "menu-trigger"
|
|
92
94
|
}));
|
|
93
95
|
});
|
|
@@ -95,13 +97,13 @@ describe('CreateEntryMenuTrigger general', ()=>{
|
|
|
95
97
|
const stub = (api)=>{
|
|
96
98
|
expect(api.isOpen).toBe(false);
|
|
97
99
|
expect(api.isSelecting).toBe(false);
|
|
98
|
-
return _react.createElement("span", null);
|
|
100
|
+
return /*#__PURE__*/ _react.createElement("span", null);
|
|
99
101
|
};
|
|
100
|
-
(0, _react1.render)(_react.createElement(_CreateEntryMenuTrigger.CreateEntryMenuTrigger, props, stub));
|
|
102
|
+
(0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryMenuTrigger.CreateEntryMenuTrigger, props, stub));
|
|
101
103
|
});
|
|
102
104
|
it('should set isSelecting to true in case onSelect returns a promise', async ()=>{
|
|
103
105
|
const selectStub = jest.fn(()=>new Promise((resolve)=>setTimeout(resolve, 1000)));
|
|
104
|
-
const { getAllByTestId
|
|
106
|
+
const { getAllByTestId, getByTestId } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryMenuTrigger.CreateEntryMenuTrigger, {
|
|
105
107
|
...props,
|
|
106
108
|
onSelect: selectStub
|
|
107
109
|
}, stub));
|
|
@@ -115,7 +117,7 @@ describe('CreateEntryMenuTrigger general', ()=>{
|
|
|
115
117
|
});
|
|
116
118
|
it('should not set isSelecting to true in case onSelect is sync', async ()=>{
|
|
117
119
|
const selectStub = jest.fn();
|
|
118
|
-
const { getAllByTestId
|
|
120
|
+
const { getAllByTestId, getByTestId } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryMenuTrigger.CreateEntryMenuTrigger, {
|
|
119
121
|
...props,
|
|
120
122
|
onSelect: selectStub
|
|
121
123
|
}, stub));
|
|
@@ -132,7 +134,7 @@ describe('CreateEntryMenuTrigger general', ()=>{
|
|
|
132
134
|
expect(selectStub).toHaveBeenCalled();
|
|
133
135
|
});
|
|
134
136
|
it('renders text input if contentTypes.length > 20', ()=>{
|
|
135
|
-
const { getByTestId
|
|
137
|
+
const { getByTestId } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryMenuTrigger.CreateEntryMenuTrigger, {
|
|
136
138
|
...props,
|
|
137
139
|
contentTypes: (0, _fill.default)(Array(21), CONTENT_TYPE_3)
|
|
138
140
|
}, stub));
|
|
@@ -143,7 +145,7 @@ describe('CreateEntryMenuTrigger general', ()=>{
|
|
|
143
145
|
});
|
|
144
146
|
it('shows the search results if typed in input', ()=>{
|
|
145
147
|
const contentTypes = (0, _fill.default)((0, _fill.default)((0, _fill.default)(Array(21), CONTENT_TYPE_1, 0, 10), CONTENT_TYPE_2, 10, 20), CONTENT_TYPE_3, 20);
|
|
146
|
-
const { getByTestId
|
|
148
|
+
const { getByTestId, getAllByTestId } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryMenuTrigger.CreateEntryMenuTrigger, {
|
|
147
149
|
...props,
|
|
148
150
|
contentTypes: contentTypes
|
|
149
151
|
}, stub));
|
|
@@ -176,7 +178,7 @@ describe('CreateEntryMenuTrigger general', ()=>{
|
|
|
176
178
|
expect(getByTestId('add-entru-menu-search-results').textContent).toBe('No results found');
|
|
177
179
|
});
|
|
178
180
|
it('shows suggestedContentType in the list', ()=>{
|
|
179
|
-
const { getByTestId
|
|
181
|
+
const { getByTestId } = (0, _react1.render)(/*#__PURE__*/ _react.createElement(_CreateEntryMenuTrigger.CreateEntryMenuTrigger, {
|
|
180
182
|
...props,
|
|
181
183
|
suggestedContentTypeId: props.contentTypes[0].sys.id
|
|
182
184
|
}, stub));
|