@strapi/content-type-builder 5.52.3 → 5.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +2 -1
  2. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
  3. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs +2 -1
  4. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -1
  5. package/dist/admin/components/DataManager/reducer.js +3 -2
  6. package/dist/admin/components/DataManager/reducer.js.map +1 -1
  7. package/dist/admin/components/DataManager/reducer.mjs +3 -2
  8. package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
  9. package/dist/admin/components/FormModal/attributes/attributeOptions.js +1 -1
  10. package/dist/admin/components/FormModal/attributes/attributeOptions.js.map +1 -1
  11. package/dist/admin/components/FormModal/attributes/attributeOptions.mjs +1 -1
  12. package/dist/admin/components/FormModal/attributes/attributeOptions.mjs.map +1 -1
  13. package/dist/admin/src/components/FormModal/attributes/form.d.ts +1 -1
  14. package/dist/admin/src/utils/applyPrivateSearchDefault.d.ts +7 -0
  15. package/dist/admin/src/utils/conditions.d.ts +1 -1
  16. package/dist/admin/translations/en.json.js +1 -1
  17. package/dist/admin/translations/en.json.mjs +1 -1
  18. package/dist/admin/utils/applyPrivateSearchDefault.js +27 -0
  19. package/dist/admin/utils/applyPrivateSearchDefault.js.map +1 -0
  20. package/dist/admin/utils/applyPrivateSearchDefault.mjs +25 -0
  21. package/dist/admin/utils/applyPrivateSearchDefault.mjs.map +1 -0
  22. package/dist/server/controllers/validation/schema.js +2 -0
  23. package/dist/server/controllers/validation/schema.js.map +1 -1
  24. package/dist/server/controllers/validation/schema.mjs +2 -0
  25. package/dist/server/controllers/validation/schema.mjs.map +1 -1
  26. package/dist/server/services/schema-builder/schema-handler.js +3 -1
  27. package/dist/server/services/schema-builder/schema-handler.js.map +1 -1
  28. package/dist/server/services/schema-builder/schema-handler.mjs +3 -1
  29. package/dist/server/services/schema-builder/schema-handler.mjs.map +1 -1
  30. package/dist/server/src/controllers/validation/schema.d.ts +576 -0
  31. package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
  32. package/dist/server/src/services/schema-builder/schema-handler.d.ts.map +1 -1
  33. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.mjs","sources":["../../../../admin/src/components/DataManager/reducer.ts"],"sourcesContent":["import { PayloadAction } from '@reduxjs/toolkit';\nimport merge from 'lodash/merge';\nimport omit from 'lodash/omit';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { makeUnique } from '../../utils/makeUnique';\n\nimport { createUndoRedoSlice } from './undoRedo';\n\nimport type {\n Components,\n ContentTypes,\n ContentType,\n Component,\n Status,\n AnyAttribute,\n} from '../../types';\nimport type { Internal, Schema, Struct, UID } from '@strapi/types';\n\nexport interface DataManagerStateType {\n components: Components;\n initialComponents: Components;\n contentTypes: ContentTypes;\n initialContentTypes: ContentTypes;\n reservedNames: {\n models: string[];\n attributes: string[];\n };\n isLoading: boolean;\n [key: string]: unknown;\n}\n\nconst initialState: DataManagerStateType = {\n components: {},\n contentTypes: {},\n initialComponents: {},\n initialContentTypes: {},\n reservedNames: {\n models: [],\n attributes: [],\n },\n isLoading: true,\n};\n\nconst ONE_SIDE_RELATIONS = ['oneWay', 'manyWay'];\n\ntype AttributeMutation = AnyAttribute & {\n createComponent?: unknown;\n};\n\ntype PluginOptions = Record<string, unknown>;\n\nconst getOppositeRelation = (originalRelation?: Schema.Attribute.RelationKind.Any) => {\n if (originalRelation === 'manyToOne') {\n return 'oneToMany';\n }\n\n if (originalRelation === 'oneToMany') {\n return 'manyToOne';\n }\n\n return originalRelation;\n};\n\nconst findAttributeIndex = (type: ContentType | Component, attributeToFind?: string) => {\n return type.attributes.findIndex(({ name }: { name: string }) => name === attributeToFind);\n};\n\ntype InitPayload = {\n components: Record<string, Component>;\n contentTypes: Record<string, ContentType>;\n reservedNames: DataManagerStateType['reservedNames'];\n};\n\ntype AddAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype AddCreateComponentToDynamicZonePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n dynamicZoneTarget: string;\n componentsToAdd: Internal.UID.Component[];\n};\n\ntype AddCustomFieldAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype ChangeDynamicZoneComponentsPayload = {\n dynamicZoneTarget: string;\n newComponents: Internal.UID.Component[];\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype CreateComponentSchemaPayload = {\n uid: string;\n data: {\n icon?: string;\n displayName: string;\n };\n componentCategory: string;\n};\n\ntype CreateSchemaPayload = {\n uid: string;\n data: {\n displayName: string;\n singularName: string;\n pluralName: string;\n kind: Struct.ContentTypeKind;\n draftAndPublish: boolean;\n pluginOptions: PluginOptions;\n };\n};\n\ntype EditAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n name: string;\n};\n\ntype EditCustomFieldAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n name: string;\n};\n\ntype RemoveComponentFromDynamicZonePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n dzName: string;\n componentToRemoveIndex: number;\n};\n\ntype RemoveFieldPayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n attributeToRemoveName: string;\n};\n\ntype UpdateComponentSchemaPayload = {\n data: {\n icon?: string;\n displayName: string;\n };\n uid: Internal.UID.Component;\n};\n\ntype UpdateComponentUIDPayload = {\n uid: Internal.UID.Component;\n newComponentUID: Internal.UID.Component;\n};\n\ntype UpdateSchemaPayload = {\n data: {\n displayName: string;\n kind: Struct.ContentTypeKind;\n draftAndPublish: boolean;\n pluginOptions: PluginOptions;\n };\n uid: string;\n};\n\ntype MoveAttributePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n from: number;\n to: number;\n};\n\nconst getType = (\n state: DataManagerStateType,\n {\n forTarget,\n targetUid,\n }: {\n forTarget: Struct.ModelType;\n targetUid: string;\n }\n) => {\n return forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];\n};\n\n// TODO: use initial state when chnaging back to the initial state without knowing\nconst setStatus = (type: ContentType | Component, status: Status) => {\n switch (type.status) {\n case 'NEW':\n case 'REMOVED': {\n break;\n }\n default: {\n type.status = status;\n }\n }\n};\n\nconst getNewStatus = (oldStatus: Status | undefined, newStatus: Status) => {\n if (oldStatus === 'NEW' || oldStatus === 'REMOVED') {\n return oldStatus;\n }\n\n return newStatus;\n};\n\nconst setAttributeStatus = (attribute: { status?: Status }, status: Status) => {\n attribute.status = getNewStatus(attribute.status, status);\n};\n\nconst createAttribute = (properties: Record<string, unknown>): AnyAttribute => {\n return {\n ...properties,\n status: 'NEW',\n } as AnyAttribute;\n};\n\nconst setAttributeAt = (type: ContentType | Component, index: number, attribute: AnyAttribute) => {\n const previousAttribute = type.attributes[index];\n\n const newStatus = getNewStatus(previousAttribute.status, 'CHANGED');\n\n type.attributes[index] = {\n ...attribute,\n status: newStatus,\n };\n\n setStatus(type, 'CHANGED');\n};\n\nconst pushAttribute = (type: ContentType | Component, attribute: AnyAttribute) => {\n type.attributes.push(attribute);\n setStatus(type, 'CHANGED');\n};\n\nconst removeAttributeAt = (type: ContentType | Component, index: number) => {\n const attr = type.attributes[index];\n\n setStatus(type, 'CHANGED');\n\n if (attr.status === 'NEW') {\n type.attributes.splice(index, 1);\n } else {\n setAttributeStatus(attr, 'REMOVED');\n }\n};\n\nconst replaceAttributeAt = (\n type: ContentType | Component,\n index: number,\n attribute: AnyAttribute\n) => {\n type.attributes[index] = attribute;\n setStatus(type, 'CHANGED');\n};\n\nconst removeAttributeByName = (type: ContentType | Component, name: string) => {\n const idx = type.attributes.findIndex((attr) => attr.name === name);\n\n const attr = type.attributes[idx];\n\n setStatus(type, 'CHANGED');\n\n if (attr.status === 'NEW') {\n type.attributes.splice(idx, 1);\n } else {\n setAttributeStatus(attr, 'REMOVED');\n }\n};\n\nconst updateType = (type: ContentType | Component, data: Record<string, unknown>) => {\n merge(type, data);\n setStatus(type, 'CHANGED');\n};\n\nconst slice = createUndoRedoSlice(\n {\n name: 'data-manager',\n initialState,\n reducers: {\n init: (state, action: PayloadAction<InitPayload>) => {\n const { components, contentTypes, reservedNames } = action.payload;\n\n state.components = components;\n state.initialComponents = components;\n state.initialContentTypes = contentTypes;\n state.contentTypes = contentTypes;\n state.reservedNames = reservedNames;\n state.isLoading = false;\n },\n createComponentSchema: (state, action: PayloadAction<CreateComponentSchemaPayload>) => {\n const { uid, data, componentCategory } = action.payload;\n\n const newSchema: Component = {\n uid: uid as Internal.UID.Component,\n status: 'NEW',\n category: componentCategory,\n modelName: data.displayName,\n globalId: data.displayName,\n info: {\n icon: data.icon,\n displayName: data.displayName,\n },\n attributes: [],\n modelType: 'component',\n };\n\n state.components[uid as string] = newSchema;\n },\n createSchema: (state, action: PayloadAction<CreateSchemaPayload>) => {\n const { uid, data } = action.payload;\n\n const { displayName, singularName, pluralName, kind, draftAndPublish, pluginOptions } =\n data;\n\n const newSchema: ContentType = {\n uid: uid as Internal.UID.ContentType,\n status: 'NEW',\n visible: true,\n modelType: 'contentType',\n restrictRelationsTo: null,\n attributes: [],\n kind,\n modelName: displayName,\n globalId: displayName,\n options: {\n draftAndPublish,\n },\n info: {\n displayName,\n singularName,\n pluralName,\n },\n pluginOptions,\n };\n\n state.contentTypes[uid] = newSchema;\n },\n addAttribute: (state, action: PayloadAction<AddAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attribute = createAttribute(omit(attributeToSet, 'createComponent'));\n\n if (attribute.type === 'relation') {\n const target = attribute.target;\n const targetAttribute = attribute.targetAttribute || null;\n const relation = attribute.relation;\n const relationType = getRelationType(relation, targetAttribute);\n\n const isBidirectionalRelation =\n relationType !== undefined && !['oneWay', 'manyWay'].includes(relationType);\n\n if (isBidirectionalRelation) {\n const oppositeAttribute = createAttribute({\n name: targetAttribute,\n relation: getOppositeRelation(relationType),\n target: type.uid,\n targetAttribute: attribute.name,\n type: 'relation',\n private: attribute.private,\n });\n\n const targetType = getType(state, { forTarget, targetUid: target });\n pushAttribute(targetType, oppositeAttribute);\n }\n }\n\n pushAttribute(type, attribute);\n setStatus(type, 'CHANGED');\n },\n moveAttribute: (state, action: PayloadAction<MoveAttributePayload>) => {\n const { forTarget, targetUid, from, to } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attribute = type.attributes[from];\n type.attributes.splice(from, 1);\n type.attributes.splice(to, 0, attribute);\n setStatus(type, 'CHANGED');\n },\n addCustomFieldAttribute: (state, action: PayloadAction<AddCustomFieldAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n pushAttribute(type, createAttribute(attributeToSet));\n },\n addCreatedComponentToDynamicZone: (\n state,\n action: PayloadAction<AddCreateComponentToDynamicZonePayload>\n ) => {\n const { dynamicZoneTarget, componentsToAdd, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n\n componentsToAdd.forEach((componentUid: Internal.UID.Component) => {\n attr.components.push(componentUid);\n });\n\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n setStatus(type, 'CHANGED');\n },\n changeDynamicZoneComponents: (\n state,\n action: PayloadAction<ChangeDynamicZoneComponentsPayload>\n ) => {\n const { dynamicZoneTarget, newComponents, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n const currentDZComponents = attr.components;\n\n const updatedComponents = makeUnique([...currentDZComponents, ...newComponents]);\n\n setStatus(type, 'CHANGED');\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n attr.components = updatedComponents;\n },\n editAttribute: (state, action: PayloadAction<EditAttributePayload>) => {\n const { name, attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const initialAttributeIndex = findAttributeIndex(type, name);\n\n if (initialAttributeIndex === -1) {\n return;\n }\n\n const previousAttribute = type.attributes[initialAttributeIndex];\n\n setAttributeAt(type, initialAttributeIndex, attributeToSet as AnyAttribute);\n\n if (previousAttribute.type !== attributeToSet.type) {\n return;\n }\n\n if (previousAttribute.type !== 'relation' || attributeToSet.type !== 'relation') {\n return;\n }\n\n const previousTarget = getType(state, {\n forTarget: 'contentType',\n targetUid: previousAttribute.target,\n });\n const newTarget = getType(state, {\n forTarget: 'contentType',\n targetUid: attributeToSet.target,\n });\n\n const previousTargetAttributeIndex = findAttributeIndex(\n previousTarget,\n previousAttribute.targetAttribute ?? ''\n );\n const previousTargetAttribute =\n previousTargetAttributeIndex !== -1\n ? previousTarget.attributes[previousTargetAttributeIndex]\n : undefined;\n\n // remove old targetAttribute\n if (previousAttribute.targetAttribute) {\n removeAttributeByName(previousTarget, previousAttribute.targetAttribute);\n }\n\n const newRelationType = getRelationType(\n attributeToSet.relation,\n attributeToSet.targetAttribute\n );\n const isBidirectionnal =\n newRelationType !== undefined && !ONE_SIDE_RELATIONS.includes(newRelationType);\n\n if (isBidirectionnal) {\n const newTargetAttribute = {\n name: attributeToSet.targetAttribute,\n type: 'relation',\n relation: getOppositeRelation(attributeToSet.relation),\n targetAttribute: attributeToSet.name,\n target: type.uid,\n private: previousAttribute.private ?? attributeToSet.private,\n pluginOptions: previousAttribute.pluginOptions ?? attributeToSet.pluginOptions,\n ...(previousTarget.uid === newTarget.uid && previousTargetAttribute?.conditions\n ? { conditions: previousTargetAttribute.conditions }\n : {}),\n status: 'CHANGED',\n } as AnyAttribute;\n\n // create or recreate(at old index) targetAttribute\n if (previousTargetAttributeIndex !== -1 && previousTarget.uid === newTarget.uid) {\n // re-create at previousIdx if possible\n replaceAttributeAt(newTarget, previousTargetAttributeIndex, newTargetAttribute);\n } else {\n pushAttribute(newTarget, {\n ...newTargetAttribute,\n status: 'NEW',\n });\n }\n }\n },\n editCustomFieldAttribute: (state, action: PayloadAction<EditCustomFieldAttributePayload>) => {\n const { forTarget, targetUid, name, attributeToSet } = action.payload;\n\n const initialAttributeName = name;\n const type = getType(state, { forTarget, targetUid });\n\n const initialAttributeIndex = findAttributeIndex(type, initialAttributeName);\n\n setAttributeAt(type, initialAttributeIndex, attributeToSet as AnyAttribute);\n },\n reloadPlugin: () => {\n return initialState;\n },\n removeComponentFromDynamicZone: (\n state,\n action: PayloadAction<RemoveComponentFromDynamicZonePayload>\n ) => {\n const { dzName, componentToRemoveIndex, forTarget, targetUid } = action.payload;\n\n const type =\n forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];\n\n if (!type) {\n return;\n }\n\n const dzAttributeIndex = findAttributeIndex(type, dzName);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n\n setStatus(type, 'CHANGED');\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n attr.components.splice(componentToRemoveIndex, 1);\n },\n removeField: (state, action: PayloadAction<RemoveFieldPayload>) => {\n const { forTarget, targetUid, attributeToRemoveName } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attributeToRemoveIndex = findAttributeIndex(type, attributeToRemoveName);\n const attribute = type.attributes[attributeToRemoveIndex];\n\n if (attribute.type === 'relation') {\n const { target, relation, targetAttribute: targetAttributeName } = attribute;\n const relationType = getRelationType(relation, targetAttributeName);\n\n const isBidirectionnal = !ONE_SIDE_RELATIONS.includes(relationType!);\n\n if (isBidirectionnal && targetAttributeName) {\n const targetContentType = getType(state, { forTarget, targetUid: target });\n const targetAttributeIndex = findAttributeIndex(targetContentType, targetAttributeName);\n\n removeAttributeAt(targetContentType, targetAttributeIndex);\n }\n }\n\n // Find all uid fields that have the targetField set to the field we are removing\n type.attributes.forEach((attribute) => {\n if (attribute.type === 'uid') {\n if (attribute.targetField === attributeToRemoveName) {\n delete attribute.targetField;\n }\n }\n });\n\n removeAttributeAt(type, attributeToRemoveIndex);\n },\n // only edits a component in practice\n updateComponentSchema: (state, action: PayloadAction<UpdateComponentSchemaPayload>) => {\n const { data, uid } = action.payload;\n\n const type = state.components[uid];\n if (!type) {\n return;\n }\n\n updateType(type, {\n info: {\n displayName: data.displayName,\n icon: data.icon,\n },\n });\n },\n updateComponentUid: (state, action: PayloadAction<UpdateComponentUIDPayload>) => {\n const { newComponentUID, uid } = action.payload;\n\n const type = state.components[uid];\n if (!type || type.status !== 'NEW') {\n return;\n }\n\n if (newComponentUID !== uid) {\n const newType = { ...type, uid: newComponentUID };\n state.components[newComponentUID] = newType;\n delete state.components[uid];\n\n // update the uid in the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'dynamiczone') {\n const newComponents = attribute.components.map((component: UID.Component) => {\n if (component === uid) {\n return newComponentUID;\n }\n\n return component;\n });\n\n attribute.components = newComponents;\n }\n });\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n attribute.component = newComponentUID;\n }\n });\n });\n\n // update the uid in the other components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n attribute.component = newComponentUID;\n }\n });\n });\n }\n },\n updateSchema: (state, action: PayloadAction<UpdateSchemaPayload>) => {\n const { data, uid } = action.payload;\n\n const { displayName, kind, draftAndPublish, pluginOptions } = data;\n\n const type = state.contentTypes[uid];\n if (!type) {\n return;\n }\n\n updateType(type, {\n info: {\n displayName,\n },\n kind,\n options: {\n draftAndPublish,\n },\n pluginOptions,\n });\n },\n deleteComponent: (state, action: PayloadAction<Internal.UID.Component>) => {\n const uid = action.payload;\n\n // remove the compo from the components\n if (state.components[uid].status === 'NEW') {\n delete state.components[uid];\n } else {\n setStatus(state.components[uid], 'REMOVED');\n }\n\n // remove the compo from the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n // remove from dynamic zones\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'dynamiczone') {\n const newComponents = attribute.components.filter(\n (component: unknown) => component !== uid\n );\n\n attribute.components = newComponents;\n }\n });\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n removeAttributeByName(contentType, attribute.name);\n }\n });\n });\n\n // remove the compo from other components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n removeAttributeByName(component, attribute.name);\n }\n });\n });\n },\n deleteContentType: (state, action: PayloadAction<Internal.UID.ContentType>) => {\n const uid = action.payload;\n const type = state.contentTypes[uid];\n\n // just drop new content types\n if (type.status === 'NEW') {\n delete state.contentTypes[uid];\n } else {\n setStatus(type, 'REMOVED');\n }\n\n // remove the content type from the components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'relation' && attribute.target === uid) {\n removeAttributeByName(component, attribute.name);\n }\n });\n });\n\n // remove the content type from the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'relation' && attribute.target === uid) {\n removeAttributeByName(contentType, attribute.name);\n }\n });\n });\n },\n\n applyChange(\n state,\n reducerAction: PayloadAction<{\n action: 'add' | 'update' | 'delete';\n schema: ContentType | Component;\n }>\n ) {\n const { action, schema } = reducerAction.payload;\n\n switch (action) {\n case 'add':\n {\n const uid = schema.uid;\n\n if (schema.modelType === 'component') {\n state.components[uid] = schema;\n } else {\n state.contentTypes[uid] = schema;\n }\n }\n break;\n case 'update':\n {\n const uid = schema.uid;\n\n // Find the schema, if the state was \"create\", we should keep it as it was before\n\n if (schema.modelType === 'component') {\n const component = state.components[uid];\n state.components[uid] = {\n ...schema,\n status: component?.status === 'NEW' ? 'NEW' : schema.status,\n };\n } else {\n const contentType = state.contentTypes[uid];\n state.contentTypes[uid] = {\n ...schema,\n status: contentType?.status === 'NEW' ? 'NEW' : schema.status,\n };\n }\n }\n break;\n case 'delete': {\n const uid = schema.uid;\n const isComponent = schema.modelType === 'component';\n // It's a component that has yet not been added\n if (isComponent) {\n const exists = state.components[uid];\n if (!exists) {\n return;\n }\n\n const isUnsaved = state.components[uid]?.status === 'NEW';\n if (isUnsaved) {\n delete state.components[uid];\n } else {\n state.components[uid].status = 'REMOVED';\n }\n } else {\n const exists = state.contentTypes[uid];\n if (!exists) {\n return;\n }\n\n const isUnsaved = state.contentTypes[uid]?.status === 'NEW';\n if (isUnsaved) {\n delete state.contentTypes[uid];\n } else {\n state.contentTypes[uid].status = 'REMOVED';\n }\n }\n\n break;\n }\n }\n },\n },\n },\n\n {\n limit: 50,\n excludeActionsFromHistory: ['reloadPlugin', 'init'],\n stateSelector: (state) => {\n if (!state) {\n return {};\n }\n\n return {\n components: state.components,\n contentTypes: state.contentTypes,\n };\n },\n discard: (state) => {\n state.components = state.initialComponents;\n state.contentTypes = state.initialContentTypes;\n },\n }\n);\n\nexport type State = ReturnType<typeof slice.reducer>;\nexport const { reducer, actions } = slice;\nexport { initialState };\n"],"names":["initialState","components","contentTypes","initialComponents","initialContentTypes","reservedNames","models","attributes","isLoading","ONE_SIDE_RELATIONS","getOppositeRelation","originalRelation","findAttributeIndex","type","attributeToFind","findIndex","name","getType","state","forTarget","targetUid","setStatus","status","getNewStatus","oldStatus","newStatus","setAttributeStatus","attribute","createAttribute","properties","setAttributeAt","index","previousAttribute","pushAttribute","push","removeAttributeAt","attr","splice","replaceAttributeAt","removeAttributeByName","idx","updateType","data","merge","slice","createUndoRedoSlice","reducers","init","action","payload","createComponentSchema","uid","componentCategory","newSchema","category","modelName","displayName","globalId","info","icon","modelType","createSchema","singularName","pluralName","kind","draftAndPublish","pluginOptions","visible","restrictRelationsTo","options","addAttribute","attributeToSet","omit","target","targetAttribute","relation","relationType","getRelationType","isBidirectionalRelation","undefined","includes","oppositeAttribute","private","targetType","moveAttribute","from","to","addCustomFieldAttribute","addCreatedComponentToDynamicZone","dynamicZoneTarget","componentsToAdd","dzAttributeIndex","forEach","componentUid","changeDynamicZoneComponents","newComponents","currentDZComponents","updatedComponents","makeUnique","editAttribute","initialAttributeIndex","previousTarget","newTarget","previousTargetAttributeIndex","previousTargetAttribute","newRelationType","isBidirectionnal","newTargetAttribute","conditions","editCustomFieldAttribute","initialAttributeName","reloadPlugin","removeComponentFromDynamicZone","dzName","componentToRemoveIndex","removeField","attributeToRemoveName","attributeToRemoveIndex","targetAttributeName","targetContentType","targetAttributeIndex","targetField","updateComponentSchema","updateComponentUid","newComponentUID","newType","Object","keys","contentTypeUid","contentType","map","component","updateSchema","deleteComponent","filter","deleteContentType","applyChange","reducerAction","schema","isComponent","exists","isUnsaved","limit","excludeActionsFromHistory","stateSelector","discard","reducer","actions"],"mappings":"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"}
1
+ {"version":3,"file":"reducer.mjs","sources":["../../../../admin/src/components/DataManager/reducer.ts"],"sourcesContent":["import { PayloadAction } from '@reduxjs/toolkit';\nimport merge from 'lodash/merge';\nimport omit from 'lodash/omit';\n\nimport { applyPrivateSearchDefault } from '../../utils/applyPrivateSearchDefault';\nimport { getRelationType } from '../../utils/getRelationType';\nimport { makeUnique } from '../../utils/makeUnique';\n\nimport { createUndoRedoSlice } from './undoRedo';\n\nimport type {\n Components,\n ContentTypes,\n ContentType,\n Component,\n Status,\n AnyAttribute,\n} from '../../types';\nimport type { Internal, Schema, Struct, UID } from '@strapi/types';\n\nexport interface DataManagerStateType {\n components: Components;\n initialComponents: Components;\n contentTypes: ContentTypes;\n initialContentTypes: ContentTypes;\n reservedNames: {\n models: string[];\n attributes: string[];\n };\n isLoading: boolean;\n [key: string]: unknown;\n}\n\nconst initialState: DataManagerStateType = {\n components: {},\n contentTypes: {},\n initialComponents: {},\n initialContentTypes: {},\n reservedNames: {\n models: [],\n attributes: [],\n },\n isLoading: true,\n};\n\nconst ONE_SIDE_RELATIONS = ['oneWay', 'manyWay'];\n\ntype AttributeMutation = AnyAttribute & {\n createComponent?: unknown;\n};\n\ntype PluginOptions = Record<string, unknown>;\n\nconst getOppositeRelation = (originalRelation?: Schema.Attribute.RelationKind.Any) => {\n if (originalRelation === 'manyToOne') {\n return 'oneToMany';\n }\n\n if (originalRelation === 'oneToMany') {\n return 'manyToOne';\n }\n\n return originalRelation;\n};\n\nconst findAttributeIndex = (type: ContentType | Component, attributeToFind?: string) => {\n return type.attributes.findIndex(({ name }: { name: string }) => name === attributeToFind);\n};\n\ntype InitPayload = {\n components: Record<string, Component>;\n contentTypes: Record<string, ContentType>;\n reservedNames: DataManagerStateType['reservedNames'];\n};\n\ntype AddAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype AddCreateComponentToDynamicZonePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n dynamicZoneTarget: string;\n componentsToAdd: Internal.UID.Component[];\n};\n\ntype AddCustomFieldAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype ChangeDynamicZoneComponentsPayload = {\n dynamicZoneTarget: string;\n newComponents: Internal.UID.Component[];\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype CreateComponentSchemaPayload = {\n uid: string;\n data: {\n icon?: string;\n displayName: string;\n };\n componentCategory: string;\n};\n\ntype CreateSchemaPayload = {\n uid: string;\n data: {\n displayName: string;\n singularName: string;\n pluralName: string;\n kind: Struct.ContentTypeKind;\n draftAndPublish: boolean;\n pluginOptions: PluginOptions;\n };\n};\n\ntype EditAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n name: string;\n};\n\ntype EditCustomFieldAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n name: string;\n};\n\ntype RemoveComponentFromDynamicZonePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n dzName: string;\n componentToRemoveIndex: number;\n};\n\ntype RemoveFieldPayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n attributeToRemoveName: string;\n};\n\ntype UpdateComponentSchemaPayload = {\n data: {\n icon?: string;\n displayName: string;\n };\n uid: Internal.UID.Component;\n};\n\ntype UpdateComponentUIDPayload = {\n uid: Internal.UID.Component;\n newComponentUID: Internal.UID.Component;\n};\n\ntype UpdateSchemaPayload = {\n data: {\n displayName: string;\n kind: Struct.ContentTypeKind;\n draftAndPublish: boolean;\n pluginOptions: PluginOptions;\n };\n uid: string;\n};\n\ntype MoveAttributePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n from: number;\n to: number;\n};\n\nconst getType = (\n state: DataManagerStateType,\n {\n forTarget,\n targetUid,\n }: {\n forTarget: Struct.ModelType;\n targetUid: string;\n }\n) => {\n return forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];\n};\n\n// TODO: use initial state when chnaging back to the initial state without knowing\nconst setStatus = (type: ContentType | Component, status: Status) => {\n switch (type.status) {\n case 'NEW':\n case 'REMOVED': {\n break;\n }\n default: {\n type.status = status;\n }\n }\n};\n\nconst getNewStatus = (oldStatus: Status | undefined, newStatus: Status) => {\n if (oldStatus === 'NEW' || oldStatus === 'REMOVED') {\n return oldStatus;\n }\n\n return newStatus;\n};\n\nconst setAttributeStatus = (attribute: { status?: Status }, status: Status) => {\n attribute.status = getNewStatus(attribute.status, status);\n};\n\nconst createAttribute = (properties: Record<string, unknown>): AnyAttribute => {\n return {\n ...applyPrivateSearchDefault(properties),\n status: 'NEW',\n } as AnyAttribute;\n};\n\nconst setAttributeAt = (type: ContentType | Component, index: number, attribute: AnyAttribute) => {\n const previousAttribute = type.attributes[index];\n\n const newStatus = getNewStatus(previousAttribute.status, 'CHANGED');\n\n type.attributes[index] = {\n ...applyPrivateSearchDefault(attribute),\n status: newStatus,\n };\n\n setStatus(type, 'CHANGED');\n};\n\nconst pushAttribute = (type: ContentType | Component, attribute: AnyAttribute) => {\n type.attributes.push(attribute);\n setStatus(type, 'CHANGED');\n};\n\nconst removeAttributeAt = (type: ContentType | Component, index: number) => {\n const attr = type.attributes[index];\n\n setStatus(type, 'CHANGED');\n\n if (attr.status === 'NEW') {\n type.attributes.splice(index, 1);\n } else {\n setAttributeStatus(attr, 'REMOVED');\n }\n};\n\nconst replaceAttributeAt = (\n type: ContentType | Component,\n index: number,\n attribute: AnyAttribute\n) => {\n type.attributes[index] = attribute;\n setStatus(type, 'CHANGED');\n};\n\nconst removeAttributeByName = (type: ContentType | Component, name: string) => {\n const idx = type.attributes.findIndex((attr) => attr.name === name);\n\n const attr = type.attributes[idx];\n\n setStatus(type, 'CHANGED');\n\n if (attr.status === 'NEW') {\n type.attributes.splice(idx, 1);\n } else {\n setAttributeStatus(attr, 'REMOVED');\n }\n};\n\nconst updateType = (type: ContentType | Component, data: Record<string, unknown>) => {\n merge(type, data);\n setStatus(type, 'CHANGED');\n};\n\nconst slice = createUndoRedoSlice(\n {\n name: 'data-manager',\n initialState,\n reducers: {\n init: (state, action: PayloadAction<InitPayload>) => {\n const { components, contentTypes, reservedNames } = action.payload;\n\n state.components = components;\n state.initialComponents = components;\n state.initialContentTypes = contentTypes;\n state.contentTypes = contentTypes;\n state.reservedNames = reservedNames;\n state.isLoading = false;\n },\n createComponentSchema: (state, action: PayloadAction<CreateComponentSchemaPayload>) => {\n const { uid, data, componentCategory } = action.payload;\n\n const newSchema: Component = {\n uid: uid as Internal.UID.Component,\n status: 'NEW',\n category: componentCategory,\n modelName: data.displayName,\n globalId: data.displayName,\n info: {\n icon: data.icon,\n displayName: data.displayName,\n },\n attributes: [],\n modelType: 'component',\n };\n\n state.components[uid as string] = newSchema;\n },\n createSchema: (state, action: PayloadAction<CreateSchemaPayload>) => {\n const { uid, data } = action.payload;\n\n const { displayName, singularName, pluralName, kind, draftAndPublish, pluginOptions } =\n data;\n\n const newSchema: ContentType = {\n uid: uid as Internal.UID.ContentType,\n status: 'NEW',\n visible: true,\n modelType: 'contentType',\n restrictRelationsTo: null,\n attributes: [],\n kind,\n modelName: displayName,\n globalId: displayName,\n options: {\n draftAndPublish,\n },\n info: {\n displayName,\n singularName,\n pluralName,\n },\n pluginOptions,\n };\n\n state.contentTypes[uid] = newSchema;\n },\n addAttribute: (state, action: PayloadAction<AddAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attribute = createAttribute(omit(attributeToSet, 'createComponent'));\n\n if (attribute.type === 'relation') {\n const target = attribute.target;\n const targetAttribute = attribute.targetAttribute || null;\n const relation = attribute.relation;\n const relationType = getRelationType(relation, targetAttribute);\n\n const isBidirectionalRelation =\n relationType !== undefined && !['oneWay', 'manyWay'].includes(relationType);\n\n if (isBidirectionalRelation) {\n const oppositeAttribute = createAttribute({\n name: targetAttribute,\n relation: getOppositeRelation(relationType),\n target: type.uid,\n targetAttribute: attribute.name,\n type: 'relation',\n private: attribute.private,\n });\n\n const targetType = getType(state, { forTarget, targetUid: target });\n pushAttribute(targetType, oppositeAttribute);\n }\n }\n\n pushAttribute(type, attribute);\n setStatus(type, 'CHANGED');\n },\n moveAttribute: (state, action: PayloadAction<MoveAttributePayload>) => {\n const { forTarget, targetUid, from, to } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attribute = type.attributes[from];\n type.attributes.splice(from, 1);\n type.attributes.splice(to, 0, attribute);\n setStatus(type, 'CHANGED');\n },\n addCustomFieldAttribute: (state, action: PayloadAction<AddCustomFieldAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n pushAttribute(type, createAttribute(attributeToSet));\n },\n addCreatedComponentToDynamicZone: (\n state,\n action: PayloadAction<AddCreateComponentToDynamicZonePayload>\n ) => {\n const { dynamicZoneTarget, componentsToAdd, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n\n componentsToAdd.forEach((componentUid: Internal.UID.Component) => {\n attr.components.push(componentUid);\n });\n\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n setStatus(type, 'CHANGED');\n },\n changeDynamicZoneComponents: (\n state,\n action: PayloadAction<ChangeDynamicZoneComponentsPayload>\n ) => {\n const { dynamicZoneTarget, newComponents, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n const currentDZComponents = attr.components;\n\n const updatedComponents = makeUnique([...currentDZComponents, ...newComponents]);\n\n setStatus(type, 'CHANGED');\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n attr.components = updatedComponents;\n },\n editAttribute: (state, action: PayloadAction<EditAttributePayload>) => {\n const { name, attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const initialAttributeIndex = findAttributeIndex(type, name);\n\n if (initialAttributeIndex === -1) {\n return;\n }\n\n const previousAttribute = type.attributes[initialAttributeIndex];\n\n setAttributeAt(type, initialAttributeIndex, attributeToSet as AnyAttribute);\n\n if (previousAttribute.type !== attributeToSet.type) {\n return;\n }\n\n if (previousAttribute.type !== 'relation' || attributeToSet.type !== 'relation') {\n return;\n }\n\n const previousTarget = getType(state, {\n forTarget: 'contentType',\n targetUid: previousAttribute.target,\n });\n const newTarget = getType(state, {\n forTarget: 'contentType',\n targetUid: attributeToSet.target,\n });\n\n const previousTargetAttributeIndex = findAttributeIndex(\n previousTarget,\n previousAttribute.targetAttribute ?? ''\n );\n const previousTargetAttribute =\n previousTargetAttributeIndex !== -1\n ? previousTarget.attributes[previousTargetAttributeIndex]\n : undefined;\n\n // remove old targetAttribute\n if (previousAttribute.targetAttribute) {\n removeAttributeByName(previousTarget, previousAttribute.targetAttribute);\n }\n\n const newRelationType = getRelationType(\n attributeToSet.relation,\n attributeToSet.targetAttribute\n );\n const isBidirectionnal =\n newRelationType !== undefined && !ONE_SIDE_RELATIONS.includes(newRelationType);\n\n if (isBidirectionnal) {\n const newTargetAttribute = {\n name: attributeToSet.targetAttribute,\n type: 'relation',\n relation: getOppositeRelation(attributeToSet.relation),\n targetAttribute: attributeToSet.name,\n target: type.uid,\n private: previousAttribute.private ?? attributeToSet.private,\n pluginOptions: previousAttribute.pluginOptions ?? attributeToSet.pluginOptions,\n ...(previousTarget.uid === newTarget.uid && previousTargetAttribute?.conditions\n ? { conditions: previousTargetAttribute.conditions }\n : {}),\n status: 'CHANGED',\n } as AnyAttribute;\n\n // create or recreate(at old index) targetAttribute\n if (previousTargetAttributeIndex !== -1 && previousTarget.uid === newTarget.uid) {\n // re-create at previousIdx if possible\n replaceAttributeAt(newTarget, previousTargetAttributeIndex, newTargetAttribute);\n } else {\n pushAttribute(newTarget, {\n ...newTargetAttribute,\n status: 'NEW',\n });\n }\n }\n },\n editCustomFieldAttribute: (state, action: PayloadAction<EditCustomFieldAttributePayload>) => {\n const { forTarget, targetUid, name, attributeToSet } = action.payload;\n\n const initialAttributeName = name;\n const type = getType(state, { forTarget, targetUid });\n\n const initialAttributeIndex = findAttributeIndex(type, initialAttributeName);\n\n setAttributeAt(type, initialAttributeIndex, attributeToSet as AnyAttribute);\n },\n reloadPlugin: () => {\n return initialState;\n },\n removeComponentFromDynamicZone: (\n state,\n action: PayloadAction<RemoveComponentFromDynamicZonePayload>\n ) => {\n const { dzName, componentToRemoveIndex, forTarget, targetUid } = action.payload;\n\n const type =\n forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];\n\n if (!type) {\n return;\n }\n\n const dzAttributeIndex = findAttributeIndex(type, dzName);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n\n setStatus(type, 'CHANGED');\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n attr.components.splice(componentToRemoveIndex, 1);\n },\n removeField: (state, action: PayloadAction<RemoveFieldPayload>) => {\n const { forTarget, targetUid, attributeToRemoveName } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attributeToRemoveIndex = findAttributeIndex(type, attributeToRemoveName);\n const attribute = type.attributes[attributeToRemoveIndex];\n\n if (attribute.type === 'relation') {\n const { target, relation, targetAttribute: targetAttributeName } = attribute;\n const relationType = getRelationType(relation, targetAttributeName);\n\n const isBidirectionnal = !ONE_SIDE_RELATIONS.includes(relationType!);\n\n if (isBidirectionnal && targetAttributeName) {\n const targetContentType = getType(state, { forTarget, targetUid: target });\n const targetAttributeIndex = findAttributeIndex(targetContentType, targetAttributeName);\n\n removeAttributeAt(targetContentType, targetAttributeIndex);\n }\n }\n\n // Find all uid fields that have the targetField set to the field we are removing\n type.attributes.forEach((attribute) => {\n if (attribute.type === 'uid') {\n if (attribute.targetField === attributeToRemoveName) {\n delete attribute.targetField;\n }\n }\n });\n\n removeAttributeAt(type, attributeToRemoveIndex);\n },\n // only edits a component in practice\n updateComponentSchema: (state, action: PayloadAction<UpdateComponentSchemaPayload>) => {\n const { data, uid } = action.payload;\n\n const type = state.components[uid];\n if (!type) {\n return;\n }\n\n updateType(type, {\n info: {\n displayName: data.displayName,\n icon: data.icon,\n },\n });\n },\n updateComponentUid: (state, action: PayloadAction<UpdateComponentUIDPayload>) => {\n const { newComponentUID, uid } = action.payload;\n\n const type = state.components[uid];\n if (!type || type.status !== 'NEW') {\n return;\n }\n\n if (newComponentUID !== uid) {\n const newType = { ...type, uid: newComponentUID };\n state.components[newComponentUID] = newType;\n delete state.components[uid];\n\n // update the uid in the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'dynamiczone') {\n const newComponents = attribute.components.map((component: UID.Component) => {\n if (component === uid) {\n return newComponentUID;\n }\n\n return component;\n });\n\n attribute.components = newComponents;\n }\n });\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n attribute.component = newComponentUID;\n }\n });\n });\n\n // update the uid in the other components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n attribute.component = newComponentUID;\n }\n });\n });\n }\n },\n updateSchema: (state, action: PayloadAction<UpdateSchemaPayload>) => {\n const { data, uid } = action.payload;\n\n const { displayName, kind, draftAndPublish, pluginOptions } = data;\n\n const type = state.contentTypes[uid];\n if (!type) {\n return;\n }\n\n updateType(type, {\n info: {\n displayName,\n },\n kind,\n options: {\n draftAndPublish,\n },\n pluginOptions,\n });\n },\n deleteComponent: (state, action: PayloadAction<Internal.UID.Component>) => {\n const uid = action.payload;\n\n // remove the compo from the components\n if (state.components[uid].status === 'NEW') {\n delete state.components[uid];\n } else {\n setStatus(state.components[uid], 'REMOVED');\n }\n\n // remove the compo from the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n // remove from dynamic zones\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'dynamiczone') {\n const newComponents = attribute.components.filter(\n (component: unknown) => component !== uid\n );\n\n attribute.components = newComponents;\n }\n });\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n removeAttributeByName(contentType, attribute.name);\n }\n });\n });\n\n // remove the compo from other components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n removeAttributeByName(component, attribute.name);\n }\n });\n });\n },\n deleteContentType: (state, action: PayloadAction<Internal.UID.ContentType>) => {\n const uid = action.payload;\n const type = state.contentTypes[uid];\n\n // just drop new content types\n if (type.status === 'NEW') {\n delete state.contentTypes[uid];\n } else {\n setStatus(type, 'REMOVED');\n }\n\n // remove the content type from the components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'relation' && attribute.target === uid) {\n removeAttributeByName(component, attribute.name);\n }\n });\n });\n\n // remove the content type from the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'relation' && attribute.target === uid) {\n removeAttributeByName(contentType, attribute.name);\n }\n });\n });\n },\n\n applyChange(\n state,\n reducerAction: PayloadAction<{\n action: 'add' | 'update' | 'delete';\n schema: ContentType | Component;\n }>\n ) {\n const { action, schema } = reducerAction.payload;\n\n switch (action) {\n case 'add':\n {\n const uid = schema.uid;\n\n if (schema.modelType === 'component') {\n state.components[uid] = schema;\n } else {\n state.contentTypes[uid] = schema;\n }\n }\n break;\n case 'update':\n {\n const uid = schema.uid;\n\n // Find the schema, if the state was \"create\", we should keep it as it was before\n\n if (schema.modelType === 'component') {\n const component = state.components[uid];\n state.components[uid] = {\n ...schema,\n status: component?.status === 'NEW' ? 'NEW' : schema.status,\n };\n } else {\n const contentType = state.contentTypes[uid];\n state.contentTypes[uid] = {\n ...schema,\n status: contentType?.status === 'NEW' ? 'NEW' : schema.status,\n };\n }\n }\n break;\n case 'delete': {\n const uid = schema.uid;\n const isComponent = schema.modelType === 'component';\n // It's a component that has yet not been added\n if (isComponent) {\n const exists = state.components[uid];\n if (!exists) {\n return;\n }\n\n const isUnsaved = state.components[uid]?.status === 'NEW';\n if (isUnsaved) {\n delete state.components[uid];\n } else {\n state.components[uid].status = 'REMOVED';\n }\n } else {\n const exists = state.contentTypes[uid];\n if (!exists) {\n return;\n }\n\n const isUnsaved = state.contentTypes[uid]?.status === 'NEW';\n if (isUnsaved) {\n delete state.contentTypes[uid];\n } else {\n state.contentTypes[uid].status = 'REMOVED';\n }\n }\n\n break;\n }\n }\n },\n },\n },\n\n {\n limit: 50,\n excludeActionsFromHistory: ['reloadPlugin', 'init'],\n stateSelector: (state) => {\n if (!state) {\n return {};\n }\n\n return {\n components: state.components,\n contentTypes: state.contentTypes,\n };\n },\n discard: (state) => {\n state.components = state.initialComponents;\n state.contentTypes = state.initialContentTypes;\n },\n }\n);\n\nexport type State = ReturnType<typeof slice.reducer>;\nexport const { reducer, actions } = slice;\nexport { initialState };\n"],"names":["initialState","components","contentTypes","initialComponents","initialContentTypes","reservedNames","models","attributes","isLoading","ONE_SIDE_RELATIONS","getOppositeRelation","originalRelation","findAttributeIndex","type","attributeToFind","findIndex","name","getType","state","forTarget","targetUid","setStatus","status","getNewStatus","oldStatus","newStatus","setAttributeStatus","attribute","createAttribute","properties","applyPrivateSearchDefault","setAttributeAt","index","previousAttribute","pushAttribute","push","removeAttributeAt","attr","splice","replaceAttributeAt","removeAttributeByName","idx","updateType","data","merge","slice","createUndoRedoSlice","reducers","init","action","payload","createComponentSchema","uid","componentCategory","newSchema","category","modelName","displayName","globalId","info","icon","modelType","createSchema","singularName","pluralName","kind","draftAndPublish","pluginOptions","visible","restrictRelationsTo","options","addAttribute","attributeToSet","omit","target","targetAttribute","relation","relationType","getRelationType","isBidirectionalRelation","undefined","includes","oppositeAttribute","private","targetType","moveAttribute","from","to","addCustomFieldAttribute","addCreatedComponentToDynamicZone","dynamicZoneTarget","componentsToAdd","dzAttributeIndex","forEach","componentUid","changeDynamicZoneComponents","newComponents","currentDZComponents","updatedComponents","makeUnique","editAttribute","initialAttributeIndex","previousTarget","newTarget","previousTargetAttributeIndex","previousTargetAttribute","newRelationType","isBidirectionnal","newTargetAttribute","conditions","editCustomFieldAttribute","initialAttributeName","reloadPlugin","removeComponentFromDynamicZone","dzName","componentToRemoveIndex","removeField","attributeToRemoveName","attributeToRemoveIndex","targetAttributeName","targetContentType","targetAttributeIndex","targetField","updateComponentSchema","updateComponentUid","newComponentUID","newType","Object","keys","contentTypeUid","contentType","map","component","updateSchema","deleteComponent","filter","deleteContentType","applyChange","reducerAction","schema","isComponent","exists","isUnsaved","limit","excludeActionsFromHistory","stateSelector","discard","reducer","actions"],"mappings":"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"}
@@ -52,7 +52,7 @@ const attributeOptions = {
52
52
  },
53
53
  description: {
54
54
  id: getTrad.getTrad('form.attribute.item.privateField.description'),
55
- defaultMessage: 'This field will not show up in the API response'
55
+ defaultMessage: 'This field will not show up in the API response. New private fields are also excluded from search.'
56
56
  }
57
57
  },
58
58
  regex: {
@@ -1 +1 @@
1
- {"version":3,"file":"attributeOptions.js","sources":["../../../../../admin/src/components/FormModal/attributes/attributeOptions.ts"],"sourcesContent":["import { getTrad } from '../../../utils/getTrad';\n\nexport const attributeOptions = {\n default: {\n name: 'default',\n type: 'text',\n intlLabel: {\n id: getTrad('form.attribute.settings.default'),\n defaultMessage: 'Default value',\n },\n },\n max: {\n name: 'max',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.maximum'),\n defaultMessage: 'Maximum value',\n },\n },\n maxLength: {\n name: 'maxLength',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.maximumLength'),\n defaultMessage: 'Maximum length',\n },\n },\n min: {\n name: 'min',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.minimum'),\n defaultMessage: 'Minimum value',\n },\n },\n minLength: {\n name: 'minLength',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.minimumLength'),\n defaultMessage: 'Minimum length',\n },\n },\n private: {\n name: 'private',\n type: 'checkbox',\n intlLabel: {\n id: getTrad('form.attribute.item.privateField'),\n defaultMessage: 'Private field',\n },\n description: {\n id: getTrad('form.attribute.item.privateField.description'),\n defaultMessage: 'This field will not show up in the API response',\n },\n },\n regex: {\n intlLabel: {\n id: getTrad('form.attribute.item.text.regex'),\n defaultMessage: 'RegExp pattern',\n },\n name: 'regex',\n type: 'text',\n description: {\n id: getTrad('form.attribute.item.text.regex.description'),\n defaultMessage: 'The text of the regular expression',\n },\n },\n required: {\n name: 'required',\n type: 'checkbox',\n intlLabel: {\n id: getTrad('form.attribute.item.requiredField'),\n defaultMessage: 'Required field',\n },\n description: {\n id: getTrad('form.attribute.item.requiredField.description'),\n defaultMessage: \"You won't be able to create an entry if this field is empty\",\n },\n },\n unique: {\n name: 'unique',\n type: 'checkbox',\n intlLabel: {\n id: getTrad('form.attribute.item.uniqueField'),\n defaultMessage: 'Unique field',\n },\n description: {\n id: getTrad('form.attribute.item.uniqueField.description'),\n defaultMessage:\n \"You won't be able to create an entry if there is an existing entry with identical content\",\n },\n },\n};\n"],"names":["attributeOptions","default","name","type","intlLabel","id","getTrad","defaultMessage","max","maxLength","min","minLength","private","description","regex","required","unique"],"mappings":";;;;MAEaA,gBAAAA,GAAmB;IAC9BC,OAAAA,EAAS;QACPC,IAAAA,EAAM,SAAA;QACNC,IAAAA,EAAM,MAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,iCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAC,GAAAA,EAAK;QACHN,IAAAA,EAAM,KAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,6BAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAE,SAAAA,EAAW;QACTP,IAAAA,EAAM,WAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,mCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAG,GAAAA,EAAK;QACHR,IAAAA,EAAM,KAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,6BAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAI,SAAAA,EAAW;QACTT,IAAAA,EAAM,WAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,mCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAK,OAAAA,EAAS;QACPV,IAAAA,EAAM,SAAA;QACNC,IAAAA,EAAM,UAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,kCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAM,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,8CAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAO,KAAAA,EAAO;QACLV,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,gCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAL,IAAAA,EAAM,OAAA;QACNC,IAAAA,EAAM,MAAA;QACNU,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,4CAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAQ,QAAAA,EAAU;QACRb,IAAAA,EAAM,UAAA;QACNC,IAAAA,EAAM,UAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,mCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAM,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,+CAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAS,MAAAA,EAAQ;QACNd,IAAAA,EAAM,QAAA;QACNC,IAAAA,EAAM,UAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,iCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAM,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,6CAAA,CAAA;YACZC,cAAAA,EACE;AACJ;AACF;AACF;;;;"}
1
+ {"version":3,"file":"attributeOptions.js","sources":["../../../../../admin/src/components/FormModal/attributes/attributeOptions.ts"],"sourcesContent":["import { getTrad } from '../../../utils/getTrad';\n\nexport const attributeOptions = {\n default: {\n name: 'default',\n type: 'text',\n intlLabel: {\n id: getTrad('form.attribute.settings.default'),\n defaultMessage: 'Default value',\n },\n },\n max: {\n name: 'max',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.maximum'),\n defaultMessage: 'Maximum value',\n },\n },\n maxLength: {\n name: 'maxLength',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.maximumLength'),\n defaultMessage: 'Maximum length',\n },\n },\n min: {\n name: 'min',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.minimum'),\n defaultMessage: 'Minimum value',\n },\n },\n minLength: {\n name: 'minLength',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.minimumLength'),\n defaultMessage: 'Minimum length',\n },\n },\n private: {\n name: 'private',\n type: 'checkbox',\n intlLabel: {\n id: getTrad('form.attribute.item.privateField'),\n defaultMessage: 'Private field',\n },\n description: {\n id: getTrad('form.attribute.item.privateField.description'),\n defaultMessage:\n 'This field will not show up in the API response. New private fields are also excluded from search.',\n },\n },\n regex: {\n intlLabel: {\n id: getTrad('form.attribute.item.text.regex'),\n defaultMessage: 'RegExp pattern',\n },\n name: 'regex',\n type: 'text',\n description: {\n id: getTrad('form.attribute.item.text.regex.description'),\n defaultMessage: 'The text of the regular expression',\n },\n },\n required: {\n name: 'required',\n type: 'checkbox',\n intlLabel: {\n id: getTrad('form.attribute.item.requiredField'),\n defaultMessage: 'Required field',\n },\n description: {\n id: getTrad('form.attribute.item.requiredField.description'),\n defaultMessage: \"You won't be able to create an entry if this field is empty\",\n },\n },\n unique: {\n name: 'unique',\n type: 'checkbox',\n intlLabel: {\n id: getTrad('form.attribute.item.uniqueField'),\n defaultMessage: 'Unique field',\n },\n description: {\n id: getTrad('form.attribute.item.uniqueField.description'),\n defaultMessage:\n \"You won't be able to create an entry if there is an existing entry with identical content\",\n },\n },\n};\n"],"names":["attributeOptions","default","name","type","intlLabel","id","getTrad","defaultMessage","max","maxLength","min","minLength","private","description","regex","required","unique"],"mappings":";;;;MAEaA,gBAAAA,GAAmB;IAC9BC,OAAAA,EAAS;QACPC,IAAAA,EAAM,SAAA;QACNC,IAAAA,EAAM,MAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,iCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAC,GAAAA,EAAK;QACHN,IAAAA,EAAM,KAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,6BAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAE,SAAAA,EAAW;QACTP,IAAAA,EAAM,WAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,mCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAG,GAAAA,EAAK;QACHR,IAAAA,EAAM,KAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,6BAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAI,SAAAA,EAAW;QACTT,IAAAA,EAAM,WAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,mCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAK,OAAAA,EAAS;QACPV,IAAAA,EAAM,SAAA;QACNC,IAAAA,EAAM,UAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,kCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAM,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,8CAAA,CAAA;YACZC,cAAAA,EACE;AACJ;AACF,KAAA;IACAO,KAAAA,EAAO;QACLV,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,gCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAL,IAAAA,EAAM,OAAA;QACNC,IAAAA,EAAM,MAAA;QACNU,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,4CAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAQ,QAAAA,EAAU;QACRb,IAAAA,EAAM,UAAA;QACNC,IAAAA,EAAM,UAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,mCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAM,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,+CAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAS,MAAAA,EAAQ;QACNd,IAAAA,EAAM,QAAA;QACNC,IAAAA,EAAM,UAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,iCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAM,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,eAAAA,CAAQ,6CAAA,CAAA;YACZC,cAAAA,EACE;AACJ;AACF;AACF;;;;"}
@@ -50,7 +50,7 @@ const attributeOptions = {
50
50
  },
51
51
  description: {
52
52
  id: getTrad('form.attribute.item.privateField.description'),
53
- defaultMessage: 'This field will not show up in the API response'
53
+ defaultMessage: 'This field will not show up in the API response. New private fields are also excluded from search.'
54
54
  }
55
55
  },
56
56
  regex: {
@@ -1 +1 @@
1
- {"version":3,"file":"attributeOptions.mjs","sources":["../../../../../admin/src/components/FormModal/attributes/attributeOptions.ts"],"sourcesContent":["import { getTrad } from '../../../utils/getTrad';\n\nexport const attributeOptions = {\n default: {\n name: 'default',\n type: 'text',\n intlLabel: {\n id: getTrad('form.attribute.settings.default'),\n defaultMessage: 'Default value',\n },\n },\n max: {\n name: 'max',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.maximum'),\n defaultMessage: 'Maximum value',\n },\n },\n maxLength: {\n name: 'maxLength',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.maximumLength'),\n defaultMessage: 'Maximum length',\n },\n },\n min: {\n name: 'min',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.minimum'),\n defaultMessage: 'Minimum value',\n },\n },\n minLength: {\n name: 'minLength',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.minimumLength'),\n defaultMessage: 'Minimum length',\n },\n },\n private: {\n name: 'private',\n type: 'checkbox',\n intlLabel: {\n id: getTrad('form.attribute.item.privateField'),\n defaultMessage: 'Private field',\n },\n description: {\n id: getTrad('form.attribute.item.privateField.description'),\n defaultMessage: 'This field will not show up in the API response',\n },\n },\n regex: {\n intlLabel: {\n id: getTrad('form.attribute.item.text.regex'),\n defaultMessage: 'RegExp pattern',\n },\n name: 'regex',\n type: 'text',\n description: {\n id: getTrad('form.attribute.item.text.regex.description'),\n defaultMessage: 'The text of the regular expression',\n },\n },\n required: {\n name: 'required',\n type: 'checkbox',\n intlLabel: {\n id: getTrad('form.attribute.item.requiredField'),\n defaultMessage: 'Required field',\n },\n description: {\n id: getTrad('form.attribute.item.requiredField.description'),\n defaultMessage: \"You won't be able to create an entry if this field is empty\",\n },\n },\n unique: {\n name: 'unique',\n type: 'checkbox',\n intlLabel: {\n id: getTrad('form.attribute.item.uniqueField'),\n defaultMessage: 'Unique field',\n },\n description: {\n id: getTrad('form.attribute.item.uniqueField.description'),\n defaultMessage:\n \"You won't be able to create an entry if there is an existing entry with identical content\",\n },\n },\n};\n"],"names":["attributeOptions","default","name","type","intlLabel","id","getTrad","defaultMessage","max","maxLength","min","minLength","private","description","regex","required","unique"],"mappings":";;MAEaA,gBAAAA,GAAmB;IAC9BC,OAAAA,EAAS;QACPC,IAAAA,EAAM,SAAA;QACNC,IAAAA,EAAM,MAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,iCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAC,GAAAA,EAAK;QACHN,IAAAA,EAAM,KAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,6BAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAE,SAAAA,EAAW;QACTP,IAAAA,EAAM,WAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,mCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAG,GAAAA,EAAK;QACHR,IAAAA,EAAM,KAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,6BAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAI,SAAAA,EAAW;QACTT,IAAAA,EAAM,WAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,mCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAK,OAAAA,EAAS;QACPV,IAAAA,EAAM,SAAA;QACNC,IAAAA,EAAM,UAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,kCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAM,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,8CAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAO,KAAAA,EAAO;QACLV,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,gCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAL,IAAAA,EAAM,OAAA;QACNC,IAAAA,EAAM,MAAA;QACNU,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,4CAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAQ,QAAAA,EAAU;QACRb,IAAAA,EAAM,UAAA;QACNC,IAAAA,EAAM,UAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,mCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAM,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,+CAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAS,MAAAA,EAAQ;QACNd,IAAAA,EAAM,QAAA;QACNC,IAAAA,EAAM,UAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,iCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAM,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,6CAAA,CAAA;YACZC,cAAAA,EACE;AACJ;AACF;AACF;;;;"}
1
+ {"version":3,"file":"attributeOptions.mjs","sources":["../../../../../admin/src/components/FormModal/attributes/attributeOptions.ts"],"sourcesContent":["import { getTrad } from '../../../utils/getTrad';\n\nexport const attributeOptions = {\n default: {\n name: 'default',\n type: 'text',\n intlLabel: {\n id: getTrad('form.attribute.settings.default'),\n defaultMessage: 'Default value',\n },\n },\n max: {\n name: 'max',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.maximum'),\n defaultMessage: 'Maximum value',\n },\n },\n maxLength: {\n name: 'maxLength',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.maximumLength'),\n defaultMessage: 'Maximum length',\n },\n },\n min: {\n name: 'min',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.minimum'),\n defaultMessage: 'Minimum value',\n },\n },\n minLength: {\n name: 'minLength',\n type: 'checkbox-with-number-field',\n intlLabel: {\n id: getTrad('form.attribute.item.minimumLength'),\n defaultMessage: 'Minimum length',\n },\n },\n private: {\n name: 'private',\n type: 'checkbox',\n intlLabel: {\n id: getTrad('form.attribute.item.privateField'),\n defaultMessage: 'Private field',\n },\n description: {\n id: getTrad('form.attribute.item.privateField.description'),\n defaultMessage:\n 'This field will not show up in the API response. New private fields are also excluded from search.',\n },\n },\n regex: {\n intlLabel: {\n id: getTrad('form.attribute.item.text.regex'),\n defaultMessage: 'RegExp pattern',\n },\n name: 'regex',\n type: 'text',\n description: {\n id: getTrad('form.attribute.item.text.regex.description'),\n defaultMessage: 'The text of the regular expression',\n },\n },\n required: {\n name: 'required',\n type: 'checkbox',\n intlLabel: {\n id: getTrad('form.attribute.item.requiredField'),\n defaultMessage: 'Required field',\n },\n description: {\n id: getTrad('form.attribute.item.requiredField.description'),\n defaultMessage: \"You won't be able to create an entry if this field is empty\",\n },\n },\n unique: {\n name: 'unique',\n type: 'checkbox',\n intlLabel: {\n id: getTrad('form.attribute.item.uniqueField'),\n defaultMessage: 'Unique field',\n },\n description: {\n id: getTrad('form.attribute.item.uniqueField.description'),\n defaultMessage:\n \"You won't be able to create an entry if there is an existing entry with identical content\",\n },\n },\n};\n"],"names":["attributeOptions","default","name","type","intlLabel","id","getTrad","defaultMessage","max","maxLength","min","minLength","private","description","regex","required","unique"],"mappings":";;MAEaA,gBAAAA,GAAmB;IAC9BC,OAAAA,EAAS;QACPC,IAAAA,EAAM,SAAA;QACNC,IAAAA,EAAM,MAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,iCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAC,GAAAA,EAAK;QACHN,IAAAA,EAAM,KAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,6BAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAE,SAAAA,EAAW;QACTP,IAAAA,EAAM,WAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,mCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAG,GAAAA,EAAK;QACHR,IAAAA,EAAM,KAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,6BAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAI,SAAAA,EAAW;QACTT,IAAAA,EAAM,WAAA;QACNC,IAAAA,EAAM,4BAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,mCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAK,OAAAA,EAAS;QACPV,IAAAA,EAAM,SAAA;QACNC,IAAAA,EAAM,UAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,kCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAM,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,8CAAA,CAAA;YACZC,cAAAA,EACE;AACJ;AACF,KAAA;IACAO,KAAAA,EAAO;QACLV,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,gCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAL,IAAAA,EAAM,OAAA;QACNC,IAAAA,EAAM,MAAA;QACNU,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,4CAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAQ,QAAAA,EAAU;QACRb,IAAAA,EAAM,UAAA;QACNC,IAAAA,EAAM,UAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,mCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAM,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,+CAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB;AACF,KAAA;IACAS,MAAAA,EAAQ;QACNd,IAAAA,EAAM,QAAA;QACNC,IAAAA,EAAM,UAAA;QACNC,SAAAA,EAAW;AACTC,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,iCAAA,CAAA;YACZC,cAAAA,EAAgB;AAClB,SAAA;QACAM,WAAAA,EAAa;AACXR,YAAAA,EAAAA,EAAIC,OAAAA,CAAQ,6CAAA,CAAA;YACZC,cAAAA,EACE;AACJ;AACF;AACF;;;;"}
@@ -415,7 +415,7 @@ export declare const attributesForm: {
415
415
  })[];
416
416
  };
417
417
  number(data: {
418
- type: "string" | "decimal" | "biginteger" | "float" | "integer";
418
+ type: "string" | "decimal" | "biginteger" | "integer" | "float";
419
419
  }): {
420
420
  sections: ({
421
421
  sectionTitle: {
@@ -0,0 +1,7 @@
1
+ type Attribute = {
2
+ type?: unknown;
3
+ private?: unknown;
4
+ searchable?: unknown;
5
+ };
6
+ export declare const applyPrivateSearchDefault: <T extends Attribute>(attribute: T) => T;
7
+ export {};
@@ -20,7 +20,7 @@ export declare const formatCondition: (condition: AttributeConditions, available
20
20
  }>, attributeName: string) => string;
21
21
  export declare const getAvailableConditionFields: (attributes: AnyAttribute[], currentFieldName: string) => {
22
22
  name: string;
23
- type: "string" | "boolean" | "time" | "text" | "media" | "date" | "email" | "password" | "decimal" | "relation" | "biginteger" | "blocks" | "component" | "datetime" | "dynamiczone" | "enumeration" | "float" | "integer" | "json" | "richtext" | "timestamp" | "uid";
23
+ type: "string" | "boolean" | "time" | "text" | "media" | "date" | "email" | "password" | "decimal" | "uid" | "enumeration" | "richtext" | "biginteger" | "integer" | "float" | "relation" | "blocks" | "component" | "datetime" | "dynamiczone" | "json" | "timestamp";
24
24
  enum: string[] | undefined;
25
25
  }[];
26
26
  export {};
@@ -108,7 +108,7 @@ var en = {
108
108
  "form.attribute.item.number.type.float": "float (ex: 3.33333333)",
109
109
  "form.attribute.item.number.type.integer": "integer (ex: 10)",
110
110
  "form.attribute.item.privateField": "Private field",
111
- "form.attribute.item.privateField.description": "This field will not show up in the API response",
111
+ "form.attribute.item.privateField.description": "This field will not show up in the API response. New private fields are also excluded from search.",
112
112
  "form.attribute.item.requiredField": "Required field",
113
113
  "form.attribute.item.requiredField.description": "You won't be able to create an entry if this field is empty",
114
114
  "form.attribute.item.text.regex": "RegExp pattern",
@@ -104,7 +104,7 @@ var en = {
104
104
  "form.attribute.item.number.type.float": "float (ex: 3.33333333)",
105
105
  "form.attribute.item.number.type.integer": "integer (ex: 10)",
106
106
  "form.attribute.item.privateField": "Private field",
107
- "form.attribute.item.privateField.description": "This field will not show up in the API response",
107
+ "form.attribute.item.privateField.description": "This field will not show up in the API response. New private fields are also excluded from search.",
108
108
  "form.attribute.item.requiredField": "Required field",
109
109
  "form.attribute.item.requiredField.description": "You won't be able to create an entry if this field is empty",
110
110
  "form.attribute.item.text.regex": "RegExp pattern",
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ const SEARCHABLE_ATTRIBUTE_TYPES = new Set([
4
+ 'string',
5
+ 'text',
6
+ 'uid',
7
+ 'email',
8
+ 'enumeration',
9
+ 'richtext',
10
+ 'biginteger',
11
+ 'integer',
12
+ 'decimal',
13
+ 'float'
14
+ ]);
15
+ // Mirrors the scalar types used by database search without importing server code into the admin.
16
+ const applyPrivateSearchDefault = (attribute)=>{
17
+ if (attribute.private === true && attribute.searchable === undefined && typeof attribute.type === 'string' && SEARCHABLE_ATTRIBUTE_TYPES.has(attribute.type)) {
18
+ return {
19
+ ...attribute,
20
+ searchable: false
21
+ };
22
+ }
23
+ return attribute;
24
+ };
25
+
26
+ exports.applyPrivateSearchDefault = applyPrivateSearchDefault;
27
+ //# sourceMappingURL=applyPrivateSearchDefault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyPrivateSearchDefault.js","sources":["../../../admin/src/utils/applyPrivateSearchDefault.ts"],"sourcesContent":["const SEARCHABLE_ATTRIBUTE_TYPES = new Set([\n 'string',\n 'text',\n 'uid',\n 'email',\n 'enumeration',\n 'richtext',\n 'biginteger',\n 'integer',\n 'decimal',\n 'float',\n]);\n\ntype Attribute = {\n type?: unknown;\n private?: unknown;\n searchable?: unknown;\n};\n\n// Mirrors the scalar types used by database search without importing server code into the admin.\nexport const applyPrivateSearchDefault = <T extends Attribute>(attribute: T): T => {\n if (\n attribute.private === true &&\n attribute.searchable === undefined &&\n typeof attribute.type === 'string' &&\n SEARCHABLE_ATTRIBUTE_TYPES.has(attribute.type)\n ) {\n return { ...attribute, searchable: false };\n }\n\n return attribute;\n};\n"],"names":["SEARCHABLE_ATTRIBUTE_TYPES","Set","applyPrivateSearchDefault","attribute","private","searchable","undefined","type","has"],"mappings":";;AAAA,MAAMA,0BAAAA,GAA6B,IAAIC,GAAAA,CAAI;AACzC,IAAA,QAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,OAAA;AACA,IAAA,aAAA;AACA,IAAA,UAAA;AACA,IAAA,YAAA;AACA,IAAA,SAAA;AACA,IAAA,SAAA;AACA,IAAA;AACD,CAAA,CAAA;AAQD;AACO,MAAMC,4BAA4B,CAAsBC,SAAAA,GAAAA;AAC7D,IAAA,IACEA,UAAUC,OAAO,KAAK,QACtBD,SAAAA,CAAUE,UAAU,KAAKC,SAAAA,IACzB,OAAOH,SAAAA,CAAUI,IAAI,KAAK,QAAA,IAC1BP,0BAAAA,CAA2BQ,GAAG,CAACL,SAAAA,CAAUI,IAAI,CAAA,EAC7C;QACA,OAAO;AAAE,YAAA,GAAGJ,SAAS;YAAEE,UAAAA,EAAY;AAAM,SAAA;AAC3C,IAAA;IAEA,OAAOF,SAAAA;AACT;;;;"}
@@ -0,0 +1,25 @@
1
+ const SEARCHABLE_ATTRIBUTE_TYPES = new Set([
2
+ 'string',
3
+ 'text',
4
+ 'uid',
5
+ 'email',
6
+ 'enumeration',
7
+ 'richtext',
8
+ 'biginteger',
9
+ 'integer',
10
+ 'decimal',
11
+ 'float'
12
+ ]);
13
+ // Mirrors the scalar types used by database search without importing server code into the admin.
14
+ const applyPrivateSearchDefault = (attribute)=>{
15
+ if (attribute.private === true && attribute.searchable === undefined && typeof attribute.type === 'string' && SEARCHABLE_ATTRIBUTE_TYPES.has(attribute.type)) {
16
+ return {
17
+ ...attribute,
18
+ searchable: false
19
+ };
20
+ }
21
+ return attribute;
22
+ };
23
+
24
+ export { applyPrivateSearchDefault };
25
+ //# sourceMappingURL=applyPrivateSearchDefault.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyPrivateSearchDefault.mjs","sources":["../../../admin/src/utils/applyPrivateSearchDefault.ts"],"sourcesContent":["const SEARCHABLE_ATTRIBUTE_TYPES = new Set([\n 'string',\n 'text',\n 'uid',\n 'email',\n 'enumeration',\n 'richtext',\n 'biginteger',\n 'integer',\n 'decimal',\n 'float',\n]);\n\ntype Attribute = {\n type?: unknown;\n private?: unknown;\n searchable?: unknown;\n};\n\n// Mirrors the scalar types used by database search without importing server code into the admin.\nexport const applyPrivateSearchDefault = <T extends Attribute>(attribute: T): T => {\n if (\n attribute.private === true &&\n attribute.searchable === undefined &&\n typeof attribute.type === 'string' &&\n SEARCHABLE_ATTRIBUTE_TYPES.has(attribute.type)\n ) {\n return { ...attribute, searchable: false };\n }\n\n return attribute;\n};\n"],"names":["SEARCHABLE_ATTRIBUTE_TYPES","Set","applyPrivateSearchDefault","attribute","private","searchable","undefined","type","has"],"mappings":"AAAA,MAAMA,0BAAAA,GAA6B,IAAIC,GAAAA,CAAI;AACzC,IAAA,QAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,OAAA;AACA,IAAA,aAAA;AACA,IAAA,UAAA;AACA,IAAA,YAAA;AACA,IAAA,SAAA;AACA,IAAA,SAAA;AACA,IAAA;AACD,CAAA,CAAA;AAQD;AACO,MAAMC,4BAA4B,CAAsBC,SAAAA,GAAAA;AAC7D,IAAA,IACEA,UAAUC,OAAO,KAAK,QACtBD,SAAAA,CAAUE,UAAU,KAAKC,SAAAA,IACzB,OAAOH,SAAAA,CAAUI,IAAI,KAAK,QAAA,IAC1BP,0BAAAA,CAA2BQ,GAAG,CAACL,SAAAA,CAAUI,IAAI,CAAA,EAC7C;QACA,OAAO;AAAE,YAAA,GAAGJ,SAAS;YAAEE,UAAAA,EAAY;AAAM,SAAA;AAC3C,IAAA;IAEA,OAAOF,SAAAA;AACT;;;;"}
@@ -210,6 +210,8 @@ const basePropertiesSchema = z__namespace.object({
210
210
  ]),
211
211
  configurable: z__namespace.boolean().nullish(),
212
212
  private: z__namespace.boolean().nullish(),
213
+ // Keep null invalid so searchability is always an explicit boolean when provided.
214
+ searchable: z__namespace.boolean().optional(),
213
215
  pluginOptions: z__namespace.record(z__namespace.string(), z__namespace.unknown()).optional(),
214
216
  conditions: z__namespace.preprocess((val)=>{
215
217
  return val;