@websolutespa/payload-plugin-bowl
Version:
Bowl PayloadCms plugin of the BOM Repository
53 lines (52 loc) • 1.8 kB
JavaScript
import { deepMerge } from '@websolutespa/payload-utils';
import { MenuItem } from '../../blocks';
import { toField } from '../../mapper';
import { options } from '../../options';
export const NavsDefaults = {
name: 'navs',
type: 'array',
fields: [],
admin: {
initCollapsed: true
}
};
export const withNavs = ({ maxDepth, disallow, ...options })=>{
const arrayField = deepMerge(NavsDefaults, options);
arrayField.fields = navFields({
maxDepth,
disallow
}).map((x)=>toField(x));
const field = {
label: options.label || arrayField.name,
type: 'collapsible',
fields: [
arrayField
],
admin: {
initCollapsed: true
}
};
return field;
};
export function navFields(props = {}) {
const pages = props.pages || options.pages;
const blocks = props.blocks || options.menu.blocks;
const maxDepth = props.maxDepth || 0;
const disallow = props.disallow ? Array.isArray(props.disallow) ? props.disallow : [
props.disallow
] : [
'group'
];
const menuBlock = MenuItem(pages, blocks, 0, maxDepth);
const fields = menuBlock.fields;
// remove "defaultValue" from type field
delete fields[0]['defaultValue'];
// remove "group" option
fields[0]['options'] = fields[0]['options'].filter((option)=>!disallow.includes(option.value));
// remove visibility condition from fields inside the tab "Data" (it does not work outside the block context)
fields[1]['tabs'][0]['fields'].forEach(({ fields, admin })=>fields && admin && delete admin.condition);
// make link href field localizable
fields[1]['tabs'][0]['fields'][3]['fields'][0]['localized'] = true;
return fields;
}
//# sourceMappingURL=withNavs.js.map