strapi-plugin-navigation 2.0.8 → 2.0.9
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/admin/src/components/Item/index.js +5 -4
- package/admin/src/pages/DataManagerProvider/index.js +6 -6
- package/admin/src/pages/View/components/NavigationItemForm/index.js +5 -3
- package/admin/src/pages/View/utils/parsers.js +6 -5
- package/package.json +1 -1
- package/server/services/navigation.js +7 -12
|
@@ -55,7 +55,8 @@ const Item = (props) => {
|
|
|
55
55
|
const { contentTypes, contentTypesNameFields } = config;
|
|
56
56
|
const isExternal = type === navigationItemType.EXTERNAL;
|
|
57
57
|
const isWrapper = type === navigationItemType.WRAPPER;
|
|
58
|
-
const
|
|
58
|
+
const isHandledByPublishFlow = relatedRef && typeof relatedRef.publishedAt !== 'undefined';
|
|
59
|
+
const isPublished = isHandledByPublishFlow && relatedRef.publishedAt;
|
|
59
60
|
const isNextMenuAllowedLevel = isNumber(allowedLevels) ? level < (allowedLevels - 1) : true;
|
|
60
61
|
const isMenuAllowedLevel = isNumber(allowedLevels) ? level < allowedLevels : true;
|
|
61
62
|
const hasChildren = !isEmpty(item.items) && !isExternal && !displayChildren;
|
|
@@ -167,15 +168,15 @@ const Item = (props) => {
|
|
|
167
168
|
</Flex>
|
|
168
169
|
{relatedItemLabel && (
|
|
169
170
|
<Flex justifyContent='center' alignItems='center'>
|
|
170
|
-
<ItemCardBadge
|
|
171
|
+
{isHandledByPublishFlow && <ItemCardBadge
|
|
171
172
|
borderColor={`${relatedBadgeColor}200`}
|
|
172
173
|
backgroundColor={`${relatedBadgeColor}100`}
|
|
173
174
|
textColor={`${relatedBadgeColor}600`}
|
|
174
175
|
className="action"
|
|
175
176
|
small
|
|
176
177
|
>
|
|
177
|
-
{getMessage({id: `components.navigationItem.badge.${isPublished ? 'published' : 'draft'}`})}
|
|
178
|
-
</ItemCardBadge>
|
|
178
|
+
{getMessage({ id: `components.navigationItem.badge.${isPublished ? 'published' : 'draft'}` })}
|
|
179
|
+
</ItemCardBadge>}
|
|
179
180
|
<Typography variant="omega" textColor='neutral600'>{relatedTypeLabel} / </Typography>
|
|
180
181
|
<Typography variant="omega" textColor='neutral800'>{relatedItemLabel}</Typography>
|
|
181
182
|
<Link
|
|
@@ -94,8 +94,8 @@ const DataManagerProvider = ({ children }) => {
|
|
|
94
94
|
} catch (err) {
|
|
95
95
|
console.error({ err });
|
|
96
96
|
toggleNotification({
|
|
97
|
-
type: '
|
|
98
|
-
message: { id: 'notification.error' },
|
|
97
|
+
type: 'warning',
|
|
98
|
+
message: { id: getTrad('notification.error') },
|
|
99
99
|
});
|
|
100
100
|
}
|
|
101
101
|
};
|
|
@@ -133,8 +133,8 @@ const DataManagerProvider = ({ children }) => {
|
|
|
133
133
|
} catch (err) {
|
|
134
134
|
console.error({ err });
|
|
135
135
|
toggleNotification({
|
|
136
|
-
type: '
|
|
137
|
-
message: { id: 'notification.error' },
|
|
136
|
+
type: 'warning',
|
|
137
|
+
message: { id: getTrad('notification.error') },
|
|
138
138
|
});
|
|
139
139
|
}
|
|
140
140
|
};
|
|
@@ -254,7 +254,7 @@ const DataManagerProvider = ({ children }) => {
|
|
|
254
254
|
|
|
255
255
|
if (err.response.payload.data && err.response.payload.data.errorTitles) {
|
|
256
256
|
return toggleNotification({
|
|
257
|
-
type: '
|
|
257
|
+
type: 'warning',
|
|
258
258
|
message: {
|
|
259
259
|
id: formatMessage(
|
|
260
260
|
getTrad('notification.navigation.error'),
|
|
@@ -264,7 +264,7 @@ const DataManagerProvider = ({ children }) => {
|
|
|
264
264
|
});
|
|
265
265
|
}
|
|
266
266
|
toggleNotification({
|
|
267
|
-
type: '
|
|
267
|
+
type: 'warning',
|
|
268
268
|
message: { id: getTrad('notification.error') },
|
|
269
269
|
});
|
|
270
270
|
}
|
|
@@ -77,7 +77,9 @@ const NavigationItemForm = ({
|
|
|
77
77
|
const { onItemClick, onItemLevelAddClick, related, relatedType, menuAttached, type, ...purePayload } = payload;
|
|
78
78
|
const relatedId = related
|
|
79
79
|
const relatedCollectionType = relatedType;
|
|
80
|
-
const title =
|
|
80
|
+
const title = isSingleSelected ?
|
|
81
|
+
relatedTypeSelectOptions.find(v => v.key == relatedType).label :
|
|
82
|
+
payload.title || relatedSelectOptions.find(v => v.key == relatedId)?.label;
|
|
81
83
|
return {
|
|
82
84
|
...purePayload,
|
|
83
85
|
title,
|
|
@@ -88,7 +90,7 @@ const NavigationItemForm = ({
|
|
|
88
90
|
related: type === navigationItemType.INTERNAL ? relatedId : undefined,
|
|
89
91
|
relatedType: type === navigationItemType.INTERNAL ? relatedCollectionType : undefined,
|
|
90
92
|
isSingle: isSingleSelected,
|
|
91
|
-
uiRouterKey: generateUiRouterKey(
|
|
93
|
+
uiRouterKey: generateUiRouterKey(title, relatedId, relatedCollectionType),
|
|
92
94
|
};
|
|
93
95
|
};
|
|
94
96
|
|
|
@@ -232,7 +234,7 @@ const NavigationItemForm = ({
|
|
|
232
234
|
}
|
|
233
235
|
},
|
|
234
236
|
value: get(item, 'uid'),
|
|
235
|
-
label:
|
|
237
|
+
label: get(item, 'label', get(item, 'name')),
|
|
236
238
|
})),
|
|
237
239
|
[contentTypes, usedContentTypesData],
|
|
238
240
|
);
|
|
@@ -122,7 +122,7 @@ const linkRelations = (item, config) => {
|
|
|
122
122
|
|
|
123
123
|
const shouldFindRelated = (isNumber(related) || isUuid(related) || isString(related)) && !relatedRef;
|
|
124
124
|
const shouldBuildRelated = !relatedRef || (relatedRef && (relatedRef.id !== relatedId));
|
|
125
|
-
|
|
125
|
+
|
|
126
126
|
if (shouldBuildRelated && !shouldFindRelated) {
|
|
127
127
|
const relatedContentType = find(contentTypes,
|
|
128
128
|
ct => ct.uid === relatedItem.__contentType, {});
|
|
@@ -295,9 +295,10 @@ export const isRelationPublished = ({ relatedRef, relatedType = {}, type, isColl
|
|
|
295
295
|
|
|
296
296
|
export const validateNavigationStructure = (items = []) =>
|
|
297
297
|
items.map(item =>
|
|
298
|
-
(
|
|
299
|
-
|
|
300
|
-
type: item.type
|
|
301
|
-
|
|
298
|
+
(
|
|
299
|
+
item.removed ||
|
|
300
|
+
isRelationCorrect({ related: item.related, type: item.type }) ||
|
|
301
|
+
(item.isSingle && isRelationCorrect({ related: item.relatedType, type: item.type }))
|
|
302
|
+
) &&
|
|
302
303
|
validateNavigationStructure(item.items)
|
|
303
304
|
).filter(item => !item).length === 0;
|
package/package.json
CHANGED
|
@@ -33,9 +33,7 @@ module.exports = ({ strapi }) => {
|
|
|
33
33
|
const entities = await strapi
|
|
34
34
|
.query(masterModel.uid)
|
|
35
35
|
.findMany({
|
|
36
|
-
|
|
37
|
-
limit: -1,
|
|
38
|
-
}
|
|
36
|
+
limit: -1,
|
|
39
37
|
});
|
|
40
38
|
return entities;
|
|
41
39
|
},
|
|
@@ -52,9 +50,7 @@ module.exports = ({ strapi }) => {
|
|
|
52
50
|
where: {
|
|
53
51
|
master: id,
|
|
54
52
|
},
|
|
55
|
-
|
|
56
|
-
limit: -1,
|
|
57
|
-
},
|
|
53
|
+
limit: -1,
|
|
58
54
|
sort: ['order:asc'],
|
|
59
55
|
populate: ['related', 'parent', 'audience']
|
|
60
56
|
});
|
|
@@ -133,10 +129,10 @@ module.exports = ({ strapi }) => {
|
|
|
133
129
|
const defaultConfigValue = {
|
|
134
130
|
additionalFields: get(config, 'additionalFields', pluginDefaultConfig('additionalFields')),
|
|
135
131
|
contentTypes: get(config, 'contentTypes', pluginDefaultConfig('contentTypes')),
|
|
136
|
-
contentTypesNameFields: get(config, 'contentTypesNameFields',
|
|
137
|
-
contentTypesPopulate: get(config, 'contentTypesPopulate',
|
|
138
|
-
allowedLevels: get(config, 'allowedLevels',
|
|
139
|
-
gql: get(config, 'gql',
|
|
132
|
+
contentTypesNameFields: get(config, 'contentTypesNameFields', pluginDefaultConfig('contentTypesNameFields')),
|
|
133
|
+
contentTypesPopulate: get(config, 'contentTypesPopulate', pluginDefaultConfig('contentTypesPopulate')),
|
|
134
|
+
allowedLevels: get(config, 'allowedLevels', pluginDefaultConfig('allowedLevels')),
|
|
135
|
+
gql: get(config, 'gql', pluginDefaultConfig('gql')),
|
|
140
136
|
}
|
|
141
137
|
pluginStore.set({ key: 'config', value: defaultConfigValue });
|
|
142
138
|
|
|
@@ -632,7 +628,7 @@ module.exports = ({ strapi }) => {
|
|
|
632
628
|
}
|
|
633
629
|
const navigationItem = await strapi
|
|
634
630
|
.query(itemModel.uid)
|
|
635
|
-
.create({ data });
|
|
631
|
+
.create({ data, populate: ['related', 'items'] });
|
|
636
632
|
return !isEmpty(item.items)
|
|
637
633
|
? service.createBranch(
|
|
638
634
|
item.items,
|
|
@@ -735,7 +731,6 @@ module.exports = ({ strapi }) => {
|
|
|
735
731
|
if (relatedItems) {
|
|
736
732
|
return Promise.all(relatedItems.map(async relatedItem => {
|
|
737
733
|
try {
|
|
738
|
-
|
|
739
734
|
const model = strapi.query('plugin::navigation.navigations-items-related');
|
|
740
735
|
const entity = await model
|
|
741
736
|
.findOne({
|