@strapi/content-type-builder 5.54.0 → 5.55.1
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/admin/components/AIChat/hooks/useAIFetch.js +6 -2
- package/dist/admin/components/AIChat/hooks/useAIFetch.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useAIFetch.mjs +7 -3
- package/dist/admin/components/AIChat/hooks/useAIFetch.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/usePrefetchAIToken.js +20 -0
- package/dist/admin/components/AIChat/hooks/usePrefetchAIToken.js.map +1 -0
- package/dist/admin/components/AIChat/hooks/usePrefetchAIToken.mjs +18 -0
- package/dist/admin/components/AIChat/hooks/usePrefetchAIToken.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +83 -59
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +86 -62
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.js +112 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.mjs +110 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.js +159 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.mjs +157 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.js +311 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.mjs +309 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.js +379 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.mjs +376 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useContentTypeBuilderMenu.js +172 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useContentTypeBuilderMenu.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useContentTypeBuilderMenu.mjs +166 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useContentTypeBuilderMenu.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useFolderActions.js +62 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useFolderActions.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useFolderActions.mjs +60 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useFolderActions.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useSortableTree.js +145 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useSortableTree.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useSortableTree.mjs +143 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useSortableTree.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.js +176 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.mjs +169 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.js +277 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.mjs +273 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/flatModel.js +62 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/flatModel.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/flatModel.mjs +58 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/flatModel.mjs.map +1 -0
- package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.js +70 -8
- package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.mjs +70 -8
- package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
- package/dist/admin/components/DataManager/reducer.js +411 -33
- package/dist/admin/components/DataManager/reducer.js.map +1 -1
- package/dist/admin/components/DataManager/reducer.mjs +411 -33
- package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/cleanData.js +11 -2
- package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -1
- package/dist/admin/components/DataManager/utils/cleanData.mjs +11 -2
- package/dist/admin/components/DataManager/utils/cleanData.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/contentStructure.js +150 -0
- package/dist/admin/components/DataManager/utils/contentStructure.js.map +1 -0
- package/dist/admin/components/DataManager/utils/contentStructure.mjs +133 -0
- package/dist/admin/components/DataManager/utils/contentStructure.mjs.map +1 -0
- package/dist/admin/components/FolderSelect.js +200 -0
- package/dist/admin/components/FolderSelect.js.map +1 -0
- package/dist/admin/components/FolderSelect.mjs +198 -0
- package/dist/admin/components/FolderSelect.mjs.map +1 -0
- package/dist/admin/components/FormModal/FormModal.js +23 -2
- package/dist/admin/components/FormModal/FormModal.js.map +1 -1
- package/dist/admin/components/FormModal/FormModal.mjs +23 -2
- package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
- package/dist/admin/components/FormModal/contentType/contentTypeForm.js +15 -18
- package/dist/admin/components/FormModal/contentType/contentTypeForm.js.map +1 -1
- package/dist/admin/components/FormModal/contentType/contentTypeForm.mjs +15 -18
- package/dist/admin/components/FormModal/contentType/contentTypeForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/reducer.js +6 -0
- package/dist/admin/components/FormModal/reducer.js.map +1 -1
- package/dist/admin/components/FormModal/reducer.mjs +6 -0
- package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
- package/dist/admin/pages/App/index.js +2 -5
- package/dist/admin/pages/App/index.js.map +1 -1
- package/dist/admin/pages/App/index.mjs +2 -5
- package/dist/admin/pages/App/index.mjs.map +1 -1
- package/dist/admin/src/components/AIChat/hooks/usePrefetchAIToken.d.ts +1 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.d.ts +16 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.d.ts +12 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.d.ts +14 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.d.ts +38 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/{useContentTypeBuilderMenu.d.ts → hooks/useContentTypeBuilderMenu.d.ts} +17 -7
- package/dist/admin/src/components/ContentTypeBuilderNav/hooks/useFolderActions.d.ts +42 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/hooks/useSortableTree.d.ts +53 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/lib/buildFolderTree.d.ts +42 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/lib/dropProjection.d.ts +58 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/lib/flatModel.d.ts +18 -0
- package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +41 -0
- package/dist/admin/src/components/DataManager/reducer.d.ts +105 -1
- package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +5 -1
- package/dist/admin/src/components/DataManager/utils/contentStructure.d.ts +68 -0
- package/dist/admin/src/components/FolderSelect.d.ts +18 -0
- package/dist/admin/src/components/FormModal/contentType/contentTypeForm.d.ts +0 -21
- package/dist/admin/src/components/FormModal/forms/forms.d.ts +0 -10
- package/dist/admin/src/components/FormModal/reducer.d.ts +7 -0
- package/dist/admin/src/utils/folderTelemetry.d.ts +5 -0
- package/dist/admin/translations/en.json.js +23 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +23 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/folderTelemetry.js +19 -0
- package/dist/admin/utils/folderTelemetry.js.map +1 -0
- package/dist/admin/utils/folderTelemetry.mjs +16 -0
- package/dist/admin/utils/folderTelemetry.mjs.map +1 -0
- package/dist/server/controllers/schema.js +1 -1
- package/dist/server/controllers/schema.js.map +1 -1
- package/dist/server/controllers/schema.mjs +1 -1
- package/dist/server/controllers/schema.mjs.map +1 -1
- package/dist/server/controllers/validation/common.js +3 -0
- package/dist/server/controllers/validation/common.js.map +1 -1
- package/dist/server/controllers/validation/common.mjs +3 -1
- package/dist/server/controllers/validation/common.mjs.map +1 -1
- package/dist/server/controllers/validation/content-structure.js +177 -0
- package/dist/server/controllers/validation/content-structure.js.map +1 -0
- package/dist/server/controllers/validation/content-structure.mjs +173 -0
- package/dist/server/controllers/validation/content-structure.mjs.map +1 -0
- package/dist/server/controllers/validation/schema.js +3 -1
- package/dist/server/controllers/validation/schema.js.map +1 -1
- package/dist/server/controllers/validation/schema.mjs +3 -1
- package/dist/server/controllers/validation/schema.mjs.map +1 -1
- package/dist/server/register.js +1 -1
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs +1 -1
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/routes/content-api.js +4 -4
- package/dist/server/routes/content-api.js.map +1 -1
- package/dist/server/routes/content-api.mjs +4 -4
- package/dist/server/routes/content-api.mjs.map +1 -1
- package/dist/server/services/api-handler.js +37 -4
- package/dist/server/services/api-handler.js.map +1 -1
- package/dist/server/services/api-handler.mjs +36 -5
- package/dist/server/services/api-handler.mjs.map +1 -1
- package/dist/server/services/content-structure.js +174 -0
- package/dist/server/services/content-structure.js.map +1 -0
- package/dist/server/services/content-structure.mjs +172 -0
- package/dist/server/services/content-structure.mjs.map +1 -0
- package/dist/server/services/content-types.js +196 -44
- package/dist/server/services/content-types.js.map +1 -1
- package/dist/server/services/content-types.mjs +195 -45
- package/dist/server/services/content-types.mjs.map +1 -1
- package/dist/server/services/index.js +3 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs +3 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/schema-builder/index.js +4 -2
- package/dist/server/services/schema-builder/index.js.map +1 -1
- package/dist/server/services/schema-builder/index.mjs +4 -2
- package/dist/server/services/schema-builder/index.mjs.map +1 -1
- package/dist/server/services/schema-builder/schema-handler.js +16 -16
- package/dist/server/services/schema-builder/schema-handler.js.map +1 -1
- package/dist/server/services/schema-builder/schema-handler.mjs +16 -16
- package/dist/server/services/schema-builder/schema-handler.mjs.map +1 -1
- package/dist/server/services/schema-mutation.js +46 -0
- package/dist/server/services/schema-mutation.js.map +1 -0
- package/dist/server/services/schema-mutation.mjs +43 -0
- package/dist/server/services/schema-mutation.mjs.map +1 -0
- package/dist/server/services/schema.js +134 -79
- package/dist/server/services/schema.js.map +1 -1
- package/dist/server/services/schema.mjs +135 -80
- package/dist/server/services/schema.mjs.map +1 -1
- package/dist/server/src/controllers/schema.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/common.d.ts +1 -0
- package/dist/server/src/controllers/validation/common.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/content-structure.d.ts +56 -0
- package/dist/server/src/controllers/validation/content-structure.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/schema.d.ts +35 -0
- package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +3 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/content-api.d.ts.map +1 -1
- package/dist/server/src/services/api-handler.d.ts +13 -1
- package/dist/server/src/services/api-handler.d.ts.map +1 -1
- package/dist/server/src/services/content-structure.d.ts +37 -0
- package/dist/server/src/services/content-structure.d.ts.map +1 -0
- package/dist/server/src/services/content-types.d.ts +4 -0
- package/dist/server/src/services/content-types.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +4 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/index.d.ts +3 -1
- package/dist/server/src/services/schema-builder/index.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/schema-handler.d.ts.map +1 -1
- package/dist/server/src/services/schema-mutation.d.ts +26 -0
- package/dist/server/src/services/schema-mutation.d.ts.map +1 -0
- package/dist/server/src/services/schema.d.ts +1 -0
- package/dist/server/src/services/schema.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/index.mjs.map +1 -1
- package/package.json +6 -6
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +0 -157
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +0 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +0 -151
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentTypeForm.mjs","sources":["../../../../../admin/src/components/FormModal/contentType/contentTypeForm.ts"],"sourcesContent":["import { getTrad } from '../../../utils/getTrad';\n\nconst nameField = {\n name: 'displayName',\n type: 'text',\n intlLabel: {\n id: getTrad('contentType.displayName.label'),\n defaultMessage: 'Display name',\n },\n};\n\nexport const contentTypeForm = {\n advanced: {\n default() {\n return {\n sections: [\n {\n items: [\n {\n intlLabel: {\n id: getTrad('contentType.draftAndPublish.label'),\n defaultMessage: 'Draft & publish',\n },\n description: {\n id: getTrad('contentType.draftAndPublish.description'),\n defaultMessage:\n 'Allows writing a draft version of an entry, before it is published',\n },\n name: 'draftAndPublish',\n type: 'toggle-draft-publish',\n validations: {},\n },\n ],\n },\n ],\n };\n },\n },\n base: {\n create() {\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n nameField,\n {\n description: {\n id: getTrad('contentType.apiId-singular.description'),\n defaultMessage:\n 'Used to generate the API routes and databases tables/collections',\n },\n intlLabel: {\n id: getTrad('contentType.apiId-singular.label'),\n defaultMessage: 'API ID (Singular)',\n },\n name: 'singularName',\n type: 'text-singular',\n },\n
|
|
1
|
+
{"version":3,"file":"contentTypeForm.mjs","sources":["../../../../../admin/src/components/FormModal/contentType/contentTypeForm.ts"],"sourcesContent":["import { getTrad } from '../../../utils/getTrad';\n\nconst nameField = {\n name: 'displayName',\n type: 'text',\n intlLabel: {\n id: getTrad('contentType.displayName.label'),\n defaultMessage: 'Display name',\n },\n};\n\nconst contentStructureFolderField = {\n name: 'folder',\n type: 'content-type-folder-select',\n size: 6,\n intlLabel: {\n id: getTrad('contentType.folder.label'),\n defaultMessage: 'Select a folder or enter a value to create a new one',\n },\n placeholder: {\n id: getTrad('contentType.folder.placeholder'),\n defaultMessage: 'Select or enter a value',\n },\n};\n\nexport const contentTypeForm = {\n advanced: {\n default() {\n return {\n sections: [\n {\n items: [\n {\n intlLabel: {\n id: getTrad('contentType.draftAndPublish.label'),\n defaultMessage: 'Draft & publish',\n },\n description: {\n id: getTrad('contentType.draftAndPublish.description'),\n defaultMessage:\n 'Allows writing a draft version of an entry, before it is published',\n },\n name: 'draftAndPublish',\n type: 'toggle-draft-publish',\n validations: {},\n },\n ],\n },\n ],\n };\n },\n },\n base: {\n create() {\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n nameField,\n {\n description: {\n id: getTrad('contentType.apiId-singular.description'),\n defaultMessage:\n 'Used to generate the API routes and databases tables/collections',\n },\n intlLabel: {\n id: getTrad('contentType.apiId-singular.label'),\n defaultMessage: 'API ID (Singular)',\n },\n name: 'singularName',\n type: 'text-singular',\n },\n contentStructureFolderField,\n {\n description: {\n id: getTrad('contentType.apiId-plural.description'),\n defaultMessage: 'Pluralized API ID',\n },\n intlLabel: {\n id: getTrad('contentType.apiId-plural.label'),\n defaultMessage: 'API ID (Plural)',\n },\n name: 'pluralName',\n type: 'text-plural',\n },\n ],\n },\n ],\n };\n },\n edit() {\n return {\n sections: [\n {\n sectionTitle: null,\n items: [\n nameField,\n {\n disabled: true,\n description: {\n id: getTrad('contentType.apiId-singular.description'),\n defaultMessage:\n 'Used to generate the API routes and databases tables/collections',\n },\n intlLabel: {\n id: getTrad('contentType.apiId-singular.label'),\n defaultMessage: 'API ID (Singular)',\n },\n name: 'singularName',\n type: 'text',\n },\n contentStructureFolderField,\n {\n disabled: true,\n description: {\n id: getTrad('contentType.apiId-plural.description'),\n defaultMessage: 'Pluralized API ID',\n },\n intlLabel: {\n id: getTrad('contentType.apiId-plural.label'),\n defaultMessage: 'API ID (Plural)',\n },\n name: 'pluralName',\n type: 'text',\n },\n {\n intlLabel: {\n id: 'global.type',\n defaultMessage: 'Type',\n },\n name: 'kind',\n type: 'content-type-radio-group',\n size: 12,\n radios: [\n {\n title: {\n id: getTrad('form.button.collection-type.name'),\n defaultMessage: 'Collection Type',\n },\n description: {\n id: getTrad('form.button.collection-type.description'),\n defaultMessage:\n 'Best for multiple instances like articles, products, comments, etc.',\n },\n value: 'collectionType',\n },\n {\n title: {\n id: getTrad('form.button.single-type.name'),\n defaultMessage: 'Single Type',\n },\n description: {\n id: getTrad('form.button.single-type.description'),\n defaultMessage: 'Best for single instance like about us, homepage, etc.',\n },\n value: 'singleType',\n },\n ],\n },\n ],\n },\n ],\n };\n },\n },\n};\n"],"names":["nameField","name","type","intlLabel","id","getTrad","defaultMessage","contentStructureFolderField","size","placeholder","contentTypeForm","advanced","default","sections","items","description","validations","base","create","sectionTitle","edit","disabled","radios","title","value"],"mappings":"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"}
|
|
@@ -43,6 +43,12 @@ const slice = toolkit.createSlice({
|
|
|
43
43
|
delete state.modifiedData.default;
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
+
// If the user changes the content type kind (single vs. collecton), the folder selection becomes stale and should be deleted from the pending action.
|
|
47
|
+
if (keys.length === 1 && keys.includes('kind') && value !== obj.kind) {
|
|
48
|
+
if (obj.folder && 'targetGroupId' in obj.folder) {
|
|
49
|
+
delete state.modifiedData.folder;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
46
52
|
set__default.default(state, [
|
|
47
53
|
'modifiedData',
|
|
48
54
|
...keys
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.js","sources":["../../../../admin/src/components/FormModal/reducer.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport set from 'lodash/set';\nimport snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { nameToSlug } from '../../utils/nameToSlug';\n\nimport { createComponentUid } from './utils/createUid';\nimport { customFieldDefaultOptionsReducer } from './utils/customFieldDefaultOptionsReducer';\nimport { shouldPluralizeName, shouldPluralizeTargetAttribute } from './utils/relations';\n\nimport type { Schema, Struct, UID } from '@strapi/types';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype FormModalError = MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n};\n\nexport type ComponentToCreateData = Record<string, unknown> & {\n type?: 'component';\n displayName?: string;\n icon?: string;\n category?: string;\n};\n\nexport type FormModalData = Record<string, unknown> & {\n allowedTypes?: string[];\n category?: string;\n component?: UID.Component;\n components?: UID.Component[];\n componentToCreate?: ComponentToCreateData;\n conditions?: unknown;\n createComponent?: boolean;\n default?: unknown;\n displayName?: string;\n draftAndPublish?: boolean;\n enum?: string[];\n icon?: string;\n kind?: Struct.ContentTypeKind;\n multiple?: boolean;\n name?: string;\n options?: object;\n pluralName?: string;\n pluginOptions?: object;\n relation?: Schema.Attribute.RelationKind.Any;\n repeatable?: boolean;\n required?: boolean;\n singularName?: string;\n target?: string | null;\n targetAttribute?: string | null;\n type?: string;\n};\n\ntype CustomFieldOption = {\n items?: CustomFieldOption[];\n name?: string;\n defaultValue?: unknown;\n};\n\ntype CustomField = {\n type: string;\n options?: {\n base?: CustomFieldOption[];\n advanced?: CustomFieldOption[];\n };\n};\n\nexport type State = {\n formErrors: Record<string, FormModalError>;\n modifiedData: FormModalData;\n initialData: FormModalData;\n componentToCreate: ComponentToCreateData;\n isCreatingComponentWhileAddingAField: boolean;\n};\n\nconst initialState: State = {\n formErrors: {},\n modifiedData: {},\n initialData: {},\n componentToCreate: {},\n isCreatingComponentWhileAddingAField: false,\n};\n\ntype OnChangePayload = {\n keys: string[];\n value: unknown;\n};\n\ntype OnChangeRelationTargetPayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n selectedContentTypeFriendlyName: string;\n targetContentTypeAllowedRelations: Schema.Attribute.RelationKind.Any[] | null;\n value: string;\n };\n};\n\ntype OnChangeRelationTypePayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n value: Schema.Attribute.RelationKind.Any;\n };\n};\n\ntype ResetPropsAndSetFormForAddingAnExistingCompoPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype ResetPropsAndSaveCurrentDataPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype SetDataToEditPayload = {\n data: FormModalData;\n};\n\ntype SetAttributeDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n attributeType: string;\n nameToSetForRelation: string;\n targetUid: string;\n step: string | null;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetCustomFieldDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n customField: CustomField;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetDynamicZoneDataSchemaPayload = {\n attributeToEdit: FormModalData;\n};\n\ntype SetErrorsPayload = {\n errors: Record<string, FormModalError>;\n};\n\nconst slice = createSlice({\n name: 'formModal',\n initialState,\n reducers: {\n onChange: (state, action: PayloadAction<OnChangePayload>) => {\n const { keys, value } = action.payload;\n const obj = state.modifiedData;\n const hasDefaultValue = obj.default !== undefined;\n\n // There is no need to remove the default key if the default value isn't defined\n if (hasDefaultValue && keys.length === 1 && keys.includes('type')) {\n const previousType = obj.type;\n\n if (previousType !== undefined && ['date', 'datetime', 'time'].includes(previousType)) {\n // return obj.updateIn(keys, () => value).remove('default');\n delete state.modifiedData.default;\n }\n }\n\n set(state, ['modifiedData', ...keys], value);\n },\n onChangeRelationTarget: (state, action: PayloadAction<OnChangeRelationTargetPayload>) => {\n const {\n target: {\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations,\n value,\n },\n } = action.payload;\n // Special case for the admin user...\n let didChangeRelationTypeBecauseOfRestrictedRelation = false;\n let changedRelationType: Schema.Attribute.RelationKind.Any | null = null;\n\n set(state, ['modifiedData', 'target'], value);\n\n const modifiedData = state.modifiedData;\n\n // Don't change the relation type if the allowed relations are not restricted\n // TODO: replace with an obj { relation: 'x', bidirctional: true|false } when BE ready\n if (Array.isArray(targetContentTypeAllowedRelations)) {\n const currentRelationType = getRelationType(\n modifiedData.relation,\n modifiedData.targetAttribute\n );\n\n if (\n currentRelationType &&\n !targetContentTypeAllowedRelations.includes(currentRelationType)\n ) {\n const relationToSet = targetContentTypeAllowedRelations[0];\n didChangeRelationTypeBecauseOfRestrictedRelation = true;\n changedRelationType = relationToSet;\n\n if (relationToSet === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n } else if (relationToSet === 'manyWay') {\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n } else {\n set(state, ['modifiedData', 'relation'], relationToSet);\n }\n }\n }\n\n let nameToSet: string;\n\n if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType !== null) {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n shouldPluralizeName(changedRelationType)\n );\n } else {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n\n shouldPluralizeName(modifiedData.relation)\n );\n }\n\n set(state, ['modifiedData', 'name'], nameToSet);\n\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n if (currentTargetAttribute === null) {\n return;\n }\n\n // Changing the target and the relation is either oneWay or manyWay\n // Case when we need to change the relation to oneWay (ex: admin user)\n if (\n didChangeRelationTypeBecauseOfRestrictedRelation &&\n changedRelationType !== null &&\n ['oneWay', 'manyWay'].includes(changedRelationType)\n ) {\n set(state, ['modifiedData', 'targetAttribute'], null);\n\n return;\n }\n\n const targetAttributeToSet = pluralize(\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(modifiedData.relation)\n );\n\n set(state, ['modifiedData', 'targetAttribute'], targetAttributeToSet);\n },\n onChangeRelationType: (state, action: PayloadAction<OnChangeRelationTypePayload>) => {\n const {\n target: { oneThatIsCreatingARelationWithAnother, value },\n } = action.payload;\n\n const currentName = state.modifiedData.name ?? '';\n\n // Switching from oneWay\n if (!['oneWay', 'manyWay'].includes(value)) {\n set(state, ['modifiedData', 'relation'], value);\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n set(\n state,\n ['modifiedData', 'name'],\n pluralize(snakeCase(nameToSlug(currentName)), shouldPluralizeName(value))\n );\n\n set(\n state,\n ['modifiedData', 'targetAttribute'],\n pluralize(\n currentTargetAttribute || snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(value)\n )\n );\n\n return;\n }\n\n if (value === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 1));\n\n return;\n }\n\n // manyWay\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 2));\n },\n resetProps: () => {\n return initialState;\n },\n resetPropsAndSetFormForAddingAnExistingCompo: (\n state,\n action: PayloadAction<ResetPropsAndSetFormForAddingAnExistingCompoPayload>\n ) => {\n const { options = {} } = action.payload;\n\n return {\n ...initialState,\n modifiedData: {\n type: 'component',\n repeatable: true,\n ...options,\n },\n };\n },\n resetPropsAndSaveCurrentData: (\n state,\n action: PayloadAction<ResetPropsAndSaveCurrentDataPayload>\n ) => {\n const { options = {} } = action.payload;\n // This is run when the user has created a new component\n const componentToCreate = state.modifiedData.componentToCreate;\n\n if (\n componentToCreate?.displayName === undefined ||\n componentToCreate.category === undefined\n ) {\n return initialState;\n }\n\n const modifiedData = {\n displayName: componentToCreate.displayName,\n type: 'component',\n repeatable: false,\n ...options,\n component: createComponentUid(componentToCreate.displayName, componentToCreate.category),\n };\n\n return {\n ...initialState,\n componentToCreate,\n modifiedData,\n isCreatingComponentWhileAddingAField: state.modifiedData.createComponent === true,\n };\n },\n resetPropsAndSetTheFormForAddingACompoToADz: (state) => {\n const createdDZ = state.modifiedData;\n const dataToSet = {\n ...createdDZ,\n createComponent: true,\n componentToCreate: { type: 'component' as const },\n };\n\n return { ...initialState, modifiedData: dataToSet };\n },\n setDataToEdit: (state, action: PayloadAction<SetDataToEditPayload>) => {\n const { data } = action.payload;\n state.modifiedData = data;\n state.initialData = data;\n state.formErrors = {};\n },\n setAttributeDataSchema: (state, action: PayloadAction<SetAttributeDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n // The errors describe the data being replaced below, so they no longer apply. Leaving\n // them behind surfaces the previous attempt's errors on a freshly picked, blank type.\n // See https://github.com/strapi/strapi/issues/20947\n state.formErrors = {};\n\n if (isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { attributeType, nameToSetForRelation, targetUid, step, options = {} } = action.payload;\n\n let dataToSet;\n\n if (attributeType === 'component') {\n if (step === '1') {\n dataToSet = {\n type: 'component',\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n } else {\n dataToSet = {\n ...options,\n type: 'component',\n repeatable: true,\n };\n }\n } else if (attributeType === 'dynamiczone') {\n dataToSet = {\n ...options,\n type: 'dynamiczone',\n components: [],\n };\n } else if (attributeType === 'text') {\n dataToSet = { ...options, type: 'string' };\n } else if (attributeType === 'number' || attributeType === 'date') {\n dataToSet = options;\n } else if (attributeType === 'media') {\n dataToSet = {\n allowedTypes: ['images', 'files', 'videos', 'audios'],\n type: 'media',\n multiple: true,\n ...options,\n };\n } else if (attributeType === 'enumeration') {\n dataToSet = { ...options, type: 'enumeration', enum: [] };\n } else if (attributeType === 'relation') {\n dataToSet = {\n name: snakeCase(nameToSetForRelation),\n relation: 'oneToOne',\n targetAttribute: null,\n target: targetUid,\n type: 'relation',\n };\n } else {\n dataToSet = { ...options, type: attributeType, default: null };\n }\n\n state.modifiedData = dataToSet;\n },\n setCustomFieldDataSchema: (state, action: PayloadAction<SetCustomFieldDataSchemaPayload>) => {\n const { payload } = action;\n\n state.formErrors = {};\n\n if (payload.isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { customField, options = {} } = payload;\n\n state.modifiedData = { ...options, type: customField.type };\n\n const allOptions = [\n ...(customField?.options?.base || []),\n ...(customField?.options?.advanced || []),\n ];\n\n const optionDefaults = allOptions.reduce(customFieldDefaultOptionsReducer, []);\n\n if (optionDefaults.length) {\n optionDefaults.forEach(({ name, defaultValue }) =>\n set(state.modifiedData, name, defaultValue)\n );\n }\n },\n setDynamicZoneDataSchema: (state, action: PayloadAction<SetDynamicZoneDataSchemaPayload>) => {\n const { attributeToEdit } = action.payload;\n state.modifiedData = attributeToEdit;\n state.initialData = attributeToEdit;\n state.formErrors = {};\n },\n setErrors: (state, action: PayloadAction<SetErrorsPayload>) => {\n state.formErrors = action.payload.errors;\n },\n },\n});\n\nexport { initialState };\nexport const { actions, reducer } = slice;\n"],"names":["initialState","formErrors","modifiedData","initialData","componentToCreate","isCreatingComponentWhileAddingAField","slice","createSlice","name","reducers","onChange","state","action","keys","value","payload","obj","hasDefaultValue","default","undefined","length","includes","previousType","type","set","onChangeRelationTarget","target","oneThatIsCreatingARelationWithAnother","selectedContentTypeFriendlyName","targetContentTypeAllowedRelations","didChangeRelationTypeBecauseOfRestrictedRelation","changedRelationType","Array","isArray","currentRelationType","getRelationType","relation","targetAttribute","relationToSet","nameToSet","pluralize","snakeCase","nameToSlug","shouldPluralizeName","currentTargetAttribute","targetAttributeToSet","shouldPluralizeTargetAttribute","onChangeRelationType","currentName","resetProps","resetPropsAndSetFormForAddingAnExistingCompo","options","repeatable","resetPropsAndSaveCurrentData","displayName","category","component","createComponentUid","createComponent","resetPropsAndSetTheFormForAddingACompoToADz","createdDZ","dataToSet","setDataToEdit","data","setAttributeDataSchema","isEditing","modifiedDataToSetForEditing","attributeType","nameToSetForRelation","targetUid","step","components","allowedTypes","multiple","enum","setCustomFieldDataSchema","customField","allOptions","base","advanced","optionDefaults","reduce","customFieldDefaultOptionsReducer","forEach","defaultValue","setDynamicZoneDataSchema","attributeToEdit","setErrors","errors","actions","reducer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reducer.js","sources":["../../../../admin/src/components/FormModal/reducer.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport set from 'lodash/set';\nimport snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { nameToSlug } from '../../utils/nameToSlug';\n\nimport { createComponentUid } from './utils/createUid';\nimport { customFieldDefaultOptionsReducer } from './utils/customFieldDefaultOptionsReducer';\nimport { shouldPluralizeName, shouldPluralizeTargetAttribute } from './utils/relations';\n\nimport type { FolderSelection } from '../DataManager/utils/contentStructure';\nimport type { Schema, Struct, UID } from '@strapi/types';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype FormModalError = MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n};\n\nexport type ComponentToCreateData = Record<string, unknown> & {\n type?: 'component';\n displayName?: string;\n icon?: string;\n category?: string;\n};\n\nexport type FormModalData = Record<string, unknown> & {\n allowedTypes?: string[];\n category?: string;\n component?: UID.Component;\n components?: UID.Component[];\n componentToCreate?: ComponentToCreateData;\n conditions?: unknown;\n createComponent?: boolean;\n default?: unknown;\n displayName?: string;\n draftAndPublish?: boolean;\n enum?: string[];\n folder?: FolderSelection;\n icon?: string;\n kind?: Struct.ContentTypeKind;\n multiple?: boolean;\n name?: string;\n options?: object;\n pluralName?: string;\n pluginOptions?: object;\n relation?: Schema.Attribute.RelationKind.Any;\n repeatable?: boolean;\n required?: boolean;\n singularName?: string;\n target?: string | null;\n targetAttribute?: string | null;\n type?: string;\n};\n\ntype CustomFieldOption = {\n items?: CustomFieldOption[];\n name?: string;\n defaultValue?: unknown;\n};\n\ntype CustomField = {\n type: string;\n options?: {\n base?: CustomFieldOption[];\n advanced?: CustomFieldOption[];\n };\n};\n\nexport type State = {\n formErrors: Record<string, FormModalError>;\n modifiedData: FormModalData;\n initialData: FormModalData;\n componentToCreate: ComponentToCreateData;\n isCreatingComponentWhileAddingAField: boolean;\n};\n\nconst initialState: State = {\n formErrors: {},\n modifiedData: {},\n initialData: {},\n componentToCreate: {},\n isCreatingComponentWhileAddingAField: false,\n};\n\ntype OnChangePayload = {\n keys: string[];\n value: unknown;\n};\n\ntype OnChangeRelationTargetPayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n selectedContentTypeFriendlyName: string;\n targetContentTypeAllowedRelations: Schema.Attribute.RelationKind.Any[] | null;\n value: string;\n };\n};\n\ntype OnChangeRelationTypePayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n value: Schema.Attribute.RelationKind.Any;\n };\n};\n\ntype ResetPropsAndSetFormForAddingAnExistingCompoPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype ResetPropsAndSaveCurrentDataPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype SetDataToEditPayload = {\n data: FormModalData;\n};\n\ntype SetAttributeDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n attributeType: string;\n nameToSetForRelation: string;\n targetUid: string;\n step: string | null;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetCustomFieldDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n customField: CustomField;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetDynamicZoneDataSchemaPayload = {\n attributeToEdit: FormModalData;\n};\n\ntype SetErrorsPayload = {\n errors: Record<string, FormModalError>;\n};\n\nconst slice = createSlice({\n name: 'formModal',\n initialState,\n reducers: {\n onChange: (state, action: PayloadAction<OnChangePayload>) => {\n const { keys, value } = action.payload;\n const obj = state.modifiedData;\n const hasDefaultValue = obj.default !== undefined;\n\n // There is no need to remove the default key if the default value isn't defined\n if (hasDefaultValue && keys.length === 1 && keys.includes('type')) {\n const previousType = obj.type;\n\n if (previousType !== undefined && ['date', 'datetime', 'time'].includes(previousType)) {\n // return obj.updateIn(keys, () => value).remove('default');\n delete state.modifiedData.default;\n }\n }\n\n // If the user changes the content type kind (single vs. collecton), the folder selection becomes stale and should be deleted from the pending action.\n if (keys.length === 1 && keys.includes('kind') && value !== obj.kind) {\n if (obj.folder && 'targetGroupId' in obj.folder) {\n delete state.modifiedData.folder;\n }\n }\n\n set(state, ['modifiedData', ...keys], value);\n },\n onChangeRelationTarget: (state, action: PayloadAction<OnChangeRelationTargetPayload>) => {\n const {\n target: {\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations,\n value,\n },\n } = action.payload;\n // Special case for the admin user...\n let didChangeRelationTypeBecauseOfRestrictedRelation = false;\n let changedRelationType: Schema.Attribute.RelationKind.Any | null = null;\n\n set(state, ['modifiedData', 'target'], value);\n\n const modifiedData = state.modifiedData;\n\n // Don't change the relation type if the allowed relations are not restricted\n // TODO: replace with an obj { relation: 'x', bidirctional: true|false } when BE ready\n if (Array.isArray(targetContentTypeAllowedRelations)) {\n const currentRelationType = getRelationType(\n modifiedData.relation,\n modifiedData.targetAttribute\n );\n\n if (\n currentRelationType &&\n !targetContentTypeAllowedRelations.includes(currentRelationType)\n ) {\n const relationToSet = targetContentTypeAllowedRelations[0];\n didChangeRelationTypeBecauseOfRestrictedRelation = true;\n changedRelationType = relationToSet;\n\n if (relationToSet === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n } else if (relationToSet === 'manyWay') {\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n } else {\n set(state, ['modifiedData', 'relation'], relationToSet);\n }\n }\n }\n\n let nameToSet: string;\n\n if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType !== null) {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n shouldPluralizeName(changedRelationType)\n );\n } else {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n\n shouldPluralizeName(modifiedData.relation)\n );\n }\n\n set(state, ['modifiedData', 'name'], nameToSet);\n\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n if (currentTargetAttribute === null) {\n return;\n }\n\n // Changing the target and the relation is either oneWay or manyWay\n // Case when we need to change the relation to oneWay (ex: admin user)\n if (\n didChangeRelationTypeBecauseOfRestrictedRelation &&\n changedRelationType !== null &&\n ['oneWay', 'manyWay'].includes(changedRelationType)\n ) {\n set(state, ['modifiedData', 'targetAttribute'], null);\n\n return;\n }\n\n const targetAttributeToSet = pluralize(\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(modifiedData.relation)\n );\n\n set(state, ['modifiedData', 'targetAttribute'], targetAttributeToSet);\n },\n onChangeRelationType: (state, action: PayloadAction<OnChangeRelationTypePayload>) => {\n const {\n target: { oneThatIsCreatingARelationWithAnother, value },\n } = action.payload;\n\n const currentName = state.modifiedData.name ?? '';\n\n // Switching from oneWay\n if (!['oneWay', 'manyWay'].includes(value)) {\n set(state, ['modifiedData', 'relation'], value);\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n set(\n state,\n ['modifiedData', 'name'],\n pluralize(snakeCase(nameToSlug(currentName)), shouldPluralizeName(value))\n );\n\n set(\n state,\n ['modifiedData', 'targetAttribute'],\n pluralize(\n currentTargetAttribute || snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(value)\n )\n );\n\n return;\n }\n\n if (value === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 1));\n\n return;\n }\n\n // manyWay\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 2));\n },\n resetProps: () => {\n return initialState;\n },\n resetPropsAndSetFormForAddingAnExistingCompo: (\n state,\n action: PayloadAction<ResetPropsAndSetFormForAddingAnExistingCompoPayload>\n ) => {\n const { options = {} } = action.payload;\n\n return {\n ...initialState,\n modifiedData: {\n type: 'component',\n repeatable: true,\n ...options,\n },\n };\n },\n resetPropsAndSaveCurrentData: (\n state,\n action: PayloadAction<ResetPropsAndSaveCurrentDataPayload>\n ) => {\n const { options = {} } = action.payload;\n // This is run when the user has created a new component\n const componentToCreate = state.modifiedData.componentToCreate;\n\n if (\n componentToCreate?.displayName === undefined ||\n componentToCreate.category === undefined\n ) {\n return initialState;\n }\n\n const modifiedData = {\n displayName: componentToCreate.displayName,\n type: 'component',\n repeatable: false,\n ...options,\n component: createComponentUid(componentToCreate.displayName, componentToCreate.category),\n };\n\n return {\n ...initialState,\n componentToCreate,\n modifiedData,\n isCreatingComponentWhileAddingAField: state.modifiedData.createComponent === true,\n };\n },\n resetPropsAndSetTheFormForAddingACompoToADz: (state) => {\n const createdDZ = state.modifiedData;\n const dataToSet = {\n ...createdDZ,\n createComponent: true,\n componentToCreate: { type: 'component' as const },\n };\n\n return { ...initialState, modifiedData: dataToSet };\n },\n setDataToEdit: (state, action: PayloadAction<SetDataToEditPayload>) => {\n const { data } = action.payload;\n state.modifiedData = data;\n state.initialData = data;\n state.formErrors = {};\n },\n setAttributeDataSchema: (state, action: PayloadAction<SetAttributeDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n // The errors describe the data being replaced below, so they no longer apply. Leaving\n // them behind surfaces the previous attempt's errors on a freshly picked, blank type.\n // See https://github.com/strapi/strapi/issues/20947\n state.formErrors = {};\n\n if (isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { attributeType, nameToSetForRelation, targetUid, step, options = {} } = action.payload;\n\n let dataToSet;\n\n if (attributeType === 'component') {\n if (step === '1') {\n dataToSet = {\n type: 'component',\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n } else {\n dataToSet = {\n ...options,\n type: 'component',\n repeatable: true,\n };\n }\n } else if (attributeType === 'dynamiczone') {\n dataToSet = {\n ...options,\n type: 'dynamiczone',\n components: [],\n };\n } else if (attributeType === 'text') {\n dataToSet = { ...options, type: 'string' };\n } else if (attributeType === 'number' || attributeType === 'date') {\n dataToSet = options;\n } else if (attributeType === 'media') {\n dataToSet = {\n allowedTypes: ['images', 'files', 'videos', 'audios'],\n type: 'media',\n multiple: true,\n ...options,\n };\n } else if (attributeType === 'enumeration') {\n dataToSet = { ...options, type: 'enumeration', enum: [] };\n } else if (attributeType === 'relation') {\n dataToSet = {\n name: snakeCase(nameToSetForRelation),\n relation: 'oneToOne',\n targetAttribute: null,\n target: targetUid,\n type: 'relation',\n };\n } else {\n dataToSet = { ...options, type: attributeType, default: null };\n }\n\n state.modifiedData = dataToSet;\n },\n setCustomFieldDataSchema: (state, action: PayloadAction<SetCustomFieldDataSchemaPayload>) => {\n const { payload } = action;\n\n state.formErrors = {};\n\n if (payload.isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { customField, options = {} } = payload;\n\n state.modifiedData = { ...options, type: customField.type };\n\n const allOptions = [\n ...(customField?.options?.base || []),\n ...(customField?.options?.advanced || []),\n ];\n\n const optionDefaults = allOptions.reduce(customFieldDefaultOptionsReducer, []);\n\n if (optionDefaults.length) {\n optionDefaults.forEach(({ name, defaultValue }) =>\n set(state.modifiedData, name, defaultValue)\n );\n }\n },\n setDynamicZoneDataSchema: (state, action: PayloadAction<SetDynamicZoneDataSchemaPayload>) => {\n const { attributeToEdit } = action.payload;\n state.modifiedData = attributeToEdit;\n state.initialData = attributeToEdit;\n state.formErrors = {};\n },\n setErrors: (state, action: PayloadAction<SetErrorsPayload>) => {\n state.formErrors = action.payload.errors;\n },\n },\n});\n\nexport { initialState };\nexport const { actions, reducer } = slice;\n"],"names":["initialState","formErrors","modifiedData","initialData","componentToCreate","isCreatingComponentWhileAddingAField","slice","createSlice","name","reducers","onChange","state","action","keys","value","payload","obj","hasDefaultValue","default","undefined","length","includes","previousType","type","kind","folder","set","onChangeRelationTarget","target","oneThatIsCreatingARelationWithAnother","selectedContentTypeFriendlyName","targetContentTypeAllowedRelations","didChangeRelationTypeBecauseOfRestrictedRelation","changedRelationType","Array","isArray","currentRelationType","getRelationType","relation","targetAttribute","relationToSet","nameToSet","pluralize","snakeCase","nameToSlug","shouldPluralizeName","currentTargetAttribute","targetAttributeToSet","shouldPluralizeTargetAttribute","onChangeRelationType","currentName","resetProps","resetPropsAndSetFormForAddingAnExistingCompo","options","repeatable","resetPropsAndSaveCurrentData","displayName","category","component","createComponentUid","createComponent","resetPropsAndSetTheFormForAddingACompoToADz","createdDZ","dataToSet","setDataToEdit","data","setAttributeDataSchema","isEditing","modifiedDataToSetForEditing","attributeType","nameToSetForRelation","targetUid","step","components","allowedTypes","multiple","enum","setCustomFieldDataSchema","customField","allOptions","base","advanced","optionDefaults","reduce","customFieldDefaultOptionsReducer","forEach","defaultValue","setDynamicZoneDataSchema","attributeToEdit","setErrors","errors","actions","reducer"],"mappings":"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"}
|
|
@@ -35,6 +35,12 @@ const slice = createSlice({
|
|
|
35
35
|
delete state.modifiedData.default;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
+
// If the user changes the content type kind (single vs. collecton), the folder selection becomes stale and should be deleted from the pending action.
|
|
39
|
+
if (keys.length === 1 && keys.includes('kind') && value !== obj.kind) {
|
|
40
|
+
if (obj.folder && 'targetGroupId' in obj.folder) {
|
|
41
|
+
delete state.modifiedData.folder;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
38
44
|
set(state, [
|
|
39
45
|
'modifiedData',
|
|
40
46
|
...keys
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.mjs","sources":["../../../../admin/src/components/FormModal/reducer.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport set from 'lodash/set';\nimport snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { nameToSlug } from '../../utils/nameToSlug';\n\nimport { createComponentUid } from './utils/createUid';\nimport { customFieldDefaultOptionsReducer } from './utils/customFieldDefaultOptionsReducer';\nimport { shouldPluralizeName, shouldPluralizeTargetAttribute } from './utils/relations';\n\nimport type { Schema, Struct, UID } from '@strapi/types';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype FormModalError = MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n};\n\nexport type ComponentToCreateData = Record<string, unknown> & {\n type?: 'component';\n displayName?: string;\n icon?: string;\n category?: string;\n};\n\nexport type FormModalData = Record<string, unknown> & {\n allowedTypes?: string[];\n category?: string;\n component?: UID.Component;\n components?: UID.Component[];\n componentToCreate?: ComponentToCreateData;\n conditions?: unknown;\n createComponent?: boolean;\n default?: unknown;\n displayName?: string;\n draftAndPublish?: boolean;\n enum?: string[];\n icon?: string;\n kind?: Struct.ContentTypeKind;\n multiple?: boolean;\n name?: string;\n options?: object;\n pluralName?: string;\n pluginOptions?: object;\n relation?: Schema.Attribute.RelationKind.Any;\n repeatable?: boolean;\n required?: boolean;\n singularName?: string;\n target?: string | null;\n targetAttribute?: string | null;\n type?: string;\n};\n\ntype CustomFieldOption = {\n items?: CustomFieldOption[];\n name?: string;\n defaultValue?: unknown;\n};\n\ntype CustomField = {\n type: string;\n options?: {\n base?: CustomFieldOption[];\n advanced?: CustomFieldOption[];\n };\n};\n\nexport type State = {\n formErrors: Record<string, FormModalError>;\n modifiedData: FormModalData;\n initialData: FormModalData;\n componentToCreate: ComponentToCreateData;\n isCreatingComponentWhileAddingAField: boolean;\n};\n\nconst initialState: State = {\n formErrors: {},\n modifiedData: {},\n initialData: {},\n componentToCreate: {},\n isCreatingComponentWhileAddingAField: false,\n};\n\ntype OnChangePayload = {\n keys: string[];\n value: unknown;\n};\n\ntype OnChangeRelationTargetPayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n selectedContentTypeFriendlyName: string;\n targetContentTypeAllowedRelations: Schema.Attribute.RelationKind.Any[] | null;\n value: string;\n };\n};\n\ntype OnChangeRelationTypePayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n value: Schema.Attribute.RelationKind.Any;\n };\n};\n\ntype ResetPropsAndSetFormForAddingAnExistingCompoPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype ResetPropsAndSaveCurrentDataPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype SetDataToEditPayload = {\n data: FormModalData;\n};\n\ntype SetAttributeDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n attributeType: string;\n nameToSetForRelation: string;\n targetUid: string;\n step: string | null;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetCustomFieldDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n customField: CustomField;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetDynamicZoneDataSchemaPayload = {\n attributeToEdit: FormModalData;\n};\n\ntype SetErrorsPayload = {\n errors: Record<string, FormModalError>;\n};\n\nconst slice = createSlice({\n name: 'formModal',\n initialState,\n reducers: {\n onChange: (state, action: PayloadAction<OnChangePayload>) => {\n const { keys, value } = action.payload;\n const obj = state.modifiedData;\n const hasDefaultValue = obj.default !== undefined;\n\n // There is no need to remove the default key if the default value isn't defined\n if (hasDefaultValue && keys.length === 1 && keys.includes('type')) {\n const previousType = obj.type;\n\n if (previousType !== undefined && ['date', 'datetime', 'time'].includes(previousType)) {\n // return obj.updateIn(keys, () => value).remove('default');\n delete state.modifiedData.default;\n }\n }\n\n set(state, ['modifiedData', ...keys], value);\n },\n onChangeRelationTarget: (state, action: PayloadAction<OnChangeRelationTargetPayload>) => {\n const {\n target: {\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations,\n value,\n },\n } = action.payload;\n // Special case for the admin user...\n let didChangeRelationTypeBecauseOfRestrictedRelation = false;\n let changedRelationType: Schema.Attribute.RelationKind.Any | null = null;\n\n set(state, ['modifiedData', 'target'], value);\n\n const modifiedData = state.modifiedData;\n\n // Don't change the relation type if the allowed relations are not restricted\n // TODO: replace with an obj { relation: 'x', bidirctional: true|false } when BE ready\n if (Array.isArray(targetContentTypeAllowedRelations)) {\n const currentRelationType = getRelationType(\n modifiedData.relation,\n modifiedData.targetAttribute\n );\n\n if (\n currentRelationType &&\n !targetContentTypeAllowedRelations.includes(currentRelationType)\n ) {\n const relationToSet = targetContentTypeAllowedRelations[0];\n didChangeRelationTypeBecauseOfRestrictedRelation = true;\n changedRelationType = relationToSet;\n\n if (relationToSet === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n } else if (relationToSet === 'manyWay') {\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n } else {\n set(state, ['modifiedData', 'relation'], relationToSet);\n }\n }\n }\n\n let nameToSet: string;\n\n if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType !== null) {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n shouldPluralizeName(changedRelationType)\n );\n } else {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n\n shouldPluralizeName(modifiedData.relation)\n );\n }\n\n set(state, ['modifiedData', 'name'], nameToSet);\n\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n if (currentTargetAttribute === null) {\n return;\n }\n\n // Changing the target and the relation is either oneWay or manyWay\n // Case when we need to change the relation to oneWay (ex: admin user)\n if (\n didChangeRelationTypeBecauseOfRestrictedRelation &&\n changedRelationType !== null &&\n ['oneWay', 'manyWay'].includes(changedRelationType)\n ) {\n set(state, ['modifiedData', 'targetAttribute'], null);\n\n return;\n }\n\n const targetAttributeToSet = pluralize(\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(modifiedData.relation)\n );\n\n set(state, ['modifiedData', 'targetAttribute'], targetAttributeToSet);\n },\n onChangeRelationType: (state, action: PayloadAction<OnChangeRelationTypePayload>) => {\n const {\n target: { oneThatIsCreatingARelationWithAnother, value },\n } = action.payload;\n\n const currentName = state.modifiedData.name ?? '';\n\n // Switching from oneWay\n if (!['oneWay', 'manyWay'].includes(value)) {\n set(state, ['modifiedData', 'relation'], value);\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n set(\n state,\n ['modifiedData', 'name'],\n pluralize(snakeCase(nameToSlug(currentName)), shouldPluralizeName(value))\n );\n\n set(\n state,\n ['modifiedData', 'targetAttribute'],\n pluralize(\n currentTargetAttribute || snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(value)\n )\n );\n\n return;\n }\n\n if (value === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 1));\n\n return;\n }\n\n // manyWay\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 2));\n },\n resetProps: () => {\n return initialState;\n },\n resetPropsAndSetFormForAddingAnExistingCompo: (\n state,\n action: PayloadAction<ResetPropsAndSetFormForAddingAnExistingCompoPayload>\n ) => {\n const { options = {} } = action.payload;\n\n return {\n ...initialState,\n modifiedData: {\n type: 'component',\n repeatable: true,\n ...options,\n },\n };\n },\n resetPropsAndSaveCurrentData: (\n state,\n action: PayloadAction<ResetPropsAndSaveCurrentDataPayload>\n ) => {\n const { options = {} } = action.payload;\n // This is run when the user has created a new component\n const componentToCreate = state.modifiedData.componentToCreate;\n\n if (\n componentToCreate?.displayName === undefined ||\n componentToCreate.category === undefined\n ) {\n return initialState;\n }\n\n const modifiedData = {\n displayName: componentToCreate.displayName,\n type: 'component',\n repeatable: false,\n ...options,\n component: createComponentUid(componentToCreate.displayName, componentToCreate.category),\n };\n\n return {\n ...initialState,\n componentToCreate,\n modifiedData,\n isCreatingComponentWhileAddingAField: state.modifiedData.createComponent === true,\n };\n },\n resetPropsAndSetTheFormForAddingACompoToADz: (state) => {\n const createdDZ = state.modifiedData;\n const dataToSet = {\n ...createdDZ,\n createComponent: true,\n componentToCreate: { type: 'component' as const },\n };\n\n return { ...initialState, modifiedData: dataToSet };\n },\n setDataToEdit: (state, action: PayloadAction<SetDataToEditPayload>) => {\n const { data } = action.payload;\n state.modifiedData = data;\n state.initialData = data;\n state.formErrors = {};\n },\n setAttributeDataSchema: (state, action: PayloadAction<SetAttributeDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n // The errors describe the data being replaced below, so they no longer apply. Leaving\n // them behind surfaces the previous attempt's errors on a freshly picked, blank type.\n // See https://github.com/strapi/strapi/issues/20947\n state.formErrors = {};\n\n if (isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { attributeType, nameToSetForRelation, targetUid, step, options = {} } = action.payload;\n\n let dataToSet;\n\n if (attributeType === 'component') {\n if (step === '1') {\n dataToSet = {\n type: 'component',\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n } else {\n dataToSet = {\n ...options,\n type: 'component',\n repeatable: true,\n };\n }\n } else if (attributeType === 'dynamiczone') {\n dataToSet = {\n ...options,\n type: 'dynamiczone',\n components: [],\n };\n } else if (attributeType === 'text') {\n dataToSet = { ...options, type: 'string' };\n } else if (attributeType === 'number' || attributeType === 'date') {\n dataToSet = options;\n } else if (attributeType === 'media') {\n dataToSet = {\n allowedTypes: ['images', 'files', 'videos', 'audios'],\n type: 'media',\n multiple: true,\n ...options,\n };\n } else if (attributeType === 'enumeration') {\n dataToSet = { ...options, type: 'enumeration', enum: [] };\n } else if (attributeType === 'relation') {\n dataToSet = {\n name: snakeCase(nameToSetForRelation),\n relation: 'oneToOne',\n targetAttribute: null,\n target: targetUid,\n type: 'relation',\n };\n } else {\n dataToSet = { ...options, type: attributeType, default: null };\n }\n\n state.modifiedData = dataToSet;\n },\n setCustomFieldDataSchema: (state, action: PayloadAction<SetCustomFieldDataSchemaPayload>) => {\n const { payload } = action;\n\n state.formErrors = {};\n\n if (payload.isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { customField, options = {} } = payload;\n\n state.modifiedData = { ...options, type: customField.type };\n\n const allOptions = [\n ...(customField?.options?.base || []),\n ...(customField?.options?.advanced || []),\n ];\n\n const optionDefaults = allOptions.reduce(customFieldDefaultOptionsReducer, []);\n\n if (optionDefaults.length) {\n optionDefaults.forEach(({ name, defaultValue }) =>\n set(state.modifiedData, name, defaultValue)\n );\n }\n },\n setDynamicZoneDataSchema: (state, action: PayloadAction<SetDynamicZoneDataSchemaPayload>) => {\n const { attributeToEdit } = action.payload;\n state.modifiedData = attributeToEdit;\n state.initialData = attributeToEdit;\n state.formErrors = {};\n },\n setErrors: (state, action: PayloadAction<SetErrorsPayload>) => {\n state.formErrors = action.payload.errors;\n },\n },\n});\n\nexport { initialState };\nexport const { actions, reducer } = slice;\n"],"names":["initialState","formErrors","modifiedData","initialData","componentToCreate","isCreatingComponentWhileAddingAField","slice","createSlice","name","reducers","onChange","state","action","keys","value","payload","obj","hasDefaultValue","default","undefined","length","includes","previousType","type","set","onChangeRelationTarget","target","oneThatIsCreatingARelationWithAnother","selectedContentTypeFriendlyName","targetContentTypeAllowedRelations","didChangeRelationTypeBecauseOfRestrictedRelation","changedRelationType","Array","isArray","currentRelationType","getRelationType","relation","targetAttribute","relationToSet","nameToSet","pluralize","snakeCase","nameToSlug","shouldPluralizeName","currentTargetAttribute","targetAttributeToSet","shouldPluralizeTargetAttribute","onChangeRelationType","currentName","resetProps","resetPropsAndSetFormForAddingAnExistingCompo","options","repeatable","resetPropsAndSaveCurrentData","displayName","category","component","createComponentUid","createComponent","resetPropsAndSetTheFormForAddingACompoToADz","createdDZ","dataToSet","setDataToEdit","data","setAttributeDataSchema","isEditing","modifiedDataToSetForEditing","attributeType","nameToSetForRelation","targetUid","step","components","allowedTypes","multiple","enum","setCustomFieldDataSchema","customField","allOptions","base","advanced","optionDefaults","reduce","customFieldDefaultOptionsReducer","forEach","defaultValue","setDynamicZoneDataSchema","attributeToEdit","setErrors","errors","actions","reducer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reducer.mjs","sources":["../../../../admin/src/components/FormModal/reducer.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport set from 'lodash/set';\nimport snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { nameToSlug } from '../../utils/nameToSlug';\n\nimport { createComponentUid } from './utils/createUid';\nimport { customFieldDefaultOptionsReducer } from './utils/customFieldDefaultOptionsReducer';\nimport { shouldPluralizeName, shouldPluralizeTargetAttribute } from './utils/relations';\n\nimport type { FolderSelection } from '../DataManager/utils/contentStructure';\nimport type { Schema, Struct, UID } from '@strapi/types';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype FormModalError = MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n};\n\nexport type ComponentToCreateData = Record<string, unknown> & {\n type?: 'component';\n displayName?: string;\n icon?: string;\n category?: string;\n};\n\nexport type FormModalData = Record<string, unknown> & {\n allowedTypes?: string[];\n category?: string;\n component?: UID.Component;\n components?: UID.Component[];\n componentToCreate?: ComponentToCreateData;\n conditions?: unknown;\n createComponent?: boolean;\n default?: unknown;\n displayName?: string;\n draftAndPublish?: boolean;\n enum?: string[];\n folder?: FolderSelection;\n icon?: string;\n kind?: Struct.ContentTypeKind;\n multiple?: boolean;\n name?: string;\n options?: object;\n pluralName?: string;\n pluginOptions?: object;\n relation?: Schema.Attribute.RelationKind.Any;\n repeatable?: boolean;\n required?: boolean;\n singularName?: string;\n target?: string | null;\n targetAttribute?: string | null;\n type?: string;\n};\n\ntype CustomFieldOption = {\n items?: CustomFieldOption[];\n name?: string;\n defaultValue?: unknown;\n};\n\ntype CustomField = {\n type: string;\n options?: {\n base?: CustomFieldOption[];\n advanced?: CustomFieldOption[];\n };\n};\n\nexport type State = {\n formErrors: Record<string, FormModalError>;\n modifiedData: FormModalData;\n initialData: FormModalData;\n componentToCreate: ComponentToCreateData;\n isCreatingComponentWhileAddingAField: boolean;\n};\n\nconst initialState: State = {\n formErrors: {},\n modifiedData: {},\n initialData: {},\n componentToCreate: {},\n isCreatingComponentWhileAddingAField: false,\n};\n\ntype OnChangePayload = {\n keys: string[];\n value: unknown;\n};\n\ntype OnChangeRelationTargetPayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n selectedContentTypeFriendlyName: string;\n targetContentTypeAllowedRelations: Schema.Attribute.RelationKind.Any[] | null;\n value: string;\n };\n};\n\ntype OnChangeRelationTypePayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n value: Schema.Attribute.RelationKind.Any;\n };\n};\n\ntype ResetPropsAndSetFormForAddingAnExistingCompoPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype ResetPropsAndSaveCurrentDataPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype SetDataToEditPayload = {\n data: FormModalData;\n};\n\ntype SetAttributeDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n attributeType: string;\n nameToSetForRelation: string;\n targetUid: string;\n step: string | null;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetCustomFieldDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n customField: CustomField;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetDynamicZoneDataSchemaPayload = {\n attributeToEdit: FormModalData;\n};\n\ntype SetErrorsPayload = {\n errors: Record<string, FormModalError>;\n};\n\nconst slice = createSlice({\n name: 'formModal',\n initialState,\n reducers: {\n onChange: (state, action: PayloadAction<OnChangePayload>) => {\n const { keys, value } = action.payload;\n const obj = state.modifiedData;\n const hasDefaultValue = obj.default !== undefined;\n\n // There is no need to remove the default key if the default value isn't defined\n if (hasDefaultValue && keys.length === 1 && keys.includes('type')) {\n const previousType = obj.type;\n\n if (previousType !== undefined && ['date', 'datetime', 'time'].includes(previousType)) {\n // return obj.updateIn(keys, () => value).remove('default');\n delete state.modifiedData.default;\n }\n }\n\n // If the user changes the content type kind (single vs. collecton), the folder selection becomes stale and should be deleted from the pending action.\n if (keys.length === 1 && keys.includes('kind') && value !== obj.kind) {\n if (obj.folder && 'targetGroupId' in obj.folder) {\n delete state.modifiedData.folder;\n }\n }\n\n set(state, ['modifiedData', ...keys], value);\n },\n onChangeRelationTarget: (state, action: PayloadAction<OnChangeRelationTargetPayload>) => {\n const {\n target: {\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations,\n value,\n },\n } = action.payload;\n // Special case for the admin user...\n let didChangeRelationTypeBecauseOfRestrictedRelation = false;\n let changedRelationType: Schema.Attribute.RelationKind.Any | null = null;\n\n set(state, ['modifiedData', 'target'], value);\n\n const modifiedData = state.modifiedData;\n\n // Don't change the relation type if the allowed relations are not restricted\n // TODO: replace with an obj { relation: 'x', bidirctional: true|false } when BE ready\n if (Array.isArray(targetContentTypeAllowedRelations)) {\n const currentRelationType = getRelationType(\n modifiedData.relation,\n modifiedData.targetAttribute\n );\n\n if (\n currentRelationType &&\n !targetContentTypeAllowedRelations.includes(currentRelationType)\n ) {\n const relationToSet = targetContentTypeAllowedRelations[0];\n didChangeRelationTypeBecauseOfRestrictedRelation = true;\n changedRelationType = relationToSet;\n\n if (relationToSet === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n } else if (relationToSet === 'manyWay') {\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n } else {\n set(state, ['modifiedData', 'relation'], relationToSet);\n }\n }\n }\n\n let nameToSet: string;\n\n if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType !== null) {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n shouldPluralizeName(changedRelationType)\n );\n } else {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n\n shouldPluralizeName(modifiedData.relation)\n );\n }\n\n set(state, ['modifiedData', 'name'], nameToSet);\n\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n if (currentTargetAttribute === null) {\n return;\n }\n\n // Changing the target and the relation is either oneWay or manyWay\n // Case when we need to change the relation to oneWay (ex: admin user)\n if (\n didChangeRelationTypeBecauseOfRestrictedRelation &&\n changedRelationType !== null &&\n ['oneWay', 'manyWay'].includes(changedRelationType)\n ) {\n set(state, ['modifiedData', 'targetAttribute'], null);\n\n return;\n }\n\n const targetAttributeToSet = pluralize(\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(modifiedData.relation)\n );\n\n set(state, ['modifiedData', 'targetAttribute'], targetAttributeToSet);\n },\n onChangeRelationType: (state, action: PayloadAction<OnChangeRelationTypePayload>) => {\n const {\n target: { oneThatIsCreatingARelationWithAnother, value },\n } = action.payload;\n\n const currentName = state.modifiedData.name ?? '';\n\n // Switching from oneWay\n if (!['oneWay', 'manyWay'].includes(value)) {\n set(state, ['modifiedData', 'relation'], value);\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n set(\n state,\n ['modifiedData', 'name'],\n pluralize(snakeCase(nameToSlug(currentName)), shouldPluralizeName(value))\n );\n\n set(\n state,\n ['modifiedData', 'targetAttribute'],\n pluralize(\n currentTargetAttribute || snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(value)\n )\n );\n\n return;\n }\n\n if (value === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 1));\n\n return;\n }\n\n // manyWay\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 2));\n },\n resetProps: () => {\n return initialState;\n },\n resetPropsAndSetFormForAddingAnExistingCompo: (\n state,\n action: PayloadAction<ResetPropsAndSetFormForAddingAnExistingCompoPayload>\n ) => {\n const { options = {} } = action.payload;\n\n return {\n ...initialState,\n modifiedData: {\n type: 'component',\n repeatable: true,\n ...options,\n },\n };\n },\n resetPropsAndSaveCurrentData: (\n state,\n action: PayloadAction<ResetPropsAndSaveCurrentDataPayload>\n ) => {\n const { options = {} } = action.payload;\n // This is run when the user has created a new component\n const componentToCreate = state.modifiedData.componentToCreate;\n\n if (\n componentToCreate?.displayName === undefined ||\n componentToCreate.category === undefined\n ) {\n return initialState;\n }\n\n const modifiedData = {\n displayName: componentToCreate.displayName,\n type: 'component',\n repeatable: false,\n ...options,\n component: createComponentUid(componentToCreate.displayName, componentToCreate.category),\n };\n\n return {\n ...initialState,\n componentToCreate,\n modifiedData,\n isCreatingComponentWhileAddingAField: state.modifiedData.createComponent === true,\n };\n },\n resetPropsAndSetTheFormForAddingACompoToADz: (state) => {\n const createdDZ = state.modifiedData;\n const dataToSet = {\n ...createdDZ,\n createComponent: true,\n componentToCreate: { type: 'component' as const },\n };\n\n return { ...initialState, modifiedData: dataToSet };\n },\n setDataToEdit: (state, action: PayloadAction<SetDataToEditPayload>) => {\n const { data } = action.payload;\n state.modifiedData = data;\n state.initialData = data;\n state.formErrors = {};\n },\n setAttributeDataSchema: (state, action: PayloadAction<SetAttributeDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n // The errors describe the data being replaced below, so they no longer apply. Leaving\n // them behind surfaces the previous attempt's errors on a freshly picked, blank type.\n // See https://github.com/strapi/strapi/issues/20947\n state.formErrors = {};\n\n if (isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { attributeType, nameToSetForRelation, targetUid, step, options = {} } = action.payload;\n\n let dataToSet;\n\n if (attributeType === 'component') {\n if (step === '1') {\n dataToSet = {\n type: 'component',\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n } else {\n dataToSet = {\n ...options,\n type: 'component',\n repeatable: true,\n };\n }\n } else if (attributeType === 'dynamiczone') {\n dataToSet = {\n ...options,\n type: 'dynamiczone',\n components: [],\n };\n } else if (attributeType === 'text') {\n dataToSet = { ...options, type: 'string' };\n } else if (attributeType === 'number' || attributeType === 'date') {\n dataToSet = options;\n } else if (attributeType === 'media') {\n dataToSet = {\n allowedTypes: ['images', 'files', 'videos', 'audios'],\n type: 'media',\n multiple: true,\n ...options,\n };\n } else if (attributeType === 'enumeration') {\n dataToSet = { ...options, type: 'enumeration', enum: [] };\n } else if (attributeType === 'relation') {\n dataToSet = {\n name: snakeCase(nameToSetForRelation),\n relation: 'oneToOne',\n targetAttribute: null,\n target: targetUid,\n type: 'relation',\n };\n } else {\n dataToSet = { ...options, type: attributeType, default: null };\n }\n\n state.modifiedData = dataToSet;\n },\n setCustomFieldDataSchema: (state, action: PayloadAction<SetCustomFieldDataSchemaPayload>) => {\n const { payload } = action;\n\n state.formErrors = {};\n\n if (payload.isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { customField, options = {} } = payload;\n\n state.modifiedData = { ...options, type: customField.type };\n\n const allOptions = [\n ...(customField?.options?.base || []),\n ...(customField?.options?.advanced || []),\n ];\n\n const optionDefaults = allOptions.reduce(customFieldDefaultOptionsReducer, []);\n\n if (optionDefaults.length) {\n optionDefaults.forEach(({ name, defaultValue }) =>\n set(state.modifiedData, name, defaultValue)\n );\n }\n },\n setDynamicZoneDataSchema: (state, action: PayloadAction<SetDynamicZoneDataSchemaPayload>) => {\n const { attributeToEdit } = action.payload;\n state.modifiedData = attributeToEdit;\n state.initialData = attributeToEdit;\n state.formErrors = {};\n },\n setErrors: (state, action: PayloadAction<SetErrorsPayload>) => {\n state.formErrors = action.payload.errors;\n },\n },\n});\n\nexport { initialState };\nexport const { actions, reducer } = slice;\n"],"names":["initialState","formErrors","modifiedData","initialData","componentToCreate","isCreatingComponentWhileAddingAField","slice","createSlice","name","reducers","onChange","state","action","keys","value","payload","obj","hasDefaultValue","default","undefined","length","includes","previousType","type","kind","folder","set","onChangeRelationTarget","target","oneThatIsCreatingARelationWithAnother","selectedContentTypeFriendlyName","targetContentTypeAllowedRelations","didChangeRelationTypeBecauseOfRestrictedRelation","changedRelationType","Array","isArray","currentRelationType","getRelationType","relation","targetAttribute","relationToSet","nameToSet","pluralize","snakeCase","nameToSlug","shouldPluralizeName","currentTargetAttribute","targetAttributeToSet","shouldPluralizeTargetAttribute","onChangeRelationType","currentName","resetProps","resetPropsAndSetFormForAddingAnExistingCompo","options","repeatable","resetPropsAndSaveCurrentData","displayName","category","component","createComponentUid","createComponent","resetPropsAndSetTheFormForAddingACompoToADz","createdDZ","dataToSet","setDataToEdit","data","setAttributeDataSchema","isEditing","modifiedDataToSetForEditing","attributeType","nameToSetForRelation","targetUid","step","components","allowedTypes","multiple","enum","setCustomFieldDataSchema","customField","allOptions","base","advanced","optionDefaults","reduce","customFieldDefaultOptionsReducer","forEach","defaultValue","setDynamicZoneDataSchema","attributeToEdit","setErrors","errors","actions","reducer"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ var ee = require('@strapi/admin/strapi-admin/ee');
|
|
|
7
7
|
var reactIntl = require('react-intl');
|
|
8
8
|
var reactRouterDom = require('react-router-dom');
|
|
9
9
|
var Chat = require('../../components/AIChat/Chat.js');
|
|
10
|
-
var
|
|
10
|
+
var usePrefetchAIToken = require('../../components/AIChat/hooks/usePrefetchAIToken.js');
|
|
11
11
|
var ChatProvider = require('../../components/AIChat/providers/ChatProvider.js');
|
|
12
12
|
var AutoReloadOverlayBlocker = require('../../components/AutoReloadOverlayBlocker.js');
|
|
13
13
|
var ContentTypeBuilderNav = require('../../components/ContentTypeBuilderNav/ContentTypeBuilderNav.js');
|
|
@@ -33,10 +33,7 @@ const App = ()=>{
|
|
|
33
33
|
const isAIEnabled = ee.useAIAvailability();
|
|
34
34
|
const state = strapiAdmin.useGuidedTour('ContentTypeBuilderApp', (s)=>s.state);
|
|
35
35
|
const dispatch = strapiAdmin.useGuidedTour('ContentTypeBuilderApp', (s)=>s.dispatch);
|
|
36
|
-
|
|
37
|
-
React.useEffect(()=>{
|
|
38
|
-
aiClient.prefetchAIToken();
|
|
39
|
-
}, []);
|
|
36
|
+
usePrefetchAIToken.usePrefetchAIToken();
|
|
40
37
|
// Set tour type based on AI availability when the app loads
|
|
41
38
|
React.useEffect(()=>{
|
|
42
39
|
const tourType = isAIEnabled ? 'ContentTypeBuilderAI' : 'ContentTypeBuilderNoAI';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect } from 'react';\n\nimport { Page, Layouts, useAppInfo, useGuidedTour } from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { Chat } from '../../components/AIChat/Chat';\nimport {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect } from 'react';\n\nimport { Page, Layouts, useAppInfo, useGuidedTour } from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { Chat } from '../../components/AIChat/Chat';\nimport { usePrefetchAIToken } from '../../components/AIChat/hooks/usePrefetchAIToken';\nimport { ChatProvider } from '../../components/AIChat/providers/ChatProvider';\nimport { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker';\nimport { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav';\nimport { CTBSessionProvider } from '../../components/CTBSession/CTBSessionProvider';\nimport DataManagerProvider from '../../components/DataManager/DataManagerProvider';\nimport { ExitPrompt } from '../../components/ExitPrompt';\nimport { FormModal } from '../../components/FormModal/FormModal';\nimport { FormModalNavigationProvider } from '../../components/FormModalNavigation/FormModalNavigationProvider';\nimport { PERMISSIONS } from '../../constants';\nimport { pluginId } from '../../pluginId';\nimport { EmptyState } from '../ListView/EmptyState';\n\nconst ListView = lazy(() => import('../ListView/ListView'));\n\nconst App = () => {\n const { formatMessage } = useIntl();\n const title = formatMessage({\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content Types Builder',\n });\n\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const isAIEnabled = useAIAvailability();\n const state = useGuidedTour('ContentTypeBuilderApp', (s) => s.state);\n const dispatch = useGuidedTour('ContentTypeBuilderApp', (s) => s.dispatch);\n\n usePrefetchAIToken();\n\n // Set tour type based on AI availability when the app loads\n useEffect(() => {\n const tourType = isAIEnabled ? 'ContentTypeBuilderAI' : 'ContentTypeBuilderNoAI';\n const currentTourType = state.tours.contentTypeBuilder.tourType;\n\n if (currentTourType !== tourType) {\n dispatch({\n type: 'set_tour_type',\n payload: { tourName: 'contentTypeBuilder', tourType },\n });\n }\n }, [isAIEnabled, state.tours.contentTypeBuilder.tourType, dispatch]);\n\n return (\n <Page.Protect permissions={PERMISSIONS.main}>\n <Page.Title>{title}</Page.Title>\n <AutoReloadOverlayBlockerProvider>\n <CTBSessionProvider>\n <FormModalNavigationProvider>\n <DataManagerProvider>\n <ExitPrompt />\n <ChatProvider>\n <>\n {autoReload && <FormModal />}\n <Layouts.Root sideNav={<ContentTypeBuilderNav />}>\n <Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route path=\"content-types/create-content-type\" element={<EmptyState />} />\n <Route path=\"content-types/:contentTypeUid\" element={<ListView />} />\n <Route\n path={`component-categories/:categoryUid/:componentUid`}\n element={<ListView />}\n />\n <Route path=\"*\" element={<ListView />} />\n </Routes>\n </Suspense>\n </Layouts.Root>\n <Chat />\n </>\n </ChatProvider>\n </DataManagerProvider>\n </FormModalNavigationProvider>\n </CTBSessionProvider>\n </AutoReloadOverlayBlockerProvider>\n </Page.Protect>\n );\n};\n\nexport default App;\n"],"names":["ListView","lazy","App","formatMessage","useIntl","title","id","pluginId","defaultMessage","autoReload","useAppInfo","state","isAIEnabled","useAIAvailability","useGuidedTour","s","dispatch","usePrefetchAIToken","useEffect","tourType","currentTourType","tours","contentTypeBuilder","type","payload","tourName","_jsxs","Page","Protect","permissions","PERMISSIONS","main","_jsx","Title","AutoReloadOverlayBlockerProvider","CTBSessionProvider","FormModalNavigationProvider","DataManagerProvider","ExitPrompt","ChatProvider","_Fragment","FormModal","Layouts","Root","sideNav","ContentTypeBuilderNav","Suspense","fallback","Loading","Routes","Route","path","element","EmptyState","Chat"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { useAIAvailability } from '@strapi/admin/strapi-admin/ee';
|
|
|
5
5
|
import { useIntl } from 'react-intl';
|
|
6
6
|
import { Routes, Route } from 'react-router-dom';
|
|
7
7
|
import { Chat } from '../../components/AIChat/Chat.mjs';
|
|
8
|
-
import {
|
|
8
|
+
import { usePrefetchAIToken } from '../../components/AIChat/hooks/usePrefetchAIToken.mjs';
|
|
9
9
|
import { ChatProvider } from '../../components/AIChat/providers/ChatProvider.mjs';
|
|
10
10
|
import { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker.mjs';
|
|
11
11
|
import { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs';
|
|
@@ -29,10 +29,7 @@ const App = ()=>{
|
|
|
29
29
|
const isAIEnabled = useAIAvailability();
|
|
30
30
|
const state = useGuidedTour('ContentTypeBuilderApp', (s)=>s.state);
|
|
31
31
|
const dispatch = useGuidedTour('ContentTypeBuilderApp', (s)=>s.dispatch);
|
|
32
|
-
|
|
33
|
-
useEffect(()=>{
|
|
34
|
-
prefetchAIToken();
|
|
35
|
-
}, []);
|
|
32
|
+
usePrefetchAIToken();
|
|
36
33
|
// Set tour type based on AI availability when the app loads
|
|
37
34
|
useEffect(()=>{
|
|
38
35
|
const tourType = isAIEnabled ? 'ContentTypeBuilderAI' : 'ContentTypeBuilderNoAI';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect } from 'react';\n\nimport { Page, Layouts, useAppInfo, useGuidedTour } from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { Chat } from '../../components/AIChat/Chat';\nimport {
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect } from 'react';\n\nimport { Page, Layouts, useAppInfo, useGuidedTour } from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { Chat } from '../../components/AIChat/Chat';\nimport { usePrefetchAIToken } from '../../components/AIChat/hooks/usePrefetchAIToken';\nimport { ChatProvider } from '../../components/AIChat/providers/ChatProvider';\nimport { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker';\nimport { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav';\nimport { CTBSessionProvider } from '../../components/CTBSession/CTBSessionProvider';\nimport DataManagerProvider from '../../components/DataManager/DataManagerProvider';\nimport { ExitPrompt } from '../../components/ExitPrompt';\nimport { FormModal } from '../../components/FormModal/FormModal';\nimport { FormModalNavigationProvider } from '../../components/FormModalNavigation/FormModalNavigationProvider';\nimport { PERMISSIONS } from '../../constants';\nimport { pluginId } from '../../pluginId';\nimport { EmptyState } from '../ListView/EmptyState';\n\nconst ListView = lazy(() => import('../ListView/ListView'));\n\nconst App = () => {\n const { formatMessage } = useIntl();\n const title = formatMessage({\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content Types Builder',\n });\n\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const isAIEnabled = useAIAvailability();\n const state = useGuidedTour('ContentTypeBuilderApp', (s) => s.state);\n const dispatch = useGuidedTour('ContentTypeBuilderApp', (s) => s.dispatch);\n\n usePrefetchAIToken();\n\n // Set tour type based on AI availability when the app loads\n useEffect(() => {\n const tourType = isAIEnabled ? 'ContentTypeBuilderAI' : 'ContentTypeBuilderNoAI';\n const currentTourType = state.tours.contentTypeBuilder.tourType;\n\n if (currentTourType !== tourType) {\n dispatch({\n type: 'set_tour_type',\n payload: { tourName: 'contentTypeBuilder', tourType },\n });\n }\n }, [isAIEnabled, state.tours.contentTypeBuilder.tourType, dispatch]);\n\n return (\n <Page.Protect permissions={PERMISSIONS.main}>\n <Page.Title>{title}</Page.Title>\n <AutoReloadOverlayBlockerProvider>\n <CTBSessionProvider>\n <FormModalNavigationProvider>\n <DataManagerProvider>\n <ExitPrompt />\n <ChatProvider>\n <>\n {autoReload && <FormModal />}\n <Layouts.Root sideNav={<ContentTypeBuilderNav />}>\n <Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route path=\"content-types/create-content-type\" element={<EmptyState />} />\n <Route path=\"content-types/:contentTypeUid\" element={<ListView />} />\n <Route\n path={`component-categories/:categoryUid/:componentUid`}\n element={<ListView />}\n />\n <Route path=\"*\" element={<ListView />} />\n </Routes>\n </Suspense>\n </Layouts.Root>\n <Chat />\n </>\n </ChatProvider>\n </DataManagerProvider>\n </FormModalNavigationProvider>\n </CTBSessionProvider>\n </AutoReloadOverlayBlockerProvider>\n </Page.Protect>\n );\n};\n\nexport default App;\n"],"names":["ListView","lazy","App","formatMessage","useIntl","title","id","pluginId","defaultMessage","autoReload","useAppInfo","state","isAIEnabled","useAIAvailability","useGuidedTour","s","dispatch","usePrefetchAIToken","useEffect","tourType","currentTourType","tours","contentTypeBuilder","type","payload","tourName","_jsxs","Page","Protect","permissions","PERMISSIONS","main","_jsx","Title","AutoReloadOverlayBlockerProvider","CTBSessionProvider","FormModalNavigationProvider","DataManagerProvider","ExitPrompt","ChatProvider","_Fragment","FormModal","Layouts","Root","sideNav","ContentTypeBuilderNav","Suspense","fallback","Loading","Routes","Route","path","element","EmptyState","Chat"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const usePrefetchAIToken: () => void;
|
package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type DeleteFolderMode = 'only' | 'withContent';
|
|
2
|
+
interface DeleteFolderDialogProps {
|
|
3
|
+
counts: {
|
|
4
|
+
contentTypes: number;
|
|
5
|
+
subfolders: number;
|
|
6
|
+
preservedContentTypes: number;
|
|
7
|
+
};
|
|
8
|
+
conflictingFolderNames: string[];
|
|
9
|
+
onOpenChange: (open: boolean) => void;
|
|
10
|
+
mode: DeleteFolderMode;
|
|
11
|
+
onConfirm: () => void;
|
|
12
|
+
folderName: string;
|
|
13
|
+
open: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare const DeleteFolderDialog: ({ onOpenChange, folderName, onConfirm, counts, conflictingFolderNames, open, mode, }: DeleteFolderDialogProps) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export {};
|
package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface FolderNameFieldProps {
|
|
2
|
+
defaultValue: string;
|
|
3
|
+
depth: number;
|
|
4
|
+
/**
|
|
5
|
+
* Function to validate a draft entry. Return an error message to block acceptance, or `undefined` if the draft is acceptable.
|
|
6
|
+
*/
|
|
7
|
+
validate?: (name: string) => string | undefined;
|
|
8
|
+
onSubmit: (name: string) => void;
|
|
9
|
+
onCancel: () => void;
|
|
10
|
+
}
|
|
11
|
+
export declare const FolderNameField: ({ defaultValue, onSubmit, onCancel, validate, depth, }: FolderNameFieldProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export {};
|
package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SectionKey } from '../../../DataManager/utils/contentStructure';
|
|
2
|
+
import type { ContentTypeLink } from '../../lib/buildFolderTree';
|
|
3
|
+
interface FolderNavSectionProps {
|
|
4
|
+
onCreateContentType: () => void;
|
|
5
|
+
createTypeLabel: string;
|
|
6
|
+
searchValue: string;
|
|
7
|
+
/** Guided-tour section id ('models' | 'singleTypes'). */
|
|
8
|
+
sectionId: string;
|
|
9
|
+
section: SectionKey;
|
|
10
|
+
title: string;
|
|
11
|
+
links: ContentTypeLink[];
|
|
12
|
+
}
|
|
13
|
+
export declare const FolderNavSection: ({ onCreateContentType, createTypeLabel, searchValue, sectionId, section, title, links, }: FolderNavSectionProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { SectionKey } from '../../../DataManager/utils/contentStructure';
|
|
2
|
+
import type { FolderNode } from '../../lib/buildFolderTree';
|
|
3
|
+
import type { FlatItem } from '../../lib/flatModel';
|
|
4
|
+
export interface TreeHandlers {
|
|
5
|
+
section: SectionKey;
|
|
6
|
+
canEdit: boolean;
|
|
7
|
+
/** Whether a folder can be collapsed / uncollapsed. */
|
|
8
|
+
canToggle?: boolean;
|
|
9
|
+
editingId: string | null;
|
|
10
|
+
isCollapsed: (id: string) => boolean;
|
|
11
|
+
onToggle: (id: string) => void;
|
|
12
|
+
onBeginRename: (id: string) => void;
|
|
13
|
+
onSubmitRename: (id: string, name: string) => void;
|
|
14
|
+
onCancelRename: () => void;
|
|
15
|
+
onDeleteFolder: (node: FolderNode) => void;
|
|
16
|
+
onDeleteFolderAndContent: (node: FolderNode) => void;
|
|
17
|
+
validateFolderName: (params: {
|
|
18
|
+
name: string;
|
|
19
|
+
parentId: string | null;
|
|
20
|
+
excludeId?: string;
|
|
21
|
+
}) => string | undefined;
|
|
22
|
+
dropTargetId: string | null;
|
|
23
|
+
dropLine: {
|
|
24
|
+
anchorId: string;
|
|
25
|
+
edge: 'top' | 'bottom';
|
|
26
|
+
depth: number;
|
|
27
|
+
} | null;
|
|
28
|
+
}
|
|
29
|
+
export declare const SortableTreeRow: ({ item, handlers }: {
|
|
30
|
+
item: FlatItem;
|
|
31
|
+
handlers: TreeHandlers;
|
|
32
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
/**
|
|
34
|
+
* This is rendered in place of the actual row when it is being dragged.
|
|
35
|
+
*/
|
|
36
|
+
export declare const RowOverlay: ({ item }: {
|
|
37
|
+
item: FlatItem;
|
|
38
|
+
}) => import("react/jsx-runtime").JSX.Element;
|