@payloadcms/ui 3.71.0-internal-debug.80dab4c → 3.71.0-internal-debug.e053082

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/fieldSchemasToFormState/addFieldStatePromise.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientFieldSchemaMap,\n Data,\n DocumentPreferences,\n Field,\n FieldSchemaMap,\n FieldState,\n FlattenedBlock,\n FormState,\n FormStateWithoutComponents,\n PayloadRequest,\n Row,\n SanitizedFieldPermissions,\n SanitizedFieldsPermissions,\n SelectMode,\n SelectType,\n TabAsField,\n Validate,\n} from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { getBlockSelect, stripUnselectedFields, validateBlocksFilterOptions } from 'payload'\nimport {\n deepCopyObjectSimple,\n fieldAffectsData,\n fieldHasSubFields,\n fieldIsHiddenOrDisabled,\n fieldIsID,\n fieldIsLocalized,\n getFieldPaths,\n tabHasName,\n} from 'payload/shared'\n\nimport type { RenderFieldMethod } from './types.js'\n\nimport { resolveFilterOptions } from '../../utilities/resolveFilterOptions.js'\nimport { isRowCollapsed } from './isRowCollapsed.js'\nimport { iterateFields } from './iterateFields.js'\n\nconst ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport\n\nexport type AddFieldStatePromiseArgs = {\n addErrorPathToParent: (fieldPath: string) => void\n /**\n * if all parents are localized, then the field is localized\n */\n anyParentLocalized?: boolean\n /**\n * Data of the nearest parent block, or undefined\n */\n blockData: Data | undefined\n clientFieldSchemaMap?: ClientFieldSchemaMap\n collectionSlug?: string\n data: Data\n field: Field\n fieldIndex: number\n fieldSchemaMap: FieldSchemaMap\n /**\n * You can use this to filter down to only `localized` fields that require translation (type: text, textarea, etc.). Another plugin might want to look for only `point` type fields to do some GIS function. With the filter function you can go in like a surgeon.\n */\n filter?: (args: AddFieldStatePromiseArgs) => boolean\n /**\n * Force the value of fields like arrays or blocks to be the full value instead of the length @default false\n */\n forceFullValue?: boolean\n fullData: Data\n id: number | string\n /**\n * Whether the field schema should be included in the state\n */\n includeSchema?: boolean\n indexPath: string\n mockRSCs?: BuildFormStateArgs['mockRSCs']\n /**\n * Whether to omit parent fields in the state. @default false\n */\n omitParents?: boolean\n operation: 'create' | 'update'\n parentIndexPath: string\n parentPath: string\n parentPermissions: SanitizedFieldsPermissions\n parentSchemaPath: string\n passesCondition: boolean\n path: string\n preferences: DocumentPreferences\n previousFormState: FormState\n readOnly?: boolean\n renderAllFields: boolean\n renderFieldFn: RenderFieldMethod\n /**\n * Req is used for validation and defaultValue calculation. If you don't need validation,\n * just create your own req and pass in the locale and the user\n */\n req: PayloadRequest\n schemaPath: string\n select?: SelectType\n selectMode?: SelectMode\n /**\n * Whether to skip checking the field's condition. @default false\n */\n skipConditionChecks?: boolean\n /**\n * Whether to skip validating the field. @default false\n */\n skipValidation?: boolean\n state: FormStateWithoutComponents\n}\n\n/**\n * Flattens the fields schema and fields data.\n * The output is the field path (e.g. array.0.name) mapped to a FormField object.\n */\nexport const addFieldStatePromise = async (args: AddFieldStatePromiseArgs): Promise<void> => {\n const {\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized = false,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data,\n field,\n fieldSchemaMap,\n filter,\n forceFullValue = false,\n fullData,\n includeSchema = false,\n indexPath,\n mockRSCs,\n omitParents = false,\n operation,\n parentPath,\n parentPermissions,\n parentSchemaPath,\n passesCondition,\n path,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n schemaPath,\n select,\n selectMode,\n skipConditionChecks = false,\n skipValidation = false,\n state,\n } = args\n\n if (!args.clientFieldSchemaMap && args.renderFieldFn) {\n // eslint-disable-next-line no-console\n console.warn(\n 'clientFieldSchemaMap is not passed to addFieldStatePromise - this will reduce performance',\n )\n }\n\n let fieldPermissions: SanitizedFieldPermissions = true\n\n const fieldState: FieldState = {}\n\n const lastRenderedPath = previousFormState?.[path]?.lastRenderedPath\n\n // Append only if true to avoid sending '$undefined' through the network\n if (lastRenderedPath) {\n fieldState.lastRenderedPath = lastRenderedPath\n }\n\n // If we're rendering all fields, no need to flag this as added by server\n const addedByServer = !renderAllFields && !previousFormState?.[path]\n\n // Append only if true to avoid sending '$undefined' through the network\n if (addedByServer) {\n fieldState.addedByServer = true\n }\n\n // Append only if true to avoid sending '$undefined' through the network\n if (passesCondition === false) {\n fieldState.passesCondition = false\n }\n\n // Append only if true to avoid sending '$undefined' through the network\n if (includeSchema) {\n fieldState.fieldSchema = field\n }\n\n if (fieldAffectsData(field) && !fieldIsHiddenOrDisabled(field)) {\n fieldPermissions =\n parentPermissions === true\n ? parentPermissions\n : deepCopyObjectSimple(parentPermissions?.[field.name])\n\n let hasPermission: boolean =\n fieldPermissions === true || deepCopyObjectSimple(fieldPermissions?.read)\n\n if (typeof field?.access?.read === 'function') {\n hasPermission = await field.access.read({\n id,\n blockData,\n data: fullData,\n req,\n siblingData: data,\n })\n } else {\n hasPermission = true\n }\n\n if (!hasPermission) {\n return\n }\n\n const validate: Validate = field.validate\n\n let validationResult: string | true = true\n\n if (typeof validate === 'function' && !skipValidation && passesCondition) {\n let jsonError\n\n if (field.type === 'json' && typeof data[field.name] === 'string') {\n try {\n JSON.parse(data[field.name])\n } catch (e) {\n jsonError = e\n }\n }\n\n try {\n validationResult = await validate(data?.[field.name], {\n ...field,\n id,\n blockData,\n collectionSlug,\n data: fullData,\n event: 'onChange',\n // @AlessioGr added `jsonError` in https://github.com/payloadcms/payload/commit/c7ea62a39473408c3ea912c4fbf73e11be4b538d\n // @ts-expect-error-next-line\n jsonError,\n operation,\n preferences,\n previousValue: previousFormState?.[path]?.initialValue,\n req,\n siblingData: data,\n })\n } catch (err) {\n validationResult = `Error validating field at path: ${path}`\n\n req.payload.logger.error({\n err,\n msg: validationResult,\n })\n }\n }\n\n /**\n * This function adds the error **path** to the current field and all its parents. If a field is invalid, all its parents are also invalid.\n * It does not add the error **message** to the current field, as that shouldn't apply to all parents.\n * This is done separately below.\n */\n const addErrorPathToParent = (errorPath: string) => {\n if (typeof addErrorPathToParentArg === 'function') {\n addErrorPathToParentArg(errorPath)\n }\n\n if (!fieldState.errorPaths) {\n fieldState.errorPaths = []\n }\n\n if (!fieldState.errorPaths.includes(errorPath)) {\n fieldState.errorPaths.push(errorPath)\n fieldState.valid = false\n }\n }\n\n if (typeof validationResult === 'string') {\n fieldState.errorMessage = validationResult\n fieldState.valid = false\n addErrorPathToParent(path)\n }\n\n switch (field.type) {\n case 'array': {\n const arrayValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n const arraySelect = select?.[field.name]\n\n const { promises, rows } = arrayValue.reduce(\n (acc, row, i: number) => {\n const parentPath = path + '.' + i\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n const idKey = parentPath + '.id'\n\n state[idKey] = {\n initialValue: row.id,\n value: row.id,\n }\n\n if (includeSchema) {\n state[idKey].fieldSchema = field.fields.find((field) => fieldIsID(field))\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data: row,\n fields: field.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: '',\n parentPassesCondition: passesCondition,\n parentPath,\n parentSchemaPath: schemaPath,\n permissions:\n fieldPermissions === true ? fieldPermissions : fieldPermissions?.fields || {},\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n if (!acc.rows) {\n acc.rows = []\n }\n\n // First, check if `previousFormState` has a matching row\n const previousRow: Row = (previousFormState?.[path]?.rows || []).find(\n (prevRow) => prevRow.id === row.id,\n )\n\n const newRow: Row = {\n id: row.id,\n isLoading: false,\n }\n\n if (previousRow?.lastRenderedPath) {\n newRow.lastRenderedPath = previousRow.lastRenderedPath\n }\n\n // add addedByServer flag\n if (!previousRow) {\n newRow.addedByServer = true\n }\n\n const isCollapsed = isRowCollapsed({\n collapsedPrefs: preferences?.fields?.[path]?.collapsed,\n field,\n previousRow,\n row,\n })\n\n if (isCollapsed) {\n newRow.collapsed = true\n }\n\n acc.rows.push(newRow)\n\n return acc\n },\n {\n promises: [],\n rows: [],\n },\n )\n\n // Wait for all promises and update fields with the results\n await Promise.all(promises)\n\n if (rows) {\n fieldState.rows = rows\n }\n\n // Add values to field state\n if (data[field.name] !== null) {\n fieldState.value = forceFullValue ? arrayValue : arrayValue.length\n fieldState.initialValue = forceFullValue ? arrayValue : arrayValue.length\n\n if (arrayValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[path] = fieldState\n }\n\n break\n }\n\n case 'blocks': {\n const blocksValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n // Handle blocks filterOptions\n let filterOptionsValidationResult: Awaited<\n ReturnType<typeof validateBlocksFilterOptions>\n > | null = null\n if (field.filterOptions) {\n filterOptionsValidationResult = await validateBlocksFilterOptions({\n id,\n data: fullData,\n filterOptions: field.filterOptions,\n req,\n siblingData: data,\n value: data[field.name],\n })\n\n fieldState.blocksFilterOptions = filterOptionsValidationResult.allowedBlockSlugs\n }\n\n const { promises, rowMetadata } = blocksValue.reduce(\n (acc, row, i: number) => {\n const blockTypeToMatch: string = row.blockType\n\n const block =\n req.payload.blocks[blockTypeToMatch] ??\n ((field.blockReferences ?? field.blocks).find(\n (blockType) => typeof blockType !== 'string' && blockType.slug === blockTypeToMatch,\n ) as FlattenedBlock | undefined)\n\n if (!block) {\n throw new Error(\n `Block with type \"${row.blockType}\" was found in block data, but no block with that type is defined in the config for field with schema path ${schemaPath}.`,\n )\n }\n\n const { blockSelect, blockSelectMode } = getBlockSelect({\n block,\n select: select?.[field.name],\n selectMode,\n })\n\n const parentPath = path + '.' + i\n\n if (block) {\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n // Handle block `id` field\n const idKey = parentPath + '.id'\n\n state[idKey] = {\n initialValue: row.id,\n value: row.id,\n }\n\n // If the blocks field fails filterOptions validation, add error paths to the individual blocks that are no longer allowed\n if (\n filterOptionsValidationResult?.invalidBlockSlugs?.length &&\n filterOptionsValidationResult.invalidBlockSlugs.includes(row.blockType)\n ) {\n state[idKey].errorMessage = req.t('validation:invalidBlock', {\n block: row.blockType,\n })\n state[idKey].valid = false\n addErrorPathToParent(idKey)\n\n // If the error is due to block filterOptions, we want the blocks field (fieldState) to include all the filterOptions-related\n // error paths for each sub-block, not for the validation result of the block itself. Otherwise, say there are 2 invalid blocks,\n // the blocks field will have 3 instead of 2 error paths - one for itself, and one for each invalid block.\n // Instead, we want only the 2 error paths for the individual, invalid blocks.\n fieldState.errorPaths = fieldState.errorPaths.filter(\n (errorPath) => errorPath !== path,\n )\n }\n\n if (includeSchema) {\n state[idKey].fieldSchema = includeSchema\n ? block.fields.find((blockField) => fieldIsID(blockField))\n : undefined\n }\n\n // Handle `blockType` field\n const fieldKey = parentPath + '.blockType'\n\n state[fieldKey] = {\n initialValue: row.blockType,\n value: row.blockType,\n }\n\n if (addedByServer) {\n state[fieldKey].addedByServer = addedByServer\n }\n\n if (includeSchema) {\n state[fieldKey].fieldSchema = block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockType',\n )\n }\n\n // Handle `blockName` field\n const blockNameKey = parentPath + '.blockName'\n\n state[blockNameKey] = {}\n\n if (row.blockName) {\n state[blockNameKey].initialValue = row.blockName\n state[blockNameKey].value = row.blockName\n }\n\n if (includeSchema) {\n state[blockNameKey].fieldSchema = block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockName',\n )\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n blockData: row,\n clientFieldSchemaMap,\n collectionSlug,\n data: row,\n fields: block.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: '',\n parentPassesCondition: passesCondition,\n parentPath,\n parentSchemaPath: schemaPath + '.' + block.slug,\n permissions:\n fieldPermissions === true\n ? fieldPermissions\n : parentPermissions?.[field.name]?.blocks?.[block.slug] === true\n ? true\n : parentPermissions?.[field.name]?.blocks?.[block.slug]?.fields || {},\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n // First, check if `previousFormState` has a matching row\n const previousRow: Row = (previousFormState?.[path]?.rows || []).find(\n (prevRow) => prevRow.id === row.id,\n )\n\n const newRow: Row = {\n id: row.id,\n blockType: row.blockType,\n isLoading: false,\n }\n\n if (previousRow?.lastRenderedPath) {\n newRow.lastRenderedPath = previousRow.lastRenderedPath\n }\n\n acc.rowMetadata.push(newRow)\n\n const isCollapsed = isRowCollapsed({\n collapsedPrefs: preferences?.fields?.[path]?.collapsed,\n field,\n previousRow,\n row,\n })\n\n if (isCollapsed) {\n acc.rowMetadata[acc.rowMetadata.length - 1].collapsed = true\n }\n }\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (data[field.name] === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? blocksValue : blocksValue.length\n fieldState.initialValue = forceFullValue ? blocksValue : blocksValue.length\n\n if (blocksValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[path] = fieldState\n }\n\n break\n }\n\n case 'group': {\n if (!filter || filter(args)) {\n fieldState.disableFormData = true\n state[path] = fieldState\n }\n\n const groupSelect = select?.[field.name]\n\n await iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data: data?.[field.name] || {},\n fields: field.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: '',\n parentPassesCondition: passesCondition,\n parentPath: path,\n parentSchemaPath: schemaPath,\n permissions:\n typeof fieldPermissions === 'boolean' ? fieldPermissions : fieldPermissions?.fields,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: typeof groupSelect === 'object' ? groupSelect : undefined,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n })\n\n break\n }\n\n case 'relationship':\n case 'upload': {\n if (field.filterOptions) {\n if (typeof field.filterOptions === 'object') {\n if (typeof field.relationTo === 'string') {\n fieldState.filterOptions = {\n [field.relationTo]: field.filterOptions,\n }\n } else {\n fieldState.filterOptions = field.relationTo.reduce((acc, relation) => {\n acc[relation] = field.filterOptions\n return acc\n }, {})\n }\n }\n\n if (typeof field.filterOptions === 'function') {\n const query = await resolveFilterOptions(field.filterOptions, {\n id,\n blockData,\n data: fullData,\n relationTo: field.relationTo,\n req,\n siblingData: data,\n user: req.user,\n })\n\n fieldState.filterOptions = query\n }\n }\n\n if (field.hasMany) {\n const relationshipValue = Array.isArray(data[field.name])\n ? data[field.name].map((relationship) => {\n if (Array.isArray(field.relationTo)) {\n return {\n relationTo: relationship.relationTo,\n value:\n relationship.value && typeof relationship.value === 'object'\n ? relationship.value?.id\n : relationship.value,\n }\n }\n if (typeof relationship === 'object' && relationship !== null) {\n return relationship.id\n }\n return relationship\n })\n : undefined\n\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n } else if (Array.isArray(field.relationTo)) {\n if (\n data[field.name] &&\n typeof data[field.name] === 'object' &&\n 'relationTo' in data[field.name] &&\n 'value' in data[field.name]\n ) {\n const value =\n typeof data[field.name]?.value === 'object' &&\n data[field.name]?.value &&\n 'id' in data[field.name].value\n ? data[field.name].value.id\n : data[field.name].value\n const relationshipValue = {\n relationTo: data[field.name]?.relationTo,\n value,\n }\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n } else {\n const relationshipValue =\n data[field.name] && typeof data[field.name] === 'object' && 'id' in data[field.name]\n ? data[field.name].id\n : data[field.name]\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n\n if (!filter || filter(args)) {\n state[path] = fieldState\n }\n\n break\n }\n\n case 'select': {\n if (typeof field.filterOptions === 'function') {\n fieldState.selectFilterOptions = field.filterOptions({\n data: fullData,\n options: field.options,\n req,\n siblingData: data,\n })\n }\n\n if (data[field.name] !== undefined) {\n fieldState.value = data[field.name]\n fieldState.initialValue = data[field.name]\n }\n\n if (!filter || filter(args)) {\n state[path] = fieldState\n }\n\n break\n }\n\n default: {\n if (data[field.name] !== undefined) {\n fieldState.value = data[field.name]\n fieldState.initialValue = data[field.name]\n }\n\n // Add field to state\n if (!filter || filter(args)) {\n state[path] = fieldState\n }\n\n break\n }\n }\n } else if (fieldHasSubFields(field) && !fieldAffectsData(field)) {\n // Handle field types that do not use names (row, collapsible, unnamed group etc)\n\n if (!filter || filter(args)) {\n state[path] = {\n disableFormData: true,\n }\n\n if (passesCondition === false) {\n state[path].passesCondition = false\n }\n }\n\n await iterateFields({\n id,\n mockRSCs,\n select,\n selectMode,\n // passthrough parent functionality\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: fieldIsLocalized(field) || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data,\n fields: field.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentIndexPath: indexPath,\n parentPassesCondition: passesCondition,\n parentPath,\n parentSchemaPath,\n permissions: parentPermissions, // TODO: Verify this is correct\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'tabs') {\n const promises = field.tabs.map((tab, tabIndex) => {\n const isNamedTab = tabHasName(tab)\n let tabSelect: SelectType | undefined\n\n const tabField: TabAsField = {\n ...tab,\n type: 'tab',\n }\n\n const {\n indexPath: tabIndexPath,\n path: tabPath,\n schemaPath: tabSchemaPath,\n } = getFieldPaths({\n field: tabField,\n index: tabIndex,\n parentIndexPath: indexPath,\n parentPath,\n parentSchemaPath,\n })\n\n let childPermissions: SanitizedFieldsPermissions = undefined\n\n if (isNamedTab) {\n const shouldContinue = stripUnselectedFields({\n field: tabField,\n select,\n selectMode,\n siblingDoc: data?.[tab.name] || {},\n })\n\n if (!shouldContinue) {\n return\n }\n\n if (parentPermissions === true) {\n childPermissions = true\n } else {\n const tabPermissions = parentPermissions?.[tab.name]\n if (tabPermissions === true) {\n childPermissions = true\n } else {\n childPermissions = tabPermissions?.fields\n }\n }\n\n if (typeof select?.[tab.name] === 'object') {\n tabSelect = select?.[tab.name] as SelectType\n }\n } else {\n childPermissions = parentPermissions\n tabSelect = select\n }\n\n const pathSegments = path ? path.split('.') : []\n\n // If passesCondition is false then this should always result to false\n // If the tab has no admin.condition provided then fallback to passesCondition and let that decide the result\n let tabPassesCondition = passesCondition\n\n if (passesCondition && typeof tab.admin?.condition === 'function') {\n tabPassesCondition = tab.admin.condition(fullData, data, {\n blockData,\n operation,\n path: pathSegments,\n user: req.user,\n })\n }\n\n if (tab?.id) {\n state[tab.id] = {\n passesCondition: tabPassesCondition,\n }\n }\n\n return iterateFields({\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: tab.localized || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data: isNamedTab ? data?.[tab.name] || {} : data,\n fields: tab.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: isNamedTab ? '' : tabIndexPath,\n parentPassesCondition: tabPassesCondition,\n parentPath: isNamedTab ? tabPath : parentPath,\n parentSchemaPath: isNamedTab ? tabSchemaPath : parentSchemaPath,\n permissions: childPermissions,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: tabSelect,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n })\n })\n\n await Promise.all(promises)\n } else if (field.type === 'ui') {\n if (!filter || filter(args)) {\n state[path] = fieldState\n state[path].disableFormData = true\n }\n }\n\n if (renderFieldFn && !fieldIsHiddenOrDisabled(field)) {\n const fieldConfig = fieldSchemaMap.get(schemaPath)\n\n if (!fieldConfig && !mockRSCs) {\n if (schemaPath.endsWith('.blockType')) {\n return\n } else {\n throw new Error(`Field config not found for ${schemaPath}`)\n }\n }\n\n if (!state[path]) {\n // Some fields (ie `Tab`) do not live in form state\n // therefore we cannot attach customComponents to them\n return\n }\n\n if (addedByServer) {\n state[path].addedByServer = addedByServer\n }\n\n renderFieldFn({\n id,\n clientFieldSchemaMap,\n collectionSlug,\n data: fullData,\n fieldConfig: fieldConfig as Field,\n fieldSchemaMap,\n fieldState: state[path],\n formState: state,\n indexPath,\n lastRenderedPath,\n mockRSCs,\n operation,\n parentPath,\n parentSchemaPath,\n path,\n permissions: fieldPermissions,\n preferences,\n previousFieldState: previousFormState?.[path],\n readOnly,\n renderAllFields,\n req,\n schemaPath,\n siblingData: data,\n })\n }\n}\n"],"names":["ObjectIdImport","getBlockSelect","stripUnselectedFields","validateBlocksFilterOptions","deepCopyObjectSimple","fieldAffectsData","fieldHasSubFields","fieldIsHiddenOrDisabled","fieldIsID","fieldIsLocalized","getFieldPaths","tabHasName","resolveFilterOptions","isRowCollapsed","iterateFields","ObjectId","default","addFieldStatePromise","args","id","addErrorPathToParent","addErrorPathToParentArg","anyParentLocalized","blockData","clientFieldSchemaMap","collectionSlug","data","field","fieldSchemaMap","filter","forceFullValue","fullData","includeSchema","indexPath","mockRSCs","omitParents","operation","parentPath","parentPermissions","parentSchemaPath","passesCondition","path","preferences","previousFormState","readOnly","renderAllFields","renderFieldFn","req","schemaPath","select","selectMode","skipConditionChecks","skipValidation","state","console","warn","fieldPermissions","fieldState","lastRenderedPath","addedByServer","fieldSchema","name","hasPermission","read","access","siblingData","validate","validationResult","jsonError","type","JSON","parse","e","event","previousValue","initialValue","err","payload","logger","error","msg","errorPath","errorPaths","includes","push","valid","errorMessage","arrayValue","Array","isArray","arraySelect","promises","rows","reduce","acc","row","i","toHexString","idKey","value","fields","find","localized","parentIndexPath","parentPassesCondition","permissions","undefined","previousRow","prevRow","newRow","isLoading","isCollapsed","collapsedPrefs","collapsed","Promise","all","length","disableFormData","blocksValue","filterOptionsValidationResult","filterOptions","blocksFilterOptions","allowedBlockSlugs","rowMetadata","blockTypeToMatch","blockType","block","blocks","blockReferences","slug","Error","blockSelect","blockSelectMode","invalidBlockSlugs","t","blockField","fieldKey","blockNameKey","blockName","groupSelect","relationTo","relation","query","user","hasMany","relationshipValue","map","relationship","selectFilterOptions","options","tabs","tab","tabIndex","isNamedTab","tabSelect","tabField","tabIndexPath","tabPath","tabSchemaPath","index","childPermissions","shouldContinue","siblingDoc","tabPermissions","pathSegments","split","tabPassesCondition","admin","condition","fieldConfig","get","endsWith","formState","previousFieldState"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/forms/fieldSchemasToFormState/addFieldStatePromise.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientFieldSchemaMap,\n Data,\n DocumentPreferences,\n Field,\n FieldSchemaMap,\n FieldState,\n FlattenedBlock,\n FormState,\n FormStateWithoutComponents,\n PayloadRequest,\n Row,\n SanitizedFieldPermissions,\n SanitizedFieldsPermissions,\n SelectMode,\n SelectType,\n TabAsField,\n Validate,\n} from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { getBlockSelect, stripUnselectedFields, validateBlocksFilterOptions } from 'payload'\nimport {\n deepCopyObjectSimple,\n fieldAffectsData,\n fieldHasSubFields,\n fieldIsHiddenOrDisabled,\n fieldIsID,\n fieldIsLocalized,\n tabHasName,\n} from 'payload/shared'\n\nimport type { RenderFieldMethod } from './types.js'\n\nimport { resolveFilterOptions } from '../../utilities/resolveFilterOptions.js'\nimport { isRowCollapsed } from './isRowCollapsed.js'\nimport { iterateFields } from './iterateFields.js'\n\nconst ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport\n\nexport type AddFieldStatePromiseArgs = {\n addErrorPathToParent: (fieldPath: string) => void\n /**\n * if all parents are localized, then the field is localized\n */\n anyParentLocalized?: boolean\n /**\n * Data of the nearest parent block, or undefined\n */\n blockData: Data | undefined\n clientFieldSchemaMap?: ClientFieldSchemaMap\n collectionSlug?: string\n data: Data\n field: Field | TabAsField\n fieldIndex: number\n fieldSchemaMap: FieldSchemaMap\n /**\n * You can use this to filter down to only `localized` fields that require translation (type: text, textarea, etc.). Another plugin might want to look for only `point` type fields to do some GIS function. With the filter function you can go in like a surgeon.\n */\n filter?: (args: AddFieldStatePromiseArgs) => boolean\n /**\n * Force the value of fields like arrays or blocks to be the full value instead of the length @default false\n */\n forceFullValue?: boolean\n fullData: Data\n id: number | string\n /**\n * Whether the field schema should be included in the state\n */\n includeSchema?: boolean\n indexPath: string\n mockRSCs?: BuildFormStateArgs['mockRSCs']\n /**\n * Whether to omit parent fields in the state. @default false\n */\n omitParents?: boolean\n operation: 'create' | 'update'\n parentIndexPath: string\n parentPath: string\n parentPermissions: SanitizedFieldsPermissions\n parentSchemaPath: string\n passesCondition: boolean\n path: string\n preferences: DocumentPreferences\n previousFormState: FormState\n readOnly?: boolean\n renderAllFields: boolean\n renderFieldFn: RenderFieldMethod\n /**\n * Req is used for validation and defaultValue calculation. If you don't need validation,\n * just create your own req and pass in the locale and the user\n */\n req: PayloadRequest\n schemaPath: string\n select?: SelectType\n selectMode?: SelectMode\n /**\n * Whether to skip checking the field's condition. @default false\n */\n skipConditionChecks?: boolean\n /**\n * Whether to skip validating the field. @default false\n */\n skipValidation?: boolean\n state: FormStateWithoutComponents\n}\n\n/**\n * Flattens the fields schema and fields data.\n * The output is the field path (e.g. array.0.name) mapped to a FormField object.\n */\nexport const addFieldStatePromise = async (args: AddFieldStatePromiseArgs): Promise<void> => {\n const {\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized = false,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data,\n field,\n fieldSchemaMap,\n filter,\n forceFullValue = false,\n fullData,\n includeSchema = false,\n indexPath,\n mockRSCs,\n omitParents = false,\n operation,\n parentPath,\n parentPermissions,\n parentSchemaPath,\n passesCondition,\n path,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n schemaPath,\n select,\n selectMode,\n skipConditionChecks = false,\n skipValidation = false,\n state,\n } = args\n\n if (!args.clientFieldSchemaMap && args.renderFieldFn) {\n // eslint-disable-next-line no-console\n console.warn(\n 'clientFieldSchemaMap is not passed to addFieldStatePromise - this will reduce performance',\n )\n }\n\n let fieldPermissions: SanitizedFieldPermissions = true\n\n const fieldState: FieldState = {}\n\n const lastRenderedPath = previousFormState?.[path]?.lastRenderedPath\n\n // Append only if true to avoid sending '$undefined' through the network\n if (lastRenderedPath) {\n fieldState.lastRenderedPath = lastRenderedPath\n }\n\n // If we're rendering all fields, no need to flag this as added by server\n const addedByServer = !renderAllFields && !previousFormState?.[path]\n\n // Append only if true to avoid sending '$undefined' through the network\n if (addedByServer) {\n fieldState.addedByServer = true\n }\n\n // Append only if true to avoid sending '$undefined' through the network\n if (passesCondition === false) {\n fieldState.passesCondition = false\n }\n\n // Append only if true to avoid sending '$undefined' through the network\n if (includeSchema) {\n fieldState.fieldSchema = field\n }\n\n if (fieldAffectsData(field) && !fieldIsHiddenOrDisabled(field) && field.type !== 'tab') {\n fieldPermissions =\n parentPermissions === true\n ? parentPermissions\n : deepCopyObjectSimple(parentPermissions?.[field.name])\n\n let hasPermission: boolean =\n fieldPermissions === true || deepCopyObjectSimple(fieldPermissions?.read)\n\n if (typeof field?.access?.read === 'function') {\n hasPermission = await field.access.read({\n id,\n blockData,\n data: fullData,\n req,\n siblingData: data,\n })\n } else {\n hasPermission = true\n }\n\n if (!hasPermission) {\n return\n }\n\n const validate: Validate = 'validate' in field ? field.validate : undefined\n\n let validationResult: string | true = true\n\n if (typeof validate === 'function' && !skipValidation && passesCondition) {\n let jsonError\n\n if (field.type === 'json' && typeof data[field.name] === 'string') {\n try {\n JSON.parse(data[field.name])\n } catch (e) {\n jsonError = e\n }\n }\n\n try {\n validationResult = await validate(data?.[field.name], {\n ...field,\n id,\n blockData,\n collectionSlug,\n data: fullData,\n event: 'onChange',\n // @AlessioGr added `jsonError` in https://github.com/payloadcms/payload/commit/c7ea62a39473408c3ea912c4fbf73e11be4b538d\n // @ts-expect-error-next-line\n jsonError,\n operation,\n preferences,\n previousValue: previousFormState?.[path]?.initialValue,\n req,\n siblingData: data,\n })\n } catch (err) {\n validationResult = `Error validating field at path: ${path}`\n\n req.payload.logger.error({\n err,\n msg: validationResult,\n })\n }\n }\n\n /**\n * This function adds the error **path** to the current field and all its parents. If a field is invalid, all its parents are also invalid.\n * It does not add the error **message** to the current field, as that shouldn't apply to all parents.\n * This is done separately below.\n */\n const addErrorPathToParent = (errorPath: string) => {\n if (typeof addErrorPathToParentArg === 'function') {\n addErrorPathToParentArg(errorPath)\n }\n\n if (!fieldState.errorPaths) {\n fieldState.errorPaths = []\n }\n\n if (!fieldState.errorPaths.includes(errorPath)) {\n fieldState.errorPaths.push(errorPath)\n fieldState.valid = false\n }\n }\n\n if (typeof validationResult === 'string') {\n fieldState.errorMessage = validationResult\n fieldState.valid = false\n addErrorPathToParent(path)\n }\n\n switch (field.type) {\n case 'array': {\n const arrayValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n const arraySelect = select?.[field.name]\n\n const { promises, rows } = arrayValue.reduce(\n (acc, row, rowIndex: number) => {\n const rowPath = path + '.' + rowIndex\n\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n const idKey = rowPath + '.id'\n\n state[idKey] = {\n initialValue: row.id,\n value: row.id,\n }\n\n if (includeSchema) {\n state[idKey].fieldSchema = field.fields.find((field) => fieldIsID(field))\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data: row,\n fields: field.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: '',\n parentPassesCondition: passesCondition,\n parentPath: rowPath,\n parentSchemaPath: schemaPath,\n permissions:\n fieldPermissions === true ? fieldPermissions : fieldPermissions?.fields || {},\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n if (!acc.rows) {\n acc.rows = []\n }\n\n // First, check if `previousFormState` has a matching row\n const previousRow: Row = (previousFormState?.[path]?.rows || []).find(\n (prevRow) => prevRow.id === row.id,\n )\n\n const newRow: Row = {\n id: row.id,\n isLoading: false,\n }\n\n if (previousRow?.lastRenderedPath) {\n newRow.lastRenderedPath = previousRow.lastRenderedPath\n }\n\n // add addedByServer flag\n if (!previousRow) {\n newRow.addedByServer = true\n }\n\n const isCollapsed = isRowCollapsed({\n collapsedPrefs: preferences?.fields?.[path]?.collapsed,\n field,\n previousRow,\n row,\n })\n\n if (isCollapsed) {\n newRow.collapsed = true\n }\n\n acc.rows.push(newRow)\n\n return acc\n },\n {\n promises: [],\n rows: [],\n },\n )\n\n // Wait for all promises and update fields with the results\n await Promise.all(promises)\n\n if (rows) {\n fieldState.rows = rows\n }\n\n // Add values to field state\n if (data[field.name] !== null) {\n fieldState.value = forceFullValue ? arrayValue : arrayValue.length\n fieldState.initialValue = forceFullValue ? arrayValue : arrayValue.length\n\n if (arrayValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[path] = fieldState\n }\n\n break\n }\n\n case 'blocks': {\n const blocksValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n // Handle blocks filterOptions\n let filterOptionsValidationResult: Awaited<\n ReturnType<typeof validateBlocksFilterOptions>\n > | null = null\n if (field.filterOptions) {\n filterOptionsValidationResult = await validateBlocksFilterOptions({\n id,\n data: fullData,\n filterOptions: field.filterOptions,\n req,\n siblingData: data,\n value: data[field.name],\n })\n\n fieldState.blocksFilterOptions = filterOptionsValidationResult.allowedBlockSlugs\n }\n\n const { promises, rowMetadata } = blocksValue.reduce(\n (acc, row, i: number) => {\n const blockTypeToMatch: string = row.blockType\n\n const block =\n req.payload.blocks[blockTypeToMatch] ??\n ((field.blockReferences ?? field.blocks).find(\n (blockType) => typeof blockType !== 'string' && blockType.slug === blockTypeToMatch,\n ) as FlattenedBlock | undefined)\n\n if (!block) {\n throw new Error(\n `Block with type \"${row.blockType}\" was found in block data, but no block with that type is defined in the config for field with schema path ${schemaPath}.`,\n )\n }\n\n const { blockSelect, blockSelectMode } = getBlockSelect({\n block,\n select: select?.[field.name],\n selectMode,\n })\n\n const rowPath = path + '.' + i\n\n if (block) {\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n // Handle block `id` field\n const idKey = rowPath + '.id'\n\n state[idKey] = {\n initialValue: row.id,\n value: row.id,\n }\n\n // If the blocks field fails filterOptions validation, add error paths to the individual blocks that are no longer allowed\n if (\n filterOptionsValidationResult?.invalidBlockSlugs?.length &&\n filterOptionsValidationResult.invalidBlockSlugs.includes(row.blockType)\n ) {\n state[idKey].errorMessage = req.t('validation:invalidBlock', {\n block: row.blockType,\n })\n state[idKey].valid = false\n addErrorPathToParent(idKey)\n\n // If the error is due to block filterOptions, we want the blocks field (fieldState) to include all the filterOptions-related\n // error paths for each sub-block, not for the validation result of the block itself. Otherwise, say there are 2 invalid blocks,\n // the blocks field will have 3 instead of 2 error paths - one for itself, and one for each invalid block.\n // Instead, we want only the 2 error paths for the individual, invalid blocks.\n fieldState.errorPaths = fieldState.errorPaths.filter(\n (errorPath) => errorPath !== path,\n )\n }\n\n if (includeSchema) {\n state[idKey].fieldSchema = includeSchema\n ? block.fields.find((blockField) => fieldIsID(blockField))\n : undefined\n }\n\n // Handle `blockType` field\n const fieldKey = rowPath + '.blockType'\n\n state[fieldKey] = {\n initialValue: row.blockType,\n value: row.blockType,\n }\n\n if (addedByServer) {\n state[fieldKey].addedByServer = addedByServer\n }\n\n if (includeSchema) {\n state[fieldKey].fieldSchema = block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockType',\n )\n }\n\n // Handle `blockName` field\n const blockNameKey = rowPath + '.blockName'\n\n state[blockNameKey] = {}\n\n if (row.blockName) {\n state[blockNameKey].initialValue = row.blockName\n state[blockNameKey].value = row.blockName\n }\n\n if (includeSchema) {\n state[blockNameKey].fieldSchema = block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockName',\n )\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n blockData: row,\n clientFieldSchemaMap,\n collectionSlug,\n data: row,\n fields: block.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: '',\n parentPassesCondition: passesCondition,\n parentPath: rowPath,\n parentSchemaPath: schemaPath + '.' + block.slug,\n permissions:\n fieldPermissions === true\n ? fieldPermissions\n : parentPermissions?.[field.name]?.blocks?.[block.slug] === true\n ? true\n : parentPermissions?.[field.name]?.blocks?.[block.slug]?.fields || {},\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n // First, check if `previousFormState` has a matching row\n const previousRow: Row = (previousFormState?.[path]?.rows || []).find(\n (prevRow) => prevRow.id === row.id,\n )\n\n const newRow: Row = {\n id: row.id,\n blockType: row.blockType,\n isLoading: false,\n }\n\n if (previousRow?.lastRenderedPath) {\n newRow.lastRenderedPath = previousRow.lastRenderedPath\n }\n\n acc.rowMetadata.push(newRow)\n\n const isCollapsed = isRowCollapsed({\n collapsedPrefs: preferences?.fields?.[path]?.collapsed,\n field,\n previousRow,\n row,\n })\n\n if (isCollapsed) {\n acc.rowMetadata[acc.rowMetadata.length - 1].collapsed = true\n }\n }\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (data[field.name] === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? blocksValue : blocksValue.length\n fieldState.initialValue = forceFullValue ? blocksValue : blocksValue.length\n\n if (blocksValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[path] = fieldState\n }\n\n break\n }\n\n case 'group': {\n if (!filter || filter(args)) {\n fieldState.disableFormData = true\n state[path] = fieldState\n }\n\n const groupSelect = select?.[field.name]\n\n await iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data: data?.[field.name] || {},\n fields: field.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: '',\n parentPassesCondition: passesCondition,\n parentPath: path,\n parentSchemaPath: schemaPath,\n permissions:\n typeof fieldPermissions === 'boolean' ? fieldPermissions : fieldPermissions?.fields,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: typeof groupSelect === 'object' ? groupSelect : undefined,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n })\n\n break\n }\n\n case 'relationship':\n case 'upload': {\n if (field.filterOptions) {\n if (typeof field.filterOptions === 'object') {\n if (typeof field.relationTo === 'string') {\n fieldState.filterOptions = {\n [field.relationTo]: field.filterOptions,\n }\n } else {\n fieldState.filterOptions = field.relationTo.reduce((acc, relation) => {\n acc[relation] = field.filterOptions\n return acc\n }, {})\n }\n }\n\n if (typeof field.filterOptions === 'function') {\n const query = await resolveFilterOptions(field.filterOptions, {\n id,\n blockData,\n data: fullData,\n relationTo: field.relationTo,\n req,\n siblingData: data,\n user: req.user,\n })\n\n fieldState.filterOptions = query\n }\n }\n\n if (field.hasMany) {\n const relationshipValue = Array.isArray(data[field.name])\n ? data[field.name].map((relationship) => {\n if (Array.isArray(field.relationTo)) {\n return {\n relationTo: relationship.relationTo,\n value:\n relationship.value && typeof relationship.value === 'object'\n ? relationship.value?.id\n : relationship.value,\n }\n }\n if (typeof relationship === 'object' && relationship !== null) {\n return relationship.id\n }\n return relationship\n })\n : undefined\n\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n } else if (Array.isArray(field.relationTo)) {\n if (\n data[field.name] &&\n typeof data[field.name] === 'object' &&\n 'relationTo' in data[field.name] &&\n 'value' in data[field.name]\n ) {\n const value =\n typeof data[field.name]?.value === 'object' &&\n data[field.name]?.value &&\n 'id' in data[field.name].value\n ? data[field.name].value.id\n : data[field.name].value\n const relationshipValue = {\n relationTo: data[field.name]?.relationTo,\n value,\n }\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n } else {\n const relationshipValue =\n data[field.name] && typeof data[field.name] === 'object' && 'id' in data[field.name]\n ? data[field.name].id\n : data[field.name]\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n\n if (!filter || filter(args)) {\n state[path] = fieldState\n }\n\n break\n }\n\n case 'select': {\n if (typeof field.filterOptions === 'function') {\n fieldState.selectFilterOptions = field.filterOptions({\n data: fullData,\n options: field.options,\n req,\n siblingData: data,\n })\n }\n\n if (data[field.name] !== undefined) {\n fieldState.value = data[field.name]\n fieldState.initialValue = data[field.name]\n }\n\n if (!filter || filter(args)) {\n state[path] = fieldState\n }\n\n break\n }\n\n default: {\n if (data[field.name] !== undefined) {\n fieldState.value = data[field.name]\n fieldState.initialValue = data[field.name]\n }\n\n // Add field to state\n if (!filter || filter(args)) {\n state[path] = fieldState\n }\n\n break\n }\n }\n } else if (fieldHasSubFields(field) && !fieldAffectsData(field)) {\n // Handle field types that do not use names (row, collapsible, unnamed group etc)\n\n if (!filter || filter(args)) {\n state[path] = {\n disableFormData: true,\n }\n\n if (passesCondition === false) {\n state[path].passesCondition = false\n }\n }\n\n await iterateFields({\n id,\n mockRSCs,\n select,\n selectMode,\n // passthrough parent functionality\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: fieldIsLocalized(field) || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data,\n fields: field.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentIndexPath: indexPath,\n parentPassesCondition: passesCondition,\n parentPath: path,\n parentSchemaPath: schemaPath,\n permissions: parentPermissions, // TODO: Verify this is correct\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'tab') {\n const isNamedTab = tabHasName(field)\n let tabSelect: SelectType | undefined\n\n const tabField: TabAsField = {\n ...field,\n type: 'tab',\n }\n\n let childPermissions: SanitizedFieldsPermissions = undefined\n\n if (isNamedTab) {\n const shouldContinue = stripUnselectedFields({\n field: tabField,\n select,\n selectMode,\n siblingDoc: data?.[field.name] || {},\n })\n\n if (!shouldContinue) {\n return\n }\n\n if (parentPermissions === true) {\n childPermissions = true\n } else {\n const tabPermissions = parentPermissions?.[field.name]\n if (tabPermissions === true) {\n childPermissions = true\n } else {\n childPermissions = tabPermissions?.fields\n }\n }\n\n if (typeof select?.[field.name] === 'object') {\n tabSelect = select?.[field.name] as SelectType\n }\n } else {\n childPermissions = parentPermissions\n tabSelect = select\n }\n\n const pathSegments = path ? path.split('.') : []\n\n // If passesCondition is false then this should always result to false\n // If the tab has no admin.condition provided then fallback to passesCondition and let that decide the result\n let tabPassesCondition = passesCondition\n\n if (passesCondition && typeof field.admin?.condition === 'function') {\n tabPassesCondition = field.admin.condition(fullData, data, {\n blockData,\n operation,\n path: pathSegments,\n user: req.user,\n })\n }\n\n if (field?.id) {\n state[field.id] = {\n passesCondition: tabPassesCondition,\n }\n }\n\n return iterateFields({\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: field.localized || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data: isNamedTab ? data?.[field.name] || {} : data,\n fields: field.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: indexPath,\n parentPassesCondition: tabPassesCondition,\n parentPath: path,\n parentSchemaPath: schemaPath,\n permissions: childPermissions,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: tabSelect,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'tabs') {\n return iterateFields({\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: fieldIsLocalized(field) || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentIndexPath: indexPath,\n parentPassesCondition: passesCondition,\n parentPath: path,\n parentSchemaPath: schemaPath,\n permissions: parentPermissions,\n preferences,\n previousFormState,\n renderAllFields,\n renderFieldFn,\n req,\n select,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'ui') {\n if (!filter || filter(args)) {\n state[path] = fieldState\n state[path].disableFormData = true\n }\n }\n\n if (renderFieldFn && !fieldIsHiddenOrDisabled(field)) {\n const fieldConfig = fieldSchemaMap.get(schemaPath)\n\n if (!fieldConfig && !mockRSCs) {\n if (schemaPath.endsWith('.blockType')) {\n return\n } else {\n throw new Error(`Field config not found for ${schemaPath}`)\n }\n }\n\n if (!state[path]) {\n // Some fields (ie `Tab`) do not live in form state\n // therefore we cannot attach customComponents to them\n return\n }\n\n if (addedByServer) {\n state[path].addedByServer = addedByServer\n }\n\n renderFieldFn({\n id,\n clientFieldSchemaMap,\n collectionSlug,\n data: fullData,\n fieldConfig: fieldConfig as Field,\n fieldSchemaMap,\n fieldState: state[path],\n formState: state,\n indexPath,\n lastRenderedPath,\n mockRSCs,\n operation,\n parentPath,\n parentSchemaPath,\n path,\n permissions: fieldPermissions,\n preferences,\n previousFieldState: previousFormState?.[path],\n readOnly,\n renderAllFields,\n req,\n schemaPath,\n siblingData: data,\n })\n }\n}\n"],"names":["ObjectIdImport","getBlockSelect","stripUnselectedFields","validateBlocksFilterOptions","deepCopyObjectSimple","fieldAffectsData","fieldHasSubFields","fieldIsHiddenOrDisabled","fieldIsID","fieldIsLocalized","tabHasName","resolveFilterOptions","isRowCollapsed","iterateFields","ObjectId","default","addFieldStatePromise","args","id","addErrorPathToParent","addErrorPathToParentArg","anyParentLocalized","blockData","clientFieldSchemaMap","collectionSlug","data","field","fieldSchemaMap","filter","forceFullValue","fullData","includeSchema","indexPath","mockRSCs","omitParents","operation","parentPath","parentPermissions","parentSchemaPath","passesCondition","path","preferences","previousFormState","readOnly","renderAllFields","renderFieldFn","req","schemaPath","select","selectMode","skipConditionChecks","skipValidation","state","console","warn","fieldPermissions","fieldState","lastRenderedPath","addedByServer","fieldSchema","type","name","hasPermission","read","access","siblingData","validate","undefined","validationResult","jsonError","JSON","parse","e","event","previousValue","initialValue","err","payload","logger","error","msg","errorPath","errorPaths","includes","push","valid","errorMessage","arrayValue","Array","isArray","arraySelect","promises","rows","reduce","acc","row","rowIndex","rowPath","toHexString","idKey","value","fields","find","localized","parentIndexPath","parentPassesCondition","permissions","previousRow","prevRow","newRow","isLoading","isCollapsed","collapsedPrefs","collapsed","Promise","all","length","disableFormData","blocksValue","filterOptionsValidationResult","filterOptions","blocksFilterOptions","allowedBlockSlugs","rowMetadata","i","blockTypeToMatch","blockType","block","blocks","blockReferences","slug","Error","blockSelect","blockSelectMode","invalidBlockSlugs","t","blockField","fieldKey","blockNameKey","blockName","groupSelect","relationTo","relation","query","user","hasMany","relationshipValue","map","relationship","selectFilterOptions","options","isNamedTab","tabSelect","tabField","childPermissions","shouldContinue","siblingDoc","tabPermissions","pathSegments","split","tabPassesCondition","admin","condition","tabs","tab","fieldConfig","get","endsWith","formState","previousFieldState"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { BuildFormStateArgs, ClientFieldSchemaMap, Data, DocumentPreferences, Field as FieldSchema, FieldSchemaMap, FormState, FormStateWithoutComponents, PayloadRequest, SanitizedFieldsPermissions, SelectMode, SelectType } from 'payload';
1
+ import type { BuildFormStateArgs, ClientFieldSchemaMap, Data, DocumentPreferences, Field, FieldSchemaMap, FormState, FormStateWithoutComponents, PayloadRequest, SanitizedFieldsPermissions, SelectMode, SelectType, TabAsField } from 'payload';
2
2
  import type { AddFieldStatePromiseArgs } from './addFieldStatePromise.js';
3
3
  import type { RenderFieldMethod } from './types.js';
4
4
  type Args = {
@@ -14,7 +14,7 @@ type Args = {
14
14
  clientFieldSchemaMap?: ClientFieldSchemaMap;
15
15
  collectionSlug?: string;
16
16
  data: Data;
17
- fields: FieldSchema[];
17
+ fields: (Field | TabAsField)[];
18
18
  fieldSchemaMap: FieldSchemaMap;
19
19
  filter?: (args: AddFieldStatePromiseArgs) => boolean;
20
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"iterateFields.d.ts","sourceRoot":"","sources":["../../../src/forms/fieldSchemasToFormState/iterateFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,IAAI,EACJ,mBAAmB,EACnB,KAAK,IAAI,WAAW,EACpB,cAAc,EACd,SAAS,EACT,0BAA0B,EAC1B,cAAc,EACd,0BAA0B,EAC1B,UAAU,EACV,UAAU,EACX,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAInD,KAAK,IAAI,GAAG;IACV,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;OAEG;IACH,SAAS,EAAE,IAAI,GAAG,SAAS,CAAA;IAC3B,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,cAAc,EAAE,cAAc,CAAA;IAC9B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO,CAAA;IACpD;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,IAAI,CAAA;IACd,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACzC;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;OAEG;IACH,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,0BAA0B,CAAA;IACvC,WAAW,CAAC,EAAE,mBAAmB,CAAA;IACjC,iBAAiB,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;IACxB,aAAa,EAAE,iBAAiB,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,CAAC,EAAE,0BAA0B,CAAA;CACnC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,keAiCvB,IAAI,KAAG,OAAO,CAAC,IAAI,CAgGrB,CAAA"}
1
+ {"version":3,"file":"iterateFields.d.ts","sourceRoot":"","sources":["../../../src/forms/fieldSchemasToFormState/iterateFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,IAAI,EACJ,mBAAmB,EACnB,KAAK,EACL,cAAc,EACd,SAAS,EACT,0BAA0B,EAC1B,cAAc,EACd,0BAA0B,EAC1B,UAAU,EACV,UAAU,EACV,UAAU,EACX,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAInD,KAAK,IAAI,GAAG;IACV,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;OAEG;IACH,SAAS,EAAE,IAAI,GAAG,SAAS,CAAA;IAC3B,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,cAAc,EAAE,cAAc,CAAA;IAC9B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO,CAAA;IACpD;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,IAAI,CAAA;IACd,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACzC;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;OAEG;IACH,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,0BAA0B,CAAA;IACvC,WAAW,CAAC,EAAE,mBAAmB,CAAA;IACjC,iBAAiB,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;IACxB,aAAa,EAAE,iBAAiB,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,CAAC,EAAE,0BAA0B,CAAA;CACnC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,keAiCvB,IAAI,KAAG,OAAO,CAAC,IAAI,CAgGrB,CAAA"}
@@ -26,7 +26,7 @@ import { addFieldStatePromise } from './addFieldStatePromise.js';
26
26
  const { indexPath, path, schemaPath } = getFieldPaths({
27
27
  field,
28
28
  index: fieldIndex,
29
- parentIndexPath: 'name' in field ? '' : parentIndexPath,
29
+ parentIndexPath,
30
30
  parentPath,
31
31
  parentSchemaPath
32
32
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/fieldSchemasToFormState/iterateFields.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientFieldSchemaMap,\n Data,\n DocumentPreferences,\n Field as FieldSchema,\n FieldSchemaMap,\n FormState,\n FormStateWithoutComponents,\n PayloadRequest,\n SanitizedFieldsPermissions,\n SelectMode,\n SelectType,\n} from 'payload'\n\nimport { stripUnselectedFields } from 'payload'\nimport { getFieldPaths } from 'payload/shared'\n\nimport type { AddFieldStatePromiseArgs } from './addFieldStatePromise.js'\nimport type { RenderFieldMethod } from './types.js'\n\nimport { addFieldStatePromise } from './addFieldStatePromise.js'\n\ntype Args = {\n addErrorPathToParent: (fieldPath: string) => void\n /**\n * if any parents is localized, then the field is localized. @default false\n */\n anyParentLocalized?: boolean\n /**\n * Data of the nearest parent block, or undefined\n */\n blockData: Data | undefined\n clientFieldSchemaMap?: ClientFieldSchemaMap\n collectionSlug?: string\n data: Data\n fields: FieldSchema[]\n fieldSchemaMap: FieldSchemaMap\n filter?: (args: AddFieldStatePromiseArgs) => boolean\n /**\n * Force the value of fields like arrays or blocks to be the full value instead of the length @default false\n */\n forceFullValue?: boolean\n fullData: Data\n id?: number | string\n /**\n * Whether the field schema should be included in the state. @default false\n */\n includeSchema?: boolean\n mockRSCs?: BuildFormStateArgs['mockRSCs']\n /**\n * Whether to omit parent fields in the state. @default false\n */\n omitParents?: boolean\n /**\n * operation is only needed for validation\n */\n operation: 'create' | 'update'\n parentIndexPath: string\n parentPassesCondition?: boolean\n parentPath: string\n parentSchemaPath: string\n permissions: SanitizedFieldsPermissions\n preferences?: DocumentPreferences\n previousFormState: FormState\n readOnly?: boolean\n renderAllFields: boolean\n renderFieldFn: RenderFieldMethod\n req: PayloadRequest\n select?: SelectType\n selectMode?: SelectMode\n /**\n * Whether to skip checking the field's condition. @default false\n */\n skipConditionChecks?: boolean\n /**\n * Whether to skip validating the field. @default false\n */\n skipValidation?: boolean\n state?: FormStateWithoutComponents\n}\n\n/**\n * Flattens the fields schema and fields data\n */\nexport const iterateFields = async ({\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized = false,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data,\n fields,\n fieldSchemaMap,\n filter,\n forceFullValue = false,\n fullData,\n includeSchema = false,\n mockRSCs,\n omitParents = false,\n operation,\n parentIndexPath,\n parentPassesCondition = true,\n parentPath,\n parentSchemaPath,\n permissions,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn: renderFieldFn,\n req,\n select,\n selectMode,\n skipConditionChecks = false,\n skipValidation = false,\n state = {},\n}: Args): Promise<void> => {\n const promises = []\n\n fields.forEach((field, fieldIndex) => {\n let passesCondition = true\n\n const { indexPath, path, schemaPath } = getFieldPaths({\n field,\n index: fieldIndex,\n parentIndexPath: 'name' in field ? '' : parentIndexPath,\n parentPath,\n parentSchemaPath,\n })\n\n if (path !== 'id') {\n const shouldContinue = stripUnselectedFields({\n field,\n select,\n selectMode,\n siblingDoc: data,\n })\n\n if (!shouldContinue) {\n return\n }\n }\n\n const pathSegments = path ? path.split('.') : []\n\n if (!skipConditionChecks) {\n try {\n passesCondition = Boolean(\n (field?.admin?.condition\n ? Boolean(\n field.admin.condition(fullData || {}, data || {}, {\n blockData,\n operation,\n path: pathSegments,\n user: req.user,\n }),\n )\n : true) && parentPassesCondition,\n )\n } catch (err) {\n passesCondition = false\n\n req.payload.logger.error({\n err,\n msg: `Error evaluating field condition at path: ${path}`,\n })\n }\n }\n\n promises.push(\n addFieldStatePromise({\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data,\n field,\n fieldIndex,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n indexPath,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath,\n parentPath,\n parentPermissions: permissions,\n parentSchemaPath,\n passesCondition,\n path,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n schemaPath,\n select,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n })\n\n await Promise.all(promises)\n}\n"],"names":["stripUnselectedFields","getFieldPaths","addFieldStatePromise","iterateFields","id","addErrorPathToParent","addErrorPathToParentArg","anyParentLocalized","blockData","clientFieldSchemaMap","collectionSlug","data","fields","fieldSchemaMap","filter","forceFullValue","fullData","includeSchema","mockRSCs","omitParents","operation","parentIndexPath","parentPassesCondition","parentPath","parentSchemaPath","permissions","preferences","previousFormState","readOnly","renderAllFields","renderFieldFn","req","select","selectMode","skipConditionChecks","skipValidation","state","promises","forEach","field","fieldIndex","passesCondition","indexPath","path","schemaPath","index","shouldContinue","siblingDoc","pathSegments","split","Boolean","admin","condition","user","err","payload","logger","error","msg","push","parentPermissions","Promise","all"],"mappings":"AAeA,SAASA,qBAAqB,QAAQ,UAAS;AAC/C,SAASC,aAAa,QAAQ,iBAAgB;AAK9C,SAASC,oBAAoB,QAAQ,4BAA2B;AAI9D;;GAEC,GAED;;GAEC,GAQD;;GAEC,GAID;;GAEC,GAGD;;GAEC,GAED;;GAEC,GAeD;;GAEC,GAED;;GAEC,GAKH;;CAEC,GACD,OAAO,MAAMC,gBAAgB,OAAO,EAClCC,EAAE,EACFC,sBAAsBC,uBAAuB,EAC7CC,qBAAqB,KAAK,EAC1BC,SAAS,EACTC,oBAAoB,EACpBC,cAAc,EACdC,IAAI,EACJC,MAAM,EACNC,cAAc,EACdC,MAAM,EACNC,iBAAiB,KAAK,EACtBC,QAAQ,EACRC,gBAAgB,KAAK,EACrBC,QAAQ,EACRC,cAAc,KAAK,EACnBC,SAAS,EACTC,eAAe,EACfC,wBAAwB,IAAI,EAC5BC,UAAU,EACVC,gBAAgB,EAChBC,WAAW,EACXC,WAAW,EACXC,iBAAiB,EACjBC,QAAQ,EACRC,eAAe,EACfC,eAAeA,aAAa,EAC5BC,GAAG,EACHC,MAAM,EACNC,UAAU,EACVC,sBAAsB,KAAK,EAC3BC,iBAAiB,KAAK,EACtBC,QAAQ,CAAC,CAAC,EACL;IACL,MAAMC,WAAW,EAAE;IAEnBzB,OAAO0B,OAAO,CAAC,CAACC,OAAOC;QACrB,IAAIC,kBAAkB;QAEtB,MAAM,EAAEC,SAAS,EAAEC,IAAI,EAAEC,UAAU,EAAE,GAAG3C,cAAc;YACpDsC;YACAM,OAAOL;YACPnB,iBAAiB,UAAUkB,QAAQ,KAAKlB;YACxCE;YACAC;QACF;QAEA,IAAImB,SAAS,MAAM;YACjB,MAAMG,iBAAiB9C,sBAAsB;gBAC3CuC;gBACAP;gBACAC;gBACAc,YAAYpC;YACd;YAEA,IAAI,CAACmC,gBAAgB;gBACnB;YACF;QACF;QAEA,MAAME,eAAeL,OAAOA,KAAKM,KAAK,CAAC,OAAO,EAAE;QAEhD,IAAI,CAACf,qBAAqB;YACxB,IAAI;gBACFO,kBAAkBS,QAChB,AAACX,CAAAA,OAAOY,OAAOC,YACXF,QACEX,MAAMY,KAAK,CAACC,SAAS,CAACpC,YAAY,CAAC,GAAGL,QAAQ,CAAC,GAAG;oBAChDH;oBACAY;oBACAuB,MAAMK;oBACNK,MAAMtB,IAAIsB,IAAI;gBAChB,MAEF,IAAG,KAAM/B;YAEjB,EAAE,OAAOgC,KAAK;gBACZb,kBAAkB;gBAElBV,IAAIwB,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;oBACvBH;oBACAI,KAAK,CAAC,0CAA0C,EAAEf,MAAM;gBAC1D;YACF;QACF;QAEAN,SAASsB,IAAI,CACXzD,qBAAqB;YACnBE;YACAC,sBAAsBC;YACtBC;YACAC;YACAC;YACAC;YACAC;YACA4B;YACAC;YACA3B;YACAC;YACAC;YACAC;YACAC;YACAyB;YACAxB;YACAC;YACAC;YACAC;YACAE;YACAqC,mBAAmBnC;YACnBD;YACAiB;YACAE;YACAjB;YACAC;YACAC;YACAC;YACAC;YACAC;YACAa;YACAZ;YACAC;YACAC;YACAC;YACAC;QACF;IAEJ;IAEA,MAAMyB,QAAQC,GAAG,CAACzB;AACpB,EAAC"}
1
+ {"version":3,"sources":["../../../src/forms/fieldSchemasToFormState/iterateFields.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientFieldSchemaMap,\n Data,\n DocumentPreferences,\n Field,\n FieldSchemaMap,\n FormState,\n FormStateWithoutComponents,\n PayloadRequest,\n SanitizedFieldsPermissions,\n SelectMode,\n SelectType,\n TabAsField,\n} from 'payload'\n\nimport { stripUnselectedFields } from 'payload'\nimport { getFieldPaths } from 'payload/shared'\n\nimport type { AddFieldStatePromiseArgs } from './addFieldStatePromise.js'\nimport type { RenderFieldMethod } from './types.js'\n\nimport { addFieldStatePromise } from './addFieldStatePromise.js'\n\ntype Args = {\n addErrorPathToParent: (fieldPath: string) => void\n /**\n * if any parents is localized, then the field is localized. @default false\n */\n anyParentLocalized?: boolean\n /**\n * Data of the nearest parent block, or undefined\n */\n blockData: Data | undefined\n clientFieldSchemaMap?: ClientFieldSchemaMap\n collectionSlug?: string\n data: Data\n fields: (Field | TabAsField)[]\n fieldSchemaMap: FieldSchemaMap\n filter?: (args: AddFieldStatePromiseArgs) => boolean\n /**\n * Force the value of fields like arrays or blocks to be the full value instead of the length @default false\n */\n forceFullValue?: boolean\n fullData: Data\n id?: number | string\n /**\n * Whether the field schema should be included in the state. @default false\n */\n includeSchema?: boolean\n mockRSCs?: BuildFormStateArgs['mockRSCs']\n /**\n * Whether to omit parent fields in the state. @default false\n */\n omitParents?: boolean\n /**\n * operation is only needed for validation\n */\n operation: 'create' | 'update'\n parentIndexPath: string\n parentPassesCondition?: boolean\n parentPath: string\n parentSchemaPath: string\n permissions: SanitizedFieldsPermissions\n preferences?: DocumentPreferences\n previousFormState: FormState\n readOnly?: boolean\n renderAllFields: boolean\n renderFieldFn: RenderFieldMethod\n req: PayloadRequest\n select?: SelectType\n selectMode?: SelectMode\n /**\n * Whether to skip checking the field's condition. @default false\n */\n skipConditionChecks?: boolean\n /**\n * Whether to skip validating the field. @default false\n */\n skipValidation?: boolean\n state?: FormStateWithoutComponents\n}\n\n/**\n * Flattens the fields schema and fields data\n */\nexport const iterateFields = async ({\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized = false,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data,\n fields,\n fieldSchemaMap,\n filter,\n forceFullValue = false,\n fullData,\n includeSchema = false,\n mockRSCs,\n omitParents = false,\n operation,\n parentIndexPath,\n parentPassesCondition = true,\n parentPath,\n parentSchemaPath,\n permissions,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn: renderFieldFn,\n req,\n select,\n selectMode,\n skipConditionChecks = false,\n skipValidation = false,\n state = {},\n}: Args): Promise<void> => {\n const promises = []\n\n fields.forEach((field, fieldIndex) => {\n let passesCondition = true\n\n const { indexPath, path, schemaPath } = getFieldPaths({\n field,\n index: fieldIndex,\n parentIndexPath,\n parentPath,\n parentSchemaPath,\n })\n\n if (path !== 'id') {\n const shouldContinue = stripUnselectedFields({\n field,\n select,\n selectMode,\n siblingDoc: data,\n })\n\n if (!shouldContinue) {\n return\n }\n }\n\n const pathSegments = path ? path.split('.') : []\n\n if (!skipConditionChecks) {\n try {\n passesCondition = Boolean(\n (field?.admin?.condition\n ? Boolean(\n field.admin.condition(fullData || {}, data || {}, {\n blockData,\n operation,\n path: pathSegments,\n user: req.user,\n }),\n )\n : true) && parentPassesCondition,\n )\n } catch (err) {\n passesCondition = false\n\n req.payload.logger.error({\n err,\n msg: `Error evaluating field condition at path: ${path}`,\n })\n }\n }\n\n promises.push(\n addFieldStatePromise({\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data,\n field,\n fieldIndex,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n indexPath,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath,\n parentPath,\n parentPermissions: permissions,\n parentSchemaPath,\n passesCondition,\n path,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n schemaPath,\n select,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n })\n\n await Promise.all(promises)\n}\n"],"names":["stripUnselectedFields","getFieldPaths","addFieldStatePromise","iterateFields","id","addErrorPathToParent","addErrorPathToParentArg","anyParentLocalized","blockData","clientFieldSchemaMap","collectionSlug","data","fields","fieldSchemaMap","filter","forceFullValue","fullData","includeSchema","mockRSCs","omitParents","operation","parentIndexPath","parentPassesCondition","parentPath","parentSchemaPath","permissions","preferences","previousFormState","readOnly","renderAllFields","renderFieldFn","req","select","selectMode","skipConditionChecks","skipValidation","state","promises","forEach","field","fieldIndex","passesCondition","indexPath","path","schemaPath","index","shouldContinue","siblingDoc","pathSegments","split","Boolean","admin","condition","user","err","payload","logger","error","msg","push","parentPermissions","Promise","all"],"mappings":"AAgBA,SAASA,qBAAqB,QAAQ,UAAS;AAC/C,SAASC,aAAa,QAAQ,iBAAgB;AAK9C,SAASC,oBAAoB,QAAQ,4BAA2B;AAI9D;;GAEC,GAED;;GAEC,GAQD;;GAEC,GAID;;GAEC,GAGD;;GAEC,GAED;;GAEC,GAeD;;GAEC,GAED;;GAEC,GAKH;;CAEC,GACD,OAAO,MAAMC,gBAAgB,OAAO,EAClCC,EAAE,EACFC,sBAAsBC,uBAAuB,EAC7CC,qBAAqB,KAAK,EAC1BC,SAAS,EACTC,oBAAoB,EACpBC,cAAc,EACdC,IAAI,EACJC,MAAM,EACNC,cAAc,EACdC,MAAM,EACNC,iBAAiB,KAAK,EACtBC,QAAQ,EACRC,gBAAgB,KAAK,EACrBC,QAAQ,EACRC,cAAc,KAAK,EACnBC,SAAS,EACTC,eAAe,EACfC,wBAAwB,IAAI,EAC5BC,UAAU,EACVC,gBAAgB,EAChBC,WAAW,EACXC,WAAW,EACXC,iBAAiB,EACjBC,QAAQ,EACRC,eAAe,EACfC,eAAeA,aAAa,EAC5BC,GAAG,EACHC,MAAM,EACNC,UAAU,EACVC,sBAAsB,KAAK,EAC3BC,iBAAiB,KAAK,EACtBC,QAAQ,CAAC,CAAC,EACL;IACL,MAAMC,WAAW,EAAE;IAEnBzB,OAAO0B,OAAO,CAAC,CAACC,OAAOC;QACrB,IAAIC,kBAAkB;QAEtB,MAAM,EAAEC,SAAS,EAAEC,IAAI,EAAEC,UAAU,EAAE,GAAG3C,cAAc;YACpDsC;YACAM,OAAOL;YACPnB;YACAE;YACAC;QACF;QAEA,IAAImB,SAAS,MAAM;YACjB,MAAMG,iBAAiB9C,sBAAsB;gBAC3CuC;gBACAP;gBACAC;gBACAc,YAAYpC;YACd;YAEA,IAAI,CAACmC,gBAAgB;gBACnB;YACF;QACF;QAEA,MAAME,eAAeL,OAAOA,KAAKM,KAAK,CAAC,OAAO,EAAE;QAEhD,IAAI,CAACf,qBAAqB;YACxB,IAAI;gBACFO,kBAAkBS,QAChB,AAACX,CAAAA,OAAOY,OAAOC,YACXF,QACEX,MAAMY,KAAK,CAACC,SAAS,CAACpC,YAAY,CAAC,GAAGL,QAAQ,CAAC,GAAG;oBAChDH;oBACAY;oBACAuB,MAAMK;oBACNK,MAAMtB,IAAIsB,IAAI;gBAChB,MAEF,IAAG,KAAM/B;YAEjB,EAAE,OAAOgC,KAAK;gBACZb,kBAAkB;gBAElBV,IAAIwB,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;oBACvBH;oBACAI,KAAK,CAAC,0CAA0C,EAAEf,MAAM;gBAC1D;YACF;QACF;QAEAN,SAASsB,IAAI,CACXzD,qBAAqB;YACnBE;YACAC,sBAAsBC;YACtBC;YACAC;YACAC;YACAC;YACAC;YACA4B;YACAC;YACA3B;YACAC;YACAC;YACAC;YACAC;YACAyB;YACAxB;YACAC;YACAC;YACAC;YACAE;YACAqC,mBAAmBnC;YACnBD;YACAiB;YACAE;YACAjB;YACAC;YACAC;YACAC;YACAC;YACAC;YACAa;YACAZ;YACAC;YACAC;YACAC;YACAC;QACF;IAEJ;IAEA,MAAMyB,QAAQC,GAAG,CAACzB;AACpB,EAAC"}
@@ -1,9 +1,9 @@
1
1
  import type { I18n } from '@payloadcms/translations';
2
- import { type ClientConfig, type ClientField, type ClientFieldSchemaMap, type FieldSchemaMap, type Payload } from 'payload';
2
+ import type { ClientConfig, ClientField, ClientFieldSchemaMap, FieldSchemaMap, Payload, TabAsFieldClient } from 'payload';
3
3
  type Args = {
4
4
  clientSchemaMap: ClientFieldSchemaMap;
5
5
  config: ClientConfig;
6
- fields: ClientField[];
6
+ fields: (ClientField | TabAsFieldClient)[];
7
7
  i18n: I18n<any, any>;
8
8
  parentIndexPath: string;
9
9
  parentSchemaPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/utilities/buildClientFieldSchemaMap/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAEpD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAGzB,KAAK,cAAc,EACnB,KAAK,OAAO,EACb,MAAM,SAAS,CAAA;AAGhB,KAAK,IAAI,GAAG;IACV,eAAe,EAAE,oBAAoB,CAAA;IACrC,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,cAAc,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,cAAc,sGASxB,IAAI,SAwKN,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/utilities/buildClientFieldSchemaMap/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,oBAAoB,EAEpB,cAAc,EACd,OAAO,EACP,gBAAgB,EACjB,MAAM,SAAS,CAAA;AAKhB,KAAK,IAAI,GAAG;IACV,eAAe,EAAE,oBAAoB,CAAA;IACrC,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,CAAC,WAAW,GAAG,gBAAgB,CAAC,EAAE,CAAA;IAC1C,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,cAAc,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,cAAc,sGASxB,IAAI,SAyKN,CAAA"}
@@ -5,8 +5,7 @@ export const traverseFields = ({ clientSchemaMap, config, fields, i18n, parentIn
5
5
  const { indexPath, schemaPath } = getFieldPaths({
6
6
  field,
7
7
  index,
8
- parentIndexPath: 'name' in field ? '' : parentIndexPath,
9
- parentPath: '',
8
+ parentIndexPath,
10
9
  parentSchemaPath
11
10
  });
12
11
  clientSchemaMap.set(schemaPath, field);
@@ -37,7 +36,7 @@ export const traverseFields = ({ clientSchemaMap, config, fields, i18n, parentIn
37
36
  fields: block.fields,
38
37
  i18n,
39
38
  parentIndexPath: '',
40
- parentSchemaPath: blockSchemaPath,
39
+ parentSchemaPath: schemaPath + '.' + block.slug,
41
40
  payload,
42
41
  schemaMap
43
42
  });
@@ -45,17 +44,19 @@ export const traverseFields = ({ clientSchemaMap, config, fields, i18n, parentIn
45
44
  break;
46
45
  case 'collapsible':
47
46
  case 'row':
48
- traverseFields({
49
- clientSchemaMap,
50
- config,
51
- fields: field.fields,
52
- i18n,
53
- parentIndexPath: indexPath,
54
- parentSchemaPath,
55
- payload,
56
- schemaMap
57
- });
58
- break;
47
+ {
48
+ traverseFields({
49
+ clientSchemaMap,
50
+ config,
51
+ fields: field.fields,
52
+ i18n,
53
+ parentIndexPath: indexPath,
54
+ parentSchemaPath: schemaPath,
55
+ payload,
56
+ schemaMap
57
+ });
58
+ break;
59
+ }
59
60
  case 'group':
60
61
  {
61
62
  if (fieldAffectsData(field)) {
@@ -76,7 +77,7 @@ export const traverseFields = ({ clientSchemaMap, config, fields, i18n, parentIn
76
77
  fields: field.fields,
77
78
  i18n,
78
79
  parentIndexPath: indexPath,
79
- parentSchemaPath,
80
+ parentSchemaPath: schemaPath,
80
81
  payload,
81
82
  schemaMap
82
83
  });
@@ -117,32 +118,38 @@ export const traverseFields = ({ clientSchemaMap, config, fields, i18n, parentIn
117
118
  }
118
119
  break;
119
120
  }
120
- case 'tabs':
121
- field.tabs.map((tab, tabIndex)=>{
122
- const isNamedTab = tabHasName(tab);
123
- const { indexPath: tabIndexPath, schemaPath: tabSchemaPath } = getFieldPaths({
124
- field: {
125
- ...tab,
126
- type: 'tab'
127
- },
128
- index: tabIndex,
129
- parentIndexPath: indexPath,
130
- parentPath: '',
131
- parentSchemaPath
121
+ case 'tab':
122
+ {
123
+ const isNamedTab = tabHasName(field);
124
+ traverseFields({
125
+ clientSchemaMap,
126
+ config,
127
+ fields: field.fields,
128
+ i18n,
129
+ parentIndexPath: isNamedTab ? '' : indexPath,
130
+ parentSchemaPath: schemaPath,
131
+ payload,
132
+ schemaMap
132
133
  });
133
- clientSchemaMap.set(tabSchemaPath, tab);
134
+ break;
135
+ }
136
+ case 'tabs':
137
+ {
134
138
  traverseFields({
135
139
  clientSchemaMap,
136
140
  config,
137
- fields: tab.fields,
141
+ fields: field.tabs.map((tab)=>({
142
+ ...tab,
143
+ type: 'tab'
144
+ })),
138
145
  i18n,
139
- parentIndexPath: isNamedTab ? '' : tabIndexPath,
140
- parentSchemaPath: isNamedTab ? tabSchemaPath : parentSchemaPath,
146
+ parentIndexPath: indexPath,
147
+ parentSchemaPath: schemaPath,
141
148
  payload,
142
149
  schemaMap
143
150
  });
144
- });
145
- break;
151
+ break;
152
+ }
146
153
  }
147
154
  }
148
155
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utilities/buildClientFieldSchemaMap/traverseFields.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\n\nimport {\n type ClientConfig,\n type ClientField,\n type ClientFieldSchemaMap,\n createClientFields,\n type Field,\n type FieldSchemaMap,\n type Payload,\n} from 'payload'\nimport { fieldAffectsData, getFieldPaths, tabHasName } from 'payload/shared'\n\ntype Args = {\n clientSchemaMap: ClientFieldSchemaMap\n config: ClientConfig\n fields: ClientField[]\n i18n: I18n<any, any>\n parentIndexPath: string\n parentSchemaPath: string\n payload: Payload\n schemaMap: FieldSchemaMap\n}\n\nexport const traverseFields = ({\n clientSchemaMap,\n config,\n fields,\n i18n,\n parentIndexPath,\n parentSchemaPath,\n payload,\n schemaMap,\n}: Args) => {\n for (const [index, field] of fields.entries()) {\n const { indexPath, schemaPath } = getFieldPaths({\n field,\n index,\n parentIndexPath: 'name' in field ? '' : parentIndexPath,\n parentPath: '',\n parentSchemaPath,\n })\n\n clientSchemaMap.set(schemaPath, field)\n\n switch (field.type) {\n case 'array': {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: '',\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n\n break\n }\n\n case 'blocks':\n ;(field.blockReferences ?? field.blocks).map((_block) => {\n const block =\n typeof _block === 'string'\n ? config.blocksMap\n ? config.blocksMap[_block]\n : config.blocks.find((block) => typeof block !== 'string' && block.slug === _block)\n : _block\n\n const blockSchemaPath = `${schemaPath}.${block.slug}`\n\n clientSchemaMap.set(blockSchemaPath, block)\n traverseFields({\n clientSchemaMap,\n config,\n fields: block.fields,\n i18n,\n parentIndexPath: '',\n parentSchemaPath: blockSchemaPath,\n payload,\n schemaMap,\n })\n })\n\n break\n\n case 'collapsible':\n case 'row':\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: indexPath,\n parentSchemaPath,\n payload,\n schemaMap,\n })\n break\n\n case 'group': {\n if (fieldAffectsData(field)) {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: '',\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n } else {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: indexPath,\n parentSchemaPath,\n payload,\n schemaMap,\n })\n }\n break\n }\n\n case 'richText': {\n // richText sub-fields are not part of the ClientConfig or the Config.\n // They only exist in the field schema map.\n // Thus, we need to\n // 1. get them from the field schema map\n // 2. convert them to client fields\n // 3. add them to the client schema map\n\n // So these would basically be all fields that are not part of the client config already\n const richTextFieldSchemaMap: FieldSchemaMap = new Map()\n for (const [path, subField] of schemaMap.entries()) {\n if (path.startsWith(`${schemaPath}.`)) {\n richTextFieldSchemaMap.set(path, subField)\n }\n }\n\n // Now loop through them, convert each entry to a client field and add it to the client schema map\n for (const [path, subField] of richTextFieldSchemaMap.entries()) {\n // check if fields is the only key in the subField object\n const isFieldsOnly = Object.keys(subField).length === 1 && 'fields' in subField\n\n const clientFields = createClientFields({\n defaultIDType: payload.config.db.defaultIDType,\n disableAddingID: true,\n fields: isFieldsOnly ? subField.fields : [subField as Field],\n i18n,\n importMap: payload.importMap,\n })\n\n clientSchemaMap.set(\n path,\n isFieldsOnly\n ? {\n fields: clientFields,\n }\n : clientFields[0],\n )\n }\n break\n }\n\n case 'tabs':\n field.tabs.map((tab, tabIndex) => {\n const isNamedTab = tabHasName(tab)\n\n const { indexPath: tabIndexPath, schemaPath: tabSchemaPath } = getFieldPaths({\n field: {\n ...tab,\n type: 'tab',\n },\n index: tabIndex,\n parentIndexPath: indexPath,\n parentPath: '',\n parentSchemaPath,\n })\n\n clientSchemaMap.set(tabSchemaPath, tab)\n\n traverseFields({\n clientSchemaMap,\n config,\n fields: tab.fields,\n i18n,\n parentIndexPath: isNamedTab ? '' : tabIndexPath,\n parentSchemaPath: isNamedTab ? tabSchemaPath : parentSchemaPath,\n payload,\n schemaMap,\n })\n })\n\n break\n }\n }\n}\n"],"names":["createClientFields","fieldAffectsData","getFieldPaths","tabHasName","traverseFields","clientSchemaMap","config","fields","i18n","parentIndexPath","parentSchemaPath","payload","schemaMap","index","field","entries","indexPath","schemaPath","parentPath","set","type","blockReferences","blocks","map","_block","block","blocksMap","find","slug","blockSchemaPath","richTextFieldSchemaMap","Map","path","subField","startsWith","isFieldsOnly","Object","keys","length","clientFields","defaultIDType","db","disableAddingID","importMap","tabs","tab","tabIndex","isNamedTab","tabIndexPath","tabSchemaPath"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/utilities/buildClientFieldSchemaMap/traverseFields.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type {\n ClientConfig,\n ClientField,\n ClientFieldSchemaMap,\n Field,\n FieldSchemaMap,\n Payload,\n TabAsFieldClient,\n} from 'payload'\n\nimport { createClientFields } from 'payload'\nimport { fieldAffectsData, getFieldPaths, tabHasName } from 'payload/shared'\n\ntype Args = {\n clientSchemaMap: ClientFieldSchemaMap\n config: ClientConfig\n fields: (ClientField | TabAsFieldClient)[]\n i18n: I18n<any, any>\n parentIndexPath: string\n parentSchemaPath: string\n payload: Payload\n schemaMap: FieldSchemaMap\n}\n\nexport const traverseFields = ({\n clientSchemaMap,\n config,\n fields,\n i18n,\n parentIndexPath,\n parentSchemaPath,\n payload,\n schemaMap,\n}: Args) => {\n for (const [index, field] of fields.entries()) {\n const { indexPath, schemaPath } = getFieldPaths({\n field,\n index,\n parentIndexPath,\n parentSchemaPath,\n })\n\n clientSchemaMap.set(schemaPath, field)\n\n switch (field.type) {\n case 'array': {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: '',\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n\n break\n }\n\n case 'blocks':\n ;(field.blockReferences ?? field.blocks).map((_block) => {\n const block =\n typeof _block === 'string'\n ? config.blocksMap\n ? config.blocksMap[_block]\n : config.blocks.find((block) => typeof block !== 'string' && block.slug === _block)\n : _block\n\n const blockSchemaPath = `${schemaPath}.${block.slug}`\n\n clientSchemaMap.set(blockSchemaPath, block)\n traverseFields({\n clientSchemaMap,\n config,\n fields: block.fields,\n i18n,\n parentIndexPath: '',\n parentSchemaPath: schemaPath + '.' + block.slug,\n payload,\n schemaMap,\n })\n })\n\n break\n\n case 'collapsible':\n case 'row': {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: indexPath,\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n break\n }\n\n case 'group': {\n if (fieldAffectsData(field)) {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: '',\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n } else {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: indexPath,\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n }\n break\n }\n\n case 'richText': {\n // richText sub-fields are not part of the ClientConfig or the Config.\n // They only exist in the field schema map.\n // Thus, we need to\n // 1. get them from the field schema map\n // 2. convert them to client fields\n // 3. add them to the client schema map\n\n // So these would basically be all fields that are not part of the client config already\n const richTextFieldSchemaMap: FieldSchemaMap = new Map()\n for (const [path, subField] of schemaMap.entries()) {\n if (path.startsWith(`${schemaPath}.`)) {\n richTextFieldSchemaMap.set(path, subField)\n }\n }\n\n // Now loop through them, convert each entry to a client field and add it to the client schema map\n for (const [path, subField] of richTextFieldSchemaMap.entries()) {\n // check if fields is the only key in the subField object\n const isFieldsOnly = Object.keys(subField).length === 1 && 'fields' in subField\n\n const clientFields = createClientFields({\n defaultIDType: payload.config.db.defaultIDType,\n disableAddingID: true,\n fields: isFieldsOnly ? subField.fields : [subField as Field],\n i18n,\n importMap: payload.importMap,\n })\n\n clientSchemaMap.set(\n path,\n isFieldsOnly\n ? {\n fields: clientFields,\n }\n : clientFields[0],\n )\n }\n break\n }\n\n case 'tab': {\n const isNamedTab = tabHasName(field)\n\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: isNamedTab ? '' : indexPath,\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n\n break\n }\n\n case 'tabs': {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n i18n,\n parentIndexPath: indexPath,\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n\n break\n }\n }\n }\n}\n"],"names":["createClientFields","fieldAffectsData","getFieldPaths","tabHasName","traverseFields","clientSchemaMap","config","fields","i18n","parentIndexPath","parentSchemaPath","payload","schemaMap","index","field","entries","indexPath","schemaPath","set","type","blockReferences","blocks","map","_block","block","blocksMap","find","slug","blockSchemaPath","richTextFieldSchemaMap","Map","path","subField","startsWith","isFieldsOnly","Object","keys","length","clientFields","defaultIDType","db","disableAddingID","importMap","isNamedTab","tabs","tab"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import type { I18n } from '@payloadcms/translations';
2
- import type { Field, FieldSchemaMap, SanitizedConfig } from 'payload';
2
+ import type { Field, FieldSchemaMap, SanitizedConfig, TabAsField } from 'payload';
3
3
  type Args = {
4
4
  config: SanitizedConfig;
5
- fields: Field[];
5
+ fields: (Field | TabAsField)[];
6
6
  i18n: I18n<any, any>;
7
7
  parentIndexPath: string;
8
8
  parentSchemaPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/utilities/buildFieldSchemaMap/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAKrE,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,cAAc,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,cAAc,4EAOxB,IAAI,SAqIN,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/utilities/buildFieldSchemaMap/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAKjF,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,cAAc,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,cAAc,4EAOxB,IAAI,SAoIN,CAAA"}