strapi-plugin-navigation 2.1.0 → 2.2.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.
Files changed (116) hide show
  1. package/README.md +17 -7
  2. package/admin/src/components/AdditionalFieldInput/index.d.ts +5 -0
  3. package/admin/src/components/AdditionalFieldInput/index.js +71 -0
  4. package/admin/src/components/AdditionalFieldInput/types.d.ts +14 -0
  5. package/admin/src/components/AdditionalFieldInput/types.js +3 -0
  6. package/admin/src/components/Item/index.js +2 -3
  7. package/admin/src/components/RestartAlert/index.d.ts +1 -1
  8. package/admin/src/components/TextArrayInput/index.d.ts +14 -0
  9. package/admin/src/components/TextArrayInput/index.js +45 -0
  10. package/admin/src/hooks/useAllContentTypes.d.ts +1 -4
  11. package/admin/src/hooks/useAllContentTypes.js +3 -7
  12. package/admin/src/hooks/useNavigationConfig.d.ts +1 -1
  13. package/admin/src/hooks/useNavigationConfig.js +6 -6
  14. package/admin/src/pages/DataManagerProvider/index.d.ts +1 -1
  15. package/admin/src/pages/DataManagerProvider/index.js +9 -11
  16. package/admin/src/pages/SettingsPage/components/CustomFieldForm/index.d.ts +12 -0
  17. package/admin/src/pages/SettingsPage/components/CustomFieldForm/index.js +112 -0
  18. package/admin/src/pages/SettingsPage/components/CustomFieldModal/index.d.ts +12 -0
  19. package/admin/src/pages/SettingsPage/components/CustomFieldModal/index.js +20 -0
  20. package/admin/src/pages/SettingsPage/components/CustomFieldTable/index.d.ts +11 -0
  21. package/admin/src/pages/SettingsPage/components/CustomFieldTable/index.js +105 -0
  22. package/admin/src/pages/SettingsPage/index.d.ts +2 -1
  23. package/admin/src/pages/SettingsPage/index.js +109 -74
  24. package/admin/src/pages/SettingsPage/types.d.ts +32 -0
  25. package/admin/src/pages/SettingsPage/types.js +3 -0
  26. package/admin/src/pages/SettingsPage/utils/form.d.ts +18 -0
  27. package/admin/src/pages/SettingsPage/utils/form.js +34 -0
  28. package/admin/src/pages/SettingsPage/utils/functions.d.ts +2 -2
  29. package/admin/src/pages/SettingsPage/utils/functions.js +1 -1
  30. package/admin/src/pages/View/components/NavigationItemForm/index.d.ts +3 -55
  31. package/admin/src/pages/View/components/NavigationItemForm/index.js +162 -177
  32. package/admin/src/pages/View/components/NavigationItemForm/types.d.ts +90 -0
  33. package/admin/src/pages/View/components/NavigationItemForm/types.js +3 -0
  34. package/admin/src/pages/View/components/NavigationItemForm/utils/form.d.ts +24 -43
  35. package/admin/src/pages/View/components/NavigationItemForm/utils/form.js +78 -45
  36. package/admin/src/pages/View/components/NavigationItemPopup/index.js +1 -2
  37. package/admin/src/pages/View/components/NavigationManager/AllNavigations/icons.d.ts +4 -0
  38. package/admin/src/pages/View/components/NavigationManager/AllNavigations/icons.js +11 -0
  39. package/admin/src/pages/View/components/NavigationManager/AllNavigations/index.d.ts +9 -0
  40. package/admin/src/pages/View/components/NavigationManager/{List → AllNavigations}/index.js +32 -31
  41. package/admin/src/pages/View/components/NavigationManager/DeletionConfirm/index.d.ts +9 -0
  42. package/admin/src/pages/View/components/NavigationManager/{Delete → DeletionConfirm}/index.js +18 -12
  43. package/admin/src/pages/View/components/NavigationManager/ErrorDetails/index.d.ts +9 -0
  44. package/admin/src/pages/View/components/NavigationManager/{Error → ErrorDetails}/index.js +10 -10
  45. package/admin/src/pages/View/components/NavigationManager/Footer/index.d.ts +24 -0
  46. package/admin/src/pages/View/components/NavigationManager/Footer/index.js +13 -0
  47. package/admin/src/pages/View/components/NavigationManager/Form/index.d.ts +3 -2
  48. package/admin/src/pages/View/components/NavigationManager/Form/index.js +7 -2
  49. package/admin/src/pages/View/components/NavigationManager/NavigationUpdate/index.d.ts +9 -0
  50. package/admin/src/pages/View/components/NavigationManager/{Edit → NavigationUpdate}/index.js +16 -11
  51. package/admin/src/pages/View/components/NavigationManager/NewNavigation/index.d.ts +10 -0
  52. package/admin/src/pages/View/components/NavigationManager/{Create → NewNavigation}/index.js +16 -11
  53. package/admin/src/pages/View/components/NavigationManager/index.d.ts +3 -2
  54. package/admin/src/pages/View/components/NavigationManager/index.js +22 -21
  55. package/admin/src/pages/View/components/NavigationManager/types.d.ts +2 -15
  56. package/admin/src/pages/View/index.d.ts +1 -1
  57. package/admin/src/pages/View/index.js +1 -1
  58. package/admin/src/pages/View/utils/parsers.d.ts +1 -0
  59. package/admin/src/pages/View/utils/parsers.js +8 -7
  60. package/admin/src/translations/en.json +37 -0
  61. package/admin/src/translations/index.d.ts +2 -1
  62. package/admin/src/translations/index.js +1 -1
  63. package/admin/src/utils/api.d.ts +8 -7
  64. package/admin/src/utils/api.js +6 -41
  65. package/admin/src/utils/enums.d.ts +25 -0
  66. package/admin/src/utils/enums.js +30 -0
  67. package/admin/src/utils/functions.d.ts +16 -0
  68. package/admin/src/utils/functions.js +46 -0
  69. package/admin/src/utils/index.d.ts +3 -17
  70. package/admin/src/utils/index.js +16 -39
  71. package/package.json +5 -5
  72. package/server/config/index.js +6 -4
  73. package/server/config/setupStrategy.js +13 -1
  74. package/server/content-types/index.d.ts +5 -25
  75. package/server/content-types/navigation/index.d.ts +0 -7
  76. package/server/content-types/navigation/index.js +0 -2
  77. package/server/content-types/navigation-item/index.d.ts +5 -13
  78. package/server/content-types/navigation-item/index.js +0 -2
  79. package/server/content-types/navigation-item/schema.d.ts +5 -0
  80. package/server/content-types/navigation-item/schema.js +5 -0
  81. package/server/content-types/navigations-items-related/index.d.ts +0 -5
  82. package/server/content-types/navigations-items-related/index.js +0 -2
  83. package/server/controllers/admin.js +1 -1
  84. package/server/controllers/client.js +2 -1
  85. package/server/graphql/types/navigation-item.d.ts +2 -1
  86. package/server/graphql/types/navigation-item.js +26 -2
  87. package/server/index.d.ts +5 -25
  88. package/server/services/admin.js +26 -14
  89. package/server/services/client.js +64 -21
  90. package/server/services/common.js +25 -6
  91. package/server/utils/constant.d.ts +0 -3
  92. package/server/utils/constant.js +1 -2
  93. package/server/utils/functions.d.ts +12 -12
  94. package/server/utils/functions.js +60 -22
  95. package/strapi-server.d.ts +5 -25
  96. package/tsconfig.tsbuildinfo +1 -1
  97. package/types/config.d.ts +6 -2
  98. package/types/contentTypes.d.ts +22 -1
  99. package/types/services.d.ts +14 -5
  100. package/types/utils.d.ts +6 -1
  101. package/types/utils.js +15 -1
  102. package/admin/src/pages/View/components/NavigationManager/Create/index.d.ts +0 -9
  103. package/admin/src/pages/View/components/NavigationManager/Delete/index.d.ts +0 -8
  104. package/admin/src/pages/View/components/NavigationManager/Edit/index.d.ts +0 -8
  105. package/admin/src/pages/View/components/NavigationManager/Error/index.d.ts +0 -8
  106. package/admin/src/pages/View/components/NavigationManager/List/index.d.ts +0 -8
  107. package/admin/src/pages/View/utils/enums.d.ts +0 -9
  108. package/admin/src/pages/View/utils/enums.js +0 -12
  109. package/admin/src/utils/getTrad.d.ts +0 -3
  110. package/admin/src/utils/getTrad.js +0 -9
  111. package/server/content-types/navigation/lifecycle.d.ts +0 -9
  112. package/server/content-types/navigation/lifecycle.js +0 -10
  113. package/server/content-types/navigation-item/lifecycle.d.ts +0 -16
  114. package/server/content-types/navigation-item/lifecycle.js +0 -31
  115. package/server/content-types/navigations-items-related/lifecycle.d.ts +0 -8
  116. package/server/content-types/navigations-items-related/lifecycle.js +0 -22
@@ -28,31 +28,38 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  const react_1 = __importStar(require("react"));
30
30
  const lodash_1 = require("lodash");
31
- const prop_types_1 = __importDefault(require("prop-types"));
31
+ const slugify_1 = __importDefault(require("@sindresorhus/slugify"));
32
32
  const formik_1 = require("formik");
33
- const slugify_1 = __importDefault(require("slugify"));
34
33
  const ModalLayout_1 = require("@strapi/design-system/ModalLayout");
35
34
  const Select_1 = require("@strapi/design-system/Select");
36
35
  const Grid_1 = require("@strapi/design-system/Grid");
37
36
  const helper_plugin_1 = require("@strapi/helper-plugin");
38
37
  const Button_1 = require("@strapi/design-system/Button");
39
38
  const NavigationItemPopupFooter_1 = require("../NavigationItemPopup/NavigationItemPopupFooter");
40
- const enums_1 = require("../../utils/enums");
39
+ const utils_1 = require("../../../../utils");
41
40
  const parsers_1 = require("../../utils/parsers");
42
- const form_1 = require("./utils/form");
43
- const form_2 = require("../../utils/form");
41
+ const formDefinition = __importStar(require("./utils/form"));
42
+ const form_1 = require("../../utils/form");
44
43
  const translations_1 = require("../../../../translations");
45
- const utils_1 = require("../../../../utils");
44
+ const types_1 = require("../../../../../../types");
45
+ const AdditionalFieldInput_1 = __importDefault(require("../../../../components/AdditionalFieldInput"));
46
+ const utils_2 = require("../../../../utils");
46
47
  const appendLabelPublicationStatusFallback = () => '';
47
- const NavigationItemForm = ({ config, availableLocale, isLoading: isPreloading, inputsPrefix, data = {}, contentTypes = [], contentTypeEntities = [], usedContentTypeEntities = [], availableAudience = [], additionalFields = [], contentTypesNameFields = {}, onSubmit, onCancel, getContentTypeEntities, usedContentTypesData, appendLabelPublicationStatus = appendLabelPublicationStatusFallback, locale, readNavigationItemFromLocale, }) => {
48
+ const NavigationItemForm = ({ config, availableLocale, isLoading: isPreloading, inputsPrefix, data, contentTypes = [], contentTypeEntities = [], usedContentTypeEntities = [], availableAudience = [], additionalFields = [], contentTypesNameFields = {}, onSubmit, onCancel, getContentTypeEntities, usedContentTypesData, appendLabelPublicationStatus = appendLabelPublicationStatusFallback, locale, readNavigationItemFromLocale, }) => {
48
49
  const [isLoading, setIsLoading] = (0, react_1.useState)(isPreloading);
49
50
  const [hasBeenInitialized, setInitializedState] = (0, react_1.useState)(false);
50
51
  const [hasChanged, setChangedState] = (0, react_1.useState)(false);
51
52
  const [contentTypeSearchQuery, setContentTypeSearchQuery] = (0, react_1.useState)(undefined);
52
53
  const [contentTypeSearchInputValue, setContentTypeSearchInputValue] = (0, react_1.useState)(undefined);
53
- const [form, setFormState] = (0, react_1.useState)({});
54
- const [formErrors, setFormErrorsState] = (0, react_1.useState)({});
55
- const { relatedType } = form;
54
+ const formik = (0, formik_1.useFormik)({
55
+ initialValues: formDefinition.defaultValues,
56
+ onSubmit: (payload) => onSubmit(sanitizePayload(payload, data)),
57
+ validate: (values) => (0, form_1.checkFormValidity)(sanitizePayload(values, {}), formDefinition.schemaFactory(isSingleSelected, additionalFields)),
58
+ validateOnChange: false,
59
+ });
60
+ const initialRelatedTypeSelected = (0, lodash_1.get)(data, 'relatedType.value');
61
+ const relatedTypeSelectValue = formik.values.relatedType;
62
+ const relatedSelectValue = formik.values.related;
56
63
  const isI18nBootstrapAvailable = !!(config.i18nEnabled && availableLocale && availableLocale.length);
57
64
  const availableLocaleOptions = (0, react_1.useMemo)(() => availableLocale.map((locale) => ({
58
65
  value: locale,
@@ -67,22 +74,30 @@ const NavigationItemForm = ({ config, availableLocale, isLoading: isPreloading,
67
74
  const relatedFieldName = `${inputsPrefix}related`;
68
75
  if (!hasBeenInitialized && !(0, lodash_1.isEmpty)(data)) {
69
76
  setInitializedState(true);
70
- setFormState({
71
- ...data,
72
- type: data.type || enums_1.navigationItemType.INTERNAL,
73
- related: data.related?.value,
74
- relatedType: data.relatedType?.value,
75
- audience: data.audience?.map(item => item.id),
77
+ formik.setValues({
78
+ type: (0, lodash_1.get)(data, "type", formDefinition.defaultValues.type),
79
+ related: (0, lodash_1.get)(data, "related.value", formDefinition.defaultValues.related),
80
+ relatedType: (0, lodash_1.get)(data, "relatedType.value", formDefinition.defaultValues.relatedType),
81
+ audience: (0, lodash_1.get)(data, "audience", formDefinition.defaultValues.audience).map((item) => (0, lodash_1.isObject)(item) ? item.id : item),
82
+ additionalFields: (0, utils_1.getDefaultCustomFields)({
83
+ additionalFields,
84
+ customFieldsValues: (0, lodash_1.get)(data, "additionalFields", []),
85
+ defaultCustomFieldsValues: formDefinition.defaultValues.additionalFields
86
+ }),
87
+ menuAttached: (0, lodash_1.get)(data, "menuAttached", formDefinition.defaultValues.menuAttached),
88
+ path: (0, lodash_1.get)(data, "path", formDefinition.defaultValues.path),
89
+ externalPath: (0, lodash_1.get)(data, "externalPath", formDefinition.defaultValues.externalPath),
90
+ title: (0, lodash_1.get)(data, "title", formDefinition.defaultValues.title),
91
+ updated: formDefinition.defaultValues.updated,
76
92
  });
77
93
  }
78
- const audience = (0, lodash_1.get)(form, `${inputsPrefix}audience`, []);
79
- const audienceOptions = availableAudience.map((item) => ({
94
+ const audienceOptions = (0, react_1.useMemo)(() => availableAudience.map((item) => ({
80
95
  value: (0, lodash_1.get)(item, 'id', " "),
81
96
  label: (0, lodash_1.get)(item, 'name', " "),
82
- }));
97
+ })), [availableAudience]);
83
98
  const generatePreviewPath = () => {
84
99
  if (!isExternal) {
85
- const value = `${data.levelPath !== '/' ? `${data.levelPath}` : ''}/${form.path !== '/' ? form.path || '' : ''}`;
100
+ const value = `${data.levelPath !== '/' ? `${data.levelPath}` : ''}/${formik.values.path !== '/' ? formik.values.path || '' : ''}`;
86
101
  return {
87
102
  id: (0, translations_1.getTradId)('popup.item.form.type.external.description'),
88
103
  defaultMessage: '',
@@ -102,8 +117,8 @@ const NavigationItemForm = ({ config, availableLocale, isLoading: isPreloading,
102
117
  }, contentTypesNameFields, { contentTypes });
103
118
  }
104
119
  }, [contentTypeEntities, contentTypesNameFields, contentTypes]);
105
- const sanitizePayload = (payload = {}) => {
106
- const { onItemClick, onItemLevelAddClick, related, relatedType, menuAttached, type, ...purePayload } = payload;
120
+ const sanitizePayload = (payload, data) => {
121
+ const { related, relatedType, menuAttached, type, ...purePayload } = payload;
107
122
  const relatedId = related;
108
123
  const singleRelatedItem = isSingleSelected ? (0, lodash_1.first)(contentTypeEntities) : undefined;
109
124
  const relatedCollectionType = relatedType;
@@ -111,67 +126,78 @@ const NavigationItemForm = ({ config, availableLocale, isLoading: isPreloading,
111
126
  ? payload.title
112
127
  : getDefaultTitle(related, relatedType, isSingleSelected);
113
128
  return {
129
+ ...data,
114
130
  ...purePayload,
115
131
  title,
116
132
  type,
117
133
  menuAttached: (0, lodash_1.isNil)(menuAttached) ? false : menuAttached,
118
- path: type !== enums_1.navigationItemType.EXTERNAL ? purePayload.path : undefined,
119
- externalPath: type === enums_1.navigationItemType.EXTERNAL ? purePayload.externalPath : undefined,
120
- related: type === enums_1.navigationItemType.INTERNAL ? relatedId : undefined,
121
- relatedType: type === enums_1.navigationItemType.INTERNAL ? relatedCollectionType : undefined,
134
+ path: type !== utils_1.navigationItemType.EXTERNAL ? purePayload.path || getDefaultPath() : undefined,
135
+ externalPath: type === utils_1.navigationItemType.EXTERNAL ? purePayload.externalPath : undefined,
136
+ related: type === utils_1.navigationItemType.INTERNAL ? relatedId : undefined,
137
+ relatedType: type === utils_1.navigationItemType.INTERNAL ? relatedCollectionType : undefined,
122
138
  isSingle: isSingleSelected,
123
139
  singleRelatedItem,
124
140
  uiRouterKey: generateUiRouterKey(title, relatedId, relatedCollectionType),
125
141
  };
126
142
  };
127
- const handleSubmit = async (e) => {
128
- if (e) {
129
- e.preventDefault();
130
- }
131
- const payload = sanitizePayload(form);
132
- const errors = await (0, form_2.checkFormValidity)(payload, form_1.form.schema(isSingleSelected));
133
- if (!errors || (0, lodash_1.isEmpty)(errors)) {
134
- return onSubmit(payload);
135
- }
136
- else {
137
- setFormErrorsState(errors);
138
- }
139
- };
140
- const onAudienceChange = (value) => {
141
- onChange({ target: { name: `${inputsPrefix}audience`, value } });
142
- };
143
- const onChange = ({ target: { name, value } }) => {
144
- setFormState(prevState => ({
143
+ const onChange = ({ name, value }) => {
144
+ formik.setValues(prevState => ({
145
145
  ...prevState,
146
146
  updated: true,
147
147
  [name]: value,
148
148
  }));
149
+ if (name === "type") {
150
+ formik.setErrors({});
151
+ }
149
152
  if (!hasChanged) {
150
153
  setChangedState(true);
151
154
  }
152
155
  };
156
+ const getDefaultPath = (0, react_1.useCallback)(() => {
157
+ if (formik.values.type !== "INTERNAL")
158
+ return "";
159
+ (0, types_1.assertString)(relatedTypeSelectValue);
160
+ const pathDefaultFields = (0, lodash_1.get)(config, ["pathDefaultFields", relatedTypeSelectValue], []);
161
+ if ((0, lodash_1.isEmpty)(formik.values.path) && !(0, lodash_1.isEmpty)(pathDefaultFields)) {
162
+ const selectedEntity = contentTypeEntities.find(i => i.id === relatedSelectValue);
163
+ const pathDefaultValues = pathDefaultFields
164
+ .map((field) => (0, lodash_1.get)(selectedEntity, field, ""))
165
+ .filter(value => !(0, lodash_1.isNil)(value) && String(value).match(/^\S+$/));
166
+ return String((0, lodash_1.first)(pathDefaultValues));
167
+ }
168
+ return "";
169
+ }, [relatedTypeSelectValue, formik, config]);
170
+ const onAudienceChange = (0, react_1.useCallback)((value) => {
171
+ onChange({ name: "audience", value });
172
+ }, [onChange]);
173
+ const onAdditionalFieldChange = (name, newValue) => {
174
+ const fieldsValue = formik.values.additionalFields;
175
+ const value = { ...fieldsValue, [name]: newValue };
176
+ onChange({
177
+ name: "additionalFields",
178
+ value,
179
+ });
180
+ };
153
181
  const generateUiRouterKey = (title, related, relatedType) => {
182
+ const { slugify: customSlugifyConfig } = config;
154
183
  if (title) {
155
- return (0, lodash_1.isString)(title) && !(0, lodash_1.isEmpty)(title) ? (0, slugify_1.default)(title).toLowerCase() : undefined;
184
+ return (0, lodash_1.isString)(title) && !(0, lodash_1.isEmpty)(title) ? (0, slugify_1.default)(title, customSlugifyConfig).toLowerCase() : undefined;
156
185
  }
157
186
  else if (related) {
158
187
  const relationTitle = (0, parsers_1.extractRelatedItemLabel)({
159
188
  ...contentTypeEntities.find(_ => _.id === related),
160
189
  __collectionUid: relatedType
161
190
  }, contentTypesNameFields, { contentTypes });
162
- return (0, lodash_1.isString)(relationTitle) && !(0, lodash_1.isEmpty)(relationTitle) ? (0, slugify_1.default)(relationTitle).toLowerCase() : undefined;
191
+ return (0, lodash_1.isString)(relationTitle) && !(0, lodash_1.isEmpty)(relationTitle) ? (0, slugify_1.default)(relationTitle, customSlugifyConfig).toLowerCase() : undefined;
163
192
  }
164
193
  return undefined;
165
194
  };
166
- const initialRelatedTypeSelected = data?.relatedType?.value;
167
- const relatedTypeSelectValue = form.relatedType;
168
- const relatedSelectValue = form.related;
169
195
  const isSingleSelected = (0, react_1.useMemo)(() => relatedTypeSelectValue ? contentTypes.find(_ => _.uid === relatedTypeSelectValue)?.isSingle || false : false, [relatedTypeSelectValue, contentTypes]);
170
- const navigationItemTypeOptions = Object.keys(enums_1.navigationItemType).map(key => {
171
- const value = enums_1.navigationItemType[key].toLowerCase();
196
+ const navigationItemTypeOptions = Object.keys(utils_1.navigationItemType).map((key) => {
197
+ const value = utils_1.navigationItemType[key].toLowerCase();
172
198
  return {
173
199
  key,
174
- value: enums_1.navigationItemType[key],
200
+ value: utils_1.navigationItemType[key],
175
201
  metadatas: {
176
202
  intlLabel: {
177
203
  id: (0, translations_1.getTradId)(`popup.item.form.type.${value}.label`),
@@ -184,7 +210,7 @@ const NavigationItemForm = ({ config, availableLocale, isLoading: isPreloading,
184
210
  .filter((item) => {
185
211
  const usedContentTypeEntitiesOfSameType = usedContentTypeEntities
186
212
  .filter(uctItem => relatedTypeSelectValue === uctItem.__collectionUid);
187
- return !(0, lodash_1.find)(usedContentTypeEntitiesOfSameType, uctItem => (item.id === uctItem.id && uctItem.id !== form.related));
213
+ return !(0, lodash_1.find)(usedContentTypeEntitiesOfSameType, uctItem => (item.id === uctItem.id && uctItem.id !== formik.values.related));
188
214
  })
189
215
  .map((item) => {
190
216
  const label = appendLabelPublicationStatus((0, parsers_1.extractRelatedItemLabel)({
@@ -203,12 +229,11 @@ const NavigationItemForm = ({ config, availableLocale, isLoading: isPreloading,
203
229
  label: label,
204
230
  });
205
231
  });
206
- const isExternal = form.type === enums_1.navigationItemType.EXTERNAL;
232
+ const isExternal = formik.values.type === utils_1.navigationItemType.EXTERNAL;
207
233
  const pathSourceName = isExternal ? 'externalPath' : 'path';
208
- const submitDisabled = (form.type === enums_1.navigationItemType.INTERNAL && !isSingleSelected && (0, lodash_1.isNil)((0, lodash_1.get)(form, `${inputsPrefix}related`))) ||
209
- (form.type === enums_1.navigationItemType.WRAPPER && (0, lodash_1.isNil)((0, lodash_1.get)(form, `${inputsPrefix}title`)));
234
+ const submitDisabled = (formik.values.type === utils_1.navigationItemType.INTERNAL && !isSingleSelected && (0, lodash_1.isNil)(formik.values.related));
210
235
  const debouncedSearch = (0, react_1.useCallback)((0, lodash_1.debounce)(nextValue => setContentTypeSearchQuery(nextValue), 500), []);
211
- const debounceContentTypeSearchQuery = value => {
236
+ const debounceContentTypeSearchQuery = (value) => {
212
237
  setContentTypeSearchInputValue(value);
213
238
  debouncedSearch(value);
214
239
  };
@@ -216,7 +241,7 @@ const NavigationItemForm = ({ config, availableLocale, isLoading: isPreloading,
216
241
  const relatedTypeBeingReverted = data.relatedType && (data.relatedType.value === (0, lodash_1.get)(value, 'value', value));
217
242
  setContentTypeSearchQuery(undefined);
218
243
  setContentTypeSearchInputValue(undefined);
219
- setFormState(prevState => ({
244
+ formik.setValues(prevState => ({
220
245
  ...prevState,
221
246
  updated: true,
222
247
  related: relatedTypeBeingReverted ? data.related?.value : undefined,
@@ -232,7 +257,7 @@ const NavigationItemForm = ({ config, availableLocale, isLoading: isPreloading,
232
257
  if (relatedTypeSelectValue && [relatedTypeSelectValue, initialRelatedTypeSelected].includes(contentType.uid)) {
233
258
  return true;
234
259
  }
235
- return !usedContentTypesData.some((_) => _.__collectionUid === contentType.uid && _.__collectionUid !== form.relatedType);
260
+ return !usedContentTypesData.some((_) => _.__collectionUid === contentType.uid && _.__collectionUid !== formik.values.relatedType);
236
261
  }
237
262
  return true;
238
263
  })
@@ -251,11 +276,11 @@ const NavigationItemForm = ({ config, availableLocale, isLoading: isPreloading,
251
276
  (0, react_1.useEffect)(() => {
252
277
  const value = (0, lodash_1.get)(relatedSelectOptions, '0');
253
278
  if (isSingleSelected && relatedSelectOptions.length === 1 && !(0, lodash_1.isEqual)(value, relatedSelectValue)) {
254
- onChange({ target: { name: relatedFieldName, value } });
279
+ onChange({ name: "related", value });
255
280
  }
256
281
  }, [isSingleSelected, relatedSelectOptions]);
257
282
  (0, react_1.useEffect)(() => {
258
- const value = relatedType;
283
+ const value = formik.values.relatedType;
259
284
  if (value) {
260
285
  const item = (0, lodash_1.find)(contentTypes, (_) => _.uid === value);
261
286
  if (item) {
@@ -266,15 +291,15 @@ const NavigationItemForm = ({ config, availableLocale, isLoading: isPreloading,
266
291
  }, item.plugin);
267
292
  }
268
293
  }
269
- }, [relatedType, contentTypeSearchQuery]);
294
+ }, [formik.values.relatedType, contentTypeSearchQuery]);
270
295
  const resetCopyItemFormErrors = () => {
271
- setFormErrorsState((prevState) => ({
272
- ...prevState,
296
+ formik.setErrors({
297
+ ...formik.errors,
273
298
  [itemLocaleCopyField]: null,
274
- }));
299
+ });
275
300
  };
276
301
  const itemLocaleCopyField = `${inputsPrefix}i18n.locale`;
277
- const itemLocaleCopyValue = form[itemLocaleCopyField];
302
+ const itemLocaleCopyValue = (0, lodash_1.get)(formik.values, itemLocaleCopyField);
278
303
  const onCopyFromLocale = (0, react_1.useCallback)(async (event) => {
279
304
  event.preventDefault();
280
305
  event.stopPropagation();
@@ -285,40 +310,40 @@ const NavigationItemForm = ({ config, availableLocale, isLoading: isPreloading,
285
310
  locale: itemLocaleCopyValue,
286
311
  structureId: data.structureId
287
312
  });
288
- if (result.type === utils_1.ResourceState.RESOLVED) {
313
+ if (result.type === utils_2.ResourceState.RESOLVED) {
289
314
  const { value: { related, ...rest } } = result;
290
- setFormState((prevState) => ({
315
+ formik.setValues((prevState) => ({
291
316
  ...prevState,
292
317
  ...rest,
293
318
  }));
294
319
  if (related) {
295
320
  const relatedType = relatedTypeSelectOptions
296
321
  .find(({ value }) => value === related.__contentType)?.value;
297
- setFormState((prevState) => ({
322
+ formik.setValues((prevState) => ({
298
323
  ...prevState,
299
324
  relatedType,
300
325
  [relatedFieldName]: related.id,
301
326
  }));
302
327
  }
303
328
  }
304
- if (result.type === utils_1.ResourceState.ERROR) {
305
- setFormErrorsState((prevState) => ({
306
- ...prevState,
307
- [itemLocaleCopyField]: (0, utils_1.getMessage)(result.errors[0]),
308
- }));
329
+ if (result.type === utils_2.ResourceState.ERROR) {
330
+ formik.setErrors({
331
+ ...formik.errors,
332
+ [itemLocaleCopyField]: (0, utils_2.getMessage)(result.errors[0]),
333
+ });
309
334
  }
310
335
  }
311
336
  catch (error) {
312
- setFormErrorsState((prevState) => ({
313
- ...prevState,
314
- [itemLocaleCopyField]: (0, utils_1.getMessage)('popup.item.form.i18n.locale.error.generic'),
315
- }));
337
+ formik.setErrors({
338
+ ...formik.errors,
339
+ [itemLocaleCopyField]: (0, utils_2.getMessage)('popup.item.form.i18n.locale.error.generic'),
340
+ });
316
341
  }
317
342
  setIsLoading(false);
318
- }, [setIsLoading, setFormState, setFormErrorsState]);
343
+ }, [setIsLoading, formik.setValues, formik.setErrors]);
319
344
  const onChangeLocaleCopy = (0, react_1.useCallback)(({ target: { value } }) => {
320
345
  resetCopyItemFormErrors();
321
- onChange({ target: { name: itemLocaleCopyField, value } });
346
+ onChange({ name: itemLocaleCopyField, value });
322
347
  }, [onChange, itemLocaleCopyField]);
323
348
  const itemCopyProps = (0, react_1.useMemo)(() => ({
324
349
  intlLabel: {
@@ -330,105 +355,65 @@ const NavigationItemForm = ({ config, availableLocale, isLoading: isPreloading,
330
355
  defaultMessage: 'locale'
331
356
  },
332
357
  }), [translations_1.getTradId]);
358
+ (0, react_1.useEffect)(() => {
359
+ const value = formik.values.relatedType;
360
+ const fetchContentTypeEntities = async () => {
361
+ if (value) {
362
+ const item = (0, lodash_1.find)(contentTypes, (_) => _.uid === value);
363
+ if (item) {
364
+ await getContentTypeEntities({
365
+ modelUID: item.uid,
366
+ query: contentTypeSearchQuery,
367
+ locale,
368
+ }, item.plugin);
369
+ }
370
+ }
371
+ };
372
+ fetchContentTypeEntities();
373
+ }, [formik.values.relatedType, contentTypeSearchQuery]);
333
374
  return (react_1.default.createElement(react_1.default.Fragment, null,
334
- react_1.default.createElement(formik_1.Formik, null,
335
- react_1.default.createElement(helper_plugin_1.Form, null,
336
- react_1.default.createElement(ModalLayout_1.ModalBody, null,
337
- react_1.default.createElement(Grid_1.Grid, { gap: 5 },
338
- react_1.default.createElement(Grid_1.GridItem, { key: `${inputsPrefix}title`, col: 12 },
339
- react_1.default.createElement(helper_plugin_1.GenericInput, { autoFocused: true, intlLabel: {
340
- id: (0, translations_1.getTradId)('popup.item.form.title.label'),
341
- defaultMessage: 'Title',
342
- }, name: `${inputsPrefix}title`, placeholder: {
343
- id: "e.g. Blog",
344
- defaultMessage: 'e.g. Blog',
345
- }, description: {
346
- id: (0, translations_1.getTradId)('popup.item.form.title.placeholder'),
347
- defaultMessage: 'e.g. Blog',
348
- }, type: 'text', error: (0, lodash_1.get)(formErrors, `${inputsPrefix}title.id`), onChange: onChange, value: (0, lodash_1.get)(form, `${inputsPrefix}title`, '') })),
349
- react_1.default.createElement(Grid_1.GridItem, { key: `${inputsPrefix}type`, col: 4, lg: 12 },
350
- react_1.default.createElement(helper_plugin_1.GenericInput, { intlLabel: {
351
- id: (0, translations_1.getTradId)('popup.item.form.type.label'),
352
- defaultMessage: 'Internal link',
353
- }, name: `${inputsPrefix}type`, options: navigationItemTypeOptions, type: 'select', error: (0, lodash_1.get)(formErrors, `${inputsPrefix}type.id`), onChange: onChange, value: (0, lodash_1.get)(form, `${inputsPrefix}type`, '') })),
354
- react_1.default.createElement(Grid_1.GridItem, { key: `${inputsPrefix}menuAttached`, col: 4, lg: 12 },
355
- react_1.default.createElement(helper_plugin_1.GenericInput, { intlLabel: {
356
- id: (0, translations_1.getTradId)('popup.item.form.menuAttached.label'),
357
- defaultMessage: 'MenuAttached',
358
- }, name: `${inputsPrefix}menuAttached`, type: 'bool', error: (0, lodash_1.get)(formErrors, `${inputsPrefix}menuAttached.id`), onChange: onChange, value: (0, lodash_1.get)(form, `${inputsPrefix}menuAttached`, ''), disabled: !(data.isMenuAllowedLevel && data.parentAttachedToMenu) })),
359
- react_1.default.createElement(Grid_1.GridItem, { key: `${inputsPrefix}path`, col: 12 },
360
- react_1.default.createElement(helper_plugin_1.GenericInput, { intlLabel: {
361
- id: (0, translations_1.getTradId)(`popup.item.form.${pathSourceName}.label`),
362
- defaultMessage: 'Path',
363
- }, name: `${inputsPrefix}${pathSourceName}`, placeholder: {
364
- id: (0, translations_1.getTradId)(`popup.item.form.${pathSourceName}.placeholder`),
365
- defaultMessage: 'e.g. Blog',
366
- }, type: 'text', error: (0, lodash_1.get)(formErrors, `${inputsPrefix}${pathSourceName}.id`), onChange: onChange, value: (0, lodash_1.get)(form, `${inputsPrefix}${pathSourceName}`, ''), description: generatePreviewPath() })),
367
- (0, lodash_1.get)(form, `${inputsPrefix}type`) === enums_1.navigationItemType.INTERNAL && (react_1.default.createElement(react_1.default.Fragment, null,
368
- react_1.default.createElement(Grid_1.GridItem, { col: 6, lg: 12 },
369
- react_1.default.createElement(helper_plugin_1.GenericInput, { type: "select", intlLabel: {
370
- id: (0, translations_1.getTradId)('popup.item.form.relatedType.label'),
371
- defaultMessage: 'Related Type'
372
- }, placeholder: {
373
- id: (0, translations_1.getTradId)('popup.item.form.relatedType.placeholder'),
374
- defaultMessage: 'Related Type'
375
- }, name: `${inputsPrefix}relatedType`, error: (0, lodash_1.get)(formErrors, `${inputsPrefix}relatedType.id`), onChange: onChangeRelatedType, options: relatedTypeSelectOptions, value: relatedTypeSelectValue, disabled: isLoading || (0, lodash_1.isEmpty)(relatedTypeSelectOptions), description: !isLoading && (0, lodash_1.isEmpty)(relatedTypeSelectOptions)
376
- ? {
377
- id: (0, translations_1.getTradId)('popup.item.form.relatedType.empty'),
378
- defaultMessage: 'There are no more content types',
379
- }
380
- : undefined })),
381
- relatedTypeSelectValue && !isSingleSelected && (react_1.default.createElement(Grid_1.GridItem, { col: 6, lg: 12 },
382
- react_1.default.createElement(helper_plugin_1.GenericInput, { type: "select", intlLabel: {
383
- id: (0, translations_1.getTradId)('popup.item.form.related.label'),
384
- defaultMessage: 'Related'
385
- }, placeholder: {
386
- id: (0, translations_1.getTradId)('popup.item.form.related.label'),
387
- defaultMessage: 'Related'
388
- }, name: relatedFieldName, error: (0, lodash_1.get)(formErrors, `${relatedFieldName}.id`), onChange: onChange, onInputChange: debounceContentTypeSearchQuery, inputValue: contentTypeSearchInputValue, options: relatedSelectOptions, value: relatedSelectValue, disabled: isLoading || thereAreNoMoreContentTypes, description: !isLoading && thereAreNoMoreContentTypes
389
- ? {
390
- id: (0, translations_1.getTradId)('popup.item.form.related.empty'),
391
- defaultMessage: 'There are no more entities',
392
- values: { contentTypeName: relatedTypeSelectValue },
393
- }
394
- : undefined }))))),
395
- additionalFields.includes(enums_1.navigationItemAdditionalFields.AUDIENCE) && (react_1.default.createElement(Grid_1.GridItem, { key: `${inputsPrefix}audience`, col: 6, lg: 12 },
396
- react_1.default.createElement(Select_1.Select, { id: `${inputsPrefix}audience`, placeholder: (0, utils_1.getMessage)('popup.item.form.audience.placeholder'), label: (0, utils_1.getMessage)('popup.item.form.audience.label'), onChange: onAudienceChange, value: audience, hint: !isLoading && (0, lodash_1.isEmpty)(audienceOptions)
397
- ? (0, utils_1.getMessage)('popup.item.form.audience.empty', 'There are no more audiences')
398
- : undefined, multi: true, withTags: true, disabled: (0, lodash_1.isEmpty)(audienceOptions) }, audienceOptions.map(({ value, label }) => react_1.default.createElement(Select_1.Option, { key: value, value: value }, label)))))),
399
- isI18nBootstrapAvailable ? (react_1.default.createElement(Grid_1.Grid, { gap: 5, paddingTop: 5 },
375
+ react_1.default.createElement("form", null,
376
+ react_1.default.createElement(ModalLayout_1.ModalBody, null,
377
+ react_1.default.createElement(Grid_1.Grid, { gap: 5 },
378
+ react_1.default.createElement(Grid_1.GridItem, { key: "title", col: 12 },
379
+ react_1.default.createElement(helper_plugin_1.GenericInput, { autoFocused: true, intlLabel: (0, translations_1.getTrad)('popup.item.form.title.label', 'Title'), name: "title", placeholder: (0, translations_1.getTrad)("e.g. Blog", 'e.g. Blog'), description: (0, translations_1.getTrad)('popup.item.form.title.placeholder', 'e.g. Blog'), type: "text", error: formik.errors.title, onChange: ({ target: { name, value } }) => onChange({ name, value }), value: formik.values.title })),
380
+ react_1.default.createElement(Grid_1.GridItem, { key: "type", col: 4, lg: 12 },
381
+ react_1.default.createElement(helper_plugin_1.GenericInput, { intlLabel: (0, translations_1.getTrad)('popup.item.form.type.label', 'Internal link'), name: "type", options: navigationItemTypeOptions, type: "select", error: formik.errors.type, onChange: ({ target: { name, value } }) => onChange({ name, value }), value: formik.values.type })),
382
+ react_1.default.createElement(Grid_1.GridItem, { key: "menuAttached", col: 4, lg: 12 },
383
+ react_1.default.createElement(helper_plugin_1.GenericInput, { intlLabel: (0, translations_1.getTrad)('popup.item.form.menuAttached.label', 'MenuAttached'), name: "menuAttached", type: "bool", error: formik.errors.menuAttached, onChange: ({ target: { name, value } }) => onChange({ name, value }), value: formik.values.menuAttached, disabled: !(data.isMenuAllowedLevel && data.parentAttachedToMenu) })),
384
+ react_1.default.createElement(Grid_1.GridItem, { key: "path", col: 12 },
385
+ react_1.default.createElement(helper_plugin_1.GenericInput, { intlLabel: (0, translations_1.getTrad)(`popup.item.form.${pathSourceName}.label`, 'Path'), name: pathSourceName, placeholder: (0, translations_1.getTrad)(`popup.item.form.${pathSourceName}.placeholder`, 'e.g. Blog'), type: "text", error: formik.errors[pathSourceName], onChange: ({ target: { name, value } }) => onChange({ name, value }), value: formik.values[pathSourceName], description: generatePreviewPath() })),
386
+ formik.values.type === utils_1.navigationItemType.INTERNAL && (react_1.default.createElement(react_1.default.Fragment, null,
400
387
  react_1.default.createElement(Grid_1.GridItem, { col: 6, lg: 12 },
401
- react_1.default.createElement(helper_plugin_1.GenericInput, { ...itemCopyProps, type: "select", name: itemLocaleCopyField, error: (0, lodash_1.get)(formErrors, itemLocaleCopyField), onChange: onChangeLocaleCopy, options: availableLocaleOptions, value: itemLocaleCopyValue, disabled: isLoading })),
402
- react_1.default.createElement(Grid_1.GridItem, { col: 6, lg: 12, paddingTop: 6 },
403
- react_1.default.createElement(Button_1.Button, { variant: "tertiary", onClick: onCopyFromLocale, disabled: isLoading || !itemLocaleCopyValue }, (0, utils_1.getMessage)('popup.item.form.i18n.locale.button'))))) : null))),
404
- react_1.default.createElement(NavigationItemPopupFooter_1.NavigationItemPopupFooter, { handleSubmit: handleSubmit, handleCancel: onCancel, submitDisabled: submitDisabled })));
405
- };
406
- NavigationItemForm.defaultProps = {
407
- fieldsToDisable: [],
408
- formErrors: {},
409
- inputsPrefix: '',
410
- onSubmit: (e) => e.preventDefault(),
411
- requestError: null,
412
- };
413
- NavigationItemForm.propTypes = {
414
- config: prop_types_1.default.object.isRequired,
415
- availableLocale: prop_types_1.default.arrayOf(prop_types_1.default.string),
416
- isLoading: prop_types_1.default.bool,
417
- fieldsToDisable: prop_types_1.default.array,
418
- formErrors: prop_types_1.default.object.isRequired,
419
- inputsPrefix: prop_types_1.default.string,
420
- data: prop_types_1.default.object.isRequired,
421
- onSubmit: prop_types_1.default.func,
422
- requestError: prop_types_1.default.object,
423
- contentTypes: prop_types_1.default.array,
424
- contentTypeEntities: prop_types_1.default.array,
425
- usedContentTypeEntities: prop_types_1.default.array,
426
- availableAudience: prop_types_1.default.array,
427
- additionalFields: prop_types_1.default.array,
428
- getContentTypeEntities: prop_types_1.default.func.isRequired,
429
- appendLabelPublicationStatus: prop_types_1.default.func,
430
- onCancel: prop_types_1.default.func,
431
- readNavigationItemFromLocale: prop_types_1.default.func.isRequired,
388
+ react_1.default.createElement(helper_plugin_1.GenericInput, { type: "select", intlLabel: (0, translations_1.getTrad)('popup.item.form.relatedType.label', 'Related Type'), placeholder: (0, translations_1.getTrad)('popup.item.form.relatedType.placeholder', 'Related Type'), name: "relatedType", error: formik.errors.relatedType, onChange: onChangeRelatedType, options: relatedTypeSelectOptions, value: formik.values.relatedType, disabled: isLoading || (0, lodash_1.isEmpty)(relatedTypeSelectOptions), description: !isLoading && (0, lodash_1.isEmpty)(relatedTypeSelectOptions)
389
+ ? (0, translations_1.getTrad)('popup.item.form.relatedType.empty', 'There are no more content types')
390
+ : undefined })),
391
+ formik.values.relatedType && !isSingleSelected && (react_1.default.createElement(Grid_1.GridItem, { col: 6, lg: 12 },
392
+ react_1.default.createElement(helper_plugin_1.GenericInput, { type: "select", intlLabel: (0, translations_1.getTrad)('popup.item.form.related.label', 'Related'), placeholder: (0, translations_1.getTrad)('popup.item.form.related.label', 'Related'), name: "related", error: formik.errors.related, onChange: ({ target: { name, value } }) => onChange({ name, value }), onInputChange: debounceContentTypeSearchQuery, inputValue: contentTypeSearchInputValue, options: relatedSelectOptions, value: formik.values.related, disabled: isLoading || thereAreNoMoreContentTypes, description: !isLoading && thereAreNoMoreContentTypes
393
+ ? {
394
+ id: (0, translations_1.getTradId)('popup.item.form.related.empty'),
395
+ defaultMessage: 'There are no more entities',
396
+ values: { contentTypeName: relatedTypeSelectValue },
397
+ }
398
+ : undefined }))))),
399
+ additionalFields.map((additionalField) => {
400
+ if (additionalField === 'audience') {
401
+ return (react_1.default.createElement(Grid_1.GridItem, { key: "audience", col: 6, lg: 12 },
402
+ react_1.default.createElement(Select_1.Select, { id: "audience", placeholder: (0, utils_2.getMessage)('popup.item.form.audience.placeholder'), label: (0, utils_2.getMessage)('popup.item.form.audience.label'), onChange: onAudienceChange, value: formik.values.audience, hint: !isLoading && (0, lodash_1.isEmpty)(audienceOptions)
403
+ ? (0, utils_2.getMessage)('popup.item.form.audience.empty', 'There are no more audiences')
404
+ : undefined, multi: true, withTags: true, disabled: (0, lodash_1.isEmpty)(audienceOptions) }, audienceOptions.map(({ value, label }) => react_1.default.createElement(Select_1.Option, { key: value, value: value }, label)))));
405
+ }
406
+ else {
407
+ return (react_1.default.createElement(Grid_1.GridItem, { key: additionalField.name, col: 6, lg: 12 },
408
+ react_1.default.createElement(AdditionalFieldInput_1.default, { field: additionalField, isLoading: isLoading, onChange: onAdditionalFieldChange, value: (0, lodash_1.get)(formik.values, `additionalFields.${additionalField.name}`, null), error: (0, lodash_1.get)(formik.errors, `additionalFields.${additionalField.name}`, null) })));
409
+ }
410
+ })),
411
+ isI18nBootstrapAvailable ? (react_1.default.createElement(Grid_1.Grid, { gap: 5, paddingTop: 5 },
412
+ react_1.default.createElement(Grid_1.GridItem, { col: 6, lg: 12 },
413
+ react_1.default.createElement(helper_plugin_1.GenericInput, { ...itemCopyProps, type: "select", name: itemLocaleCopyField, error: (0, lodash_1.get)(formik.errors, itemLocaleCopyField), onChange: onChangeLocaleCopy, options: availableLocaleOptions, value: itemLocaleCopyValue, disabled: isLoading })),
414
+ react_1.default.createElement(Grid_1.GridItem, { col: 6, lg: 12, paddingTop: 6 },
415
+ react_1.default.createElement(Button_1.Button, { variant: "tertiary", onClick: onCopyFromLocale, disabled: isLoading || !itemLocaleCopyValue }, (0, utils_2.getMessage)('popup.item.form.i18n.locale.button'))))) : null)),
416
+ react_1.default.createElement(NavigationItemPopupFooter_1.NavigationItemPopupFooter, { handleSubmit: formik.handleSubmit, handleCancel: onCancel, submitDisabled: submitDisabled })));
432
417
  };
433
418
  exports.default = NavigationItemForm;
434
419
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,90 @@
1
+ import { Audience, Effect, ContentTypeEntity, NavigationItemAdditionalField, NavigationItemAdditionalFieldValues, NavigationItemType, NavigationPluginConfig, PluginConfigNameFields, ToBeFixed, VoidEffect } from '../../../../../../types';
2
+ import { Id } from 'strapi-typed';
3
+ import { StrapiContentTypeSchema } from '../../../SettingsPage/types';
4
+ export declare type FormEventTarget<TValue = unknown> = {
5
+ name: string;
6
+ value: TValue;
7
+ };
8
+ declare type GetContentTypeEntitiesPayload = {
9
+ modelUID: string;
10
+ query: ContentTypeSearchQuery;
11
+ locale: ToBeFixed;
12
+ };
13
+ export declare type NavigationItemFormData = {
14
+ isMenuAllowedLevel: boolean;
15
+ levelPath: string;
16
+ parentAttachedToMenu: boolean;
17
+ audience?: Audience[];
18
+ collapsed?: boolean;
19
+ externalPath?: string | null;
20
+ id?: Id;
21
+ isParentAttachedToMenu?: boolean;
22
+ items?: ToBeFixed[];
23
+ menuAttached?: boolean;
24
+ order?: number;
25
+ parent?: ToBeFixed;
26
+ path?: string | null;
27
+ title?: string;
28
+ type?: NavigationItemType;
29
+ uiRouterKey?: string;
30
+ updated?: boolean;
31
+ viewId?: string;
32
+ viewParentId: string | null;
33
+ related?: {
34
+ value: string;
35
+ label: string;
36
+ };
37
+ relatedType?: {
38
+ value: string;
39
+ label: string;
40
+ };
41
+ relatedRef?: ToBeFixed;
42
+ structureId: ToBeFixed;
43
+ };
44
+ export declare type NavigationItemFormProps = {
45
+ additionalFields: NavigationItemAdditionalField[];
46
+ appendLabelPublicationStatus: (label: string, entity: ContentTypeEntity) => string;
47
+ availableAudience: string[];
48
+ contentTypeEntities: ContentTypeEntity[];
49
+ contentTypes: StrapiContentTypeSchema[];
50
+ contentTypesNameFields: PluginConfigNameFields;
51
+ data: NavigationItemFormData;
52
+ getContentTypeEntities: (value: GetContentTypeEntitiesPayload, plugin: string) => ContentTypeEntity;
53
+ isLoading: boolean;
54
+ locale: string;
55
+ onCancel: VoidEffect;
56
+ onSubmit: Effect<SanitizedFormPayload>;
57
+ usedContentTypeEntities: ToBeFixed[];
58
+ usedContentTypesData: ToBeFixed;
59
+ config: NavigationPluginConfig;
60
+ availableLocale: string[];
61
+ readNavigationItemFromLocale: ToBeFixed;
62
+ inputsPrefix: string;
63
+ };
64
+ export declare type ContentTypeSearchQuery = ToBeFixed;
65
+ export declare type RawFormPayload = {
66
+ type: NavigationItemType;
67
+ related?: string;
68
+ relatedType?: string;
69
+ audience: Id[];
70
+ menuAttached: boolean;
71
+ title: string;
72
+ externalPath: string | null;
73
+ path: string | null;
74
+ additionalFields: NavigationItemAdditionalFieldValues;
75
+ updated: boolean;
76
+ };
77
+ export declare type SanitizedFormPayload = {
78
+ title: string;
79
+ type: NavigationItemType;
80
+ menuAttached: boolean;
81
+ path?: string | null;
82
+ externalPath?: string | null;
83
+ related: Id | undefined;
84
+ relatedType: string | undefined;
85
+ isSingle: boolean;
86
+ singleRelatedItem: ContentTypeEntity | undefined;
87
+ uiRouterKey: string | undefined;
88
+ };
89
+ export {};
90
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map