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.
@@ -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 isPublished = relatedRef && relatedRef?.publishedAt;
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}&nbsp;/&nbsp;</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: 'error',
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: 'error',
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: 'error',
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: 'error',
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 = payload.title || relatedSelectOptions.find(v => v.key == relatedId)?.label
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(purePayload.title, relatedId, relatedCollectionType),
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: appendLabelPublicationStatus(get(item, 'label', get(item, 'name')), item, true),
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
- (item.removed || isRelationCorrect({
299
- related: item.related,
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "strapi-plugin-navigation",
3
- "version": "2.0.8",
3
+ "version": "2.0.9",
4
4
  "description": "Strapi - Navigation plugin",
5
5
  "strapi": {
6
6
  "name": "navigation",
@@ -33,9 +33,7 @@ module.exports = ({ strapi }) => {
33
33
  const entities = await strapi
34
34
  .query(masterModel.uid)
35
35
  .findMany({
36
- paggination: {
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
- paggination: {
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', pluginDefaultConfig('contentTypesNameFields')),
137
- contentTypesPopulate: get(config, 'contentTypesPopulate', pluginDefaultConfig('contentTypesPopulate')),
138
- allowedLevels: get(config, 'allowedLevels', pluginDefaultConfig('allowedLevels')),
139
- gql: get(config, 'gql', pluginDefaultConfig('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({