Files
klz-cables.com/.pnpm-store/v10/files/f6/2f47239396835cdf3cb8d06210045c6502e24b586c7297c38ae709145c790f93b5042d6a73981c571f56c223fd748e458abe784841c5293db21b24684c70a5
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

74 lines
2.8 KiB
Plaintext

import { fieldAffectsData, fieldHasSubFields, fieldIsHiddenOrDisabled, getFieldPermissions } from 'payload/shared';
import { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js';
import { combineFieldLabel } from '../../utilities/combineFieldLabel.js';
export const ignoreFromBulkEdit = field => Boolean((fieldAffectsData(field) || field.type === 'ui') && (field.admin.disableBulkEdit || field.unique || fieldIsHiddenOrDisabled(field) || 'readOnly' in field && field.readOnly));
export const reduceFieldOptions = ({
fields,
formState,
labelPrefix = null,
parentPath = '',
path = '',
permissions
}) => {
if (!fields) {
return [];
}
const CustomLabel = formState?.[path]?.customComponents?.Label;
return fields?.reduce((fieldsToUse, field) => {
const {
operation: hasOperationPermission,
permissions: fieldPermissions,
read: hasReadPermission
} = getFieldPermissions({
field,
operation: 'update',
parentName: parentPath?.includes('.') ? parentPath.split('.')[parentPath.split('.').length - 1] : parentPath,
permissions
});
// escape for a variety of reasons, include ui fields as they have `name`.
if ((fieldAffectsData(field) || field.type === 'ui') && (field.admin?.disableBulkEdit || field.unique || fieldIsHiddenOrDisabled(field) || 'readOnly' in field && field.readOnly || !hasOperationPermission || !hasReadPermission)) {
return fieldsToUse;
}
if (!(field.type === 'array' || field.type === 'blocks') && fieldHasSubFields(field)) {
return [...fieldsToUse, ...reduceFieldOptions({
fields: field.fields,
labelPrefix: combineFieldLabel({
CustomLabel,
field,
prefix: labelPrefix
}),
parentPath: path,
path: createNestedClientFieldPath(path, field),
permissions: fieldPermissions
})];
}
if (field.type === 'tabs' && 'tabs' in field) {
return [...fieldsToUse, ...field.tabs.reduce((tabFields, tab) => {
if ('fields' in tab) {
const isNamedTab = 'name' in tab && tab.name;
return [...tabFields, ...reduceFieldOptions({
fields: tab.fields,
labelPrefix,
parentPath: path,
path: isNamedTab ? createNestedClientFieldPath(path, field) : path,
permissions: fieldPermissions
})];
}
}, [])];
}
const formattedField = {
label: combineFieldLabel({
CustomLabel,
field,
prefix: labelPrefix
}),
value: {
field,
fieldPermissions: fieldPermissions,
path: createNestedClientFieldPath(path, field)
}
};
return [...fieldsToUse, formattedField];
}, []);
};
//# sourceMappingURL=reduceFieldOptions.js.map