UNPKG

@payloadcms/plugin-import-export

Version:

Import-Export plugin for Payload

109 lines (108 loc) 3.93 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { fieldAffectsData, fieldHasSubFields } from 'payload/shared'; import React, { Fragment } from 'react'; const createNestedClientFieldPath = (parentPath, field)=>{ if (parentPath) { if (fieldAffectsData(field)) { return `${parentPath}.${field.name}`; } return parentPath; } if (fieldAffectsData(field)) { return field.name; } return ''; }; const combineLabel = ({ field, prefix })=>{ return /*#__PURE__*/ _jsxs(Fragment, { children: [ prefix ? /*#__PURE__*/ _jsxs(Fragment, { children: [ /*#__PURE__*/ _jsx("span", { style: { display: 'inline-block' }, children: prefix }), ' > ' ] }) : null, /*#__PURE__*/ _jsx("span", { style: { display: 'inline-block' }, children: 'label' in field && typeof field.label === 'string' ? field.label : ('name' in field && field.name) ?? 'unnamed field' }) ] }); }; export const reduceFields = ({ disabledFields = [], fields, labelPrefix = null, path = '' })=>{ if (!fields) { return []; } return fields.reduce((fieldsToUse, field)=>{ // escape for a variety of reasons, include ui fields as they have `name`. if (field.type === 'ui') { return fieldsToUse; } if (!(field.type === 'array' || field.type === 'blocks') && fieldHasSubFields(field)) { return [ ...fieldsToUse, ...reduceFields({ disabledFields, fields: field.fields, labelPrefix: combineLabel({ field, prefix: labelPrefix }), path: createNestedClientFieldPath(path, field) }) ]; } 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; const newPath = isNamedTab ? `${path}${path ? '.' : ''}${tab.name}` : path; return [ ...tabFields, ...reduceFields({ disabledFields, fields: tab.fields, labelPrefix: isNamedTab ? combineLabel({ field: { name: tab.name, label: tab.label ?? tab.name }, prefix: labelPrefix }) : labelPrefix, path: newPath }) ]; } return tabFields; }, []) ]; } const val = createNestedClientFieldPath(path, field); // If the field is disabled, skip it if (disabledFields.some((disabledField)=>val === disabledField || val.startsWith(`${disabledField}.`))) { return fieldsToUse; } const formattedField = { id: val, label: combineLabel({ field, prefix: labelPrefix }), value: val }; return [ ...fieldsToUse, formattedField ]; }, []); }; //# sourceMappingURL=reduceFields.js.map